1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_ENGINE_JSI_NATIVEMODULE_ARKTS_NATIVE_API_BRIDGE_H
17 #define FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_ENGINE_JSI_NATIVEMODULE_ARKTS_NATIVE_API_BRIDGE_H
18 
19 #include "bridge/declarative_frontend/declarative_frontend.h"
20 #include "bridge/declarative_frontend/engine/functions/js_drag_function.h"
21 #include "bridge/declarative_frontend/engine/js_object_template.h"
22 #include "bridge/declarative_frontend/frontend_delegate_declarative.h"
23 #include "bridge/declarative_frontend/jsview/canvas/js_canvas_image_data.h"
24 #include "bridge/js_frontend/engine/jsi/ark_js_runtime.h"
25 #include "core/components/common/properties/text_style.h"
26 #include "core/interfaces/native/node/node_api.h"
27 
28 namespace OHOS::Ace::NG {
29 using ArkUINativeModuleValue = panda::Local<panda::JSValueRef>;
30 using ArkUIRuntimeCallInfo = panda::JsiRuntimeCallInfo;
31 class ArkUINativeModule {
32 public:
33     static ArkUINativeModuleValue PreviewMockComponent(ArkUIRuntimeCallInfo* runtimeCallInfo);
34     static ArkUINativeModuleValue GetFrameNodeById(ArkUIRuntimeCallInfo* runtimeCallInfo);
35     static ArkUINativeModuleValue GetFrameNodeByUniqueId(ArkUIRuntimeCallInfo* runtimeCallInfo);
36     static ArkUINativeModuleValue GetPageInfoByUniqueId(ArkUIRuntimeCallInfo* runtimeCallInfo);
37     static ArkUINativeModuleValue GetNavigationInfoByUniqueId(ArkUIRuntimeCallInfo* runtimeCallInfo);
38     static ArkUINativeModuleValue GetArkUINativeModule(ArkUIRuntimeCallInfo* runtimeCallInfo);
39     static ArkUINativeModuleValue GetUIState(ArkUIRuntimeCallInfo* runtimeCallInfo);
40     static ArkUINativeModuleValue SetSupportedUIState(ArkUIRuntimeCallInfo* runtimeCallInfo);
41     static ArkUINativeModuleValue GetFrameNodeByKey(ArkUIRuntimeCallInfo* runtimeCallInfo);
42     static ArkUINativeModuleValue GetAttachedFrameNodeById(ArkUIRuntimeCallInfo* runtimeCallInfo);
43     static ArkUINativeModuleValue RequireDynamicSyncScene(ArkUIRuntimeCallInfo* runtimeCallInfo);
44     static ArkUINativeModuleValue SetFrameRateRange(ArkUIRuntimeCallInfo* runtimeCallInfo);
45     static ArkUINativeModuleValue SetMarqueeFrameRateRange(ArkUIRuntimeCallInfo* runtimeCallInfo);
46 private:
47     static void RegisterScrollableAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
48     static void RegisterButtonAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
49     static void RegisterToggleAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
50     static void RegisterDividerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
51     static void RegisterNavigationAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
52     static void RegisterImageAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
53     static void RegisterNavRouterAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
54     static void RegisterNavigatorAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
55     static void RegisterNodeContainerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
56     static void RegisterXComponentNodeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
57     static void RegisterRenderNodeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
58     static void RegisterFrameNodeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
59     static void RegisterPanelAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
60     static void RegisterLineAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
61     static void RegisterPathAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
62     static void RegisterPolygonAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
63     static void RegisterPolylineAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
64     static void RegisterSideBarContainerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
65     static void RegisterCalendarPickerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
66     static void RegisterTabAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
67     static void RegisterStepperItemAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
68     static void RegisterHyperlinkAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
69     static void RegisterFormAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
70     static void RegisterMenuItemAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
71     static void RegisterMenuAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
72     static void RegisterMarqueeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
73     static void RegisterDatePickerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
74     static void RegisterAlphabetIndexerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
75     static void RegisterGaugeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
76     static void RegisterSelectAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
77     static void RegisterRadioAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
78     static void RegisterSliderAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
79     static void RegisterRatingAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
80     static void RegisterTimepickerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
81     static void RegisterTextpickerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
82     static void RegisterWaterFlowAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
83     static void RegisterCheckboxAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
84     static void RegisterDataPanelAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
85     static void RegisterScrollAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
86     static void RegisterGridItemAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
87     static void RegisterProgressAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
88     static void RegisterPluginAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
89     static void RegisterCommonShapeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
90     static void RegisterShapeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
91     static void RegisterRectAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
92     static void RegisterSwiperAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
93     static void RegisterListAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
94     static void RegisterGridAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
95     static void RegisterListItemGroupAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
96     static void RegisterQRCodeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
97     static void RegisterLoadingProgressAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
98     static void RegisterTextClockAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
99     static void RegisterListItemAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
100     static void RegisterTextTimerAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
101     static void RegisterXComponentAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
102     static void RegisterTabContentAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
103     static void RegisterRefreshAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
104     static void RegisterFlexAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
105     static void RegisterResourceAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
106     static void RegisterBadgeAttributes(Local<panda::ObjectRef> object, EcmaVM* vm);
107     static void RegisterScrollBarAttributes(Local<panda::ObjectRef> object, EcmaVM *vm);
108 };
109 } // namespace OHOS::Ace::NG
110 #endif // FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_ENGINE_JSI_NATIVEMODULE_ARKTS_NATIVE_API_BRIDGE_H
111