/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @file * @kit ArkUI */ import { UIContext } from '../@ohos.arkui.UIContext'; import { FrameNode } from './FrameNode'; import { Size } from './Graphics'; /*** if arkts 1.2 */ import { TouchEvent } from './component/common'; import { WrappedBuilder, CustomBuilder, CustomBuilderT } from './component/builder'; /*** endif */ /** * Render type of the node using for indicating that * if the node will be shown on the display or rendered to a texture * * @enum { number } Render type * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Render type of the node using for indicating that * if the node will be shown on the display or rendered to a texture * *

NOTE: *
Currently, the RENDER_TYPE_TEXTURE type takes effect only for the XComponentNode and the BuilderNode *
holding a component tree whose root node is a custom component. *
In the case of BuilderNode, the following custom components that function as the root node support texture export: *
Badge, Blank, Button, CanvasGradient, CanvasPattern, CanvasRenderingContext2D, Canvas, CheckboxGroup, Checkbox, *
Circle, ColumnSplit, Column, ContainerSpan, Counter, DataPanel, Divider, Ellipse, Flex, Gauge, Hyperlink, *
ImageBitmap, ImageData, Image, Line, LoadingProgress, Marquee, Matrix2D, OffscreenCanvasRenderingContext2D, *
OffscreenCanvas, Path2D, Path, PatternLock, Polygon, Polyline, Progress, QRCode, Radio, Rating, Rect, *
RelativeContainer, RowSplit, Row, Shape, Slider, Span, Stack, TextArea, TextClock, TextInput, TextTimer, Text, *
Toggle, Video (without support for full-screen playback), Web, XComponent *
The following components support texture export since API version 12: DatePicker, ForEach, Grid, IfElse, *
LazyForEach, List, Scroll, Swiper, TimePicker, @Component decorated custom components, NodeContainer, *
and FrameNode and RenderNode mounted to a NodeContainer. *

For details, see Rendering and Drawing Video and Button Components at the Same Layer. * * @enum { number } Render type * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ export declare enum NodeRenderType { /** * Display type.The node will be shown on the display. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Display type.The node will be shown on the display. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ RENDER_TYPE_DISPLAY = 0, /** * Exporting texture type.The node will be render to a texture. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @since 11 */ /** * Exporting texture type.The node will be render to a texture. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ RENDER_TYPE_TEXTURE = 1, } /** * RenderOptions info. * * @interface RenderOptions * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * RenderOptions info. * * @interface RenderOptions * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ export interface RenderOptions { /** * The ideal size of the node. * @type { ?Size } selfIdealSize - The ideal size of the node * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * The ideal size of the node. * @type { ?Size } selfIdealSize - The ideal size of the node * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ selfIdealSize?: Size; /** * Render type of the node. * @type { ?NodeRenderType } type - Render type of the node * @syscap SystemCapability.ArkUI.ArkUI.Full * @since 11 */ /** * Render type of the node. * @type { ?NodeRenderType } type - Render type of the node * @syscap SystemCapability.ArkUI.ArkUI.Full * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ type?: NodeRenderType; /** * The surfaceId of a texture consumer * @type { ?string } surfaceId - surfaceId of a consumer who can receive the texture of the Node * @syscap SystemCapability.ArkUI.ArkUI.Full * @since 11 */ /** * The surfaceId of a texture consumer * Generally, the texture receiver is an OH_NativeImage instance. * @type { ?string } surfaceId - surfaceId of a consumer who can receive the texture of the Node * @syscap SystemCapability.ArkUI.ArkUI.Full * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ surfaceId?: string; } /** * BuildOptions info. * * @interface BuildOptions * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ export interface BuildOptions { /** * Build type of the Builder. * @type { ?boolean } nestingBuilderSupported - Build type of the Builder. * Indicates whether support the type that WrappedBuilder contains builder used different params. * The value false means that the input arguments for @Builder are consistent, and true means the opposite. * @default false * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ nestingBuilderSupported?: boolean; /** * The LocalStorage of the Builder. * @type { ?LocalStorage } localStorage - The LocalStorage of the Builder. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 */ localStorage?: LocalStorage; /** * Whether support the inner Consume connect to the outside Provide. * @type { ?boolean } * enableProvideConsumeCrossing - Indicates whether support the inner Consume * connect to the outside Provide. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 */ enableProvideConsumeCrossing?: boolean; } /** * Defines the event type used for posting. * * @typedef { TouchEvent | MouseEvent | AxisEvent } InputEventType * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 */ declare type InputEventType = TouchEvent | MouseEvent | AxisEvent; /** * Defines BuilderNode. * Implements a BuilderNode, which can create a component tree through the stateless UI method @Builder and hold the * root node of the component tree. A BuilderNode cannot be defined as a state variable. The FrameNode held in the * BuilderNode is only used to mount the BuilderNode to other FrameNodes as a child node. Undefined behavior may occur * if you set attributes or perform operations on subnodes of the FrameNode held by the BuilderNode. Therefore, after * you have obtained a RenderNode through the getFrameNode method of the BuilderNode and the getRenderNode method of the * FrameNode, avoid setting the attributes or operating the subnodes through APIs of the RenderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Defines BuilderNode. * Implements a BuilderNode, which can create a component tree through the stateless UI method @Builder and hold the * root node of the component tree. A BuilderNode cannot be defined as a state variable. The FrameNode held in the * BuilderNode is only used to mount the BuilderNode to other FrameNodes as a child node. Undefined behavior may occur * if you set attributes or perform operations on subnodes of the FrameNode held by the BuilderNode. Therefore, after * you have obtained a RenderNode through the getFrameNode method of the BuilderNode and the getRenderNode method of the * FrameNode, avoid setting the attributes or operating the subnodes through APIs of the RenderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 12 */ export class BuilderNode { /** * Constructor. * When the content generated by the BuilderNode is embedded in another RenderNode for display, that is, the * RenderNode corresponding to the BuilderNode is mounted to another RenderNode for display, selfIdealSize in * RenderOptions must be explicitly specified. If selfIdealSize is not set, the node in the builder follows the * default parent component layout constraint [0, 0], which means that the size of the root node of the subtree in * BuilderNode is [0, 0]. * *

Note: *
The input parameter for uiContext must be a valid value, that is, the UI context must be correct. If an invalid *
value is passed in or if no value is specified, creation will fail. *

* * @param { UIContext } uiContext - uiContext used to create the BuilderNode * @param { RenderOptions } options - Render options of the Builder Node * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Constructor. * When the content generated by the BuilderNode is embedded in another RenderNode for display, that is, the * RenderNode corresponding to the BuilderNode is mounted to another RenderNode for display, selfIdealSize in * RenderOptions must be explicitly specified. If selfIdealSize is not set, the node in the builder follows the * default parent component layout constraint [0, 0], which means that the size of the root node of the subtree in * BuilderNode is [0, 0]. * *

Note: *
The input parameter for uiContext must be a valid value, that is, the UI context must be correct. If an invalid *
value is passed in or if no value is specified, creation will fail. *

* * @param { UIContext } uiContext - uiContext used to create the BuilderNode * @param { RenderOptions } options - Render options of the Builder Node * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ constructor(uiContext: UIContext, options?: RenderOptions); /** * Build the BuilderNode with the builder. * Creates a component tree based on the passed object and holds the root node of the component tree. The stateless UI * method @Builder has at most one root node. Custom components are allowed. Yet, the custom components cannot use * decorators, such as @Reusable, @Link, @Provide, and @Consume, for state synchronization with the page to which the * BuilderNode is mounted. Since API version 12, custom components can receive LocalStorage instances. You can use * LocalStorage related decorators such as @LocalStorageProp and @LocalStorageLink by passing LocalStorage instances. * *

Note: *
When nesting @Builder, ensure that the input objects for the inner and outer @Builder methods are consistent. *
The outermost @Builder supports only one input argument. *
To operate objects in a BuilderNode, ensure that the reference to the BuilderNode is not garbage collected. *
Once a BuilderNode object is collected by the virtual machine, its FrameNode and RenderNode objects will also *
be dereferenced from the backend nodes. This means that any FrameNode objects obtained from a BuilderNode will *
no longer correspond to any actual node if the BuilderNode is garbage collected. *

* * @param { WrappedBuilder } builder - Defined the builder will be called to build the node. * @param { Object } arg - Defined the args will be used in the builder. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Build the BuilderNode with the builder. * Creates a component tree based on the passed object and holds the root node of the component tree. The stateless UI * method @Builder has at most one root node. Custom components are allowed. Yet, the custom components cannot use * decorators, such as @Reusable, @Link, @Provide, and @Consume, for state synchronization with the page to which the * BuilderNode is mounted. Since API version 12, custom components can receive LocalStorage instances. You can use * LocalStorage related decorators such as @LocalStorageProp and @LocalStorageLink by passing LocalStorage instances. * *

Note: *
When nesting @Builder, ensure that the input objects for the inner and outer @Builder methods are consistent. *
The outermost @Builder supports only one input argument. *
To operate objects in a BuilderNode, ensure that the reference to the BuilderNode is not garbage collected. *
Once a BuilderNode object is collected by the virtual machine, its FrameNode and RenderNode objects will also *
be dereferenced from the backend nodes. This means that any FrameNode objects obtained from a BuilderNode will *
no longer correspond to any actual node if the BuilderNode is garbage collected. *

* * @param { WrappedBuilder } builder - Defined the builder will be called to build the node. * @param { Object } arg - Defined the args will be used in the builder. * Only one input argument is supported, and the type of the input argument must be consistent with the type defined * by @Builder. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ build(builder: WrappedBuilder, arg?: Object): void; /** * Build the BuilderNode with the builder.Support the type that WrappedBuilder contains builder used different params. * Creates a component tree based on the passed object and holds the root node of the component tree. The stateless UI * method @Builder has at most one root node. Custom components are allowed. Yet, the custom components cannot use * decorators, such as @Reusable, @Link, @Provide, and @Consume, for state synchronization with the current page. * Since API version 12, custom components can receive LocalStorage instances. You can use LocalStorage related * decorators such as @LocalStorageProp and @LocalStorageLink by passing LocalStorage instances. * *

Note: *
For details about the creation and update using @Builder, see @Builder. *
The outermost @Builder supports only one input argument. *

* * @param { WrappedBuilder } builder - Defined the builder will be called to build the node. * @param { Object } arg - Defined the args will be used in the builder. * Only one input argument is supported, and the type of the input argument must be consistent with the type defined * by @Builder. * @param { BuildOptions } options - Defined the options will be used when build. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ build(builder: WrappedBuilder, arg: Object, options: BuildOptions): void; /** * Update the BuilderNode based on the provided parameters. * Updates this BuilderNode based on the provided parameter, which is of the same type as the input parameter passed * to the build API. * To call this API on a custom component, the variable used in the component must be defined as the @Prop type. * * @param { Object } arg - Parameters used to update the BuilderNode, which must match the types required by the builder bound to the BuilderNode. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Update the BuilderNode based on the provided parameters. * Updates this BuilderNode based on the provided parameter, which is of the same type as the input parameter passed * to the build API. * To call this API on a custom component, the variable used in the component must be defined as the @Prop type. * * @param { Object } arg - Parameters used to update the BuilderNode, which must match the types required by the builder bound to the BuilderNode. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ update(arg: Object): void; /** * Get the FrameNode in BuilderNode. * The FrameNode is generated only after the BuilderNode executes the build operation. * * @returns { FrameNode | null } - Returns a FrameNode inside the BuilderNode, or null if not contained. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Get the FrameNode in BuilderNode. * The FrameNode is generated only after the BuilderNode executes the build operation. * * @returns { FrameNode | null } - Returns a FrameNode inside the BuilderNode, or null if not contained. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ getFrameNode(): FrameNode | null; /** * Dispatch touchEvent to targetNode. * postTouchEvent dispatches the event from a middle node in the component tree downwards. To ensure the event is * dispatched correctly, it needs to be transformed into the coordinate system of the parent component, as shown in * the figure below. * OffsetA indicates the offset of the BuildNode relative to the parent component. You can obtain this offset by * calling getPositionToParent in the FrameNode. OffsetB indicates the offset of the touch point relative to the * BuildNode. You can obtain this offset from the TouchEvent object. OffsetC is the sum of OffsetA and OffsetB. It * represents the final offset that you need to pass to postTouchEvent. * *

Note: *
The coordinates you pass in need to be converted to pixel values (px). If the BuilderNode has any affine *
transformations applied to it, they must be taken into account and combined with the touch event coordinates. *
In Webview, coordinate system transformations are already handled internally, so you can directly dispatch the *
touch event without additional adjustments. *
The postTouchEvent API can be called only once for the same timestamp. *
UIExtensionComponent is not supported. *

* * @param { TouchEvent } event - The touchEvent which will be sent to the targetNode. * @returns { boolean } - Returns true if the TouchEvent has been successfully posted to the targetNode, false otherwise. * If the event does not hit the expected component, ensure the following: * 1. The coordinate system has been correctly transformed * 2. The component is in an interactive state. * 3. The event has been bound to the component. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @since 11 */ /** * Dispatch touchEvent to targetNode. * postTouchEvent dispatches the event from a middle node in the component tree downwards. To ensure the event is * dispatched correctly, it needs to be transformed into the coordinate system of the parent component, as shown in * the figure below. * OffsetA indicates the offset of the BuildNode relative to the parent component. You can obtain this offset by * calling getPositionToParent in the FrameNode. OffsetB indicates the offset of the touch point relative to the * BuildNode. You can obtain this offset from the TouchEvent object. OffsetC is the sum of OffsetA and OffsetB. It * represents the final offset that you need to pass to postTouchEvent. * *

Note: *
The coordinates you pass in need to be converted to pixel values (px). If the BuilderNode has any affine *
transformations applied to it, they must be taken into account and combined with the touch event coordinates. *
In Webview, coordinate system transformations are already handled internally, so you can directly dispatch the *
touch event without additional adjustments. *
The postTouchEvent API can be called only once for the same timestamp. *
UIExtensionComponent is not supported. *

* * @param { TouchEvent } event - The touchEvent which will be sent to the targetNode. * @returns { boolean } - Returns true if the TouchEvent has been successfully posted to the targetNode, false otherwise. * If the event does not hit the expected component, ensure the following: * 1. The coordinate system has been correctly transformed * 2. The component is in an interactive state. * 3. The event has been bound to the component. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ postTouchEvent(event: TouchEvent): boolean; /** * Dispose the BuilderNode immediately. * Calling dispose on a BuilderNode object breaks its reference to the backend entity node, and also simultaneously * severs the references of its contained FrameNode and RenderNode to their respective entity nodes. * *

Note: *
Calling dispose on a BuilderNode object breaks its reference to the backend entity node, and also *
simultaneously severs the references of its contained FrameNode and RenderNode to their respective entity nodes. *
If the frontend object BuilderNode cannot be released, memory leaks may occur. To avoid this, be sure to call *
dispose on the BuilderNode when you no longer need it. This reduces the complexity of reference relationships *
and lowers the risk of memory leaks. *

* * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ dispose(): void; /** * Reuse the BuilderNode based on the provided parameters. * * @param { Object } [param] - Parameters for reusing BuilderNode. * It is of the same type as the parameter passed to the build API. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since arkts {'1.1':'12','1.2':'20'} * @arkts 1.1&1.2 */ reuse(param?: Object): void; /** * Recycle the BuilderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 12 */ recycle(): void; /** * Notify BuilderNode to update the configuration to trigger a reload of the BuilderNode. * *

Note: *
The updateConfiguration API is used to instruct an object to update, with the system environment used for the *
update being determined by the changes in the application's current system environment. *

* * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 12 */ updateConfiguration(): void; /** * Dispatch event to targetNode. * * @param { InputEventType } event - The event which will be sent to the targetNode. * @returns { boolean } - Returns true if the eventhas been successfully posted to the targetNode, * false otherwise. * @syscap SystemCapability.ArkUI.ArkUI.Full * @atomicservice * @since 20 */ postInputEvent(event: InputEventType): boolean; /** * Set if the BuilderNode inherits the freezing policy of the parent CustomComponent, ComponentContent, or BuilderNode. * * @param { boolean } enabled - If the BuilderNode inherits the freezing policy of the parent CustomComponent, ComponentContent, or BuilderNode. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 */ inheritFreezeOptions(enabled: boolean): void; /** * Get if the node is disposed. * * @returns { boolean } - Returns true if the node is disposed, false otherwise. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 */ isDisposed(): boolean; } /** * Defines BuilderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ export declare class BuilderNode { /** * Constructor. * * @param { UIContext } uiContext - uiContext used to create the BuilderNode * @param { RenderOptions } [options] - Render options of the Builder Node * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ constructor(uiContext: UIContext, options?: RenderOptions); /** * Build the BuilderNode with the builder. * * @param { WrappedBuilder } builder - Defined the builder will be called to build the node. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ build(builder: WrappedBuilder): void; /** * Build the BuilderNode with the builder. * * @param { WrappedBuilder> } builder - Defined the builder will be called to build the node. * @param { T } arg - Defined the args will be used in the builder. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ build(builder: WrappedBuilder>, arg: T): void; /** * Build the BuilderNode with the builder.Support the type that WrappedBuilder contains builder used different params. * * @param { WrappedBuilder> } builder - Defined the builder will be called to build the node. * @param { T } arg - Defined the args will be used in the builder. * @param { BuildOptions } options - Defined the options will be used when build. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ build(builder: WrappedBuilder>, arg: T, options: BuildOptions): void; /** * Update the BuilderNode based on the provided parameters. * * @param { T } arg - Parameters used to update the BuilderNode, which must match the types required by the builder bound to the BuilderNode. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ update(arg: T): void; /** * Get the FrameNode in BuilderNode. * * @returns { FrameNode | null } - Returns a FrameNode inside the BuilderNode, or null if not contained. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ getFrameNode(): FrameNode | null; /** * Dispatch touchEvent to targetNode. * * @param { TouchEvent } event - The touchEvent which will be sent to the targetNode. * @returns { boolean } - Returns true if the TouchEvent has been successfully posted to the targetNode, false otherwise. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ postTouchEvent(event: TouchEvent): boolean; /** * Dispose the BuilderNode immediately. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ dispose(): void; /** * Reuse the BuilderNode based on the provided parameters. * * @param { Record } [param] - Parameters for reusing BuilderNode. * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ reuse(param?: Record): void; /** * Recycle the BuilderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ recycle(): void; /** * Notify BuilderNode to update the configuration to trigger a reload of the BuilderNode. * * @syscap SystemCapability.ArkUI.ArkUI.Full * @crossplatform * @atomicservice * @since 20 * @arkts 1.2 */ updateConfiguration(): void; }