• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 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
16class BuilderViewV2 extends ViewV2 {
17    aboutToBeDeleted(): void {
18    }
19    protected purgeVariableDependenciesOnElmtId(removedElmtId: number): void {
20    }
21    public updateRecycleElmtId(oldElmtId: number, newElmtId: number): void {
22    }
23    public updateStateVars(params: Object): void  {
24    }
25    constructor(parent, extraInfo, elmtId = -1) {
26        super(parent, elmtId, extraInfo);
27        this.finalizeConstruction();
28    }
29
30    initialRender(): void {
31
32    }
33    rerender(): void {
34        this.updateDirtyElements();
35    }
36    static getEntryName(): string {
37        return 'BuilderViewV2';
38    }
39}
40
41function createCompatibleNodeWithFuncVoid(fn: (() => void) | Object, elmtId: number): ViewV2 {
42    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
43    let buildFunc = function (): void {
44        if (fn && typeof fn === 'function') {
45            fn.bind(this)();
46        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
47            (fn as any).builder.bind(this)();
48        }
49    }
50    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
51    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
52    return builderViewV2;
53}
54
55// ArkTS1.1
56function createCompatibleNodeWithFunc<T1>(fn: ((arg1: T1) => void) | Object, elmtId: number, arg1: T1): ViewV2 {
57    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
58    let buildFunc = function (): void {
59        if (fn && typeof fn === 'function') {
60            fn.bind(this)(this.arg1);
61        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
62            (fn as any).builder.bind(this)(this.arg1);
63        }
64    }
65    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
66    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
67    if (typeof arg1 === 'object') {
68        builderViewV2['arg1'] = UIUtilsImpl.instance().makeObserved(arg1 as Object);
69    } else {
70        builderViewV2['arg1'] = arg1;
71    }
72    builderViewV2[ObserveV2.V2_DECO_META] ??= {};
73    return builderViewV2;
74}
75
76// ArkTS1.1
77function createCompatibleNodeWithFunc2<T1, T2>(fn: ((arg1: T1, arg2: T2) => void) | Object,
78    elmtId: number, arg1: T1, arg2: T2): ViewV2 {
79    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
80    let buildFunc = function (): void {
81        if (fn && typeof fn === 'function') {
82            fn.bind(this)(arg1, arg2);
83        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
84            (fn as any).builder.bind(this)(arg1, arg2);
85        }
86    }
87    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
88    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
89    return builderViewV2;
90}
91
92function createCompatibleNodeWithFunc3<T1, T2, T3>(fn: ((arg1: T1, arg2: T2, arg3: T3) => void) | Object,
93    elmtId: number, arg1: T1, arg2: T2, arg3: T3): ViewV2 {
94    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
95    let buildFunc = function (): void {
96        if (fn && typeof fn === 'function') {
97            fn.bind(this)(arg1, arg2, arg3);
98        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
99            (fn as any).builder.bind(this)(arg1, arg2, arg3);
100        }
101    }
102    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
103    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
104    return builderViewV2;
105}
106
107function createCompatibleNodeWithFunc4<T1, T2, T3, T4>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => void) | Object,
108    elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4): ViewV2 {
109    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
110    let buildFunc = function (): void {
111        if (fn && typeof fn === 'function') {
112            fn.bind(this)(arg1, arg2, arg3, arg4);
113        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
114            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4);
115        }
116    }
117    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
118    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
119    return builderViewV2;
120}
121
122function createCompatibleNodeWithFunc5<T1, T2, T3, T4, T5>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => void) | Object,
123    elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5): ViewV2 {
124    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
125    let buildFunc = function (): void {
126        if (fn && typeof fn === 'function') {
127            fn.bind(this)(arg1, arg2, arg3, arg4, arg5);
128        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
129            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5);
130        }
131    }
132    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
133    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
134    return builderViewV2;
135}
136
137function createCompatibleNodeWithFunc6<T1, T2, T3, T4, T5, T6>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => void) | Object,
138    elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6): ViewV2 {
139    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
140    let buildFunc = function (): void {
141        if (fn && typeof fn === 'function') {
142            fn.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6);
143        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
144            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6);
145        }
146    }
147    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
148    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
149    return builderViewV2;
150}
151
152function createCompatibleNodeWithFunc7<T1, T2, T3, T4, T5, T6, T7>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6,
153    arg7: T7) => void) | Object, elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7): ViewV2 {
154    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
155    let buildFunc = function (): void {
156        if (fn && typeof fn === 'function') {
157            fn.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
158        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
159            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
160        }
161    }
162    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
163    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
164    return builderViewV2;
165}
166
167function createCompatibleNodeWithFunc8<T1, T2, T3, T4, T5, T6, T7, T8>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6,
168    arg7: T7, arg8: T8) => void) | Object, elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8): ViewV2 {
169    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
170    let buildFunc = function (): void {
171        if (fn && typeof fn === 'function') {
172            fn.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
173        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
174            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
175        }
176    }
177    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
178    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
179    return builderViewV2;
180}
181
182function createCompatibleNodeWithFunc9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6,
183    arg7: T7, arg8: T8, arg9: T9) => void) | Object, elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7,
184    arg8: T8, arg9: T9): ViewV2 {
185    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
186    let buildFunc = function (): void {
187        if (fn && typeof fn === 'function') {
188            fn.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
189        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
190            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
191        }
192    }
193    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
194    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
195    return builderViewV2;
196}
197
198function createCompatibleNodeWithFunc10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6,
199    arg7: T7, arg8: T8, arg9: T9, arg10: T10) => void) | Object, elmtId: number, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7,
200    arg8: T8, arg9: T9, arg10: T10): ViewV2 {
201    let builderViewV2 = new BuilderViewV2(undefined, undefined, elmtId);
202    let buildFunc = function (): void {
203        if (fn && typeof fn === 'function') {
204            fn.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
205        } else if (fn && typeof fn === 'object' && 'builder' in fn && typeof (fn as any).builder === 'function') {
206            (fn as any).builder.bind(this)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
207        }
208    }
209    builderViewV2.initialRender = buildFunc.bind(builderViewV2);
210    builderViewV2.rerender = (): void => { builderViewV2.updateDirtyElements(); };
211    return builderViewV2;
212}
213
214function runPendingJobs(): void {
215    console.log('runPendingJobs enter');
216}