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}