From 162b519a8359f551fdd5333a3d3ebcfde27d4f69 Mon Sep 17 00:00:00 2001 From: Ilya Erokhin Date: Tue, 19 Aug 2025 12:24:20 +0300 Subject: [PATCH] Adapt CustomComponent to cn plugin Signed-off-by: Ilya Erokhin --- .../arkui/src/component/customComponent.ets | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/arkui/src/component/customComponent.ets b/arkoala-arkts/arkui/src/component/customComponent.ets index 173558bf20..e9472b09c8 100644 --- a/arkoala-arkts/arkui/src/component/customComponent.ets +++ b/arkoala-arkts/arkui/src/component/customComponent.ets @@ -27,6 +27,8 @@ import { ArkUIAniModule } from "../ani/arkts/ArkUIAniModule" import { ArkCustomComponent } from "../ArkCustomComponent" import { KPointer } from "@koalaui/interop" import { int32 } from "@koalaui/common" +import { ObserveSingleton } from "../stateManagement/base/observeSingleton"; +import { OBSERVE } from "../stateManagement"; export interface LayoutCallback { onPlaceChildren(selfLayoutInfo: GeometryInfo, children: Array, constraint: ConstraintSizeOptions): void {} @@ -82,6 +84,22 @@ export abstract class BaseCustomComponent extends ExtendableComponent { abstract aboutToRecycle(): void; } export class CustomComponent, OptionsT extends Object> extends BaseCustomComponent { + static isCnPlugin: boolean = false + + // cn plugin format + @memo + static _instantiateImpl, OptionsS extends Object>( + @memo attributeApplier: ((instance: S) => void) | undefined, + factory: () => S, + options?: OptionsS, + reuseId?: string, + @memo content?: () => void + ): void { + CustomComponent.isCnPlugin = true + CustomComponent.$_instantiate(attributeApplier, factory, options, reuseId, content) + } + + // spb plugin format @memo static $_instantiate, OptionsS extends Object>( @memo attributeApplier: ((instance: S) => void) | undefined, @@ -190,7 +208,13 @@ export class CustomComponent, OptionsT ex this.pageTransition() } this.__updateStruct(options) - this._build(attributeApplier, content, options) + if (CustomComponent.isCnPlugin) { + OBSERVE.renderingComponent = ObserveSingleton.RenderingComponentV1; + this.build() + OBSERVE.renderingComponent = ObserveSingleton.RenderingComponent; + } else { + this._build(attributeApplier, content, options) + } this.onDidBuild() } ) -- Gitee