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 ColumnSplitDividerModifier extends ModifierWithKey<ColumnSplitDividerStyle | null> { 18 constructor(value: ColumnSplitDividerStyle | null) { 19 super(value); 20 } 21 static identity: Symbol = Symbol('columnSplitDivider'); 22 applyPeer(node: KNode, reset: boolean): void { 23 if (reset) { 24 getUINativeModule().columnSplit.resetDivider(node); 25 } else { 26 getUINativeModule().columnSplit.setDivider(node, this.value.startMargin, this.value.endMargin); 27 } 28 } 29 checkObjectDiff(): boolean { 30 return !isBaseOrResourceEqual(this.stageValue.startMargin, this.value.startMargin) || 31 !isBaseOrResourceEqual(this.stageValue.endMargin, this.value.endMargin); 32 } 33} 34class ColumnSplitResizeableModifier extends ModifierWithKey<boolean> { 35 constructor(value: boolean) { 36 super(value); 37 } 38 static identity: Symbol = Symbol('columnSplitResizeable'); 39 applyPeer(node: KNode, reset: boolean): void { 40 if (reset) { 41 getUINativeModule().columnSplit.resetResizeable(node); 42 } else { 43 getUINativeModule().columnSplit.setResizeable(node, this.value); 44 } 45 } 46 checkObjectDiff(): boolean { 47 return this.stageValue !== this.value; 48 } 49} 50class ColumnSplitClipModifier extends ModifierWithKey<boolean | CircleAttribute | EllipseAttribute | PathAttribute | RectAttribute> { 51 constructor(value: boolean | CircleAttribute | EllipseAttribute | PathAttribute | RectAttribute) { 52 super(value); 53 } 54 static identity: Symbol = Symbol('columnSplitClip'); 55 applyPeer(node: KNode, reset: boolean): void { 56 if (reset) { 57 getUINativeModule().common.resetClipWithEdge(node); 58 } else { 59 getUINativeModule().common.setClipWithEdge(node, this.value); 60 } 61 } 62 checkObjectDiff(): boolean { 63 return true; 64 } 65} 66class ArkColumnSplitComponent extends ArkComponent implements CommonMethod<ColumnSplitAttribute> { 67 constructor(nativePtr: KNode, classType?: ModifierType) { 68 super(nativePtr, classType); 69 } 70 resizeable(value: boolean): ColumnSplitAttribute { 71 modifierWithKey(this._modifiersWithKeys, ColumnSplitResizeableModifier.identity, ColumnSplitResizeableModifier, value); 72 return this; 73 } 74 divider(value: ColumnSplitDividerStyle | null): ColumnSplitAttribute { 75 modifierWithKey(this._modifiersWithKeys, ColumnSplitDividerModifier.identity, ColumnSplitDividerModifier, value); 76 return this; 77 } 78 clip(value: boolean | CircleAttribute | EllipseAttribute | PathAttribute | RectAttribute): this { 79 modifierWithKey(this._modifiersWithKeys, ColumnSplitClipModifier.identity, ColumnSplitClipModifier, value); 80 return this; 81 } 82} 83// @ts-ignore 84globalThis.ColumnSplit.attributeModifier = function (modifier: ArkComponent): void { 85 attributeModifierFunc.call(this, modifier, (nativePtr: KNode) => { 86 return new ArkColumnSplitComponent(nativePtr); 87 }, (nativePtr: KNode, classType: ModifierType, modifierJS: ModifierJS) => { 88 return new modifierJS.ColumnSplitModifier(nativePtr, classType); 89 }); 90}; 91