From 31fe1fd5c9ed35794846fd24ab13993988f4ab50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9E=E6=BC=AA?= <15575970019@163.com> Date: Mon, 14 Oct 2024 14:52:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A7=E4=BB=A3=E7=A0=81&&?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eatomicservicetabs=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 连漪 <15575970019@163.com> --- BUILD.gn | 16 + README.md | 17 +- README_zh.md | 19 +- atomicservicetabs/interfaces/BUILD.gn | 59 + .../interfaces/atomicservicetabs.cpp | 25 +- .../interfaces/atomicservicetabs.js | 205 + .../source/atomicservicetabs.ets | 92 + bundle.json | 20 +- doc/Readme-CN.md | 15 - doc/figures/20230728-101201.png | Bin 151067 -> 0 bytes doc/figures/20230728-101236.png | Bin 168917 -> 0 bytes doc/figures/20230728-101306.png | Bin 63668 -> 0 bytes doc/figures/20230728-101355.png | Bin 63306 -> 0 bytes doc/figures/20230728-111325.png | Bin 386745 -> 0 bytes doc/figures/Snipaste_2023-07-24_11-35-40.png | Bin 8727 -> 0 bytes doc/figures/zh-cn_image_0000001616913438.png | Bin 6746 -> 0 bytes doc/figures/zh-cn_image_0000001616916278.png | Bin 10633 -> 0 bytes doc/figures/zh-cn_image_0000001616957408.png | Bin 36003 -> 0 bytes doc/figures/zh-cn_image_0000001616959836.png | Bin 11967 -> 0 bytes doc/figures/zh-cn_image_0000001617073302.png | Bin 4458 -> 0 bytes doc/figures/zh-cn_image_0000001617116972.png | Bin 37679 -> 0 bytes doc/figures/zh-cn_image_0000001617233250.png | Bin 42024 -> 0 bytes doc/figures/zh-cn_image_0000001617393174.png | Bin 16834 -> 0 bytes doc/figures/zh-cn_image_0000001617439304.png | Bin 43405 -> 0 bytes doc/figures/zh-cn_image_0000001658655445.png | Bin 32131 -> 0 bytes doc/figures/zh-cn_image_0000001664546481.png | Bin 10339 -> 0 bytes doc/figures/zh-cn_image_0000001664713029.png | Bin 15962 -> 0 bytes doc/figures/zh-cn_image_0000001664822257.png | Bin 28178 -> 0 bytes doc/figures/zh-cn_image_0000001665393297.png | Bin 4570 -> 0 bytes doc/figures/zh-cn_image_0000001665513149.png | Bin 14110 -> 0 bytes doc/figures/zh-cn_image_0000001665553957.png | Bin 66898 -> 0 bytes doc/figures/zh-cn_image_0000001665793709.png | Bin 3746 -> 0 bytes doc/figures/zh-cn_image_0000001665809293.png | Bin 44525 -> 0 bytes doc/figures/zh-cn_image_2023072902.png | Bin 6446 -> 0 bytes doc/figures/zh-cn_image_2023072903.PNG | Bin 7653 -> 0 bytes doc/figures/zh-cn_image_2023072904.PNG | Bin 8117 -> 0 bytes doc/figures/zh-cn_image_2023072905.PNG | Bin 6483 -> 0 bytes doc/figures/zh-cn_image_2023072906.PNG | Bin 11526 -> 0 bytes doc/figures/zh-cn_image_202307291.png | Bin 4263 -> 0 bytes doc/public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes doc/public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes doc/public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes doc/public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes doc/public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes doc/public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes doc/ts-composite-components-arkdialog.md | 414 -- ...ts-composite-components-composelistitem.md | 240 -- ...ts-composite-components-composetitlebar.md | 177 - ...s-composite-components-editabletitlebar.md | 130 - doc/ts-composite-components-filter.md | 119 - doc/ts-composite-components-progressbutton.md | 152 - doc/ts-composite-components-selecttitlebar.md | 186 - doc/ts-composite-components-splitlayout.md | 88 - doc/ts-composite-components-subheader.md | 168 - doc/ts-composite-components-swiperefresher.md | 63 - doc/ts-composite-components-tabtitlebar.md | 126 - doc/ts-composite-components-toolbar.md | 135 - doc/ts-composite-components-treeview.md | 379 -- interface/arkdialog/BUILD.gn | 46 - interface/arkdialog/arkdialog.cpp | 53 - interface/arkdialog/arkdialog.js | 1604 -------- interface/composelistitem/BUILD.gn | 46 - interface/composelistitem/composelistitem.cpp | 49 - interface/composelistitem/composelistitem.js | 799 ---- interface/composetitlebar/BUILD.gn | 46 - interface/composetitlebar/composetitlebar.cpp | 49 - interface/composetitlebar/composetitlebar.js | 714 ---- interface/editabletitlebar/BUILD.gn | 46 - .../editabletitlebar/editabletitlebar.cpp | 49 - .../editabletitlebar/editabletitlebar.js | 435 -- interface/filter/BUILD.gn | 46 - interface/filter/filter.cpp | 53 - interface/filter/filter.js | 2169 ---------- interface/progressbutton/BUILD.gn | 46 - interface/progressbutton/progressbutton.cpp | 53 - interface/progressbutton/progressbutton.js | 236 -- interface/selecttitlebar/BUILD.gn | 46 - interface/selecttitlebar/selecttitlebar.cpp | 49 - interface/selecttitlebar/selecttitlebar.js | 785 ---- interface/splitlayout/BUILD.gn | 46 - interface/splitlayout/splitlayout.cpp | 48 - interface/splitlayout/splitlayout.js | 524 --- interface/subheader/BUILD.gn | 46 - interface/subheader/subheader.js | 1141 ----- interface/swiperefresher/BUILD.gn | 46 - interface/swiperefresher/swiperefresher.cpp | 49 - interface/swiperefresher/swiperefresher.js | 119 - interface/tabtitlebar/BUILD.gn | 46 - interface/tabtitlebar/tabtitlebar.cpp | 49 - interface/tabtitlebar/tabtitlebar.js | 930 ----- interface/toolbar/BUILD.gn | 46 - interface/toolbar/toolbar.cpp | 53 - interface/toolbar/toolbar.js | 477 --- interface/treeview/BUILD.gn | 48 - interface/treeview/treeview.cpp | 55 - interface/treeview/treeview.js | 3666 ----------------- source/ArkDialog/ArkDialog.ets | 417 -- source/ComposeListItem/ComposeListItem.ets | 488 --- source/ComposeTitleBar/ComposeTitleBar.ets | 369 -- source/EditableTitleBar/EditableTitleBar.ets | 282 -- source/Filter/Filter.ets | 1025 ----- source/ProgressButton/ProgressButton.ets | 95 - source/SelectTitleBar/SelectTitleBar.ets | 383 -- source/SplitLayout/SplitLayout.ets | 167 - source/SubHeader/SubHeader.ets | 399 -- source/Swiperefresher/SwipeRefresher.ets | 47 - source/TabTitleBar/TabTitleBar.ets | 478 --- source/ToolBar/ToolBar.ets | 178 - source/TreeView/TreeView.ets | 3327 --------------- 109 files changed, 401 insertions(+), 24907 deletions(-) create mode 100644 BUILD.gn create mode 100644 atomicservicetabs/interfaces/BUILD.gn rename interface/subheader/subheader.cpp => atomicservicetabs/interfaces/atomicservicetabs.cpp (58%) create mode 100644 atomicservicetabs/interfaces/atomicservicetabs.js create mode 100644 atomicservicetabs/source/atomicservicetabs.ets delete mode 100644 doc/Readme-CN.md delete mode 100644 doc/figures/20230728-101201.png delete mode 100644 doc/figures/20230728-101236.png delete mode 100644 doc/figures/20230728-101306.png delete mode 100644 doc/figures/20230728-101355.png delete mode 100644 doc/figures/20230728-111325.png delete mode 100644 doc/figures/Snipaste_2023-07-24_11-35-40.png delete mode 100644 doc/figures/zh-cn_image_0000001616913438.png delete mode 100644 doc/figures/zh-cn_image_0000001616916278.png delete mode 100644 doc/figures/zh-cn_image_0000001616957408.png delete mode 100644 doc/figures/zh-cn_image_0000001616959836.png delete mode 100644 doc/figures/zh-cn_image_0000001617073302.png delete mode 100644 doc/figures/zh-cn_image_0000001617116972.png delete mode 100644 doc/figures/zh-cn_image_0000001617233250.png delete mode 100644 doc/figures/zh-cn_image_0000001617393174.png delete mode 100644 doc/figures/zh-cn_image_0000001617439304.png delete mode 100644 doc/figures/zh-cn_image_0000001658655445.png delete mode 100644 doc/figures/zh-cn_image_0000001664546481.png delete mode 100644 doc/figures/zh-cn_image_0000001664713029.png delete mode 100644 doc/figures/zh-cn_image_0000001664822257.png delete mode 100644 doc/figures/zh-cn_image_0000001665393297.png delete mode 100644 doc/figures/zh-cn_image_0000001665513149.png delete mode 100644 doc/figures/zh-cn_image_0000001665553957.png delete mode 100644 doc/figures/zh-cn_image_0000001665793709.png delete mode 100644 doc/figures/zh-cn_image_0000001665809293.png delete mode 100644 doc/figures/zh-cn_image_2023072902.png delete mode 100644 doc/figures/zh-cn_image_2023072903.PNG delete mode 100644 doc/figures/zh-cn_image_2023072904.PNG delete mode 100644 doc/figures/zh-cn_image_2023072905.PNG delete mode 100644 doc/figures/zh-cn_image_2023072906.PNG delete mode 100644 doc/figures/zh-cn_image_202307291.png delete mode 100644 doc/public_sys-resources/icon-caution.gif delete mode 100644 doc/public_sys-resources/icon-danger.gif delete mode 100644 doc/public_sys-resources/icon-note.gif delete mode 100644 doc/public_sys-resources/icon-notice.gif delete mode 100644 doc/public_sys-resources/icon-tip.gif delete mode 100644 doc/public_sys-resources/icon-warning.gif delete mode 100644 doc/ts-composite-components-arkdialog.md delete mode 100644 doc/ts-composite-components-composelistitem.md delete mode 100644 doc/ts-composite-components-composetitlebar.md delete mode 100644 doc/ts-composite-components-editabletitlebar.md delete mode 100644 doc/ts-composite-components-filter.md delete mode 100644 doc/ts-composite-components-progressbutton.md delete mode 100644 doc/ts-composite-components-selecttitlebar.md delete mode 100644 doc/ts-composite-components-splitlayout.md delete mode 100644 doc/ts-composite-components-subheader.md delete mode 100644 doc/ts-composite-components-swiperefresher.md delete mode 100644 doc/ts-composite-components-tabtitlebar.md delete mode 100644 doc/ts-composite-components-toolbar.md delete mode 100644 doc/ts-composite-components-treeview.md delete mode 100644 interface/arkdialog/BUILD.gn delete mode 100644 interface/arkdialog/arkdialog.cpp delete mode 100644 interface/arkdialog/arkdialog.js delete mode 100644 interface/composelistitem/BUILD.gn delete mode 100644 interface/composelistitem/composelistitem.cpp delete mode 100644 interface/composelistitem/composelistitem.js delete mode 100755 interface/composetitlebar/BUILD.gn delete mode 100644 interface/composetitlebar/composetitlebar.cpp delete mode 100644 interface/composetitlebar/composetitlebar.js delete mode 100755 interface/editabletitlebar/BUILD.gn delete mode 100644 interface/editabletitlebar/editabletitlebar.cpp delete mode 100644 interface/editabletitlebar/editabletitlebar.js delete mode 100644 interface/filter/BUILD.gn delete mode 100644 interface/filter/filter.cpp delete mode 100644 interface/filter/filter.js delete mode 100644 interface/progressbutton/BUILD.gn delete mode 100644 interface/progressbutton/progressbutton.cpp delete mode 100644 interface/progressbutton/progressbutton.js delete mode 100755 interface/selecttitlebar/BUILD.gn delete mode 100644 interface/selecttitlebar/selecttitlebar.cpp delete mode 100644 interface/selecttitlebar/selecttitlebar.js delete mode 100644 interface/splitlayout/BUILD.gn delete mode 100644 interface/splitlayout/splitlayout.cpp delete mode 100644 interface/splitlayout/splitlayout.js delete mode 100644 interface/subheader/BUILD.gn delete mode 100644 interface/subheader/subheader.js delete mode 100644 interface/swiperefresher/BUILD.gn delete mode 100644 interface/swiperefresher/swiperefresher.cpp delete mode 100644 interface/swiperefresher/swiperefresher.js delete mode 100755 interface/tabtitlebar/BUILD.gn delete mode 100644 interface/tabtitlebar/tabtitlebar.cpp delete mode 100644 interface/tabtitlebar/tabtitlebar.js delete mode 100644 interface/toolbar/BUILD.gn delete mode 100644 interface/toolbar/toolbar.cpp delete mode 100644 interface/toolbar/toolbar.js delete mode 100644 interface/treeview/BUILD.gn delete mode 100644 interface/treeview/treeview.cpp delete mode 100644 interface/treeview/treeview.js delete mode 100644 source/ArkDialog/ArkDialog.ets delete mode 100644 source/ComposeListItem/ComposeListItem.ets delete mode 100755 source/ComposeTitleBar/ComposeTitleBar.ets delete mode 100755 source/EditableTitleBar/EditableTitleBar.ets delete mode 100644 source/Filter/Filter.ets delete mode 100644 source/ProgressButton/ProgressButton.ets delete mode 100755 source/SelectTitleBar/SelectTitleBar.ets delete mode 100644 source/SplitLayout/SplitLayout.ets delete mode 100644 source/SubHeader/SubHeader.ets delete mode 100644 source/Swiperefresher/SwipeRefresher.ets delete mode 100755 source/TabTitleBar/TabTitleBar.ets delete mode 100644 source/ToolBar/ToolBar.ets delete mode 100644 source/TreeView/TreeView.ets diff --git a/BUILD.gn b/BUILD.gn new file mode 100644 index 0000000..f01339f --- /dev/null +++ b/BUILD.gn @@ -0,0 +1,16 @@ +# Copyright (c) 2024 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. + +group("as_advanced_ui_component") { + deps = [ "atomicservicetabs/interfaces:atomicservicetabs" ] +} diff --git a/README.md b/README.md index 6ea1082..46fbe93 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ advanced_ui is an ArkTS-based UI framework that offers efficient UI combinations **Figure 1** Relationship between advanced_ui and ArkUI ![](figures/advanced_ui_en.png "Relationship between advanced_ui and ArkUI") + **Figure 2** advanced_ui architecture ![](figures/advanced_ui_sub_en.png "advanced_ui architecture") @@ -16,20 +17,12 @@ The following figure shows the directory structure. ``` /arkui_advanced_ui_component -├── interface # APIs -│ ├── arkdialog # Components -│ └── composelistitem -│ └── ..... +├── atomicservicetabs # Components +│ └── interface # APIs +│ └── source # framework sorce work +├── ..... -├── source # Framework source code -│ ├── arkdialog # Components -│ └── composelistitem -│ └── ..... ``` ## When to Use With advanced_ui, you can develop your application UI must faster, leveraging its diverse array of UI component combinations with consistent design and style definitions. You can use and reuse any component anywhere as needed. - -## How to Use -> See the [doc folder](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/tree/master/doc). - diff --git a/README_zh.md b/README_zh.md index d311683..48e0ba0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -4,9 +4,12 @@ advanced_ui 是基于使用场景设计,为应用提供高效的UI组合,接口封闭、风格一致,开箱即用的组件接口;使用ArkTS语言开发,依赖系统的public API ## 软件架构 -**图 1** advanced_ui和ArkUI架构关系 +**图 1** advanced_ui和ArkUI架构关系 + ![](figures/advanced_ui.png "advanced_ui和ArkUI架构关系") -**图 2** advanced_ui架构设计 + +**图 2** advanced_ui架构设计 + ![](figures/advanced_ui_sub.png "advanced_ui架构设计") ## 目录 @@ -14,15 +17,11 @@ advanced_ui 是基于使用场景设计,为应用提供高效的UI组合,接 ``` /arkui_advanced_ui_component -├── interface # 接口目录 -│ ├── arkdialog # 各个组件目录 -│ └── composelistitem -│ └── ..... +├── atomicservicetabs # Components +│ └── interface # APIs +│ └── source # framework sorce work +├── ..... -├── source # 框架源码 -│ ├── arkdialog # 各个组件目录 -│ └── composelistitem -│ └── ..... ``` ## 使用场景 diff --git a/atomicservicetabs/interfaces/BUILD.gn b/atomicservicetabs/interfaces/BUILD.gn new file mode 100644 index 0000000..dead4b3 --- /dev/null +++ b/atomicservicetabs/interfaces/BUILD.gn @@ -0,0 +1,59 @@ +# Copyright (c) 2024 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. + +import("//build/config/components/ets_frontend/es2abc_config.gni") +import("//build/ohos.gni") +import("//foundation/arkui/ace_engine/ace_config.gni") +import("//foundation/arkui/ace_engine/adapter/preview/build/config.gni") +import("//foundation/arkui/ace_engine/build/ace_gen_obj.gni") + +es2abc_gen_abc("gen_atomicservicetabs_abc") { + src_js = rebase_path("atomicservicetabs.js") + dst_file = rebase_path(target_out_dir + "/atomicservicetabs.abc") + in_puts = [ "atomicservicetabs.js" ] + out_puts = [ target_out_dir + "/atomicservicetabs.abc" ] + extra_args = [ "--module" ] +} + +gen_js_obj("atomicservicetabs_abc") { + input = get_label_info(":gen_atomicservicetabs_abc", "target_out_dir") + + "/atomicservicetabs.abc" + output = target_out_dir + "/atomicservicetabs_abc.o" + dep = ":gen_atomicservicetabs_abc" +} + +gen_obj("atomicservicetabs_abc_preview") { + input = get_label_info(":gen_atomicservicetabs_abc", "target_out_dir") + + "/atomicservicetabs.abc" + output = target_out_dir + "/atomicservicetabs_abc.c" + snapshot_dep = [ ":gen_atomicservicetabs_abc" ] +} + +ohos_shared_library("atomicservicetabs") { + sources = [ "atomicservicetabs.cpp" ] + + if (use_mingw_win || use_mac || use_linux) { + deps = [ ":gen_obj_src_atomicservicetabs_abc_preview" ] + } else { + deps = [ ":atomicservicetabs_abc" ] + } + + external_deps = [ + "hilog:libhilog", + "napi:ace_napi", + ] + + relative_install_dir = "module/atomicservice" + subsystem_name = "arkui" + part_name = "as_advanced_ui_component" +} diff --git a/interface/subheader/subheader.cpp b/atomicservicetabs/interfaces/atomicservicetabs.cpp similarity index 58% rename from interface/subheader/subheader.cpp rename to atomicservicetabs/interfaces/atomicservicetabs.cpp index 89d8b92..456bea6 100644 --- a/interface/subheader/subheader.cpp +++ b/atomicservicetabs/interfaces/atomicservicetabs.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Copyright (c) 2024 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 @@ -13,42 +13,39 @@ * limitations under the License. */ -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" #include "napi/native_node_api.h" -extern const char _binary_subheader_abc_start[]; -extern const char _binary_subheader_abc_end[]; +extern const char _binary_atomicservicetabs_abc_start[]; +extern const char _binary_atomicservicetabs_abc_end[]; // Napi get abc code function extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_SubHeader_GetABCCode(const char **buf, int *buflen) +void NAPI_atomicservice_AtomicServiceTabs_GetABCCode(const char **buf, int *buflen) { if (buf != nullptr) { - *buf = _binary_subheader_abc_start; + *buf = _binary_atomicservicetabs_abc_start; } if (buflen != nullptr) { - *buflen = _binary_subheader_abc_end - _binary_subheader_abc_start; + *buflen = _binary_atomicservicetabs_abc_end - _binary_atomicservicetabs_abc_start; } } /* * Module define */ -static napi_module subheaderModule = { +static napi_module AtomicServiceTabsModule = { .nm_version = 1, .nm_flags = 0, .nm_filename = nullptr, - .nm_modname = "arkui.advanced.SubHeader", + .nm_modname = "atomicservice.AtomicServiceTabs", .nm_priv = ((void*)0), .reserved = { 0 }, }; /* - * Module register function + * Module registerfunction */ -extern "C" __attribute__((constructor)) void subheaderRegisterModule(void) +extern "C" __attribute__((constructor)) void AtomicServiceTabsRegisterModule(void) { - napi_module_register(&subheaderModule); + napi_module_register(&AtomicServiceTabsModule); } \ No newline at end of file diff --git a/atomicservicetabs/interfaces/atomicservicetabs.js b/atomicservicetabs/interfaces/atomicservicetabs.js new file mode 100644 index 0000000..172d3fb --- /dev/null +++ b/atomicservicetabs/interfaces/atomicservicetabs.js @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2024 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. + */ + +if (!("finalizeConstruction" in ViewPU.prototype)) { + Reflect.set(ViewPU.prototype, "finalizeConstruction", () => { }); +} +const DEFAULT_BAR_WIDTH = 96; +const DEFAULT_BAR_HEIGHT = 52; +export class AtomicServiceTabs extends ViewPU { + constructor(m1, n1, o1, p1 = -1, q1 = undefined, r1) { + super(m1, o1, p1, r1); + if (typeof q1 === "function") { + this.paramsGenerator_ = q1; + } + this.tabContents = undefined; + this.__tabBarOptionsArray = new SynchedPropertyObjectOneWayPU(n1.tabBarOptionsArray, this, "tabBarOptionsArray"); + this.__tabBarPosition = new SynchedPropertySimpleOneWayPU(n1.tabBarPosition, this, "tabBarPosition"); + this.__barBackgroundColor = new SynchedPropertyObjectOneWayPU(n1.barBackgroundColor, this, "barBackgroundColor"); + this.__index = new SynchedPropertyObjectOneWayPU(n1.index, this, "index"); + this.__barOverlap = new SynchedPropertySimpleOneWayPU(n1.barOverlap, this, "barOverlap"); + this.controller = new TabsController(); + this.onChange = undefined; + this.onTabBarClick = undefined; + this.onContentWillChange = undefined; + this.setInitiallyProvidedValue(n1); + this.finalizeConstruction(); + } + setInitiallyProvidedValue(l1) { + if (l1.tabContents !== undefined) { + this.tabContents = l1.tabContents; + } + if (l1.tabBarPosition === undefined) { + this.__tabBarPosition.set(TabBarPosition.BOTTOM); + } + if (l1.barBackgroundColor === undefined) { + this.__barBackgroundColor.set(Color.Transparent); + } + if (l1.index === undefined) { + this.__index.set(0); + } + if (l1.barOverlap === undefined) { + this.__barOverlap.set(true); + } + if (l1.controller !== undefined) { + this.controller = l1.controller; + } + if (l1.onChange !== undefined) { + this.onChange = l1.onChange; + } + if (l1.onTabBarClick !== undefined) { + this.onTabBarClick = l1.onTabBarClick; + } + if (l1.onContentWillChange !== undefined) { + this.onContentWillChange = l1.onContentWillChange; + } + } + updateStateVars(k1) { + this.__tabBarOptionsArray.reset(k1.tabBarOptionsArray); + this.__tabBarPosition.reset(k1.tabBarPosition); + this.__barBackgroundColor.reset(k1.barBackgroundColor); + this.__index.reset(k1.index); + this.__barOverlap.reset(k1.barOverlap); + } + purgeVariableDependenciesOnElmtId(j1) { + this.__tabBarOptionsArray.purgeDependencyOnElmtId(j1); + this.__tabBarPosition.purgeDependencyOnElmtId(j1); + this.__barBackgroundColor.purgeDependencyOnElmtId(j1); + this.__index.purgeDependencyOnElmtId(j1); + this.__barOverlap.purgeDependencyOnElmtId(j1); + } + aboutToBeDeleted() { + this.__tabBarOptionsArray.aboutToBeDeleted(); + this.__tabBarPosition.aboutToBeDeleted(); + this.__barBackgroundColor.aboutToBeDeleted(); + this.__index.aboutToBeDeleted(); + this.__barOverlap.aboutToBeDeleted(); + SubscriberManager.Get().delete(this.id__()); + this.aboutToBeDeletedInternal(); + } + get tabBarOptionsArray() { + return this.__tabBarOptionsArray.get(); + } + set tabBarOptionsArray(i1) { + this.__tabBarOptionsArray.set(i1); + } + get tabBarPosition() { + return this.__tabBarPosition.get(); + } + set tabBarPosition(h1) { + this.__tabBarPosition.set(h1); + } + get barBackgroundColor() { + return this.__barBackgroundColor.get(); + } + set barBackgroundColor(g1) { + this.__barBackgroundColor.set(g1); + } + get index() { + return this.__index.get(); + } + set index(f1) { + this.__index.set(f1); + } + get barOverlap() { + return this.__barOverlap.get(); + } + set barOverlap(e1) { + this.__barOverlap.set(e1); + } + initialRender() { + this.observeComponentCreation2((c1, d1) => { + Tabs.create({ + barPosition: this.tabBarPosition === TabBarPosition.LEFT ? BarPosition.Start : BarPosition.End, + index: this.index, + controller: this.controller + }); + Tabs.barBackgroundColor(ObservedObject.GetRawObject(this.barBackgroundColor)); + Tabs.divider(null); + Tabs.vertical(this.tabBarPosition === TabBarPosition.LEFT ? true : false); + Tabs.scrollable(false); + Tabs.barOverlap(this.barOverlap); + Tabs.barBackgroundBlurStyle(BlurStyle.COMPONENT_THICK); + Tabs.onChange(this.onChange); + Tabs.onTabBarClick(this.onTabBarClick); + Tabs.onContentWillChange(this.onContentWillChange); + Tabs.width((!this.tabContents && this.tabBarPosition === TabBarPosition.LEFT) ? DEFAULT_BAR_WIDTH : '100%'); + Tabs.height((!this.tabContents && this.tabBarPosition === TabBarPosition.BOTTOM) ? DEFAULT_BAR_HEIGHT : '100%'); + }, Tabs); + this.observeComponentCreation2((h, i) => { + ForEach.create(); + const j = (l, m) => { + const n = l; + this.observeComponentCreation2((p, q) => { + If.create(); + if (n) { + this.ifElseBranchUpdateFunction(0, () => { + this.observeComponentCreation2((u, v) => { + TabContent.create(() => { + this.observeComponentCreation2((y, z) => { + If.create(); + if (this.tabContents && this.tabContents[m]) { + this.ifElseBranchUpdateFunction(0, () => { + this.tabContents[m]?.bind(this)?.(this); + }); + } + else { + this.ifElseBranchUpdateFunction(1, () => { + }); + } + }, If); + If.pop(); + }); + TabContent.tabBar(BottomTabBarStyle.of(n.icon, n.text) + .labelStyle({ unselectedColor: n.unselectedColor, selectedColor: n.selectedColor }) + .iconStyle({ unselectedColor: n.unselectedColor, selectedColor: n.selectedColor })); + TabContent.width((!this.tabContents && this.tabBarPosition === TabBarPosition.LEFT) ? DEFAULT_BAR_WIDTH : '100%'); + TabContent.height((!this.tabContents && this.tabBarPosition === TabBarPosition.BOTTOM) ? DEFAULT_BAR_HEIGHT : '100%'); + }, TabContent); + TabContent.pop(); + }); + } + else { + this.ifElseBranchUpdateFunction(1, () => { + }); + } + }, If); + If.pop(); + }; + this.forEachUpdateFunction(h, this.tabBarOptionsArray, j, undefined, true, false); + }, ForEach); + ForEach.pop(); + Tabs.pop(); + } + rerender() { + this.updateDirtyElements(); + } +} +export class TabBarOptions { + constructor(b, c, d, e) { + this.icon = b; + this.text = c; + this.unselectedColor = d; + this.selectedColor = e; + } +} + +export var TabBarPosition; +(function (a) { + a[a["LEFT"] = 0] = "LEFT"; + a[a["BOTTOM"] = 1] = "BOTTOM"; +})(TabBarPosition || (TabBarPosition = {})); + +export default { AtomicServiceTabs, TabBarOptions, TabBarPosition}; \ No newline at end of file diff --git a/atomicservicetabs/source/atomicservicetabs.ets b/atomicservicetabs/source/atomicservicetabs.ets new file mode 100644 index 0000000..8598e28 --- /dev/null +++ b/atomicservicetabs/source/atomicservicetabs.ets @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 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. + */ + +const DEFAULT_BAR_WIDTH: number = 96; +const DEFAULT_BAR_HEIGHT: number = 52; + +@Component +export struct AtomicServiceTabs { + @BuilderParam tabContents?: [TabContentBuilder?, + TabContentBuilder?, + TabContentBuilder?, + TabContentBuilder?, + TabContentBuilder?]; + @Prop tabBarOptionsArray: [TabBarOptions, TabBarOptions, TabBarOptions?, TabBarOptions?, TabBarOptions?]; + @Prop tabBarPosition?: TabBarPosition = TabBarPosition.BOTTOM; + @Prop barBackgroundColor?: ResourceColor = Color.Transparent; + @Prop index?: number | undefined = 0; + @Prop barOverlap?: boolean = true; + controller?: TabsController = new TabsController(); + onChange?: Callback; + onTabBarClick?: Callback; + onContentWillChange?: OnContentWillChangeCallback; + + build() { + Tabs({ + barPosition: this.tabBarPosition === TabBarPosition.LEFT ? BarPosition.Start : BarPosition.End, + index: this.index, + controller: this.controller + }) { + ForEach(this.tabBarOptionsArray, (item: TabBarOptions, index: number) => { + if (item) { + TabContent() { + if (this.tabContents && this.tabContents[index]) { + this.tabContents[index]?.() + } + } + .tabBar(BottomTabBarStyle.of(item.icon, item.text) + .labelStyle({ unselectedColor: item.unselectedColor, selectedColor: item.selectedColor }) + .iconStyle({ unselectedColor: item.unselectedColor, selectedColor: item.selectedColor })) + .width((!this.tabContents && this.tabBarPosition === TabBarPosition.LEFT) ? DEFAULT_BAR_WIDTH : '100%') + .height((!this.tabContents && this.tabBarPosition === TabBarPosition.BOTTOM) ? DEFAULT_BAR_HEIGHT : '100%') + } + }) + } + .barBackgroundColor(this.barBackgroundColor) + .divider(null) + .vertical(this.tabBarPosition === TabBarPosition.LEFT ? true : false) + .scrollable(false) + .barOverlap(this.barOverlap) + .barBackgroundBlurStyle(BlurStyle.COMPONENT_THICK) + .onChange(this.onChange) + .onTabBarClick(this.onTabBarClick) + .onContentWillChange(this.onContentWillChange) + .width((!this.tabContents && this.tabBarPosition === TabBarPosition.LEFT) ? DEFAULT_BAR_WIDTH : '100%') + .height((!this.tabContents && this.tabBarPosition === TabBarPosition.BOTTOM) ? DEFAULT_BAR_HEIGHT : '100%') + } +} + +export class TabBarOptions { + public icon: ResourceStr | TabBarSymbol; + public text: ResourceStr; + public unselectedColor?: ResourceColor; + public selectedColor?: ResourceColor; + + constructor(icon: ResourceStr | TabBarSymbol, text: ResourceStr, + unselectedColor?: ResourceColor, selectedColor?: ResourceColor) { + this.icon = icon; + this.text = text; + this.unselectedColor = unselectedColor; + this.selectedColor = selectedColor; + } +} + +export enum TabBarPosition { + LEFT = 0, + BOTTOM = 1 +} + +export type TabContentBuilder = () => void; +export type OnContentWillChangeCallback = (currentIndex: number, comingIndex: number) => boolean; \ No newline at end of file diff --git a/bundle.json b/bundle.json index c1bf0a6..b9a2d95 100644 --- a/bundle.json +++ b/bundle.json @@ -1,13 +1,13 @@ { "name": "@ohos/advanced_ui_component", "version": "1.0.0", - "description": "advanced_ui_component", + "description": "as_advanced_ui_component", "publishAs": "code-segment", "segment": { - "destPath": "foundation/arkui/advanced_ui_component" + "destPath": "foundation/arkui/as_advanced_ui_component" }, "component": { - "name": "advanced_ui_component", + "name": "as_advanced_ui_component", "subsystem": "arkui", "syscap": [], "features": [], @@ -25,19 +25,7 @@ }, "build": { "sub_component": [ - "//foundation/arkui/advanced_ui_component/interface/filter:filter", - "//foundation/arkui/advanced_ui_component/interface/composetitlebar:composetitlebar", - "//foundation/arkui/advanced_ui_component/interface/editabletitlebar:editabletitlebar", - "//foundation/arkui/advanced_ui_component/interface/selecttitlebar:selecttitlebar", - "//foundation/arkui/advanced_ui_component/interface/tabtitlebar:tabtitlebar", - "//foundation/arkui/advanced_ui_component/interface/splitlayout:splitlayout", - "//foundation/arkui/advanced_ui_component/interface/subheader:subheader", - "//foundation/arkui/advanced_ui_component/interface/treeview:treeview", - "//foundation/arkui/advanced_ui_component/interface/composelistitem:composelistitem", - "//foundation/arkui/advanced_ui_component/interface/swiperefresher:swiperefresher", - "//foundation/arkui/advanced_ui_component/interface/arkdialog:arkdialog", - "//foundation/arkui/advanced_ui_component/interface/toolbar:toolbar", - "//foundation/arkui/advanced_ui_component/interface/progressbutton:progressbutton" + "//foundation/arkui/arkui_advanced_ui_component/atomicservicetabs/interfaces:atomicservicetabs" ], "inner_kits": [], "test": [] diff --git a/doc/Readme-CN.md b/doc/Readme-CN.md deleted file mode 100644 index 0728c2b..0000000 --- a/doc/Readme-CN.md +++ /dev/null @@ -1,15 +0,0 @@ -# 组件目录 - -- [Dialog](ts-composite-components-arkdialog.md) -- [SplitLayout](ts-composite-components-splitlayout.md) -- [ToolBar](ts-composite-components-toolbar.md) -- [ProgressButton](ts-composite-components-progressbutton.md) -- [SubHeader](ts-composite-components-subheader.md) -- [Filter](ts-composite-components-filter.md) -- [TreeView](ts-composite-components-treeview.md) -- [ComposeListItem](ts-composite-components-composelistitem.md) -- [EditableTitleBar](ts-composite-components-editabletitlebar.md) -- [ComposeTitleBar](ts-composite-components-composetitlebar.md) -- [SelectTitleBar](ts-composite-components-selecttitlebar.md) -- [TabTitleBar](ts-composite-components-tabtitlebar.md) -- [SwipeRefresher](ts-composite-components-swiperefresher.md) diff --git a/doc/figures/20230728-101201.png b/doc/figures/20230728-101201.png deleted file mode 100644 index 614c1695ed63cc22075243b2ab5ba876323e598c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151067 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%0D|=4kgkaoc>s)# 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 mFj(oOo$b@ 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 QDd4d`a>BaQ%InI%0kN^Wj{pDw diff --git a/doc/figures/20230728-101306.png b/doc/figures/20230728-101306.png deleted file mode 100644 index 0070b5776bac9214fa050fc03e31731dbadfc475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63668 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 diff --git a/doc/figures/20230728-101355.png b/doc/figures/20230728-101355.png deleted file mode 100644 index 8d840d101314b8f7f3b832958f6db519a18dc16e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63306 zcmeFacT|(4J(5RS}V{B2Ajo1B8fDMidBRLFtHqNR=uz zDvA+=&_j<(C;>tV5J&>a?|E^H+jI8OoIifw`qui~YxeL?$lIRhF4ukCh1sZ#Ui*R1IarJoJIz#XiIuwEawf1vE>iU0u z8+?|^^6lH36;d~RJ7$>#XRLdx#hwCwY`%8N+-u!BX+7xw>oe3JX0KbPweIxsW9R(W zPY!HOw6=$920PgPqyNuo5z#+4vi*7Sl*pCs&S%WIV~duL^=~`Yde(SJ@}`98i}TlI z&TfAlX(1)jEuzQ66USXz6rSrEa$Ll9{SI`kfdhT?ZTJXno5P{U6^9oGVRHdny)+k( zj+zgS_N$72@N3TN{(#s>MZUVb`|xuqDJj3aygb2JxUhwZNqe<(d!}g5(6JuutLM+3 zhwRoxO`K4%}RSLY*zCwv+a}Qx3lT$R^Nm-nfVkEz7nCu&we$W$4xurJB z7=8mAltlD*b(K+ON5mPuWfThdbY+^1*h)9Lv2H!fMz(DtTL1Zgl@Co9Tzqh_Ol^=< zQ(CIX@avZ@Bi`3+ruQu$Vc0&L6P%mQLqt)^%a#!`J=n}if(%aCAx7B&TtQqhqROW7`cS=n&k&!oYxj&kd8Mb0Q#E&AUo%*S&{rdW z-O+e)_Kvhv$WgD6$$x5KF-^RR`)RLVIQsZ3pmQ%e`I9>nc_bC>ahtAS6dgQB3+DMv zLT2_jsp82*xtznVFaOVP1ifsF^2VZ@S!I*B50;h|7E1Ow@X|FLLL7b@z|G<3$D1=i`>H8l?Pul{d0++lWYA>y@l(G|?lMYDfiH z+yf7S<>(oD*RvSbvqk7*??^R$p&%t?!1&6X%rkaPDY0!%wpzzbXc`t(XFi2&5_)D` zwh&niVL^lIzI`ehvXJ!ySyOPYeLzi-6Z{N z;V~bpE*5s92I`D2?u!E^xyI7ew6m)CO-4C+8i&w6|FT5y{Ht@FaIvx5zuM((65=7b zubfTJkIgSXH_aKb4>K%x^n+E>Uv1zDs!Z&1k_p>x+;VOg_MfRzU;;b`t6}2y!hC+0 z$p^2S{K2{B5e}A}|CG<3^viA3Dqz2|z^0mKRpGfp8gArs6t?!WC13Z^Opw3yCW?oL zC$C23;4Qu+uz62Z|5VpZtG*#wwW0lm`D~kH4;Hs&_n|A;NjrR^fI33r?y3K58@@jT z^}ZH)*4s@lP8O~tb&Z-bIng`GX~@WUm2H&7(r1~jdd3O9y_Gj%L@1&7%1?!0-`^MzvDZIDt`A^Q^0lDE+&fRLfsgN3_v3_1;wbxn*=u?-TGG>aP=j!p53&uVMwMcc(rR_A1AXVZ z@#A4kf1&$8WsE_*0%5qw^5SmUQ^!nVg*$SQgjcyY2&4huJ|bj^8}_E;6Sn_Syf;Rk zy|_YM$TQMhnNKNZ$?__Cli73P=;?dC(y6K0r;I{@Biz&1-@jbYBlwt{n|tp4xu+2y zN`565>q2(ybaHbWkgT$6w*_lWW^f+)bc1o=1!3_v;egYDqPoO^Si+LEZ_lu0)l}ug z6b}!lQLLa)yXgOb2fpi1!|~L-Jhv>z6gc_AXbOVfKN)RMe*Z&J!{yxv93t`ZbPv(? zVRO-Ti7@>Wp2qsOez~?1fgubTSBpd*rD5R{S%ukb(Jyai+Gwy@vOg}0c_`4?XmU{P zS1v?EE7geO%GcAI*RdMZcyHrAw6LT4(&qmW;jF!pAe)5i__}AWnt+IGN%Yn9o9f>g zzGb&3%vU!v);WO*xf3x~V==$fZUXF}y5pC(x0U%YxebW@?C}9(yD*OrJ2FN_MpB~o z9Q8~Q;%}2*yYWvB21I5$OpMekU3-dla)F(r474Q4s%$fE=~!=UmM~p4U0WZrVbh>| z!2Foq)vH(i{dhX)Ke^n$eidS~t^4J5yS|-9YO{BMf}mU)?n}A^Tw;eioMKgCRqL1= zX{tIRb*0h?80u2iJtwihzUF!s^*;+eha0wn1=zQ9zy4B|5PuP7YkF$-x(GF?D*+QN zX*vbFHG-C!S;uVRn7Lk!^i01Ore@~L9l2ULDc8!HxU93jby7~_^*SnnQur<&Fc_yZu6yuiL~uBMnMAK(_E_Po6v}JvU;VJ9n<7 z(W+yqx9G+rdPMTDq|^AH zggP$GWnsJeyD(cHAH^!e-k!u?U$7-^qlJYj9?EOhq^_f>2a6ppg zTPrJ7Z2CUi?__2fB?^OAsLSpKI3dm8<%$<4{$k}Gd%D+h7?@F)lr!lkSAyUEyj}QtN6SsRG4fnIpu*h_q@sDI; z1yk>^08pwbbD{7Pb%oqFt!_Q}eA3sfrKD4|N#k<9B+b7fusG(iKvieE(60d*frpcGy>7{lVoz zncZ9w?kNVBCP|ZilM=oA@Cd%)uTpD!M46??uOBS+Z&nLSOFxU3*FGbn1y#vOC)Ap5 z8s%Yl6#xoxF+M-wJN@iTI$8E*(fVIHbm(rbS+BmlyCdAF5$-+?B-v)L*}CCsv4(le zeV)Sx1MtNGM+If&MX8*0=Yz}$ioIwd@GqS)n)IcF{YJ@Z#nQYTw@=Jh+{}c{jnw!Q z)R3ts?Ck7(#1mcr`Zf3hra+gqE7!ce$f@;--G2Q?*8*cW`x|eWl1WSID$6U2I7V{K z;vg+9@^QfZfs4#MpsENG`x0L&3u|iRoU|#bnt!aSVDIOk;@JQ4Is@WJ9J{QF95Ze+ zV^XX476S8JrYi))Gwl7YRxUpfZ(KT-@=~XL1DD#25pAk!x}5v)gW1Qf&cA-NkV8CZ z7aLM*^u7CmjsWi+LFX^2&wKL@#x;qVyVM^gMZ#tq_x7&dla{8;YPl8`(&;SJXrz zCW;O?HE1}vhpQguVVrghXXcd##E{qqyyD@3cFXJYXO&nDIC!O(2w+hLt@h+P9Aiql z9XFEVA6NTkI-ZnTmasq5GXLooS1<&Fk5j4^uO=X)Y*(Zy}}Vcg<{YbC&9n4T^$|wC;0n1mRp?fR#mY%J&@)M9M<9ihu&5l zH%%rSe@N|qB(@i?sGLzU^^c^JMd8KQM!He_rGAp1S#GQg8RSK~xRZJl29w{D zqiuJv8hDL1ub_cQ8x9Vh=!s_LZPtY_cA{N8Nc@S6z)XK(Q|{>wx=Jw!SPTa}P%Bf; zPEHcHzvNtARABCnBny3syS$Vn!4%b1-7 zw$;$)&OI!idoC#F4$M>R8PzJ9&{!jX_Mg{z(9tTD|hj&$QQW5)PV4S1m%MktHji zq)k3Nk23ps?pa-)EfZq5o&^Csmp92G>GGV!^P8EI#S~fLgO}f;FY6oi55T(`PqDz73~j1Rq$i}~!4r^8QTaJJITF0P z=9sdfEquTZCsq4qUFfplW;FmI#!O7aR)I3F7padnF{L@Re z!R6<~tQY&3Slx9YwNk6*h?RqPG8p7ZGzRXmtJ|FG=;-h+zMPq?_O^a6Gx)3p7E)a= zUa&w|PPXn#*X4*GX-Zh^YE9QQBJ|!T8Zcu+ZfF^?;Y&4OO-4p{OYQFp$vE+=c#kPQ zc%ZI=f9OLsWbPW`tR#z+>XEE_RX)yhLOHSx2TEmyAX>#bJ}-$0mJ7Jtu`?mnBjN=s zgzRHd0hd#O^DDSM+5JLp>n{1!GV%Jue=xJI>sbcGSNR@*pmwR*H{4eoz)q9}j>oDh zY~6EY=8t#!eH!bM_c61!#*+XI8QE;;*f}Tdf2=+6s25pSJz)Nz`iot5zozXV3}L)0 zr1}qu0@efi(+sT3YmWH%gapKS5EzIFyDcIbNq;k^MN`~pmm4ID)Tv1?OE^zSs`FHT zh4@{FuXEcvd6X%$xbZJNkpk8Rmz(TICvNg8Y~6hbPtrED!7+n$HnPpeA&)vVwEvzn4h&DT3@fZLzDz(OT+_|aQEe|e)v9!uDx0OVW$)ZMCoIB!< zpoa|Lv28+zr}R~WjVDhtBb2F+SlMB5nK!u=?0GK4@g06v!JM&ZQ4G=UWb+9;*3KAA zaz2NB=;FcL8b_LoROz)pt3Lm%YP6fkY7q9kdVDHuB8ItL&fm=a!&HDHLWJb)jQe9YJdB!$}J4$W73=W)c zQ2^;MyW+^40lUQ=%
#G!naIxKwALwB8*=V(#vAGe5`i{JJO1`RokQf1R$_=Pn6i zr%ltZK>A~{$NF9y7jqAg0pcglVa4ME2Zz8F0OMR)T~uUQIUcP@U@B-?7a|07EP}-U zWNKGYqv>D4Stg>o3XKRZvx3;#9qY=inCx2DV z@Kp=7rZ?jikHcinm^m7^c5*(Hv#nLCvOWhlqrK2%av5X_FTacQ0jVk1v4#Vc-i{d+ zUZcUs51N=Q5%ri-nIIrYPpUJYNlA^LJ=Xr|^)1c82d|ks_l6d1vv+BxQv?Xo0OC4R z7r`ZLVv~5DsrcuHmKlIePpZqDbZOn6A>cPvYh!I)lRnhTr1~5J8yHFIeIjUW@h*Dm zr8l8Xv8kzPt7;``g~<&x3bAi|m?wDX%Bi8~T=$5n76m}gK{3;IcN$anUIGzPT_#a* zus8O>l<~3l8|ybT<6>V=GPwY_ZQZT>>4tm?O(3Hi&|P?GC+&|MQ>F+@kwP&RSkxIC zmyRB|s&$Kk_gG7@06+h86;&jWN#Cpb?E*Z0m8l@_Nch;yc{z|dyGKoa72Uz_^E_3u ziuD}aSLzv@CX~m+3~>T-t>z)sT@nRH$3F%GinSLunuICH$(iWTNP2wNjk#x+5dL`vWZF9nIeEmP|f-nUv_)}z zdVFMLWEatVz?V5JgjT&5Tr;M20TYy$6N zMKUlRQXXcblGr8bA;bw|5WnKP4V;;+MbpDxuubxQ{6%6VbY8$)eaHr1Ic=XxBhZkif*mM0w7V^8{RdKT}TchL$X{Q>4^E@suJ|bwa%Dec`DB;HrkW z!Gb(v65K>@B=JA3=FLtgsz^IEsHkM58F z$~ys}A#eO+%dQsp)pLQH+tXP>?r!_y9sw^;3aD%F-$Da}D z=2i`IuU(UNqh&p1c|@iyVKbX+cVU_gh#hj=(euy6L9VA3E9Ef0C67t*9Lv?RNxzRh zkU^_?o|+BHhhzvRnMq7Sfk~z1Ma$B^3P8@{KnmyBRLBCe_WRtw&U>Dn-6KA5hFP=g z$KjfDo?yyq(BqbP(tGh0m6?<$lvg-Vm}ik;#-p$>f%Ujpna)hz3sBCGDcLc+~i=6G5<{$}z=BPUM|J5zOoe0buS8sq_43iIQd@5vezdpF7jMG(V{3j}t zg7m73MNv^P%^^EL&(6})(%!{oLJHP6SIg|)7_<2J_;kXEXQ8y8M!giP{vr;+pl=fN zHcqSW{7z7W2yMSm?ryznl#rFeNy&(_VTY0MA4DDb8bmq5cwP=gtG-zW^7_ZoRm3t& zwC>zs;$_aQ%e$tZ@ceFt%MiAP-zyLbKf4)_>ZXGDl_Cxo`#Or8K$I^9# zSN>=KjcwOjd3WlgjU+@0WnenE9HEp| zL8-Q(perWjRJbHEZ^v^m=MmsKKpd$LdNa(}7Y?n(G>qLw^#QQu#R=>9Fu&`qX8NgHA+yD!Gq$|P-$-i5jZ?Cm`X^iGcR@s3wpCz zJT$1&)GQ3#>S9lk{iPdsWGf}`@9ywL1W|_LBK~*V)4j2%H{*=u$b5rfJaE+E?yxpL zCauK$eJxOA)ofYc3*t8C#(PXFKo;mV$TYheR|cXDtjSJ!PUgg5V;S2OR)c~LSyK;K zQEhFl?|Ap zzSEOBHwsF0xrok)v@>HxTGW73h{2}?Df0_m!<)xat=D6{h$L?7^ofcuDu3pWMo##9 zDQU#!n+TYKXe#zQx1HJnlrJ4NEX-a4b;0KV^pVr?RdiuFe$h1 zx*ET~E>71ha`vG>CkGd0RFeTiFZO#Gq2+4k&!TT_;^G8qv%Vl@YGLxK2VwTe$Rj)L zI23JQS{tZCmQJ#w%Xze}pwBtT?mc}k)kJU-EY0d`wB89!lOig4ux}zg>s_BPX2FW4 z@vdup!NgVf?f0x=lYDBb7U;Se;m>ShH2|JKjFuX* zk2&LS{3lC~!DA(?yqhdw8$I3qV?Q=3Fc(FP-D2s{J?xQx>3K6YnMXl!@z@5vHHX!` zJ_K6g8uyxoE+lB+(QcMi)0vt=l2M?7LjE`ikhPl+&~)hSDRgd9IckN7EUtPS4jQ0% zJ^doQ=@EN8Pwl!4ITt_ft~^UVCG(m9A9S{@(`0zd8HRw8D_i;%gwp1tZnm{SFehAz zvk6*VaC~B-4hh-{M6*QU@P5xmnM?QP7ajzJMsaK_vZRFDv{N#P7!8_hH@!_yZYykY zz>lk<<-HUUu{5((r7E7}efE)&t|-w1G@4wB(?$u0zAiF0GviCPD7|WmCQQgA;Tq*o zd&-2>{I8)2vz$?^Yy{futB?(6z z7hd^l5&PTUi*HE|gQ^nL6hY<=sme~65MP1CC8Govus!7YrKbfEU0q!*_9{So9}1xq zBANq46ciQ1&a^E~v^)x%AB~!*IQPuus5;6T^KL>N>t(HqQt4HNuViUzw)tYc!dB+2 z1FEes8GFCu-Vig6D+sybig4#S6z>(p--Lb~e{H2E=4Zf{Db` z?|g)o>^0Ea#rk)8jE2hUDkqw@MI^$>*U>-+M6=Q|GWMx;_V)67^0(1lTwLn*I|ugS z!nX>%Av>SK-W#AQ4E%|2ZbmGOcV1!?1Px1x+FpCj3Ir~{VkExs!@fAH9iDJF90-<8 zFlAUCU+FWUZ5U(gH8&E|%-J`8{6GI_@qm97o|R8FNN`s;Z3nC4Jyo?=m7Zmqqc> zZ{CD))a}no4!DX2<;a_lE^tK+Y&)Ccy$ou=BhIuDi!~P`fQ)3mmvZgjdTFRWDlP8x zz5QX!w}h8P@bk-TQRYjeIMklx%B3%Nbf(5uWYkmI69a%JC{YJeHy<=Mwvb45?Jbcc z9>RBs3(6(g>dqOJ8_{TUDU3b!!VoxfK4ps{(Ci#>({1#scoQ68g2QCn$?G>LF)n|S z>YJYy_V7)n))ZY*RzIcQJ_iJ^ddjE3#qSE%YnG}2SI_VV0YA8UqR`aQbbrWI1+!mEQ@jPo~&CWOIeVTnQjH^z4 zAZ3=HeB}CNMw8iSkMQ$ehS^inp+bJ<1Ta!xg!V3`Nl_p8k|JD#69e0D$CZ@HBn=JQ ze8n$+z^V@TGRZ2U>!s;*3mac%Nql9FD~kF&u(-~{4j-QxYU)-cyl)fyhAXsoZ=RpP z%H=wM!X(iGTa*TV(mhqQz`9BaFP;)~2wzrKhFkYZc|%b3`8RP0z;6e6Fh_CvELEVUh1t72b#!#l1A;{{ z<($?IDDzf#!y3@dxvdNmT5ZFcc4A%qz_zxzKw$Hd#ucp@ppILBj02qqXu%b8;%)I{ zw!W-U3}8~VY57%C{GI{yuzHrzd4Cz3>LYjmX-0tVgETm(h7iq~Gg>)|E1dHUefaQU zVdq24H5>^K8tBT@`j^$!Ytyc8(x%cMCvy=dGSX*l{Xd7v-|3K3N41j+=Qu;>7ak|a zBoPk{AV8Nx+MW3o@dbVLw!|qEfS?id_Mz4Rn@fe#Pv6rZjFSKgh!yaYUHzh2nnvxE ztOAU8bw0h?pWNeE7u1%b3oun$O^#?1B0#O3JimOZuYHjQX^&*)v}S^m8#~c@D`EC@ z!TYvZRerev+(P0+1-be0{K7qY^=Y7}r*RBx%n3Ij%orfFk0&bpYoB7J2n)K|z}$A8 z{vJHi42+z(h}j>b>{KF z*+3_1F0%oDGVinO?A;azK^C)pzhUCiw7UAs*){L}mq{vU7uK%^b`q~}g?0XOHb9_C z_@Nk04Lqnw4-0zD$`=~cdV()3allsrKg9`x_O!;Ff?5^45rWz-s;s0Gz6>0=!fFs! z4IDeN9ZAhNI-t=6MS=d~uQv&AsVH6vODf-9qmW(UsF^5ZDBxlYn;&CQx`) za3?PSZ|+Y9yb>qypl!2n>if30EhYp`Rftde^w`IRB__uZD6v8q?^-e4=q)SoDX$cc z3J?v8W(|ea6WIuK2n7aaOvebqGAB;cxRM-27itKZ32*j0Cc_-ipdm#Rcdc%#XjVbN z6dl&lN;Og?mdK~rE`Q+zN>VjjFQ5|$xfMZ5MnOvSNL(@k01?|=9)z|G(X44k+I3a! z06NHbs!cA0$pwkx!BzL;=T{C`<1!5r-jE6Ypuy3`DMbzDiMCePJd5#Oo?mG1=-{q5 z(g~<;$C^~aRgx!;V!bR=#0WGUYQWT3keB*sfcwOpBs{TJIBV3h5*}}j;aOa;3aGyF zO=LrAWoDL!Vo)r|mA-n~975)A#I2>jiZ^{1_cgKkPX}X1Lnh;@!mps@O^!Yr4Od_? zS-!DM28lgn>QH`H=q1qs!=xglj&3Z9N$He4PW(0tK)0uWLb@^kj}Qh5yh^yB7=ki48c_`ZWoY%)&gV$s;HA$< zh&Ms{4Z=o|cVwXYCFj2&7NnaIF5u2a0oC0cu+}FhM6*U+oTRlLfnZ^5A&k$4t>VRt zgLu$^qlQ=DrY^Lj5DfV%=EVKB@Z0^iXZ4ZPE%JG zhN`w&Y+Ta-(W_??P$w|Bjf`_EAJC>Z+R}G`sBjEaK64VoG=x(E#MitboQ(=@Mc8Pa!~<%b{?dY!vim zrzoH0H6T#=HC}BCR)H!7?s|ye+JHOcl+y)rR+!T1&YrIMQQPr>9=b|Z4d7rRdy?0x zK3>_fk`fM^Iv`$maIt-JhHJn5&j$gPA_evh!J;{b=V)h}}zu*Xx! zKbO0Ilk=b6^WDCd3rS5`X)i~vD6QQDe);D5MUpzWDkk5^4YoUzJG?L3co^$sgC#(?bIT zYKvA^N6Gukh0d=GXC}C_7eA7}q>X+rj0i$Q)&vbKwJ2&DKFvXSaz~b(LTZ%bqBMB~ zd!bjT53u50T*4Y^xzkY|L3U^kKG`h*j3&ZH9;el$r4=G-Jl_lYh0Z2}50D_Mw2Kt0 zE416QBEmH1eAqsl>+g6(%}hJ!#utyUNwiwlhJ%X=y{?GTM4iKf z9t^Ta-GRkE4-^tKD)W#akBH1NOyURetL@6TSz6;N#o#~l2^n*AB%#GbaY1uUqKKtBVNTG-eH5P`4$8PCysu-e{lXGg(iHHk;SlITLpI8QT#BeP z0o09gzyQD#MS+PTToqv8gJ^kKS$HBDF_sn)PFAiV7>MG0``m#0DHmRPwMjd$A`J9r z9h7#a&J#pISFAW*lRg_Gidx9?*jkZusXfyGV6=rQ;P6{CAcM&Tnh3xPT6r}oUb?+X z=K=|KMMFV6+Ll4Z>KLwovR~fb_7umj4!o}3Ed^)^|!kKhuQ+X^18vsFRjpLPlKpDg&Fi@=zC@A!MjQ!54-C_@smfMYW+o zV3Z@4UvmY^18JGauafni1@2^6TI1mlGSlN%N*Om_kxHx%$ zxLJ7-L@FgIz#fQV9vu|Jd%!0wMImn|8Y2YiV$X7U_}2-%*^#OLc!%fs97J@K2w#7@ zUDOdVy2I14E`>gyRoIy1H@Mpq(EezMW?3~)ah9v}|3CRJzeFMh1O#*pF^eV8{2JGk z@cGf!s=&MCZq zbDXJr%)5m&Orpj?-aN9l>EgngReAU4OtW9@Vg1qfn)K^vP%VEAZDs?rM?);V&Xns* zI(4E>c5W2IwF*ZOGq(V`?ymz)8+;F!K=`hQUnmlsIIuW_m^&8)7UKzDX_ipE($z|4f+5~0CO0v%C;q-g|$hV%eF4%v>i zb?QF}ioSIGl~yQapkcj51N1$C&rO`9Zy}RWwscZl-E&?U3vN<&Rx&?H0Jl_+_*4!~&=bx2Y$r^+;D5E_*%<(C0PIoM zjw4V!p%9SlO&@w6!$sUFZn&kQqYkua3qG9b!_k%S;4(+>9zjC_#1V*|T!@`wOcrCp ztxv`X36dT=CIj#g24)3C?1NL=Q#fIuT~QP@Bsk5sn%k(z0g{?GAlrtWUNsaeQObk6 zNXIq_a(h+?Vjx$RJ1ye@(?gf{d+MQWX}wtOUPv1F41i zYqqdbdS-C3R(bw96nh8txs`{3IRJbS)u1IPLJfpCNXD!%;~*YLg&ICqOgB7;P8p4` za>urV`7Bl!a9J7)*+|F%AOWk52eyERKTss-(*|L-bjY8vQBd>=l(xon^_+Gsxz|NU zNXhjAI)k@9N`Nmj2o%7ECnhrpR4A+}(#T@ zQeS?$$)O!cozqm{73t{g471T(tiXh+fi_8G`$XLQ!u&hA;DfHVSkjR!O@ z^mjR4pw10|pDG2xlL78AH_nb@y)GSOSu-Z5H{%)PvyYp)b(hs3v z7!9fudNk3?5DoeQIVsVqQ*0HrwHkOM__&GaG=K}DaRC=9Jnb*MVdb;hMgq0^JR~}8 zT9^bF`#r1vUR|(l2rMI9R{t|Z2T?$O=~hbhTr&qHQYxPf){=S*ID;h+1MSL86v8FA zS4x&ZKxqq%zD)TFb<08hKoIGJc*HWuh-%_JIn1nmOfR&p?k$8HzHT+>JJOjVB9rBy zVC>P^fMrd}2cvNE>sy;5)IbsusV8$+SW`oPHPAW=XH*YAwA2m+R3REP$FNZ#Uh%7; zSfOD1rpqsR4r~L18F&JYGM49bY%0B-(OD_M0qCqm&%e+$f}mx7TPCtrqit?-@y0 zgLHpsLeBH&+BC@iuXs-SWB8H0@&8C)U=-xHx(lW#jKCo zpqvWH+%buV1UL#_(t8c^3na*_wjmP|5_DwA#wI2^GnYVEDu#y$+hu@*4t|9uS?{Mk z=p!E5w7A;&3?u*5W#X5B>>+BjHQV}lfnQ6jnNrW(gw8goRTl0%>a`lFZ{7IEX1(#GfIvx!;X z&fds&|E`vom)D~Skp0vN{v5`qou7MGaRp-D;h@WYGXMx+mRjA8W=+O25&C@Mh{mcSG$QCgut|eI&MJeVUg{|)`ASS9+2`=+I`qTAH70bk>7oS}UhKtp99D1;g`@s@uZLL#8Q18zWQ<@<@*i9I zxih^%7BF-G8fPvlsMus=j3dpQyfLhy7O`~j8D6yTcZMS(f zBL7Ied$^hHsGG2|yOk587hB5}o%kMd|A$cb+chK%fw;YcS$$+? zD9sIU@n=qr^oe^?{M z$^Ms}G$CX$2)bo~g@@*#$cL?#ED_qXBCISe1xSt>a{!tEnjHz^L%)dXYoFgBA#gDz zk!w?<;#veTR4!MqYER)%2oRkZBq)U$gmVh=lUBjzV(nrLQm$&U2-&WwQ3Fz$9K<-A z0B5vGmf_ZlEFEBMc0oYG8V%7pI?15re$_%;1cS$R^tNM-#??VOj zr@h#u9S{VOEfHrl85B&!DnA^fGX4w+1#O{;$-)F0)DhLKu@w~Df6j)O=W5_?knO}x zTXt>hRh>wR_Jb;?=)ej=sgaVb(ZGo@U2P#qhagm? zV*_Smp`kcX$Iuofm?Q^Mz|;Uk9EM*&pw6GLpsfOEeV9Sp9Am!Sh>M7z z&!y-XA~Z6wQgK$Er@J-O8QOMS8v$z8@m1%mX~U*N)^2voZArK$_y7*lb8upS?A23i zpyST~>OS3~dwNTQX4tUm` zq!`5V5ONxnL?Vrj4&V3nQb{SizW&WTpu=iS+)$B2mRVdqMtBzHe8O07Q^Yj^Emq5^&qAK4q{NBo#X#**MY%b1 z@kAYcPhai9Wjl?)yqd1w=^D%jdfuF(cz8A7miETkY7S$u0Q;viKxRPODM*B3M?8cVV*>*M_D+u(=VvX`ZAU6z+G|v?U;+R1m3o!Vn&{lo2O6RPcFF7DxosK%%PC zbqHtZa1;8L<7?yc#n+nns#vq*-am4UV>@>&uZBD@XzMYZi3CQp9i0Z`$QW zz_*Wn?)-hdfYGj^Y%O6fK#np_kRL8Cr4PKnnxJEb1sEz*AKD2a1jvC zFDfB+C$^w+{5cw;hw*7?Y3Q1onph~DL?dQ4A+}Kp>p1UNg@=TM9PtL0Pq!9yJMYz8 z=rCE83NZIcp5&aB#7hAK*zN`a!*z0sK)79a~%#db&w3?Cn~JBin%+|#^m zm0un-m_9dRJXoN^dGyc9Nk9+BHX2hO;24dg_8@#3-qv@&v4BCFMrk&qM&e!eA{MJ~ zQOkhVIU!qs0FCplbchuoZPHwNjozuA0&=CO63A}rIPmGw zDhIym!$JW9j*qLEw2!T-suGJ^)rV*Ej{!wiV&v612YT!u4aKSWUY(#kY z-Z)$e#CsAUwi6EwJ7`dl?QNWvYkm2^I3Nz=NLlfg(wS`0fvQ#Rn%Q{t&@<%Vl2phg z$BL`oy?giV{hjcYX+p5-`OeUYCU5XIor2zgmI;hLs@dT9b##h!s487hGh_vU> z%7gxPP;{;<3-2ZRmI!-&JQxcY)?O&JeYd(Q44`!7he04TKORi$!wFHI=j2C%j}ts< zk3L)mNL!8s#<=eVUfax!jyMaIsI5Q)mC+f~Q2LAL69LK%-|c9i(TE-h)m|vjMh`D0 zoJ`+N1UhslXra?gR|5p|V$<$v^VAv~t>$GYXzV{JixL*}ZaLOkn*-4i^*bPf?<5r0 z<4F@)AHmR#NV<69HEsMNfaS4`qZvJ}CxIZoe*O9pX;m2^(t#xC*T202h0^q-EF4x* z;U@}HTO#%%Mh>Uk25$h7qYs06owH5^12ResBB|~!1AL%Ln&JhnT5wJyPN*-wVR7rU z*WhSbPJZ_`i0Ezs!e$;z!@kYC>O z{X#!GbC<5xvGyZJ;+gyQBdd_94@u3gYob?G^$HYU3ddc8q$63$%>s`Ffl(}iR*q05 zB>)viLn~UH69EzQ5B))ud>rHhBg7D+s<_)hAQV4Q3x@OVMa@Qe+*JeR66mVHUHtr! zdSlbmF>1h*!u+^UWET`~95fOS4W@Pf9rSj)?s1K|kB8qkL2XAR)8m(3-(-F9mJ2?n z6N>>PFA z`%fbc)^4DDf(GF}cMTdKXkm+P#anIfAoG=nS`Fj2C7jK~ei9{?1;%bSbp2rI_ zmfpugZ50$K^?)Bx_f|=I849oodKha$S>R3bs{;VdBYv@BzPk$#Zw4j+a~HTN#rkqd?SMvHpdq3LUyRWJ>L5f1H4YlGP%iE(!h?_xxI}Dh ztjJ4H(J98Yb?b?*N<8%$RFy{REdfeqCsZ*Kt2qmll=Q~Og$atg%Lez?+anYEuTdG|Y@ zlf*B|Xwpx=_D!!RPlL(!bQ`H?)$#7L9i(uldQJ zE0Jhws^pQ4-z4bgn=}siwR2gu6-@2@Ha4&=uSI{pci+lSjI)5|t1L7zIpK^=!ik+T z+k?64xsA|Yo4CgI-QfL9D>@_r0c{BPVv21Pf&M1MZ;}4C;aa~% z`UlO>`YqD`Zr(zETj@1TfewCK=^u>!Z!7(SqyFCo(!YVnzggbjz~cvm^BYV5n{0p~ zHNUa+4_^5*2TSss#QTB!eP;3-c>J60{2v4!h|6iU-(~^)Aff;EIA6i|Z}#Jd_4&{~Y8jPY)~Y{^8UAX05+1|IlU$Cw?PcCP%8@JJ6z@UHtgJ|Ha{p<$RzL zO=yvyN~PAjVNd-4bypw!qS|_fcDug{lY`VBor6jV8{7{4U`77N9CQ6nP)e8_y;d3c z^OxUm3Tk+sdM5n$_xSJ64I-CWkmrudN@ubp{xlDGlnEZ;PsAsUn$|(=eDxoH|7cvQZoeYKZE&^4erjj39;A#a_j@_&x0Nqe zqiZ-8@AQu)@S1mjU`gtaabEEFxVbM69VKZZ=C@#YTl$;T@h#Ju9eR?ao;1r`jfTj~ zGAK((#+_txX!Jel)KuqxUK=nsRQ}Z*hqor;9`9GN`1J08e4G2*jJ)0>J76XE6fr$j z&sACjUAw#JcDlP5==)PvuQl3jT?-U4E(WNTxSH%48*irh%xIWAfm_yHlfw949=^8c zLbZnnK2bfsj6c}h53vWq*ypl$S~C!iM^P}FbTzI_JI9K%Z>S@V9Xj$4tblJ|ZfBg- zx7AtII?LJbzu&3rF zVxIE5e>Q=+S)`kc3BlN$e20gYRx?*yDFU|1z4sV;%&IqCVC3^*uT;tg=4 zYS!#%o@LBeNj+iM+Mr}fqjci>Sj3QG`(7jN@ZO4>iaLjf?(fz~kL??t1G7axQXmp{ZUGci@I=vf+UfIk`BkE<3i*(2erRzHd0 z9#ADtw)O@Fe^g!^8`^8u^hNhnUjKFTl>t;V-NbAp_}zUtIg0EczL@@p5M|V9nwz#0 zlu)-2h(B!YegpASkU)y3*!7d0jl(f5SdarxqL^*iFZ zKubZ5?4rq&Gv6Lh|E3mQ!Fk7i1=gQ$@i*Dnm<&0KxerIakE{OAyY^KQUOnZIaEkZ# z+{siupU6xQ%R4!(;9B?Sf0ZT4?GI^fHMD9zjLDB#UdlWgE1-UOuX5k5*c{(v+*nC* z&DG;m=bApMAGOUI(>#P6lCxFd9<`;`M2InFrq1IX{F==aNz@#}d^yA5^=Z~ylmi>C zB`&<14tuJ3zsF}7s zs9H~3VN~uXbqvm{4x_VMZNg9b7F1Sx(({SZ6$}qQ*SnH()blosh6RdRO5qjQJP?Dp z<7*oAuf^cp-hDsC%q*B_Z*_}A-hpRb`r{36tazd8)oiQ zQX{0r&X6r+DO+Qiag%)+vageUHyCCNX6E;H)8~7;pL@IW`QzuWd6;>>->>)UbjY_ zXN~KnhVLK_q^yb+#?#kv*^-x}qwnWivkYXGFxZ-V z!cN1*`5SPaO@&F)Kn_<<<){&p26Y7&rcRBIH;=UTozAG|Q-b8zE9Lr(s~cXabhNd? z)`>Nd_wFsEfGT{op82li*lVCy^P|+L<>gbrX{Nc*!4oZW_e(v{z}cF%F6Ynf>ZSp$ z@nx6#nI4zAY{~k2%8tC29Bb>Low6RGj&TU5Qd&a@0pc6+4tb0I)623;)=*#QxVCbI ztOsoh86MaXWW;a1)MXq=o9ExWN?nVdpg1}6Yw)9N=chh}VS10(Df`^Yv#+V;YKQha zG4aE`HdFXnew>Wknfs&&gg{$b^k=EW$jJJk#6gUM2o^ilwdA%6ZW)jvG!KGiiacoP zDBP}g%xvpgarY#&I$Kygl&Z9w`&V#6B%wG1iy-Q~=4J>R-A#MdUO^o$CX>-hFM0;L z8kV#3EMPk5-Jgo0D@4@$XsO7jTb-Gpll~iQ5m%wa9P1~8(gLJ>J8BM)#CDR;x1J5g~iZL-I@Sk~8hv$*min-s35H!YlcF7nN2p{V?@$ByS>_4=TaF zki(RD6*?wytAm1I?89`0FB+!`S5nEb%^6eB9+?SB`Ap`_W?M&fJFV09%UllU_&T1vRoG4|VS@0(wuB?p(2Jj<)fdkz z8cCK>wH+=M*1cfr(a1amy>n|^!*qd%d@y8!LK($0&Be;3vxj#u{y5nMs(a)+JZLuU zA+!s1E>lx$v+tQwDZuHxGb;v}pcOdZmcw|GtraIqGHz4C7`!NcBXQbF6tnU{(G8~* zsbSapw1R|(onPrR<>f*RH5`o2Gs&}GkjZ~S&BepSJ!qY)1GINAwuP2H6ow;A;j|7! z%?kH`g{s=TGC!rvJlMKvMnyxbm`yUq~zw2zp?_Q6Ar?1xk` z1xTfc_NzNXuhQdO>WEL&b7uJQU4G=5|F`N^Zvjc*JfBWy7byixz;fvcT-rsSr4zrA zycz7%xl{h7*K?2A!l)Uyn%HQG$u*f!Leq$X+UB)P3j-fnlIUhF98*5gUf(k$%}!o5 zokCz?0~HQP!N3`Ok9st0%bNRFz6)TjaW13n)30t{-vy?ZkK;t22(k8oZ;gk|@tc5^ z?M!$DzX%gs)~o}m%I#wn;%THTfwZXvArv~har4MS7uK-RUG?S0#)TP~_y?6A>OP_T zVdxD!XAL_OK9Q38ACtZV-{Jc)$1<0@f!gGXkP3VnS9zic3fxirjjOt11< zu70U+F|Cv*By0uphMDir$uE}=C(>LdlNPrEL2EpC1l3bdnSZ7Cxs@=+^PX3qUq@JE z`9_9X(&jKOw1PB)VM8rmAb1PZ9DR&c0-0LymubGxOE1p1Fp{eKMWlUX9>ES~OUg~KgPlOv_u^z)EhPL!Mhb$;Jc zv&ixjM{AGJF zj}|+LP|Ovdil~L{_lGBr2IQ69_fNR!n?Dn&FL#m9X`#0kDM<{YF6ddo^ovZoZVL}= zYFrc_24O#rkBL7$a;&9^cyK`xw&3Q43xp8JCvsP|?onn4jg$`*edR!v1F{$62n*%< z;g|qHWY4WivR1-z!lulqv?;7V%A@2f!k_%il(58*zc3L0iqm)NOhgJFc{!Q>lv6WSLSY(br zi)6ml5mZ8cS0i>)DWvlJ23BDtt$u>q6i!{oknUqR2nR_zPZdcqz@e2Pd~&^l;(>9> zJLY^3T3-1_Yqop=64?2zj!4E%6`tn|Ks3w!6s(Mm?z#i#OaUDp4~VBT$l|^olA*iq zKm*5g(%?+fP;_^F;1*=v4oWPo;^GOmQ=jVd7^d*7QDt+A$J) zU7k%oHZ>(b0uJO;1kl43u$qQncaZw_6}a8*e)#V{kcxeWdkq=JXjdk9q(gTK1i^>Qk~?NTZ%pY8 zv6Cmn7a|7dpIvpm;ZHRv7wE@BZM4Q)9X@AUHY0OwJ4Pu1V_#pPE%3Yb-$f9MA8uZ? zx^UJyGRZ>jkJ*OfcBV;4Q)^>TkW@aVBQ|M_ zGb<++Ynm!7V4)CWrJC!KyNq2%%&7fnZwrj!PnC6DKhBlN=5ID=@Rt&Y#J7pS5r8E% z4mM(^hJsLV34AU%f|?Vp#NppvD;=qkQ}Lj^2YtHV+$d9Rk>})-K@>i({$czI!GFwH zLv3?9VK84vhCP564cd_5YZ#nqpuhp1eW6T|WWjYG1xH7wcb(O6hBYAzEv^GvP_xg{Ur2w>Jg#{Gu z&XC$epN-#BA_jzn=ETD3b59K(0)*p4n=V})-+!y>W-Kd(0)q05u~Z#nNX-?!V$9>Y zbbDMFR4nTOPRpLnKH)yzM~$o(uqY4%dXps98y_ijcMh0=8jXIf;L7gE07mF0o5BT7Eq_{ zhR)5`OA;F>4>&j}bq-*TIk~U=G;6@%fKGW7&(75AL+5u#%7_F>t!NK>T8(pQ@bQsR zJQ<=ib9eGo>9ej{CVc3iNH=$wIZOPd+V*w@@YBIcJGF6j)4a^`*iC^hhef_(PSJ3J zfP%9b*;%KLx0&)H&qnoap@;t}{@pDulmrY@&lWP6&ozMC+j5ib+ri(eB+=(!b4W>W z&VNo@{$MHpDlW-(fKMWg`=x`v<55f6z|S#7O9DSC(mw%@dS`LcZ~`~ zD)=kp=(+FSC{uq!0|H)8E8KkYWKIa2J`g^>W;uMzx;d`LTq^u&%><|ZX3Qe%k7x^r z9f_GHjMpM@udjp3`8|9KxlqM-RL3I~qOZF8OfYTa`6%>j5Qk+vdOBw!6*i}!)z?yw ziwA&NhuG$Sk@kco8$Ih0QoiF`*2s5jf@&Z~>80L_aA{hIMe#|kWEk20)~-8)8)&3N z5i5N)Xp;z_tU}oeRDJBsqt=%ZwIY_OC`?D!>*3Tn6AjuyeZ`~x#4XCN`X^WX<33_` zj`~(5i9H7kK*}D^(Ye+pz~U9J#3%f-E%}offQxS1iL4RqkLvNKU;H3To#zdxS4Pb^ zZ9Tq;#%<0cg0S?UNDcXxo71&=3LbdCD&z<=^~%1WC>WRcX6qejo4FfaoBIe=i9*}5 zCh}Ce1_?Tqfy=>0MM(1FTajSe6udqW2wwH@bR!h`Gb2i@MaS3hl4mQGX=t*n7Vd9qtDm`qOH{lt*f2+Hc=%A_^MhNek>>v8q2-nwsithDQy$rii>vE1 zY!Z~oWeA}vhAVXP*U4$M)W2-bC28Dlo@!{{+Nu}@V|eU|uCoyqP!--=feuB!;R+HS zWA8P7jSwN%)rZ-k?idDEiGiwoC!kmGwcZlLkHxKzqa9JrU`c~X>`z(K+r}(=^^!&bxR~)b@5wJbK{HQuVh{gYX z)$6^d(OR%#?p?FiH|7DiR8MYC%s)`7Tx9xg;WLYg`r>R6zYO4nMC$S0l)S(%FU9Tj ztFQbKfdltyh)xkPC#JUg!gfc3A#P_@O7XqN$y9+4LBt}vA`H0~73mvzE#G4c{f3-s zFZM(%HFr;QIhSSWi8AIk>WEM~9!I?&;BB1ifbGl4zUeBRQ7PLd)avj|jz1$uJqIn@ zc3&^l!uVlqC^=hVYzon|*cYezry?8MBmPR;_l|;;p&&ujCRz!&WpL;<^1=W=im#o5 zFs&hPB1sMP{4y}m%9jDx@Ij^az1n)#-iU*VwMz!iN>?^v-2O$fAYc7#M|H6ND)PDo zzCRvzazPbUS>*3~3KXe7*UD8Edhpp`;*%7l06V9_yv8#nAsL;1HCmocW!F_|&7Lru ziZ}kBdd*OZ8wZqE+{T40XL@?^RnD-!wXzA!a;#r32tr5!u+5QHpqJG^&AWAM#@Y( zbg=1?8g$~a98}6x^i_0phpyk68p$y&arbbkmu<5=7?~Bx*{nsgD+)gtb`t6tqIkj6 zEUCl!m2fk0K_4i?bs=t!dlqYvhw~X_rNafNm1KreGAb@z+wGhglajc*Bx92LsT1dKFOnkZ=`+4aU5hmD zp}CBw6g%;gs5qMbB;}Y|-U$@aaEJ(cQ|VnN8X21Nw4`DG#6dyA)f~b6+XJoEzW5=D z%MkL1`cz3fwIqtUy@u7Ay>+Q|83BJ3-=zT*(++=uVxw$}#2$iqXwvmForryu?08RA#JqRcWDIlmb4eOu>bSGb-? zvXL~ft5lNfD{Z&h>Y$JzyD`E2D{Ta|slMn^{Hreq?c8`A+#yeS{k39&op%Wsyo;zk zMg07m0FSiv3J0ih4&reST;%Khf%1+mQ*AS0p4Y|vAlu;c{c&{%P=Ti^akQGcH`ut} zZ$;A9hhnkvcl3&)Q@R>BS{COb#Cj<0tM#Eot>^7N${0B_<9l-^Ntok7&Jcb5aKA47 z$D_{gsAs{?Bn6N}kwt{{N z?+`eU=(7mBq2{XFf~9RzF!(SD$mBd5s=wge3R@}eC<gHvy5?l{^U~ESjrzqSN%2KS^CnD>EeTKgOqAQwmqkOo zu$`>J>r-thMvtVyEpH{4OOD_zhF?d6zdhl${*mJ}-?9i?*@F56_*FiF6kM5kur?VS zcuRlW?zP+rnUJn{^|7|j#mM>`1f$LkxTROVR>aCypi0_bGiVVh2g4hmS2gfU(i^@TFlo;rFz$e5FM8N%eoMnC&ESv)LD*pE9p>< zyueHS@2eC^dB1(JJ` za_$8zT05MlwbUd^L`(eVLMn~8$SB`Br+i?m`KzYEo|=$rh%@Vl`2u>`)eI4d&TJZs z>V1|12pQM;G2*Z8*NM*e z`U1401eZ@Mt1Rn2-}6Mq&JNGSBDKhL_~B{0y^=9}t#CUk4$$!7%}w=Rmq+q9e_qw* zwjSL1lDV^PlETzZLxs08@Kq#sS#osjEwd-KRq4tl<3mcm_*epW!)N=z%-W4|3ZgF@ zzjtJ4EM%0LiA5s%`6|Ho*ul376%if3-&7t>x!9Vt$dipRf?1#768ElcKG~(X5(YkW zbw>P>sM&}3(w2Q~nZx)Lr=?D5u%aiKL=ZR5K>j8?M z@1*1O&v8SVkDpRjQa1gINJ7her9H5cv7qp9f!2MhxV! zsx6}q(X`k(&HCSbJPYEj=__2OBrMt_U}$VWTUShxh&N0i$@N^1uktLe{}}GjH5~Mb zyy@9%VKH&wlCyobU(2o8g6z@Uk9_NBWbjpYZPKhDnv8@>AtZC(`{Fo3oW-T9iJ_yP zHo^=mCYku2jd~Rj!4*pKURxmOd4#7xgqk~!Q<<%%6uMMxn4mdyNJqN$XvQ!0GZLhf z;3SZ*PwqE|LB*T#1+K+^+`>ET9)14F?IZ?XIT?Myp`Y@T|Ja+iXqAfi@7H^G!SltwC z9AxpNUp(v`V$@)jr-n(tjtpAK%uFTfD_001$~_EkE`QZRAD-Bnn__zNF($01kW@l^ z8$`&yC=j!9oHrsLi}AaArqOy6V_DmilP(>nmys(cGOaBykg+&!kYZ z(Z$#tPOJu5-Aqi)UH)byUnpyF`l2<5{h&l>S@ePHrm6FD@h!zyZHp?PiUWxnQC@MWh#E|(7ArP#KVFIg}%<9z;dDyf@s^1ok z;>T`HSxGfi1R7(jEhF$jrw~mCj|C_-^60~M=wLe|0<|=VTE*=;7Gy#n`TR|Vuz#FD zZqR5Ia&SaDfote;Rc8%ve@GS@CKU2!-q)k+ihUyfaGUox9dt|Xo2>{JtNbzIwyz9* zM+xFxN&1PjX&G@f4PMyUJTP_E(|vHb{n#38w)nN-78}h=1ffwU@J9A!1Qt7KqOp)@ zxnP*k^i0DYn=MOQEN*&3lx`X&B`C!)vtKkqN^J|Fteb=-iO|CM-yimllZ$ zuPa~ZmZgOZS6*uDIjY8Ti1lPd5GLp%(WRw!0f#ix*FYHw)*=hSqt-XJdIxNf91F{g zZ;89ZJyCv_HCk(!l4K7n)c(5&F$6|H12)?d?XS8~* zuatt^L%P{CQVE{6sfGzdzA$z$E!g_$=oO7X%sF4OO(%4Qq|eoM+`k-f6yjk1shSh4po(Sp3gWx@yR zjb-V=v(czEB|}BYYt|875xojS=Xb>BgjMo$?d-S{P_AR&sq%kN<8MExRI{9kmjr}p zy~$zMk8|`7o=w!Vs&Q7`nannk*sfc2_7@D}Kb&+)rrk`C{oD!rM!TJg_=8VWHpm|$ z0xLmUgqgZ1HTS$qenh$a<55|e<26G=V}=#p)hmLFw|b7&IGNNf+oO4VOo3kH(zCP_ zl8^c_cB`sYkT+3KeL0^}E@`+m6=9$HF$YL&q>Yr1uF>XcgFMBw(VL1$EG$*pk!A`z zLi2Vce`qq?WP+|v3Wl5VNw)~EZxk*EwjT6Sn{u&`J6wY!O`4~E985OQAr~Lg5TYWH zp*^Md??F1P=DtRPYYCg(+ML&oo`CeTYW*KAPl>*K8Z;TH!ud^+cP7k%8GaE4)$zs_ zm#AskVik|nYP?TZ9gnI6@q{ioEJ>?g$kCEe{w%u;9;gE#A4$`t66on%3`ckht!Y!Db1dRLt&g zBBGMGfBYq&T(F1PgcFd=`F0} zC7B=Q`ETWUn;b^H1Fq@>gpFNFv`^dl&i1p~J~F%xs)aZ)kBXL$@v~(Kv@OmysM*i= zS12M%UFO3_b)81Zd8jN=M+{1|)z@DZI=W!3>@GA5Lme*7x8wy2%2_-qvxkly!m2S* zr*rxQSvdv`w?gqxrU(RDQ}$axbT7t6Y*l)khTaRIhYhE=_kCFQx)^-J0@~>HV146t zJpPkPAoZ#QRnhL^%yJ{o=~nB-zKtIO)+&YjUXcj4>p{AEB$at_d^56yfKK%M4KVxE zhh;yutUz+-p{44OLszFFcmstH<_i6(A2;&=8+P$p7*cZx8M{2@?+8s_;jF726_Z@4 zGX{flIj=kzm%|{=t$#f0J*STy=Scmo( z0wV4bs}r!-kQ7@AxlU6~3t;(1x8d@f*O=p8@Wfq*jpYz-#nV}tPy6~Q_RWZiPayT^ z@mUeNdM5k=S7$rkGC?3ms>c_T>DwSGSl#o&ETg;N-AH<=l<+q~5+-Ia8oP8)OgwR6 zimyz%afzkRg1t0T|A`qV?|28cLO+a?_bKH?3Ulw_}u=Za|t9vZYlnZp1?6-0YqXt)(tE&OIZ73OmqfnR(oQy(}jy1e#8 zKICiGLw5>U5&%xie)HPY^#zh>#Au!c^94syo-}N@v}CN8g}iNK71jb&P zv531G_VRK9=6MYf)eZlZIHwerotInYtiRD5109PYaF3{FF4Iy(; zzzl6R;KE1Wi*MaxFVzRIPaVI>4S*9Cpiq*zS!>vj4~>#kwq_ddesFQ89t4p{sml>- zykVo^_Pi0Jk>b!x2x}+&vr!)WX0c%F_~;zaFz@YW54&cVIs?-;q79d4JKh>>eVnzc zFHI+eF2@o+$$q?%gPD<0x5a-smo8^irE>p)vkFo*5U=h5_7*xHlX3W(W2{*H3MhO6vrfWurL)`KiN+RNFDb1ngAmIuCf@XpQw2ja7Y_v|!0qgIUA4 zJR9Y3=@V?dJ4(KLafbMDGjUGg&2HFIglpI+iPrjFaQI`HGy(&|Jr)$>sPLM$>AYtn zl7xReK{4Ea_MjnYpP^42RYv627s$rmOvhX(N+49Iu zG=xa-Az@RKk#B?6Rs`992!8$oKfk{@2$M3`TAu3O;oj-D`}ek|)$O-3m8s&XADw=s z`ePQDpn{Iz%3=Y8_TJ@%;O3j>Y1d|{S4s{?z=)ChYO3#K-OnJ*&Br!H`4^Tcao(jk zjx}*_j6fIaZg0tbr%w9;F!T&Ua?I9nu*BPxJ%U71bEmcY1tnH5?>2di@8@2_Z3xq3 z5$4_RB1U6>A4FojXe$Bs7e$>$H!b6p*W(Qv+4!g-h8D8^iU_b3AI`dI-0Tf8c<)4> zeae^|@|$Gbj8R!1`uf^pB_cT8{StjfZ_hEY!#)mWFIW_$EUo;`bJ6GEohrBhPm2=b zM336Xh=^ns{wEIc^UK{-8Ty=wHglgpU)_2>%&j$XX2)PwZ87$Hy5sOT4x0DfO$7XH zby?noVIVd)*Ki93^Dt-6ztwlFX6O%LL1f7eB{_;687>y%#T#MJ((i&j7=lq`gg2C&Hc z4sz(ubX!y0*h!TErw}q*>j3zCL6)vljc2G?t5?2FWpW#E-uyN%!|vU?J&9)TZE6x0PW&N~Dn|R#U{$#!zH3ZI zFtqp_Lfj~?lP5MO0@A#|gmy-wupZR)Ss*Am|vj`;xa^5#W`J0Tej_IN#IH<>-v zckVSsH_wXf>?6K)f;&6tL+(RBk7PK*Dwqi3DuN9?@`Yjqnzs=Y30g4XI$FO5%X@9g+} z|N6U{{@05(3q8k92{^@^V~M-s7T7xcKRmBMwWIw^&>Xkz$?Vaa*T1iYqlke{ShQ|U z)`c!5h1AVwyFJed+Kp1(U&%}F*Y=5-NVv$F-jNxlz;9GWd&YW}^%VpfpgfUeZ6hxk z=cF|JY`^S}W7WQr+z-Nt?LQOxHdbW}hmV0UPS7?@s9e(JH}~#@<+S#n)RYGrF1~89 zI}|mWyCZe~^{zjXgIx?=M;*Xm?fB4yoYtnFJ%AivRV2#Sb!;>QTc#JhO|f{&8mqCP(Ia`bB-D%L=;R z+A~7N*Qt2w++PkU#T@<5>}0*h63Yq-?VEZB>;9OWcyrwBH~far?SIq~lh-9?DeM6B zSyS++WIIV;RQ@-W;yqU`cNF)hI{}UOY?db+4+@I^2q^z3+<5{QDt%_mE*tfx%#i02 zzsk~iUG~{+x@c1VN^#U@Mfir?1T(Pv5nXOFCe=0m`oHm~N*d^x0C&RMLkewb5Phr) z|JPCNKbUjd1P(NowJQPRhF`SUv1o=kb!j)iM@B|~n2N{q|Gwwn{>S+6aUPz;nDcg8 zU#x{4v>pI`22#emIO%*V$I};-m3g~F(plofdTfr?{^PX$$Z}MEy>RK$u`UrcM%|QU z5jwjA?d#M!g~Vz|Ya0TSkDhVMJ!f;0K2_eQqoZ?m`?`+l>1od=KaS;ZXJuPa420oc zE!S_fv1cbHz3saCO!Yq#|I-h^R^8^hS8(^tWetrww%{wLUpA?E>vfd-?IaBT2_@Uc z8C+akbj5D}&2gyL+d3EvG>!;z3P8`Vp7O`xaG)|k7Kp3v692tA@T<4)-o2~$q_wqG zZb15P)HUYlao}$bXh;!*c-g~cE^&~R)hc%QcL<$RctiDeiCH=qqwWZ;K*2cd_ldu$ zWAUS9`35#sUhqE0*Jhc%*M=h^BKVlaAsuypx2bV-SHvrV+<(i@+gDZG#af1CTnbWQ zVPQ&qYlr_dfq(bF@9UY&%uv{Mz6B`QZ>(>f_o?^#-%QGXKkk&usiQHuCPLh6e*A!9 zh!&NWV*4+d!|Lc2nsAlg#H`--b_rY63@)Y@X%q@&_r#f==~~cO(7Nt>7Me@=Q~uoGy3N*VmUeY39)jXN^ZbT7`Xi$Ecf{nhLYj z^9Z7k8=o==uUd0_Whd%zf|r-t^uG@DRi)JnpncHOyu7@qxnc$S&LjT<=RN`yQfU;o zMpt;3c-jx82+j23a4^>rwv+Vbi2PP{WzS@`Zkg-l4xpE(ZK@$E3m{B4{;hN9kT;4@Rx7Gxw&nZi*c91Z0wp zhlj_L7%v<`XWf^5XBbkBWgT~nG%M_L9trr>6JV_gen301jvj?RcRI1I+4SpZO=#v6 zU=&xHZ?(Ph0+7>B(SJ?tPa5}^nf@~p!Grf5U}dF}u1`gaIGo_(B70?>p*K~DZER1THV_!F&iR}+{x9&ebAx0##!2&sQuzS+n=iw;=&9%Yh4%gf z|4cs0kg|7%H2G3M0jZ~nESTu{nr)m@HaTDoqI1R0Fhq-4o-nHnSX&`GG&_Z4$h=UN zMn2l0(^lLrQvpgH_%5_pu*BtARc>f>FfAw1iP(f~P}-;_uWD~JZ$^67*ht7IDk`FZ zPRstBms@;~Zu~sA=etN1NHJb%F+AOQviM$M-={zmS^Q|)nUP=?PFAcymhwML-1m#W zOW(CUFXB?k$0W~ErYr%mUBu&QFX<<9ll%s*Erz!kb*HdMS}#DADoUVn*t=_V9>SVo zK2xl&*U?rHkU z*8n*ngAQTs2N&92Em>9gxjU@Qb~VLC^dsmSLX0+`^kBc1IB84IHI&uB_I=JM_%04| z=0|tZiGgvZw@(+V$yl_pmps}i210L>#-%&QApR9el;s)CO8Ok#WYnG)C*Gt*Ii%!Rxm`B82w$2n4`E@9ml9pIk=@z+`0MihNOV>B z0j*ZmJZN}!GAZ}!i!&NvFy1L%20Uz)6}Unly0#r>5YSIj?CLnC|N`Df-^#Ef}6=BACUMJuV_#2HfC%fp*8!0&OGxvjReN zI?ZbWhkfj450*D1Y}(L zJB=C=Iy{YCfT?;8G(c2V47xxkj5|2P9eef|dxvB^LYJ13zD~Bp`$`k*=(oYk>MEryYA6z#k~!3EbnwojeQFN)ixRdhaN%4yAAP&x=3rq@Iyhd5u++ zwAE#fTLfBVrx>KHMaEVuT=_R+@CTZxRI;2Y25BBN5S@(8tvO|6o1h%DG5Gi(w`(kd z&RC`aj={b)K@K*TTbh^CCF1l!wWHHU%;MwH@RgJc90ByXamnF~FU*i>lbKOQ?`8m# z@M*hQx4^cgwie~QFGAmRG;+!YtWLiy9r76;; zRy6f*f|P$_$KY|yXQY)hU9dLnl4n^gU-86cJUYZ9zgm;1;Hxaf0ikc9Zo4zG@+ohn zTbBD!dTm;441FBp%;pozT7&pVgS6f0`#Vr|Ss94{MvSOU6{lk&q)%B^Jn&vyx3cy2kr zUndMU*&ORR*OQOAcb>SDH~DjM`Ax-TPb<(<8e0AM;GCmm|6r=f2CJ@7heFWC>O;U) z=2enm9HncOR1N}uLSmXv=3dnnrzd4Xe^3k0I|JGJ%}(9&bXuV!@H9Jttf8!HADGW% z#cQcHUrnJgmTsWo?RERmjRxVn{!k+&_Ia7^8AM z^kwJxU~gZsTuvTK+$YJ6jR-yvwFKBMxZ)!Fj4mL*eIHP6Sxr&B>o1M4!tdrDWbARJ zQ7QU-%7N>Y;0JLT0n}5m^wb$vp#ZE>M)RQF^-v>B;Z|$&hc)Hjv&cM(eoK+tI{%sO zg(vSnDepB+DEGxfNm~KpuKACJ9JFHe05@{m{7#L&;G%1{Qe|x4Dv`)L3`}#LdaU~p z$ir2Bye5PztpCdS^a!4%pqu-%8KA>0UtYP-1bW3{`O2`i2Y9Z<6K-q&ETg2bSbKX7(A`yT-JL{ zN0$>W69-M(Uj2gaE1VK$Vm;}H2X^byZciR^J7eh zc(-z|{N6EzhG&+JT4b~AL|UW|5S;gas6Tu+6IC~*V4S(#t~@H79_0|Z z15oU9S;3l)Hc?9#CAG_vg-~w3L*6~&n3YChjI@Nr`&ap?#q{2acs2{J>39dYl|Xcq zDy}q^yGp@HuZECc9uUGRAGWCZ#!aW$()zz6tBs>8Q zGYkP4EuzBuFTX-k+;P?Iw+e|bX8kh+h@Ss62l85 zJ51y5Pv`aoh3^DO|o_5ZMq@T;MDC-0X%rppc%ADdoSPzqcgt=S|k4EUnDZF{Qy zbj{nOf?-Qvf7bw#)Rx&$7OpGLA7lt|<#q5IY%(46$;ek*RP&O@Z;^W$-Zr^Ob zSr-%O1pSp=elzLORO-@_Tgv0=6Lh7n0~`NoK4-J;+$Y*(>`9yPb%@)zp-5Tn*erD& z+F0vy>J~xD?{z49MAr*<9o`oa&8-OCS|1?daWpUK6&W)QZ{}Q7*?rEqO{z&vVVfg;B3goCo1`ghWV?3v zCqEOy9RawV!T@ZLdjgY>1&C52sJP8Sdm)fRq0pjz{Nc(3DIZ^3fv^R;OC~N>yJrF+&X!-0g?4g5|SprkDj1n)W@pnX@}+M z_EhA7@{39ppQFpZPGptD3XHteS4QP$+7qICa&c}=t44MV=N;k}$CUnkyvcox+irpK zeB)|02?wJUwzx_l*Rb#EVzIY$2d7?}T9IE4_{^`*ba!`amdF0a92d7fc888~-*6`e zHa51JZRy?!S6Ez+bz-U%61o5!G8`9@{{w*vP?=NOPCa>+a%={dU+U9wXbc!E;I+G* z1qR!;%^gfzTn!gD?7PQa#iwX)f{4Agxj=N0N&uJ>sPoI0FKNtCx^%=CE?5GoA@lr1$enPwht?H`;FO8nk&I16k`brMWdliGs?3%^nNJ>spuT7-`!nhU)6- zV89XBTHZDczQ8_Z%H<5p(hlIhziSf)J+Usci;L7x-MQxYrio5z@vtc+(jXyVNVnj!Kw5GZGv{Irr*)v)LVq!=>`wJ#^X%tVTK|5}U*KxT zWIZRF$t;{=6~5RcCF@(`St6(r4k_d17mq(>910nVQ!d(0NjcBTPtX3MO4uGCgRk~e zo(|vsU>({!b=6Bl7ntL+0~?S5vsrmSpdBj4eyK7wH#f}pb!9poF>W9$B`~n!ICCuT z_U<_3kI@v=Z=SFjGt9*eIt%yGx|eQfJM0#eOqUg~Q3!PW?S z#q;}lhQCMe9fAK^%XsCq5gz3^#XAgyzBs{(p^}{EfwD&_4>;su*#$G*=HP_}JIg5M z_gZwMJjECRaeO;Hq;l@_`+Dj9m$DPGa(x@xhXtKCdQuARhknXw6t_fqOz;I^NrC$K>*m&l?=&uV z97TP()02Uz1Q5#F5(A|S0a)#H>({32jf<~5Z$y7A0?+VvC63tGThFhF6W2o*z(4Pq z5%r)7U~<&?zC!T>z<#dCeC?{e_8r|8^j=0??RmDPUfYP`$2{>+RC)O(=N0!3Aa#WY zb++U)LQF$WLru>9j4<$ib(>X`kij-`iBT80dRcNd-yNvg+N0TV#1R@@Kj$LlyfP##)g}c#0lc*zT)CQ`4 zOxY*ZU%EeV3VmfF@7xe5v2vAf-^_t@?6ru~KUa&YFy=>zG0Z7`Gj4)58!rh{SeOXA zMA)E%*i={PZ#eZH(ppyUJfg-%OfhQF-nDEd1LH|(k-=dAwttU9+p6Yju{iQA<%#il z&gEHkf@2Z6HE4g6rEVEa9x?+u{Dn&k8Of{q^IaVvwGHqDfHHLGt#Kf0izcY3x2XRC zFq#R3H5Z*-m@wDoxstE9K-(NSTHKoYJBP5z)@?!8{@%X6ThZk*UFg6!M1HY#8!^WR zJ40~)Ux$F&v+XjaJeldNs;cS%QlVhJ+tCK+thx z#^CE}P>xA%Suqfp6;tN^HVyYI-<8b`I#`8W!lA_dP&t|;eS2|=c#yp6jN}*FCqKuH z3zoNm{o_AUnNoh6SvF{1ol$}i0~^G2I)dW}l{j^oDQ~1_7nohPGAB28p{`m?kCbbH z`jA;(UT)j^QmQ*kC5SV*lQchzf00r7MRJvIwdhIA&x{T{fNdI&=L0OO7PvQPCTn?l z8MBX32bT9+)^OgJQEVL^!$~_K_4z;&WD%t+Dk=)%@^KGX%7}OEXJbz2_V)HJmijy% zAMj%4Xw1fjDH?5W3gb&CG7WgV=Iz~4$oA8KN}Dr-s;Vm4pvr3zfOql7L(%9L*eMVM zt3;|8c4qB1NB@R{MS~}w$?QRsTfnY|)O0~#hKH%3M;e_A`^)8AScCP1ugrTI%OGEP z?bivijN3@E9J2WA#HIU2hI%G2wI%jS1ty)1J5B6pJ__$ zl9cGuiV0DT=-Ig3oH7O|&C(K=(M;_$(yu%_KfbC8m_4wc^HAOr)K<{Pj0-*BiLx+? z6B&NfarVO6T7F;<)^$0re@$HvlD^s1)1`~m`>6(~@UsBaPDk+O2^O5`Cs*yvPh+F3 z!JpEnsyFk8eQ`lJ=kelL2xb2|#g}6F@~lE?v{gWs(hVE5G`oBd*e`HM>5ge8&j@A1 zV9CpKebKDM`Bu(@%(D=(=)WZ~&fYvFbQ4JMOxnk&r8=_dA!s7c4XuNnQ9QSZTB34~ z_-^S}%;%}+836?aAepKB(_DB#wUNG))12r? zu|lBupR+b$hJ3s|cvCVd|9mZ}JU zjOIT*<@O}xiXyueQ}x_yH$@?xvXlK{!96Ue(TA<{fsFDb=(c%!@pS#ywgU__P?C#D VW;7_$=NI5lQ%&z`-j&-A{vW{R%6I?( diff --git a/doc/figures/20230728-111325.png b/doc/figures/20230728-111325.png deleted file mode 100644 index 53aefe6ed573aeaaad2c8940a63dbdaa02c66550..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386745 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 z 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 diff --git a/doc/figures/Snipaste_2023-07-24_11-35-40.png b/doc/figures/Snipaste_2023-07-24_11-35-40.png deleted file mode 100644 index 742fccf1fdd00a1ab5677089e0ddf2aec95aae6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8727 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 Wspn%0Q$Bd819+tJ1W}@79`s+79ItKw diff --git a/doc/figures/zh-cn_image_0000001616913438.png b/doc/figures/zh-cn_image_0000001616913438.png deleted file mode 100644 index f36a02570f611f1cabb87d2e0d6d0550ea3fe13f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6746 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 diff --git a/doc/figures/zh-cn_image_0000001616916278.png b/doc/figures/zh-cn_image_0000001616916278.png deleted file mode 100644 index c4b0a4336e59dfc6b445bde282f6aec7582fe066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10633 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 X6(oOs;@SmAEHPe7D2SK5Gz$1Xj8ID` diff --git a/doc/figures/zh-cn_image_0000001616957408.png b/doc/figures/zh-cn_image_0000001616957408.png deleted file mode 100644 index 2a0835b3c57e24de75bc5e73209a1787d5768307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36003 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 P{HLw1uU4XB6Z-!FR}ThL diff --git a/doc/figures/zh-cn_image_0000001616959836.png b/doc/figures/zh-cn_image_0000001616959836.png deleted file mode 100644 index 8bf1753dbcc2bbe6118ce494c8657797d04e551c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11967 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 E555FK^8f$< diff --git a/doc/figures/zh-cn_image_0000001617233250.png b/doc/figures/zh-cn_image_0000001617233250.png deleted file mode 100644 index b4ea8f87bf29aecca9cdb2ff3d01a56a5cef4fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42024 zcmeFZkbyS}n=q?B)Wp(z+nBq1?zv$d$SRCV{S1Ma6S{ameYi>-dX zOV;i_dS|qX{4btJxJ1#2f4YK&<@Wsf^9;G%F|qc53t!(wV|gVdcX(-GZ@Jqui%!sv z?8eQTeZv`|lgQ~?SXHi4tG53u&uQuF1 zpR2Vd$ZC8!oGwgNKHC#<133?q(JaXdhUgWMUnOs|z9WZda$nz)pd%saL{5G%iL*9M z-7Q*QU*CA$>1%V(6>RMPe$2oiN&kl=n?F(hX$J@Ma8QZv+lkT5&CO$lHMlY~)Zafp zKX4zIJbZYIG#rI`(BRO-&39WpMMgSX%Kxmbk6PG?8ujgaPlSz)&3kS>c#QZc!w*k? z`p3>TI-8xHe(MZ|BmL-)M=Q2kR!~qlRTeGUpn3NeU?i0~=+K3b$|N?!=Hovu-3 zh8P$?FI&<%aqEN8L_x}8u@%tIes6?MU zSRd7BH;vcod&Fmi++LT%4Q+?T779B5!`Q`b+Qhcd{k_hFI2L&h@|Ay=yZ=10{{9}7 z*7$W36CLeS6iviZz~AAGHRa`& z+WbnTX=|xxi~Ve+6)Usu+j~92OV2P$^j^PyjaTO|r?Xpsw&l6x^YY>^hSn*g zN!v3D3~a(Fzlt_LlXs7v8>#jmF9k-w%?_Xx6cog&VrOHUVCTPetJ9+JV`nGYI06{`?sUck=w=c&X*D zS&aqmLsA(K3ovWTcCnwF8k)T%I+?%yof<&XN~mCb3iId&z){e`vB0ksDW zm7AM;cw%4G`s(FN%&fQmaHE&k*F&=dFO7EHo;T~~!7~=Cg00&NcWZ2HEQsr2^Vo{K zRQS#J0T*I&ckk|hyr$VPKCb;%JyrdacqRAimHcR_uI;M!DA?qWHYW;Edcl`Zq9s3l zaGEOCCdR=OasB>s(XYjGoBX2O>EW1Hrf+NI!w=+8ECrn(;S&*s1_xtA(Mp!yw=y=S zycpUHcXE09R8dh8%Yu(W%yUaV`r7Fh%h}kNmb{{(IqY9w%Tl_kva(5^;rFg9@2rL? z3knM#fBzVc($l{C(d|~EDjMqd`e<)g$kl3i)1=8w!5UM^)wNoMgss5z@9}PQTpTH? z1IjV46qh8eEG))Gw?fN zLQeh)ig&tR)maiDIy!nxLIP&B;TtH}lnfy1l(0srLK77_ym)?YD?gW@>pt8ji`AieFh->3zQ68<|vA6@LQ< z)5Xngg3?5A)s-4MTpqnpCp;#GINl=8sEXy!pFhZ(2Uo@uRK)zER@CF(mi@xd)V)I{ zww<^lA|fW1#>CITp}y{_Q)SUmY}&>GzW^@;9V#+Q|5T&iV{2>d+qZ95_|7J2ySg{RXM(S^QMhf(VBCTYN43rz^a?Kw|5GYu79dRvbu&D zk%kW(5dKj2=Bg!gv2agsc0u7SI1a5NL9u+zPfku=bk~?Ze);m{hQuYT+fUsXx~jDF z@R<}5R|Y;lzITtiu}~eQ`eomCcHY3A6%Ic>-I^{#Lp^A8>RBC39&h%ve|EAQii3~; zvEw-gFI0}Q0e26N0zQ>F=tD2s+og>g9OjsgMeL^T)Ise9gmLmcf*XZG)*>|x4IE&b zrDFEv#2eYohbhs~M2b<=;VSVgM*3N;t&)kSn{Tu8N=xye0^Ws^O-w@aT>9VnWa$BF zTHW_(YdS`?Fhx303Y9qbb$pzJmX=mSr;6R6JV>3Tdvo&b{@>kp46W%hDA2xtc5FRU z<#J=UKC?rhTd)19w6zo)aKYQR9t*VUP0m3ojW+F zZ=0Jcfp;H1q=9PUz4o+gqEL;5j?Q_?Rr{K_xHwxp50p#zY-e{j1|Y8Y-urnYy8(Nh z*dkuPGUmeb#JqmJfuli5enso|XU=+mr*>2>S1YHkj_kH(*3{YJ>F@P@Xgb>NjiNDr zP+1vwKljBljza-CKYzx=!eZyY3zy#uJHJ@^WeHA*99#U*0$t#_>zPAYX{pQ6mVPE- zEWh>0$M%1h_6@8pmV-%QuV3daHwLkh3A3@`!Kx`Q$A5b-bK=a@)Rfks-0(S+{L~AM z+Zt&v;mi(q=Hh81Ucc`8T>a!$e7}~Vp>m>(XM@w%*Jc5yJv$b5=+A>@%HWBj5*6s- zc+j#HVE@(B)Oft28BOKKR*I$-6rcLCxM*4y8S@uQuZ^#HF|)Z@jKj3$=KV?&-VdgZ z)w@le+e!L=X%&CJWMvjoH8P@LU}W?Z+aSq~^jh@kE#+%JKTyM`6u@D>U-^RuV6CgG zYl^5l3n879gMMnXlkv*X>W-#(6?-=Xcc|C2I*@}z>T7B2m!_*0I{i(|7zS9tiaWYsgp z^w;C!3zeBj<>lqSh1@V58wg5EN_qu1nFKJmfqzm+NXW+ITOw26P38*srNDoZb|Bafrc_}!UB9~GhprB zbwgtr);Tun{A|0bWyN|ltG<+44z_3U=+$sGdXo=N2~fq8`GVg>2xDVoQ915KN)yA| z5pp$T=6JJj`n0^FJUl$=(j=^{t+!5!xiC=mFH7@RBNEQsL5YKjZZ|wuXR=YFY80$gxcm4si#lsHuR)b*q--$Oe$>Mzw~&A} zkto6<3@m(`x|Xvu-=Q?YtFU~SA99Zl53i0<-o2gIH1LMTwT@9OtDM|+ z0hr{ker@)=8h=|;(cGM&NIexDWn8OP<8U1cDUWDo$cGoWY*ab< zuk$(U?8gHMtPzDa~p24-X3lr6QLB z$a@g8#EPc%Up)P_fZHLUWT@*+c9yj!ucCr0b^7BP+?leAYj`0iYw6DA4ef@y9SNjV zE9uT{var+O5dwO;`mG&}Qp+=@V0`OpKYu9fX*f3`@uxdMZ{OZNn!11NN*^rjQ%yC9 z!1?lW4ze3JCJFDm|K_ZD<;00SJ}UJW9}t@sTcUtwKV0|bDcoJkGu60A!6X{-r}R=% zwD<1aJ2WEc!A5bJwW&+nD?Tyoik7|%b6+1>2GC9ulz^Po)rgPQh-86hIb{) z@0Vy6eiv{Gw4f|!4k{rB88ez2}OB^ zSpE4vxVG@`-_840-AZvv*iAbEUyna#MaJXnWiA&Ur}+6AO!hh2>M} zsvC7EP_wj*ggx1@@`K`Yv-Zx#&+@7tX`{5?47)?tM zB<&qXxEM!4(d&8wrH|L;o6OEqdp4~XbR^s~<-W}3-dT;8vUn9NLq4!)kU_wR4Q8`Ed4@DX_^Oa2DQTn{Hs{cGM>5(2wS5%Xl@E^L;e z&lyc>iQgKHI~lKY`a17msmT(53!WgL+HYS&BO104Qf@UTgwtV zV50h@{1?H&+D1ky$6N!WqqCdu%TKe?UvM5tS`e|>A4?7=!mockQJ@0r1enq%xNFGS zj{Tl^!_5pALr zDf61|GEhv-*V|i<56Mol@`#AsynQbt=WnjWzw_Up-@7sb_4nVMTbd;#Du&}QB<^k1MuNrr&JhqvfoE$ohy5M!D zZ|z2J0sJT&mD0w_z4tw0laQ1|D}JU(dhMDI28~MAQP)-O6wcj^@%$8FXWHG*A9mX! zU?okI*TL!*;WBw2H2GHZ$$XtHp!>Jl*IwxiZ!?OC8Qaf&hfXdqo?JPX?3>4{RxS$* zd3Jy?E-eku%*+hc0q>GfQ4M|>eAQBw#PM|j$_RANA2d{wz5+rHpJl8MfYNmXunB4P zJJtz#Zb2hhHySOqHj-IZF97|63;!lhP+P>v$Owo4GCn?{@(d)->1YQn!<`0yvoz9$ zj4F0*D~Z|HMy3C~nKcWf3G#fl187JkdGO-m!gY6165zPqX^^B%T45p6?c3M@F+ss` zad!_kf5~i_5FL- zmz&w%OdqZ=iaF{qjJIbyt$^xU&|ZsRk@iZ~NbUao>8P!0`~6y88&-v8(=91l zi)ae9a~0**=BB1x&+VB*5pCt5e;iUqoH8v&KHSmsne=|vxFO|SRes40ngt|Uof4r+w=k!q5Dc%0I_>X!yb zP90*0>fKx9>h?#H!?DnvDNC!^ONWe!El1O0&1drFSef}!-!uyPIyzQ#KGbwfy>gZO z8!T1<<_|1RPEJ!Qao&aTQL?i`3uNEFe~(E@Dr$T(?(tqP`?>MNspsaz6{{C!K*3|5U3R?2}nT!l-l&CZ}_cp$m-F z-(oBYI%Yt5wo$}|wSd43BBLfh zrjfjwDKcVZRxKorii$$o<<8Ha!}o4l*duFpcci{C`T*)bDuW>{Xwhg_SROh zv|O1%g*W+iT@oBjMRD?)I;0kc$jM^!kp|duwY9Zj={8{GsLnMm1zbf5#HKLM(90C! zP|W|uL1iW^wD`oYDZ6@jOl|Mj;~%L+bA??8dW{B;)+(+3@GA*kh@w{m%ebBe|K0Dm zEyAU7_iPR&hbe|Hx@eixB6Z^8;^f3JxVgDAzXVCYiJ6;^q!O+(KS{^qQ#NgTmMYe4 zWR53%eF6n=Oe89Q=Bhtci4g`L`v>Uu&WbY$#BUb?ET^+QS`(X23sz=&k(o&&5_MNW z;fjBfbIZPBd_NOm9q>3yOG`c0YO5$xjlP4WkgGR};|q8dig@3D_%M0k?&kK+bK3xw zbc&UVSIq?tacXu}*Ir9kEU5HYa%(21=tlq)<|}IXmI4>mX&A$w#_Kh+r36F)QEKN4 z^)xTJP+PmcxhU4o-y7s^r|0C1Tw|tR+Zf9(w8TUmnSPkTT8Ok zXZWrgW4C}DrZ`g6)z$_B>|kSK^FGxU@G6+T(xf!8rXIo}%tnT1_u2_~^Ek6Xs=AeH z>%D9#nycg-GElBP=lLz0Hhz8mK;BP=gSi0|1$08dn6kp7{LFdb7I%ca-f1oAMN6oG z0+>Hw`s8mGXd#j@ZR-G)1kWxBSid7BshZ5s1ID_$gB_h+5LRLfH=v%jL zi9Fr8+11^>N!e7g{X1#k+39NX{)8I0EEDPYTq~=Zo@(KQc`B8#lRR+4;l&5NIzGTG zML;nF@nEn2b~cJf^2eM`DpK#ET8%e2J}|E0Za=RX-*u(7t{&oUJ3*I~m5mu(t;6@k zHt|m>`%zNswQK6JyO?QAys)sKewI~u{Q0eBHun7Svws)Is5i%w0M^1HBNYq{Q%tkD zWD;YzSXpuTt%k-v;2Qyi$PPHeg}niQpj7_=+bB3Ehn{k3`P;W3sJ9efc~8%dwmm4O z(tDbo#9Rn^qSbMIo`NmPXbk=EKY6Z{ESmNO%7{apm2vS{#q;7hoe9335f)Gcs@ zFN`?80>l8>_R!}T*jsgWDJvZ+Lz4ikuygRF1z)!L2}}=de*Z2vTdI;$o=af_UF2{; zK#;#wnF$@0#oVu@x*HaTlc{aFW?{}eLr2PL&XL&)KehHd=kiNm9J-2&m5ot%Pme;C zx^6{oKtOfM0J38>#_PK9-c?L^i@$d{M&xtcMuOLp|NY(i zXw@Z*;-q(AT%Z**3<sjVs*EVh&x)7(Ej$d4M1X0FceS?9 z7CF~*nV@uG=dCwF^tTGAd-pAX)g`wPq0~$74}X+t-qL4?9sBVlJUqO`541wDpYLJy zI_j90gA*_|dbXv1L3#Jc&aUVlANzG2Oh89?;!2tVItQ%k)mY?BwNl$Pw z(OXA#{QWRJQ(Q;q#weQ6Y%j>>xI#AhsW-$vSdm z7BbUoJ?6YEEiHAGx}!B22?-Xus^OsP07(JRrqS>or~nbHPTOn$__i6oIk-s5b0yzp zB3*_}htlI84CQ3vxOEHdfAt>N{D=+=g^-b*Jz}I-V|AwDL5rZZ{~KD#w923Hiqak% zS|59QQfW#+Pp~xDS%8ZN* zm)~m|2}wyHago5i;q%L{gB6@EQ1)!M^*AOz9wS#P4B$M5*6Ih5z{{37K8=$5HP2IF zA#6cc+WiD40{W3toHIUxhYf43BFDGc*x3=u5~QL0ckf~>@Y!DaWW(!MH!Ag(cBDFC|j`=%yYuH;EHJ7D-J{MJ$Z zGYm48PWS0>j&6}h>@T>FcFxUF0NfQwJpcKnvHDRbdd1f;0@sth$MGE8L=To~U6$p} z4+gnWdapCM*i-e`6re02I!|XX_7nK4SZ@MS9>DcL%bBewl z(O`>MXs;+i3E8ra3zP}2HZQ`}Y8VGL2thHFsGvUKW{q#V5IlTb+9d=^UGqIPdL!B4 zL|Z&S1I4hdrpxYc@`4)K+#4mzry;od_wV1yowS$WyWwEIU@4nz^Z#pSbUTULj4;P` zOP`*&V{$S+Ic#`jgb)}CXmR{%MJ3C9pdtZKnLewOp%03VjyB@csF(#A_wihfWy=#L zGZoz__8h$YOOSEBd$WAjC~BAJbkEgLiPuFK8H26;-8?-*wC;dG6be82aK`WRSr({u zk9uBT$EpHE@Z)EALA3CqcfLyg>6mEXu`t6h)@$Lyl68q zRCnddm6P+|quOR>2=!A>6X<9AP)un)oF@4G*(o2i^>iUeVj7y^LEm|@A&{$pQXw)q z5Hue98IH1@u(D{s<6no&U?NEjt9pbp)Y#U!Ja~d&Ic`qjXq!PXa)q!nnTc zaC0(UVtgu3AwtW<1Rqv02=gG5sI5=DsDBsIW(}$q`MRf1%Ht$bDt*;~!9fyA%K1B* zp1P;d1NV?qXrlhl`Nr=Ak>O$6{{Fu0(+`(?|M}iF)D0vrD}rH9f+PWdK$kYAJ|6kc z3D5U=RI3^e+9|aCM?jEM)n9@22WUllBfIB+J`w)Ts1Q@j=X`d0TJ{cE9+cy`UsyxP zd#?(~$jK)XG1M*v3nfi(y#6l>kl$WkZ3{mWg3V5bM>)tvj5BmEbr|^xMfaZR>FMtm z&Zs?7&3Q4Qssv(0ZKK4q8Bla=xaZ)&QEAfDC2pXr8w~1~u?g**PZHQAk6eA1!AG=P zT?8^D;<=TeAg&3-m<*(eZ#24WiQqH7GUO2Y&=PTjn?Xp(psXb!fh;0n25jvLP|NQ6 z`igO5l$C&LMUT8&S!vcDm61VRJ6KjyBJ1E#Zcusv|15a>HvJ*(9QR8LPG&MPvN24T zHTw8|Vk#;SK=Bs$LD^`&(kkjg9s2pRA=&lo`%%e>iOb*&TP0%`&*P{FC>6ughVIJ2 zrTKetYkS*u=QD4_Ktx1DKI;!$km$iJty1t)rIC7e6ZCEV-4vaYk6@V8*U+SQ0l)Ta zXc|oBelWEL`=zjU7>b3hHUgXE>YU)E% zC#On-15S7a;iUpNNeKxy%qk#Q0Ys@+u7>`%PaiB#KdI7T*!9?BvZKW74QCn;9yH&Q6xhq7cSo=9stfXXxH5i z3P~#>aEv{jFbp>SKhWrGV*`y;Rq+7I`1Hb}t`7Vc5b=e&-$4!7a|h_Mm4z9pUG?^} zE^vfJUTD8iJMH^=Agw{SFt`%-kB(JL}jyLw$X?dw?+`t!(`D zc)i{pg@&)yjvfB91x5~aJSI6A8&Gk2M74pEGTuWG;SN?_Hk z8-YS-@3>~wX9s)o>dEQpGT6_ZJ9D-5Bi0rcdw)3g4-WWj)r-dL0Tc{combHM$M`c1p3v_QJ zOY&-}dXalD@37Z9;CNWaF_cozL=lRnfN7rPo21 zIZRsr`ICT-jt)Ba=7Qoapd@cmK7M|T5)vlPK61IlaL0R+I3IZYdK{OYK3L24zPXul zL4Zi>XR{x4Iec0P!)+6g_MQ36t*t}BO1;TZ75MM+y~ieL(Y?&l={2zV!4xg6}XZ`7uPdo*4ed8<;m)!PK{b-%&$t-I^x;_{wbWrjo6{nZ7yOj~-Yhy>nO3rfPo z)i*I|ePcsew}DRTS&Hz+@y?v? zTb(?uI~$~G^75E~=adFP$H@QNZSvj)4U!MJOIPvmCQ1@qsFlRmkXHP2zP?W4Tl>_y zkB?7_7>MRmB?-mJ!U5;r;KtDe<0u!n5K9CWgD zN(4Sg)LgZ*vtyfYbRK2bbgz|=DU{#PQC0SVB+R?o+HMd%i76;->kzMIQx9IJ?(GC) zKk(w{#w#K^r@9spH8%8Ar?TJH*7B2*lJfW*SeW_*J*Dyi4Z)L**}OW1>oLHQWl)5? zcdC0)#X{|j!O4}8CmyWKKtSr2_V)K>!4&>aO5^NK(M{7dJLRRayrBPwWdEcOA*3oVCKHfxGKVMIqusKT~B^RXe=;P>Vs>w>Zo%9! zEmH@**op`YSa9WmSAoe5&Yzg|YoatzBv!zB>3DJFDyrDZ%|hte!4DNE*WII|n)Z%q zJ6HF&%Bu3f6gc#T*1fmrw>xe$3ABGB4Z5zFL4|Qhz{Q!ZCuTtlY{$o2QzeJ*tE#vG z%iKHuPYD4vNDHt7ltQ3d%ZSNS^Csp1bhZfaarQ?l%-U&@iVbW+%g87k4F44{D4-P? z*4tfQ^j;x2^B+FwI~E)i_t+r5Jlp0D>oIru{O{TckL?+a zL20E{{NaNnu7|IoLqp_ha!Ec(8umme@I=mkxzHcY0Vp0)9#L$E(gh$0!qmqiXbD8w z^NWkvl$1X9U3jD-9vd+u2a5rJ9pRvnzwXxBPO>zcRD)V^a&~6N+0V?vqC-(#UEM;l zS7$rP15n*=_)DWR-PaT+aO@HN7?e+MgZFRV;Gd0fn6+gz&JKYk$!j@4hPcG2Aka&{ zA!1|@Vy)b-G7U*iz5#l{@ZZRS7JzOTh(Ig3SZ{y7<@bnq-7v@~W^lk;I+_+F5|`Keo=bw>-7MSlY5kB}Fzj-|sy zou!B6n}WEUpjy}iv4pore+zVM^9LDK<>AGT=G8r`v3y~q2pWdGSMVx@A4|cAvJW94 zVI*5sO-)=|FnH0#cp+GW{8n*QB_+A4w~b7ZY|&z&@xwv&t*Pnh@um9@9)QRk2GwZG zgyBk^Fy=IPJT~=BXc$-<57&5R)|9EV*%Iq60AX)d+T9HnTJS>;^6jl*$s1Z zb9gMVNlBmBcR?rtF;%$q2N)@oyu7@7zkh>}C#SBCpPizfgSd!beO@Oc1pafV^>*30E(~QX-x9)*#!Il5+D6r63-P_}aB#XeLm>BkXm++Yu2tU-dK)qRpb^?}5%K?}ck%VK=BH>iLfvBQTK;>9jz+nev zK!zoL`~XrCu3J;A@znEh84wSkLuolq($dgGLi_+~iK!0=(=42ppFV!n8vF{I3khK? zeDI3q@`()u|AmK@&u%0`^yEjpCJF_=fOc&-JrtG`fY`kOao@u``a<~o&@9c798u7} zi`_uOIvbMGvN9wyXzBx?DDRXCpBHHCydq>TgJ55fnO7tJ{BmM46mSqdC}|EE85nGQ zVDry>S%Z5xZ0EkXxQIhYs0jCr3@^kWot>3c*3Pa}yRaXe9k|qug(iOg_RNfoy7>$} zww^+@8l$dQt>3RFmt>Imy2^j-@j zTBABTIuut~K})^~5e2wcHh=*eH6mo|=?orENj64CaGEK!DW6 z-%pWLk@NCS5RhpRz=aS(q@DY4s&m^Z76fpNcZ&rfA%=;EhsOgLs4Ur$AgxtrB18KQ z8E_>X z{F{#qe1ZmI?=i%7bapO#p9DNHMeD>gU@Xg1CAv5`INwfrVw#xC+ai zZvcJpsYS++i|?*@&}idf@bsyWB-9)A%#h(_SOa%hS)b?UGjc24)6pS?lBm61$pSs> zKYEp}rluBLR#rCW`0H`!?Cg!IwzJZnCY8erDqi!K8cKq5zqtLvZe5}Up6_D|InK*l zqkpUeSq>B;5)zWfIz9y}nyRXDK!PEo*V5W*ONfHD0G*GLpoh_g8aqVpIasIV#`Snm z3UQ$AK|py!5Z2Sie0^E}s-S=Xh@mSH+-)*oRv>P1t-OVWMGnAvmPG6zv3^b{qNk^) z-rvJ-d)Mwkm}W17E>f0S@CM{nU<0V9@H`jpKuGYkXq@HiXsI(C$dU8_VDs_uoXXEq ze~zD({ph>^opH&LL68cy!uTLFg#0}<&Xz^+M1NxO6{ejgmD{{pczSf1gzJVPh2wD5re z)x)jnh#OgcKj#I5mxt40yw)IV(GA>@7xu#9M+QN`=|>`sECs`y#&tLp6ck7j?sY`O zrVk&WdQyX9!+0ZOk82cV3Cg$2`*n{baNQgA$6pb&79a~Ps> zwQ#(=yfUN%X`g(0lY1|NsbHEID!V+mBdEmCKXJ@zNVE>{4YKe(Xl@3n(9DC`Y4al- zwj79^%g|gP7VQ9()r+%V_Hh`<0Kb#Am4EcWDMOr0Gg^&_)O0FN3YzI~1j7lCv$0Zr zb`WWvK$hL(m65Tr>V+Xbh+LzCxcpwfOguKm(17?85D*lXmBE5!2kagK@n}j;&0MXq zVhU7PRFooeEi@(Nit-arP?`!1`q{W zEdRR*VXgIOk!ruLrep~2H5QbXXdgK_IRgg=K0xmmjg5`k%%LkHknc)idwKU2ekVv< zXvK@!(5^ABT)8DKPKExwgGp@?uDhgbzSYkQWUh#$WJpwjprhqeRM!N2e?mS8L`x*} z_fqZ_cquN+U00y@zMctX4fZfGq1Hd~_xIn2*kBh_9phP3@8v7L6|AbCfhTP0WPniH zcJloy5E7~_Xc@5TwK&T=(s;Ho~10<;-&me1Llse9& z6U0W!Bp^Tr77}W2iCzxtN!$jTu<#9dXhOzW;9Ela0EwlcO4l)ppOt`qzM(G2$vOOp zle_9c?fObR>|9q4;iVcwmL>ZrNglqEROSaxsFcI z?WgiAM-0&6N^bI5;2780pn*SoR*CFWV~f6B4=*oaV^f%w7=uX(Wc5Pqp>8;qS`=j? zWUI>{29e+~F!!2GwpUg#f~5OFR(++;lE3@*mU7%DBnsaV=on=<`_Y^?(oTnH*h+$u zr|^f=wd>avtmC$jUsBom7V26{gCvByO$jmOfG9y=1{c)Mf&!-a*(krGtq??z8DtlS zNDHJQfrLTvQ+V_!N9B?-Q_K^IVpmS5#zj>?XdO~JF0QV;{d(-A;fPLLVTqcEg@n9L zAc3yf9yzD+Hwe1Uilc6jlk2RGBpB7fqmVk^yW46|03oi@g;dJ#$KWt-=)D6A-p76q zj?Y)p0uC27!nVa0L2@!}qt?ZK3G7pwSvwO5o}DL1mAU<&-|R!0Y(my7^IoQycG;uH zk8eRx)keohw@7__ZVhsivGMVD{okq|EmJ~d1xa#MtRM+VU=NVrghaeU+$xdQ^l#Xe z_46ixWOB9cAbIqUALU_trcSMaWr|4Jwnnka=_M5v3Lq39W~QAxn4KvQx^%3?%zJ-d zUtc@)zV3Vm)DElBtcv4{cK3C{qbhqY?L_=-M1sx*^#a0%K;~0ZQ?11JY~?83EiIWx zvZY7UnT^ml9e|sGHZZl3;sa6}Y}Ic7+CdD`$>$d$jgSLTkYLz>130asfdM(lwN3(u zb7W_KentQ~0esfAxY#ysNeG!xfEjn#*kCye42CM+0LP|(|)K%t#>Slnb;SWH7QY2D#{hqN4ARG&b1(w=q?64N!4xVxncD zP_In@Pj(#38lV{@@;md%JPr1g1Z4cD$QFt;s4{0Cwg=FFcFAu{n^Th)(`mF+UXhoF z4zEDWr^x8?kk_J*7;Xyi(2Wd=YY3c&WM3Me5uHUU;PJ_(`5&(AVB_(u!fqwDJ{a(6I zC_aE|uz?7*ied+x?<>VKFu*E+I67R-mFF@!UNLiZw%1^(MlRMu0f69R$?rU=f6*|Y z^$pO0qVQ)2uvfEuw^+BTay4TmJ-5ixrHW&y!2@Wk|^WA6ectd13!Ek2HVnSsmF&kLY)^BERlVYD#PHFKj)yr^P+` zxkEKh{A-&(6^I&BV!NPsC0%)aqV)08C!KX=PfYaZMyn**(Lg1(Onk@mvvU1_V=KD2 z@JL-8>b9zuTlu`Q%7(B%fZYx-zdghhw$J=u2^|AyK?2nX=xw#~9zF>B7t94iRlG1# zl_BnRZ@QdVAFO}PuhhVsP6hS^ z1A^dJco>T-Fp$8du!_dBXvjgN6C6%Y<5ytsdaqKbRSH501d#!_;l@JH*n*H!!awM^ zTP9skB+hvX3vkB;c}f|Hagdg~IPwm-1SkdIloFt(#dus*pRGg+zZn=B8ba*$%_Z1< zAkztu#KZWSXP1CQCcPitDukKyjQbp7cXXFGHp2e>ZU2XXI^3SstU8uV{kjOWHCZp> z<(tymPyIl#{BLx|cRS|92NBH{Ta32Pfj4jBrzEVetray&keb6pPJNsKTItKXOmg2V z8W&$cRC05`QjJ!M&_K`sWIEG>DDL#kjHKj;az( z@%yXcdzV{3pF!{iBou-q>o+j=F=>DI?p>$>o=I=BHin6j(2xeDqE$olfbJ6QA~8hr zuWHz>t*-X?C2g&iuybySOWV7Fuq!45SJyc`tzRYqfgf<(##)G8>2zmH`X#;n2!266 z41Xod4}pOX<7*zod_QE;p{@c`dVNVlOdJFz+oChb3E=1+rrg?wG07_$&xwjT(14_j zod(1_`IK~X>Web$F$f6f{x?4&Y2{F&)!G7j=hW2H#xs_p1@0W30_6k^m`;Vs!`{Jr z_{C&YZbLDicv_Af%G3&ehZ|_&^5*X(o*W%RXkJ%o2GBQTv@%yy=U*XmYuW}64-YY9 z-#Ik>F%&=L2M76)xt~bM0Eom1mwy4&4QN+-H{2!d`}ac;bwZp4y;N(kw3H3Vukr4i zerj+@wRCh|fbV|rHF98vI`}o|FkZ2kAlSQmaMn()s zZa^o|&CmP?7D4ff6HI0djiAa@U>C!u?JBO-e?!oZukjSV{BMBzl?DXY|L<*G)&Ci|{*0;4`uP98<7d4@MPdF9qmlTCebVczk72a$<{ofoIXZi5IwL4g~q z{1T!i#tM)nAWvjXRIMNR2TRnTY8I5mV9PeJkcq?Py;l?Om$SrAffRI6^!pszC`=^B z#Kb(h?gKRDkQO4C;9#<_O#CJd|H#G%;Xw0ureI*W!x=!>vxDsb^{DG5E*uHc(^(_G zk-18s3IP{K_sjY%cxXLSbSCg&4u$%{L{HDd%wqn_7Yr1P$m~W)fOA?ZvcR31uM}OB z4I0^QggRd_t#kl2U+PXBZz|EYHZXC0vX(VOa8|XQ8Kc!&+n;a)I%O7Hyc3ymmhGceKEHVe}jJ| zmGMys3JQ4tgr@B|z^MAF}ni}}>RGB}wKJ-G`H=X%+>+vE63MM0azIkq`Ii&rA zeypCfzP_#`O;wAd01iaLEExCkt7si5yiZUl*uu89wpdluUeVI$d%;G0v*kt@sJ_ur zVef~&zRjkoVEpnJAt^Sn3W-pkTm2e4?UT99D(@GGdi+{Q4UlsC5oWYx$#b*0I&e%n zC^sESOqPBDP!|+rn_n@jCCS{;+l)u(D}+cLuBRfp6PTo%OP80I$Z!it59`=i#IPQ-Y67=CA~pAtzh^K z7;N>_9TOXy5r!!McfA66Oi~I!3dDFGC|H3!tcmLhp_;pQF{J+P@FM|9+Qy_1WthN* zxN~kGWJJz<#`6>a&taj!H8vjhje`go95(av=h_+;N(2<_-BwC486hcedp#AVFjneA zfM(^u(4g6~{VPzHm7|xq2dUth-um_{H1nLK5XRa-RD=GltgeoUI^12N3mWKmgVZwo zTOLj&(=kGx0qXBE5WBV0xQ!<;>)IkK#KlEO7jSY5hWuT@;#4lw!KV=;3mSN~gpBZi z0jv4jw{IvAr_Vl2iTn5i{y(rf2d}yZ(o_3jJ0jj;2lVrOm|MyNVe#_^FYZJ$Lqi;t z4cO?gy51o(0w6FJBRh#Rn~1MWLsb_rGLTZ}LW9>WCh)1A+c)Rm%i;_ynSC zhr1gaHq;_6C|IVw2djgw7iXR=kRC+LelW}s4uN8mW-Qdfg{%oY0CNayd0!mOY8aQ^ z8hx2#R0X2PM_2&wAhibN0|j6hv)A=KFuvV0(BTp9L~%9b)vNE&xej*$kHI`67BF}S z>X3nkJbD|lfiQ0h$^|kTSf3Rx&j4KWF_M&nsH=7=L`}O8T=Ea%*`i>SVL((1W_svA zzq$#L22`SDXp0(ba=088cvdfc(f`&hw`DTj32vcZg)5i>9_D4O=U zPEKyz6WR^oG!R`NOftr1MgwFYG7#`>8)I|jg-GWGrVnv7EKBkmH!yB8KaP8-Zlo zA?yPhBQ>Od!@|OB;^xTrud{M+4^S9KgZDlY@Rk0-h2qhOz5*j~JN(cwy6aW_^O^SKPl*?E_xWVWM22F!FhAk=X2 zL8Yb`=;%DaQp*PQs%Al>mSaoof;$AB(B9tOqc%o-#cSQv59#PZwvvPCF=tLG$U1}5 zgpP8de#?(}0ysrkMP<3-OS&q&9Ty+JN$F=}a|ixXZQg^2VlzWcoR+!69z?QAoTGDd zsRK+q^YvHZOC~&oDn+lcAX60NAztvEAsFx)qAp851rIGl%0KP0g8g6>06UTaRY+oU zi-uvKb($}bB}OIchuu-$$`Ez`l;>grG?^`)qtG9Qy}=bJQX_%xDOSM(iN8YCccL(f z!yqb}x=t4#6Vu@bz_+5fxB~``>&u@OA^8Uw&-s0>1t)ClL|mv-qRZRly^jo34<+3u z!?SITTP;SEDLA(&k_T*wTSKF6d*5W6%OO?A5e###13(*zVNwL~ytfy?a(j6@`&rx# zEL#GE?gQ22FnO=FO})=bA6#A!ts3mK+7YzBf&c!}A;BJfAE*|{%X77FXM+48Vgu<$ zT-c=zr9&`Wc?Fa=Wa6rR#Q$vb?M(;_5qzm9hZkkx8MvGtSXQ_rUxI+Bj*!bJ>xZ=0 zE3inx;;&D-3m35m{Wc$Fg$&}ci^-w^@#cUtXS^;2AOeZ;D$*K7KrLcqV#0()HYs*| z`FA%TwkVQX(zoQh8BGd9pxR;{8#%|+{oQ+DOd9L6RA6=ul8pt1B zBKKVplsgv9tReBDO*)w*arJN$-Vku`9$lOr)y0nv4gC;3Dj6-VxLzX$lLqh|C}ZdB z5EA{KDGiZNRL7SuU)T=7XDW7+shPG@)Q&kk-nvyAc?%XdWOH+Khavmpn_OC6xZ@8t zHa@F+Upor|+PzAS21BZ{QNHW!@ghg60as6|`OL0*LJyTp(Ig;m1!KUq1*xyn1_( zA5s^$CCy+M5W4}iXdz<+Nap3|BU%Hb<-xc^gXB7cWS^-3%*hjOL_P*|bOPN92^nbY zrm_43riXz-9=|XmP6dF{@M1*-ydg9g=OoHGxJFOTz}F{~w4UWh2qxw$ApZ5F#kVna zmoWM$@w#AVz4JY?v#_+h#lV0b^z`K<#L3VMHF3Ab^RYq4BaB+v&O8}^tIR7GfQ zp)&Lc+|&ODP-aFjf0EJebkL^5&2Hyh{z0?28Zr40A6>Urv&~L#9DMmXs zgGL5qvM*?rzXoh40HD~&u*j}Ri8QH@TGDltR__Bf>mb0XDFU`}Gy6~|jam8?Wa(93 z`z{i?!}Rz&10B(*6)j!eyVy!ckyBxLw~2AQQ^hnCxRReh^E7V5`XSXP$(SBykQWk~qwtb3`L-f%bi@RYOd z^2~mb_q%}Fvr4FBN~5ubRKVd)m1|272NkM7_ROc4wBVP`2kw{WKB!m84=I` zxl+T7rEQU}{g0gY*${Gt-#WRZc>)`|BoNKWNvn||=G6^KO1r0_?C>o+Vj5t1QHyzm zji9h0t_LvS8&n&C%{ln7|Gp_iSdBJEb)|BXn-7`<=sKxu3j4o*-?g=6MJ9WJ6Xd~H zTxrkbz(ZGOf7=VR0a3QmQJxn1(WVSDtdPH`tsn=-4}^_ru{KDCZe{bqurFe>Azv?Z z4pkB@=tlJuHh`RKo{K?j%U@uR+^fI)(P{HM|cA9bK06Oh>Wk%Eqn2z7WN7z)1J z3i6dwH1?B41ccNgGWi*xxVvsnFax>@IxCO)Nyp)n6wUWhhmwp;J{yTFZ~Xd^#HGy* zJ|mzU^qe$xBzXe5To>T#ioLS*EGVtt;GQ9=a}|~FMciAdCWc?MFJ&iMrj!H~BPkWE zXOM{!jgB-7_^yRt)47#BWq;#i?g3QDvKs=+4ILGcr!$po8m1nr{PDr|?U@kxwRZky z_YcE(JviGr9yGj3F6M+n-4V#*!e{RW%*gW*;YS~Xuj}9HXH6%4IJHmuYF<@ZIDFE& zPdF`ICO#BL6FyymBY%sT9LrtHEa29$=#x+Qi*8r6?NpT1$pj%51nxsBr|#@iESMUf z7QM=x)CjRE3>5e@(EW&UiW%}vtF{L1neuMK7quwr#$G&C{$uX06?j=-icLg2H26q; zegg#m`Zi}rrM=Kp$XDAv=4&w1esThA7p=J5c9 z)Hh!;EE-#z3rMw%z&#tA;<*FhW6`4SYdP=Ujcste{*ipkfD}xOh-ZfIypX$3xp0RY z1f-6@UDmmj(TR&xPvogHQin+a>3{%T@D=vWl{Ly9W=-Dk>c7D{7;Z%JfYP z8$BbIRPF8I8$A4;zkYz`B`YtR^t#3}B-SS&@Q2s0wV0O~FN0)vkGEIV+(!C6v)$vw z*PE-F%zIv|PGVm{M>85Xz^9$MpZ=Wa-*Mo-`n_W$(u-f=niZy)ek5xOEGDx;xYXfGkDXkP6-w9`N(N+Kdn%~MlKMSB-fDYS=* zCX%Mg$cd7S=l!|v`+hxtKmR=U>-WcfX`Sc!{eF+nalF^TKR-@-7;}dk98%4$Tw4bM z8&iIo4}D-VR6ribGF|WWYVRB)5si^T@GWx#MeZ~|Xr?NhyYj!WFaAM?eA$j2Di4bI zA?1fhu5VCxpD6tl0V6x*huq@R*CBo_(Oe~Ga)dUnJ@!Evs!!oxXv4zz`?jDd7v^(a zyLbVrikEIOVJ?}&yQcMD6~30y0Db0F^XTEj6yu=MYW;!)R@?*S4=*f!NH!OEKf;)* z%ej5KR>~q>>9MVm5->Vz7#nHjn9KzS`T_aG%PDWKHkyt)I8+#gqtM%gTV_-084Opf z!DI9D9bQuAtOIQNKml=pkk&P5d4T(1sSbU7e7rs=d$E(#51M{Fc}RciZM{w*-!x+l zEfdcbMY>E11S5%?p~QrjY150!t)TU~&)+|R_5#K0#hHU~ zE>?{0_ZSk#5yHyCb&&6(=|Nvu-X7_zw`A)6IhQPJ<7TzDLL6(l;IMcTcWCJ=u?l+=i1@xlIku2#H-n&FiNJu&`4O4hep}7?1u#NGGx8LS~koF4* zFm;<1+qbU;X0|AiHk@~^FLQfE>&`ENIl|l!Ir?gH(lLT9zET|m34CB{p+Tv#SkJ-| zZ8|`8=+_K`)NKvdg&^n{hDJtUiK#Xb=986`Wvsebf7c0>;{vTskn*Q%AlJj!)5XPf zirO5*bA;kb--{;%RFr7lX8=6sTcr6nT+@+5w<1G{p?3)pKNEFO5vNAOch)uifWr)U96KUb(Z;ATp1Qk0ILVu3Wkp0B@dwW5|y-8P@i3-O%zckvj%?L?DBU<0Hv#%U@_A z%mKB+y2{A#@N%=TuPGQ*Ax1V);AS(TC8BPa zmkCAJOAJe!<0iZHd*o0qn^y8yC{*V@3O(}w>P$&_ZWGXn+s&I^WBK)9c(G{Upiq3< zv9sZ*U^DC==hDD2P02VnJ(T*{{IWPte>l*(%8lClg>upwBcq1Z$&p{^uPD-cB|b`E zrjb7}c%iuLPQ(;kL5gqfLhO$1%S3;0x*4KIVSRb9R{l}uUdFkf>)jsR7kN~Iu~x9% z!pT+6!;xM6RHDZK=gZ0yhTTc1yXooaX%1BkU;j;43TulOoNs+$x~iBL7J4DRpu1I+ z{ikf$ND7?D=Ix@~&Ert6;{G!|IQ9d4t7~6&Slg%9BUg+?_?e%c-olz=VD5R?eP0A@ zPly`;x5I`w54sF<4$y2_&aL4Rbhtrl4TvLC)9p$r({%`NUb^|_I5@kw%zr2mYf4lT zh_?es>x#D_*!>LL4`!W4phfHJmmpOis|D~=(<`=1+0btmCoTX4ZeKo>ZOH3-S1crw zn)ybf9zL&jNJ49GRqMAYNZ_u@+wdm_q}=S|j{s~muap3^C0~a10IDC7&&E6)3erqS zHpo!riFjQ$JuR8x7e^u5l0cuE%R<%yYTk!pG2cfr*|v6 zoi~7GI&TR&$k!uCE|B9#9r0r`P-M!#t>OEOaYu8xPUN}Syk)jl}Az5+@Q z2CBnFCh^o?=n@O6e)M5_`vR47kRAKb(9jr&eF=;B%>2k53aqHvt24sNz;)jrKA`ub zL7W+4p~IgFpp+v(bc<@z5o9`z`p@k2wtWld1)v+Q{+|bIN{`bC|J}E7ZRy#M7Jca% z4_!xV6_VlHl_fAG(A)yg+L`CKccUv~ehQX2!~g3vunLbV5fx&rAu2v)AKRJEB{4|!i6ISh^WzIT3dx61Zj^f@+UurpoP#P zdKUdR180m(XW?+2Iu9{d=qj9*xS6Ej2eugy6irxe$6B~j-?7W++# z5-2I(^gk*aq35aic>}+a=^9OO;eGG!J4w2|jm9FlM z?lcE>Mt**NlkEv+)}>JjUB8zeI=H(>R8~rlcW;Vl0!HfB=F${xk%`aYjz;0zFAxu= z^$k_ULTv@Rh)*@~IRc}0KClY%6?y)AIvxH2^9twW?>+F`Z@xzp%<$(X&!{t1ZWPo$ zj5+PY&Em|?ok@1yrgjv<#{x$^GpPfAHew)T&23=CxADi3E@*6_!vmcjF0>-cEV{Qs ztC~JXe^@C1)Asr2VnWuxH?)ll(<%_c?5x(1kdV38YYt*+0K_|6xq(QdanBwvAI~!> zK-^5W;mB`H&`JBx6`O~3uAw#IXVB`i1x(~#fH zOZy*P=9vU8AIS1uhe~;f;zzgRuxya}PmCpc1^v)_9QgG1@!#@)wf1@3 zH@XRv!)%c=R3vSheK@<&1>=RS$`GFDx~uZu0KsGpzwY^f+_jlmJjB3^}CaNt5kkvSUh z)TRZ5Ed1H+HG47XQ5rDuL+!hv`|OdZmZ2r!b2CIE4I5DG(?7O)dO;A9c#oR)avJH6 z0t-8h`2pzJCPN|7e{&3GjaH-uN?`AVZEGW-W{nAPlXQ!sfmsKPi;v%X>O60ENR?=A zZjK9~7Al3#`cd2ruTGr;%dfiXdm%G z0Bik(nSTf~#}$P2y>B(lGkV50Q0wo5Zy3iZx4Pk$4_It<0Q>&7=nBNW##MLvkN6a$ zaR$H9FmwCThM@g3Zc-jjHa@SfP1ExCI4{LXd%*Wi8dQUCJ8h>g7kI# z0AD&EWQ+j0d6yE^EHA40Lw~3ac@c=))ggALe||f`YI=IQlSBIC>!d8JvYF$@Mlb#O z%Js6ql*MPdlV|4HS+0Zln-FlGQIv9*>wg7IRgi(?94^pk!q&I@z##EHXa(1V8U@u0fu9SZhk)@Q8^;7J5H@@zZ{`03YBHO7G9$IZoAI~`uNTco=NEREz01QQ#P1dYp(Dm~*S3jcK@ zppH_%FZMVfS&7Lf8j04m;rqnIo)O|2$g<=%P(xx~?Isb>SVM|?Z;;05x@B{S-55ez zFiL|GFJNXWuF_nWk^BK7lm^KE3J10r$D-qMfKVR@KPy356)$V@v35u6060R-oonTC z64ddsCtrsmrkIDDJ1EHyv5yKCr?FfCr%hx^AOsIQ-wOVXpGJw=uNI(oJ2ln4RE0MJzk>V_?kGZ`!-g_h4`}7avb?CM*3sFQ zE$IDY6BDnaG!X~`sPcg5XFN5S>DKM@hnO?zK!EJleKwI8TIqWp9IHGufsb|LHbW;d zK-Az>z*Ibi%ewW5_1;7uD;WsKp1m>RczfaNdM_vNP3vJ&r${I3jl7-3hbw(*^mVSr zMMw_mcLC#!(JAPf5YU74?T5dCD&i)%r$2%yIG zW-WqE>_Nq+c|wEz4CSgb?i?7LTVh${lmM6^tu+d*Rxkuh-qq0VbQE?9QT%@WDC)J;WzPwcu&wCx2}%y*6rTZ29On4NxpFsi^GQ$zt~S{t(Bw2|fU|r5Hx)>Y`wJfHB>eOb@NAmRM4rJi>}Ty(ll`%@!Aj00YbyzHd^I; zsH^CvbDv)GG+oq&qAhOz(%Ep%vI>zm69yBPez6<@aMNifG=k* z{xB=JE(|ML7CMI3t}gz@+hWr%#oD{OLy$FXB*Ny>4e*QzPXs!!p@DnJI-uLh+4&AU zTKI>(dx-=owks|n!DtW5N%sugxX{%Uc?ZUY|AoP}2Q?ru(0|M349zwz$G?Am{{RpW z+9tPW&-x(eegHwPG?qzdqQzmQ!h8yO1a;L!UcZ}?KW!Bb5*dwAbVU;Iec(|BROhp+ z4}{VCzMOwfnPa%jGqOjS6%rFu#Z7-KXfFj#5#gBx+8Ba>BkY!t*n~Pi<|spyVz~us z+Xp`X0{=>U1b*m4<(o!H%D90ZyXYyL(CiS+cjbJs131ThioD4nb@RO52+JjiPTOMh2x7Ced z`oUOFj5D0luF7so`1r#L&zr|f-uAe+ZJ!M{?jO89xOSdF_yv!Na_3CL;{uz5#aGZ1 zAz>yHk1Qn!7XnJ!OdP?J^*0fU0JI9hg0O;bVR~H`kSMf+*iqq2fu{Pf=7kFW34#b^ z(I{O<3h>q_LHI05QXI5R$Js;7xKSlrwbEf~L_gb`XDG<~FPzNyI-I|Jb)eZ&5>ME2 zZydvli|pnW)QGWn@8~eWfy0QIdx*bLdyr-E*HF+K61$BPIt2Oy)bX(Lb5reX4{&Bt z*SK1pDqI=I9V^g&22Ve94aaW0)4Fg$scaIWznD%1*mof0wT%gcFvW0`}sB28DtuwR|6g zEV9pafB!JN8SUwDc1FU7i@68gohzzWfV}oP9u_pnuj>O-@4L^!AoAp{PHHG`b02JU zxke%=(x9*y@cGCosE4cMdFth4hxF=7^xp-T0}RS>s@S@=ZHGT%Kdz#lff9sNxnX}p zPmI!lb~@Tr6u{Wy7CuwN*MPePuL1Vi>79>`w~p*)4Z}@x88sx?=-vHtlNsP2z$fqM z{$=xd-U|nKG}j@4Pc`{AK2TlBN3j?DOs;ev+yE1H_GKI6$5MF41k`@O3g^G(Q>AadiBV37pkgSUXhgaz;C#sVd1rht~f@Ad?}v)?0&$gUb3zG?7QnEsT% zX7DOgg1^5L{l!M;G%5}Aaf6~A$~4H!Fe%X3oD)u-TBr>bqh5Z~FR?iQag%b60f*Ih zWKO{;&nqWqdau<`O-V@!^m24xU!P_L6PB|e{R-@?fRV_IhIy;N!2d$$J2Zo6 zOeE5k{I8&A->&otMA$^X1TsfiP*P9;3Z?%z;AE-ge73x@G6BiM1Mex#obNJ7scJ1y zzDb;C=?5YJiL609Gviwyr25#D?ZCw+2rS?ZR5oUdV)W40A@bnV5hgqcr;Ho1PKYx* z^mwyD&IlqbYxWg(wh$C5?}D4qpWR4J$JhEqCahvLDRPk?LjoqQ*s3MID2qktKP?$z!oS9g$baCseSKEnK2iI-=!*wvk z3J;&uw!vLchAE239>>lZ<50zX;P>a3!oBNJ2f_B0IkvGrYiZeT^d3Ke`Vo8k_H*Ix zdo0_xZx^$ExCP59vfJI%P-yi{Ow{Xxo9B4;0CmA#jMu&J?c2-Y=iL&9(+K&vX0=z2 zeQi3&imBl+Uk6b6@=FW}+WZj`QkbNjw5u2ED1Tr->WbRn+e7VseFTwB?LU-wb z5^~eU^2UZ{>*KH-$gKr=d4nxT$H~c>5n8pRWl_-&&%~L*3xV0b*RXB7nYo!+C?vgo zv)g)B-71gzEAqsG73cN6f}*qGg4>l^i-U&Us(v0f?H8ej8#cvQ*A?`;8T@mVIs-~V zFa2zRf1vdRYin!Y$#uXT(dpX0k0;Myc^!_j>~(2n^ZkM)klCUu<#~ngLliINvhs2K zWL-4wKwZVti18v+1TW;N9KL9&jM5iZVD6KjK}E2J+-{>k(zuk?E_cSF&F=n<=T8Zt zQd*O+jBUz^jIPD&&^^D1PCry_%~-d>$H=`$kZ$T-C9ATf79>uSy9>?v%@cCZ&{CkJ5TXDl;}|6T5*B#_diSiAH)opzu>e>}vQ7bW56=E_ z4=27XKquVz^EhX*53fk~-e|ayhu*y|ycF_O&4rNQQ+3j>a%lfOh}06Knh|^em;fI5 zbwCS>jYgp^Ti<*N!2ARlLSTGHutWnpL9RfsV=~g?{bS)BX3(V3Kp+H90K@=`1JHXJ zZG;`pl(e(6Y_q*t*GH8tl?|UyB6uH6O9Q(2GSnmNJ*(`i=WjmGb>evqA~g^XLCyX) zmsS30fO4)o3Z&Hkgec1T)#4-shNVBdTtx7;3#z;1UsAqNg>G%j}Vx+@M0 zp*77y+oE{588h{o4Lcf8hP3l%j$|6ip}yEb)^;yX;%p@jriGj~kt$|FGcU|9KHAZ{+@aS$c)^`3e8MER`~*-2W)OElf=! z8JZ{@ax5tE6+=mXm!Dr6`}{c?7yA91 zOOvge$oh>Ru(*iH3Is&q;wY}5K$7Q%WIR2;edvCxAJ9uj?Ha4%iod|b$Ph?MT14a; z3Rr#~hq(z{V3N&r6L@Kv1gZ-YZu=dFE?Ry5gJc=9-S3#Tc4ey{1X`1v2*B}OJQVnI z3&hZk0iWyEf0)>XD#KgZ75DLljgJt{k zAF@~hdTMwdiA%abX&1#i3KNsdZM5$AA!f=@t-sXrBavJqEGsR5{s_JSN(LHmQi5qo z@FY`j_=7*%q2#v_3@~|19v=Did(n`nV#lY=YB~z!a;qq0Q6g$@zS6EB%@PrRvRA2#KRaJ;{E4-r)o+b0O=u!?Sc@*}E!w z4MitKn&(o9dBt7z<}^tsCW>;A2`o{M@n16TTPabigYA;sxSqdxbL*FJs=TSEak~;J%LkNoAc|TzsoEXoXStKm-K}a2Di`E=c%)Y z0Bz1}45UK677o}jW)L?3$;83dw9`lO6-1iLLW!;m7ct z5wZgZj#@R@(aGEU*!C8hr8);B&$93QisNVU6g1AXbFe!>>q6&hwI8GGyV~bHGMp82 zt&WngTg456%pvnM47LbjV}MMU!r2kED1)QD;!p?DT#ybCHwel^1^G-QED_OKaUXGM z-aUvR%=3*C?(UYeeiYaxmAfPC*ipPQ;1z=sT8Vi$_^wB&ah${~MG3+w6z2&Sj5=g`1T(Du{q4oSr_Y>uhIn8C zQ`ePOGDu-qy8-3H{0;{+ktEGqgvta$N8lBd2`m&KRI4e#Jna7bT6P^S=ZD|&d+}&R zdAT@L&oo7BVud10v4teU0xH1>(hM|-j^bUDCUr0)%ry2GA6$iuM~h`~UJ6`7jLGR; zek1Q6l@QPyAHBYwo^mzGI|6_D19JHFHx$r9(C!1~1~qWzMp;!=6XK^aDS%H_t*%%y zenl^P>CXj70X9NtV)pP%-l#;?^C=|c_HFOPuoXZgWaJUTQ9^M|pvanBHRfa4sYo*L z2uOk)x^$b>P;YyxGE&fdYk&4HTk^$#qi;^yD*1rBm^=@z-bY@y zF{lI2M-!1le!@!%;GN9^+LVSsKXv4KgP2Qmz;GW0^{~&y)~-fayzphRYUijhERu3F z5725Mm~A`R5BkjBi`tCTUO{k(6u?~uP==jpR)XA=GDZSj`ur&0Mh5}Y+>*flqJM#6 z8v8>=4N0B=gcGL|;=(7&USX?X7%HRbiB15R4)D$5O7SyYL-FPKiUx^nCqf2jlt|Q? zUjc;e)J%xOv3N@Y;j#=AWWnoFTM*)i_hKfDtAA8Q`Gd2%38KedgpTZVk2=`7^97RIBHNrF z0iol-X3Ldf2!JF=zy1xA-1eViW&cfe)Z$oAgSv zriPZ*k+=1M3bPGjaE6hg(tpe%9C3>90CAGoyY707l20L&L>f@}`y?Qn5-Bq7cjbfz z@NamGB{&^VFrj}YQGn=s&e-pT5T61G7BmG<@0f%DBP1v|rl=Rga$vwn>^f8&Teq`N zh`@#>9S+$LJmd= zu+~T6dqBdN!U{=RQI6l~&}LkR_YR8s+uaFlWu>Q}B0H3Qp^#dHMo6$<0lO1$PROMJ zLj%T_X(WQC@X7EwBsNk~K8R>NY!ceiUa-dZtr-WfNO>>=f{dBDxd{BeTIQ`-UAg1P{E0V<$4W0ozg?Ut)RT5kN(i4xYs19udibd|P0; zr1J=kjC_Xg7KhlR{4d@*MVju>O}#~=a4vp&6M-fr0~icOXk{ECg4a^Jj=7=Pq_zZ5 ze?YG0qVJD3dT`~<9X+?rxDJvy6ZG$&w2s`le=C3!b?Cr!)0H&NzeJO|sp8S?+qTpe zEd;>>RUiq{xJ40HkNCekKzYH-tfrLHuy=#nynbN{C#W*QGRRImNi|#q`4*xhqa639 zlRZL^Viaa_uEJ+`1+e-Aa(q;Uk#<|e8us>JX@ZeEG;}l^Q4EvTozz6c~F(#szG{NZb1;BKi!w|h2 zS+jvpfQ{@m1DtKVryNsTAdlT2yS8zxf~T0WiI+JWK}3~#6nL|cGD$r7`!BfmGJFrk3KzU)M9}7qD`ipz^?wx+dTY9p9kg+n(7`E2&IX_2RtSmyc$LN+xCB2fDAn$EP6d`aCZ2K z3kpwKVIg1@nq0y0l!BhE;Q#Ao8y?FTVD-x3z9I15UH&X9J1fpG8+m2}k5lD=>If1B z-j(y;-rMyZx{2W>rp6y7z+#)8*v7To8`pl5?Rt5)wl?iStZ>QRsu2T8*!m5=S5~j? z0h2?PiGs69`v~9CGtiyK;o%);uIxyH&thkgI){`oS(Zm4+*?Ettw4;=2IF~((T#jKuVm z9rxL6(Vm3}8{R#gvK@qVq2>Jz!HnzaGiDFRgY`uNc?X{rAVTAEM&kP<{zDf_Akk!@ z^UEU3#0TtERPK*VjUxxVY>tvK0EacAsfd@BUCNmm*iV>R`S`g3_Ci{tiQhq#yHVVI z6i(9(+XGB2OYh&m4ut2uNug=UE<_GT-F;~2mTuwx-=cAeFK{`v^6s>8X9aFlXU-4T zqza5}lwYYTmcWe!#&P=5xn2>}QR8EseV~CL&M@Rr#SN_=2rtFrByZ+d*F!#Tc3=Yh z_hR@g)>3`LdY!_UA@5HgsxVwYKzaniO~82q(X(@N`4xMlr4tG@t0s)hoNli7mTBSS z+rsqSME#bO%Z7CVPDN`+SbPWUv#m1|_u-=S&sO6Ru_yGAnTA=;XCy#Vq?zbfZb`Lp zzJvz-mM3;t3w{#vj9>{kSt!#Q_x+5UD5&|>8Oyci=L-2bAXo8vz7u25DY=vGsyPOY za8d?2pX4l0VxPbMJzo+j?D!xFBVM?)jg2k#?Fb;Ee{SEJ%A;zwp$q&1RGgl25pcQ1 ztFTIlv67VhCGUN>kHmq!rI5L4=I|a)Dioa}fnDy}fPRr&bmY`|k%iApKY`X!r0eX> zpujst^FwJ@N3@NIXF|(ES+kt0RgB9&ek8FW1k~M>nEj|{jhz3XmYo!D>Il`i93Q`v$11lJ0Rs+xi)~G%`b(kh zB#GYWZ}J-*%xXZ}tfKVMU#@zl9|VQATl@j^wRg-aB4piLnwuE`_)gYBBeBPVF+)}g z=?}CE$F#JhhGmu}+cu*@#tagC?{Ue1W|5&L4(`_WQl@cx)f3_? zFdX>Mo$|CRstRX^bZ!h~%yF60fO6l-dDL9?om`3%CnQQZW&YLrzvK z?U&FMYUiLllwo+VspT6q7s0@{I9@;B%I=_{qr)#cj7`$XO6kZ{fSRx~Y)|gmR2^!1 z`i8N$?lN-ouz(yK0_~DBAS#>Wiv}gF%si1b=VzJGqM6S4`}eKu+P6kDrR~xx5e0)% z)VK2eJG0cltzS-t1qpFD3gS|gu#C3i^}4F{i;bXgy1w+AUT8I51N{V_a#env9~?2f zO6R|=g(94(!Zz@`aaB~Cg&+=~PKj-%M(z2*sLuem7jhPi^N zM~th6nbSTXq?$Q#O0FVjci%PQDiqDG20E?>I2-y28~_mmg84;8GEJ6mPig5W?ax;! z($~ZiUY+rs=zfBchrG;xJN5)w-mt2QcDc(8Lp$Fe`-3O9$aaLtyh){h^b>#}qk_vp zol$6P5q*3e3GeaE1%3xS+NEwwbk&sFXA;ffFA;>Xh$B z<$6+3lPuFH9yvTc50My&GJ;-#q0Qb-N>Kz6@Gn0|409V{IBDm^7o(qfKQ&@CEwd%McfE9yo| z&q`QYmY&accDZ+GzK??va_=Q23@3> zKF_A4oy&8)0fATvdp1;!7R&*uyT;xjQL z`~CbT%*e9KeI&4M9)O5`DPh7jU=g(@_a_`FMUYq3`+vSS;g0yai`&xgC zYIA;yvhqIZOI3@sU@C~LS?k}Ow-0eq7I2vPbR#R;%cSMz!xB6+(nVzHN#n}T0n1Zg zI4kTq@77CH&37A}wOzKjRap{m$6hB)^;q>6hl~7-ql3fK<;EGGD7M&+DaEA}J9YzA zPnhJ>BtCxlAkWf=Q!M`5dyE;diOg4RB?L)Ovqd@VK!w(iOlFe6tHz3DL7oVlpx{!* z_xHUF2qJoln@iryfocayE)o2S36yXmVjW5XO!e6(H%;}oxKZO!vfg39rq5_A_wT=A zVJ>y5zLfuRRut1wyETMeF!y=oDJ#c3PF zM$t5HML}q*%6nN)Xi~LWirL{?h4f6lBr_>eFH3B>z=W!{5x@W%5cDjk7V1C{H=r|V zorfNHA$$RCA&`L}NVo5~6(KSbV`!0F`|T;{T&9W9W+q$M%`yVA24==_knzz%`|wE%g6s_Z5BtJWiv2G4|U=7IM42)HkRq;oU1Vd4xWTt#JNrA4#k^zGuk za36}pa?@Q6fX1{y_$)9PMdRJes}7_@;IHGM$gOC%6E!ng!y2Y~^u*VN1@T7-`?)ZK zXj!?7^$*Xef%Y#bsqfQ2UYR;(&WYA6&O9rMpHpCQuKynt{3bZdZ$OmwV(daBfEVxw zWT^q`H=9_r=yu2tC6XFobvhB%{q%VFd=<~mKQ*Yk4{uCR*^`tync3ZJVXFIb^qvFn zkyon#hlPYqvcA!vBzPaLVvhf_D5BD^`n#`hgL*3u0^kH`mw<23$c9M?A0m8g!MBA6qKqvxDLQWN zp%U5zNd;-2v1$+>>Jr4~|IraV-Zj6fB8|`Yms&uHj>(OPv&mH405Y3Qafn8${qO>D z^IIaYKjFPd&9=qQZ~wM$)stEc=}3N3ExlQl0X+p&QwzN3rvcUzk1nCKyk}I&i`fcO z+h60^-yUN>=fe&1uENOOZ{5XGLy0ZlN;#&z@*Ic3jJXL|CVNN8N9L^0`&!>_4E1`5Z|HUFS~$w6Sr& zwyNjM6Q=-8uxwbSHd!$L#HJb?6YO2HyfG4*k@F12D0__t&PZNMi5n1^mobLbBBgKF@WQO?3?WrTN7|#H&| z&L@`swu7$2ev^L*Z;8+CByh3VDYdDiBYCT+X$2LRK-~W4^!W&l4^G90eeO(<0%LjZs2BLp5XgpT4{>4wDY40+ zA%y(~n#I@~GoPLOPQzQ1!M^oEZfOePJJ!OOtXs78>=zGX*HCzoLu;x@C1{^bl z!e<-g>4v%ENqE86m!wo(Y7Ct>bTE%{J2t3Y(PtVA_y+Am}FP{udOO z^)C$HTj+!QPMKKm-+&Fn7O~1^cdQnI--2lUWkv5+Tb@8B9}++{6@AZvUh~4$}frE#@3r7&bOhQn0umJrX(7>6re?&`wkPxJRqElsz z91u+7?_fO3)^x=Oh9>}J93mkK1;^Zg=yNP^IJ0OhLXBy2WLNO!J2_gbkzX@CIT<54 z2@ej0se>n)@4e}``te4A34{ia1Vg1jEDQ(@`PNQ42s9{V8D-k(O6Es*ef=w1a)Vuh z9@;{%A0g;Ufj|onCC0|m0d6GQVs@VbvCcRJ{ty@{Jv_!dlCb5py(Pj=Jk<&`c;+&8 zv-DhWA^Wf7_wS#;V6Muz!r|iNgcu&9qcs2}IFk#-+ohD59xf1b|u;n(us=a4p%2a*KIm-ZSpUEB?SFv%4Jtw*5% zn;WVR+)vTjHU@Nj44U01Xl1{(7d*)KMSdWpqF&ItP*Se9gUf0CgWpPaVbf24I060;V{P#d}MFpeCzi8 zXA3oGKbJm}T?`N|F}hWy?B0jSK4Oy5u(^FOuqWd%!<_`z4q}@E_Tdso@YPD!UX_ws z+yM<89UXlBgr~sO^a2x3X~6sw##-&vu~izvSp$EzU?WUW5#R?&Ry?H?30bHd6oS#n z!PEk%=;iSj)$L*$1J6MJ5Wg}vo;7@Q0)y_tgiE;dqt30^^9WLX4L+ZRm;y9jyk-Yl zE&y;c{%%{O@`&wZ_Vg<_%V3G>KlYhLOB`BcX56170tl`T34kmVvXxRkSsqFeurBHq z#CjZwarOVq62vX1oYm>t;b6+tJSl^A0J|{=lM1m`*_GO*(SWq2@&kI2PAtfr=0?yD z**yaNoW@MC5YBU(yeQ~b$U=0)F_Lb-kol*@@Vw7EBUQ|A_;$?Jq%CZ5)8BMW#ZLOp zTcA1kcEXm!Ns3WhW%Q|0D<`I*+WPzC3ozIbf85D8igy}J5(MMh{Bl%6u3jY!JO+Yh zoch`iWm84T#rj`I32u#J?e=Q^pyq4azmNtCK236}iNk|U8!oTAW(LVLg3;V{1iC>< zEI`3B0p3m?2@+Me?qjhFnwosIY8g9^?|6V%uoef0&1S9LO+WLDFBktL;%T(q?pSQl+R2jFDm;PfIG3aYnLYD*4@UZ41s6lYnYM@}gIe*b zNoq$C!Pu{6^B6-odNkR*fFfC(LPtO)`&*;i1Mr&kdt&R39oi;;gQhQ|lQD91c240x z1;<%hkPQZUoGQsXvyl@Tj!e1J)#xLl%zCt)fcZYV(jtksgKggJV*ZFG1*0nL@(PYa zBG$ZFo7e;?0&vh#xA?!n=^qbVE@s1sg;h@%i@a@XKfOGklUg9;h2*cd^z)1eTn-t4tvfxXg%A2JBFfOfpgPB2r++FACrJ~= zN6$F0a7vvxTfqn8@qUK(wzVGBjsTbfZHBm=P~r8Fv9T<%@AGwd*v`)Opv4DGA&neUn1CSU~aJ zivn;#HA6$wTWWU%pQ?RcT*nkedU!Qamt2OZI}%nQm{j3jEhp^jmpv8Jzo88Sq!)bH zY6L$KC!30ZSAbju{zf12pHrZVn8PxlJR^Q#1@%ll zvi+%c62KhU)sBY_j<6753Q!?-rzq4UL0%`aT0hrJ1W2n@o0OLO}1&~nEpynqulK+T{4yP=S=x=D#k;U;P zj%@WougVc5Q0fmg3g6C~)NNc`&sQ$rhU~8!Gyg8cL-ChU$_5@1T{?U=rpBG1@6q!! z^qAEiT%O#_y3+XY{VpXxN|{-wD7&=?HSQ}e`YypgLRcwAS@`kAfs(?M_S7IBz=jBGQ_#~m? zR(yroU$@W>om=f5JFHV`Ag`brt#+8u81$3x_C%{>zTA~-VDKO2s1tzobk`tvhKLk( zh}eQ`XwXrAPZ_GKtHaU+f(&3n_%!wu&rDu$Fdk5NRgQ^R&|)!&^TZze_6hr`ngHe<(-YzH#{#VkwG5PF zgw_gd8kMhvO&Ufc7G&$r{IxjgEA0&008MxxJNzUTt(s6=3kuaP4~#fApke_Z!NMno0`%eraummMX;aKVp@3++3>mXeed zlX&DcR%qb$Y3t}5Udv-z!BmGoWI0h>)ZvA(p{cn!#QXbawC&yXeSPD}GyP{yM5UZ^ zcdz)!$Y+Ba|Byq}*p+*NQQ<#kN&{AaAFWP-OEhd{f7jLy@Ah0-*=4|kDZ z8e(_+{CQ55wNBH0eXNlDc^Jl342$79V9nME%c9C^)8i9jy>FZDOv;Ju*fsSmrLH_Z zl|o^t&`>>W?) ze^*x*#!ZuH`6=_jeUKVdO~KEry}V=EW%9P2rR@yhyy{v#q3q6%=cg4NN{WiAre+@& zcXr&~G?6ga)5CqJC!=Ksb|4f=ZPf1Df@K*`FL|vMFA^2>30ZAKUZdVJr=_J4!32+`THcY1R@(_4s?RIeuT<63>3Tv^0?bD}|PNS#=;QqqlP+7|(E+w`5 z6qj#1!}Qvge}4(jr;q656)5Ay-&Z0{ILef?Mmn?E7vii(QbJM2)qfBgBqA4k|f z+=E|zzKl2RkunOh`ZE0XEerSHufmazX9c;-$fhWDo~x(R29Y%&uAop;^lBmO z{n94$?zg|Q6!-6sZF4-0ByH?oKknqDwjtl!zH6;M6agxVx73k!PTWEsvh#}0Bch*S z!8Wt90!1*ImC5S>Q<6v)PLz#XZR6I|@@U^u5nVz1uT2Z*tm{I=L z)z0ql)*39uaXoda1*4>OfCpYN^*6RRiDDf6vHVpK8+(Bpl{pO_7kpSO8llMh^OT*w z3WB-n8!WE?N^RX{mH<&r?7mVVq%ZT@9{=Aj-nohf=E7yQbr?IA=_6S2HQMT}{P@Ai jf5bHLwf`?ac+J*0@W;;tuU*L${GW!Ju4=K$@hkriO{7Ng diff --git a/doc/figures/zh-cn_image_0000001617393174.png b/doc/figures/zh-cn_image_0000001617393174.png deleted file mode 100644 index 739a1cb4ff6ecdb4d2a4e67c77871dd25daadfc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16834 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 E0NkvhB>(^b diff --git a/doc/figures/zh-cn_image_0000001658655445.png b/doc/figures/zh-cn_image_0000001658655445.png deleted file mode 100644 index 4c01b6d9ec9f718768815ef282dfe995509bd351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32131 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⁣df|S@$|N` v%Z?4(-9IHYO}6;A4>WDoID0mvRd2eD%eyY diff --git a/doc/figures/zh-cn_image_0000001664546481.png b/doc/figures/zh-cn_image_0000001664546481.png deleted file mode 100644 index 6e383ed2c18d97d420bd8a057910e9a747db5d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10339 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 W1t7S0GvzEPbT_ diff --git a/doc/figures/zh-cn_image_0000001665513149.png b/doc/figures/zh-cn_image_0000001665513149.png deleted file mode 100644 index 00230be6617822ae5fa1bf3218be7f4f4888c3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14110 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

-NHHl6*hG)RYiGu5>8IMU<0)X8|dhSfTuM% z)^V^h0KfamHGENUy52oTg>Ld%r$b0YL{5GywwamPzoT)(Eo&24`pm4X46Oq9&YiiY z$hJ0_x*y>Y5glOQxOeiB;elynp}tM!FO>lwQLgG=2tGuX7n9UPl|41MSdPXdH;i)=+khpi=#d$Y#fuH5DKoEqRzCqD=zORU=)i{AlEJCp-(BvS| zvncqh>}Fbgug(nX{>J_2>f+?a0LRm1^Vi$|Fy2(zEJ7F`N;y%;Gn7g1R zkW_-SQCOv=rB03tdcOs4<>%+i;veqszoB^arp*qWosVy9l?HtA;DiK{q#kr9&vFtn zbQKkqUu72f9M1L6My>hO)YX;A^k88GerPcV2IEuHvaumul~{>Q&i-!wgKBui{ z7Ime!sEq_;b0U_sqPqImXCE*dtq%$ADp*^88Tv_~kWGkri$cQ3r?Kx(l;_kgRinod z^9*&DmMM2)6xV&?usv|Y2UBuw-%d{j33dPY(E@s0_4#uv$3!sM8B6*AwnIP%&o1wG zHQ4?dfI?gRx3|bxrT$VRiMP79F;1u4@;0mraPAO}#(&pv-dzJbqiDxGF*`H!8Yqf- zlb7aNJvOR;@I?bS$XK`uLHY# z3I80%q+XxRvT`TfWXLkv1=vO^Ol2y0|}q? z$05(0;=Y3caeJ;BeQ>%O&$fl>nV6D9(vk%1_c8cWQ&Sns_SZ*B48@a0J&ARTe#+P7 zO#aGOX9^>o3Gny-y}TTRj(O|%#qnH~j= zo-;mVW^RG0gIi~>vrAhRc-qM+DGq-(pNCUCB1HJcYqjnh_?(!<1mSi%j3$8l^nmcr z9aRkt8R2JYjGYd$X2rS{KR}f39HBhv3Y+oOlj_>qVazVrQuox1^z{2NLE%2+hHmpW z&i8vbP!wO3TG2LHz&`bfbk4VL(H;+B5P_GdBs;aWv?L?&wa)vD-(_dE@2t4OW^rc+ zA9z5rxG$CW>EV3EZO%r1r~z)PE@%is*}n?3IW{NCf{&-7xiy(%RTGo=ZQ-?5-#M5B zz*;&DaJ#y?o>I2%)6&r?lX0Jpn}dH+{d)cym6(@&t{a?g@P!gk?v1=W$t!y>U`Ri&EKEE)e2ACB&Q0NGXRq%C2ds5 zcH_nFymZozEpRmXY_((&cS3O1|9i_>a*_OSTlTNP%8__ATThDf&fma9Ek~<>kC_KB z9WGWv4P}o~3Fz&8eaKtv;JLT*aD!~^wR4g`{%hoYbw+h{|=t2mgzw8Jn{Z;SI0|yri7NYkPUqNG%Sscuc zXz1wB3$#muvUPP@*EXj2MwcwHxj)lcVcXd*L#`1{c zIo~v~X|(3?@p}bYMJ=aC8>+gx@1vs$H>av1`(5p)D)FFEb)ekDt-;8lU$xFG1L&L< z{S?6V7X$Fc5C{O)!0q2q1XlD63}DXCva?5MGg_H|MFhr7k0%EsBZkF5YCDX`R5dl< z>DRdo_3wcNAT2K+qWY@k^5V=YJoqJfXEPYx3WIpw0joMRG7DwK7B< z)GkwQM02)c{D-Khw?B*Y76Ak6xu1|3zg0r#85RQ2`wRoz*MtM1J@*_tKXe?l@qridFZd$Nb0AJGgo=2-q z8R#7t&5WFx!?QXmtbu{(pO!`q?4a|kAFQl3ckl?vQ-ob}c5Yx`7=vNUtF;I6HUx>x z4u}VX<7HdOZIK4VZ{-V8gCuA^Bs4TM8sgARA22gtL%>j%2(0V}92}i+F?X|QepxVt zVUTSkk_7G-`f7LpY83E^?`E0BfZbqFI1P7VcmyjqH#c~kUya*w%F?PT_x@09)FBYW z6R0eJuBPT)Q*KfX=DRYqx8VmEtFXpB{EVcRrDtKe35%>#`6_YZx7sc~69^}RkH}(vgZK;T&`fI=b1L#+_@ib=rO3>L^ERNhb{#U>^tMR_p>&@TiIUvHAY zzypKG`%ZK!vWsmm@kkN>pz@-UlV6ozcuLE%64Nm=b7SLptqjCcX${GV!LFd3zlqKUs2}q?@2Ty?gftG|2yH zT50Gs@W}ut?L1h;hD{OR!0F7KRGan0g}i^?0-nVOSj`foLbgB57<=4-4jeu+$&oxsgv7xivY2IMdt1iN&^(A=DHveMS30!i(CcpKP` zd2hm7@DwvlIwODu!>pp-Qy7la<>h6)Sm@s7JZC{%@9jHx0`3`ll{O}++BRPN)jNle zt~Wt->QCHX-#srg--~NBH!~Z;3>Q7WJlm0Fkp@5F9r)K1GaZRM77HCn^23T3>~b0! zA7@xlb4fQl7YPAn0q}|IrbzDIZBL>C5w25ZN4Y)MWUuYs-rk-d?8 z$10nie>cBF8Mt>=+Ra#xThq0`%r6Qy&v0dV*%->jrAQ0i@8&)B!8KN?SFc#V#Qa!? zFhjPwrCg~yS#5Zg6psUvPf*SmM9~d6@ zriv!r8;^zwE$q;zBORT^-T78o#hoU2Y&zwM7VxuPA8+fQ)&gS%*%v64@wK2HWL8%5 z2JHB^@EzPv0aG$`Fz-+S0gmPs zn|-&rre^He7+KD7b zWKe$)5W0>?rD2Qd9xT!mKnWw3DAXzE7Wha|l0^gXIePZFi9(o$1`VKp#oasb&BjkQ zz+p_V`$VL53&t{m=J3aBYid4rd-@$m8SUsK2(tZ8UzWy1F4*hu$#o*u5Df*;_3{2-s7T4$geH-|gcsdah? zdak~{-mS)ad#27JrX$n`9xH&__x!egt<(HkaGMWS!@Vcu>gwuy-Ari``5Gu_02+~* z78({-mS1weY0)ChI|zShqTJXH<$B<6p0@k5#=BQBRo*vlEN9l;!LKi9h~Sjp_y`U zaL_X{!kkTRa8&?G12lg#Xz=-k1%EIOT1H0hPzpIUb2Od%Lqr8Ji2O)POIsKRv))q2 z6_ropnJB8p`SP0g6(|zRpM|8}={MIT%(zK!Q3y%|u%Ij%w!j)_3B-n^OAA;NyL|$4g9EW2Ki=o& z9=3L;=zIxxGy3c%9$q`xDOMt#7iY&q#rne5g?BhY7^q0`JM&c4`6&AP8-7Mk>0HP3MCAKs%vWIVZ2-))krX~3ak^gq(YjL zpghAVh2uOXe)ROr&(FUN47?5lu$%kg(AyT_^I>k{2jkXRj}10JigXYhg6{kDvp#3G zh}yYn-C|0K+%)L-sk2i+)Z3x)<;5NB@BjYu=Wzp5+?y=|m>vayi8HbTpF%9^aVQ}n zf$%xo68I#}C@yaJ!Q$hhU|UDW@K`Xo3#~BBe{50#sl<2Cpa=8$Xt)HzJMa#=M!CSF z0U&cC5`vi?%$vW1Dr{_QbQ*mFBh2q3EGH)?AA0_PY?T9=KLpQ&sO^t;lVE0MhQmhF zrO8ShcAJ{|=|PQBvS1X(ZE)I1VUf`hG3unt&_f|73BzYf1R_fo>94_zno0^r1W0B0 z0siUgeoD{BfNUJ(J*-z7PS*>{H=+DSg6T;wZn|6MjafskE9}x|u>%Is-%EEPX2uaCsUMJeLIw0v)=||A@h+Muc>)p=dAwwp zrhlJ}>5Qaagp8HtWcfn~R-ke1n1?2T=K_(lZk?av0l`=<<1*` zFgGk3^EWJ7ZyBnftQcDuW~=_5`}SC@6^=`SQ!E?C&u-pSBPLMSSqhLnm*WoHXK zGRU||VkGOZc0iya|0Tb}f()=8XB7akLhn_H~ZGopUTT)A+6kZ zf4}{W@*ybos_gjcKG6g2Lb3o@&iC)%{eQgpW{TbTZ{cRvB4j^+>%Ida4c^BfjAkTf zV<0f}5h+Ob1!B> z9oify_~Z+@>}N%4TV&JVBxF=qCv2;Op5>7Y`kI@|1hnTpn1199a`hs9cD3qxrF<@% zI)(amKP~?dJSopp%U`XziM%=a%`B`tyc*Jiym3r$&|Ytoq$hkFhQVLf*h=Z=qeb6BacT0;7=4SXwfLEEkV-(0AO#)8=X9I9O65?)%q)UIHRW zfPlIlYr!rt+S-Z^w6xlFCsld&PP3N}Dp&C-;|N5$zwBz<4|FGdIS^JRW`P)VNh~}t zS7DCD`Sa(GpzC(B(N3s5J-4SV$fKzEc)6JgsUBWeTL^~Yz+pqVsA6KXIfz$|wzznB zk0BQTEd^{_Rza8M7v!OxbPNpb%fIe8j_1J1g@EbjBy60qYK99iBX0q}b3&KNNL6w) ztF#`&Awyz-aSgqOU{e&0b#5w>T0E!5BarO%axpS85+9D(htyQNj|+2T%l*ROF2eos z7Au7ux2d^9DMLZQ<55w{WAh31#!dhbL&{4-Q~DgnNF?%Z zIgkC-}ZFrNStzx1YNtf39& zRSr9|qA-$x)KG6BjUyne!S1(5Fnj@@b4`oB^7>02GLGI4`H#UIfPdAevM%CT`&CK@ zlnMz=G|4+bFUo{tKFlS3n8<*;Q@L_FF{a{0Y31#CIXYlAkQQdY6=&w9pvlS3ehGP-!)hNF zCC5K#S9&>5Wb3Yf`}_?ypj>G<@qN2-nc2Fhm^_B2)QcAsFte2jkUZ+)wcw0;)0-lY z9+pkh2@$wer^xJspY|m_Nf1H60S{CV{FW4f?rIyH3z0`bwjX=`kUV-rFIqe|f72>! zzJdmy4LtiSez0Yd*hYqT5|Wd{eJ)PN5`3^Az+b|30gFxsbq+xpZsvoA}Nw29voUCz+Z5I*G5 zBkbYG`HC8^6K)O?{U)W>z@XC)bN$IafNscbTgB5M` zAlrWfX#)ZI?A~ASZ7q5Aqrv(EN{l{;T<+asXm_9h`xrf60|(3u)Nr3MhSXL8OJ_FW zSsDz!A)P03Vn#MRn&Z5>}HE5*iOxqrQLu zBl-7m_JO<6Ffny5p(~32+lQz-|ArNadw(UyES3(Gh*9h~qFLG6*@*-ZF#L-A7#<$B z8nsn$7II1iOu>IT^le2d9RZkr2hp%9JqWS^g1#9^Z{aaCm@6z_ZO+u)V`pa%fz_rG zSGN^`)a6XVH`kq6^M;2@vvKnD&@Tdk-`mYKA|Vk$?)?{B+Rs;d!vpYDfb?e%K79Iw zBazz;ZE=uX5AqOT4 zb0ki)A4EX1Nw!36Zo;>BP+zfta|MbI2Lz!~iqM$xtG9gG4FHO8PQbkhLurxL)>dnB zHsvP}P+NeT0OMd4vT+bl^Me?LhD{v~4A>}yU2wq(YRyy4f+1p2<Y_N0$;z8p;fIYR)#qUYDfj8V*+*l+S$3CDb35+h39GWDbZsvjR5rnp~u7BXbx7C z65)^3yF0?*2Gh^(VSQDV0HacZA7nrhE+Y6YV6bxzddPC7mJi?nswvmHVhD)4fZa6e zJ0tJ~qIV#a028r)v>QjDzM<67(E@h5?@5m#;9DWwrc3+)?p8%{N_y3e3ft57!gk|jRXRwg-{>cf8$0~lFot#O7t|NZjU|M54v{{NTB{#>EGPrAQ# VSKh)7zW0WB@>oTtSjx!%{{i%uQ%3** diff --git a/doc/figures/zh-cn_image_0000001665553957.png b/doc/figures/zh-cn_image_0000001665553957.png deleted file mode 100644 index 23685e015de39f78aff0ff747ec4908a75f21e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66898 zcmV)mK%T#eP)CbKEl6S$2nmDDX9NOcHrrrq7=~$ow3oI$-i?=b_t@BsvByo@ zjrZ>M^ymKCV}D*6Z{wcEHrN<}%w`sYj94W=5+EdYVI+7$dhgy_m1q8lTp}{#WJY90 zR%O-ApT7H4l@)m+GPVPqRIl_f~^l2u~JHVLdt02K64{o0$&yxK&u@YyPkA;gp?ruRrwyFnQxR(HS%XjH7Vt|73 zC2;EQgJxYx&thJ0dtUQ*#R}wX+XQ)iTCzPF*Q>rcL0)rKd4%N3LuATndm=VJnnLUM z5&&hidAodjq32T%efnnJEhr7`Yu&-jJ<6P{Y_XwK*!(Ha|GL0Tz|u&fNEs>0IigjM zRQ3X{^yDFj2}oV{n)51^YMPBHmNErS%3erY^Ng@((K4x)K2@cBsqQWLifX?R5tdZe zrlNY;W&kkbyD{SfP-Q^Ms}koF4WxleJZL9DkQ9X= zN)@PW3Ffm(<(c!xJ`*LUc|U1T;)0T;G$3E5OmQ~IueGy~Z(CMoT2^qitx7AhL+a2= zi7U92xMaN$ts1GjKEz5e(pyTL>vcdNkkKY(Uyx9-E)1;1^Lr@;)C!e&5Uj;_ilFUv zuLVx%u3t!>&zTK|I4dt7C9d4*%W;nK*-4ODl_SZ^zNgjlQ+=UOQ{oOe`g1+KrF@lg zmbp!dg9v0S23&QcwJsTd9$;%6|VC1r!Yac4)i zi2Ms%IXdzxp`;3SS_@o49WdrtX~!x-ZijX`WG<%2EQGm3H`BWoeN83ufU&r<2A=sa zt~WPBq1a0p<0GH(NLhL(zi!v6p?5$vi$rZvVSZ*)iL=W7 zYLDxH-E`JwP}~i=S6Mz|rBndq+!+ASODgxxMj4EY&Iy_vX)70~nkMUc)+Ffe+S-&{ z&sB0SL7apnNJC0!#oBJbSqdYKdyzxN=(9{{!lKJ&(v#Wivrgo@@+K7}OSbxl$L zg3_!l;ydnmEjbX(?6q?F=Vfi6tX-KqO(-Ot={3(A5I1^4X3po5_C3U4u@GjRP?^4x zN@WUGRqtZf_aQ9S61!JL-Xoj!z)9x&_D<-=`4yBV}Y8P;46(RKz+@Lwmb6m~nb z_k}UE+n6xKco-T|8xGx`X1<|*_H9I;MN>bRJMoQxVRPZ)AFN>7jsixrN5ET-WC0fG zxQ73dT~{a6KwPm-TIUBtd1jCt@S|Yv#%TCoH=yI zWZlxHMSz**e97(`OnTQ|vlbNTnruq;Z(MBQOBq&jL{{Q5GrN0_vCMl$i%PriBE9Lb zXq6pW764Evt+;LzSLNow<5dO()3;RzKEAa+&nx*ah35^cTNaBZcK2Rw*Ou1pa%t^z z0eLz%^gW)*XZJ-ydLIH{E7QMWj+5ks&c=NRZ#MFLO^aSjQk^_v8Tuo1?AaEYz&=39FdD<7NKw#nc?(;zd_w7uiSMxR__nffL~z_fk!i0YEaF7F#l;pCtW@&bs%3J?X$S(~%-5Zs z;4wL|DKl`DkY|F1#XyT$2tH-hH+v*%zqjI@3Cv39q}IKqtHkHIOw(uU8G2Of(7!wc zE=Eq>Y}T5o@!5TcyAB#;3nv3iCGK;4Ou8Oq24_Dys&vjh+~nR7)>t+3kKz95u#gcE zZ&eYr786bGA#*9@O^#JG_hQr5DRt922{K6wsuzLm^1zrcYI)`+^6Ya>X}bMgU@%n9 zM$Z(ud4k4v7f|-QEi4a~Rjq4fl+8Zn;6@4tQDk$vX|A#TAYsIxFcVg`IvNP}na;to z0Z@&8<$flK8OmnR2!}zWG2b36_f3NtU90h2gL4oEW=0+E2>^3i?l30v=!6KEOz!c( zV9}r+6W&VPhvXEBQ1X*23}n;3z$7L(S9F!b^yMB~cvg=-ZJrbN3dh)DDyhPvrqrwy z^?P*0v--*}l#C_c8@eNQLy{kIZ&Q7ngqAk2)z>`ITS?3>=E;DtK_iVf^Lh#x>$djv zu2M>y4m6MrCB%rdR)tTWmE^cLQ^QZHtr$c(#(%C}q%~I>D*kD{w}tSgd8fuMp3Ggf zd8=(rla9kx%RyNYYF2~dH}+fL5OhohM^Y{dTYYZQ$JDuY*(gh{XY?2yjMx@`6-OBS z1uJ=9>oXpx@vE4p_jM9Itz~XC3RTy5`Q4@UD*}ugH=mu}P`hnrdCRoQD2_AqS%7fr z-VqNDBg=KL??Yklnk$q@kJY`2K^Vj_ns5Z0zDB;eXMTzGVDl;1MpYoQSDde`SB{O`6y3jjQ@Ow zAR>Kc-H|cpud!x3AH@n5m5!RrZKxWnj#XBU#+`V3lUFnIUkx@E+K7ejwX%*fX3UN- z%per{wX^)a*3~|-na#H9^SI7?C2NFTuDorDD+Z@FKWJ!qJ3OD*Rzv2?RhvY9ecI9k zLfy37FM#rMz1j(A$??5tVN;?Dc193nx(tm&+4tW6Jtm zN&Z%}zTVrK5>L(7ObWZTKJjvMwl@Pv&7Fr7TFyDARZX$0AAYG}HXn@%FF^C8J($fF zLw-zbc4p&U=ObvB(AlZeY&K!t*py&QY%$N*SdgOvv5w;oa&MowPpG{#pl}Rnl4Y=A zXlGYVkhxn9?2YWfy7k)p3yTiP>|_<8-Fz+PD;BAcG(nIx`N>Mr^p99#yCHB)+7n`g{ClH1O}h}Krj7sz%8);3PXPFzMOgyCD@Dk z8pvpGa|)RJ^uuIj$jZIs$9BIUUCNk0Y* zK8Du>%N;PW+@pb5vZ9$AE~&n$lFqztf1l-<5wpz%bc)T)1kPk~_)}LDAY%8aZvq>K z_if*|^j^AP6m9N^Uk-jUKXIvJbhSIdb3YHQmr%$+7J1lB@ z`l58qZnp_wktGX5S7CBOk)LnbY}t}|j={Wi2x-sBW=G3)>6FCWK&o_^55wB3nT?+( z60$c-VX^+h^0G~(LLR{(bsaLmRbNO;`f{8%$sQ*DMGS_8SbVfR8M&1>D{BsssWP`k6g#uAyZT6*NZA5YeC1Uv4PBVM1H^}*O@Sm z{jy4Ru$r=fS;h*kJ}3n&!K>87@cx1`#eQU%|z2gKyg_l9@KAT-|=)QaPhCz<~% zgWt=~vW}fuq&!1Sz)jwx#w2~=a80rJ78vE}pl*h=$O%#4Q4wm2AEaN7XPh5tG`pRf zlD8*nk{7A@T}Lq4{37IQjsHT=wU@;-vloW%;vXt>ruleGtRuPA(2XPeN`v&~G|eSr|4aoYsr1t>Vv4h>W{fbyJ$<%X?9>*0bGw zkU2e<5)#xU9tdE!7rp5gpnSfT)Ef?oEa6y?OmkN^FyL0qVHGNw(*t$*)Q%G-7^u3? z$@t)>+WdmSganOo-Y?qeU2`~Vy;me>zV%15fX%9TbZXOteEN}TFzAKep~B* z!h{JE!cd(H>vN-4;zR(c8j-;wt=eCjv#m|S+oa>cHNl4VyrsL5*K^ze0X!3vD~d9 zgOC8AqI|>*P&q%(?BZ3mco-Q=HZxHDGfNXO2@O%rto(m>@2-&AV-m@aAUF#q-tJH& z_MPIl_5y_^4;LiVW}keEdn=)Hy=1x)kyxL>FT-)VCc;5RKXvC-StO7nUo%OR`u2P( z=QtqQuNhoU(ShJ|bLZqiZE8J}mr>T8*AX%Zlg?u!|XUK88W6iCw=gSro~L4q9|qTbYcA=2ChG+{hXv!2-LvFb+GN38P4 z9XdAo?Fh|60NU%)r>@JMEE|i=opoARY{pyjEbhv-9SnQd=0aMtKxE&KP(7^^L)$yn z2iHuZKhN@y3`Ye>uXvOCV-YX5DyhB&AeIM$|EoZ?K>4+r&F~4jBIn;wcJ@e9O7hRN zBGX=Ug>~OhX0DX4&jQMJ#RO#=Sk5puyC|F7)|B>h?KV=wsAzdXtUwOJ7^{{u#&ZRx zcbmr>f-CiyL5E<9yJd!rw<^Q9ZP5~&aXm)(1nhC&SXs1slE}>TIkVfgif79us*JNN zRq&!S%fn=?E2Y42FJP-N){EHb6_&eoJsZ=e?v+PCo^RDws|9Fwy7A|Q2;)u8%eN%C zS-xs|SUr4>-^k|o?s?e=YQc#4ZXuY^&O-O_r*dgd4|WAg*-jW7KKz9V$#n)8(-6$zS$UudCxZQJ5v

~%b04a(FsBTkrb6wp4NCrlUzTF!|}>ZlIA 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 Eg6*goLI3~& diff --git a/doc/figures/zh-cn_image_0000001665793709.png b/doc/figures/zh-cn_image_0000001665793709.png deleted file mode 100644 index 6511f95354d114df16f4c4871ff78e508adbb203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3746 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 kTUDmWE&pN({3Jn%C$vNXK6+vWV<0Bw%VAOHXW diff --git a/doc/figures/zh-cn_image_2023072902.png b/doc/figures/zh-cn_image_2023072902.png deleted file mode 100644 index 2ddd83b5d3f695c7db10f4ff8503af570f19b12c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6446 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 diff --git a/doc/figures/zh-cn_image_2023072904.PNG b/doc/figures/zh-cn_image_2023072904.PNG deleted file mode 100644 index 49d6c2a5ca2f802f942589677d47e76493509932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8117 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 diff --git a/doc/figures/zh-cn_image_2023072905.PNG b/doc/figures/zh-cn_image_2023072905.PNG deleted file mode 100644 index 31ea0da1431401157e90e18cd2419bc7524e84ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6483 zcmXY0cRX9~_cvN9HJaF?Mry~Nv6TctYgAFI_NW=Es8uB;)QG)mZ;H|?s%Fd&LYG;@ zR(rIl;2Zt@&g*sWbMO7*yv}*fbKd8i_eC4t*QNom0Z2$lXb?IuV-gZl4Dnh01_kjx zBctm^TuA+lwKYg;M>#f#FV|e|-n&ae@-Fcv!R|Wooyte&ksk>OZO_$3+V5TANJ7H0 zj)2`Y3AEXM17?_1aU=}Kl*t&e+%xdFf3)qtK+dg;L3Bu(bD7&2a zT+W>Z5Z{8?7>7}?(~%hrQ-mpZ_Wn+E_VJ&P zsolu#`WWoE|Av#*>R8A0%BCeiUjQ#x_+}w>?FPSs#bTMwBf^u4I4Zpe6@gOjB>PSi z3jTii5paC6j$>>=vzx)M{ILKd8=(E1#bYmQpM2{K_!fHro!_`iLfl%$U-SB*UOjge zDz2NdGDNA>k)V`j#s&5FR`hamX74OEtyx)}6-2Ugjug4Siw+1l+k1Pr@Ipko>alw~Iq74)FkqfYQkD?X>QPbS23CMkam{%4eL%MxHG<+~dmxV~gHX zLo0XC^h45eKR90RVU@W~LpeekEg8Ln`08U9Wca(t^ZqYBvm_DXvU%Nb(d=s}0M-;x4RNMS`(kK(-bMe$w;Hmin7My^Kn9*PBD5;=@mhBbBsG zm(C6N;wbHtxJS_CtV#+;Y_fNyviV$=4Go@7>*K6H6UJy>bfBHa!%Gxj6RuW50VnR%2RGq~> z?upY~TbJtWYW?h+3TYZ1%#g@s)OG_dD^!kdpg(-Lf1Au8qd~~6N0W8Uk+o#dH#u=j2oih{R&UJ*Guw_?Dh=mcb z#=^IVDg7fh=tZs=m3zIT%L{g{fW5{-&SzXpU9Q@k>m23%A*e9D-H*WFf5%nIWGb2|T(%4d7T|8d` zHl-GJP1>wF{D%$<##P=Zm$JfIo-KSt{IJUU?X(!WUnM$iKOsq}COlMBkQnD5>=-?3 zA3Cw}WdW-gKK`1J?vNe}yVxq)Ri^BRz`%W+%F~9-S4UM$KR@@29PT@!tS(7-;avQM zP>#rv4SsI(ys?Tk(KZ^h@wv;#R`;Vs~@dsi!W}C z@Ic18%PX~%*{c)C=ssVcRaJwP ze<8W;{I}VuHS+$!G}3v@_PzLTBSW^Vb;DoyAI3KWMiM3L-l8HmZg~l^;mM=ckfz`U zzQ<_T!E4x}?(%^SuO1re4-%sP)GJzjg~r+B4+J4Ea8F*edpnQAlf$D~RRJzqu4?4` ziuaDkgIZ^7_p)DRRm5quH2ElwwJ-#3L^4!Ki4mR~`-g&BB0(G5w!gKn;60TIA#y9Z zH&+F?W3f$$=2Y${Yvj@tsn&lv`=r5)* z3DO?R_sCmCpS@d(dde8`i1JFG1x@?z9qQB6Bh*(=;(jjojbGpveuZ?{4pJ-Br(-Q> zwXGz+FX^Z^c=U7he{t`bQGt8jopjEybtusb$+6mN>*ia<58mn6Jz?7}Cp+Z>w(5Tz zJN$XepoZ*X8;(J3t(|^kC?7AxYOLAojnWu(ZkFr%gEjEDfZ@1$$Bw7WnOPV=Lo_j= zgl(n5c0V8Q{jl^dtg5PdwwqyB)a1#o6tII$7qv7rHGL)CenM7$|BaN9jScOD|2<)UycV8=6>~g8 zL3~Vc0W{TJ85kEAqKhSL75B(6AAVEGW=$cm3K-;J*Yd*? zjEc4Jr5QHe5#*G=68P@&@SQsr=uopf@u!daQ)SF?XhMyLDz3Gi^)ix zZZ+ce1_kn2?ru#r_8$#yN@wX?8*(#rl^{~;J*K2gOiZ|QMzR->?fe?{%epUT+IFWJ zT^tTqM^o30CQ)u-Y&8-aFX+J&}}}c zpaaJms}@kT>07Dq*Jms`!ai5p3v&HIu)edm^U3jyXO-?F(AK<8UJCiy5#9kbJcM^| z^75u#_|_(pAuhIgH`eYYW7QqhOK2%*;Uf=5k~ts^XU!y>(3TzC(1G2pjUz? zL4bb-&l$ddHBj^Xo1+v^>lSHbVG+B()L$I1JLjAu<&aaO+vGj(HO;B?tOi}E8NFCp zo~MD!QyH%|6K7y#%+eKB7*#z9w#kNFLzD(&{2j>Q{vHjBM#?G1`;Xg&Fy*LGN)a@} zeY0`l2TIvILZ<*Hms{BU46*WpKC+85ln9{j(>nBr79RQ-td0-l@`MRD&ILRq7Nhs7 z(BY%~ey*h~mpnXh29fI?Vh{aVue$|ke4GDE_ClA5V- z3{qB*g}%@>H}YIox!)Ds{*qbpS47c96E|d02Vn^Y0udMHbk`jkU6tl~w%!t+Vj3^C zss4eKOzzDr1;4VaPYX(6{0o1R<&TY^`g0sZY*LOfm9XqPKvU_O7kS|qL0<)CoIA7= zIc3T45@}A4nA;Lfgi(wT(@Y*HZMo><_E{5&RPM9N-PW>hCJ=g76ePs5UF4H$0xWJ= zSMI)>VdOLk0acz6tiqn6v8aZ(0xlO$c{;8PV_y0(a!U^eGURUdIgXhM=X?<*bXr{< zjjucnmjFkI?AW0rO4rMX#~tK|P$ zXiY&}p+^|EoGyh_}hvDjSDTuAC0@g06k`{=Jj2Df9?Q1(%Fm%lw_N|arLgjOg;0Bdyh*Q*CjNfq`utk zs*ss}-6R=I?_Y9-QEBQC5*vSZ=jVq->yyn}pKd7J1^VPg{1>M14O{xzsyldntk93Q zTliJVZhV@K@jajQSkS^X6#?uNlfZ1sn(D8mJ$#QdG``zzrF&CI&g(%;TV8d)7-JcZ zXk_}Ns{lgH+Y#WY{jhi><`$~QYF4$KEkHG2iC4dbG1c%20(DU!yz#!%6BKw(|=H86@(aMH`dgqTv0e2n2ms42xv z!lCe}d%c0p8^6nj4K#Q60DKv09zK>K_w`G{dj%`3j1_OgT@irc4t{O~&w**0%0+JEQ_IOY&ud`7m?UD}pPl5yY*jT_8`R0uMf-c0@0 z>c2UR`;CbDV!t@w>R+8zvc{q3b%0|;fNu@Oo*No7u$I$ohI|J7hJTVrR9RcYqjfQ3V5hM`iOsOsuT zii}w%X676PDt_S+mU`jU#zdi=4bq|p

K0y5i+h6!btH^8vINAM3!fkoL&4DJD4fnfW`PcGQG1U@L!Ok2QIjr+2A8 zG3N=Y!C`Ce^Gt64eB+f5e#s~TxKcf~VSp>OYXpoLC2yDvo=%(Blk#xvNq&$RBeYuE zXw*;yno*;{AhUw4QzAlxwpG8vqq|4}vC8k+jU(IcraoZvq?jpFtTdqb{}S6>pwE(e zgNv|~G#rFy33Mu~b)y4K!3^YUs^*Bc zvz<@Q=CLmqBq`1oS{OiePN;6&T9J+*U94b>H^mxkk`t0W%h#29r&^>bYs;N>I8Q&H z*s{iPyk~bTe0yUdJ&g2OMzqg}vQ~^P1lvX)Aj;_ya z&Uzn2vnG2Y$vZd(f{=5r)&H3O;2tlS9E!e`yr61>YYGyDrwnkTmsO$S-NI2Fng=a5 zRI|>O82~Q+wqS5d2Onb;ANny2jOcI(XP1_DK~{iaaEg3hg1|*>MTWe|vLGQ2lXyY|t#fV4WyiFtpV3uEQ&h;2`8ult z7p-~MDh=+&+oPdB%8|Y}27H`i_pYz=5QMZ69t<@ML&*9mOsi13jbZ?c0bqa^jGfS;QhqWwe-DrjiMv`h`u$mWsx9qODK3FcaeG#ouDLBnky0Z4vs)gET z{Qfm$ajqrzTGMToq7hqDDOLuiQvKP1hc?BY1pjg!iDej}1$%k;Z>})aPF7*|sKDa- zzZJYOVaffvkgJnZ$OxvdN9nYy#ihf!snb(^aMW!BsUOBmOnS zy}*7Sj*onyHliHwnIEf8Ca?pgyh=}9NYuuIUmUC6A*LG(;|ffQ)alFCFa;ea$uZf7 zh`ECIFs&%tIDM=48Be0@68tVSqq_VK6gc{RVfDxKP#Ua^PUAr_iBp?Z$kskM%U|#ECFTYl?LWmwqpZInha&I5@`NN!Mw!I|Z8V#O*C?3C}9N zhI}CA8%u$Y?T>*w22tvEh8)|Jf&73+5d&emT)ImMH zktFm4iI z4|03!;#7kC_qe2`0trqxrOhm%AryNs?yYwh`Xd}+rr@(g%XO&|3VC+)fWNOdVX|K@ zNoT9VgNda>B(l0yaa{oie{?#f=F_chEjHVBHPfp4gX~smtq?~Mri2bC z$bvTEBJAwI99}sNiXU9h>JI~%`oGF)Or!&_$yU}m#hZw4ZIt(Sazsz3&syTSbbo)X ztwYHM-96aou)vG|my^rEH2_5$uE{J~A>!i!VTaqo@^ z7QEo%I5-m^7VNbZThE>T!tK>A;ofuF$>e3%?y$@e97^`p6y)a~Imbs%z<#7l=+m8y zt}=3=uS|6vlh#DqDfh&VvUYaR{ga5*gi8FUS1}t2KAC!6u^r`YHZ|X_SkGT~Y|>NN zU8IE?g~OkC1SThx7GV|`qTEJg1{{W$hbL#l#oEa8v`+V0os?cY`|LsRsED@~`0@eN z5``DZ9)8Nre_8^L%XwacJS=9iS>=Kj?l0#A{o_;hYbn}?QSvb@+AKKDri6d>_`CuHF>onOU1?+jd!3f2y#?h|diB3p8wVROR z)4jkkYe*-A3HH&poU7Oe>WJT zS*|>*G}I$Y=jemW6!~L@wh6i5A-rn6^2mbCC>0)m!|}V(D5?bcJ(Q_Wbl<1J;ujra z^LO~-j}{qjOyHMU8F~|*Bl5OZA@!~lA;JSQ%FiwtOHZ|ED>biF+^*$4-quzj_)fAC z&cjsJ;7rF@w?&a==KrQ$`j&_K$e4uy$1>t+er{-Kj_GmvMF`urs+w78|u-P`APq~B>DxO?h8R|CY=s1RLh~ zWP^>;Qk8b^Tb!)x*;Co}ITbA3-|q|YpP8z@a)J-DOykQpK){@!h-mt>&aLmNVT#Hq z@24O4&iflqdUYs6nNKq7$;_MkdLf(2ZLN8D_kSF9L?GN(!f(Irp{iCpsj}5Cd=r>` zK4hT#_<7lWc_nMx=bHlur2dsAi&drjGMeC!Y-2fPp=f2Ha9ZfPHDLBnZk)G@Grs!g z*XGt>z{GDI{3p2k;;M<@Yo*j7}#!R)Z`1x;14~Q8LzG8uk7w|6Jb>H_uu z!OQTgZm>vjMC*zkE0STqLh{%z9{=D>SDN&KvMPdXXzY2nEb&JO2?Bl}R;ywA@_)5( BJ`ex^ diff --git a/doc/figures/zh-cn_image_2023072906.PNG b/doc/figures/zh-cn_image_2023072906.PNG deleted file mode 100644 index 1c937421c10ebcc6c58f5769b9cda94e9789f8a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11526 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 diff --git a/doc/figures/zh-cn_image_202307291.png b/doc/figures/zh-cn_image_202307291.png deleted file mode 100644 index 9b1e6b767f37c3f3c816dbe4a8aeca1468b065e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4263 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 U)lUP(xMTqIwDDRM8V=$A2O=He!vFvP diff --git a/doc/public_sys-resources/icon-caution.gif b/doc/public_sys-resources/icon-caution.gif deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git a/doc/public_sys-resources/icon-danger.gif b/doc/public_sys-resources/icon-danger.gif deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git a/doc/public_sys-resources/icon-note.gif b/doc/public_sys-resources/icon-note.gif deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git a/doc/public_sys-resources/icon-notice.gif b/doc/public_sys-resources/icon-notice.gif deleted file mode 100644 index 86024f61b691400bea99e5b1f506d9d9aef36e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git a/doc/ts-composite-components-arkdialog.md b/doc/ts-composite-components-arkdialog.md deleted file mode 100644 index 791271f..0000000 --- a/doc/ts-composite-components-arkdialog.md +++ /dev/null @@ -1,414 +0,0 @@ -# Dialog - - -弹出框是一种模态窗口,通常用于在保持当前的上下文环境时,临时展示用户需关注的信息或待处理的操作,用户在模态弹出框内完成上述交互任务。模态弹出框需要用户进行交互才能够退出模态模式。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { TipsDialog, SelectDialog, ConfirmDialog, AlertDialog, LoadingDialog } from '@ohos.arkui.advanced.Dialog' -``` - - -## 子组件 - -无 - - -## TipsDialog - - -TipsDialog({controller: CustomDialogController, imageRes: Resource, imageSize: SizeOptions, title: ResourceStr, content?: ResourceStr, checkTips?: ResourceStr, ischecked?: boolean, primaryButton?: ButtonOptions, secondaryButton?: ButtonOptions}) - - -提示弹出框,即为带图形确认框,必要时可通过图形化方式展现确认框。 - - -**装饰器类型:**\@CustomDialog - - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 装饰器类型 | 描述 | -| -------- | -------- | -------- | -------- | -------- | -| controller | [CustomDialogController](https://docs.openharmony.cn/pages/v3.2/en/application-dev/reference/arkui-ts/ts-methods-custom-dialog-box.md/) | 是 | - | 提示弹出框控制器。 | -| imageRes | [Resource](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resource) | 是 | - | 展示的图片。 | -| imageSize | [SizeOptions](https://docs.openharmony.cn/pages/v4.0/en/application-dev/reference/arkui-ts/ts-types.md/#sizeoptions) | 是 | - | 自定义图片尺寸。 | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | - | 提示弹出框标题。 | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | - | 提示弹出框内容。 | -| checkTips | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | - | checkbox的提示内容。 | -| isChecked | boolean | 否 | \@Prop | value为true时,表示checkbox已选中,value为false时,表示未选中。
默认值:false。 | -| primaryButton | [ButtonOptions](#buttonoptions) | 否 | - | 提示框左侧按钮。 | -| secondaryButton | [ButtonOptions](#buttonoptions) | 否 | - | 提示框右侧按钮。 | - - -## SelectDialog - -SelectDialog({controller: CustomDialogController, title: ResourceStr, content?: ResourceStr, selectedIndex?: number, confirm?: ButtonOptions, radioContent?: Array<SheetInfo>}) - -选择类弹出框,弹框中以列表或网格的形式提供可选的的内容。 - -**装饰器类型:**\@CustomDialog - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| controller | CustomDialogController | 是 | 选择弹出框控制器。 | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 选择弹出框标题。 | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 选择弹出框内容。 | -| selectedIndex | number | 否 | 选择弹出框的选中项。 | -| confirm | boolean | 否 | 确认按钮。 | -| radioContent | Array<[SheetInfo](https://docs.openharmony.cn/pages/v3.2/en/application-dev/reference/arkui-ts/ts-methods-action-sheet.md/)> | 否 | 选择弹出框的子项内容列表,每个选择项支持设置图片、文本和选中的回调事件。 | - - -## ConfirmDialog - -ConfirmDialog({controller: CustomDialogController, title: ResourceStr, content?: ResourceStr, checkTips?: ResourceStr, ischecked?: boolean, primaryButton?: ButtonOptions, secondaryButton?: ButtonOptions}) - -信息确认类弹出框,操作未正确执行(如网络错误、电池电量过低),或未正确操作时(如指纹录入),反馈的错误或提示信息。 - -**装饰器类型:**\@CustomDialog - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| controller | CustomDialogController | 是 | - | 确认弹出框控制器。 | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | - | 确认弹出框标题。 | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | - | 确认弹出框内容。 | -| checkTips | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | - | checkbox的提示内容。 | -| isChecked | boolean | 否 | \@Prop | value为true时,表示checkbox已选中,value为false时,表示未选中。
默认值:false。 | -| primaryButton | [ButtonOptions](#buttonoptions) | 否 | - | 确认框左侧按钮。 | -| secondaryButton | [ButtonOptions](#buttonoptions) | 否 | - | 确认框右侧按钮。 | - - -## AlertDialog - -AlertDialog({controller: CustomDialogController, content?: ResourceStr, primaryButton?: ButtonOptions, secondaryButton?: ButtonOptions}) - -操作确认类弹出框,触发一个将产生严重后果的不可逆操作时,如删除、重置、取消编辑、停止等。 - -**装饰器类型:**\@CustomDialog - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| controller | CustomDialogController | 是 | 确认弹出框控制器。 | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 确认弹出框内容。 | -| primaryButton | [ButtonOptions](#buttonoptions) | 否 | 确认框左侧按钮。 | -| secondaryButton | [ButtonOptions](#buttonoptions) | 否 | 确认框右侧按钮。 | - - -## LoadingDialog - -LoadingDialog({controller: CustomDialogController, content?: ResourceStr}) - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| controller | CustomDialogController | 是 | 加载弹出框控制器。 | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 加载弹出框内容。 | - - -## ButtonOptions - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -| 名称 | 类型 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 按钮的内容。 | -| action | () => void | 否 | 按钮的点击事件。 | -| background | [ResourceColor](https://docs.openharmony.cn/pages/v3.2/en/application-dev/reference/arkui-ts/ts-types.md/#resourcecolor) | 否 | 按钮的背景。 | -| fontColor | [ResourceColor](https://docs.openharmony.cn/pages/v3.2/en/application-dev/reference/arkui-ts/ts-types.md/#resourcecolor) | 否 | 按钮的字体颜色。 | - - -## 示例 - - -### 示例1 - -``` -import { TipsDialog } from '@ohos.arkui.advanced.Dialog' -@Entry -@Component -struct Index { - radioIndex = 0; - isChecked = false; - dialogControllerImage: CustomDialogController = new CustomDialogController({ - builder: TipsDialog({ - imageRes: $r('app.media.icon'), - title: '文本标题', - content: '文本文本文本文本文本文本文本文本文本', - isChecked: this.isChecked, - checkTips: '不再提示', - primaryButton: { - value: '取消', - action: () => { - console.info('Callback when the CheckBox is clicked') - }, - }, - secondaryButton: { - value: '确定', - action: () => { - console.info('Callback when the second button is clicked') - } - }, - }), - autoCancel: true, - customStyle: true, - alignment: DialogAlignment.Bottom - }) - - build() { - Row() { - Stack() { - Column(){ - Button("上图下文弹出框") - .width(96) - .height(40) - .onClick(() => { - this.dialogControllerImage.open() - }) - }.margin({bottom: 300}) - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - .backgroundImageSize({ width: '100%', height: '100%' }) - .height('100%') - } -} -``` - -![20230728-111325](figures/20230728-111325.png) - - -### 示例2 - -``` -import { SelectDialog } from '@ohos.arkui.advanced.Dialog' -@Entry -@Component -struct Index { - radioIndex = 0; - isChecked = false; -dialogControllerList: CustomDialogController = new CustomDialogController({ - builder: SelectDialog({ - title: '文本标题', - selectedIndex: this.radioIndex, - confirm: { - value: '取消', - action: () => null, - }, - radioContent: [ - { - title: '文本文本文本文本文本', - action: () => { - this.radioIndex = 0 - } - }, - { - title: '文本文本文本文本', - action: () => { - this.radioIndex = 1 - } - }, - { - title: '文本文本文本文本', - action: () => { - this.radioIndex = 2 - } - }, - ] - }), - customStyle: true, - alignment: DialogAlignment.Bottom, - autoCancel: false -}) - - build() { - Row() { - Stack() { - Column(){ - Button("纯列表弹出框") - .width(96) - .height(40) - .onClick(() => { - this.dialogControllerList.open() - }) - }.margin({bottom: 300}) - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - .backgroundImageSize({ width: '100%', height: '100%' }) - .height('100%') - } -} -``` - -![20230728-101201](figures/20230728-101201.png) - - -### 示例3 - -``` -import { ConfirmDialog } from '@ohos.arkui.advanced.Dialog' -@Entry -@Component -struct Index { - radioIndex = 0; - isChecked = false; -dialogControllerCheckBox: CustomDialogController = new CustomDialogController({ - builder: CheckBoxDialog({ - title: '文本标题', - content: '文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本', - isChecked: this.isChecked, - checkTips: '禁止后不再提示', - primaryButton: { - value: '禁止', - action: () => null, - }, - secondaryButton: { - value: '允许', - action: () => { - this.isChecked = false - console.info('Callback when the second button is clicked') - } - }, - }), - autoCancel: true, - customStyle: true, - alignment: DialogAlignment.Bottom -}) - - build() { - Row() { - Stack() { - Column(){ - Button("文本+勾选弹出框") - .width(96) - .height(40) - .onClick(() => { - this.dialogControllerCheckBox.open() - }) - }.margin({bottom: 300}) - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - .backgroundImageSize({ width: '100%', height: '100%' }) - .height('100%') - } -} -``` - -![20230728-101236](figures/20230728-101236.png) - - -### 示例4 - -``` -import { AlertDialog } from '@ohos.arkui.advanced.Dialog' -@Entry -@Component -struct Index { - radioIndex = 0; - isChecked = false; -dialogControllerConfirm: CustomDialogController = new CustomDialogController({ - builder: AlertDialog({ - content: '文本文本文本文本文本', - primaryButton: { - value: '取消', - action: () => null, - }, - secondaryButton: { - value: '确认', - fontColor: $r('sys.color.ohos_id_color_warning'), - action: () => { - console.info('Callback when the second button is clicked') - } - }, - }), - autoCancel: true, - customStyle: true, - alignment: DialogAlignment.Bottom -}) - - build() { - Row() { - Stack() { - Column(){ - Button("纯文本弹出框") - .width(96) - .height(40) - .onClick(() => { - this.dialogControllerConfirm.open() - }) - }.margin({bottom: 300}) - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - .backgroundImageSize({ width: '100%', height: '100%' }) - .height('100%') - } -} -``` - -![20230728-101355](figures/20230728-101355.png) - - -### 示例5 - -``` -import { LoadingDialog } from '@ohos.arkui.advanced.Dialog' -@Entry -@Component -struct Index { - radioIndex = 0; - isChecked = false; -dialogControllerProgress: CustomDialogController = new CustomDialogController({ - builder: ProgressDialog({ - content: '文本文本文本文本文本...', - }), - autoCancel: true, - customStyle: true, - alignment: DialogAlignment.Bottom -}) - - build() { - Row() { - Stack() { - Column(){ - Button("进度条弹出框") - .width(96) - .height(40) - .onClick(() => { - this.dialogControllerProgress.open() - }) - }.margin({bottom: 300}) - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - .backgroundImageSize({ width: '100%', height: '100%' }) - .height('100%') - } -} -``` - -![20230728-101306](figures/20230728-101306.png) diff --git a/doc/ts-composite-components-composelistitem.md b/doc/ts-composite-components-composelistitem.md deleted file mode 100644 index 17aa3d6..0000000 --- a/doc/ts-composite-components-composelistitem.md +++ /dev/null @@ -1,240 +0,0 @@ -# ComposeListItem - - -列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { ComposeListItem } from "@ohos.arkui.advanced.ComposeListItem" -``` - - -## 子组件 - -无 - - -## 接口 - -ComposeListItem({contentItem?: ContentItem, operateItem?: OperateItem}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| contentItem | [ContentItem](#contentitem) | 否 | \@Prop | 定义左侧以及中间元素。 | -| operateItem | [OperateItem](#operateitem) | 否 | \@Prop | 定义右侧元素。 | - - -## ContentItem - -| 名称 | 值 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| iconStyle | [IconType](#icontype枚举说明) | 否 | 左侧元素-图标样式。 | -| icon | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 左侧元素-图标。 | -| primaryText | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 中间元素-标题内容。 | -| secondaryText | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 中间元素-副标题内容。 | -| description | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 中间元素-描述内容。 | - - -## IconType枚举说明 - -| 名称 | 描述 | -| -------- | -------- | -| BADGE | 左侧图标为badge类型,图标大小为8\*8dp。 | -| NORMAL_ICON | 左侧图标为小图标类型,图标大小为16\*16dp。 | -| SYSTEM_ICON | 左侧图标为系统图标类型,图标大小为24\*24dp。 | -| HEAD_SCULPTURE | 左侧图标为头像类型,图标大小为40\*40dp。 | -| APP_ICON | 左侧图标为应用图标类型,图标大小为64\*64dp。 | -| PREVIEW | 左侧图标为预览图类型,图标大小为96\*96dp。 | -| LONGITUDINAL | 左侧图标为横向特殊比例(宽比高大),保持最长边为96dp。 | -| VERTICAL | 左侧图标为竖向特殊比例(高比宽大),保持最长边为96dp。 | - - -## OperateItem - -| 名称 | 值 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| arrow | [OperateIcon](#operateicon) | 否 | 右侧元素-箭头,大小为12\*24dp。 | -| icon | [OperateIcon](#operateicon) | 否 | 右侧元素-第一个图标,大小为24\*24dp。 | -| subIcon | [OperateIcon](#operateicon) | 否 | 右侧元素-第二个图标,大小为24\*24dp。 | -| button | [OperateButton](#operatebutton) | 否 | 右侧元素-按钮。 | -| switch | [OperateCheck](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/blob/master/doc/ts-composite-components-composelistitem.md#switchcheckboxradio-operatecheck) | 否 | 右侧元素-开关。 | -| checkbox | [OperateCheck](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/blob/master/doc/ts-composite-components-composelistitem.md#switchcheckboxradio-operatecheck) | 否 | 右侧元素-多选框,大小为24\*24dp。 | -| radio | [OperateCheck](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/blob/master/doc/ts-composite-components-composelistitem.md#switchcheckboxradio-operatecheck) | 否 | 右侧元素-单选,大小为24\*24dp。 | -| image | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 右侧元素-图片,大小为48\*48dp。 | -| text | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 右侧元素-文字。 | - - -## OperateIcon - -| 名称 | 值 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 右侧元素-图标/箭头。 | -| action | ()=>void | 否 | 右侧元素-图标/箭头点击事件。 | - - -## OperateButton - -| 名称 | 值 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| text | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 右侧元素-按钮文字。 | - - -## Switch/CheckBox/Radio-OperateCheck - -| 名称 | 值 | 必填 | 描述 | -| -------- | -------- | -------- | -------- | -| isCheck | boolean | 否 | 右侧元素-右侧Switch/CheckBox/Radio选中状态。 | -| onChange | (value: boolean)=>void | 否 | 右侧元素-右侧Switch/CheckBox/Radio选中状态改变时触发回调。 | - - -## 示例1-纯文本 - -```ts -import { ComposeListItem } from '@ohos.arkui.advanced.ComposeListItem'; -import { ContentItem } from '@ohos.arkui.advanced.ComposeListItem'; - -@Entry -@Component -struct ComposeListItemExample { - build() { - Column() { - List() { - ListItem(){ - ComposeListItem({ - contentItem: ({ - primaryText: '单行列表' - }) - }) - } - } - } - } -} -``` - - -![示例1-纯文本](figures/zh-cn_image_2023072903.PNG) - - -## 示例2-左侧元素+文本 - -```ts -import { ComposeListItem } from '@ohos.arkui.advanced.ComposeListItem'; -import { IconType } from '@ohos.arkui.advanced.ComposeListItem'; -import { ContentItem } from '@ohos.arkui.advanced.ComposeListItem'; - -@Entry -@Component -struct ComposeListItemExample { - build() { - Column() { - List() { - ListItem(){ - ComposeListItem({ - contentItem: ({ - iconStyle: IconType.NORMAL_ICON, - icon: $r('sys.media.ohos_app_icon'), - primaryText: '双行列表', - secondaryText: '辅助文字' - }) - }) - } - } - } - } -} -``` - - -![示例2-左侧元素+文本](figures/zh-cn_image_2023072904.PNG) - - -## 示例3-右侧元素 - -```ts -import { ComposeListItem } from '@ohos.arkui.advanced.ComposeListItem'; -import { OperateItem } from '@ohos.arkui.advanced.ComposeListItem'; -import promptAction from '@ohos.promptAction' - -@Entry -@Component -struct ComposeListItemExample { - build() { - Column() { - List() { - ListItem() { - ComposeListItem({ - operateItem: ({ - icon: { - value: $r('sys.media.ohos_app_icon'), - action: () => { - promptAction.showToast({ message: 'icon' }) - } - }, - text: '右侧文本' - }) - }) - } - } - } - } -} -``` - - -![示例3-右侧元素](figures/zh-cn_image_2023072905.PNG) - - -## 示例4-左右元素+文本 - -```ts -import { ComposeListItem } from '@ohos.arkui.advanced.ComposeListItem'; -import { IconType } from '@ohos.arkui.advanced.ComposeListItem'; -import { ContentItem } from '@ohos.arkui.advanced.ComposeListItem'; -import { OperateItem } from '@ohos.arkui.advanced.ComposeListItem'; -import promptAction from '@ohos.promptAction' - -@Entry -@Component -struct ComposeListItemExample { - build() { - Column() { - List() { - ListItem() { - ComposeListItem({ - contentItem: ({ - iconStyle: IconType.NORMAL_ICON, - icon: $r('sys.media.ohos_app_icon'), - primaryText: '双行列表', - secondaryText: '辅助文字' - }), - operateItem: ({ - icon: { - value: $r('sys.media.ohos_app_icon'), - action: () => { - promptAction.showToast({ message: 'icon' }) - } }, - text: '右侧文本' - }) - }) - } - } - } - } -``` - -![示例4-左右元素+文本](figures/zh-cn_image_2023072906.PNG) diff --git a/doc/ts-composite-components-composetitlebar.md b/doc/ts-composite-components-composetitlebar.md deleted file mode 100644 index fd6143f..0000000 --- a/doc/ts-composite-components-composetitlebar.md +++ /dev/null @@ -1,177 +0,0 @@ -# ComposeTitleBar - - -普通型标题栏的一种,支持设置标题、头像(可选)、副标题(可选);可用于一级页面、二级及其以上界面(配置返回键)。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { ComposeTitleBar } from "@ohos.arkui.advanced.ComposeTitleBar" -``` - - -## 子组件 - -无 - - -## 接口 - -ComposeTitleBar({item?: ComposeTitleBarMenuItem, title: ResourceStr, subtitle?: ResourceStr, menuItems?: Array<ComposeTitleBarMenuItem>}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| item | [ERROR:Invalid link:zh-cn_topic_0000001617072014.xml#xref1948916525328,link:zh-cn_topic_0000001609264184.xml#section478410410453](zh-cn_topic_0000001609264184.xml#section478410410453) | 否 | 用于左侧头像的单个菜单项目 | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 标题 | -| subtitle | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 副标题 | -| menuItems | Array<[ERROR:Invalid link:zh-cn_topic_0000001617072014.xml#xref33563123310,link:zh-cn_topic_0000001609264184.xml#section478410410453](zh-cn_topic_0000001609264184.xml#section478410410453)> | 否 | 右侧菜单项目列表 | - - -### ComposeTitleBarMenuItem - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 图标资源 | -| isEnabled | boolean | 是 | 是否启用,默认启用 | -| action | () => void | 否 | 触发时的动作闭包 | - - -## 示例 1 - 单行文本 - -``` -import { ComposeTitleBar } from "@ohos.arkui.advanced.ComposeTitleBar" - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - ComposeTitleBar({ - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦" - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001616913438](figures/zh-cn_image_0000001616913438.png) - - -## 示例 2 - 双行文本 - -``` -import { ComposeTitleBar } from "@ohos.arkui.advanced.ComposeTitleBar" - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - ComposeTitleBar({ - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - subtitle: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦" - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001665513149](figures/zh-cn_image_0000001665513149.png) - - -## 示例 3 - 双行文本带菜单 - -``` -import { ComposeTitleBar } from "@ohos.arkui.advanced.ComposeTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - menuItems: { value: Resource, isEnabled: boolean, action: () => void }[] = - [ { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => prompt.showToast({ message: "show toast index 1" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => prompt.showToast({ message: "show toast index 2" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_edit'), - action: () => prompt.showToast({ message: "show toast index 3" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => prompt.showToast({ message: "show toast index 4" }) - } ] - build() { - Row() { - Column() { - Divider().height(2).color(0xCCCCCC) - ComposeTitleBar({ - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - subtitle: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - menuItems: this.menuItems.slice(0, 1), - }) - Divider().height(2).color(0xCCCCCC) - ComposeTitleBar({ - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - subtitle: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - menuItems: this.menuItems.slice(0, 2), - }) - Divider().height(2).color(0xCCCCCC) - ComposeTitleBar({ - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - subtitle: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - menuItems: this.menuItems, - }) - Divider().height(2).color(0xCCCCCC) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001617233250](figures/zh-cn_image_0000001617233250.png) - - -## 示例 4 - 头像+双行文本带菜单 - -``` -import { ComposeTitleBar } from "@ohos.arkui.advanced.ComposeTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - ComposeTitleBar({ - menuItems: [ { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => Prompt.showToast({ message: "show toast index 1" }) - } ], - title: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - subtitle: "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦", - item: { isEnabled: true, value: $r('app.media.app_icon'), - action: () => Prompt.showToast({message:"show toast index portrait"}) - } }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001617393174](figures/zh-cn_image_0000001617393174.png) diff --git a/doc/ts-composite-components-editabletitlebar.md b/doc/ts-composite-components-editabletitlebar.md deleted file mode 100644 index f82a255..0000000 --- a/doc/ts-composite-components-editabletitlebar.md +++ /dev/null @@ -1,130 +0,0 @@ -# EditableTitleBar - - -编辑型标题栏,适用于多选界面或者内容的编辑界面,一般采取左叉右勾的形式。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { EditableTitleBar } from "@ohos.arkui.advanced.EditableTitleBar" -``` - - -## 子组件 - -无 - - -## 接口 - -EditableTitleBar({leftIconType: EditableLeftIconType, title: ResourceStr, menuItems?: Array<EditableTitleBarMenuItem>, onSave?: () => void, onCancel?: () =>void}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| leftIconStyle | [ERROR:Invalid link:zh-cn_topic_0000001665632009.xml#xref19441410133613,link:zh-cn_topic_0000001658583341.xml#section1340683083317](zh-cn_topic_0000001658583341.xml#section1340683083317) | 是 | 左侧按钮类型 | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 标题 | -| menuItems | Array<[ERROR:Invalid link:zh-cn_topic_0000001665632009.xml#xref81499144365,link:zh-cn_topic_0000001658583341.xml#section1287821819325](zh-cn_topic_0000001658583341.xml#section1287821819325)> | 否 | 右侧菜单项目列表 | -| onSave | () => void | 否 | 保存时的动作闭包 | -| onCancel | () => void | 否 | 当左侧按钮类型为 Left,触发取消时的动作闭包 | - - -### EditableLeftIconType - -| 名称 | 描述 | -| -------- | -------- | -| Back | 返回按钮 | -| Cancel | 取消按钮 | - - -### EditableTitleBarMenuItem - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 图标资源 | -| isEnabled | boolean | 是 | 是否启用,默认启用 | -| action | () => void | 否 | 触发时的动作闭包 | - - -## 示例 1 - -``` -import { EditableLeftIconType } from "@ohos.arkui.advanced.EditableTitleBar" -import { EditableTitleBar } from "@ohos.arkui.advanced.EditableTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - EditableTitleBar({ - leftIconStyle: EditableLeftIconType.Cancel, - title: "编辑页面", - menuItems: [], - onCancel: () => { - Prompt.showToast({ message: "on cancel" }) - }, - onSave: () => { - Prompt.showToast({ message: "on save" }) - } - }) - }.width('100%') - }.height('100%') - } -} -``` - - -![zh-cn_image_0000001617073302](figures/zh-cn_image_0000001617073302.png) - - -## 示例 2 - -``` -import { EditableLeftIconType } from "@ohos.arkui.advanced.EditableTitleBar" -import { EditableTitleBar } from "@ohos.arkui.advanced.EditableTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - EditableTitleBar({ - leftIconStyle: EditableLeftIconType.Back, - title: "编辑页面", - menuItems: [ - { value: $r('app.media.ic_public_reduce'), - isEnabled: false, - action: () => { - Prompt.showToast({ message: "show toast index 2" }) - } - } - ], - onCancel: () => { - Prompt.showToast({ message: "on cancel" }) - }, - onSave: () => { - Prompt.showToast({ message: "on save" }) - } - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001665393297](figures/zh-cn_image_0000001665393297.png) diff --git a/doc/ts-composite-components-filter.md b/doc/ts-composite-components-filter.md deleted file mode 100644 index f6118c8..0000000 --- a/doc/ts-composite-components-filter.md +++ /dev/null @@ -1,119 +0,0 @@ -# Filter - - -多条件筛选,帮助用户在大量信息中找到所需内容,应结合具体场景选择合适筛选方式。多条件筛选控件由筛选器与悬浮条构成,悬浮条可下拉展示悬浮筛选器。筛选器样式可分为多行可折叠类型与多行列表类型,并可以在筛选器最后一行附加快捷筛选器。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { Filter } from '@ohos.arkui.advanced.Filter' -``` - - -## 子组件 - -无 - - -## Filter - -Filter({ multiFilters: Array<FilterParams>, additionFilters: FilterParams, filterType: FilterType, onFilterChanged: (Array<FilterResult>) => void }) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - - -| 参数名 | 参数类型 | 必选 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| multiFilters | Array<[FilterParams](#filterparams)> | 是 | \@Prop | 多条件筛选列表。 | -| additionFilters | [FilterParams](#filterparams) | 否 | \@Prop | 附加快捷筛选项。 | -| filterType | [FilterType](#filtertype) | 否 | \@Prop | 筛选器的样式类型。 | -| onFilterChanged | (Array<[FilterResult](#filterresult)>) => void | 是 | \@Prop | 用户点击后的回调事件。回调函数的参数为选中的筛选项结果列表。 | -| container | ()=>void | 否 | \@BuilderParam | 筛选结果展示区域自定义内容,通过尾随闭包形式传入。 | - - -## FilterParams - -| 名称 | 值 | 是否必选 | 描述 | -| -------- | -------- | -------- | -------- | -| name | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 筛选项维度名称。 | -| options | Array<[ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr)> | 是 | 筛选项维度可选项列表。 | - - -## FilterType - -| 参数名 | 描述 | -| -------- | -------- | -| MULTI_LINE_FILTER | 多行可折叠类型筛选器。 | -| LIST_FILTER | 多行列表类型筛选器。 | - - -## FilterResult - -| 名称 | 值 | 是否必选 | 描述 | -| -------- | -------- | -------- | -------- | -| name | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 筛选项维度名称。 | -| index | number | 是 | 该维度筛选项选中项目的索引值。
默认值:-1 | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 该维度筛选项选中项目的值。
默认值:"" | - - -## 示例 - -多行可折叠Filter:内容区可完全自定义。 - -``` -import { Filter, FilterParams, FilterResult, FilterType } from '@ohos.arkui.advanced.Filter' - -@Entry -@Component -struct Index { - private filterParam: Array = [{name: '月份', options: ['全部','1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']}, - {name: '年份', options: ['全部','2023','2022','2021','2020','2019','2018','2017','2016','2015','2014','2013','2012','2011','2010','2009','2008']}, - {name: '节气', options: ['全部','立春','雨水','惊蛰','春分','清明','谷雨','立夏','小满','芒种','夏至','小暑','大暑','立秋','处暑','白露','秋分','寒露','霜降','立冬','小雪','大雪','冬至','小寒','大寒']}] - private additionParam: FilterParams = { name: '您还可以搜', options: ['运营栏目1','运营栏目2','运营栏目3','运营栏目4','运营栏目5','运营栏目6']} - private arr: number[] = [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]; - build() { - Column() { - Filter({ - multiFilters: this.filterParam, - additionFilters: this.additionParam, - filterType: FilterType.MULTI_LINE_FILTER, - onFilterChanged: (select: Array) => { - console.log('rec filter change') - for (let filter of select) { - console.log('name:' + filter.name + ',index:' + filter.index + ',value:' + filter.value) - } - } - }){ - List({ initialIndex: 0 }) { - ForEach(this.arr, (item, index: number) => { - ListItem() { - Text(item.toString()) - .width("100%") - .height(100) - .fontSize(16) - .textAlign(TextAlign.Center) - .borderRadius(10) - .backgroundColor(Color.White) - .margin({ top:10, bottom: 10 }) - } - }) - }.backgroundColor(Color.Gray) - .padding({ left: 20, right: 20 }) - } - } - .height('100%') - .width('100%') - } -} -``` - -![zh-cn_image_0000001665809293](figures/zh-cn_image_0000001665809293.png) diff --git a/doc/ts-composite-components-progressbutton.md b/doc/ts-composite-components-progressbutton.md deleted file mode 100644 index 171c800..0000000 --- a/doc/ts-composite-components-progressbutton.md +++ /dev/null @@ -1,152 +0,0 @@ -# ProgressButton - - -文本下载按钮,可显示具体下载进度。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { ProgressButton } from '@ohos.arkui.advanced.ProgressButton' -``` - - -## ProgressButton - -ProgressButton({progress: number, content: string, progressButtonWidth?: Length, clickCallback: () => void, enable: boolean}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必填 | 装饰器类型 | 描述 | -| -------- | -------- | -------- | -------- | -------- | -| progress | number | 是 | \@Prop | 下载按钮的当前进度值。 | -| content | string | 是 | | 下载按钮的文本。 | -| progressButtonWidth | Length | 否 | - | 下载按钮的宽度。 | -| clickCallback | void | 是 | | 下载按钮的点击回调。 | -| enable | boolean | 是 | | 下载按钮是否可以点击,
默认为true。 | - - -## 示例 - -``` -import { ProgressButton } from '@ohos.arkui.advanced.ProgressButton' -@Entry -@Component -struct Index { - @State halfProgress: number = 50 - @State smallProgress: number = 8 - @State bigProgress: number = 51 - @State textState1: string = '下载' - @State textState2: string = '下载' - @State textState3: string = '下载' - @State isRunning1: boolean = false - @State isRunning2: boolean = false - @State isRunning3: boolean = false - @State enableState1: boolean = true - @State enableState2: boolean = true - @State enableState3: boolean = true - build() { - Column({space: 20}) { - Text('6、下载按钮:') - ProgressButton({ - progress: this.halfProgress, - progressButtonWidth: "60", - content: this.textState1, - enable: this.enableState1, - clickCallback: () => { - if (this.textState1 && !this.isRunning1 && this.halfProgress < 100) { - this.textState1 = '继续' - } - this.isRunning1 = !this.isRunning1 - let timer = setInterval(() => { - if (this.isRunning1) { - if (this.halfProgress === 100) { - } else { - this.halfProgress++ - if (this.halfProgress === 100) { - // this.halfProgress = 0 - this.textState1 = '已完成' - this.enableState1 = false - } - console.info('x progress++ = ' + this.halfProgress) - } - } else { - console.info('x isRunning = ' + false) - clearInterval(timer) - } - }, 100) - } - }) - ProgressButton({ - progress: this.smallProgress, - progressButtonWidth: "100", - content: this.textState2, - enable: this.enableState2, - clickCallback: () => { - if (this.textState2 && !this.isRunning2 && this.smallProgress < 100) { - this.textState2 = '继续' - } - this.isRunning2 = !this.isRunning2 - let timer = setInterval(() => { - if (this.isRunning2) { - if (this.smallProgress === 100) { - - } else { - this.smallProgress++ - if (this.smallProgress === 100) { - this.textState2 = '已完成' - this.enableState2 = false - } - console.info('x progress++ = ' + this.smallProgress) - } - } else { - console.info('x isRunning = ' + false) - clearInterval(timer) - } - }, 100) - } - }) - ProgressButton({ - progress: this.bigProgress, - progressButtonWidth: '300', - content: this.textState3, - enable: this.enableState3, - clickCallback: () => { - this.isRunning3 = !this.isRunning3 - if (!this.isRunning3 && this.textState3 && this.bigProgress < 100) { - this.textState3 = '继续' - } - - let timer = setInterval(() => { - if (this.isRunning3) { - if (this.bigProgress === 100) { - } else { - this.bigProgress++ - if (this.bigProgress === 100) { - this.textState3 = '已完成' - this.enableState3 = false - } - console.info('x progress++ = ' + this.bigProgress) - } - } else { - console.info('x isRunning = ' + false) - clearInterval(timer) - } - }, 100) - } - }) - }.alignItems(HorizontalAlign.Center).width('100%') - } -} -``` - - -![zh-cn_image_0000001664713029](figures/zh-cn_image_0000001664713029.png) diff --git a/doc/ts-composite-components-selecttitlebar.md b/doc/ts-composite-components-selecttitlebar.md deleted file mode 100644 index 84af742..0000000 --- a/doc/ts-composite-components-selecttitlebar.md +++ /dev/null @@ -1,186 +0,0 @@ -# SelectTitleBar - - -普通型标题栏的一种,含有一个 Select 控件,可用于页面之间的切换;可用于一级页面、二级及其以上界面(配置返回键)。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { SelectTitleBar } from "@ohos.arkui.advanced.SelectTitleBar" -``` - - -## 子组件 - -无 - - -## 接口 - -SelectTitleBar({selected: number, options: Array<SelectOption>, menuItems?: Array<SelectTitleBarMenuItem>, subtitle?: ResourceStr, badgeValue?: number, hidesBackButton?: boolean, onSelected?: (index: number) => void}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| selected | number | 是 | \@Prop | 当前选中项目的索引 | -| options | Array<SelectOption> | 是 | - | 下拉菜单中的项目 | -| menuItems | Array Prompt.showToast({ message: 'page index ' + index }), - hidesBackButton: true - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001665793709](figures/zh-cn_image_0000001665793709.png) - - -## 示例 2 - 二级页面下拉菜单 - -``` -import { SelectTitleBar } from "@ohos.arkui.advanced.SelectTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - build() { - Row() { - Column() { - Divider().height(2).color(0xCCCCCC) - SelectTitleBar({ - options: [ - { value: '所有照片' }, - { value: '本地(设备)' }, - { value: '本地本地本地本地本地(储存卡)' } - ], - selected: 0, - onSelected: (index) => Prompt.showToast({ message: 'page index ' + index }), - hidesBackButton: false - }) - Divider().height(2).color(0xCCCCCC) - SelectTitleBar({ - options: [ - { value: '所有照片' }, - { value: '本地(设备)' }, - { value: '本地本地本地本地本地(储存卡)' } - ], - selected: 1, - onSelected: (index) => Prompt.showToast({ message: 'page index ' + index }), - subtitle: "example@openharmony.cn" - }) - Divider().height(2).color(0xCCCCCC) - SelectTitleBar({ - options: [ - { value: '所有照片' }, - { value: '本地(设备)' }, - { value: '本地本地本地本地本地(储存卡)' } - ], - selected: 1, - onSelected: (index) => Prompt.showToast({ message: 'page index ' + index }), - subtitle: "example@openharmony.cn", - menuItems: [ { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => Prompt.showToast({ message: "show toast index 1" }) - } ] - }) - Divider().height(2).color(0xCCCCCC) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001617439304](figures/zh-cn_image_0000001617439304.png) - - -## 示例 3 - 新事件标记 - -``` -import { SelectTitleBar } from "@ohos.arkui.advanced.SelectTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - menuItems: { value: Resource, isEnabled: boolean, action: () => void }[] = - [ { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => prompt.showToast({ message: "show toast index 1" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => prompt.showToast({ message: "show toast index 2" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_edit'), - action: () => prompt.showToast({ message: "show toast index 3" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => prompt.showToast({ message: "show toast index 4" }) - } ] - build() { - Row() { - Column() { - SelectTitleBar({ - options: [ - { value: '所有照片' }, - { value: '本地(设备)' }, - { value: '本地本地本地本地本地(储存卡)' } - ], - selected: 0, - onSelected: (index) => Prompt.showToast({ message: 'page index ' + index }), - subtitle: "example@openharmony.cn", - menuItems: this.menuItems, - badgeValue: 99, - hidesBackButton: true - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001616959836](figures/zh-cn_image_0000001616959836.png) diff --git a/doc/ts-composite-components-splitlayout.md b/doc/ts-composite-components-splitlayout.md deleted file mode 100644 index 4206e22..0000000 --- a/doc/ts-composite-components-splitlayout.md +++ /dev/null @@ -1,88 +0,0 @@ -# SplitLayout - - -上下结构布局介绍了常用的页面布局样式。主要分为上下文本和上下图文两种类型。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { SplitLayout } from '@ohos.arkui.advanced.SplitLayout' -``` - - -## 子组件 - -无 - - -## 接口 - -SplitLayout({mainImage: Resource, primaryText: string, secondaryText?: string, tertiaryText?: string}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| mainImage | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 传入图片。 | -| primaryText | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 标题内容。 | -| secondaryText | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 副标题内容。 | -| tertiaryText | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 辅助文本。 | -| container | () => void | 否 | 容器内组件。 | - - -## 示例 - -``` -import { SplitLayout } from '@ohos.arkui.advanced.SplitLayout' -@Entry -@Component -struct Index { - @State demoImage: Resource = $r("app.media.music") - @State primaryText: string = "主标题" - @State secondaryText: string = "副标题" - - build() { - Column() { - SplitLayout({ - mainImage: this.demoImage, - primaryText: '新歌推荐', - secondaryText: '私人订制新歌精选站,为你推荐专属优质新歌;', - tertiaryText: "每日更新", - }) { - Text('示例:空白区域容器内可添加组件') - .margin({top:36}) - } - } - .justifyContent(FlexAlign.SpaceBetween) - .height('100%') - .width('100%') - } -} -``` - - -小于600Vp布局: - - -![zh-cn_image_0000001665553957](figures/zh-cn_image_0000001665553957.png) - - -大于600Vp小于840Vp布局: - - -![zh-cn_image_0000001616957408](figures/zh-cn_image_0000001616957408.png) - - -大于840Vp布局: - - -![zh-cn_image_0000001617116972](figures/zh-cn_image_0000001617116972.png) diff --git a/doc/ts-composite-components-subheader.md b/doc/ts-composite-components-subheader.md deleted file mode 100644 index d7b226b..0000000 --- a/doc/ts-composite-components-subheader.md +++ /dev/null @@ -1,168 +0,0 @@ -# SubHeader - - -子标题,用于列表项顶部,将该组列表划分为一个区块,子标题名称用来概括该区块内容;也可以用于内容项顶部,子标题名称用来概括该区块内容。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -```ts -import { SubHeader } from '@ohos.arkui.advanced.SubHeader' -``` - - -## 子组件 - -无 - - -## 接口 - -SubHeader({primaryTitle?: ResourceStr, secondaryTitle?: ResourceStr, icon?: ResourceStr, select?: SelectOptions, operationType?: OperationType, operationItem?: Array<OperationOption>}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| primaryTitle | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | \@Prop | 标题内容。 | -| secondaryTitle | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | \@Prop | 副标题内容。 | -| icon | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | \@Prop | 图标设置项。 | -| select | SelectOptions | 否 | - | select内容以及事件。 | -| operationType | OperationType | 否 | \@Prop | 操作区(右侧)元素样式。
默认值:OperationType.BUTTON | -| operationItem | Array<OperationOption> | 否 | - | 操作区(右侧)的设置项。 | - - -## OperationType枚举说明 - -| 名称 | 描述 | -| -------- | -------- | -| TEXT_ARROW | 文本按钮(带右箭头)。 | -| BUTTON | 文本按钮(不带右箭头)。 | -| ICON_GROUP | 图标按钮(最多支持配置三张图标)。 | -| LOADING | 加载动画。 | - - -## SelectOptions - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| options | Array<[SelectOption](https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/arkui-ts/ts-basic-components-select.md/)> | 是 | 下拉选项内容。 | -| selected | number | 否 | 设置下拉菜单初始选项的索引。
第一项的索引为0。
当不设置selected属性时,
默认选择值为-1,菜单项不选中。 | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 设置下拉按钮本身的文本内容。 | -| onSelect | callback: (index: number, value?: string) => void | 否 | 下拉菜单选中某一项的回调。
- index:选中项的索引。
- value:选中项的值。 | - - -## OperationOption - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 文本内容。 | -| action | ()=>void | 否 | 事件。 | - - -## 示例 - -```ts -import promptAction from '@ohos.promptAction' -import { OperationType, SubHeader } from '@ohos.arkui.advanced.SubHeader' - -@Entry -@Component -struct SubHeaderExample { - build() { - Column() { - SubHeader({ - icon: $r('app.media.ic_public_community_messages'), - primaryTitle: '子标题', - operationType: OperationType.BUTTON, - operationItem: [{ value: '操作', - action: () => { - promptAction.showToast({ message: 'demo' }) - } - }] - }) - } - } -} -``` - -![子标题3](figures/zh-cn_image_202307291.png) - -```ts -import promptAction from '@ohos.promptAction' -import { OperationType, SubHeader } from '@ohos.arkui.advanced.SubHeader' - -@Entry -@Component -struct SubHeaderExample { - build() { - Column() { - SubHeader({ - primaryTitle: '标题', - secondaryTitle: '副文本副文本副文本副文本', - operationType: OperationType.TEXT_ARROW, - operationItem: [{ value: '更多', - action: () => { - promptAction.showToast({ message: 'demo' }) - } - }] - }) - } - } -} -``` - -![zh-cn_image_0000001664546481](figures/zh-cn_image_0000001664546481.png) - -```ts -import promptAction from '@ohos.promptAction' -import { OperationType, SubHeader } from '@ohos.arkui.advanced.SubHeader' - -@Entry -@Component -struct SubHeaderExample { - build() { - Column() { - SubHeader({ - select: { - options: [{ value: 'aaa' }, { value: 'bbb' }, { value: 'ccc' }], - value: 'selectdemo', - selected: 2, - onSelect: (index: number, value?: string) => { - promptAction.showToast({ message: 'demo' }) - } - }, - operationType: OperationType.ICON_GROUP, - operationItem: [{ - value: $r('app.media.ic_public_community_messages'), - action: () => { - promptAction.showToast({ message: 'demo' }) - } - }, { - value: $r('app.media.ic_public_community_messages'), - action: () => { - promptAction.showToast({ message: 'demo' }) - } - }, { - value: $r('app.media.ic_public_community_messages'), - action: () => { - promptAction.showToast({ message: 'demo' }) - } - } - }) - } - } -} -``` - -![子标题5](figures/zh-cn_image_2023072902.png) diff --git a/doc/ts-composite-components-swiperefresher.md b/doc/ts-composite-components-swiperefresher.md deleted file mode 100644 index a8c1616..0000000 --- a/doc/ts-composite-components-swiperefresher.md +++ /dev/null @@ -1,63 +0,0 @@ -# SwipeRefresher - - -内容加载指获取内容并加载出来。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件及其子组件从 API Version 10 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { SwipeRefresher } from '@ohos.arkui.advacned.SwipeRefresher' -``` - - -## 子组件 - -无 - - -## 接口 - -SwipeRefresher ({content: string, isLoading: boolean}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数值 | 参数类型 | 必填 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| content | string | 否 | \@Prop | 内容加载时显示的文本。 | -| isLoading | boolean | 是 | \@Prop | 当前是否正在加载。 | - - -## 示例 - -``` -import { SwipeRefresher } from '@ohos.arkui.advacned.SwipeRefresher'; - -@Entry -@Component -struct Index { - build() { - Column() { - SwipeRefresher({ - content: '正在加载中', - isLoading: true }) - - SwipeRefresher({ - isLoading: true }) - SwipeRefresher({ - content: '正在加载中', - isLoading: false }) - } - } -} -``` - -![Snipaste_2023-07-24_11-35-40](figures/Snipaste_2023-07-24_11-35-40.png) diff --git a/doc/ts-composite-components-tabtitlebar.md b/doc/ts-composite-components-tabtitlebar.md deleted file mode 100644 index e079515..0000000 --- a/doc/ts-composite-components-tabtitlebar.md +++ /dev/null @@ -1,126 +0,0 @@ -# TabTitleBar - - -页签型标题栏,用于页面之间的切换;仅一级页面适用。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { TabTitleBar } from "@ohos.arkui.advanced.TabTitleBar" -``` - - -## 子组件 - -无 - - -## 接口 - -TabTitleBar({tabItems: Array<TabTitleBarTabItem>, menuItems?: Array<TabTitleBarMenuItem>, swiperContent: () => void}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 装饰器类型 | 参数描述 | -| -------- | -------- | -------- | -------- | -------- | -| tabItems | Array<[TabTitleBarTabItem](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/blob/master/doc/ts-composite-components-tabtitlebar.md/#tabtitlebartabitem)> | 是 | - | 左侧页签项目列表,定义标题栏左侧的页签项目。 | -| menuItems | Array<[TabTitleBarMenuItem](https://gitee.com/openharmony-sig/arkui_advanced_ui_component/blob/master/doc/ts-composite-components-tabtitlebar.md/#tabtitlebarmenuitem)> | 否 | - | 右侧菜单项目列表,定义标题栏右侧的菜单项目 | -| swiperContent | () => void | 否 | \@BuilderParam | 页签列表关联的页面内容构造器 | - - -### TabTitleBarMenuItem - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| value | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 图标资源 | -| isEnabled | boolean | 是 | 是否启用 | -| action | () => void | 否 | 触发时的动作闭包 | - - -### TabTitleBarTabItem - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| title | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 文字页签 | -| icon | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 否 | 图片页签资源 | - - -## 示例 - -``` -import { TabTitleBar } from "@ohos.arkui.advanced.TabTitleBar" -import Prompt from '@system.prompt' - -@Entry -@Component -struct Index { - @Builder componentBuilder() { - Text("#1ABC9C\nTURQUOISE") - .fontWeight(FontWeight.Bold) - .fontSize(14) - .width("100%") - .textAlign(TextAlign.Center) - .fontColor("#CCFFFFFF") - .backgroundColor("#1ABC9C") - Text("#16A085\nGREEN SEA") - .fontWeight(FontWeight.Bold) - .fontSize(14) - .width("100%") - .textAlign(TextAlign.Center) - .fontColor("#CCFFFFFF") - .backgroundColor("#16A085") - Text("#2ECC71\nEMERALD") - .fontWeight(FontWeight.Bold) - .fontSize(14) - .width("100%") - .textAlign(TextAlign.Center) - .fontColor("#CCFFFFFF") - .backgroundColor("#2ECC71") - Text("#27AE60\nNEPHRITIS") - .fontWeight(FontWeight.Bold) - .fontSize(14) - .width("100%") - .textAlign(TextAlign.Center) - .fontColor("#CCFFFFFF") - .backgroundColor("#27AE60") - } - private readonly tabItems: { title: ResourceStr, icon?: ResourceStr }[] = - [ { title: "页签1" }, - { title: "页签2" }, - { title: "页签3" }, - { title: "Happy", - icon: $r('app.media.emoji_happy') } ] - private readonly menuItems: { value: Resource, isEnabled: boolean, action: () => void }[] = - [ { isEnabled: true, value: $r('app.media.ic_public_reduce'), - action: () => Prompt.showToast({ message: "on item click! index 0" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_edit'), - action: () => Prompt.showToast({ message: "on item click! index 1" }) - }, - { isEnabled: true, value: $r('app.media.ic_public_save'), - action: () => Prompt.showToast({ message: "on item click! index 2" }) - } ] - build() { - Row() { - Column() { - TabTitleBar({ - swiperContent: this.componentBuilder, - tabItems: this.tabItems, - menuItems: this.menuItems, - }) - }.width('100%') - }.height('100%') - } -} -``` - -![zh-cn_image_0000001616916278](figures/zh-cn_image_0000001616916278.png) diff --git a/doc/ts-composite-components-toolbar.md b/doc/ts-composite-components-toolbar.md deleted file mode 100644 index f460ee9..0000000 --- a/doc/ts-composite-components-toolbar.md +++ /dev/null @@ -1,135 +0,0 @@ -# ToolBar - - -工具栏用于展示针对当前界面内容的操作选项,在界面底部显示。底部最多显示5个入口,超过则收纳入“更多”子项中,在最右侧显示。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { ToolBar, ToolBarOptions } from '@ohos.arkui.advanced.ToolBar' -``` - - -## 子组件 - -无 - - -## 接口 - -Toolbar({toolBarList: ToolBarOptions, activateIndex?: number, controller: TabsController}) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - -**参数:** - -| 参数名 | 参数类型 | 必选 | 参数描述 | -| -------- | -------- | -------- | -------- | -| toolBarList | [ToolBarOptions](#toolbaroptions) | 是 | 工具栏列表。 | -| activateIndex | number | 否 | 激活态的子项。
默认值为-1。 | -| controller | [TabsController](https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/arkui-ts/ts-container-tabs.md/#Tabscontroller) | 是 | 筛选器的样式类型。 | - - -## ToolBarOptions - -继承自Array<ToolBarOption> - -**ToolBarOption:** - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| content | [ResourceStr](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resourcestr) | 是 | 工具栏子项的文本。 | -| action | void | 否 | 工具栏子项点击事件。 | -| icon | [Resource](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-types.md/#resource) | 否 | 工具栏子项的图标。 | -| state | [ItemState](#itemstate) | 否 | 工具栏子项的状态,默认为ENABLE。 | - - -## ItemState - -| 名称 | 描述 | -| -------- | -------- | -| ENABLE | 工具栏子项为正常可点击状态。 | -| DISABLE | 工具栏子项为不可点击状态。 | -| ACTIVATE | 工具栏子项为激活状态,可点击。 | - - -## 示例 - -``` -import { ToolBar, ToolBarOptions } from '@ohos.arkui.advanced.ToolBar' -@Entry -@Component -struct Index { - @State toolbarList: ToolBarOptions = new ToolBarOptions() - aboutToAppear() { - this.toolbarList.push({ text: '剪贴我是超超超超超超超超超长样式', - icon: $r('sys.media.ohos_ic_public_share'), - action: () => { - }, - }) - this.toolbarList.push({ text: '拷贝', - icon: $r('sys.media.ohos_ic_public_copy'), - action: () => { - }, - state:2 - }) - this.toolbarList.push({ text: '粘贴', - icon: $r('sys.media.ohos_ic_public_paste'), - action: () => { - }, - state:3 - }) - this.toolbarList.push({ text: '全选', - icon: $r('sys.media.ohos_ic_public_select_all'), - action: () => { - }, - }) - this.toolbarList.push({ text: '分享', - icon: $r('sys.media.ohos_ic_public_share'), - action: () => { - }, - }) - this.toolbarList.push({ text: '分享', - icon: $r('sys.media.ohos_ic_public_share'), - action: () => { - }, - }) - } - build() { - Row() { - Stack() { - Column(){ - Button("修改减少item") - .width(96) - .height(40) - .onClick(() => { - this.toolbarList.pop() - }) - Button("修改增加item") - .width(96) - .height(40) - .onClick(() => { - this.toolbarList.push(this.toolbarList[1]) - }) - }.margin({bottom: 300}) - Column() { - ToolBar({ - currentIndex: 2, - hwToolBarList: this.toolbarList, - }) - } - }.align(Alignment.Bottom) - .width('100%').height('100%') - } - } -} -``` - -![zh-cn_image_0000001658655445](figures/zh-cn_image_0000001658655445.png) diff --git a/doc/ts-composite-components-treeview.md b/doc/ts-composite-components-treeview.md deleted file mode 100644 index 0a8ddae..0000000 --- a/doc/ts-composite-components-treeview.md +++ /dev/null @@ -1,379 +0,0 @@ -# TreeView - - -树视图作为一种分层显示的列表,适合显示嵌套结构。拥有父列表项和子列表项,可展开或折叠。子列表项支持选中一项或多项。 - - -用于效率型应用,如备忘录、电子邮件、图库中的侧边导航栏中。 - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - - -## 导入模块 - -``` -import { TreeView } from "@ohos.arkui.advanced.TreeView" -``` - - -## 子组件 - -无 - - -## 接口 - -TreeView({ treeController: TreeController }) - -**装饰器类型:**\@Component - -**系统能力:** SystemCapability.ArkUI.ArkUI.Full - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| treeController | [TreeController](#treecontroller) | 是 | 树视图节点信息。 | - - -## TreeController - -树视图组件的控制器,可以将此对象绑定至树视图组件,然后通过它控制树的节点信息,同一个控制器不可以控制多个树视图组件。 - - -### 导入对象 - -``` -treeController: TreeController = new TreeController() -``` - - -### addNode - - -addNode(nodeParam?: NodeParam): void - - -点击某个节点后,调用该方法可以触发新增孩子节点 - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| nodeParam | [NodeParam](#nodeparam) | 否 | 节点信息。 | - - -### removeNode - -removeNode(): void - -点击某个节点后,调用该方法可以触发删除该节点 - - -### modifyNode - - -modifyNode(): void - - -点击某个节点后,调用该方法可以触发修改该节点 - - -### buildDone - -buildDone(): void - -建立树视图。节点增加完毕后,必须调用该方法,触发树信息的保存 - - -### refreshNode - -refreshNode(parentId: number, parentSubTitle: ResourceStr, currentSubtitle: ResourceStr): void - -**参数:** - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| parentId | number | 是 | 父节点Id。 | -| parentSubTitle | ResourceStr | 是 | 父节点副文本 | -| currentSubtitle | ResourceStr | 是 | 当前节点副文本 | - - -## NodeParam - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| parentNodeId | number | 否 | 父亲节点 | -| currentNodeId | number | 否 | 当前孩子节点 | -| isFolder | boolean | 否 | 是否是目录 | -| icon | ResourceStr | 否 | 图标 | -| selectedIcon | ResourceStr | 否 | 选中图标 | -| editIcon | ResourceStr | 否 | 编辑图标 | -| primaryTitle | ResourceStr | 否 | 主标题 | -| secondaryTitle | ResourceStr | 否 | 副标题 | -| container | () => void | 否 | 绑定在节点上的子组件,子组件由[@Builder](https://docs.openharmony.cn/pages/v3.1/en/application-dev/ui/ts-component-based-builder.md/)修饰 | - - -## TreeListenerManager对象说明 - -树视图组件的监听器,可以将此对象绑定至树视图组件,然后通过它监听树的节点的变化,同一个监听器不可以控制多个树视图组件。 - - -### 导入对象 - -``` -import { TreeListenerManager } from '@ohos.arkui.advanced.TreeView' -``` - - -### getInstance - -getInstance(): TreeListenerManager - -获取监听管理器单例对象 - - -### getTreeListener() - -getTreeListener(): TreeListener - -获取监听器 - - -## TreeListener对象说明 - -树视图组件的监听器,可以将此对象绑定至树视图组件,然后通过它监听树的节点的变化,同一个监听器不可以控制多个树视图组件。 - - -### 导入对象 - -``` -treeListener: TreeListener = TreeListenerManager.getInstance().getTreeListener() -``` - - -### on - -on(type: TreeListenType, callback: (callbackParam: CallbackParam) => void): void; - -注册监听 - -**参数:** - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| type | [TreeListenType](#treelistentype) | 是 | 监听类型 | -| nodeParam | [NodeParam](#nodeparam) | 是 | 节点信息。 | - - -### once - -once(type: TreeListenType, callback: (callbackParam: CallbackParam) => void): void; - -注册一次监听 - -**参数:** - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| type | [TreeListenType](#treelistentype) | 是 | 监听类型 | -| nodeParam | [NodeParam](#nodeparam) | 是 | 节点信息。 | - - -### off - - -off(type: TreeListenType, callback?: (callbackParam: CallbackParam) => void): void; - - -取消监听 - - -**参数:** - - -| 参数名 | 参数类型 | 必填 | 参数描述 | -| -------- | -------- | -------- | -------- | -| type | [TreeListenType](#treelistentype) | 是 | 监听类型 | -| nodeParam | [NodeParam](#nodeparam) | 是 | 节点信息。 | - - -## TreeListenType - -| 名称 | 描述 | -| -------- | -------- | -| NODE_CLICK | 监听节点点击事件 | -| NODE_ADD | 监听节点增加事件 | -| NODE_DELETE | 监听节点删除事件 | -| NODE_MODIFY | 监听节点修改事件 | -| NODE_MOVE | 监听节点移动事件 | - - -## CallbackParam - -| 名称 | 值 | 是否必填 | 描述 | -| -------- | -------- | -------- | -------- | -| currentNodeId | number | 是 | 当前孩子节点 | -| parentNodeId | number | 否 | 父亲节点表 | -| childIndex: number | number | 否 | 孩子索引 | - - -## 示例 - -``` -import { TreeController, TreeListener, TreeListenerManager, TreeListenType, NodeParam, TreeView, CallbackParam } from '@ohos.arkui.advanced.TreeView' - -@Entry -@Component -struct TreeViewDemo { - private listTreeNode: TreeController = new TreeController(); - private appEventBus: TreeListener = TreeListenerManager.getInstance().getTreeListener(); - @State clickNodeId: number = 0; - @State numbers: string[] = ['one', 'two', 'three', 'four', 'five', 'six']; - - aboutToDisappear(): void { - this.appEventBus.off(TreeListenType.NODE_CLICK, null); - this.appEventBus.off(TreeListenType.NODE_ADD, null); - this.appEventBus.off(TreeListenType.NODE_DELETE, null); - } - - @Builder menuBuilder0() { - Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { - Text('删除').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) - .onClick((event: ClickEvent) => { - this.listTreeNode.removeNode(); - }) - }.width(100).border({width: 1, color: 0x80808a, radius: '16dp'}) - } - - @Builder menuBuilder1() { - Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { - Text('新增').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) - .onClick((event: ClickEvent) => { - this.listTreeNode.addNode(); - }) - Divider() - Text('删除').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) - .onClick((event: ClickEvent) => { - this.listTreeNode.removeNode(); - }) - Divider() - Text('重命名').fontSize(16).width(100).height(30).textAlign(TextAlign.Center) - .onClick((event: ClickEvent) => { - this.listTreeNode.modifyNode(); - }) - }.width(100).border({width: 1, color: 0x80808a, radius: '16dp'}) - } - - aboutToAppear(): void { - this.appEventBus.on(TreeListenType.NODE_MOVE, (callbackParam: CallbackParam) => { - }) - this.appEventBus.on(TreeListenType.NODE_CLICK, (callbackParam: CallbackParam) => { - }) - - let normalResource: Resource = $r('app.media.ic_public_collect_normal'); - let selectedResource: Resource = $r('app.media.ic_public_collect_selected'); - let editResource: Resource = $r('app.media.ic_public_collect_edit'); - let nodeParam: NodeParam = { parentNodeId:-1, currentNodeId: 1, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录1验证悬浮框自适应效果是否OK", - menu: this.menuBuilder1.bind(this), secondaryTitle: "6" }; - this.listTreeNode - .addNode(nodeParam) - .addNode({parentNodeId:1, currentNodeId: 2, isFolder: false, primaryTitle: "项目1_1" }) - .addNode({ parentNodeId:-1, currentNodeId: 7, isFolder: true, primaryTitle: "目录2", menu: this.menuBuilder1.bind(this) }) - .addNode({ parentNodeId:-1, currentNodeId: 23, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录3", menu: this.menuBuilder1.bind(this) }) - .addNode({ parentNodeId:-1, currentNodeId: 24, isFolder: false, primaryTitle: "项目4", menu: this.menuBuilder1.bind(this) }) - .addNode({ parentNodeId:-1, currentNodeId: 31, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录5", menu: this.menuBuilder1.bind(this), secondaryTitle: "0" }) - .addNode({ parentNodeId:-1, currentNodeId: 32, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录6", menu: this.menuBuilder1.bind(this), secondaryTitle: "0" }) - .addNode({ parentNodeId:32, currentNodeId: 35, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录6-1", menu: this.menuBuilder1.bind(this), secondaryTitle: "0" }) - .addNode({ parentNodeId:-1, currentNodeId: 33, isFolder: true, icon: normalResource, selectedIcon: selectedResource, - editIcon: editResource, primaryTitle: "目录7", menu: this.menuBuilder1.bind(this), secondaryTitle: "0" }) - .addNode({ parentNodeId:33, currentNodeId: 34, isFolder: false, primaryTitle: "项目8" }) - .addNode({ parentNodeId:-1, currentNodeId: 36, isFolder: false, primaryTitle: "项目9" }) - .buildDone(); - } - - @Builder subfieldPopup(item: any) { - Column() { - Text(item) - .width('50%').height(60).fontSize(16).borderRadius(10) - .textAlign(TextAlign.Center).backgroundColor(Color.Yellow) - } - } - - build() { - SideBarContainer(SideBarContainerType.Embed) - { - TreeView({ treeController: this.listTreeNode }) - Row() { - Divider().vertical(true).strokeWidth(2).color(0x000000).lineCap(LineCapStyle.Round) - Column() { - Row() { - Text('ClickNodeId=' + this.clickNodeId).fontSize('16fp') - Button('Add', { type: ButtonType.Normal, stateEffect: true }) - .borderRadius(8).backgroundColor(0x317aff).width(90) - .onClick((event: ClickEvent) => { - this.listTreeNode.addNode(); - }) - Button('Modify', { type: ButtonType.Normal, stateEffect: true }) - .borderRadius(8).backgroundColor(0x317aff).width(90) - .onClick((event: ClickEvent) => { - this.listTreeNode.modifyNode(); - }) - Button('Remove', { type: ButtonType.Normal, stateEffect: true }) - .borderRadius(8).backgroundColor(0x317aff).width(120) - .onClick((event: ClickEvent) => { - this.listTreeNode.removeNode(); - }) - } - - /* drag item. */ - List({ space: 10, initialIndex: 0 }) { - ForEach(this.numbers, (item) => { - ListItem() { - Text('' + item) - .width('100%').height(38).fontSize(16).borderRadius(10) - .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE) - } - .onSelect((isSelected: boolean) => { - console.log('listItem selected') - }) - .onDragStart(() => { - this.listTreeNode.refreshNode(1,'选择节点','目标节点') - return this.subfieldPopup(item) - }) - }, item => item) - } - .editMode(true) - .multiSelectable(true) - .onDrop((event: DragEvent, extraParams: string) => { - console.log('outer onDrop') - }) - - }.height('100%').width('70%').alignItems(HorizontalAlign.Start) - } - } - .focusable(true) - .sideBarWidth(240) - .minSideBarWidth(0) - .maxSideBarWidth(900) - .showControlButton(false) - .showSideBar(true) - .onChange((value: boolean) => { - console.info('status:' + value); - }) - } -} -``` - -![zh-cn_image_0000001664822257](figures/zh-cn_image_0000001664822257.png) diff --git a/interface/arkdialog/BUILD.gn b/interface/arkdialog/BUILD.gn deleted file mode 100644 index 6c5b90f..0000000 --- a/interface/arkdialog/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_arkdialog_abc") { - src_js = rebase_path("arkdialog.js") - dst_file = rebase_path(target_out_dir + "/arkdialog.abc") - in_puts = [ "arkdialog.js" ] - out_puts = [ target_out_dir + "/arkdialog.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("arkdialog_abc") { - input = get_label_info(":gen_arkdialog_abc", "target_out_dir") + "/arkdialog.abc" - output = target_out_dir + "/arkdialog_abc.o" - dep = ":gen_arkdialog_abc" -} - -ohos_shared_library("arkdialog") { - sources = [ "arkdialog.cpp" ] - - deps = [ ":arkdialog_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/arkdialog/arkdialog.cpp b/interface/arkdialog/arkdialog.cpp deleted file mode 100644 index 0db1e88..0000000 --- a/interface/arkdialog/arkdialog.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_arkdialog_abc_start[]; -extern const char _binary_arkdialog_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_ArkDialog_GetABCCode(const char **buf, int *buflen) -{ - if (buf != nullptr) { - *buf = _binary_arkdialog_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_arkdialog_abc_end - _binary_arkdialog_abc_start; - } -} - -/* - * Module define - */ -static napi_module arkdialogModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.ArkDialog", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; -/* - * Module register function - */ -extern "C" __attribute__((constructor)) void arkdialogRegisterModule(void) -{ - napi_module_register(&arkdialogModule); -} diff --git a/interface/arkdialog/arkdialog.js b/interface/arkdialog/arkdialog.js deleted file mode 100644 index 36e355f..0000000 --- a/interface/arkdialog/arkdialog.js +++ /dev/null @@ -1,1604 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const CHECKBOX_CONTAINER_HEIGHT = 48; -const CONTENT_MAX_LINES = 2; -const DIVIDER_CONTAINER_WIDTH = 16; -const DIVIDER_HEIGHT = 24; -const DIVIDER_WIDTH = 2; -const LOADING_PROGRESS_WIDTH = 40; -const LOADING_PROGRESS_HEIGHT = 48; -const ITEM_TEXT_SIZE = 14; - -export class TipsDialog extends ViewPU { - constructor(e, o, t, r = -1) { - super(e, t, r); - this.controller = void 0; - this.imageRes = void 0; - this.imageSize = { width: '100%', height: 180 }; - this.title = ''; - this.content = ''; - this.checkTips = ''; - this.__isChecked = new ObservedPropertySimplePU(!1, this, 'isChecked'); - this.primaryButton = { value: '' }; - this.secondaryButton = { value: '' }; - this.setInitiallyProvidedValue(o); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.imageRes && (this.imageRes = e.imageRes); - void 0 !== e.imageSize && (this.imageSize = e.imageSize); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.content && (this.content = e.content); - void 0 !== e.checkTips && (this.checkTips = e.checkTips); - void 0 !== e.isChecked && (this.isChecked = e.isChecked); - void 0 !== e.primaryButton && (this.primaryButton = e.primaryButton); - void 0 !== e.secondaryButton && (this.secondaryButton = e.secondaryButton); - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - this.__isChecked.purgeDependencyOnElmtId(e); - } - - aboutToBeDeleted() { - this.__isChecked.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - setController(e) { - this.controller = e; - } - - get isChecked() { - return this.__isChecked.get(); - } - - set isChecked(e) { - this.__isChecked.set(e); - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.backgroundBlurStyle(BlurStyle.Thick); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_dialog'], - bundleName: '', - moduleName: '' - }); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_start'], - bundleName: '', - moduleName: '' - }, - right: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_end'], - bundleName: '', - moduleName: '' - }, - bottom: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_bottom'], - bundleName: '', - moduleName: '' - } - }); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_dialog_bg'], - bundleName: '', - moduleName: '' - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width('100%'); - Row.padding({ left: 24, right: 24 }); - Row.margin({ top: 24 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.layoutWeight(1); - Column.clip(!0); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.imageRes); - Image.size(this.imageSize); - Image.objectFit(ImageFit.Fill); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Column.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24 }); - Row.margin({ top: 16 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_headline8'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.textAlign(TextAlign.Center); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.content ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - Row.width('100%'); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body2'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.textAlign(TextAlign.Center); - Text.minFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body3'], - bundleName: '', - moduleName: '' - }); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.height(CHECKBOX_CONTAINER_HEIGHT); - Row.width('100%'); - Row.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Checkbox.create({ name: 'checkbox', group: 'checkboxGroup' }); - Checkbox.select(this.isChecked); - Checkbox.onChange((e => { - this.isChecked = e; - })); - Checkbox.margin({ left: 0, right: 8 }); - o || Checkbox.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Checkbox.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.checkTips); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body2'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.maxLines(CONTENT_MAX_LINES); - Text.layoutWeight(1); - Text.focusOnTouch(!0); - Text.onClick((() => { - this.isChecked = !this.isChecked; - })); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width('100%'); - Row.padding({ left: 16, right: 16, top: 16, bottom: 16 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.primaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.primaryButton.background ? this.primaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.primaryButton.action && this.primaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value && this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(DIVIDER_CONTAINER_WIDTH); - Column.alignItems(HorizontalAlign.Center); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.background ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.width(DIVIDER_WIDTH); - Divider.height(DIVIDER_HEIGHT); - Divider.color({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_list_separator'], - bundleName: '', - moduleName: '' - }); - Divider.vertical(!0); - o || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - })); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Column.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.secondaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.secondaryButton.background ? this.secondaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.secondaryButton.action && this.secondaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Row.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} - -export class SelectDialog extends ViewPU { - constructor(e, o, t, r = -1) { - super(e, t, r); - this.controller = void 0; - this.title = ''; - this.content = ''; - this.selectedIndex = -1; - this.confirm = { value: '' }; - this.radioContent = []; - this.setInitiallyProvidedValue(o); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.content && (this.content = e.content); - void 0 !== e.selectedIndex && (this.selectedIndex = e.selectedIndex); - void 0 !== e.confirm && (this.confirm = e.confirm); - void 0 !== e.radioContent && (this.radioContent = e.radioContent); - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - } - - aboutToBeDeleted() { - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - setController(e) { - this.controller = e; - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.backgroundBlurStyle(BlurStyle.Thick); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_dialog'], - bundleName: '', - moduleName: '' - }); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_start'], - bundleName: '', - moduleName: '' - }, - right: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_end'], - bundleName: '', - moduleName: '' - }, - bottom: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_bottom'], - bundleName: '', - moduleName: '' - } - }); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_dialog_bg'], - bundleName: '', - moduleName: '' - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 24 }); - Row.constraintSize({ minHeight: 56 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_dialog_tittle'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.maxLines(CONTENT_MAX_LINES); - Text.minFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_sub_title1'], - bundleName: '', - moduleName: '' - }); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.textAlign(TextAlign.Start); - Text.width('100%'); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.content ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - Row.width('100%'); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body2'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.maxLines(CONTENT_MAX_LINES); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.minFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body3'], - bundleName: '', - moduleName: '' - }); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - List.create({ space: 1 }); - List.width('100%'); - List.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - List.clip(!1); - o || List.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.radioContent, ((e, o) => { - const t = e; - { - const e = !0; - const r = (o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ListItem.create(i, e); - t || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording(); - }; - const s = () => { - this.observeComponentCreation(r); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.constraintSize({ minHeight: 48 }); - Row.clip(!1); - Row.onClick((() => { - t.action && t.action(); - this.controller.close(); - })); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(t.title); - Text.fontSize(ITEM_TEXT_SIZE); - Text.fontWeight(FontWeight.Regular); - Text.maxLines(CONTENT_MAX_LINES); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.layoutWeight(1); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - this.observeComponentCreation(((e, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Radio.create({ value: 'item.title', group: 'radioGroup' }); - Radio.checked(this.selectedIndex === o); - Radio.onChange((() => { - t.action && t.action(); - this.controller.close(); - })); - Radio.onClick((() => { - t.action && t.action(); - this.controller.close(); - })); - r || Radio.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - o < this.radioContent.length - 1 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.color({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_list_separator'], - bundleName: '', - moduleName: '' - }); - o || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Column.pop(); - ListItem.pop(); - }; - const i = (e, s) => { - r(e, s); - this.updateFuncByElmtId.set(e, r); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.constraintSize({ minHeight: 48 }); - Row.clip(!1); - Row.onClick((() => { - t.action && t.action(); - this.controller.close(); - })); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(t.title); - Text.fontSize(ITEM_TEXT_SIZE); - Text.fontWeight(FontWeight.Regular); - Text.maxLines(CONTENT_MAX_LINES); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.layoutWeight(1); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - this.observeComponentCreation(((e, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Radio.create({ value: 'item.title', group: 'radioGroup' }); - Radio.checked(this.selectedIndex === o); - Radio.onChange((() => { - t.action && t.action(); - this.controller.close(); - })); - Radio.onClick((() => { - t.action && t.action(); - this.controller.close(); - })); - r || Radio.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - o < this.radioContent.length - 1 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.color({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_list_separator'], - bundleName: '', - moduleName: '' - }); - o || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Column.pop(); - ListItem.pop(); - }; - e ? (() => { - this.observeComponentCreation(r); - ListItem.pop(); - })() : s(); - } - }), void 0, !0, !1); - o || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - ForEach.pop(); - List.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width('100%'); - Row.padding({ left: 16, right: 16, top: 16, bottom: 16 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.confirm.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.confirm.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.confirm.background ? this.confirm.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.confirm.fontColor ? this.confirm.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.confirm.action && this.confirm.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Row.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} - -export class ConfirmDialog extends ViewPU { - constructor(e, o, t, r = -1) { - super(e, t, r); - this.controller = void 0; - this.title = ''; - this.content = ''; - this.checkTips = ''; - this.__isChecked = new ObservedPropertySimplePU(!1, this, 'isChecked'); - this.primaryButton = { value: '' }; - this.secondaryButton = { value: '' }; - this.setInitiallyProvidedValue(o); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.content && (this.content = e.content); - void 0 !== e.checkTips && (this.checkTips = e.checkTips); - void 0 !== e.isChecked && (this.isChecked = e.isChecked); - void 0 !== e.primaryButton && (this.primaryButton = e.primaryButton); - void 0 !== e.secondaryButton && (this.secondaryButton = e.secondaryButton); - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - this.__isChecked.purgeDependencyOnElmtId(e); - } - - aboutToBeDeleted() { - this.__isChecked.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - setController(e) { - this.controller = e; - } - - get isChecked() { - return this.__isChecked.get(); - } - - set isChecked(e) { - this.__isChecked.set(e); - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.backgroundBlurStyle(BlurStyle.Thick); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_dialog'], - bundleName: '', - moduleName: '' - }); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_start'], - bundleName: '', - moduleName: '' - }, - right: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_end'], - bundleName: '', - moduleName: '' - }, - bottom: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_bottom'], - bundleName: '', - moduleName: '' - } - }); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_dialog_bg'], - bundleName: '', - moduleName: '' - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 24 }); - Row.constraintSize({ minHeight: 56 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_dialog_tittle'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.maxLines(CONTENT_MAX_LINES); - Text.minFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_sub_title1'], - bundleName: '', - moduleName: '' - }); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.textAlign(TextAlign.Start); - Text.width('100%'); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.content ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - Row.width('100%'); - Row.constraintSize({ minHeight: 36 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body1'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.maxLines(CONTENT_MAX_LINES); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.minFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body3'], - bundleName: '', - moduleName: '' - }); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.height(CHECKBOX_CONTAINER_HEIGHT); - Row.width('100%'); - Row.padding({ left: 24, right: 24, top: 8, bottom: 8 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Checkbox.create({ name: 'checkbox', group: 'checkboxGroup' }); - Checkbox.select(this.isChecked); - Checkbox.onChange((e => { - this.isChecked = e; - })); - Checkbox.margin({ left: 0, right: 8 }); - o || Checkbox.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Checkbox.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.checkTips); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body2'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.maxLines(CONTENT_MAX_LINES); - Text.layoutWeight(1); - Text.focusOnTouch(!0); - Text.onClick((() => { - this.isChecked = !this.isChecked; - })); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width('100%'); - Row.padding({ left: 16, right: 16, top: 16, bottom: 16 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.primaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.primaryButton.background ? this.primaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.primaryButton.action && this.primaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value && this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(DIVIDER_CONTAINER_WIDTH); - Column.alignItems(HorizontalAlign.Center); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.background ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.width(DIVIDER_WIDTH); - Divider.height(DIVIDER_HEIGHT); - Divider.color({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_list_separator'], - bundleName: '', - moduleName: '' - }); - Divider.vertical(!0); - o || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - })); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Column.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.secondaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.secondaryButton.background ? this.secondaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.secondaryButton.action && this.secondaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Row.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} - -export class AlertDialog extends ViewPU { - constructor(e, o, t, r = -1) { - super(e, t, r); - this.controller = void 0; - this.content = ''; - this.primaryButton = { value: '' }; - this.secondaryButton = { value: '' }; - this.setInitiallyProvidedValue(o); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.content && (this.content = e.content); - void 0 !== e.primaryButton && (this.primaryButton = e.primaryButton); - void 0 !== e.secondaryButton && (this.secondaryButton = e.secondaryButton); - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - } - - aboutToBeDeleted() { - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - setController(e) { - this.controller = e; - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.backgroundBlurStyle(BlurStyle.Thick); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_dialog'], - bundleName: '', - moduleName: '' - }); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_start'], - bundleName: '', - moduleName: '' - }, - right: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_end'], - bundleName: '', - moduleName: '' - }, - bottom: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_bottom'], - bundleName: '', - moduleName: '' - } - }); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_dialog_bg'], - bundleName: '', - moduleName: '' - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.padding({ left: 24, right: 24, top: 24 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body1'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width('100%'); - Row.padding({ left: 16, right: 16, top: 16, bottom: 16 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.primaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.primaryButton.background ? this.primaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.primaryButton.action && this.primaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value && this.primaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(DIVIDER_CONTAINER_WIDTH); - Column.alignItems(HorizontalAlign.Center); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.background ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.width(DIVIDER_WIDTH); - Divider.height(DIVIDER_HEIGHT); - Divider.color({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_list_separator'], - bundleName: '', - moduleName: '' - }); - Divider.vertical(!0); - o || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - })); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Column.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.secondaryButton.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithLabel(this.secondaryButton.value); - Button.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button1'], - bundleName: '', - moduleName: '' - }); - Button.fontWeight(FontWeight.Medium); - Button.layoutWeight(1); - Button.backgroundColor(this.secondaryButton.background ? this.secondaryButton.background : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_background_transparent'], - bundleName: '', - moduleName: '' - }); - Button.fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - }); - Button.onClick((() => { - this.secondaryButton.action && this.secondaryButton.action(); - this.controller.close(); - })); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Button.pop(); - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Row.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} - -export class LoadingDialog extends ViewPU { - constructor(e, o, t, r = -1) { - super(e, t, r); - this.controller = void 0; - this.content = ''; - this.setInitiallyProvidedValue(o); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.content && (this.content = e.content); - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - } - - aboutToBeDeleted() { - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - setController(e) { - this.controller = e; - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.backgroundBlurStyle(BlurStyle.Thick); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_dialog'], - bundleName: '', - moduleName: '' - }); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_start'], - bundleName: '', - moduleName: '' - }, - right: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_end'], - bundleName: '', - moduleName: '' - }, - bottom: { - id: -1, - type: 10002, - params: ['sys.float.ohos_id_dialog_margin_bottom'], - bundleName: '', - moduleName: '' - } - }); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_dialog_bg'], - bundleName: '', - moduleName: '' - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ left: 24, right: 24, top: 24, bottom: 24 }); - Row.constraintSize({ minHeight: 48 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_body1'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - }); - Text.layoutWeight(1); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - LoadingProgress.create(); - LoadingProgress.width(LOADING_PROGRESS_WIDTH); - LoadingProgress.height(LOADING_PROGRESS_HEIGHT); - LoadingProgress.margin({ left: 16 }); - o || LoadingProgress.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Row.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} -export default { TipsDialog, ConfirmDialog, SelectDialog, AlertDialog, LoadingDialog }; \ No newline at end of file diff --git a/interface/composelistitem/BUILD.gn b/interface/composelistitem/BUILD.gn deleted file mode 100644 index a70c722..0000000 --- a/interface/composelistitem/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_composelistitem_abc") { - src_js = rebase_path("composelistitem.js") - dst_file = rebase_path(target_out_dir + "/composelistitem.abc") - in_puts = [ "composelistitem.js" ] - out_puts = [ target_out_dir + "/composelistitem.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("composelistitem_abc") { - input = get_label_info(":gen_composelistitem_abc", "target_out_dir") + "/composelistitem.abc" - output = target_out_dir + "/composelistitem_abc.o" - dep = ":gen_composelistitem_abc" -} - -ohos_shared_library("composelistitem") { - sources = [ "composelistitem.cpp" ] - - deps = [ ":composelistitem_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/composelistitem/composelistitem.cpp b/interface/composelistitem/composelistitem.cpp deleted file mode 100644 index bf795fc..0000000 --- a/interface/composelistitem/composelistitem.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_composelistitem_abc_start[]; -extern const char _binary_composelistitem_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_ComposeListItem_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_composelistitem_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_composelistitem_abc_end - _binary_composelistitem_abc_start; - } - } - - -static napi_module composelistitemModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.ComposeListItem", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void composelistitemRegisterModule(void) -{ - napi_module_register(&composelistitemModule); -} \ No newline at end of file diff --git a/interface/composelistitem/composelistitem.js b/interface/composelistitem/composelistitem.js deleted file mode 100644 index 09de65f..0000000 --- a/interface/composelistitem/composelistitem.js +++ /dev/null @@ -1,799 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -export var IconType; -!function(e){ - e[e.BADGE=1] = "BADGE"; - e[e.NORMAL_ICON=2] = "NORMAL_ICON"; - e[e.SYSTEM_ICON=3] = "SYSTEM_ICON"; - e[e.HEAD_SCULPTURE=4] = "HEAD_SCULPTURE"; - e[e.APP_ICON=5] = "APP_ICON"; - e[e.PREVIEW=6] = "PREVIEW"; - e[e.LONGITUDINAL=7] = "LONGITUDINAL"; - e[e.VERTICAL=8] = "VERTICAL" -}(IconType || (IconType = {})); -var ItemHeight; -!function(e){ - e[e.FIRST_HEIGHT=48] = "FIRST_HEIGHT"; - e[e.SECOND_HEIGHT=56] = "SECOND_HEIGHT"; - e[e.THIRD_HEIGHT=64] = "THIRD_HEIGHT"; - e[e.FOURTH_HEIGHT=72] = "FOURTH_HEIGHT"; - e[e.FIFTH_HEIGHT=96] = "FIFTH_HEIGHT" -}(ItemHeight || (ItemHeight = {})); -const LISTITEMCARD_BORDER_HIDDEN = 0; -const TEXT_MAX_LINE = 1; -const LISTITEMCARD_BORDER_SHOWN = 2; -const TEXT_COLUMN_SPACE = 2; -const TEXT_SAFE_MARGIN = 8; -const BADGE_SIZE = 8; -const SMALL_ICON_SIZE = 16; -const SYSTEM_ICON_SIZE = 24; -const SAFE_LIST_PADDING = 32; -const HEADSCULPTURE_SIZE = 40; -const BUTTON_SIZE = 28; -const APP_ICON_SIZE = 64; -const PREVIEW_SIZE = 96; -const LONGITUDINAL_SIZE = 96; -const VERTICAL_SIZE = 96; -const NORMAL_ITEM_ROW_SPACE = 16; -const SPECIAL_ITEM_ROW_SPACE = 0; -const SPECIAL_ICON_SIZE = 0; -const DEFAULT_ROW_SPACE = 0; -const SPECICAL_ROW_SPACE = 4; -const OPERATEITEM_ICONLIKE_SIZE = 24; -const OPERATEITEM_ARROW_WIDTH = 12; -const OPERATEITEM_ICON_CLICKABLE_SIZE = 48; -const OPERATEITEM_IMAGE_SIZE = 48; -const HOVERING_COLOR = "#0d000000"; -const TOUCH_DOWN_COLOR = "#1a000000"; -const ACTIVED_COLOR = "#1a0a59f7"; - -class ContentItemStruct extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.iconStyle = null; - this.icon = null; - this.title = null; - this.subtitle = null; - this.description = null; - this.iconSizeMap = new Map([[IconType.BADGE, 8], [IconType.NORMAL_ICON, 16], [IconType.SYSTEM_ICON, 24], [IconType.HEAD_SCULPTURE, 40], [IconType.APP_ICON, 64], [IconType.PREVIEW, 96], [IconType.LONGITUDINAL, 96], [IconType.VERTICAL, 96]]); - this.itemHeight = ItemHeight.FIRST_HEIGHT; - this.itemRowSpace = 16; - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.iconStyle && (this.iconStyle = e.iconStyle); - void 0 !== e.icon && (this.icon = e.icon); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.subtitle && (this.subtitle = e.subtitle); - void 0 !== e.description && (this.description = e.description); - void 0 !== e.iconSizeMap && (this.iconSizeMap = e.iconSizeMap); - void 0 !== e.itemHeight && (this.itemHeight = e.itemHeight); - void 0 !== e.itemRowSpace && (this.itemRowSpace = e.itemRowSpace) - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - } - - aboutToBeDeleted() { - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - aboutToAppear() { - null == this.subtitle && null == this.description ? null == this.icon ? this.itemHeight = ItemHeight.FIRST_HEIGHT : this.itemHeight = this.iconStyle <= IconType.HEAD_SCULPTURE ? ItemHeight.SECOND_HEIGHT : ItemHeight.THIRD_HEIGHT : null == this.description ? null == this.icon || null != this.icon && this.iconStyle <= IconType.SYSTEM_ICON ? this.itemHeight = ItemHeight.THIRD_HEIGHT : this.itemHeight = ItemHeight.FOURTH_HEIGHT : this.itemHeight = ItemHeight.FIFTH_HEIGHT; - null == this.icon && null == this.iconStyle && (this.itemRowSpace = 0); - this.iconSizeMap.get(this.iconStyle) >= this.itemHeight && (this.itemHeight = this.iconSizeMap.get(this.iconStyle) + 32) - } - - createIcon(e = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.icon && null != this.iconStyle ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.iconStyle <= IconType.PREVIEW ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.icon); - Image.objectFit(ImageFit.Contain); - Image.width(this.iconSizeMap.get(this.iconStyle)); - Image.height(this.iconSizeMap.get(this.iconStyle)); - Image.borderRadius({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_default_m"], - bundleName: "", - moduleName: "" - }); - Image.focusable(!0); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.icon); - Image.objectFit(ImageFit.Contain); - Image.constraintSize({ - minWidth: 0, - maxWidth: this.iconSizeMap.get(this.iconStyle), - minHeight: 0, - maxHeight: this.iconSizeMap.get(this.iconStyle) - }); - Image.borderRadius({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_default_m"], - bundleName: "", - moduleName: "" - }); - Image.focusable(!0); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - } - - createText(e = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create({ space: 2 }); - Column.margin({ top: 8, bottom: 8 }); - Column.alignItems(HorizontalAlign.Start); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.focusable(!0); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.subtitle ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.subtitle); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.focusable(!0); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.description ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.description); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.focusable(!0); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop() - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({ space: this.itemRowSpace }); - Row.height(this.itemHeight); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.createIcon.bind(this)(); - this.createText.bind(this)(); - Row.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -class OperateItemStruct extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.arrow = null; - this.icon = null; - this.subIcon = null; - this.button = null; - this.switch = null; - this.checkBox = null; - this.radio = null; - this.image = null; - this.text = null; - this.__switchState = new ObservedPropertySimplePU(!1, this, "switchState"); - this.__radioState = new ObservedPropertySimplePU(!1, this, "radioState"); - this.__checkBoxState = new ObservedPropertySimplePU(!1, this, "checkBoxState"); - this.rowSpace = 0; - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.arrow && (this.arrow = e.arrow); - void 0 !== e.icon && (this.icon = e.icon); - void 0 !== e.subIcon && (this.subIcon = e.subIcon); - void 0 !== e.button && (this.button = e.button); - void 0 !== e.switch && (this.switch = e.switch); - void 0 !== e.checkBox && (this.checkBox = e.checkBox); - void 0 !== e.radio && (this.radio = e.radio); - void 0 !== e.image && (this.image = e.image); - void 0 !== e.text && (this.text = e.text); - void 0 !== e.switchState && (this.switchState = e.switchState); - void 0 !== e.radioState && (this.radioState = e.radioState); - void 0 !== e.checkBoxState && (this.checkBoxState = e.checkBoxState); - void 0 !== e.rowSpace && (this.rowSpace = e.rowSpace) - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - this.__switchState.purgeDependencyOnElmtId(e); - this.__radioState.purgeDependencyOnElmtId(e); - this.__checkBoxState.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__switchState.aboutToBeDeleted(); - this.__radioState.aboutToBeDeleted(); - this.__checkBoxState.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get switchState() { - return this.__switchState.get() - } - - set switchState(e) { - this.__switchState.set(e) - } - - get radioState() { - return this.__radioState.get() - } - - set radioState(e) { - this.__radioState.set(e) - } - - get checkBoxState() { - return this.__checkBoxState.get() - } - - set checkBoxState(e) { - this.__checkBoxState.set(e) - } - - aboutToAppear() { - null != this.switch && (this.switchState = this.switch.isCheck); - null != this.radio && (this.radioState = this.radio.isCheck); - null != this.checkBox && (this.checkBoxState = this.checkBox.isCheck); - (null == this.button && null == this.image && null != this.icon && null != this.text || null == this.button && null == this.image && null == this.icon && null != this.arrow && null != this.text) && (this.rowSpace = 4) - } - - createButton(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Button.createWithLabel(e); - Button.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_button3"], - bundleName: "", - moduleName: "" - }); - Button.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated_transparent"], - bundleName: "", - moduleName: "" - }); - Button.height(28); - Button.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_button_normal"], - bundleName: "", - moduleName: "" - }); - Button.labelStyle({ maxLines: 1 }); - o || Button.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Button.pop() - } - - createIcon(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Row.create(); - Row.height(48); - Row.width(48); - Row.justifyContent(FlexAlign.Center); - Row.onClick(e.action); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Image.create(e.value); - Image.height(24); - Image.width(24); - Image.focusable(!0); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - - createImage(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Image.create(e); - Image.height(48); - Image.width(48); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - } - - createText(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Text.create(e); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.focusable(!0); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - } - - createArrow(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Image.create(e.value); - Image.height(24); - Image.width(12); - Image.focusable(!0); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_fourth"], - bundleName: "", - moduleName: "" - }); - Image.onClick(e.action); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - } - - createRadio(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Radio.create({ value: null, group: null }); - Radio.checked(this.radioState); - Radio.onChange(e.onChange); - Radio.height(24); - Radio.width(24); - o || Radio.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - } - - createCheckBox(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Checkbox.create(); - Checkbox.select(this.checkBoxState); - Checkbox.onChange(e.onChange); - Checkbox.height(24); - Checkbox.height(24); - o || Checkbox.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Checkbox.pop() - } - - createSwitch(e, t = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.height(48); - Row.width(48); - Row.justifyContent(FlexAlign.Center); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Toggle.create({ type: ToggleType.Switch, isOn: this.switchState }); - Toggle.onChange(e.onChange); - Toggle.onClick((() => { - this.switchState = !this.switchState - })); - o || Toggle.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Toggle.pop(); - Row.pop() - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({ space: this.rowSpace }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.button ? this.ifElseBranchUpdateFunction(0, (() => { - this.createButton.bind(this)(this.button.text) - })) : null != this.image ? this.ifElseBranchUpdateFunction(1, (() => { - this.createImage.bind(this)(this.image) - })) : null != this.icon && null != this.text ? this.ifElseBranchUpdateFunction(2, (() => { - this.createText.bind(this)(this.text); - this.createIcon.bind(this)(this.icon) - })) : null != this.arrow && null == this.text ? this.ifElseBranchUpdateFunction(3, (() => { - this.createArrow.bind(this)(this.arrow) - })) : null != this.arrow && null != this.text ? this.ifElseBranchUpdateFunction(4, (() => { - this.createText.bind(this)(this.text); - this.createArrow.bind(this)(this.arrow) - })) : null != this.text ? this.ifElseBranchUpdateFunction(5, (() => { - this.createText.bind(this)(this.text) - })) : null != this.radio ? this.ifElseBranchUpdateFunction(6, (() => { - this.createRadio.bind(this)(this.radio) - })) : null != this.checkBox ? this.ifElseBranchUpdateFunction(7, (() => { - this.createCheckBox.bind(this)(this.checkBox) - })) : null != this.switch ? this.ifElseBranchUpdateFunction(8, (() => { - this.createSwitch.bind(this)(this.switch) - })) : null != this.icon && this.ifElseBranchUpdateFunction(9, (() => { - this.createIcon.bind(this)(this.icon); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.subIcon ? this.ifElseBranchUpdateFunction(0, (() => { - this.createIcon.bind(this)(this.subIcon) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export class ComposeListItem extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.__contentItem = new SynchedPropertyObjectOneWayPU(t.contentItem, this, "contentItem"); - this.__operateItem = new SynchedPropertyObjectOneWayPU(t.operateItem, this, "operateItem"); - this.__frontColor = new ObservedPropertySimplePU(Color.Transparent.toString(), this, "frontColor"); - this.__borderSize = new ObservedPropertySimplePU(0, this, "borderSize"); - this.isActive = !1; - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.contentItem ? this.__contentItem.set(e.contentItem) : this.__contentItem.set(null); - void 0 !== e.operateItem ? this.__operateItem.set(e.operateItem) : this.__operateItem.set(null); - void 0 !== e.frontColor && (this.frontColor = e.frontColor); - void 0 !== e.borderSize && (this.borderSize = e.borderSize); - void 0 !== e.isActive && (this.isActive = e.isActive) - } - - updateStateVars(e) { - this.__contentItem.reset(e.contentItem); - this.__operateItem.reset(e.operateItem) - } - - purgeVariableDependenciesOnElmtId(e) { - this.__contentItem.purgeDependencyOnElmtId(e); - this.__operateItem.purgeDependencyOnElmtId(e); - this.__frontColor.purgeDependencyOnElmtId(e); - this.__borderSize.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__contentItem.aboutToBeDeleted(); - this.__operateItem.aboutToBeDeleted(); - this.__frontColor.aboutToBeDeleted(); - this.__borderSize.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get contentItem() { - return this.__contentItem.get() - } - - set contentItem(e) { - this.__contentItem.set(e) - } - - get operateItem() { - return this.__operateItem.get() - } - - set operateItem(e) { - this.__operateItem.set(e) - } - - get frontColor() { - return this.__frontColor.get() - } - - set frontColor(e) { - this.__frontColor.set(e) - } - - get borderSize() { - return this.__borderSize.get() - } - - set borderSize(e) { - this.__borderSize.set(e) - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.padding({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_start"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }); - Flex.focusable(!0); - Flex.border({ - width: this.borderSize, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - } - }); - Flex.borderRadius({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_default_m"], - bundleName: "", - moduleName: "" - }); - Flex.backgroundColor(this.frontColor); - Flex.onFocus((() => { - this.borderSize = 2 - })); - Flex.onBlur((() => { - this.borderSize = 0 - })); - Flex.onHover((e => { - this.frontColor = e ? "#0d000000" : this.isActive ? "#1a0a59f7" : Color.Transparent.toString() - })); - Flex.onTouch((e => { - e.type == TouchType.Down && (this.frontColor = "#1a000000"); - e.type == TouchType.Up && (this.frontColor = this.isActive ? "#1a0a59f7" : Color.Transparent.toString()) - })); - Flex.onClick((() => { - this.isActive = !this.isActive; - this.frontColor = this.isActive ? "#1a0a59f7" : Color.Transparent.toString() - })); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null == this.contentItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ContentItemStruct(this, { - title: null - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.contentItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ContentItemStruct(this, { - icon: "string" == typeof this.contentItem.icon ? null : this.contentItem.icon, - iconStyle: this.contentItem.iconStyle, - title: "string" == typeof this.contentItem.primaryText ? this.contentItem.primaryText : null, - subtitle: "string" == typeof this.contentItem.secondaryText ? this.contentItem.secondaryText : null, - description: "string" == typeof this.contentItem.description ? this.contentItem.description : null - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.operateItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new OperateItemStruct(this, { - icon: this.operateItem.icon, - subIcon: this.operateItem.subIcon, - button: this.operateItem.button, - switch: this.operateItem.switch, - checkBox: this.operateItem.checkbox, - radio: this.operateItem.radio, - image: "string" == typeof this.operateItem.image ? null : this.operateItem.image, - text: "string" == typeof this.operateItem.text ? this.operateItem.text : null, - arrow: "string" == typeof this.operateItem.arrow ? null : this.operateItem.arrow - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Flex.pop(); - Column.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export default { IconType, ComposeListItem }; \ No newline at end of file diff --git a/interface/composetitlebar/BUILD.gn b/interface/composetitlebar/BUILD.gn deleted file mode 100755 index f953441..0000000 --- a/interface/composetitlebar/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_composetitlebar_abc") { - src_js = rebase_path("composetitlebar.js") - dst_file = rebase_path(target_out_dir + "/composetitlebar.abc") - in_puts = [ "composetitlebar.js" ] - out_puts = [ target_out_dir + "/composetitlebar.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("composetitlebar_abc") { - input = get_label_info(":gen_composetitlebar_abc", "target_out_dir") + "/composetitlebar.abc" - output = target_out_dir + "/composetitlebar_abc.o" - dep = ":gen_composetitlebar_abc" -} - -ohos_shared_library("composetitlebar") { - sources = [ "composetitlebar.cpp" ] - - deps = [ ":composetitlebar_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/composetitlebar/composetitlebar.cpp b/interface/composetitlebar/composetitlebar.cpp deleted file mode 100644 index efe49d9..0000000 --- a/interface/composetitlebar/composetitlebar.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_composetitlebar_abc_start[]; -extern const char _binary_composetitlebar_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_ComposeTitleBar_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_composetitlebar_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_composetitlebar_abc_end - _binary_composetitlebar_abc_start; - } - } - - -static napi_module composetitlebarModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.ComposeTitleBar", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void composetitlebarRegisterModule(void) -{ - napi_module_register(&composetitlebarModule); -} \ No newline at end of file diff --git a/interface/composetitlebar/composetitlebar.js b/interface/composetitlebar/composetitlebar.js deleted file mode 100644 index cff24b9..0000000 --- a/interface/composetitlebar/composetitlebar.js +++ /dev/null @@ -1,714 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -var __decorate = this && this.__decorate || function(e, t, o, i) { - var s, r = arguments.length, - n = r < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, o) : i; - if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(e, t, o, i); - else - for (var c = e.length - 1; c >= 0; c--)(s = e[c]) && (n = (r < 3 ? s(n) : r > 3 ? s(t, o, n) : s(t, o)) || n); - return r > 3 && n && Object.defineProperty(t, o, n), n -}; -const KeyCode = requireNapi('multimodalInput.keyCode').KeyCode; -const PUBLIC_MORE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuAxhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhYWnstMINgYsh+cmfs88BICydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRdYjJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5HnhkC9+zAA5YXXy8jBKV5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rmj79U74wCszuih+F/ljrSi/+uud8YBGA10rayqrnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hkH4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ/N5Vjd0oTXKp9QcKFpD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fNQ1BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnXfo96DGYBRZD1ycpc/XzbmbvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jpyaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jvjACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrpVV1fXOOADLA10rq6rrnXEAVga6VlZV13uh8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5LP+r7veGQfgd+T+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtUtTXit8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXvO9H8f1bfVPQ9FvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC"; -const 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"; -export class ComposeTitleBar extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.item = void 0; - this.title = void 0; - this.subtitle = void 0; - this.menuItems = void 0; - this.__titleMaxWidth = new ObservedPropertySimplePU(0, this, "titleMaxWidth"); - this.__isItemOnFocus = new ObservedPropertySimplePU(!1, this, "isItemOnFocus"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.subtitle && (this.subtitle = e.subtitle); - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.titleMaxWidth && (this.titleMaxWidth = e.titleMaxWidth); - void 0 !== e.isItemOnFocus && (this.isItemOnFocus = e.isItemOnFocus) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__titleMaxWidth.purgeDependencyOnElmtId(e); - this.__isItemOnFocus.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__titleMaxWidth.aboutToBeDeleted(); - this.__isItemOnFocus.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get titleMaxWidth() { - return this.__titleMaxWidth.get() - } - set titleMaxWidth(e) { - this.__titleMaxWidth.set(e) - } - get isItemOnFocus() { - return this.__isItemOnFocus.get() - } - set isItemOnFocus(e) { - this.__isItemOnFocus.set(e) - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }); - Flex.width("100%"); - Flex.height(ComposeTitleBar.totalHeight); - Flex.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Flex.onAreaChange(((e, t) => { - let o = Number(t.width); - if (void 0 !== this.menuItems) { - let e = this.menuItems.length; - e >= CollapsibleMenuSection.maxCountOfVisibleItems ? o -= ImageMenuItem.imageHotZoneWidth * CollapsibleMenuSection.maxCountOfVisibleItems : e > 0 && (o -= ImageMenuItem.imageHotZoneWidth * e) - } - this.titleMaxWidth = o; - this.titleMaxWidth -= ComposeTitleBar.leftPadding; - this.titleMaxWidth -= ImageMenuItem.imageHotZoneWidth; - void 0 !== this.item && (this.titleMaxWidth -= ComposeTitleBar.portraitImageLeftPadding + ComposeTitleBar.portraitImageSize + ComposeTitleBar.portraitImageRightPadding); - this.titleMaxWidth -= ComposeTitleBar.rightPadding - })); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_start"], - bundleName: "", - moduleName: "" - } - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Navigator.create(); - t || Navigator.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: { - value: PUBLIC_BACK, - isEnabled: !0 - } - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - Navigator.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.item ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.width(ComposeTitleBar.portraitImageSize); - Image.height(ComposeTitleBar.portraitImageSize); - Image.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_m"], - bundleName: "", - moduleName: "" - } - }); - Image.focusable(this.item.isEnabled); - Image.borderRadius(ImageMenuItem.buttonBorderRadius); - Image.onFocus((() => this.isItemOnFocus = !0)); - Image.onBlur((() => this.isItemOnFocus = !1)); - Image.border(this.isItemOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Image.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.justifyContent(FlexAlign.Start); - Column.alignItems(HorizontalAlign.Start); - Column.constraintSize({ - maxWidth: this.titleMaxWidth - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.title ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.justifyContent(FlexAlign.Start); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontWeight(FontWeight.Medium); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline8"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(void 0 !== this.subtitle ? 1 : 2); - Text.textOverflow({ - overflow: TextOverflow.Ellipsis - }); - Text.constraintSize({ - maxWidth: this.titleMaxWidth - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.subtitle ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.justifyContent(FlexAlign.Start); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.subtitle); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_over_line"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_subtitle_text"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ - overflow: TextOverflow.Ellipsis - }); - Text.constraintSize({ - maxWidth: this.titleMaxWidth - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new CollapsibleMenuSection(this, { - menuItems: this.menuItems - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Flex.pop() - } - rerender() { - this.updateDirtyElements() - } -} -ComposeTitleBar.totalHeight = 56; -ComposeTitleBar.leftPadding = 12; -ComposeTitleBar.rightPadding = 12; -ComposeTitleBar.portraitImageSize = 40; -ComposeTitleBar.portraitImageLeftPadding = 4; -ComposeTitleBar.portraitImageRightPadding = 16; -class CollapsibleMenuSection extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.menuItems = void 0; - this.__isPopupShown = new ObservedPropertySimplePU(!1, this, "isPopupShown"); - this.__isMoreIconOnFocus = new ObservedPropertySimplePU(!1, this, "isMoreIconOnFocus"); - this.__isMoreIconOnHover = new ObservedPropertySimplePU(!1, this, "isMoreIconOnHover"); - this.__isMoreIconOnClick = new ObservedPropertySimplePU(!1, this, "isMoreIconOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.isPopupShown && (this.isPopupShown = e.isPopupShown); - void 0 !== e.isMoreIconOnFocus && (this.isMoreIconOnFocus = e.isMoreIconOnFocus); - void 0 !== e.isMoreIconOnHover && (this.isMoreIconOnHover = e.isMoreIconOnHover); - void 0 !== e.isMoreIconOnClick && (this.isMoreIconOnClick = e.isMoreIconOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isPopupShown.purgeDependencyOnElmtId(e); - this.__isMoreIconOnFocus.purgeDependencyOnElmtId(e); - this.__isMoreIconOnHover.purgeDependencyOnElmtId(e); - this.__isMoreIconOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isPopupShown.aboutToBeDeleted(); - this.__isMoreIconOnFocus.aboutToBeDeleted(); - this.__isMoreIconOnHover.aboutToBeDeleted(); - this.__isMoreIconOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isPopupShown() { - return this.__isPopupShown.get() - } - set isPopupShown(e) { - this.__isPopupShown.set(e) - } - get isMoreIconOnFocus() { - return this.__isMoreIconOnFocus.get() - } - set isMoreIconOnFocus(e) { - this.__isMoreIconOnFocus.set(e) - } - get isMoreIconOnHover() { - return this.__isMoreIconOnHover.get() - } - set isMoreIconOnHover(e) { - this.__isMoreIconOnHover.set(e) - } - get isMoreIconOnClick() { - return this.__isMoreIconOnClick.get() - } - set isMoreIconOnClick(e) { - this.__isMoreIconOnClick.set(e) - } - getMoreIconFgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getMoreIconBgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isMoreIconOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("100%"); - Column.margin({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Column.justifyContent(FlexAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems, (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getMoreIconFgColor()); - Row.backgroundColor(this.getMoreIconBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.border(this.isMoreIconOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => this.isMoreIconOnFocus = !0)); - Row.onBlur((() => this.isMoreIconOnFocus = !1)); - Row.onHover((e => this.isMoreIconOnHover = e)); - Row.onKeyEvent((e => { - if (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE) { - e.type === KeyType.Down && (this.isMoreIconOnClick = !0); - e.type === KeyType.Up && (this.isMoreIconOnClick = !1) - } - })); - Row.onTouch((e => { - e.type === TouchType.Down && (this.isMoreIconOnClick = !0); - e.type === TouchType.Up && (this.isMoreIconOnClick = !1) - })); - Row.onClick((() => this.isPopupShown = !0)); - Row.bindPopup(this.isPopupShown, { - builder: { - builder: this.popupBuilder.bind(this) - }, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: !1, - onStateChange: e => this.isPopupShown = e.isVisible - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(PUBLIC_MORE); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(!0); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Column.pop() - } - popupBuilder(e = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum); - Column.margin({ - top: CollapsibleMenuSection.focusPadding, - bottom: CollapsibleMenuSection.focusPadding - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), ((e, t) => { - const o = e; - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: o - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - }), void 0, !0, !1); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Column.pop() - } - rerender() { - this.updateDirtyElements() - } -} -CollapsibleMenuSection.maxCountOfVisibleItems = 3; -CollapsibleMenuSection.focusPadding = 4; -CollapsibleMenuSection.marginsNum = 2; -__decorate([], CollapsibleMenuSection.prototype, "popupBuilder", null); -class ImageMenuItem extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.item = void 0; - this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); - this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); - this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); - void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); - void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isOnFocus.purgeDependencyOnElmtId(e); - this.__isOnHover.purgeDependencyOnElmtId(e); - this.__isOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isOnFocus.aboutToBeDeleted(); - this.__isOnHover.aboutToBeDeleted(); - this.__isOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isOnFocus() { - return this.__isOnFocus.get() - } - set isOnFocus(e) { - this.__isOnFocus.set(e) - } - get isOnHover() { - return this.__isOnHover.get() - } - set isOnHover(e) { - this.__isOnHover.set(e) - } - get isOnClick() { - return this.__isOnClick.get() - } - set isOnClick(e) { - this.__isOnClick.set(e) - } - getFgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getBgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getFgColor()); - Row.backgroundColor(this.getBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); - Row.border(this.isOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => { - this.item.isEnabled && (this.isOnFocus = !0) - })); - Row.onBlur((() => this.isOnFocus = !1)); - Row.onHover((e => { - this.item.isEnabled && (this.isOnHover = e) - })); - Row.onKeyEvent((e => { - if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Row.onTouch((e => { - if (this.item.isEnabled) { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - } - })); - Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(this.item.isEnabled); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - rerender() { - this.updateDirtyElements() - } -} -ImageMenuItem.imageSize = 24; -ImageMenuItem.imageHotZoneWidth = 48; -ImageMenuItem.buttonBorderRadius = 8; -ImageMenuItem.focusBorderWidth = 2; -ImageMenuItem.disabledImageOpacity = .4; -export default { - ComposeTitleBar: ComposeTitleBar -}; \ No newline at end of file diff --git a/interface/editabletitlebar/BUILD.gn b/interface/editabletitlebar/BUILD.gn deleted file mode 100755 index 2a7a013..0000000 --- a/interface/editabletitlebar/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_editabletitlebar_abc") { - src_js = rebase_path("editabletitlebar.js") - dst_file = rebase_path(target_out_dir + "/editabletitlebar.abc") - in_puts = [ "editabletitlebar.js" ] - out_puts = [ target_out_dir + "/editabletitlebar.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("editabletitlebar_abc") { - input = get_label_info(":gen_editabletitlebar_abc", "target_out_dir") + "/editabletitlebar.abc" - output = target_out_dir + "/editabletitlebar_abc.o" - dep = ":gen_editabletitlebar_abc" -} - -ohos_shared_library("editabletitlebar") { - sources = [ "editabletitlebar.cpp" ] - - deps = [ ":editabletitlebar_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/editabletitlebar/editabletitlebar.cpp b/interface/editabletitlebar/editabletitlebar.cpp deleted file mode 100644 index 2630a0d..0000000 --- a/interface/editabletitlebar/editabletitlebar.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_editabletitlebar_abc_start[]; -extern const char _binary_editabletitlebar_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_EditableTitleBar_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_editabletitlebar_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_editabletitlebar_abc_end - _binary_editabletitlebar_abc_start; - } - } - - -static napi_module editabletitlebarModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.EditableTitleBar", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void editabletitlebarRegisterModule(void) -{ - napi_module_register(&editabletitlebarModule); -} \ No newline at end of file diff --git a/interface/editabletitlebar/editabletitlebar.js b/interface/editabletitlebar/editabletitlebar.js deleted file mode 100644 index d3e9b68..0000000 --- a/interface/editabletitlebar/editabletitlebar.js +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const KeyCode = requireNapi('multimodalInput.keyCode').KeyCode; -export var EditableLeftIconType; -! function(e) { - e[e.Back = 0] = "Back"; - e[e.Cancel = 1] = "Cancel" -}(EditableLeftIconType || (EditableLeftIconType = {})); -const 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=="; -const 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"; -const 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"; -export class EditableTitleBar extends ViewPU { - constructor(e, t, A, i = -1) { - super(e, A, i); - this.leftIconStyle = void 0; - this.title = void 0; - this.menuItems = void 0; - this.onSave = void 0; - this.onCancel = void 0; - this.__titleMaxWidth = new ObservedPropertySimplePU(0, this, "titleMaxWidth"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.leftIconStyle && (this.leftIconStyle = e.leftIconStyle); - void 0 !== e.title && (this.title = e.title); - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.onSave && (this.onSave = e.onSave); - void 0 !== e.onCancel && (this.onCancel = e.onCancel); - void 0 !== e.titleMaxWidth && (this.titleMaxWidth = e.titleMaxWidth) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__titleMaxWidth.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__titleMaxWidth.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get titleMaxWidth() { - return this.__titleMaxWidth.get() - } - set titleMaxWidth(e) { - this.__titleMaxWidth.set(e) - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }); - Flex.width("100%"); - Flex.height(EditableTitleBar.totalHeight); - Flex.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Flex.onAreaChange(((e, t) => { - let A = Number(t.width); - A = A - EditableTitleBar.leftPadding - EditableTitleBar.rightPadding - EditableTitleBar.titlePadding; - A = A - ImageMenuItem.imageHotZoneWidth - ImageMenuItem.imageHotZoneWidth; - 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 - })); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_start"], - bundleName: "", - moduleName: "" - } - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.leftIconStyle == EditableLeftIconType.Back ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Navigator.create(); - t || Navigator.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: { - value: PUBLIC_BACK, - isEnabled: !0 - } - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - Navigator.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: { - value: PUBLIC_CANCEL, - isEnabled: !0, - action: () => this.onCancel && this.onCancel() - } - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.justifyContent(FlexAlign.Start); - Column.alignItems(HorizontalAlign.Start); - Column.constraintSize({ - maxWidth: this.titleMaxWidth - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.title); - Text.fontWeight(FontWeight.Medium); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline8"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ - overflow: TextOverflow.Ellipsis - }); - Text.constraintSize({ - maxWidth: this.titleMaxWidth - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Column.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new EditableTitleBarMenuSection(this, { - menuItems: this.menuItems, - onSave: this.onSave - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - Flex.pop() - } - rerender() { - this.updateDirtyElements() - } -} -EditableTitleBar.maxCountOfExtraItems = 2; -EditableTitleBar.totalHeight = 56; -EditableTitleBar.leftPadding = 12; -EditableTitleBar.rightPadding = 12; -EditableTitleBar.titlePadding = 16; -class EditableTitleBarMenuSection extends ViewPU { - constructor(e, t, A, i = -1) { - super(e, A, i); - this.menuItems = void 0; - this.onSave = void 0; - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.onSave && (this.onSave = e.onSave) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) {} - aboutToBeDeleted() { - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_vertical_l"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Column.justifyContent(FlexAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(0, EditableTitleBar.maxCountOfExtraItems), (e => { - const t = e; - this.observeComponentCreation(((e, A) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - A ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: { - value: PUBLIC_OK, - isEnabled: !0, - action: () => this.onSave && this.onSave() - } - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop(); - Column.pop() - } - rerender() { - this.updateDirtyElements() - } -} -class ImageMenuItem extends ViewPU { - constructor(e, t, A, i = -1) { - super(e, A, i); - this.item = void 0; - this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); - this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); - this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); - void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); - void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isOnFocus.purgeDependencyOnElmtId(e); - this.__isOnHover.purgeDependencyOnElmtId(e); - this.__isOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isOnFocus.aboutToBeDeleted(); - this.__isOnHover.aboutToBeDeleted(); - this.__isOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isOnFocus() { - return this.__isOnFocus.get() - } - set isOnFocus(e) { - this.__isOnFocus.set(e) - } - get isOnHover() { - return this.__isOnHover.get() - } - set isOnHover(e) { - this.__isOnHover.set(e) - } - get isOnClick() { - return this.__isOnClick.get() - } - set isOnClick(e) { - this.__isOnClick.set(e) - } - getFgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getBgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getFgColor()); - Row.backgroundColor(this.getBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); - Row.border(this.isOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => { - this.item.isEnabled && (this.isOnFocus = !0) - })); - Row.onBlur((() => this.isOnFocus = !1)); - Row.onHover((e => { - this.item.isEnabled && (this.isOnHover = e) - })); - Row.onKeyEvent((e => { - if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Row.onTouch((e => { - if (this.item.isEnabled) { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - } - })); - Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(this.item.isEnabled); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - rerender() { - this.updateDirtyElements() - } -} -ImageMenuItem.imageSize = 24; -ImageMenuItem.imageHotZoneWidth = 48; -ImageMenuItem.buttonBorderRadius = 8; -ImageMenuItem.focusBorderWidth = 2; -ImageMenuItem.disabledImageOpacity = .4; -export default { - EditableLeftIconType: EditableLeftIconType, - EditableTitleBar: EditableTitleBar -}; \ No newline at end of file diff --git a/interface/filter/BUILD.gn b/interface/filter/BUILD.gn deleted file mode 100644 index e06d1b7..0000000 --- a/interface/filter/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_filter_abc") { - src_js = rebase_path("filter.js") - dst_file = rebase_path(target_out_dir + "/filter.abc") - in_puts = [ "filter.js" ] - out_puts = [ target_out_dir + "/filter.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("filter_abc") { - input = get_label_info(":gen_filter_abc", "target_out_dir") + "/filter.abc" - output = target_out_dir + "/filter_abc.o" - dep = ":gen_filter_abc" -} - -ohos_shared_library("filter") { - sources = [ "filter.cpp" ] - - deps = [ ":filter_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/filter/filter.cpp b/interface/filter/filter.cpp deleted file mode 100644 index c3321f4..0000000 --- a/interface/filter/filter.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_filter_abc_start[]; -extern const char _binary_filter_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_Filter_GetABCCode(const char **buf, int *buflen) -{ - if (buf != nullptr) { - *buf = _binary_filter_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_filter_abc_end - _binary_filter_abc_start; - } -} - -/* - * Module define - */ -static napi_module filterModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.Filter", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; -/* - * Module register function - */ -extern "C" __attribute__((constructor)) void filterRegisterModule(void) -{ - napi_module_register(&filterModule); -} diff --git a/interface/filter/filter.js b/interface/filter/filter.js deleted file mode 100644 index efb762d..0000000 --- a/interface/filter/filter.js +++ /dev/null @@ -1,2169 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const curves = requireNativeModule('ohos.curves'); -const measure = requireNapi('measure'); - -var __decorate = this && this.__decorate || function (o, e, t, r) { - var i, s = arguments.length, n = s < 3 ? e : null === r ? r = Object.getOwnPropertyDescriptor(e, t) : r; - if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(o, e, t, r); else for (var a = o.length - 1;a >= 0; a--) (i = o[a]) && (n = (s < 3 ? i(n) : s > 3 ? i(e, t, n) : i(e, t)) || n); - return s > 3 && n && Object.defineProperty(e, t, n), n -}; - -const TEXT_HOT_AREA_WIDTH = 8; -const LIST_ROW_HEIGHT = 40; -const ARROW_IMG_SIZE = 24; -const MULTI_LINE_PADDING = 24; -const BAR_ANIMATION_DURATION = 150; -const ARROW_ANIMATION_DURATION = 200; -const ANIMATION_DURATION_250 = 250; -const ANIMATION_DURATION_100 = 100; -const FILTER_TOP_PADDING = 8; -const SEPARATOR_HEIGHT = 16; -const SEPARATOR_WIDTH = 1; -const FLOAT_OPACITY = .95; -const FILTER_FONT_SIZE = 12; -const FOCUS_BORDER_WIDTH = 2; -const ARROW_SHOW_DELAY = 300; -const PERCENT_100 = "100%"; -const SHARP_CUBIC_BEZIER = curves.cubicBezierCurve(.33, 0, .67, 1); -const INTER_POLATING_SPRING = curves.interpolatingSpring(0, 1, 328, 34); -const FRICTION_CUBIC_BEZIER = curves.cubicBezierCurve(.2, 0, .2, 1); -const TRANS_COLOR = "#00FFFFFF"; -const KEYCODE_SPACE = 2050; -const KEYCODE_ENTER = 2054; - -export var FilterType; -!function(o){ - o[o.MULTI_LINE_FILTER=0] = "MULTI_LINE_FILTER"; - o[o.LIST_FILTER=1] = "LIST_FILTER" -}(FilterType || (FilterType = {})); -let FontWeightArray = class extends Array { -}; -FontWeightArray = __decorate([Observed], FontWeightArray); -let ResourceArray = class extends Array { -}; -ResourceArray = __decorate([Observed], ResourceArray); -let BooleanArray = class extends Array { -}; -BooleanArray = __decorate([Observed], BooleanArray); -let ObservedBoolean = class { - constructor(o) { - this.value = o - } -}; -ObservedBoolean = __decorate([Observed], ObservedBoolean); - -export { ObservedBoolean }; -let ObservedNumber = class { - constructor(o) { - this.value = o - } -}; -ObservedNumber = __decorate([Observed], ObservedNumber); - -class ListFilterRow extends ViewPU { - constructor(o, e, t, r = -1) { - super(o, t, r); - this.__colorRow = new SynchedPropertyNesedObjectPU(e.colorRow, this, "colorRow"); - this.__fontWeightRow = new SynchedPropertyNesedObjectPU(e.fontWeightRow, this, "fontWeightRow"); - this.__backgroundColorRow = new SynchedPropertyNesedObjectPU(e.backgroundColorRow, this, "backgroundColorRow"); - this.__isBackgroundHoverRow = new SynchedPropertyNesedObjectPU(e.isBackgroundHoverRow, this, "isBackgroundHoverRow"); - this.filterRow = void 0; - this.onItemClick = void 0; - this.setInitiallyProvidedValue(e) - } - - setInitiallyProvidedValue(o) { - this.__colorRow.set(o.colorRow); - this.__fontWeightRow.set(o.fontWeightRow); - this.__backgroundColorRow.set(o.backgroundColorRow); - this.__isBackgroundHoverRow.set(o.isBackgroundHoverRow); - void 0 !== o.filterRow && (this.filterRow = o.filterRow); - void 0 !== o.onItemClick && (this.onItemClick = o.onItemClick) - } - - updateStateVars(o) { - this.__colorRow.set(o.colorRow); - this.__fontWeightRow.set(o.fontWeightRow); - this.__backgroundColorRow.set(o.backgroundColorRow); - this.__isBackgroundHoverRow.set(o.isBackgroundHoverRow) - } - - purgeVariableDependenciesOnElmtId(o) { - this.__colorRow.purgeDependencyOnElmtId(o); - this.__fontWeightRow.purgeDependencyOnElmtId(o); - this.__backgroundColorRow.purgeDependencyOnElmtId(o); - this.__isBackgroundHoverRow.purgeDependencyOnElmtId(o) - } - - aboutToBeDeleted() { - this.__colorRow.aboutToBeDeleted(); - this.__fontWeightRow.aboutToBeDeleted(); - this.__backgroundColorRow.aboutToBeDeleted(); - this.__isBackgroundHoverRow.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get colorRow() { - return this.__colorRow.get() - } - - get fontWeightRow() { - return this.__fontWeightRow.get() - } - - get backgroundColorRow() { - return this.__backgroundColorRow.get() - } - - get isBackgroundHoverRow() { - return this.__isBackgroundHoverRow.get() - } - - initialRender() { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - List.create(); - List.listDirection(Axis.Horizontal); - List.margin({ left: -16 }); - List.scrollBar(BarState.Off); - List.width("100%"); - List.height(40); - List.align(Alignment.Start); - e || List.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.filterRow.options, ((o, e) => { - const t = o; - { - const o = !0; - const r = (t, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - ListItem.create(s, o); - ListItem.height("100%"); - ListItem.onClick((() => { - this.onItemClick(e) - })); - ListItem.focusable(!0); - ViewStackProcessor.visualState("focused"); - ListItem.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - ListItem.padding({ left: 6, right: 6 }); - ViewStackProcessor.visualState("normal"); - ListItem.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - ListItem.padding({ left: 8, right: 8 }); - ViewStackProcessor.visualState(); - ListItem.backgroundColor(this.isBackgroundHoverRow[e] ? this.backgroundColorRow[e] : "#00FFFFFF"); - ListItem.onHover((o => { - Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - if (o) { - this.backgroundColorRow[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[e] = !0 - } else this.isBackgroundHoverRow[e] = !1 - })) - })); - ListItem.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.backgroundColorRow[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[e] = !0 - })) : o.type === TouchType.Up && Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.isBackgroundHoverRow[e] = !1 - })) - })); - r || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const i = () => { - this.observeComponentCreation(r); - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.colorRow[e]); - Text.fontWeight(this.fontWeightRow[e]); - Text.focusable(!0); - r || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - ListItem.pop() - }; - const s = (o, i) => { - r(o, i); - this.updateFuncByElmtId.set(o, r); - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.colorRow[e]); - Text.fontWeight(this.fontWeightRow[e]); - Text.focusable(!0); - r || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - ListItem.pop() - }; - o ? (() => { - this.observeComponentCreation(r); - ListItem.pop() - })() : i() - } - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - List.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -class MultiFilterRow extends ViewPU { - constructor(o, e, t, r = -1) { - super(o, t, r); - this.__colorRow = new SynchedPropertyNesedObjectPU(e.colorRow, this, "colorRow"); - this.__fontWeightRow = new SynchedPropertyNesedObjectPU(e.fontWeightRow, this, "fontWeightRow"); - this.__backgroundColorRow = new SynchedPropertyNesedObjectPU(e.backgroundColorRow, this, "backgroundColorRow"); - this.__isBackgroundHoverRow = new SynchedPropertyNesedObjectPU(e.isBackgroundHoverRow, this, "isBackgroundHoverRow"); - this.__twoLineModeItemNumRow = new SynchedPropertyNesedObjectPU(e.twoLineModeItemNumRow, this, "twoLineModeItemNumRow"); - this.__twoLineModeItemNumRecordRow = new SynchedPropertyNesedObjectPU(e.twoLineModeItemNumRecordRow, this, "twoLineModeItemNumRecordRow"); - this.__arrowShowStateRow = new SynchedPropertyNesedObjectPU(e.arrowShowStateRow, this, "arrowShowStateRow"); - this.__isArrowIconDown = new SynchedPropertyNesedObjectPU(e.isArrowIconDown, this, "isArrowIconDown"); - this.filterRow = null; - this.onItemClick = void 0; - this.__arrowBgColorRow = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }, this, "arrowBgColorRow"); - this.__isArrowBgHoverRow = new ObservedPropertySimplePU(!1, this, "isArrowBgHoverRow"); - this.filterColumnWidth = 0; - this.setInitiallyProvidedValue(e) - } - - setInitiallyProvidedValue(o) { - this.__colorRow.set(o.colorRow); - this.__fontWeightRow.set(o.fontWeightRow); - this.__backgroundColorRow.set(o.backgroundColorRow); - this.__isBackgroundHoverRow.set(o.isBackgroundHoverRow); - this.__twoLineModeItemNumRow.set(o.twoLineModeItemNumRow); - this.__twoLineModeItemNumRecordRow.set(o.twoLineModeItemNumRecordRow); - this.__arrowShowStateRow.set(o.arrowShowStateRow); - this.__isArrowIconDown.set(o.isArrowIconDown); - void 0 !== o.filterRow && (this.filterRow = o.filterRow); - void 0 !== o.onItemClick && (this.onItemClick = o.onItemClick); - void 0 !== o.arrowBgColorRow && (this.arrowBgColorRow = o.arrowBgColorRow); - void 0 !== o.isArrowBgHoverRow && (this.isArrowBgHoverRow = o.isArrowBgHoverRow); - void 0 !== o.filterColumnWidth && (this.filterColumnWidth = o.filterColumnWidth) - } - - updateStateVars(o) { - this.__colorRow.set(o.colorRow); - this.__fontWeightRow.set(o.fontWeightRow); - this.__backgroundColorRow.set(o.backgroundColorRow); - this.__isBackgroundHoverRow.set(o.isBackgroundHoverRow); - this.__twoLineModeItemNumRow.set(o.twoLineModeItemNumRow); - this.__twoLineModeItemNumRecordRow.set(o.twoLineModeItemNumRecordRow); - this.__arrowShowStateRow.set(o.arrowShowStateRow); - this.__isArrowIconDown.set(o.isArrowIconDown) - } - - purgeVariableDependenciesOnElmtId(o) { - this.__colorRow.purgeDependencyOnElmtId(o); - this.__fontWeightRow.purgeDependencyOnElmtId(o); - this.__backgroundColorRow.purgeDependencyOnElmtId(o); - this.__isBackgroundHoverRow.purgeDependencyOnElmtId(o); - this.__twoLineModeItemNumRow.purgeDependencyOnElmtId(o); - this.__twoLineModeItemNumRecordRow.purgeDependencyOnElmtId(o); - this.__arrowShowStateRow.purgeDependencyOnElmtId(o); - this.__isArrowIconDown.purgeDependencyOnElmtId(o); - this.__arrowBgColorRow.purgeDependencyOnElmtId(o); - this.__isArrowBgHoverRow.purgeDependencyOnElmtId(o) - } - - aboutToBeDeleted() { - this.__colorRow.aboutToBeDeleted(); - this.__fontWeightRow.aboutToBeDeleted(); - this.__backgroundColorRow.aboutToBeDeleted(); - this.__isBackgroundHoverRow.aboutToBeDeleted(); - this.__twoLineModeItemNumRow.aboutToBeDeleted(); - this.__twoLineModeItemNumRecordRow.aboutToBeDeleted(); - this.__arrowShowStateRow.aboutToBeDeleted(); - this.__isArrowIconDown.aboutToBeDeleted(); - this.__arrowBgColorRow.aboutToBeDeleted(); - this.__isArrowBgHoverRow.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get colorRow() { - return this.__colorRow.get() - } - - get fontWeightRow() { - return this.__fontWeightRow.get() - } - - get backgroundColorRow() { - return this.__backgroundColorRow.get() - } - - get isBackgroundHoverRow() { - return this.__isBackgroundHoverRow.get() - } - - get twoLineModeItemNumRow() { - return this.__twoLineModeItemNumRow.get() - } - - get twoLineModeItemNumRecordRow() { - return this.__twoLineModeItemNumRecordRow.get() - } - - get arrowShowStateRow() { - return this.__arrowShowStateRow.get() - } - - get isArrowIconDown() { - return this.__isArrowIconDown.get() - } - - get arrowBgColorRow() { - return this.__arrowBgColorRow.get() - } - - set arrowBgColorRow(o) { - this.__arrowBgColorRow.set(o) - } - - get isArrowBgHoverRow() { - return this.__isArrowBgHoverRow.get() - } - - set isArrowBgHoverRow(o) { - this.__isArrowBgHoverRow.set(o) - } - - calcMultiFilterRowItemNum() { - var o = this.filterColumnWidth - vp2px(24); - var e = 0; - var t = 1; - for (var r = 0;r < this.filterRow.options.length; r++) { - let i = this.filterRow.options[r]; - let s = measure.measureText({ textContent: i, fontSize: 12 }); - if (0 !== r) { - s += vp2px(16); - if (o - s > 0) { - o -= s; - e += 1 - } else { - if (0 === e) { - e++; - o = 0 - } - if (1 !== t) break; - t += 1; - o = this.filterColumnWidth - vp2px(24) - vp2px(24); - r-- - } - } - } - return e - } - - DownAndUpArrow(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - } - }); - Row.height(40); - Row.width(24); - Row.backgroundColor(this.isArrowBgHoverRow ? this.arrowBgColorRow : "#00FFFFFF"); - Row.focusable(!0); - Row.visibility(this.arrowShowStateRow.value ? Visibility.Visible : Visibility.Hidden); - Row.onHover((o => { - Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - if (o) { - this.arrowBgColorRow = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isArrowBgHoverRow = !0 - } else this.isArrowBgHoverRow = !1 - })) - })); - Row.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.arrowBgColorRow = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isArrowBgHoverRow = !0 - })) : o.type === TouchType.Up && Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.isArrowBgHoverRow = !1 - })) - })); - Row.onClick((() => { - if (this.isArrowIconDown.value) { - this.isArrowIconDown.value = !1; - this.arrowShowStateRow.value = !1; - Context.animateTo({ curve: INTER_POLATING_SPRING }, (() => { - this.twoLineModeItemNumRow.value = this.filterRow.options.length - })); - Context.animateTo({ delay: 300, duration: 200, curve: SHARP_CUBIC_BEZIER }, (() => { - this.arrowShowStateRow.value = !0 - })) - } else { - this.isArrowIconDown.value = !0; - this.arrowShowStateRow.value = !1; - Context.animateTo({ curve: INTER_POLATING_SPRING }, (() => { - this.twoLineModeItemNumRow.value = this.twoLineModeItemNumRecordRow.value - })); - Context.animateTo({ delay: 300, duration: 200, curve: SHARP_CUBIC_BEZIER }, (() => { - this.arrowShowStateRow.value = !0 - })) - } - })); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Image.create(this.isArrowIconDown.value ? { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_up"], - bundleName: "", - moduleName: "" - }); - Image.width(24); - Image.height(40); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_tertiary"], - bundleName: "", - moduleName: "" - }); - Image.focusable(!0); - ViewStackProcessor.visualState("focused"); - Image.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - Image.width(28); - Image.offset({ x: -2 }); - ViewStackProcessor.visualState("normal"); - Image.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - Image.width(24); - Image.offset({ x: 0 }); - ViewStackProcessor.visualState(); - e || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - - initialRender() { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.width("100%"); - Row.alignItems(VerticalAlign.Top); - Row.padding({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - } - }); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - this.filterRow.options && this.filterRow.options.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(this.filterRow.options[0].toString()); - Text.height(40); - Text.width(px2vp(measure.measureText({ - textContent: this.filterRow.options[0].toString(), - fontSize: 12 - })) + 16); - Text.margin({ left: -8 }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.colorRow[0]); - Text.fontWeight(this.fontWeightRow[0]); - Text.backgroundColor(this.isBackgroundHoverRow[0] ? this.backgroundColorRow[0] : "#00FFFFFF"); - Text.onClick((() => { - this.onItemClick(0) - })); - Text.focusable(!0); - Text.onHover((o => { - Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - if (o) { - this.backgroundColorRow[0] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[0] = !0 - } else this.isBackgroundHoverRow[0] = !1 - })) - })); - Text.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.backgroundColorRow[0] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[0] = !0 - })) : o.type === TouchType.Up && Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.isBackgroundHoverRow[0] = !1 - })) - })); - ViewStackProcessor.visualState("focused"); - Text.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - Text.padding({ left: 6, right: 6 }); - ViewStackProcessor.visualState("normal"); - Text.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - Text.padding({ left: 8, right: 8 }); - ViewStackProcessor.visualState(); - e || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - e || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.width("100%"); - Row.padding({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Row.onAreaChange(((o, e) => { - this.filterColumnWidth = vp2px(parseInt(e.width.toString(), 0)); - if (0 === this.twoLineModeItemNumRow.value) { - var t = this.calcMultiFilterRowItemNum(); - this.twoLineModeItemNumRow.value = t; - this.twoLineModeItemNumRecordRow.value = t; - t < this.filterRow.options.length - 1 ? this.arrowShowStateRow.value = !0 : this.arrowShowStateRow.value = !1 - } - })); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Flex.create({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }); - Flex.alignSelf(ItemAlign.Stretch); - e || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.filterRow.options.slice(0, this.twoLineModeItemNumRow.value + 1), ((o, e) => { - const t = o; - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - e > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.toString()); - Text.transition(TransitionEffect.OPACITY); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.height(40); - Text.fontColor(this.colorRow[e]); - Text.fontWeight(this.fontWeightRow[e]); - Text.backgroundColor(this.isBackgroundHoverRow[e] ? this.backgroundColorRow[e] : "#00FFFFFF"); - Text.onClick((() => { - this.onItemClick(e) - })); - Text.onHover((o => { - Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - if (o) { - this.backgroundColorRow[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[e] = !0 - } else this.isBackgroundHoverRow[e] = !1 - })) - })); - Text.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.backgroundColorRow[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isBackgroundHoverRow[e] = !0 - })) : o.type === TouchType.Up && Context.animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: 100 - }, (() => { - this.isBackgroundHoverRow[e] = !1 - })) - })); - Text.focusable(!0); - ViewStackProcessor.visualState("focused"); - Text.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - Text.padding({ left: 6, right: 6 }); - ViewStackProcessor.visualState("normal"); - Text.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - Text.padding({ left: 8, right: 8 }); - ViewStackProcessor.visualState(); - r || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - r || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - this.DownAndUpArrow.bind(this)(); - Flex.pop(); - Row.pop(); - Row.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export class Filter extends ViewPU { - constructor(o, e, t, r = -1) { - super(o, t, r); - this.container = void 0; - this.__multiFilters = new SynchedPropertyObjectOneWayPU(e.multiFilters, this, "multiFilters"); - this.__additionFilters = new SynchedPropertyObjectOneWayPU(e.additionFilters, this, "additionFilters"); - this.onFilterChanged = null; - this.__filterType = new SynchedPropertySimpleOneWayPU(e.filterType, this, "filterType"); - this.selectedFilters = null; - this.__colorArr = new ObservedPropertyObjectPU(null, this, "colorArr"); - this.__fontWeightArr = new ObservedPropertyObjectPU(null, this, "fontWeightArr"); - this.__backgroundColorArr = new ObservedPropertyObjectPU(null, this, "backgroundColorArr"); - this.__isBackgroundHover = new ObservedPropertyObjectPU(null, this, "isBackgroundHover"); - this.__floatArrowBgColor = new ObservedPropertyObjectPU(null, this, "floatArrowBgColor"); - this.__isFloatArrowBgHover = new ObservedPropertySimplePU(!1, this, "isFloatArrowBgHover"); - this.__isArrowIconDownArr = new ObservedPropertyObjectPU(null, this, "isArrowIconDownArr"); - this.__additionColorArr = new ObservedPropertyObjectPU(null, this, "additionColorArr"); - this.__additionFontWeightArr = new ObservedPropertyObjectPU(null, this, "additionFontWeightArr"); - this.__additionBackgroundColorArr = new ObservedPropertyObjectPU(null, this, "additionBackgroundColorArr"); - this.__isAdditionBackgroundHover = new ObservedPropertyObjectPU(null, this, "isAdditionBackgroundHover"); - this.__colorRefresh = new ObservedPropertySimplePU(!1, this, "colorRefresh"); - this.__isFloatBarShow = new ObservedPropertySimplePU(!1, this, "isFloatBarShow"); - this.isFloatBarShowWithoutAnimation = !1; - this.__isFloatShowAllFilter = new ObservedPropertySimplePU(!1, this, "isFloatShowAllFilter"); - this.isFloatShowAllFilterWithoutAnimation = !1; - this.__floatFilterPosition = new ObservedPropertySimplePU(0, this, "floatFilterPosition"); - this.__floatFilterBarHeight = new ObservedPropertySimplePU(0, this, "floatFilterBarHeight"); - this.__floatFilterBarPosition = new ObservedPropertySimplePU(0, this, "floatFilterBarPosition"); - this.filterDynamicHeight = 0; - this.__twoLineModeItemNum = new ObservedPropertyObjectPU(null, this, "twoLineModeItemNum"); - this.__twoLineModeItemNumRecord = new ObservedPropertyObjectPU(null, this, "twoLineModeItemNumRecord"); - this.__downArrowShowState = new ObservedPropertyObjectPU(null, this, "downArrowShowState"); - this.listScroller = new Scroller; - this.setInitiallyProvidedValue(e) - } - - setInitiallyProvidedValue(o) { - void 0 !== o.container && (this.container = o.container); - void 0 !== o.multiFilters ? this.__multiFilters.set(o.multiFilters) : this.__multiFilters.set([]); - void 0 !== o.additionFilters ? this.__additionFilters.set(o.additionFilters) : this.__additionFilters.set(null); - void 0 !== o.onFilterChanged && (this.onFilterChanged = o.onFilterChanged); - void 0 !== o.filterType ? this.__filterType.set(o.filterType) : this.__filterType.set(FilterType.LIST_FILTER); - void 0 !== o.selectedFilters && (this.selectedFilters = o.selectedFilters); - void 0 !== o.colorArr && (this.colorArr = o.colorArr); - void 0 !== o.fontWeightArr && (this.fontWeightArr = o.fontWeightArr); - void 0 !== o.backgroundColorArr && (this.backgroundColorArr = o.backgroundColorArr); - void 0 !== o.isBackgroundHover && (this.isBackgroundHover = o.isBackgroundHover); - void 0 !== o.floatArrowBgColor && (this.floatArrowBgColor = o.floatArrowBgColor); - void 0 !== o.isFloatArrowBgHover && (this.isFloatArrowBgHover = o.isFloatArrowBgHover); - void 0 !== o.isArrowIconDownArr && (this.isArrowIconDownArr = o.isArrowIconDownArr); - void 0 !== o.additionColorArr && (this.additionColorArr = o.additionColorArr); - void 0 !== o.additionFontWeightArr && (this.additionFontWeightArr = o.additionFontWeightArr); - void 0 !== o.additionBackgroundColorArr && (this.additionBackgroundColorArr = o.additionBackgroundColorArr); - void 0 !== o.isAdditionBackgroundHover && (this.isAdditionBackgroundHover = o.isAdditionBackgroundHover); - void 0 !== o.colorRefresh && (this.colorRefresh = o.colorRefresh); - void 0 !== o.isFloatBarShow && (this.isFloatBarShow = o.isFloatBarShow); - void 0 !== o.isFloatBarShowWithoutAnimation && (this.isFloatBarShowWithoutAnimation = o.isFloatBarShowWithoutAnimation); - void 0 !== o.isFloatShowAllFilter && (this.isFloatShowAllFilter = o.isFloatShowAllFilter); - void 0 !== o.isFloatShowAllFilterWithoutAnimation && (this.isFloatShowAllFilterWithoutAnimation = o.isFloatShowAllFilterWithoutAnimation); - void 0 !== o.floatFilterPosition && (this.floatFilterPosition = o.floatFilterPosition); - void 0 !== o.floatFilterBarHeight && (this.floatFilterBarHeight = o.floatFilterBarHeight); - void 0 !== o.floatFilterBarPosition && (this.floatFilterBarPosition = o.floatFilterBarPosition); - void 0 !== o.filterDynamicHeight && (this.filterDynamicHeight = o.filterDynamicHeight); - void 0 !== o.twoLineModeItemNum && (this.twoLineModeItemNum = o.twoLineModeItemNum); - void 0 !== o.twoLineModeItemNumRecord && (this.twoLineModeItemNumRecord = o.twoLineModeItemNumRecord); - void 0 !== o.downArrowShowState && (this.downArrowShowState = o.downArrowShowState); - void 0 !== o.listScroller && (this.listScroller = o.listScroller) - } - - updateStateVars(o) { - this.__multiFilters.reset(o.multiFilters); - this.__additionFilters.reset(o.additionFilters); - this.__filterType.reset(o.filterType) - } - - purgeVariableDependenciesOnElmtId(o) { - this.__multiFilters.purgeDependencyOnElmtId(o); - this.__additionFilters.purgeDependencyOnElmtId(o); - this.__filterType.purgeDependencyOnElmtId(o); - this.__colorArr.purgeDependencyOnElmtId(o); - this.__fontWeightArr.purgeDependencyOnElmtId(o); - this.__backgroundColorArr.purgeDependencyOnElmtId(o); - this.__isBackgroundHover.purgeDependencyOnElmtId(o); - this.__floatArrowBgColor.purgeDependencyOnElmtId(o); - this.__isFloatArrowBgHover.purgeDependencyOnElmtId(o); - this.__isArrowIconDownArr.purgeDependencyOnElmtId(o); - this.__additionColorArr.purgeDependencyOnElmtId(o); - this.__additionFontWeightArr.purgeDependencyOnElmtId(o); - this.__additionBackgroundColorArr.purgeDependencyOnElmtId(o); - this.__isAdditionBackgroundHover.purgeDependencyOnElmtId(o); - this.__colorRefresh.purgeDependencyOnElmtId(o); - this.__isFloatBarShow.purgeDependencyOnElmtId(o); - this.__isFloatShowAllFilter.purgeDependencyOnElmtId(o); - this.__floatFilterPosition.purgeDependencyOnElmtId(o); - this.__floatFilterBarHeight.purgeDependencyOnElmtId(o); - this.__floatFilterBarPosition.purgeDependencyOnElmtId(o); - this.__twoLineModeItemNum.purgeDependencyOnElmtId(o); - this.__twoLineModeItemNumRecord.purgeDependencyOnElmtId(o); - this.__downArrowShowState.purgeDependencyOnElmtId(o) - } - - aboutToBeDeleted() { - this.__multiFilters.aboutToBeDeleted(); - this.__additionFilters.aboutToBeDeleted(); - this.__filterType.aboutToBeDeleted(); - this.__colorArr.aboutToBeDeleted(); - this.__fontWeightArr.aboutToBeDeleted(); - this.__backgroundColorArr.aboutToBeDeleted(); - this.__isBackgroundHover.aboutToBeDeleted(); - this.__floatArrowBgColor.aboutToBeDeleted(); - this.__isFloatArrowBgHover.aboutToBeDeleted(); - this.__isArrowIconDownArr.aboutToBeDeleted(); - this.__additionColorArr.aboutToBeDeleted(); - this.__additionFontWeightArr.aboutToBeDeleted(); - this.__additionBackgroundColorArr.aboutToBeDeleted(); - this.__isAdditionBackgroundHover.aboutToBeDeleted(); - this.__colorRefresh.aboutToBeDeleted(); - this.__isFloatBarShow.aboutToBeDeleted(); - this.__isFloatShowAllFilter.aboutToBeDeleted(); - this.__floatFilterPosition.aboutToBeDeleted(); - this.__floatFilterBarHeight.aboutToBeDeleted(); - this.__floatFilterBarPosition.aboutToBeDeleted(); - this.__twoLineModeItemNum.aboutToBeDeleted(); - this.__twoLineModeItemNumRecord.aboutToBeDeleted(); - this.__downArrowShowState.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get multiFilters() { - return this.__multiFilters.get() - } - - set multiFilters(o) { - this.__multiFilters.set(o) - } - - get additionFilters() { - return this.__additionFilters.get() - } - - set additionFilters(o) { - this.__additionFilters.set(o) - } - - get filterType() { - return this.__filterType.get() - } - - set filterType(o) { - this.__filterType.set(o) - } - - get colorArr() { - return this.__colorArr.get() - } - - set colorArr(o) { - this.__colorArr.set(o) - } - - get fontWeightArr() { - return this.__fontWeightArr.get() - } - - set fontWeightArr(o) { - this.__fontWeightArr.set(o) - } - - get backgroundColorArr() { - return this.__backgroundColorArr.get() - } - - set backgroundColorArr(o) { - this.__backgroundColorArr.set(o) - } - - get isBackgroundHover() { - return this.__isBackgroundHover.get() - } - - set isBackgroundHover(o) { - this.__isBackgroundHover.set(o) - } - - get floatArrowBgColor() { - return this.__floatArrowBgColor.get() - } - - set floatArrowBgColor(o) { - this.__floatArrowBgColor.set(o) - } - - get isFloatArrowBgHover() { - return this.__isFloatArrowBgHover.get() - } - - set isFloatArrowBgHover(o) { - this.__isFloatArrowBgHover.set(o) - } - - get isArrowIconDownArr() { - return this.__isArrowIconDownArr.get() - } - - set isArrowIconDownArr(o) { - this.__isArrowIconDownArr.set(o) - } - - get additionColorArr() { - return this.__additionColorArr.get() - } - - set additionColorArr(o) { - this.__additionColorArr.set(o) - } - - get additionFontWeightArr() { - return this.__additionFontWeightArr.get() - } - - set additionFontWeightArr(o) { - this.__additionFontWeightArr.set(o) - } - - get additionBackgroundColorArr() { - return this.__additionBackgroundColorArr.get() - } - - set additionBackgroundColorArr(o) { - this.__additionBackgroundColorArr.set(o) - } - - get isAdditionBackgroundHover() { - return this.__isAdditionBackgroundHover.get() - } - - set isAdditionBackgroundHover(o) { - this.__isAdditionBackgroundHover.set(o) - } - - get colorRefresh() { - return this.__colorRefresh.get() - } - - set colorRefresh(o) { - this.__colorRefresh.set(o) - } - - get isFloatBarShow() { - return this.__isFloatBarShow.get() - } - - set isFloatBarShow(o) { - this.__isFloatBarShow.set(o) - } - - get isFloatShowAllFilter() { - return this.__isFloatShowAllFilter.get() - } - - set isFloatShowAllFilter(o) { - this.__isFloatShowAllFilter.set(o) - } - - get floatFilterPosition() { - return this.__floatFilterPosition.get() - } - - set floatFilterPosition(o) { - this.__floatFilterPosition.set(o) - } - - get floatFilterBarHeight() { - return this.__floatFilterBarHeight.get() - } - - set floatFilterBarHeight(o) { - this.__floatFilterBarHeight.set(o) - } - - get floatFilterBarPosition() { - return this.__floatFilterBarPosition.get() - } - - set floatFilterBarPosition(o) { - this.__floatFilterBarPosition.set(o) - } - - get twoLineModeItemNum() { - return this.__twoLineModeItemNum.get() - } - - set twoLineModeItemNum(o) { - this.__twoLineModeItemNum.set(o) - } - - get twoLineModeItemNumRecord() { - return this.__twoLineModeItemNumRecord.get() - } - - set twoLineModeItemNumRecord(o) { - this.__twoLineModeItemNumRecord.set(o) - } - - get downArrowShowState() { - return this.__downArrowShowState.get() - } - - set downArrowShowState(o) { - this.__downArrowShowState.set(o) - } - - textColor(o, e) { - return this.selectedFilters.length > o && this.selectedFilters[o].index === e ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - } - } - - aboutToAppear() { - this.initParams() - } - - filterItemClick(o, e) { - let t = this.multiFilters[o].options[e]; - if (e != this.selectedFilters[o].index) { - this.colorArr[o][e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }; - this.colorArr[o][this.selectedFilters[o].index] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }; - this.fontWeightArr[o][e] = FontWeight.Medium; - this.fontWeightArr[o][this.selectedFilters[o].index] = FontWeight.Regular; - this.colorRefresh = !this.colorRefresh; - this.selectedFilters[o].value = t; - this.selectedFilters[o].index = e; - this.onFilterChanged && this.onFilterChanged(this.selectedFilters) - } - } - - initParams() { - if (!this.selectedFilters) { - this.selectedFilters = []; - for (let e of this.multiFilters) { - var o = { name: e.name, index: -1, value: null }; - if (e.options.length > 0) { - o.index = 0; - o.value = e.options[0] - } - this.selectedFilters.push(o) - } - if (this.additionFilters && this.additionFilters.name) { - o = { name: this.additionFilters.name, index: -1, value: null }; - this.selectedFilters.push(o) - } - } - if (!this.colorArr) { - this.colorArr = []; - this.backgroundColorArr = []; - this.isBackgroundHover = []; - this.fontWeightArr = []; - this.isArrowIconDownArr = []; - this.floatArrowBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - for (let o of this.multiFilters) { - var e = new ResourceArray; - var t = new FontWeightArray; - var r = new ResourceArray; - var i = new BooleanArray; - for (let i of o.options.keys()) { - if (0 === i) { - e.push({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }); - t.push(FontWeight.Medium) - } else { - e.push({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - t.push(FontWeight.Regular) - } - r.push({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }) - } - this.colorArr.push(e); - this.fontWeightArr.push(t); - this.backgroundColorArr.push(r); - this.isBackgroundHover.push(i); - this.isArrowIconDownArr.push(new ObservedBoolean(!0)) - } - } - if (this.additionFilters && this.additionFilters.options) { - this.additionColorArr = []; - this.additionFontWeightArr = []; - this.additionBackgroundColorArr = []; - this.isAdditionBackgroundHover = []; - for (let o = 0;o < this.additionFilters.options.length; o++) { - this.additionColorArr.push({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - this.additionFontWeightArr.push(FontWeight.Regular); - this.additionBackgroundColorArr.push({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }); - this.isAdditionBackgroundHover.push(!1) - } - } - if (!this.twoLineModeItemNum) { - this.twoLineModeItemNum = []; - this.twoLineModeItemNumRecord = []; - this.downArrowShowState = []; - for (let o = 0;o < this.multiFilters.length; o++) { - this.twoLineModeItemNum.push(new ObservedNumber(0)); - this.twoLineModeItemNumRecord.push(new ObservedNumber(0)); - this.downArrowShowState.push(new ObservedBoolean(!1)) - } - } - } - - ListFilter(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.width("100%"); - Column.align(Alignment.Start); - Column.padding({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - } - }); - Column.onAreaChange(((o, e) => { - if (!this.isFloatShowAllFilterWithoutAnimation && !this.isFloatBarShowWithoutAnimation) { - null != this.additionFilters ? this.filterDynamicHeight = parseInt(e.height.toString(), 0) + 40 + 8 : this.filterDynamicHeight = parseInt(e.height.toString(), 0) + 8; - this.floatFilterPosition = -this.filterDynamicHeight - } - })); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.multiFilters, ((o, e) => { - const t = o; - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - r ? ViewPU.create(new ListFilterRow(this, { - colorRow: this.colorArr[e], - fontWeightRow: this.fontWeightArr[e], - backgroundColorRow: this.backgroundColorArr[e], - isBackgroundHoverRow: this.isBackgroundHover[e], - filterRow: t, - onItemClick: o => { - this.filterItemClick(e, o) - } - }, void 0, o)) : this.updateStateVarsOfChildByElmtId(o, { - colorRow: this.colorArr[e], - fontWeightRow: this.fontWeightArr[e], - backgroundColorRow: this.backgroundColorArr[e], - isBackgroundHoverRow: this.isBackgroundHover[e] - }); - ViewStackProcessor.StopGetAccessRecording() - })) - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Column.pop() - } - - MultiLineFilter(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.width("100%"); - Column.onAreaChange(((o, e) => { - null != this.additionFilters ? this.filterDynamicHeight = parseInt(e.height.toString(), 0) + 40 + 8 : this.filterDynamicHeight = parseInt(e.height.toString(), 0) + 8; - this.isFloatBarShowWithoutAnimation || this.isFloatShowAllFilterWithoutAnimation || (this.floatFilterPosition = -this.filterDynamicHeight) - })); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.multiFilters, ((o, e) => { - const t = o; - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - r ? ViewPU.create(new MultiFilterRow(this, { - colorRow: this.colorArr[e], - fontWeightRow: this.fontWeightArr[e], - backgroundColorRow: this.backgroundColorArr[e], - isBackgroundHoverRow: this.isBackgroundHover[e], - arrowShowStateRow: this.downArrowShowState[e], - twoLineModeItemNumRow: this.twoLineModeItemNum[e], - twoLineModeItemNumRecordRow: this.twoLineModeItemNumRecord[e], - isArrowIconDown: this.isArrowIconDownArr[e], - filterRow: t, - onItemClick: o => { - this.filterItemClick(e, o) - } - }, void 0, o)) : this.updateStateVarsOfChildByElmtId(o, { - colorRow: this.colorArr[e], - fontWeightRow: this.fontWeightArr[e], - backgroundColorRow: this.backgroundColorArr[e], - isBackgroundHoverRow: this.isBackgroundHover[e], - arrowShowStateRow: this.downArrowShowState[e], - twoLineModeItemNumRow: this.twoLineModeItemNum[e], - twoLineModeItemNumRecordRow: this.twoLineModeItemNumRecord[e], - isArrowIconDown: this.isArrowIconDownArr[e] - }); - ViewStackProcessor.StopGetAccessRecording() - })) - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Column.pop() - } - - additionItemClick(o) { - let e = this.multiFilters.length; - if (this.selectedFilters[e].index != o) if (-1 === this.selectedFilters[e].index) { - this.additionColorArr[o] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }; - this.additionFontWeightArr[o] = FontWeight.Medium; - this.selectedFilters[e].value = this.additionFilters.options[o]; - this.selectedFilters[e].index = o - } else { - let t = this.selectedFilters[e].index; - this.additionColorArr[t] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }; - this.additionColorArr[o] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }; - this.additionFontWeightArr[t] = FontWeight.Regular; - this.additionFontWeightArr[o] = FontWeight.Medium; - this.selectedFilters[e].value = this.additionFilters.options[o]; - this.selectedFilters[e].index = o - } else { - this.additionColorArr[o] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }; - this.additionFontWeightArr[o] = FontWeight.Regular; - this.selectedFilters[e].value = null; - this.selectedFilters[e].index = -1 - } - this.onFilterChanged && this.onFilterChanged(this.selectedFilters); - this.colorRefresh = !this.colorRefresh - } - - AdditionFilterList(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - this.additionFilters && this.additionFilters.name && this.additionFilters.options && 0 != this.additionFilters.options.length ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - List.create(); - List.listDirection(Axis.Horizontal); - List.scrollBar(BarState.Off); - List.padding({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - } - }); - List.margin({ left: -16 }); - List.width("100%"); - List.height(40); - e || List.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - { - const o = !0; - const e = (e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ListItem.create(r, o); - ListItem.height("100%"); - t || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const t = () => { - this.observeComponentCreation(e); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(this.additionFilters.name.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ left: 8, right: 8 }); - e || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.width(1); - Row.height(16); - Row.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_list_separator"], - bundleName: "", - moduleName: "" - }); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop(); - Row.pop(); - ListItem.pop() - }; - const r = (o, t) => { - e(o, t); - this.updateFuncByElmtId.set(o, e); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(this.additionFilters.name.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ left: 8, right: 8 }); - e || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.width(1); - Row.height(16); - Row.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_list_separator"], - bundleName: "", - moduleName: "" - }); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop(); - Row.pop(); - ListItem.pop() - }; - o ? (() => { - this.observeComponentCreation(e); - ListItem.pop() - })() : t() - } - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.additionFilters.options, ((o, e) => { - const t = o; - { - const o = !0; - const r = (t, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - ListItem.create(s, o); - ListItem.height("100%"); - ListItem.backgroundColor(this.isAdditionBackgroundHover[e] ? this.additionBackgroundColorArr[e] : "#00FFFFFF"); - ListItem.onHover((o => { - Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - if (o) { - this.additionBackgroundColorArr[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isAdditionBackgroundHover[e] = !0 - } else this.isAdditionBackgroundHover[e] = !1 - })) - })); - ListItem.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.additionBackgroundColorArr[e] = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isAdditionBackgroundHover[e] = !0 - })) : o.type === TouchType.Up && Context.animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: 100 - }, (() => { - this.isAdditionBackgroundHover[e] = !1 - })) - })); - ListItem.focusable(!0); - ViewStackProcessor.visualState("focused"); - ListItem.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - ListItem.padding({ left: 6, right: 6 }); - ViewStackProcessor.visualState("normal"); - ListItem.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - ListItem.padding({ left: 8, right: 8 }); - ViewStackProcessor.visualState(); - ListItem.onClick((() => { - this.additionItemClick(e) - })); - r || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const i = () => { - this.observeComponentCreation(r); - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.additionColorArr[e]); - Text.fontWeight(this.additionFontWeightArr[e]); - Text.focusable(!0); - r || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - ListItem.pop() - }; - const s = (o, i) => { - r(o, i); - this.updateFuncByElmtId.set(o, r); - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.toString()); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.additionColorArr[e]); - Text.fontWeight(this.additionFontWeightArr[e]); - Text.focusable(!0); - r || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - ListItem.pop() - }; - o ? (() => { - this.observeComponentCreation(r); - ListItem.pop() - })() : i() - } - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - List.pop() - })) : If.branchId(1); - e || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - } - - FilterHeader(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.padding({ top: 8 }); - Column.onVisibleAreaChange([0, 1], ((o, e) => { - if (e > 0) { - this.isFloatShowAllFilter = !1; - this.isFloatShowAllFilterWithoutAnimation = !1; - this.isFloatBarShowWithoutAnimation = !1; - Context.animateTo({ curve: INTER_POLATING_SPRING, onFinish: () => { - this.isFloatBarShowWithoutAnimation || (this.isFloatBarShow = !1) - } }, (() => { - this.floatFilterBarHeight = 0 - })) - } else { - this.isFloatBarShow = !0; - this.isFloatBarShowWithoutAnimation = !0; - Context.animateTo({ curve: INTER_POLATING_SPRING }, (() => { - this.floatFilterBarHeight = 48 - })) - } - })); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - this.filterType === FilterType.LIST_FILTER ? this.ifElseBranchUpdateFunction(0, (() => { - this.ListFilter.bind(this)() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.MultiLineFilter.bind(this)() - })); - e || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.AdditionFilterList.bind(this)(); - Column.pop() - } - - FloatFilterHeader(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.padding({ top: 8 }); - Column.width("100%"); - Column.clip(!0); - Column.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Column.opacity(.95); - Column.backgroundBlurStyle(BlurStyle.Thin); - Column.visibility(this.isFloatShowAllFilter ? Visibility.Visible : Visibility.Hidden); - Column.position({ x: 0, y: this.floatFilterPosition }); - Column.zIndex(2); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - this.filterType === FilterType.LIST_FILTER ? this.ifElseBranchUpdateFunction(0, (() => { - this.ListFilter.bind(this)() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.MultiLineFilter.bind(this)() - })); - e || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.AdditionFilterList.bind(this)(); - Column.pop() - } - - FloatFilterBar(o = null) { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.width("100%"); - Row.padding({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Row.height(this.floatFilterBarHeight); - Row.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Row.opacity(.95); - Row.clip(!0); - Row.backgroundBlurStyle(BlurStyle.Thin); - Row.visibility(this.isFloatBarShow ? Visibility.Visible : Visibility.Hidden); - Row.alignItems(VerticalAlign.Bottom); - Row.position({ x: 0, y: this.floatFilterBarPosition }); - Row.zIndex(1); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.alignItems(HorizontalAlign.Center); - Column.width("100%"); - Column.height(40); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.height("100%"); - Row.alignItems(VerticalAlign.Center); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - ForEach.create(); - this.forEachUpdateFunction(o, this.selectedFilters.slice(0, (this.colorRefresh, this.selectedFilters.length)), ((o, e) => { - const t = o; - this.observeComponentCreation(((o, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - 0 != e && null != t.value ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create("/"); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - e || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - r || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(t.value); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body3"], - bundleName: "", - moduleName: "" - }); - e || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - }), void 0,!0,!1); - e || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Row.pop(); - Column.pop(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.height(40); - Row.margin({ left: -24 }); - Row.backgroundColor(this.isFloatArrowBgHover ? this.floatArrowBgColor : "#00FFFFFF"); - Row.focusable(!0); - ViewStackProcessor.visualState("focused"); - Row.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 2, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - }); - Row.width(28); - Row.offset({ x: -2 }); - ViewStackProcessor.visualState("normal"); - Row.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - width: 0 - }); - Row.width(24); - Row.offset({ x: 0 }); - ViewStackProcessor.visualState(); - Row.onHover((o => { - o ? Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - this.floatArrowBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }; - this.isFloatArrowBgHover = !0 - })) : Context.animateTo({ curve: FRICTION_CUBIC_BEZIER, duration: 250 }, (() => { - this.isFloatArrowBgHover = !1 - })) - })); - Row.onTouch((o => { - o.type === TouchType.Down ? Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.floatArrowBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }; - this.isFloatArrowBgHover = !0 - })) : o.type === TouchType.Up && Context.animateTo({ curve: SHARP_CUBIC_BEZIER, duration: 100 }, (() => { - this.isFloatArrowBgHover = !1 - })) - })); - Row.onClick((() => { - Context.animateTo({ duration: 150, curve: SHARP_CUBIC_BEZIER }, (() => { - this.isFloatBarShow = !1; - this.isFloatBarShowWithoutAnimation = !1 - })); - this.isFloatShowAllFilter = !0; - this.isFloatShowAllFilterWithoutAnimation = !0; - Context.animateTo({ curve: INTER_POLATING_SPRING }, (() => { - this.floatFilterPosition = 0; - this.floatFilterBarPosition = this.filterDynamicHeight - })) - })); - e || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Image.create({ - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - }); - Image.width(24); - Image.height(24); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_tertiary"], - bundleName: "", - moduleName: "" - }); - Image.focusable(!0); - e || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop(); - Row.pop() - } - - initialRender() { - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Stack.create({ alignContent: Alignment.Top }); - Stack.clip(!0); - e || Stack.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.FloatFilterBar.bind(this)(); - this.FloatFilterHeader.bind(this)(); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Column.create(); - Column.zIndex(0); - e || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, e) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - List.create({ initialIndex: 0, scroller: this.listScroller }); - List.listDirection(Axis.Vertical); - List.width("100%"); - List.height("100%"); - List.edgeEffect(EdgeEffect.Spring); - List.onScroll(((o, e) => { - if (this.isFloatShowAllFilterWithoutAnimation && e == ScrollState.Scroll) { - this.isFloatBarShowWithoutAnimation = !0; - this.isFloatShowAllFilterWithoutAnimation = !1; - Context.animateTo({ duration: 150, curve: SHARP_CUBIC_BEZIER }, (() => { - this.isFloatBarShow = !0 - })); - Context.animateTo({ curve: INTER_POLATING_SPRING, onFinish: () => { - this.isFloatShowAllFilterWithoutAnimation || (this.isFloatShowAllFilter = !1) - } }, (() => { - this.floatFilterPosition = -this.filterDynamicHeight; - this.floatFilterBarPosition = 0 - })) - } - })); - e || List.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - { - const o = !0; - const e = (e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ListItem.create(r, o); - ListItem.focusable(!0); - ListItem.onFocus((() => { - this.listScroller.scrollToIndex(0,!0) - })); - t || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const t = () => { - this.observeComponentCreation(e); - this.FilterHeader.bind(this)(); - ListItem.pop() - }; - const r = (o, t) => { - e(o, t); - this.updateFuncByElmtId.set(o, e); - this.FilterHeader.bind(this)(); - ListItem.pop() - }; - o ? (() => { - this.observeComponentCreation(e); - ListItem.pop() - })() : t() - } - { - const o = !0; - const e = (e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ListItem.create(r, o); - ListItem.focusable(!0); - ListItem.onFocus((() => { - this.listScroller.scrollToIndex(1,!0) - })); - t || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const t = () => { - this.observeComponentCreation(e); - this.container.bind(this)(); - ListItem.pop() - }; - const r = (o, t) => { - e(o, t); - this.updateFuncByElmtId.set(o, e); - this.container.bind(this)(); - ListItem.pop() - }; - o ? (() => { - this.observeComponentCreation(e); - ListItem.pop() - })() : t() - } - List.pop(); - Column.pop(); - Stack.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export default { - Filter, FilterType -}; \ No newline at end of file diff --git a/interface/progressbutton/BUILD.gn b/interface/progressbutton/BUILD.gn deleted file mode 100644 index 411fb32..0000000 --- a/interface/progressbutton/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_progressbutton_abc") { - src_js = rebase_path("progressbutton.js") - dst_file = rebase_path(target_out_dir + "/progressbutton.abc") - in_puts = [ "progressbutton.js" ] - out_puts = [ target_out_dir + "/progressbutton.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("progressbutton_abc") { - input = get_label_info(":gen_progressbutton_abc", "target_out_dir") + "/progressbutton.abc" - output = target_out_dir + "/progressbutton_abc.o" - dep = ":gen_progressbutton_abc" -} - -ohos_shared_library("progressbutton") { - sources = [ "progressbutton.cpp" ] - - deps = [ ":progressbutton_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/progressbutton/progressbutton.cpp b/interface/progressbutton/progressbutton.cpp deleted file mode 100644 index 4a3fc1d..0000000 --- a/interface/progressbutton/progressbutton.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_progressbutton_abc_start[]; -extern const char _binary_progressbutton_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_ProgressButton_GetABCCode(const char **buf, int *buflen) -{ - if (buf != nullptr) { - *buf = _binary_progressbutton_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_progressbutton_abc_end - _binary_progressbutton_abc_start; - } -} - -/* - * Module define - */ -static napi_module progressbuttonModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.ProgressButton", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; -/* - * Module register function - */ -extern "C" __attribute__((constructor)) void progressbuttonRegisterModule(void) -{ - napi_module_register(&progressbuttonModule); -} diff --git a/interface/progressbutton/progressbutton.js b/interface/progressbutton/progressbutton.js deleted file mode 100644 index 9a3bd18..0000000 --- a/interface/progressbutton/progressbutton.js +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const EMPTY_STRING = ''; -const MAX_PROGRESS = 100; -const MAX_PERCENTAGE = '100%'; -const MIN_PERCENTAGE = '0%'; -const TEXT_OPACITY = 0.4; -const BUTTON_NORMARL_WIDTH = 44; -const BUTTON_NORMARL_HEIGHT = 28; -const BUTTON_BORDER_RADIUS = 14; -const BUTTON_BORDER_WIDTH = 0.5; - -export class ProgressButton extends ViewPU { - constructor(e, t, s, r = -1) { - super(e, s, r); - this.__progress = new SynchedPropertySimpleOneWayPU(t.progress, this, 'progress'); - this.__textProgress = new ObservedPropertySimplePU('', this, 'textProgress'); - this.__content = new SynchedPropertySimpleOneWayPU(t.content, this, 'content'); - this.__isLoading = new ObservedPropertySimplePU(!1, this, 'isLoading'); - this.__enable = new SynchedPropertySimpleOneWayPU(t.enable, this, 'enable'); - this.progressButtonWidth = 44; - this.clickCallback = null; - this.setInitiallyProvidedValue(t); - this.declareWatch('progress', this.getProgressContext); - } - - setInitiallyProvidedValue(e) { - void 0 !== e.textProgress && (this.textProgress = e.textProgress); - void 0 !== e.content ? this.__content.set(e.content) : this.__content.set(''); - void 0 !== e.isLoading && (this.isLoading = e.isLoading); - void 0 !== e.enable ? this.__enable.set(e.enable) : this.__enable.set(!0); - void 0 !== e.progressButtonWidth && (this.progressButtonWidth = e.progressButtonWidth); - void 0 !== e.clickCallback && (this.clickCallback = e.clickCallback); - } - - updateStateVars(e) { - this.__progress.reset(e.progress); - this.__content.reset(e.content); - this.__enable.reset(e.enable); - } - - purgeVariableDependenciesOnElmtId(e) { - this.__progress.purgeDependencyOnElmtId(e); - this.__textProgress.purgeDependencyOnElmtId(e); - this.__content.purgeDependencyOnElmtId(e); - this.__isLoading.purgeDependencyOnElmtId(e); - this.__enable.purgeDependencyOnElmtId(e); - } - - aboutToBeDeleted() { - this.__progress.aboutToBeDeleted(); - this.__textProgress.aboutToBeDeleted(); - this.__content.aboutToBeDeleted(); - this.__isLoading.aboutToBeDeleted(); - this.__enable.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - get progress() { - return this.__progress.get(); - } - - set progress(e) { - this.__progress.set(e); - } - - get textProgress() { - return this.__textProgress.get(); - } - - set textProgress(e) { - this.__textProgress.set(e); - } - - get content() { - return this.__content.get(); - } - - set content(e) { - this.__content.set(e); - } - - get isLoading() { - return this.__isLoading.get(); - } - - set isLoading(e) { - this.__isLoading.set(e); - } - - get enable() { - return this.__enable.get(); - } - - set enable(e) { - this.__enable.set(e); - } - - getButtonProgress() { - return this.progress < 0 ? 0 : this.progress > MAX_PROGRESS ? MAX_PROGRESS : this.progress; - } - - getProgressContext() { - if (this.progress < 0) { - this.isLoading = !1; - this.textProgress = '0%'; - } else if (this.progress >= MAX_PROGRESS) { - this.isLoading = !1; - this.textProgress = '100%'; - } else { - this.textProgress = Math.floor(this.progress / MAX_PROGRESS * MAX_PROGRESS).toString() + '%'; - } - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Button.createWithChild(); - Button.borderRadius(BUTTON_BORDER_RADIUS); - Button.clip(!1); - Button.hoverEffect(HoverEffect.None); - Button.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_foreground_contrary'], - bundleName: '', - moduleName: '' - }); - Button.border({ - width: BUTTON_BORDER_WIDTH, - color: this.enable ? { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_text_actived'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_foreground_contrary_disable'], - bundleName: '', - moduleName: '' - } - }); - Button.constraintSize({ minWidth: 44 }); - Button.width(this.progressButtonWidth < BUTTON_NORMARL_WIDTH ? BUTTON_NORMARL_WIDTH : this.progressButtonWidth); - Button.stateEffect(this.enable); - Button.onClick((() => { - if (this.enable) { - this.progress < MAX_PROGRESS && (this.isLoading = !this.isLoading); - this.clickCallback && this.clickCallback(); - } - })); - t || Button.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Stack.create(); - t || Stack.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Progress.create({ value: this.getButtonProgress(), total: MAX_PROGRESS, style: ProgressStyle.Capsule }); - Progress.height(BUTTON_NORMARL_HEIGHT); - Progress.borderRadius(BUTTON_BORDER_RADIUS); - Progress.width('100%'); - Progress.hoverEffect(HoverEffect.None); - Progress.clip(!1); - Progress.enabled(this.enable); - t || Progress.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.isLoading ? this.textProgress : this.content); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_button3'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - Text.fontColor(this.isLoading ? { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_emphasize'], - bundleName: '', - moduleName: '' - }); - Text.maxLines(1); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.padding({ left: 8, right: 8 }); - Text.opacity(this.enable ? 1 : TEXT_OPACITY); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Row.pop(); - Stack.pop(); - Button.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} -export default { ProgressButton }; \ No newline at end of file diff --git a/interface/selecttitlebar/BUILD.gn b/interface/selecttitlebar/BUILD.gn deleted file mode 100755 index 2b37576..0000000 --- a/interface/selecttitlebar/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_selecttitlebar_abc") { - src_js = rebase_path("selecttitlebar.js") - dst_file = rebase_path(target_out_dir + "/selecttitlebar.abc") - in_puts = [ "selecttitlebar.js" ] - out_puts = [ target_out_dir + "/selecttitlebar.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("selecttitlebar_abc") { - input = get_label_info(":gen_selecttitlebar_abc", "target_out_dir") + "/selecttitlebar.abc" - output = target_out_dir + "/selecttitlebar_abc.o" - dep = ":gen_selecttitlebar_abc" -} - -ohos_shared_library("selecttitlebar") { - sources = [ "selecttitlebar.cpp" ] - - deps = [ ":selecttitlebar_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/selecttitlebar/selecttitlebar.cpp b/interface/selecttitlebar/selecttitlebar.cpp deleted file mode 100644 index 9d11696..0000000 --- a/interface/selecttitlebar/selecttitlebar.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_selecttitlebar_abc_start[]; -extern const char _binary_selecttitlebar_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_SelectTitleBar_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_selecttitlebar_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_selecttitlebar_abc_end - _binary_selecttitlebar_abc_start; - } - } - - -static napi_module selecttitlebarModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.SelectTitleBar", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void selecttitlebarRegisterModule(void) -{ - napi_module_register(&selecttitlebarModule); -} \ No newline at end of file diff --git a/interface/selecttitlebar/selecttitlebar.js b/interface/selecttitlebar/selecttitlebar.js deleted file mode 100644 index 08d5151..0000000 --- a/interface/selecttitlebar/selecttitlebar.js +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -var __decorate = this && this.__decorate || function(e, t, o, i) { - var s, r = arguments.length, - n = r < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, o) : i; - if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(e, t, o, i); - else - for (var c = e.length - 1; c >= 0; c--)(s = e[c]) && (n = (r < 3 ? s(n) : r > 3 ? s(t, o, n) : s(t, o)) || n); - return r > 3 && n && Object.defineProperty(t, o, n), n -}; -const KeyCode = requireNapi('multimodalInput.keyCode').KeyCode; -const PUBLIC_MORE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuAxhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhYWnstMINgYsh+cmfs88BICydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRdYjJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5HnhkC9+zAA5YXXy8jBKV5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rmj79U74wCszuih+F/ljrSi/+uud8YBGA10rayqrnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hkH4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ/N5Vjd0oTXKp9QcKFpD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fNQ1BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnXfo96DGYBRZD1ycpc/XzbmbvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jpyaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jvjACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrpVV1fXOOADLA10rq6rrnXEAVga6VlZV13uh8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5LP+r7veGQfgd+T+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtUtTXit8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXvO9H8f1bfVPQ9FvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC"; -const 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"; -export class SelectTitleBar extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.__selected = new ObservedPropertySimplePU(0, this, "selected"); - this.options = void 0; - this.menuItems = void 0; - this.subtitle = void 0; - this.badgeValue = void 0; - this.hidesBackButton = void 0; - this.onSelected = void 0; - this.__selectMaxWidth = new ObservedPropertySimplePU(0, this, "selectMaxWidth"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.selected && (this.selected = e.selected); - void 0 !== e.options && (this.options = e.options); - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.subtitle && (this.subtitle = e.subtitle); - void 0 !== e.badgeValue && (this.badgeValue = e.badgeValue); - void 0 !== e.hidesBackButton && (this.hidesBackButton = e.hidesBackButton); - void 0 !== e.onSelected && (this.onSelected = e.onSelected); - void 0 !== e.selectMaxWidth && (this.selectMaxWidth = e.selectMaxWidth) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__selected.purgeDependencyOnElmtId(e); - this.__selectMaxWidth.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__selected.aboutToBeDeleted(); - this.__selectMaxWidth.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get selected() { - return this.__selected.get() - } - set selected(e) { - this.__selected.set(e) - } - get selectMaxWidth() { - return this.__selectMaxWidth.get() - } - set selectMaxWidth(e) { - this.__selectMaxWidth.set(e) - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }); - Flex.width("100%"); - Flex.height(SelectTitleBar.totalHeight); - Flex.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Flex.onAreaChange(((e, t) => { - let o = Number(t.width); - if (!this.hidesBackButton) { - o -= ImageMenuItem.imageHotZoneWidth; - o += SelectTitleBar.leftPadding; - o -= SelectTitleBar.leftPaddingWithBack - } - if (void 0 !== this.menuItems) { - let e = this.menuItems.length; - e >= CollapsibleMenuSection.maxCountOfVisibleItems ? o -= ImageMenuItem.imageHotZoneWidth * CollapsibleMenuSection.maxCountOfVisibleItems : e > 0 && (o -= ImageMenuItem.imageHotZoneWidth * e) - } - void 0 !== this.badgeValue ? this.selectMaxWidth = o - SelectTitleBar.badgeSize - SelectTitleBar.leftPadding - SelectTitleBar.rightPadding - SelectTitleBar.badgePadding : this.selectMaxWidth = o - SelectTitleBar.leftPadding - SelectTitleBar.rightPadding - })); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: this.hidesBackButton ? { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_start"], - bundleName: "", - moduleName: "" - } - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.hidesBackButton ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Navigator.create(); - t || Navigator.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: { - value: PUBLIC_BACK, - isEnabled: !0 - } - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - Navigator.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.justifyContent(FlexAlign.Start); - Column.alignItems(HorizontalAlign.Start); - Column.constraintSize({ - maxWidth: this.selectMaxWidth - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.badgeValue ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Badge.create({ - count: this.badgeValue, - position: BadgePosition.Right, - style: { - badgeSize: SelectTitleBar.badgeSize, - badgeColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - borderColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - borderWidth: 0 - } - }); - t || Badge.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.justifyContent(FlexAlign.Start); - Row.margin({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_l"], - bundleName: "", - moduleName: "" - } - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Select.create(this.options); - Select.selected(this.selected); - Select.value(this.selected < this.options.length ? this.options[this.selected].value.toString() : ""); - Select.font({ - size: this.hidesBackButton && void 0 === this.subtitle ? { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline8"], - bundleName: "", - moduleName: "" - } - }); - Select.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text"], - bundleName: "", - moduleName: "" - }); - Select.backgroundColor(Color.Transparent); - Select.onSelect(this.onSelected); - Select.constraintSize({ - maxWidth: this.selectMaxWidth - }); - Select.offset({ - x: -4 - }); - t || Select.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Select.pop(); - Row.pop(); - Badge.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.justifyContent(FlexAlign.Start); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Select.create(this.options); - Select.selected(this.selected); - Select.value(this.selected < this.options.length ? this.options[this.selected].value.toString() : ""); - Select.font({ - size: this.hidesBackButton && void 0 === this.subtitle ? { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline8"], - bundleName: "", - moduleName: "" - } - }); - Select.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text"], - bundleName: "", - moduleName: "" - }); - Select.backgroundColor(Color.Transparent); - Select.onSelect(this.onSelected); - Select.constraintSize({ - maxWidth: this.selectMaxWidth - }); - Select.offset({ - x: -4 - }); - t || Select.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Select.pop(); - Row.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.subtitle ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.justifyContent(FlexAlign.Start); - Row.margin({ - left: SelectTitleBar.subtitleLeftPadding - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.subtitle); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_over_line"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_subtitle_text"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.textOverflow({ - overflow: TextOverflow.Ellipsis - }); - Text.constraintSize({ - maxWidth: this.selectMaxWidth - }); - Text.offset({ - y: -4 - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new CollapsibleMenuSection(this, { - menuItems: this.menuItems - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Flex.pop() - } - rerender() { - this.updateDirtyElements() - } -} -SelectTitleBar.badgeSize = 16; -SelectTitleBar.totalHeight = 56; -SelectTitleBar.leftPadding = 24; -SelectTitleBar.leftPaddingWithBack = 12; -SelectTitleBar.rightPadding = 24; -SelectTitleBar.badgePadding = 16; -SelectTitleBar.subtitleLeftPadding = 4; -class CollapsibleMenuSection extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.menuItems = void 0; - this.__isPopupShown = new ObservedPropertySimplePU(!1, this, "isPopupShown"); - this.__isMoreIconOnFocus = new ObservedPropertySimplePU(!1, this, "isMoreIconOnFocus"); - this.__isMoreIconOnHover = new ObservedPropertySimplePU(!1, this, "isMoreIconOnHover"); - this.__isMoreIconOnClick = new ObservedPropertySimplePU(!1, this, "isMoreIconOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.isPopupShown && (this.isPopupShown = e.isPopupShown); - void 0 !== e.isMoreIconOnFocus && (this.isMoreIconOnFocus = e.isMoreIconOnFocus); - void 0 !== e.isMoreIconOnHover && (this.isMoreIconOnHover = e.isMoreIconOnHover); - void 0 !== e.isMoreIconOnClick && (this.isMoreIconOnClick = e.isMoreIconOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isPopupShown.purgeDependencyOnElmtId(e); - this.__isMoreIconOnFocus.purgeDependencyOnElmtId(e); - this.__isMoreIconOnHover.purgeDependencyOnElmtId(e); - this.__isMoreIconOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isPopupShown.aboutToBeDeleted(); - this.__isMoreIconOnFocus.aboutToBeDeleted(); - this.__isMoreIconOnHover.aboutToBeDeleted(); - this.__isMoreIconOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isPopupShown() { - return this.__isPopupShown.get() - } - set isPopupShown(e) { - this.__isPopupShown.set(e) - } - get isMoreIconOnFocus() { - return this.__isMoreIconOnFocus.get() - } - set isMoreIconOnFocus(e) { - this.__isMoreIconOnFocus.set(e) - } - get isMoreIconOnHover() { - return this.__isMoreIconOnHover.get() - } - set isMoreIconOnHover(e) { - this.__isMoreIconOnHover.set(e) - } - get isMoreIconOnClick() { - return this.__isMoreIconOnClick.get() - } - set isMoreIconOnClick(e) { - this.__isMoreIconOnClick.set(e) - } - getMoreIconFgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getMoreIconBgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isMoreIconOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("100%"); - Column.margin({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Column.justifyContent(FlexAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems, (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getMoreIconFgColor()); - Row.backgroundColor(this.getMoreIconBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.border(this.isMoreIconOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => this.isMoreIconOnFocus = !0)); - Row.onBlur((() => this.isMoreIconOnFocus = !1)); - Row.onHover((e => this.isMoreIconOnHover = e)); - Row.onKeyEvent((e => { - if (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE) { - e.type === KeyType.Down && (this.isMoreIconOnClick = !0); - e.type === KeyType.Up && (this.isMoreIconOnClick = !1) - } - })); - Row.onTouch((e => { - e.type === TouchType.Down && (this.isMoreIconOnClick = !0); - e.type === TouchType.Up && (this.isMoreIconOnClick = !1) - })); - Row.onClick((() => this.isPopupShown = !0)); - Row.bindPopup(this.isPopupShown, { - builder: { - builder: this.popupBuilder.bind(this) - }, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: !1, - onStateChange: e => this.isPopupShown = e.isVisible - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(PUBLIC_MORE); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(!0); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Column.pop() - } - popupBuilder(e = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum); - Column.margin({ - top: CollapsibleMenuSection.focusPadding, - bottom: CollapsibleMenuSection.focusPadding - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), ((e, t) => { - const o = e; - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: o - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - }), void 0, !0, !1); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Column.pop() - } - rerender() { - this.updateDirtyElements() - } -} -CollapsibleMenuSection.maxCountOfVisibleItems = 3; -CollapsibleMenuSection.focusPadding = 4; -CollapsibleMenuSection.marginsNum = 2; -__decorate([], CollapsibleMenuSection.prototype, "popupBuilder", null); -class ImageMenuItem extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.item = void 0; - this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); - this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); - this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); - void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); - void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isOnFocus.purgeDependencyOnElmtId(e); - this.__isOnHover.purgeDependencyOnElmtId(e); - this.__isOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isOnFocus.aboutToBeDeleted(); - this.__isOnHover.aboutToBeDeleted(); - this.__isOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isOnFocus() { - return this.__isOnFocus.get() - } - set isOnFocus(e) { - this.__isOnFocus.set(e) - } - get isOnHover() { - return this.__isOnHover.get() - } - set isOnHover(e) { - this.__isOnHover.set(e) - } - get isOnClick() { - return this.__isOnClick.get() - } - set isOnClick(e) { - this.__isOnClick.set(e) - } - getFgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getBgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getFgColor()); - Row.backgroundColor(this.getBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); - Row.border(this.isOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => { - this.item.isEnabled && (this.isOnFocus = !0) - })); - Row.onBlur((() => this.isOnFocus = !1)); - Row.onHover((e => { - this.item.isEnabled && (this.isOnHover = e) - })); - Row.onKeyEvent((e => { - if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Row.onTouch((e => { - if (this.item.isEnabled) { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - } - })); - Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(this.item.isEnabled); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - rerender() { - this.updateDirtyElements() - } -} -ImageMenuItem.imageSize = 24; -ImageMenuItem.imageHotZoneWidth = 48; -ImageMenuItem.buttonBorderRadius = 8; -ImageMenuItem.focusBorderWidth = 2; -ImageMenuItem.disabledImageOpacity = .4; -export default { - SelectTitleBar: SelectTitleBar -}; \ No newline at end of file diff --git a/interface/splitlayout/BUILD.gn b/interface/splitlayout/BUILD.gn deleted file mode 100644 index 8a0a21c..0000000 --- a/interface/splitlayout/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_splitlayout_abc") { - src_js = rebase_path("splitlayout.js") - dst_file = rebase_path(target_out_dir + "/splitlayout.abc") - in_puts = [ "splitlayout.js" ] - out_puts = [ target_out_dir + "/splitlayout.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("splitlayout_abc") { - input = get_label_info(":gen_splitlayout_abc", "target_out_dir") + "/splitlayout.abc" - output = target_out_dir + "/splitlayout_abc.o" - dep = ":gen_splitlayout_abc" -} - -ohos_shared_library("splitlayout") { - sources = [ "splitlayout.cpp" ] - - deps = [ ":splitlayout_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} \ No newline at end of file diff --git a/interface/splitlayout/splitlayout.cpp b/interface/splitlayout/splitlayout.cpp deleted file mode 100644 index 154b774..0000000 --- a/interface/splitlayout/splitlayout.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_splitlayout_abc_start[]; -extern const char _binary_splitlayout_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_splitlayout_GetABCCode(const char **buf, int *buflen) -{ - if (buf != nullptr) { - *buf = _binary_splitlayout_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_splitlayout_abc_end - _binary_splitlayout_abc_start; - } -} - -static napi_module splitlayoutModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "splitlayout", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void splitlayoutRegisterModule(void) -{ - napi_module_register(&splitlayoutModule); -} \ No newline at end of file diff --git a/interface/splitlayout/splitlayout.js b/interface/splitlayout/splitlayout.js deleted file mode 100644 index 85792d4..0000000 --- a/interface/splitlayout/splitlayout.js +++ /dev/null @@ -1,524 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -export class splitlayout extends ViewPU { - constructor(e, t, o, r = -1) { - super(e, o, r); - this.container = void 0; - this.__sizeValue = new ObservedPropertySimplePU("", this, "sizeValue"); - this.__areaWidth = new ObservedPropertySimplePU(0, this, "areaWidth"); - this.__imageBackgroundColor = new ObservedPropertySimplePU("#FFFFFF", this, "imageBackgroundColor"); - this.__mainImage = new SynchedPropertyObjectOneWayPU(t.mainImage, this, "mainImage"); - this.__primaryText = new SynchedPropertySimpleOneWayPU(t.primaryText, this, "primaryText"); - this.secondaryText = "私人订制新歌精选站,为你推荐专属优质新歌;为你推荐专属优质新歌"; - this.tertiaryText = "每日更新"; - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.container && (this.container = e.container); - void 0 !== e.sizeValue && (this.sizeValue = e.sizeValue); - void 0 !== e.areaWidth && (this.areaWidth = e.areaWidth); - void 0 !== e.imageBackgroundColor && (this.imageBackgroundColor = e.imageBackgroundColor); - void 0 !== e.mainImage ? this.__mainImage.set(e.mainImage) : this.__mainImage.set({ - id: -1, - type: 2e4, - params: ["app.media.music"], - bundleName: "", - moduleName: "" - }); - void 0 !== e.primaryText ? this.__primaryText.set(e.primaryText) : this.__primaryText.set("新歌推荐"); - void 0 !== e.secondaryText && (this.secondaryText = e.secondaryText); - void 0 !== e.tertiaryText && (this.tertiaryText = e.tertiaryText) - } - - updateStateVars(e) { - this.__mainImage.reset(e.mainImage); - this.__primaryText.reset(e.primaryText) - } - - purgeVariableDependenciesOnElmtId(e) { - this.__sizeValue.purgeDependencyOnElmtId(e); - this.__areaWidth.purgeDependencyOnElmtId(e); - this.__imageBackgroundColor.purgeDependencyOnElmtId(e); - this.__mainImage.purgeDependencyOnElmtId(e); - this.__primaryText.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__sizeValue.aboutToBeDeleted(); - this.__areaWidth.aboutToBeDeleted(); - this.__imageBackgroundColor.aboutToBeDeleted(); - this.__mainImage.aboutToBeDeleted(); - this.__primaryText.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get sizeValue() { - return this.__sizeValue.get() - } - - set sizeValue(e) { - this.__sizeValue.set(e) - } - - get areaWidth() { - return this.__areaWidth.get() - } - - set areaWidth(e) { - this.__areaWidth.set(e) - } - - get imageBackgroundColor() { - return this.__imageBackgroundColor.get() - } - - set imageBackgroundColor(e) { - this.__imageBackgroundColor.set(e) - } - - get mainImage() { - return this.__mainImage.get() - } - - set mainImage(e) { - this.__mainImage.set(e) - } - - get primaryText() { - return this.__primaryText.get() - } - - set primaryText(e) { - this.__primaryText.set(e) - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.onAreaChange(((e, t) => { - console.info(`Ace: on area change, oldValue is ${JSON.stringify(e)} value is ${JSON.stringify(t)}`); - this.sizeValue = JSON.stringify(t); - this.areaWidth = parseInt(t.width.toString(), 0); - console.info("pingAce: on area change, oldValue is" + this.areaWidth); - console.info("pingAce: on area change, oldValue is" + parseInt(t.height.toString(), 0)) - })); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.areaWidth < 600 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridRow.create({ - columns: 4, - breakpoints: { reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }); - t || GridRow.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridCol.create({ span: { xs: 4, sm: 4, md: 4, lg: 4 } }); - t || GridCol.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Stack.create({ alignContent: Alignment.Bottom }); - Stack.height("34%"); - Stack.width("100%"); - t || Stack.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.mainImage); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.alignItems(HorizontalAlign.Center); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - } - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.primaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.secondaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ top: 4, bottom: 8 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.tertiaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_caption"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ bottom: 24 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Column.pop(); - Stack.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("66%"); - Column.width("100%"); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.container.bind(this)(); - Column.pop(); - Column.pop(); - GridCol.pop(); - GridRow.pop() - })) : 600 < this.areaWidth && this.areaWidth < 840 ? this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridRow.create({ - columns: 8, - breakpoints: { reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }); - t || GridRow.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridCol.create({ span: { xs: 8, sm: 8, md: 8, lg: 8 } }); - t || GridCol.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(this.imageBackgroundColor); - Row.height("34%"); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.mainImage); - Image.margin({ left: 96, right: 36 }); - Image.height("60%"); - Image.width("20%"); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.alignItems(HorizontalAlign.Start); - Column.margin({ right: 96 }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.primaryText); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.secondaryText); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ top: 4, bottom: 8 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.tertiaryText); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_caption"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Column.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("66%"); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.container.bind(this)(); - Column.pop(); - Column.pop(); - GridCol.pop(); - GridRow.pop() - })) : this.areaWidth > 840 && this.ifElseBranchUpdateFunction(2, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridRow.create({ - columns: 12, - breakpoints: { reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }); - t || GridRow.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridCol.create({ span: { xs: 4, sm: 4, md: 4, lg: 4 } }); - GridCol.height("100%"); - t || GridCol.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("100%"); - Column.backgroundColor(this.imageBackgroundColor); - Column.justifyContent(FlexAlign.Center); - Column.alignItems(HorizontalAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.mainImage); - Image.height("17%"); - Image.width("34%"); - Image.margin({ bottom: 36 }); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.primaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ left: 48, right: 48 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.secondaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ top: 4, bottom: 8, left: 48, right: 48 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.tertiaryText); - Text.textAlign(TextAlign.Center); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.margin({ bottom: 24, left: 48, right: 48 }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Column.pop(); - GridCol.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - GridCol.create({ span: { xs: 8, sm: 8, md: 8, lg: 8 } }); - t || GridCol.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.container.bind(this)(); - GridCol.pop(); - GridRow.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop() - } - - rerender() { - this.updateDirtyElements() - } -} \ No newline at end of file diff --git a/interface/subheader/BUILD.gn b/interface/subheader/BUILD.gn deleted file mode 100644 index 926d6ed..0000000 --- a/interface/subheader/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_subheader_abc") { - src_js = rebase_path("subheader.js") - dst_file = rebase_path(target_out_dir + "/subheader.abc") - in_puts = [ "subheader.js" ] - out_puts = [ target_out_dir + "/subheader.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("subheader_abc") { - input = get_label_info(":gen_subheader_abc", "target_out_dir") + "/subheader.abc" - output = target_out_dir + "/subheader_abc.o" - dep = ":gen_subheader_abc" -} - -ohos_shared_library("subheader") { - sources = [ "subheader.cpp" ] - - deps = [ ":subheader_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} \ No newline at end of file diff --git a/interface/subheader/subheader.js b/interface/subheader/subheader.js deleted file mode 100644 index 651a883..0000000 --- a/interface/subheader/subheader.js +++ /dev/null @@ -1,1141 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const SPACE_MARGIN = 8; -const MARGIN_NUM = 4; -const IMAGE_WIDTH_NUM = 16; -const IMAGE_HEIGHT_NUM = 24; -const BUTTON_SIZE = 32; -const SINGLE_LINE_HEIGHT = 48; -const DOUBLE_LINE_HEIGHT = 64; -const BUTTON_HEIGHT = 28; -const IMAGE_WIDTH = 12; -const BORDER_WIDTH = 2; -const SINGLE_LINE_NUM = 1; -const DOUBLE_LINE_NUM = 2; -const MIN_FONT_SIZE = 14; -const MAIN_TEXT_SIZE = 10; -const MIN_CONSTRAINT_WIDTH = 3; - -export var OperationType; -!function(e){ - e[e.TEXT_ARROW=0] = "TEXT_ARROW"; - e[e.BUTTON=1] = "BUTTON"; - e[e.ICON_GROUP=2] = "ICON_GROUP"; - e[e.LOADING=3] = "LOADING" -}(OperationType || (OperationType = {})); - -class ButtonStyle extends ViewPU { - constructor(e, o, t, s = -1) { - super(e, t, s); - this.__buttonBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "buttonBgColor"); - this.__isButtonFocus = new ObservedPropertySimplePU(!1, this, "isButtonFocus"); - this.button = void 0; - this.focusBorderWidth = 2; - this.setInitiallyProvidedValue(o) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.buttonBgColor && (this.buttonBgColor = e.buttonBgColor); - void 0 !== e.isButtonFocus && (this.isButtonFocus = e.isButtonFocus); - void 0 !== e.button && (this.button = e.button); - void 0 !== e.focusBorderWidth && (this.focusBorderWidth = e.focusBorderWidth) - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - this.__buttonBgColor.purgeDependencyOnElmtId(e); - this.__isButtonFocus.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__buttonBgColor.aboutToBeDeleted(); - this.__isButtonFocus.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get buttonBgColor() { - return this.__buttonBgColor.get() - } - - set buttonBgColor(e) { - this.__buttonBgColor.set(e) - } - - get isButtonFocus() { - return this.__isButtonFocus.get() - } - - set isButtonFocus(e) { - this.__isButtonFocus.set(e) - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.align(Alignment.End); - Row.justifyContent(FlexAlign.Center); - Row.focusable(!0); - Row.height(28); - Row.margin({ left: 8, right: 8 }); - Row.borderRadius(16); - Row.backgroundColor(ObservedObject.GetRawObject(this.buttonBgColor)); - Row.onTouch((e => { - if (e.type === TouchType.Down) { - this.button.action && this.button.action(); - this.buttonBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } - } - e.type === TouchType.Up && (this.buttonBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }) - })); - Row.onHover((e => { - this.buttonBgColor = e ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - } - })); - Row.border(this.isButtonFocus ? { - width: this.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { width: 0 }); - Row.onFocus((() => { - this.isButtonFocus = !0 - })); - Row.onBlur((() => { - this.isButtonFocus = !1 - })); - Row.onKeyEvent((e => { - 2054 !== e.keyCode && 2050 !== e.keyCode || this.button.action && this.button.action() - })); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.button.value); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_button2"], - bundleName: "", - moduleName: "" - }); - Text.fontWeight(FontWeight.Medium); - Text.margin({ left: 8, right: 8 }); - Text.focusable(!0); - Text.maxLines(2); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -class IconGroup extends ViewPU { - constructor(e, o, t, s = -1) { - super(e, t, s); - this.__bgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "bgColor"); - this.__isFocus = new ObservedPropertySimplePU(!1, this, "isFocus"); - this.item = void 0; - this.focusBorderWidth = 2; - this.setInitiallyProvidedValue(o) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.bgColor && (this.bgColor = e.bgColor); - void 0 !== e.isFocus && (this.isFocus = e.isFocus); - void 0 !== e.item && (this.item = e.item); - void 0 !== e.focusBorderWidth && (this.focusBorderWidth = e.focusBorderWidth) - } - - updateStateVars(e) { - } - - purgeVariableDependenciesOnElmtId(e) { - this.__bgColor.purgeDependencyOnElmtId(e); - this.__isFocus.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__bgColor.aboutToBeDeleted(); - this.__isFocus.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get bgColor() { - return this.__bgColor.get() - } - - set bgColor(e) { - this.__bgColor.set(e) - } - - get isFocus() { - return this.__isFocus.get() - } - - set isFocus(e) { - this.__isFocus.set(e) - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.focusable(!0); - Row.width(32); - Row.height(32); - Row.margin({ right: 8 }); - Row.justifyContent(FlexAlign.Center); - Row.borderRadius({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }); - Row.backgroundColor(ObservedObject.GetRawObject(this.bgColor)); - Row.onTouch((e => { - if (e.type === TouchType.Down) { - this.item.action && this.item.action(); - this.bgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } - } - e.type === TouchType.Up && (this.bgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }) - })); - Row.onHover((e => { - this.bgColor = e ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - } - })); - Row.border(this.isFocus ? { - width: this.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { width: 0 }); - Row.onFocus((() => { - this.isFocus = !0 - })); - Row.onBlur((() => { - this.isFocus = !1 - })); - Row.onKeyEvent((e => { - 2054 !== e.keyCode && 2050 !== e.keyCode || this.item.action && this.item.action() - })); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }); - Image.width(24); - Image.height(24); - Image.focusable(!0); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export class SubHeader extends ViewPU { - constructor(e, o, t, s = -1) { - super(e, t, s); - this.__icon = new SynchedPropertyObjectOneWayPU(o.icon, this, "icon"); - this.__primaryTitle = new SynchedPropertySimpleOneWayPU(o.primaryTitle, this, "primaryTitle"); - this.__secondaryTitle = new SynchedPropertySimpleOneWayPU(o.secondaryTitle, this, "secondaryTitle"); - this.__select = new SynchedPropertyObjectOneWayPU(o.select, this, "select"); - this.__operationType = new SynchedPropertySimpleOneWayPU(o.operationType, this, "operationType"); - this.operationItem = void 0; - this.__isDuplicateLine = new ObservedPropertySimplePU(!1, this, "isDuplicateLine"); - this.__textArrowBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "textArrowBgColor"); - this.__buttonBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "buttonBgColor"); - this.__iconBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "iconBgColor"); - this.__firstIconBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "firstIconBgColor"); - this.__SecondaryIconBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "SecondaryIconBgColor"); - this.__thirdIconBgColor = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }, this, "thirdIconBgColor"); - this.__flag = new ObservedPropertySimplePU(!1, this, "flag"); - this.__isTextArrowFocus = new ObservedPropertySimplePU(!1, this, "isTextArrowFocus"); - this.focusBorderWidth = 2; - this.setInitiallyProvidedValue(o) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.operationType ? this.__operationType.set(e.operationType) : this.__operationType.set(OperationType.BUTTON); - void 0 !== e.operationItem && (this.operationItem = e.operationItem); - void 0 !== e.isDuplicateLine && (this.isDuplicateLine = e.isDuplicateLine); - void 0 !== e.textArrowBgColor && (this.textArrowBgColor = e.textArrowBgColor); - void 0 !== e.buttonBgColor && (this.buttonBgColor = e.buttonBgColor); - void 0 !== e.iconBgColor && (this.iconBgColor = e.iconBgColor); - void 0 !== e.firstIconBgColor && (this.firstIconBgColor = e.firstIconBgColor); - void 0 !== e.SecondaryIconBgColor && (this.SecondaryIconBgColor = e.SecondaryIconBgColor); - void 0 !== e.thirdIconBgColor && (this.thirdIconBgColor = e.thirdIconBgColor); - void 0 !== e.flag && (this.flag = e.flag); - void 0 !== e.isTextArrowFocus && (this.isTextArrowFocus = e.isTextArrowFocus); - void 0 !== e.focusBorderWidth && (this.focusBorderWidth = e.focusBorderWidth) - } - - updateStateVars(e) { - this.__icon.reset(e.icon); - this.__primaryTitle.reset(e.primaryTitle); - this.__secondaryTitle.reset(e.secondaryTitle); - this.__select.reset(e.select); - this.__operationType.reset(e.operationType) - } - - purgeVariableDependenciesOnElmtId(e) { - this.__icon.purgeDependencyOnElmtId(e); - this.__primaryTitle.purgeDependencyOnElmtId(e); - this.__secondaryTitle.purgeDependencyOnElmtId(e); - this.__select.purgeDependencyOnElmtId(e); - this.__operationType.purgeDependencyOnElmtId(e); - this.__isDuplicateLine.purgeDependencyOnElmtId(e); - this.__textArrowBgColor.purgeDependencyOnElmtId(e); - this.__buttonBgColor.purgeDependencyOnElmtId(e); - this.__iconBgColor.purgeDependencyOnElmtId(e); - this.__firstIconBgColor.purgeDependencyOnElmtId(e); - this.__SecondaryIconBgColor.purgeDependencyOnElmtId(e); - this.__thirdIconBgColor.purgeDependencyOnElmtId(e); - this.__flag.purgeDependencyOnElmtId(e); - this.__isTextArrowFocus.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__icon.aboutToBeDeleted(); - this.__primaryTitle.aboutToBeDeleted(); - this.__secondaryTitle.aboutToBeDeleted(); - this.__select.aboutToBeDeleted(); - this.__operationType.aboutToBeDeleted(); - this.__isDuplicateLine.aboutToBeDeleted(); - this.__textArrowBgColor.aboutToBeDeleted(); - this.__buttonBgColor.aboutToBeDeleted(); - this.__iconBgColor.aboutToBeDeleted(); - this.__firstIconBgColor.aboutToBeDeleted(); - this.__SecondaryIconBgColor.aboutToBeDeleted(); - this.__thirdIconBgColor.aboutToBeDeleted(); - this.__flag.aboutToBeDeleted(); - this.__isTextArrowFocus.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get icon() { - return this.__icon.get() - } - - set icon(e) { - this.__icon.set(e) - } - - get primaryTitle() { - return this.__primaryTitle.get() - } - - set primaryTitle(e) { - this.__primaryTitle.set(e) - } - - get secondaryTitle() { - return this.__secondaryTitle.get() - } - - set secondaryTitle(e) { - this.__secondaryTitle.set(e) - } - - get select() { - return this.__select.get() - } - - set select(e) { - this.__select.set(e) - } - - get operationType() { - return this.__operationType.get() - } - - set operationType(e) { - this.__operationType.set(e) - } - - get isDuplicateLine() { - return this.__isDuplicateLine.get() - } - - set isDuplicateLine(e) { - this.__isDuplicateLine.set(e) - } - - get textArrowBgColor() { - return this.__textArrowBgColor.get() - } - - set textArrowBgColor(e) { - this.__textArrowBgColor.set(e) - } - - get buttonBgColor() { - return this.__buttonBgColor.get() - } - - set buttonBgColor(e) { - this.__buttonBgColor.set(e) - } - - get iconBgColor() { - return this.__iconBgColor.get() - } - - set iconBgColor(e) { - this.__iconBgColor.set(e) - } - - get firstIconBgColor() { - return this.__firstIconBgColor.get() - } - - set firstIconBgColor(e) { - this.__firstIconBgColor.set(e) - } - - get SecondaryIconBgColor() { - return this.__SecondaryIconBgColor.get() - } - - set SecondaryIconBgColor(e) { - this.__SecondaryIconBgColor.set(e) - } - - get thirdIconBgColor() { - return this.__thirdIconBgColor.get() - } - - set thirdIconBgColor(e) { - this.__thirdIconBgColor.set(e) - } - - get flag() { - return this.__flag.get() - } - - set flag(e) { - this.__flag.set(e) - } - - get isTextArrowFocus() { - return this.__isTextArrowFocus.get() - } - - set isTextArrowFocus(e) { - this.__isTextArrowFocus.set(e) - } - - ListTextStyle(e, o = null) { - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.content); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title3"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(2); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - }, - bottom: 8, - right: 4 - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - } - - ListIconStyle(e, o, t = null) { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - }, - bottom: 8, - right: 4 - }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(o); - Image.width(16); - Image.height(16); - Image.margin({ right: 8 }); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.content); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title3"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(2); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - } - - ContentTextStyle(e, o = null) { - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.content); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title2"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(2); - Text.maxFontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title2"], - bundleName: "", - moduleName: "" - }); - Text.minFontSize(14); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - }, - right: 4, - bottom: 8 - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - } - - SubTextStyle(e, o = null) { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.alignItems(HorizontalAlign.Start); - Column.onAppear((() => { - this.isDuplicateLine = !0 - })); - Column.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_start"], - bundleName: "", - moduleName: "" - }, - right: 4, - bottom: 8 - }); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.content); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title2"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.maxFontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title2"], - bundleName: "", - moduleName: "" - }); - Text.minFontSize(14); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.subContent); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title3"], - bundleName: "", - moduleName: "" - }); - Text.maxLines(1); - Text.maxFontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_sub_title3"], - bundleName: "", - moduleName: "" - }); - Text.minFontSize(10); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Column.pop() - } - - SelectStyle(e, o = null) { - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Select.create(e.options); - Select.selected(e.selected); - Select.value(e.value); - Select.onSelect(((o, t) => { - e.onSelect && e.onSelect(o, t) - })); - Select.margin({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_start"], - bundleName: "", - moduleName: "" - }, - right: 4 - }); - t || Select.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Select.pop() - } - - LoadingProcessStyle(e = null) { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - LoadingProgress.create(); - LoadingProgress.width(24); - LoadingProgress.height(24); - LoadingProgress.focusable(!0); - LoadingProgress.margin({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - o || LoadingProgress.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - } - - TextArrowStyle(e, o = null) { - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.focusable(!0); - Row.margin({ left: 4, right: 4, bottom: 4 }); - Row.borderRadius({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_subtab"], - bundleName: "", - moduleName: "" - }); - Row.backgroundColor(ObservedObject.GetRawObject(this.textArrowBgColor)); - Row.onTouch((o => { - if (o.type === TouchType.Down) { - e.action && e.action(); - this.textArrowBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } - } - o.type === TouchType.Up && (this.textArrowBgColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }) - })); - Row.onHover((e => { - this.textArrowBgColor = e ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - } - })); - Row.border(this.isTextArrowFocus ? { - width: this.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { width: 0 }); - Row.onFocus((() => { - this.isTextArrowFocus = !0 - })); - Row.onBlur((() => { - this.isTextArrowFocus = !1 - })); - Row.onKeyEvent((o => { - 2054 !== o.keyCode && 2050 !== o.keyCode || e.action && e.action() - })); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ left: 8, right: 8 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Text.create(e.value); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.margin({ right: 4 }); - Text.focusable(!0); - Text.maxLines(2); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create({ - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_right"], - bundleName: "", - moduleName: "" - }); - Image.fillColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_tertiary"], - bundleName: "", - moduleName: "" - }); - Image.width(12); - Image.height(24); - Image.focusable(!0); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop(); - Row.pop() - } - - initialRender() { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.End }); - Flex.padding({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_default_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Flex.height(this.isDuplicateLine ? 64 : 48); - o || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - null != this.secondaryTitle && null != this.icon ? this.ifElseBranchUpdateFunction(0, (() => { - this.ListIconStyle.bind(this)({ content: this.secondaryTitle }, ObservedObject.GetRawObject(this.icon)) - })) : null != this.secondaryTitle && null != this.primaryTitle ? this.ifElseBranchUpdateFunction(1, (() => { - this.SubTextStyle.bind(this)(makeBuilderParameterProxy("SubTextStyle", { - content: () => this.__primaryTitle ? this.__primaryTitle : this.primaryTitle, - subContent: () => this.__secondaryTitle ? this.__secondaryTitle : this.secondaryTitle - })) - })) : null != this.secondaryTitle ? this.ifElseBranchUpdateFunction(2, (() => { - this.ListTextStyle.bind(this)(makeBuilderParameterProxy("ListTextStyle", { - content: () => this.__secondaryTitle ? this.__secondaryTitle : this.secondaryTitle - })) - })) : null != this.select ? this.ifElseBranchUpdateFunction(3, (() => { - this.SelectStyle.bind(this)(ObservedObject.GetRawObject(this.select)) - })) : null != this.primaryTitle && this.ifElseBranchUpdateFunction(4, (() => { - this.ContentTextStyle.bind(this)(makeBuilderParameterProxy("ContentTextStyle", { - content: () => this.__primaryTitle ? this.__primaryTitle : this.primaryTitle - })) - })); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.operationType === OperationType.BUTTON && null != this.operationItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - __Common__.create(); - __Common__.margin({ bottom: 4 }); - o || __Common__.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ButtonStyle(this, { - button: this.operationItem[0] - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - __Common__.pop() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.operationType === OperationType.ICON_GROUP && null != this.operationItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ bottom: 4 }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.operationItem, ((e, o) => { - const t = e; - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - 0 == o ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new IconGroup(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - s || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - 1 == o ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new IconGroup(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - s || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - 2 == o ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new IconGroup(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - s || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - }), void 0,!0,!1); - o || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Row.pop() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.operationType === OperationType.TEXT_ARROW && null != this.operationItem ? this.ifElseBranchUpdateFunction(0, (() => { - this.TextArrowStyle.bind(this)(this.operationItem[0]) - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.operationType === OperationType.LOADING ? this.ifElseBranchUpdateFunction(0, (() => { - this.LoadingProcessStyle.bind(this)() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Flex.pop() - } - - rerender() { - this.updateDirtyElements() - } -} - -export default { OperationStyle, SubHeader } \ No newline at end of file diff --git a/interface/swiperefresher/BUILD.gn b/interface/swiperefresher/BUILD.gn deleted file mode 100644 index 785f9a4..0000000 --- a/interface/swiperefresher/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_swiperefresher_abc") { - src_js = rebase_path("swiperefresher.js") - dst_file = rebase_path(target_out_dir + "/swiperefresher.abc") - in_puts = [ "swiperefresher.js" ] - out_puts = [ target_out_dir + "/swiperefresher.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("swiperefresher_abc") { - input = get_label_info(":gen_swiperefresher_abc", "target_out_dir") + "/swiperefresher.abc" - output = target_out_dir + "/swiperefresher_abc.o" - dep = ":gen_swiperefresher_abc" -} - -ohos_shared_library("swiperefresher") { - sources = [ "swiperefresher.cpp" ] - - deps = [ ":swiperefresher_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/swiperefresher/swiperefresher.cpp b/interface/swiperefresher/swiperefresher.cpp deleted file mode 100644 index 8d5726b..0000000 --- a/interface/swiperefresher/swiperefresher.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_swiperefresher_abc_start[]; -extern const char _binary_swiperefresher_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_swiperefresher_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_swiperefresher_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_swiperefresher_abc_end - _binary_swiperefresher_abc_start; - } - } - - -static napi_module swiperefresherModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.SwipeRefresher", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void swiperefresherRegisterModule(void) -{ - napi_module_register(&swiperefresherModule); -} \ No newline at end of file diff --git a/interface/swiperefresher/swiperefresher.js b/interface/swiperefresher/swiperefresher.js deleted file mode 100644 index d34c05f..0000000 --- a/interface/swiperefresher/swiperefresher.js +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const LOADINGPROGRESS_SIZE = 24; -const DEFAULT_MARGIN = 16; -const ITEM_SPACE = 4; - -export class SwipeRefresher extends ViewPU { - constructor(e, t, o, s = -1) { - super(e, o, s); - this.__content = new SynchedPropertySimpleOneWayPU(t.content, this, "content"); - this.__isLoading = new SynchedPropertySimpleOneWayPU(t.isLoading, this, "isLoading"); - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.content ? this.__content.set(e.content) : this.__content.set(null); - void 0 !== e.isLoading ? this.__isLoading.set(e.isLoading) : this.__isLoading.set(!1) - } - - updateStateVars(e) { - this.__content.reset(e.content); - this.__isLoading.reset(e.isLoading) - } - - purgeVariableDependenciesOnElmtId(e) { - this.__content.purgeDependencyOnElmtId(e); - this.__isLoading.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__content.aboutToBeDeleted(); - this.__isLoading.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get content() { - return this.__content.get() - } - - set content(e) { - this.__content.set(e) - } - - get isLoading() { - return this.__isLoading.get() - } - - set isLoading(e) { - this.__isLoading.set(e) - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }); - Flex.margin({ top: 16, bottom: 16 }); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.isLoading ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - LoadingProgress.create(); - LoadingProgress.height(24); - LoadingProgress.width(24); - LoadingProgress.margin({ right: 4 }); - t || LoadingProgress.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.content); - Text.fontColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Flex.pop() - } - - rerender() { - this.updateDirtyElements() - } -} \ No newline at end of file diff --git a/interface/tabtitlebar/BUILD.gn b/interface/tabtitlebar/BUILD.gn deleted file mode 100755 index 5a1effe..0000000 --- a/interface/tabtitlebar/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_tabtitlebar_abc") { - src_js = rebase_path("tabtitlebar.js") - dst_file = rebase_path(target_out_dir + "/tabtitlebar.abc") - in_puts = [ "tabtitlebar.js" ] - out_puts = [ target_out_dir + "/tabtitlebar.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("tabtitlebar_abc") { - input = get_label_info(":gen_tabtitlebar_abc", "target_out_dir") + "/tabtitlebar.abc" - output = target_out_dir + "/tabtitlebar_abc.o" - dep = ":gen_tabtitlebar_abc" -} - -ohos_shared_library("tabtitlebar") { - sources = [ "tabtitlebar.cpp" ] - - deps = [ ":tabtitlebar_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} diff --git a/interface/tabtitlebar/tabtitlebar.cpp b/interface/tabtitlebar/tabtitlebar.cpp deleted file mode 100644 index 8cc4eb3..0000000 --- a/interface/tabtitlebar/tabtitlebar.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_tabtitlebar_abc_start[]; -extern const char _binary_tabtitlebar_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_TabTitleBar_GetABCCode(const char **buf, int *buflen) - { - if (buf != nullptr) { - *buf = _binary_tabtitlebar_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_tabtitlebar_abc_end - _binary_tabtitlebar_abc_start; - } - } - - -static napi_module tabtitlebarModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.TabTitleBar", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -extern "C" __attribute__((constructor)) void tabtitlebarRegisterModule(void) -{ - napi_module_register(&tabtitlebarModule); -} \ No newline at end of file diff --git a/interface/tabtitlebar/tabtitlebar.js b/interface/tabtitlebar/tabtitlebar.js deleted file mode 100644 index f2b8bc1..0000000 --- a/interface/tabtitlebar/tabtitlebar.js +++ /dev/null @@ -1,930 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -var __decorate = this && this.__decorate || function(e, t, o, i) { - var s, r = arguments.length, - n = r < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, o) : i; - if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(e, t, o, i); - else - for (var c = e.length - 1; c >= 0; c--)(s = e[c]) && (n = (r < 3 ? s(n) : r > 3 ? s(t, o, n) : s(t, o)) || n); - return r > 3 && n && Object.defineProperty(t, o, n), n -}; -const KeyCode = requireNapi('multimodalInput.keyCode').KeyCode; -const PUBLIC_MORE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuAxhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhYWnstMINgYsh+cmfs88BICydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRdYjJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5HnhkC9+zAA5YXXy8jBKV5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rmj79U74wCszuih+F/ljrSi/+uud8YBGA10rayqrnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hkH4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ/N5Vjd0oTXKp9QcKFpD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fNQ1BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnXfo96DGYBRZD1ycpc/XzbmbvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jpyaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jvjACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrpVV1fXOOADLA10rq6rrnXEAVga6VlZV13uh8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5LP+r7veGQfgd+T+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtUtTXit8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXvO9H8f1bfVPQ9FvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC"; -export class TabTitleBar extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.tabItems = void 0; - this.menuItems = void 0; - this.swiperContent = void 0; - this.__tabWidth = new ObservedPropertySimplePU(0, this, "tabWidth"); - this.__currentIndex = new ObservedPropertySimplePU(0, this, "currentIndex"); - this.menuSectionWidth = 0; - this.scroller = new Scroller; - this.swiperController = new SwiperController; - this.settings = new RenderingContextSettings(!0); - this.leftContext2D = new CanvasRenderingContext2D(this.settings); - this.rightContext2D = new CanvasRenderingContext2D(this.settings); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.tabItems && (this.tabItems = e.tabItems); - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.swiperContent && (this.swiperContent = e.swiperContent); - void 0 !== e.tabWidth && (this.tabWidth = e.tabWidth); - void 0 !== e.currentIndex && (this.currentIndex = e.currentIndex); - void 0 !== e.menuSectionWidth && (this.menuSectionWidth = e.menuSectionWidth); - void 0 !== e.scroller && (this.scroller = e.scroller); - void 0 !== e.swiperController && (this.swiperController = e.swiperController); - void 0 !== e.settings && (this.settings = e.settings); - void 0 !== e.leftContext2D && (this.leftContext2D = e.leftContext2D); - void 0 !== e.rightContext2D && (this.rightContext2D = e.rightContext2D) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__tabWidth.purgeDependencyOnElmtId(e); - this.__currentIndex.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__tabWidth.aboutToBeDeleted(); - this.__currentIndex.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get tabWidth() { - return this.__tabWidth.get() - } - set tabWidth(e) { - this.__tabWidth.set(e) - } - get currentIndex() { - return this.__currentIndex.get() - } - set currentIndex(e) { - this.__currentIndex.set(e) - } - GradientMask(e, t, o, i, s, r = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(TabTitleBar.gradientMaskWidth); - Column.height(TabTitleBar.totalHeight); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((r, n) => { - ViewStackProcessor.StartGetAccessRecordingFor(r); - Canvas.create(e); - Canvas.width(TabTitleBar.gradientMaskWidth); - Canvas.height(TabTitleBar.totalHeight); - Canvas.onReady((() => { - var r = e.createLinearGradient(t, o, i, s); - r.addColorStop(0, "#ffffffff"); - r.addColorStop(1, "#00ffffff"); - e.fillStyle = r; - e.fillRect(0, 0, TabTitleBar.gradientMaskWidth, TabTitleBar.totalHeight) - })); - n || Canvas.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Canvas.pop(); - Column.pop() - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Flex.create({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }); - Flex.backgroundColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - Flex.margin({ - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_max_padding_end"], - bundleName: "", - moduleName: "" - } - }); - Flex.onAreaChange(((e, t) => { - this.tabWidth = Number(t.width) - this.menuSectionWidth - })); - t || Flex.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Stack.create({ - alignContent: Alignment.End - }); - t || Stack.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Stack.create({ - alignContent: Alignment.Start - }); - t || Stack.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - List.create({ - initialIndex: 0, - scroller: this.scroller, - space: 0 - }); - List.width("100%"); - List.height(TabTitleBar.totalHeight); - List.constraintSize({ - maxWidth: this.tabWidth - }); - List.edgeEffect(EdgeEffect.Spring); - List.listDirection(Axis.Horizontal); - List.scrollBar(BarState.Off); - t || List.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.tabItems, ((e, t) => { - const o = e; - { - const e = !0; - const i = (t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - ListItem.create(r, e); - o || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const s = () => { - this.observeComponentCreation(i); - this.observeComponentCreation(((e, i) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - i ? ViewPU.create(new TabContentItem(this, { - item: o, - index: t, - maxIndex: this.tabItems.length - 1, - currentIndex: this.currentIndex, - onCustomClick: () => this.currentIndex = t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, { - currentIndex: this.currentIndex - }); - ViewStackProcessor.StopGetAccessRecording() - })); - ListItem.pop() - }; - const r = (e, s) => { - i(e, s); - this.updateFuncByElmtId.set(e, i); - this.observeComponentCreation(((e, i) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - i ? ViewPU.create(new TabContentItem(this, { - item: o, - index: t, - maxIndex: this.tabItems.length - 1, - currentIndex: this.currentIndex, - onCustomClick: () => this.currentIndex = t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, { - currentIndex: this.currentIndex - }); - ViewStackProcessor.StopGetAccessRecording() - })); - ListItem.pop() - }; - e ? (() => { - this.observeComponentCreation(i); - ListItem.pop() - })() : s() - } - }), void 0, !0, !1); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - List.pop(); - Column.pop(); - this.GradientMask.bind(this)(this.leftContext2D, 0, TabTitleBar.totalHeight / 2, TabTitleBar.gradientMaskWidth, TabTitleBar.totalHeight / 2); - Stack.pop(); - this.GradientMask.bind(this)(this.rightContext2D, TabTitleBar.gradientMaskWidth, TabTitleBar.totalHeight / 2, 0, TabTitleBar.totalHeight / 2); - Stack.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 !== this.menuItems && this.menuItems.length > 0 ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - __Common__.create(); - __Common__.height(TabTitleBar.totalHeight); - __Common__.onAreaChange(((e, t) => { - this.menuSectionWidth = Number(t.width) - })); - t || __Common__.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new CollapsibleMenuSection(this, { - menuItems: this.menuItems - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })); - __Common__.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Flex.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Swiper.create(this.swiperController); - Swiper.index(this.currentIndex); - Swiper.itemSpace(0); - Swiper.indicator(!1); - Swiper.width("100%"); - Swiper.height("100%"); - Swiper.curve(Curve.Friction); - Swiper.onChange((e => { - this.currentIndex = e; - this.scroller.scrollToIndex(this.currentIndex); - this.scroller.scrollBy(TabTitleBar.correctionOffset, 0) - })); - Swiper.onAppear((() => { - this.scroller.scrollToIndex(this.currentIndex); - this.scroller.scrollBy(TabTitleBar.correctionOffset, 0) - })); - t || Swiper.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.swiperContent.bind(this)(); - Swiper.pop(); - Column.pop(); - Column.pop() - } - rerender() { - this.updateDirtyElements() - } -} -TabTitleBar.totalHeight = 56; -TabTitleBar.correctionOffset = -40; -TabTitleBar.gradientMaskWidth = 24; -__decorate([], TabTitleBar.prototype, "GradientMask", null); -class CollapsibleMenuSection extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.menuItems = void 0; - this.__isPopupShown = new ObservedPropertySimplePU(!1, this, "isPopupShown"); - this.__isMoreIconOnFocus = new ObservedPropertySimplePU(!1, this, "isMoreIconOnFocus"); - this.__isMoreIconOnHover = new ObservedPropertySimplePU(!1, this, "isMoreIconOnHover"); - this.__isMoreIconOnClick = new ObservedPropertySimplePU(!1, this, "isMoreIconOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.menuItems && (this.menuItems = e.menuItems); - void 0 !== e.isPopupShown && (this.isPopupShown = e.isPopupShown); - void 0 !== e.isMoreIconOnFocus && (this.isMoreIconOnFocus = e.isMoreIconOnFocus); - void 0 !== e.isMoreIconOnHover && (this.isMoreIconOnHover = e.isMoreIconOnHover); - void 0 !== e.isMoreIconOnClick && (this.isMoreIconOnClick = e.isMoreIconOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isPopupShown.purgeDependencyOnElmtId(e); - this.__isMoreIconOnFocus.purgeDependencyOnElmtId(e); - this.__isMoreIconOnHover.purgeDependencyOnElmtId(e); - this.__isMoreIconOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isPopupShown.aboutToBeDeleted(); - this.__isMoreIconOnFocus.aboutToBeDeleted(); - this.__isMoreIconOnHover.aboutToBeDeleted(); - this.__isMoreIconOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isPopupShown() { - return this.__isPopupShown.get() - } - set isPopupShown(e) { - this.__isPopupShown.set(e) - } - get isMoreIconOnFocus() { - return this.__isMoreIconOnFocus.get() - } - set isMoreIconOnFocus(e) { - this.__isMoreIconOnFocus.set(e) - } - get isMoreIconOnHover() { - return this.__isMoreIconOnHover.get() - } - set isMoreIconOnHover(e) { - this.__isMoreIconOnHover.set(e) - } - get isMoreIconOnClick() { - return this.__isMoreIconOnClick.get() - } - set isMoreIconOnClick(e) { - this.__isMoreIconOnClick.set(e) - } - getMoreIconFgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getMoreIconBgColor() { - return this.isMoreIconOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isMoreIconOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.height("100%"); - Column.justifyContent(FlexAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems, (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (e => { - const t = e; - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - o ? ViewPU.create(new ImageMenuItem(this, { - item: t - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getMoreIconFgColor()); - Row.backgroundColor(this.getMoreIconBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.border(this.isMoreIconOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => this.isMoreIconOnFocus = !0)); - Row.onBlur((() => this.isMoreIconOnFocus = !1)); - Row.onHover((e => this.isMoreIconOnHover = e)); - Row.onKeyEvent((e => { - if (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE) { - e.type === KeyType.Down && (this.isMoreIconOnClick = !0); - e.type === KeyType.Up && (this.isMoreIconOnClick = !1) - } - })); - Row.onTouch((e => { - e.type === TouchType.Down && (this.isMoreIconOnClick = !0); - e.type === TouchType.Up && (this.isMoreIconOnClick = !1) - })); - Row.onClick((() => this.isPopupShown = !0)); - Row.bindPopup(this.isPopupShown, { - builder: { - builder: this.popupBuilder.bind(this) - }, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: !1, - onStateChange: e => this.isPopupShown = e.isVisible - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(PUBLIC_MORE); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(!0); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Column.pop() - } - popupBuilder(e = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum); - Column.margin({ - top: CollapsibleMenuSection.focusPadding, - bottom: CollapsibleMenuSection.focusPadding - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), ((e, t) => { - const o = e; - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - t ? ViewPU.create(new ImageMenuItem(this, { - item: o - }, void 0, e)) : this.updateStateVarsOfChildByElmtId(e, {}); - ViewStackProcessor.StopGetAccessRecording() - })) - }), void 0, !0, !1); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - ForEach.pop(); - Column.pop() - } - rerender() { - this.updateDirtyElements() - } -} -CollapsibleMenuSection.maxCountOfVisibleItems = 1; -CollapsibleMenuSection.focusPadding = 4; -CollapsibleMenuSection.marginsNum = 2; -__decorate([], CollapsibleMenuSection.prototype, "popupBuilder", null); -class TabContentItem extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.item = void 0; - this.index = void 0; - this.maxIndex = void 0; - this.onCustomClick = void 0; - this.__currentIndex = new SynchedPropertySimpleOneWayPU(t.currentIndex, this, "currentIndex"); - this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); - this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); - this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.index && (this.index = e.index); - void 0 !== e.maxIndex && (this.maxIndex = e.maxIndex); - void 0 !== e.onCustomClick && (this.onCustomClick = e.onCustomClick); - void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); - void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); - void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) - } - updateStateVars(e) { - this.__currentIndex.reset(e.currentIndex) - } - purgeVariableDependenciesOnElmtId(e) { - this.__currentIndex.purgeDependencyOnElmtId(e); - this.__isOnFocus.purgeDependencyOnElmtId(e); - this.__isOnHover.purgeDependencyOnElmtId(e); - this.__isOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__currentIndex.aboutToBeDeleted(); - this.__isOnFocus.aboutToBeDeleted(); - this.__isOnHover.aboutToBeDeleted(); - this.__isOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get currentIndex() { - return this.__currentIndex.get() - } - set currentIndex(e) { - this.__currentIndex.set(e) - } - get isOnFocus() { - return this.__isOnFocus.get() - } - set isOnFocus(e) { - this.__isOnFocus.set(e) - } - get isOnHover() { - return this.__isOnHover.get() - } - set isOnHover(e) { - this.__isOnHover.set(e) - } - get isOnClick() { - return this.__isOnClick.get() - } - set isOnClick(e) { - this.__isOnClick.set(e) - } - getBgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.height(TabTitleBar.totalHeight); - Row.alignItems(VerticalAlign.Center); - Row.justifyContent(FlexAlign.Center); - Row.margin({ - left: 0 === this.index ? 16 : 0, - right: this.index === this.maxIndex ? 12 : 0 - }); - Row.borderRadius(TabContentItem.buttonBorderRadius); - Row.backgroundColor(this.getBgColor()); - Row.border(this.isOnFocus ? { - width: TabContentItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.justifyContent(FlexAlign.Center); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - void 0 === this.item.icon ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.item.title); - Text.fontSize(this.index === this.currentIndex ? { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline7"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_headline9"], - bundleName: "", - moduleName: "" - }); - Text.fontColor(this.index === this.currentIndex ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_text_off"], - bundleName: "", - moduleName: "" - }); - Text.fontWeight(FontWeight.Medium); - Text.focusable(!0); - Text.padding({ - top: this.index === this.currentIndex ? 6 : 10, - left: 8, - bottom: 2, - right: 8 - }); - Text.onFocus((() => this.isOnFocus = !0)); - Text.onBlur((() => this.isOnFocus = !1)); - Text.onHover((e => this.isOnHover = e)); - Text.onKeyEvent((e => { - if (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Text.onTouch((e => { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - })); - Text.onClick((() => this.onCustomClick && this.onCustomClick())); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(TabContentItem.imageHotZoneWidth); - Row.height(TabContentItem.imageHotZoneWidth); - Row.justifyContent(FlexAlign.Center); - Row.onFocus((() => this.isOnFocus = !0)); - Row.onBlur((() => this.isOnFocus = !1)); - Row.onHover((e => this.isOnHover = e)); - Row.onKeyEvent((e => { - if (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Row.onTouch((e => { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - })); - Row.onClick((() => this.onCustomClick && this.onCustomClick())); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.icon); - Image.alt(this.item.title); - Image.height(TabContentItem.imageSize); - Image.focusable(!0); - Image.scale({ - x: this.index === this.currentIndex ? TabContentItem.imageMagnificationFactor : 1, - y: this.index === this.currentIndex ? TabContentItem.imageMagnificationFactor : 1 - }); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop(); - Row.pop() - } - rerender() { - this.updateDirtyElements() - } -} -TabContentItem.imageSize = 24; -TabContentItem.imageHotZoneWidth = 48; -TabContentItem.imageMagnificationFactor = 1.4; -TabContentItem.buttonBorderRadius = 8; -TabContentItem.focusBorderWidth = 2; -class ImageMenuItem extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.item = void 0; - this.__isOnFocus = new ObservedPropertySimplePU(!1, this, "isOnFocus"); - this.__isOnHover = new ObservedPropertySimplePU(!1, this, "isOnHover"); - this.__isOnClick = new ObservedPropertySimplePU(!1, this, "isOnClick"); - this.setInitiallyProvidedValue(t) - } - setInitiallyProvidedValue(e) { - void 0 !== e.item && (this.item = e.item); - void 0 !== e.isOnFocus && (this.isOnFocus = e.isOnFocus); - void 0 !== e.isOnHover && (this.isOnHover = e.isOnHover); - void 0 !== e.isOnClick && (this.isOnClick = e.isOnClick) - } - updateStateVars(e) {} - purgeVariableDependenciesOnElmtId(e) { - this.__isOnFocus.purgeDependencyOnElmtId(e); - this.__isOnHover.purgeDependencyOnElmtId(e); - this.__isOnClick.purgeDependencyOnElmtId(e) - } - aboutToBeDeleted() { - this.__isOnFocus.aboutToBeDeleted(); - this.__isOnHover.aboutToBeDeleted(); - this.__isOnClick.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - get isOnFocus() { - return this.__isOnFocus.get() - } - set isOnFocus(e) { - this.__isOnFocus.set(e) - } - get isOnHover() { - return this.__isOnHover.get() - } - set isOnHover(e) { - this.__isOnHover.set(e) - } - get isOnClick() { - return this.__isOnClick.get() - } - set isOnClick(e) { - this.__isOnClick.set(e) - } - getFgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon_pressed"], - bundleName: "", - moduleName: "" - } : { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_titlebar_icon"], - bundleName: "", - moduleName: "" - } - } - getBgColor() { - return this.isOnClick ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - } : this.isOnHover ? { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - } : Color.Transparent - } - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.width(ImageMenuItem.imageHotZoneWidth); - Row.height(ImageMenuItem.imageHotZoneWidth); - Row.borderRadius(ImageMenuItem.buttonBorderRadius); - Row.foregroundColor(this.getFgColor()); - Row.backgroundColor(this.getBgColor()); - Row.justifyContent(FlexAlign.Center); - Row.opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity); - Row.border(this.isOnFocus ? { - width: ImageMenuItem.focusBorderWidth, - color: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }, - style: BorderStyle.Solid - } : { - width: 0 - }); - Row.onFocus((() => { - this.item.isEnabled && (this.isOnFocus = !0) - })); - Row.onBlur((() => this.isOnFocus = !1)); - Row.onHover((e => { - this.item.isEnabled && (this.isOnHover = e) - })); - Row.onKeyEvent((e => { - if (this.item.isEnabled && (e.keyCode === KeyCode.KEYCODE_ENTER || e.keyCode === KeyCode.KEYCODE_SPACE)) { - e.type === KeyType.Down && (this.isOnClick = !0); - e.type === KeyType.Up && (this.isOnClick = !1) - } - })); - Row.onTouch((e => { - if (this.item.isEnabled) { - e.type === TouchType.Down && (this.isOnClick = !0); - e.type === TouchType.Up && (this.isOnClick = !1) - } - })); - Row.onClick((() => this.item.isEnabled && this.item.action && this.item.action())); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(this.item.value); - Image.width(ImageMenuItem.imageSize); - Image.height(ImageMenuItem.imageSize); - Image.focusable(this.item.isEnabled); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - } - rerender() { - this.updateDirtyElements() - } -} -ImageMenuItem.imageSize = 24; -ImageMenuItem.imageHotZoneWidth = 48; -ImageMenuItem.buttonBorderRadius = 8; -ImageMenuItem.focusBorderWidth = 2; -ImageMenuItem.disabledImageOpacity = .4; -export default { - TabTitleBar: TabTitleBar -}; \ No newline at end of file diff --git a/interface/toolbar/BUILD.gn b/interface/toolbar/BUILD.gn deleted file mode 100644 index 956cede..0000000 --- a/interface/toolbar/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_toolbar_abc") { - src_js = rebase_path("toolbar.js") - dst_file = rebase_path(target_out_dir + "/toolbar.abc") - in_puts = [ "toolbar.js" ] - out_puts = [ target_out_dir + "/toolbar.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("toolbar_abc") { - input = get_label_info(":gen_toolbar_abc", "target_out_dir") + "/toolbar.abc" - output = target_out_dir + "/toolbar_abc.o" - dep = ":gen_toolbar_abc" -} - -ohos_shared_library("toolbar") { - sources = [ "toolbar.cpp" ] - - deps = [ ":toolbar_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} \ No newline at end of file diff --git a/interface/toolbar/toolbar.cpp b/interface/toolbar/toolbar.cpp deleted file mode 100644 index db4ee6e..0000000 --- a/interface/toolbar/toolbar.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_toolbar_abc_start[]; -extern const char _binary_toolbar_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_ToolBar_GetABCCode(const char **buf, int *buflen) -{ - if (buf != nullptr) { - *buf = _binary_toolbar_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_toolbar_abc_end - _binary_toolbar_abc_start; - } -} - -/* - * Module define - */ -static napi_module toolbarModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.ToolBar", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; -/* - * Module register function - */ -extern "C" __attribute__((constructor)) void toolbarRegisterModule(void) -{ - napi_module_register(&toolbarModule); -} diff --git a/interface/toolbar/toolbar.js b/interface/toolbar/toolbar.js deleted file mode 100644 index 5c34c87..0000000 --- a/interface/toolbar/toolbar.js +++ /dev/null @@ -1,477 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const REFLECT_MAX_COUNT = 3; -const IMAGE_SIZE_WIDTH_HEIGHT = 24; -const TEXT_MIN_SIZE = 9; -const DISABLE_OPACITY = 0.4; -const TEXT_MAX_LINES = 2; -const TOOLBAR_LIST_LENGTH = 5; -const TOOLBAR_LIST_NORMORL = 4; -const ITEM_DISABLE_STATE = 2; -const ITEM_DISABLE_ACTIVATE = 3; - -let __decorate = this && this.__decorate || function (e, t, o, r) { - let s; - let i = arguments.length; - let a = i < REFLECT_MAX_COUNT ? t : null === r ? r = Object.getOwnPropertyDescriptor(t, o) : r; - if ('object' === typeof Reflect && 'function' === typeof Reflect.decorate) { - a = Reflect.decorate(e, t, o, r); - } else { - for (let n = e.length - 1; n >= 0; n--) { - (s = e[n]) && (a = (i < REFLECT_MAX_COUNT ? s(a) : i > REFLECT_MAX_COUNT ? s(t, o, a) : s(t, o)) || a); - } - } - return i > REFLECT_MAX_COUNT && a && Object.defineProperty(t, o, a), a; -}; -export let ItemState; -!function(e) { - e[e.ENABLE = 1] = 'ENABLE'; - e[e.DISABLE = 2] = 'DISABLE'; - e[e.ACTIVATE = 3] = 'ACTIVATE'; -}(ItemState || (ItemState = {})); -const PUBLIC_MORE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAA' + - 'IGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IAr' + - 's4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAYFJREFUeNrt3CFLQ1EUB/CpCwYRo8' + - 'G4j2IwCNrUYjH4AfwcfgBBwWZRMNgtFqPdILJgEhGDweAZvDjmJnfv3I3fD/5l3DfOfWdv23vhdDoAAAAAAAAwzxa' + - 'm9L5rkePIdmSjee05chu5iHxXej5ar3saDdiJXDabGaYfOYg8VHbyU+peKryJvch1ZHnEmtXIYeQ+8lrJyU+re7Hg' + - 'JtYj52Ou7Uau/thwW1LrLtmAk8jKBOsH37FHFTQgte6SDdht6ZjSUusu2YBeS8eUllr3YvLmuzP6971bYwP6/zjmpY' + - 'KTmVp3yQbctXRMaal1l2zAaeRngvUfkbMKGpBad8kbsffIZ2RrzPX7kacKGpBad+k74cfmE7I54ur6au4obyr6UU2r' + - 'e1oP43rNDc6wh1qDS/6t0n83s1o3AAAAAAAAAAAAAEAysyKS6zYrIrlusyKS6zYrwqyIdGZFJDMrIplZETPIrIh5qdu' + - 'sCLMi0pkVkcysiAqYFVEJsyIAAAAAAAAAKOYXUlF8EUcdfbsAAAAASUVORK5CYII='; -let ToolBarOption = class { - constructor() { - this.state = 1; - } -}; -ToolBarOption = __decorate([Observed], ToolBarOption); - -export { ToolBarOption }; -let ToolBarOptions = class extends Array { -}; -ToolBarOptions = __decorate([Observed], ToolBarOptions); - -export { ToolBarOptions }; - -export class ToolBar extends ViewPU { - constructor(e, t, o, r = -1) { - super(e, o, r); - this.__toolBarList = new SynchedPropertyNesedObjectPU(t.toolBarList, this, 'toolBarList'); - this.controller = void 0; - this.__activateIndex = new SynchedPropertySimpleOneWayPU(t.activateIndex, this, 'activateIndex'); - this.__menuContent = new ObservedPropertyObjectPU([], this, 'menuContent'); - this.toolBarItemBackground = []; - this.__itemBackground = new ObservedPropertyObjectPU({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_bg'], - bundleName: '', - moduleName: '' - }, this, 'itemBackground'); - this.setInitiallyProvidedValue(t); - } - - setInitiallyProvidedValue(e) { - this.__toolBarList.set(e.toolBarList); - void 0 !== e.controller && (this.controller = e.controller); - void 0 !== e.activateIndex ? this.__activateIndex.set(e.activateIndex) : this.__activateIndex.set(-1); - void 0 !== e.menuContent && (this.menuContent = e.menuContent); - void 0 !== e.toolBarItemBackground && (this.toolBarItemBackground = e.toolBarItemBackground); - void 0 !== e.itemBackground && (this.itemBackground = e.itemBackground); - } - - updateStateVars(e) { - this.__toolBarList.set(e.toolBarList); - this.__activateIndex.reset(e.activateIndex); - } - - purgeVariableDependenciesOnElmtId(e) { - this.__toolBarList.purgeDependencyOnElmtId(e); - this.__activateIndex.purgeDependencyOnElmtId(e); - this.__menuContent.purgeDependencyOnElmtId(e); - this.__itemBackground.purgeDependencyOnElmtId(e); - } - - aboutToBeDeleted() { - this.__toolBarList.aboutToBeDeleted(); - this.__activateIndex.aboutToBeDeleted(); - this.__menuContent.aboutToBeDeleted(); - this.__itemBackground.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal(); - } - - get toolBarList() { - return this.__toolBarList.get(); - } - - get activateIndex() { - return this.__activateIndex.get(); - } - - set activateIndex(e) { - this.__activateIndex.set(e); - } - - get menuContent() { - return this.__menuContent.get(); - } - - set menuContent(e) { - this.__menuContent.set(e); - } - - get itemBackground() { - return this.__itemBackground.get(); - } - - set itemBackground(e) { - this.__itemBackground.set(e); - } - - MoreTabBuilder(e, t = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width('100%'); - Column.height('100%'); - Column.bindMenu(ObservedObject.GetRawObject(this.menuContent), { offset: { x: 5, y: -10 } }); - Column.padding({ left: 4, right: 4 }); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_clicked'], - bundleName: '', - moduleName: '' - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(PUBLIC_MORE); - Image.width(IMAGE_SIZE_WIDTH_HEIGHT); - Image.height(IMAGE_SIZE_WIDTH_HEIGHT); - Image.fillColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_icon'], - bundleName: '', - moduleName: '' - }); - Image.margin({ top: 8, bottom: 2 }); - Image.objectFit(ImageFit.Contain); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create({ - id: -1, - type: 10003, - params: ['app.string.id_string_more'], - bundleName: '', - moduleName: '' - }); - Text.fontColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_text'], - bundleName: '', - moduleName: '' - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_caption'], - bundleName: '', - moduleName: '' - }); - Text.fontWeight(FontWeight.Medium); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Column.pop(); - } - - TabBuilder(e, t = null) { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Column.create(); - Column.width('100%'); - Column.height('100%'); - Column.focusable(!(ITEM_DISABLE_STATE === this.toolBarList[e].state)); - Column.focusOnTouch(!(ITEM_DISABLE_STATE === this.toolBarList[e].state)); - Column.padding({ left: 4, right: 4 }); - Column.borderRadius({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_corner_radius_clicked'], - bundleName: '', - moduleName: '' - }); - Column.backgroundColor(ObservedObject.GetRawObject(this.itemBackground)); - Column.onClick((() => { - ITEM_DISABLE_ACTIVATE === this.toolBarList[e].state && (this.activateIndex === e ? this.activateIndex = -1 : this.activateIndex = e); - ITEM_DISABLE_STATE !== this.toolBarList[e].state && this.toolBarList[e].action && this.toolBarList[e].action(); - })); - Column.onHover((t => { - this.toolBarItemBackground[e] = t ? ITEM_DISABLE_STATE === this.toolBarList[e].state ? { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_bg'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_hover'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_bg'], - bundleName: '', - moduleName: '' - }; - this.itemBackground = this.toolBarItemBackground[e]; - })); - ViewStackProcessor.visualState('pressed'); - Column.backgroundColor(ITEM_DISABLE_STATE === this.toolBarList[e].state ? this.toolBarItemBackground[e] : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_click_effect'], - bundleName: '', - moduleName: '' - }); - ViewStackProcessor.visualState('normal'); - Column.backgroundColor(this.toolBarItemBackground[e]); - ViewStackProcessor.visualState(); - o || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Image.create(this.toolBarList[e].icon); - Image.width(IMAGE_SIZE_WIDTH_HEIGHT); - Image.height(IMAGE_SIZE_WIDTH_HEIGHT); - Image.fillColor(this.activateIndex === e && ITEM_DISABLE_STATE !== this.toolBarList[e].state ? { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_text_primary_activated'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_primary'], - bundleName: '', - moduleName: '' - }); - Image.opacity(ITEM_DISABLE_STATE === this.toolBarList[e].state ? DISABLE_OPACITY : 1); - Image.margin({ top: 8, bottom: 2 }); - Image.objectFit(ImageFit.Contain); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Text.create(this.toolBarList[e].content); - Text.fontColor(this.activateIndex === e && ITEM_DISABLE_STATE !== this.toolBarList[e].state ? { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_text_actived'], - bundleName: '', - moduleName: '' - } : { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_text'], - bundleName: '', - moduleName: '' - }); - Text.fontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_caption'], - bundleName: '', - moduleName: '' - }); - Text.maxFontSize({ - id: -1, - type: 10002, - params: ['sys.float.ohos_id_text_size_caption'], - bundleName: '', - moduleName: '' - }); - Text.minFontSize(TEXT_MIN_SIZE); - Text.fontWeight(FontWeight.Medium); - Text.maxLines(TEXT_MAX_LINES); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.opacity(ITEM_DISABLE_STATE === this.toolBarList[e].state ? DISABLE_OPACITY : 1); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - Text.pop(); - Column.pop(); - } - - refreshData() { - this.menuContent = []; - for (let e = 0; e < this.toolBarList.length; e++) { - if (e >= TOOLBAR_LIST_NORMORL && this.toolBarList.length > TOOLBAR_LIST_LENGTH) { - this.menuContent[e - TOOLBAR_LIST_NORMORL] = { - value: this.toolBarList[e].content, - action: this.toolBarList[e].action - }; - } else { - this.toolBarItemBackground[e] = { - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_bg'], - bundleName: '', - moduleName: '' - }; - this.menuContent = []; - } - } - return !0; - } - - aboutToAppear() { - this.refreshData(); - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.width('100%'); - Divider.height(1); - t || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.width('100%'); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Tabs.create({ barPosition: BarPosition.End, controller: this.controller }); - Tabs.vertical(!1); - Tabs.constraintSize({ minHeight: 56, maxHeight: 56 }); - Tabs.barMode(BarMode.Fixed); - Tabs.onChange((e => { - })); - Tabs.width('100%'); - Tabs.backgroundColor({ - id: -1, - type: 10001, - params: ['sys.color.ohos_id_color_toolbar_bg'], - bundleName: '', - moduleName: '' - }); - t || Tabs.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - ForEach.create(); - this.forEachUpdateFunction(e, this.toolBarList, ((e, t) => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.toolBarList.length <= TOOLBAR_LIST_LENGTH ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - TabContent.create(); - TabContent.tabBar({ - builder: () => { - this.TabBuilder.call(this, t); - } - }); - TabContent.enabled(!(ITEM_DISABLE_STATE === this.toolBarList[t].state)); - TabContent.focusOnTouch(!(ITEM_DISABLE_STATE === this.toolBarList[t].state)); - r || TabContent.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - TabContent.pop(); - })) : t < TOOLBAR_LIST_NORMORL && this.ifElseBranchUpdateFunction(1, (() => { - this.observeComponentCreation(((e, r) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - TabContent.create(); - TabContent.tabBar({ - builder: () => { - this.TabBuilder.call(this, t); - } - }); - TabContent.enabled(!(ITEM_DISABLE_STATE === this.toolBarList[t].state)); - TabContent.focusOnTouch(!(ITEM_DISABLE_STATE === this.toolBarList[t].state)); - r || TabContent.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - TabContent.pop(); - })); - r || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - }), void 0, !0, !1); - t || ForEach.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - ForEach.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.refreshData() && this.toolBarList.length > TOOLBAR_LIST_LENGTH ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - TabContent.create(); - TabContent.tabBar({ - builder: () => { - this.MoreTabBuilder.call(this, TOOLBAR_LIST_NORMORL); - } - }); - t || TabContent.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - TabContent.pop(); - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording(); - })); - If.pop(); - Tabs.pop(); - Column.pop(); - Column.pop(); - } - - rerender() { - this.updateDirtyElements(); - } -} -export default { ToolBarOptions, ToolBar }; \ No newline at end of file diff --git a/interface/treeview/BUILD.gn b/interface/treeview/BUILD.gn deleted file mode 100644 index d8bdb0c..0000000 --- a/interface/treeview/BUILD.gn +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright (c) 2023-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. - -import("//build/ohos.gni") -import("//foundation/arkui/ace_engine/ace_config.gni") -import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") - -es2abc_gen_abc("gen_treeview_abc") { - src_js = rebase_path("treeview.js") - dst_file = rebase_path(target_out_dir + "/treeview.abc") - in_puts = [ "treeview.js" ] - out_puts = [ target_out_dir + "/treeview.abc" ] - extra_args = [ "--module" ] -} - -gen_js_obj("treeview_abc") { - input = get_label_info(":gen_treeview_abc", "target_out_dir") + "/treeview.abc" - output = target_out_dir + "/treeview_abc.o" - dep = ":gen_treeview_abc" -} - -ohos_shared_library("treeview") { - sources = [ "treeview.cpp" ] - - deps = [ ":treeview_abc" ] - - external_deps = [ - "hilog:libhilog", - "napi:ace_napi", - ] - - subsystem_name = "arkui" - part_name = "advanced_ui_component" - - relative_install_dir = "module/arkui/advanced" -} - - diff --git a/interface/treeview/treeview.cpp b/interface/treeview/treeview.cpp deleted file mode 100644 index 1c51ddb..0000000 --- a/interface/treeview/treeview.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -#include "native_engine/native_engine.h" - -#include "napi/native_api.h" -#include "napi/native_node_api.h" - -extern const char _binary_treeview_abc_start[]; -extern const char _binary_treeview_abc_end[]; - -// Napi get abc code function -extern "C" __attribute__((visibility("default"))) -void NAPI_arkui_advanced_TreeView_GetABCCode(const char **buf, int *buflen) -{ - - if (buf != nullptr) { - *buf = _binary_treeview_abc_start; - } - if (buflen != nullptr) { - *buflen = _binary_treeview_abc_end - _binary_treeview_abc_start; - } -} - -/* - * Module define - */ -static napi_module treeviewModule = { - .nm_version = 1, - .nm_flags = 0, - .nm_filename = nullptr, - .nm_modname = "arkui.advanced.TreeView", - .nm_priv = ((void*)0), - .reserved = { 0 }, -}; - -/* - * Module register function - */ -extern "C" __attribute__((constructor)) void treeviewRegisterModule(void) -{ - napi_module_register(&treeviewModule); -} \ No newline at end of file diff --git a/interface/treeview/treeview.js b/interface/treeview/treeview.js deleted file mode 100644 index 25425d8..0000000 --- a/interface/treeview/treeview.js +++ /dev/null @@ -1,3666 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -var __decorate = this && this.__decorate || function (e, t, o, i) { - var s, a = arguments.length, d = a < 3 ? t : null === i ? i = Object.getOwnPropertyDescriptor(t, o) : i; - if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) d = Reflect.decorate(e, t, o, i); else for (var r = e.length - 1;r >= 0; r--) (s = e[r]) && (d = (a < 3 ? s(d) : a > 3 ? s(t, o, d) : s(t, o)) || d); - return a > 3 && d && Object.defineProperty(t, o, d), d -}; - -export var TreeView; -!function(e){ - const t = "#00000000"; - const o = "#FFFFFF"; - - class i { - constructor() { - this._events = [] - } - - on(e, t) { - if (Array.isArray(e)) for (let o = 0, - i = e.length;o < i; o++) this.on(e[o], t); else (this._events[e] || (this._events[e] = [])).push(t) - } - - once(e, t) { - let o = this; - - function i() { - o.off(e, i); - t.apply(null, [e, t]) - } - - i.callback = t; - this.on(e, i) - } - - off(e, t) { - null == e && (this._events = []); - if (Array.isArray(e)) for (let o = 0, i = e.length;o < i; o++) this.off(e[o], t); - const o = this._events[e]; - if (!o) return; - null == t && (this._events[e] = null); - let i, s = o.length; - for (; s--; ) { - i = o[s]; - if (i === t || i.callback === t) { - o.splice(s, 1); - break - } - } - } - - emit(e, t) { - let o = this; - if (!this._events[e]) return; - let i = [...this._events[e]]; - if (i) for (let e = 0, s = i.length;e < s; e++) try { - i[e].apply(o, t) - } catch (e) { - new Error(e) - } - } - } - - e.TreeListener = i; - let s; - !function(e){ - e.NODE_ADD = "NodeAdd"; - e.NODE_DELETE = "NodeDelete"; - e.NODE_MODIFY = "NodeModify"; - e.NODE_MOVE = "NodeMove"; - e.NODE_CLICK = "NodeClick" - }(s = e.TreeListenType || (e.TreeListenType = {})); - - class a { - constructor() { - this.appEventBus = new i - } - - static getInstance() { - null == AppStorage.Get(this.APP_KEY_EVENT_BUS) && AppStorage.SetOrCreate(this.APP_KEY_EVENT_BUS, new a); - return AppStorage.Get(this.APP_KEY_EVENT_BUS) - } - - getTreeListener() { - return this.appEventBus - } - } - - a.APP_KEY_EVENT_BUS = "app_key_event_bus"; - e.TreeListenerManager = a; - - class d { - constructor() { - this.listeners = [] - } - - totalCount() { - return 0 - } - - getData(e) { - } - - registerDataChangeListener(e) { - this.listeners.indexOf(e) < 0 && this.listeners.push(e) - } - - unregisterDataChangeListener(e) { - const t = this.listeners.indexOf(e); - t >= 0 && this.listeners.splice(t, 1) - } - - notifyDataReload() { - this.listeners.forEach((e => { - e.onDataReloaded() - })) - } - - notifyDataAdd(e) { - this.listeners.forEach((t => { - t.onDataAdd(e) - })) - } - - notifyDataChange(e) { - this.listeners.forEach((t => { - t.onDataChange(e) - })) - } - - notifyDataDelete(e) { - this.listeners.forEach((t => { - t.onDataDelete(e) - })) - } - - notifyDataMove(e, t) { - this.listeners.forEach((o => { - o.onDataMove(e, t) - })) - } - } - - let r; - !function(e){ - e[e.TOUCH_DOWN=0] = "TOUCH_DOWN"; - e[e.TOUCH_UP=1] = "TOUCH_UP"; - e[e.HOVER=3] = "HOVER"; - e[e.HOVER_OVER=4] = "HOVER_OVER"; - e[e.FOCUS=5] = "FOCUS"; - e[e.BLUR=6] = "BLUR"; - e[e.MOUSE_BUTTON_RIGHT=7] = "MOUSE_BUTTON_RIGHT"; - e[e.DRAG=8] = "DRAG" - }(r = e.Event || (e.Event = {})); - let n; - !function(e){ - e[e.ADD_NODE=0] = "ADD_NODE"; - e[e.REMOVE_NODE=1] = "REMOVE_NODE"; - e[e.MODIFY_NODE=2] = "MODIFY_NODE"; - e[e.COMMIT_NODE=3] = "COMMIT_NODE" - }(n = e.MenuOperation || (e.MenuOperation = {})); - let l; - !function(e){ - e[e.HINTS=0] = "HINTS"; - e[e.WARNINGS=1] = "WARNINGS" - }(l = e.PopUpType || (e.PopUpType = {})); - let h; - !function(e){ - e[e.INVALID_ERROR=0] = "INVALID_ERROR"; - e[e.LENGTH_ERROR=1] = "LENGTH_ERROR"; - e[e.NONE=2] = "NONE" - }(h = e.InputError || (e.InputError = {})); - let g; - !function(e){ - e[e.DOWN_FLAG=0] = "DOWN_FLAG"; - e[e.UP_FLAG=1] = "UP_FLAG"; - e[e.NONE=2] = "NONE" - }(g = e.Flag || (e.Flag = {})); - - class c { - constructor(e) { - this.data = e; - this.nodeLevel = -1; - this.parentNodeId = -1; - this.nodeItem = { imageNode: null, mainTitleNode: null, imageCollapse: null }; - this.childNodeInfo = { isHasChildNode: !1, childNum: 0, allChildNum: 0 }; - this.menu = e.menu; - e.icon && (this.nodeItem.imageNode = new p(e.icon, e.selectedIcon, e.editIcon, { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_alpha_content_fourth"], - bundleName: "", - moduleName: "" - }, 24, 24)); - e.primaryTitle && (this.nodeItem.mainTitleNode = new m(e.primaryTitle)); - this.children = [] - } - - addImageCollapse(e) { - if (e) { - this.nodeItem.imageCollapse = new p({ - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_right"], - bundleName: "", - moduleName: "" - }, null, null, { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_alpha_content_tertiary"], - bundleName: "", - moduleName: "" - }, 24, 24); - this.nodeItem.imageCollapse.itemRightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - } - } else this.nodeItem.imageCollapse = null - } - - getNodeItem() { - return this.nodeItem - } - - getChildNodeInfo() { - return this.childNodeInfo - } - - getMenu() { - return this.menu - } - - getCurrentNodeId() { - return this.currentNodeId - } - - getIsFolder() { - return this.data.isFolder - } - } - - e.NodeItem = c; - - class N { - constructor() { - } - - set itemWidth(e) { - this.width = e - } - - get itemWidth() { - return this.width - } - - set itemHeight(e) { - this.height = e - } - - get itemHeight() { - return this.height - } - - set itemRightMargin(e) { - this.rightMargin = e - } - - get itemRightMargin() { - return this.rightMargin - } - } - - let I; - !function(e){ - e[e.Expand=0] = "Expand"; - e[e.Collapse=1] = "Collapse" - }(I = e.NodeStatus || (e.NodeStatus = {})); - let u; - !function(e){ - e[e.Normal=0] = "Normal"; - e[e.Selected=1] = "Selected"; - e[e.Edit=2] = "Edit"; - e[e.FinishEdit=3] = "FinishEdit"; - e[e.DragInsert=4] = "DragInsert"; - e[e.FinishDragInsert=5] = "FinishDragInsert" - }(u = e.InteractionStatus || (e.InteractionStatus = {})); - - class p extends N { - constructor(e, t, o, i, s, a) { - super(); - this.rightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_m"], - bundleName: "", - moduleName: "" - }; - this.imageSource = e; - this.imageNormalSource = e; - this.imageSelectedSource = null != t ? t : this.imageNormalSource; - this.imageEditSource = null != o ? o : this.imageNormalSource; - this.imageOpacity = i; - this.itemWidth = s; - this.itemHeight = a; - this.imageCollapseSource = e; - this.imageCollapseDownSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - }; - this.imageCollapseRightSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_right"], - bundleName: "", - moduleName: "" - }; - this.isImageCollapse = !0 - } - - get source() { - return this.imageSource - } - - get normalSource() { - return this.imageNormalSource - } - - get selectedSource() { - return this.imageSelectedSource - } - - get editSource() { - return this.imageEditSource - } - - get opacity() { - return this.imageOpacity - } - - get noOpacity() { - return 1 - } - - get collapseSource() { - return this.imageCollapseSource - } - - get isCollapse() { - return this.isImageCollapse - } - - changeImageCollapseSource(e) { - e == I.Expand ? this.imageCollapseSource = this.imageCollapseDownSource : e == I.Collapse && (this.imageCollapseSource = this.imageCollapseRightSource) - } - - setImageCollapseSource(e, t) { - if (e === u.Edit || e === u.DragInsert) { - this.imageCollapseDownSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - }; - this.imageCollapseRightSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_right"], - bundleName: "", - moduleName: "" - }; - this.isImageCollapse = !1 - } else if (e === u.FinishEdit || e === u.FinishDragInsert) { - this.imageCollapseDownSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - }; - this.imageCollapseRightSource = { - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_right"], - bundleName: "", - moduleName: "" - }; - this.isImageCollapse = !0 - } - this.imageCollapseSource = t == I.Collapse ? this.imageCollapseRightSource : this.imageCollapseDownSource - } - - setImageSource(e) { - switch (e) { - case u.Normal: - this.imageSource = this.imageNormalSource; - this.currentInteractionStatus = e; - break; - case u.Selected: - if (this.currentInteractionStatus !== u.Edit) { - this.imageSource = this.imageSelectedSource; - this.currentInteractionStatus = e - } - break; - case u.Edit: - this.imageSource = this.imageEditSource; - this.currentInteractionStatus = e; - break; - case u.FinishEdit: - this.imageSource = this.imageSelectedSource; - this.currentInteractionStatus = e; - break; - case u.DragInsert: - this.imageSource = this.imageEditSource; - this.currentInteractionStatus = e; - break; - case u.FinishDragInsert: - this.imageSource = this.imageNormalSource; - this.currentInteractionStatus = e - } - } - } - - e.ImageNode = p; - - class m extends N { - constructor(e) { - super(); - this.mainTitleName = e; - this.itemWidth = 0; - this.itemHeight = 44; - this.rightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - }; - this.mainTitleSetting = { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Normal - }; - this.showPopUpTimeout = 0 - } - - setMainTitleSelected(e) { - this.mainTitleSetting = e ? { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary_activated"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Regular - } : { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Normal - } - } - - set title(e) { - this.mainTitleName = e - } - - get title() { - return this.mainTitleName - } - - set popUpTimeout(e) { - this.showPopUpTimeout = e - } - - get popUpTimeout() { - return this.showPopUpTimeout - } - - get color() { - return this.mainTitleSetting.fontColor - } - - get size() { - return this.mainTitleSetting.fontSize - } - - get weight() { - return this.mainTitleSetting.fontWeight - } - - setMainTitleHighLight(e) { - this.mainTitleSetting = e ? { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary_contrary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Regular - } : { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Normal - } - } - } - - e.MainTitleNode = m; - - class f extends N { - constructor() { - super(); - this.statusColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }; - this.editItemColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_emphasize"], - bundleName: "", - moduleName: "" - }; - this.radius = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_default_xs"], - bundleName: "", - moduleName: "" - }; - this.itemWidth = 0; - this.itemHeight = 32; - this.rightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - }; - this.inputTextSetting = { - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_primary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Normal - } - } - - get color() { - return this.inputTextSetting.fontColor - } - - get size() { - return this.inputTextSetting.fontSize - } - - get weight() { - return this.inputTextSetting.fontWeight - } - - get borderRadius() { - return this.radius - } - - get backgroundColor() { - return this.statusColor - } - - get editColor() { - return this.editItemColor - } - - get textInputStatusColor() { - return this.status - } - } - - e.InputText = f; - - class S { - constructor(e) { - this.borderWidth = { has: 2, none: 0 }; - this.canShowFlagLine = !1; - this.isOverBorder = !1; - this.canShowBottomFlagLine = !1; - this.isHighLight = !1; - this.isModify = !1; - this.childNodeInfo = e.getChildNodeInfo(); - this.nodeItem = { imageNode: null, inputText: null, mainTitleNode: null, imageCollapse: null }; - this.popUpInfo = { - popUpIsShow: !1, - popUpEnableArrow: !1, - popUpColor: null, - popUpText: "", - popUpTextColor: null - }; - this.nodeItem.imageNode = e.getNodeItem().imageNode; - this.nodeItem.inputText = new f; - this.nodeItem.mainTitleNode = e.getNodeItem().mainTitleNode; - this.nodeItem.imageCollapse = e.getNodeItem().imageCollapse; - this.menu = e.menu; - this.parentNodeId = e.parentNodeId; - this.currentNodeId = e.currentNodeId; - this.nodeHeight = 44; - this.nodeLevel = e.nodeLevel; - this.nodeLeftPadding = 12 * e.nodeLevel + 8; - this.nodeColor = { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }; - this.nodeIsShow = !(this.nodeLevel > 0); - this.listItemHeight = this.nodeLevel > 0 ? 0 : 48; - this.isShowTitle = !0; - this.isShowInputText = !1; - this.isSelected = !1; - this.status = { - normal: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background_transparent"], - bundleName: "", - moduleName: "" - }, - hover: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_hover"], - bundleName: "", - moduleName: "" - }, - press: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_click_effect"], - bundleName: "", - moduleName: "" - }, - selected: "#1A0A59F7", - highLight: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_activated"], - bundleName: "", - moduleName: "" - } - }; - this.nodeBorder = { - borderWidth: 0, - borderColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_focused_outline"], - bundleName: "", - moduleName: "" - }, - borderRadius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - } - }; - this.flagLineLeftMargin = 12 * e.nodeLevel + 8; - this.node = e; - this.nodeParam = e.data - } - - getPopUpInfo() { - return this.popUpInfo - } - - setPopUpIsShow(e) { - this.popUpInfo.popUpIsShow = e - } - - setPopUpEnableArrow(e) { - this.popUpInfo.popUpEnableArrow = e - } - - setPopUpColor(e) { - this.popUpInfo.popUpColor = e - } - - setPopUpText(e) { - this.popUpInfo.popUpText = e - } - - setPopUpTextColor(e) { - this.popUpInfo.popUpTextColor = e - } - - getIsShowTitle() { - return this.isShowTitle - } - - getIsShowInputText() { - return this.isShowInputText - } - - setTitleAndInputTextStatus(e) { - if (e) { - this.isShowTitle = !1; - this.isShowInputText = !0 - } else { - this.isShowTitle = !0; - this.isShowInputText = !1 - } - } - - handleImageCollapseAfterAddNode(e) { - if (e) { - this.nodeItem.imageCollapse = new p({ - id: -1, - type: 2e4, - params: ["sys.media.ohos_ic_public_arrow_down"], - bundleName: "", - moduleName: "" - }, null, null, { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_alpha_content_tertiary"], - bundleName: "", - moduleName: "" - }, 24, 24); - this.nodeItem.imageCollapse.itemRightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - } - } else this.nodeItem.imageCollapse = null - } - - setNodeColor(e) { - this.nodeColor = e - } - - getNodeColor() { - return this.nodeColor - } - - setListItemHeight(e) { - this.listItemHeight = e - } - - getListItemHeight() { - return this.listItemHeight - } - - getNodeCurrentNodeId() { - return this.currentNodeId - } - - getNodeParentNodeId() { - return this.parentNodeId - } - - getNodeLeftPadding() { - return this.nodeLeftPadding - } - - getNodeHeight() { - return this.nodeHeight - } - - setNodeIsShow(e) { - this.nodeIsShow = e - } - - getNodeIsShow() { - return this.nodeIsShow - } - - getNodeItem() { - return this.nodeItem - } - - getNodeStatus() { - return this.status - } - - getNodeBorder() { - return this.nodeBorder - } - - setNodeBorder(e) { - this.nodeBorder.borderWidth = e ? this.borderWidth.has : this.borderWidth.none - } - - getChildNodeInfo() { - return this.childNodeInfo - } - - getCurrentNodeId() { - return this.currentNodeId - } - - getMenu() { - return this.menu - } - - setIsSelected(e) { - this.isSelected = e - } - - getIsSelected() { - return this.isSelected - } - - getNodeInfoData() { - return this.nodeParam - } - - getNodeInfoNode() { - return this.node - } - - getIsFolder() { - return this.nodeParam.isFolder - } - - setCanShowFlagLine(e) { - this.canShowFlagLine = e - } - - getCanShowFlagLine() { - return this.canShowFlagLine - } - - setFlagLineLeftMargin(e) { - this.flagLineLeftMargin = 12 * e + 8 - } - - getFlagLineLeftMargin() { - return this.flagLineLeftMargin - } - - getNodeLevel() { - return this.nodeLevel - } - - setIsOverBorder(e) { - this.isOverBorder = e - } - - getIsOverBorder() { - return this.isOverBorder - } - - setCanShowBottomFlagLine(e) { - this.canShowBottomFlagLine = e - } - - getCanShowBottomFlagLine() { - return this.canShowBottomFlagLine - } - - setIsHighLight(e) { - this.isHighLight = e - } - - getIsHighLight() { - return this.isHighLight - } - - setIsModify(e) { - this.isModify = e - } - - getIsModify() { - return this.isModify - } - } - - e.NodeInfo = S; - - class C { - constructor() { - this.MaxNodeLevel = 50; - this.MAX_CN_LENGTH = 254; - this.MAX_EN_LENGTH = 255; - this.INITIAL_INVALID_VALUE = -1; - this._root = new c({}); - this._root.nodeLevel = -1; - this._root.parentNodeId = -1; - this._root.currentNodeId = -1 - } - - getNewNodeId() { - return this.addNewNodeId - } - - traverseNodeDF(e, t = this._root) { - let o = [], i = !1; - o.unshift(t); - let s = o.shift(); - for (;!i && s; ) { - i = !0 === e(s); - if (!i) { - o.unshift(...s.children); - s = o.shift() - } - } - } - - traverseNodeBF(e) { - let t = []; - let o = !1; - t.push(this._root); - let i = t.shift(); - for (;!o && i; ) { - try { - o = e(i) - } catch (e) { - e.name, e.message - } - if (!o) { - t.push(...i.children); - i = t.shift() - } - } - } - - contains(e, t) { - t.call(this, e,!0) - } - - updateParentChildNum(e, t, o) { - let i = e.parentNodeId; - for (; i >= 0; ) this.traverseNodeDF((e => { - if (e.currentNodeId == i) { - e.getChildNodeInfo().allChildNum = t ? e.getChildNodeInfo().allChildNum + o : e.getChildNodeInfo() - .allChildNum - o; - i = e.parentNodeId; - return !1 - } - return !1 - })) - } - - findParentNodeId(e) { - let t = null; - this.contains((function (o) { - if (o.currentNodeId == e) { - t = o; - return !0 - } - return !1 - }), this.traverseNodeBF); - return t.parentNodeId - } - - addNode(e, t, o) { - if (null === this._root) { - this._root = new c({}); - this._root.nodeLevel = -1; - this._root.parentNodeId = -1; - this._root.currentNodeId = -1 - } - let i = null; - this.contains((function (t) { - if (t.currentNodeId == e) { - i = t; - return !0 - } - return !1 - }), this.traverseNodeBF); - if (i) { - let s = new c(o); - if (i.nodeLevel > this.MaxNodeLevel) throw new Error("ListNodeUtils[addNode]: The level of the tree view cannot exceed 50."); - s.nodeLevel = i.nodeLevel + 1; - s.parentNodeId = e; - s.currentNodeId = t; - i.children.push(s); - i.getChildNodeInfo().isHasChildNode = !0; - i.getChildNodeInfo().childNum = i.children.length; - i.getChildNodeInfo().allChildNum += 1; - i.addImageCollapse(i.getChildNodeInfo().isHasChildNode); - this.updateParentChildNum(i,!0, 1); - return this - } - throw new Error("ListNodeUtils[addNode]: Parent node not found.") - } - - findNodeIndex(e, t) { - let o = this.INITIAL_INVALID_VALUE; - for (let i = 0, s = e.length;i < s; i++) if (e[i].currentNodeId === t) { - o = i; - break - } - return o - } - - freeNodeMemory(e, t) { - let o = []; - this.traverseNodeDF((function (e) { - o.push(e); - return !1 - }), e); - o.forEach((e => { - t.push(e.currentNodeId); - e = null - })) - } - - removeNode(e, t, o) { - let i = null; - this.contains((function (e) { - if (e.currentNodeId == t) { - i = e; - return !0 - } - return !1 - }), o); - if (i) { - let t = []; - let o = this.findNodeIndex(i.children, e); - if (o < 0) throw new Error("Node does not exist."); - { - var s = i.children[o].getChildNodeInfo().allChildNum + 1; - this.freeNodeMemory(i.children[o], t); - let e = i.children.splice(o, 1); - e = null; - 0 == i.children.length && i.addImageCollapse(!1) - } - i.getChildNodeInfo().childNum = i.children.length; - i.getChildNodeInfo().allChildNum -= s; - this.updateParentChildNum(i,!1, s); - return t - } - throw new Error("Parent does not exist.") - } - - getNewNodeInfo(e) { - let t = null; - this.contains((function (o) { - if (o.currentNodeId == e) { - t = o; - return !0 - } - return !1 - }), this.traverseNodeBF); - let o = { - isFolder: !0, - icon: null, - selectedIcon: null, - editIcon: null, - menu: null, - secondaryTitle: "" - }; - if (t) if (0 === t.children.length) if (null != t.getNodeItem().imageNode) { - o.icon = t.getNodeItem().imageNode.normalSource; - o.selectedIcon = t.getNodeItem().imageNode.selectedSource; - o.editIcon = t.getNodeItem().imageNode.editSource; - o.menu = t.getMenu() - } else { - o.icon = null; - o.selectedIcon = null; - o.editIcon = null; - o.menu = t.getMenu() - } else if (t.children.length > 0) if (null != t.getNodeItem().imageNode) { - o.icon = null != t.children[0].getNodeItem().imageNode ? t.children[0].getNodeItem() - .imageNode - .normalSource : null; - o.selectedIcon = null != t.children[0].getNodeItem().imageNode ? t.children[0].getNodeItem() - .imageNode - .selectedSource : null; - o.editIcon = null != t.children[0].getNodeItem().imageNode ? t.children[0].getNodeItem() - .imageNode - .editSource : null; - o.menu = t.children[0].getMenu() - } else { - o.icon = null; - o.selectedIcon = null; - o.editIcon = null; - o.menu = t.children[0].getMenu() - } - return o - } - - getClickChildId(e) { - let t = null; - this.contains((function (o) { - if (o.currentNodeId == e) { - t = o; - return !0 - } - return !1 - }), this.traverseNodeBF); - if (t) { - if (0 === t.children.length) return []; - if (t.children.length > 0) { - var o = new Array(t.children.length); - for (let e = 0;e < o.length; e++) o[e] = 0; - for (let e = 0;e < t.children.length && e < o.length; e++) o[e] = t.children[e].currentNodeId; - return o - } - } - return [] - } - - getClickNodeChildrenInfo(e) { - let t = null; - this.contains((function (o) { - if (o.currentNodeId == e) { - t = o; - return !0 - } - return !1 - }), this.traverseNodeBF); - if (t) { - if (0 === t.children.length) return []; - if (t.children.length > 0) { - var o = new Array(t.children.length); - for (let e = 0;e < o.length; e++) o[e] = { itemId: null, itemIcon: null, itemTitle: null, isFolder: null }; - for (let e = 0;e < t.children.length && e < o.length; e++) { - o[e].itemId = t.children[e].currentNodeId; - t.children[e].getNodeItem().imageNode && (o[e].itemIcon = t.children[e].getNodeItem().imageNode.source); - t.children[e].getNodeItem().mainTitleNode && (o[e].itemTitle = t.children[e].getNodeItem() - .mainTitleNode - .title); - o[e].isFolder = t.children[e].getIsFolder() - } - return o - } - } - return [] - } - - checkMainTitleIsValid(e) { - let t = /^[\u4e00-\u9fa5]+$/; - return!/[\\\/:*?"<>|]/.test(e) && !(t.test(e) && e.length > this.MAX_CN_LENGTH || !t.test(e) && e.length > this.MAX_EN_LENGTH) - } - - dragTraverseNodeDF(e, t = this._root, o) { - let i = [], s = !1; - i.unshift(t); - let a = i.shift(); - for (;!s && a; ) { - s = !0 === e(a, o); - if (!s) { - i.unshift(...a.children); - a = i.shift() - } - } - } - - addDragNode(e, t, o, i, s) { - if (null === this._root) { - this._root = new c({}); - this._root.nodeLevel = this.INITIAL_INVALID_VALUE; - this._root.parentNodeId = this.INITIAL_INVALID_VALUE; - this._root.currentNodeId = this.INITIAL_INVALID_VALUE - } - let a = null; - this.contains((function (t) { - if (t.currentNodeId == e) { - a = t; - return !0 - } - return !1 - }), this.traverseNodeBF); - if (a) { - let d = new c(s); - if (a.nodeLevel > this.MaxNodeLevel) throw new Error("ListNodeUtils[addNode]: The level of the tree view cannot exceed 50."); - d.nodeLevel = a.nodeLevel + 1; - d.parentNodeId = e; - d.currentNodeId = t; - let r = this.INITIAL_INVALID_VALUE; - if (a.children.length) { - for (let e = 0;e < a.children.length; e++) if (a.children[e].getCurrentNodeId() == o) { - r = e; - break - } - i ? a.children.splice(r + 1, 0, d) : a.children.splice(r, 0, d) - } else a.children.push(d); - a.getChildNodeInfo().isHasChildNode = !0; - a.getChildNodeInfo().childNum = a.children.length; - a.getChildNodeInfo().allChildNum += 1; - a.addImageCollapse(a.getChildNodeInfo().isHasChildNode); - this.updateParentChildNum(a,!0, 1); - return this - } - throw new Error("ListNodeUtils[addNode]: Parent node not found.") - } - } - - e.ListNodeUtils = C; - - class D extends d { - constructor() { - super(...arguments); - this.ROOT_NODE_ID = -1; - this.listNodeUtils = new C; - this.listNode = []; - this.INITIAL_INVALID_VALUE = -1; - this.lastIndex = -1; - this.thisIndex = -1; - this.modifyNodeIndex = -1; - this.modifyNodeId = -1; - this.expandAndCollapseInfo = new Map; - this.loadedNodeIdAndIndexMap = new Map; - this.isTouchDown = !1; - this.appEventBus = a.getInstance().getTreeListener(); - this.isInnerDrag = !1; - this.isDrag = !1; - this.draggingCurrentNodeId = this.INITIAL_INVALID_VALUE; - this.draggingParentNodeId = this.INITIAL_INVALID_VALUE; - this.currentNodeInfo = null; - this.listItemOpacity = 1; - this.lastPassIndex = this.INITIAL_INVALID_VALUE; - this.lastPassId = this.INITIAL_INVALID_VALUE; - this.thisPassIndex = this.INITIAL_INVALID_VALUE; - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE; - this.timeoutExpandId = this.INITIAL_INVALID_VALUE; - this.lastTimeoutExpandId = this.INITIAL_INVALID_VALUE; - this.clearTimeoutExpandId = this.INITIAL_INVALID_VALUE; - this.timeoutHighLightId = this.INITIAL_INVALID_VALUE; - this.lastTimeoutHighLightId = this.INITIAL_INVALID_VALUE; - this.clearTimeoutHighLightId = this.INITIAL_INVALID_VALUE; - this.lastDelayHighLightIndex = this.INITIAL_INVALID_VALUE; - this.lastDelayHighLightId = this.INITIAL_INVALID_VALUE; - this.nodeIdAndSubtitleMap = new Map; - this.flag = g.NONE; - this.selectedParentNodeId = this.INITIAL_INVALID_VALUE; - this.selectedParentNodeSubtitle = ""; - this.insertNodeSubtitle = ""; - this.currentFocusNodeId = this.INITIAL_INVALID_VALUE; - this.lastFocusNodeId = this.INITIAL_INVALID_VALUE; - this.addFocusNodeId = this.INITIAL_INVALID_VALUE; - this.FLAG_LINE = { - flagLineHeight: "1.5vp", - flagLineColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_activated"], - bundleName: "", - moduleName: "" - }, - xOffset: "0vp", - yTopOffset: "2.75vp", - yBottomOffset: "-1.25vp", - yBasePlateOffset: "1.5vp" - }; - this.DRAG_POPUP = { - floorConstraintSize: { minWidth: "128vp", maxWidth: "208vp" }, - textConstraintSize: { minWidth1: "80vp", maxWidth1: "160vp", minWidth2: "112vp", maxWidth2: "192vp" }, - padding: { left: "8vp", right: "8vp" }, - backgroundColor: o, - height: "48", - shadow: { - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_default_m"], - bundleName: "", - moduleName: "" - }, - color: "#00001E", - offsetX: 0, - offsetY: 10 - }, - borderRadius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_corner_radius_clicked"], - bundleName: "", - moduleName: "" - }, - fontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body1"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Regular, - imageOpacity: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_alpha_content_fourth"], - bundleName: "", - moduleName: "" - } - }; - this.subTitle = { - normalFontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_secondary"], - bundleName: "", - moduleName: "" - }, - highLightFontColor: { - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_primary_contrary"], - bundleName: "", - moduleName: "" - }, - fontSize: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }, - fontWeight: FontWeight.Regular, - margin: { left: "4vp", right: "24" } - } - } - - changeNodeColor(e, t) { - this.listNode[e].setNodeColor(t) - } - - getNodeColor(e) { - return this.listNode[e].getNodeColor() - } - - handleFocusEffect(e, t) { - this.listNode[e].getNodeIsShow() && this.listNode[e].setNodeBorder(t) - } - - setImageSource(e, t) { - let o = this.listNode[e]; - o.setIsSelected(t === u.Selected || t === u.Edit || t === u.FinishEdit); - null != o.getNodeItem().mainTitleNode && t != u.DragInsert && t != u.FinishDragInsert && o.getNodeItem() - .mainTitleNode - .setMainTitleSelected(t === u.Selected || t === u.FinishEdit); - null != o.getNodeItem().imageNode && o.getNodeItem().imageNode.setImageSource(t) - } - - setImageCollapseSource(e, t) { - let o = this.listNode[e]; - null != o.getNodeItem().imageCollapse && o.getNodeItem() - .imageCollapse - .setImageCollapseSource(t, this.expandAndCollapseInfo.get(o.getCurrentNodeId())) - } - - clearLastIndexStatus() { - if (!(-1 == this.lastIndex || this.lastIndex >= this.listNode.length)) { - this.setImageSource(this.lastIndex, u.Normal); - this.changeNodeColor(this.lastIndex, this.listNode[this.lastIndex].getNodeStatus().normal); - this.handleFocusEffect(this.lastIndex,!1); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.listNode[this.lastIndex].getCurrentNodeId())) - } - } - - changeNodeStatus(e) { - let t = e; - let o = this.ListNode; - let i = o[e].getCurrentNodeId(); - if (this.expandAndCollapseInfo.get(i) == I.Expand) { - this.expandAndCollapseInfo.set(i, I.Collapse); - o[t].getNodeItem().imageCollapse.changeImageCollapseSource(I.Collapse) - } else if (this.expandAndCollapseInfo.get(i) == I.Collapse) { - this.expandAndCollapseInfo.set(i, I.Expand); - o[t].getNodeItem().imageCollapse.changeImageCollapseSource(I.Expand) - } - } - - handleExpandAndCollapse(e) { - let t = e; - let o = this.ListNode; - let i = o[t].getCurrentNodeId(); - if (!this.expandAndCollapseInfo.has(i)) return; - let s = this.expandAndCollapseInfo.get(i); - if (o[t].getChildNodeInfo().isHasChildNode && s == I.Collapse) { - for (var a = 0;a < o[t].getChildNodeInfo().allChildNum; a++) { - o[t + 1+a].setNodeIsShow(!1); - o[t + 1+a].setListItemHeight(0) - } - this.notifyDataReload(); - return - } - let d = new Array(o[t].getChildNodeInfo().childNum); - d[0] = t + 1; - let r = 1; - for (; r < o[t].getChildNodeInfo().childNum; ) { - d[r] = d[r-1] + o[d[r-1]].getChildNodeInfo().allChildNum + 1; - r++ - } - if (s == I.Expand) for (a = 0; a < d.length; a++) { - o[d[a]].setNodeIsShow(!0); - o[d[a]].setListItemHeight(48); - let e = o[d[a]].getCurrentNodeId(); - this.expandAndCollapseInfo.get(e) == I.Expand && this.handleExpandAndCollapse(d[a]) - } - d = null; - this.notifyDataReload() - } - - init(e) { - let t = 0; - this.listNode = []; - this.listNodeUtils = e; - this.loadedNodeIdAndIndexMap.clear(); - this.listNodeUtils.traverseNodeDF((e => { - if (e.currentNodeId >= 0) { - var o = new S(e); - this.listNode.push(o); - o.getChildNodeInfo().isHasChildNode && this.expandAndCollapseInfo.set(o.getCurrentNodeId(), I.Collapse); - o.getNodeIsShow() && this.loadedNodeIdAndIndexMap.set(o.getCurrentNodeId(), t++); - o.getIsFolder() && this.nodeIdAndSubtitleMap.set(o.getCurrentNodeId(), o.getNodeInfoData() - .secondaryTitle || 0 == o.getNodeInfoData() - .secondaryTitle ? o.getNodeInfoData().secondaryTitle : "") - } - return !1 - })) - } - - refreshRemoveNodeData(e, t) { - let o = []; - for (let t = 0;t < e.length; t++) for (let i = 0;i < this.listNode.length; i++) if (this.listNode[i].getNodeCurrentNodeId() == e[t]) { - let s = this.listNode[i].getNodeCurrentNodeId(); - this.loadedNodeIdAndIndexMap.has(s) && o.push(this.loadedNodeIdAndIndexMap.get(s)); - let a = this.listNode.splice(i, 1); - a = null; - this.expandAndCollapseInfo.has(e[t]) && this.expandAndCollapseInfo.delete(e[t]); - break - } - o.forEach((e => { - this.notifyDataDelete(e); - this.notifyDataChange(e) - })); - for (let e = 0;e < this.listNode.length; e++) if (this.listNode[e].getNodeCurrentNodeId() == t.getNodeCurrentNodeId()) { - if (null == t.getNodeItem().imageCollapse) { - this.listNode[e].handleImageCollapseAfterAddNode(!1); - this.expandAndCollapseInfo.delete(t.getNodeCurrentNodeId()); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.listNode[e].getNodeCurrentNodeId())) - } - break - } - let i = { currentNodeId: t.getNodeCurrentNodeId(), parentNodeId: t.getNodeParentNodeId() }; - this.appEventBus.emit(s.NODE_DELETE, [i]) - } - - refreshAddNodeData(e) { - var t; - this.listNodeUtils.traverseNodeDF((o => { - if (o.currentNodeId === e[0]) { - t = new S(o); - return !0 - } - return !1 - })); - t.setIsModify(!0); - let o = 0; - for (let e = 0;e < this.listNode.length; e++) if (this.listNode[e].getNodeCurrentNodeId() == t.getNodeParentNodeId()) { - o = e; - if (null == this.listNode[e].getNodeItem().imageCollapse) { - this.listNode[e].handleImageCollapseAfterAddNode(!0); - this.notifyDataChange(o) - } else this.expandAndCollapseInfo.get(this.listNode[e].getNodeCurrentNodeId()) == I.Collapse && this.changeNodeStatus(o); - this.listNode.splice(e + 1, 0, t); - this.listNode[e+1].setTitleAndInputTextStatus(!0); - this.listNode[e+1].setNodeIsShow(!0); - this.listNode[e+1].setListItemHeight(48); - this.setImageSource(e + 1, u.Edit); - this.currentOperation = n.ADD_NODE; - this.notifyDataAdd(e + 1); - this.notificationNodeInfo(e + 1, this.currentOperation); - break - } - this.modifyNodeIndex = o + 1; - this.expandAndCollapseInfo.set(t.getNodeParentNodeId(), I.Expand); - this.handleExpandAndCollapse(o) - } - - refreshData(e, t, o, i) { - let s; - this.listNodeUtils = e; - this.listNodeUtils.traverseNodeDF((e => { - if (e.currentNodeId == o) { - s = new S(e); - return !0 - } - return !1 - })); - if (t === n.REMOVE_NODE) { - this.nodeIdAndSubtitleMap.set(o, this.selectedParentNodeSubtitle); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(o)); - this.refreshRemoveNodeData(i, s) - } - if (t === n.ADD_NODE) { - this.addFocusNodeId = i[0]; - this.nodeIdAndSubtitleMap.set(this.getClickNodeId(), this.selectedParentNodeSubtitle); - this.nodeIdAndSubtitleMap.set(i[0], this.insertNodeSubtitle); - this.refreshAddNodeData(i) - } - } - - setClickIndex(e) { - this.thisIndex = e - } - - getClickNodeId() { - return this.thisIndex < 0 || this.thisIndex >= this.ListNode.length ? -1 : this.ListNode[this.thisIndex].getCurrentNodeId() - } - - expandAndCollapseNode(e) { - this.changeNodeStatus(e); - this.handleExpandAndCollapse(e) - } - - getIsTouchDown() { - return this.isTouchDown - } - - getLastIndex() { - return this.lastIndex - } - - handleEvent(e, t) { - if (this.isDrag) return; - e !== r.TOUCH_DOWN && e !== r.TOUCH_UP && e !== r.MOUSE_BUTTON_RIGHT || t != this.lastIndex && this.clearLastIndexStatus(); - let o = this.loadedNodeIdAndIndexMap.get(this.listNode[t].getCurrentNodeId()); - switch (e) { - case r.TOUCH_DOWN: - this.isTouchDown = !0; - this.changeNodeColor(t, this.listNode[t].getNodeStatus().press); - break; - case r.TOUCH_UP: { - this.isInnerDrag && (this.isInnerDrag = !1); - this.isTouchDown = !1; - let e = this.listNode[t]; - this.setImageSource(t, u.Selected); - this.lastIndex = t; - this.changeNodeColor(t, e.getNodeStatus().selected); - this.notifyDataChange(o); - break - } - case r.HOVER: - if (this.getNodeColor(t) != this.listNode[t].getNodeStatus().selected) { - this.changeNodeColor(t, this.listNode[t].getNodeStatus().hover); - this.notifyDataChange(o) - } - break; - case r.HOVER_OVER: - if (this.getNodeColor(t) != this.listNode[t].getNodeStatus().selected) { - this.changeNodeColor(t, this.listNode[t].getNodeStatus().normal); - this.notifyDataChange(o) - } - break; - case r.FOCUS: - this.handleFocusEffect(t,!0); - this.notifyDataChange(o); - break; - case r.BLUR: - this.handleFocusEffect(t,!1); - this.notifyDataChange(o); - break; - case r.MOUSE_BUTTON_RIGHT: - this.lastIndex = t; - this.finishEditing(); - break; - case r.DRAG: - this.isTouchDown = !1; - let e = this.listNode[t]; - this.setImageSource(t, u.Selected); - this.lastIndex = t; - this.changeNodeColor(t, e.getNodeStatus().selected); - this.notifyDataChange(o) - } - } - - notificationNodeInfo(e, t) { - if (t === n.MODIFY_NODE) { - let e = this.listNode[this.modifyNodeIndex]; - let t = { currentNodeId: e.getNodeCurrentNodeId(), parentNodeId: e.getNodeParentNodeId() }; - this.appEventBus.emit(s.NODE_MODIFY, [t]) - } else if (t === n.ADD_NODE) { - let t = this.listNode[e]; - null != t.getNodeItem().imageNode && t.getNodeItem().imageNode.source; - null != t.getNodeItem().imageNode && t.getNodeItem().imageNode.selectedSource; - null != t.getNodeItem().imageNode && t.getNodeItem().imageNode.editSource; - let o = { currentNodeId: t.getNodeCurrentNodeId(), parentNodeId: t.getNodeParentNodeId() }; - this.appEventBus.emit(s.NODE_ADD, [o]) - } - } - - finishEditing() { - if (-1 != this.modifyNodeIndex) { - this.setImageSource(this.modifyNodeIndex, u.FinishEdit); - this.setImageCollapseSource(this.modifyNodeIndex, u.FinishEdit); - this.listNode[this.modifyNodeIndex].setIsModify(!1); - this.listNode[this.modifyNodeIndex].setTitleAndInputTextStatus(!1); - this.notificationNodeInfo(this.modifyNodeIndex, this.currentOperation); - this.notifyDataChange(this.modifyNodeIndex) - } - } - - setItemVisibilityOnEdit(e, t) { - let o = -1; - if (-1 != e) { - if (t === n.MODIFY_NODE) { - for (let t = 0;t < this.listNode.length; t++) if (this.listNode[t].getCurrentNodeId() == e) { - o = t; - break - } - let t = this.listNode[o]; - t.setIsModify(!0); - if (null === t.getNodeItem().mainTitleNode) return; - this.currentOperation = n.MODIFY_NODE; - t.setTitleAndInputTextStatus(!0); - this.setImageSource(o, u.Edit); - this.setImageCollapseSource(o, u.Edit); - this.modifyNodeIndex = o; - t.getNodeItem().inputText && (null != t.getNodeItem().imageCollapse ? t.getNodeItem() - .inputText - .rightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_paragraph_margin_xs"], - bundleName: "", - moduleName: "" - } : t.getNodeItem().inputText.rightMargin = { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_m"], - bundleName: "", - moduleName: "" - }); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(e)) - } - o = e; - if (t === n.COMMIT_NODE) { - let e = this.listNode[o]; - e.setTitleAndInputTextStatus(!1); - e.setIsModify(!1); - this.setImageSource(o, u.FinishEdit); - this.setImageCollapseSource(o, u.FinishEdit); - this.notificationNodeInfo(this.modifyNodeIndex, this.currentOperation); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(e.getCurrentNodeId())) - } - } - } - - setPopUpInfo(e, t, o, i) { - let s = this.listNode[i]; - s.setPopUpIsShow(o); - let a = this.loadedNodeIdAndIndexMap.get(s.getCurrentNodeId()); - if (o) { - if (e === l.HINTS) { - if (null != s.getNodeItem().mainTitleNode) s.setPopUpText(s.getNodeItem().mainTitleNode.title); else { - s.setPopUpText(""); - s.setPopUpIsShow(!1) - } - s.setPopUpEnableArrow(!1); - s.setPopUpColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_background"], - bundleName: "", - moduleName: "" - }); - s.setPopUpTextColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_secondary"], - bundleName: "", - moduleName: "" - }) - } else if (e === l.WARNINGS && null != s.getNodeItem().inputText) { - t === h.INVALID_ERROR ? s.setPopUpText("invalid error") : t === h.LENGTH_ERROR && s.setPopUpText("length error"); - s.setPopUpEnableArrow(!0); - s.setPopUpColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_help_tip_bg"], - bundleName: "", - moduleName: "" - }); - s.setPopUpTextColor({ - id: -1, - type: 10001, - params: ["sys.color.ohos_id_color_text_hint_contrary"], - bundleName: "", - moduleName: "" - }) - } - this.notifyDataChange(a) - } else this.notifyDataChange(a) - } - - setShowPopUpTimeout(e, t) { - null != this.listNode[t].getNodeItem().mainTitleNode && (this.listNode[t].getNodeItem() - .mainTitleNode - .popUpTimeout = e); - let o = this.loadedNodeIdAndIndexMap.get(this.listNode[t].getCurrentNodeId()); - this.notifyDataChange(o) - } - - setMainTitleNameOnEdit(e, t) { - this.modifyNodeIndex = e; - if (null != this.listNode[e].getNodeItem().mainTitleNode) { - this.listNode[e].getNodeItem().mainTitleNode.title = t; - let o = this.loadedNodeIdAndIndexMap.get(this.listNode[e].getCurrentNodeId()); - this.notifyDataChange(o) - } - } - - get ListNode() { - return this.listNode - } - - totalCount() { - let e = 0; - let t = 0; - this.loadedNodeIdAndIndexMap.clear(); - for (let o = 0;o < this.listNode.length; o++) if (this.listNode[o].getNodeIsShow()) { - this.loadedNodeIdAndIndexMap.set(this.listNode[o].getCurrentNodeId(), t++); - e++ - } - return e - } - - getData(e) { - let t = 0; - for (let o = 0;o < this.listNode.length; o++) if (this.listNode[o].getNodeIsShow()) { - if (e == t) return this.listNode[o]; - t++ - } - return null - } - - addData(e, t) { - this.listNode.splice(e, 0, t); - this.notifyDataAdd(e) - } - - pushData(e) { - this.listNode.push(e); - this.notifyDataAdd(this.listNode.length - 1) - } - - setIsInnerDrag(e) { - this.isInnerDrag = e - } - - getIsInnerDrag() { - return this.isInnerDrag - } - - setIsDrag(e) { - this.isDrag = e - } - - getIsDrag() { - return this.isDrag - } - - setCurrentNodeInfo(e) { - this.currentNodeInfo = e - } - - getCurrentNodeInfo() { - return this.currentNodeInfo - } - - setDraggingParentNodeId(e) { - this.draggingParentNodeId = e - } - - getDraggingParentNodeId() { - return this.draggingParentNodeId - } - - getDraggingCurrentNodeId() { - return this.draggingCurrentNodeId - } - - setDraggingCurrentNodeId(e) { - this.draggingCurrentNodeId = e - } - - setListItemOpacity(e) { - this.listItemOpacity = e - } - - getListItemOpacity(e) { - return e.getCurrentNodeId() == this.getDraggingCurrentNodeId() ? this.listItemOpacity : 1 - } - - getDragPopupPara() { - return this.DRAG_POPUP - } - - setLastPassIndex(e) { - this.lastPassIndex = e - } - - getLastPassIndex() { - return this.lastPassIndex - } - - getIsParentOfInsertNode(e) { - let t = this.currentNodeInfo.getNodeInfoNode(); - let o = !1; - this.listNodeUtils.traverseNodeDF((function (t) { - if (t.currentNodeId == e) { - o = !0; - return !0 - } - return !1 - }), t); - return o - } - - setPassIndex(e) { - this.thisPassIndex = e - } - - getPassIndex() { - return this.thisPassIndex - } - - clearTimeOutAboutDelayHighLightAndExpand(e) { - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let e = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - let t = this; - this.ListNode.forEach((function (e) { - e.getNodeCurrentNodeId() == t.lastPassId && e.setCanShowFlagLine(!1) - })); - this.notifyDataChange(e) - } - if (this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && this.clearTimeoutHighLightId != this.lastTimeoutHighLightId) { - clearTimeout(this.lastTimeoutHighLightId); - if (this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE) { - this.clearHighLight(this.lastDelayHighLightIndex); - let e = this.loadedNodeIdAndIndexMap.get(this.listNode[this.lastDelayHighLightIndex].getCurrentNodeId()); - this.notifyDataChange(e) - } - this.clearTimeoutHighLightId = this.lastTimeoutHighLightId - } - this.lastTimeoutHighLightId = this.timeoutHighLightId; - this.lastDelayHighLightIndex = e; - if (this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && this.clearTimeoutExpandId != this.lastTimeoutExpandId) { - clearTimeout(this.lastTimeoutExpandId); - this.clearTimeoutExpandId = this.lastTimeoutExpandId - } - this.lastTimeoutExpandId = this.timeoutExpandId; - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE - } - - clearHighLight(e) { - this.changeNodeColor(e, this.listNode[e].getNodeStatus().normal); - this.changeNodeHighLightColor(e,!1); - this.setImageSource(e, u.FinishDragInsert); - this.setImageCollapseSource(e, u.FinishDragInsert); - this.listNode[e].setIsHighLight(!1) - } - - changeNodeHighLightColor(e, t) { - this.listNode[e].getNodeItem() - .mainTitleNode && this.listNode[e].getIsShowTitle() && this.listNode[e].getNodeItem() - .mainTitleNode - .setMainTitleHighLight(t) - } - - setVisibility(e, t, o) { - let i = this.thisPassIndex != t || this.flag != e; - this.thisPassIndex = t; - if ((i || o) && this.isInnerDrag) { - this.flag = e; - let o = this.getData(t).getCurrentNodeId(); - let i = this.expandAndCollapseInfo.get(o) == I.Expand && this.flag == g.DOWN_FLAG ? this.getData(t) - .getNodeLevel() + 1 : this.getData(t) - .getNodeLevel(); - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let e = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - let t = this; - this.ListNode.forEach((function (e) { - e.getNodeCurrentNodeId() == t.lastPassId && e.setCanShowFlagLine(!1) - })); - this.notifyDataChange(e) - } - if (this.flag == g.DOWN_FLAG && t < this.totalCount() - 1) { - this.getData(t).setCanShowFlagLine(!1); - this.getData(t + 1).setCanShowFlagLine(!0); - this.getData(t).setCanShowBottomFlagLine(!1); - this.getData(t + 1).setFlagLineLeftMargin(i); - this.notifyDataChange(t); - this.notifyDataChange(t + 1); - this.lastPassId = this.getData(t + 1).getNodeCurrentNodeId() - } else if (this.flag == g.UP_FLAG && t < this.totalCount() - 1) { - this.getData(t).setCanShowFlagLine(!0); - this.getData(t + 1).setCanShowFlagLine(!1); - this.getData(t).setCanShowBottomFlagLine(!1); - this.getData(t).setFlagLineLeftMargin(i); - this.notifyDataChange(t); - this.notifyDataChange(t + 1); - this.lastPassId = this.getData(t).getNodeCurrentNodeId() - } else if (t >= this.totalCount() - 1) { - if (this.flag == g.DOWN_FLAG) { - this.getData(t).setCanShowFlagLine(!1); - this.getData(t).setCanShowBottomFlagLine(!0) - } else { - this.getData(t).setCanShowFlagLine(!0); - this.getData(t).setCanShowBottomFlagLine(!1) - } - this.getData(t).setFlagLineLeftMargin(i); - this.notifyDataChange(t); - this.lastPassId = this.getData(t).getNodeCurrentNodeId() - } - } - } - - delayHighLightAndExpandNode(e, t, o) { - let i = e != this.lastDelayExpandIndex; - let s = this.getData(o).getIsOverBorder(); - this.lastDelayExpandIndex = s ? this.INITIAL_INVALID_VALUE : e; - if (s || i) { - let i = this; - if (!s && (!this.isInnerDrag || this.expandAndCollapseInfo.get(t) == I.Collapse && this.isInnerDrag || !this.expandAndCollapseInfo.has(t) && this.listNode[e].getIsFolder())) { - this.changeNodeColor(e, this.listNode[e].getNodeStatus().hover); - this.notifyDataChange(o); - let t = this.isInnerDrag ? 1e3 : 0; - this.timeoutHighLightId = setTimeout((function () { - i.delayHighLight(e) - }), t) - } - if (s || this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && this.clearTimeoutHighLightId != this.lastTimeoutHighLightId) { - clearTimeout(this.lastTimeoutHighLightId); - if (this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE) { - this.clearHighLight(this.lastDelayHighLightIndex); - this.notifyDataReload() - } - this.clearTimeoutHighLightId = this.lastTimeoutHighLightId - } - this.lastTimeoutHighLightId = this.timeoutHighLightId; - this.lastDelayHighLightIndex = e; - if (!s && this.expandAndCollapseInfo.get(t) == I.Collapse) { - let t = this.getData(o).getNodeInfoNode().children[0].currentNodeId; - let s = 2e3; - this.timeoutExpandId = setTimeout((function () { - i.clearHighLight(i.lastDelayHighLightIndex); - i.alterFlagLineAndExpandNode(e, t) - }), s) - } - if (s || this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && this.clearTimeoutExpandId != this.lastTimeoutExpandId) { - clearTimeout(this.lastTimeoutExpandId); - this.clearTimeoutExpandId = this.lastTimeoutExpandId - } - this.lastTimeoutExpandId = this.timeoutExpandId - } - } - - delayHighLight(e) { - let t = this; - this.ListNode.forEach((function (e) { - if (e.getNodeCurrentNodeId() == t.lastPassId) { - e.setCanShowFlagLine(!1); - e.setCanShowBottomFlagLine(!1) - } - })); - this.changeNodeColor(e, this.listNode[e].getNodeStatus().highLight); - this.listNode[e].setIsHighLight(!0); - this.changeNodeHighLightColor(e,!0); - this.setImageSource(e, u.DragInsert); - this.setImageCollapseSource(e, u.DragInsert); - this.notifyDataReload() - } - - alterFlagLineAndExpandNode(e, t) { - let o = this; - this.ListNode.forEach((function (e) { - if (e.getNodeCurrentNodeId() == o.lastPassId) { - e.setCanShowFlagLine(!1); - e.setCanShowBottomFlagLine(!1) - } - })); - this.ListNode.forEach((function (e) { - o.isInnerDrag && e.getNodeCurrentNodeId() == t && e.setCanShowFlagLine(!0) - })); - this.changeNodeStatus(e); - this.handleExpandAndCollapse(e); - this.lastPassId = t - } - - hideLastLine() { - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let e = this; - this.ListNode.forEach((function (t) { - if (t.getNodeCurrentNodeId() == e.lastPassId) { - t.setCanShowFlagLine(!1); - t.setCanShowBottomFlagLine(!1) - } - })); - let t = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - this.notifyDataChange(t) - } - } - - clearLastTimeoutHighLight() { - if (this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && this.clearTimeoutHighLightId != this.lastTimeoutHighLightId) { - clearTimeout(this.lastTimeoutHighLightId); - this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE && this.clearHighLight(this.lastDelayHighLightIndex) - } - } - - clearLastTimeoutExpand() { - this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && this.clearTimeoutExpandId != this.lastTimeoutExpandId && clearTimeout(this.lastTimeoutExpandId) - } - - getSubtitle(e) { - return this.nodeIdAndSubtitleMap.has(e) ? "number" == typeof this.nodeIdAndSubtitleMap.get(e) ? this.nodeIdAndSubtitleMap.get(e) - .toString() : this.nodeIdAndSubtitleMap.get(e) : "" - } - - hasSubtitle(e) { - return this.nodeIdAndSubtitleMap.has(e) - } - - initialParameterAboutDelayHighLightAndExpandIndex() { - this.lastDelayHighLightIndex = this.INITIAL_INVALID_VALUE; - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE; - this.lastPassIndex = this.INITIAL_INVALID_VALUE; - this.draggingCurrentNodeId = this.INITIAL_INVALID_VALUE; - this.flag = g.NONE - } - - refreshSubtitle(e) { - this.nodeIdAndSubtitleMap.set(this.selectedParentNodeId, this.selectedParentNodeSubtitle); - this.nodeIdAndSubtitleMap.set(e, this.insertNodeSubtitle); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.selectedParentNodeId)); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(e)) - } - - setNodeSubtitlePara(e, t, o) { - this.selectedParentNodeId = e; - this.selectedParentNodeSubtitle = t; - this.insertNodeSubtitle = o - } - - getInsertNodeSubtitle() { - return this.insertNodeSubtitle - } - - getExpandAndCollapseInfo(e) { - return this.expandAndCollapseInfo.get(e) - } - - getLastDelayHighLightId() { - return this.lastDelayHighLightId - } - - setLastDelayHighLightId() { - this.ListNode.forEach(((e, t) => { - t == this.lastDelayHighLightIndex && (this.lastDelayHighLightId = e.getCurrentNodeId()) - })) - } - - setLastPassId(e) { - this.lastPassId = e - } - - setLastDelayHighLightIndex(e) { - this.lastDelayHighLightIndex = e - } - - alterDragNode(e, t, o, i, a, d) { - let r = []; - let n = e; - let l = a; - let h = d.getNodeInfoData(); - let c = null; - let N = d.getNodeInfoNode(); - let u = !1; - let p = this.INITIAL_INVALID_VALUE; - let m = this.INITIAL_INVALID_VALUE; - let f = this.flag == g.DOWN_FLAG; - m = this.getChildIndex(i, a); - p = this.getChildIndex(e, t); - p = e != i ? f ? p + 1 : p : p > m ? f ? p : p - 1 : f ? p + 1 : p; - for (let e = 0;e < this.listNode.length; e++) if (this.listNode[e].getCurrentNodeId() == t) { - u = this.listNode[e].getIsHighLight(); - if (this.flag == g.DOWN_FLAG && this.expandAndCollapseInfo.get(t) == I.Expand) { - n = t; - p = 0 - } else if (this.flag == g.UP_FLAG && this.expandAndCollapseInfo.get(t) == I.Expand && 0 == this.listNode[e].getCanShowFlagLine()) { - n = t; - p = 0 - } else if (u) { - n = t; - p = 0 - } - break - } - let S = { currentNodeId: l, parentNodeId: n, childIndex: p }; - this.appEventBus.emit(s.NODE_MOVE, [S]); - r.push({ parentId: n, currentId: l, data: h }); - let C = null; - this.listNodeUtils.dragTraverseNodeDF((function (e, t) { - if (e) { - C = e; - n = C.parentNodeId; - l = C.currentNodeId; - for (let e = 0;e < t.length; e++) if (t[e].getNodeCurrentNodeId() == l) { - c = t[e]; - break - } - h = c.getNodeInfoData(); - n != i && r.push({ parentId: n, currentId: l, data: h }); - return !1 - } - return !1 - }), N, this.listNode); - this.listNodeUtils.removeNode(a, i, this.listNodeUtils.traverseNodeBF); - let D = t; - let _ = f; - if (this.expandAndCollapseInfo.get(t) == I.Expand) { - _ = !1; - this.listNode.forEach((e => { - e.getCurrentNodeId() == t && 0 == e.getCanShowFlagLine() && (D = e.getNodeInfoNode() - .children - .length ? e.getNodeInfoNode() - .children[0] - .currentNodeId : this.INITIAL_INVALID_VALUE) - })) - } else !this.expandAndCollapseInfo.get(t) && u && this.expandAndCollapseInfo.set(t, I.Expand); - this.listNodeUtils.addDragNode(r[0].parentId, r[0].currentId, D, _, r[0].data); - for (let e = 1;e < r.length; e++) this.listNodeUtils.addNode(r[e].parentId, r[e].currentId, r[e].data); - for (let e = 0;e < this.listNode.length; e++) if (this.listNode[e].getCurrentNodeId() == i && null == this.listNode[e].getNodeInfoNode() - .getNodeItem() - .imageCollapse) { - this.listNode[e].handleImageCollapseAfterAddNode(!1); - this.expandAndCollapseInfo.delete(i); - break - } - let T = [...this.listNode]; - this.reloadListNode(this.listNodeUtils, T) - } - - reloadListNode(e, t) { - let o = 0; - this.listNode = []; - this.listNodeUtils = e; - this.loadedNodeIdAndIndexMap.clear(); - this.listNodeUtils.traverseNodeDF((e => { - if (e.currentNodeId >= 0) { - var i = new S(e); - this.listNode.push(i); - this.expandAndCollapseInfo.get(e.currentNodeId) == I.Expand ? i.getNodeItem() - .imageCollapse - .changeImageCollapseSource(I.Expand) : this.expandAndCollapseInfo.get(e.currentNodeId) == I.Collapse && i.getNodeItem() - .imageCollapse - .changeImageCollapseSource(I.Collapse); - for (let e = 0;e < t.length; e++) if (t[e].getCurrentNodeId() == i.getCurrentNodeId()) { - i.setNodeIsShow(t[e].getNodeIsShow()); - i.setListItemHeight(t[e].getListItemHeight()); - i.getNodeItem().mainTitleNode && i.getIsShowTitle() && (i.getNodeItem() - .mainTitleNode - .title = t[e].getNodeItem().mainTitleNode.title); - break - } - i.getNodeIsShow() && this.loadedNodeIdAndIndexMap.set(i.getCurrentNodeId(), o++) - } - return !1 - })) - } - - getFlagLine() { - return this.FLAG_LINE - } - - getVisibility(e) { - let t = this.loadedNodeIdAndIndexMap.get(e.getCurrentNodeId()) - 1; - if (t > this.INITIAL_INVALID_VALUE) { - let o = this.getData(t); - return 1 != e.getCanShowFlagLine() || e.getIsHighLight() || o.getIsHighLight() ? Visibility.Hidden : Visibility.Visible - } - return 1 != e.getCanShowFlagLine() || e.getIsHighLight() ? Visibility.Hidden : Visibility.Visible - } - - getSubTitlePara() { - return this.subTitle - } - - getIsFolder(e) { - return!!this.loadedNodeIdAndIndexMap.has(e) && this.getData(this.loadedNodeIdAndIndexMap.get(e)).getIsFolder() - } - - getSubTitleFontColor(e) { - return e ? this.subTitle.highLightFontColor : this.subTitle.normalFontColor - } - - getChildIndex(e, t) { - let o = this.INITIAL_INVALID_VALUE; - this.listNodeUtils.traverseNodeBF((function (i) { - if (i.getCurrentNodeId() == e) { - i.children.forEach(((e, i) => { - e.getCurrentNodeId() == t && (o = i) - })); - return !0 - } - return !1 - })); - return o - } - - setCurrentFocusNodeId(e) { - this.currentFocusNodeId = e - } - - getCurrentFocusNodeId() { - return this.currentFocusNodeId - } - - setLastFocusNodeId(e) { - this.lastFocusNodeId = e - } - - getLastFocusNodeId() { - return this.lastFocusNodeId - } - - getAddFocusNodeId() { - return this.addFocusNodeId - } - - setFlag(e) { - this.flag = e - } - } - - e.ListNodeDataSource = D; - - function _(e) { - let t = 0; - this.listNodeDataSource.ListNode.forEach((function (o, i) { - o.getNodeCurrentNodeId() == e && (t = i) - })); - return t - } - - class T extends ViewPU { - constructor(e, t, o, i = -1) { - super(e, o, i); - this.listNodeDataSource = void 0; - this.treeController = void 0; - this.__dropSelectedIndex = new ObservedPropertySimplePU(0, this, "dropSelectedIndex"); - this.listTreeViewMenu = null; - this.__listTreeViewWidth = new SynchedPropertySimpleOneWayPU(t.listTreeViewWidth, this, "listTreeViewWidth"); - this.__listTreeViewHeight = new SynchedPropertySimpleOneWayPU(t.listTreeViewHeight, this, "listTreeViewHeight"); - this.MAX_CN_LENGTH = 254; - this.MAX_EN_LENGTH = 255; - this.INITIAL_INVALID_VALUE = -1; - this.MAX_TOUCH_DOWN_COUNT = 0; - this.isMultiPress = !1; - this.touchDownCount = this.INITIAL_INVALID_VALUE; - this.appEventBus = a.getInstance().getTreeListener(); - this.itemPadding = { - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_card_margin_middle"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_card_margin_middle"], - bundleName: "", - moduleName: "" - }, - top: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_margin_vertical"], - bundleName: "", - moduleName: "" - }, - bottom: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_margin_vertical"], - bundleName: "", - moduleName: "" - } - }; - this.textInputPadding = { left: "0vp", right: "0vp", top: "0vp", bottom: "0vp" }; - this.setInitiallyProvidedValue(t) - } - - setInitiallyProvidedValue(e) { - void 0 !== e.listNodeDataSource && (this.listNodeDataSource = e.listNodeDataSource); - void 0 !== e.treeController && (this.treeController = e.treeController); - void 0 !== e.dropSelectedIndex && (this.dropSelectedIndex = e.dropSelectedIndex); - void 0 !== e.listTreeViewMenu && (this.listTreeViewMenu = e.listTreeViewMenu); - void 0 !== e.MAX_CN_LENGTH && (this.MAX_CN_LENGTH = e.MAX_CN_LENGTH); - void 0 !== e.MAX_EN_LENGTH && (this.MAX_EN_LENGTH = e.MAX_EN_LENGTH); - void 0 !== e.INITIAL_INVALID_VALUE && (this.INITIAL_INVALID_VALUE = e.INITIAL_INVALID_VALUE); - void 0 !== e.MAX_TOUCH_DOWN_COUNT && (this.MAX_TOUCH_DOWN_COUNT = e.MAX_TOUCH_DOWN_COUNT); - void 0 !== e.isMultiPress && (this.isMultiPress = e.isMultiPress); - void 0 !== e.touchDownCount && (this.touchDownCount = e.touchDownCount); - void 0 !== e.appEventBus && (this.appEventBus = e.appEventBus); - void 0 !== e.itemPadding && (this.itemPadding = e.itemPadding); - void 0 !== e.textInputPadding && (this.textInputPadding = e.textInputPadding) - } - - updateStateVars(e) { - this.__listTreeViewWidth.reset(e.listTreeViewWidth); - this.__listTreeViewHeight.reset(e.listTreeViewHeight) - } - - purgeVariableDependenciesOnElmtId(e) { - this.__dropSelectedIndex.purgeDependencyOnElmtId(e); - this.__listTreeViewWidth.purgeDependencyOnElmtId(e); - this.__listTreeViewHeight.purgeDependencyOnElmtId(e) - } - - aboutToBeDeleted() { - this.__dropSelectedIndex.aboutToBeDeleted(); - this.__listTreeViewWidth.aboutToBeDeleted(); - this.__listTreeViewHeight.aboutToBeDeleted(); - SubscriberManager.Get().delete(this.id__()); - this.aboutToBeDeletedInternal() - } - - get dropSelectedIndex() { - return this.__dropSelectedIndex.get() - } - - set dropSelectedIndex(e) { - this.__dropSelectedIndex.set(e) - } - - get listTreeViewWidth() { - return this.__listTreeViewWidth.get() - } - - set listTreeViewWidth(e) { - this.__listTreeViewWidth.set(e) - } - - get listTreeViewHeight() { - return this.__listTreeViewHeight.get() - } - - set listTreeViewHeight(e) { - this.__listTreeViewHeight.set(e) - } - - aboutToAppear() { - this.listTreeViewWidth = void 0 === this.listTreeViewWidth ? 200 : this.listTreeViewWidth; - this.listNodeDataSource = this.treeController.getListNodeDataSource() - } - - checkInvalidPattern(e) { - return /[\\\/:*?"<>|]/.test(e) - } - - checkIsAllCN(e) { - return /^[\u4e00-\u9fa5]+$/.test(e) - } - - popupForShowTitle(e, t, o, i = null) { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(t); - Row.border({ - radius: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_l"], - bundleName: "", - moduleName: "" - } - }); - Row.padding({ - left: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_l"], - bundleName: "", - moduleName: "" - }, - right: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_elements_margin_horizontal_l"], - bundleName: "", - moduleName: "" - }, - top: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_card_margin_middle"], - bundleName: "", - moduleName: "" - }, - bottom: { - id: -1, - type: 10002, - params: ["sys.float.ohos_id_card_margin_middle"], - bundleName: "", - moduleName: "" - } - }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((t, i) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Text.create(e); - Text.fontSize({ - id: -1, - type: 10002, - params: ["sys.float.ohos_id_text_size_body2"], - bundleName: "", - moduleName: "" - }); - Text.fontWeight("regular"); - Text.fontColor(o); - i || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - } - - builder(e = null) { - this.listTreeViewMenu.bind(this)() - } - - draggingPopup(e, o = null) { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.constraintSize({ - minWidth: this.listNodeDataSource.getDragPopupPara().floorConstraintSize.minWidth, - maxWidth: this.listNodeDataSource.getDragPopupPara().floorConstraintSize.maxWidth - }); - Row.height(this.listNodeDataSource.getDragPopupPara().height); - Row.backgroundColor(this.listNodeDataSource.getDragPopupPara().backgroundColor); - Row.padding({ - left: this.listNodeDataSource.getDragPopupPara().padding.left, - right: this.listNodeDataSource.getDragPopupPara().padding.right - }); - Row.shadow({ - radius: this.listNodeDataSource.getDragPopupPara().shadow.radius, - color: this.listNodeDataSource.getDragPopupPara().shadow.color, - offsetY: this.listNodeDataSource.getDragPopupPara().shadow.offsetY - }); - Row.borderRadius(this.listNodeDataSource.getDragPopupPara().borderRadius); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((o, i) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - If.create(); - e.getNodeItem().imageNode ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((o, i) => { - ViewStackProcessor.StartGetAccessRecordingFor(o); - Row.create(); - Row.backgroundColor(t); - Row.margin({ right: e.getNodeItem().imageNode.itemRightMargin }); - Row.height(e.getNodeItem().imageNode.itemHeight); - Row.width(e.getNodeItem().imageNode.itemWidth); - i || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Image.create(e.getNodeItem().imageNode.normalSource); - Image.objectFit(ImageFit.Contain); - Image.height(e.getNodeItem().imageNode.itemHeight); - Image.width(e.getNodeItem().imageNode.itemWidth); - Image.opacity(this.listNodeDataSource.getDragPopupPara().imageOpacity); - o || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - i || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Row.create(); - Row.constraintSize({ - minWidth: e.getNodeItem().imageNode ? this.listNodeDataSource.getDragPopupPara() - .textConstraintSize - .minWidth1 : this.listNodeDataSource.getDragPopupPara() - .textConstraintSize - .minWidth2, - maxWidth: e.getNodeItem().imageNode ? this.listNodeDataSource.getDragPopupPara() - .textConstraintSize - .maxWidth1 : this.listNodeDataSource.getDragPopupPara() - .textConstraintSize - .maxWidth2 - }); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - If.create(); - e.getNodeItem().mainTitleNode && e.getIsShowTitle() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - Text.create(e.getNodeItem().mainTitleNode.title); - Text.maxLines(1); - Text.fontSize(e.getNodeItem().mainTitleNode.size); - Text.fontColor(this.listNodeDataSource.getDragPopupPara().fontColor); - Text.fontWeight(this.listNodeDataSource.getDragPopupPara().fontWeight); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - o || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Row.pop() - } - - initialRender() { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - List.create({}); - List.width(this.listTreeViewWidth); - List.height(this.listTreeViewHeight); - List.onDragMove((e => { - if (this.isMultiPress) { - console.error("drag error, a item has been dragged"); - return - } - let t = Math.floor(e.getY() / 24) % 2 ? g.DOWN_FLAG : g.UP_FLAG; - let o = Math.floor(e.getY() / 48); - let i = !1; - if (o >= this.listNodeDataSource.totalCount()) { - t = g.DOWN_FLAG; - o = this.listNodeDataSource.totalCount() - 1; - this.listNodeDataSource.getData(o).setIsOverBorder(!0); - i = !0 - } else this.listNodeDataSource.getData(o).setIsOverBorder(!1); - let s = this.listNodeDataSource.getData(o).getCurrentNodeId(); - if (o != this.listNodeDataSource.getLastPassIndex() && this.listNodeDataSource.getIsInnerDrag()) { - if (this.listNodeDataSource.getIsParentOfInsertNode(s)) { - this.listNodeDataSource.setPassIndex(o); - let e = this; - this.listNodeDataSource.clearTimeOutAboutDelayHighLightAndExpand(_.call(e, s)); - this.listNodeDataSource.setFlag(g.NONE); - return - } - } - this.listNodeDataSource.setLastPassIndex(o); - this.listNodeDataSource.setVisibility(t, o, i); - if (s != this.listNodeDataSource.getDraggingCurrentNodeId()) { - let e = this; - this.listNodeDataSource.delayHighLightAndExpandNode(_.call(e, s), s, o) - } - })); - List.onDragEnter(((e, t) => { - if (this.listNodeDataSource.getIsInnerDrag()) { - this.listNodeDataSource.setIsDrag(!0); - let e = .4; - this.listNodeDataSource.setListItemOpacity(e) - } - })); - List.onDragLeave(((e, t) => { - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.clearLastTimeoutExpand(); - this.listNodeDataSource.setListItemOpacity(1); - this.listNodeDataSource.setIsDrag(!1); - this.listNodeDataSource.notifyDataReload() - })); - List.onDrop(((e, t) => { - this.listNodeDataSource.clearLastTimeoutExpand(); - this.listNodeDataSource.setListItemOpacity(1); - let o = this.listNodeDataSource.getPassIndex(); - let i = this.dropSelectedIndex; - if (i - 1 > this.listNodeDataSource.totalCount() || null == i) { - console.error("drag error, currentNodeIndex is not found"); - this.listNodeDataSource.setIsDrag(!1); - return - } - if (o == this.listNodeDataSource.totalCount()) { - console.log("need to insert into the position of the last line, now insertNodeIndex = insertNodeIndex - 1"); - o -= 1 - } - let s = this.listNodeDataSource.getData(o); - let a = s.getNodeCurrentNodeId(); - if (!this.listNodeDataSource.getIsDrag() || !this.listNodeDataSource.getIsInnerDrag()) { - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.setIsInnerDrag(!1); - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.refreshSubtitle(a); - this.listNodeDataSource.notifyDataReload(); - return - } - let d = this.listNodeDataSource.getCurrentNodeInfo(); - let n = s.getNodeParentNodeId(); - let l = this.listNodeDataSource.getDraggingCurrentNodeId(); - let h = this.listNodeDataSource.getDraggingParentNodeId(); - if (this.listNodeDataSource.getIsParentOfInsertNode(a)) { - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.setIsInnerDrag(!1); - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.notifyDataChange(o); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.setIsDrag(!1); - let e = this; - let t = _.call(e, l); - this.listNodeDataSource.setClickIndex(t); - this.listNodeDataSource.handleEvent(r.DRAG, t); - return - } - if (this.listNodeDataSource.getExpandAndCollapseInfo(l) == I.Expand) { - let e = this; - this.listNodeDataSource.expandAndCollapseNode(_.call(e, l)) - } - if (this.listNodeDataSource.getExpandAndCollapseInfo(a) == I.Collapse) { - let e = this; - let t = _.call(e, a); - this.listNodeDataSource.ListNode[t].getIsHighLight() && this.listNodeDataSource.expandAndCollapseNode(t) - } - this.listNodeDataSource.setLastDelayHighLightId(); - if (l != a) { - this.listNodeDataSource.alterDragNode(n, a, s, h, l, d); - this.listNodeDataSource.hideLastLine() - } else { - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.setLastPassId(l); - this.listNodeDataSource.hideLastLine() - } - let g = _.call(this, this.listNodeDataSource.getLastDelayHighLightId()); - this.listNodeDataSource.setLastDelayHighLightIndex(g); - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.setIsDrag(!1); - let c = _.call(this, l); - this.listNodeDataSource.setClickIndex(c); - this.listNodeDataSource.handleEvent(r.DRAG, c); - this.listNodeDataSource.setIsInnerDrag(!1); - this.listNodeDataSource.notifyDataReload() - })); - t || List.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - { - const e = e => { - const i = e; - { - const e = void 0 !== globalThis.__lazyForEachItemGenFunction && !0; - const a = (t, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(t); - ListItem.create(g, e); - ListItem.width("100%"); - ListItem.height(i.getListItemHeight()); - ListItem.padding({ left: this.itemPadding.left, right: this.itemPadding.right }); - ListItem.align(Alignment.Start); - ListItem.onDragStart(((e, t) => { - if (this.listNodeDataSource.getIsDrag() || this.listNodeDataSource.getIsInnerDrag() || this.isMultiPress) { - console.error("drag error, a item has been dragged"); - return - } - this.dropSelectedIndex = JSON.parse(t).selectedIndex; - let o = JSON.parse(t).selectedIndex; - let s = this.listNodeDataSource.getData(o); - let a = i.getNodeCurrentNodeId(); - if (o >= this.listNodeDataSource.totalCount() || null == o) { - console.error("drag error, currentNodeIndex is not found in onDragStart"); - return - } - this.listNodeDataSource.setIsInnerDrag(!0); - this.listNodeDataSource.setIsDrag(!0); - this.listNodeDataSource.setCurrentNodeInfo(s); - this.listNodeDataSource.setDraggingCurrentNodeId(s.getNodeCurrentNodeId()); - this.listNodeDataSource.setDraggingParentNodeId(s.getNodeParentNodeId()); - this.listNodeDataSource.setListItemOpacity(.4); - this.listNodeDataSource.notifyDataChange(o); - if (a == s.getNodeCurrentNodeId()) return { builder: () => { - this.draggingPopup.call(this, s) - } }; - console.error("drag is too fast,it attribute a fault to OH"); - this.listNodeDataSource.setIsDrag(!1) - })); - o || ListItem.pop(); - ViewStackProcessor.StopGetAccessRecording() - }; - const d = () => { - this.observeComponentCreation(a); - this.observeComponentCreation(((e, a) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeIsShow() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.focusable(!0); - Column.onMouse((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - if (e.button == MouseButton.Right) { - t.listNodeDataSource.handleEvent(r.MOUSE_BUTTON_RIGHT, _.call(t, i.getNodeCurrentNodeId())); - this.listTreeViewMenu = i.getMenu(); - t.listNodeDataSource.setClickIndex(o); - t.listNodeDataSource.setPopUpInfo(l.HINTS, h.NONE,!1, o); - clearTimeout(i.getNodeItem().mainTitleNode.popUpTimeout) - } - e.stopPropagation() - })); - Column.padding({ top: this.itemPadding.top, bottom: this.itemPadding.bottom }); - Column.bindPopup(i.getPopUpInfo().popUpIsShow, { - builder: { builder: () => { - this.popupForShowTitle.call(this, i.getPopUpInfo().popUpText, i.getPopUpInfo() - .popUpColor, i.getPopUpInfo().popUpTextColor) - } }, - placement: Placement.BottomLeft, - placementOnTop: !1, - popupColor: i.getPopUpInfo().popUpColor, - autoCancel: !0, - enableArrow: i.getPopUpInfo().popUpEnableArrow - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.height(this.listNodeDataSource.getFlagLine().flagLineHeight); - Divider.color(this.listNodeDataSource.getFlagLine().flagLineColor); - Divider.visibility(this.listNodeDataSource.getVisibility(i)); - Divider.lineCap(LineCapStyle.Round); - Divider.margin({ left: i.getFlagLineLeftMargin() }); - Divider.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yTopOffset - }); - t || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({}); - Row.opacity(this.listNodeDataSource.getListItemOpacity(i)); - Row.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBasePlateOffset - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({}); - Row.width("100%"); - Row.onTouch((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - let a = i.getNodeCurrentNodeId(); - t.listNodeDataSource.setClickIndex(o); - if (e.type === TouchType.Down) { - this.touchDownCount++; - this.isMultiPress = this.touchDownCount > this.MAX_TOUCH_DOWN_COUNT; - this.listNodeDataSource.getIsTouchDown() || t.listNodeDataSource.handleEvent(r.TOUCH_DOWN, o) - } - if (e.type === TouchType.Up) { - this.touchDownCount--; - this.touchDownCount < this.MAX_TOUCH_DOWN_COUNT && (this.isMultiPress = !1); - let e = { currentNodeId: a }; - this.appEventBus.emit(s.NODE_CLICK, [e]); - t.listNodeDataSource.handleEvent(r.TOUCH_UP, o) - } - })); - Row.onHover((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - e ? t.listNodeDataSource.handleEvent(r.HOVER, o) : t.listNodeDataSource.getIsTouchDown() || t.listNodeDataSource.handleEvent(r.HOVER_OVER, o) - })); - Gesture.create(GesturePriority.Low); - TapGesture.create({ count: 2 }); - TapGesture.onAction((e => { - this.listNodeDataSource.expandAndCollapseNode(_.call(this, i.getNodeCurrentNodeId())) - })); - TapGesture.pop(); - Gesture.pop(); - Row.height(i.getNodeHeight()); - Row.padding({ left: i.getNodeLeftPadding() }); - Row.backgroundColor(i.getNodeItem().mainTitleNode && i.getNodeItem() - .inputText && i.getIsShowInputText() ? i.getNodeItem().inputText.editColor : i.getNodeColor()); - Row.border({ - width: i.getNodeBorder().borderWidth, - color: i.getNodeBorder().borderColor, - radius: i.getNodeBorder().borderRadius - }); - Row.bindContextMenu({ builder: this.builder.bind(this) }, ResponseType.RightClick); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().imageNode ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(t); - Row.margin({ right: i.getNodeItem().imageNode.itemRightMargin }); - Row.height(i.getNodeItem().imageNode.itemHeight); - Row.width(i.getNodeItem().imageNode.itemWidth); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(i.getNodeItem().imageNode.source); - Image.objectFit(ImageFit.Contain); - Image.height(i.getNodeItem().imageNode.itemHeight); - Image.width(i.getNodeItem().imageNode.itemWidth); - Image.opacity(i.getIsSelected() || i.getIsHighLight() ? i.getNodeItem() - .imageNode - .noOpacity : i.getNodeItem() - .imageNode - .opacity); - Image.focusable(null == i.getNodeItem().mainTitleNode); - Image.onFocus((() => { - this.listNodeDataSource.handleEvent(r.FOCUS, _.call(this, i.getNodeCurrentNodeId())) - })); - Image.onBlur((() => { - this.listNodeDataSource.handleEvent(r.BLUR, _.call(this, i.getNodeCurrentNodeId())) - })); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.layoutWeight(1); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().mainTitleNode && i.getIsShowTitle() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(i.getNodeItem().mainTitleNode.title); - Text.maxLines(1); - Text.fontSize(i.getNodeItem().mainTitleNode.size); - Text.fontColor(i.getNodeItem().mainTitleNode.color); - Text.margin({ right: i.getNodeItem().mainTitleNode.itemRightMargin }); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.fontWeight(i.getNodeItem().mainTitleNode.weight); - Text.focusable(!0); - Text.onFocus((() => { - this.listNodeDataSource.handleEvent(r.FOCUS, _.call(this, i.getNodeCurrentNodeId())) - })); - Text.onBlur((() => { - this.listNodeDataSource.handleEvent(r.BLUR, _.call(this, i.getNodeCurrentNodeId())) - })); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().mainTitleNode && i.getNodeItem() - .inputText && i.getIsShowInputText() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(i.getNodeItem().inputText.backgroundColor); - Row.borderRadius(i.getNodeItem().inputText.borderRadius); - Row.margin({ right: i.getNodeItem().inputText.itemRightMargin }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - TextInput.create({ text: i.getNodeItem().mainTitleNode.title }); - TextInput.height(i.getNodeItem().inputText.itemHeight); - TextInput.fontSize(i.getNodeItem().inputText.size); - TextInput.fontColor(i.getNodeItem().inputText.color); - TextInput.borderRadius(i.getNodeItem().inputText.borderRadius); - TextInput.backgroundColor(i.getNodeItem().inputText.backgroundColor); - TextInput.enterKeyType(EnterKeyType.Done); - TextInput.padding({ - left: this.textInputPadding.left, - right: this.textInputPadding.right, - top: this.textInputPadding.top, - bottom: this.textInputPadding.bottom - }); - TextInput.onChange((e => { - let t = this; - var o = _.call(t, i.getNodeCurrentNodeId()); - let s = ""; - let a = !1; - let d = !1; - if (t.checkInvalidPattern(e)) { - for (let o = 0;o < e.length; o++) t.checkInvalidPattern(e[o]) || (s += e[o]); - a = !0; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.INVALID_ERROR,!0, o) - } else { - s = e; - a = !1; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.INVALID_ERROR,!1, o) - } - if (t.checkIsAllCN(s) && s.length > this.MAX_CN_LENGTH || !t.checkIsAllCN(s) && s.length > this.MAX_EN_LENGTH) { - s = t.checkIsAllCN(s) ? s.substr(0, this.MAX_CN_LENGTH) : s.substr(0, this.MAX_EN_LENGTH); - d = !0; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.LENGTH_ERROR,!0, o) - } else d = !1; - if (!d && !a) { - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.LENGTH_ERROR,!1, o); - t.listNodeDataSource.setMainTitleNameOnEdit(o, s) - } - })); - TextInput.onSubmit((e => { - let t = this; - var o = _.call(t, i.getNodeCurrentNodeId()); - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.NONE,!1, o); - t.listNodeDataSource.setItemVisibilityOnEdit(o, n.COMMIT_NODE) - })); - t || TextInput.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Blank.create(); - t || Blank.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Blank.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.listNodeDataSource.hasSubtitle(i.getCurrentNodeId()) ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: this.listNodeDataSource.getSubTitlePara().margin.left, - right: i.getNodeItem().imageCollapse ? 0 : this.listNodeDataSource.getSubTitlePara() - .margin - .right - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.listNodeDataSource.getSubtitle(i.getCurrentNodeId())); - Text.fontSize(this.listNodeDataSource.getSubTitlePara().fontSize); - Text.fontColor(this.listNodeDataSource.getSubTitleFontColor(i.getIsHighLight() || i.getIsModify())); - Text.fontWeight(this.listNodeDataSource.getSubTitlePara().fontWeight); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().imageCollapse ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(t); - Row.height(i.getNodeItem().imageCollapse.itemHeight); - Row.width(i.getNodeItem().imageCollapse.itemWidth); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(i.getNodeItem().imageCollapse.collapseSource); - Image.fillColor(i.getNodeItem().imageCollapse.isCollapse ? t : o); - Image.align(Alignment.End); - Image.objectFit(ImageFit.Contain); - Image.height(i.getNodeItem().imageCollapse.itemHeight); - Image.width(i.getNodeItem().imageCollapse.itemWidth); - Image.opacity(i.getIsHighLight() ? i.getNodeItem().imageCollapse.noOpacity : i.getNodeItem() - .imageCollapse - .opacity); - Image.onTouch((e => { - if (e.type === TouchType.Down) { - let e = this; - e.listNodeDataSource.expandAndCollapseNode(_.call(e, i.getNodeCurrentNodeId())); - this.listNodeDataSource.setCurrentFocusNodeId(i.getCurrentNodeId()) - } - e.stopPropagation() - })); - s || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - s || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getCanShowBottomFlagLine() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.listNodeDataSource.getPassIndex() != this.listNodeDataSource.totalCount() - 1 || i.getIsHighLight() ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.height(this.listNodeDataSource.getFlagLine().flagLineHeight); - Divider.color(this.listNodeDataSource.getFlagLine().flagLineColor); - Divider.visibility(Visibility.Visible); - Divider.lineCap(LineCapStyle.Round); - Divider.margin({ left: i.getFlagLineLeftMargin() }); - Divider.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBottomOffset - }); - t || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop() - })) : If.branchId(1); - a || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - ListItem.pop() - }; - const g = (e, d) => { - a(e, d); - this.updateFuncByElmtId.set(e, a); - this.observeComponentCreation(((e, a) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeIsShow() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Column.create(); - Column.focusable(!0); - Column.onMouse((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - if (e.button == MouseButton.Right) { - t.listNodeDataSource.handleEvent(r.MOUSE_BUTTON_RIGHT, _.call(t, i.getNodeCurrentNodeId())); - this.listTreeViewMenu = i.getMenu(); - t.listNodeDataSource.setClickIndex(o); - t.listNodeDataSource.setPopUpInfo(l.HINTS, h.NONE,!1, o); - clearTimeout(i.getNodeItem().mainTitleNode.popUpTimeout) - } - e.stopPropagation() - })); - Column.padding({ top: this.itemPadding.top, bottom: this.itemPadding.bottom }); - Column.bindPopup(i.getPopUpInfo().popUpIsShow, { - builder: { builder: () => { - this.popupForShowTitle.call(this, i.getPopUpInfo().popUpText, i.getPopUpInfo() - .popUpColor, i.getPopUpInfo().popUpTextColor) - } }, - placement: Placement.BottomLeft, - placementOnTop: !1, - popupColor: i.getPopUpInfo().popUpColor, - autoCancel: !0, - enableArrow: i.getPopUpInfo().popUpEnableArrow - }); - t || Column.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.height(this.listNodeDataSource.getFlagLine().flagLineHeight); - Divider.color(this.listNodeDataSource.getFlagLine().flagLineColor); - Divider.visibility(this.listNodeDataSource.getVisibility(i)); - Divider.lineCap(LineCapStyle.Round); - Divider.margin({ left: i.getFlagLineLeftMargin() }); - Divider.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yTopOffset - }); - t || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({}); - Row.opacity(this.listNodeDataSource.getListItemOpacity(i)); - Row.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBasePlateOffset - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create({}); - Row.width("100%"); - Row.onTouch((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - let a = i.getNodeCurrentNodeId(); - t.listNodeDataSource.setClickIndex(o); - if (e.type === TouchType.Down) { - this.touchDownCount++; - this.isMultiPress = this.touchDownCount > this.MAX_TOUCH_DOWN_COUNT; - this.listNodeDataSource.getIsTouchDown() || t.listNodeDataSource.handleEvent(r.TOUCH_DOWN, o) - } - if (e.type === TouchType.Up) { - this.touchDownCount--; - this.touchDownCount < this.MAX_TOUCH_DOWN_COUNT && (this.isMultiPress = !1); - let e = { currentNodeId: a }; - this.appEventBus.emit(s.NODE_CLICK, [e]); - t.listNodeDataSource.handleEvent(r.TOUCH_UP, o) - } - })); - Row.onHover((e => { - let t = this; - let o = _.call(t, i.getNodeCurrentNodeId()); - e ? t.listNodeDataSource.handleEvent(r.HOVER, o) : t.listNodeDataSource.getIsTouchDown() || t.listNodeDataSource.handleEvent(r.HOVER_OVER, o) - })); - Gesture.create(GesturePriority.Low); - TapGesture.create({ count: 2 }); - TapGesture.onAction((e => { - this.listNodeDataSource.expandAndCollapseNode(_.call(this, i.getNodeCurrentNodeId())) - })); - TapGesture.pop(); - Gesture.pop(); - Row.height(i.getNodeHeight()); - Row.padding({ left: i.getNodeLeftPadding() }); - Row.backgroundColor(i.getNodeItem().mainTitleNode && i.getNodeItem() - .inputText && i.getIsShowInputText() ? i.getNodeItem().inputText.editColor : i.getNodeColor()); - Row.border({ - width: i.getNodeBorder().borderWidth, - color: i.getNodeBorder().borderColor, - radius: i.getNodeBorder().borderRadius - }); - Row.bindContextMenu({ builder: this.builder.bind(this) }, ResponseType.RightClick); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().imageNode ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(t); - Row.margin({ right: i.getNodeItem().imageNode.itemRightMargin }); - Row.height(i.getNodeItem().imageNode.itemHeight); - Row.width(i.getNodeItem().imageNode.itemWidth); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(i.getNodeItem().imageNode.source); - Image.objectFit(ImageFit.Contain); - Image.height(i.getNodeItem().imageNode.itemHeight); - Image.width(i.getNodeItem().imageNode.itemWidth); - Image.opacity(i.getIsSelected() || i.getIsHighLight() ? i.getNodeItem() - .imageNode - .noOpacity : i.getNodeItem() - .imageNode - .opacity); - Image.focusable(null == i.getNodeItem().mainTitleNode); - Image.onFocus((() => { - this.listNodeDataSource.handleEvent(r.FOCUS, _.call(this, i.getNodeCurrentNodeId())) - })); - Image.onBlur((() => { - this.listNodeDataSource.handleEvent(r.BLUR, _.call(this, i.getNodeCurrentNodeId())) - })); - t || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - o || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.layoutWeight(1); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().mainTitleNode && i.getIsShowTitle() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(i.getNodeItem().mainTitleNode.title); - Text.maxLines(1); - Text.fontSize(i.getNodeItem().mainTitleNode.size); - Text.fontColor(i.getNodeItem().mainTitleNode.color); - Text.margin({ right: i.getNodeItem().mainTitleNode.itemRightMargin }); - Text.textOverflow({ overflow: TextOverflow.Ellipsis }); - Text.fontWeight(i.getNodeItem().mainTitleNode.weight); - Text.focusable(!0); - Text.onFocus((() => { - this.listNodeDataSource.handleEvent(r.FOCUS, _.call(this, i.getNodeCurrentNodeId())) - })); - Text.onBlur((() => { - this.listNodeDataSource.handleEvent(r.BLUR, _.call(this, i.getNodeCurrentNodeId())) - })); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().mainTitleNode && i.getNodeItem() - .inputText && i.getIsShowInputText() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(i.getNodeItem().inputText.backgroundColor); - Row.borderRadius(i.getNodeItem().inputText.borderRadius); - Row.margin({ right: i.getNodeItem().inputText.itemRightMargin }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - TextInput.create({ text: i.getNodeItem().mainTitleNode.title }); - TextInput.height(i.getNodeItem().inputText.itemHeight); - TextInput.fontSize(i.getNodeItem().inputText.size); - TextInput.fontColor(i.getNodeItem().inputText.color); - TextInput.borderRadius(i.getNodeItem().inputText.borderRadius); - TextInput.backgroundColor(i.getNodeItem().inputText.backgroundColor); - TextInput.enterKeyType(EnterKeyType.Done); - TextInput.padding({ - left: this.textInputPadding.left, - right: this.textInputPadding.right, - top: this.textInputPadding.top, - bottom: this.textInputPadding.bottom - }); - TextInput.onChange((e => { - let t = this; - var o = _.call(t, i.getNodeCurrentNodeId()); - let s = ""; - let a = !1; - let d = !1; - if (t.checkInvalidPattern(e)) { - for (let o = 0;o < e.length; o++) t.checkInvalidPattern(e[o]) || (s += e[o]); - a = !0; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.INVALID_ERROR,!0, o) - } else { - s = e; - a = !1; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.INVALID_ERROR,!1, o) - } - if (t.checkIsAllCN(s) && s.length > this.MAX_CN_LENGTH || !t.checkIsAllCN(s) && s.length > this.MAX_EN_LENGTH) { - s = t.checkIsAllCN(s) ? s.substr(0, this.MAX_CN_LENGTH) : s.substr(0, this.MAX_EN_LENGTH); - d = !0; - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.LENGTH_ERROR,!0, o) - } else d = !1; - if (!d && !a) { - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.LENGTH_ERROR,!1, o); - t.listNodeDataSource.setMainTitleNameOnEdit(o, s) - } - })); - TextInput.onSubmit((e => { - let t = this; - var o = _.call(t, i.getNodeCurrentNodeId()); - t.listNodeDataSource.setPopUpInfo(l.WARNINGS, h.NONE,!1, o); - t.listNodeDataSource.setItemVisibilityOnEdit(o, n.COMMIT_NODE) - })); - t || TextInput.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Blank.create(); - t || Blank.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Blank.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.listNodeDataSource.hasSubtitle(i.getCurrentNodeId()) ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.margin({ - left: this.listNodeDataSource.getSubTitlePara().margin.left, - right: i.getNodeItem().imageCollapse ? 0 : this.listNodeDataSource.getSubTitlePara() - .margin - .right - }); - t || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Text.create(this.listNodeDataSource.getSubtitle(i.getCurrentNodeId())); - Text.fontSize(this.listNodeDataSource.getSubTitlePara().fontSize); - Text.fontColor(this.listNodeDataSource.getSubTitleFontColor(i.getIsHighLight() || i.getIsModify())); - Text.fontWeight(this.listNodeDataSource.getSubTitlePara().fontWeight); - t || Text.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Text.pop(); - Row.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getNodeItem().imageCollapse ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, o) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Row.create(); - Row.backgroundColor(t); - Row.height(i.getNodeItem().imageCollapse.itemHeight); - Row.width(i.getNodeItem().imageCollapse.itemWidth); - o || Row.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - this.observeComponentCreation(((e, s) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Image.create(i.getNodeItem().imageCollapse.collapseSource); - Image.fillColor(i.getNodeItem().imageCollapse.isCollapse ? t : o); - Image.align(Alignment.End); - Image.objectFit(ImageFit.Contain); - Image.height(i.getNodeItem().imageCollapse.itemHeight); - Image.width(i.getNodeItem().imageCollapse.itemWidth); - Image.opacity(i.getIsHighLight() ? i.getNodeItem().imageCollapse.noOpacity : i.getNodeItem() - .imageCollapse - .opacity); - Image.onTouch((e => { - if (e.type === TouchType.Down) { - let e = this; - e.listNodeDataSource.expandAndCollapseNode(_.call(e, i.getNodeCurrentNodeId())); - this.listNodeDataSource.setCurrentFocusNodeId(i.getCurrentNodeId()) - } - e.stopPropagation() - })); - s || Image.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - Row.pop() - })) : If.branchId(1); - s || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Row.pop(); - Row.pop(); - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - i.getCanShowBottomFlagLine() ? this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - If.create(); - this.listNodeDataSource.getPassIndex() != this.listNodeDataSource.totalCount() - 1 || i.getIsHighLight() ? If.branchId(1) : this.ifElseBranchUpdateFunction(0, (() => { - this.observeComponentCreation(((e, t) => { - ViewStackProcessor.StartGetAccessRecordingFor(e); - Divider.create(); - Divider.height(this.listNodeDataSource.getFlagLine().flagLineHeight); - Divider.color(this.listNodeDataSource.getFlagLine().flagLineColor); - Divider.visibility(Visibility.Visible); - Divider.lineCap(LineCapStyle.Round); - Divider.margin({ left: i.getFlagLineLeftMargin() }); - Divider.markAnchor({ - x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBottomOffset - }); - t || Divider.pop(); - ViewStackProcessor.StopGetAccessRecording() - })) - })); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop() - })) : If.branchId(1); - t || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - Column.pop() - })) : If.branchId(1); - a || If.pop(); - ViewStackProcessor.StopGetAccessRecording() - })); - If.pop(); - ListItem.pop() - }; - e ? (() => { - this.observeComponentCreation(a); - ListItem.pop() - })() : d() - } - }; - const i = e => JSON.stringify(e); - LazyForEach.create("1", this, this.listNodeDataSource, e, i); - LazyForEach.pop() - } - List.pop() - } - - rerender() { - this.updateDirtyElements() - } - } - - __decorate([], T.prototype, "popupForShowTitle", null); - __decorate([], T.prototype, "builder", null); - __decorate([], T.prototype, "draggingPopup", null); - e.TreeView = T; - e.TreeController = class { - constructor() { - this.ROOT_NODE_ID = -1; - this.nodeIdList = []; - this.listNodeUtils = new C; - this.listNodeDataSource = new D - } - - getListNodeDataSource() { - return this.listNodeDataSource - } - - getClickNodeChildrenInfo() { - let e = this.listNodeDataSource.getClickNodeId(); - return this.listNodeUtils.getClickNodeChildrenInfo(e) - } - - getChildrenId() { - let e = this.listNodeDataSource.getClickNodeId(); - return this.listNodeUtils.getClickChildId(e) - } - - removeNode() { - let e = this.listNodeDataSource.getClickNodeId(); - let t = this.listNodeUtils.findParentNodeId(e); - let o = this.listNodeUtils.removeNode(e, t, this.listNodeUtils.traverseNodeBF); - this.listNodeDataSource.refreshData(this.listNodeUtils, n.REMOVE_NODE, t, o); - this.nodeIdList.splice(this.nodeIdList.indexOf(e), 1) - } - - modifyNode() { - let e = this.listNodeDataSource.getClickNodeId(); - this.listNodeDataSource.setItemVisibilityOnEdit(e, n.MODIFY_NODE) - } - - add() { - let e = this.listNodeDataSource.getClickNodeId(); - if (e == this.listNodeDataSource.ROOT_NODE_ID || !this.listNodeDataSource.getIsFolder(e)) return; - let t = { - isFolder: !0, - icon: null, - selectedIcon: null, - editIcon: null, - menu: null, - secondaryTitle: "" - }; - t = this.listNodeUtils.getNewNodeInfo(e); - this.nodeIdList.push(this.nodeIdList[this.nodeIdList.length-1] + 1); - let o = this.nodeIdList[this.nodeIdList.length-1]; - this.listNodeUtils.addNewNodeId = o; - this.listNodeUtils.addNode(e, o, { - isFolder: t.isFolder, - icon: t.icon, - selectedIcon: t.selectedIcon, - editIcon: t.editIcon, - primaryTitle: "新建文件夹", - menu: t.menu, - secondaryTitle: t.secondaryTitle - }); - this.listNodeDataSource.refreshData(this.listNodeUtils, n.ADD_NODE, e, [o]) - } - - addNodeParam(e) { - if (null != e.primaryTitle && !this.listNodeUtils.checkMainTitleIsValid(e.primaryTitle)) throw new Error('ListTreeNode[addNode]: The directory name cannot contain the following characters /: *? "< > | or exceeds the maximum length.'); - if (null == e.primaryTitle && null == e.icon) throw new Error("ListTreeNode[addNode]: The icon and directory name cannot be empty at the same time."); - if (e.currentNodeId === this.ROOT_NODE_ID || null === e.currentNodeId) throw new Error("ListTreeNode[addNode]: currentNodeId can not be -1 or null."); - this.nodeIdList.push(e.currentNodeId); - this.listNodeUtils.addNode(e.parentNodeId, e.currentNodeId, e); - return this - } - - addNode(e) { - if (null != e) { - if (null != e.primaryTitle && !this.listNodeUtils.checkMainTitleIsValid(e.primaryTitle)) throw new Error('ListTreeNode[addNode]: The directory name cannot contain the following characters /: *? "< > | or exceeds the maximum length.'); - if (null == e.primaryTitle && null == e.icon) throw new Error("ListTreeNode[addNode]: The icon and directory name cannot be empty at the same time."); - if (e.currentNodeId === this.ROOT_NODE_ID || null === e.currentNodeId) throw new Error("ListTreeNode[addNode]: currentNodeId can not be -1 or null."); - this.nodeIdList.push(e.currentNodeId); - this.listNodeUtils.addNode(e.parentNodeId, e.currentNodeId, e); - return this - } - this.add() - } - - buildDone() { - this.listNodeDataSource.init(this.listNodeUtils); - this.nodeIdList.sort(((e, t) => e - t)) - } - - refreshNode(e, t = "", o = "") { - this.listNodeDataSource.setNodeSubtitlePara(e, t, o) - } - } -}(TreeView || (TreeView = {})); - -export default TreeView \ No newline at end of file diff --git a/source/ArkDialog/ArkDialog.ets b/source/ArkDialog/ArkDialog.ets deleted file mode 100644 index 37c4f0b..0000000 --- a/source/ArkDialog/ArkDialog.ets +++ /dev/null @@ -1,417 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const CHECKBOX_CONTAINER_HEIGHT: number = 48 -const CONTENT_MAX_LINES: number = 2 -const DIVIDER_CONTAINER_WIDTH: number = 16 -const DIVIDER_HEIGHT: number = 24 -const DIVIDER_WIDTH: number = 2 -const LOADING_PROGRESS_WIDTH: number = 40 -const LOADING_PROGRESS_HEIGHT: number = 48 -const ITEM_TEXT_SIZE: number = 14 -export declare type ButtonOptions = { - value: ResourceStr; - action?: () => void; - background?: ResourceColor; - fontColor?: ResourceColor; -} - -@CustomDialog -export struct TipsDialog{ - controller: CustomDialogController - imageRes: Resource - imageSize: SizeOptions = {width: '100%', height: 180} - title: ResourceStr = '' - content?: ResourceStr = '' - checkTips?: ResourceStr = '' - @State isChecked?: boolean = false - primaryButton?: ButtonOptions = {value: ""} - secondaryButton?: ButtonOptions = {value: ""} - - build() { - Column() { - Row() { - Column() { - Image(this.imageRes) - .size(this.imageSize) - .objectFit(ImageFit.Fill) - }.layoutWeight(1) - .clip(true) - }.width('100%') - .padding({ left: 24, right: 24}) - .margin({top: 24}) - Row() { - Text(this.title) - .fontSize($r('sys.float.ohos_id_text_size_headline8')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .textAlign(TextAlign.Center) - }.padding({ left: 24, right: 24 }) - .margin({top: 16}) - if (this.content) { - Row() { - Text(this.content) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .textAlign(TextAlign.Center) - .minFontSize($r('sys.float.ohos_id_text_size_body3')) - }.padding({ left: 24, right: 24, top: 8, bottom: 8 }) - .width('100%') - } - Row() { - Checkbox({ name: 'checkbox', group: 'checkboxGroup' }).select(this.isChecked) - .onChange((checked: boolean) => { - this.isChecked = checked - }) - .margin({ left: 0, right: 8}) - Text(this.checkTips).fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .maxLines(CONTENT_MAX_LINES) - .layoutWeight(1) - .focusOnTouch(true) - .onClick(() => { - this.isChecked = !this.isChecked - }) - }.height(CHECKBOX_CONTAINER_HEIGHT).width('100%').padding({ left: 24, right: 24 , top: 8, bottom: 8 }) - - Row() { - if (this.primaryButton.value) { - Button(this.primaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.primaryButton.background? this.primaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.primaryButton.action) this.primaryButton.action() - this.controller.close() - }) - } - if (this.secondaryButton.value && this.primaryButton.value) { - Column() { - if (!this.secondaryButton.background) { - Divider().width(DIVIDER_WIDTH).height(DIVIDER_HEIGHT).color($r('sys.color.ohos_id_color_list_separator')).vertical(true) - } - }.width(DIVIDER_CONTAINER_WIDTH).alignItems(HorizontalAlign.Center) - } - if (this.secondaryButton.value) { - Button(this.secondaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.secondaryButton.background? this.secondaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.secondaryButton.action) this.secondaryButton.action() - this.controller.close() - }) - } - }.width('100%').padding({ left: 16, right: 16, top: 16, bottom: 16 }) - } - .backgroundBlurStyle(BlurStyle.Thick) - .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) - .margin({ - left: $r('sys.float.ohos_id_dialog_margin_start'), - right: $r('sys.float.ohos_id_dialog_margin_end'), - bottom: $r('sys.float.ohos_id_dialog_margin_bottom') - }) - // 1.backgroundcolor use in blur enable mod mast set this color: colorDialogBgBlur. but now it is not found - .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) - } -} - -@CustomDialog -export struct SelectDialog{ - controller: CustomDialogController - title: ResourceStr = '' - content?: ResourceStr = '' - selectedIndex?: number = -1 - confirm?: ButtonOptions = {value: ""} - radioContent: Array = [] - - build() { - Column() { - Row() { - Text(this.title) - .fontSize($r('sys.float.ohos_id_text_size_dialog_tittle')) - .fontWeight(FontWeight.Medium) - .maxLines(CONTENT_MAX_LINES) - .minFontSize($r('sys.float.ohos_id_text_size_sub_title1')) - .textOverflow({ overflow: TextOverflow.Ellipsis}) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .textAlign(TextAlign.Start) - .width('100%') - }.padding({ left: 24, right: 24, top: 24 }) - .constraintSize({minHeight: 56}) - if (this.content) { - Row() { - Text(this.content) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .maxLines(CONTENT_MAX_LINES) - .textOverflow({ overflow: TextOverflow.Ellipsis}) - .minFontSize($r('sys.float.ohos_id_text_size_body3')) - }.padding({ left: 24, right: 24, top: 8, bottom: 8 }) - .width('100%') - } - List({space: 1}) { - ForEach(this.radioContent, (item: SheetInfo, index?: number) => { - ListItem() { - Column() { - Row() { - Text(item.title) - .fontSize(ITEM_TEXT_SIZE) - .fontWeight(FontWeight.Regular) - .maxLines(CONTENT_MAX_LINES) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .layoutWeight(1) - Radio({ value: 'item.title', group: 'radioGroup'}).checked(this.selectedIndex == index) - .onChange(() => { - item.action && item.action() - this.controller.close() - }) - .onClick(() => { - item.action && item.action() - this.controller.close() - }) - }.constraintSize({minHeight: 48}).clip(false) - .onClick(() => { - item.action && item.action() - this.controller.close() - }) - if (index < this.radioContent.length - 1) { - Divider().color($r('sys.color.ohos_id_color_list_separator')) - } - } - } - }) - }.width('100%').padding({ left: 24, right: 24, top: 8, bottom: 8 }).clip(false) - Row() { - if (this.confirm.value) { - Button(this.confirm.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.confirm.background? this.confirm.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.confirm.fontColor ? this.confirm.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - this.confirm.action && this.confirm.action() - this.controller.close() - }) - } - }.width('100%').padding({ left: 16, right: 16, top: 16, bottom: 16 }) - } - .backgroundBlurStyle(BlurStyle.Thick) - .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) - .margin({ - left: $r('sys.float.ohos_id_dialog_margin_start'), - right: $r('sys.float.ohos_id_dialog_margin_end'), - bottom: $r('sys.float.ohos_id_dialog_margin_bottom') - }) - // 1.backgroundcolor use in blur enable mod mast set this color: colorDialogBgBlur. but now it is not found - .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) - } -} - -@CustomDialog -export struct ConfirmDialog{ - controller: CustomDialogController - title: ResourceStr = '' - content?: ResourceStr = '' - checkTips?: ResourceStr = '' - @State isChecked?: boolean = false - primaryButton?: ButtonOptions = {value: ""} - secondaryButton?: ButtonOptions = {value: ""} - - build() { - Column() { - Row() { - Text(this.title) - .fontSize($r('sys.float.ohos_id_text_size_dialog_tittle')) - .fontWeight(FontWeight.Medium) - .maxLines(CONTENT_MAX_LINES) - .minFontSize($r('sys.float.ohos_id_text_size_sub_title1')) - .textOverflow({ overflow: TextOverflow.Ellipsis}) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .textAlign(TextAlign.Start) - .width('100%') - }.padding({ left: 24, right: 24, top: 24 }) - .constraintSize({minHeight: 56}) - if (this.content) { - Row() { - Text(this.content) - .fontSize($r('sys.float.ohos_id_text_size_body1')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .maxLines(CONTENT_MAX_LINES) - .textOverflow({ overflow: TextOverflow.Ellipsis}) - .minFontSize($r('sys.float.ohos_id_text_size_body3')) - }.padding({ left: 24, right: 24, top: 8, bottom: 8 }) - .width('100%') - .constraintSize({minHeight: 36}) - } - Row() { - Checkbox({ name: 'checkbox', group: 'checkboxGroup' }).select(this.isChecked) - .onChange((checked: boolean) => { - this.isChecked = checked - }) - .margin({ left: 0, right: 8}) - Text(this.checkTips).fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .maxLines(CONTENT_MAX_LINES) - .layoutWeight(1) - .focusOnTouch(true) - .onClick(() => { - this.isChecked = !this.isChecked - }) - }.height(CHECKBOX_CONTAINER_HEIGHT).width('100%').padding({ left: 24, right: 24 , top: 8, bottom: 8 }) - - Row() { - if (this.primaryButton.value) { - Button(this.primaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.primaryButton.background? this.primaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.primaryButton.action) this.primaryButton.action() - this.controller.close() - }) - } - if (this.secondaryButton.value && this.primaryButton.value) { - Column() { - if (!this.secondaryButton.background) { - Divider().width(DIVIDER_WIDTH).height(DIVIDER_HEIGHT).color($r('sys.color.ohos_id_color_list_separator')).vertical(true) - } - }.width(DIVIDER_CONTAINER_WIDTH).alignItems(HorizontalAlign.Center) - } - if (this.secondaryButton.value) { - Button(this.secondaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.secondaryButton.background? this.secondaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.secondaryButton.action) this.secondaryButton.action() - this.controller.close() - }) - } - }.width('100%').padding({ left: 16, right: 16, top: 16, bottom: 16 }) - } - .backgroundBlurStyle(BlurStyle.Thick) - .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) - .margin({ - left: $r('sys.float.ohos_id_dialog_margin_start'), - right: $r('sys.float.ohos_id_dialog_margin_end'), - bottom: $r('sys.float.ohos_id_dialog_margin_bottom') - }) - // 1.backgroundcolor use in blur enable mod mast set this color: colorDialogBgBlur. but now it is not found - .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) - } -} - -@CustomDialog -export struct AlertDialog{ - controller: CustomDialogController - content: ResourceStr = '' - primaryButton?: ButtonOptions = {value: ""} - secondaryButton?: ButtonOptions = {value: ""} - build() { - Column() { - Row() { - Text(this.content) - .fontSize($r('sys.float.ohos_id_text_size_body1')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - }.padding({ left: 24, right: 24, top: 24 }) - Row() { - if (this.primaryButton.value) { - Button(this.primaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.primaryButton.background? this.primaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.primaryButton.fontColor ? this.primaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.primaryButton.action) this.primaryButton.action() - this.controller.close() - }) - } - if (this.secondaryButton.value && this.primaryButton.value) { - Column() { - if (!this.secondaryButton.background) { - Divider().width(DIVIDER_WIDTH).height(DIVIDER_HEIGHT).color($r('sys.color.ohos_id_color_list_separator')).vertical(true) - } - }.width(DIVIDER_CONTAINER_WIDTH).alignItems(HorizontalAlign.Center) - } - if (this.secondaryButton.value) { - Button(this.secondaryButton.value) - .fontSize($r('sys.float.ohos_id_text_size_button1')) - .fontWeight(FontWeight.Medium) - .layoutWeight(1) - .backgroundColor(this.secondaryButton.background? this.secondaryButton.background: $r('sys.color.ohos_id_color_background_transparent')) - .fontColor(this.secondaryButton.fontColor ? this.secondaryButton.fontColor: $r('sys.color.ohos_id_color_text_primary_activated')) - .onClick(() => { - if (this.secondaryButton.action) this.secondaryButton.action() - this.controller.close() - }) - } - }.width('100%').padding({ left: 16, right: 16, top: 16, bottom: 16 }) - } - .backgroundBlurStyle(BlurStyle.Thick) - .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) - .margin({ - left: $r('sys.float.ohos_id_dialog_margin_start'), - right: $r('sys.float.ohos_id_dialog_margin_end'), - bottom: $r('sys.float.ohos_id_dialog_margin_bottom') - }) - // 1.backgroundcolor use in blur enable mod mast set this color: colorDialogBgBlur. but now it is not found - .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) - } -} - -@CustomDialog -export struct LoadingDialog{ - controller: CustomDialogController - content?: ResourceStr = '' - build() { - Column() { - Row() { - Text(this.content) - .fontSize($r('sys.float.ohos_id_text_size_body1')) - .fontWeight(FontWeight.Medium) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .layoutWeight(1) - LoadingProgress().width(LOADING_PROGRESS_WIDTH).height(LOADING_PROGRESS_HEIGHT).margin({ left: 16 }) - }.margin({ left: 24, right: 24, top: 24, bottom: 24 }) - .constraintSize({minHeight: 48}) - } - .backgroundBlurStyle(BlurStyle.Thick) - .borderRadius($r('sys.float.ohos_id_corner_radius_dialog')) - .margin({ - left: $r('sys.float.ohos_id_dialog_margin_start'), - right: $r('sys.float.ohos_id_dialog_margin_end'), - bottom: $r('sys.float.ohos_id_dialog_margin_bottom') - }) - // 1.backgroundcolor use in blur enable mod mast set this color: colorDialogBgBlur. but now it is not found - .backgroundColor($r('sys.color.ohos_id_color_dialog_bg')) - } -} \ No newline at end of file diff --git a/source/ComposeListItem/ComposeListItem.ets b/source/ComposeListItem/ComposeListItem.ets deleted file mode 100644 index 0c6bb53..0000000 --- a/source/ComposeListItem/ComposeListItem.ets +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -export enum IconType { - BADGE = 1, - NORMAL_ICON, - SYSTEM_ICON, - HEAD_SCULPTURE, - APP_ICON, - PREVIEW, - LONGITUDINAL, - VERTICAL -} - -enum ItemHeight { - FIRST_HEIGHT = 48, - SECOND_HEIGHT = 56, - THIRD_HEIGHT = 64, - FOURTH_HEIGHT = 72, - FIFTH_HEIGHT = 96 -} - -export type OperateItem = { - icon?: OperateIcon, - subIcon ?: OperateIcon, - button?: OperateButton; - switch?: OperateCheck; - checkbox?: OperateCheck; - radio?: OperateCheck; - image?: ResourceStr; - text?: ResourceStr; - arrow?: OperateIcon; -} - -export type ContentItem = { - iconStyle?: IconType; - icon?: ResourceStr; - primaryText?: ResourceStr; - secondaryText?: ResourceStr; - description?: ResourceStr; -} - -const LISTITEMCARD_BORDER_HIDDEN = 0; -const TEXT_MAX_LINE = 1; -const LISTITEMCARD_BORDER_SHOWN = 2; -const TEXT_COLUMN_SPACE = 2; -const TEXT_SAFE_MARGIN = 8; -const BADGE_SIZE = 8; -const SMALL_ICON_SIZE = 16; -const SYSTEM_ICON_SIZE = 24; -const SAFE_LIST_PADDING = 32; -const HEADSCULPTURE_SIZE = 40; -const BUTTON_SIZE = 28; -const APP_ICON_SIZE = 64; -const PREVIEW_SIZE = 96; -const LONGITUDINAL_SIZE = 96; -const VERTICAL_SIZE = 96; -const NORMAL_ITEM_ROW_SPACE = 16; -const SPECIAL_ITEM_ROW_SPACE = 0; -const SPECIAL_ICON_SIZE = 0; -const DEFAULT_ROW_SPACE = 0; -const SPECICAL_ROW_SPACE = 4; -const OPERATEITEM_ICONLIKE_SIZE = 24; -const OPERATEITEM_ARROW_WIDTH = 12 -const OPERATEITEM_ICON_CLICKABLE_SIZE = 48; -const OPERATEITEM_IMAGE_SIZE = 48; -const HOVERING_COLOR = '#0d000000'; -const TOUCH_DOWN_COLOR = '#1a000000'; -const ACTIVED_COLOR = '#1a0a59f7'; - -@Component -struct ContentItemStruct { - iconStyle: IconType = null - icon: Resource = null - title: string = null - subtitle: string = null - description: string = null - private iconSizeMap: Map = new Map([ - [IconType.BADGE, BADGE_SIZE], - [IconType.NORMAL_ICON, SMALL_ICON_SIZE], - [IconType.SYSTEM_ICON, SYSTEM_ICON_SIZE], - [IconType.HEAD_SCULPTURE, HEADSCULPTURE_SIZE], - [IconType.APP_ICON, APP_ICON_SIZE], - [IconType.PREVIEW, PREVIEW_SIZE], - [IconType.LONGITUDINAL, LONGITUDINAL_SIZE], - [IconType.VERTICAL, VERTICAL_SIZE] - ]) - private itemHeight: number = ItemHeight.FIRST_HEIGHT - private itemRowSpace: number = NORMAL_ITEM_ROW_SPACE - - aboutToAppear() { - if (this.subtitle == null && this.description == null) { - if (this.icon == null) { - this.itemHeight = ItemHeight.FIRST_HEIGHT - } - else { - this.itemHeight = this.iconStyle <= IconType.HEAD_SCULPTURE ? ItemHeight.SECOND_HEIGHT : ItemHeight.THIRD_HEIGHT - } - } - else if (this.description == null) { - if (this.icon == null || (this.icon != null && this.iconStyle <= IconType.SYSTEM_ICON)) { - this.itemHeight = ItemHeight.THIRD_HEIGHT - } - else { - this.itemHeight = ItemHeight.FOURTH_HEIGHT - } - } - else { - this.itemHeight = ItemHeight.FIFTH_HEIGHT - } - - if (this.icon == null && this.iconStyle == null) { - this.itemRowSpace = SPECIAL_ITEM_ROW_SPACE - } - - if (this.iconSizeMap.get(this.iconStyle) >= this.itemHeight) { - this.itemHeight = this.iconSizeMap.get(this.iconStyle) + SAFE_LIST_PADDING; - } - } - - @Builder - createIcon() { - if (this.icon != null && this.iconStyle != null) { - if (this.iconStyle <= IconType.PREVIEW) { - Image(this.icon) - .objectFit(ImageFit.Contain) - .width(this.iconSizeMap.get(this.iconStyle)) - .height(this.iconSizeMap.get(this.iconStyle)) - .borderRadius($r('sys.float.ohos_id_corner_radius_default_m')) - .focusable(true) - } - else { - Image(this.icon) - .objectFit(ImageFit.Contain) - .constraintSize({ - minWidth: SPECIAL_ICON_SIZE, - maxWidth: this.iconSizeMap.get(this.iconStyle), - minHeight: SPECIAL_ICON_SIZE, - maxHeight: this.iconSizeMap.get(this.iconStyle) - }) - .borderRadius($r('sys.float.ohos_id_corner_radius_default_m')) - .focusable(true) - } - } - } - - @Builder - createText() { - Column({ space: TEXT_COLUMN_SPACE }) { - Text(this.title) - .fontSize($r('sys.float.ohos_id_text_size_body1')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .maxLines(TEXT_MAX_LINE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .focusable(true) - if (this.subtitle != null) { - Text(this.subtitle) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .maxLines(TEXT_MAX_LINE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .focusable(true) - } - if (this.description != null) { - Text(this.description) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .maxLines(TEXT_MAX_LINE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .focusable(true) - } - } - .margin({ - top: TEXT_SAFE_MARGIN, - bottom: TEXT_SAFE_MARGIN - }) - .alignItems(HorizontalAlign.Start) - } - - build() { - Row({ space: this.itemRowSpace }) { - this.createIcon() - this.createText() - } - .height(this.itemHeight) - } -} - -@Component -struct OperateItemStruct { - arrow: OperateIcon = null - icon: OperateIcon = null - subIcon: OperateIcon = null - button: OperateButton = null - switch: OperateCheck = null - checkBox: OperateCheck = null - radio: OperateCheck = null - image: Resource = null - text: string = null - @State switchState: boolean = false - @State radioState: boolean = false - @State checkBoxState: boolean = false - private rowSpace: number = DEFAULT_ROW_SPACE - - aboutToAppear() { - if (this.switch != null) { - this.switchState = this.switch.isCheck - } - if (this.radio != null) { - this.radioState = this.radio.isCheck - } - if (this.checkBox != null) { - this.checkBoxState = this.checkBox.isCheck - } - - if ((this.button == null && this.image == null && this.icon != null && this.text != null) || - (this.button == null && this.image == null && this.icon == null && this.arrow != null && this.text != null)) { - this.rowSpace = SPECICAL_ROW_SPACE - } - } - - @Builder - createButton(text: string) { - Button(text) - .fontSize($r('sys.float.ohos_id_text_size_button3')) - .fontColor($r('sys.color.ohos_id_color_text_primary_activated_transparent')) - .height(BUTTON_SIZE) - .backgroundColor($r('sys.color.ohos_id_color_button_normal')) - .labelStyle({ - maxLines: TEXT_MAX_LINE - }) - } - - @Builder - createIcon(icon: OperateIcon) { - Row() { - Image(icon.value) - .height(OPERATEITEM_ICONLIKE_SIZE) - .width(OPERATEITEM_ICONLIKE_SIZE) - .focusable(true) - .fillColor($r('sys.color.ohos_id_color_primary')) - } - .height(OPERATEITEM_ICON_CLICKABLE_SIZE) - .width(OPERATEITEM_ICON_CLICKABLE_SIZE) - .justifyContent(FlexAlign.Center) - .onClick(icon.action) - } - - @Builder - createImage(image: Resource) { - Image(image) - .height(OPERATEITEM_IMAGE_SIZE) - .width(OPERATEITEM_IMAGE_SIZE) - } - - @Builder - createText(text: string) { - Text(text) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .focusable(true) - } - - @Builder - createArrow(icon: OperateIcon) { - Image(icon.value) - .height(OPERATEITEM_ICONLIKE_SIZE) - .width(OPERATEITEM_ARROW_WIDTH) - .focusable(true) - .fillColor($r('sys.color.ohos_id_color_fourth')) - .onClick(icon.action) - } - - @Builder - createRadio(radio: OperateCheck) { - Radio({ value: null, group: null }) - .checked(this.radioState) - .onChange(radio.onChange) - .height(OPERATEITEM_ICONLIKE_SIZE) - .width(OPERATEITEM_ICONLIKE_SIZE) - } - - @Builder - createCheckBox(checkBox: OperateCheck) { - Checkbox() - .select(this.checkBoxState) - .onChange(checkBox.onChange) - .height(OPERATEITEM_ICONLIKE_SIZE) - .height(OPERATEITEM_ICONLIKE_SIZE) - } - - @Builder - createSwitch(toggleParams: OperateCheck) { - Row() { - Toggle({ type: ToggleType.Switch, isOn: this.switchState }) - .onChange(toggleParams.onChange) - .onClick(() => { - this.switchState = !this.switchState - }) - } - .height(OPERATEITEM_ICON_CLICKABLE_SIZE) - .width(OPERATEITEM_ICON_CLICKABLE_SIZE) - .justifyContent(FlexAlign.Center) - } - - build() { - Row({ - space: this.rowSpace - }) { - if (this.button != null) { - this.createButton(this.button.text) - } - - else if (this.image != null) { - this.createImage(this.image) - } - else if (this.icon != null && this.text != null) { - this.createText(this.text) - this.createIcon(this.icon) - } - else if (this.arrow != null && this.text == null) { - this.createArrow(this.arrow) - } - else if (this.arrow != null && this.text != null) { - this.createText(this.text) - this.createArrow(this.arrow) - } - else if (this.text != null) { - this.createText(this.text) - } - else if (this.radio != null) { - this.createRadio(this.radio) - } - else if (this.checkBox != null) { - this.createCheckBox(this.checkBox) - } - else if (this.switch != null) { - this.createSwitch(this.switch) - } - else if (this.icon != null) { - this.createIcon(this.icon) - if (this.subIcon != null) { - this.createIcon(this.subIcon) - } - } - } - } -} - -/** - * Declare type OperateIcon - * @typedef OperationOption - * @syscap SystemCapability.ArkUI.ArkUI.Full - * @since 10 - */ -export declare type OperateIcon = { - /** - * The content of text or the address of icon. - * @type { ResourceStr }. - * @since 10 - */ - value: ResourceStr, - - /** - * Callback function when operate the icon. - * @type { () => void }. - * @since 10 - */ - action?: () => void -} - -export type OperateButton = { - /** - * The text on the button. - * @type { ResourceStr }. - * @since 10 - */ - text?: string -} - -/** - * Declare type OperateCheck - * @typedef OperationOption - * @syscap SystemCapability.ArkUI.ArkUI.Full - * @since 10 - */ -export declare type OperateCheck = { - /** - * Whether is checked on default. - * @type { ResourceStr }. - * @since 10 - */ - isCheck?: boolean, - - /** - * Callback function when operate the checkbox/switch/radio. - * @type { () => void }. - * @since 10 - */ - onChange?: (value: boolean) => void -} - -@Component -export struct ComposeListItem { - @Prop contentItem: ContentItem = null; - @Prop operateItem: OperateItem = null; - @State frontColor: string = Color.Transparent.toString() - @State borderSize: number = 0; - private isActive: boolean = false - - build() { - Column() { - Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - if (this.contentItem == null) { - ContentItemStruct({ - title: null - }) - } - if (this.contentItem != null) { - ContentItemStruct({ - icon: typeof this.contentItem.icon === 'string' ? null : this.contentItem.icon, - iconStyle: this.contentItem.iconStyle, - title: typeof this.contentItem.primaryText === 'string' ? this.contentItem.primaryText : null, - subtitle: typeof this.contentItem.secondaryText === 'string' ? this.contentItem.secondaryText : null, - description: typeof this.contentItem.description === 'string' ? this.contentItem.description : null - }) - } - if (this.operateItem != null) { - OperateItemStruct({ - icon: this.operateItem.icon, - subIcon: this.operateItem.subIcon, - button: this.operateItem.button, - switch: this.operateItem.switch, - checkBox: this.operateItem.checkbox, - radio: this.operateItem.radio, - image: typeof this.operateItem.image === 'string' ? null : this.operateItem.image, - text: typeof this.operateItem.text === 'string' ? this.operateItem.text : null, - arrow: typeof this.operateItem.arrow === 'string' ? null : this.operateItem.arrow - }) - } - } - .focusable(true) - .border({ - width: this.borderSize, - color: $r('sys.color.ohos_id_color_focused_outline') - }) - .borderRadius($r('sys.float.ohos_id_corner_radius_default_m')) - .backgroundColor(this.frontColor) - .onFocus(() => { - this.borderSize = LISTITEMCARD_BORDER_SHOWN - }) - .onBlur(() => { - this.borderSize = LISTITEMCARD_BORDER_HIDDEN - }) - .onHover((isHover: boolean) => { - this.frontColor = isHover ? HOVERING_COLOR : (this.isActive ? ACTIVED_COLOR : Color.Transparent.toString()) - }) - .onTouch((event: TouchEvent) => { - if (event.type == TouchType.Down) { - this.frontColor = TOUCH_DOWN_COLOR - } - if (event.type == TouchType.Up) { - this.frontColor = this.isActive ? ACTIVED_COLOR : Color.Transparent.toString() - } - }) - .onClick(() => { - this.isActive = !this.isActive - this.frontColor = this.isActive ? ACTIVED_COLOR : Color.Transparent.toString() - }) - } - .padding({ - left: $r('sys.float.ohos_id_default_padding_start'), - right: $r('sys.float.ohos_id_default_padding_end') - }) - } -} \ No newline at end of file diff --git a/source/ComposeTitleBar/ComposeTitleBar.ets b/source/ComposeTitleBar/ComposeTitleBar.ets deleted file mode 100755 index 4e26592..0000000 --- a/source/ComposeTitleBar/ComposeTitleBar.ets +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -import { KeyCode } from '@ohos.multimodalInput.keyCode' - -export declare type ComposeTitleBarMenuItem = { - value: ResourceStr - isEnabled: boolean - action?: () => void -} - -const PUBLIC_MORE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAY' + - 'AAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAA' + - 'AAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuA' + - 'xhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhYWnstMINgYsh+cmfs88BI' + - 'Cydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRdY' + - 'jJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5H' + - 'nhkC9+zAA5YXXy8jBKV5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rm' + - 'j79U74wCszuih+F/ljrSi/+uud8YBGA10rayqrnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70' + - 'zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hkH4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln' + - '/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ/N5Vjd0oTXKp9QcKF' + - 'pD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fN' + - 'Q1BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnX' + - 'fo96DGYBRZD1ycpc/XzbmbvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jp' + - 'yaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jv' + - 'jACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrpVV1fXOOADLA10rq6rrnXEAVga6VlZV13u' + - 'h8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5LP+r7veGQfgd+T' + - '+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtU' + - 'tTXit8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXv' + - 'O9H8f1bfVPQ9FvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC' - -const PUBLIC_BACK = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAY' + - 'AAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAA' + - 'XNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA8VJREFUeNrt3LFLlHEYwPFXz0G' + - 'iIZpEoikkwsFRIiK3gqCigxIC/4Kmhv6OoChouaGoqKCgCKducGh0cDAIamhwiCaHCIeelztpUszee/vl8/nAM3Vd8nufr' + - '+fddVYVAAAAAAAAAAAAAAAAAAAAAABQijFH0KhrMd2Y2ZitmNWYRzHLjkYAB9lUzMOYizv8eS/mZsymoypLxxE0svzvY07' + - 'vcpu5mOmY145LAAdx+U/u4bZzwx+JPjq2cow7glaWf1vXsQkg6/JvPwoggJTLjwDSL/8nRyiAzN/5nzpGAWRd/n7MM0cpg' + - 'IzLvx6z6CjL453gdpZ/IWbDcQrA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD8CMDyIwDLjwAsPwKw/AjA8iMAy48ALD8CsPw' + - 'IwPIjAMuPACw/ArD85A3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2A' + - 'MtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/' + - 'aACw/aQOw/KQNwPLz3xlv6H4mYp5YfrI+AizF9BwnI/AlZi3mbsxy03feaeh+HsQcc60YgSMxMzE3YmZj3sX8LOlHoPoLn' + - 'HedaEE35n5pzwF856dN9SPBpZICmHRNaNnlkgL46nrQsvmSAqhftlx1TWjR4ZICqPVcE1q0XloA96rBa7XQhl5pAWzFXKm' + - '8i8vo9WMeN3VnnQa/sO8xL2POxEy7Toxo+RdjNpu6w1F9HuBqNXi99lw1eKMM9utHzIeYV8MftbccCQAAAAAAsBdt/XLc+s' + - 'Py9W+MmPqL+1iJuVA1+C4gdFr6d77FvK0GH2nb739lPR5zNuZ51eBnQhFAJQIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE' + - 'IAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAI' + - 'EIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE8M8jmBlGgABSRnAqZiXms+MUQNYIDnkUKMu4I/gj6z' + - 'ELMRv7/PsnHKEAMkcw6fgEkDmCNUcngMwRvHFsngRnfWJcL/9tRyaAgxrB+ZijO9ymH7MUs+m4yjLmCBozEXMr5nr1+9We1' + - 'ZgXMXccDwAAAAAAAAAAAAAAAAAAAAAAwO5+AfVgtqHKRnawAAAAAElFTkSuQmCC' - -@Component -export struct ComposeTitleBar { - item: ComposeTitleBarMenuItem - title: ResourceStr - subtitle: ResourceStr - menuItems: Array - - @State titleMaxWidth: number = 0 - @State isItemOnFocus: boolean = false - - private static readonly totalHeight = 56 - private static readonly leftPadding = 12 - private static readonly rightPadding = 12 - private static readonly portraitImageSize = 40 - private static readonly portraitImageLeftPadding = 4 - private static readonly portraitImageRightPadding = 16 - - build() { - Flex({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }) { - Row() { - Navigator() { - ImageMenuItem({ item: { - value: PUBLIC_BACK, - isEnabled: true - } }) - } - if (this.item !== undefined) { - Image(this.item.value) - .width(ComposeTitleBar.portraitImageSize) - .height(ComposeTitleBar.portraitImageSize) - .margin({ - left: $r('sys.float.ohos_id_text_paragraph_margin_xs'), - right: $r('sys.float.ohos_id_text_paragraph_margin_m') - }) - .focusable(this.item.isEnabled) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .onFocus(() => this.isItemOnFocus = true) - .onBlur(() => this.isItemOnFocus = false) - .border(this.isItemOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onClick(() => this.item.isEnabled && this.item.action && this.item.action()) - } - Column() { - if (this.title !== undefined) { - Row() { - Text(this.title) - .fontWeight(FontWeight.Medium) - .fontSize($r('sys.float.ohos_id_text_size_headline8')) - .fontColor($r('sys.color.ohos_id_color_titlebar_text')) - .maxLines(this.subtitle !== undefined ? 1 : 2) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ maxWidth: this.titleMaxWidth }) - } - .justifyContent(FlexAlign.Start) - } - if (this.subtitle !== undefined) { - Row() { - Text(this.subtitle) - .fontSize($r('sys.float.ohos_id_text_size_over_line')) - .fontColor($r('sys.color.ohos_id_color_titlebar_subtitle_text')) - .maxLines(1) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ maxWidth: this.titleMaxWidth }) - } - .justifyContent(FlexAlign.Start) - } - } - .justifyContent(FlexAlign.Start) - .alignItems(HorizontalAlign.Start) - .constraintSize({ maxWidth: this.titleMaxWidth }) - } - .margin({ left: $r('sys.float.ohos_id_default_padding_start') }) - if (this.menuItems !== undefined && this.menuItems.length > 0) { - CollapsibleMenuSection({ menuItems: this.menuItems }) - } - } - .width('100%') - .height(ComposeTitleBar.totalHeight) - .backgroundColor($r('sys.color.ohos_id_color_background')) - .onAreaChange((_oldValue: Area, newValue: Area) => { - let newWidth = Number(newValue.width) - if (this.menuItems !== undefined) { - let menusLength = this.menuItems.length - if (menusLength >= CollapsibleMenuSection.maxCountOfVisibleItems) { - newWidth = newWidth - ImageMenuItem.imageHotZoneWidth * CollapsibleMenuSection.maxCountOfVisibleItems - } else if (menusLength > 0) { - newWidth = newWidth - ImageMenuItem.imageHotZoneWidth * menusLength - } - } - this.titleMaxWidth = newWidth - this.titleMaxWidth -= ComposeTitleBar.leftPadding - this.titleMaxWidth -= ImageMenuItem.imageHotZoneWidth - if (this.item !== undefined) { - this.titleMaxWidth -= ComposeTitleBar.portraitImageLeftPadding - + ComposeTitleBar.portraitImageSize - + ComposeTitleBar.portraitImageRightPadding - } - this.titleMaxWidth -= ComposeTitleBar.rightPadding - }) - } -} - -@Component -struct CollapsibleMenuSection { - menuItems: Array - - static readonly maxCountOfVisibleItems = 3 - private static readonly focusPadding = 4 - private static readonly marginsNum = 2 - - @State isPopupShown: boolean = false - - @State isMoreIconOnFocus: boolean = false - @State isMoreIconOnHover: boolean = false - @State isMoreIconOnClick: boolean = false - - getMoreIconFgColor() { - return this.isMoreIconOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getMoreIconBgColor() { - if (this.isMoreIconOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isMoreIconOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Column() { - Row() { - if (this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems) { - ForEach(this.menuItems, (item) => { - ImageMenuItem({ item: item }) - }) - } else { - ForEach(this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (item) => { - ImageMenuItem({ item: item }) - }) - - Row() { - Image(PUBLIC_MORE) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(true) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getMoreIconFgColor()) - .backgroundColor(this.getMoreIconBgColor()) - .justifyContent(FlexAlign.Center) - .border(this.isMoreIconOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => this.isMoreIconOnFocus = true) - .onBlur(() => this.isMoreIconOnFocus = false) - .onHover((isOn) => this.isMoreIconOnHover = isOn) - .onKeyEvent((event) => { - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === KeyType.Up) { - this.isMoreIconOnClick = false - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === TouchType.Up) { - this.isMoreIconOnClick = false - } - }) - .onClick(() => this.isPopupShown = true) - .bindPopup(this.isPopupShown, { - builder: this.popupBuilder, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: false, - onStateChange: (e) => this.isPopupShown = e.isVisible - }) - } - } - } - .height('100%') - .margin({ right: $r('sys.float.ohos_id_default_padding_end') }) - .justifyContent(FlexAlign.Center) - } - - @Builder popupBuilder() { - Column() { - ForEach(this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), (item, _index?) => { - ImageMenuItem({ item: item }) - }) - } - .width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum) - .margin({ top: CollapsibleMenuSection.focusPadding, bottom: CollapsibleMenuSection.focusPadding }) - } -} - -@Component -struct ImageMenuItem { - item: ComposeTitleBarMenuItem - - static readonly imageSize = 24 - static readonly imageHotZoneWidth = 48 - static readonly buttonBorderRadius = 8 - static readonly focusBorderWidth = 2 - static readonly disabledImageOpacity = 0.4 - - @State isOnFocus: boolean = false - @State isOnHover: boolean = false - @State isOnClick: boolean = false - - getFgColor() { - return this.isOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getBgColor() { - if (this.isOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Row() { - Image(this.item.value) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(this.item.isEnabled) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getFgColor()) - .backgroundColor(this.getBgColor()) - .justifyContent(FlexAlign.Center) - .opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity) - .border(this.isOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - if (!this.item.isEnabled) { - return - } - this.isOnFocus = true - }) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => { - if (!this.item.isEnabled) { - return - } - this.isOnHover = isOn - }) - .onKeyEvent((event) => { - if (!this.item.isEnabled) { - return - } - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (!this.item.isEnabled) { - return - } - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.item.isEnabled && this.item.action && this.item.action()) - } -} - -export default {ComposeTitleBar} \ No newline at end of file diff --git a/source/EditableTitleBar/EditableTitleBar.ets b/source/EditableTitleBar/EditableTitleBar.ets deleted file mode 100755 index fffa70e..0000000 --- a/source/EditableTitleBar/EditableTitleBar.ets +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -import { KeyCode } from '@ohos.multimodalInput.keyCode' - -export enum EditableLeftIconType { - Back, - Cancel -} - -export declare type EditableTitleBarMenuItem = { - value: ResourceStr - isEnabled: boolean - action?: () => void -} - -const PUBLIC_CANCEL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3Gw' + - 'HAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IA' + - 'rs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABKpJREFUeNrt3bFrlHccx/Ff4o2dgkOQ4' + - 'JzR4SYJgksnbYcGOrTQsUPtpE4d/RNcFBeFlg7NUlTSTrXQQgsKGV0KHTs4ODiJSL8PdxaUGJK7pPc893m94TvleZLnnt' + - '/7fcc9z5FrDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnDQrPTuej2u2a87VvKp5XLNT87OlGiSf1lx' + - '6Zz2/q3kkgLdZr7k5lX8/7tZ8XfOCU4OgW887U/n341bN9T6s56menLAfaj464OfdM8iF6XYv+dV7+X+pOX/ANuOatZqH' + - 'Amjti5prh9jurAgGI//mIbbtIvi15u9FHvBqD07a50fYdqtmt+YDrg1a/jd8tuiD7kMA4yNuL4LlkH+WtV/KAEYz7COC4' + - 'cs/69ovXQB7M+4ngmHLP8/aL1UAD+bYVwTDlX/etT8W+nAV6M82uQS6PuP+rg4NV/5vBNDa6za5HLY9xzO5CIYl/9OaT5' + - 'obYf/xrE1uioggQ/6LNf/04QGd6tHJFQH5owMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH' + - '54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDEAH54wMQAfnjAxAB+eMDSI6A/AKIjYD8AoiN' + - 'gPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI2A/AKIj' + - 'YD8AoiNgPwCiI2A/AKIjYD8AoiNgPwCiI1gjfyLY8UpmJnNqbjrc/yO32pOk98rQPIrwWnyCyA5AvILQATkF4AIyC8AEZ' + - 'BfACIgvwBEQH4BiID8J8qqU3BiPJ8O+XuMO8Eng8/2CID85BcA+ckvAPKT35tg8h+n/KP2/3/2SADojfzf1+yKYH7cBxi' + - 'm/N39hWX8RnsBkP9Q8r9BBAKIlV8EAoiXXwQCiJdfBAKIl18EAoiXXwQz4D5A/+Tv2KjZmuPvdfu6T+AVYJDyd3Qfo17G' + - 'b7QXAPkPzTMRCCBVfhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RCCBefhEIIF5+EQggXn4RC' + - 'CBefhEIIF5+EQggXn4RCCBefhEIwD+qFUFuAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0' + - 'FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBbADkF0FsAOQXQWwA5BdBdAD3a8bkj4rgTM2PAmj' + - 'ty5or5I+L4FzNHzV/LfKB9OGb4rfJP0iO49xvL/pB9CGAMfljIxgLoLUR+WMjGAmgtT3yx0awJ4DWdsgfG8HOog+6D1eB' + - 'ntR8WLNB/sFzlKtDnfw3BNDa65rfp2+I3hfBo5rL5B9UBFttcoNzP35qk8vfLxZ9sCs9OnHdG6Kvps8e3TXiVzWPp88Ut' + - '3k1OLr1vFpz6Z31/LbmntMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAO/wLvsR65mx80NAAAAABJRU' + - '5ErkJggg==' - -const PUBLIC_OK = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3' + - 'GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZ' + - 'iS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA+lJREFUeNrt3bFrFgccx+GLlSDi4JDBITiJZHBwEBGRIoqKoIu6iVMd3' + - 'OosCg6W0sm/wEFUDDgpCDoIDoqOKqIoHUrp4CDFoUMRB39HLotoeXMpMXff54EfFE0ivv1+kpQGrmkAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAIBJTHkJGIhddT/V7ajbUPey7l7dlbpPAmCs1tb9Wne2++cvPa07Vfd7nw/+g9eXVT7+m3Wn69Z8421m6w7WXa37KADGN' + - 'v4TE7ztTN36uvtL/UPWeJ0Z+PgXnejzBwmAMYx/8VuhTQIgcfy9CYCxjP9D3TsBkPqZf95XAFLH3372vyAAEsf/T93Ruvd93tn/CWbo4z9' + - 'c96jvBxAAseMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0' + - 'eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eMXANHjFwDR4xcA0eP/HgG0z3f9uVl45uu2ZuGBBu3zXn9rej7mEuMfSgDtA46v1c195ff+rbt' + - 'U94stGv9KWqnHpLaPsXxSt/k//iXsq9vY9HjUJca/2gNoH2e/c4K32yUC4x9bAOvqrjeTP41GBMY/qgC2151Z4vuIwPhXxEo8I2xdz/c7W' + - '3fZXo1/6F8B/q471/N9fSUw/sEH8LEb8hYRGH9iAK3HdafrpkVg/IkBtA8yflt3bBn/3SEC4x9sAK3Xda9EYPypAYjA+OMDEIHxxwcgAuO' + - 'PD0AExh8fgAiMPz4AERh/fAAiMP74AERg/PEBiMD44wMQgfHHByAC448PQATGHx+ACIw/PgARGH98AMkRGL8AYiMwfgHERmD8AoiNwPgFE' + - 'BuB8QsgNgLjF0BsBMYvgNgIjF8AsREYvwBiIzB+AcRGYPwCiI3A+AUQG4HxCyA2AuMXQGwExi+A2AiMXwCxERi/AGIjMH4BjDaCTXUP6j5' + - '9423aJ2PeMH4BjDWCHd24n9f9+cXvHa+7U7fb+Fe/qeC/ezvU+e5bleX40A11pm6u+xapMX5fARK+Eix+u7O1brbp/1Bw4xfAoCP4Pxi/A' + - 'GIjMH4BxEZg/AKIjcD4BRAbgfELIDYC4xdAbATGL4DYCIxfAIOL4EXdkbrpZX6sd3WH6p56WQUwJG/qbtX92Cz8EFwfD+sO1L31cq4uU16' + - 'CibU/M3Sy7nzdlgnf51ndxbrbXj4BjCmEPXX76/Y2Cz8DNNP9+l91f3Sf8e92AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAzKZwK1uX4kZ6mnAAAAAElFTkSuQmCC' - -const PUBLIC_BACK = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAY' + - 'AAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAA' + - 'XNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA8VJREFUeNrt3LFLlHEYwPFXz0G' + - 'iIZpEoikkwsFRIiK3gqCigxIC/4Kmhv6OoChouaGoqKCgCKducGh0cDAIamhwiCaHCIeelztpUszee/vl8/nAM3Vd8nufr' + - '+fddVYVAAAAAAAAAAAAAAAAAAAAAABQijFH0KhrMd2Y2ZitmNWYRzHLjkYAB9lUzMOYizv8eS/mZsymoypLxxE0svzvY07' + - 'vcpu5mOmY145LAAdx+U/u4bZzwx+JPjq2cow7glaWf1vXsQkg6/JvPwoggJTLjwDSL/8nRyiAzN/5nzpGAWRd/n7MM0cpg' + - 'IzLvx6z6CjL453gdpZ/IWbDcQrA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD8CMDyIwDLjwAsPwKw/AjA8iMAy48ALD8CsPw' + - 'IwPIjAMuPACw/ArD85A3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2A' + - 'MtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/' + - 'aACw/aQOw/KQNwPLz3xlv6H4mYp5YfrI+AizF9BwnI/AlZi3mbsxy03feaeh+HsQcc60YgSMxMzE3YmZj3sX8LOlHoPoLn' + - 'HedaEE35n5pzwF856dN9SPBpZICmHRNaNnlkgL46nrQsvmSAqhftlx1TWjR4ZICqPVcE1q0XloA96rBa7XQhl5pAWzFXKm' + - '8i8vo9WMeN3VnnQa/sO8xL2POxEy7Toxo+RdjNpu6w1F9HuBqNXi99lw1eKMM9utHzIeYV8MftbccCQAAAAAAsBdt/XLc+s' + - 'Py9W+MmPqL+1iJuVA1+C4gdFr6d77FvK0GH2nb739lPR5zNuZ51eBnQhFAJQIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE' + - 'IAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAI' + - 'EIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE8M8jmBlGgABSRnAqZiXms+MUQNYIDnkUKMu4I/gj6z' + - 'ELMRv7/PsnHKEAMkcw6fgEkDmCNUcngMwRvHFsngRnfWJcL/9tRyaAgxrB+ZijO9ymH7MUs+m4yjLmCBozEXMr5nr1+9We1' + - 'ZgXMXccDwAAAAAAAAAAAAAAAAAAAAAAwO5+AfVgtqHKRnawAAAAAElFTkSuQmCC' - -@Component -export struct EditableTitleBar { - leftIconStyle: EditableLeftIconType - title: ResourceStr - menuItems: Array - onSave?: () => void - onCancel?: () => void - - @State titleMaxWidth: number = 0 - - static readonly maxCountOfExtraItems = 2 - private static readonly totalHeight = 56 - private static readonly leftPadding = 12 - private static readonly rightPadding = 12 - private static readonly titlePadding = 16 - - build() { - Flex({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }) { - Row() { - if (this.leftIconStyle == EditableLeftIconType.Back) { - Navigator() { - ImageMenuItem({ item: { - value: PUBLIC_BACK, - isEnabled: true - } }) - } - } else { - ImageMenuItem({ item: { - value: PUBLIC_CANCEL, - isEnabled: true, - action: () => this.onCancel && this.onCancel() - } }) - } - - Column() { - Text(this.title) - .fontWeight(FontWeight.Medium) - .fontSize($r('sys.float.ohos_id_text_size_headline8')) - .fontColor($r('sys.color.ohos_id_color_titlebar_text')) - .maxLines(1) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ maxWidth: this.titleMaxWidth }) - } - .justifyContent(FlexAlign.Start) - .alignItems(HorizontalAlign.Start) - .constraintSize({ maxWidth: this.titleMaxWidth }) - } - .margin({ left: $r('sys.float.ohos_id_default_padding_start') }) - - EditableTitleBarMenuSection({ - menuItems: this.menuItems, - onSave: this.onSave - }) - } - .width('100%') - .height(EditableTitleBar.totalHeight) - .backgroundColor($r('sys.color.ohos_id_color_background')) - .onAreaChange((_oldValue: Area, newValue: Area) => { - let nValue = Number(newValue.width) - nValue = nValue - EditableTitleBar.leftPadding - EditableTitleBar.rightPadding - EditableTitleBar.titlePadding - nValue = nValue - ImageMenuItem.imageHotZoneWidth - ImageMenuItem.imageHotZoneWidth - if (this.menuItems === undefined) { - this.titleMaxWidth = nValue - return - } - if (this.menuItems.length > EditableTitleBar.maxCountOfExtraItems) { - this.titleMaxWidth = nValue - ImageMenuItem.imageHotZoneWidth * EditableTitleBar.maxCountOfExtraItems - } else { - this.titleMaxWidth = nValue - ImageMenuItem.imageHotZoneWidth * this.menuItems.length - } - }) - } -} - -@Component -struct EditableTitleBarMenuSection { - menuItems: Array - onSave?: () => void - - build() { - Column() { - Row() { - if (this.menuItems !== undefined && this.menuItems.length > 0) { - ForEach(this.menuItems.slice(0, EditableTitleBar.maxCountOfExtraItems), (item: EditableTitleBarMenuItem) => { - ImageMenuItem({ item: item }) - }) - } - ImageMenuItem({ item: { - value: PUBLIC_OK, - isEnabled: true, - action: () => this.onSave && this.onSave() - } }) - } - } - .margin({ - left: $r('sys.float.ohos_id_elements_margin_vertical_l'), - right: $r('sys.float.ohos_id_default_padding_end') - }) - .justifyContent(FlexAlign.Center) - } -} - -@Component -struct ImageMenuItem { - item: EditableTitleBarMenuItem - - static readonly imageSize = 24 - static readonly imageHotZoneWidth = 48 - static readonly buttonBorderRadius = 8 - static readonly focusBorderWidth = 2 - static readonly disabledImageOpacity = 0.4 - - @State isOnFocus: boolean = false - @State isOnHover: boolean = false - @State isOnClick: boolean = false - - getFgColor() { - return this.isOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getBgColor() { - if (this.isOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Row() { - Image(this.item.value) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(this.item.isEnabled) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getFgColor()) - .backgroundColor(this.getBgColor()) - .justifyContent(FlexAlign.Center) - .opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity) - .border(this.isOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - if (!this.item.isEnabled) { - return - } - this.isOnFocus = true - }) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => { - if (!this.item.isEnabled) { - return - } - this.isOnHover = isOn - }) - .onKeyEvent((event) => { - if (!this.item.isEnabled) { - return - } - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (!this.item.isEnabled) { - return - } - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.item.isEnabled && this.item.action && this.item.action()) - } -} - -export default { EditableLeftIconType, EditableTitleBar } \ No newline at end of file diff --git a/source/Filter/Filter.ets b/source/Filter/Filter.ets deleted file mode 100644 index eaddb3b..0000000 --- a/source/Filter/Filter.ets +++ /dev/null @@ -1,1025 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -import measure from '@ohos.measure' -import curves from '@ohos.curves' - -const TEXT_HOT_AREA_WIDTH: number = 8 -const LIST_ROW_HEIGHT: number = 40 -const ARROW_IMG_SIZE: number = 24 -const MULTI_LINE_PADDING: number = 24 -const BAR_ANIMATION_DURATION: number = 150 -const ARROW_ANIMATION_DURATION: number = 200 -const ANIMATION_DURATION_250: number = 250 -const ANIMATION_DURATION_100: number = 100 -const FILTER_TOP_PADDING: number = 8 -const SEPARATOR_HEIGHT: number = 16 -const SEPARATOR_WIDTH: number = 1 -const FLOAT_OPACITY: number = 0.95 -const FILTER_FONT_SIZE = 12 -const FOCUS_BORDER_WIDTH = 2 -const ARROW_SHOW_DELAY = 300 -const PERCENT_100: Length = '100%' -const SHARP_CUBIC_BEZIER = curves.cubicBezierCurve(0.33, 0, 0.67, 1) -const INTER_POLATING_SPRING = curves.interpolatingSpring(0, 1, 328, 34) -const FRICTION_CUBIC_BEZIER = curves.cubicBezierCurve(0.2, 0, 0.2, 1) -const TRANS_COLOR: string = '#00FFFFFF' - -export enum FilterType { - MULTI_LINE_FILTER, - LIST_FILTER -} - -export declare type FilterParams = { - name: ResourceStr, - options: Array -} - -export declare type FilterResult = { - name: ResourceStr, - index: number, - value: ResourceStr -} - -@Observed -class FontWeightArray extends Array { -} - -@Observed -class ResourceArray extends Array { -} - -@Observed -class BooleanArray extends Array { -} - -@Observed -export class ObservedBoolean { - public value: boolean - - constructor(value: boolean) { - this.value = value - } -} - -@Observed -class ObservedNumber { - public value: number - - constructor(value: number) { - this.value = value - } -} - -@Component -struct ListFilterRow { - @ObjectLink colorRow: ResourceArray - @ObjectLink fontWeightRow: FontWeightArray - @ObjectLink backgroundColorRow: ResourceArray - @ObjectLink isBackgroundHoverRow: BooleanArray - filterRow: FilterParams - onItemClick: (colIndex: number) => void - - build() { - List() { - ForEach(this.filterRow.options, (option, colIndex?: number) => { - ListItem() { - Text(option.toString()) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - .fontColor(this.colorRow[colIndex]) - .fontWeight(this.fontWeightRow[colIndex]) - .focusable(true) - } - .height(PERCENT_100) - .onClick(() => { - this.onItemClick(colIndex) - }) - .focusable(true) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .padding({ - left: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH, - right: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH - }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .padding({ left: TEXT_HOT_AREA_WIDTH, right: TEXT_HOT_AREA_WIDTH }) - } - }) - .backgroundColor(this.isBackgroundHoverRow[colIndex] ? this.backgroundColorRow[colIndex] : TRANS_COLOR) - .onHover((isHover: boolean) => { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - if (isHover) { - this.backgroundColorRow[colIndex] = $r('sys.color.ohos_id_color_hover') - this.isBackgroundHoverRow[colIndex] = true - } else { - this.isBackgroundHoverRow[colIndex] = false - } - }) - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.backgroundColorRow[colIndex] = $r('sys.color.ohos_id_color_click_effect') - this.isBackgroundHoverRow[colIndex] = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isBackgroundHoverRow[colIndex] = false - }) - } - }) - }) - } - .listDirection(Axis.Horizontal) - .margin({ left: -TEXT_HOT_AREA_WIDTH * 2 }) - .scrollBar(BarState.Off) - .width(PERCENT_100) - .height(LIST_ROW_HEIGHT) - .align(Alignment.Start) - } -} - -@Component -struct MultiFilterRow { - @ObjectLink colorRow: ResourceArray - @ObjectLink fontWeightRow: FontWeightArray - @ObjectLink backgroundColorRow: ResourceArray - @ObjectLink isBackgroundHoverRow: BooleanArray - @ObjectLink twoLineModeItemNumRow: ObservedNumber - @ObjectLink twoLineModeItemNumRecordRow: ObservedNumber - @ObjectLink arrowShowStateRow: ObservedBoolean - @ObjectLink isArrowIconDown: ObservedBoolean - filterRow: FilterParams = null - onItemClick: (colIndex: number) => void - @State arrowBgColorRow: Resource = $r('sys.color.ohos_id_color_hover') - @State isArrowBgHoverRow: boolean = false - private filterColumnWidth: number = 0 - - private calcMultiFilterRowItemNum() { - var curLineRetainWidth = this.filterColumnWidth - vp2px(MULTI_LINE_PADDING) - var curLineSum = 0 - var curLine = 1 - for (var i = 0; i < this.filterRow.options.length; i++) { - let option = this.filterRow.options[i] - let itemWidth = measure.measureText({ - textContent: option, - fontSize: FILTER_FONT_SIZE - }) - if (i === 0) { - continue - } else { - itemWidth += vp2px(TEXT_HOT_AREA_WIDTH * 2) - } - if (curLineRetainWidth - itemWidth > 0) { - curLineRetainWidth -= itemWidth - curLineSum += 1 - } else { - if (curLineSum === 0) { - curLineSum++ - curLineRetainWidth = 0 - } - if (curLine === 1) { - curLine += 1 - curLineRetainWidth = this.filterColumnWidth - vp2px(ARROW_IMG_SIZE) - vp2px(MULTI_LINE_PADDING) - i-- - } else { - break - } - } - } - return curLineSum - } - - @Builder DownAndUpArrow() { - Row() { - Image(this.isArrowIconDown.value ? $r('sys.media.ohos_ic_public_arrow_down') : $r('sys.media.ohos_ic_public_arrow_up')) - .width(ARROW_IMG_SIZE) - .height(LIST_ROW_HEIGHT) - .fillColor($r('sys.color.ohos_id_color_tertiary')) - .focusable(true) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .width(ARROW_IMG_SIZE + FOCUS_BORDER_WIDTH * 2) - .offset({ x: -FOCUS_BORDER_WIDTH }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .width(ARROW_IMG_SIZE) - .offset({ x: 0 }) - } - }) - } - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked') - }) - .height(LIST_ROW_HEIGHT) - .width(ARROW_IMG_SIZE) - .backgroundColor(this.isArrowBgHoverRow ? this.arrowBgColorRow : TRANS_COLOR) - .focusable(true) - .visibility(this.arrowShowStateRow.value ? Visibility.Visible : Visibility.Hidden) - .onHover((isHover: boolean) => { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - if (isHover) { - this.arrowBgColorRow = $r('sys.color.ohos_id_color_hover') - this.isArrowBgHoverRow = true - } else { - this.isArrowBgHoverRow = false - } - }) - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.arrowBgColorRow = $r('sys.color.ohos_id_color_click_effect') - this.isArrowBgHoverRow = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isArrowBgHoverRow = false - }) - } - }) - .onClick(() => { - if (this.isArrowIconDown.value) { - this.isArrowIconDown.value = false - this.arrowShowStateRow.value = false - animateTo({ - curve: INTER_POLATING_SPRING, - }, () => { - this.twoLineModeItemNumRow.value = this.filterRow.options.length - }) - - animateTo({ - delay: 300, - duration: ARROW_ANIMATION_DURATION, - curve: SHARP_CUBIC_BEZIER - }, () => { - this.arrowShowStateRow.value = true - }) - } else { - this.isArrowIconDown.value = true - this.arrowShowStateRow.value = false - - animateTo({ - curve: INTER_POLATING_SPRING, - }, () => { - this.twoLineModeItemNumRow.value = this.twoLineModeItemNumRecordRow.value - }) - animateTo({ - delay: ARROW_SHOW_DELAY, - duration: ARROW_ANIMATION_DURATION, - curve: SHARP_CUBIC_BEZIER - }, () => { - this.arrowShowStateRow.value = true - }) - } - - }) - - } - - build() { - Row() { - if (this.filterRow.options && this.filterRow.options.length > 0) { - Text(this.filterRow.options[0].toString()) - .height(LIST_ROW_HEIGHT) - .width(px2vp(measure.measureText({ - textContent: this.filterRow.options[0].toString(), - fontSize: FILTER_FONT_SIZE - })) + (TEXT_HOT_AREA_WIDTH * 2)) - .margin({ left: -TEXT_HOT_AREA_WIDTH }) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - .fontColor(this.colorRow[0]) - .fontWeight(this.fontWeightRow[0]) - .backgroundColor(this.isBackgroundHoverRow[0] ? this.backgroundColorRow[0] : TRANS_COLOR) - .onClick(() => { - this.onItemClick(0) - }) - .focusable(true) - .onHover((isHover: boolean) => { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - if (isHover) { - this.backgroundColorRow[0] = $r('sys.color.ohos_id_color_hover') - this.isBackgroundHoverRow[0] = true - } else { - this.isBackgroundHoverRow[0] = false - } - }) - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.backgroundColorRow[0] = $r('sys.color.ohos_id_color_click_effect') - this.isBackgroundHoverRow[0] = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isBackgroundHoverRow[0] = false - }) - } - }) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .padding({ - left: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH, - right: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH - }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .padding({ left: TEXT_HOT_AREA_WIDTH, right: TEXT_HOT_AREA_WIDTH }) - } - }) - } - Row() { - Flex({ direction: FlexDirection.Row, wrap: FlexWrap.Wrap }) { - ForEach(this.filterRow.options.slice(0, this.twoLineModeItemNumRow.value + 1), (option, colIndex?: number) => { - if (colIndex > 0) { - Text(option.toString()) - .transition(TransitionEffect.OPACITY) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - .height(LIST_ROW_HEIGHT) - .fontColor(this.colorRow[colIndex]) - .fontWeight(this.fontWeightRow[colIndex]) - .backgroundColor(this.isBackgroundHoverRow[colIndex] ? this.backgroundColorRow[colIndex] : TRANS_COLOR) - .onClick(() => { - this.onItemClick(colIndex) - }) - .onHover((isHover: boolean) => { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - if (isHover) { - this.backgroundColorRow[colIndex] = $r('sys.color.ohos_id_color_hover') - this.isBackgroundHoverRow[colIndex] = true - } else { - this.isBackgroundHoverRow[colIndex] = false - } - }) - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.backgroundColorRow[colIndex] = $r('sys.color.ohos_id_color_click_effect') - this.isBackgroundHoverRow[colIndex] = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isBackgroundHoverRow[colIndex] = false - }) - } - }) - .focusable(true) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .padding({ - left: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH, - right: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH - }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .padding({ left: TEXT_HOT_AREA_WIDTH, right: TEXT_HOT_AREA_WIDTH }) - } - }) - } - }) - this.DownAndUpArrow() - }.alignSelf(ItemAlign.Stretch) - }.width(PERCENT_100) - .padding({ right: $r('sys.float.ohos_id_max_padding_end') }) - .onAreaChange((_oldValue: Area, newValue: Area) => { - this.filterColumnWidth = vp2px(parseInt(newValue.width.toString(), 0)) - if (this.twoLineModeItemNumRow.value === 0) { - var curLineSum = this.calcMultiFilterRowItemNum() - this.twoLineModeItemNumRow.value = curLineSum - this.twoLineModeItemNumRecordRow.value = curLineSum - if (curLineSum < this.filterRow.options.length - 1) { - this.arrowShowStateRow.value = true - } else { - this.arrowShowStateRow.value = false - } - } - }) - - }.width(PERCENT_100) - .alignItems(VerticalAlign.Top) - .padding({ left: $r('sys.float.ohos_id_max_padding_start'), right: $r('sys.float.ohos_id_max_padding_end') }) - } -} - - -@Component -export struct Filter { - @BuilderParam container: () => void - @Prop multiFilters: Array = [] - @Prop additionFilters: FilterParams = null - onFilterChanged: (filterResults: Array) => void = null - @Prop filterType: FilterType = FilterType.LIST_FILTER - private selectedFilters: Array = null - @State private colorArr: Array = null - @State private fontWeightArr: Array = null - @State private backgroundColorArr: Array = null - @State private isBackgroundHover: Array = null - @State private floatArrowBgColor: Resource = null - @State private isFloatArrowBgHover: boolean = false - @State private isArrowIconDownArr: Array = null - @State private additionColorArr: Array = null - @State private additionFontWeightArr: Array = null - @State private additionBackgroundColorArr: Array = null - @State private isAdditionBackgroundHover: Array = null - @State colorRefresh: boolean = false - @State isFloatBarShow: boolean = false - isFloatBarShowWithoutAnimation: boolean = false - @State isFloatShowAllFilter: boolean = false - isFloatShowAllFilterWithoutAnimation: boolean = false - @State floatFilterPosition: number = 0 - @State floatFilterBarHeight: number = 0 - @State floatFilterBarPosition: number = 0 - filterDynamicHeight: number = 0 - @State twoLineModeItemNum: Array = null - @State twoLineModeItemNumRecord: Array = null - @State downArrowShowState: Array = null - - textColor(rowIndex: number, colIndex: number) { - if (this.selectedFilters.length > rowIndex && this.selectedFilters[rowIndex].index === colIndex) { - return $r('sys.color.ohos_id_color_text_primary_activated') - } - return $r('sys.color.ohos_id_color_text_primary') - } - - aboutToAppear() { - this.initParams() - } - - private filterItemClick(rowIndex: number, colIndex: number) { - let selectedFilterValue = this.multiFilters[rowIndex].options[colIndex] - if (colIndex != this.selectedFilters[rowIndex].index) { - this.colorArr[rowIndex][colIndex] = $r('sys.color.ohos_id_color_text_primary_activated') - this.colorArr[rowIndex][this.selectedFilters[rowIndex].index] = $r('sys.color.ohos_id_color_text_primary') - this.fontWeightArr[rowIndex][colIndex] = FontWeight.Medium - this.fontWeightArr[rowIndex][this.selectedFilters[rowIndex].index] = FontWeight.Regular - this.colorRefresh = !this.colorRefresh - this.selectedFilters[rowIndex].value = selectedFilterValue - this.selectedFilters[rowIndex].index = colIndex - this.onFilterChanged && this.onFilterChanged(this.selectedFilters); - } - } - - private initParams() { - if (!this.selectedFilters) { - this.selectedFilters = [] - for (let filter of this.multiFilters) { - var result: FilterResult = { name: filter.name, index: -1, value: null } - if (filter.options.length > 0) { - result.index = 0 - result.value = filter.options[0] - } - this.selectedFilters.push(result) - } - if (this.additionFilters && this.additionFilters.name) { - var result: FilterResult = { name: this.additionFilters.name, index: -1, value: null } - this.selectedFilters.push(result) - } - } - if (!this.colorArr) { - this.colorArr = [] - this.backgroundColorArr = [] - this.isBackgroundHover = [] - this.fontWeightArr = [] - this.isArrowIconDownArr = [] - this.floatArrowBgColor = $r('sys.color.ohos_id_color_hover') - for (let filter of this.multiFilters) { - var colorRow = new ResourceArray() - var fontWeightRow = new FontWeightArray() - var backgroundColorRow = new ResourceArray() - var isBackgroundHoverRow = new BooleanArray() - for (let index of filter.options.keys()) { - if (index === 0) { - colorRow.push($r('sys.color.ohos_id_color_text_primary_activated')) - fontWeightRow.push(FontWeight.Medium) - } else { - colorRow.push($r('sys.color.ohos_id_color_text_primary')) - fontWeightRow.push(FontWeight.Regular) - } - backgroundColorRow.push($r('sys.color.ohos_id_color_hover')) - } - this.colorArr.push(colorRow) - this.fontWeightArr.push(fontWeightRow) - this.backgroundColorArr.push(backgroundColorRow) - this.isBackgroundHover.push(isBackgroundHoverRow) - this.isArrowIconDownArr.push(new ObservedBoolean(true)) - } - } - if (this.additionFilters && this.additionFilters.options) { - this.additionColorArr = [] - this.additionFontWeightArr = [] - this.additionBackgroundColorArr = [] - this.isAdditionBackgroundHover = [] - for (let i = 0; i < this.additionFilters.options.length; i++) { - this.additionColorArr.push($r('sys.color.ohos_id_color_text_primary')) - this.additionFontWeightArr.push(FontWeight.Regular) - this.additionBackgroundColorArr.push($r('sys.color.ohos_id_color_hover')) - this.isAdditionBackgroundHover.push(false) - } - } - if (!this.twoLineModeItemNum) { - this.twoLineModeItemNum = [] - this.twoLineModeItemNumRecord = [] - this.downArrowShowState = [] - for (let i = 0; i < this.multiFilters.length; i++) { - this.twoLineModeItemNum.push(new ObservedNumber(0)) - this.twoLineModeItemNumRecord.push(new ObservedNumber(0)) - this.downArrowShowState.push(new ObservedBoolean(false)) - } - } - } - - @Builder ListFilter() { - Column() { - ForEach(this.multiFilters, (filter: FilterParams, rowIndex?: number) => { - ListFilterRow({ - colorRow: this.colorArr[rowIndex], - fontWeightRow: this.fontWeightArr[rowIndex], - backgroundColorRow: this.backgroundColorArr[rowIndex], - isBackgroundHoverRow: this.isBackgroundHover[rowIndex], - filterRow: filter, - onItemClick: (colIndex: number) => { - this.filterItemClick(rowIndex, colIndex); - } - }) - }) - }.width(PERCENT_100) - .align(Alignment.Start) - .padding({ left: $r('sys.float.ohos_id_max_padding_start') }) - .onAreaChange((_oldValue: Area, newValue: Area) => { - if (!this.isFloatShowAllFilterWithoutAnimation && !this.isFloatBarShowWithoutAnimation) { - if (this.additionFilters != null) { - this.filterDynamicHeight = parseInt(newValue.height.toString(), 0) + LIST_ROW_HEIGHT + FILTER_TOP_PADDING - } else { - this.filterDynamicHeight = parseInt(newValue.height.toString(), 0) + FILTER_TOP_PADDING - } - this.floatFilterPosition = -this.filterDynamicHeight - } - }) - } - - @Builder MultiLineFilter() { - Column() { - ForEach(this.multiFilters, (filterItem: FilterParams, rowIndex?: number) => { - MultiFilterRow({ - colorRow: this.colorArr[rowIndex], - fontWeightRow: this.fontWeightArr[rowIndex], - backgroundColorRow: this.backgroundColorArr[rowIndex], - isBackgroundHoverRow: this.isBackgroundHover[rowIndex], - arrowShowStateRow: this.downArrowShowState[rowIndex], - twoLineModeItemNumRow: this.twoLineModeItemNum[rowIndex], - twoLineModeItemNumRecordRow: this.twoLineModeItemNumRecord[rowIndex], - isArrowIconDown: this.isArrowIconDownArr[rowIndex], - filterRow: filterItem, - onItemClick: (colIndex: number) => { - this.filterItemClick(rowIndex, colIndex); - } - }) - }) - }.width(PERCENT_100) - .onAreaChange((_oldValue: Area, newValue: Area) => { - if (this.additionFilters != null) { - this.filterDynamicHeight = parseInt(newValue.height.toString(), 0) + LIST_ROW_HEIGHT + FILTER_TOP_PADDING - } else { - this.filterDynamicHeight = parseInt(newValue.height.toString(), 0) + FILTER_TOP_PADDING - } - if (!this.isFloatBarShowWithoutAnimation && !this.isFloatShowAllFilterWithoutAnimation) { - this.floatFilterPosition = -this.filterDynamicHeight - } - }) - } - - private additionItemClick(index: number) { - let additionRowIndex = this.multiFilters.length - if (this.selectedFilters[additionRowIndex].index != index) { - if (this.selectedFilters[additionRowIndex].index === -1) { - this.additionColorArr[index] = $r('sys.color.ohos_id_color_text_primary_activated') - this.additionFontWeightArr[index] = FontWeight.Medium - this.selectedFilters[additionRowIndex].value = this.additionFilters.options[index] - this.selectedFilters[additionRowIndex].index = index - } else { - let lastIndex = this.selectedFilters[additionRowIndex].index - this.additionColorArr[lastIndex] = $r('sys.color.ohos_id_color_text_primary') - this.additionColorArr[index] = $r('sys.color.ohos_id_color_text_primary_activated') - this.additionFontWeightArr[lastIndex] = FontWeight.Regular - this.additionFontWeightArr[index] = FontWeight.Medium - this.selectedFilters[additionRowIndex].value = this.additionFilters.options[index] - this.selectedFilters[additionRowIndex].index = index - } - } else { - this.additionColorArr[index] = $r('sys.color.ohos_id_color_text_primary') - this.additionFontWeightArr[index] = FontWeight.Regular - this.selectedFilters[additionRowIndex].value = null - this.selectedFilters[additionRowIndex].index = -1 - } - this.onFilterChanged && this.onFilterChanged(this.selectedFilters) - this.colorRefresh = !this.colorRefresh - } - - @Builder AdditionFilterList() { - if (this.additionFilters && this.additionFilters.name && this.additionFilters.options && this.additionFilters.options.length != 0) { - List() { - ListItem() { - Row() { - Text(this.additionFilters.name.toString()) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .margin({ left: TEXT_HOT_AREA_WIDTH, right: TEXT_HOT_AREA_WIDTH }) - Row() - .width(SEPARATOR_WIDTH) - .height(SEPARATOR_HEIGHT) - .backgroundColor($r('sys.color.ohos_id_color_list_separator')) - } - }.height(PERCENT_100) - - ForEach(this.additionFilters.options, (option, index?: number) => { - ListItem() { - Text(option.toString()) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - .fontColor(this.additionColorArr[index]) - .fontWeight(this.additionFontWeightArr[index]) - .focusable(true) - } - .height(PERCENT_100) - .backgroundColor(this.isAdditionBackgroundHover[index] ? this.additionBackgroundColorArr[index] : TRANS_COLOR) - .onHover((isHover: boolean) => { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - if (isHover) { - this.additionBackgroundColorArr[index] = $r('sys.color.ohos_id_color_hover') - this.isAdditionBackgroundHover[index] = true - } else { - this.isAdditionBackgroundHover[index] = false - } - }) - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.additionBackgroundColorArr[index] = $r('sys.color.ohos_id_color_click_effect') - this.isAdditionBackgroundHover[index] = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isAdditionBackgroundHover[index] = false - }) - } - }) - .focusable(true) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .padding({ - left: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH, - right: TEXT_HOT_AREA_WIDTH - FOCUS_BORDER_WIDTH - }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .padding({ left: TEXT_HOT_AREA_WIDTH, right: TEXT_HOT_AREA_WIDTH }) - } - }) - .onClick(() => { - this.additionItemClick(index) - }) - }) - } - .listDirection(Axis.Horizontal) - .scrollBar(BarState.Off) - .padding({ left: $r('sys.float.ohos_id_max_padding_start') }) - .margin({ left: -TEXT_HOT_AREA_WIDTH * 2 }) - .width(PERCENT_100) - .height(LIST_ROW_HEIGHT) - } - - } - - @Builder FilterHeader() { - Column() { - if (this.filterType === FilterType.LIST_FILTER) { - this.ListFilter() - } else { - this.MultiLineFilter() - } - this.AdditionFilterList() - }.padding({ top: FILTER_TOP_PADDING }) - .onVisibleAreaChange([0.0, 1.0], (_isVisible: boolean, currentRatio: number) => { - if (currentRatio > 0) { - this.isFloatShowAllFilter = false - this.isFloatShowAllFilterWithoutAnimation = false - this.isFloatBarShowWithoutAnimation = false - animateTo({ - curve: INTER_POLATING_SPRING, - onFinish: () => { - if (!this.isFloatBarShowWithoutAnimation) { - this.isFloatBarShow = false - } - } - }, () => { - this.floatFilterBarHeight = 0 - }) - } else { - this.isFloatBarShow = true - this.isFloatBarShowWithoutAnimation = true - animateTo({ - curve: INTER_POLATING_SPRING - }, () => { - this.floatFilterBarHeight = LIST_ROW_HEIGHT + FILTER_TOP_PADDING - }) - } - }) - } - - @Builder FloatFilterHeader() { - Column() { - if (this.filterType === FilterType.LIST_FILTER) { - this.ListFilter() - } else { - this.MultiLineFilter() - } - this.AdditionFilterList() - } - .padding({ top: FILTER_TOP_PADDING }) - .width(PERCENT_100) - .clip(true) - .backgroundColor($r('sys.color.ohos_id_color_background')) - .opacity(FLOAT_OPACITY) - .backgroundBlurStyle(BlurStyle.Thin) - .visibility(this.isFloatShowAllFilter ? Visibility.Visible : Visibility.Hidden) - .position({ x: 0, y: this.floatFilterPosition }) - .zIndex(2) - } - - @Builder FloatFilterBar() { - Row() { - Column() { - Row() { - ForEach(this.selectedFilters.slice(0, this.colorRefresh ? this.selectedFilters.length : this.selectedFilters.length), (selected, index?: number) => { - if (index != 0 && selected.value != null) { - Text('/') - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - } - Text(selected.value) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .fontSize($r('sys.float.ohos_id_text_size_body3')) - }) - }.height(PERCENT_100) - .alignItems(VerticalAlign.Center) - } - .alignItems(HorizontalAlign.Center) - .width(PERCENT_100) - .height(LIST_ROW_HEIGHT) - - Row() { - Image($r('sys.media.ohos_ic_public_arrow_down')) - .width(ARROW_IMG_SIZE) - .height(ARROW_IMG_SIZE) - .fillColor($r('sys.color.ohos_id_color_tertiary')) - .focusable(true) - } - .height(LIST_ROW_HEIGHT) - .margin({ left: -ARROW_IMG_SIZE }) - .backgroundColor(this.isFloatArrowBgHover ? this.floatArrowBgColor : TRANS_COLOR) - .focusable(true) - .stateStyles({ - focused: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: FOCUS_BORDER_WIDTH, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - }) - .width(ARROW_IMG_SIZE + FOCUS_BORDER_WIDTH * 2) - .offset({ x: -FOCUS_BORDER_WIDTH }) - }, - normal: { - .border({ - radius: $r('sys.float.ohos_id_corner_radius_clicked'), - width: 0 }) - .width(ARROW_IMG_SIZE) - .offset({ x: 0 }) - } - }) - .onHover((isHover: boolean) => { - if (isHover) { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - this.floatArrowBgColor = $r('sys.color.ohos_id_color_hover') - this.isFloatArrowBgHover = true - }) - } else { - animateTo({ - curve: FRICTION_CUBIC_BEZIER, - duration: ANIMATION_DURATION_250 - }, () => { - this.isFloatArrowBgHover = false - }) - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.floatArrowBgColor = $r('sys.color.ohos_id_color_click_effect') - this.isFloatArrowBgHover = true - }) - } else if (event.type === TouchType.Up) { - animateTo({ - curve: SHARP_CUBIC_BEZIER, - duration: ANIMATION_DURATION_100 - }, () => { - this.isFloatArrowBgHover = false - }) - } - }) - .onClick(() => { - animateTo({ - duration: BAR_ANIMATION_DURATION, - curve: SHARP_CUBIC_BEZIER - }, () => { - this.isFloatBarShow = false - this.isFloatBarShowWithoutAnimation = false - }) - this.isFloatShowAllFilter = true - this.isFloatShowAllFilterWithoutAnimation = true - animateTo({ - curve: INTER_POLATING_SPRING - }, () => { - this.floatFilterPosition = 0 - this.floatFilterBarPosition = this.filterDynamicHeight - }) - }) - } - .width(PERCENT_100) - .padding({ right: $r('sys.float.ohos_id_max_padding_end') }) - .height(this.floatFilterBarHeight) - .backgroundColor($r('sys.color.ohos_id_color_background')) - .opacity(FLOAT_OPACITY) - .clip(true) - .backgroundBlurStyle(BlurStyle.Thin) - .visibility(this.isFloatBarShow ? Visibility.Visible : Visibility.Hidden) - .alignItems(VerticalAlign.Bottom) - .position({ x: 0, y: this.floatFilterBarPosition }) - .zIndex(1) - } - - private listScroller: Scroller = new Scroller() - - build() { - Stack({ alignContent: Alignment.Top }) { - this.FloatFilterBar(); - this.FloatFilterHeader(); - Column() { - List({ initialIndex: 0, scroller: this.listScroller }) { - ListItem() { - this.FilterHeader() - }.focusable(true) - .onFocus(() => { - this.listScroller.scrollToIndex(0, true) - }) - - ListItem() { - this.container() - }.focusable(true) - .onFocus(() => { - this.listScroller.scrollToIndex(1, true) - }) - } - .listDirection(Axis.Vertical) - .width(PERCENT_100) - .height(PERCENT_100) - .edgeEffect(EdgeEffect.Spring) - .onScroll((_scrollOffset: number, scrollState: ScrollState) => { - if (this.isFloatShowAllFilterWithoutAnimation && scrollState == ScrollState.Scroll) { - this.isFloatBarShowWithoutAnimation = true - this.isFloatShowAllFilterWithoutAnimation = false - animateTo({ - duration: BAR_ANIMATION_DURATION, - curve: SHARP_CUBIC_BEZIER - }, () => { - this.isFloatBarShow = true - }) - - animateTo({ - curve: INTER_POLATING_SPRING, - onFinish: () => { - if (!this.isFloatShowAllFilterWithoutAnimation) { - this.isFloatShowAllFilter = false - } - } - }, () => { - this.floatFilterPosition = -this.filterDynamicHeight - this.floatFilterBarPosition = 0 - }) - } - }) - }.zIndex(0) - }.clip(true) - } -} \ No newline at end of file diff --git a/source/ProgressButton/ProgressButton.ets b/source/ProgressButton/ProgressButton.ets deleted file mode 100644 index 82f0d43..0000000 --- a/source/ProgressButton/ProgressButton.ets +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const EMPTY_STRING: string = '' -const MAX_PROGRESS: number = 100 -const MAX_PERCENTAGE: string = '100%' -const MIN_PERCENTAGE: string = '0%' - -@Component -export struct ProgressButton { - @Prop @Watch('getProgressContext') progress: number - @State textProgress: string = EMPTY_STRING - @Prop content: string = EMPTY_STRING - @State isLoading: boolean = false - progressButtonWidth?: Length = 44 - clickCallback: () => void = null - @Prop enable: boolean = true - - private getButtonProgress(): number { - if (this.progress < 0) { - return 0 - } else if (this.progress > MAX_PROGRESS) { - return MAX_PROGRESS - } - return this.progress - } - - private getProgressContext() { - if (this.progress < 0) { - this.isLoading = false - this.textProgress = MIN_PERCENTAGE - } else if (this.progress >= MAX_PROGRESS) { - this.isLoading = false - this.textProgress = MAX_PERCENTAGE - } else { - this.textProgress = Math.floor(this.progress / MAX_PROGRESS * MAX_PROGRESS).toString() + "%" - } - } - - build() { - Button() { - Stack(){ - Progress({ value: this.getButtonProgress(), total: MAX_PROGRESS, - style: ProgressStyle.Capsule }) - .height(28) - .borderRadius(14) - .width('100%') - .hoverEffect(HoverEffect.None) - .clip(false) - .enabled(this.enable) - Row() { - Text(this.isLoading? this.textProgress: this.content) - .fontSize($r('sys.float.ohos_id_text_size_button3')) - .fontWeight(FontWeight.Medium) - .fontColor(this.isLoading? $r('sys.color.ohos_id_color_text_primary') - :$r('sys.color.ohos_id_color_emphasize')) - .maxLines(1) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .padding({left: 8, right: 8}) - .opacity(this.enable? 1.0: 0.4) - } - } - } - .borderRadius(14) - .clip(false) - .hoverEffect(HoverEffect.None) - .backgroundColor($r("sys.color.ohos_id_color_foreground_contrary")) - .border({ width: 0.5, color: this.enable ? $r("sys.color.ohos_id_color_toolbar_text_actived") - : $r('sys.color.ohos_id_color_foreground_contrary_disable') }) - .constraintSize({minWidth: 44}) - .width(this.progressButtonWidth < 44? 44: this.progressButtonWidth) - .stateEffect(this.enable) - .onClick(() => { - if(!this.enable){ - return - } - if (this.progress < MAX_PROGRESS) { - this.isLoading = !this.isLoading - } - this.clickCallback && this.clickCallback() - }) - } -} \ No newline at end of file diff --git a/source/SelectTitleBar/SelectTitleBar.ets b/source/SelectTitleBar/SelectTitleBar.ets deleted file mode 100755 index 15d82bb..0000000 --- a/source/SelectTitleBar/SelectTitleBar.ets +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -import { KeyCode } from '@ohos.multimodalInput.keyCode' - -export declare type SelectTitleBarMenuItem = { - value: ResourceStr - isEnabled: boolean - action?: () => void -} - -const PUBLIC_MORE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAY' + - 'AAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAA' + - 'AAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuA' + - 'xhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhYWnstMINgYsh+cmfs88BI' + - 'Cydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRdY' + - 'jJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5H' + - 'nhkC9+zAA5YXXy8jBKV5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rm' + - 'j79U74wCszuih+F/ljrSi/+uud8YBGA10rayqrnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70' + - 'zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hkH4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln' + - '/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ/N5Vjd0oTXKp9QcKF' + - 'pD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fN' + - 'Q1BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnX' + - 'fo96DGYBRZD1ycpc/XzbmbvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jp' + - 'yaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jv' + - 'jACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrpVV1fXOOADLA10rq6rrnXEAVga6VlZV13u' + - 'h8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5LP+r7veGQfgd+T' + - '+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtU' + - 'tTXit8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXv' + - 'O9H8f1bfVPQ9FvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC' - -const PUBLIC_BACK = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAY' + - 'AAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAA' + - 'XNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA8VJREFUeNrt3LFLlHEYwPFXz0G' + - 'iIZpEoikkwsFRIiK3gqCigxIC/4Kmhv6OoChouaGoqKCgCKducGh0cDAIamhwiCaHCIeelztpUszee/vl8/nAM3Vd8nufr' + - '+fddVYVAAAAAAAAAAAAAAAAAAAAAABQijFH0KhrMd2Y2ZitmNWYRzHLjkYAB9lUzMOYizv8eS/mZsymoypLxxE0svzvY07' + - 'vcpu5mOmY145LAAdx+U/u4bZzwx+JPjq2cow7glaWf1vXsQkg6/JvPwoggJTLjwDSL/8nRyiAzN/5nzpGAWRd/n7MM0cpg' + - 'IzLvx6z6CjL453gdpZ/IWbDcQrA8iMAy48ALD8CsPwIwPIjAMuPACw/ArD8CMDyIwDLjwAsPwKw/AjA8iMAy48ALD8CsPw' + - 'IwPIjAMuPACw/ArD85A3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2A' + - 'MtP2gAsP2kDsPykDcDykzYAy0/aACw/aQOw/KQNwPKTNgDLT9oALD9pA7D8pA3A8pM2AMtP2gAsP2kDsPykDcDykzYAy0/' + - 'aACw/aQOw/KQNwPLz3xlv6H4mYp5YfrI+AizF9BwnI/AlZi3mbsxy03feaeh+HsQcc60YgSMxMzE3YmZj3sX8LOlHoPoLn' + - 'HedaEE35n5pzwF856dN9SPBpZICmHRNaNnlkgL46nrQsvmSAqhftlx1TWjR4ZICqPVcE1q0XloA96rBa7XQhl5pAWzFXKm' + - '8i8vo9WMeN3VnnQa/sO8xL2POxEy7Toxo+RdjNpu6w1F9HuBqNXi99lw1eKMM9utHzIeYV8MftbccCQAAAAAAsBdt/XLc+s' + - 'Py9W+MmPqL+1iJuVA1+C4gdFr6d77FvK0GH2nb739lPR5zNuZ51eBnQhFAJQIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE' + - 'IAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAI' + - 'EIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIEIAIE8M8jmBlGgABSRnAqZiXms+MUQNYIDnkUKMu4I/gj6z' + - 'ELMRv7/PsnHKEAMkcw6fgEkDmCNUcngMwRvHFsngRnfWJcL/9tRyaAgxrB+ZijO9ymH7MUs+m4yjLmCBozEXMr5nr1+9We1' + - 'ZgXMXccDwAAAAAAAAAAAAAAAAAAAAAAwO5+AfVgtqHKRnawAAAAAElFTkSuQmCC' - -@Component -export struct SelectTitleBar { - @State selected: number = 0 - - options: Array - menuItems: Array - - subtitle: ResourceStr - badgeValue: number - hidesBackButton: boolean - - onSelected: ((index: number) => void) - - private static readonly badgeSize = 16 - private static readonly totalHeight = 56 - private static readonly leftPadding = 24 - private static readonly leftPaddingWithBack = 12 - private static readonly rightPadding = 24 - private static readonly badgePadding = 16 - private static readonly subtitleLeftPadding = 8 - - @State selectMaxWidth: number = 0 - - build() { - Flex({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }) { - Row() { - if (!this.hidesBackButton) { - Navigator() { - ImageMenuItem({ item: { - value: PUBLIC_BACK, - isEnabled: true - } }) - } - } - Column() { - if (this.badgeValue !== undefined) { - Badge({ - count: this.badgeValue, - position: BadgePosition.Right, - style: { - badgeSize: SelectTitleBar.badgeSize, - badgeColor: $r('sys.color.ohos_id_color_emphasize'), - borderColor: $r('sys.color.ohos_id_color_emphasize'), - borderWidth: 0 - } - }) { - Row() { - Select(this.options) - .selected(this.selected) - .value(this.selected < this.options.length ? this.options[this.selected].value.toString() : "") - .font({ size: $r('sys.float.ohos_id_text_size_headline8') }) - .fontColor($r('sys.color.ohos_id_color_titlebar_text')) - .onSelect(this.onSelected) - .constraintSize({ maxWidth: this.selectMaxWidth }) - } - .justifyContent(FlexAlign.Start) - .margin({ right: $r('sys.float.ohos_id_elements_margin_horizontal_l') }) - } - } else { - Row() { - Select(this.options) - .selected(this.selected) - .value(this.selected < this.options.length ? this.options[this.selected].value.toString() : "") - .font({ size: $r('sys.float.ohos_id_text_size_headline8') }) - .fontColor($r('sys.color.ohos_id_color_titlebar_text')) - .onSelect(this.onSelected) - .constraintSize({ maxWidth: this.selectMaxWidth }) - } - .justifyContent(FlexAlign.Start) - } - if (this.subtitle !== undefined) { - Row() { - Text(this.subtitle) - .fontSize($r('sys.float.ohos_id_text_size_over_line')) - .fontColor($r('sys.color.ohos_id_color_titlebar_subtitle_text')) - .maxLines(1) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ maxWidth: this.selectMaxWidth }) - } - .justifyContent(FlexAlign.Start) - .margin({ left: SelectTitleBar.subtitleLeftPadding }) - } - } - .justifyContent(FlexAlign.Start) - .alignItems(HorizontalAlign.Start) - .constraintSize({ maxWidth: this.selectMaxWidth }) - } - .margin({ left: this.hidesBackButton ? $r('sys.float.ohos_id_max_padding_start') : $r('sys.float.ohos_id_default_padding_start') }) - if (this.menuItems !== undefined && this.menuItems.length > 0) { - CollapsibleMenuSection({ menuItems: this.menuItems }) - } - } - .width('100%') - .height(SelectTitleBar.totalHeight) - .backgroundColor($r('sys.color.ohos_id_color_background')) - .onAreaChange((_oldValue: Area, newValue: Area) => { - let newWidth = Number(newValue.width) - if (!this.hidesBackButton) { - newWidth -= ImageMenuItem.imageHotZoneWidth - newWidth += SelectTitleBar.leftPadding - newWidth -= SelectTitleBar.leftPaddingWithBack - } - if (this.menuItems !== undefined) { - let menusLength = this.menuItems.length - if (menusLength >= CollapsibleMenuSection.maxCountOfVisibleItems) { - newWidth -= ImageMenuItem.imageHotZoneWidth * CollapsibleMenuSection.maxCountOfVisibleItems - } else if (menusLength > 0) { - newWidth -= ImageMenuItem.imageHotZoneWidth * menusLength - } - } - if (this.badgeValue !== undefined) { - this.selectMaxWidth = newWidth - SelectTitleBar.badgeSize - SelectTitleBar.leftPadding - SelectTitleBar.rightPadding - SelectTitleBar.badgePadding - } else { - this.selectMaxWidth = newWidth - SelectTitleBar.leftPadding - SelectTitleBar.rightPadding - } - }) - } -} - -@Component -struct CollapsibleMenuSection { - menuItems: Array - - static readonly maxCountOfVisibleItems = 3 - private static readonly focusPadding = 4 - private static readonly marginsNum = 2 - - @State isPopupShown: boolean = false - - @State isMoreIconOnFocus: boolean = false - @State isMoreIconOnHover: boolean = false - @State isMoreIconOnClick: boolean = false - - getMoreIconFgColor() { - return this.isMoreIconOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getMoreIconBgColor() { - if (this.isMoreIconOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isMoreIconOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Column() { - Row() { - if (this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems) { - ForEach(this.menuItems, (item) => { - ImageMenuItem({ item: item }) - }) - } else { - ForEach(this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (item) => { - ImageMenuItem({ item: item }) - }) - - Row() { - Image(PUBLIC_MORE) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(true) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getMoreIconFgColor()) - .backgroundColor(this.getMoreIconBgColor()) - .justifyContent(FlexAlign.Center) - .border(this.isMoreIconOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => this.isMoreIconOnFocus = true) - .onBlur(() => this.isMoreIconOnFocus = false) - .onHover((isOn) => this.isMoreIconOnHover = isOn) - .onKeyEvent((event) => { - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === KeyType.Up) { - this.isMoreIconOnClick = false - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === TouchType.Up) { - this.isMoreIconOnClick = false - } - }) - .onClick(() => this.isPopupShown = true) - .bindPopup(this.isPopupShown, { - builder: this.popupBuilder, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: false, - onStateChange: (e) => this.isPopupShown = e.isVisible - }) - } - } - } - .height('100%') - .margin({ right: $r('sys.float.ohos_id_default_padding_end') }) - .justifyContent(FlexAlign.Center) - } - - @Builder popupBuilder() { - Column() { - ForEach(this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), (item, _index?) => { - ImageMenuItem({ item: item }) - }) - } - .width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum) - .margin({ top: CollapsibleMenuSection.focusPadding, bottom: CollapsibleMenuSection.focusPadding }) - } -} - -@Component -struct ImageMenuItem { - item: SelectTitleBarMenuItem - - static readonly imageSize = 24 - static readonly imageHotZoneWidth = 48 - static readonly buttonBorderRadius = 8 - static readonly focusBorderWidth = 2 - static readonly disabledImageOpacity = 0.4 - - @State isOnFocus: boolean = false - @State isOnHover: boolean = false - @State isOnClick: boolean = false - - getFgColor() { - return this.isOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getBgColor() { - if (this.isOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Row() { - Image(this.item.value) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(this.item.isEnabled) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getFgColor()) - .backgroundColor(this.getBgColor()) - .justifyContent(FlexAlign.Center) - .opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity) - .border(this.isOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - if (!this.item.isEnabled) { - return - } - this.isOnFocus = true - }) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => { - if (!this.item.isEnabled) { - return - } - this.isOnHover = isOn - }) - .onKeyEvent((event) => { - if (!this.item.isEnabled) { - return - } - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (!this.item.isEnabled) { - return - } - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.item.isEnabled && this.item.action && this.item.action()) - } -} - -export default { SelectTitleBar } \ No newline at end of file diff --git a/source/SplitLayout/SplitLayout.ets b/source/SplitLayout/SplitLayout.ets deleted file mode 100644 index 9fb74a2..0000000 --- a/source/SplitLayout/SplitLayout.ets +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -@Component -export struct splitlayout { - @BuilderParam container: () => void - @State sizeValue: string = '' - @State areaWidth: number = 0 - @State imageBackgroundColor: string = "#19000000" - @Prop mainImage: Resource = $r("app.media.music") - @Prop primaryText: string = "新歌推荐" - secondaryText?: string = "私人订制新歌精选站,为你推荐专属优质新歌;为你推荐专属优质新歌" - tertiaryText?: string = "每日更新" - - build() { - Column() { - if (this.areaWidth < 600) { - GridRow({ - columns: 4, - breakpoints: { - reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }) { - GridCol({ span: { xs: 4, sm: 4, md: 4, lg: 4 } }) { - Column() { - Stack({ alignContent: Alignment.Bottom }) { - Image(this.mainImage) - - Column() { - Text(this.primaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_headline7')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - Text(this.secondaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .margin({ top: 4, bottom: 8 }) - Text(this.tertiaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_caption')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .margin({ bottom: 24 }) - } - .alignItems(HorizontalAlign.Center) - .margin({ - left: $r('sys.float.ohos_id_max_padding_start'), - right: $r('sys.float.ohos_id_max_padding_end'), }) - } - .height('34%') - .width('100%') - - Column() { - this.container() - } - .height('66%') - .width('100%') - } - } - } - } else if (600 < this.areaWidth && this.areaWidth < 840) { - // 形态二 - GridRow({ - columns: 8, - breakpoints: { - reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }) { - GridCol({ span: { xs: 8, sm: 8, md: 8, lg: 8 } }) { - Column() { - Row() { - Image(this.mainImage) - .margin({ left: 96, right: 36 }) - .height('60%') - .width('20%') - Column() { - Text(this.primaryText) - .fontSize($r('sys.float.ohos_id_text_size_headline7')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - Text(this.secondaryText) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .margin({ top: 4, bottom: 8 }) - Text(this.tertiaryText) - .fontSize($r('sys.float.ohos_id_text_size_caption')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - } - .alignItems(HorizontalAlign.Start) - .margin({ right: 96 }) - } - .backgroundColor(this.imageBackgroundColor) - .height('34%') - - Column() { - this.container() - } - .height('66%') - } - - } - } - - } else if (this.areaWidth > 840) { - GridRow({ - columns: 12, - breakpoints: { - reference: BreakpointsReference.WindowSize }, - direction: GridRowDirection.Row - }) { - GridCol({ span: { xs: 4, sm: 4, md: 4, lg: 4 } }) { - Column() { - Image(this.mainImage) - .height('17%') - .width('34%') - .margin({ bottom: 36 }) - Text(this.primaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_headline7')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .margin({ left: 48, right: 48 }) - Text(this.secondaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_body1')) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .margin({ top: 4, bottom: 8, left: 48, right: 48 }) - Text(this.tertiaryText) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .margin({ bottom: 24, left: 48, right: 48 }) - } - .height('100%') - .backgroundColor(this.imageBackgroundColor) - .justifyContent(FlexAlign.Center) - .alignItems(HorizontalAlign.Center) - } - .height('100%') - - GridCol({ span: { xs: 8, sm: 8, md: 8, lg: 8 } }) { - this.container() - } - - } - } - } - - .onAreaChange((oldValue: Area, newValue: Area) => { - console.info(`Ace: on area change, oldValue is ${JSON.stringify(oldValue)} value is ${JSON.stringify(newValue)}`) - this.sizeValue = JSON.stringify(newValue) - this.areaWidth = parseInt(newValue.width.toString(), 0); - console.info(`pingAce: on area change, oldValue is` + this.areaWidth) - console.info(`pingAce: on area change, oldValue is` + parseInt(newValue.height.toString(), 0)) - }) - } -} diff --git a/source/SubHeader/SubHeader.ets b/source/SubHeader/SubHeader.ets deleted file mode 100644 index da40ac5..0000000 --- a/source/SubHeader/SubHeader.ets +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const SPACE_MARGIN: number = 8 -const MARGIN_NUM: number = 4 -const IMAGE_WIDTH_NUM: number = 16 -const IMAGE_HEIGHT_NUM: number = 24 -const BUTTON_SIZE: number = 32 -const SINGLE_LINE_HEIGHT: number = 48 -const DOUBLE_LINE_HEIGHT: number = 64 -const BUTTON_HEIGHT: number = 28 -const IMAGE_WIDTH: number = 12 -const BORDER_WIDTH = 2 -const DIVIDEND_WIDTH = 3 -const SINGLE_LINE_NUM: number = 1 -const DOUBLE_LINE_NUM: number = 2 -const MIN_FONT_SIZE: number = 14 -const MAIN_TEXT_SIZE: number = 10 -const CONSTRAINT_WIDTH: number = 40 -const CONSTRAINT_NUM: number = 44 - -export enum OperationType { - TEXT_ARROW = 0, - BUTTON = 1, - ICON_GROUP = 2, - LOADING = 3, -} - -export declare type OperationOption = { - value: ResourceStr; - action?: () => void; -} - -export declare type SelectOptions = { - options: Array; - selected?: number; - value?: string; - onSelect?: (index: number, value?: string) => void; -} - -@Component -struct IconGroup { - @State bgColor: Resource = $r('sys.color.ohos_id_color_background') - @State isFocus: boolean = false - item: OperationOption - focusBorderWidth = BORDER_WIDTH - - build() { - Row() { - Image(this.item.value) - .fillColor($r('sys.color.ohos_id_color_primary')) - .width(IMAGE_HEIGHT_NUM) - .height(IMAGE_HEIGHT_NUM) - .focusable(true) - } - .focusable(true) - .width(BUTTON_SIZE) - .height(BUTTON_SIZE) - .margin({ right: SPACE_MARGIN, bottom: MARGIN_NUM }) - .justifyContent(FlexAlign.Center) - .borderRadius($r('sys.float.ohos_id_corner_radius_clicked')) - .backgroundColor(this.bgColor) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.item.action && this.item.action() - this.bgColor = $r('sys.color.ohos_id_color_click_effect') - } - if (event.type === TouchType.Up) { - this.bgColor = $r('sys.color.ohos_id_color_background') - } - }) - .onHover((isHover: boolean) => { - if (isHover) { - this.bgColor = $r('sys.color.ohos_id_color_hover') - } else { - this.bgColor = $r('sys.color.ohos_id_color_background') - } - }) - .border(this.isFocus ? - { width: this.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - this.isFocus = true; - }) - .onBlur(() => { - this.isFocus = false; - }) - .onKeyEvent((event) => { - if (event.keyCode === 2054 || event.keyCode === 2050) { - this.item.action && this.item.action() - } - }) - } -} - -@Component -export struct SubHeader1 { - @Prop icon: Resource - @Prop primaryTitle: string - @Prop secondaryTitle: string - @Prop select: SelectOptions - @Prop operationType: OperationType = OperationType.BUTTON - operationItem: Array - @State isDuplicateLine: boolean = false - @State textArrowBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State buttonBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State iconBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State firstIconBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State SecondaryIconBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State thirdIconBgColor: Resource = $r('sys.color.ohos_id_color_background') - @State flag: boolean = false - @State isTextArrowFocus: boolean = false - @State flexWidth: number = 0 - @State titleWidth: number = 0 - @State titleWidth1: number = 0 - @State isButtonFocus: boolean = false - focusBorderWidth = BORDER_WIDTH - - @Builder ListTextStyle($$: { content: ResourceStr }) { - Text($$.content) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) - .fontWeight(FontWeight.Medium) - .maxLines(DOUBLE_LINE_NUM) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ minWidth: this.titleWidth }) - .margin({ left: $r('sys.float.ohos_id_max_padding_end'), bottom: SPACE_MARGIN, right: MARGIN_NUM }).borderWidth(1) - } - - @Builder ListIconStyle($$: { content: ResourceStr }, icon: ResourceStr) { - Row() { - Image(icon) - .width(IMAGE_WIDTH_NUM) - .height(IMAGE_WIDTH_NUM) - .margin({ right: SPACE_MARGIN }) - Text($$.content) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) - .fontWeight(FontWeight.Medium) - .maxLines(DOUBLE_LINE_NUM) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ minWidth: this.titleWidth - CONSTRAINT_WIDTH }) - } - .margin({ left: $r('sys.float.ohos_id_max_padding_end'), bottom: SPACE_MARGIN, right: MARGIN_NUM }) - } - - @Builder ContentTextStyle($$: { content: ResourceStr }) { - Text($$.content) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .fontSize($r('sys.float.ohos_id_text_size_sub_title2')) - .fontWeight(FontWeight.Medium) - .maxLines(DOUBLE_LINE_NUM) - .maxFontSize($r('sys.float.ohos_id_text_size_sub_title2')) - .minFontSize(MIN_FONT_SIZE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .constraintSize({ maxWidth: this.titleWidth }) - .margin({ left: $r('sys.float.ohos_id_max_padding_start'), - right: MARGIN_NUM, bottom: SPACE_MARGIN }) - } - - @Builder SubTextStyle($$: { content: ResourceStr, subContent: ResourceStr }) { - Column() { - Text($$.content) - .fontColor($r('sys.color.ohos_id_color_text_primary')) - .fontSize($r('sys.float.ohos_id_text_size_sub_title2')) - .fontWeight(FontWeight.Medium) - .maxLines(SINGLE_LINE_NUM) - .maxFontSize($r('sys.float.ohos_id_text_size_sub_title2')) - .minFontSize(MIN_FONT_SIZE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - Text($$.subContent) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) - .fontWeight(FontWeight.Medium) - .maxLines(SINGLE_LINE_NUM) - .maxFontSize($r('sys.float.ohos_id_text_size_sub_title3')) - .minFontSize(MAIN_TEXT_SIZE) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - } - .constraintSize({ maxWidth: this.titleWidth }) - .alignItems(HorizontalAlign.Start) - .onAppear(() => { - this.isDuplicateLine = true - }) - .margin({ left: $r('sys.float.ohos_id_max_padding_start'), - right: MARGIN_NUM, bottom: SPACE_MARGIN }) - } - - @Builder SelectStyle(selectParam: SelectOptions) { - Select(selectParam.options) - .selected(selectParam.selected) - .value(selectParam.value) - .onSelect((index: number, value?: string) => { - if (selectParam.onSelect) { - selectParam.onSelect(index, value) - } - }) - .constraintSize({ maxWidth: this.titleWidth }) - .margin({ left: $r('sys.float.ohos_id_default_padding_start'), right: MARGIN_NUM}) - } - - @Builder LoadingProcessStyle() { - LoadingProgress() - .width(IMAGE_HEIGHT_NUM) - .height(IMAGE_HEIGHT_NUM) - .focusable(true) - .margin({ right: $r('sys.float.ohos_id_default_padding_end'), bottom: MARGIN_NUM }) - } - - @Builder TextArrowStyle(textArrow: OperationOption) { - Row() { - Row() { - if (textArrow != null) { - Text(textArrow.value) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - .margin({ right: MARGIN_NUM }) - .focusable(true) - .maxLines(DOUBLE_LINE_NUM) - } - Image($r('sys.media.ohos_ic_public_arrow_right')) - .fillColor($r('sys.color.ohos_id_color_tertiary')) - .width(IMAGE_WIDTH) - .height(IMAGE_HEIGHT_NUM) - .focusable(true) - }.margin({ left: SPACE_MARGIN, right: SPACE_MARGIN }) - } - .justifyContent(FlexAlign.End) - .focusable(true) - .margin({ left:MARGIN_NUM, right: MARGIN_NUM, bottom: MARGIN_NUM }) - .borderRadius($r('sys.float.ohos_id_corner_radius_subtab')) - .backgroundColor(this.textArrowBgColor) - .onTouch((event) => { - if (event.type === TouchType.Down) { - if (textArrow.action) { - textArrow.action() - } - this.textArrowBgColor = $r('sys.color.ohos_id_color_click_effect') - } - if (event.type === TouchType.Up) { - this.textArrowBgColor = $r('sys.color.ohos_id_color_background') - } - }) - .onHover((isHover: boolean) => { - if (isHover) { - this.textArrowBgColor = $r('sys.color.ohos_id_color_hover') - } else { - this.textArrowBgColor = $r('sys.color.ohos_id_color_background') - } - }) - .border(this.isTextArrowFocus ? - { width: this.focusBorderWidth, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - this.isTextArrowFocus = true; - }) - .onBlur(() => { - this.isTextArrowFocus = false; - }) - .onKeyEvent((event) => { - if (event.keyCode === 2054 || event.keyCode === 2050) { - textArrow.action && textArrow.action() - } - }) - } - - @Builder ButtonStyle(button: OperationOption) { - Row() { - if (button != null) { - Text(button.value) - .maxLines(1) - .fontColor($r('sys.color.ohos_id_color_text_primary_activated')) - .fontSize($r('sys.float.ohos_id_text_size_button2')) - .fontWeight(FontWeight.Medium) - .margin({ left: SPACE_MARGIN, right: SPACE_MARGIN }) - .focusable(true) - } - } - .onAreaChange((oldValue: Area, newValue: Area) => { - Number(parseInt(newValue.width.toString(), 0)) - console.log('wy buttonStyle1'+Number(parseInt(newValue.width.toString(), 0))) - }) - .justifyContent(FlexAlign.End) - .alignItems(VerticalAlign.Center) - .constraintSize({ maxWidth: this.flexWidth-this.titleWidth1 + 36 }) - .focusable(true) - .height(BUTTON_HEIGHT) - .margin({ left: SPACE_MARGIN, right: MARGIN_NUM }) - .borderRadius(IMAGE_WIDTH_NUM) - .backgroundColor(this.buttonBgColor) - .onTouch((event) => { - if (event.type === TouchType.Down) { - if (button.action) { - button.action() - } - this.buttonBgColor = $r('sys.color.ohos_id_color_click_effect') - } - if (event.type === TouchType.Up) { - this.buttonBgColor = $r('sys.color.ohos_id_color_background') - } - }) - .onHover((isHover: boolean) => { - if (isHover) { - this.buttonBgColor = $r('sys.color.ohos_id_color_hover') - } else { - this.buttonBgColor = $r('sys.color.ohos_id_color_background') - } - }) - .border(this.isButtonFocus ? - { width: this.focusBorderWidth, - color: $r('sys.color.ohos_id_color_focused_outline'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - this.isButtonFocus = true; - }) - .onBlur(() => { - this.isButtonFocus = false; - }) - .onKeyEvent((event) => { - if (event.keyCode === 2054 || event.keyCode === 2050) { - button.action && button.action() - } - }) - } - - build() { - Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.End }) { - Row() { - if (this.secondaryTitle != null && this.icon != null) { - this.ListIconStyle({ content: this.secondaryTitle }, this.icon) - } else if (this.secondaryTitle != null && this.primaryTitle != null) { - this.SubTextStyle({ content: this.primaryTitle, subContent: this.secondaryTitle }) - } else if (this.secondaryTitle != null) { - this.ListTextStyle({ content: this.secondaryTitle }) - } else if (this.select != null) { - this.SelectStyle(this.select) - } else if (this.primaryTitle != null) { - this.ContentTextStyle({ content: this.primaryTitle }) - } - } - .onAreaChange((oldValue: Area, newValue: Area) => { - this.titleWidth1 = Number(parseInt(newValue.width.toString(), 0)) - console.log('wy titleWidth1'+this.titleWidth.toString()) - }) - - Row() { - if (this.operationType === OperationType.BUTTON && this.operationItem != null) { - this.ButtonStyle(this.operationItem[0] ) - } - if (this.operationType === OperationType.ICON_GROUP && this.operationItem != null) { - Row() { - ForEach(this.operationItem, (item, index?: number) => { - if (index == 0) { - IconGroup({ item: item }) - } - if (index == 1) { - IconGroup({ item: item }) - } - if (index == 2) { // Image count - IconGroup({ item: item }) - } - }) - } - } - if (this.operationType === OperationType.TEXT_ARROW && this.operationItem != null) { - this.TextArrowStyle(this.operationItem[0]) - } - if (this.operationType === OperationType.LOADING) { - this.LoadingProcessStyle() - } - } - } - .onAreaChange((oldValue: Area, newValue: Area) => { - let flexWidth = Number(parseInt(newValue.width.toString(), 0)) - this.flexWidth = flexWidth - CONSTRAINT_NUM - this.titleWidth = this.flexWidth / DIVIDEND_WIDTH * BORDER_WIDTH - console.log('wy flexWidth'+this.flexWidth.toString()) - }) - .padding({ right: $r('sys.float.ohos_id_default_padding_end') }) - .height(this.isDuplicateLine ? DOUBLE_LINE_HEIGHT : SINGLE_LINE_HEIGHT) - } -} \ No newline at end of file diff --git a/source/Swiperefresher/SwipeRefresher.ets b/source/Swiperefresher/SwipeRefresher.ets deleted file mode 100644 index 141a8cf..0000000 --- a/source/Swiperefresher/SwipeRefresher.ets +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -const LOADINGPROGRESS_SIZE = 24 -const DEFAULT_MARGIN = 16 -const ITEM_SPACE = 4 - -@Component -export struct SwipeRefresher { - @Prop - content: string = null - - @Prop - isLoading: boolean = false; - - build() { - Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { - if (this.isLoading) { - LoadingProgress() - .height(LOADINGPROGRESS_SIZE) - .width(LOADINGPROGRESS_SIZE) - .margin({ - right: ITEM_SPACE - }) - } - Text(this.content) - .fontColor($r('sys.color.ohos_id_color_text_secondary')) - .fontSize($r('sys.float.ohos_id_text_size_body2')) - } - .margin({ - top: DEFAULT_MARGIN, - bottom: DEFAULT_MARGIN - }) - } -} \ No newline at end of file diff --git a/source/TabTitleBar/TabTitleBar.ets b/source/TabTitleBar/TabTitleBar.ets deleted file mode 100755 index ae5217b..0000000 --- a/source/TabTitleBar/TabTitleBar.ets +++ /dev/null @@ -1,478 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -import { KeyCode } from '@ohos.multimodalInput.keyCode' - -export declare type TabTitleBarMenuItem = { - value: ResourceStr - isEnabled: boolean - action?: () => void -} - -export declare type TabTitleBarTabItem = { - title: ResourceStr - icon?: ResourceStr -} - -const PUBLIC_MORE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAIGNIUk0AAHomAACAhAAA+' + - 'gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAO' + - 'xAAADsQBlSsOGwAABEZJREFUeNrt3D1rFFEUBuAxhmAhFlYpUohYiYWFRcAmKAhWK2pjo1iKf8BCMIKFf8BarCyMhVj4VZhGSKEg2FqJyCKWIhY' + - 'WnstMINgYsh+cmfs88BICydxw7jmzu2HvNg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBN+3r6dx+LXIqsRpa7FF8j48hm5Fn3Peo9mAEYRd' + - 'YjJ3f582Vj7nZfUe/eDsCRyMPI2h5/fyNyI/JDT6v3Tvt7sBllE15ETkxwjeORi5G3ke/6W737MgBnI68jh6ZwrcORq5HnhkC9+zAA5YXXy8jBK' + - 'V5zKXIu8jjyS7+rd+YBeNVtyrSVO9PRyBM9r94LSTfjWuTUDK9/eYIXeENUbb0zDsBi5PYc1rmj79U74wCszuih+F/ljrSi/+uud8YBGA10rayq' + - 'rnfGAVgb6FpZVV3vjAOwPNC1sqq63hkHYGWga2VVdb0XKt/8Rf1fd70zDsB4jmt5u3Tl9a59AMb6v+56ZxyArYGulVXV9c44ABtzXOup/q+73hk' + - 'H4N2cHio/Rj7r/7rrnXEAfkfuz2Gddb2v3ln/DfpgxneLzaY9xE3l9c46AH8iVyI/Z3Dt8nB/Xc+rd5H5QMy3yJemPVs6zY0edc9HUe/0Z4I/dQ' + - '/N5Vjd0oTXKp9QcKFpD2qj3r0YgO1NeRM507TH6/bifeR85IMeV++d+vTBWOV9JDcjt5rdv6uw3M3uRR7pa/Xu+wBsOxA53bTnTP/3UX1b3fNQ1' + - 'BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqyr6d/97HIpchqZLlL8TUyjmxGnnXfo96DGYBRZD1ycpc/Xzbm' + - 'bvcV9e7tAByJPIys7fH3NyI3Ij/0tHrvtL8Hm1E24UXkxATXOB65GHkb+a6/1bsvA3A28jpyaArXOhy5GnluCNS7DwNQXni9jByc4jWXIucijyO' + - '/9Lt6Zx6AV92mTFu5Mx2NPNHz6r2QdDOuRU7N8PqXJ3iBN0TV1jvjACxGbs9hnTv6Xr0zDsDqjB6K/1XuSCv6v+56ZxyA0UDXyqrqemccgLWBrp' + - 'VV1fXOOADLA10rq6rrnXEAVga6VlZV13uh8s1f1P911zvjAIznuJa3S1de79oHYKz/6653xgHYGuhaWVVd74wDsDHHtZ7q/7rrnXEA3s3pofJj5' + - 'LP+r7veGQfgd+T+HNZZ1/vqnfXfoA9mfLfYbNpD3FRe76wD8CdyJfJzBtcuD/fX9bx6F5kPxHyLfGnas6XT3OhR93wU9U5/JvhT99BcjtUtTXit' + - '8gkFF5r2oDbq3YsB2N6UN5EzTXu8bi/eR85HPuhx9d6pTx+MVd5HcjNyq9n9uwrL3exe5JG+Vu++D8C2A5HTTXvO9H8f1bfVPQ9FvQEAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCn7C9HjBtwWfXpKAAAAAElFTkSuQmCC' - -@Component -export struct TabTitleBar { - tabItems: Array - menuItems: Array - @BuilderParam swiperContent: () => void - - @State tabWidth: number = 0 - @State currentIndex: number = 0 - - static readonly totalHeight = 56 - static readonly correctionOffset = -40.0 - static readonly gradientMaskWidth = 24 - private menuSectionWidth = 0 - - private scroller: Scroller = new Scroller() - private swiperController: SwiperController = new SwiperController() - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private leftContext2D: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - private rightContext2D: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - - @Builder GradientMask(context2D: CanvasRenderingContext2D, x0: number, y0: number, x1: number, y1: number) { - Column() { - Canvas(context2D) - .width(TabTitleBar.gradientMaskWidth) - .height(TabTitleBar.totalHeight) - .onReady(() => { - var grad = context2D.createLinearGradient(x0, y0, x1, y1) - grad.addColorStop(0.0, '#ffffffff') - grad.addColorStop(1, '#00ffffff') - context2D.fillStyle = grad - context2D.fillRect(0, 0, TabTitleBar.gradientMaskWidth, TabTitleBar.totalHeight) - }) - } - .width(TabTitleBar.gradientMaskWidth) - .height(TabTitleBar.totalHeight) - } - - build() { - Column() { - Flex({ - justifyContent: FlexAlign.SpaceBetween, - alignItems: ItemAlign.Stretch - }) { - Stack({ alignContent: Alignment.End }) { - Stack({ alignContent: Alignment.Start }) { - Column() { - List({ initialIndex: 0, scroller: this.scroller, space: 0 }) { - ForEach(this.tabItems, (tabItem, index?: number) => { - ListItem() { - TabContentItem({ - item: tabItem, - index: index, - maxIndex: this.tabItems.length - 1, - currentIndex: this.currentIndex, - onCustomClick: () => this.currentIndex = index - }) - } - }) - } - .width('100%') - .height(TabTitleBar.totalHeight) - .constraintSize({ maxWidth: this.tabWidth }) - .edgeEffect(EdgeEffect.Spring) - .listDirection(Axis.Horizontal) - .scrollBar(BarState.Off) - } - this.GradientMask(this.leftContext2D, 0, TabTitleBar.totalHeight / 2, - TabTitleBar.gradientMaskWidth, TabTitleBar.totalHeight / 2) - } - this.GradientMask(this.rightContext2D, TabTitleBar.gradientMaskWidth, - TabTitleBar.totalHeight / 2, 0, TabTitleBar.totalHeight / 2) - } - - if (this.menuItems !== undefined && this.menuItems.length > 0) { - CollapsibleMenuSection({ menuItems: this.menuItems }) - .height(TabTitleBar.totalHeight) - .onAreaChange((_oldValue: Area, newValue: Area) => { - this.menuSectionWidth = Number(newValue.width) - }) - } - } - .backgroundColor($r('sys.color.ohos_id_color_background')) - .margin({ right: $r('sys.float.ohos_id_max_padding_end') }) - .onAreaChange((_oldValue: Area, newValue: Area) => { - this.tabWidth = Number(newValue.width) - this.menuSectionWidth - }) - - Column() { - Swiper(this.swiperController) { this.swiperContent() } - .index(this.currentIndex) - .itemSpace(0) - .indicator(false) - .width('100%') - .height('100%') - .curve(Curve.Friction) - .onChange((index) => { - this.currentIndex = index - this.scroller.scrollToIndex(this.currentIndex) - this.scroller.scrollBy(TabTitleBar.correctionOffset, 0) - }) - .onAppear(() => { - this.scroller.scrollToIndex(this.currentIndex) - this.scroller.scrollBy(TabTitleBar.correctionOffset, 0) - }) - } - } - } -} - -@Component -struct CollapsibleMenuSection { - menuItems: Array - - static readonly maxCountOfVisibleItems = 1 - private static readonly focusPadding = 4 - private static readonly marginsNum = 2 - - @State isPopupShown: boolean = false - - @State isMoreIconOnFocus: boolean = false - @State isMoreIconOnHover: boolean = false - @State isMoreIconOnClick: boolean = false - - getMoreIconFgColor() { - return this.isMoreIconOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getMoreIconBgColor() { - if (this.isMoreIconOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isMoreIconOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Column() { - Row() { - if (this.menuItems.length <= CollapsibleMenuSection.maxCountOfVisibleItems) { - ForEach(this.menuItems, (item) => { - ImageMenuItem({ item: item }) - }) - } else { - ForEach(this.menuItems.slice(0, CollapsibleMenuSection.maxCountOfVisibleItems - 1), (item) => { - ImageMenuItem({ item: item }) - }) - - Row() { - Image(PUBLIC_MORE) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(true) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getMoreIconFgColor()) - .backgroundColor(this.getMoreIconBgColor()) - .justifyContent(FlexAlign.Center) - .border(this.isMoreIconOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => this.isMoreIconOnFocus = true) - .onBlur(() => this.isMoreIconOnFocus = false) - .onHover((isOn) => this.isMoreIconOnHover = isOn) - .onKeyEvent((event) => { - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === KeyType.Up) { - this.isMoreIconOnClick = false - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.isMoreIconOnClick = true - } - if (event.type === TouchType.Up) { - this.isMoreIconOnClick = false - } - }) - .onClick(() => this.isPopupShown = true) - .bindPopup(this.isPopupShown, { - builder: this.popupBuilder, - placement: Placement.Bottom, - popupColor: Color.White, - enableArrow: false, - onStateChange: (e) => this.isPopupShown = e.isVisible - }) - } - } - } - .height('100%') - // .margin({ right: $r('sys.float.ohos_id_default_padding_end') }) - .justifyContent(FlexAlign.Center) - } - - @Builder popupBuilder() { - Column() { - ForEach(this.menuItems.slice(CollapsibleMenuSection.maxCountOfVisibleItems - 1, this.menuItems.length), (item, _index?) => { - ImageMenuItem({ item: item }) - }) - } - .width(ImageMenuItem.imageHotZoneWidth + CollapsibleMenuSection.focusPadding * CollapsibleMenuSection.marginsNum) - .margin({ top: CollapsibleMenuSection.focusPadding, bottom: CollapsibleMenuSection.focusPadding }) - } -} - -@Component -struct TabContentItem { - item: TabTitleBarTabItem - index: number - maxIndex: number - onCustomClick?: () => void - - @Prop currentIndex: number - - @State isOnFocus: boolean = false - @State isOnHover: boolean = false - @State isOnClick: boolean = false - - static readonly imageSize = 24 - static readonly imageHotZoneWidth = 48 - static readonly imageMagnificationFactor = 1.4 - static readonly buttonBorderRadius = 8 - static readonly focusBorderWidth = 2 - - getBgColor() { - if (this.isOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Row() { - Column() { - if (this.item.icon === undefined) { - Text(this.item.title) - .fontSize(this.index === this.currentIndex - ? $r('sys.float.ohos_id_text_size_headline7') - : $r('sys.float.ohos_id_text_size_headline9')) - .fontColor(this.index === this.currentIndex - ? $r('sys.color.ohos_id_color_titlebar_text') - : $r('sys.color.ohos_id_color_titlebar_text_off')) - .fontWeight(FontWeight.Medium) - .focusable(true) - .padding({ top: this.index === this.currentIndex ? 6 : 10, left: 8, bottom: 2, right: 8 }) - .onFocus(() => this.isOnFocus = true) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => this.isOnHover = isOn) - .onKeyEvent((event) => { - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.onCustomClick && this.onCustomClick()) - } else { - Row() { - Image(this.item.icon) - .alt(this.item.title) - .height(TabContentItem.imageSize) - .focusable(true) - .scale({ - x: this.index === this.currentIndex ? TabContentItem.imageMagnificationFactor : 1, - y: this.index === this.currentIndex ? TabContentItem.imageMagnificationFactor : 1 - }) - } - .width(TabContentItem.imageHotZoneWidth) - .height(TabContentItem.imageHotZoneWidth) - .justifyContent(FlexAlign.Center) - .onFocus(() => this.isOnFocus = true) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => this.isOnHover = isOn) - .onKeyEvent((event) => { - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.onCustomClick && this.onCustomClick()) - } - } - .justifyContent(FlexAlign.Center) - } - .height(TabTitleBar.totalHeight) - .alignItems(VerticalAlign.Center) - .justifyContent(FlexAlign.Center) - .margin({ - left: this.index === 0 ? 16 : 0, - right: this.index === this.maxIndex ? 12 : 0 - }) // sys.float.ohos_id_max_padding_start - 8 - .borderRadius(TabContentItem.buttonBorderRadius) - .backgroundColor(this.getBgColor()) - .border(this.isOnFocus ? - { width: TabContentItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - } -} - -@Component -struct ImageMenuItem { - item: TabTitleBarMenuItem - - static readonly imageSize = 24 - static readonly imageHotZoneWidth = 48 - static readonly buttonBorderRadius = 8 - static readonly focusBorderWidth = 2 - static readonly disabledImageOpacity = 0.4 - - @State isOnFocus: boolean = false - @State isOnHover: boolean = false - @State isOnClick: boolean = false - - getFgColor() { - return this.isOnClick - ? $r('sys.color.ohos_id_color_titlebar_icon_pressed') - : $r('sys.color.ohos_id_color_titlebar_icon') - } - - getBgColor() { - if (this.isOnClick) { - return $r('sys.color.ohos_id_color_click_effect') - } else if (this.isOnHover) { - return $r('sys.color.ohos_id_color_hover') - } else { - return Color.Transparent - } - } - - build() { - Row() { - Image(this.item.value) - .width(ImageMenuItem.imageSize) - .height(ImageMenuItem.imageSize) - .focusable(this.item.isEnabled) - } - .width(ImageMenuItem.imageHotZoneWidth) - .height(ImageMenuItem.imageHotZoneWidth) - .borderRadius(ImageMenuItem.buttonBorderRadius) - .foregroundColor(this.getFgColor()) - .backgroundColor(this.getBgColor()) - .justifyContent(FlexAlign.Center) - .opacity(this.item.isEnabled ? 1 : ImageMenuItem.disabledImageOpacity) - .border(this.isOnFocus ? - { width: ImageMenuItem.focusBorderWidth, - color: $r('sys.color.ohos_id_color_emphasize'), - style: BorderStyle.Solid - } : { width: 0 }) - .onFocus(() => { - if (!this.item.isEnabled) { - return - } - this.isOnFocus = true - }) - .onBlur(() => this.isOnFocus = false) - .onHover((isOn) => { - if (!this.item.isEnabled) { - return - } - this.isOnHover = isOn - }) - .onKeyEvent((event) => { - if (!this.item.isEnabled) { - return - } - if (event.keyCode !== KeyCode.KEYCODE_ENTER && event.keyCode !== KeyCode.KEYCODE_SPACE) { - return - } - if (event.type === KeyType.Down) { - this.isOnClick = true - } - if (event.type === KeyType.Up) { - this.isOnClick = false - } - }) - .onTouch((event) => { - if (!this.item.isEnabled) { - return - } - if (event.type === TouchType.Down) { - this.isOnClick = true - } - if (event.type === TouchType.Up) { - this.isOnClick = false - } - }) - .onClick(() => this.item.isEnabled && this.item.action && this.item.action()) - } -} - -export default { TabTitleBar } \ No newline at end of file diff --git a/source/ToolBar/ToolBar.ets b/source/ToolBar/ToolBar.ets deleted file mode 100644 index 06bf3fd..0000000 --- a/source/ToolBar/ToolBar.ets +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -export enum ItemState { - ENABLE = 1, - DISABLE = 2, - ACTIVATE = 3 -} - -const PUBLIC_MORE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAIGNIUk0AAHomAACAhAAA" + - "+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzA" + - "AAOxAAADsQBlSsOGwAAAYFJREFUeNrt3CFLQ1EUB/CpCwYRo8G4j2IwCNrUYjH4AfwcfgBBwWZRMNgtFqPdILJgEhGDweAZvDjmJnfv3I" + - "3fD/5l3DfOfWdv23vhdDoAAAAAAAAwzxam9L5rkePIdmSjee05chu5iHxXej5ar3saDdiJXDabGaYfOYg8VHbyU+peKryJvch1ZHnEmtXIY" + - "eQ+8lrJyU+re7HgJtYj52Ou7Uau/thwW1LrLtmAk8jKBOsH37FHFTQgte6SDdht6ZjSUusu2YBeS8eUllr3YvLmuzP6971bYwP6/zjmpYKT" + - "mVp3yQbctXRMaal1l2zAaeRngvUfkbMKGpBad8kbsffIZ2RrzPX7kacKGpBad+k74cfmE7I54ur6au4obyr6UU2re1oP43rNDc6wh1qDS/6t0" + - "n83s1o3AAAAAAAAAAAAAEAysyKS6zYrIrlusyKS6zYrwqyIdGZFJDMrIplZETPIrIh5qdusCLMi0pkVkcysiAqYFVEJsyIAAAAAAAAAKOYXUlF" + - "8EUcdfbsAAAAASUVORK5CYII="; - -@Observed -export class ToolBarOption { - content: string; - action?: () => void; - icon?: Resource; - state?: ItemState = 1; -} - -@Observed -export class ToolBarOptions extends Array { -} - -@Component -export struct ToolBar { - @ObjectLink toolBarList: ToolBarOptions - controller: TabsController - @Prop activateIndex: number = -1 - @State menuContent: { value: string, action: () => void }[] = [] - toolBarItemBackground: Resource[] = [] - @State itemBackground: Resource = $r('sys.color.ohos_id_color_toolbar_bg') - @Builder MoreTabBuilder(index: number) { - Column() { - Image(PUBLIC_MORE) - .width(24) - .height(24) - .fillColor($r('sys.color.ohos_id_color_toolbar_icon')) - .margin({ top: 8, bottom: 2 }) - .objectFit(ImageFit.Contain) - Text($r('app.string.id_string_more')) - .fontColor($r('sys.color.ohos_id_color_toolbar_text')) - .fontSize($r('sys.float.ohos_id_text_size_caption')) - .fontWeight(FontWeight.Medium) - }.width('100%').height('100%').bindMenu(this.menuContent, { offset: { x: 5, y : -10}}) - .padding({left: 4, right: 4}) - .borderRadius($r('sys.float.ohos_id_corner_radius_clicked')) - } - - @Builder TabBuilder(index: number) { - Column() { - Image(this.toolBarList[index].icon) - .width(24) - .height(24) - .fillColor(this.activateIndex === index && !(this.toolBarList[index].state === 2) - ? $r('sys.color.ohos_id_color_text_primary_activated') : $r('sys.color.ohos_id_color_primary')) - .opacity((this.toolBarList[index].state === 2) ? 0.4 : 1) - .margin({ top: 8, bottom: 2 }) - .objectFit(ImageFit.Contain) - Text(this.toolBarList[index].content) - .fontColor(this.activateIndex === index && !(this.toolBarList[index].state === 2) - ? $r('sys.color.ohos_id_color_toolbar_text_actived') : $r('sys.color.ohos_id_color_toolbar_text')) - .fontSize($r('sys.float.ohos_id_text_size_caption')) - .maxFontSize($r('sys.float.ohos_id_text_size_caption')) - .minFontSize(9) - .fontWeight(FontWeight.Medium) - .maxLines(2) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .opacity((this.toolBarList[index].state === 2) ? 0.4 : 1) - } - .width('100%').height('100%') - .focusable(!(this.toolBarList[index].state === 2)) - .focusOnTouch(!(this.toolBarList[index].state === 2)) - .padding({left: 4, right: 4}) - .borderRadius($r('sys.float.ohos_id_corner_radius_clicked')) - .backgroundColor(this.itemBackground) - .onClick(() => { - if (this.toolBarList[index].state === 3) { - if (this.activateIndex === index) - this.activateIndex = -1 - else { - this.activateIndex = index - } - } - if (!(this.toolBarList[index].state === 2)) { - this.toolBarList[index].action && this.toolBarList[index].action() - } - }) - .onHover((isHover: boolean) => { - if (isHover ) { - this.toolBarItemBackground[index] = (this.toolBarList[index].state === 2) - ? $r('sys.color.ohos_id_color_toolbar_bg'): $r('sys.color.ohos_id_color_hover') - } else { - this.toolBarItemBackground[index] = $r('sys.color.ohos_id_color_toolbar_bg') - } - this.itemBackground = this.toolBarItemBackground[index] - }) - .stateStyles({ - pressed: { - .backgroundColor((this.toolBarList[index].state === 2) ? this.toolBarItemBackground[index] : $r('sys.color.ohos_id_color_click_effect')) - }, - normal: { - .backgroundColor(this.toolBarItemBackground[index]) - } - }) - } - - refreshData() { - this.menuContent = [] - for (let i = 0; i < this.toolBarList.length; i++) { - if (i >= 4 && this.toolBarList.length > 5) { - this.menuContent[i - 4] = { - value: this.toolBarList[i].content, - action: this.toolBarList[i].action - } - } else { - this.toolBarItemBackground[i] = $r('sys.color.ohos_id_color_toolbar_bg') - this.menuContent = [] - } - } - return true - } - - aboutToAppear() { - this.refreshData() - } - build() { - Column() { - Divider().width('100%').height(1) - Column() { - Tabs({ barPosition: BarPosition.End, controller: this.controller}) { - ForEach(this.toolBarList, (item: ToolBarOption, index: number) => { - if (this.toolBarList.length <= 5) { - TabContent() { - }.tabBar(this.TabBuilder(index)) - .enabled(!(this.toolBarList[index].state === 2)) - .focusOnTouch(!(this.toolBarList[index].state === 2)) - } else if (index < 4){ - TabContent() { - }.tabBar(this.TabBuilder(index)) - .enabled(!(this.toolBarList[index].state === 2)) - .focusOnTouch(!(this.toolBarList[index].state === 2)) - } - }) - if (this.refreshData() && this.toolBarList.length > 5) { - TabContent() { - }.tabBar(this.MoreTabBuilder(4)) - } - } - .vertical(false) - .constraintSize({ minHeight: 56, maxHeight: 56}) - .barMode(BarMode.Fixed) - .onChange((index: number) => { - }) - .width('100%') - .backgroundColor($r('sys.color.ohos_id_color_toolbar_bg')) - }.width('100%') - } - } -} \ No newline at end of file diff --git a/source/TreeView/TreeView.ets b/source/TreeView/TreeView.ets deleted file mode 100644 index 8f56915..0000000 --- a/source/TreeView/TreeView.ets +++ /dev/null @@ -1,3327 +0,0 @@ -/* - * Copyright (c) 2023-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. - */ - -export namespace TreeView { - const IMAGE_NODE_HEIGHT: number = 24 - const IMAGE_NODE_WIDTH: number = 24 - const ITEM_WIDTH: number = 0 - const ITEM_HEIGHT: number = 44 - const ITEM_HEIGHT_INPUT: number = 32 - const BORDER_WIDTH_HAS: number = 2 - const BORDER_WIDTH_NONE: number = 0 - const NODE_HEIGHT: number = 44 - const LIST_ITEM_HEIGHT_NONE: number = 0 - const LIST_ITEM_HEIGHT: number = 48 - const SHADOW_OFFSETY: number = 10 - const FLAG_NUMBER: number = 2 - const DRAG_OPACITY: number = 0.4 - const DRAG_OPACITY_NONE: number = 1 - const FLAG_LINE_HEIGHT: string = '1.5vp' - const X_OFF_SET: string = '0vp' - const Y_OFF_SET: string = '2.75vp' - const Y_BOTTOM_OFF_SET: string = '-1.25vp' - const Y_BASE_PLATE_OFF_SET: string = '1.5vp' - const COLOR_SELECT: string = '#1A0A59F7' - const COLOR_IMAGE_ROW: string = '#00000000' - const COLOR_IMAGE_EDIT: string = '#FFFFFF' - const SHADOW_COLOR: string = '#00001E' - const GRAG_POP_UP_HEIGHT: string = '48' - const LEFT_PADDING: string = '8vp' - const RIGHT_PADDING: string = '8vp' - const FLOOR_MIN_WIDTH: string = '128vp' - const FLOOR_MAX_WIDTH: string = '208vp' - const TEXT_MIN_WIDTH: string = '80vp' - const TEXT_MAX_WIDTH: string = '160vp' - const MIN_WIDTH: string = '112vp' - const MAX_WIDTH: string = '192vp' - - export class TreeListener { - _events = [] - - constructor() { - } - - /* - * Event registration and processing. - * - * The event will not be destroyed after being processed. - * - * @param type Registered Events. - * @param callback Event callback. - * @since 10 - */ - public on(type: TreeListenType, callback: (callbackParam: CallbackParam) => void) { - if (Array.isArray(type)) { - for (let i = 0, l = type.length; i < l; i++) { - this.on(type[i], callback) - } - } else { - (this._events[type] || (this._events[type] = [])).push(callback) - } - } - - /* - * Event registration and processing. - * - * After the event is processed once, it will be destroyed. - * - * @param type Registered Events. - * @param callback Event callback. - * @since 10 - */ - public once(type: TreeListenType, callback: (callbackParam: CallbackParam) => void) { - let _self = this; - function handler() { - _self.off(type, handler); - callback.apply(null, [type, callback]); - } - - handler.callback = callback; - this.on(type, handler); - } - - /* - * Destroy event. - * - * @param type Registered Events. - * @param callback Event callback. - * @since 10 - */ - public off(type: TreeListenType, callback: (callbackParam: CallbackParam) => void) { - if (type == null) { - this._events = []; - } - if (Array.isArray(type)) { - for (let i = 0, l = type.length; i < l; i++) { - this.off(type[i], callback) - } - } - const cbs = this._events[type]; - if (!cbs) { - return; - } - if (callback == null) { - this._events[type] = null - } - let cb, i = cbs.length - while (i--) { - cb = cbs[i] - if (cb === callback || cb.callback === callback) { - cbs.splice(i, 1) - break - } - } - } - - /* - * Triggers all callbacks of an event with parameters. - * - * @param event Registered Events. - * @param argument Parameters returned by the callback event. - * @since 10 - */ - public emit(event, argument: any[]) { - let _self = this - if (!this._events[event]) { - return - } - let cbs = [...this._events[event]]; - if (cbs) { - for (let i = 0, l = cbs.length; i < l; i++) { - try { - cbs[i].apply(_self,argument) - } catch (e) { - new Error(e) - } - } - } - } - } - - /* - * TreeListenType listen type. - * - * @since 10 - */ - export enum TreeListenType { - NODE_ADD = "NodeAdd", - NODE_DELETE = "NodeDelete", - NODE_MODIFY = "NodeModify", - NODE_MOVE = "NodeMove", - NODE_CLICK = 'NodeClick', - } - - /* - * TreeListenerManager. - * - * @since 10 - */ - export class TreeListenerManager { - static readonly APP_KEY_EVENT_BUS = "app_key_event_bus"; - private appEventBus: TreeListener; - private constructor() { - this.appEventBus = new TreeListener(); - } - - /* - * Obtains the EventBusManager object. - * - * @since 10 - */ - public static getInstance(): TreeListenerManager { - if (AppStorage.Get(this.APP_KEY_EVENT_BUS) == null) { - AppStorage.SetOrCreate(this.APP_KEY_EVENT_BUS, new TreeListenerManager()) - } - return AppStorage.Get(this.APP_KEY_EVENT_BUS); - } - - /* - * Obtains the EventBus object. - * - * @since 10 - */ - public getTreeListener(): TreeListener { - return this.appEventBus; - } - } - - class BasicDataSource implements IDataSource { - private listeners: DataChangeListener[] = [] - - public totalCount(): number { - return 0 - } - public getData(index: number): any { - return undefined - } - - registerDataChangeListener(listener: DataChangeListener): void { - if (this.listeners.indexOf(listener) < 0) { - this.listeners.push(listener) - } - } - unregisterDataChangeListener(listener: DataChangeListener): void { - const pos = this.listeners.indexOf(listener); - if (pos >= 0) { - this.listeners.splice(pos, 1) - } - } - - notifyDataReload(): void { - this.listeners.forEach(listener => { - listener.onDataReloaded() - }) - } - notifyDataAdd(index: number): void { - this.listeners.forEach(listener => { - listener.onDataAdd(index) - }) - } - notifyDataChange(index: number): void { - this.listeners.forEach(listener => { - listener.onDataChange(index) - }) - } - notifyDataDelete(index: number): void { - this.listeners.forEach(listener => { - listener.onDataDelete(index) - }) - } - notifyDataMove(from: number, to: number): void { - this.listeners.forEach(listener => { - listener.onDataMove(from, to) - }) - } - } - - export enum Event { - TOUCH_DOWN = 0, - TOUCH_UP = 1, - HOVER = 3, - HOVER_OVER = 4, - FOCUS = 5, - BLUR = 6, - MOUSE_BUTTON_RIGHT = 7, - DRAG = 8 - } - - export enum MenuOperation { - ADD_NODE = 0, - REMOVE_NODE = 1, - MODIFY_NODE = 2, - COMMIT_NODE = 3 - } - - export enum PopUpType { - HINTS = 0, - WARNINGS = 1 - } - - export enum InputError { - INVALID_ERROR = 0, - LENGTH_ERROR = 1, - NONE = 2 - } - - export enum Flag { - DOWN_FLAG = 0, - UP_FLAG = 1, - NONE = 2 - } - - export class NodeItem { - private nodeItem: { imageNode?: ImageNode, - mainTitleNode?: MainTitleNode, - imageCollapse?: ImageNode}; - private childNodeInfo: { isHasChildNode: boolean, childNum: number, allChildNum: number }; - menu: () => void; - nodeLevel: number; - parentNodeId: number; - currentNodeId: number; - children: Array; - data: { isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon?: Resource, - primaryTitle?: string, - menu?: () => void, - objectCount?: number | string } - - constructor(data: { isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon?: Resource, - primaryTitle?: string, - menu?: () => void, - objectCount?: number | string }) { - this.data = data; - this.nodeLevel = -1; - this.parentNodeId = -1; - this.nodeItem = { imageNode: null, mainTitleNode: null, imageCollapse: null }; - this.childNodeInfo = { isHasChildNode: false, childNum: 0, allChildNum: 0 }; - this.menu = data.menu; - if (data.icon) { - this.nodeItem.imageNode = new ImageNode(data.icon, data.selectedIcon, data.editIcon, - $r('sys.float.ohos_id_alpha_content_fourth'), - IMAGE_NODE_HEIGHT, - IMAGE_NODE_WIDTH); - } - if (data.primaryTitle) { - this.nodeItem.mainTitleNode = new MainTitleNode(data.primaryTitle); - } - this.children = []; - } - - addImageCollapse(isHasChildNode: boolean) { - if (isHasChildNode) { - this.nodeItem.imageCollapse = new ImageNode($r('sys.media.ohos_ic_public_arrow_right'), null, null, - $r('sys.float.ohos_id_alpha_content_tertiary'), - IMAGE_NODE_HEIGHT, - IMAGE_NODE_WIDTH); - this.nodeItem.imageCollapse.itemRightMargin = ($r('sys.float.ohos_id_text_paragraph_margin_xs')); - } else { - this.nodeItem.imageCollapse = null; - } - } - - getNodeItem() { - return this.nodeItem; - } - - getChildNodeInfo() { - return this.childNodeInfo; - } - - getMenu(): () => void { - return this.menu; - } - - getCurrentNodeId() { - return this.currentNodeId; - } - - getIsFolder() { - return this.data.isFolder; - } - } - - class NodeBaseInfo { - public rightMargin: Resource | number; - private width: number; - private height: number; - constructor() { - } - - set itemWidth(width: number) { - this.width = width; - } - - get itemWidth(): number { - return this.width; - } - - set itemHeight(height: number) { - this.height = height; - } - - get itemHeight(): number { - return this.height; - } - - set itemRightMargin(rightMargin: Resource | number) { - this.rightMargin = rightMargin; - } - - get itemRightMargin() { - return this.rightMargin; - } - } - - export enum NodeStatus { - Expand = 0, - Collapse - } - - export enum InteractionStatus { - Normal = 0, - Selected, - Edit, - FinishEdit, - DragInsert, - FinishDragInsert - } - - export class ImageNode extends NodeBaseInfo { - private imageSource: Resource; - private imageNormalSource: Resource; - private imageSelectedSource: Resource; - private imageEditSource: Resource; - private imageOpacity: Resource; - private currentInteractionStatus: InteractionStatus; - private imageCollapseSource: Resource; - private imageCollapseDownSource: Resource; - private isImageCollapse: boolean; - private imageCollapseRightSource: Resource; - constructor(imageSource: Resource, itemSelectedIcon: Resource, itemEditIcon: Resource, - imageOpacity: Resource, itemWidth: number, itemHeight: number) { - super(); - this.rightMargin = $r('sys.float.ohos_id_elements_margin_horizontal_m'); - this.imageSource = imageSource; - this.imageNormalSource = imageSource; - if (itemSelectedIcon != null) { - this.imageSelectedSource = itemSelectedIcon; - } else { - this.imageSelectedSource = this.imageNormalSource; - } - if (itemEditIcon != null) { - this.imageEditSource = itemEditIcon; - } else { - this.imageEditSource = this.imageNormalSource; - } - this.imageOpacity = imageOpacity; - this.itemWidth = itemWidth; - this.itemHeight = itemHeight; - this.imageCollapseSource = imageSource; - this.imageCollapseDownSource = $r('sys.media.ohos_ic_public_arrow_down'); - this.imageCollapseRightSource = $r('sys.media.ohos_ic_public_arrow_right'); - this.isImageCollapse = true; - } - - get source() { - return this.imageSource; - } - - get normalSource() { - return this.imageNormalSource; - } - - get selectedSource() { - return this.imageSelectedSource; - } - - get editSource() { - return this.imageEditSource; - } - - get opacity() { - return this.imageOpacity; - } - - get noOpacity() { - return 1; - } - - get collapseSource() { - return this.imageCollapseSource; - } - - get isCollapse() { - return this.isImageCollapse; - } - - changeImageCollapseSource(nodeStatus: NodeStatus) { - if (nodeStatus == NodeStatus.Expand) { - this.imageCollapseSource = this.imageCollapseDownSource; - } else if (nodeStatus == NodeStatus.Collapse) { - this.imageCollapseSource = this.imageCollapseRightSource; - } - } - - setImageCollapseSource(interactionStatus: InteractionStatus, nodeStatus: NodeStatus) { - if (interactionStatus === InteractionStatus.Edit || interactionStatus === InteractionStatus.DragInsert) { - this.imageCollapseDownSource = $r('sys.media.ohos_ic_public_arrow_down'); - this.imageCollapseRightSource = $r('sys.media.ohos_ic_public_arrow_right'); - this.isImageCollapse = false; - } else if (interactionStatus === InteractionStatus.FinishEdit || - interactionStatus === InteractionStatus.FinishDragInsert) { - this.imageCollapseDownSource = $r('sys.media.ohos_ic_public_arrow_down'); - this.imageCollapseRightSource = $r('sys.media.ohos_ic_public_arrow_right'); - this.isImageCollapse = true; - } - this.imageCollapseSource = (nodeStatus == NodeStatus.Collapse) ? - this.imageCollapseRightSource : this.imageCollapseDownSource; - } - - setImageSource(interactionStatus: InteractionStatus) { - switch (interactionStatus) { - case InteractionStatus.Normal: - this.imageSource = this.imageNormalSource; - this.currentInteractionStatus = interactionStatus; - break; - case InteractionStatus.Selected: - if (this.currentInteractionStatus !== InteractionStatus.Edit) { - this.imageSource = this.imageSelectedSource; - this.currentInteractionStatus = interactionStatus; - } - break; - case InteractionStatus.Edit: - this.imageSource = this.imageEditSource; - this.currentInteractionStatus = interactionStatus; - break; - case InteractionStatus.FinishEdit: - this.imageSource = this.imageSelectedSource; - this.currentInteractionStatus = interactionStatus; - break; - case InteractionStatus.DragInsert: - this.imageSource = this.imageEditSource; - this.currentInteractionStatus = interactionStatus; - break; - case InteractionStatus.FinishDragInsert: - this.imageSource = this.imageNormalSource; - this.currentInteractionStatus = interactionStatus; - break; - default: - break; - } - } - } - - export class MainTitleNode extends NodeBaseInfo { - private mainTitleName: string; - private mainTitleSetting: { fontColor: Resource, fontSize: Resource, fontWeight: FontWeight } - private showPopUpTimeout: number; - constructor(mainTitleName: string) { - super(); - this.mainTitleName = mainTitleName; - this.itemWidth = ITEM_WIDTH; - this.itemHeight = ITEM_HEIGHT; - this.rightMargin = $r('sys.float.ohos_id_text_paragraph_margin_xs'); - this.mainTitleSetting = { fontColor: $r('sys.color.ohos_id_color_primary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Normal }; - this.showPopUpTimeout = 0; - } - setMainTitleSelected(isSelected: boolean): void { - if (isSelected) { - this.mainTitleSetting = { fontColor: $r('sys.color.ohos_id_color_text_primary_activated'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Regular }; - } else { - this.mainTitleSetting = { fontColor: $r('sys.color.ohos_id_color_primary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Normal }; - } - } - set title(text: string) { - this.mainTitleName = text; - } - get title(): string { - return this.mainTitleName; - } - - set popUpTimeout(showPopUpTimeout: number) { - this.showPopUpTimeout = showPopUpTimeout; - } - - get popUpTimeout() { - return this.showPopUpTimeout; - } - - get color(): Resource { - return this.mainTitleSetting.fontColor; - } - - - get size(): Resource { - return this.mainTitleSetting.fontSize; - } - - get weight(): FontWeight { - return this.mainTitleSetting.fontWeight; - } - - setMainTitleHighLight(isHighLight: boolean): void { - if (isHighLight) { - this.mainTitleSetting = { fontColor: $r('sys.color.ohos_id_color_primary_contrary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Regular }; - } else { - this.mainTitleSetting = { fontColor: $r('sys.color.ohos_id_color_primary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Normal }; - } - } - - } - - export class InputText extends NodeBaseInfo { - private inputTextSetting: { fontColor: Resource, fontSize: Resource, fontWeight: FontWeight } - private status: { normal: Resource, hover: Resource, press: Resource }; - private statusColor: Resource = $r('sys.color.ohos_id_color_background'); - private editItemColor: Resource = $r('sys.color.ohos_id_color_emphasize'); - private radius: Resource = $r('sys.float.ohos_id_corner_radius_default_xs') - constructor() { - super(); - this.itemWidth = ITEM_WIDTH; - this.itemHeight = ITEM_HEIGHT_INPUT; - this.rightMargin = $r('sys.float.ohos_id_text_paragraph_margin_xs'); - this.inputTextSetting = { - fontColor: $r('sys.color.ohos_id_color_text_primary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Normal }; - } - - get color(): Resource { - return this.inputTextSetting.fontColor; - } - - get size(): Resource { - return this.inputTextSetting.fontSize; - } - - get weight(): FontWeight { - return this.inputTextSetting.fontWeight; - } - - get borderRadius(): Resource { - return this.radius; - } - - get backgroundColor() { - return this.statusColor; - } - - get editColor() { - return this.editItemColor; - } - - get textInputStatusColor() { - return this.status; - } - } - - export class NodeInfo { - private childNodeInfo: { isHasChildNode: boolean, childNum: number, allChildNum: number }; - private parentNodeId: number; - private currentNodeId: number; - private nodeHeight: Resource | number; - private nodeLevel: number; - private nodeItem: { imageNode?: ImageNode, - inputText: InputText, - mainTitleNode?: MainTitleNode, - imageCollapse?: ImageNode }; - private nodeLeftPadding: number; - private nodeColor: Resource | string; - private nodeIsShow: boolean; - private status: { normal: Resource, hover: Resource, press: Resource, selected: string, highLight: Resource }; - private nodeBorder: { borderWidth: Resource | number, borderColor: Resource, borderRadius: Resource }; - private popUpInfo: { popUpIsShow: boolean, - popUpEnableArrow: boolean, - popUpColor: Resource, - popUpText: string | Resource, - popUpTextColor: Resource}; - private listItemHeight: number; - private menu: () => void; - private isShowTitle: boolean; - private isShowInputText: boolean; - private isSelected: boolean; - readonly borderWidth: {has: Resource | number, none: Resource | number } = - {has: BORDER_WIDTH_HAS/* 2vp */, none: BORDER_WIDTH_NONE/* 0vp */} - - /* parameter of the drag event.*/ - private nodeParam: { - isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon?: Resource, - primaryTitle?: string, - menu?: () => void, - secondaryTitle?: number | string - }; - private node: NodeItem; - private canShowFlagLine: boolean = false; - private isOverBorder: boolean = false; - private canShowBottomFlagLine: boolean = false; - private isHighLight: boolean = false; - private flagLineLeftMargin: number; - private isModify: boolean = false; - - constructor(node: NodeItem) { - this.childNodeInfo = node.getChildNodeInfo(); - this.nodeItem = { imageNode: null, inputText: null, mainTitleNode: null, imageCollapse: null }; - this.popUpInfo = { popUpIsShow: false, - popUpEnableArrow: false, - popUpColor: null, - popUpText: '', - popUpTextColor: null }; - this.nodeItem.imageNode = node.getNodeItem().imageNode; - this.nodeItem.inputText = new InputText(); - this.nodeItem.mainTitleNode = node.getNodeItem().mainTitleNode; - this.nodeItem.imageCollapse = node.getNodeItem().imageCollapse; - this.menu = node.menu; - this.parentNodeId = node.parentNodeId; - this.currentNodeId = node.currentNodeId; - this.nodeHeight = NODE_HEIGHT; - this.nodeLevel = node.nodeLevel; - this.nodeLeftPadding = node.nodeLevel * 12 + 8; // calculate left padding - this.nodeColor = $r('sys.color.ohos_id_color_background'); - this.nodeIsShow = (this.nodeLevel > 0) ? false : true; - this.listItemHeight = (this.nodeLevel > 0) ? LIST_ITEM_HEIGHT_NONE : LIST_ITEM_HEIGHT; - this.isShowTitle = true; - this.isShowInputText = false; - this.isSelected = false; - this.status = { normal: $r('sys.color.ohos_id_color_background_transparent'), - hover: $r('sys.color.ohos_id_color_hover'), - press: $r('sys.color.ohos_id_color_click_effect'), - selected: COLOR_SELECT, - highLight: $r('sys.color.ohos_id_color_activated') - }; - this.nodeBorder = { borderWidth: BORDER_WIDTH_NONE, - borderColor: $r('sys.color.ohos_id_color_focused_outline'), - borderRadius: $r('sys.float.ohos_id_corner_radius_clicked') - }; - this.flagLineLeftMargin = node.nodeLevel * 12 + 8; - this.node = node; - this.nodeParam = node.data; - } - - getPopUpInfo() { - return this.popUpInfo; - } - - setPopUpIsShow(isShow: boolean) { - this.popUpInfo.popUpIsShow = isShow; - } - - setPopUpEnableArrow(popUpEnableArrow: boolean) { - this.popUpInfo.popUpEnableArrow = popUpEnableArrow; - } - - setPopUpColor(color: Resource) { - this.popUpInfo.popUpColor = color; - } - - setPopUpText(text: string | Resource) { - this.popUpInfo.popUpText = text; - } - - setPopUpTextColor(popUpTextColor: Resource) { - this.popUpInfo.popUpTextColor = popUpTextColor; - } - - getIsShowTitle() { - return this.isShowTitle; - } - - getIsShowInputText() { - return this.isShowInputText; - } - - setTitleAndInputTextStatus(isModify: boolean) { - if (isModify) { - this.isShowTitle = false; - this.isShowInputText = true; - } else { - this.isShowTitle = true; - this.isShowInputText = false; - } - } - - handleImageCollapseAfterAddNode(isAddImageCollapse: boolean) { - // listTree this node already has ImageCollapse. - if (isAddImageCollapse) { - this.nodeItem.imageCollapse = new ImageNode($r('sys.media.ohos_ic_public_arrow_down'), null, null, - $r('sys.float.ohos_id_alpha_content_tertiary'), - IMAGE_NODE_HEIGHT, - IMAGE_NODE_WIDTH); - this.nodeItem.imageCollapse.itemRightMargin = ($r('sys.float.ohos_id_text_paragraph_margin_xs')); - } else { - this.nodeItem.imageCollapse = null; - } - } - - setNodeColor(nodeColor: Resource | string): void { - this.nodeColor = nodeColor; - } - - getNodeColor(): Resource | string { - return this.nodeColor; - } - - setListItemHeight(listItemHeight: number): void { - this.listItemHeight = listItemHeight; - } - - getListItemHeight(): number { - return this.listItemHeight; - } - - getNodeCurrentNodeId(): number { - return this.currentNodeId; - } - - getNodeParentNodeId(): number { - return this.parentNodeId; - } - - getNodeLeftPadding(): number { - return this.nodeLeftPadding; - } - - getNodeHeight(): Resource | number { - return this.nodeHeight; - } - - setNodeIsShow(nodeIsShow: boolean): void { - this.nodeIsShow = nodeIsShow; - } - - getNodeIsShow(): boolean { - return this.nodeIsShow; - } - - getNodeItem() { - return this.nodeItem; - } - - getNodeStatus() { - return this.status; - } - - getNodeBorder() { - return this.nodeBorder; - } - - setNodeBorder(isClearFocusStatus: boolean): void { - this.nodeBorder.borderWidth = isClearFocusStatus ? this.borderWidth.has : this.borderWidth.none; - } - - getChildNodeInfo() { - return this.childNodeInfo; - } - - getCurrentNodeId() { - return this.currentNodeId; - } - - getMenu() { - return this.menu; - } - - setIsSelected(isSelected: boolean) { - this.isSelected = isSelected; - } - - getIsSelected() { - return this.isSelected; - } - - /* To gain the information while to alter node. */ - getNodeInfoData() { - return this.nodeParam; - } - - /* To gain the tree Node(NodeItem) while to alter node. */ - public getNodeInfoNode() { - return this.node; - } - - public getIsFolder() { - return this.nodeParam.isFolder; - } - - public setCanShowFlagLine(canShowFlagLine: boolean) { - this.canShowFlagLine = canShowFlagLine; - } - - public getCanShowFlagLine(): boolean { - return this.canShowFlagLine; - } - - public setFlagLineLeftMargin(currentNodeLevel: number) { - this.flagLineLeftMargin = currentNodeLevel * 12 + 8; // calculate - } - - public getFlagLineLeftMargin(): number { - return this.flagLineLeftMargin; - } - - public getNodeLevel(): number { - return this.nodeLevel; - } - - public setIsOverBorder(isOverBorder: boolean) { - this.isOverBorder = isOverBorder; - } - - public getIsOverBorder() { - return this.isOverBorder; - } - - public setCanShowBottomFlagLine(canShowBottomFlagLine: boolean) { - this.canShowBottomFlagLine = canShowBottomFlagLine; - } - - public getCanShowBottomFlagLine() { - return this.canShowBottomFlagLine; - } - - public setIsHighLight(isHighLight: boolean) { - this.isHighLight = isHighLight; - } - - public getIsHighLight(): boolean { - return this.isHighLight; - } - - public setIsModify(isModify: boolean) { - this.isModify = isModify; - } - - public getIsModify(): boolean { - return this.isModify; - } - - } - - - export class ListNodeUtils { - private _root: NodeItem; - public addNewNodeId: number; - private readonly MaxNodeLevel = 50; - private readonly MAX_CN_LENGTH: number = 254; - private readonly MAX_EN_LENGTH: number = 255; - private readonly INITIAL_INVALID_VALUE = -1; - constructor() { - this._root = new NodeItem({}); - this._root.nodeLevel = -1; - this._root.parentNodeId = -1; - this._root.currentNodeId = -1; - } - - getNewNodeId() { - return this.addNewNodeId; - } - - traverseNodeDF(callback, root: NodeItem = this._root) { - let stack = [], found = false; - stack.unshift(root); - let currentNode = stack.shift(); - while(!found && currentNode) { - found = callback(currentNode) === true; - if (!found) { - stack.unshift(...currentNode.children); - currentNode = stack.shift(); - } - } - } - - traverseNodeBF(callback) { - let queue = []; - let found: boolean = false; - queue.push(this._root); - let currentNode: NodeItem = queue.shift(); - while(!found && currentNode) { - try { - found = callback(currentNode); - } catch(err) { - var e = err.name + " == " + err.message; - } - if (!found) { - queue.push(...currentNode.children) - currentNode = queue.shift(); - } - } - } - - private contains(callback, traversal) { - traversal.call(this, callback, true); - } - - private updateParentChildNum(parentNode: NodeItem, isAdd: boolean, count: number) { - let parentNodeId: number = parentNode.parentNodeId; - while(parentNodeId >= 0) { - this.traverseNodeDF((node: NodeItem): boolean => { - if (node.currentNodeId == parentNodeId) { - node.getChildNodeInfo().allChildNum = - isAdd ? node.getChildNodeInfo().allChildNum + count : node.getChildNodeInfo().allChildNum - count; - parentNodeId = node.parentNodeId; - return false; - } - return false; - }) - } - } - - findParentNodeId(currentNodeId: number): number { - let current = null, - callback = function(node): boolean { - if (node.currentNodeId == currentNodeId ) { - current = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - return current.parentNodeId; - } - - addNode(parentNodeId: number, - currentNodeId: number, - data: { isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon?: Resource, - primaryTitle?: string, - secondaryTitle?: number | string, - menu?: () => void, - }): ListNodeUtils { - if (this._root === null) { - this._root = new NodeItem({}); - this._root.nodeLevel = -1; - this._root.parentNodeId = -1; - this._root.currentNodeId = -1; - } - - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == parentNodeId ) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - if (parent) { - let currentNode: NodeItem = new NodeItem(data); - if (parent.nodeLevel > this.MaxNodeLevel) { - throw new Error('ListNodeUtils[addNode]: The level of the tree view cannot exceed 50.'); - } - currentNode.nodeLevel = parent.nodeLevel + 1; // nodeLevel - currentNode.parentNodeId = parentNodeId; - currentNode.currentNodeId = currentNodeId; - parent.children.push(currentNode); - parent.getChildNodeInfo().isHasChildNode = true; - parent.getChildNodeInfo().childNum = parent.children.length; - parent.getChildNodeInfo().allChildNum += 1; // childNum - parent.addImageCollapse(parent.getChildNodeInfo().isHasChildNode); - this.updateParentChildNum(parent, true, 1); - return this; - } else { - throw new Error('ListNodeUtils[addNode]: Parent node not found.'); - } - } - - findNodeIndex(children, currentNodeId: number) { - let index = this.INITIAL_INVALID_VALUE; - for (let i = 0, len = children.length; i < len; i++) { - if (children[i].currentNodeId === currentNodeId) { - index = i; - break; - } - } - return index; - } - - private freeNodeMemory(rootNode: NodeItem, removeNodeIdList: number[]) { - let deleteNode: NodeItem[] = []; - let callback = function(node): boolean { - deleteNode.push(node); - return false; - }; - this.traverseNodeDF(callback, rootNode); - deleteNode.forEach((value)=>{ - removeNodeIdList.push(value.currentNodeId); - value = null; - }) - } - - removeNode(currentNodeId: number, parentNodeId: number, traversal: any) { - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == parentNodeId) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, traversal); - - if (parent) { - let removeNodeIdList: number[] = []; - let index = this.findNodeIndex(parent.children, currentNodeId); - if (index < 0) { - throw new Error('Node does not exist.'); - } else { - var deleteNodeAllChildNum = parent.children[index].getChildNodeInfo().allChildNum + 1; - this.freeNodeMemory(parent.children[index], removeNodeIdList); - let node = parent.children.splice(index, 1); - node = null; - if (parent.children.length == 0) { - parent.addImageCollapse(false); - } - } - parent.getChildNodeInfo().childNum = parent.children.length; - parent.getChildNodeInfo().allChildNum -= (deleteNodeAllChildNum); - this.updateParentChildNum(parent, false, deleteNodeAllChildNum); - return removeNodeIdList; - } else { - throw new Error('Parent does not exist.'); - } - } - - getNewNodeInfo(nodeId: number) { - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == nodeId) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - let newNodeInfo: { isFolder: boolean, icon: Resource, selectedIcon: Resource, editIcon: Resource, menu: () => any, secondaryTitle: number | string } = - { isFolder: true, icon: null, selectedIcon: null, editIcon: null, menu: null, secondaryTitle: '' }; - if (parent) { - if (parent.children.length === 0) { - if (parent.getNodeItem().imageNode != null) { - newNodeInfo.icon = parent.getNodeItem().imageNode.normalSource; - newNodeInfo.selectedIcon = parent.getNodeItem().imageNode.selectedSource; - newNodeInfo.editIcon = parent.getNodeItem().imageNode.editSource; - newNodeInfo.menu = parent.getMenu(); - } else { - newNodeInfo.icon = null; - newNodeInfo.selectedIcon = null; - newNodeInfo.editIcon = null; - newNodeInfo.menu = parent.getMenu(); - } - } else if (parent.children.length > 0) { - if (parent.getNodeItem().imageNode != null) { - newNodeInfo.icon = (parent.children[0].getNodeItem().imageNode != null) ? - parent.children[0].getNodeItem().imageNode.normalSource : null; - newNodeInfo.selectedIcon = (parent.children[0].getNodeItem().imageNode != null) ? - parent.children[0].getNodeItem().imageNode.selectedSource : null; - newNodeInfo.editIcon = (parent.children[0].getNodeItem().imageNode != null) ? - parent.children[0].getNodeItem().imageNode.editSource : null; - newNodeInfo.menu = parent.children[0].getMenu(); - } else { - newNodeInfo.icon = null; - newNodeInfo.selectedIcon = null; - newNodeInfo.editIcon = null; - newNodeInfo.menu = parent.children[0].getMenu(); - } - } - } - return newNodeInfo; - } - - getClickChildId(nodeId: number) { - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == nodeId) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - if (parent) { - if (parent.children.length === 0) { - return []; - } else if (parent.children.length > 0) { - var nodeInfo: { itemId: number, itemIcon: Resource, itemTitle: string } = - { itemId: null, itemIcon: null, itemTitle: null } - var childrenNodeInfo: Array = new Array(parent.children.length); - for (let i = 0; i < childrenNodeInfo.length; i++) { - childrenNodeInfo[i] = 0; - } - for (let i = 0; i < parent.children.length && i < childrenNodeInfo.length; i++) { - childrenNodeInfo[i] = parent.children[i].currentNodeId; - } - return childrenNodeInfo; - } - } - return []; - } - - getClickNodeChildrenInfo(nodeId: number) { - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == nodeId) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - if (parent) { - if (parent.children.length === 0) { - return []; - } else if (parent.children.length > 0) { - var nodeInfo: { itemId: number, itemIcon: Resource, itemTitle: string } = - { itemId: null, itemIcon: null, itemTitle: null } - var childrenNodeInfo: Array<{ itemId: number, itemIcon: Resource, itemTitle: string, isFolder: boolean }> = new Array(parent.children.length); - for (let i = 0; i < childrenNodeInfo.length; i++) { - childrenNodeInfo[i] = { itemId: null, itemIcon: null, itemTitle: null, isFolder: null }; - } - for (let i = 0; i < parent.children.length && i < childrenNodeInfo.length; i++) { - childrenNodeInfo[i].itemId = parent.children[i].currentNodeId; - if (parent.children[i].getNodeItem().imageNode) { - childrenNodeInfo[i].itemIcon = parent.children[i].getNodeItem().imageNode.source; - } - if (parent.children[i].getNodeItem().mainTitleNode) { - childrenNodeInfo[i].itemTitle = parent.children[i].getNodeItem().mainTitleNode.title; - } - childrenNodeInfo[i].isFolder = parent.children[i].getIsFolder(); - } - return childrenNodeInfo; - } - } - return []; - } - - public checkMainTitleIsValid(title: string) : boolean { - let invalid = /[\\\/:*?"<>|]/; - let invalidLength = /^[\u4e00-\u9fa5]+$/; - if (invalid.test(title)) { - return false; - } - if ((invalidLength.test(title) && title.length > this.MAX_CN_LENGTH) || - (!invalidLength.test(title) && title.length > this.MAX_EN_LENGTH)) { - return false; - } - return true; - } - - /* - * DFS: Depth first traversal in drag event. - * @param callback - */ - dragTraverseNodeDF(callback, root: NodeItem = this._root, listNode) { - let stack = [], found = false; - stack.unshift(root); - let currentNode = stack.shift(); - while(!found && currentNode) { - found = callback(currentNode, listNode) === true; - if (!found) { - stack.unshift(...currentNode.children); - currentNode = stack.shift(); - } - } - } - - /* - * Add the first dragging node in dragging nodes - * 1.the first dragging node needs to distinguish the position to insert - */ - addDragNode(parentNodeId: number, - currentNodeId: number, - insertCurrentNodeId: number, - isAfter: boolean, - data: { isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon?: Resource, - primaryTitle?: string, - menu?: () => any, - objectCount?: number }): ListNodeUtils { - - if (this._root === null) { - this._root = new NodeItem({}); - this._root.nodeLevel = this.INITIAL_INVALID_VALUE; - this._root.parentNodeId = this.INITIAL_INVALID_VALUE; - this._root.currentNodeId = this.INITIAL_INVALID_VALUE; - } - - let parent = null, - callback = function(node): boolean { - if (node.currentNodeId == parentNodeId ) { - parent = node; - return true; - } - return false; - }; - this.contains(callback, this.traverseNodeBF); - if (parent) { - let currentNode: NodeItem = new NodeItem(data); - if (parent.nodeLevel > this.MaxNodeLevel) { - throw new Error('ListNodeUtils[addNode]: The level of the tree view cannot exceed 50.'); - } - currentNode.nodeLevel = parent.nodeLevel + 1; - currentNode.parentNodeId = parentNodeId; - currentNode.currentNodeId = currentNodeId; - let insertIndex: number = this.INITIAL_INVALID_VALUE; - if (parent.children.length) { - for (let i = 0; i < parent.children.length; i++) { - if ( parent.children[i].getCurrentNodeId() == insertCurrentNodeId) { - insertIndex = i; - break; - } - } - if (isAfter) { - parent.children.splice(insertIndex + 1, 0, currentNode); - } else { - parent.children.splice(insertIndex, 0, currentNode); - } - } else { - parent.children.push(currentNode); - } - parent.getChildNodeInfo().isHasChildNode = true; - parent.getChildNodeInfo().childNum = parent.children.length; - parent.getChildNodeInfo().allChildNum += 1; - parent.addImageCollapse(parent.getChildNodeInfo().isHasChildNode); - this.updateParentChildNum(parent, true, 1); - return this; - } else { - throw new Error('ListNodeUtils[addNode]: Parent node not found.'); - } - } - - } - - - export class ListNodeDataSource extends BasicDataSource { - readonly ROOT_NODE_ID = -1; - private listNodeUtils: ListNodeUtils = new ListNodeUtils(); - private listNode: NodeInfo[] = []; - private readonly INITIAL_INVALID_VALUE = -1; - private lastIndex: number = -1; // record the last focused node. - thisIndex: number = -1; // records clicked nodes in the current period. - private modifyNodeIndex: number = -1; // records the nodes edited in the current period. - modifyNodeId: number = -1 - private currentOperation: MenuOperation; - private expandAndCollapseInfo = new Map(); - private loadedNodeIdAndIndexMap = new Map(); // [currentNodeId, index] - private isTouchDown: boolean = false; - private appEventBus: TreeListener = TreeListenerManager.getInstance().getTreeListener(); - - /* parameter of the drag event. */ - private isInnerDrag: boolean = false; // Judge whether it is an internal drag event. - private isDrag: boolean = false; // It is used to handle events(For example, prevent press events) during global drag. - private draggingCurrentNodeId: number = this.INITIAL_INVALID_VALUE; // Record the current ID of the dragged node. - private draggingParentNodeId: number = this.INITIAL_INVALID_VALUE; // Record the parent ID of the dragged node. - private currentNodeInfo: NodeInfo = null; // To solve the problem of currentIndex missed in onDrop event. - private listItemOpacity : number = 1; // It is used to set the opacity of the node when dragged. - private lastPassIndex: number = this.INITIAL_INVALID_VALUE; // record the last passing node index in drag. - private lastPassId: number = this.INITIAL_INVALID_VALUE; // record the last passing node Id in drag. - private thisPassIndex: number = this.INITIAL_INVALID_VALUE; // record the current passing node in drag. - private lastDelayExpandIndex: number = this.INITIAL_INVALID_VALUE; // record last passing node in delay expand event. - private timeoutExpandId: number = this.INITIAL_INVALID_VALUE; - private lastTimeoutExpandId: number = this.INITIAL_INVALID_VALUE; - private clearTimeoutExpandId: number = this.INITIAL_INVALID_VALUE; - private timeoutHighLightId: number = this.INITIAL_INVALID_VALUE; - private lastTimeoutHighLightId: number = this.INITIAL_INVALID_VALUE; - private clearTimeoutHighLightId: number = this.INITIAL_INVALID_VALUE; - private lastDelayHighLightIndex: number = this.INITIAL_INVALID_VALUE; // record last passing node in HighLight event. - private lastDelayHighLightId: number = this.INITIAL_INVALID_VALUE; //record last passing node Id in HighLight event. - private nodeIdAndSubtitleMap = new Map(); // [currentNodeId, subtitle] - private flag: Flag = Flag.NONE; - private selectedParentNodeId: number = this.INITIAL_INVALID_VALUE; - private selectedParentNodeSubtitle: any = ''; - private insertNodeSubtitle: any = ''; - private currentFocusNodeId: number = this.INITIAL_INVALID_VALUE; - private lastFocusNodeId: number = this.INITIAL_INVALID_VALUE; - private addFocusNodeId: number = this.INITIAL_INVALID_VALUE; - - readonly FLAG_LINE: { flagLineHeight: string, - flagLineColor: Resource, - xOffset: string, - yTopOffset: string, - yBottomOffset: string, - yBasePlateOffset: string } = { - flagLineHeight: FLAG_LINE_HEIGHT, - flagLineColor: $r('sys.color.ohos_id_color_activated'), - xOffset: X_OFF_SET, - yTopOffset: Y_OFF_SET, - yBottomOffset: Y_BOTTOM_OFF_SET, - yBasePlateOffset: Y_BASE_PLATE_OFF_SET - } - - private readonly DRAG_POPUP: { floorConstraintSize: { minWidth: string, maxWidth: string }, - textConstraintSize: { minWidth1: string, maxWidth1: string, - minWidth2: string, maxWidth2: string }, - padding: { left: string, right: string }, - backgroundColor: ResourceColor, - height: string, - shadow: { radius: Resource, color: ResourceColor, offsetX?: number, offsetY?: number }, - borderRadius : Resource, - fontColor: Resource, - fontSize: Resource, - fontWeight: FontWeight - imageOpacity: Resource } = { - floorConstraintSize: { minWidth: FLOOR_MIN_WIDTH, maxWidth: FLOOR_MAX_WIDTH }, - textConstraintSize: { minWidth1: TEXT_MIN_WIDTH, maxWidth1: TEXT_MAX_WIDTH, minWidth2: MIN_WIDTH, maxWidth2: MAX_WIDTH }, - padding: { left: LEFT_PADDING, right: RIGHT_PADDING }, - backgroundColor: COLOR_IMAGE_EDIT, - height: GRAG_POP_UP_HEIGHT, - shadow: { radius: $r('sys.float.ohos_id_corner_radius_default_m'), color: SHADOW_COLOR, offsetX: 0, offsetY: SHADOW_OFFSETY }, - borderRadius: $r('sys.float.ohos_id_corner_radius_clicked'), - fontColor: $r('sys.color.ohos_id_color_primary'), - fontSize: $r('sys.float.ohos_id_text_size_body1'), - fontWeight: FontWeight.Regular, - imageOpacity: $r('sys.float.ohos_id_alpha_content_fourth') - } - - private readonly subTitle: { normalFontColor: Resource, - highLightFontColor: Resource, - fontSize: Resource, - fontWeight: FontWeight, - margin: { left: string, right: string } } = { - normalFontColor: $r('sys.color.ohos_id_color_secondary'), - highLightFontColor: $r('sys.color.ohos_id_color_primary_contrary'), - fontSize: $r('sys.float.ohos_id_text_size_body2'), - fontWeight: FontWeight.Regular, - margin: { left: '4vp', right: '24' } - } - - private changeNodeColor(index: number, color: Resource | string): void { - this.listNode[index].setNodeColor(color); - } - - private getNodeColor(index) { - return this.listNode[index].getNodeColor(); - } - - private handleFocusEffect(index: number, isClearFocusStatus: boolean) { - if (this.listNode[index].getNodeIsShow()) { - this.listNode[index].setNodeBorder(isClearFocusStatus); - } - } - - private setImageSource(index: number, interactionStatus: InteractionStatus) { - let nodeInfo: NodeInfo = this.listNode[index]; - nodeInfo.setIsSelected(interactionStatus === InteractionStatus.Selected || - interactionStatus === InteractionStatus.Edit || interactionStatus === InteractionStatus.FinishEdit); - if (nodeInfo.getNodeItem().mainTitleNode != null && interactionStatus != InteractionStatus.DragInsert && - interactionStatus != InteractionStatus.FinishDragInsert) { - nodeInfo.getNodeItem().mainTitleNode.setMainTitleSelected(interactionStatus === InteractionStatus.Selected || - interactionStatus === InteractionStatus.FinishEdit); - } - if (nodeInfo.getNodeItem().imageNode != null) { - nodeInfo.getNodeItem().imageNode.setImageSource(interactionStatus); - } - } - - private setImageCollapseSource(index: number, interactionStatus: InteractionStatus) { - let nodeInfo: NodeInfo = this.listNode[index]; - if (nodeInfo.getNodeItem().imageCollapse != null) { - nodeInfo.getNodeItem().imageCollapse.setImageCollapseSource(interactionStatus, - this.expandAndCollapseInfo.get(nodeInfo.getCurrentNodeId())); - } - } - - public clearLastIndexStatus() { - if (this.lastIndex == -1 || this.lastIndex >= this.listNode.length) { - return; - } - this.setImageSource(this.lastIndex, InteractionStatus.Normal); - this.changeNodeColor(this.lastIndex, this.listNode[this.lastIndex].getNodeStatus().normal); - this.handleFocusEffect(this.lastIndex, false); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.listNode[this.lastIndex].getCurrentNodeId())); - } - - private changeNodeStatus(clickIndex: number): void { - let thisIndex: number = clickIndex; - let tmp: NodeInfo[] = this.ListNode; - let nodeId = tmp[clickIndex].getCurrentNodeId(); - if (this.expandAndCollapseInfo.get(nodeId) == NodeStatus.Expand) { - this.expandAndCollapseInfo.set(nodeId, NodeStatus.Collapse); - tmp[thisIndex].getNodeItem().imageCollapse.changeImageCollapseSource(NodeStatus.Collapse); - } else if (this.expandAndCollapseInfo.get(nodeId) == NodeStatus.Collapse) { - this.expandAndCollapseInfo.set(nodeId, NodeStatus.Expand); - tmp[thisIndex].getNodeItem().imageCollapse.changeImageCollapseSource(NodeStatus.Expand); - } - } - - private handleExpandAndCollapse(clickIndex: number) { - let thisIndex: number = clickIndex; - let tmp: NodeInfo[] = this.ListNode; - let nodeId = tmp[thisIndex].getCurrentNodeId(); - if (!this.expandAndCollapseInfo.has(nodeId)) { - return; - } - - let rootNodeStatus: NodeStatus = this.expandAndCollapseInfo.get(nodeId); - if (tmp[thisIndex].getChildNodeInfo().isHasChildNode && rootNodeStatus == NodeStatus.Collapse) { - for(var i = 0; i < tmp[thisIndex].getChildNodeInfo().allChildNum; i++) { - tmp[thisIndex + 1 + i].setNodeIsShow(false); - tmp[thisIndex + 1 + i].setListItemHeight(LIST_ITEM_HEIGHT_NONE); - } - this.notifyDataReload(); - return; - } - - let childNum: number[] = new Array(tmp[thisIndex].getChildNodeInfo().childNum); - childNum[0] = thisIndex + 1; - let index = 1; - while(index < tmp[thisIndex].getChildNodeInfo().childNum) { - childNum[index] = childNum[index -1] + tmp[childNum[index - 1]].getChildNodeInfo().allChildNum + 1; - index++; - } - if (rootNodeStatus == NodeStatus.Expand) { - for(var i = 0; i < childNum.length; i++) { - tmp[childNum[i]].setNodeIsShow(true); - tmp[childNum[i]].setListItemHeight(LIST_ITEM_HEIGHT); - let nodeId = tmp[childNum[i]].getCurrentNodeId(); - if(this.expandAndCollapseInfo.get(nodeId) == NodeStatus.Expand) { - this.handleExpandAndCollapse(childNum[i]); - } - } - } - childNum = null; - this.notifyDataReload(); - } - - public init(listNodeUtils: ListNodeUtils) { - let index = 0; - this.listNode = []; - this.listNodeUtils = listNodeUtils; - this.loadedNodeIdAndIndexMap.clear(); - this.listNodeUtils.traverseNodeDF((node: NodeItem): boolean => { - if (node.currentNodeId >= 0) { - var nodeInfo: NodeInfo = new NodeInfo(node); - this.listNode.push(nodeInfo); - if (nodeInfo.getChildNodeInfo().isHasChildNode) { - this.expandAndCollapseInfo.set(nodeInfo.getCurrentNodeId(), NodeStatus.Collapse); - } - if (nodeInfo.getNodeIsShow()) { - this.loadedNodeIdAndIndexMap.set(nodeInfo.getCurrentNodeId(), index++); - } - if (nodeInfo.getIsFolder()) { - this.nodeIdAndSubtitleMap.set(nodeInfo.getCurrentNodeId(), - nodeInfo.getNodeInfoData().secondaryTitle || nodeInfo.getNodeInfoData().secondaryTitle == 0 ? - nodeInfo.getNodeInfoData().secondaryTitle : ''); - } - } - return false; - }); - } - - private refreshRemoveNodeData(removeNodeIdList: number[], parentNodeInfo: NodeInfo) { - let deleteIndexList: number[] = []; - for (let i = 0; i < removeNodeIdList.length; i++) { - for (let j = 0; j < this.listNode.length; j++) { - if (this.listNode[j].getNodeCurrentNodeId() == removeNodeIdList[i]) { - let currentNodeId = this.listNode[j].getNodeCurrentNodeId(); - if (this.loadedNodeIdAndIndexMap.has(currentNodeId)) { - // this.listNode index to lazyForEach index. - deleteIndexList.push(this.loadedNodeIdAndIndexMap.get(currentNodeId)); - } - let deleteNode = this.listNode.splice(j, 1); - deleteNode = null; // free memory - if (this.expandAndCollapseInfo.has(removeNodeIdList[i])) { - this.expandAndCollapseInfo.delete(removeNodeIdList[i]); // delete deleteNode expandAndCollapseInfo. - } - break; - } - } - } - deleteIndexList.forEach((value)=>{ - this.notifyDataDelete(value); // notifyDataDelete do not update data. - this.notifyDataChange(value); // call notifyDataChange to update data. - }) - let index: number = 0; - for (let i = 0; i < this.listNode.length; i++) { - if (this.listNode[i].getNodeCurrentNodeId() == parentNodeInfo.getNodeCurrentNodeId()) { - if (parentNodeInfo.getNodeItem().imageCollapse == null) { - this.listNode[i].handleImageCollapseAfterAddNode(false); - // delete deleteNode parentNode expandAndCollapseInfo. - this.expandAndCollapseInfo.delete(parentNodeInfo.getNodeCurrentNodeId()); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.listNode[i].getNodeCurrentNodeId())); - } - break; - } - } - let callbackParam: CallbackParam = {currentNodeId: parentNodeInfo.getNodeCurrentNodeId(), parentNodeId: parentNodeInfo.getNodeParentNodeId()}; - this.appEventBus.emit(TreeListenType.NODE_DELETE, [callbackParam]); - } - - private refreshAddNodeData(addNodeIdList: number[]) { - var addNodeInfo: NodeInfo; - this.listNodeUtils.traverseNodeDF((node: NodeItem): boolean => { - if (node.currentNodeId === addNodeIdList[0]) { - addNodeInfo = new NodeInfo(node); - return true; - } - return false; - }); - addNodeInfo.setIsModify(true); - - let index: number = 0; - for (let i = 0; i < this.listNode.length; i++) { - if (this.listNode[i].getNodeCurrentNodeId() == addNodeInfo.getNodeParentNodeId()) { - index = i; - if (this.listNode[i].getNodeItem().imageCollapse == null) { - this.listNode[i].handleImageCollapseAfterAddNode(true); - this.notifyDataChange(index); - } else if (this.expandAndCollapseInfo.get(this.listNode[i].getNodeCurrentNodeId()) == NodeStatus.Collapse) { - this.changeNodeStatus(index); - } - this.listNode.splice(i + 1, 0, addNodeInfo); - this.listNode[i + 1].setTitleAndInputTextStatus(true); // false->true: realize inner Interaction. - this.listNode[i + 1].setNodeIsShow(true); - this.listNode[i + 1].setListItemHeight(LIST_ITEM_HEIGHT); - this.setImageSource(i + 1, InteractionStatus.Edit); // Normal->Edit : realize inner Interaction. - this.currentOperation = MenuOperation.ADD_NODE; - this.notifyDataAdd(i + 1); - this.notificationNodeInfo(i+1, this.currentOperation); - break; - } - } - this.modifyNodeIndex = index + 1; - this.expandAndCollapseInfo.set(addNodeInfo.getNodeParentNodeId(), NodeStatus.Expand); - this.handleExpandAndCollapse(index); - } - - public refreshData(listNodeUtils: ListNodeUtils, operation: MenuOperation, - parentNodeId: number, changeNodeIdList: number[]) { - let parentNodeInfo: NodeInfo; - this.listNodeUtils = listNodeUtils; - this.listNodeUtils.traverseNodeDF((node: NodeItem): boolean => { - if (node.currentNodeId == parentNodeId) { - parentNodeInfo = new NodeInfo(node); - return true; - } - return false; - }); - - if (operation === MenuOperation.REMOVE_NODE) { - this.nodeIdAndSubtitleMap.set(parentNodeId, this.selectedParentNodeSubtitle); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(parentNodeId)); - this.refreshRemoveNodeData(changeNodeIdList, parentNodeInfo); - } - - if (operation === MenuOperation.ADD_NODE) { - this.addFocusNodeId = changeNodeIdList[0]; - this.nodeIdAndSubtitleMap.set(this.getClickNodeId(), this.selectedParentNodeSubtitle); - this.nodeIdAndSubtitleMap.set(changeNodeIdList[0], this.insertNodeSubtitle); - this.refreshAddNodeData(changeNodeIdList); - } - } - - public setClickIndex(index: number) { - this.thisIndex = index; - } - - public getClickNodeId(): number { - if (this.thisIndex < 0 || this.thisIndex >= this.ListNode.length) { - return -1; - } - return this.ListNode[this.thisIndex].getCurrentNodeId(); - } - - public expandAndCollapseNode(clickIndex: number) { - this.changeNodeStatus(clickIndex); - this.handleExpandAndCollapse(clickIndex) - } - - public getIsTouchDown(): boolean { - return this.isTouchDown; - } - - public getLastIndex(): number { - return this.lastIndex; - } - - public handleEvent(event: Event, index: number) { - /* Return while the event is dragging event. */ - if (this.isDrag) { - return; - } - - if (event === Event.TOUCH_DOWN || event === Event.TOUCH_UP || event === Event.MOUSE_BUTTON_RIGHT) { - if (index != this.lastIndex) { - this.clearLastIndexStatus(); - } - } - let lazyForEachIndex = this.loadedNodeIdAndIndexMap.get(this.listNode[index].getCurrentNodeId()); - switch(event) { - case Event.TOUCH_DOWN: - this.isTouchDown = true; - this.changeNodeColor(index, this.listNode[index].getNodeStatus().press); - break; - case Event.TOUCH_UP: { - if (this.isInnerDrag) { - this.isInnerDrag = false; - } - this.isTouchDown = false; - let nodeInfo: NodeInfo = this.listNode[index]; - this.setImageSource(index, InteractionStatus.Selected); - this.lastIndex = index; - this.changeNodeColor(index, nodeInfo.getNodeStatus().selected); - this.notifyDataChange(lazyForEachIndex); - break; - } - case Event.HOVER: - if (this.getNodeColor(index) != this.listNode[index].getNodeStatus().selected) { - this.changeNodeColor(index, this.listNode[index].getNodeStatus().hover); - this.notifyDataChange(lazyForEachIndex); - } - break; - case Event.HOVER_OVER: - if (this.getNodeColor(index) != this.listNode[index].getNodeStatus().selected) { - this.changeNodeColor(index, this.listNode[index].getNodeStatus().normal); - this.notifyDataChange(lazyForEachIndex); - } - break; - case Event.FOCUS: - this.handleFocusEffect(index, true); - this.notifyDataChange(lazyForEachIndex); - break; - case Event.BLUR: - this.handleFocusEffect(index, false); - this.notifyDataChange(lazyForEachIndex); - break; - case Event.MOUSE_BUTTON_RIGHT: - this.lastIndex = index; - this.finishEditing(); - break; - case Event.DRAG: - this.isTouchDown = false; - let nodeInfo: NodeInfo = this.listNode[index]; - this.setImageSource(index, InteractionStatus.Selected); - this.lastIndex = index; - this.changeNodeColor(index, nodeInfo.getNodeStatus().selected); - this.notifyDataChange(lazyForEachIndex); - break; - default: - break; - } - } - - private notificationNodeInfo(addNodeId: number, operation: MenuOperation) { - if (operation === MenuOperation.MODIFY_NODE) { - let modifyNodeInfo: NodeInfo = this.listNode[this.modifyNodeIndex]; - let backParamModify: CallbackParam = { currentNodeId: modifyNodeInfo.getNodeCurrentNodeId(), - parentNodeId: modifyNodeInfo.getNodeParentNodeId() } - this.appEventBus.emit(TreeListenType.NODE_MODIFY, - [backParamModify]); - } else if (operation === MenuOperation.ADD_NODE) { - let addNodeInfo: NodeInfo = this.listNode[addNodeId]; - let icon: Resource = (addNodeInfo.getNodeItem().imageNode != null) ? - addNodeInfo.getNodeItem().imageNode.source : null; - let selectedIcon: Resource = (addNodeInfo.getNodeItem().imageNode != null) ? - addNodeInfo.getNodeItem().imageNode.selectedSource : null; - let editIcon: Resource = (addNodeInfo.getNodeItem().imageNode != null) ? - addNodeInfo.getNodeItem().imageNode.editSource : null; - let callbackParam: CallbackParam = { currentNodeId: addNodeInfo.getNodeCurrentNodeId(), - parentNodeId: addNodeInfo.getNodeParentNodeId() } - this.appEventBus.emit(TreeListenType.NODE_ADD, - [callbackParam]); - } - } - - public finishEditing() { - if (this.modifyNodeIndex!= -1) { - this.setImageSource(this.modifyNodeIndex, InteractionStatus.FinishEdit); - this.setImageCollapseSource(this.modifyNodeIndex, InteractionStatus.FinishEdit); - this.listNode[this.modifyNodeIndex].setIsModify(false); - this.listNode[this.modifyNodeIndex].setTitleAndInputTextStatus(false); - this.notificationNodeInfo(this.modifyNodeIndex, this.currentOperation); - this.notifyDataChange(this.modifyNodeIndex); - } - } - - public setItemVisibilityOnEdit(nodeId: number, operation: MenuOperation) { - let index: number = -1; - if (nodeId == -1) { - return; - } - if (operation === MenuOperation.MODIFY_NODE) { - for (let i = 0; i < this.listNode.length; i++) { // nodeId to find index - if (this.listNode[i].getCurrentNodeId() == nodeId) { - index = i; - break; - } - } - let nodeInfo: NodeInfo = this.listNode[index]; - nodeInfo.setIsModify(true); - if (nodeInfo.getNodeItem().mainTitleNode === null) { - return; // no title - } - - this.currentOperation = MenuOperation.MODIFY_NODE; - nodeInfo.setTitleAndInputTextStatus(true); - this.setImageSource(index, InteractionStatus.Edit); - this.setImageCollapseSource(index, InteractionStatus.Edit); - this.modifyNodeIndex = index; - if (nodeInfo.getNodeItem().inputText) { - if (nodeInfo.getNodeItem().imageCollapse != null) { - nodeInfo.getNodeItem().inputText.rightMargin = - $r('sys.float.ohos_id_text_paragraph_margin_xs') - } else { - nodeInfo.getNodeItem().inputText.rightMargin = - $r('sys.float.ohos_id_elements_margin_horizontal_m') - } - } - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(nodeId)); - } - index = nodeId; - if (operation === MenuOperation.COMMIT_NODE) { - let nodeInfo: NodeInfo = this.listNode[index]; - nodeInfo.setTitleAndInputTextStatus(false); - nodeInfo.setIsModify(false); - this.setImageSource(index, InteractionStatus.FinishEdit); - this.setImageCollapseSource(index, InteractionStatus.FinishEdit); - this.notificationNodeInfo(this.modifyNodeIndex, this.currentOperation); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(nodeInfo.getCurrentNodeId())); - } - } - - public setPopUpInfo(popUpType: PopUpType, inputError: InputError, isShow: boolean, index: number) { - let nodeInfo: NodeInfo = this.listNode[index]; - nodeInfo.setPopUpIsShow(isShow); - // this.listNode index to lazyForEach index. - let lazyForEachIndex = this.loadedNodeIdAndIndexMap.get(nodeInfo.getCurrentNodeId()); - if (!isShow) { - this.notifyDataChange(lazyForEachIndex); - return; - } - if (popUpType === PopUpType.HINTS) { - if (nodeInfo.getNodeItem().mainTitleNode != null) { - nodeInfo.setPopUpText(nodeInfo.getNodeItem().mainTitleNode.title); - } else { - nodeInfo.setPopUpText(''); - nodeInfo.setPopUpIsShow(false); - } - nodeInfo.setPopUpEnableArrow(false); - nodeInfo.setPopUpColor($r('sys.color.ohos_id_color_background')); - nodeInfo.setPopUpTextColor($r('sys.color.ohos_id_color_text_secondary')); - } else if (popUpType === PopUpType.WARNINGS) { - if (nodeInfo.getNodeItem().inputText != null) { - if (inputError === InputError.INVALID_ERROR) { - nodeInfo.setPopUpText("invalid error"); - } else if (inputError === InputError.LENGTH_ERROR) { - nodeInfo.setPopUpText("length error"); - } - nodeInfo.setPopUpEnableArrow(true); - nodeInfo.setPopUpColor($r('sys.color.ohos_id_color_help_tip_bg')); - nodeInfo.setPopUpTextColor($r('sys.color.ohos_id_color_text_hint_contrary')); - } - } - this.notifyDataChange(lazyForEachIndex); - } - - public setShowPopUpTimeout(timeout: number, index: number) { - if (this.listNode[index].getNodeItem().mainTitleNode != null) { - this.listNode[index].getNodeItem().mainTitleNode.popUpTimeout = timeout; - } - // this.notifyDataChange(index) lazyForEachIndex; - let lazyForEachIndex = this.loadedNodeIdAndIndexMap.get(this.listNode[index].getCurrentNodeId()); - this.notifyDataChange(lazyForEachIndex); - } - - public setMainTitleNameOnEdit(index: number, text: string) { - this.modifyNodeIndex = index; - if (this.listNode[index].getNodeItem().mainTitleNode != null) { - this.listNode[index].getNodeItem().mainTitleNode.title = text; - // this.listNode index to lazyForEach index. - let lazyForEachIndex = this.loadedNodeIdAndIndexMap.get(this.listNode[index].getCurrentNodeId()); - this.notifyDataChange(lazyForEachIndex); - } - } - - public get ListNode(): NodeInfo[] { - return this.listNode; - } - - public totalCount(): number { - let count: number = 0; - let index: number = 0; - this.loadedNodeIdAndIndexMap.clear(); - for (let i =0 ; i < this.listNode.length; i++) { - if (this.listNode[i].getNodeIsShow()) { - this.loadedNodeIdAndIndexMap.set(this.listNode[i].getCurrentNodeId(), index++); - count++; - } - } - return count; - } - - public getData(index: number): any { - let count = 0; - for (let i = 0; i < this.listNode.length; i++) { - if (this.listNode[i].getNodeIsShow()) { - if (index == count) { - return this.listNode[i]; - } - count++; - } - } - return null; - } - - public addData(index: number, data: NodeInfo): void { - this.listNode.splice(index, 0, data) - this.notifyDataAdd(index) - } - - public pushData(data: NodeInfo): void { - this.listNode.push(data) - this.notifyDataAdd(this.listNode.length - 1) - } - - public setIsInnerDrag(isInnerDrag: boolean) { - this.isInnerDrag = isInnerDrag; - } - - public getIsInnerDrag(): boolean { - return this.isInnerDrag; - } - - public setIsDrag(isDrag: boolean) { - this.isDrag = isDrag; - } - - public getIsDrag(): boolean { - return this.isDrag; - } - - public setCurrentNodeInfo(currentNodeInfo: NodeInfo) { - this.currentNodeInfo = currentNodeInfo; - } - - public getCurrentNodeInfo() { - return this.currentNodeInfo; - } - - public setDraggingParentNodeId(draggingParentNodeId: number) { - this.draggingParentNodeId = draggingParentNodeId; - } - - public getDraggingParentNodeId() { - return this.draggingParentNodeId; - } - - public getDraggingCurrentNodeId() { - return this.draggingCurrentNodeId; - } - - public setDraggingCurrentNodeId(draggingCurrentNodeId: number) { - this.draggingCurrentNodeId = draggingCurrentNodeId; - } - - public setListItemOpacity(listItemOpacity: number) { - this.listItemOpacity = listItemOpacity; - } - - public getListItemOpacity(item: NodeInfo) { - return item.getCurrentNodeId() == this.getDraggingCurrentNodeId() ? this.listItemOpacity : 1; - } - - public getDragPopupPara() { - return this.DRAG_POPUP; - } - - public setLastPassIndex(lastPassIndex: number) { - this.lastPassIndex = lastPassIndex; - } - - public getLastPassIndex(): number { - return this.lastPassIndex; - } - - public getIsParentOfInsertNode(insertNodeId: number): boolean { - let selectedNodeItem: NodeItem = this.currentNodeInfo.getNodeInfoNode(); - let isParentNodeOfInsertNode = false, - callback = function(node): boolean { - if (node.currentNodeId == insertNodeId ) { - isParentNodeOfInsertNode = true; - return true; - } - return false; - }; - this.listNodeUtils.traverseNodeDF(callback, selectedNodeItem); - return isParentNodeOfInsertNode; - } - - public setPassIndex(thisPassIndex: number) { - this.thisPassIndex = thisPassIndex; - } - - public getPassIndex(): number { - return this.thisPassIndex; - } - - public clearTimeOutAboutDelayHighLightAndExpand(currentIndex: number) { - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let index: number = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - let that =this; - this.ListNode.forEach(function(value) { - if (value.getNodeCurrentNodeId() == that.lastPassId) { - value.setCanShowFlagLine(false); - } - }) - this.notifyDataChange(index); - } - - if ((this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutHighLightId != this.lastTimeoutHighLightId)) { - clearTimeout(this.lastTimeoutHighLightId); - if (this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE) { - this.clearHighLight(this.lastDelayHighLightIndex); - let index: number = this.loadedNodeIdAndIndexMap - .get(this.listNode[this.lastDelayHighLightIndex].getCurrentNodeId()); - this.notifyDataChange(index); - } - this.clearTimeoutHighLightId = this.lastTimeoutHighLightId; - } - this.lastTimeoutHighLightId = this.timeoutHighLightId; - this.lastDelayHighLightIndex = currentIndex; - - if ((this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutExpandId != this.lastTimeoutExpandId)) { - clearTimeout(this.lastTimeoutExpandId); - this.clearTimeoutExpandId = this.lastTimeoutExpandId; - } - this.lastTimeoutExpandId = this.timeoutExpandId; - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE; - } - - public clearHighLight(currentIndex: number) { - this.changeNodeColor(currentIndex, this.listNode[currentIndex].getNodeStatus().normal); - this.changeNodeHighLightColor(currentIndex, false); - this.setImageSource(currentIndex, InteractionStatus.FinishDragInsert); - this.setImageCollapseSource(currentIndex, InteractionStatus.FinishDragInsert); - this.listNode[currentIndex].setIsHighLight(false); - } - - private changeNodeHighLightColor(index: number, isHighLight: boolean): void { - if (this.listNode[index].getNodeItem().mainTitleNode && this.listNode[index].getIsShowTitle()) { - this.listNode[index].getNodeItem().mainTitleNode.setMainTitleHighLight(isHighLight); - } - } - - public setVisibility(flag: Flag, index: number, isOverBorder: boolean) { - let isChanged: boolean = (this.thisPassIndex != index || this.flag != flag) ? true : false; - this.thisPassIndex = index; - if ((isChanged || isOverBorder) && this.isInnerDrag) { - this.flag = flag; - let currentNodeId: number = this.getData(index).getCurrentNodeId(); - let currentNodeLevel: number = this.expandAndCollapseInfo.get(currentNodeId) == NodeStatus.Expand && - this.flag == Flag.DOWN_FLAG ? this.getData(index).getNodeLevel() + 1 : this.getData(index).getNodeLevel(); - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let lastIndex: number = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - let that = this; - this.ListNode.forEach(function (value) { - if (value.getNodeCurrentNodeId() == that.lastPassId) { - value.setCanShowFlagLine(false); - } - }) - this.notifyDataChange(lastIndex); - } - if (this.flag == Flag.DOWN_FLAG && index < this.totalCount() - 1) { - this.getData(index).setCanShowFlagLine(false); - this.getData(index+1).setCanShowFlagLine(true); - this.getData(index).setCanShowBottomFlagLine(false); - this.getData(index+1).setFlagLineLeftMargin(currentNodeLevel); - this.notifyDataChange(index); - this.notifyDataChange(index + 1); - this.lastPassId = this.getData(index + 1).getNodeCurrentNodeId(); - } else if (this.flag == Flag.UP_FLAG && index < this.totalCount() - 1) { - this.getData(index).setCanShowFlagLine(true); - this.getData(index+1).setCanShowFlagLine(false); - this.getData(index).setCanShowBottomFlagLine(false); - this.getData(index).setFlagLineLeftMargin(currentNodeLevel); - this.notifyDataChange(index); - this.notifyDataChange(index + 1); - this.lastPassId = this.getData(index).getNodeCurrentNodeId(); - } else if (index >= this.totalCount() - 1) { - if (this.flag == Flag.DOWN_FLAG) { - this.getData(index).setCanShowFlagLine(false); - this.getData(index).setCanShowBottomFlagLine(true); - } else { - this.getData(index).setCanShowFlagLine(true); - this.getData(index).setCanShowBottomFlagLine(false); - } - this.getData(index).setFlagLineLeftMargin(currentNodeLevel); - this.notifyDataChange(index); - this.lastPassId = this.getData(index).getNodeCurrentNodeId(); - } - } - } - - public delayHighLightAndExpandNode(currentIndex: number, currentNodeId: number, showIndex: number) { - let isChangIndex: boolean = currentIndex != this.lastDelayExpandIndex ? true : false; - let isOverBorder: boolean = this.getData(showIndex).getIsOverBorder(); - if (isOverBorder) { - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE; - } else { - this.lastDelayExpandIndex = currentIndex; - } - if (isOverBorder || isChangIndex) { - let that = this; - - /* highLight node time-out. */ - let canDelayHighLight: boolean = !isOverBorder && (!this.isInnerDrag || - (this.expandAndCollapseInfo.get(currentNodeId) == NodeStatus.Collapse && this.isInnerDrag) || - (!this.expandAndCollapseInfo.has(currentNodeId) && this.listNode[currentIndex].getIsFolder())); - if (canDelayHighLight) { - /* set hoverState color before highLight. */ - this.changeNodeColor(currentIndex, this.listNode[currentIndex].getNodeStatus().hover); - this.notifyDataChange(showIndex); - - let delayHighLightTime: number = this.isInnerDrag ? 1000 : 0; // ms - this.timeoutHighLightId = setTimeout(function() { - that.delayHighLight(currentIndex); - }, delayHighLightTime) - } - if (isOverBorder || (this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutHighLightId != this.lastTimeoutHighLightId)) { - clearTimeout(this.lastTimeoutHighLightId); - if (this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE) { - this.clearHighLight(this.lastDelayHighLightIndex); - this.notifyDataReload(); - } - this.clearTimeoutHighLightId = this.lastTimeoutHighLightId; - } - this.lastTimeoutHighLightId = this.timeoutHighLightId; - this.lastDelayHighLightIndex = currentIndex; - - /* alter flagLine and expand node time-out. */ - if (!isOverBorder && this.expandAndCollapseInfo.get(currentNodeId) == NodeStatus.Collapse) { - let firstChildNodeId: number = this.getData(showIndex).getNodeInfoNode().children[0].currentNodeId; - let delayAlterFlagLineAndExpandNodeTime: number = 2000; // ms - this.timeoutExpandId = setTimeout(function() { - that.clearHighLight(that.lastDelayHighLightIndex); - that.alterFlagLineAndExpandNode(currentIndex, firstChildNodeId); - }, delayAlterFlagLineAndExpandNodeTime) - } - if (isOverBorder || (this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutExpandId != this.lastTimeoutExpandId)) { - clearTimeout(this.lastTimeoutExpandId); - this.clearTimeoutExpandId = this.lastTimeoutExpandId; - } - this.lastTimeoutExpandId = this.timeoutExpandId; - } - } - - public delayHighLight(currentIndex: number) { - let that =this; - this.ListNode.forEach(function (value) { - if (value.getNodeCurrentNodeId() == that.lastPassId) { - value.setCanShowFlagLine(false); - value.setCanShowBottomFlagLine(false); - } - }) - this.changeNodeColor(currentIndex, this.listNode[currentIndex].getNodeStatus().highLight); - this.listNode[currentIndex].setIsHighLight(true); - this.changeNodeHighLightColor(currentIndex, true); - this.setImageSource(currentIndex, InteractionStatus.DragInsert); - this.setImageCollapseSource(currentIndex, InteractionStatus.DragInsert); - this.notifyDataReload(); - } - - public alterFlagLineAndExpandNode(currentIndex: number, firstChildNodeId: number) { - let that =this; - this.ListNode.forEach(function (value) { - if (value.getNodeCurrentNodeId() == that.lastPassId) { - value.setCanShowFlagLine(false); - value.setCanShowBottomFlagLine(false); - } - }) - this.ListNode.forEach(function (value) { - if (that.isInnerDrag && value.getNodeCurrentNodeId() == firstChildNodeId) { - value.setCanShowFlagLine(true); - } - }) - this.changeNodeStatus(currentIndex); - this.handleExpandAndCollapse(currentIndex); - this.lastPassId = firstChildNodeId; - } - - public hideLastLine() { - if (this.lastPassId != this.INITIAL_INVALID_VALUE && this.loadedNodeIdAndIndexMap.has(this.lastPassId)) { - let that = this; - this.ListNode.forEach(function (value) { - if (value.getNodeCurrentNodeId() == that.lastPassId) { - value.setCanShowFlagLine(false); - value.setCanShowBottomFlagLine(false); - } - }) - let index: number = this.loadedNodeIdAndIndexMap.get(this.lastPassId); - this.notifyDataChange(index); - } - } - - public clearLastTimeoutHighLight() { - if (this.lastTimeoutHighLightId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutHighLightId != this.lastTimeoutHighLightId) { - clearTimeout(this.lastTimeoutHighLightId); - if (this.lastDelayHighLightIndex != this.INITIAL_INVALID_VALUE) { - this.clearHighLight(this.lastDelayHighLightIndex); - } - } - } - - public clearLastTimeoutExpand() { - if (this.lastTimeoutExpandId != this.INITIAL_INVALID_VALUE && - this.clearTimeoutExpandId != this.lastTimeoutExpandId) { - clearTimeout(this.lastTimeoutExpandId); - } - } - - public getSubtitle(currentNodeId: number): string { - if (this.nodeIdAndSubtitleMap.has(currentNodeId)) { - if (typeof this.nodeIdAndSubtitleMap.get(currentNodeId) == "number") { - return this.nodeIdAndSubtitleMap.get(currentNodeId).toString(); - } else { - return this.nodeIdAndSubtitleMap.get(currentNodeId) - } - } else { - return ''; - } - } - - public hasSubtitle(currentNodeId: number) { - return this.nodeIdAndSubtitleMap.has(currentNodeId); - } - - public initialParameterAboutDelayHighLightAndExpandIndex() { - this.lastDelayHighLightIndex = this.INITIAL_INVALID_VALUE; - this.lastDelayExpandIndex = this.INITIAL_INVALID_VALUE; - this.lastPassIndex = this.INITIAL_INVALID_VALUE; - this.draggingCurrentNodeId = this.INITIAL_INVALID_VALUE; - this.flag = Flag.NONE; - } - - public refreshSubtitle(insertNodeCurrentNodeId: number) { - this.nodeIdAndSubtitleMap.set(this.selectedParentNodeId, this.selectedParentNodeSubtitle); - this.nodeIdAndSubtitleMap.set(insertNodeCurrentNodeId, this.insertNodeSubtitle); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(this.selectedParentNodeId)); - this.notifyDataChange(this.loadedNodeIdAndIndexMap.get(insertNodeCurrentNodeId)); - } - - public setNodeSubtitlePara( - selectedParentNodeId: number, - selectedParentNodeSubtitle: ResourceStr, - insertNodeSubtitle: ResourceStr - ) { - this.selectedParentNodeId = selectedParentNodeId; - this.selectedParentNodeSubtitle = selectedParentNodeSubtitle; - this.insertNodeSubtitle = insertNodeSubtitle; - } - - public getInsertNodeSubtitle() { - return this.insertNodeSubtitle; - } - - public getExpandAndCollapseInfo(currentNodeId: number) { - return this.expandAndCollapseInfo.get(currentNodeId); - } - - public getLastDelayHighLightId() { - return this.lastDelayHighLightId; - } - - public setLastDelayHighLightId() { - this.ListNode.forEach((value, index) => { - if (index == this.lastDelayHighLightIndex) { - this.lastDelayHighLightId = value.getCurrentNodeId(); - } - }) - } - - public setLastPassId(lastPassId: number) { - this.lastPassId = lastPassId; - } - - public setLastDelayHighLightIndex(lastDelayHighLightIndex) { - this.lastDelayHighLightIndex = lastDelayHighLightIndex; - } - - /* - * Alter the current node location to a needful position. - * 1.Create an array named 'dragNodeParam' to store dragging node information. - * 2.Delete the dragging node from the tree. - * 3.Add the dragging node to the tree. - */ - public alterDragNode(rearParentNodeId: number, rearCurrentNodeId: number, insertNodeInfo: NodeInfo, - dragParentNodeId: number, dragCurrentNodeId: number, frontNodeInfoItem: NodeInfo) { - let dragNodeParam: { parentId: number, currentId: number, data: any }[] = []; - let parentNodeId: number = rearParentNodeId; - let currentNodeId: number = dragCurrentNodeId; - let nodeParam = frontNodeInfoItem.getNodeInfoData(); - let nodeInfo: NodeInfo = null; - let nodeInfoNode: NodeItem = frontNodeInfoItem.getNodeInfoNode(); - let isHighLight : boolean = false; - let insertChildIndex: number = this.INITIAL_INVALID_VALUE; - let currentChildIndex: number = this.INITIAL_INVALID_VALUE; - let isDownFlag: boolean = this.flag == Flag.DOWN_FLAG ? true : false; - - currentChildIndex = this.getChildIndex(dragParentNodeId, dragCurrentNodeId); - insertChildIndex = this.getChildIndex(rearParentNodeId, rearCurrentNodeId); - - if (rearParentNodeId != dragParentNodeId) { - insertChildIndex = isDownFlag ? insertChildIndex + 1 : insertChildIndex; - } else { - if (insertChildIndex > currentChildIndex) { - insertChildIndex = isDownFlag ? insertChildIndex : insertChildIndex - 1; - } else { - insertChildIndex = isDownFlag ? insertChildIndex + 1 : insertChildIndex; - } - } - - for (let i = 0; i < this.listNode.length; i++) { - if (this.listNode[i].getCurrentNodeId() == rearCurrentNodeId) { - isHighLight = this.listNode[i].getIsHighLight(); - if (this.flag == Flag.DOWN_FLAG && this.expandAndCollapseInfo.get(rearCurrentNodeId) == NodeStatus.Expand) { - parentNodeId = rearCurrentNodeId; - insertChildIndex = 0; - } else if (this.flag == Flag.UP_FLAG && this.expandAndCollapseInfo.get(rearCurrentNodeId) == NodeStatus.Expand - && this.listNode[i].getCanShowFlagLine() == false) { - parentNodeId = rearCurrentNodeId; - insertChildIndex = 0; - } else if (isHighLight) { - parentNodeId = rearCurrentNodeId; - insertChildIndex = 0; - } - break; - } - } - - let callbackParam: CallbackParam = { currentNodeId: currentNodeId, parentNodeId: parentNodeId, childIndex: insertChildIndex } - - /* export inner drag node Id. */ - this.appEventBus.emit(TreeListenType.NODE_MOVE, [callbackParam]); - - /* To store dragging node information by the array named 'dragNodeParam'. */ - dragNodeParam.push({parentId: parentNodeId, currentId: currentNodeId, data: nodeParam}); - - let oneself = null, - callback = function(node, listNode): boolean { - if (node) { - oneself = node; - parentNodeId = oneself.parentNodeId; - currentNodeId = oneself.currentNodeId; - for (let i = 0; i < listNode.length; i++) { - if (listNode[i].getNodeCurrentNodeId() == currentNodeId) { - nodeInfo = listNode[i]; - break; - } - } - nodeParam = nodeInfo.getNodeInfoData(); - if (parentNodeId != dragParentNodeId) { - dragNodeParam.push({parentId: parentNodeId, currentId: currentNodeId, data: nodeParam}); - } - return false; - } - return false; - } - this.listNodeUtils.dragTraverseNodeDF(callback, nodeInfoNode, this.listNode); - - /* Delete the dragging node from the tree. */ - this.listNodeUtils.removeNode(dragCurrentNodeId, dragParentNodeId, this.listNodeUtils.traverseNodeBF); - - /* - * Add the dragging node to the tree - * 1.The first dragging node is added singly, because it needs to distinguish the position to insert - * - * Add first node. - */ - let insertCurrentNodeId: number = rearCurrentNodeId; - let isAfter: boolean = isDownFlag; - if (this.expandAndCollapseInfo.get(rearCurrentNodeId) == NodeStatus.Expand) { - isAfter = false; - this.listNode.forEach((value) => { - if (value.getCurrentNodeId() == rearCurrentNodeId && value.getCanShowFlagLine() == false) { - if (value.getNodeInfoNode().children.length) { - insertCurrentNodeId = value.getNodeInfoNode().children[0].currentNodeId; - } else { - insertCurrentNodeId = this.INITIAL_INVALID_VALUE; - } - } - }) - } else if (!this.expandAndCollapseInfo.get(rearCurrentNodeId) && isHighLight) { - this.expandAndCollapseInfo.set(rearCurrentNodeId, NodeStatus.Expand); - } - - this.listNodeUtils.addDragNode(dragNodeParam[0].parentId, dragNodeParam[0].currentId, insertCurrentNodeId, - isAfter, dragNodeParam[0].data); - - /* Add remaining node. */ - for (let j = 1; j < dragNodeParam.length; j++) { - this.listNodeUtils.addNode(dragNodeParam[j].parentId, dragNodeParam[j].currentId, dragNodeParam[j].data); - } - - /* Update node data and reload the array named 'listNode'. */ - for (let i = 0; i < this.listNode.length; i++) { - if (this.listNode[i].getCurrentNodeId() == dragParentNodeId) { - if (this.listNode[i].getNodeInfoNode().getNodeItem().imageCollapse == null) { - this.listNode[i].handleImageCollapseAfterAddNode(false); - this.expandAndCollapseInfo.delete(dragParentNodeId); - break; - } - } - } - let tmp: NodeInfo[] = [...this.listNode]; - this.reloadListNode(this.listNodeUtils, tmp); - - } - - /* - * Reload the array named 'listNode' - * @param listNodeUtils - * @param tmp - */ - public reloadListNode(listNodeUtils: ListNodeUtils, tmp: NodeInfo[]) { - let index = 0; - this.listNode = []; - this.listNodeUtils = listNodeUtils; - this.loadedNodeIdAndIndexMap.clear(); - this.listNodeUtils.traverseNodeDF((node: NodeItem): boolean => { - if (node.currentNodeId >= 0) { - var nodeInfo: NodeInfo = new NodeInfo(node); - this.listNode.push(nodeInfo); - - if (this.expandAndCollapseInfo.get(node.currentNodeId) == NodeStatus.Expand) { - nodeInfo.getNodeItem().imageCollapse.changeImageCollapseSource(NodeStatus.Expand); - } else if (this.expandAndCollapseInfo.get(node.currentNodeId) == NodeStatus.Collapse) { - nodeInfo.getNodeItem().imageCollapse.changeImageCollapseSource(NodeStatus.Collapse); - } - - for (let i = 0; i < tmp.length; i++){ - if (tmp[i].getCurrentNodeId() == nodeInfo.getCurrentNodeId()) { - nodeInfo.setNodeIsShow(tmp[i].getNodeIsShow()); - nodeInfo.setListItemHeight(tmp[i].getListItemHeight()); - if (nodeInfo.getNodeItem().mainTitleNode && nodeInfo.getIsShowTitle()) { - nodeInfo.getNodeItem().mainTitleNode.title = tmp[i].getNodeItem().mainTitleNode.title; - } - break; - } - } - if (nodeInfo.getNodeIsShow()) { - this.loadedNodeIdAndIndexMap.set(nodeInfo.getCurrentNodeId(), index++); - } - } - return false; - }); - } - - public getFlagLine() { - return this.FLAG_LINE; - } - - public getVisibility(nodeInfo: NodeInfo): any { - let lastShowIndex: number = this.loadedNodeIdAndIndexMap.get(nodeInfo.getCurrentNodeId()) - 1; - if (lastShowIndex > this.INITIAL_INVALID_VALUE) { - let lastNodeInfo: NodeInfo = this.getData(lastShowIndex); - return (nodeInfo.getCanShowFlagLine() == true && !nodeInfo.getIsHighLight() && !lastNodeInfo.getIsHighLight()) ? - Visibility.Visible : Visibility.Hidden; - } else { - return (nodeInfo.getCanShowFlagLine() == true && !nodeInfo.getIsHighLight()) ? - Visibility.Visible : Visibility.Hidden; - } - } - - public getSubTitlePara() { - return this.subTitle; - } - - public getIsFolder(nodeId: number) { - if (this.loadedNodeIdAndIndexMap.has(nodeId)) { - return this.getData(this.loadedNodeIdAndIndexMap.get(nodeId)).getIsFolder(); - } - return false; - } - - public getSubTitleFontColor(isHighLight: boolean) { - return isHighLight ? this.subTitle.highLightFontColor : this.subTitle.normalFontColor; - } - - private getChildIndex(rearParentNodeId: number, rearCurrentNodeId: number) { - let insertChildIndex: number = this.INITIAL_INVALID_VALUE; - this.listNodeUtils.traverseNodeBF(function(node): boolean { - if (node.getCurrentNodeId() == rearParentNodeId) { - node.children.forEach((value, index) => { - if (value.getCurrentNodeId() == rearCurrentNodeId) { - insertChildIndex = index; - } - }) - return true; - } - return false; - }); - return insertChildIndex; - } - - public setCurrentFocusNodeId(focusNodeId: number) { - this.currentFocusNodeId = focusNodeId; - } - - public getCurrentFocusNodeId(): number { - return this.currentFocusNodeId; - } - - public setLastFocusNodeId(focusNodeId: number) { - this.lastFocusNodeId = focusNodeId; - } - - public getLastFocusNodeId(): number { - return this.lastFocusNodeId; - } - - public getAddFocusNodeId(): number { - return this.addFocusNodeId; - } - - public setFlag(flag: Flag) { - this.flag = flag; - } - } - - /* nodeId to find index */ - function findCurrentNodeIndex(this, currentNodeId: number): number { - let thisIndex: number = 0; - this.listNodeDataSource.ListNode.forEach(function (value, index) { - if (value.getNodeCurrentNodeId() == currentNodeId) { - thisIndex = index; - } - }) - return thisIndex; - } - - /** - * Tree view control, which is created by using the TreeController class. - * - * When you create this component, you must initialize the listNodeDataSource. - * You can run the listTreeViewWidth command to set the width of the component. - * The default width is 200vp. - * - * @since 10 - */ - @Component - export struct TreeView { - listNodeDataSource: ListNodeDataSource; - treeController: TreeController; - @State dropSelectedIndex: number = 0; - @BuilderParam private listTreeViewMenu: () => void = null; - @Prop listTreeViewWidth: string | number; - @Prop listTreeViewHeight: number | string; - private readonly MAX_CN_LENGTH: number = 254; - private readonly MAX_EN_LENGTH: number = 255; - private readonly INITIAL_INVALID_VALUE = -1; - private readonly MAX_TOUCH_DOWN_COUNT = 0; - private isMultiPress: boolean = false; - private touchDownCount: number = this.INITIAL_INVALID_VALUE; - private appEventBus: TreeListener = TreeListenerManager.getInstance().getTreeListener(); - private readonly itemPadding: { left: Resource, right: Resource, top: Resource, bottom: Resource } = - { left: $r('sys.float.ohos_id_card_margin_middle'), - right: $r('sys.float.ohos_id_card_margin_middle'), - top: $r('sys.float.ohos_id_text_margin_vertical'), - bottom: $r('sys.float.ohos_id_text_margin_vertical')}; - /* { left: '12vp', right: '12vp', top: '2vp', bottom: '2vp' } */ - private readonly textInputPadding: { left : string, right: string, top: string, bottom: string } = - { left : '0vp', right: '0vp', top: '0vp', bottom: '0vp'} - aboutToAppear(): void { - this.listTreeViewWidth = (this.listTreeViewWidth === undefined) ? 200 : this.listTreeViewWidth; - this.listNodeDataSource = this.treeController.getListNodeDataSource(); - } - - private checkInvalidPattern(title: string): boolean { - let pattern = /[\\\/:*?"<>|]/; - return pattern.test(title) - } - - private checkIsAllCN(title: string): boolean { - let pattern = /^[\u4e00-\u9fa5]+$/; - return pattern.test(title) - } - - @Builder popupForShowTitle(text: string | Resource, backgroundColor: Resource, fontColor: Resource ) { - Row() { - Text(text).fontSize($r('sys.float.ohos_id_text_size_body2')).fontWeight('regular').fontColor(fontColor) - }.backgroundColor(backgroundColor) - .border({radius: $r('sys.float.ohos_id_elements_margin_horizontal_l')}) - .padding({left: $r('sys.float.ohos_id_elements_margin_horizontal_l'), - right: $r('sys.float.ohos_id_elements_margin_horizontal_l'), - top: $r('sys.float.ohos_id_card_margin_middle'), - bottom: $r('sys.float.ohos_id_card_margin_middle')}) - } - - @Builder builder() { - this.listTreeViewMenu() - } - - /* Set the popup of dragging node. */ - @Builder draggingPopup(item: NodeInfo) { - Row() { - if (item.getNodeItem().imageNode) { - Row() { - Image(item.getNodeItem().imageNode.normalSource) - .objectFit(ImageFit.Contain) - .height(item.getNodeItem().imageNode.itemHeight) - .width(item.getNodeItem().imageNode.itemWidth) - .opacity(this.listNodeDataSource.getDragPopupPara().imageOpacity) - } - .backgroundColor(COLOR_IMAGE_ROW) - .margin({ right: item.getNodeItem().imageNode.itemRightMargin }) - .height(item.getNodeItem().imageNode.itemHeight) - .width(item.getNodeItem().imageNode.itemWidth) - } - Row() { - if (item.getNodeItem().mainTitleNode && item.getIsShowTitle()) { - Text(item.getNodeItem().mainTitleNode.title) - .maxLines(1) - .fontSize(item.getNodeItem().mainTitleNode.size) - .fontColor(this.listNodeDataSource.getDragPopupPara().fontColor) - .fontWeight(this.listNodeDataSource.getDragPopupPara().fontWeight) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - } - } - .constraintSize({ - minWidth: item.getNodeItem().imageNode ? - this.listNodeDataSource.getDragPopupPara().textConstraintSize.minWidth1 : - this.listNodeDataSource.getDragPopupPara().textConstraintSize.minWidth2, - maxWidth: item.getNodeItem().imageNode ? - this.listNodeDataSource.getDragPopupPara().textConstraintSize.maxWidth1 : - this.listNodeDataSource.getDragPopupPara().textConstraintSize.maxWidth2 }) - } - .constraintSize({ minWidth: this.listNodeDataSource.getDragPopupPara().floorConstraintSize.minWidth, - maxWidth: this.listNodeDataSource.getDragPopupPara().floorConstraintSize.maxWidth }) - .height(this.listNodeDataSource.getDragPopupPara().height) - .backgroundColor(this.listNodeDataSource.getDragPopupPara().backgroundColor) - .padding({ left: this.listNodeDataSource.getDragPopupPara().padding.left, - right: this.listNodeDataSource.getDragPopupPara().padding.right }) - .shadow({ radius: this.listNodeDataSource.getDragPopupPara().shadow.radius, - color: this.listNodeDataSource.getDragPopupPara().shadow.color, - offsetY: this.listNodeDataSource.getDragPopupPara().shadow.offsetY }) - .borderRadius(this.listNodeDataSource.getDragPopupPara().borderRadius) // need to doubleCheck. - } - - build() { - List({ }) { - LazyForEach(this.listNodeDataSource, (item: NodeInfo) => { - ListItem() { - if (item.getNodeIsShow()) { - Column() { - Divider() - .height(this.listNodeDataSource.getFlagLine().flagLineHeight) - .color(this.listNodeDataSource.getFlagLine().flagLineColor) - .visibility(this.listNodeDataSource.getVisibility(item)) - .lineCap(LineCapStyle.Round) - .margin({ left: item.getFlagLineLeftMargin() }) - .markAnchor({ x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yTopOffset }) - Row({}) { - Row({}) { - if (item.getNodeItem().imageNode) { - Row() { - Image(item.getNodeItem().imageNode.source) - .objectFit(ImageFit.Contain) - .height(item.getNodeItem().imageNode.itemHeight) - .width(item.getNodeItem().imageNode.itemWidth) - .opacity(!item.getIsSelected() && !item.getIsHighLight() ? - item.getNodeItem().imageNode.opacity : item.getNodeItem().imageNode.noOpacity) - .focusable(item.getNodeItem().mainTitleNode != null ? false : true) - .onFocus(() => { - let that = this; - that.listNodeDataSource.handleEvent(Event.FOCUS, - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - }) - .onBlur(() => { - let that = this; - that.listNodeDataSource.handleEvent(Event.BLUR, - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - }) - } - .backgroundColor(COLOR_IMAGE_ROW) - .margin({ right: item.getNodeItem().imageNode.itemRightMargin }) - .height(item.getNodeItem().imageNode.itemHeight) - .width(item.getNodeItem().imageNode.itemWidth) - } - Row() { - if (item.getNodeItem().mainTitleNode && item.getIsShowTitle()) { - Text(item.getNodeItem().mainTitleNode.title) - .maxLines(1) // max line - .fontSize(item.getNodeItem().mainTitleNode.size) - .fontColor(item.getNodeItem().mainTitleNode.color) - .margin({ right: item.getNodeItem().mainTitleNode.itemRightMargin }) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .fontWeight(item.getNodeItem().mainTitleNode.weight) - .focusable(true) - .onFocus(() => { - let that = this; - this.listNodeDataSource.handleEvent(Event.FOCUS, - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - }) - .onBlur(() => { - let that = this; - that.listNodeDataSource.handleEvent(Event.BLUR, - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - }) - } - if (item.getNodeItem().mainTitleNode && - item.getNodeItem().inputText && - item.getIsShowInputText()) { - Row() { - TextInput({ text: item.getNodeItem().mainTitleNode.title }) - .height(item.getNodeItem().inputText.itemHeight) - .fontSize(item.getNodeItem().inputText.size) - .fontColor(item.getNodeItem().inputText.color) - .borderRadius(item.getNodeItem().inputText.borderRadius) - .backgroundColor(item.getNodeItem().inputText.backgroundColor) - .enterKeyType(EnterKeyType.Done) - .padding({ left: this.textInputPadding.left, right: this.textInputPadding.right, - top: this.textInputPadding.top, bottom: this.textInputPadding.bottom }) - .onChange((value: string) => { - let that = this; - var thisIndex = findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId()); - let res: string = ''; - let isInvalidError: boolean = false; - let isLengthError: boolean = false; - if (that.checkInvalidPattern(value)) { - for (let i = 0; i < value.length; i++) { - if (!that.checkInvalidPattern(value[i])) { - res += value[i]; - } - } - isInvalidError = true; - that.listNodeDataSource.setPopUpInfo(PopUpType.WARNINGS, - InputError.INVALID_ERROR, true, thisIndex); - } else { - res = value; - isInvalidError = false; - that.listNodeDataSource.setPopUpInfo(PopUpType.WARNINGS, - InputError.INVALID_ERROR, false, thisIndex); - } - if ((that.checkIsAllCN(res) && res.length > this.MAX_CN_LENGTH) || - (!that.checkIsAllCN(res) && res.length > this.MAX_EN_LENGTH)) { - res = that.checkIsAllCN(res) ? - res.substr(0, this.MAX_CN_LENGTH) : res.substr(0, this.MAX_EN_LENGTH); - isLengthError = true; - that.listNodeDataSource.setPopUpInfo(PopUpType.WARNINGS, - InputError.LENGTH_ERROR, true, thisIndex); - } else { - isLengthError = false; - } - if (!isLengthError && !isInvalidError) { - that.listNodeDataSource.setPopUpInfo(PopUpType.WARNINGS, - InputError.LENGTH_ERROR, false, thisIndex); - that.listNodeDataSource.setMainTitleNameOnEdit(thisIndex, res); - } - - }) - .onSubmit((enterKey: EnterKeyType) => { - let that = this; - var thisIndex = findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId()); - that.listNodeDataSource.setPopUpInfo(PopUpType.WARNINGS, InputError.NONE, false, thisIndex); - that.listNodeDataSource.setItemVisibilityOnEdit(thisIndex, MenuOperation.COMMIT_NODE); - }) - }.backgroundColor(item.getNodeItem().inputText.backgroundColor) - .borderRadius(item.getNodeItem().inputText.borderRadius) - .margin({ right: item.getNodeItem().inputText.itemRightMargin }) - } - Blank() - }.layoutWeight(1) - - if (this.listNodeDataSource.hasSubtitle(item.getCurrentNodeId())) { - Row() { - Text(this.listNodeDataSource.getSubtitle(item.getCurrentNodeId())) - .fontSize(this.listNodeDataSource.getSubTitlePara().fontSize) - .fontColor(this.listNodeDataSource.getSubTitleFontColor(item.getIsHighLight() || item.getIsModify())) - .fontWeight(this.listNodeDataSource.getSubTitlePara().fontWeight) - } - .margin({ left: this.listNodeDataSource.getSubTitlePara().margin.left, - right: item.getNodeItem().imageCollapse ? - 0 : this.listNodeDataSource.getSubTitlePara().margin.right }) - } - - if (item.getNodeItem().imageCollapse) { - Row() { - Image(item.getNodeItem().imageCollapse.collapseSource) - .fillColor(item.getNodeItem().imageCollapse.isCollapse ? COLOR_IMAGE_ROW : COLOR_IMAGE_EDIT) - .align(Alignment.End) - .objectFit(ImageFit.Contain) - .height(item.getNodeItem().imageCollapse.itemHeight) - .width(item.getNodeItem().imageCollapse.itemWidth) - .opacity(!item.getIsHighLight() ? - item.getNodeItem().imageCollapse.opacity : item.getNodeItem().imageCollapse.noOpacity) - .onTouch((event: TouchEvent) => { - if (event.type === TouchType.Down) { - let that = this; - that.listNodeDataSource.expandAndCollapseNode( - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - this.listNodeDataSource.setCurrentFocusNodeId(item.getCurrentNodeId()); - } - event.stopPropagation(); - }) - } - .backgroundColor(COLOR_IMAGE_ROW) - .height(item.getNodeItem().imageCollapse.itemHeight) - .width(item.getNodeItem().imageCollapse.itemWidth) - } - } - .width('100%') - .onTouch((event: TouchEvent) => { - let that = this; - let index = findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId()); - let currentId = item.getNodeCurrentNodeId(); - that.listNodeDataSource.setClickIndex(index); - if (event.type === TouchType.Down) { - this.touchDownCount ++; - this.isMultiPress = this.touchDownCount > this.MAX_TOUCH_DOWN_COUNT ? true : false; - if (!this.listNodeDataSource.getIsTouchDown()) { - that.listNodeDataSource.handleEvent(Event.TOUCH_DOWN, index); - } - } - if (event.type === TouchType.Up) { - this.touchDownCount--; - if (this.touchDownCount < this.MAX_TOUCH_DOWN_COUNT) { - this.isMultiPress = false; - } - let callbackParam = { currentNodeId: currentId } - this.appEventBus.emit(TreeListenType.NODE_CLICK, [callbackParam]); - that.listNodeDataSource.handleEvent(Event.TOUCH_UP, index); - } - }) - .onHover((isHover: boolean) => { - let that = this; - let index = findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId()) - if (isHover) { - that.listNodeDataSource.handleEvent(Event.HOVER, index); - } else { - if (!that.listNodeDataSource.getIsTouchDown()) { - that.listNodeDataSource.handleEvent(Event.HOVER_OVER, index); - } - } - }) - .gesture( - TapGesture({ count: 2 }) // doubleClick - .onAction((event: GestureEvent) => { - let that = this; - that.listNodeDataSource.expandAndCollapseNode( - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - }) - ) - .height(item.getNodeHeight()) - .padding({ left: item.getNodeLeftPadding() }) - /* backgroundColor when editing and in other states. */ - .backgroundColor((item.getNodeItem().mainTitleNode && item.getNodeItem().inputText && - item.getIsShowInputText()) ? item.getNodeItem().inputText.editColor : item.getNodeColor()) - .border({ - width: item.getNodeBorder().borderWidth, - color: item.getNodeBorder().borderColor, - radius: item.getNodeBorder().borderRadius - }) - .bindContextMenu(this.builder, ResponseType.RightClick) - } - .opacity(this.listNodeDataSource.getListItemOpacity(item)) - .markAnchor({ x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBasePlateOffset }) - if (item.getCanShowBottomFlagLine()) { - if (this.listNodeDataSource.getPassIndex() == this.listNodeDataSource.totalCount() - 1 && - !item.getIsHighLight()) { - Divider() - .height(this.listNodeDataSource.getFlagLine().flagLineHeight) - .color(this.listNodeDataSource.getFlagLine().flagLineColor) - .visibility(Visibility.Visible) - .lineCap(LineCapStyle.Round) - .margin({ left: item.getFlagLineLeftMargin() }) - .markAnchor({ x: this.listNodeDataSource.getFlagLine().xOffset, - y: this.listNodeDataSource.getFlagLine().yBottomOffset }) - } - } - } - .focusable(true) - .onMouse((event: MouseEvent) => { - let that = this; - let thisIndex = findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId()); - if (event.button == MouseButton.Right) { - that.listNodeDataSource.handleEvent(Event.MOUSE_BUTTON_RIGHT, - findCurrentNodeIndex.call(that, item.getNodeCurrentNodeId())); - this.listTreeViewMenu = item.getMenu(); - that.listNodeDataSource.setClickIndex(thisIndex); - that.listNodeDataSource.setPopUpInfo(PopUpType.HINTS, InputError.NONE, false, thisIndex); - clearTimeout(item.getNodeItem().mainTitleNode.popUpTimeout); - } - event.stopPropagation(); - }) - .padding({ top: this.itemPadding.top, bottom: this.itemPadding.bottom }) - .bindPopup(item.getPopUpInfo().popUpIsShow, { - builder: this.popupForShowTitle(item.getPopUpInfo().popUpText, item.getPopUpInfo().popUpColor, - item.getPopUpInfo().popUpTextColor), - placement: Placement.BottomLeft, - placementOnTop: false, - popupColor: item.getPopUpInfo().popUpColor, - autoCancel: true, - enableArrow: item.getPopUpInfo().popUpEnableArrow - }) - } - - } - .width('100%').height(item.getListItemHeight()) - .padding({ left: this.itemPadding.left, right: this.itemPadding.right}) - .align(Alignment.Start) - .onDragStart((event: DragEvent, extraParams: string) => { - if (this.listNodeDataSource.getIsDrag() || this.listNodeDataSource.getIsInnerDrag() || this.isMultiPress) { - console.error('drag error, a item has been dragged'); - return; - } - this.dropSelectedIndex = JSON.parse(extraParams).selectedIndex; - let currentNodeIndex = JSON.parse(extraParams).selectedIndex; - let currentNodeInfo = this.listNodeDataSource.getData(currentNodeIndex); - let currentItemNodeId = item.getNodeCurrentNodeId(); - - /* handle the situation of drag error, currentNodeIndex is not found in onDragStart. */ - if (currentNodeIndex >= this.listNodeDataSource.totalCount() || currentNodeIndex == undefined) { - console.error('drag error, currentNodeIndex is not found in onDragStart'); - return; - } - - this.listNodeDataSource.setIsInnerDrag(true); - this.listNodeDataSource.setIsDrag(true); - this.listNodeDataSource.setCurrentNodeInfo(currentNodeInfo); - this.listNodeDataSource.setDraggingCurrentNodeId(currentNodeInfo.getNodeCurrentNodeId()); - this.listNodeDataSource.setDraggingParentNodeId(currentNodeInfo.getNodeParentNodeId()); - - /* set the opacity of the dragging node. */ - let draggingNodeOpacity: number = DRAG_OPACITY; - this.listNodeDataSource.setListItemOpacity(draggingNodeOpacity); - this.listNodeDataSource.notifyDataChange(currentNodeIndex); - - /* - * handle the situation of drag is too fast,it attribute a fault to OH. - * OH has Solved on real machine. - */ - if (currentItemNodeId != currentNodeInfo.getNodeCurrentNodeId()) { - console.error('drag is too fast,it attribute a fault to OH'); - this.listNodeDataSource.setIsDrag(false); - return; - } - return this.draggingPopup(currentNodeInfo); - }) - }, item => JSON.stringify(item)) - }.width(this.listTreeViewWidth).height(this.listTreeViewHeight) - - /* Move the dragged node. */ - .onDragMove((event: DragEvent) => { - if (this.isMultiPress) { - console.error('drag error, a item has been dragged'); - return; - } - let nodeHeight: number = LIST_ITEM_HEIGHT; - - /* flag the position of the focus on the node. */ - let flag: Flag = Math.floor(event.getY() / (nodeHeight / FLAG_NUMBER)) % FLAG_NUMBER ? Flag.DOWN_FLAG : Flag.UP_FLAG; - - /* Record the node position to which the dragged node moves. */ - let index: number = Math.floor(event.getY() / nodeHeight); - - /* Handle the situation where the focus(index) exceeds the list area. */ - let isOverBorder: boolean = false; - if (index >= this.listNodeDataSource.totalCount()) { - flag = Flag.DOWN_FLAG; - index = this.listNodeDataSource.totalCount() - 1; - this.listNodeDataSource.getData(index).setIsOverBorder(true); - isOverBorder = true; - } else { - this.listNodeDataSource.getData(index).setIsOverBorder(false); - } - - let currentNodeInfo: NodeInfo = this.listNodeDataSource.getData(index); - let currentNodeId: number = currentNodeInfo.getCurrentNodeId(); - - /* - * handle a situation that "draggingCurrentNodeId" is parent of "insertNodeCurrentNodeId"; - * do not perform some functions. - */ - if (index != this.listNodeDataSource.getLastPassIndex() && this.listNodeDataSource.getIsInnerDrag()) { - let isParentNodeOfInsertNode: boolean = this.listNodeDataSource.getIsParentOfInsertNode(currentNodeId); - if (isParentNodeOfInsertNode) { - this.listNodeDataSource.setPassIndex(index); - let that = this; - this.listNodeDataSource.clearTimeOutAboutDelayHighLightAndExpand(findCurrentNodeIndex.call(that, - currentNodeId)); - this.listNodeDataSource.setFlag(Flag.NONE); - return; - } - } - this.listNodeDataSource.setLastPassIndex(index); - - /* Set the visibility of the flag line. */ - this.listNodeDataSource.setVisibility(flag, index, isOverBorder); - - /* Automatically HighLight one second delay and expand after two second delay. */ - if (currentNodeId != this.listNodeDataSource.getDraggingCurrentNodeId()) { - let that = this; - this.listNodeDataSource.delayHighLightAndExpandNode(findCurrentNodeIndex.call(that, currentNodeId), - currentNodeId, index); - } - }) - - /* DragEvent Enter. */ - .onDragEnter((event: DragEvent, extraParams: string) => { - if (this.listNodeDataSource.getIsInnerDrag()) { - this.listNodeDataSource.setIsDrag(true); - - /* set the opacity of the dragging node. */ - let draggingNodeOpacity: number = DRAG_OPACITY; - this.listNodeDataSource.setListItemOpacity(draggingNodeOpacity); - } - }) - - /* DragEvent Leave. */ - .onDragLeave((event: DragEvent, extraParams: string) => { - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.clearLastTimeoutExpand(); - let draggingNodeOpacity: number = DRAG_OPACITY_NONE; - this.listNodeDataSource.setListItemOpacity(draggingNodeOpacity); - this.listNodeDataSource.setIsDrag(false); - this.listNodeDataSource.notifyDataReload(); - }) - - /* DragEvent Drop. */ - .onDrop((event: DragEvent, extraParams: string) => { - this.listNodeDataSource.clearLastTimeoutExpand(); - let draggingNodeOpacity: number = DRAG_OPACITY_NONE; - this.listNodeDataSource.setListItemOpacity(draggingNodeOpacity); - let insertNodeIndex: number = this.listNodeDataSource.getPassIndex(); - let currentNodeIndex: number = this.dropSelectedIndex; - - if (currentNodeIndex - 1 > this.listNodeDataSource.totalCount() || currentNodeIndex == undefined) { - console.error('drag error, currentNodeIndex is not found'); - this.listNodeDataSource.setIsDrag(false); - return; - } - - if (insertNodeIndex == this.listNodeDataSource.totalCount()) { - console.log('need to insert into the position of the last line, now insertNodeIndex = insertNodeIndex - 1'); - insertNodeIndex -= 1; - } - - let insertNodeInfo: NodeInfo = this.listNodeDataSource.getData(insertNodeIndex); - let insertNodeCurrentNodeId: number = insertNodeInfo.getNodeCurrentNodeId(); - - /* outer node is move in. */ - if (!this.listNodeDataSource.getIsDrag() || !this.listNodeDataSource.getIsInnerDrag()) { - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.setIsInnerDrag(false); - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.refreshSubtitle(insertNodeCurrentNodeId); - this.listNodeDataSource.notifyDataReload(); - return; - } - - let currentNodeInfo: NodeInfo = this.listNodeDataSource.getCurrentNodeInfo(); - let insertNodeParentNodeId: number = insertNodeInfo.getNodeParentNodeId(); - let draggingCurrentNodeId: number = this.listNodeDataSource.getDraggingCurrentNodeId(); - let draggingParentNodeId: number = this.listNodeDataSource.getDraggingParentNodeId(); - - /* - * handle a situation that "draggingCurrentNodeId" is parent of "insertNodeCurrentNodeId". - * drag is fail. - */ - let isParentNodeOfInsertNode: boolean = this.listNodeDataSource.getIsParentOfInsertNode(insertNodeCurrentNodeId); - if (isParentNodeOfInsertNode) { - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.setIsInnerDrag(false); - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.notifyDataChange(insertNodeIndex); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.setIsDrag(false); - - /* set the position of focus. */ - let that = this; - let currentFocusIndex: number = findCurrentNodeIndex.call(that, draggingCurrentNodeId); - this.listNodeDataSource.setClickIndex(currentFocusIndex); - this.listNodeDataSource.handleEvent(Event.DRAG, currentFocusIndex); - return; - } - - /* Collapse drag node. */ - if (this.listNodeDataSource.getExpandAndCollapseInfo(draggingCurrentNodeId) == NodeStatus.Expand) { - let that = this; - this.listNodeDataSource.expandAndCollapseNode( - findCurrentNodeIndex.call(that, draggingCurrentNodeId)); - } - - /* Expand insert node. */ - if (this.listNodeDataSource.getExpandAndCollapseInfo(insertNodeCurrentNodeId) == NodeStatus.Collapse) { - let that = this; - let currentIndex: number = findCurrentNodeIndex.call(that, insertNodeCurrentNodeId); - if (this.listNodeDataSource.ListNode[currentIndex].getIsHighLight()) { - this.listNodeDataSource.expandAndCollapseNode(currentIndex); - } - } - - /* alter dragNode. */ - this.listNodeDataSource.setLastDelayHighLightId(); - if (draggingCurrentNodeId != insertNodeCurrentNodeId) { - this.listNodeDataSource.alterDragNode(insertNodeParentNodeId, insertNodeCurrentNodeId, insertNodeInfo, - draggingParentNodeId, draggingCurrentNodeId, currentNodeInfo); - this.listNodeDataSource.hideLastLine(); - } else { - /*the position of dragNode is equal with the position of insertNode. */ - this.listNodeDataSource.hideLastLine(); - this.listNodeDataSource.setLastPassId(draggingCurrentNodeId); - this.listNodeDataSource.hideLastLine(); - } - - let that = this; - let lastDelayHighLightIndex: number = findCurrentNodeIndex.call(that, - this.listNodeDataSource.getLastDelayHighLightId()); - this.listNodeDataSource.setLastDelayHighLightIndex(lastDelayHighLightIndex); - this.listNodeDataSource.clearLastTimeoutHighLight(); - this.listNodeDataSource.initialParameterAboutDelayHighLightAndExpandIndex(); - this.listNodeDataSource.setIsDrag(false); - - /* set the position of focus. */ - let currentFocusIndex: number = findCurrentNodeIndex.call(that, draggingCurrentNodeId); - this.listNodeDataSource.setClickIndex(currentFocusIndex); - this.listNodeDataSource.handleEvent(Event.DRAG, currentFocusIndex); - - /* innerDrag is over. */ - this.listNodeDataSource.setIsInnerDrag(false); - this.listNodeDataSource.notifyDataReload(); - }) - } - } - - // Declare NodeParam - export interface NodeParam { - parentNodeId?: number, - currentNodeId?: number, - isFolder?: boolean, - icon?: Resource, - selectedIcon?: Resource, - editIcon? : Resource, - primaryTitle?: string, - secondaryTitle?: number | string, - menu?: () => void, - } - - - // Declare CallbackParam - export interface CallbackParam { - currentNodeId: number, - parentNodeId?: number, - childIndex?: number, - } - - /** - * Create a tree view control proxy class to generate a tree view. - * - * @since 10 - */ - export class TreeController { - readonly ROOT_NODE_ID: number = -1; - private nodeIdList: number[] = []; - private listNodeUtils : ListNodeUtils = new ListNodeUtils(); - private listNodeDataSource : ListNodeDataSource = new ListNodeDataSource(); - - /** - * After the addNode interface is invoked, - * this interface is used to obtain the initialization data of - * the tree view component for creating a tree view component. - * - * @return ListNodeDataSource Obtains the initialization data of the tree view component. - * - * @since 10 - */ - public getListNodeDataSource(): ListNodeDataSource { - return this.listNodeDataSource; - } - - /** - * Obtains the subNode information of the currently clicked node. - * - * @return Array Returns an array that stores the configuration information of each node. - * If there is no child node, an empty array is returned. - * - * @since 10 - */ - public getClickNodeChildrenInfo(): Array<{ itemId: number, itemIcon: Resource, itemTitle: string, - isFolder: boolean }> { - let clickNodeId = this.listNodeDataSource.getClickNodeId(); - return this.listNodeUtils.getClickNodeChildrenInfo(clickNodeId); - } - - public getChildrenId(): Array { - let clickNodeId = this.listNodeDataSource.getClickNodeId(); - return this.listNodeUtils.getClickChildId(clickNodeId); - } - - /** - * Delete a node. - * - * Register an ON_ITEM_DELETE callback through the EventBus mechanism to obtain the IDs of all deleted nodes. - * - * @since 10 - */ - public removeNode(): void { - let clickNodeId = this.listNodeDataSource.getClickNodeId(); - let parentNodeId = this.listNodeUtils.findParentNodeId(clickNodeId); - let removeNodeIdList: number[] = this.listNodeUtils.removeNode(clickNodeId, - parentNodeId, this.listNodeUtils.traverseNodeBF); - this.listNodeDataSource.refreshData(this.listNodeUtils, MenuOperation.REMOVE_NODE, parentNodeId, removeNodeIdList); - this.nodeIdList.splice(this.nodeIdList.indexOf(clickNodeId), 1); - } - - /** - * Modify the node name. - * - * Register an ON_ITEM_MODIFY callback to obtain the ID, parent node ID, and node name of the modified node. - * - * @since 10 - */ - public modifyNode(): void { - let clickNodeId = this.listNodeDataSource.getClickNodeId(); - this.listNodeDataSource.setItemVisibilityOnEdit(clickNodeId, MenuOperation.MODIFY_NODE); - } - - /** - * Add a node. - * - * Icon of a new node, which is generated by the system by default. - * If there is a same-level node, the icon of the first node of the same-level node is used. - * If no icon is set for the first node of the same-level node, the new node does not have an icon. - * If there is no peer node, the icon of the parent node is used. - * If no icon is set for the parent node, the new node does not have an icon. - * The system generates an ID for the new node and registers an ON_ITEM_ADD callback through - * the EventBus mechanism to obtain the ID, parent node ID, node name, normal icon, selected icon, - * edit icon of the new node. - * - * @since 10 - */ - public add(): void { - let clickNodeId: number = this.listNodeDataSource.getClickNodeId(); - if (clickNodeId == this.listNodeDataSource.ROOT_NODE_ID || !this.listNodeDataSource.getIsFolder(clickNodeId)) { - return; - } - let newNodeInfo: { isFolder: boolean, icon: Resource, selectedIcon: Resource, editIcon: Resource, - menu: () =>any, secondaryTitle: number | string } = - { isFolder: true, icon: null, selectedIcon: null, editIcon: null, menu: null, secondaryTitle: '' }; - newNodeInfo = this.listNodeUtils.getNewNodeInfo(clickNodeId); - this.nodeIdList.push(this.nodeIdList[this.nodeIdList.length - 1] + 1); - let newNodeId: number = this.nodeIdList[this.nodeIdList.length - 1]; - this.listNodeUtils.addNewNodeId = newNodeId; - this.listNodeUtils.addNode(clickNodeId, newNodeId, - { isFolder: newNodeInfo.isFolder, icon: newNodeInfo.icon, selectedIcon: newNodeInfo.selectedIcon, - editIcon: newNodeInfo.editIcon, primaryTitle: '新建文件夹', menu: newNodeInfo.menu, - secondaryTitle: newNodeInfo.secondaryTitle }); - this.listNodeDataSource.refreshData(this.listNodeUtils, MenuOperation.ADD_NODE, clickNodeId, [newNodeId]); - } - - public addNodeParam(nodeParam: NodeParam): TreeController { - if (nodeParam.primaryTitle != null && - !this.listNodeUtils.checkMainTitleIsValid(nodeParam.primaryTitle)) { - throw new Error('ListTreeNode[addNode]: ' + - 'The directory name cannot contain the following characters\ /: *? "< > | or exceeds the maximum length.'); - return null; - } - if (nodeParam.primaryTitle == null && nodeParam.icon == null) { - throw new Error('ListTreeNode[addNode]: ' + - 'The icon and directory name cannot be empty at the same time.'); - return null; - } - if (nodeParam.currentNodeId === this.ROOT_NODE_ID || nodeParam.currentNodeId === null) { - throw new Error('ListTreeNode[addNode]: currentNodeId can not be -1 or null.'); - return null; - } - this.nodeIdList.push(nodeParam.currentNodeId); - this.listNodeUtils.addNode(nodeParam.parentNodeId, nodeParam.currentNodeId, nodeParam); - return this; - } - - /** - * Initialize the interface of the tree view. This interface is used to generate ListNodeDataSource data. - * addNode is only designed for initialization. It can only be invoked during initialization. - * - * A maximum of 50 directory levels can be added. - * - * @param parentNodeId ID of the parent node. - * @param currentNodeId ID of the new node. The value cannot be -1 or null. - * @param nodeParam Configuration information of the newly added node. - * For details, see the comment description of NodeParam. - * @return ListTreeNode Tree view component proxy class. - * - * @since 10 - */ - public addNode(nodeParam?: NodeParam): TreeController { - if (nodeParam == null) { - this.add(); - } else { - if (nodeParam.primaryTitle != null && - !this.listNodeUtils.checkMainTitleIsValid(nodeParam.primaryTitle)) { - throw new Error('ListTreeNode[addNode]: ' + - 'The directory name cannot contain the following characters\ /: *? "< > | or exceeds the maximum length.'); - return null; - } - if (nodeParam.primaryTitle == null && nodeParam.icon == null) { - throw new Error('ListTreeNode[addNode]: ' + - 'The icon and directory name cannot be empty at the same time.'); - return null; - } - if (nodeParam.currentNodeId === this.ROOT_NODE_ID || nodeParam.currentNodeId === null) { - throw new Error('ListTreeNode[addNode]: currentNodeId can not be -1 or null.'); - return null; - } - this.nodeIdList.push(nodeParam.currentNodeId); - this.listNodeUtils.addNode(nodeParam.parentNodeId, nodeParam.currentNodeId, nodeParam); - return this; - } - } - - /** - * After the initialization is complete by calling the addNode interface, - * call this interface to complete initialization. - * - * This interface must be called when you finish initializing the ListTreeView by addNode. - * @since 10 - */ - public buildDone() { - this.listNodeDataSource.init(this.listNodeUtils); - this.nodeIdList.sort((a, b) => a - b); - } - - public refreshNode(parentId: number, parentSubTitle: ResourceStr = '', - currentSubtitle: ResourceStr = '') { - this.listNodeDataSource.setNodeSubtitlePara(parentId, parentSubTitle, currentSubtitle); - } - } -} \ No newline at end of file