1/* 2 * Copyright (c) 2023 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/// <reference path='./import.ts' /> 17class ArkPathComponent extends ArkCommonShapeComponent implements PathAttribute { 18 constructor(nativePtr: KNode, classType?: ModifierType) { 19 super(nativePtr, classType); 20 } 21 commands(value: string): this { 22 modifierWithKey(this._modifiersWithKeys, CommandsModifier.identity, CommandsModifier, value); 23 return this; 24 } 25} 26 27class CommandsModifier extends ModifierWithKey<string> { 28 constructor(value: string) { 29 super(value); 30 } 31 static identity: Symbol = Symbol('commands'); 32 applyPeer(node: KNode, reset: boolean): void { 33 if (reset) { 34 getUINativeModule().path.resetPathCommands(node); 35 } else { 36 getUINativeModule().path.setPathCommands(node, this.value); 37 } 38 } 39 40 checkObjectDiff(): boolean { 41 if (isString(this.stageValue) && isString(this.value)) { 42 return this.stageValue !== this.value; 43 } else { 44 return true; 45 } 46 } 47} 48 49// @ts-ignore 50globalThis.Path.attributeModifier = function (modifier: ArkComponent): void { 51 attributeModifierFunc.call(this, modifier, (nativePtr: KNode) => { 52 return new ArkPathComponent(nativePtr); 53 }, (nativePtr: KNode, classType: ModifierType, modifierJS: ModifierJS) => { 54 return new modifierJS.PathModifier(nativePtr, classType); 55 }); 56}; 57