1/* 2 * Copyright (c) 2023-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 16const KeyCode = requireNapi("multimodalInput.keyCode").KeyCode; 17export var EditableLeftIconType; 18! function(e) { 19 e[e.Back = 0] = "Back"; 20 e[e.Cancel = 1] = "Cancel" 21}(EditableLeftIconType || (EditableLeftIconType = {})); 22const PUBLIC_CANCEL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABKpJREFUeNrt3bFrlHccx/Ff4o2dgkOQ4JzR4SYJgksnbYcGOrTQsUPtpE4d/RNcFBeFlg7NUlTSTrXQQgsKGV0KHTs4ODiJSL8PdxaUGJK7pPc893m94TvleZLnnt/7fcc9z5FrDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnDQrPTuej2u2a87VvKp5XLNT87OlGiSf1lx6Zz2/q3kkgLdZr7k5lX8/7tZ8XfOCU4OgW887U/n341bN9T6s56menLAfaj464OfdM8iF6XYv+dV7+X+pOX/ANuOatZqHAmjti5prh9jurAgGI//mIbbtIvi15u9FHvBqD07a50fYdqtmt+YDrg1a/jd8tuiD7kMA4yNuL4LlkH+WtV/KAEYz7COC4cs/69ovXQB7M+4ngmHLP8/aL1UAD+bYVwTDlX/etT8W+nAV6M82uQS6PuP+rg4NV/5vBNDa6za5HLY9xzO5CIYl/9OaT5obYf/xrE1uioggQ/6LNf/04QGd6tHJFQH5owMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDSI6A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI1gjfyLY8UpmJnNqbjrc/yO32pOk98rQPIrwWnyCyA5AvILQATkF4AIyC8AEZBfACIgvwBEQH4BiID8J8qqU3BiPJ8O+XuMO8Eng8/2CID85BcA+ckvAPKT35tg8h+n/KP2/3/2SADojfzf1+yKYH7cBxim/N39hWX8RnsBkP9Q8r9BBAKIlV8EAoiXXwQCiJdfBAKIl18EAoiXXwQz4D5A/+Tv2KjZmuPvdfu6T+AVYJDyd3Qfo17Gb7QXAPkPzTMRCCBVfhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIwD+qFUFuAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBdAD3a8bkj4rgTM2PAmjty5or5I+L4FzNHzV/LfKB9OGb4rfJP0iO49xvL/pB9CGAMfljIxgLoLUR+WMjGAmgtT3yx0awJ4DWdsgfG8HOog+6D1eBntR8WLNB/sFzlKtDnfw3BNDa65rfp2+I3hfBo5rL5B9UBFttcoNzP35qk8vfLxZ9sCs9OnHdG6Kvps8e3TXiVzWPp88Ut3k1OLr1vFpz6Z31/LbmntMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAO/wLvsR65mx80NAAAAABJRU5ErkJggg=="; 23const PUBLIC_OK = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA+lJREFUeNrt3bFrFgccx+GLlSDi4JDBITiJZHBwEBGRIoqKoIu6iVMd3OosCg6W0sm/wEFUDDgpCDoIDoqOKqIoHUrp4CDFoUMRB39HLotoeXMpMXff54EfFE0ivv1+kpQGrmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBJTHkJGIhddT/V7ajbUPey7l7dlbpPAmCs1tb9Wne2++cvPa07Vfd7nw/+g9eXVT7+m3Wn69Z8421m6w7WXa37KADGNv4TE7ztTN36uvtL/UPWeJ0Z+PgXnejzBwmAMYx/8VuhTQIgcfy9CYCxjP9D3TsBkPqZf95XAFLH3372vyAAEsf/T93Ruvd93tn/CWbo4z9c96jvBxAAseMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eP/HgG0z3f9uVl45uu2ZuGBBu3zXn9rej7mEuMfSgDtA46v1c195ff+rbtU94stGv9KWqnHpLaPsXxSt/k//iXsq9vY9HjUJca/2gNoH2e/c4K32yUC4x9bAOvqrjeTP41GBMY/qgC2151Z4vuIwPhXxEo8I2xdz/c7W3fZXo1/6F8B/q471/N9fSUw/sEH8LEb8hYRGH9iAK3HdafrpkVg/IkBtA8yflt3bBn/3SEC4x9sAK3Xda9EYPypAYjA+OMDEIHxxwcgAuOPD0AExh8fgAiMPz4AERh/fAAiMP74AERg/PEBiMD44wMQgfHHByAC448PQATGHx+ACIw/PgARGH98AMkRGL8AYiMwfgHERmD8AoiNwPgFEBuB8QsgNgLjF0BsBMYvgNgIjF8AsREYvwBiIzB+AcRGYPwCiI3A+AUQG4HxCyA2AuMXQGwExi+A2AiMXwCxERi/AGIjMH4BjDaCTXUP6j59423aJ2PeMH4BjDWCHd24n9f9+cXvHa+7U7fb+Fe/qeC/ezvU+e5bleX40A11pm6u+xapMX5fARK+Eix+u7O1brbp/1Bw4xfAoCP4Pxi/AGIjMH4BxEZg/AKIjcD4BRAbgfELIDYC4xdAbATGL4DYCIxfAIOL4EXdkbrpZX6sd3WH6p56WQUwJG/qbtX92Cz8EFwfD+sO1L31cq4uU16CibU/M3Sy7nzdlgnf51ndxbrbXj4BjCmEPXX76/Y2Cz8DNNP9+l91f3Sf8e92AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzKZwK1uX4kZ6mnAAAAAElFTkSuQmCC"; 24const PUBLIC_BACK = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA8VJREFUeNrt3LFLlHEYwPFXz0GiIZpEoikkwsFRIiK3gqCigxIC/4Kmhv6OoChouaGoqKCgCKducGh0cDAIamhwiCaHCIeelztpUszee/vl8/nAM3Vd8nufr+fddVYVAAAAAAAAAAAAAAAAAAAAAABQijFH0KhrMd2Y2ZitmNWYRzHLjkYAB9lUzMOYizv8eS/mZsymoypLxxE0svzvY07vcpu5mOmY145LAAdx+U/u4bZzwx+JPjq2cow7glaWf1vXsQkg6/JvPwoggJTLjwDSL/8nRyiAzN/5nzpGAWRd/n7MM0cpgIzLvx6z6CjL453gdpZ/IWbDcQrA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD8CMDyIwDLjwAsPwKw/AjA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD85A3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPLz3xlv6H4mYp5YfrI+AizF9BwnI/AlZi3mbsxy03feaeh+HsQcc60YgSMxMzE3YmZj3sX8LOlHoPoLnHedaEE35n5pzwF856dN9SPBpZICmHRNaNnlkgL46nrQsvmSAqhftlx1TWjR4ZICqPVcE1q0XloA96rBa7XQhl5pAWzFXKm8i8vo9WMeN3VnnQa/sO8xL2POxEy7Toxo+RdjNpu6w1F9HuBqNXi99lw1eKMM9utHzIeYV8MftbccCQAAAAAAsBdt/XLc+sPy9W+MmPqL+1iJuVA1+C4gdFr6d77FvK0GH2nb739lPR5zNuZ51eBnQhFAJQIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE8M8jmBlGgABSRnAqZiXms+MUQNYIDnkUKMu4I/gj6zELMRv7/PsnHKEAMkcw6fgEkDmCNUcngMwRvHFsngRnfWJcL/9tRyaAgxrB+ZijO9ymH7MUs+m4yjLmCBozEXMr5nr1+9We1ZgXMXccDwAAAAAAAAAAAAAAAAAAAAAAwO5+AfVgtqHKRnawAAAAAElFTkSuQmCC"; 25export class EditableTitleBar extends ViewPU { 26 constructor(e, t, A, i = -1) { 27 super(e, A, i); 28 this.leftIconStyle = void 0; 29 this.title = void 0; 30 this.menuItems = void 0; 31 this.onSave = void 0; 32 this.onCancel = void 0; 33 this.__titleMaxWidth = new ObservedPropertySimplePU(0, this, "titleMaxWidth"); 34 this.__backActive = new ObservedPropertySimplePU(!1, this, "backActive"); 35 this.setInitiallyProvidedValue(t) 36 } 37 setInitiallyProvidedValue(e) { 38 void 0 !== e.leftIconStyle && (this.leftIconStyle = e.leftIconStyle); 39 void 0 !== e.title && (this.title = e.title); 40 void 0 !== e.menuItems && (this.menuItems = e.menuItems); 41 void 0 !== e.onSave && (this.onSave = e.onSave); 42 void 0 !== e.onCancel && (this.onCancel = e.onCancel); 43 void 0 !== e.titleMaxWidth && (this.titleMaxWidth = e.titleMaxWidth); 44 void 0 !== e.backActive && (this.backActive = e.backActive) 45 } 46 updateStateVars(e) {} 47 purgeVariableDependenciesOnElmtId(e) { 48 this.__titleMaxWidth.purgeDependencyOnElmtId(e); 49 this.__backActive.purgeDependencyOnElmtId(e) 50 } 51 aboutToBeDeleted() { 52 this.__titleMaxWidth.aboutToBeDeleted(); 53 this.__backActive.aboutToBeDeleted(); 54 SubscriberManager.Get().delete(this.id__()); 55 this.aboutToBeDeletedInternal() 56 } 57 get titleMaxWidth() { 58 return this.__titleMaxWidth.get() 59 } 60 set titleMaxWidth(e) { 61 this.__titleMaxWidth.set(e) 62 } 63 get backActive() { 64 return this.__backActive.get() 65 } 66 set backActive(e) { 67 this.__backActive.set(e) 68 } 69 initialRender() { 70 this.observeComponentCreation(((e, t) => { 71 ViewStackProcessor.StartGetAccessRecordingFor(e); 72 Flex.create({ 73 justifyContent: FlexAlign.SpaceBetween, 74 alignItems: ItemAlign.Stretch 75 }); 76 Flex.width("100%"); 77 Flex.height(EditableTitleBar.totalHeight); 78 Flex.backgroundColor({ 79 id: -1, 80 type: 10001, 81 params: ["sys.color.ohos_id_color_background"], 82 bundleName: "", 83 moduleName: "" 84 }); 85 Flex.onAreaChange(((e, t) => { 86 let A = Number(t.width); 87 A = A - EditableTitleBar.leftPadding - EditableTitleBar.rightPadding - EditableTitleBar.titlePadding; 88 A = A - ImageMenuItem.imageHotZoneWidth - ImageMenuItem.imageHotZoneWidth; 89 void 0 !== this.menuItems ? this.menuItems.length > EditableTitleBar.maxCountOfExtraItems ? this.titleMaxWidth = A - ImageMenuItem.imageHotZoneWidth * EditableTitleBar.maxCountOfExtraItems : this.titleMaxWidth = A - ImageMenuItem.imageHotZoneWidth * this.menuItems.length : this.titleMaxWidth = A 90 })); 91 t || Flex.pop(); 92 ViewStackProcessor.StopGetAccessRecording() 93 })); 94 this.observeComponentCreation(((e, t) => { 95 ViewStackProcessor.StartGetAccessRecordingFor(e); 96 Row.create(); 97 Row.margin({ 98 left: { 99 id: -1, 100 type: 10002, 101 params: ["sys.float.ohos_id_default_padding_start"], 102 bundleName: "", 103 moduleName: "" 104 } 105 }); 106 t || Row.pop(); 107 ViewStackProcessor.StopGetAccessRecording() 108 })); 109 this.observeComponentCreation(((e, t) => { 110 ViewStackProcessor.StartGetAccessRecordingFor(e); 111 If.create(); 112 this.leftIconStyle == EditableLeftIconType.Back ? this.ifElseBranchUpdateFunction(0, (() => { 113 this.observeComponentCreation(((e, t) => { 114 ViewStackProcessor.StartGetAccessRecordingFor(e); 115 Navigator.create(); 116 Navigator.active(this.backActive); 117 t || Navigator.pop(); 118 ViewStackProcessor.StopGetAccessRecording() 119 })); 120 Navigator.pop(); 121 this.observeComponentCreation(((e, t) => { 122 ViewStackProcessor.StartGetAccessRecordingFor(e); 123 t ? ViewPU.create(new ImageMenuItem(this, { 124 item: { 125 value: PUBLIC_BACK, 126 isEnabled: !0, 127 action: () => this.backActive = !0 128 } 129 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 130 ViewStackProcessor.StopGetAccessRecording() 131 })) 132 })) : this.ifElseBranchUpdateFunction(1, (() => { 133 this.observeComponentCreation(((e, t) => { 134 ViewStackProcessor.StartGetAccessRecordingFor(e); 135 t ? ViewPU.create(new ImageMenuItem(this, { 136 item: { 137 value: PUBLIC_CANCEL, 138 isEnabled: !0, 139 action: () => this.onCancel && this.onCancel() 140 } 141 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 142 ViewStackProcessor.StopGetAccessRecording() 143 })) 144 })); 145 t || If.pop(); 146 ViewStackProcessor.StopGetAccessRecording() 147 })); 148 If.pop(); 149 this.observeComponentCreation(((e, t) => { 150 ViewStackProcessor.StartGetAccessRecordingFor(e); 151 Column.create(); 152 Column.justifyContent(FlexAlign.Start); 153 Column.alignItems(HorizontalAlign.Start); 154 Column.constraintSize({ 155 maxWidth: this.titleMaxWidth 156 }); 157 t || Column.pop(); 158 ViewStackProcessor.StopGetAccessRecording() 159 })); 160 this.observeComponentCreation(((e, t) => { 161 ViewStackProcessor.StartGetAccessRecordingFor(e); 162 Text.create(this.title); 163 Text.fontWeight(FontWeight.Medium); 164 Text.fontSize({ 165 id: -1, 166 type: 10002, 167 params: ["sys.float.ohos_id_text_size_headline8"], 168 bundleName: "", 169 moduleName: "" 170 }); 171 Text.fontColor({ 172 id: -1, 173 type: 10001, 174 params: ["sys.color.ohos_id_color_titlebar_text"], 175 bundleName: "", 176 moduleName: "" 177 }); 178 Text.maxLines(1); 179 Text.textOverflow({ 180 overflow: TextOverflow.Ellipsis 181 }); 182 Text.constraintSize({ 183 maxWidth: this.titleMaxWidth 184 }); 185 t || Text.pop(); 186 ViewStackProcessor.StopGetAccessRecording() 187 })); 188 Text.pop(); 189 Column.pop(); 190 Row.pop(); 191 this.observeComponentCreation(((e, t) => { 192 ViewStackProcessor.StartGetAccessRecordingFor(e); 193 t ? ViewPU.create(new EditableTitleBarMenuSection(this, { 194 menuItems: this.menuItems, 195 onSave: this.onSave 196 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 197 ViewStackProcessor.StopGetAccessRecording() 198 })); 199 Flex.pop() 200 } 201 rerender() { 202 this.updateDirtyElements() 203 } 204} 205EditableTitleBar.maxCountOfExtraItems = 2; 206EditableTitleBar.totalHeight = 56; 207EditableTitleBar.leftPadding = 12; 208EditableTitleBar.rightPadding = 12; 209EditableTitleBar.titlePadding = 16; 210class EditableTitleBarMenuSection extends ViewPU { 211 constructor(e, t, A, i = -1) { 212 super(e, A, i); 213 this.menuItems = void 0; 214 this.onSave = void 0; 215 this.setInitiallyProvidedValue(t) 216 } 217 setInitiallyProvidedValue(e) { 218 void 0 !== e.menuItems && (this.menuItems = e.menuItems); 219 void 0 !== e.onSave && (this.onSave = e.onSave) 220 } 221 updateStateVars(e) {} 222 purgeVariableDependenciesOnElmtId(e) {} 223 aboutToBeDeleted() { 224 SubscriberManager.Get().delete(this.id__()); 225 this.aboutToBeDeletedInternal() 226 } 227 initialRender() { 228 this.observeComponentCreation(((e, t) => { 229 ViewStackProcessor.StartGetAccessRecordingFor(e); 230 Column.create(); 231 Column.margin({ 232 left: { 233 id: -1, 234 type: 10002, 235 params: ["sys.float.ohos_id_elements_margin_vertical_l"], 236 bundleName: "", 237 moduleName: "" 238 }, 239 right: { 240 id: -1, 241 type: 10002, 242 params: ["sys.float.ohos_id_default_padding_end"], 243 bundleName: "", 244 moduleName: "" 245 } 246 }); 247 Column.justifyContent(FlexAlign.Center); 248 t || Column.pop(); 249 ViewStackProcessor.StopGetAccessRecording() 250 })); 251 this.observeComponentCreation(((e, t) => { 252 ViewStackProcessor.StartGetAccessRecordingFor(e); 253 Row.create(); 254 t || Row.pop(); 255 ViewStackProcessor.StopGetAccessRecording() 256 })); 257 this.observeComponentCreation(((e, t) => { 258 ViewStackProcessor.StartGetAccessRecordingFor(e); 259 If.create(); 260 void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { 261 this.observeComponentCreation(((e, t) => { 262 ViewStackProcessor.StartGetAccessRecordingFor(e); 263 ForEach.create(); 264 this.forEachUpdateFunction(e, this.menuItems.slice(0, EditableTitleBar.maxCountOfExtraItems), (e => { 265 const t = e; 266 this.observeComponentCreation(((e, A) => { 267 ViewStackProcessor.StartGetAccessRecordingFor(e); 268 A ? ViewPU.create(new ImageMenuItem(this, { 269 item: t 270 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 271 ViewStackProcessor.StopGetAccessRecording() 272 })) 273 })); 274 t || ForEach.pop(); 275 ViewStackProcessor.StopGetAccessRecording() 276 })); 277 ForEach.pop() 278 })) : If.branchId(1); 279 t || If.pop(); 280 ViewStackProcessor.StopGetAccessRecording() 281 })); 282 If.pop(); 283 this.observeComponentCreation(((e, t) => { 284 ViewStackProcessor.StartGetAccessRecordingFor(e); 285 t ? ViewPU.create(new ImageMenuItem(this, { 286 item: { 287 value: PUBLIC_OK, 288 isEnabled: !0, 289 action: () => this.onSave && this.onSave() 290 } 291 }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); 292 ViewStackProcessor.StopGetAccessRecording() 293 })); 294 Row.pop(); 295 Column.pop() 296 } 297 rerender() { 298 this.updateDirtyElements() 299 } 300} 301class ImageMenuItem extends ViewPU { 302 constructor(e, t, A, i = -1) { 303 super(e, A, i); 304 this.item = void 0; 305 this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); 306 this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); 307 this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); 308 this.setInitiallyProvidedValue(t) 309 } 310 setInitiallyProvidedValue(e) { 311 void 0 !== e.item && (this.item = e.item); 312 void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); 313 void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); 314 void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) 315 } 316 updateStateVars(e) {} 317 purgeVariableDependenciesOnElmtId(e) { 318 this.__isOnFocus.purgeDependencyOnElmtId(e); 319 this.__isOnHover.purgeDependencyOnElmtId(e); 320 this.__isOnClick.purgeDependencyOnElmtId(e) 321 } 322 aboutToBeDeleted() { 323 this.__isOnFocus.aboutToBeDeleted(); 324 this.__isOnHover.aboutToBeDeleted(); 325 this.__isOnClick.aboutToBeDeleted(); 326 SubscriberManager.Get().delete(this.id__()); 327 this.aboutToBeDeletedInternal() 328 } 329 get isOnFocus() { 330 return this.__isOnFocus.get() 331 } 332 set isOnFocus(e) { 333 this.__isOnFocus.set(e) 334 } 335 get isOnHover() { 336 return this.__isOnHover.get() 337 } 338 set isOnHover(e) { 339 this.__isOnHover.set(e) 340 } 341 get isOnClick() { 342 return this.__isOnClick.get() 343 } 344 set isOnClick(e) { 345 this.__isOnClick.set(e) 346 } 347 getFgColor() { 348 return this.isOnClick ? { 349 id: -1, 350 type: 10001, 351 params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], 352 bundleName: "", 353 moduleName: "" 354 } : { 355 id: -1, 356 type: 10001, 357 params: ["sys.color.ohos_id_color_titlebar_icon"], 358 bundleName: "", 359 moduleName: "" 360 } 361 } 362 getBgColor() { 363 return this.isOnClick ? { 364 id: -1, 365 type: 10001, 366 params: ["sys.color.ohos_id_color_click_effect"], 367 bundleName: "", 368 moduleName: "" 369 } : this.isOnHover ? { 370 id: -1, 371 type: 10001, 372 params: ["sys.color.ohos_id_color_hover"], 373 bundleName: "", 374 moduleName: "" 375 } : Color.Transparent 376 } 377 initialRender() { 378 this.observeComponentCreation(((e, t) => { 379 ViewStackProcessor.StartGetAccessRecordingFor(e); 380 Row.create(); 381 Row.width(ImageMenuItem.imageHotZoneWidth); 382 Row.height(ImageMenuItem.imageHotZoneWidth); 383 Row.borderRadius(ImageMenuItem.buttonBorderRadius); 384 Row.foregroundColor(this.getFgColor()); 385 Row.backgroundColor(this.getBgColor()); 386 Row.justifyContent(FlexAlign.Center); 387 Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); 388 ViewStackProcessor.visualState("focused"); 389 Row.border({ 390 radius: { 391 id: -1, 392 type: 10002, 393 params: ["sys.float.ohos_id_corner_radius_clicked"], 394 bundleName: "", 395 moduleName: "" 396 }, 397 width: ImageMenuItem.focusBorderWidth, 398 color: { 399 id: -1, 400 type: 10001, 401 params: ["sys.color.ohos_id_color_focused_outline"], 402 bundleName: "", 403 moduleName: "" 404 }, 405 style: BorderStyle.Solid 406 }); 407 ViewStackProcessor.visualState("normal"); 408 Row.border({ 409 radius: { 410 id: -1, 411 type: 10002, 412 params: ["sys.float.ohos_id_corner_radius_clicked"], 413 bundleName: "", 414 moduleName: "" 415 }, 416 width: 0 417 }); 418 ViewStackProcessor.visualState(); 419 Row.onFocus((() => { 420 this.item.isEnabled && (this.isOnFocus = !0) 421 })); 422 Row.onBlur((() => this.isOnFocus = !1)); 423 Row.onHover((e => { 424 this.item.isEnabled && (this.isOnHover = e) 425 })); 426 Row.onKeyEvent((e => { 427 if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { 428 e.type === KeyType.Down && (this.isOnClick = !0); 429 e.type === KeyType.Up && (this.isOnClick = !1) 430 } 431 })); 432 Row.onTouch((e => { 433 if (this.item.isEnabled) { 434 e.type === TouchType.Down && (this.isOnClick = !0); 435 e.type === TouchType.Up && (this.isOnClick = !1) 436 } 437 })); 438 Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); 439 t || Row.pop(); 440 ViewStackProcessor.StopGetAccessRecording() 441 })); 442 this.observeComponentCreation(((e, t) => { 443 ViewStackProcessor.StartGetAccessRecordingFor(e); 444 Image.create(this.item.value); 445 Image.width(ImageMenuItem.imageSize); 446 Image.height(ImageMenuItem.imageSize); 447 Image.focusable(this.item.isEnabled); 448 t || Image.pop(); 449 ViewStackProcessor.StopGetAccessRecording() 450 })); 451 Row.pop() 452 } 453 rerender() { 454 this.updateDirtyElements() 455 } 456} 457ImageMenuItem.imageSize = 24; 458ImageMenuItem.imageHotZoneWidth = 48; 459ImageMenuItem.buttonBorderRadius = 8; 460ImageMenuItem.focusBorderWidth = 2; 461ImageMenuItem.disabledImageOpacity = .4; 462export default { 463 EditableLeftIconType: EditableLeftIconType, 464 EditableTitleBar: EditableTitleBar 465};