1 /*
2 * Copyright (c) 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 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_indicator_component_bridge.h"
16
17 #include "jsnapi_expo.h"
18
19 #include "bridge/declarative_frontend/engine/jsi/jsi_types.h"
20 #include "bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.h"
21 #include "core/components/common/layout/constants.h"
22
23 namespace OHOS::Ace::NG {
24
25 namespace {
26 constexpr int32_t CALL_ARG_NODE_INDEX = 0;
27 constexpr int32_t CALL_ARG_VALUE_INDEX = 1;
28 constexpr int32_t FUNC_PARAM_LENGTH_1 = 1;
29 constexpr int32_t DIGIT_INDICATOR_FONT_COLOR = 2;
30 constexpr int32_t DIGIT_INDICATOR_SELECTED_FONT_COLOR = 3;
31 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_SIZE = 4;
32 constexpr int32_t DIGIT_INDICATOR_DIGIT_FONT_WEIGHT = 5;
33 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE = 6;
34 constexpr int32_t DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT = 7;
35 constexpr int32_t DIGIT_INDICATOR_LEFT = 8;
36 constexpr int32_t DIGIT_INDICATOR_TOP = 9;
37 constexpr int32_t DIGIT_INDICATOR_RIGHT = 10;
38 constexpr int32_t DIGIT_INDICATOR_BOTTOM = 11;
39 constexpr int32_t DOT_INDICATOR_ITEM_WIDTH = 2;
40 constexpr int32_t DOT_INDICATOR_ITEM_HEIGHT = 3;
41 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_WIDTH = 4;
42 constexpr int32_t DOT_INDICATOR_SELECTED_ITEM_HEIGHT = 5;
43 constexpr int32_t DOT_INDICATOR_MASK = 6;
44 constexpr int32_t DOT_INDICATOR_COLOR = 7;
45 constexpr int32_t DOT_INDICATOR_SELECTED_COLOR = 8;
46 constexpr int32_t DOT_INDICATOR_LEFT = 9;
47 constexpr int32_t DOT_INDICATOR_TOP = 10;
48 constexpr int32_t DOT_INDICATOR_RIGHT = 11;
49 constexpr int32_t DOT_INDICATOR_BOTTOM = 12;
50 constexpr int32_t DOT_INDICATOR_MAX_DISPLAY_COUNT = 13;
51 constexpr double DEFAULT_PERCENT_VALUE = 100.0;
52
GetDimensionUnitString(DimensionUnit unit)53 std::string GetDimensionUnitString(DimensionUnit unit)
54 {
55 switch (unit) {
56 case DimensionUnit::VP:
57 return "vp";
58 case DimensionUnit::PX:
59 return "px";
60 case DimensionUnit::FP:
61 return "fp";
62 case DimensionUnit::CALC:
63 return "calc";
64 default:
65 return "px";
66 }
67 }
68
GetStringByValueRef(const EcmaVM * vm,const Local<JSValueRef> & jsValue)69 std::string GetStringByValueRef(const EcmaVM* vm, const Local<JSValueRef>& jsValue)
70 {
71 std::string result = "-";
72 if (jsValue->IsUndefined()) {
73 return result;
74 }
75 CalcDimension calc;
76 result = ArkTSUtils::ParseJsDimension(vm, jsValue, calc, DimensionUnit::VP, true)
77 ? (calc.Unit() == DimensionUnit::PERCENT
78 ? (std::to_string(calc.Value() * DEFAULT_PERCENT_VALUE) + "%")
79 : (std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())))
80 : "0.0_vp";
81 return result;
82 }
83
GetIntStringByValueRef(const EcmaVM * vm,const Local<JSValueRef> & jsValue)84 std::string GetIntStringByValueRef(const EcmaVM* vm, const Local<JSValueRef>& jsValue)
85 {
86 std::string result = "-";
87 if (jsValue->IsUndefined()) {
88 return result;
89 }
90 int32_t intValue;
91 result = ArkTSUtils::ParseJsInteger(vm, jsValue, intValue) ? std::to_string(intValue) : "0";
92 return result;
93 }
94
GetDotIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)95 std::string GetDotIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
96 {
97 Local<JSValueRef> itemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_WIDTH);
98 Local<JSValueRef> itemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_ITEM_HEIGHT);
99 Local<JSValueRef> selectedItemWidthArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_WIDTH);
100 Local<JSValueRef> selectedItemHeightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_ITEM_HEIGHT);
101 Local<JSValueRef> maskArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_MASK);
102 Local<JSValueRef> colorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_COLOR);
103 Local<JSValueRef> selectedColorArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_SELECTED_COLOR);
104 Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_LEFT);
105 Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_TOP);
106 Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_RIGHT);
107 Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_BOTTOM);
108 CalcDimension calc;
109
110 std::string itemWidth = ArkTSUtils::ParseJsDimension(vm, itemWidthArg, calc, DimensionUnit::VP, false)
111 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
112 : "-";
113 std::string itemHeight = ArkTSUtils::ParseJsDimension(vm, itemHeightArg, calc, DimensionUnit::VP, false)
114 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
115 : "-";
116 std::string selectedItemWidth =
117 ArkTSUtils::ParseJsDimension(vm, selectedItemWidthArg, calc, DimensionUnit::VP, false)
118 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
119 : "-";
120 std::string selectedItemHeight =
121 ArkTSUtils::ParseJsDimension(vm, selectedItemHeightArg, calc, DimensionUnit::VP, false)
122 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
123 : "-";
124 std::string mask = "2";
125 if (!maskArg->IsUndefined()) {
126 mask = maskArg->ToBoolean(vm)->Value() ? "1" : "0";
127 }
128 Color color;
129 std::string colorStr = ArkTSUtils::ParseJsColorAlpha(vm, colorArg, color) ? std::to_string(color.GetValue()) : "-";
130 std::string selectedColor =
131 ArkTSUtils::ParseJsColorAlpha(vm, selectedColorArg, color) ? std::to_string(color.GetValue()) : "-";
132 std::string left = GetStringByValueRef(vm, leftArg);
133 std::string top = GetStringByValueRef(vm, topArg);
134 std::string right = GetStringByValueRef(vm, rightArg);
135 std::string bottom = GetStringByValueRef(vm, bottomArg);
136 Local<JSValueRef> maxDisplayCountArg = runtimeCallInfo->GetCallArgRef(DOT_INDICATOR_MAX_DISPLAY_COUNT);
137 auto maxDisplayCount = GetIntStringByValueRef(vm, maxDisplayCountArg);
138 std::string indicatorStr = itemWidth + "|" + itemHeight + "|" + selectedItemWidth + "|" + selectedItemHeight + "|" +
139 mask + "|" + colorStr + "|" + selectedColor + "|" + left + "|" + top + "|" + right +
140 "|" + bottom + "|" + maxDisplayCount;
141 return indicatorStr;
142 }
143
GetDigitIndicator(ArkUIRuntimeCallInfo * runtimeCallInfo,EcmaVM * vm)144 std::string GetDigitIndicator(ArkUIRuntimeCallInfo* runtimeCallInfo, EcmaVM* vm)
145 {
146 Local<JSValueRef> fontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_FONT_COLOR);
147 Local<JSValueRef> selectedFontColorArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_FONT_COLOR);
148 Local<JSValueRef> digitFontSizeArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_SIZE);
149 Local<JSValueRef> digitFontWeightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_DIGIT_FONT_WEIGHT);
150 Local<JSValueRef> selectedDigitFontSizeArg =
151 runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_SIZE);
152 Local<JSValueRef> selectedDigitFontWeightArg =
153 runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_SELECTED_DIGIT_FONT_WEIGHT);
154 Local<JSValueRef> leftArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_LEFT);
155 Local<JSValueRef> topArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_TOP);
156 Local<JSValueRef> rightArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_RIGHT);
157 Local<JSValueRef> bottomArg = runtimeCallInfo->GetCallArgRef(DIGIT_INDICATOR_BOTTOM);
158 Color color;
159 CalcDimension calc;
160 std::string fontColor =
161 ArkTSUtils::ParseJsColorAlpha(vm, fontColorArg, color) ? std::to_string(color.GetValue()) : "-";
162 std::string selectedFontColor =
163 ArkTSUtils::ParseJsColorAlpha(vm, selectedFontColorArg, color) ? std::to_string(color.GetValue()) : "-";
164 std::string digitFontSize = ArkTSUtils::ParseJsDimension(vm, digitFontSizeArg, calc, DimensionUnit::FP, false)
165 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
166 : "-";
167 std::string digitFontWeight = digitFontWeightArg->ToString(vm)->ToString(vm);
168 std::string selectedDigitFontSize =
169 ArkTSUtils::ParseJsDimension(vm, selectedDigitFontSizeArg, calc, DimensionUnit::FP, false)
170 ? std::to_string(calc.Value()) + GetDimensionUnitString(calc.Unit())
171 : "-";
172 std::string selectedDigitFontWeight = selectedDigitFontWeightArg->ToString(vm)->ToString(vm);
173 std::string left = GetStringByValueRef(vm, leftArg);
174 std::string top = GetStringByValueRef(vm, topArg);
175 std::string right = GetStringByValueRef(vm, rightArg);
176 std::string bottom = GetStringByValueRef(vm, bottomArg);
177 std::string indicatorStr = fontColor + "|" + selectedFontColor + "|" + digitFontSize + "|" + digitFontWeight + "|" +
178 selectedDigitFontSize + "|" + selectedDigitFontWeight + "|" + left + "|" + top + "|" +
179 right + "|" + bottom;
180 return indicatorStr;
181 }
182 } // namespace
183
SetInitialIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)184 ArkUINativeModuleValue IndicatorComponentBridge::SetInitialIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
185 {
186 EcmaVM* vm = runtimeCallInfo->GetVM();
187 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
188 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
189 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
190 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
191 if (valueArg->IsNumber()) {
192 int32_t index = valueArg->Int32Value(vm);
193 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setInitialIndex(nativeNode, index);
194 } else {
195 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetInitialIndex(nativeNode);
196 }
197 return panda::JSValueRef::Undefined(vm);
198 }
199
ResetInitialIndex(ArkUIRuntimeCallInfo * runtimeCallInfo)200 ArkUINativeModuleValue IndicatorComponentBridge::ResetInitialIndex(ArkUIRuntimeCallInfo* runtimeCallInfo)
201 {
202 EcmaVM* vm = runtimeCallInfo->GetVM();
203 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
204 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
205 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
206 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetInitialIndex(nativeNode);
207 return panda::JSValueRef::Undefined(vm);
208 }
209
SetCount(ArkUIRuntimeCallInfo * runtimeCallInfo)210 ArkUINativeModuleValue IndicatorComponentBridge::SetCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
211 {
212 EcmaVM* vm = runtimeCallInfo->GetVM();
213 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
214 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
215 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
216 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
217 if (valueArg->IsNumber()) {
218 int32_t count = valueArg->Int32Value(vm);
219 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setCount(nativeNode, count);
220 } else {
221 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetCount(nativeNode);
222 }
223 return panda::JSValueRef::Undefined(vm);
224 }
225
ResetCount(ArkUIRuntimeCallInfo * runtimeCallInfo)226 ArkUINativeModuleValue IndicatorComponentBridge::ResetCount(ArkUIRuntimeCallInfo* runtimeCallInfo)
227 {
228 EcmaVM* vm = runtimeCallInfo->GetVM();
229 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
230 Local<JSValueRef> firstArg = runtimeCallInfo->GetCallArgRef(0);
231 auto nativeNode = nodePtr(firstArg->ToNativePointer(vm)->Value());
232 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetCount(nativeNode);
233 return panda::JSValueRef::Undefined(vm);
234 }
235
SetOnChange(ArkUIRuntimeCallInfo * runtimeCallInfo)236 ArkUINativeModuleValue IndicatorComponentBridge::SetOnChange(ArkUIRuntimeCallInfo* runtimeCallInfo)
237 {
238 EcmaVM* vm = runtimeCallInfo->GetVM();
239 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
240 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
241 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
242 Local<JSValueRef> callbackArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
243 auto frameNode = reinterpret_cast<FrameNode*>(nativeNode);
244 CHECK_NULL_RETURN(frameNode, panda::JSValueRef::Undefined(vm));
245 if (callbackArg->IsUndefined() || callbackArg->IsNull() || !callbackArg->IsFunction(vm)) {
246 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetOnChange(nativeNode);
247 return panda::JSValueRef::Undefined(vm);
248 }
249 panda::Local<panda::FunctionRef> func = callbackArg->ToObject(vm);
250 std::function<void(const BaseEventInfo* info)> callback = [vm, frameNode, func = panda::CopyableGlobal(vm, func)](
251 const BaseEventInfo* info) {
252 panda::LocalScope pandaScope(vm);
253 panda::TryCatch trycatch(vm);
254 const auto* swiperInfo = TypeInfoHelper::DynamicCast<SwiperChangeEvent>(info);
255 if (!swiperInfo) {
256 TAG_LOGW(AceLogTag::ACE_INDICATOR, "IndicatorComponent onChange callback execute failed.");
257 return;
258 }
259 PipelineContext::SetCallBackNode(AceType::WeakClaim(frameNode));
260 panda::Local<panda::JSValueRef> params[FUNC_PARAM_LENGTH_1] = { panda::NumberRef::New(
261 vm, swiperInfo->GetIndex()) };
262 func->Call(vm, func.ToLocal(), params, FUNC_PARAM_LENGTH_1);
263 };
264 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setOnChange(
265 nativeNode, reinterpret_cast<void*>(&callback));
266 return panda::JSValueRef::Undefined(vm);
267 }
268
ResetOnChange(ArkUIRuntimeCallInfo * runtimeCallInfo)269 ArkUINativeModuleValue IndicatorComponentBridge::ResetOnChange(ArkUIRuntimeCallInfo* runtimeCallInfo)
270 {
271 EcmaVM* vm = runtimeCallInfo->GetVM();
272 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
273 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
274 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
275 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetOnChange(nativeNode);
276 return panda::JSValueRef::Undefined(vm);
277 }
278
SetStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)279 ArkUINativeModuleValue IndicatorComponentBridge::SetStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
280 {
281 EcmaVM* vm = runtimeCallInfo->GetVM();
282 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
283 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
284 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
285 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
286
287 std::string type = valueArg->ToString(vm)->ToString(vm);
288 std::string indicatorStr = "";
289 if (type == "ArkDigitIndicator") {
290 indicatorStr = type + "|" + GetDigitIndicator(runtimeCallInfo, vm);
291 } else {
292 indicatorStr = type + "|" + GetDotIndicator(runtimeCallInfo, vm);
293 }
294 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setStyle(nativeNode, indicatorStr.c_str());
295 return panda::JSValueRef::Undefined(vm);
296 }
297
ResetStyle(ArkUIRuntimeCallInfo * runtimeCallInfo)298 ArkUINativeModuleValue IndicatorComponentBridge::ResetStyle(ArkUIRuntimeCallInfo* runtimeCallInfo)
299 {
300 EcmaVM* vm = runtimeCallInfo->GetVM();
301 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
302 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
303 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
304 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetStyle(nativeNode);
305 return panda::JSValueRef::Undefined(vm);
306 }
307
SetLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)308 ArkUINativeModuleValue IndicatorComponentBridge::SetLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
309 {
310 EcmaVM* vm = runtimeCallInfo->GetVM();
311 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
312 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
313 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
314 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
315 if (valueArg->IsBoolean()) {
316 bool loop = valueArg->ToBoolean(vm)->Value();
317 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setLoop(nativeNode, loop);
318 } else {
319 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetLoop(nativeNode);
320 }
321 return panda::JSValueRef::Undefined(vm);
322 }
323
ResetLoop(ArkUIRuntimeCallInfo * runtimeCallInfo)324 ArkUINativeModuleValue IndicatorComponentBridge::ResetLoop(ArkUIRuntimeCallInfo* runtimeCallInfo)
325 {
326 EcmaVM* vm = runtimeCallInfo->GetVM();
327 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
328 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
329 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
330 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetLoop(nativeNode);
331 return panda::JSValueRef::Undefined(vm);
332 }
333
SetVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)334 ArkUINativeModuleValue IndicatorComponentBridge::SetVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
335 {
336 EcmaVM* vm = runtimeCallInfo->GetVM();
337 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
338 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
339 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
340 Local<JSValueRef> valueArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_VALUE_INDEX);
341 if (valueArg->IsBoolean()) {
342 bool isVertical = valueArg->ToBoolean(vm)->Value();
343 GetArkUINodeModifiers()->getIndicatorComponentModifier()->setVertical(nativeNode, isVertical);
344 } else {
345 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetVertical(nativeNode);
346 }
347 return panda::JSValueRef::Undefined(vm);
348 }
349
ResetVertical(ArkUIRuntimeCallInfo * runtimeCallInfo)350 ArkUINativeModuleValue IndicatorComponentBridge::ResetVertical(ArkUIRuntimeCallInfo* runtimeCallInfo)
351 {
352 EcmaVM* vm = runtimeCallInfo->GetVM();
353 CHECK_NULL_RETURN(vm, panda::JSValueRef::Undefined(vm));
354 Local<JSValueRef> nodeArg = runtimeCallInfo->GetCallArgRef(CALL_ARG_NODE_INDEX);
355 auto nativeNode = nodePtr(nodeArg->ToNativePointer(vm)->Value());
356 GetArkUINodeModifiers()->getIndicatorComponentModifier()->resetVertical(nativeNode);
357 return panda::JSValueRef::Undefined(vm);
358 }
359
360 } // namespace OHOS::Ace::NG
361