From 3f6b98c2818cd4c750bfb719a048e15810476879 Mon Sep 17 00:00:00 2001 From: catouse Date: Fri, 8 Nov 2024 02:36:42 +0000 Subject: [PATCH] deploy: 6d86b8fc20c8580686a01cd326e44e6ca06ea8a0 --- dev/404.html | 6 +- ...qV.js => guide_start_index.md.DCosM122.js} | 34 +- ... => guide_start_index.md.DCosM122.lean.js} | 34 +- dev/guide/config/base/color.html | 6 +- dev/guide/config/base/font.html | 6 +- dev/guide/config/base/rounded.html | 6 +- dev/guide/config/base/screens.html | 6 +- dev/guide/config/base/shadow.html | 6 +- dev/guide/config/base/spacing.html | 6 +- dev/guide/customize/build.html | 6 +- dev/guide/customize/dev.html | 6 +- dev/guide/customize/exts-lib.html | 6 +- dev/guide/index.html | 6 +- dev/guide/start/compatibility.html | 6 +- dev/guide/start/index.html | 10 +- dev/guide/start/intro.html | 6 +- dev/guide/start/tutorial.html | 6 +- dev/hashmap.json | 2 +- dev/index.html | 6 +- dev/lib/basic/core/cash.html | 6 +- dev/lib/basic/core/component.html | 6 +- dev/lib/basic/core/css-component.html | 6 +- dev/lib/basic/core/react.html | 6 +- dev/lib/basic/core/zui-create.html | 6 +- dev/lib/basic/core/zui-on.html | 6 +- dev/lib/basic/core/zui-toggle.html | 6 +- dev/lib/components/alert/index.html | 6 +- dev/lib/components/avatar-group/index.html | 8 +- dev/lib/components/avatar/index.html | 8 +- dev/lib/components/breadcrumb/index.html | 6 +- dev/lib/components/btn-group/index.html | 8 +- dev/lib/components/button/index.html | 8 +- dev/lib/components/calendar/index.html | 6 +- dev/lib/components/color-picker/index.html | 8 +- dev/lib/components/contextmenu/index.html | 6 +- dev/lib/components/dashboard/index.html | 6 +- dev/lib/components/dropdown/index.html | 6 +- dev/lib/components/dtable/index.html | 6 +- dev/lib/components/dtable/plugins.html | 6 +- dev/lib/components/file-selector/index.html | 8 +- dev/lib/components/kanban/index.html | 6 +- dev/lib/components/label/index.html | 8 +- dev/lib/components/menu/index.html | 8 +- dev/lib/components/menu/js.html | 6 +- dev/lib/components/messager/index.html | 6 +- dev/lib/components/modal/index.html | 6 +- dev/lib/components/modal/trigger.html | 6 +- dev/lib/components/nav/index.html | 6 +- dev/lib/components/nav/js.html | 6 +- dev/lib/components/pager/index.html | 8 +- dev/lib/components/pager/js.html | 6 +- dev/lib/components/panel/index.html | 8 +- dev/lib/components/progress-circle/index.html | 8 +- dev/lib/components/progress/index.html | 8 +- dev/lib/components/scrollbar/index.html | 8 +- dev/lib/components/search-box/index.html | 8 +- dev/lib/components/table/index.html | 6 +- dev/lib/components/tabs/index.html | 8 +- dev/lib/components/toolbar/index.html | 8 +- dev/lib/components/toolbar/js.html | 6 +- dev/lib/components/tooltip/index.html | 8 +- dev/lib/components/tree/index.html | 6 +- dev/lib/components/upload-imgs/index.html | 6 +- dev/lib/components/upload/index.html | 6 +- dev/lib/forms/checkbox/index.html | 8 +- dev/lib/forms/checkbox/switch.html | 6 +- dev/lib/forms/datetime-picker/date.html | 8 +- dev/lib/forms/datetime-picker/datetime.html | 8 +- dev/lib/forms/datetime-picker/time.html | 8 +- dev/lib/forms/form-control/index.html | 6 +- dev/lib/forms/form/index.html | 6 +- dev/lib/forms/input-control/index.html | 8 +- dev/lib/forms/input-group/index.html | 8 +- dev/lib/forms/picker/index.html | 8 +- dev/lib/helpers/helpers/date-helper.html | 6 +- dev/lib/helpers/helpers/string-helper.html | 6 +- dev/lib/helpers/store/index.html | 6 +- dev/lib/index.html | 6 +- dev/public/zui/icons/fontawesome-license.html | 6 +- dev/themes/index.html | 6 +- .../backgrounds/utilities/index.html | 6 +- .../borders/utilities/border-color.html | 6 +- .../borders/utilities/border-radius.html | 6 +- .../borders/utilities/border-width.html | 6 +- dev/utilities/borders/utilities/divider.html | 6 +- .../borders/utilities/ring-color.html | 6 +- .../borders/utilities/ring-offset.html | 6 +- .../borders/utilities/ring-width.html | 6 +- .../effects/utilities/animation.html | 6 +- dev/utilities/effects/utilities/filter.html | 6 +- dev/utilities/effects/utilities/opacity.html | 6 +- dev/utilities/effects/utilities/shadow.html | 6 +- .../effects/utilities/transform.html | 6 +- .../effects/utilities/transition.html | 6 +- .../flex/utilities/align-content.html | 6 +- dev/utilities/flex/utilities/align-items.html | 6 +- dev/utilities/flex/utilities/align-self.html | 6 +- dev/utilities/flex/utilities/basis.html | 6 +- dev/utilities/flex/utilities/direction.html | 6 +- dev/utilities/flex/utilities/flex.html | 6 +- dev/utilities/flex/utilities/gap.html | 6 +- dev/utilities/flex/utilities/grow.html | 6 +- .../flex/utilities/justify-content.html | 6 +- dev/utilities/flex/utilities/order.html | 6 +- dev/utilities/flex/utilities/shrink.html | 6 +- dev/utilities/flex/utilities/wrap.html | 6 +- dev/utilities/index.html | 6 +- .../interactivity/utilities/cursor.html | 6 +- .../interactivity/utilities/disabled.html | 6 +- .../interactivity/utilities/loading.html | 6 +- .../utilities/pointer-events.html | 6 +- .../interactivity/utilities/scroll.html | 6 +- .../interactivity/utilities/state.html | 6 +- .../interactivity/utilities/user-select.html | 6 +- .../layout/utilities/aspect-ratio.html | 6 +- dev/utilities/layout/utilities/container.html | 6 +- dev/utilities/layout/utilities/display.html | 6 +- dev/utilities/layout/utilities/floats.html | 8 +- .../layout/utilities/object-fit.html | 8 +- dev/utilities/layout/utilities/overflow.html | 8 +- dev/utilities/layout/utilities/position.html | 8 +- .../utilities/top-right-bottom-left.html | 8 +- .../layout/utilities/visibility.html | 8 +- dev/utilities/layout/utilities/z-index.html | 6 +- dev/utilities/sizing/utilities/height.html | 6 +- dev/utilities/sizing/utilities/width.html | 6 +- dev/utilities/skin/utilities/ghost.html | 6 +- dev/utilities/skin/utilities/outline.html | 6 +- dev/utilities/skin/utilities/pale.html | 6 +- dev/utilities/skin/utilities/solid.html | 6 +- dev/utilities/skin/utilities/surface.html | 6 +- dev/utilities/spacing/utilities/margin.html | 6 +- dev/utilities/spacing/utilities/padding.html | 6 +- dev/utilities/spacing/utilities/space.html | 6 +- .../typography/utilities/font-family.html | 6 +- .../typography/utilities/font-size.html | 8 +- .../typography/utilities/font-weight.html | 8 +- .../typography/utilities/leading.html | 8 +- .../typography/utilities/line-clamp.html | 8 +- .../typography/utilities/list-style.html | 6 +- .../typography/utilities/text-align.html | 6 +- .../typography/utilities/text-color.html | 6 +- .../typography/utilities/text-decoration.html | 6 +- .../typography/utilities/text-overflow.html | 6 +- .../typography/utilities/text-transform.html | 6 +- .../typography/utilities/vertical-align.html | 6 +- .../typography/utilities/whitespace.html | 6 +- .../typography/utilities/word-break.html | 6 +- dev/zui-3.0.0.zip | Bin 1056416 -> 1056652 bytes dev/zui/zui.esm.js | 1089 +++++++++-------- dev/zui/zui.esm.js.map | 2 +- dev/zui/zui.js | 2 +- dev/zui/zui.js.map | 2 +- 153 files changed, 1058 insertions(+), 1049 deletions(-) rename dev/assets/{guide_start_index.md.CW7y_uqV.js => guide_start_index.md.DCosM122.js} (93%) rename dev/assets/{guide_start_index.md.CW7y_uqV.lean.js => guide_start_index.md.DCosM122.lean.js} (83%) diff --git a/dev/404.html b/dev/404.html index 5d4d88d82c..63ca1da9f4 100644 --- a/dev/404.html +++ b/dev/404.html @@ -11,14 +11,14 @@ - - + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/assets/guide_start_index.md.CW7y_uqV.js b/dev/assets/guide_start_index.md.DCosM122.js similarity index 93% rename from dev/assets/guide_start_index.md.CW7y_uqV.js rename to dev/assets/guide_start_index.md.DCosM122.js index 232cbdd798..8ff3671de2 100644 --- a/dev/assets/guide_start_index.md.CW7y_uqV.js +++ b/dev/assets/guide_start_index.md.DCosM122.js @@ -14,7 +14,7 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a <a class="btn" href="/">访问 ZUI 网站</a> <script src="./zui/zui.js"></script> </body> -</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

`,6),m={class:"vp-code-group vp-adaptive-theme"},B=a('
',1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a('<!doctype html>',1),z=a('<html lang="zh-CN">',1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),f=a(' <meta charset="utf-8">',1),N=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),w=a(' <title>ZUI</title>',1),R={class:"line highlighted"},U=a(' <link rel="stylesheet" href=',7),x={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),J=a(' <h1>ZUI is awesome!</h1>',1),Y=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),H={class:"line highlighted"},G=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),K={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Q=a(' crossorigin="anonymous"></script>',6),W=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),X=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a('<!doctype html>',1),ns=a('<html lang="zh-CN">',1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a(' <meta charset="utf-8">',1),ps=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),es=a(' <title>ZUI</title>',1),Es={class:"line highlighted"},ds=a(' <link rel="stylesheet" href=',7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a(' <h1>ZUI is awesome!</h1>',1),cs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a(' crossorigin="anonymous"></script>',6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a('<!doctype html>',1),zs=a('<html lang="zh-CN">',1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),fs=a(' <meta charset="utf-8">',1),Ns=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),ws=a(' <title>ZUI</title>',1),Rs={class:"line highlighted"},Us=a(' <link rel="stylesheet" href=',7),xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Js=a(' <h1>ZUI is awesome!</h1>',1),Ys=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Hs={class:"line highlighted"},Gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$s=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ks={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Qs=a(' crossorigin="anonymous"></script>',6),Ws=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Xs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a(`

使用 JS 组件

无论是下载还是使用 CDN,导入 zui.js 之后,你就可以使用 ZUI 中的 JS 组件了,ZUI 提供的所有 JS 辅助方法和组件类都在全局对象 zui 上进行访问,例如:

html
<nav id="myNav"></nav>
+</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

`,6),m={class:"vp-code-group vp-adaptive-theme"},B=a('
',1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a('<!doctype html>',1),V=a('<html lang="zh-CN">',1),z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),N=a(' <meta charset="utf-8">',1),f=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),w=a(' <title>ZUI</title>',1),R={class:"line highlighted"},x=a(' <link rel="stylesheet" href=',7),U={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),J=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),M=a(' <h1>ZUI is awesome!</h1>',1),H=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),$={class:"line highlighted"},K=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),L=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),O=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Q=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),X={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Y=a(' crossorigin="anonymous"></script>',6),G=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),W=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a('<!doctype html>',1),ns=a('<html lang="zh-CN">',1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a(' <meta charset="utf-8">',1),ps=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),es=a(' <title>ZUI</title>',1),Es={class:"line highlighted"},ds=a(' <link rel="stylesheet" href=',7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a(' <h1>ZUI is awesome!</h1>',1),cs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a(' crossorigin="anonymous"></script>',6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a('<!doctype html>',1),Vs=a('<html lang="zh-CN">',1),zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ns=a(' <meta charset="utf-8">',1),fs=a(' <meta name="viewport" content="width=device-width, initial-scale=1">',1),ws=a(' <title>ZUI</title>',1),Rs={class:"line highlighted"},xs=a(' <link rel="stylesheet" href=',7),Us={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Js=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ms=a(' <h1>ZUI is awesome!</h1>',1),Hs=a(' <a class="btn" href="/">访问 ZUI 网站</a>',1),$s={class:"line highlighted"},Ks=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ls=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Os=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Qs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ys=a(' crossorigin="anonymous"></script>',6),Gs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ws=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a(`

使用 JS 组件

无论是下载还是使用 CDN,导入 zui.js 之后,你就可以使用 ZUI 中的 JS 组件了,ZUI 提供的所有 JS 辅助方法和组件类都在全局对象 zui 上进行访问,例如:

html
<nav id="myNav"></nav>
 
 <script>
 const {Nav, Messager} = zui;
@@ -52,19 +52,19 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a
 import 'zui/lib/dtable/css';
 
 const myTable = new DTable('#myTable', {...});
`,8),di=JSON.parse('{"title":"快速上手","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/index.md","filePath":"guide/start/index.md","lastUpdated":null}'),ki={name:"guide/start/index.md"},ri=Object.assign(ki,{setup(pi){return(t,ei)=>{const e=p("Example"),k=p("PluginTabsTab"),E=p("PluginTabs");return g(),d("div",null,[o,y,c,s("div",F,[s("a",{class:"rounded-full btn primary size-lg",href:r(_)(`/zui-${t.zui.version}.zip`),download:""},[C,i(" 点击下载")],8,u),s("a",{class:"rounded-full btn outline size-lg",href:`https://github.com/easysoft/zui/releases/tag/v${t.zui.version}`,target:"_blank"},[T,i(" 从 GitHub 下载")],8,A)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` -`),z,i(` `),V,i(` -`),f,i(` +`),z,i(` `),N,i(` +`),f,i(` `),w,i(` -`),s("span",R,[U,s("span",x,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` +`),s("span",R,[x,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` `),Z,i(` -`),M,i(` `),J,i(` -`),Y,i(` -`),s("span",H,[G,$,L,O,s("span",K,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Q]),i(` -`),W,i(` -`),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` +`),M,i(` +`),H,i(` +`),s("span",$,[K,L,O,Q,s("span",X,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Y]),i(` +`),G,i(` +`),W])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` `),ks,i(` @@ -78,16 +78,16 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a `),s("span",Fs,[us,Cs,As,Ts,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` `),Bs,i(` `),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` -`),zs,i(` `),Vs,i(` -`),fs,i(` +`),zs,i(` `),Ns,i(` +`),fs,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` +`),s("span",Rs,[xs,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` `),Zs,i(` -`),Ms,i(` `),Js,i(` -`),Ys,i(` -`),s("span",Hs,[Gs,$s,Ls,Os,s("span",Ks,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Qs]),i(` -`),Ws,i(` -`),Xs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; +`),Ms,i(` +`),Hs,i(` +`),s("span",$s,[Ks,Ls,Os,Qs,s("span",Xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ys]),i(` +`),Gs,i(` +`),Ws])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; diff --git a/dev/assets/guide_start_index.md.CW7y_uqV.lean.js b/dev/assets/guide_start_index.md.DCosM122.lean.js similarity index 83% rename from dev/assets/guide_start_index.md.CW7y_uqV.lean.js rename to dev/assets/guide_start_index.md.DCosM122.lean.js index ea38b52cd4..b5a4349fbd 100644 --- a/dev/assets/guide_start_index.md.CW7y_uqV.lean.js +++ b/dev/assets/guide_start_index.md.DCosM122.lean.js @@ -1,22 +1,22 @@ -import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f as _}from"./chunks/framework.DeE3OwZJ.js";const o=s("h1",{id:"快速上手",tabindex:"-1"},[i("快速上手 "),s("a",{class:"header-anchor",href:"#快速上手","aria-label":'Permalink to "快速上手"'},"​")],-1),y=s("h2",{id:"下载使用",tabindex:"-1"},[i("下载使用 "),s("a",{class:"header-anchor",href:"#下载使用","aria-label":'Permalink to "下载使用"'},"​")],-1),c=s("p",null,"你可以从如下地址下载 ZUI 的最新版本:",-1),F={class:"gap-4 vp-raw row"},u=["href"],C=s("i",{class:"icon icon-download-alt icon-lg"},null,-1),A=["href"],T=s("i",{class:"icon icon-github icon-lg"},null,-1),D=a("",6),m={class:"vp-code-group vp-adaptive-theme"},B=a("",1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a("",1),z=a("",1),V=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),f=a("",1),N=a("",1),w=a("",1),R={class:"line highlighted"},U=a("",7),x={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),M=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),J=a("",1),Y=a("",1),H={class:"line highlighted"},G=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),L=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),O=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),K={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Q=a("",6),W=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),X=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a("",1),ns=a("",1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a("",1),ps=a("",1),es=a("",1),Es={class:"line highlighted"},ds=a("",7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a("",1),cs=a("",1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a("",6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a("",1),zs=a("",1),Vs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),fs=a("",1),Ns=a("",1),ws=a("",1),Rs={class:"line highlighted"},Us=a("",7),xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ms=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Js=a("",1),Ys=a("",1),Hs={class:"line highlighted"},Gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),$s=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Ls=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Os=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ks={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Qs=a("",6),Ws=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Xs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a("",8),ii=s("div",{"zui-create":"datePicker"},null,-1),ai=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"datePicker"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),ti=s("p",null,[i("使用 "),s("code",null,"zui-create-"),i(" 来定义组件选项,例如:")],-1),hi=s("div",{"zui-create":"","zui-create-list":"{items: [{text: 'item1'}, {text: 'item2'}], onClickItem: (e) => console.log('You clicked', e)}"},null,-1),ni=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create-list"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"')]),i(` +import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f as _}from"./chunks/framework.DeE3OwZJ.js";const o=s("h1",{id:"快速上手",tabindex:"-1"},[i("快速上手 "),s("a",{class:"header-anchor",href:"#快速上手","aria-label":'Permalink to "快速上手"'},"​")],-1),y=s("h2",{id:"下载使用",tabindex:"-1"},[i("下载使用 "),s("a",{class:"header-anchor",href:"#下载使用","aria-label":'Permalink to "下载使用"'},"​")],-1),c=s("p",null,"你可以从如下地址下载 ZUI 的最新版本:",-1),F={class:"gap-4 vp-raw row"},u=["href"],C=s("i",{class:"icon icon-download-alt icon-lg"},null,-1),A=["href"],T=s("i",{class:"icon icon-github icon-lg"},null,-1),D=a("",6),m={class:"vp-code-group vp-adaptive-theme"},B=a("",1),b={class:"blocks"},v={class:"language-html vp-adaptive-theme active"},S=s("button",{title:"Copy Code",class:"copy"},null,-1),I=s("span",{class:"lang"},"html",-1),q={class:"shiki shiki-themes github-light github-dark vp-code"},P=a("",1),V=a("",1),z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),N=a("",1),f=a("",1),w=a("",1),R={class:"line highlighted"},x=a("",7),U={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},j=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Z=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),J=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),M=a("",1),H=a("",1),$={class:"line highlighted"},K=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),L=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),O=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Q=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),X={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Y=a("",6),G=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),W=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),ss={class:"language-html vp-adaptive-theme"},is=s("button",{title:"Copy Code",class:"copy"},null,-1),as=s("span",{class:"lang"},"html",-1),ts={class:"shiki shiki-themes github-light github-dark vp-code"},hs=a("",1),ns=a("",1),ls=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ks=a("",1),ps=a("",1),es=a("",1),Es={class:"line highlighted"},ds=a("",7),rs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},gs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),_s=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),os=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),ys=a("",1),cs=a("",1),Fs={class:"line highlighted"},us=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Cs=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),As=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Ts=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Ds={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},ms=a("",6),Bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),bs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),vs={class:"language-html vp-adaptive-theme"},Ss=s("button",{title:"Copy Code",class:"copy"},null,-1),Is=s("span",{class:"lang"},"html",-1),qs={class:"shiki shiki-themes github-light github-dark vp-code"},Ps=a("",1),Vs=a("",1),zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"head"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ns=a("",1),fs=a("",1),ws=a("",1),Rs={class:"line highlighted"},xs=a("",7),Us={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},js=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">",-1),Zs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Js=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"body"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")],-1),Ms=a("",1),Hs=a("",1),$s={class:"line highlighted"},Ks=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," <",-1),Ls=s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"script",-1),Os=s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," src",-1),Qs=s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"=",-1),Xs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Ys=a("",6),Gs=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," ")],-1),Ws=s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"")],-1),si=a("",8),ii=s("div",{"zui-create":"datePicker"},null,-1),ai=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"datePicker"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),ti=s("p",null,[i("使用 "),s("code",null,"zui-create-"),i(" 来定义组件选项,例如:")],-1),hi=s("div",{"zui-create":"","zui-create-list":"{items: [{text: 'item1'}, {text: 'item2'}], onClickItem: (e) => console.log('You clicked', e)}"},null,-1),ni=s("div",{class:"language-html vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"html"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"<"),s("span",{style:{"--shiki-light":"#22863A","--shiki-dark":"#85E89D"}},"div"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create"),s("span",{style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}}," zui-create-list"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"="),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"')]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," {")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," items: [{text: 'item1'}, {text: 'item2'}],")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," onClickItem: (e) => console.log('You clicked', e)")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}}," }")]),i(` `),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},">")])])])],-1),li=a("",8),di=JSON.parse('{"title":"快速上手","description":"","frontmatter":{},"headers":[],"relativePath":"guide/start/index.md","filePath":"guide/start/index.md","lastUpdated":null}'),ki={name:"guide/start/index.md"},ri=Object.assign(ki,{setup(pi){return(t,ei)=>{const e=p("Example"),k=p("PluginTabsTab"),E=p("PluginTabs");return g(),d("div",null,[o,y,c,s("div",F,[s("a",{class:"rounded-full btn primary size-lg",href:r(_)(`/zui-${t.zui.version}.zip`),download:""},[C,i(" 点击下载")],8,u),s("a",{class:"rounded-full btn outline size-lg",href:`https://github.com/easysoft/zui/releases/tag/v${t.zui.version}`,target:"_blank"},[T,i(" 从 GitHub 下载")],8,A)]),D,s("div",m,[B,s("div",b,[s("div",v,[S,I,s("pre",q,[s("code",null,[P,i(` -`),z,i(` `),V,i(` -`),f,i(` +`),z,i(` `),N,i(` +`),f,i(` `),w,i(` -`),s("span",R,[U,s("span",x,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` +`),s("span",R,[x,s("span",U,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.css"',1),j]),i(` `),Z,i(` -`),M,i(` `),J,i(` -`),Y,i(` -`),s("span",H,[G,$,L,O,s("span",K,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Q]),i(` -`),W,i(` -`),X])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` +`),M,i(` +`),H,i(` +`),s("span",$,[K,L,O,Q,s("span",X,'"///cdn.jsdelivr.net/npm/zui/dist/'+l(t.zui.version)+'/zui.js"',1),Y]),i(` +`),G,i(` +`),W])])]),s("div",ss,[is,as,s("pre",ts,[s("code",null,[hs,i(` `),ns,i(` `),ls,i(` `),ks,i(` @@ -30,16 +30,16 @@ import{c as d,k as s,m as r,a as i,t as l,I as h,w as n,R as a,D as p,o as g,f a `),s("span",Fs,[us,Cs,As,Ts,s("span",Ds,'"///cdn.bootcdn.net/ajax/libs/zui/'+l(t.zui.version)+'/zui.js"',1),ms]),i(` `),Bs,i(` `),bs])])]),s("div",vs,[Ss,Is,s("pre",qs,[s("code",null,[Ps,i(` -`),zs,i(` `),Vs,i(` -`),fs,i(` +`),zs,i(` `),Ns,i(` +`),fs,i(` `),ws,i(` -`),s("span",Rs,[Us,s("span",xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` +`),s("span",Rs,[xs,s("span",Us,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.css"',1),js]),i(` `),Zs,i(` -`),Ms,i(` `),Js,i(` -`),Ys,i(` -`),s("span",Hs,[Gs,$s,Ls,Os,s("span",Ks,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Qs]),i(` -`),Ws,i(` -`),Xs])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; +`),Ms,i(` +`),Hs,i(` +`),s("span",$s,[Ks,Ls,Os,Qs,s("span",Xs,'"///unpkg.com/zui@'+l(t.zui.version)+'/zui.js"',1),Ys]),i(` +`),Gs,i(` +`),Ws])])])])]),si,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[ii]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ai]),_:1})]),_:1}),ti,h(E,null,{default:n(()=>[h(k,{label:"示例"},{default:n(()=>[h(e,null,{default:n(()=>[hi]),_:1})]),_:1}),h(k,{label:"HTML"},{default:n(()=>[ni]),_:1})]),_:1}),li])}}});export{di as __pageData,ri as default}; diff --git a/dev/guide/config/base/color.html b/dev/guide/config/base/color.html index 169d30f819..7779b077b7 100644 --- a/dev/guide/config/base/color.html +++ b/dev/guide/config/base/color.html @@ -14,8 +14,8 @@ - - + + @@ -49,7 +49,7 @@ --color-primary-900-rgb: 88, 34, 133; --color-primary-950-rgb: 59, 14, 99; }

提示

在定义 CSS 变量覆盖调色板时,除了定义 50~950 的十六进制颜色外,还需要定义对应的 RGB 颜色,这是为了在一些特殊场景下通过改变透明度来实现颜色的变化。

注意

如果你需要自定义配色,建议只通过修改调色板来实现,不建议修改界面颜色,除非主题需要实现对比度更明显的风格,任何时候都不应该修改特殊颜色的定义。

更多关于主题的内容参考 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/font.html b/dev/guide/config/base/font.html index 9f439f65ab..63bcea3025 100644 --- a/dev/guide/config/base/font.html +++ b/dev/guide/config/base/font.html @@ -14,8 +14,8 @@ - - + + @@ -44,7 +44,7 @@ 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
leading-relaxed
.leading-relaxed
宽松
line-height: line-height
So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.
 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
leading-loose
.leading-loose
松散
line-height: line-height
So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.
 月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

在 ZUI 中可以通过 CSS 工具类来设置行高,详细用法参加 CSS 工具类 / 排版 / 行高 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/rounded.html b/dev/guide/config/base/rounded.html index 258cc2a953..11530a2f37 100644 --- a/dev/guide/config/base/rounded.html +++ b/dev/guide/config/base/rounded.html @@ -14,8 +14,8 @@ - - + + @@ -31,7 +31,7 @@ --radius-3xl: 1.5rem; --radius-full: 9999px; }

自定义主题

可以通过定制主题来修改圆角设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/screens.html b/dev/guide/config/base/screens.html index ab6448f65d..1373324a9b 100644 --- a/dev/guide/config/base/screens.html +++ b/dev/guide/config/base/screens.html @@ -14,8 +14,8 @@ - - + + @@ -54,7 +54,7 @@ --screen-xl: 1280px; --screen-2xl: 1536px; }

自定义主题

可以通过定制主题来修改屏幕断点设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/shadow.html b/dev/guide/config/base/shadow.html index fa253c4e70..e62e12e84b 100644 --- a/dev/guide/config/base/shadow.html +++ b/dev/guide/config/base/shadow.html @@ -14,8 +14,8 @@ - - + + @@ -30,7 +30,7 @@ --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); --shadow-none: none; }

自定义主题

可以通过定制主题来修改阴影设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/config/base/spacing.html b/dev/guide/config/base/spacing.html index 8705fce273..0dbe409fa2 100644 --- a/dev/guide/config/base/spacing.html +++ b/dev/guide/config/base/spacing.html @@ -14,14 +14,14 @@ - - + +
Skip to content

间距

间距配置

为了方便实现风格一致的交互界面,ZUI 预置了间距设置。下面为默认的间距配置:

名称
实际值
预览
0
width
px
width
0.5
width
1
width
1.5
width
2
width
2.5
width
3
width
3.5
width
4
width
5
width
6
width
7
width
8
width
9
width
10
width
11
width
12
width
14
width
16
width
20
width
24
width
28
width
32
width
36
width
40
width
44
width
48
width
52
width
56
width
60
width
64
width
72
width
80
width
96
width

4px 约定

通过上表可以看到,除了 0px 比较特殊的设置,其他间距实际值都是 4px 的倍数,这是有意设计,无论是设计还是开发都应该将间距为 4px 的倍数作为约定,这样更有利于实现风格一致的交互界面。

当以上间距无法满足要求时,如果需要引入新的间距值也应当遵从 4px 约定。

间距会影响所有相关 CSS 属性配置,包括 paddingmarginwidthheightmaxHeightgapinset 等。

使用间距

在 ZUI 中提供了大量 CSS 工具类,可以非常方便的来应用间距配置,包括:

如需了解,请参考对应的文档。

自定义间距

可以通过定制主题来修改间距设置,具体参见 主题 文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/build.html b/dev/guide/customize/build.html index 341f8c463f..fbd56d5ec3 100644 --- a/dev/guide/customize/build.html +++ b/dev/guide/customize/build.html @@ -14,14 +14,14 @@ - - + +
Skip to content

打包

打包组件库

执行如下命令进行打包操作:

sh
pnpm build

该命令提供了一些参数用户个性化打包,例如打包命令后可以直接指定需要打包的组件库,通过 --name 来指定打包生成的文件名:

sh
pnpm build -- utilities dtable --name=zui-table

打包文档

执行如下命令进行打包文档网站:

sh
pnpm docs:build

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/dev.html b/dev/guide/customize/dev.html index e30e46ee36..c79b8ae0d9 100644 --- a/dev/guide/customize/dev.html +++ b/dev/guide/customize/dev.html @@ -14,14 +14,14 @@ - - + +
Skip to content

开发

开发服务

执行如下命令启动开发服务:

shell
$ pnpm dev

开发服务器启动后,默认情况下可以通过网址:http://localhost:5173/ 来访问开发服务页面。通过页面上的组件导航,可以访问对应的组件开发页面。也可以将组件名附加到网址后面,直接访问对应的组件页面,例如 http://localhost:5173/button/

在开发服务页面上支持热更新,当开发文件变更后会自动反馈到开发服务页面上。

对组件进行开发调试

组件开发目录

ZUI3 每个组件在一个独立的目录内,拥有自己的 package.json 文件,使得组件可以独立作为 npm 包来使用,也可以单独作为子项目进行开发维护。

提示

通常组件通过在 package.json 文件中设置属性 private: true 来让包仅在 zui3 工作空间内可用,但组件仍然拥有作为公开的包发布到 npm 上进行独立使用。

文档开发服务

启动 ZUI 文档网站开发服务执行如下命令:

shell
$ pnpm docs:dev

此命令会先打包 ZUI 并启动文档开发服务器,默认情况下可以通过网址:http://localhost:5174/ 来访问文档开发服务页面。在文档开发服务启动时,修改文档源文件,会自动更新文档页面。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/customize/exts-lib.html b/dev/guide/customize/exts-lib.html index d391c870f5..8aacc2d84c 100644 --- a/dev/guide/customize/exts-lib.html +++ b/dev/guide/customize/exts-lib.html @@ -14,8 +14,8 @@ - - + + @@ -23,7 +23,7 @@
Skip to content

组件库扩展

ZUI3 组件库内置了大量组件,并支持集中开发、调试和打包,其中打包还支持只选择指定的组件进行个性化定制,同步输出组件库文档。但当需求扩展到组件库之外时,就需要用到扩展组件库了。ZUI3 支持扩展组件库模式,可以从其他位置引入一个或多个组件库目录,享受集中开发、调试和打包。下面介绍扩展组件库的使用方法。

定义扩展库

扩展组件库可以来自本地系统的任意位置,只需要提供一个路径,例如:

txt
/Users/TaiJi/Projects/zui3_exts/lib/

扩展组件库的目录结构与 ZUI3 /lib/ 下的目录结构一致,下面的每个子目录为一个独立的组件,详细定义参考 开发文档

添加扩展库

zui3 项目根目录执行:

shell
$ pnpm extend-lib -- <ext_lib_path> <lib_name>

其中参数 ext_lib_path 为扩展组件库路径,<lib_name> 为扩展组件库名称。例如:

shell
$ pnpm extend-lib -- /Users/TaiJi/Projects/zui3_exts/lib/ zentao

执行上述命令之后,会将组件库目录文件拷贝到 zui3/lib_name 目录下,同时会在 zui3/exts/libs.json 文件中记录此扩展库的名称和路径。

json
{
     "zentao": "/Users/TaiJi/Projects/zui3_exts/lib/*"
 }

实际上,你也可以通过自己编辑这个文件来添加扩展库。

启动开发服务

要在开发模式中包含对扩展组件库的开发调试,只需要执行如下命令代替 pnpm dev 命令即可:

shell
$ pnpm dev:exts

当添加了多个扩展库时,上述命令会包含所有扩展库,有时只需要包含特定的扩展库,只需要自定义 --lib 参数即可:

shell
$ pnpm dev:exts --lib=zui,zentao

启动文档服务器

要在文档网站服务模式中包含对扩展组件库的文档支持,只需要如下命令代替 pnpm docs:dev 命令即可:

shell
$ pnpm docs:dev:exts

打包

打包时如果需要将扩展库中的组件也进行打包,则需要添加 --exts 参数,然后就可以在需要打包的组件清单中指定扩展库中的组件名称:

shell
$ pnpm build -- label @zentao/status-label --exts

如果不指定名称,则默认打包仍然只打包内置组件库的组件,例如下面的命令仍然相当于 pnpm build

shell
$ pnpm build -- --exts

如果需要将所有内置组件库和扩展库中的所有组件一并打包,可以使用如下命令:

shell
$ pnpm build -- zui+exts --exts --name=zentao

当添加了多个扩展库时,上述命令会包含所有扩展库,有时只需要包含特定的扩展库,只需要自定义 --exts 参数即可:

shell
$ pnpm build -- zui+exts --exts=zui,zentao

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/index.html b/dev/guide/index.html index ac997b9ba8..ce550359b2 100644 --- a/dev/guide/index.html +++ b/dev/guide/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/compatibility.html b/dev/guide/start/compatibility.html index 1e397f24d8..b2c54f68e0 100644 --- a/dev/guide/start/compatibility.html +++ b/dev/guide/start/compatibility.html @@ -14,14 +14,14 @@ - - + +
Skip to content

兼容性

支持的浏览器

  • Chrome:84+
  • Firefox:63+
  • Safari:14.1+
  • Edge:84+
  • Chrome for Android:126+
  • iOS Safari:14.5+

用到的第三方库

在 ZUI 3 中使用了一些精心挑选的第三方库,这些库通常足够小巧但实用:

  • preact - 基于 Preact 实现了大部分 JS 组件,通过封装支持原生调用
  • cash-dom - 提供了大量辅助方法方便操作 DOM,同时提供了对 jQuery 的兼容实用方式
  • floating UI - 实现浮动交互定位,例如下拉菜单、工具提示等
  • tinykeys - 实现快捷键功能

技术栈

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/index.html b/dev/guide/start/index.html index b666b5bbab..23d686d02d 100644 --- a/dev/guide/start/index.html +++ b/dev/guide/start/index.html @@ -12,10 +12,10 @@ - + - - + + @@ -36,7 +36,7 @@ <a class="btn" href="/">访问 ZUI 网站</a> <script src="./zui/zui.js"></script> </body> -</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

html
<!doctype html>
+</html>

使用 CDN

使用 CDN 可以快速使用 ZUI,与下载使用基本一样,只需要将相关资源文件替换为 CDN 上的地址即可:

html
<!doctype html>
 <html lang="zh-CN">
   <head>
     <meta charset="utf-8">
@@ -108,7 +108,7 @@
 import 'zui/lib/dtable/css';
 
 const myTable = new DTable('#myTable', {...});

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/intro.html b/dev/guide/start/intro.html index e6315e6014..29b6995634 100644 --- a/dev/guide/start/intro.html +++ b/dev/guide/start/intro.html @@ -14,14 +14,14 @@ - - + +
Skip to content

介绍

ZUI 3 是一个的开源 UI 组件库,提供了大量实用组件,支持最大限度的定制,不依赖任何其他 JS 框架,可以在任何 Web 应用中通过原生的方式使用。

功能特性

  • 📡 统一的 UI 配置:基于 CSS 变量实现的全局 UI 配置,为组件提供了统一的风格基础,支持深色模式,方便定制主题;
  • 👔 丰富的 CSS 工具类:基于 Tailwind CSS 提供了丰富的 CSS 工具类,包括特别的语义化外观工具类,轻松实现常见布局、文字排版、动画、外观定义;
  • ⭐️ 实用的 CSS 组件:提供了大量实用的 CSS 组件,无需借助 JS 即可实现界面基本功能,例如按钮、表单、导航、卡片、表格等;
  • 💎 强大的 JS 组件:通过 JS 实现很多功能强大的组件,包括下拉菜单、工具提示、对话框、数据表格、文件上传等;
  • 📦 使用灵活:不依赖具体的框架,所有 CSS 工具类开箱即用,所有 JS 组件支持原生调用,丰富的引入方式,支持通过 ESM 导入,或者直接在浏览器中引用整个 JS 和 CSS,支持打包定制自己的组合版本。

与 ZUI1 的区别

相比较 ZUI 1,ZUI 3 是一个全新的更加现代的 UI 组件库,主要有如下区别:

区别ZUI 1ZUI 3
外部依赖jQuery
内部依赖Bootstrap 3
网格布局实现floatFlex
工具类部分样式、布局、排版工具类丰富的样式、布局、排版、交互效果工具类
主题定制CSS 覆盖CSS 变量
CSS 组件大部分由 Bootstrap 提供全新的 CSS 组件,更方便定制外观
JS 组件基于 jQuery 实现基于 Preact 实现,功能更强大

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/guide/start/tutorial.html b/dev/guide/start/tutorial.html index 9f58d7f4bb..c75778ff40 100644 --- a/dev/guide/start/tutorial.html +++ b/dev/guide/start/tutorial.html @@ -14,8 +14,8 @@ - - + + @@ -238,7 +238,7 @@ /* Extend StepsEditor to zui object. */ $.extend(zui, {StepsEditor});

开发定制入门

参考打包开发扩展文档。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 25f385d6e9..3bcf9e3190 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"lib_basic_core_zui-on.md":"IjDbHIdO","guide_customize_exts-lib.md":"BKuxQGR7","lib_basic_core_zui-toggle.md":"D_sPxQQs","guide_start_compatibility.md":"CltyrLny","guide_start_intro.md":"DEIJsFre","guide_index.md":"t3LZT4QY","lib_components_calendar_index.md":"CkvLcaAr","lib_basic_core_cash.md":"Bzo_CH3I","lib_basic_core_react.md":"BTwYD_hf","index.md":"0I4m7CHi","guide_start_index.md":"CW7y_uqV","guide_customize_build.md":"BnMDMPqz","guide_config_base_spacing.md":"B653NiFv","lib_components_breadcrumb_index.md":"9pymY2C8","lib_basic_core_component.md":"uPNn0zXQ","lib_index.md":"Ci-MFpvh","public_zui_icons_fontawesome-license.md":"gfk3cURr","utilities_backgrounds_utilities_index.md":"83vrBdjK","utilities_borders_utilities_border-color.md":"YFsIdVzo","utilities_borders_utilities_border-radius.md":"Dh1Nfe3A","utilities_borders_utilities_border-width.md":"DVKauZHZ","utilities_borders_utilities_divider.md":"khTQtOjv","utilities_borders_utilities_ring-color.md":"s0nb0vey","lib_components_color-picker_index.md":"TddEDwtA","lib_components_contextmenu_index.md":"DmEkUwKC","lib_components_dashboard_index.md":"DRaM25zK","lib_components_file-selector_index.md":"DvywDJ4t","lib_components_dropdown_index.md":"DbbvFq7u","lib_components_pager_js.md":"DDMQ9lXw","guide_config_base_font.md":"Ba4TxUmX","lib_components_kanban_index.md":"BFBze8B1","lib_components_label_index.md":"q76w0qb_","guide_config_base_rounded.md":"-jZtXV-b","lib_components_avatar_index.md":"7j-ew9BZ","lib_components_menu_index.md":"GncmWrZR","lib_components_nav_js.md":"OePgMXXa","lib_components_panel_index.md":"CoS14bNk","utilities_effects_utilities_opacity.md":"BcIL05hy","lib_components_scrollbar_index.md":"BjI3vUqu","utilities_effects_utilities_transition.md":"SqXrre1m","utilities_borders_utilities_ring-offset.md":"DVb4azgP","themes_index.md":"BufleTaf","lib_forms_datetime-picker_time.md":"BTTIPCd8","lib_components_button_index.md":"B_1XMQuI","lib_components_nav_index.md":"LeXRijcV","lib_forms_input-group_index.md":"BMbSYMAL","utilities_layout_utilities_overflow.md":"DVHk2FQA","lib_components_btn-group_index.md":"5V7X7r4P","utilities_typography_utilities_list-style.md":"LuK8VgZf","lib_forms_datetime-picker_datetime.md":"CPkUUpoa","utilities_borders_utilities_ring-width.md":"DzwqJDAb","utilities_flex_utilities_basis.md":"CD8bfBkC","utilities_flex_utilities_direction.md":"ByjEgbMo","utilities_flex_utilities_flex.md":"BlvjgLjv","utilities_sizing_utilities_width.md":"DNXQWQFd","utilities_flex_utilities_gap.md":"DArM8pom","utilities_flex_utilities_grow.md":"Cn0nOehN","utilities_flex_utilities_align-self.md":"FvSQ-0Fm","utilities_typography_utilities_font-weight.md":"CV3nf15_","utilities_flex_utilities_justify-content.md":"D4BVZfVC","utilities_flex_utilities_order.md":"CfeTP7tL","utilities_layout_utilities_floats.md":"pUvtfQiw","guide_config_base_shadow.md":"BNzZgBvC","utilities_typography_utilities_leading.md":"DOlxRw-6","lib_components_progress_index.md":"CEtektTK","utilities_typography_utilities_line-clamp.md":"CvO9OG4z","lib_helpers_store_index.md":"Bb0Q5VMq","lib_components_toolbar_index.md":"DvojQFd3","utilities_effects_utilities_shadow.md":"CaSFSOMl","lib_forms_form_index.md":"sRq2u4jF","utilities_typography_utilities_text-align.md":"CtJ4rtrI","lib_components_upload-imgs_index.md":"erXa6IN9","lib_forms_input-control_index.md":"Cv0HAFHI","utilities_typography_utilities_text-decoration.md":"BvY6hqYi","lib_components_search-box_index.md":"C6d4tMjv","utilities_layout_utilities_container.md":"Bb3Lxa_7","utilities_skin_utilities_outline.md":"bsC71Qhi","lib_components_table_index.md":"Ck9c8Ek4","utilities_typography_utilities_vertical-align.md":"DiLQT3Ni","utilities_flex_utilities_align-items.md":"CoFxBC8U","lib_helpers_helpers_date-helper.md":"8AhG85Op","lib_components_alert_index.md":"Bep50ZBz","lib_components_tooltip_index.md":"Co1ECN3g","utilities_skin_utilities_ghost.md":"DIt2ElJv","utilities_layout_utilities_position.md":"rEqgc51a","utilities_skin_utilities_surface.md":"CN20jMqq","lib_components_tree_index.md":"Dn03SufJ","utilities_index.md":"CTpyUmIw","utilities_skin_utilities_pale.md":"D1L1NRKs","guide_config_base_screens.md":"CXV8MRfe","lib_basic_core_zui-create.md":"DLe7A4Hj","utilities_typography_utilities_text-color.md":"D1fjRsa-","lib_components_toolbar_js.md":"ih1Bb-Rr","utilities_layout_utilities_display.md":"DcXW9WtS","utilities_interactivity_utilities_scroll.md":"-0JODEPX","guide_customize_dev.md":"BHKWgm2m","utilities_typography_utilities_text-transform.md":"CM7k043G","utilities_interactivity_utilities_pointer-events.md":"EHN_kBvp","utilities_interactivity_utilities_state.md":"0ZTXUBo7","lib_components_avatar-group_index.md":"BqwB9RZP","utilities_flex_utilities_wrap.md":"DZ1moX26","lib_basic_core_css-component.md":"BwdGvlia","utilities_interactivity_utilities_user-select.md":"BrNPbIfK","utilities_skin_utilities_solid.md":"Cst9ctTO","lib_components_menu_js.md":"CtCBsfaZ","utilities_flex_utilities_shrink.md":"CangfHwT","utilities_typography_utilities_whitespace.md":"BFKZWjDW","lib_components_dtable_index.md":"BffsFMb4","utilities_typography_utilities_word-break.md":"BxSlEVBy","utilities_layout_utilities_object-fit.md":"D4YmLxEC","utilities_flex_utilities_align-content.md":"BXGtlw9g","lib_forms_checkbox_index.md":"D_VspyHI","utilities_layout_utilities_visibility.md":"CKuADuoh","utilities_spacing_utilities_padding.md":"DuVwhAAe","lib_components_pager_index.md":"D-bROEeS","lib_forms_checkbox_switch.md":"QH8sYaT3","utilities_effects_utilities_animation.md":"B91izYvM","utilities_interactivity_utilities_loading.md":"Da_3FM-1","utilities_interactivity_utilities_disabled.md":"CEB7Waub","lib_components_messager_index.md":"BW-SbOyW","utilities_layout_utilities_z-index.md":"DKY1uWyd","utilities_layout_utilities_aspect-ratio.md":"_oWsoIYV","guide_start_tutorial.md":"CmfMgriO","utilities_effects_utilities_filter.md":"BECjG4KT","utilities_layout_utilities_top-right-bottom-left.md":"C3lYdIa5","lib_components_modal_index.md":"CgbVseyc","utilities_typography_utilities_text-overflow.md":"CCaD8PoB","utilities_spacing_utilities_margin.md":"C9jBOzP9","lib_helpers_helpers_string-helper.md":"me2jtoF5","utilities_effects_utilities_transform.md":"DOI7WnD2","utilities_interactivity_utilities_cursor.md":"DvV2lotG","lib_components_modal_trigger.md":"BMBZZybJ","utilities_spacing_utilities_space.md":"xgZHI4vS","guide_config_base_color.md":"B_i0YNBV","lib_components_upload_index.md":"CzVklHlh","lib_components_dtable_plugins.md":"CrBZnIMk","lib_forms_datetime-picker_date.md":"D59eL2rp","lib_components_progress-circle_index.md":"B0UUIqGM","utilities_typography_utilities_font-size.md":"B3W8gyR3","utilities_typography_utilities_font-family.md":"BHWBVXg4","lib_forms_picker_index.md":"DRGaAh8C","utilities_sizing_utilities_height.md":"CdF7aUuw","lib_components_tabs_index.md":"D-2YSS_0","lib_forms_form-control_index.md":"BiHmr69s"} +{"guide_config_base_shadow.md":"BNzZgBvC","index.md":"0I4m7CHi","lib_basic_core_zui-create.md":"DLe7A4Hj","lib_basic_core_css-component.md":"BwdGvlia","guide_config_base_font.md":"Ba4TxUmX","guide_config_base_rounded.md":"-jZtXV-b","lib_basic_core_cash.md":"Bzo_CH3I","lib_components_button_index.md":"B_1XMQuI","guide_start_intro.md":"DEIJsFre","lib_components_btn-group_index.md":"5V7X7r4P","guide_start_compatibility.md":"CltyrLny","lib_components_breadcrumb_index.md":"9pymY2C8","lib_basic_core_zui-toggle.md":"D_sPxQQs","lib_components_tooltip_index.md":"Co1ECN3g","lib_forms_checkbox_switch.md":"QH8sYaT3","lib_forms_input-group_index.md":"BMbSYMAL","lib_forms_datetime-picker_datetime.md":"CPkUUpoa","lib_forms_form_index.md":"sRq2u4jF","utilities_skin_utilities_outline.md":"bsC71Qhi","lib_components_label_index.md":"q76w0qb_","lib_components_nav_index.md":"LeXRijcV","lib_forms_datetime-picker_date.md":"D59eL2rp","lib_forms_input-control_index.md":"Cv0HAFHI","lib_components_table_index.md":"Ck9c8Ek4","lib_components_tabs_index.md":"D-2YSS_0","lib_components_search-box_index.md":"C6d4tMjv","utilities_flex_utilities_justify-content.md":"D4BVZfVC","lib_components_panel_index.md":"CoS14bNk","utilities_typography_utilities_text-transform.md":"CM7k043G","lib_components_toolbar_js.md":"ih1Bb-Rr","lib_components_kanban_index.md":"BFBze8B1","utilities_spacing_utilities_padding.md":"DuVwhAAe","lib_forms_datetime-picker_time.md":"BTTIPCd8","lib_components_toolbar_index.md":"DvojQFd3","lib_components_scrollbar_index.md":"BjI3vUqu","guide_index.md":"t3LZT4QY","lib_helpers_store_index.md":"Bb0Q5VMq","lib_components_modal_index.md":"CgbVseyc","lib_forms_form-control_index.md":"BiHmr69s","utilities_skin_utilities_solid.md":"Cst9ctTO","utilities_spacing_utilities_margin.md":"C9jBOzP9","lib_components_menu_index.md":"GncmWrZR","guide_start_tutorial.md":"CmfMgriO","utilities_borders_utilities_ring-width.md":"DzwqJDAb","utilities_effects_utilities_filter.md":"BECjG4KT","lib_components_file-selector_index.md":"DvywDJ4t","lib_components_color-picker_index.md":"TddEDwtA","utilities_skin_utilities_pale.md":"D1L1NRKs","lib_components_avatar_index.md":"7j-ew9BZ","utilities_effects_utilities_opacity.md":"BcIL05hy","lib_helpers_helpers_date-helper.md":"8AhG85Op","lib_components_alert_index.md":"Bep50ZBz","utilities_skin_utilities_surface.md":"CN20jMqq","guide_customize_build.md":"BnMDMPqz","lib_forms_checkbox_index.md":"D_VspyHI","public_zui_icons_fontawesome-license.md":"gfk3cURr","lib_helpers_helpers_string-helper.md":"me2jtoF5","guide_config_base_color.md":"B_i0YNBV","themes_index.md":"BufleTaf","utilities_backgrounds_utilities_index.md":"83vrBdjK","guide_start_index.md":"DCosM122","utilities_borders_utilities_border-color.md":"YFsIdVzo","utilities_borders_utilities_border-radius.md":"Dh1Nfe3A","lib_index.md":"Ci-MFpvh","utilities_borders_utilities_border-width.md":"DVKauZHZ","utilities_borders_utilities_divider.md":"khTQtOjv","utilities_borders_utilities_ring-color.md":"s0nb0vey","utilities_borders_utilities_ring-offset.md":"DVb4azgP","utilities_effects_utilities_animation.md":"B91izYvM","utilities_effects_utilities_shadow.md":"CaSFSOMl","lib_components_dtable_index.md":"BffsFMb4","utilities_effects_utilities_transform.md":"DOI7WnD2","utilities_typography_utilities_whitespace.md":"BFKZWjDW","utilities_effects_utilities_transition.md":"SqXrre1m","utilities_typography_utilities_word-break.md":"BxSlEVBy","utilities_flex_utilities_align-content.md":"BXGtlw9g","utilities_flex_utilities_align-items.md":"CoFxBC8U","utilities_flex_utilities_align-self.md":"FvSQ-0Fm","utilities_flex_utilities_basis.md":"CD8bfBkC","utilities_flex_utilities_direction.md":"ByjEgbMo","utilities_flex_utilities_flex.md":"BlvjgLjv","utilities_flex_utilities_gap.md":"DArM8pom","utilities_flex_utilities_grow.md":"Cn0nOehN","utilities_flex_utilities_order.md":"CfeTP7tL","utilities_flex_utilities_shrink.md":"CangfHwT","utilities_flex_utilities_wrap.md":"DZ1moX26","utilities_index.md":"CTpyUmIw","utilities_interactivity_utilities_cursor.md":"DvV2lotG","utilities_interactivity_utilities_disabled.md":"CEB7Waub","utilities_interactivity_utilities_loading.md":"Da_3FM-1","utilities_interactivity_utilities_pointer-events.md":"EHN_kBvp","utilities_interactivity_utilities_scroll.md":"-0JODEPX","utilities_interactivity_utilities_state.md":"0ZTXUBo7","utilities_interactivity_utilities_user-select.md":"BrNPbIfK","utilities_layout_utilities_aspect-ratio.md":"_oWsoIYV","utilities_layout_utilities_container.md":"Bb3Lxa_7","lib_components_calendar_index.md":"CkvLcaAr","utilities_layout_utilities_object-fit.md":"D4YmLxEC","lib_forms_picker_index.md":"DRGaAh8C","utilities_layout_utilities_top-right-bottom-left.md":"C3lYdIa5","utilities_layout_utilities_visibility.md":"CKuADuoh","utilities_layout_utilities_z-index.md":"DKY1uWyd","utilities_sizing_utilities_height.md":"CdF7aUuw","utilities_sizing_utilities_width.md":"DNXQWQFd","lib_components_pager_index.md":"D-bROEeS","utilities_skin_utilities_ghost.md":"DIt2ElJv","lib_components_upload_index.md":"CzVklHlh","guide_customize_exts-lib.md":"BKuxQGR7","utilities_spacing_utilities_space.md":"xgZHI4vS","lib_basic_core_zui-on.md":"IjDbHIdO","utilities_layout_utilities_position.md":"rEqgc51a","utilities_typography_utilities_font-size.md":"B3W8gyR3","lib_components_menu_js.md":"CtCBsfaZ","utilities_typography_utilities_font-weight.md":"CV3nf15_","utilities_typography_utilities_font-family.md":"BHWBVXg4","utilities_typography_utilities_line-clamp.md":"CvO9OG4z","utilities_typography_utilities_text-align.md":"CtJ4rtrI","utilities_typography_utilities_leading.md":"DOlxRw-6","guide_config_base_spacing.md":"B653NiFv","utilities_typography_utilities_text-decoration.md":"BvY6hqYi","utilities_typography_utilities_list-style.md":"LuK8VgZf","guide_customize_dev.md":"BHKWgm2m","utilities_typography_utilities_text-overflow.md":"CCaD8PoB","utilities_typography_utilities_text-color.md":"D1fjRsa-","lib_components_progress-circle_index.md":"B0UUIqGM","lib_basic_core_react.md":"BTwYD_hf","lib_components_progress_index.md":"CEtektTK","lib_components_messager_index.md":"BW-SbOyW","lib_components_nav_js.md":"OePgMXXa","lib_components_dashboard_index.md":"DRaM25zK","lib_basic_core_component.md":"uPNn0zXQ","lib_components_modal_trigger.md":"BMBZZybJ","guide_config_base_screens.md":"CXV8MRfe","utilities_layout_utilities_display.md":"DcXW9WtS","utilities_layout_utilities_floats.md":"pUvtfQiw","lib_components_contextmenu_index.md":"DmEkUwKC","lib_components_upload-imgs_index.md":"erXa6IN9","utilities_layout_utilities_overflow.md":"DVHk2FQA","lib_components_avatar-group_index.md":"BqwB9RZP","lib_components_dropdown_index.md":"DbbvFq7u","utilities_typography_utilities_vertical-align.md":"DiLQT3Ni","lib_components_pager_js.md":"DDMQ9lXw","lib_components_tree_index.md":"Dn03SufJ","lib_components_dtable_plugins.md":"CrBZnIMk"} diff --git a/dev/index.html b/dev/index.html index 1f95be3139..c3b5064ded 100644 --- a/dev/index.html +++ b/dev/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

ZUI 3

开箱即用的组合式前端 UI 框架

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/cash.html b/dev/lib/basic/core/cash.html index 41e991051a..8c77ca83fe 100644 --- a/dev/lib/basic/core/cash.html +++ b/dev/lib/basic/core/cash.html @@ -14,8 +14,8 @@ - - + + @@ -82,7 +82,7 @@ /* 销毁。 */ datePicker.destroy();

辅助方法

$.fn.resize() 监听元素尺寸变化

定义:

ts
$.fn.resize(callback: ResizeObserverCallback): ResizeObserver;

参数

  • callback:回调函数,定义为 (entries: ResizeObserverEntry[], observer: ResizeObserver): void;

返回值ResizeObserverResizeObserver 对象。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/component.html b/dev/lib/basic/core/component.html index b95fdcb4c5..687ebf5486 100644 --- a/dev/lib/basic/core/component.html +++ b/dev/lib/basic/core/component.html @@ -14,8 +14,8 @@ - - + + @@ -117,7 +117,7 @@ const nav = zui.Nav.get('#myNav'); </script>

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/css-component.html b/dev/lib/basic/core/css-component.html index 19d7acff07..29454b7413 100644 --- a/dev/lib/basic/core/css-component.html +++ b/dev/lib/basic/core/css-component.html @@ -14,14 +14,14 @@ - - + +
Skip to content

CSS 组件

基本使用

CSS 组件通常提供了界面所需的基本功能,例如按钮、表单、导航、卡片、表格等,这些组件通常不需要 JS 的支持,只需要在 HTML 中使用对应的组件类名即可,例如按钮:

提示

一些 JS 组件也提供了纯 CSS 使用的方式,也就是说 CSS 组件也可能是一个 JS 组件。

组件样式

通用样式修饰

CSS 组件通常提供了多种样式修饰,例如按钮的颜色、大小、形状、状态等,大部分通用样式的修饰都可以通过 CSS 工具类来实现,例如:

专用样式修饰

部分组件提供了专用样式修饰类,这些类名通常为组件类加后缀实现,例如按钮组件的 btn-link

CSS 变量

CSS 组件通常提供了一些 CSS 变量用于自定义组件的样式,例如按钮组件提供了 --btn-bg 用于自定义按钮的颜色:

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/react.html b/dev/lib/basic/core/react.html index 6355a7f7ff..1b0ff816d1 100644 --- a/dev/lib/basic/core/react.html +++ b/dev/lib/basic/core/react.html @@ -14,8 +14,8 @@ - - + + @@ -33,7 +33,7 @@ */ static renderHTML(options: object): string; }

React 组件相比较普通的组件有如下特点:

  • 组件采用 Preact 开发,当重新进行渲染时,只会更新组件的部分内容,而不是整个元素;
  • 组件对应的元素内部禁止直接进行修改,因为每次渲染时都会重新生成组件的内容。

React 组件实例上的 $ 属性是组件的 React 实例,可以通过这个属性来访问组件的属性和方法。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-create.html b/dev/lib/basic/core/zui-create.html index 708c94031c..4c84f3ee9d 100644 --- a/dev/lib/basic/core/zui-create.html +++ b/dev/lib/basic/core/zui-create.html @@ -14,14 +14,14 @@ - - + +
Skip to content

便捷组件声明

在 ZUI 中,所有 JS 组件支持通过声明 zui-create 属性来自动创建,例如:

使用 zui-create-<component> 来定义组件选项,例如:

注意

通过 zui-create 创建的组件,只会在页面加载完成后自动扫描一次,如果需要在动态添加的元素上利用 zui-create 创建组件,需要手动执行 $(element).zuiInit() 初始化。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-on.html b/dev/lib/basic/core/zui-on.html index cca1b6b7e3..e35947adaf 100644 --- a/dev/lib/basic/core/zui-on.html +++ b/dev/lib/basic/core/zui-on.html @@ -14,14 +14,14 @@ - - + +
Skip to content

便捷事件绑定

介绍

便捷事件机制允许通过 HTML 元素属性 [zui-on-*] 来绑定事件。下面为一个例子:

上例中,通过 [zui-on-click] 属性绑定点击事件,通过属性指定需要执行的 JS 代码,从而实现当点击按钮时,将会弹出一个对话框。

提示

编辑事件机制实际原理为在 document 元素上绑定了一个事件监听器,当事件触发时,会检查事件源元素是否存在 [data-on-*] 属性,如果存在,则会根据 [data-on-*] 属性的值来执行 JS 代码。根据此原理,需要被监听的元素上的事件能够被冒泡到 document 上。

事件类型

在 ZUI3 中默认支持的便捷绑定事件类型包括:

  • click:点击事件;
  • inited:组件初始化事件;
  • change:变更事件。

自定义选项

除了可以直接指定要执行的 JS 代码,还可以通过一个对象来指定事件绑定选项,例如:

所有可用的选项包括:

选项说明
on事件类型,必须,目前支持点击('click')和变更('change')事件
selector事件是否仅能触发在符合指定选择器的内部元素上,相当于事件委托
do要执行的 JS 代码,可选
call要执行的回调函数,可选
params需要传递给 JS 代码的参数,多个参数使用 , 分隔,也可以通过 JSON 数组的形式指定
if在执行 JS 代码和回调函数之前进行判断,如果结果为 false 则不会执行
once是否只执行一次,默认 false
stop是否阻止事件冒泡,相当于调用 stopPropagation,默认 false
prevent是否阻止默认行为,相当于调用 preventDefault,默认 false
self是否尽在点击自身时触发。

内置参数

在指定执行代码和回调函数参数时有一些内置参数可以直接通过约定名称引用,包括:

  • event:事件对象;
  • options:事件绑定选项;
  • $element:事件源元素(Cash 类型)。

例如:

内置参数还可以直接用于 do 代码中和 call 回调函数定义中,例如:

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/basic/core/zui-toggle.html b/dev/lib/basic/core/zui-toggle.html index 11569073a6..38c2a818b9 100644 --- a/dev/lib/basic/core/zui-toggle.html +++ b/dev/lib/basic/core/zui-toggle.html @@ -14,14 +14,14 @@ - - + +
Skip to content

全局触发调用

使用

全局触发调用允许在元素上通过 zui-toggle 属性来声明组件调用,在某个事件(通常为点击)触发时,自动使用选项进行初始化,并执行操作。例如下拉菜单按钮,在点击时声明下拉菜单组件,并打开下拉菜单。下面为一个下拉菜单的例子:

兼容模式

在兼容模式下,可以通过 data-toggle 属性生命组件,使用其他 data-* 属性声明组件初始化选项。

支持的组件

支持全局触发调用的组件包括:

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/alert/index.html b/dev/lib/components/alert/index.html index cc284f20f4..9bfc0f45b3 100644 --- a/dev/lib/components/alert/index.html +++ b/dev/lib/components/alert/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

消息框

消息框能够轻松展示一些需要引起用户注意的内容。

基本使用

为元素添加 alert 类来获得消息框的外观。

嘿!这是一则提示。

包含链接

使用 .alert-link 类来为消息框内的链接添加样式。

Hi! 这条消息可能需要你注意。了解更多

包含关闭按钮

使用 .alert-close 类来为消息框内的关闭按钮添加样式。絮语注意到是当需要在消息框中包含更多内容时,需要将消息文本放置在 .alert-text 中。

嘿!这是一则提示。了解更多

包含操作按钮

像添加关闭按钮一样,还可以添加其他操作按钮:

嘿!这是一则提示。了解更多

可以将多个按钮放在工具栏中:

嘿!这是一则提示。了解更多

外观类型

配合丰富的 CSS 工具类 来实现不同消息框的外观。

嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。
嘿!这是一则提示。

CSS 类

消息框提供了如下 CSS 类:

类型作用
alert实体类元素作为消息框组件
alert-icon实体类元素作为消息框内左侧图标
alert-close实体类元素作为消息框关闭按钮
alert-text实体类元素作为消息框文本内容

CSS 变量

消息框提供了如下 CSS 变量:

变量名称变量含义
--alert-bg消息框默认背景色

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/avatar-group/index.html b/dev/lib/components/avatar-group/index.html index 19b053a239..76d523449a 100644 --- a/dev/lib/components/avatar-group/index.html +++ b/dev/lib/components/avatar-group/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

头像组

头像组用于将多个头像堆叠显示。

基本使用

将多个头像放置在 <div class="avatar-group"> 内即可创建一个头像组。

+10

尺寸

当使用不同大小的头像时,可以通过为 .avatar-group 添加同样等级的 size-* 辅助类已获得统一的堆叠间距。

堆叠间距

使用工具类 gap-* 来调整堆叠间距。默认间距等同于 gap-2.5,小于 2.5 将使得间距比默认间距更小,反之则更大。

0
1
2
2.5
3
3.5

CSS 类

头像组提供了如下 CSS 类:

类型作用
avatar-group实体类元素作为头像组组件
size-xs工具类头像组使用超小号尺寸
size-sm工具类头像组使用小号尺寸
size-lg工具类头像组使用大号尺寸
size-xl工具类头像组使用超大号尺寸

参考

MIT License (MIT)

- +
Skip to content

头像组

头像组用于将多个头像堆叠显示。

基本使用

将多个头像放置在 <div class="avatar-group"> 内即可创建一个头像组。

+10

尺寸

当使用不同大小的头像时,可以通过为 .avatar-group 添加同样等级的 size-* 辅助类已获得统一的堆叠间距。

堆叠间距

使用工具类 gap-* 来调整堆叠间距。默认间距等同于 gap-2.5,小于 2.5 将使得间距比默认间距更小,反之则更大。

0
1
2
2.5
3
3.5

CSS 类

头像组提供了如下 CSS 类:

类型作用
avatar-group实体类元素作为头像组组件
size-xs工具类头像组使用超小号尺寸
size-sm工具类头像组使用小号尺寸
size-lg工具类头像组使用大号尺寸
size-xl工具类头像组使用超大号尺寸

参考

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/avatar/index.html b/dev/lib/components/avatar/index.html index a2f7d07264..2326dfc695 100644 --- a/dev/lib/components/avatar/index.html +++ b/dev/lib/components/avatar/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

头像

头像是用图片、图标或者文字的形式展示用户及具有特殊标识的其他对象。

基本使用

为元素并添加类 .avatar,然后将作为图像的图片、文字或图标放置在此元素内。

Z

提示

当使用文字作为头像时,建议文字数目不要超过 2 个,如果需要显示更多文字进行个性化排版,推荐使用 JavaScript 增强的头像插件。

头像形状

搭配 CSS 工具类 rounded-* 为头像应用不同的圆角样式。

外观类型

当使用文字或图标作为头像时,配合使用CSS 工具类来实现不同头像的外观。下面展示各种工具类的外观效果。

Z
Z
Z
Z

尺寸

除了默认大小,还提供了额外的 4 种预设尺寸,通过 size-* 来为头像设置尺寸。

X
S
Z
LG
XL

CSS 类

头像提供了如下 CSS 类:

类型作用
avatar实体类元素作为头像组件
size-xs工具类头像使用超小号尺寸
size-sm工具类头像使用小号尺寸
size-lg工具类头像使用大号尺寸
size-xl工具类头像使用超大号尺寸

CSS 变量

头像提供了如下 CSS 变量,可进行全局修改:

CSS 变量名作用
--avatar-radius头像默认圆角大小
--avatar-bg头像默认背景颜色

参考

MIT License (MIT)

- +
Skip to content

头像

头像是用图片、图标或者文字的形式展示用户及具有特殊标识的其他对象。

基本使用

为元素并添加类 .avatar,然后将作为图像的图片、文字或图标放置在此元素内。

Z

提示

当使用文字作为头像时,建议文字数目不要超过 2 个,如果需要显示更多文字进行个性化排版,推荐使用 JavaScript 增强的头像插件。

头像形状

搭配 CSS 工具类 rounded-* 为头像应用不同的圆角样式。

外观类型

当使用文字或图标作为头像时,配合使用CSS 工具类来实现不同头像的外观。下面展示各种工具类的外观效果。

Z
Z
Z
Z

尺寸

除了默认大小,还提供了额外的 4 种预设尺寸,通过 size-* 来为头像设置尺寸。

X
S
Z
LG
XL

CSS 类

头像提供了如下 CSS 类:

类型作用
avatar实体类元素作为头像组件
size-xs工具类头像使用超小号尺寸
size-sm工具类头像使用小号尺寸
size-lg工具类头像使用大号尺寸
size-xl工具类头像使用超大号尺寸

CSS 变量

头像提供了如下 CSS 变量,可进行全局修改:

CSS 变量名作用
--avatar-radius头像默认圆角大小
--avatar-bg头像默认背景颜色

参考

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/breadcrumb/index.html b/dev/lib/components/breadcrumb/index.html index 68b2bad46c..195ca9b11a 100644 --- a/dev/lib/components/breadcrumb/index.html +++ b/dev/lib/components/breadcrumb/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

面包屑

基本使用

使用类 .breadcrumb 来实现面包屑,通常搭配 <ol><li> 元素使用。

CSS 类

面包屑提供了如下 CSS 类

类型作用
breadcrumb实体类元素作为面包屑组件

CSS 变量

变量名称变量含义
--breadcrumb-divider面包屑分割元素标签类型
--breadcrumb-divider-color面包屑分割元素颜色
--breadcrumb-color-active面包屑选中态元素颜色

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/btn-group/index.html b/dev/lib/components/btn-group/index.html index 17e4554313..baebf6c918 100644 --- a/dev/lib/components/btn-group/index.html +++ b/dev/lib/components/btn-group/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

按钮组

按钮组可以将多个按钮成组展示。

使用方法

将多个 按钮 放置在 <div class="btn-group"> 内即可创建一个按钮组。

多组按钮

使用 CSS 工具类 .row 搭配 .gap-* 实现多组按钮效果。

尺寸

.btn-group 上配合使用工具类 size-* 来获得不同大小的按钮组。

外观

在按钮上加 CSS 工具类,以获得不同的按钮外观显示。

使用下拉菜单

可以在按钮组中使用下拉菜单,只需要将启用下拉菜单的按钮放置于按钮组中即可。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn-group实体类元素作为按钮组组件
size-xs工具类按钮组使用超小号尺寸
size-sm工具类按钮组使用小号尺寸
size-lg工具类按钮组使用大号尺寸
size-xl工具类按钮组使用超大号尺寸

参考

MIT License (MIT)

- +
Skip to content

按钮组

按钮组可以将多个按钮成组展示。

使用方法

将多个 按钮 放置在 <div class="btn-group"> 内即可创建一个按钮组。

多组按钮

使用 CSS 工具类 .row 搭配 .gap-* 实现多组按钮效果。

尺寸

.btn-group 上配合使用工具类 size-* 来获得不同大小的按钮组。

外观

在按钮上加 CSS 工具类,以获得不同的按钮外观显示。

使用下拉菜单

可以在按钮组中使用下拉菜单,只需要将启用下拉菜单的按钮放置于按钮组中即可。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn-group实体类元素作为按钮组组件
size-xs工具类按钮组使用超小号尺寸
size-sm工具类按钮组使用小号尺寸
size-lg工具类按钮组使用大号尺寸
size-xl工具类按钮组使用超大号尺寸

参考

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/button/index.html b/dev/lib/components/button/index.html index d0af3a8d21..0f3ddffcf1 100644 --- a/dev/lib/components/button/index.html +++ b/dev/lib/components/button/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

按钮

按钮是用来触发一些动作。通常用在表单、对话框、菜单上面。好的按钮设计能够引导用户高效的达到目的。

使用方法

使用 .btn 类来获得按钮的外观和交互体验,通常用在元素 <button><a> 上。

配合丰富的CSS 工具类来实现不同按钮的外观。

图标按钮

按钮配合图标组件一起使用时,自动呈现为图标按钮。

外观

外观类型

配合使用CSS 工具类来实现不同按钮的外观。下面展示各种工具类的外观效果。

链接按钮

使用 .btn-link 类来获得链接按钮的外观。

按钮圆角

搭配 CSS 工具类 rounded-* 为按钮应用不同的圆角样式。

按钮阴影效果

搭配 CSS 工具类 shadow-* 为按钮应用不同的阴影样式。

尺寸

除了默认大小,按钮还提供了额外的 4 种预设尺寸。

形状

正方形按钮

通过工具类 square 可以让按钮获得正方形外观,通常作为图标按钮使用。

圆形按钮

当与工具类 circlesquare 一起使用时则获得圆形按钮。

状态

禁用状态

为按钮提供 disabled="disabled" 属性或 disabled 工具类来禁用按钮。被禁用的按钮将无法响应点击事件。

激活状态

为按钮添加 active 类启用激活状态。

加载中状态

为按钮提供动画图标实现加载中状态。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn实体类元素作为按钮组件
btn-link修饰类使用链接按钮外观
square工具类按钮使用正方形外观
size-xs工具类按钮使用超小号尺寸
size-sm工具类按钮使用小号尺寸
size-lg工具类按钮使用大号尺寸
size-xl工具类按钮使用超大号尺寸

CSS 变量

变量名称变量含义
--btn-radius按钮圆角
--btn-bg按钮背景颜色
--btn-border-color按钮边框颜色
--btn-height按钮高度

MIT License (MIT)

- +
Skip to content

按钮

按钮是用来触发一些动作。通常用在表单、对话框、菜单上面。好的按钮设计能够引导用户高效的达到目的。

使用方法

使用 .btn 类来获得按钮的外观和交互体验,通常用在元素 <button><a> 上。

配合丰富的CSS 工具类来实现不同按钮的外观。

图标按钮

按钮配合图标组件一起使用时,自动呈现为图标按钮。

外观

外观类型

配合使用CSS 工具类来实现不同按钮的外观。下面展示各种工具类的外观效果。

链接按钮

使用 .btn-link 类来获得链接按钮的外观。

按钮圆角

搭配 CSS 工具类 rounded-* 为按钮应用不同的圆角样式。

按钮阴影效果

搭配 CSS 工具类 shadow-* 为按钮应用不同的阴影样式。

尺寸

除了默认大小,按钮还提供了额外的 4 种预设尺寸。

形状

正方形按钮

通过工具类 square 可以让按钮获得正方形外观,通常作为图标按钮使用。

圆形按钮

当与工具类 circlesquare 一起使用时则获得圆形按钮。

状态

禁用状态

为按钮提供 disabled="disabled" 属性或 disabled 工具类来禁用按钮。被禁用的按钮将无法响应点击事件。

激活状态

为按钮添加 active 类启用激活状态。

加载中状态

为按钮提供动画图标实现加载中状态。

CSS 类

按钮提供了如下 CSS 类:

类型作用
btn实体类元素作为按钮组件
btn-link修饰类使用链接按钮外观
square工具类按钮使用正方形外观
size-xs工具类按钮使用超小号尺寸
size-sm工具类按钮使用小号尺寸
size-lg工具类按钮使用大号尺寸
size-xl工具类按钮使用超大号尺寸

CSS 变量

变量名称变量含义
--btn-radius按钮圆角
--btn-bg按钮背景颜色
--btn-border-color按钮边框颜色
--btn-height按钮高度

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/calendar/index.html b/dev/lib/components/calendar/index.html index fb500dd55e..67dc18bf14 100644 --- a/dev/lib/components/calendar/index.html +++ b/dev/lib/components/calendar/index.html @@ -14,15 +14,15 @@ - - + +
Skip to content

Calendar 日历

用于展示和管理事件的日历组件。它允许用户查看日期、添加特定日期的事件来安排日程。提供可配置的事件与日历集。

基本使用

使用HTML标签 <div> 作为容器来实现日历组件,可使用zui-create-calendar、new zui.Calendar()等指令来配置日历组件。

默认样式

自定义事件与事件集

事件是在日历中添加的具体事件,可自定义事件的颜色、文字、日期、拖拽回调函数、点击回调函数等。事件集是一组事件的集合与事件唯一关联。事件、事件集id都需要唯一。任意一个事件可进行拖拽来修改事件时间,并会触发回调函数。左侧日历集可决定属于该日日历集的事件是否显示。

可配置项

日历:

参数类型作用
dateDate当前日期
calendarEventsCalendarEvent[]当前的日历事件数组
calendarEventGroupsCalendarEventGroup[]当前的事件组数组
mode'day' | 'week' | 'year'日历的显示模式
showCalendarGroupboolean是否显示日历事件组
shrinkFreeWeekendboolean是否压缩空闲周末
onDateClick(date: Date) => void日期点击时的回调函数
onDragChange(newState: DraggableState, oldState: DraggableState) => void拖动状态变化时的回调函数
onEventClick(e: CalendarEvent) => void事件点击时的回调函数
maxVisibleEventsnumber每个日期最大可见事件数量
               |
 

事件属性:

calendarEvent:

参数类型作用
idstring事件的唯一标识符
titlestring事件的标题
calendarEventGroupstring事件所属的事件组ID
dateDate事件的日期
descriptionstring事件的描述(可选)

事件集:

CalendarEventGroups:

参数类型作用
idstring事件组的唯一标识符
titlestring事件组的标题(可选)
colorstring事件组的颜色(可选)
checkedboolean事件组是否被选中(可选)

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/color-picker/index.html b/dev/lib/components/color-picker/index.html index 0c7b7c4706..79b149a423 100644 --- a/dev/lib/components/color-picker/index.html +++ b/dev/lib/components/color-picker/index.html @@ -14,14 +14,14 @@ - - + + -
Skip to content

颜色选择器

基于下拉选择器实现的颜色选择器。

基本使用

在选定元素上调用初始化函数即可使用颜色选择器。

自定义颜色

通过设置 colors 属性自定义颜色列表,可以指定一个表示颜色的字符串数组,也可以通过英文逗号拼接多个颜色一起指定。

自定义图标

通过设置 icon 属性自定义颜色显示图标。

同步颜色

通过为 syncValuesyncColorsyncBackgroundsyncBorder 设置选择器可实现将当前选中的颜色信息同步到相应元素。

颜色值:
文字颜色
背景色
边框色

配合使用

作为按钮

在输入组中使用

在输入框中使用

选项

名称类型默认值说明
headingstringnull颜色面板标题。 colors?: string | string[]; // 颜色选项列表。 icon?: string; // 显示为图标的名称。 closeBtn?: boolean = true; // 颜色面板是否使用关闭按钮。 syncValue?: string; // 颜色值容器选择器。 syncColor?: string; // 文本色同步容器选择器。 syncBackground?: string; // 背景色同步容器选择器。 syncBorder?: string; // 边框色同步容器选择器。

MIT License (MIT)

- +
Skip to content

颜色选择器

基于下拉选择器实现的颜色选择器。

基本使用

在选定元素上调用初始化函数即可使用颜色选择器。

自定义颜色

通过设置 colors 属性自定义颜色列表,可以指定一个表示颜色的字符串数组,也可以通过英文逗号拼接多个颜色一起指定。

自定义图标

通过设置 icon 属性自定义颜色显示图标。

同步颜色

通过为 syncValuesyncColorsyncBackgroundsyncBorder 设置选择器可实现将当前选中的颜色信息同步到相应元素。

颜色值:
文字颜色
背景色
边框色

配合使用

作为按钮

在输入组中使用

在输入框中使用

选项

名称类型默认值说明
headingstringnull颜色面板标题。 colors?: string | string[]; // 颜色选项列表。 icon?: string; // 显示为图标的名称。 closeBtn?: boolean = true; // 颜色面板是否使用关闭按钮。 syncValue?: string; // 颜色值容器选择器。 syncColor?: string; // 文本色同步容器选择器。 syncBackground?: string; // 背景色同步容器选择器。 syncBorder?: string; // 边框色同步容器选择器。

MIT License (MIT)

+ \ No newline at end of file diff --git a/dev/lib/components/contextmenu/index.html b/dev/lib/components/contextmenu/index.html index 930776e2c1..3a001668a4 100644 --- a/dev/lib/components/contextmenu/index.html +++ b/dev/lib/components/contextmenu/index.html @@ -14,8 +14,8 @@ - - + + @@ -115,7 +115,7 @@ }); }); </script>

API

items 的单个对象属性

text

名称。

  • 类型:string
  • 必选:否。

icon

左侧图标。

  • 类型:string
  • 必选:否。

trailingIcon

右侧图标。

  • 类型:string | VNode
  • 必选:否。

className

类名。

  • 类型:string
  • 必选:否。

style

样式。

  • 类型:ClassNameLike
  • 必选:否。

url

跳转链接地址。

  • 类型:string
  • 必选:否。

target

在何处打开链接地址。

  • 类型:string
  • 必选:否;
  • 可选项: _self | _self | _black | _top | _parent

disabled

是否禁用。

  • 类型:boolean
  • 必选:否;
  • 默认: false

active

是否是激活状态。

  • 类型:boolean
  • 必选:否;
  • 默认: false

type

单项类型。

  • 类型:string
  • 必选:否;
  • 可选项:item | divider | heading | custom
  • 默认: item

rootClass

menu-item 同级类名。

  • 类型:string
  • 必选:否。

items

子级操作数据。

  • 类型:array
  • 必选:否。

onClick

点击操作菜单项的回调事件。

  • 类型:function
  • 必选:否。

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/dashboard/index.html b/dev/lib/components/dashboard/index.html index ac1055d6f8..9ecf2720e7 100644 --- a/dev/lib/components/dashboard/index.html +++ b/dev/lib/components/dashboard/index.html @@ -14,8 +14,8 @@ - - + + @@ -82,7 +82,7 @@ blockMenu?: ContextMenuOptions; onLayoutChange?: (blocks: BlockSetting[]) => void; };

MIT License (MIT)

- + \ No newline at end of file diff --git a/dev/lib/components/dropdown/index.html b/dev/lib/components/dropdown/index.html index 0d863a3b53..12edea8be2 100644 --- a/dev/lib/components/dropdown/index.html +++ b/dev/lib/components/dropdown/index.html @@ -14,14 +14,14 @@ - - + +
Skip to content

下拉菜单

将动作或菜单折叠到下拉菜单中。

使用方法

为触发按钮添加属性 data-toggle="dropdown",然后在触发按钮之后添加一个 .dropdown-menu 用于定义菜单列表。

关联菜单元素

你还可以在触发按钮上通过 data-target 属性来指定要打开的菜单列表元素,这样不用要求触发按钮和菜单列表元素之间必须按顺序紧邻。

手动初始化

你可以通过 new zui.Dropdown() 方法在触发按钮上动态初始化下拉菜单组件,这样无需为触发按钮添加属性 data-toggle="dropdown",以及预先创建下拉菜单列表元素 .dropdown-menu

显示箭头

通过给下拉菜单菜单按钮添加 data-arrow="true" 来使下拉菜单展示箭头。

改变箭头大小

通过给下拉菜单按钮添加 data-arrow={size} 来控制下拉菜单的箭头的大小。

data-arrow = 4
data-arrow = 8
data-arrow = 12

鼠标悬停展开菜单

为触发按钮添加属性 data-trigger="hover" 实现鼠标悬停展开菜单。

浮动方向

通过 data-placement=* 属性控制弹出方向。

data-placement = top-start
data-placement = top
data-placement = top-end
data-placement = bottom-start
data-placement = bottom
data-placement = bottom-end
data-placement = left-start
data-placement = left
data-placement = left-end
data-placement = right-start
data-placement = right
data-placement = right-end

多级子菜单

多级子菜单仅支持通过手动初始化的方式创建。

自定义菜单

通常情况下下拉菜单列表使用 <menu> 元素,你也可以替换为其他元素或内容

51015202530354045505560

禁用的菜单项

为菜单项 <li> 添加 .disabled 类即可获得禁用外观。

标题和分割线

.dropdown-menuli 标签使用 .dropdown-header类 来显示标题,使用 .divider 来创建分割线。

  • CSS 类

    按钮提供了如下 CSS 类:

    类型作用
    dropdown实体类元素作为下拉菜单组件
    dropdown-menu实体类元素作为下拉菜单列表
    dropdown-header实体类元素作为下拉菜单中的标题
    caret实体类元素作为下拉菜单icon图标
    divider实体类元素作为下拉菜单分割线
    dropup工具类下拉框浮动方向为上方

    CSS 变量

    变量名称变量含义
    --dropmenu-radius下拉菜单圆角
    --dropmenu-border-color下拉菜单边框颜色
    --dropmenu-bg下拉菜单背景颜色
    --dropmenu-active-color下拉菜单条目激活状态文字颜色
    --dropmenu-active-bg下拉菜单条目激活状态背景颜色

    API

    操作菜单定义对象。

    trigger

    触发方式

    • 类型:click | hover | manual
    • 必选:否。

    arrow

    箭头大小 为 true 则为默认12

    • 类型:boolean | number
    • 必选:否。

    offset

    偏移量

    • 类型:number
    • 必选:否。

    菜单对象 详细配置可参考 菜单

    • 类型:object
    • 必选:否。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/dtable/index.html b/dev/lib/components/dtable/index.html index 91746b8e87..cf541a3f93 100644 --- a/dev/lib/components/dtable/index.html +++ b/dev/lib/components/dtable/index.html @@ -14,8 +14,8 @@ - - + + @@ -360,7 +360,7 @@ render(): void; }

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/dtable/plugins.html b/dev/lib/components/dtable/plugins.html index 46f2fa62fe..8b2b2139f7 100644 --- a/dev/lib/components/dtable/plugins.html +++ b/dev/lib/components/dtable/plugins.html @@ -14,8 +14,8 @@ - - + + @@ -750,7 +750,7 @@ /* 表头分组名称。 */ headerGroup?: string; }

    更多插件开发中

    • 拖放改变列宽 resize
    • 上下文菜单 contextmenu
    • 快捷键 hotkey
    • 鼠标移动事件支持 mousemove
    • 拖放选择 selectable
    • 过滤 filter
    • 拖放移动 moveable
    • 数据网格 datagrid
    • 编辑状态 draft
    • 可编辑 editable
    • 历史记录 history
    • 自动滚动 autoscroll

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/file-selector/index.html b/dev/lib/components/file-selector/index.html index 94b995660f..ef76b2d91a 100644 --- a/dev/lib/components/file-selector/index.html +++ b/dev/lib/components/file-selector/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    文件选择

    界面模式

    文件选择器支持多种界面模式,包括按钮模式、方框模式和网格模式,另外还提供了单独的图片选择器用于选择图片文件。

    按钮模式

    默认模式为按钮模式,点击按钮选择文件,所选择的文件会显示在按钮上方。

    方框模式

    通过设置 mode 属性为 'box' 可以切换为方框模式,所选择的文件会显示在方框下方。方框模式提供了更大的拖放文件放置区域。

    网格模式

    通过设置 mode 属性为 'grid' 可以切换为网格模式,所选择的文件会显示在网格中。网格模式提供了更大的文件预览区域。

    图片选择

    图片选择是基于网格模式的一种预设模式,通过 ImageSelector 可以快速创建一个图片选择器。

    文件限制

    限制文件类型

    通过 accept 来限制文件类型,可以使用 MIME 类型、文件扩展名或通配符,定义与 HTML 的 accept 属性相同。

    限制文件大小

    通过 maxFileSize 来限制单个文件大小,通过 totalFileSize 来限制总文件大小。

    限制文件数目

    通过 maxFileCount 来限制文件数目,如果设置为非大于 0 的数则不限制。

    预设文件

    通过设置 defaultFiles 属性可以预设文件列表,预设文件不会触发 onAdd 回调函数和 onSelect 回调函数。

    禁用

    通过设置 disabled 属性为 true 可以禁用文件选择器。

    个性化配置

    提示信息

    通过 tip 属性可以设置提示信息,在提示信息中可以使用如下占位文本:

    • {size}:文件总大小;
    • {count}:文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目。

    文件图标

    通过设置 fileIcons 属性可以为不同类型的文件(根据扩展名)显示不同的图标。

    显示缩略图

    默认会为图片文件显示缩略图,通过设置 thumbnail 属性为 false 可以关闭缩略图显示。

    文件拖放

    默认情况下用户可以拖放文件到文件选择器中,通过设置 draggable 属性为 false 可以禁用拖放。

    一次选择一个文件

    默认情况下用户可以在操作系统文件选择对话框中一次选择多个文件,通过设置 multiple 属性为 false 可以限制一次只能选择一个文件。

    网格模式配置

    网格模式下可以通过设置 gridWidthgridHeightgridGap 来调整网格的宽度、高度和间距。

    自定义文件上传按钮

    通过设置 uploadBtn 属性可以自定义文件上传按钮。

    文件操作

    文件重命名

    默认情况下支持对文件进行重命名,通过设置 renameBtn 属性为 false 可以禁用重命名按钮,通过为 renameBtn 属性设置字符串可以自定义重命名按钮的文字,通过为 renameBtn 属性设置对象可以自定义重命名按钮。

    文件移除

    默认情况下支持对文件进行移除,通过设置 removeBtn 属性为 false 可以禁用移除按钮,通过为 removeBtn 属性设置字符串可以自定义移除按钮的文字,通过为 removeBtn 属性设置对象可以自定义移除按钮。

    自定义操作提示信息

    通过设置 removeConfirmduplicatedTipexceededSizeTipexceededTotalSizeTipexceededCountTip 属性可以自定义操作提示信息。

    在提示信息中可以使用如下占位文本:

    • {name}:当前文件名;
    • {size}:当前文件大小;
    • {count}:当前已选择文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目;
    • {totalFileSize}:最大文件数目,仅适用于 exceededTotalSizeTip 提示;
    • {exceededCount}:超出数量,仅适用于 exceededCountTip 提示。

    操作拦截

    通过设置 onRenameonRemoveonAddonRemove 选项设置回调函数可以拦截文件操作,通常在回调函数中返回 false 可以阻止继续操作,相关回调函数定义参加选项和 API。

    文件限制拦截

    通过设置 onDuplicatedonExceededSizeonExceededTotalSizeonExceededCount 选项可以在触发文件限制时拦截文件操作,通过在回调函数中返回 true 来忽略文件限制,相关回调函数定义参加选项和 API。

    选项

    FileSelectorProps

    名称类型默认值说明
    namestringnull作为表单字段的名称。 accept?: string; // 限制文件类型。 disabled?: boolean; // 是否禁用。 mode?: 'button' | 'box' | 'grid' = "button"; // 界面模式。 tip?: string; // 提示信息。 thumbnail?: boolean=true; // 是否显示缩略图。 gridWidth?: string | number; // 网格模式的宽度。 gridHeight?: string | number; // 网格模式的高度。 gridGap?: string | number; // 网格模式的间距。 defaultFiles?: DefaltFileInfo[]; // 默认显示的文件列表。 multiple?: boolean = true; // 是否允许在文件选择对话框中一次性选择多个文件(需要操作系统支持)。 itemProps?: ButtonProps | FileButtonGenerator; // 文件项的属性。 draggable?: boolean = true; // 是否允许拖拽。 fileIcons?: IconType | Record = "file"; // 文件图标。 uploadBtn?: string | ButtonProps; // 上传按钮。 renameBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 重命名按钮。 removeBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 删除按钮。 removeConfirm?: string | ModalConfirmOptions; // 删除确认提示。 maxFileSize?: FileSize = "100MB"; // 限制文件大小。 maxFileCount?: number = 0; // 限制文件数目,如果设置为非大于 0 的数则不限制。 totalFileSize?: FileSize; // 限制总文件大小,如果设置为非大于 0 的数则不限制。 allowSameName?: boolean; // 是否允许同名文件。 duplicatedTip?: string | ModalAlertOptions; // 重名提示。 exceededSizeTip?: string | ModalAlertOptions; // 超出大小提示。 exceededTotalSizeTip?: string | ModalAlertOptions; // 超出总大小提示。 exceededCountTip?: string | ModalAlertOptions; // 超出数量提示。 onSelect?: FileSelectCallback; // 选择文件时的回调。 onAdd?: FileAddCallback; // 添加文件时的回调。 onRemove?: RemoveFileCallback; // 删除文件时的回调。 onRename?: RenameFileCallback; // 重命名文件时的回调,返回 false 取消重命名。 onDuplicated?: DuplicatedCallback; // 重名时的回调,返回 true 保留重复文件。 onExceededSize?: ExceededLimitCallback; // 超出大小时的回调,返回 true 保留超出大小文件。 onExceededTotalSize?: ExceededLimitCallback; // 超出总大小时的回调,返回 true 保留超出总大小文件。 onExceededCount?: ExceededLimitCallback; // 超出数量时的回调,返回 true 保留超出数量文件。

    API

    FileInfo

    文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: number; // 文件大小。 id: string; // 文件唯一标识。 type: string; // 文件类型。 ext: string; // 文件扩展名。 url?: string; // 文件地址。 file?: File; // 文件对象。

    StaticFileInfo

    预设文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: FileSize; // 文件大小。 type?: string; // 文件类型。 id?: string; // 文件唯一标识。 url?: string; // 文件地址。

    FileSize

    文件大小,字节数或带单位的大小,例如 1024'1KB'

    ts
    type FileSize = number | `${number}${'B' | 'KB' | 'MB' | 'GB' | 'TB'}`;

    DefaltFileInfo

    默认文件信息对象。

    ts
    type DefaltFileInfo = File | FileInfo | StaticFileInfo;

    FileButtonGenerator

    文件操作按钮属性生成器,返回 false 不显示按钮,返回 true 使用默认按钮,返回字符串使用默认按钮并设置文字,返回对象使用自定义按钮。

    ts
    type FileButtonGenerator = ((file: FileInfo) => (boolean | string | ButtonProps));

    FileAddCallback

    添加文件时的回调函数,返回 false 取消添加文件。

    ts
    type FileAddCallback = (file: FileInfo) => void | false;

    FileSelectCallback

    选择文件时的回调函数。

    ts
    type FileSelectCallback = (files: File[] | FileList) => void | false;

    RemoveFileCallback

    删除文件时的回调函数。

    ts
    (file: FileInfo) => void | false | Promise<void | false>;

    RenameFileCallback

    重命名文件时的回调函数,返回 false 取消重命名。

    ts
    type RenameFileCallback = (newName: string, oldName: string, file: FileInfo) => void | false | Promise<void | false>;

    DuplicatedCallback

    重名时的回调,返回 true 保留重复文件。

    ts
    type DuplicatedCallback = (name: string, currentFile: FileInfo, existFile: FileInfo) => void | true;

    ExceededLimitCallback

    超出限制时的回调函数,返回 true 忽略限制,否则取消添加文件。

    ts
    type ExceededLimitCallback = (limit: number, file: FileInfo) => void | true;

    MIT License (MIT)

    - +
    Skip to content

    文件选择

    界面模式

    文件选择器支持多种界面模式,包括按钮模式、方框模式和网格模式,另外还提供了单独的图片选择器用于选择图片文件。

    按钮模式

    默认模式为按钮模式,点击按钮选择文件,所选择的文件会显示在按钮上方。

    方框模式

    通过设置 mode 属性为 'box' 可以切换为方框模式,所选择的文件会显示在方框下方。方框模式提供了更大的拖放文件放置区域。

    网格模式

    通过设置 mode 属性为 'grid' 可以切换为网格模式,所选择的文件会显示在网格中。网格模式提供了更大的文件预览区域。

    图片选择

    图片选择是基于网格模式的一种预设模式,通过 ImageSelector 可以快速创建一个图片选择器。

    文件限制

    限制文件类型

    通过 accept 来限制文件类型,可以使用 MIME 类型、文件扩展名或通配符,定义与 HTML 的 accept 属性相同。

    限制文件大小

    通过 maxFileSize 来限制单个文件大小,通过 totalFileSize 来限制总文件大小。

    限制文件数目

    通过 maxFileCount 来限制文件数目,如果设置为非大于 0 的数则不限制。

    预设文件

    通过设置 defaultFiles 属性可以预设文件列表,预设文件不会触发 onAdd 回调函数和 onSelect 回调函数。

    禁用

    通过设置 disabled 属性为 true 可以禁用文件选择器。

    个性化配置

    提示信息

    通过 tip 属性可以设置提示信息,在提示信息中可以使用如下占位文本:

    • {size}:文件总大小;
    • {count}:文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目。

    文件图标

    通过设置 fileIcons 属性可以为不同类型的文件(根据扩展名)显示不同的图标。

    显示缩略图

    默认会为图片文件显示缩略图,通过设置 thumbnail 属性为 false 可以关闭缩略图显示。

    文件拖放

    默认情况下用户可以拖放文件到文件选择器中,通过设置 draggable 属性为 false 可以禁用拖放。

    一次选择一个文件

    默认情况下用户可以在操作系统文件选择对话框中一次选择多个文件,通过设置 multiple 属性为 false 可以限制一次只能选择一个文件。

    网格模式配置

    网格模式下可以通过设置 gridWidthgridHeightgridGap 来调整网格的宽度、高度和间距。

    自定义文件上传按钮

    通过设置 uploadBtn 属性可以自定义文件上传按钮。

    文件操作

    文件重命名

    默认情况下支持对文件进行重命名,通过设置 renameBtn 属性为 false 可以禁用重命名按钮,通过为 renameBtn 属性设置字符串可以自定义重命名按钮的文字,通过为 renameBtn 属性设置对象可以自定义重命名按钮。

    文件移除

    默认情况下支持对文件进行移除,通过设置 removeBtn 属性为 false 可以禁用移除按钮,通过为 removeBtn 属性设置字符串可以自定义移除按钮的文字,通过为 removeBtn 属性设置对象可以自定义移除按钮。

    自定义操作提示信息

    通过设置 removeConfirmduplicatedTipexceededSizeTipexceededTotalSizeTipexceededCountTip 属性可以自定义操作提示信息。

    在提示信息中可以使用如下占位文本:

    • {name}:当前文件名;
    • {size}:当前文件大小;
    • {count}:当前已选择文件数目;
    • {maxFileSize}:最大文件大小;
    • {maxFileCount}:最大文件数目;
    • {totalFileSize}:最大文件数目,仅适用于 exceededTotalSizeTip 提示;
    • {exceededCount}:超出数量,仅适用于 exceededCountTip 提示。

    操作拦截

    通过设置 onRenameonRemoveonAddonRemove 选项设置回调函数可以拦截文件操作,通常在回调函数中返回 false 可以阻止继续操作,相关回调函数定义参加选项和 API。

    文件限制拦截

    通过设置 onDuplicatedonExceededSizeonExceededTotalSizeonExceededCount 选项可以在触发文件限制时拦截文件操作,通过在回调函数中返回 true 来忽略文件限制,相关回调函数定义参加选项和 API。

    选项

    FileSelectorProps

    名称类型默认值说明
    namestringnull作为表单字段的名称。 accept?: string; // 限制文件类型。 disabled?: boolean; // 是否禁用。 mode?: 'button' | 'box' | 'grid' = "button"; // 界面模式。 tip?: string; // 提示信息。 thumbnail?: boolean=true; // 是否显示缩略图。 gridWidth?: string | number; // 网格模式的宽度。 gridHeight?: string | number; // 网格模式的高度。 gridGap?: string | number; // 网格模式的间距。 defaultFiles?: DefaltFileInfo[]; // 默认显示的文件列表。 multiple?: boolean = true; // 是否允许在文件选择对话框中一次性选择多个文件(需要操作系统支持)。 itemProps?: ButtonProps | FileButtonGenerator; // 文件项的属性。 draggable?: boolean = true; // 是否允许拖拽。 fileIcons?: IconType | Record = "file"; // 文件图标。 uploadBtn?: string | ButtonProps; // 上传按钮。 renameBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 重命名按钮。 removeBtn?: boolean | string | ButtonProps | FileButtonGenerator = true; // 删除按钮。 removeConfirm?: string | ModalConfirmOptions; // 删除确认提示。 maxFileSize?: FileSize = "100MB"; // 限制文件大小。 maxFileCount?: number = 0; // 限制文件数目,如果设置为非大于 0 的数则不限制。 totalFileSize?: FileSize; // 限制总文件大小,如果设置为非大于 0 的数则不限制。 allowSameName?: boolean; // 是否允许同名文件。 duplicatedTip?: string | ModalAlertOptions; // 重名提示。 exceededSizeTip?: string | ModalAlertOptions; // 超出大小提示。 exceededTotalSizeTip?: string | ModalAlertOptions; // 超出总大小提示。 exceededCountTip?: string | ModalAlertOptions; // 超出数量提示。 onSelect?: FileSelectCallback; // 选择文件时的回调。 onAdd?: FileAddCallback; // 添加文件时的回调。 onRemove?: RemoveFileCallback; // 删除文件时的回调。 onRename?: RenameFileCallback; // 重命名文件时的回调,返回 false 取消重命名。 onDuplicated?: DuplicatedCallback; // 重名时的回调,返回 true 保留重复文件。 onExceededSize?: ExceededLimitCallback; // 超出大小时的回调,返回 true 保留超出大小文件。 onExceededTotalSize?: ExceededLimitCallback; // 超出总大小时的回调,返回 true 保留超出总大小文件。 onExceededCount?: ExceededLimitCallback; // 超出数量时的回调,返回 true 保留超出数量文件。

    API

    FileInfo

    文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: number; // 文件大小。 id: string; // 文件唯一标识。 type: string; // 文件类型。 ext: string; // 文件扩展名。 url?: string; // 文件地址。 file?: File; // 文件对象。

    StaticFileInfo

    预设文件信息对象。

    名称类型默认值说明
    namestring文件名。 size: FileSize; // 文件大小。 type?: string; // 文件类型。 id?: string; // 文件唯一标识。 url?: string; // 文件地址。

    FileSize

    文件大小,字节数或带单位的大小,例如 1024'1KB'

    ts
    type FileSize = number | `${number}${'B' | 'KB' | 'MB' | 'GB' | 'TB'}`;

    DefaltFileInfo

    默认文件信息对象。

    ts
    type DefaltFileInfo = File | FileInfo | StaticFileInfo;

    FileButtonGenerator

    文件操作按钮属性生成器,返回 false 不显示按钮,返回 true 使用默认按钮,返回字符串使用默认按钮并设置文字,返回对象使用自定义按钮。

    ts
    type FileButtonGenerator = ((file: FileInfo) => (boolean | string | ButtonProps));

    FileAddCallback

    添加文件时的回调函数,返回 false 取消添加文件。

    ts
    type FileAddCallback = (file: FileInfo) => void | false;

    FileSelectCallback

    选择文件时的回调函数。

    ts
    type FileSelectCallback = (files: File[] | FileList) => void | false;

    RemoveFileCallback

    删除文件时的回调函数。

    ts
    (file: FileInfo) => void | false | Promise<void | false>;

    RenameFileCallback

    重命名文件时的回调函数,返回 false 取消重命名。

    ts
    type RenameFileCallback = (newName: string, oldName: string, file: FileInfo) => void | false | Promise<void | false>;

    DuplicatedCallback

    重名时的回调,返回 true 保留重复文件。

    ts
    type DuplicatedCallback = (name: string, currentFile: FileInfo, existFile: FileInfo) => void | true;

    ExceededLimitCallback

    超出限制时的回调函数,返回 true 忽略限制,否则取消添加文件。

    ts
    type ExceededLimitCallback = (limit: number, file: FileInfo) => void | true;

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/kanban/index.html b/dev/lib/components/kanban/index.html index dc6b3e77d9..19b9e73b62 100644 --- a/dev/lib/components/kanban/index.html +++ b/dev/lib/components/kanban/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/lib/components/label/index.html b/dev/lib/components/label/index.html index 26020eb9a0..201041c3da 100644 --- a/dev/lib/components/label/index.html +++ b/dev/lib/components/label/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    标签

    标签通常用于对内容进行标记。

    使用方法

    使用 .label 类来获得标签的外观和交互体验,通常用在元素 <span> 上。

    标签

    外观类型

    配合丰富的CSS 工具类来实现不同标签的外观。

    主要标签黑色标签描边浅色

    尺寸

    除了默认大小,标签还提供了额外的 2 种预设尺寸。

    小标签普通大小大标签

    圆角

    通过工具类 rounded-* 来应用不同的圆角样式。

    无圆角小圆角普通圆角中等圆角大圆角超大圆角完整圆角

    圆点标签

    当与工具类 label-dot 一起使用时则获得圆点标签。

    与按钮组合使用

    CSS 类

    标签提供了如下 CSS 类:

    类型作用
    label实体类元素作为标签组件
    label-dot工具类标签使用圆形外观
    size-sm工具类标签使用小号尺寸
    size-lg工具类标签使用大号尺寸

    CSS 变量

    变量名称变量含义
    --label-bg标签背景色
    --label-color标签文字颜色
    --label-border-color标签边框颜色
    --label-radius标签圆角

    MIT License (MIT)

    - +
    Skip to content

    标签

    标签通常用于对内容进行标记。

    使用方法

    使用 .label 类来获得标签的外观和交互体验,通常用在元素 <span> 上。

    标签

    外观类型

    配合丰富的CSS 工具类来实现不同标签的外观。

    主要标签黑色标签描边浅色

    尺寸

    除了默认大小,标签还提供了额外的 2 种预设尺寸。

    小标签普通大小大标签

    圆角

    通过工具类 rounded-* 来应用不同的圆角样式。

    无圆角小圆角普通圆角中等圆角大圆角超大圆角完整圆角

    圆点标签

    当与工具类 label-dot 一起使用时则获得圆点标签。

    与按钮组合使用

    CSS 类

    标签提供了如下 CSS 类:

    类型作用
    label实体类元素作为标签组件
    label-dot工具类标签使用圆形外观
    size-sm工具类标签使用小号尺寸
    size-lg工具类标签使用大号尺寸

    CSS 变量

    变量名称变量含义
    --label-bg标签背景色
    --label-color标签文字颜色
    --label-border-color标签边框颜色
    --label-radius标签圆角

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/menu/index.html b/dev/lib/components/menu/index.html index 75ba9a710a..0e97d24318 100644 --- a/dev/lib/components/menu/index.html +++ b/dev/lib/components/menu/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    菜单

    菜单用于展示一个操作列表,也可以用于构建更复杂的组件,例如右键菜单、下拉菜单等。如果需要通过 JS 动态创建菜单,可以使用菜单生成器

    使用方法

    使用类 .menu.menu-item 按照如下结构来构建一个静态菜单:

    标题

    使用类 .menu-heading 来创建一个标题:

    分割线

    使用类 .divider 来添加一个分割线:

    包含图标

    可以在菜单项内添加图标,但如果是部分菜单项拥有图标,可以通过为 .menu 添加工具类 .has-icons 来让图标以及文本进行对齐:

    禁用的菜单项

    .menu-item 添加工具类 .disabled 来将菜单项禁用:

    标记激活项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为激活状态:

    标记选中项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为选中项状态:

    尾部图标

    直接将图标 .icon 元素添加到菜单项 .menu-item 内尾部,图标将自动靠右侧对齐:

    自定义菜单项

    .menu 内可以放置其他内容来自定义菜单项:

    CSS 类

    头像提供了如下 CSS 类:

    类型作用
    menu实体类元素作为菜单
    menu-item实体类元素作为菜单项
    menu-heading实体类元素作为菜单标题
    divider实体类元素作为分割线
    has-icons工具类menu 一起使用,标记菜单内包含图标
    active工具类标记菜单项为激活状态
    selected工具类标记菜单项为选中状态
    disabled工具类标记菜单项为禁用状态

    CSS 变量

    头像提供了如下 CSS 变量,可进行全局修改:

    CSS 变量名作用默认值
    --menu-radius菜单圆角var(--radius)
    --menu-bg菜单背景颜色var(--color-canvas)
    --menu-border菜单边框1px solid var(--color-border)
    --menu-shadow菜单阴影var(--shadow-lg)
    --menu-hover-bg菜单项鼠标悬停背景色var(--color-primary-500)
    --menu-hover-color菜单项鼠标悬停文字颜色var(--color-canvas)
    --menu-active-bg菜单项激活状态背景色var(--color-primary-50)
    --menu-active-color菜单项激活状态文字颜色var(--color-primary-500)
    --menu-icon-opacity菜单项图标透明度.5
    --menu-heading-color菜单标题文字颜色var(--color-gray-500)

    MIT License (MIT)

    - +
    Skip to content

    菜单

    菜单用于展示一个操作列表,也可以用于构建更复杂的组件,例如右键菜单、下拉菜单等。如果需要通过 JS 动态创建菜单,可以使用菜单生成器

    使用方法

    使用类 .menu.menu-item 按照如下结构来构建一个静态菜单:

    标题

    使用类 .menu-heading 来创建一个标题:

    分割线

    使用类 .divider 来添加一个分割线:

    包含图标

    可以在菜单项内添加图标,但如果是部分菜单项拥有图标,可以通过为 .menu 添加工具类 .has-icons 来让图标以及文本进行对齐:

    禁用的菜单项

    .menu-item 添加工具类 .disabled 来将菜单项禁用:

    标记激活项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为激活状态:

    标记选中项

    .menu-item 内的 <a> 元素添加工具类 .active 来将菜单项标记为选中项状态:

    尾部图标

    直接将图标 .icon 元素添加到菜单项 .menu-item 内尾部,图标将自动靠右侧对齐:

    自定义菜单项

    .menu 内可以放置其他内容来自定义菜单项:

    CSS 类

    头像提供了如下 CSS 类:

    类型作用
    menu实体类元素作为菜单
    menu-item实体类元素作为菜单项
    menu-heading实体类元素作为菜单标题
    divider实体类元素作为分割线
    has-icons工具类menu 一起使用,标记菜单内包含图标
    active工具类标记菜单项为激活状态
    selected工具类标记菜单项为选中状态
    disabled工具类标记菜单项为禁用状态

    CSS 变量

    头像提供了如下 CSS 变量,可进行全局修改:

    CSS 变量名作用默认值
    --menu-radius菜单圆角var(--radius)
    --menu-bg菜单背景颜色var(--color-canvas)
    --menu-border菜单边框1px solid var(--color-border)
    --menu-shadow菜单阴影var(--shadow-lg)
    --menu-hover-bg菜单项鼠标悬停背景色var(--color-primary-500)
    --menu-hover-color菜单项鼠标悬停文字颜色var(--color-canvas)
    --menu-active-bg菜单项激活状态背景色var(--color-primary-50)
    --menu-active-color菜单项激活状态文字颜色var(--color-primary-500)
    --menu-icon-opacity菜单项图标透明度.5
    --menu-heading-color菜单标题文字颜色var(--color-gray-500)

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/menu/js.html b/dev/lib/components/menu/js.html index f5cda4bdde..b432a662cd 100644 --- a/dev/lib/components/menu/js.html +++ b/dev/lib/components/menu/js.html @@ -14,8 +14,8 @@ - - + + @@ -150,7 +150,7 @@ key?: string | number, items?: MenuListItem[], };

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/messager/index.html b/dev/lib/components/messager/index.html index 4ffa75ce43..1dbe793f1d 100644 --- a/dev/lib/components/messager/index.html +++ b/dev/lib/components/messager/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    浮动消息

    通过 JS 动态创建一个浮动消息。

    基本用法

    通过构造一个 messager 实例,页面上创建一个浮动消息。

    显示位置

    提供 9 个预设的显示位置,通过 placement 选项进行指定。

    颜色主题

    提供多种预设颜色主题,通过 type 选项指定外观工具类即可。

    禁用关闭按钮

    默认会在右侧显示关闭按钮,如果需要禁用关闭按钮,将 close 选项设置为 false

    自定义操作按钮

    通过 actions 数组来自定义一组操作。详细配置可参考 工具栏

    禁用自动隐藏

    默认超过 5000ms 自动隐藏,通过设置 time0 取消自动隐藏。

    禁用动画效果

    设置 animationfalse 禁用动画效果。

    选项

    名称类型默认值说明
    typestringnull消息类型 placement?: string; // 浮动消息定位方式,支持 'top' | 'center' | 'bottom' | 'left-top' | 'left' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom' time?: number; // 浮动消息持续时间 content?: string; // 浮动消息内容 icon?: string; // 图标名称 actions?: object[]; // 操作按钮定义列表 margin?: number; // 外边距

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/modal/index.html b/dev/lib/components/modal/index.html index f0d41e4482..ed34954b7a 100644 --- a/dev/lib/components/modal/index.html +++ b/dev/lib/components/modal/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    对话框

    在保留当前页面状态的情况下,直接使用触发按钮即可展现对话框,告知用户展示相关操作。

    使用方法

    使用 .modal.modal-dialog 类获得对话框的外观展示,通常用在元素 <div> 上。使用 [data-toggle="modal"] 指定对话框触发按钮,在触发按钮上通过 data-target 属性指定要打开的对话框。

    点击 a 标签按钮打开

    自定义位置

    使用 data-position 自定义设置对话框位置。可设置 fitcenter 或其具体像素值。

    尺寸

    除了默认大小,还提供了额外的 3 种预设尺寸。

    信息提示

    展示各种类型的信息提示,只提供一个按钮用于关闭。

    控制遮罩层

    通过 data-backdrop="false" 移除遮罩层,设置后可以操作模态框之外的交互。

    CSS 类

    对话框提供了如下 CSS 类:

    类型作用
    modal实体类元素作为对话框遮罩组件
    modal-dialog实体类元素作为对话框组件
    size-sm工具类对话框使用小号尺寸
    size-lg工具类对话框使用大号尺寸
    size-xl工具类对话框使用超大号尺寸

    CSS 变量

    对话框提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --modal-radius对话框默认圆角大小
    --modal-bg对话框遮挡层颜色
    --modal-sm对话框小号尺寸宽度
    --modal-base对话框默认宽度
    --modal-lg对话框大号尺寸宽度
    --modal-xl对话框超大号尺寸宽度

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/modal/trigger.html b/dev/lib/components/modal/trigger.html index 0d1e34eb28..fcbb719884 100644 --- a/dev/lib/components/modal/trigger.html +++ b/dev/lib/components/modal/trigger.html @@ -14,8 +14,8 @@ - - + + @@ -55,7 +55,7 @@ /* 当用户点击确认或取消时的回调函数 */ onResult?: (confirmed: boolean, modal: Modal) => void; }

    该方法会通过 Promise 异步返回用户点击的按钮名称。

    下面为一个示例:

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/nav/index.html b/dev/lib/components/nav/index.html index 2608e7eaea..2618e0a34b 100644 --- a/dev/lib/components/nav/index.html +++ b/dev/lib/components/nav/index.html @@ -14,8 +14,8 @@ - - + + @@ -24,7 +24,7 @@ <li class="nav-heading">导航标题</li> ... </menu>

    导航样式

    除了默认样式,还可以通过修饰类为导航应用不同的样式。

    主要导航 .nav-primary

    次要导航 .nav-secondary

    圆点导航 .nav-pills

    标签导航 .nav-tabs

    步骤条 .nav-steps

    垂直排列

    使用修饰类 nav-stacked 使导航获得垂直排列样式,可搭配其他各种样式的导航使用。

    .nav-primary
    .nav-secondary
    .nav-pills
    .nav-tabs

    自适应宽度的导航

    使用修饰类 nav-justified 使导航获得自适应宽度样式,可搭配其他各种样式的导航使用。

    提示

    自适应宽度修饰类不能和垂直排列修饰类混用。

    CSS 类

    导航提供了如下 CSS 类

    类型作用
    nav实体类元素导航组件
    nav-item实体类元素导航条目组件
    nav-heading实体类导航标题组件
    nav-divider实体类导航分割线组件
    active修饰类为导航元素启用选中态样式
    nav-simple修饰类为导航元素启用简单样式
    nav-primary修饰类为导航元素启用主要导航样式
    nav-secondary修饰类为导航元素启用次要导航样式
    nav-tabs修饰类为导航元素启用标签风格导航样式
    nav-pills修饰类为导航元素启用标签风格导航样式
    nav-stacked修饰类为导航元素启用垂直排列导航样式
    nav-justified修饰类为导航元素启用自适应宽度导航样式

    CSS 变量

    变量名称变量含义
    --nav-heading-color导航标题字体颜色

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/nav/js.html b/dev/lib/components/nav/js.html index 442b048530..ba056eda3a 100644 --- a/dev/lib/components/nav/js.html +++ b/dev/lib/components/nav/js.html @@ -14,8 +14,8 @@ - - + + @@ -62,7 +62,7 @@ afterRender?: (info: {nav: nav, firstRender: boolean}) => void; beforeDestroy?: (info: {nav: nav}) => void; }

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/pager/index.html b/dev/lib/components/pager/index.html index 6e0a9af594..5606c20a2f 100644 --- a/dev/lib/components/pager/index.html +++ b/dev/lib/components/pager/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    分页

    使用方法

    将多个按钮放置在 <div class="pager"> 内即可创建一个分页组件。

    简洁样式

    简单的翻页。

    状态

    为分页按钮添加 active 类标记选中,添加 disabled 类来禁用页码,被禁用的页码将无法响应点击事件。

    外观

    分页按钮间距

    使用 gap-* CSS 工具类 可获得宽松的分页组件。

    两边对齐

    结合使用 justify-between CSS 工具类 可获得页面两端对齐的分页组件。

    尺寸

    除了默认大小,还提供了额外的 2 种预设尺寸。可以通过为 pager 添加 size-* 类来获取其他尺寸外观。

    调整每页显示数

    结合使用 dropdown 下拉菜单组件 可展示调整每页显示数的分页组件。

    前往页码

    结合使用 input-group 输入组组件 可展示快速跳转到某一页的分页组件。

    CSS 类

    分页提供了如下 CSS 类:

    类型作用
    pager实体类元素作为分页组件
    pager-goto实体类元素作为分页的跳转组件
    pager-size-menu实体类元素作为分页的每页条数的下拉组件

    MIT License (MIT)

    - +
    Skip to content

    分页

    使用方法

    将多个按钮放置在 <div class="pager"> 内即可创建一个分页组件。

    简洁样式

    简单的翻页。

    状态

    为分页按钮添加 active 类标记选中,添加 disabled 类来禁用页码,被禁用的页码将无法响应点击事件。

    外观

    分页按钮间距

    使用 gap-* CSS 工具类 可获得宽松的分页组件。

    两边对齐

    结合使用 justify-between CSS 工具类 可获得页面两端对齐的分页组件。

    尺寸

    除了默认大小,还提供了额外的 2 种预设尺寸。可以通过为 pager 添加 size-* 类来获取其他尺寸外观。

    调整每页显示数

    结合使用 dropdown 下拉菜单组件 可展示调整每页显示数的分页组件。

    前往页码

    结合使用 input-group 输入组组件 可展示快速跳转到某一页的分页组件。

    CSS 类

    分页提供了如下 CSS 类:

    类型作用
    pager实体类元素作为分页组件
    pager-goto实体类元素作为分页的跳转组件
    pager-size-menu实体类元素作为分页的每页条数的下拉组件

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/pager/js.html b/dev/lib/components/pager/js.html index 361fbe83b7..cbd3ab3f38 100644 --- a/dev/lib/components/pager/js.html +++ b/dev/lib/components/pager/js.html @@ -14,8 +14,8 @@ - - + + @@ -167,7 +167,7 @@ render(element, <Pager {...options} />);

    使用Jquery 扩展

    js
    $(element).pager(options);
     
     const pager = $(element).data('zui.pager');

    选项

    linkCreator

    导航链接生成器,点击页码时进行页面地址更换。

    • 类型:string | ((info: PagerInfo) => string)
    • 必选:否

    page

    初始状态的当前页码。

    • 类型:number

    recTotal

    总记录数目。

    • 类型:number

    recPerPage

    每页记录数。

    • 类型:number

    pageTotal

    总页数。

    • 类型:number

    items

    定义分页项的列表,可以通过一个函数动态返回分页组件。

    基于 工具栏 选项 和 自定义 PagerItemOptions 选项。

    onClickItem

    指定分页按钮的点击回调事件。

    API

    PagerInfo

    参数:

    page

    • 含义:初始状态的当前页码;
    • 类型:number

    recTotal

    • 含义:总记录数目;
    • 类型:number

    recPerPage

    • 含义:每页记录数;
    • 类型:number

    pageTotal

    • 含义:总页数;
    • 类型:number

    PagerItemOptions

    参数:

    type

    • 含义:子项类型;
    • 类型:string
    • 可选项:info | link | nav | size-menu | goto

    page

    • 含义:页码名称;
    • 类型:'first' | 'last' | 'prev' | 'next' | 'current' | number

    text

    • 含义:指定类型为 info | size-menu 的显示文案;
    • 类型:string | ((info: PagerInfo) => string)

    count

    • 含义:指定类型为 nav 的展示数量;
    • 类型:number

    format

    • 含义:指定类型为 link | nav 的显示格式;
    • 类型:string | ((info: PagerInfo) => string)
    • 含义:指定下拉菜单的属性;
    • 类型:object

    items

    • 含义:指定类型为 size-menu 下拉菜单里的选项;
    • 类型:number[]

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/panel/index.html b/dev/lib/components/panel/index.html index 00f434b6ce..e1dda42b28 100644 --- a/dev/lib/components/panel/index.html +++ b/dev/lib/components/panel/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    面板

    基本使用

    一个面板通常包含标题,内容,底部三部分。标题,底部可按需选择使用。

    面板标题

    面板内容

    不同主题

    除默认主题外,另外提供6种主题样式。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    面板组

    搭配CSS工具类 space-* 可实现面板组效果。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    与表格组合使用

    包含表格
    项目名称负责人计划开始计划完成
    ZUI1研发今天今天
    ZUI2研发明天明天
    ZUI3研发后天后天

    CSS 类

    面板提供了如下 CSS 类:

    类型作用
    panel实体类元素作为面板组件
    panel-heading实体类元素作为面板头部组件
    panel-title实体类元素作为面板头部标题组件
    panel-body实体类元素作为面板主体组件
    panel-footer实体类元素作为面板尾部组件

    CSS 变量

    面板提供了如下 CSS 变量:

    变量名称变量含义
    --panel-heading-bg标题背景色
    --panel-footer-bg底部背景色

    MIT License (MIT)

    - +
    Skip to content

    面板

    基本使用

    一个面板通常包含标题,内容,底部三部分。标题,底部可按需选择使用。

    面板标题

    面板内容

    不同主题

    除默认主题外,另外提供6种主题样式。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    面板组

    搭配CSS工具类 space-* 可实现面板组效果。

    面板标题
    面板内容
    面板标题
    面板内容
    面板标题
    面板内容

    与表格组合使用

    包含表格
    项目名称负责人计划开始计划完成
    ZUI1研发今天今天
    ZUI2研发明天明天
    ZUI3研发后天后天

    CSS 类

    面板提供了如下 CSS 类:

    类型作用
    panel实体类元素作为面板组件
    panel-heading实体类元素作为面板头部组件
    panel-title实体类元素作为面板头部标题组件
    panel-body实体类元素作为面板主体组件
    panel-footer实体类元素作为面板尾部组件

    CSS 变量

    面板提供了如下 CSS 变量:

    变量名称变量含义
    --panel-heading-bg标题背景色
    --panel-footer-bg底部背景色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/progress-circle/index.html b/dev/lib/components/progress-circle/index.html index 46f92044ad..99bd462ae6 100644 --- a/dev/lib/components/progress-circle/index.html +++ b/dev/lib/components/progress-circle/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/progress/index.html b/dev/lib/components/progress/index.html index f0a0dcf32a..9680f91bdb 100644 --- a/dev/lib/components/progress/index.html +++ b/dev/lib/components/progress/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    进度条

    使用方法

    使用 CSS 类 .progress.progress-bar 来创建进度条,通过为 .progress-bar 设置 CSS width 来展示进度。

    颜色主题

    .progress-bar 元素添加 .* 等颜色CSS工具类,得到各种颜色的进度条。

    圆角大小

    .progress 元素添加 .rounded-* CSS工具类,给进度条添加不同大小的圆角。

    特殊效果

    条纹效果

    .progress 元素添加 .progress-striped 工具类,给进度条添加条纹效果。

    动画效果

    给使用了 progress-striped 工具类的元素添加 .active 工具类,给条纹进度条添加向左滑动的动画。

    堆叠效果

    .progress 元素添加多个 progress-bar 元素,使多个进度条堆叠展示。

    CSS 类

    进度条提供了如下 CSS 类:

    类型作用
    progress实体类元素作为进度条容器组件
    progress-bar实体类元素作为进度条组件
    progress-striped工具类为进度条组件启用条纹样式
    active工具类为条纹样式进度条组件启用动画效果

    CSS 变量

    变量名称变量含义
    --progress-bg进度条组件背景颜色
    --progress-bar-color进度条组件颜色
    --progress-radius进度条组件圆角大小
    --progress-striped-size进度条组件条纹大小

    MIT License (MIT)

    - +
    Skip to content

    进度条

    使用方法

    使用 CSS 类 .progress.progress-bar 来创建进度条,通过为 .progress-bar 设置 CSS width 来展示进度。

    颜色主题

    .progress-bar 元素添加 .* 等颜色CSS工具类,得到各种颜色的进度条。

    圆角大小

    .progress 元素添加 .rounded-* CSS工具类,给进度条添加不同大小的圆角。

    特殊效果

    条纹效果

    .progress 元素添加 .progress-striped 工具类,给进度条添加条纹效果。

    动画效果

    给使用了 progress-striped 工具类的元素添加 .active 工具类,给条纹进度条添加向左滑动的动画。

    堆叠效果

    .progress 元素添加多个 progress-bar 元素,使多个进度条堆叠展示。

    CSS 类

    进度条提供了如下 CSS 类:

    类型作用
    progress实体类元素作为进度条容器组件
    progress-bar实体类元素作为进度条组件
    progress-striped工具类为进度条组件启用条纹样式
    active工具类为条纹样式进度条组件启用动画效果

    CSS 变量

    变量名称变量含义
    --progress-bg进度条组件背景颜色
    --progress-bar-color进度条组件颜色
    --progress-radius进度条组件圆角大小
    --progress-striped-size进度条组件条纹大小

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/scrollbar/index.html b/dev/lib/components/scrollbar/index.html index 21ec927f1a..9c9dfd3f15 100644 --- a/dev/lib/components/scrollbar/index.html +++ b/dev/lib/components/scrollbar/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    滚动条

    滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    窄滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    仅鼠标悬停时显示

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    MIT License (MIT)

    - +
    Skip to content

    滚动条

    滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    窄滚动条样式

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    仅鼠标悬停时显示

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Veniam, accusamus.Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Explicabo asperiores recusandae qui? Aliquam similique eaque animi nemo? Fugiat.Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Pariatur sapiente laboriosam cumque itaque, id saepe commodi accusantium neque?

    Cupiditate eaque, doloribus magnam velit ipsum maiores voluptatum eveniet rem!

    Quidem eum, reiciendis iusto rem perspiciatis neque optio! Quae, sint!

    Maxime animi iure enim sint aperiam tempora non voluptatibus dolore.

    Suscipit cumque minus veritatis labore dolor corporis molestias. Rem, pariatur.

    Commodi omnis minus quo totam, ab aspernatur sequi vero cum?

    Repellendus rerum tempora eos praesentium at placeat, quas quibusdam sunt?

    Molestiae saepe deleniti voluptas excepturi nostrum. Consequatur eius non voluptates!

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/search-box/index.html b/dev/lib/components/search-box/index.html index 80633fce53..7f161a8c4f 100644 --- a/dev/lib/components/search-box/index.html +++ b/dev/lib/components/search-box/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/table/index.html b/dev/lib/components/table/index.html index 36ce7e4e58..d92c9c4390 100644 --- a/dev/lib/components/table/index.html +++ b/dev/lib/components/table/index.html @@ -14,8 +14,8 @@ - - + + @@ -23,7 +23,7 @@
    Skip to content

    表格

    表格用于展示二维数据。

    使用方法

    <table> 元素添加 CSS 类 .table 来使用表格。

    组成部分元素标签说明
    表头<thead>表头通常作为表格第一行,用于展示所有数据的各个属性名称。
    主体<tbody>一个或多个行组成表格的主体,每行用于展示一个数据。
    表尾<tfoot>表尾通常用于展示一些数据的汇总信息。
    总计3 个部分

    斑马纹表格

    <table class="table"> 上使用工具类 .table-striped 斑马纹表格外观(隔行变色)效果。

    :: tabs

    == 示例

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    == HTML

    html
    <table class="table table-striped">
       ...
     </table>

    :::

    鼠标悬停变色

    <table class="table"> 上使用工具类 .table-hover,当鼠标悬停在行上时显示不一样的背景。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    完整边框

    <table class="table"> 上使用工具类 .bordered,为表格添加所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    无边框

    <table class="table"> 上使用工具类 .borderless,为表格移除所有边框。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    紧凑的表格

    <table class="table"> 上使用工具类 .condensed 来获得更紧凑的表格。表格中的单元格拥有更小的间距,整体行高减少。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    固定布局的表格

    <table class="table"> 上使用工具类 .table-fixed 来将表格布局方式设置为 fixed

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观。
    3.02021-07-31这一次说说关于表格的固定布局,当启用固定布局时,后续行中的单元格内容将不会对表格布局产生影响,当单元格内的文本过长时会被截断隐藏。

    关于表格的固定布局

    表格和列的宽度通过表格的宽度来设置,某一列的宽度仅由该列首行的单元格决定。在当前列中,该单元格所在行之后的行并不会影响整个列宽。

    使用“fixed”布局方式时,整个表格可以在其首行被下载后就被解析和渲染。这样对于“automatic”自动布局方式来说可以加速渲染,但是其后的单元格内容并不会自适应当前列宽。任何一个包含溢出内容的单元格可以使用 overflow 属性控制是否允许内容溢出。

    参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/table-layout

    自动宽度

    通常表格宽度为 100%,与表格所属的父级元素宽度保持一致,但有时希望表格的宽度能够按照实际内容宽度展示。此时可以通过配合使用 CSS 工具类 w-auto 来设置表格宽度为自动,同时推荐使用工具类 max-w-full 来限制表格最大宽度不超过父级元素宽度(100%)。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    特殊外观

    为行元素 <tr> 或单元格 <td><th> 应用 CSS 工具类 来获得特殊外观。

    版本发布时间主要特性
    1.02021-03-01第一个版本发布!
    1.12021-04-12修复了大量已知问题。
    1.22021-05-18新的编辑器,让创意更容易展现。
    2.02021-06-05这次版本带来全新的界面外观
    2.12021-07-31新的预览功能,更方便的提前查看最终效果!

    CSS 类

    按钮提供了如下 CSS 类:

    类型作用
    table实体类元素作为表格组件
    table-striped工具类为表格启用斑马纹效果
    table-hover工具类为表格启用行悬停变色效果
    table-fixed工具类为表格启用固定布局
    borderless工具类移除表格所有边框
    bordered工具类为表格添加完整边框
    condensed工具类为表格启用紧凑布局

    CSS 变量

    变量名称变量含义
    --table-head-bg表头背景色
    --table-striped-color表格斑马纹行背景色
    --table-hover-color表格行响应鼠标悬停变化背景颜色
    --table-border-color表格边框颜色

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/tabs/index.html b/dev/lib/components/tabs/index.html index 53288a563f..be0196a672 100644 --- a/dev/lib/components/tabs/index.html +++ b/dev/lib/components/tabs/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    标签页

    使用方法

    标签页一般配合导航使用,通过 .nav 来定义切换的触发器,通过 .tab-content 来定义切换的内容。标签页内容使用 .tab-pane 作为容器元素,所有供切换显示的 .tab-pane 放置在 .tab-content 容器元素内。

    提示

    为确保在页面显示的时候标签页能够指示正确的标签和显示正确的内容,在初始状态需要为当前选中的导航项目 li.nav-item > a 元素添加 .active 类,并且为当前显示的标签页内容元素 .tab-pane 添加 .active 类。

    为导航上每个用于切换标签内容的链接添加 hrefdata-target 属性指向当前标签页内容 .tab-paneid ,并添加 data-toggle="tab" 属性。

    我是标签1。

    我是标签2。

    我是标签3。

    动画效果

    为每个 .tab-pane 添加 .fade,可以使得标签内容在显示时获得渐变动画效果。在初始状态要显示的标签页内容 .tab-pane 不仅需要添加 .active 类,还需要添加 .in 类。

    我是标签1。

    我是标签2。

    我是标签3。

    垂直标签页

    使用 .nav-tabs.nav-stacked 获得垂直排列的标签导航,使用 flex 布局来使得导航和标签页内容水平排列。

    我是标签1。

    我是标签2。

    我是标签3。

    事件

    当显示一个新的标签页时,这些事件会被触发:

    • show: 当前标签页在显示时触发;
    • shown: 当前标签页在显示后(动画执行完毕)触发。

    通过为 [data-toggle="tab"] 链接添加 data-name 属性,这样事件触发时会传递该属性值作为参数,如果不指定则使用 [data-target] 的值作为参数。

    我是标签1。

    我是标签2。

    我是标签3。

    MIT License (MIT)

    - +
    Skip to content

    标签页

    使用方法

    标签页一般配合导航使用,通过 .nav 来定义切换的触发器,通过 .tab-content 来定义切换的内容。标签页内容使用 .tab-pane 作为容器元素,所有供切换显示的 .tab-pane 放置在 .tab-content 容器元素内。

    提示

    为确保在页面显示的时候标签页能够指示正确的标签和显示正确的内容,在初始状态需要为当前选中的导航项目 li.nav-item > a 元素添加 .active 类,并且为当前显示的标签页内容元素 .tab-pane 添加 .active 类。

    为导航上每个用于切换标签内容的链接添加 hrefdata-target 属性指向当前标签页内容 .tab-paneid ,并添加 data-toggle="tab" 属性。

    我是标签1。

    我是标签2。

    我是标签3。

    动画效果

    为每个 .tab-pane 添加 .fade,可以使得标签内容在显示时获得渐变动画效果。在初始状态要显示的标签页内容 .tab-pane 不仅需要添加 .active 类,还需要添加 .in 类。

    我是标签1。

    我是标签2。

    我是标签3。

    垂直标签页

    使用 .nav-tabs.nav-stacked 获得垂直排列的标签导航,使用 flex 布局来使得导航和标签页内容水平排列。

    我是标签1。

    我是标签2。

    我是标签3。

    事件

    当显示一个新的标签页时,这些事件会被触发:

    • show: 当前标签页在显示时触发;
    • shown: 当前标签页在显示后(动画执行完毕)触发。

    通过为 [data-toggle="tab"] 链接添加 data-name 属性,这样事件触发时会传递该属性值作为参数,如果不指定则使用 [data-target] 的值作为参数。

    我是标签1。

    我是标签2。

    我是标签3。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/toolbar/index.html b/dev/lib/components/toolbar/index.html index 455dddeee0..72197eec74 100644 --- a/dev/lib/components/toolbar/index.html +++ b/dev/lib/components/toolbar/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/components/toolbar/js.html b/dev/lib/components/toolbar/js.html index 94aca30626..9cb7a8fdc4 100644 --- a/dev/lib/components/toolbar/js.html +++ b/dev/lib/components/toolbar/js.html @@ -14,8 +14,8 @@ - - + + @@ -152,7 +152,7 @@ render(element, <Toolbar {...options} />);

    使用 jQuery 扩展

    js
    $(element).toolbar(options);
     
     const toolbar = $(element).data('zui.toolbar');

    选项

    操作菜单 选项基础上添加新的参数选项。

    wrap

    限制工具栏按钮过多超出时是否换行。

    • 类型:boolean
    • 必选:否;
    • 默认值:false

    gap

    自定义工具栏按钮的间距,与 .toolbar 同级生成 .gap-* 的工具类控制按钮间距。

    • 类型:number | string
    • 必选:否

    items

    继承了 操作菜单 选项和按钮选项,同时添加了其他选项。

    btnProps

    继承按钮组件的属性, 统一处理工具栏按钮属性外观等。

    itemRender

    指定一个回调函数用于对组件渲染进行自定义。

    参数items 选项的单个配置;

    返回值items 选项的单个配置。

    beforeRender

    指定一个回调函数在渲染之前调用,可重新配置组件选项。

    参数:用户为按钮组组件件设置的 options

    返回值:组件选项数据。

    afterRender

    指定一个回调函数在渲染之后调用。

    参数:

    • firstRender:判断是否第一次渲染;
    • menu:组件信息。

    beforeDestroy

    指定一个回调函数在组件销毁之前调用,无参数。

    API

    ToolbarItemOptions

    ts
    type ToolbarItemOptions = ToolbarItemProps | ToolbarDropdownProps | ToolbarBtnGroupProps | ToolbarDividerProps | ToolbarSpaceProps;

    ToolbarItemProps

    选项:

    继承了操作菜单的 ActionItemProps 选项和按钮的 ButtonProps ,同时添加了其他选项 btnType,用来设置按钮外观类型。

    btnType

    设置工具栏单个按钮的外观类型。

    • 类型:string
    • 必选:否。

    ToolbarDropdownProps

    选项:

    在原有属性基础上固定 type 属性,并继承了下拉菜单的 DropdownButtonOptions 选项,同时添加了其他选项。

    type
    • 类型:string
    • 属性值:dropdown
    • 必选:是。
    children

    ToolbarBtnGroupProps

    选项:

    在原有属性基础上固定 type 属性,并继承了操作菜单的 ActionBasicProps 选项和按钮组的 BtnGroupOptions选项,同时添加了其他选项。

    type
    • 类型:string
    • 属性值:btn-group
    • 必选:是。

    ToolbarDividerProps

    选项:

    继承了工具栏的 ActionDividerProps 选项。

    ToolbarSpaceProps

    选项:

    继承了工具栏的 ActionSpaceProps 选项。

    type
    • 类型:string
    • 属性值:space
    • 必选:是。
    space
    • 类型:number | [leading: number, trailing: number]
    • 必选:否。
    flex
    • 类型:number | 'auto' | 'none'
    • 必选:否。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/tooltip/index.html b/dev/lib/components/tooltip/index.html index 8e811714d3..d96cef2a47 100644 --- a/dev/lib/components/tooltip/index.html +++ b/dev/lib/components/tooltip/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    提示消息

    提示消息又称“工具提示”,在鼠标悬停在元素上时及时显示额外的内容。

    使用方法

    组件提供多种不同方向的展示方式,可以根据需求选择你要的效果。

    触发方式

    除了默认的鼠标悬浮展示信息外,组件也提供了点击触发的方式。

    外观

    指定 type 选项来更改外观类型。

    选项

    名称类型默认值说明
    titlestringnull提示消息内容 placement?: string; // 弹出方向,可选值包括:'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end' | 'right-start' | 'right' | 'right-end' trigger?: string; // 触发方式,可选值包括:'click' | 'hover' className?: string; // 类名 type?: string; // 外观类型,可选值包括:'primary' | 'secondary' | 'warning' | 'success' | 'danger' | 'important' | 'gray' animation?: boolean; // 是否应用淡入淡出动画 arrow?: number | number; // 箭头大小 delay?: boolean | number; // 延迟显示,可选值包括:true | false | number hideOthers?: boolean; // 显示时隐藏其他已经显示的提示消息

    MIT License (MIT)

    - +
    Skip to content

    提示消息

    提示消息又称“工具提示”,在鼠标悬停在元素上时及时显示额外的内容。

    使用方法

    组件提供多种不同方向的展示方式,可以根据需求选择你要的效果。

    触发方式

    除了默认的鼠标悬浮展示信息外,组件也提供了点击触发的方式。

    外观

    指定 type 选项来更改外观类型。

    选项

    名称类型默认值说明
    titlestringnull提示消息内容 placement?: string; // 弹出方向,可选值包括:'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end' | 'right-start' | 'right' | 'right-end' trigger?: string; // 触发方式,可选值包括:'click' | 'hover' className?: string; // 类名 type?: string; // 外观类型,可选值包括:'primary' | 'secondary' | 'warning' | 'success' | 'danger' | 'important' | 'gray' animation?: boolean; // 是否应用淡入淡出动画 arrow?: number | number; // 箭头大小 delay?: boolean | number; // 延迟显示,可选值包括:true | false | number hideOthers?: boolean; // 显示时隐藏其他已经显示的提示消息

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/components/tree/index.html b/dev/lib/components/tree/index.html index 5d2ba6f331..d3f6cde937 100644 --- a/dev/lib/components/tree/index.html +++ b/dev/lib/components/tree/index.html @@ -14,8 +14,8 @@ - - + + @@ -181,7 +181,7 @@ /** 工具栏定义。 */ actions?: ToolbarOptions | ToolbarItemOptions[]; };

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/upload-imgs/index.html b/dev/lib/components/upload-imgs/index.html index 9127937187..8f3eab557a 100644 --- a/dev/lib/components/upload-imgs/index.html +++ b/dev/lib/components/upload-imgs/index.html @@ -14,8 +14,8 @@ - - + + @@ -40,7 +40,7 @@ tip: '可点击添加或拖拽上传,图片格式支持jpg、jpeg', accept: 'image/jpg, image/jpeg' });

    选项

    name

    表单字段名。

    • 类型:string
    • 必选:是

    showSize

    是否显示文件大小。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    multiple

    是否开启多文件上传。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    uploadText

    上传按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'添加文件'

    uploadIcon

    上传按钮图标。

    • 类型:string
    • 必选:否

    renameBtn

    是否启用重命名按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    renameIcon

    重命名按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'edit'

    renameText

    重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'重命名'

    renameClass

    重命名按钮类。

    • 类型:string
    • 必选:否

    deleteBtn

    是否启用删除按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    deleteIcon

    删除按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'trash'

    deleteText

    删除按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'删除'

    deleteClass

    删除按钮类。

    • 类型:string
    • 必选:否

    tip

    文件上传提示。

    • 类型:string
    • 必选:否

    btnClass

    上传按钮类。

    • 类型:string
    • 必选:否

    onAdd

    文件变更回调。

    • 类型:(files: File[] | File) => void
    • 必选:否

    onDelete

    删除文件回调。

    • 类型:(file: File) => void
    • 必选:否

    onRename

    重命名文件回调。

    • 类型:(newName: string, oldName: string) => void
    • 必选:否

    onSizeChange

    文件大小变更回调。

    • 类型:(size: number) => void
    • 必选:否

    limitCount

    上传文件最大数量限制。

    • 类型:number
    • 必选:否

    accept

    上传文件类型。

    • 类型:string
    • 必选:否

    defaultFileList

    默认文件列表。

    • 类型:File[]
    • 必选:否

    limitSize

    上传文件最大大小限制。

    • 类型:${number}${'B' | 'KB' | 'MB' | 'GB'} | false
    • 必选:否

    duplicatedHint

    重复文件提示。

    • 类型:string
    • 必选:否

    onDuplicated

    文件重复回调。

    • 类型:(name: string) => void
    • 必选:否

    exceededSizeHint

    超出大小限制提示。

    • 类型:string
    • 必选:否

    onExceededSize

    超出大小限制回调。

    • 类型:(limit: number) => void
    • 必选:否

    exceededCountHint

    超过数量限制提示。

    • 类型:string
    • 必选:否

    onExceededCount

    超过数量限制回调

    • 类型:(limit: number) => void
    • 必选:否

    totalCountText

    文件数量提示。

    • 类型:string
    • 必选:否
    • 默认值:'共 <span class="font-bold text-black">%s</span> 个文件 <span class="font-bold text-black">%s</span> 个文件等待上传。'

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/components/upload/index.html b/dev/lib/components/upload/index.html index f543b9bc04..8524c9bb31 100644 --- a/dev/lib/components/upload/index.html +++ b/dev/lib/components/upload/index.html @@ -14,8 +14,8 @@ - - + + @@ -56,7 +56,7 @@ name: 'files8', defaultFileList: [file1, file2] });

    选项

    name

    表单字段名。

    • 类型:string
    • 必选:是

    icon

    文件图标。

    • 类型:string
    • 必选:否
    • 默认值:'file-o'

    showIcon

    是否显示文件图标。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    showSize

    是否显示文件大小。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    multiple

    是否开启多文件上传。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    listPosition

    文件列表位置。

    • 类型:'bottom' | 'top'
    • 必选:否
    • 默认值:'bottom'

    uploadText

    上传按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'上传文件'

    uploadIcon

    上传按钮图标。

    • 类型:string
    • 必选:否

    renameBtn

    是否启用重命名按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    renameIcon

    重命名按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'edit'

    renameText

    重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'重命名'

    renameClass

    重命名按钮类。

    • 类型:string
    • 必选:否

    deleteBtn

    是否启用删除按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    deleteIcon

    删除按钮图标。

    • 类型:string
    • 必选:否
    • 默认值:'trash'

    deleteText

    删除按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'删除'

    deleteClass

    删除按钮类。

    • 类型:string
    • 必选:否

    confirmText

    确认重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'确定'

    cancelText

    取消重命名按钮文本。

    • 类型:string
    • 必选:否
    • 默认值:'取消'

    useIconBtn

    是否使用图标按钮。

    • 类型:boolean
    • 必选:否
    • 默认值:true

    tip

    文件上传提示。

    • 类型:string
    • 必选:否

    btnClass

    上传按钮类。

    • 类型:string
    • 必选:否

    onAdd

    文件变更回调。

    • 类型:(files: File[] | File) => void
    • 必选:否

    onDelete

    删除文件回调。

    • 类型:(file: File) => void
    • 必选:否

    onRename

    重命名文件回调。

    • 类型:(newName: string, oldName: string) => void
    • 必选:否

    onSizeChange

    文件大小变更回调。

    • 类型:(size: number) => void
    • 必选:否

    draggable

    是否启用拖拽功能。

    • 类型:boolean
    • 必选:否
    • 默认值:false

    limitCount

    上传文件最大数量限制。

    • 类型:number
    • 必选:否

    accept

    上传文件类型。

    • 类型:string
    • 必选:否

    defaultFileList

    默认文件列表。

    • 类型:File[]
    • 必选:否

    limitSize

    上传文件最大大小限制。

    • 类型:${number}${'B' | 'KB' | 'MB' | 'GB'} | false
    • 必选:否

    duplicatedHint

    重复文件提示。

    • 类型:string
    • 必选:否

    onDuplicated

    文件重复回调。

    • 类型:(name: string) => void
    • 必选:否

    exceededSizeHint

    超出大小限制提示。

    • 类型:string
    • 必选:否

    onExceededSize

    超出大小限制回调。

    • 类型:(limit: number) => void
    • 必选:否

    exceededCountHint

    超过数量限制提示。

    • 类型:string
    • 必选:否

    onExceededCount

    超过数量限制回调

    • 类型:(limit: number) => void
    • 必选:否

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/checkbox/index.html b/dev/lib/forms/checkbox/index.html index 831965097c..ef86aa1e8c 100644 --- a/dev/lib/forms/checkbox/index.html +++ b/dev/lib/forms/checkbox/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    复选框和单选框

    复选框(checkbox)允许用户选择多个选项,不同于 <select>,这些选项是直接展示的。为 <input type="checkbox"> 设置 disabled 属性来应用禁用样式,如果为 .checkbox 添加 disabled 类,则整个复选框包括文字部分都会应用禁用样式。将多个复选框堆叠形成一个复选框组。

    基本使用

    复选框

    单选框列表

    单选框通常多个一起使用组成列表,将多个单选框放在 .check-list 中即可。

    复选框列表

    复选框也支持多个一起使用组成列表,将多个复选框放在 .check-list 中即可。

    不包含文字样式

    复选框

    单选框

    内联形式

    为让多个复选框或单选框内联显示,可以将他们放置在一个 .check-list-inline 中。

    内联多选框

    内联单选框

    内联间距

    可以通过工具类 gap-* 来设置内联的复选框和单选框间的间距。

    高级外观

    高级外观的多选框和单选框使用自定义的外观代替原生外观,在所有浏览器都具有一致的体验。

    高级外观的复选框

    高级外观的单选框

    <input> 选择框

    高级外观还可以不使用 <input> 元素,在此种情况下,为 .checkbox-primary.radio-primary 添加 .checked 类标记为选中状态,通过 focus 类来标记激活状态,用户无法通过点击来切换选中状态,但可以通过程序手动添加或移除 .checked 来更改选中状态。

    设置高级外观颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    CSS 类

    单选框和复选框提供了如下 CSS 类:

    类型作用
    checkbox实体类复选框组件
    radio实体类单选框组件
    check-list实体类复选框或单选框列表组件
    check-list-inline实体类复选框或单选框内联列表组件
    checkbox-primary实体类高级外观的复选框组件
    radio-primary实体类高级外观的单选框组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观
    indeterminate修饰类强制使用 Indeterminate 外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-size复选框或单选框大小,仅当使用高级外观时有效
    --checkbox-color复选框或单选框颜色,仅当使用高级外观时有效

    MIT License (MIT)

    - +
    Skip to content

    复选框和单选框

    复选框(checkbox)允许用户选择多个选项,不同于 <select>,这些选项是直接展示的。为 <input type="checkbox"> 设置 disabled 属性来应用禁用样式,如果为 .checkbox 添加 disabled 类,则整个复选框包括文字部分都会应用禁用样式。将多个复选框堆叠形成一个复选框组。

    基本使用

    复选框

    单选框列表

    单选框通常多个一起使用组成列表,将多个单选框放在 .check-list 中即可。

    复选框列表

    复选框也支持多个一起使用组成列表,将多个复选框放在 .check-list 中即可。

    不包含文字样式

    复选框

    单选框

    内联形式

    为让多个复选框或单选框内联显示,可以将他们放置在一个 .check-list-inline 中。

    内联多选框

    内联单选框

    内联间距

    可以通过工具类 gap-* 来设置内联的复选框和单选框间的间距。

    高级外观

    高级外观的多选框和单选框使用自定义的外观代替原生外观,在所有浏览器都具有一致的体验。

    高级外观的复选框

    高级外观的单选框

    <input> 选择框

    高级外观还可以不使用 <input> 元素,在此种情况下,为 .checkbox-primary.radio-primary 添加 .checked 类标记为选中状态,通过 focus 类来标记激活状态,用户无法通过点击来切换选中状态,但可以通过程序手动添加或移除 .checked 来更改选中状态。

    设置高级外观颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    CSS 类

    单选框和复选框提供了如下 CSS 类:

    类型作用
    checkbox实体类复选框组件
    radio实体类单选框组件
    check-list实体类复选框或单选框列表组件
    check-list-inline实体类复选框或单选框内联列表组件
    checkbox-primary实体类高级外观的复选框组件
    radio-primary实体类高级外观的单选框组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观
    indeterminate修饰类强制使用 Indeterminate 外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-size复选框或单选框大小,仅当使用高级外观时有效
    --checkbox-color复选框或单选框颜色,仅当使用高级外观时有效

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/checkbox/switch.html b/dev/lib/forms/checkbox/switch.html index 09b59fbaa0..9f629da386 100644 --- a/dev/lib/forms/checkbox/switch.html +++ b/dev/lib/forms/checkbox/switch.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    开关

    基本使用

    与单选框和复选框的高级外观一样,通过 .switch 类来启用开关外观。

    开关颜色

    通过设置 CSS 变量 --checkbox-color 可以设置高级外观颜色。

    开关列表

    垂直列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关列表:

    内联列表

    通过将多个开关放置在 .check-list 中,可以实现一个开关内联列表:

    列表联动

    通过开关内部使用的 input[type="checkbox"] 更换为 input[type="radio"],并指定为相同的 name 属性,即可实现多个开关单选联动:

    CSS 类

    开关提供了如下 CSS 类:

    类型作用
    switch实体类开关组件
    check-list实体类开关列表组件
    check-list-inline实体类开关内联列表组件
    checked修饰类强制使用选中外观
    focus修饰类强制使用激活外观
    disabled修饰类强制使用禁用外观

    CSS 变量

    单选框和复选框提供了如下 CSS 变量:

    CSS 变量名作用
    --checkbox-color开关颜色,仅当使用高级外观时有效

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/date.html b/dev/lib/forms/datetime-picker/date.html index 7c0ba93e3e..b38d685c59 100644 --- a/dev/lib/forms/datetime-picker/date.html +++ b/dev/lib/forms/datetime-picker/date.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    日期选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为当天。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板侧面显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义侧边菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。

    MIT License (MIT)

    - +
    Skip to content

    日期选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为当天。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板侧面显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义侧边菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/datetime.html b/dev/lib/forms/datetime-picker/datetime.html index 29fb2e73fe..ea7338a478 100644 --- a/dev/lib/forms/datetime-picker/datetime.html +++ b/dev/lib/forms/datetime-picker/datetime.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    日期时间选择器

    日期时间选择器允许用户通过下拉面板同时选择日期和时间。

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为现在时间。

    格式化

    通过 format 选项设置日期和时间的格式化形式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义左侧菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。 minuteStep?: number; // 分钟选择间隔,默认 5(分钟)。

    MIT License (MIT)

    - +
    Skip to content

    日期时间选择器

    日期时间选择器允许用户通过下拉面板同时选择日期和时间。

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'today' 可以将默认值设置为现在时间。

    格式化

    通过 format 选项设置日期和时间的格式化形式。

    限制日期范围

    通过 minDatemaxDate 来限制可选的日期范围。

    自定义菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,通过 actions 可以自定义底部工具栏上的按钮。在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    自定义左侧菜单

    通过 menu 选项可以在弹出面板左侧显示一个自定义菜单,在菜单项配置上通过 [data-set-date] 属性指定点击菜单项时要设定的日期。

    自定义底部按钮

    通过 actions 可以自定义底部工具栏上的按钮,在菜单项和按钮上通过 [data-set-date] 属性指定点击按钮时要设定的日期。

    选项

    名称类型默认值说明
    classNameanynull组件根元素的类名。 style?: object; // 组件根元素的样式。 tagName?: string; // 组件根元素的标签名。 attrs?: object; // 附加到组件根元素上的属性。 clickType?: 'toggle' | 'open'; // 点击类型,toggle 表示点击按钮时切换显示隐藏,open 表示点击按钮时只打开。 name?: string; // 作为表单项的名称。 defaultValue?: 'today' | string; // 默认值。 onChange?: function; // 值变更时的回调函数。 disabled?: boolean; // 是否禁用。 readonly?: boolean; // 是否只读,不允许手动修改。 required?: boolean; // 是否必须提供值(不能清除和选择空值)。 placeholder?: string; // 输入框上占位文本。 format?: string; // 日期格式,默认 yyyy-MM-dd。 icon?: string | object; // 在输入框右侧显示的图标。 weekNames?: string[]; // 星期名称,索引为 0 表示周日。 monthNames?: string[]; // 月份名称,索引为 0 表示一月份。 yearText?: string; // 用于显示年份的格式化文本。 todayText?: string; // 用于显示“今天”的文本。 clearText?: string; // 用于显示“清除”的文本。 weekStart?: number; // 一周从星期几开始,默认 1。 minDate?: DateLike; // 最小可选的日期。 maxDate?: DateLike; // 最大可选的日期。 menu?: object[] | object; // 左侧显示的菜单设置。 actions?: object[] | object; // 底部工具栏设置。 onInvalid?: function; // 日期值无效时的回调函数。 minuteStep?: number; // 分钟选择间隔,默认 5(分钟)。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/datetime-picker/time.html b/dev/lib/forms/datetime-picker/time.html index e0de1b6fff..65cd113e03 100644 --- a/dev/lib/forms/datetime-picker/time.html +++ b/dev/lib/forms/datetime-picker/time.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    时间选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'now' 可以将默认值设置为页面显示的时刻。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    选项

    名称类型默认值说明

    MIT License (MIT)

    - +
    Skip to content

    时间选择器

    用法

    设置默认值

    通过 defaultValue 选项设置默认值,设置为 'now' 可以将默认值设置为页面显示的时刻。

    格式化

    通过 format 选项设置日期格式化形式,支持日期辅助方法 formatDate 中的所有格式。

    选项

    名称类型默认值说明

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/form-control/index.html b/dev/lib/forms/form-control/index.html index 68c8bcc974..6167f0c5fd 100644 --- a/dev/lib/forms/form-control/index.html +++ b/dev/lib/forms/form-control/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    表单控件

    输入框

    输入框通过为 <input> 元素添加类 form-control 实现,支持通过 type 属性设置输入框类型。

    选择框

    通过为 <select> 元素添加 form-control 类来使用选择框,包括单选和多选模式。

    单选框

    多选框

    TIP

    使用多选框时通常需要指定多选框高度。

    多行文本框

    通过为 <textarea> 元素添加 form-control 类来使用多行文本框。

    特殊表单控件

    在浏览器支持的情况下,还可以为 type 设置一些特殊类型。

    日期

    设置 <input type="date">

    时间

    设置 <input type="time">

    日期时间

    设置 <input type="datetime-local">

    月份

    设置 <input type="month">

    周数

    设置 <input type="week">

    范围

    设置 <input type="range">

    颜色

    设置 <input type="color">

    文件

    设置 <input type="file">

    尺寸

    通过为表单控件添加 size-* 工具类来设置尺寸。

    禁用

    通过为表单控件添加 disabled 属性来禁用表单控件。

    只读

    通过为表单控件添加 readonly 属性来表单控件只读。

    特殊状态

    通过为表单控件或者其直接父级元素添加工具类 has-errorhas-warninghas-error 来让其拥有特殊语义的状态。

    CSS 类

    表单控件提供了如下 CSS 类:

    类型作用
    form-control实体类元素作为表单控件组件
    size-sm工具类表单控件使用小号尺寸
    size-lg工具类表单控件使用大号尺寸

    CSS 变量

    表单控件提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --form-control-radius圆角
    --form-control-border边框颜色
    --form-control-focus激活颜色
    --form-control-disabled禁用颜色
    --form-control-readonly只读颜色

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/form/index.html b/dev/lib/forms/form/index.html index e7f2eba900..01a5218ff0 100644 --- a/dev/lib/forms/form/index.html +++ b/dev/lib/forms/form/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    表单

    基本用法

    <form> 元素使用类 .form 类来获得表单外观,将表单控件放置在表单控件组 .form-group 内,将表单操作按钮放置在表单操作栏 .form-actions 中。

    水平布局的表单

    <form> 元素使用类 .form-horz 类来让表单实现水平布局。

    在水平布局表单中,如果需要在一行包含多个表单控件,可以使用 .form-row 类,下面是一个更复杂的例子:

    可以放在同一行的字段满足:可连着填写,字段意义上有相似性
    此表单项为必填
    强关联字段,有灰色底色进行连接,3个以上框的自适应宽度

    网格布局

    <form> 元素使用类 .form-grid 类来让表单实现网格布局。

    .form-group 添加 w-* 辅助类来设置宽度
    项目类型
    -

    帮助性文本

    使用 form-tip 来显示帮助性的文本并添加到表单控件组中。

    校验状态

    通过为表单控件组添加 has-warninghas-errorhas-success 类即可应用相应的效验状态样式。这些样式会影响到表单控件组内的 label.form-control.form-tip 元素。

    表单分组

    使用fieldset 将多个表单控件放置在一起进行分组。在<fieldset> 内使用 <legend> 来定义分组标题。

    账号信息
    额外内容

    标记必填项

    标记必填项的一种通用方法是在标签上添加星标 * , 在表单控件组中只需要为表单组标签 .form-label 添加 required 类。

    水平布局的表单中也可以使用:

    CSS 类

    表单提供了如下 CSS 类

    类型作用
    form-group实体类元素作为表单组件
    form-label实体类元素作为表单组标签
    form-control实体类元素作为表单控件组件
    form-tip实体类元素作为表单控件的提示性文本
    form-actions实体类元素作为表单按钮容器
    form-grid修饰类为表单启用水平排列样式
    required修饰类为表单控件启用必填标记样式
    has-error修饰类为表单控件启用报错样式
    has-warning修饰类为表单控件启用警告样式
    has-success修饰类为表单控件启用成功样式

    CSS 变量

    变量名称变量含义
    --form-label-color表单组标签颜色
    --form-tip-color帮助性文本默认颜色
    --form-grid-label-width水平布局时表单表单组标签宽度

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/input-control/index.html b/dev/lib/forms/input-control/index.html index 975b6d74ec..c920ae3c8a 100644 --- a/dev/lib/forms/input-control/index.html +++ b/dev/lib/forms/input-control/index.html @@ -14,19 +14,19 @@ - - + + -
    Skip to content

    输入框

    通过鼠标或键盘输入内容,可以在输入框前后位置包含额外的文本或图标,通常用在表单、对话框上面。

    基本使用

    使用 input-control 类来获得输入框的外观和交互体验。

    用户名
    用户名验证失败

    包含图标和按钮

    前缀和后缀

    通过结合类 has-prefix has-suffix 在输入框上添加前缀或后缀图标或字符。

    除了预设的前 / 后缀宽度,还预设了其他两种尺寸,结合 has-prefix-*has-suffix-* 类进行不同宽度展示。

    用户名
    有效身份证号码

    尺寸

    除了默认大小,输入框还提供了额外的 2 种预设尺寸。

    小号尺寸

    用户名
    有效身份证号码

    默认尺寸

    用户名
    有效身份证号码

    大号尺寸

    用户名
    有效身份证号码

    外观类型

    配合使用CSS 工具类来实现不同输入框的外观。下面展示各种工具类的外观效果。

    html
    <div class="input-control">
    +    
    Skip to content

    输入框

    通过鼠标或键盘输入内容,可以在输入框前后位置包含额外的文本或图标,通常用在表单、对话框上面。

    基本使用

    使用 input-control 类来获得输入框的外观和交互体验。

    用户名
    用户名验证失败

    包含图标和按钮

    前缀和后缀

    通过结合类 has-prefix has-suffix 在输入框上添加前缀或后缀图标或字符。

    除了预设的前 / 后缀宽度,还预设了其他两种尺寸,结合 has-prefix-*has-suffix-* 类进行不同宽度展示。

    用户名
    有效身份证号码

    尺寸

    除了默认大小,输入框还提供了额外的 2 种预设尺寸。

    小号尺寸

    用户名
    有效身份证号码

    默认尺寸

    用户名
    有效身份证号码

    大号尺寸

    用户名
    有效身份证号码

    外观类型

    配合使用CSS 工具类来实现不同输入框的外观。下面展示各种工具类的外观效果。

    html
    <div class="input-control">
       <input type="text" class="form-control circle" placeholder="请填写" />
     </div>
     <div class="input-control">
       <input type="text" class="form-control shadow" placeholder="请填写" />
     </div>

    CSS 类

    输入框提供了如下 CSS 类:

    类型作用
    input-control实体类元素作为输入框组件
    input-control-prefix工具类输入框前缀元素样式
    input-control-suffix工具类输入框后缀元素样式
    has-prefix工具类标记输入框拥有前缀元素
    has-suffix工具类标记输入框拥有后缀元素
    has-prefix-icon工具类标记输入框拥有前缀图标
    has-suffix-icon工具类标记输入框拥有后缀图标
    size-sm工具类输入框使用小号尺寸
    size-lg工具类输入框使用大号尺寸

    CSS 变量

    输入框提供了如下 CSS 变量,可进行全局修改。

    CSS 变量名作用
    --input-fix-width输入框前/后缀的默认宽度
    --input-fix-width-sm输入框前/后缀的小号宽度
    --input-fix-width-lg输入框前/后缀的大号宽度

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/forms/input-group/index.html b/dev/lib/forms/input-group/index.html index 1a6b72b531..a812ae8fe6 100644 --- a/dev/lib/forms/input-group/index.html +++ b/dev/lib/forms/input-group/index.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    输入组

    通过在文本输入框 <input> 前面、后面或是两边加上文字、图标或按钮,可以实现对表单控件的扩展。

    使用方法

    在元素使用工具类 .input-group 作为输入组容器,然后在内部添加表单控件、按钮或附加文本(.input-group-addon)。

    账号
    密码

    组合方式

    在输入组内部可以将不同的内容按需组合使用,包括附加文本(.input-group-addon)、表单控件(.form-control)、按钮(.btn)。

    登录

    尺寸

    除了默认大小,输入组还提供了额外的 2 种预设尺寸,通过修饰类 .size-* 来应用尺寸。

    登录
    登录
    登录

    CSS 类

    输入组提供了如下 CSS 类:

    类型作用
    input-group实体类元素作为输入组组件
    input-group-addon实体类元素作为输入组内部额外元素
    size-sm工具类输入组使用小号尺寸
    size-lg工具类输入组使用大号尺寸

    CSS 变量

    变量名称变量含义
    --input-group-addon-bg输入组附加部分背景颜色

    MIT License (MIT)

    - +
    Skip to content

    输入组

    通过在文本输入框 <input> 前面、后面或是两边加上文字、图标或按钮,可以实现对表单控件的扩展。

    使用方法

    在元素使用工具类 .input-group 作为输入组容器,然后在内部添加表单控件、按钮或附加文本(.input-group-addon)。

    账号
    密码

    组合方式

    在输入组内部可以将不同的内容按需组合使用,包括附加文本(.input-group-addon)、表单控件(.form-control)、按钮(.btn)。

    登录

    尺寸

    除了默认大小,输入组还提供了额外的 2 种预设尺寸,通过修饰类 .size-* 来应用尺寸。

    登录
    登录
    登录

    CSS 类

    输入组提供了如下 CSS 类:

    类型作用
    input-group实体类元素作为输入组组件
    input-group-addon实体类元素作为输入组内部额外元素
    size-sm工具类输入组使用小号尺寸
    size-lg工具类输入组使用大号尺寸

    CSS 变量

    变量名称变量含义
    --input-group-addon-bg输入组附加部分背景颜色

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/lib/forms/picker/index.html b/dev/lib/forms/picker/index.html index 1f73f509ce..309e90b960 100644 --- a/dev/lib/forms/picker/index.html +++ b/dev/lib/forms/picker/index.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/lib/helpers/helpers/date-helper.html b/dev/lib/helpers/helpers/date-helper.html index dd5e63ed32..47b104412e 100644 --- a/dev/lib/helpers/helpers/date-helper.html +++ b/dev/lib/helpers/helpers/date-helper.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    日期辅助方法

    createDate

    创建日期时间对象。

    定义:

    ts
    function createDate(dateLike: string | number | Date): Date;

    参数

    • dateLike:日期时间对象或者日期时间字符串或者时间戳。

    返回值Date:日期时间对象。

    addDate

    在一个日期时间对象上增加指定的时间。

    定义:

    ts
    function addDate(dateLike: string | number | Date, value: number, unit: string): Date;

    参数:

    • dateLike:日期时间对象或者日期时间字符串或者时间戳;
    • value:增加的时间值;
    • unit:增加的时间单位,可选值为:yearmonthdayhourminutesecond

    返回值: Date:日期时间对象。

    formatDate

    格式化日期时间对象。

    定义:

    ts
    function formatDate(dateLike: string | number | Date, format = 'yyyy-MM-dd hh:mm', invalidDateValue = ''): string;

    参数:

    • dateLike:日期时间对象或者日期时间字符串或者时间戳;
    • format:格式化字符串,可选值为:yyyyMMddhhmmssSSS
    • invalidDateValue:无效日期时间对象时的返回值。

    返回值: string:格式化后的日期时间字符串。

    所有支持的格式化占位符包括:

      • yyyy,例如:2018,表示四位数字表示的年份
      • yy,例如:18,表示两位数字表示的年份
      • MM,例如:07,表示两位数字表示的月份,不足两位在起始用 0 填充
      • M,例如:10,表示一位或两位数字表示的月份
      • dd,例如:05,表示两位数字表示的日期,不足两位在起始用 0 填充
      • d,例如:5,表示一位或两位数字表示的日期
      • hh,例如:08,表示两位数字表示的小时,不足两位在起始用 0 填充
      • h,例如:8,表示一位或两位数字表示的小时
      • mm,例如:03,表示两位数字表示的分钟,不足两位在起始用 0 填充
      • m,例如:3,表示一位或两位数字表示的分钟
      • ss,例如:05,表示两位数字表示的秒数,不足两位在起始用 0 填充
      • s,例如:5,表示一位或两位数字表示的秒数
      • S,例如:236,表示毫秒数
      • SSS,例如:036,表示毫秒数,不足3位在起始用 0 填充

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/helpers/helpers/string-helper.html b/dev/lib/helpers/helpers/string-helper.html index 964f1de4e1..1c0dc612e0 100644 --- a/dev/lib/helpers/helpers/string-helper.html +++ b/dev/lib/helpers/helpers/string-helper.html @@ -14,8 +14,8 @@ - - + + @@ -25,7 +25,7 @@ /** 通过映射对象的形式格式化字符串。 */ function formatString(str: string, map: Record<string, unknown>): string;

    参数

    • str:字符串;
    • args:格式化参数;
    • map:格式化参数映射对象。

    返回值string:格式化后的字符串。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/helpers/store/index.html b/dev/lib/helpers/store/index.html index 9089813116..f1a8373dd2 100644 --- a/dev/lib/helpers/store/index.html +++ b/dev/lib/helpers/store/index.html @@ -14,8 +14,8 @@ - - + + @@ -41,7 +41,7 @@ store.get('mySecretCode'); // 返回 1 myStore.get('mySecretCode'); // 返回 2 mySessionStore.get('mySecretCode'); // 返回 3

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/lib/index.html b/dev/lib/index.html index bc0817d18c..bcb29a93e2 100644 --- a/dev/lib/index.html +++ b/dev/lib/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/public/zui/icons/fontawesome-license.html b/dev/public/zui/icons/fontawesome-license.html index ccf4e1433b..eca5d51167 100644 --- a/dev/public/zui/icons/fontawesome-license.html +++ b/dev/public/zui/icons/fontawesome-license.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    License

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/themes/index.html b/dev/themes/index.html index 09a638bfa2..3bc22899ab 100644 --- a/dev/themes/index.html +++ b/dev/themes/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/backgrounds/utilities/index.html b/dev/utilities/backgrounds/utilities/index.html index 4498b93833..d0cc6a814d 100644 --- a/dev/utilities/backgrounds/utilities/index.html +++ b/dev/utilities/backgrounds/utilities/index.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    背景色

    效果

    使用工具类 bg-* 给元素添加背景色。

    语义化
    bg-primary
    bg-secondary
    bg-success
    bg-warning
    bg-danger
    bg-important
    bg-special
    主色系列
    bg-primary-50
    bg-primary-100
    bg-primary-200
    bg-primary-300
    bg-primary-400
    bg-primary-500
    bg-primary-600
    bg-primary-700
    bg-primary-800
    bg-primary-900
    bg-primary-950
    次要系列
    bg-secondary-50
    bg-secondary-100
    bg-secondary-200
    bg-secondary-300
    bg-secondary-400
    bg-secondary-500
    bg-secondary-600
    bg-secondary-700
    bg-secondary-800
    bg-secondary-900
    bg-secondary-950
    灰度
    bg-gray-50
    bg-gray-100
    bg-gray-200
    bg-gray-300
    bg-gray-400
    gray
    bg-gray-500 别名: bg-gray
    bg-gray-600
    bg-gray-700
    bg-gray-800
    bg-gray-900
    bg-gray-950
    界面
    bg-white
    纯白
    bg-black
    纯黑
    bg-transparent
    透明
    bg-canvas
    画布
    bg-inverse
    反色
    bg-surface-light
    加重的控件
    bg-surface
    控件
    bg-surface-strong
    轻量的控件
    bg-fore
    前景色作为背景
    bg-focus
    焦点色作为背景
    特殊
    bg-current
    CSS 值 currentColor
    bg-inherit
    CSS 值 inherit
    bg-none
    无背景

    背景色透明度

    使用工具类 bg-opacity-* 给元素设置背景色透明度。

    bg-opacity-0
    透明度:0%
    bg-opacity-5
    透明度:5%
    bg-opacity-10
    透明度:10%
    bg-opacity-20
    透明度:20%
    bg-opacity-25
    透明度:25%
    bg-opacity-30
    透明度:30%
    bg-opacity-40
    透明度:40%
    bg-opacity-50
    透明度:60%
    bg-opacity-60
    透明度:60%
    bg-opacity-70
    透明度:70%
    bg-opacity-75
    透明度:75%
    bg-opacity-80
    透明度:80%
    bg-opacity-90
    透明度:90%
    bg-opacity-95
    透明度:95%
    bg-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-color.html b/dev/utilities/borders/utilities/border-color.html index f8bd160965..6de7e1f06f 100644 --- a/dev/utilities/borders/utilities/border-color.html +++ b/dev/utilities/borders/utilities/border-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框颜色

    效果

    使用工具类 border-* 给元素添加边框颜色。

    默认
    border-light
    border
    border-strong
    语义化
    border-primary
    border-secondary
    border-success
    border-warning
    border-danger
    border-important
    border-special
    灰度
    border-gray-50
    border-gray-100
    border-gray-200
    border-gray-300
    border-gray-400
    gray
    border-gray-500 别名: border-gray
    border-gray-600
    border-gray-700
    border-gray-800
    border-gray-900
    border-gray-950
    界面
    border-white
    纯白
    border-black
    纯黑
    border-transparent
    透明
    border-canvas
    画布
    border-inverse
    反色
    border-surface-light
    加重的控件
    border-surface
    控件
    border-surface-strong
    轻量的控件
    border-fore
    前景色作为边框颜
    border-focus
    焦点色作为边框颜
    特殊
    border-current
    CSS 值 currentColor
    border-inherit
    CSS 值 inherit

    提示

    border 外,其他工具类只设置边框颜色,如果需要启用边框,需要将 border-*border 类一起使用,例如 border border-primary

    边框颜色透明度

    使用工具类 border-opacity-* 给元素添加边框颜色透明度。

    border-opacity-0
    透明度:0%
    border-opacity-5
    透明度:5%
    border-opacity-10
    透明度:10%
    border-opacity-20
    透明度:20%
    border-opacity-25
    透明度:25%
    border-opacity-30
    透明度:30%
    border-opacity-40
    透明度:40%
    border-opacity-50
    透明度:60%
    border-opacity-60
    透明度:60%
    border-opacity-70
    透明度:70%
    border-opacity-75
    透明度:75%
    border-opacity-80
    透明度:80%
    border-opacity-90
    透明度:90%
    border-opacity-95
    透明度:95%
    border-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-radius.html b/dev/utilities/borders/utilities/border-radius.html index cd7e1f8b2a..92556d9571 100644 --- a/dev/utilities/borders/utilities/border-radius.html +++ b/dev/utilities/borders/utilities/border-radius.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框圆角

    效果

    使用 'rounded-* 设置元素边框圆角大小。

    所有边
    rounded-none
    rounded-sm
    rounded
    rounded-lg
    rounded-xl
    rounded-2xl
    rounded-3xl
    rounded-full
    禁用特定边
    rounded-t-none
    rounded-r-none
    rounded-b-none
    rounded-l-none
    rounded-br-none
    rounded-bl-none
    rounded-tr-none
    rounded-tl-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/border-width.html b/dev/utilities/borders/utilities/border-width.html index b51c3816b8..1d7be51f54 100644 --- a/dev/utilities/borders/utilities/border-width.html +++ b/dev/utilities/borders/utilities/border-width.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    边框大小

    效果

    使用 'rounded-* 设置元素边框大小。

    所有边
    border-0
    border
    border-2
    border-4
    上边框
    border-t-0
    border-t
    border-t-2
    border-t-4
    右边框
    border-r-0
    border-r
    border-r-2
    border-r-4
    下边框
    border-b-0
    border-b
    border-b-2
    border-b-4
    左边框
    border-l-0
    border-l
    border-l-2
    border-l-4

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/divider.html b/dev/utilities/borders/utilities/divider.html index 99c7a6834b..56bb3f8322 100644 --- a/dev/utilities/borders/utilities/divider.html +++ b/dev/utilities/borders/utilities/divider.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-color.html b/dev/utilities/borders/utilities/ring-color.html index e5b3cbf96c..42f23cb3b4 100644 --- a/dev/utilities/borders/utilities/ring-color.html +++ b/dev/utilities/borders/utilities/ring-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    环颜色

    效果

    通过 ring-* 来为元素添加通过 box-shadow 实现的环边框颜色。

    作为边框
    ring-border-light
    ring-border
    ring-border-strong
    透明度反色
    ring-light
    ring-gray
    ring-dark
    ring-darker
    ring-darkest
    语义化
    ring-primary
    ring-secondary
    ring-success
    ring-warning
    ring-danger
    ring-important
    ring-special
    灰度
    ring-gray-50
    ring-gray-100
    ring-gray-200
    ring-gray-300
    ring-gray-400
    ring-gray-500
    ring-gray-600
    ring-gray-700
    ring-gray-800
    ring-gray-900
    ring-gray-950
    界面
    ring-white
    纯白
    ring-black
    纯黑
    ring-canvas
    画布
    ring-inverse
    反色
    ring-surface
    控件
    ring-fore
    前景色
    ring-focus
    焦点色
    特殊
    ring-current
    CSS 值 currentColor
    ring-inherit
    CSS 值 inherit

    环颜色透明度

    使用工具类 ring-opacity-* 给元素添加背景色透明度。

    ring-opacity-0
    透明度:0%
    ring-opacity-5
    透明度:5%
    ring-opacity-10
    透明度:10%
    ring-opacity-20
    透明度:20%
    ring-opacity-25
    透明度:25%
    ring-opacity-30
    透明度:30%
    ring-opacity-40
    透明度:40%
    ring-opacity-50
    透明度:60%
    ring-opacity-60
    透明度:60%
    ring-opacity-70
    透明度:70%
    ring-opacity-75
    透明度:75%
    ring-opacity-80
    透明度:80%
    ring-opacity-90
    透明度:90%
    ring-opacity-95
    透明度:95%
    ring-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-offset.html b/dev/utilities/borders/utilities/ring-offset.html index 949e185531..85976c6f46 100644 --- a/dev/utilities/borders/utilities/ring-offset.html +++ b/dev/utilities/borders/utilities/ring-offset.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/borders/utilities/ring-width.html b/dev/utilities/borders/utilities/ring-width.html index 44f61cbbbf..e5f67ee468 100644 --- a/dev/utilities/borders/utilities/ring-width.html +++ b/dev/utilities/borders/utilities/ring-width.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/animation.html b/dev/utilities/effects/utilities/animation.html index aa4da0c76c..f5c89808b2 100644 --- a/dev/utilities/effects/utilities/animation.html +++ b/dev/utilities/effects/utilities/animation.html @@ -14,8 +14,8 @@ - - + + @@ -35,7 +35,7 @@ </div>

    弹跳

    使用 animate-bounce 给元素添加弹跳动画。

    html
    <button type="button" class="btn primary">
       <i class="bounce icon icon-arrow-down"></i> 下载
     </button>

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/filter.html b/dev/utilities/effects/utilities/filter.html index 77da0b1984..b1dd20d631 100644 --- a/dev/utilities/effects/utilities/filter.html +++ b/dev/utilities/effects/utilities/filter.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    CSS 滤镜

    高斯模糊

    通过 blur-* 给图片添加高斯模糊样式。

    原始
    blur-none
    blur-sm
    blur
    blur-md
    blur-lg
    blur-xl

    灰度和反色

    通过 grayscale 将图像转为灰度图像;通过 invert 将图像设置为反色。

    原始
    grayscale
    invert

    形状阴影

    通过 drop-shadow-* 给元素设置形状阴影效果,通常用在图片上。

    原始
    drop-shadow-none
    drop-shadow-sm
    drop-shadow
    drop-shadow-md
    drop-shadow-lg
    drop-shadow-xl
    drop-shadow-2xl

    背景模糊

    通过 backdrop-blur-* 添加覆盖区域模糊样式。

    原始
    backdrop-blur-none
    backdrop-blur-sm
    backdrop-blur
    backdrop-blur-md
    backdrop-blur-lg
    backdrop-blur-xl
    backdrop-blur-2xl
    backdrop-blur-3xl

    禁用滤镜

    通过 filter-none 来禁用之前添加的滤镜效果。

    filter-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/opacity.html b/dev/utilities/effects/utilities/opacity.html index 9b9ef2aee1..e5f17b3e7d 100644 --- a/dev/utilities/effects/utilities/opacity.html +++ b/dev/utilities/effects/utilities/opacity.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/shadow.html b/dev/utilities/effects/utilities/shadow.html index c69427b297..6f5e49bb93 100644 --- a/dev/utilities/effects/utilities/shadow.html +++ b/dev/utilities/effects/utilities/shadow.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/transform.html b/dev/utilities/effects/utilities/transform.html index d08ab65d88..9e1e98b0c7 100644 --- a/dev/utilities/effects/utilities/transform.html +++ b/dev/utilities/effects/utilities/transform.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    变换

    使用 CSS transform 对元素应用变换效果。

    缩放

    通过 scale-* 为元素应用缩放效果。

    原始
    scale-0
    scale-50
    scale-75
    scale-90
    scale-95
    scale-100
    scale-105
    scale-110
    scale-125
    scale-150

    旋转

    通过 rotate-* 为元素应用旋转效果。

    原始
    rotate-0
    rotate-1
    rotate-2
    rotate-3
    rotate-6
    rotate-12
    rotate-45
    rotate-90
    rotate-135
    rotate-180
    rotate-270

    翻转

    添加 flip-* 给元素添加翻转效果。

    原始
    flip-x
    flip-y

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/effects/utilities/transition.html b/dev/utilities/effects/utilities/transition.html index b3d7d27354..673cc58c29 100644 --- a/dev/utilities/effects/utilities/transition.html +++ b/dev/utilities/effects/utilities/transition.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    过渡动画

    过渡属性

    通过 transition-* 为元素应用过渡动画,并制定过渡目标属性。

    transition
    transition
    all
    transition-all
    colors
    transition-colors
    opacity
    transition-opacity
    shadow
    transition-shadow
    transform
    transition-transform

    过渡时间

    通过 duration-* 为元素应用过渡动画时间。

    75ms
    duration-75
    100ms
    duration-100
    200ms
    duration-200
    300ms
    duration-300
    500ms
    duration-500
    1000ms
    duration-1000

    渐隐渐显

    通过 fade-* 来为元素设置渐隐渐显动画效果,默认元素不显示,通过控制添加 in 类让元素渐显。

    默认
    默认
    fade
    从中心显示
    从中心显示
    fade-from-center
    从下方显示
    从下方显示
    fade-from-bottom
    从上方显示
    从上方显示
    fade-from-top
    从左侧显示
    从左侧显示
    fade-from-left
    从右侧显示
    从右侧显示
    fade-from-right

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-content.html b/dev/utilities/flex/utilities/align-content.html index d1a53f556e..fdd8149503 100644 --- a/dev/utilities/flex/utilities/align-content.html +++ b/dev/utilities/flex/utilities/align-content.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    align-content

    使用 content-* 应用CSS align-content 属性设置 Flex 容器中多行子元素沿交叉轴的对齐方式。

    效果展示

    content-center

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-start

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-end

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-between

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-around

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    content-evenly

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-items.html b/dev/utilities/flex/utilities/align-items.html index 58a4c07ef6..d99bf96fa2 100644 --- a/dev/utilities/flex/utilities/align-items.html +++ b/dev/utilities/flex/utilities/align-items.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/align-self.html b/dev/utilities/flex/utilities/align-self.html index e74c9ceecd..df849fafaa 100644 --- a/dev/utilities/flex/utilities/align-self.html +++ b/dev/utilities/flex/utilities/align-self.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    align-self

    使用 self-* 应用 CSS align-self 属性设置当前元素在 Grid 或 Flex 容器中的交叉轴方向上的对齐方式。

    self-auto

    self-auto
    default
    default
    default
    default

    self-start

    self-start
    default
    default
    default
    default

    self-end

    self-end
    default
    default
    default
    default

    self-center

    self-center
    default
    default
    default
    default

    self-stretch

    self-stretch
    default
    default
    default
    default

    self-baseline

    self-baseline
    default
    default
    default
    default

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/basis.html b/dev/utilities/flex/utilities/basis.html index df6d9028fd..af234241b8 100644 --- a/dev/utilities/flex/utilities/basis.html +++ b/dev/utilities/flex/utilities/basis.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/direction.html b/dev/utilities/flex/utilities/direction.html index cf8eab8925..da6ac9e6f9 100644 --- a/dev/utilities/flex/utilities/direction.html +++ b/dev/utilities/flex/utilities/direction.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/flex.html b/dev/utilities/flex/utilities/flex.html index 5221710a83..99c05c1f83 100644 --- a/dev/utilities/flex/utilities/flex.html +++ b/dev/utilities/flex/utilities/flex.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    flex

    效果

    使用 flex-* 应用CSS flex 属性设置当前元素在 Grid 或 Flex 容器中的伸缩方式。

    flex-auto

    24 × 8
    24 × 8
    24 × 8

    flex-1

    24 × 8
    24 × 8
    24 × 8

    flex-initial

    24 × 8
    24 × 8
    24 × 8

    flex-none

    24 × 8
    24 × 8
    24 × 8

    混合使用

    flex-auto
    flex-1
    flex-initial
    flex-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/gap.html b/dev/utilities/flex/utilities/gap.html index ec132bfc1a..a5979c7812 100644 --- a/dev/utilities/flex/utilities/gap.html +++ b/dev/utilities/flex/utilities/gap.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    gap

    效果

    使用 gap-* 应用CSS属性 gap 设置 Flex 容器中元素间距。

    gap-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-3

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-x-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    gap-y-8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/grow.html b/dev/utilities/flex/utilities/grow.html index 2c2027ccaf..a20d4b0afb 100644 --- a/dev/utilities/flex/utilities/grow.html +++ b/dev/utilities/flex/utilities/grow.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/justify-content.html b/dev/utilities/flex/utilities/justify-content.html index 6a378c9512..ff242cf109 100644 --- a/dev/utilities/flex/utilities/justify-content.html +++ b/dev/utilities/flex/utilities/justify-content.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/order.html b/dev/utilities/flex/utilities/order.html index 35cb67887e..3d5bf78068 100644 --- a/dev/utilities/flex/utilities/order.html +++ b/dev/utilities/flex/utilities/order.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    order

    效果

    使用 order-* 应用CSS属性 order 设置当前元素在 Flex 容器中的排列顺序。

    1
    order-12
    2
    order-11
    3
    order-10
    4
    order-9
    5
    order-8
    6
    order-7
    7
    order-6
    8
    order-5
    9
    order-4
    10
    order-3
    11
    order-2
    12
    order-1

    使用 order-firstorder-lastorder-none 也可以改变 Flex 子元素排列顺序。

    0
    order-last
    1
    order-first
    2
    order-none

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/shrink.html b/dev/utilities/flex/utilities/shrink.html index fca3113c99..21281120df 100644 --- a/dev/utilities/flex/utilities/shrink.html +++ b/dev/utilities/flex/utilities/shrink.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/flex/utilities/wrap.html b/dev/utilities/flex/utilities/wrap.html index e1c4bcb340..f2321db9cf 100644 --- a/dev/utilities/flex/utilities/wrap.html +++ b/dev/utilities/flex/utilities/wrap.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/index.html b/dev/utilities/index.html index 9b89d1215e..3e5cf21425 100644 --- a/dev/utilities/index.html +++ b/dev/utilities/index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/cursor.html b/dev/utilities/interactivity/utilities/cursor.html index 9ae4eb2e4d..aedee337dc 100644 --- a/dev/utilities/interactivity/utilities/cursor.html +++ b/dev/utilities/interactivity/utilities/cursor.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    光标

    效果

    通过 cursor-* 类可以改变光标的样式。

    cursor-auto
    cursor-auto
    cursor-default
    cursor-default
    cursor-pointer
    cursor-pointer
    cursor-wait
    cursor-wait
    cursor-text
    cursor-text
    cursor-move
    cursor-move
    cursor-help
    cursor-help
    cursor-not-allowed
    cursor-not-allowed

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/disabled.html b/dev/utilities/interactivity/utilities/disabled.html index 7ad16872c5..c3a161cdbc 100644 --- a/dev/utilities/interactivity/utilities/disabled.html +++ b/dev/utilities/interactivity/utilities/disabled.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    禁用

    效果

    使用 disabled 类设置元素为禁用,禁用的元素会以半透明的形式显示,并强制使用灰度显示。

    注意

    禁用元素仍然响应鼠标事件,如果需要完全禁用鼠标事件,需要添加 pointer-events-none,如果是表单元素或按钮则可以添加 disabled="disabled" 属性实现完全禁用。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/loading.html b/dev/utilities/interactivity/utilities/loading.html index 700fb67ab1..5aece976a6 100644 --- a/dev/utilities/interactivity/utilities/loading.html +++ b/dev/utilities/interactivity/utilities/loading.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/pointer-events.html b/dev/utilities/interactivity/utilities/pointer-events.html index d9f1bda7a4..c526f032ae 100644 --- a/dev/utilities/interactivity/utilities/pointer-events.html +++ b/dev/utilities/interactivity/utilities/pointer-events.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/scroll.html b/dev/utilities/interactivity/utilities/scroll.html index 793540cf5f..dcdad34dfd 100644 --- a/dev/utilities/interactivity/utilities/scroll.html +++ b/dev/utilities/interactivity/utilities/scroll.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    滚动

    平滑滚动

    使用 scroll-smooth 工具类来为元素应用 scroll-behavior: smooth 属性,指定其进行平滑滚动。

    1
    2
    3
    4
    滚动到:

    立即滚动

    使用 scroll-auto 工具类来为元素应用 scroll-behavior: auto 属性,指定其进行立即滚动。

    1
    2
    3
    4
    滚动到:

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/state.html b/dev/utilities/interactivity/utilities/state.html index 69062a44a7..9ce84a52da 100644 --- a/dev/utilities/interactivity/utilities/state.html +++ b/dev/utilities/interactivity/utilities/state.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    状态响应

    效果

    通过为元素添加工具类 state 让按钮响应用户的鼠标交互,包括鼠标悬停、鼠标按下、获得焦点时拥有不同的样式。

    提示

    在按钮(.btn)和导航中的链接(.item > a )已经默认应用了 state 工具类,无需再次添加。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/interactivity/utilities/user-select.html b/dev/utilities/interactivity/utilities/user-select.html index c678f7eab9..7e2e24d17c 100644 --- a/dev/utilities/interactivity/utilities/user-select.html +++ b/dev/utilities/interactivity/utilities/user-select.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本选择

    用于控制用户能否选中文本的工具类。

    效果

    通过工具类 select-* 来控制用户能否选中元素中的文本。

    禁止选择文本
    select-none
    允许选择文本
    select-text
    点击自动选择所有文本
    select-all
    浏览器默认行为
    select-auto

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/aspect-ratio.html b/dev/utilities/layout/utilities/aspect-ratio.html index 282a1524ba..4e6cccf8a2 100644 --- a/dev/utilities/layout/utilities/aspect-ratio.html +++ b/dev/utilities/layout/utilities/aspect-ratio.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/container.html b/dev/utilities/layout/utilities/container.html index 941efe41b0..15ad60f9af 100644 --- a/dev/utilities/layout/utilities/container.html +++ b/dev/utilities/layout/utilities/container.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    容器

    定义

    使用 container 类将元素宽度限制为当前屏幕断点,具体规则如下:

    屏幕断点CSS 属性
    默认width: 100%;
    @media (min-width: --screen-sm)max-width: --screen-sm;
    @media (min-width: --screen-md)max-width: --screen-md;
    @media (min-width: --screen-lg)max-width: --screen-lg;
    @media (min-width: --screen-xl)max-width: --screen-xl;
    @media (min-width: --screen-2xl)max-width: --screen-2xl;

    提示

    .container 还会为元素添加 margin-left: auto; margin-right: auto;,使得元素默认居中显示。

    用法

    .container

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/display.html b/dev/utilities/layout/utilities/display.html index be1b14b855..efb351d3f2 100644 --- a/dev/utilities/layout/utilities/display.html +++ b/dev/utilities/layout/utilities/display.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    显示类型

    定义

    在 ZUI 中提供了各种工具类来设置 CSS display 属性,主要包括:

    工具类属性
    blockdisplay: block;
    inline-blockdisplay: inline-block;
    inlinedisplay: inline;
    flexdisplay: flex;
    inline-flexdisplay: inline-flex;
    tabledisplay: table;
    table-celldisplay: table-cell;
    table-rowdisplay: table-row;
    list-itemdisplay: list-item;
    hiddendisplay: hidden;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/floats.html b/dev/utilities/layout/utilities/floats.html index 4b1efe9b90..b53426be7a 100644 --- a/dev/utilities/layout/utilities/floats.html +++ b/dev/utilities/layout/utilities/floats.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    浮动

    定义

    用于设置元素浮动或清除浮动影响的工具类。

    工具类属性
    pull-rightfloat: right;
    pull-leftfloat: left;
    clearfix.clearfix::after {content: ""; display: block; clear: both;}

    提示

    浮动应当仅适用于实现文字环绕效果,布局请使用 Flex 工具类

    效果展示

    向右浮动

    使用工具类 pull-right 将一个元素浮动到其容器的右边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    向左浮动

    使用工具类 pull-left 将一个元素浮动到其容器的左边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    MIT License (MIT)

    - +
    Skip to content

    浮动

    定义

    用于设置元素浮动或清除浮动影响的工具类。

    工具类属性
    pull-rightfloat: right;
    pull-leftfloat: left;
    clearfix.clearfix::after {content: ""; display: block; clear: both;}

    提示

    浮动应当仅适用于实现文字环绕效果,布局请使用 Flex 工具类

    效果展示

    向右浮动

    使用工具类 pull-right 将一个元素浮动到其容器的右边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    向左浮动

    使用工具类 pull-left 将一个元素浮动到其容器的左边。

    So I started to walk into the water. I won't lie to you boys, I was terrified. But I pressed on, and as I made my way past the breakers a strange calm came over me. I don't know if it was divine intervention or the kinship of all living things but I tell you Jerry at that moment, I was a marine biologist.

    月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/object-fit.html b/dev/utilities/layout/utilities/object-fit.html index ed60dfd919..11f4428f57 100644 --- a/dev/utilities/layout/utilities/object-fit.html +++ b/dev/utilities/layout/utilities/object-fit.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    内容适配

    定义

    元素的内容应该如何去适应指定容器的高度与宽度。

    工具类属性
    object-containobject-fit: contain;
    object-coverobject-fit: cover;
    object-fillobject-fit: fill;
    object-noneobject-fit: none;
    object-scale-downobject-fit: scale-down;

    效果展示

    包含

    使用工具类 object-contain 调整元素内容的大小,使其保持在容器内。

    覆盖

    使用工具类 object-cover 调整元素内容的大小以覆盖其容器。

    充满

    使用工具类 object-fill 拉伸元素的内容以适应其容器。

    使用工具类 object-none 以原始大小显示元素的内容,忽略容器大小。

    缩小

    以原始大小显示元素的内容,但必要时使用 object-scale-down 将其缩小以适应其容器。

    MIT License (MIT)

    - +
    Skip to content

    内容适配

    定义

    元素的内容应该如何去适应指定容器的高度与宽度。

    工具类属性
    object-containobject-fit: contain;
    object-coverobject-fit: cover;
    object-fillobject-fit: fill;
    object-noneobject-fit: none;
    object-scale-downobject-fit: scale-down;

    效果展示

    包含

    使用工具类 object-contain 调整元素内容的大小,使其保持在容器内。

    覆盖

    使用工具类 object-cover 调整元素内容的大小以覆盖其容器。

    充满

    使用工具类 object-fill 拉伸元素的内容以适应其容器。

    使用工具类 object-none 以原始大小显示元素的内容,忽略容器大小。

    缩小

    以原始大小显示元素的内容,但必要时使用 object-scale-down 将其缩小以适应其容器。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/overflow.html b/dev/utilities/layout/utilities/overflow.html index 8946a47dfb..bd62b245f4 100644 --- a/dev/utilities/layout/utilities/overflow.html +++ b/dev/utilities/layout/utilities/overflow.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    溢出

    定义

    用于控制元素如何处理超出容器的内容的工具类。

    工具类属性
    overflow-autooverflow: auto;
    overflow-hiddenoverflow: hidden;
    overflow-cliptext-overflow: clip;
    overflow-visibleoverflow: visible;
    overflow-scrolloverflow: scroll;
    overflow-x-autooverflow-x: auto;
    overflow-y-autooverflow-y: auto;
    overflow-x-hiddenoverflow-x: hidden;
    overflow-y-hiddenoverflow-y: hidden;
    overflow-x-visibleoverflow-x: visible;
    overflow-y-visibleoverflow-y: visible;
    overflow-x-scrolloverflow-x: scroll;
    overflow-y-scrolloverflow-y: scroll;

    效果展示

    自动

    使用工具类 overflow-auto 在一个元素的内容溢出该元素的边界时为其添加滚动条。不像 overflow-scroll 总是显示滚动条,这个工具类只在需要滚动时才会显示。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    隐藏

    使用工具类 overflow-hidden 来剪切元素中任何溢出该元素边界的内容。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    可见

    使用工具类 overflow-visible 来防止元素内的内容被剪切。请注意,任何溢出元素边界的内容都将是可见的。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    需要时水平滚动

    如果需要,使用工具类 overflow-x-auto 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    需要时垂直滚动

    如果需要,使用工具类 overflow-y-auto 来允许垂直滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终水平滚动

    如果需要,使用工具类 overflow-x-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终垂直滚动

    如果需要,使用工具类 overflow-y-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    在所有方向上滚动

    如果需要,使用工具类 overflow-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    MIT License (MIT)

    - +
    Skip to content

    溢出

    定义

    用于控制元素如何处理超出容器的内容的工具类。

    工具类属性
    overflow-autooverflow: auto;
    overflow-hiddenoverflow: hidden;
    overflow-cliptext-overflow: clip;
    overflow-visibleoverflow: visible;
    overflow-scrolloverflow: scroll;
    overflow-x-autooverflow-x: auto;
    overflow-y-autooverflow-y: auto;
    overflow-x-hiddenoverflow-x: hidden;
    overflow-y-hiddenoverflow-y: hidden;
    overflow-x-visibleoverflow-x: visible;
    overflow-y-visibleoverflow-y: visible;
    overflow-x-scrolloverflow-x: scroll;
    overflow-y-scrolloverflow-y: scroll;

    效果展示

    自动

    使用工具类 overflow-auto 在一个元素的内容溢出该元素的边界时为其添加滚动条。不像 overflow-scroll 总是显示滚动条,这个工具类只在需要滚动时才会显示。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    隐藏

    使用工具类 overflow-hidden 来剪切元素中任何溢出该元素边界的内容。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    可见

    使用工具类 overflow-visible 来防止元素内的内容被剪切。请注意,任何溢出元素边界的内容都将是可见的。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。
    小楼昨夜又东风,故国不堪回首月明中。
    雕栏玉砌应犹在,只是朱颜改。
    问君能有几多愁?恰似一江春水向东流

    需要时水平滚动

    如果需要,使用工具类 overflow-x-auto 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    需要时垂直滚动

    如果需要,使用工具类 overflow-y-auto 来允许垂直滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终水平滚动

    如果需要,使用工具类 overflow-x-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    始终垂直滚动

    如果需要,使用工具类 overflow-y-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    在所有方向上滚动

    如果需要,使用工具类 overflow-scroll 来允许水平滚动。

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    虞美人·春花秋月何时了

    五代·李煜

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/position.html b/dev/utilities/layout/utilities/position.html index c411648a56..59c7ecb031 100644 --- a/dev/utilities/layout/utilities/position.html +++ b/dev/utilities/layout/utilities/position.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    定位

    定义

    用于控制元素在DOM中的位置的工具类。

    工具类属性
    staticposition: static;
    fixedposition: fixed;
    absoluteposition: absolute;
    relativeposition: relative;
    stickyposition: sticky;

    使用方法

    staticabsolute

    使用 static 根据常规的文档流来定位元素,浏览器默认 position 取值就是 static。任何偏移都将被忽略,而且该元素不会作为绝对定位的子元素的位置参考。

    Static 父元素

    Absolute 子元素

    relativeabsolute

    使用 relative 根据常规的文档流来定位元素。偏移量是相对于元素的正常位置计算的,并且该元素将作为绝对定位的子元素的位置参考。

    使用 absolute 将一个元素定位在文档常规流之外,使相邻元素的行为就像该元素不存在一样。偏移量是相对于最近的位置不是 static 的父元素计算的,而且该元素将作为其他绝对定位的子元素的位置参考。

    Relative 父元素

    Absolute 子元素

    sticky

    sticky 元素根据正常文档流进行定位,然后相对它的最近滚动祖先和 containing block,包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。

    黄鹤楼送孟浩然之广陵

    故人西辞黄鹤楼,

    烟花三月下扬州。

    孤帆远影碧空尽,

    唯见长江天际流。

    闻王昌龄左迁龙标遥有此寄

    杨花落尽子规啼,

    闻道龙标过五溪。

    我寄愁心与明月,

    随君直到夜郎西。

    宣州谢朓楼饯别校书叔云

    弃我去者,昨日之日不可留;

    乱我心者,今日之日多烦忧。

    长风万里送秋雁,对此可以酣高楼。

    蓬莱文章建安骨,中间小谢又清发。

    俱怀逸兴壮思飞,欲上青天揽明月。

    抽刀断水水更流,举杯消愁愁更愁。

    人生在世不称意,明朝散发弄扁舟。

    fixed

    使用 fixed 来定位一个元素相对于浏览器窗视口的位置。偏移量是相对于视口计算的,且该元素将作为绝对定位的子元素的位置参考。

    MIT License (MIT)

    - +
    Skip to content

    定位

    定义

    用于控制元素在DOM中的位置的工具类。

    工具类属性
    staticposition: static;
    fixedposition: fixed;
    absoluteposition: absolute;
    relativeposition: relative;
    stickyposition: sticky;

    使用方法

    staticabsolute

    使用 static 根据常规的文档流来定位元素,浏览器默认 position 取值就是 static。任何偏移都将被忽略,而且该元素不会作为绝对定位的子元素的位置参考。

    Static 父元素

    Absolute 子元素

    relativeabsolute

    使用 relative 根据常规的文档流来定位元素。偏移量是相对于元素的正常位置计算的,并且该元素将作为绝对定位的子元素的位置参考。

    使用 absolute 将一个元素定位在文档常规流之外,使相邻元素的行为就像该元素不存在一样。偏移量是相对于最近的位置不是 static 的父元素计算的,而且该元素将作为其他绝对定位的子元素的位置参考。

    Relative 父元素

    Absolute 子元素

    sticky

    sticky 元素根据正常文档流进行定位,然后相对它的最近滚动祖先和 containing block,包括 table-related 元素,基于 top、right、bottom 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。

    黄鹤楼送孟浩然之广陵

    故人西辞黄鹤楼,

    烟花三月下扬州。

    孤帆远影碧空尽,

    唯见长江天际流。

    闻王昌龄左迁龙标遥有此寄

    杨花落尽子规啼,

    闻道龙标过五溪。

    我寄愁心与明月,

    随君直到夜郎西。

    宣州谢朓楼饯别校书叔云

    弃我去者,昨日之日不可留;

    乱我心者,今日之日多烦忧。

    长风万里送秋雁,对此可以酣高楼。

    蓬莱文章建安骨,中间小谢又清发。

    俱怀逸兴壮思飞,欲上青天揽明月。

    抽刀断水水更流,举杯消愁愁更愁。

    人生在世不称意,明朝散发弄扁舟。

    fixed

    使用 fixed 来定位一个元素相对于浏览器窗视口的位置。偏移量是相对于视口计算的,且该元素将作为绝对定位的子元素的位置参考。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/top-right-bottom-left.html b/dev/utilities/layout/utilities/top-right-bottom-left.html index 24dd1f52a9..4c305f5e92 100644 --- a/dev/utilities/layout/utilities/top-right-bottom-left.html +++ b/dev/utilities/layout/utilities/top-right-bottom-left.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    上下左右

    定义

    用于控制定位元素的位置的工具类。

    工具类属性
    inset-0top: 0px; right: 0px; bottom: 0px; left: 0px;
    inset-autotop: auto; right: auto; bottom: auto; left: auto;
    inset-x-0left: 0px; right: 0px;
    inset-y-0top: 0px; bottom: 0px;
    top-0top: 0px;
    right-0right: 0px;
    bottom-0bottom: 0px;
    left-0left: 0px;
    top-pxtop: 1px;
    right-pxright: 1px;
    bottom-pxbottom: 1px;
    left-pxleft: 1px;
    top-0.5top: 2px;
    right-0.5right: 2px;
    bottom-0.5bottom: 2px;
    left-0.5left: 2px;
    top-1top: 4px;
    right-1right: 4px;
    bottom-1bottom: 4px;
    left-1left: 4px;
    top-1.5top: 6px;
    right-1.5right: 6px;
    bottom-1.5bottom: 6px;
    left-1.5left: 6px;
    top-2top: 8px;
    right-2right: 8px;
    bottom-2bottom: 8px;
    left-2left: 8px;
    top-fulltop: 100%;
    right-fullright: 100%;
    bottom-fullbottom: 100%;
    left-fullleft: 100%;
    top-autotop: auto;
    right-autoright: auto;
    bottom-autobottom: auto;
    left-autoleft: auto;

    效果展示

    1
    2
    3
    4
    5
    6
    7
    8

    MIT License (MIT)

    - +
    Skip to content

    上下左右

    定义

    用于控制定位元素的位置的工具类。

    工具类属性
    inset-0top: 0px; right: 0px; bottom: 0px; left: 0px;
    inset-autotop: auto; right: auto; bottom: auto; left: auto;
    inset-x-0left: 0px; right: 0px;
    inset-y-0top: 0px; bottom: 0px;
    top-0top: 0px;
    right-0right: 0px;
    bottom-0bottom: 0px;
    left-0left: 0px;
    top-pxtop: 1px;
    right-pxright: 1px;
    bottom-pxbottom: 1px;
    left-pxleft: 1px;
    top-0.5top: 2px;
    right-0.5right: 2px;
    bottom-0.5bottom: 2px;
    left-0.5left: 2px;
    top-1top: 4px;
    right-1right: 4px;
    bottom-1bottom: 4px;
    left-1left: 4px;
    top-1.5top: 6px;
    right-1.5right: 6px;
    bottom-1.5bottom: 6px;
    left-1.5left: 6px;
    top-2top: 8px;
    right-2right: 8px;
    bottom-2bottom: 8px;
    left-2left: 8px;
    top-fulltop: 100%;
    right-fullright: 100%;
    bottom-fullbottom: 100%;
    left-fullleft: 100%;
    top-autotop: auto;
    right-autoright: auto;
    bottom-autobottom: auto;
    left-autoleft: auto;

    效果展示

    1
    2
    3
    4
    5
    6
    7
    8

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/visibility.html b/dev/utilities/layout/utilities/visibility.html index 17b68d32fc..31982fc2d8 100644 --- a/dev/utilities/layout/utilities/visibility.html +++ b/dev/utilities/layout/utilities/visibility.html @@ -14,14 +14,14 @@ - - + + - - + + \ No newline at end of file diff --git a/dev/utilities/layout/utilities/z-index.html b/dev/utilities/layout/utilities/z-index.html index e0d7924390..d45e64274a 100644 --- a/dev/utilities/layout/utilities/z-index.html +++ b/dev/utilities/layout/utilities/z-index.html @@ -14,14 +14,14 @@ - - + + - + \ No newline at end of file diff --git a/dev/utilities/sizing/utilities/height.html b/dev/utilities/sizing/utilities/height.html index b5574d7968..b21a9a36c4 100644 --- a/dev/utilities/sizing/utilities/height.html +++ b/dev/utilities/sizing/utilities/height.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    高度

    固定值

    通过工具类 h-* 设置高度为固定值,包含如下工具类:

    工具类CSS 属性
    h-0height: 0px;
    h-pxheight: 1px;
    h-0.5height: 2px;
    h-1height: 4px;
    h-1.5height: 6px;
    h-2height: 8px;
    h-2.5height: 10px;
    h-3height: 12px;
    h-3.5height: 14px;
    h-4height: 16px;
    h-5height: 20px;
    h-6height: 24px;
    h-7height: 28px;
    h-8height: 32px;
    h-9height: 36px;
    h-10height: 40px;
    h-11height: 44px;
    h-12height: 48px;
    h-14height: 56px;
    h-16height: 64px;
    h-20height: 80px;
    h-24height: 96px;
    h-28height: 112px;
    h-32height: 128px;
    h-36height: 144px;
    h-40height: 160px;
    h-44height: 176px;
    h-48height: 192px;
    h-52height: 208px;
    h-56height: 224px;
    h-60height: 240px;
    h-64height: 256px;
    h-72height: 288px;
    h-80height: 320px;
    h-96height: 384px;

    百分比

    通过工具类 h-* 设置高度为百分比,包含如下工具类:

    工具类CSS 属性
    h-1/2height: 50%;
    h-1/3height: 33.3333333%;
    h-2/3height: 66.6666667%;
    h-1/4height: 25%;
    h-2/4height: 50%;
    h-3/4height: 75%;
    h-1/5height: 20%;
    h-2/5height: 40%;
    h-3/5height: 60%;
    h-4/5height: 80%;
    h-1/6height: 16.6666667%;
    h-2/6height: 33.3333333%;
    h-3/6height: 50%;
    h-4/6height: 66.6666667%;
    h-5/6height: 83.3333333%;
    h-fullheight: 100%;

    特殊值

    通过工具类 h-* 设置高度为特殊值,包含如下工具类:

    工具类CSS 属性
    h-autoheight: auto;
    h-screenheight: 100vh;
    h-fitheight: fit-content;
    h-minheight: min-content;
    h-maxheight: max-content;

    限制最大高度

    通过工具类 max-h-* 设置限制元素最大高度,包含如下工具类:

    工具类CSS 属性
    max-h-0max-height: 0px;
    max-h-fullmax-height: 100%;
    max-h-screenmax-height: 100vh;
    max-h-nonemax-height: none;
    max-h-minmax-height: min-content;
    max-h-maxmax-height: max-content;
    max-h-fitmax-height: fit-content;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/sizing/utilities/width.html b/dev/utilities/sizing/utilities/width.html index 4c9a367977..dc2a337edc 100644 --- a/dev/utilities/sizing/utilities/width.html +++ b/dev/utilities/sizing/utilities/width.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    宽度

    固定值

    通过工具类 w-* 设置宽度为固定值,包含如下工具类:

    工具类CSS 属性
    w-0width: 0px;
    w-pxwidth: 1px;
    w-0.5width: 2px;
    w-1width: 4px;
    w-1.5width: 6px;
    w-2width: 8px;
    w-2.5width: 10px;
    w-3width: 12px;
    w-3.5width: 14px;
    w-4width: 16px;
    w-5width: 20px;
    w-6width: 24px;
    w-7width: 28px;
    w-8width: 32px;
    w-9width: 36px;
    w-10width: 40px;
    w-11width: 44px;
    w-12width: 48px;
    w-14width: 56px;
    w-16width: 64px;
    w-20width: 80px;
    w-24width: 96px;
    w-28width: 112px;
    w-32width: 128px;
    w-36width: 144px;
    w-40width: 160px;
    w-44width: 176px;
    w-48width: 192px;
    w-52width: 208px;
    w-56width: 224px;
    w-60width: 240px;
    w-64width: 256px;
    w-72width: 288px;
    w-80width: 320px;
    w-96width: 384px;

    百分比

    通过工具类 w-* 设置宽度为百分比,包含如下工具类:

    工具类CSS 属性
    w-1/2width: 50%;
    w-1/3width: 33.3333333%;
    w-2/3width: 66.6666667%;
    w-1/4width: 25%;
    w-2/4width: 50%;
    w-3/4width: 75%;
    w-1/5width: 20%;
    w-2/5width: 40%;
    w-3/5width: 60%;
    w-4/5width: 80%;
    w-1/6width: 16.6666667%;
    w-2/6width: 33.3333333%;
    w-3/6width: 50%;
    w-4/6width: 66.6666667%;
    w-5/6width: 83.3333333%;
    w-fullwidth: 100%;

    特殊值

    通过工具类 w-* 设置宽度为特殊值,包含如下工具类:

    工具类CSS 属性
    w-autowidth: auto;
    w-screenwidth: 100vw;
    w-fitwidth: fit-content;
    w-minwidth: min-content;
    w-maxwidth: max-content;

    限制最大宽度

    通过工具类 max-w-* 设置限制元素最大宽度,包含如下工具类:

    工具类CSS 属性
    max-w-0max-width: 0px;
    max-w-fullmax-width: 100%;
    max-w-screenmax-width: 100vw;
    max-w-nonemax-width: none;
    max-w-minmax-width: min-content;
    max-w-maxmax-width: max-content;
    max-w-fitmax-width: fit-content;

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/ghost.html b/dev/utilities/skin/utilities/ghost.html index 1bc6dcf5ff..51c9a8a97e 100644 --- a/dev/utilities/skin/utilities/ghost.html +++ b/dev/utilities/skin/utilities/ghost.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    透明

    用于快速为元素或组件实现特定文字颜色带透明背景外观。

    效果

    默认
    ghost
    语义化
    primary-ghost
    secondary-ghost
    success-ghost
    warning-ghost
    danger-ghost
    important-ghost
    special-ghost

    示例

    Ghost Element

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/outline.html b/dev/utilities/skin/utilities/outline.html index 83ec4e8068..9a3bb67ef4 100644 --- a/dev/utilities/skin/utilities/outline.html +++ b/dev/utilities/skin/utilities/outline.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    轮廓

    用于快速为元素或组件实现特定颜色的轮廓描边外观。

    效果

    默认
    outline
    语义化
    primary-outline
    secondary-outline
    success-outline
    warning-outline
    danger-outline
    important-outline
    special-outline
    灰度
    gray-outline

    提示

    轮廓的描边效果使用 box-shadow 实现。

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/pale.html b/dev/utilities/skin/utilities/pale.html index e58d2fe524..e70bec02eb 100644 --- a/dev/utilities/skin/utilities/pale.html +++ b/dev/utilities/skin/utilities/pale.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    浅色

    用于快速为元素或组件实现特定颜色的浅色填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary-pale
    secondary-pale
    success-pale
    warning-pale
    danger-pale
    important-pale
    special-pale
    灰度
    gray-50-pale
    gray-100-pale
    gray-200-pale
    gray-300-pale
    gray-400-pale
    gray-pale
    gray-500-pale 别名: gray-pale
    gray-600-pale
    gray-700-pale
    gray-800-pale
    gray-900-pale
    gray-950-pale

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/solid.html b/dev/utilities/skin/utilities/solid.html index 14d791666d..9d5c0f198d 100644 --- a/dev/utilities/skin/utilities/solid.html +++ b/dev/utilities/skin/utilities/solid.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    实心

    用于快速为元素或组件实现特定颜色的实心填充外观,包含语义化和灰度工具类。

    效果

    语义化
    primary
    secondary
    success
    warning
    danger
    important
    special
    灰度
    gray-50
    gray-100
    gray-200
    gray-300
    gray-400
    gray
    gray-500 别名: gray
    gray-600
    gray-700
    gray-800
    gray-900
    gray-950

    示例

    Success Label
    Gray Element

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/skin/utilities/surface.html b/dev/utilities/skin/utilities/surface.html index 495b530052..b9d78ac4f4 100644 --- a/dev/utilities/skin/utilities/surface.html +++ b/dev/utilities/skin/utilities/surface.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    界面

    用于快速为元素或组件实现特定功能界面颜色外观。

    效果

    white
    纯白
    black
    纯黑
    transparent
    透明
    canvas
    画布
    inverse
    反色
    surface-light
    加重的控件
    surface
    控件
    surface-strong
    轻量的控件

    示例

    Surface Element

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/margin.html b/dev/utilities/spacing/utilities/margin.html index 9da330da45..5cce966792 100644 --- a/dev/utilities/spacing/utilities/margin.html +++ b/dev/utilities/spacing/utilities/margin.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    外边距

    定义

    通过 m-* 工具类设置外边距,可用的工具类包括:

    工具类CSS 属性
    m-automargin: auto;
    mx-automargin-left: auto; margin-right: auto;
    my-automargin-top: auto; margin-bottom: auto;
    mt-automargin-top: auto;
    mr-automargin-right: auto;
    mb-automargin-bottom: auto;
    ml-automargin-left: auto;
    m-0margin: 0px;
    m-pxmargin: 1px;
    m-0.5margin: 2px;
    m-1margin: 4px;
    m-1.5margin: 6px;
    m-2margin: 8px;
    m-2.5margin: 10px;
    m-3margin: 12px;
    m-3.5margin: 14px;
    m-4margin: 16px;
    m-5margin: 20px;
    m-6margin: 24px;
    m-7margin: 28px;
    m-8margin: 32px;
    m-9margin: 36px;
    m-10margin: 40px;
    mx-0margin-left: 0px; margin-right: 0px;
    my-0margin-top: 0px; margin-bottom: 0px;
    mt-0margin-top: 0px;
    mr-0margin-right: 0px;
    mb-0margin-bottom: 0px;
    ml-0margin-left: 0px;
    mx-pxmargin-left: 1px; margin-right: 1px;
    my-pxmargin-top: 1px; margin-bottom: 1px;
    mt-pxmargin-top: 1px;
    mr-pxmargin-right: 1px;
    mb-pxmargin-bottom: 1px;
    ml-pxmargin-left: 1px;
    mx-0.5margin-left: 2px; margin-right: 2px;
    my-0.5margin-top: 2px; margin-bottom: 2px;
    mt-0.5margin-top: 2px;
    mr-0.5margin-right: 2px;
    mb-0.5margin-bottom: 2px;
    ml-0.5margin-left: 2px;
    mx-1margin-left: 4px; margin-right: 4px;
    my-1margin-top: 4px; margin-bottom: 4px;
    mt-1margin-top: 4px;
    mr-1margin-right: 4px;
    mb-1margin-bottom: 4px;
    ml-1margin-left: 4px;
    mx-1.5margin-left: 6px; margin-right: 6px;
    my-1.5margin-top: 6px; margin-bottom: 6px;
    mt-1.5margin-top: 6px;
    mr-1.5margin-right: 6px;
    mb-1.5margin-bottom: 6px;
    ml-1.5margin-left: 6px;
    mx-2margin-left: 8px; margin-right: 8px;
    my-2margin-top: 8px; margin-bottom: 8px;
    mt-2margin-top: 8px;
    mr-2margin-right: 8px;
    mb-2margin-bottom: 8px;
    ml-2margin-left: 8px;
    mx-2.5margin-left: 10px; margin-right: 10px;
    my-2.5margin-top: 10px; margin-bottom: 10px;
    mt-2.5margin-top: 10px;
    mr-2.5margin-right: 10px;
    mb-2.5margin-bottom: 10px;
    ml-2.5margin-left: 10px;
    mx-3margin-left: 12px; margin-right: 12px;
    my-3margin-top: 12px; margin-bottom: 12px;
    mt-3margin-top: 12px;
    mr-3margin-right: 12px;
    mb-3margin-bottom: 12px;
    ml-3margin-left: 12px;
    mx-3.5margin-left: 14px; margin-right: 14px;
    my-3.5margin-top: 14px; margin-bottom: 14px;
    mt-3.5margin-top: 14px;
    mr-3.5margin-right: 14px;
    mb-3.5margin-bottom: 14px;
    ml-3.5margin-left: 14px;
    mx-4margin-left: 16px; margin-right: 16px;
    my-4margin-top: 16px; margin-bottom: 16px;
    mt-4margin-top: 16px;
    mr-4margin-right: 16px;
    mb-4margin-bottom: 16px;
    ml-4margin-left: 16px;
    mx-5margin-left: 20px; margin-right: 20px;
    my-5margin-top: 20px; margin-bottom: 20px;
    mt-5margin-top: 20px;
    mr-5margin-right: 20px;
    mb-5margin-bottom: 20px;
    ml-5margin-left: 20px;
    mx-6margin-left: 24px; margin-right: 24px;
    my-6margin-top: 24px; margin-bottom: 24px;
    mt-6margin-top: 24px;
    mr-6margin-right: 24px;
    mb-6margin-bottom: 24px;
    ml-6margin-left: 24px;
    mx-7margin-left: 28px; margin-right: 28px;
    my-7margin-top: 28px; margin-bottom: 28px;
    mt-7margin-top: 28px;
    mr-7margin-right: 28px;
    mb-7margin-bottom: 28px;
    ml-7margin-left: 28px;
    mx-8margin-left: 32px; margin-right: 32px;
    my-8margin-top: 32px; margin-bottom: 32px;
    mt-8margin-top: 32px;
    mr-8margin-right: 32px;
    mb-8margin-bottom: 32px;
    ml-8margin-left: 32px;
    mx-9margin-left: 36px; margin-right: 36px;
    my-9margin-top: 36px; margin-bottom: 36px;
    mt-9margin-top: 36px;
    mr-9margin-right: 36px;
    mb-9margin-bottom: 36px;
    ml-9margin-left: 36px;
    mx-10margin-left: 40px; margin-right: 40px;
    my-10margin-top: 40px; margin-bottom: 40px;
    mt-10margin-top: 40px;
    mr-10margin-right: 40px;
    mb-10margin-bottom: 40px;
    ml-10margin-left: 40px;

    示例

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/padding.html b/dev/utilities/spacing/utilities/padding.html index ec6c4491e8..9d8f552368 100644 --- a/dev/utilities/spacing/utilities/padding.html +++ b/dev/utilities/spacing/utilities/padding.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    内边距

    定义

    通过 p-* 工具类设置内边距,可用的工具类包括:

    工具类CSS 属性
    p-autopadding: auto;
    px-autopadding-left: auto; padding-right: auto;
    py-autopadding-top: auto; padding-bottom: auto;
    pt-autopadding-top: auto;
    pr-autopadding-right: auto;
    pb-autopadding-bottom: auto;
    pl-autopadding-left: auto;
    p-0padding: 0px;
    p-pxpadding: 1px;
    p-0.5padding: 2px;
    p-1padding: 4px;
    p-1.5padding: 6px;
    p-2padding: 8px;
    p-2.5padding: 10px;
    p-3padding: 12px;
    p-3.5padding: 14px;
    p-4padding: 16px;
    p-5padding: 20px;
    p-6padding: 24px;
    p-7padding: 28px;
    p-8padding: 32px;
    p-9padding: 36px;
    p-10padding: 40px;
    px-0padding-left: 0px; padding-right: 0px;
    py-0padding-top: 0px; padding-bottom: 0px;
    pt-0padding-top: 0px;
    pr-0padding-right: 0px;
    pb-0padding-bottom: 0px;
    pl-0padding-left: 0px;
    px-pxpadding-left: 1px; padding-right: 1px;
    py-pxpadding-top: 1px; padding-bottom: 1px;
    pt-pxpadding-top: 1px;
    pr-pxpadding-right: 1px;
    pb-pxpadding-bottom: 1px;
    pl-pxpadding-left: 1px;
    px-0.5padding-left: 2px; padding-right: 2px;
    py-0.5padding-top: 2px; padding-bottom: 2px;
    pt-0.5padding-top: 2px;
    pr-0.5padding-right: 2px;
    pb-0.5padding-bottom: 2px;
    pl-0.5padding-left: 2px;
    px-1padding-left: 4px; padding-right: 4px;
    py-1padding-top: 4px; padding-bottom: 4px;
    pt-1padding-top: 4px;
    pr-1padding-right: 4px;
    pb-1padding-bottom: 4px;
    pl-1padding-left: 4px;
    px-1.5padding-left: 6px; padding-right: 6px;
    py-1.5padding-top: 6px; padding-bottom: 6px;
    pt-1.5padding-top: 6px;
    pr-1.5padding-right: 6px;
    pb-1.5padding-bottom: 6px;
    pl-1.5padding-left: 6px;
    px-2padding-left: 8px; padding-right: 8px;
    py-2padding-top: 8px; padding-bottom: 8px;
    pt-2padding-top: 8px;
    pr-2padding-right: 8px;
    pb-2padding-bottom: 8px;
    pl-2padding-left: 8px;
    px-2.5padding-left: 10px; padding-right: 10px;
    py-2.5padding-top: 10px; padding-bottom: 10px;
    pt-2.5padding-top: 10px;
    pr-2.5padding-right: 10px;
    pb-2.5padding-bottom: 10px;
    pl-2.5padding-left: 10px;
    px-3padding-left: 12px; padding-right: 12px;
    py-3padding-top: 12px; padding-bottom: 12px;
    pt-3padding-top: 12px;
    pr-3padding-right: 12px;
    pb-3padding-bottom: 12px;
    pl-3padding-left: 12px;
    px-3.5padding-left: 14px; padding-right: 14px;
    py-3.5padding-top: 14px; padding-bottom: 14px;
    pt-3.5padding-top: 14px;
    pr-3.5padding-right: 14px;
    pb-3.5padding-bottom: 14px;
    pl-3.5padding-left: 14px;
    px-4padding-left: 16px; padding-right: 16px;
    py-4padding-top: 16px; padding-bottom: 16px;
    pt-4padding-top: 16px;
    pr-4padding-right: 16px;
    pb-4padding-bottom: 16px;
    pl-4padding-left: 16px;
    px-5padding-left: 20px; padding-right: 20px;
    py-5padding-top: 20px; padding-bottom: 20px;
    pt-5padding-top: 20px;
    pr-5padding-right: 20px;
    pb-5padding-bottom: 20px;
    pl-5padding-left: 20px;
    px-6padding-left: 24px; padding-right: 24px;
    py-6padding-top: 24px; padding-bottom: 24px;
    pt-6padding-top: 24px;
    pr-6padding-right: 24px;
    pb-6padding-bottom: 24px;
    pl-6padding-left: 24px;
    px-7padding-left: 28px; padding-right: 28px;
    py-7padding-top: 28px; padding-bottom: 28px;
    pt-7padding-top: 28px;
    pr-7padding-right: 28px;
    pb-7padding-bottom: 28px;
    pl-7padding-left: 28px;
    px-8padding-left: 32px; padding-right: 32px;
    py-8padding-top: 32px; padding-bottom: 32px;
    pt-8padding-top: 32px;
    pr-8padding-right: 32px;
    pb-8padding-bottom: 32px;
    pl-8padding-left: 32px;
    px-9padding-left: 36px; padding-right: 36px;
    py-9padding-top: 36px; padding-bottom: 36px;
    pt-9padding-top: 36px;
    pr-9padding-right: 36px;
    pb-9padding-bottom: 36px;
    pl-9padding-left: 36px;
    px-10padding-left: 40px; padding-right: 40px;
    py-10padding-top: 40px; padding-bottom: 40px;
    pt-10padding-top: 40px;
    pr-10padding-right: 40px;
    pb-10padding-bottom: 40px;
    pl-10padding-left: 40px;

    示例

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/spacing/utilities/space.html b/dev/utilities/spacing/utilities/space.html index c5335ce4be..b8b704a0c3 100644 --- a/dev/utilities/spacing/utilities/space.html +++ b/dev/utilities/spacing/utilities/space.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    子元素间距

    定义

    通过工具类 space-x-* 来为元素内的所有子元素之间设置水平间距;通过工具类 space-y-* 来为元素内的所有子元素之间设置水平间距,所有可用的工具类定义如下:

    工具类CSS 属性
    space-x-0 > * + *margin-left: 0px;
    space-y-0 > * + *margin-top: 0px;
    space-x-0.5 > * + *margin-left: 2px;
    space-y-0.5 > * + *margin-top: 2px;
    space-x-1 > * + *margin-left: 4px;
    space-y-1 > * + *margin-top: 4px;
    space-x-1.5 > * + *margin-left: 6px;
    space-y-1.5 > * + *margin-top: 6px;
    space-x-2 > * + *margin-left: 8px;
    space-y-2 > * + *margin-top: 8px;
    space-x-2.5 > * + *margin-left: 10px;
    space-y-2.5 > * + *margin-top: 10px;
    space-x-3 > * + *margin-left: 12px;
    space-y-3 > * + *margin-top: 12px;
    space-x-3.5 > * + *margin-left: 14px;
    space-y-3.5 > * + *margin-top: 14px;
    space-x-4 > * + *margin-left: 16px;
    space-y-4 > * + *margin-top: 16px;
    space-x-5 > * + *margin-left: 20px;
    space-y-5 > * + *margin-top: 20px;
    space-x-6 > * + *margin-left: 24px;
    space-y-6 > * + *margin-top: 24px;
    space-x-7 > * + *margin-left: 28px;
    space-y-7 > * + *margin-top: 28px;
    space-x-8 > * + *margin-left: 32px;
    space-y-8 > * + *margin-top: 32px;
    space-x-9 > * + *margin-left: 36px;
    space-y-9 > * + *margin-top: 36px;
    space-x-10 > * + *margin-left: 40px;
    space-y-10 > * + *margin-top: 40px;
    space-x-px > * + *margin-left: 1px;
    space-y-px > * + *margin-top: 1px;

    示例

    水平间距

    1
    2
    3

    垂直间距

    1
    2
    3

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-family.html b/dev/utilities/typography/utilities/font-family.html index 0fd8f02bd6..103c53a87b 100644 --- a/dev/utilities/typography/utilities/font-family.html +++ b/dev/utilities/typography/utilities/font-family.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    字体风格

    定义

    在 ZUI 中提供了一些 CSS 工具类方便为元素设置不同风格的字体,包括:

    工具类CSS 属性
    font-sansfont-family
    font-seriffont-family
    font-monofont-family

    无衬线字体 font-sans

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    衬线字体 font-serif

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    等宽字体 font-mono

    The quick brown fox jumps over the lazy dog.

    白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    参考

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-size.html b/dev/utilities/typography/utilities/font-size.html index f9f31ea0a3..cce40ea481 100644 --- a/dev/utilities/typography/utilities/font-size.html +++ b/dev/utilities/typography/utilities/font-size.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    字体大小

    定义

    使用 text-* 工具类控制元素的字体大小。

    工具类CSS 属性
    text-rootfont-size
    text-smfont-size
    text-basefont-size
    text-mdfont-size
    text-lgfont-size
    text-xlfont-size
    text-2xlfont-size
    text-3xlfont-size
    text-4xlfont-size

    示例

    text-root 字体大小
    text-xs 字体大小
    text-sm 字体大小
    text-base 字体大小
    text-md 字体大小
    text-lg 字体大小
    text-xl 字体大小
    text-2xl 字体大小
    text-3xl 字体大小
    text-4xl 字体大小

    MIT License (MIT)

    - +
    Skip to content

    字体大小

    定义

    使用 text-* 工具类控制元素的字体大小。

    工具类CSS 属性
    text-rootfont-size
    text-smfont-size
    text-basefont-size
    text-mdfont-size
    text-lgfont-size
    text-xlfont-size
    text-2xlfont-size
    text-3xlfont-size
    text-4xlfont-size

    示例

    text-root 字体大小
    text-xs 字体大小
    text-sm 字体大小
    text-base 字体大小
    text-md 字体大小
    text-lg 字体大小
    text-xl 字体大小
    text-2xl 字体大小
    text-3xl 字体大小
    text-4xl 字体大小

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/font-weight.html b/dev/utilities/typography/utilities/font-weight.html index b2506356d7..4607152e05 100644 --- a/dev/utilities/typography/utilities/font-weight.html +++ b/dev/utilities/typography/utilities/font-weight.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    字体粗细

    定义

    使用 font-* 工具类来控制元素字体粗细。

    工具类CSS 属性
    font-thinfont-weight
    font-lightfont-weight
    font-mediumfont-weight
    font-semiboldfont-weight
    font-boldfont-weight
    font-blackfont-weight

    示例

    font-thin 字体粗细
    font-light 字体粗细
    font-medium 字体粗细
    font-semibold 字体粗细
    font-bold 字体粗细
    font-black 字体粗细

    MIT License (MIT)

    - +
    Skip to content

    字体粗细

    定义

    使用 font-* 工具类来控制元素字体粗细。

    工具类CSS 属性
    font-thinfont-weight
    font-lightfont-weight
    font-mediumfont-weight
    font-semiboldfont-weight
    font-boldfont-weight
    font-blackfont-weight

    示例

    font-thin 字体粗细
    font-light 字体粗细
    font-medium 字体粗细
    font-semibold 字体粗细
    font-bold 字体粗细
    font-black 字体粗细

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/leading.html b/dev/utilities/typography/utilities/leading.html index 547471edc6..51fa455dc4 100644 --- a/dev/utilities/typography/utilities/leading.html +++ b/dev/utilities/typography/utilities/leading.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    行高

    定义

    使用 leading-* 工具类来控制元素文字行高。

    工具类CSS 属性
    leading-3line-height: .75rem;
    leading-4line-height: 1rem;
    leading-5line-height: 1.25rem;
    leading-6line-height: 1.5rem;
    leading-7line-height: 1.75rem;
    leading-8line-height: 2rem;
    leading-9line-height: 2.25rem;
    leading-10line-height: 2.5rem;
    leading-noneline-height: 1;
    leading-tightline-height: 1.25;
    leading-snugline-height: 1.375;
    leading-normalline-height: 1.5;
    leading-relaxedline-height: 1.625;
    leading-looseline-height: 2;

    固定行高

    使用 leading-* 工具类给一个元素一个固定的行高。

    leading-3 行高展示
    leading-4 行高展示
    leading-5 行高展示
    leading-6 行高展示
    leading-7 行高展示
    leading-8 行高展示
    leading-9 行高展示
    leading-10 行高展示

    相对行高

    使用 leading-noneleading-tightleading-snugleading-normalleading-relaxedleading-loose 等工具类,根据元素当前的字体大小,给它一个相对的行高。

    leading-none 行高展示
    leading-none 行高展示
    leading-none 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-loose 行高展示
    leading-loose 行高展示
    leading-loose 行高展示

    MIT License (MIT)

    - +
    Skip to content

    行高

    定义

    使用 leading-* 工具类来控制元素文字行高。

    工具类CSS 属性
    leading-3line-height: .75rem;
    leading-4line-height: 1rem;
    leading-5line-height: 1.25rem;
    leading-6line-height: 1.5rem;
    leading-7line-height: 1.75rem;
    leading-8line-height: 2rem;
    leading-9line-height: 2.25rem;
    leading-10line-height: 2.5rem;
    leading-noneline-height: 1;
    leading-tightline-height: 1.25;
    leading-snugline-height: 1.375;
    leading-normalline-height: 1.5;
    leading-relaxedline-height: 1.625;
    leading-looseline-height: 2;

    固定行高

    使用 leading-* 工具类给一个元素一个固定的行高。

    leading-3 行高展示
    leading-4 行高展示
    leading-5 行高展示
    leading-6 行高展示
    leading-7 行高展示
    leading-8 行高展示
    leading-9 行高展示
    leading-10 行高展示

    相对行高

    使用 leading-noneleading-tightleading-snugleading-normalleading-relaxedleading-loose 等工具类,根据元素当前的字体大小,给它一个相对的行高。

    leading-none 行高展示
    leading-none 行高展示
    leading-none 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-tight 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-snug 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-normal 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-relaxed 行高展示
    leading-loose 行高展示
    leading-loose 行高展示
    leading-loose 行高展示

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/line-clamp.html b/dev/utilities/typography/utilities/line-clamp.html index a82f47b3e1..bde02374f3 100644 --- a/dev/utilities/typography/utilities/line-clamp.html +++ b/dev/utilities/typography/utilities/line-clamp.html @@ -14,14 +14,14 @@ - - + + -
    Skip to content

    行数限制

    定义

    使用 line-clamp-* 工具类限制显示多少行文本,在文本超出时进行截断:

    工具类属性
    line-clamp-1overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;
    line-clamp-2overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    line-clamp-3overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
    line-clamp-4overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
    line-clamp-5overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5;
    line-clamp-6overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6;

    示例

    至多显示 clamp-1 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-2 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-3 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-4 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-5 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-6 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - +
    Skip to content

    行数限制

    定义

    使用 line-clamp-* 工具类限制显示多少行文本,在文本超出时进行截断:

    工具类属性
    line-clamp-1overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;
    line-clamp-2overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    line-clamp-3overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
    line-clamp-4overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
    line-clamp-5overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5;
    line-clamp-6overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6;

    示例

    至多显示 clamp-1 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-2 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-3 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-4 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-5 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    至多显示 clamp-6 行

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/list-style.html b/dev/utilities/typography/utilities/list-style.html index 5b364ff071..34c6333797 100644 --- a/dev/utilities/typography/utilities/list-style.html +++ b/dev/utilities/typography/utilities/list-style.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    列表样式

    定义

    使用工具类 list-* 为元素(通常是 <ul><ol>)设置 CSS 属性 list-style

    工具类属性
    list-unstyledlist-style-type: none; padding-left: 0;
    list-nonelist-style-type: none;
    list-disclist-style-type: disc;
    list-decimallist-style-type: decimal;

    示例

    无样式 list-unstyled

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    空白样式 list-none

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    圆点样式 list-disc

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    序号样式 list-decimal

    • 这是一个列表
    • 含四个列表项
    • 作为示例
    • 最后一个列表有嵌套的子列表
      • 子列表项 1
      • 子列表项 2
      • 子列表项 3

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-align.html b/dev/utilities/typography/utilities/text-align.html index 9d55231d6e..82fe3bc989 100644 --- a/dev/utilities/typography/utilities/text-align.html +++ b/dev/utilities/typography/utilities/text-align.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本对齐

    定义

    使用 text-* 工具类来控制元素的文本对齐方式。

    工具类属性
    text-lefttext-align: left;
    text-centertext-align: center;
    text-righttext-align: right;
    text-justifytext-align: justify;

    示例

    文本左对齐

    文本居中对齐

    文本右对齐

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-color.html b/dev/utilities/typography/utilities/text-color.html index ffafaab694..4bef95b791 100644 --- a/dev/utilities/typography/utilities/text-color.html +++ b/dev/utilities/typography/utilities/text-color.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本颜色

    效果

    使用工具类 text-* 给元素添加文本颜色。

    语义化
    Text 文本
    text-primary
    Text 文本
    text-secondary
    Text 文本
    text-success
    Text 文本
    text-warning
    Text 文本
    text-danger
    Text 文本
    text-important
    Text 文本
    text-special
    主色系列
    Text 文本
    text-primary-50
    Text 文本
    text-primary-100
    Text 文本
    text-primary-200
    Text 文本
    text-primary-300
    Text 文本
    text-primary-400
    Text 文本
    text-primary-500
    Text 文本
    text-primary-600
    Text 文本
    text-primary-700
    Text 文本
    text-primary-800
    Text 文本
    text-primary-900
    Text 文本
    text-primary-950
    次要系列
    Text 文本
    text-secondary-50
    Text 文本
    text-secondary-100
    Text 文本
    text-secondary-200
    Text 文本
    text-secondary-300
    Text 文本
    text-secondary-400
    Text 文本
    text-secondary-500
    Text 文本
    text-secondary-600
    Text 文本
    text-secondary-700
    Text 文本
    text-secondary-800
    Text 文本
    text-secondary-900
    Text 文本
    text-secondary-950
    灰度
    Text 文本
    text-gray-50
    Text 文本
    text-gray-100
    Text 文本
    text-gray-200
    Text 文本
    text-gray-300
    Text 文本
    text-gray-400
    Text 文本
    gray
    text-gray-500 别名: text-gray
    Text 文本
    text-gray-600
    Text 文本
    text-gray-700
    Text 文本
    text-gray-800
    Text 文本
    text-gray-900
    Text 文本
    text-gray-950
    界面
    Text 文本
    text-white
    纯白
    Text 文本
    text-black
    纯黑
    Text 文本
    text-transparent
    透明
    Text 文本
    text-canvas
    画布
    Text 文本
    text-inverse
    反色
    Text 文本
    text-surface-light
    加重的控件
    Text 文本
    text-surface
    控件
    Text 文本
    text-surface-strong
    轻量的控件
    Text 文本
    text-fore
    前景色作为背景
    Text 文本
    text-focus
    焦点色作为背景
    特殊
    Text 文本
    text-current
    CSS 值 currentColor
    Text 文本
    text-inherit
    CSS 值 inherit

    文本颜色透明度

    使用工具类 text-opacity-* 给元素设置文本颜色透明度。

    Text 文本
    text-opacity-0
    透明度:0%
    Text 文本
    text-opacity-5
    透明度:5%
    Text 文本
    text-opacity-10
    透明度:10%
    Text 文本
    text-opacity-20
    透明度:20%
    Text 文本
    text-opacity-25
    透明度:25%
    Text 文本
    text-opacity-30
    透明度:30%
    Text 文本
    text-opacity-40
    透明度:40%
    Text 文本
    text-opacity-50
    透明度:60%
    Text 文本
    text-opacity-60
    透明度:60%
    Text 文本
    text-opacity-70
    透明度:70%
    Text 文本
    text-opacity-75
    透明度:75%
    Text 文本
    text-opacity-80
    透明度:80%
    Text 文本
    text-opacity-90
    透明度:90%
    Text 文本
    text-opacity-95
    透明度:95%
    Text 文本
    text-opacity-100
    透明度:0%

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-decoration.html b/dev/utilities/typography/utilities/text-decoration.html index 53ed8ebf3a..cd90bca12f 100644 --- a/dev/utilities/typography/utilities/text-decoration.html +++ b/dev/utilities/typography/utilities/text-decoration.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本装饰

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本装饰样式:

    工具类属性
    underlinetext-decoration-line: underline;
    overlinetext-decoration-line: overline;
    line-throughtext-decoration-line: line-through;
    no-underlinetext-decoration-line: none;

    示例

    下划线 underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    上划线 overline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    中间划线 line-through

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    无划线 no-underline

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-overflow.html b/dev/utilities/typography/utilities/text-overflow.html index 74b9e5fc35..50b272c474 100644 --- a/dev/utilities/typography/utilities/text-overflow.html +++ b/dev/utilities/typography/utilities/text-overflow.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本溢出

    定义

    文字溢出包括两种方式,分布为省略和裁剪,在 ZUI 中可以通过如下工具类实现:

    工具类属性
    text-ellipsisoverflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    text-clipoverflow: hidden; text-overflow: clip; white-space: nowrap;

    文字省略 text-ellipsis

    使用 text-ellipsis 用省略号(…)来截断溢出的文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    文字裁剪 text-clip

    使用 text-clip 在内容区域的极限处截断文本。

    The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。The quick brown fox jumps over the lazy dog.白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/text-transform.html b/dev/utilities/typography/utilities/text-transform.html index 39bee7409b..c72b714ee4 100644 --- a/dev/utilities/typography/utilities/text-transform.html +++ b/dev/utilities/typography/utilities/text-transform.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    文本大小写

    定义

    在 ZUI 中,你可以通过如下工具类来设置文本大小写显示规则:

    工具类属性
    uppercasetext-transform: uppercase;
    lowercasetext-transform: lowercase;
    capitalizetext-transform: capitalize;
    normal-casetext-transform: none;

    示例

    显示为大写 uppercase

    The quick brown fox jumps over the lazy dog.

    显示为小写 lowercase

    The quick brown fox jumps over the lazy dog.

    显示为单词首字母大写 capitalize

    The quick brown fox jumps over the lazy dog.

    默认大小写 normal-case

    The quick brown fox jumps over the lazy dog.

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/vertical-align.html b/dev/utilities/typography/utilities/vertical-align.html index ee3b3081ff..4301e97b9a 100644 --- a/dev/utilities/typography/utilities/vertical-align.html +++ b/dev/utilities/typography/utilities/vertical-align.html @@ -14,14 +14,14 @@ - - + +
    Skip to content

    垂直对齐

    定义

    用于控制内联或表格单元格的垂直对齐的工具类。

    工具类属性
    align-middlevertical-align: middle;
    align-topvertical-align: top;
    align-bottomvertical-align: bottom;
    align-subvertical-align: sub;
    align-supervertical-align: super;

    示例

    参照文本中部对齐

    参照文本顶端对齐

    参照文本底部对齐

    参照文本文本下标对齐

    参照文本文本上标对齐

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/whitespace.html b/dev/utilities/typography/utilities/whitespace.html index 56073aa86a..8072f4614b 100644 --- a/dev/utilities/typography/utilities/whitespace.html +++ b/dev/utilities/typography/utilities/whitespace.html @@ -14,8 +14,8 @@ - - + + @@ -29,7 +29,7 @@ 欲穷千里目,更上一层楼。

    保留空格自动换行

    使用 whitespace-pre-wrap 来保留元素中的换行和空格。文本将被正常包装。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/utilities/typography/utilities/word-break.html b/dev/utilities/typography/utilities/word-break.html index 3af2882fbf..5f237d38ea 100644 --- a/dev/utilities/typography/utilities/word-break.html +++ b/dev/utilities/typography/utilities/word-break.html @@ -14,8 +14,8 @@ - - + + @@ -27,7 +27,7 @@ 欲穷千里目,更上一层楼。

    任意字内断开

    使用 break-all 在必要的时候添加换行符,而不是试图保留整个单词。

    The quick brown fox jumps over the lazy dog. 白日依山尽,黄河入海流。 欲穷千里目,更上一层楼。

    MIT License (MIT)

    - + \ No newline at end of file diff --git a/dev/zui-3.0.0.zip b/dev/zui-3.0.0.zip index 7d6140279a583bf348b4a740f54c4eec2161168e..04d975058ef93c572231965f527fb701154ce355 100644 GIT binary patch delta 476530 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 z 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%0A+{h9C+>984*TbjSC3i=bQdYqp0+O~Px!JU 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

    DvbOIV4;qfmZ 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�wiN!J zblL9exh4a)I#?K@T+WND6zPnTNb`*xsBY4}Q`iOxB(02_1=nd4OuyCJ<*fpp*0W^V z>V}=F4V>XJ3n)bUSji*!TgNBeC?c8K3lu)n)G?&3I|a{MPY|=mrFnt;;t&KkT8tDL zNcewc#$CXwxefp_^TUy)^@`_*;~z^k8V}=39#-lNrm*cOM!~yNM|^2JXqb|lIcU6m zmXy+xxRwLkM)l!4!uYLk-Acv>&d#d2Cz^NM5xfujF|QJ-Y^ivsmVB)`4v3{^nqq;h zNJqtSLTtr2k(=fCPV&;noY0~{VDm^Nz{!8oTKBOf7b6n9^8dWix&d7c{Qh}^E@~VL zXw#CiXkQNC4XJPGuoryo-&2$#t#$4sb`P@_rom^6jNR{$coP+#QJJ)+W3SI_LKvx{ zVmT(`Zc8WNo zZrfsJV|D504z5>UM7lS0Gb?SX8}WY@KJZ-aR>Bw_Fo>5zhk8w}zI_RlD)*Z0Gm`=$ zNFKlFHOW|#9$*RsIkVoB351B_{zEE<3k%<#^#8e+Oj-}(wr5XLHLZxw^ILT=8Q0Jv zKt!*}E;dYNBn7{0R-X1_biZI=9n}d74Nt-)Qn~tP9xI#jLI5qEG299cBp(*g=Eo_ zW#lkn+HliFurJm5d0osE%LnVJ4mUiqMg+n3XIB(bG5YUTOeCz^&OlFmQv4y^&$UR} zZI0__u~bGT(@X0*qnLkx?oP_a{CjX$$#{TJa)m$<4z1oVB#hL{OPzX(QV|Ihq+FhJ zifPqfLssg5-EhY@=M(Oo+9ieX>@Fz-M|epQI>@O)i{%EF%k2L;4e3O>l6^xd)g-7` zJIz9>@sak*58do=6`OY370vC=sUXD>)>n zWJVMukFr#hmoth4uuLRn!*#AY=#`9RtAZIQsU~ zfpQG}q^<^2$#i7+~C)o9LS^Na?}*DDjw7$HV+szdP2td zB=XS|u z^=))TmD_m9GMJmDBMYn;9z*D-ukmhgX?wPnrU5TnApRJSbLc1OG1+T%n$Thb%eIENTyamFlM^{oDSx74=0|0#%@y1Jiy%L??(TA1+w#g>(XVwI!mX}FCMJ3y ziCw=DgHSNqmh5A z$Lc~3^p;;{BYUp~9ccE~bhaId<wmfbuzk@NrQFOefFza+x$l}*z7l? z>OzyCjo)h=%@q4er2QgoM3%XHW8;6Coe`uuuhDca75L6l==OpMPqhf1-!spB?~r$P zYVSG0gO1PjZR_b1ZA1^>qzFZ7Ha{t**Ry;CIV97cQaujL4AuG|3fbOnb%G%vN_#0O50L;9*WIK8qYczIo9W%7FKr1`wlUOb)WUoag}jHG7s{EKJ9t*;bY3>_$JQ`uY}je*yigRbEz?lnx{ z>qkSco!L^9>dcuH`KG^QZTewwLG}T?7XD;&AkP?h3LmtgE|!doJg#TM$HU4LnwSm# zYN?XrR7SnXIO~A{*KmI#UL1-hYg1tEvBrkCR%$!PmEkXR5jL^(jqPlDA#s{?4d6O% ztIB%c(P`-aZ1+t{0Mr*emFxTAz zb8!e{*ge`x6T%6^F(uH*NYCMGE;1_5A^({t)yp^C)BvbNI6b7^IGrDITYq6iMp9vs z=j&qRb{87MkpL||6R`^irdGB4vyzS1otwdu@&IGD?c{ajAS0VT1pLs!`Z2F7S)!+4;TszqgcJwB|mLRg>LIbN-QPlS~4o*YgS4jt`8 zzg2@z)+r_PlXckc`BhbP#A1ibLo@s~Lasa6(u?-~vuo8&+F^Rl&<(Z1h+G}Ox5=(uWzlGlUwX4>gg*lj- z6;lYq>n$vZigYi1Z*WN zrq_Qf*zvHaUTBP_>>k6SvXC$2mn%>RM0Davn<3EntFg7!BhNDD>)73BEve%rU=t6w zR()-tp&yThJBY%C2^lgSB<0fn=fH-gkz1A_4eDhR@dA0K4qvae)@w=l#pH1lQPI1d zpH6q*>>M5f_)G?$!f*RWuil;>zIyX&_vnB90hBogJ;nOGx-cxli@$thj^JOuInlLt zc8~UddgU55fL2QMV($Q$Db+FfKfhZTGOfM@hv{STwh}$eNv{R(C-H|x?m$2v?l_#z zIX1-;`-(=_sd=ryji+hOeUw9V(tdJFx>&`EauKYlp+GFLirV z4Zc!))IbcvH1rQf{o7$OH zIq^3~wHEJB-z>!i2pZdfLE636F($kA_ss_Rx23}Df;|0p+g6V%1P$eiT zPoo)jdWNtJ{_G~+^dkPuO>mN!VLYrSegsWODBv?qex4cDWB}sr(=8FH7|g~Bv&ZhS z9Y&@$l}e8^YeB@S*%<{zbwV{z4#V_&WnCfh14n7ykV)tL7CDsnAL_84jR2 zT?$YbRJHHV&9AG$)cgy|Qu7D-2>4rF;h!l#m!ku02VfF^UCyt@_+x)QxWK<~DL@Ur zqo`AmpyJ40&juGfgRG+{QY4(C?_P0 zf-%5~!x#rc=zlQ7RTzJa$7h4#FXrbdxFwrmLRItMFU4(5e`sFtFH%dm{@1f1&U921 zQ(R_%K9~rCu`L4K64}k$HU9}FNSg#^>FyO2KtLIe;rDq()!F8V7EIp3@aI?<{=mn9 z01XU=mJ3+5>v@5R%xU^lY~`oHtYiSK`I|1fj~i>o_6p+I9Zr7-*yYX6O-b`br|mt; z^+pBv!gmJfKoyVYLEe@159Mf7Oc12!!%LhJM(VtR+eg8|5Z??0O7XKj8@S!WY7AgZ z#m^Z`aY^eEWamc=^Z?=p0t#FqI1;M3{!F`sKyW>omt%Qm*xGe4V!)Gz{S(6}VIu;0 zJX_GNI8)#t%v*mcd_5`ujiB3519TeCvAnqeK0v|0bj{y2x`xd!I4Qe(J4ZV-so|`g z&Osuk9(T;fmuF_vU~YvO*CD=!r%5$(b<1_#9pKzZ5OyHkEY1=bYI4&=L9VU4~sFsJzL47FG zS}Vq~$smuQ^K(5k6c4=qJR3}>xV5JPL=C61wPe=yLDm|jGB9~O*&~CTcE;1o0RfPK z;;}((g+MJX+MICo@C@fQWE5K7Ah=NLgz|ucw2$Way+vF;tnCpzAXK+|c&HBL)XM`ZM9fDD!P2|b%+_80;QT6%eXb~dK5;LT<~NIm{-KF)2+yiD&6vB=Oov4aArCtASV zu25LUB)u9WWY7xi%xLtATf$6)aTb)6)wShrG8r$ZD&;p6+9j-E zz_R998bX5ZWrGPUc~jxbmp>o9I{oq8{?VZ=@$!~`P%~)!aM=hwm@9y<9!eUu*Aa?0y=E*?;;UCyac|yZ1BtU7EK({P&VQ3Jvn{=;s{yMm!9_LJN4g@l1MO}?Q(bdEtQ_N;~?yCu2C}Wt+;0)Y) z`NJu+c|98w9x^AX=6;5=%KWab21Nh632fqi z^DdFcBS$GCl9+-W|72L=;Q;)x=f5%~n3P6g0px~upjr!QQ}BsVn~HopfPv8eT-Ds- z7x4ZRH`YK1ucH|!Ej!%#;EfB}Jlm$57yv1M*&)1tstYkUgG8-dG%_g0H8PSl*YU56q~8eRMR%;7 z7|>vHV_-aLSPfos4F0>nhYU2l0gV(_gmGTO8UnTe0EQ7kgHR5Z+587hK|Nqn0nq`{ z0m20?fw$(r_b_Gi-v{#_h!ytDf4~6$1Qfpc?+Eah`R_Gcd~l1%MhT%-jV*zHHm`Pp zOArwPUFMbrmI~s2j1C9xnNKUu!msT80e?}f7>A(h|tuh->!NAAfB z`HHA%g3Cn09;ytds9<&vhIUAQSF?x!7$nU~*EN5FfP3R=FfwSJSy1`IYYFyKa8OPA za4vx{KZRc}k$5{367Gj;4!DG_T_!yEJ|=^GdVqM`rQGf;o8#Bq0&ZW0xD`T0+Dp>h z%Urqs!Pc87Dj4;)z#Rj8(=C2I@f*IhzszyH<)6Ta8RE*oOi@f63yBGT3)~01QeWB2 z)m;kcJn-rUX&(ALne!Ee31HvK1#zC}gvF}r1tLbTTPuv(E8u2B9DQoFS?1x7uYNZF z0xx|^Ki~fN=4k(P|J~uy&bwU@?18chPU6wg0Tv^?ju+6Nx_1<40*1o!) z59~|^^#NY3qj%?A3=kK;mdZHALzJN7Ea|6N z>K{==%k&9tsHpGviLluR_7><{mg_l1${wS zok;i?c@pBAV$Rra^e7*t!Ww9)ALdtt6%^G#=}+} z_1F5w_O^?|vwhA77xoh&Ju^JhFms&zSk0Kow$C*aY*ZQ_D0T!(R^gZlt3Dfi{(&@{ z)DLSJYj>L}tvwHq%bmjP-wb}ebrUy#1RM(6NaP>>;&Jm6k9ue;1N@S}hkv%+He#MRHbyxdGznlchE-g=i3%s{*MO40dZF!R+qQHIn zQ>rg`gQ)km5x!N-)IOE8!XLm@995f_NPe7>fY)|tzkg!gEoxe;^x`G#Tos=BmD+0`Q2*FRuW@t(=$UZg`dZRt0`)3pweYMKB}mdDN3U3NeF|0?3rs3^uL_%48p2&L`iSfx~i~9#s{SITr&_ zpYz_8wJONlD^0K#khrcnwc!qwYZRkto>ez=6{0_v@TCa*M{x=^N_Kd^B z4x1U(*Jt>we%cWbDh(c`BDEq%{0J+mLn)04LQy}Z!NJgqesJ_ht|;k|xF@8pcRhg` zys)As^B_e>r66cBZo$dhs(i%xh!QSidT;Uugu(+dC&350Gv%OvGu-Uj9Y+m~f&~6i z)~<+kij&>+9(YMdrI6(FV(Mfa*ApvWa0S>KiQGfO)5&Z ziD86r{oD;D*N7mLS2xoE-+F@~M8cviH1HCR>5~Tz-q!*f*=5q$>>tbc7^?^jRQ3an z-ohM0;2-URqu5gbt8fD>>jUE5CUyx0d$>jQPASrKTxwkokUb<916o{G!JLc{B&$U`LUXfU8g`fam|X}euT8z-B|lJ_QvNOC z3TK@KMvy~)r)HIYYP8~#CotW*wPkoJR74(Zm;B-oU%aet>__{9kLZL5SzOgMGTgL4 zh~To1fKJyJ9~f!qG-wGv+8wH?*jq7P2?yfV-+og9=Rs}FP9_z0{{vBxRQLm|Ix{ZyK9nIPRTBj*NK1-{s>LDGcIN_LAHGXdwYgT`h{;Sea}~@qJ9k7=kzCrp;qfQ zRlg&dz!jS7q2(r5=aU4lU|jn6)HMe4AvB;LWhSTc5|0<3l{Iy0>{nHATFizt7_+(; z2A|h|FL6%lN!lms_2q^ADMTw!jDP08C@U{mJxRqxvNkgdjAvik-W77#e_?k9=`48? zdQzTW{q*YH(dmc%-9JJD<`zD(`Wr%@A5gr9Y3i)jMy_joYnh#?c_>7lR80#~1AxCF zEE{f+rPaq3u>^Q+@0tgc##U2M3!8hq90_rM!*6yB**>|lx@j;PB|QcJjeHa35mzA_ z@xcv?G3M~XQtaHqj{7RDBwj(un(b@x?;Nf1RKJ6uHkf94)%~$)&_?5Sy7KI6y%<5+ z_u+~J-=Q<6HNf$Kj_nvP1?2h9kP(TO%Io`lTu$|}(w)qS%$*MdJ+lpP@DbMPsB*D? z*`2u(ZFhLWPf2Yz1CeVnVFt7sFh;7~Ug1*PeJtyr%mFWlD6kkJtNLgA>u385CxcH6 zYCM(?Fn_W1XANdO2Laaw+UAs_(YW|b;sS$%=Ag+TgRXM)R)0jQ_WXLRr{rq0&>ofa znn3g)9H1d*nh+r!W}n z&(mPH%t@Y3y;%Czdi>C=t?Je*F<=!L{dsUAQ5T_!lV__`#5>Y%qt` z@BAB^eD7PwQ#G-aLG*Z39VmzygND)&iB*m2kPj9>VG!=Yj6;7}drIoy>+xuRXEd@# z^7c&IH*hRqWBiR>lT`@cb8%)EG-M#1{1$Kotr2lfVAaVl>S-}7&&$HFKP0vHk0-x8 zbdV~qpgy30J*6@6Ar_PF}R zZ17p=rz^F~YJT`k=IVudOZPAfY-QxT&Sb!%Dtad)B%&8 zKb7_MVC-Jm+bR4YG*WO=Ce!0M2PYWU)@0z%*6Vnv99;Ao9TbMFDnH?9j?j_- zH0b&*8BoZ1s_f){%UZXyqs+pn4A+J3?a0yUUKTd+N#pYDosD}hgBi~4;{W8#I{X)K zVUJj|1LEZ5wtM{ptiZeeS++~?zl>GycYV@qHov8nQsz=1V|>t zZH%e*ts~AHhIt{7n z2*q+Dubu6dg=)4b7S!h6*rr7EzCSq>V|-HKYVx1<^-lvaAQ7tHYFIwYPnd)JK6Qpf zW`c)oJ&X@Fh(KMAnZwW`>ItfVrSY5jdy$FRmQ+IpSv2`(J@RbTKIYlB0uR+g&GU3zniG8Li(;GYx+#iL= zqTdGl3PRznl;g;@^_GNW1003=1od3eLc4vSc6suK{NP{kXReR4JKKVbTpRk$JSvA# zq)rcic>gEw0X!`C_7C6g!?SaV`eA>ML+hcU$t=Z~E$6P_H%@LauFyae-9bQqO)Qrj z{B{>6ly|Jhn$!ojbHqYch=K(%NQlFBlI}Iz2@n9*bZ96VS4+`9jHLUU#nmZPgV9UhKJ1smhiF+8|ihjRTZGA@Vsw~2(%=#1oF_5-@TJWkBP)*xC`fWgshtfF+ten%v;XyvNh)^O8RfzVL6eWrHhm!v8F?yUFyL!wOL7jWNv}bX>SDMJ)qD@z-1lD)W_sI0@W~ zY*3QDYY2EYAUmy*eV~aOT*Gd<)r9o$hIeIdLp^d~TjWShs|eqPg=NHrewIRXlc9+= z4;Ul8@Swn=y0os?a!Esf>8t9KbI3raK2&%O>6bFtrOmV!J#*~WIyzxA9z%0pU<`FZ z&m=D}OJ!i0C`40Dyg2IbXXVI--H_F1f_#fzxg`3FpUY~gx~h8 z!Nd2cL7)5qiWB#0^9~_Fdr|P8BL-sp%tnk;F=OCaOjT7dsAR8FsRdt{w83W@fB}n_&PG+j z2^wy(E|onxRb#@!x^}&CT1j&wqZHuMw+cljQ*IluNJ4p)v(98dpj(0;z>P>V6^^L^ z={SVH90!kf!TF_sa@}Sevlh8>JO5LVjX698zMKD4X^yu5AQ#`hq#Tj z1l;+ETs_^d_Y>y!D(?p|lF;M3;o##bAA>AepiV+qH7+e|F9=l*FI5huJg@L1gf&W@)k(DbgYi?h--Cg6g zK9Z;pXq5s&ODVwxV3Kg0-Qr7Gx$#N_*}P&nK)5KTq{DpLQ9799@?cKpOa-!cF3}=%Ql% zXwi%%eHdqdoPJ=-rlAWrQ=Ff(VL*@fy?hL5tsYql?*5k`b`u^EB?k(ekvE{EiQjtCy9KYoy4k7Nb~J~Z^pV>>^& z7&i6wnKc3iz8xQ&T`w$MbyWm!xf1_k;(**E>=$vzcd%qhe_GA6;GeJ>g67Rn2^V585<2RSYhk6#?_K2=ZVDrRVAxtP(wgaa zstU0@Sb~u?ESU=qSdC>hhtYeyRJqN6x2_S4W#X5$yW_T-=L54~tDzgcs*voRB&f=Z zmtSHKX0*)|>0T0Cd;ff$dKl{UXR7uJUAAoON`cq5;v z>N6FD4{}}3K=x_D!oC(`9Dr&j5D3~OrUDX{^qVEi!tn4TnOg)et<};eYlaKZU>zFt zqbD1BMwZW7@P^0W$Hi1n>bu2%dhUV0VrWwSXn)hU5hPnrgbRZ+;i!0=IwKx0V4jQQ zTw$hbp~4O9>=EF|`7rG{E^B60Bx^%jQ3?`N+h6ajvKoSRmY@6w9fI4vwIQL<;L_?U z>AK`64iBtjYs^WU<4(_e6lvN6M2~PZ=%fih;oiuNC5R1K9O66qG}6O=5zE7IQQptw zc$Fjf8yY42&si2NS!Ok!X2I~cjRl zsW8-EgV z?q2Wr?l^m0^fDTMN>y1|IS+T!h0zwPzq5P_3be{z;-P!r%|<65LtR7W&DK%Hv^u*_~A=ltv^J?l~@0Xe~x z6^*lWb^fHe%6tt@bObEUt7|T_%?Q39x{zo&5e$1wGW3~wn9M9;02CJ?YRqZbfol5H zX7db~j#jvTzzv(NCi&5LG*6(2n$^_~smY@M-y#+8HRHdKnG2w))r%dE>vs|v^=8S{ zk^%z4Fua&yX1qpBg!0+tL&)GhzL%gY3J~XO{5?R)2Xil;I3paohP?(F%WudaszS+w zu&#zg_{huVX5{L5C~rsgT=kHhkINz{9)-a~Y4@CeKA<|mLRJ&hCEA7H+My_9*8(8B+=$?$vo3&=;$SdH8#d|RuThd7t5Jma67n_EdQ zmFQX>6@OXGV&QrHE|cpDGpHJ#Dz}Y4`77Rk5rkj0F9gNLzhsmf&QHJd>Rrv?Cs)X| z^FCy?g7iS6W`w`J0$>76A)T5F|NETHn}|k4PMxL^J}oW~2;l9mEOgOt=pMn&iX=B5 zsLU4CFk7<7nd*iCc2D{<1WNl876dmPi7~83%l!qdz)dnBEq7ub=JEZX)k*?o@VS?N z0jKy@8;RWf*NJ_J-I&bjpM)xL2e5lF`Ex~h{BDVY?nhDIU*3;tz(J>ZnFcAkxSacMRhO5s|4dq~!;e~jT^;^2 zj-s)Xr;2I>_u=r=pnA&rs{{LU7=8}@7x1(2K*G<`&jCOC_9{lm{0PUx+J4|Sd z{y#S^a^DAC;*kOnE}-x2*gtnO6{_FpLJV^g|(7q|a$)!=m3 z`B(e?ZfP0zH@xjJtx`XkUK=NI#+{RdVCLcZGZ~8Y+ z<+MM>?U!aRVJITp8mSMma5iya))(ryMUY{E)8q zmDb^50J?Sp6sn+hO0(_LCeZX|6){c&enkqP42OUz^N^?U!~Ff|=j@JwQKM=rJXg4l zA7VU0mk0i`pL0c_swrIPRoa$>26~`-eL|W(gV+@dQT5Z&&#n}GWlBV;s(&dMD61b@$xn$V|b$Jq+#K7ZpI?N@(gzdnD14%VbAZ@dMB zDEZ+>^DrHUes2|f);&zLe{{4S=0q>ONI*1zkE|g9j!D3ObD{&%vd+HAfUVdMlbgjU zy`kAGi5~QYH1tp4;*4Af8f~qnHM?WF><~@Mc~JE`LO^e0;t3E0v%o(<;yye(jmjJ} zz8`o52{su}uR+p((9cT-kP!755h@Zn!~S>%ens4)Olow!0y(X+(_CetlcQA@J$t#f z${nn-Cyei02z}Sn&y1#>>AZi@&k2~apEmCOqMH|gyjlN6*k|Fa5jGPpo&yRV%0z5_ zoEmmeJv*8Rp0x0C8_dZMp9(WSj1{vp>_CM+6HDZZz_n<4XEf`~4>RCRAJY*G`1g(E zaTZu`BchGxher*}Xq>6DgBno#)~`-e&uK@5J=FQ;-l>ky-`s9{%E z!wbG31;OhpG>vnbMu()RTVln72f`$X#hKDhl4Q;6|b??Jp2IQQMYtG$7VvC^CP5??i|!=Y{4wx@T?2Wq zoUVY;-w#8mIF++R_zA)YM)$$9C4Jq`b~jc|&}XtDCt^g%c#(<_zX$v#soo!Y&)czo zAe!Q>TX&wB4x8ib1=$@Ow(U3|OGWsJ_ZIg6Aic|U`X&~dwZMT&`~i&G#BhJ;@h5m( z=&}7}Zh5*Tx3b4%{k=e;(`SP4Q0VkYgPzPBKsYC)CuMtaU~Z9-BW6a8yduDyUc2>Vh!KBiHrjR8og#wSriBingx@nl zmiqbn-4U%TSbcE7LQM~J?}g5P#b5=>tY;gn9M>S?TJ73IXh1)ad)Lrg@=Z|FjaU(7 zCsB)8uuN1`cRNuvgVmdgH2>u3!2=QGWnxayiOikw23)~^-;KaX`fK*| zoWO9l!e9woi7bfS3%@FEv1~U^YUi(LacK^!AO2pgN3FO)Odp-X>%qe@J5@np`Uup1 zidh=U7@!|c#Y`Y~_&6PHF@<_5(<97bDn|b3Dt_YQkTU_?1LJv#**;Cy2t3*b%mX$} z2uh{7`W&mA@)RpC%OC}Ri4Eg2{-~`52O4NG4CW%UUSSiuEreu=j!XB?Ag~nMansV% zu6>r?*p9_Z0Obm3nv=#=dwK+jHlAj@`0dl9U<>&4X*&~rI@k>6gNFQgMZk#EmIK_l ziB;j50Ug>Z*aadq4uCM1uOSQ`LM>jvm2=a!_p7N#kL(yKf~DerrGYk^5N2QoAD!9_ z6ocdrZE>_r%vhf2za%1lUdJHdJVVxfs`X5m!sV=wE>hiltbL|}G}9&6Dr?ga;b+h3 z`;f^7kh_bST1!|$yP};NU4upNS+0P2#y{Vy)3FSN6B19ZQmAgk zcjfCrt)8WDgZL?b-lQ;L>ZxDgytD|I!z}`#7mmI7?8t&@$WwiVcTOIjd%e!v2%mI- z>zG7^Xb)D~UA^;jb>ut353-9^DwQ}9_ToEFh|_HKjVQdAN6A8@{*+CMi=?4!-6yi- zLnAPc+5sSrH;X-IOPF@vV)c_Km)`{dNEI$$oI-yQZeX5&s!@toZSW1e31~Oz$n>6R z0t3R)tvCZ*{7LQv07f5>WEj&5WNDtR&d*#|@pa51meqrU z6~!OEQYE?oAaX$7dv7rOhyNT@zt3@9_}DL+&t6+D^k@#L8o+Rl8-GXUZx1HC&u+dx zTdGzr&;qrDFOuMaQDB9u3V8;@)M3|zHpA+#S@VvugS2X8VnXalj-u`?~ zNH$(1&DFB&VF1+dqK;Ei`^b;y*7)-V_skPUd?dIIR8@|0i1r|?Tg=?)bmnA)Zdz+9 z#55WV*rG`X)SYEOU5b&3potg#`fe~Gd!juVYxGWJz@NcAGoa9>v}Tup=?55pDl~+$ zlUc{efGnfN_Ef9|1z8P*-y>kh-@1-R4P)93iyJF;w41mEnmkXHCf|_KesY^OjSNah zT7N^PTj?hTnSUp$iOB4{;xCRZkTX)VfbaWySg(WkSvTE742%N%_=K;~7Y-n2JmU5f zsRP4BrmmTL`ducVA|;-cjeyjD#|+|J-3;3_>GQXAEtgisj&1K_dXpE^w0-y$??3?f zVPZ~1{Vc#=Rz+I}!-uh?nQdg<9N6)Z*a@7%fEBha+9#;=4Tc&wo8PfJ-T%Y%Z$$pT z`Ld8j{m!X;W?BEtfYo>-1+g@-1!qGGGTnrs=tO-NpF_>_QK9h@#HVLR`X6L|ynVoj zErc@CKDOX=dNhc01xfTiHsJ&`=^aLjV12Z(VU?RdDzZ*n7Y<7R4MAT%ftyvs8J?i7 zi$w)S!6FLo&h&_v-RcJye~*n|+2<{Qf`zX^%c(1BYq9Jtt8KsdwtqE!+mpYT-CE(d z{(agSPporjQM(B=r(G8`r;C5?tKYxq_Z=i`6YodIU=%D6iCQ?oL(65y8q)nPerX5k zogmj1p$Rfu)QVLXZCIls+|hVAb&Lp(f2`=36rPxWftijT+_yZPf0=w1R`Zb5V?3&R z6EUj{A2}d+z@tABq@xFBrhd}bsR|hM+%Aa;Q%p4TBSKCt9%xK+wq?6o6-!z8TVy0?yb#4q5r6MX$a z8vew&X02OiFyL&$e|vwKstI_Y=BgcRLU5cC`23{wEidaPdL#JXvt<&Qt3z)@vI3?V zWPee#TaC=c;${7hE8lzK_QMdY2F?8u<)9}-GWna@;{jox7@{Ao$Q_%${Ne}nUiBnM#-7QyJddFcyG zr}`HC%zw%|6$+k(SkJR>M1H|HhGfR5#=M|g$8?Jx7;f^N4e*&0x&^lHSTgWJ={ZMl z_>l?G5)HZm+rhhZq z=GvIDFY$UE^?{gU|Dz5EZ&iDOoR>(n_%n!rgE}UWf>kWaA3CaEJa&Rj3kP8* zZGh_H-(zZk#j*|y5dsw!`#`pr4q?(xRwrB)3|{HZD1qfL$S3R?cR|jRxb>V*IU67b z43;xif6WTrb;4^OqT%n03tB?lgM%J$|DD+Nm;3liyEWR&){5m!S^e}Us|Y`!fIUxD zx7iw0BZxEP5nQQ(de+>;unY-j&}DF>&To;s@lV*_+jeb#i4N2Uzy1B-VW8(Vh!Sw^ z@sCuoH2;JVKhnQEhQC?&3IxL7v--N}%`jaKfAa49y^=|D8wb{IGHZx5+K0S+VKr0p z_o(KdBe>D_N7r!!f$xQ|EB7=M8-nj|be*R-ik@P4qDlv8s;;~&6E%^vYs$+fYGC~s zMKHBBBGJMSvXk(d^uNnMZ*KiSImJ$e^RS2EHb0pW{KD46|3`ozxPU(MiQvQuF!%UN5#_sv#xNb&89SV?;579FG%^(h=_d-Ee2U##3t;_ z&*DDk=WEu~5F;VcCx2%uyFdvWAugmaGL50H_pnQ7)@q;V_E>!xgmu)=al}wsO zx|dASc#;3JL|PQ*R0R1Mw&i^8fQq!U6OSwJ-RjjW`smsqDDUEq?)^Q+;q=X^`ZDjV z7vauW24vgRr|Auxo@zJ|)B!|heJZ3f^Y${$L)&IU2Fvj%#D4+-E#B68@}INylOJd@ zjLuxcf`RQ(J(;$=BjESvnV>nF&_z2$Eax2-LYu^pmM1vobm)PxBvdrnSHzIgH-&vF{#`;X&q$(E>{)uKfUIORS}PiGB&D{~=PU{Fd%ekVE;B zsMNELRB+h!Qhy)YAy3%g#^Y&)nzvm&P|a(=+TGufmdDO#q-78clvnW%(Wnq7`P2zI zJW%i&);fxwzG#7fY-D&wf)J44M&BB#-OeFb!B1vCg_wB5v&6DJu5PCM#(<1j^oD=A z`36p^pwVNymS4r091T3=k^Kbr(t6G>9UW1~y(lg9M8|&zpA}?>0zx8E!P7A)! z=0(#TLk&1a`N%|h2woK$DmicKeD3Ixe1E^)r18&?m%dqw-pI*Xdq_QzdGsnuAp1}4 z#=&+F%Q=tvbGqMFKcdZ3GlNj&6Yob&d(X(1yU9O+Z}{j(lc%)S7#7R*wsT5;aM9AF zGZ40Ly27&rb!6A>ay93n#(ApKc8eseYAW9axhLn6Kh|JG!?2~lXGA+9coPpwg?|S@ zpM$$!5OMH`?SINeU*mmO()x@r(Wkr?APlk9jgXc-matqppg{%AjFNa^N)h1O?6KCk zn|m5_C`LP-6>-s?(t4`oRt|Mh0!bg@c@GKF^uICN9sOCk?P(!`e67{X zly{;L?|Yy+93v5Bw>?NRluy#Ux#<0mUjOu_99CG<7rBPhiNnF<4ubPs&8zt!LU z0m~2bbs?0Lr}!mbn}AHARgBsam(zTRmdrY{q$}E%rGRizr@jx<#Ze+l+oRQ}{l{C~wC0@DGyx?pE=VZAx)h7RLoKdV^++05cLosF~hsCt>}lFlJ| zo^kk9K}9@DKXI?1yk#~Om1c5h;@HE2*ch5O$}4;gRqdRx(DJf_69#|7qT2|U{i4~f zA8Tz5zt&b1_ydqea0}!T;>_7Q84I69luUov@*qK0@Nc|%HGef-x*tY>9)+NS{EmQd z5m=XdbMx94eC*MWsPQURc@yumc-4nuo^85&ir_n1wc&sOrW3CSnts(R9ioBTAEDTH*IblOBDZrkGcUO@>pAzmr6mWhYv*%+}YL*b(b}8L=%SG z&75Sii%dlQ>jVKaebnA~h>H*s=Pg}w!cf(KWJr$vB7e&iUOiUg_{+!}pxc}h=!KGd zq=-MV(TL(mOOp}?sht)coO=?^f!dt+F&>$O#Qias^-MYJ(d{GyJVJ(eV^+cZJ=;t4 zfk#$X{m#DA>@MRjZc`mW4&_}#j-cMG1hM5eU7+P7iiO_cpdaKIRQU(R;2!2m2ErqG zU4$aTF@HZ-8>R3mm4AM}s6_wpKG}{AtctMehfPh1!;5*hS%(BP=RwI+@t6QRK*Yb- zE`=3Fh~-t)lp;EZi>_5yV2YT`dVze4dp?2WLhh$&J4{9#ipb}GpsgC4gtr1E2IZ0# zn4(J0jl1;-@s-Iq2_^UOVW{~Pe675I&5p?hRYiEat3iLf#ftyhlyRY-n>|e(+UP06 zMSM_O6>+JCY@Gjx9Hg%S_N~7I@g6{YS(wUA2E-sS)hJ&>xt9D2bu_M>1f2hBTw3## z5_%ENHjo5IY^`V|SX3|w&nTI)Sdu(Gc`<(9rRJz1t&O3KIE@p@el2HIqzDBtr@O=f zmlPJENz;GPUd{Q)utIK#$~AkY?ojp536XbSjH;k&1h7t(L{a_%@Qf&<>(mw+l-QI5 z9J&3Kje=Vbrp?Jap~h5Cq#;SOqCt|Z6M0Sj7`nbk*T=if>m+UsFQiV>Te8&+tE}b0 z?pQ1QI7->|#HzQSY00_|K*9BsJ^IXJ6b%{Eg!T$-k{ss0Rru{Juu*Dwytl{Z( z4A&r$zy3kjxCTj{#D@;(1e_gqYqp-7m?NxKjXnRqz=KAWw z+2DVvXM%gta9Zjp5dNao6u1dTjFC|B7Mp?*evJn`_NSTS_>Q9RhqO7P`$8nKrHP(+ z?peeaajb<>mWSQd?eLHAcA&0S_z+^DWOEqTgTvw@QTJ^yRNlp&I^D(v&*DT***OXo zP8PA2Y~TXekFgX<@c9(s^d0dV4|(9CmHdAP_Xq{KxNlL&5zM~x5kBbX5pFzH={M&D zj`5jHYJu_UuTievVTU{BXkN(H!pAf=bu_TD7hRgUH`U{M3wS$Yttk36^HRGq; zOmpb0l8w=SgKS9ED7FGz6_^;I|2(!O879G`T7n1ng9umF)OdeXyj;_l+U41`uU3E9 z&P^e2ng^Mi(12mmR&kw<{xM78Y%59+(X-*1HtFo9hd3P;uf5uL$P_BC$^AaK?unJV z+t`-w3Sums(!5?`yww$e9Jp1bU@PV=&&0?P~1-`WQaoCaE|nA zKH(8r&(-TY;!?OY=k`B$e#-ay?5PZn!%cc@^$jWZz2IQio0v}y-rM=pHxBc^|Hc8Y zLmkW`BI>{Y!sG8&0Z5%m!qM4Vq0zT51(XXcEmAFs!!JCyz9Iue)cYf|y()hLl}K9& z38t4+>SGo^GB#d#j+IG%VM&_qMc~dUg0d$h8AAUz zS`trBct1)ZG;5nu{A4xee&V<7AVHEd92_7k8wHvvNR4_(nCm$n%c1p>hd0INFKE0V zN=_MR_n{|(GkmT0u|_Jh4g-J7hIR0B_7%vMN0+`yFLAGuUvr$i{zdA{?n@xLd8B zN2XE0{`dl5!?&ZA;wX{$dX4)7MkvH66_-6t^W4M8Kef#PO(1&hX%DE$bD=iUS!@g+ z12RfEC9@^shgRh2#*upMHSBnyERDOa@J1uWDy(-|!Ofc_?VU4#ABcH>v{`p7*uvQL zxE1mGGj=ceS!5`O9dUm+DwQ*vR?~_&(@k6NFsw5KYvWjq6D5?g8Mm+??vWfY+Acv0 z1`)f{f`jMI49Fz|1Jsnh!q{B8KksZG{Xxncc=a= z-wBLL?|jQ&Xn+eX8yn(`3n^n+M&|E~ZSNl`%J7VyO(Tjh7-yFT{s$6&wHa=9L~x~N z?i}Lnktm-$n9?^4K7ZrK2B8d>r5XjB-DcSYCC5%9u6auQqpa^Vk~cTXP+BtGk2gy@ zpAGqJr6{aUCuoT&$w3??K*+Nl`(*2|9Df~ozkLpmYisVP6rkV9B)cL{q(ld`+pt4# zRc~&&sDX%p`fD}#D+=m=$l%#Nvff2qyow>;foo5f4zIHPip44VN zG&N6mxvCBwnLVPA;};OSBQt3=M}rpJ_JkPxG-P0xE{`c|YA_0a+nKi9PLJVPv1Nwm z7h3%Euz;YmTPT5Qwbg&9UPUUu5>X^XiVhdMg+5_b_S6Q$ls4@{ydtbZkA&`YR$7|e z#I;UgndvO%akJHv4M&0Xhyt>P??jF+UCVTN;6wob{8$fEuI*NWKQ1c2<1LA>(0_hu zF&qiA@kHCF+j_Af>Rh;ZGaim_u$5lK0WmYz$^%;Iqc}r29$El-U%Ed2uig9?-CR$fMhe`7E0J z24CqBAS)l20o%kPMw`I&)A%V6HyKZv@6^sj>bMiEUl2)f?R& z;l%hD%NELe-hUG-@xnL^7T?4yg!q&fDvvW+enZ~RH&coJn+8f6U;K-XV1(!q+a(`~ zDG$E%xzf7dQnz#)@}J)a|+x2Mem6rBS8|0G;!HU#VW8+59@v3nW(kD)a)O z#;;rvyh0DxO26kJoWvA_*1je^lc13Y6N&tJWXx%~$=3*f_HE|iw_4pz*J}<{OAPsL z!Vdqhn@}x6GW!2-1i@_`Y?_hl(-(V2UQfLip?a+M~w)dM5;#;cb0 z9J(gz9odi9bN~!`fzo+L_11x?Bp=xc5k>qk5DMXc?uEYpRmDq3Y4{a%lSIt7{SVmy z%pM9)v)zqkx!AJ%2KcWC&-wzPsk%!F zw3S_dEaY8sQiGDZMbo^Pk%V>Ay~-dIeT9u`KsHq`r1oJ>mRwD=GtJ2;;7o_qp)sG? zST#x3O*dmQzg&|3DaTeY?gI{vtz2TQ&uK8!CyHvA->L^(0i_mn2ueLw?-Hr+KH|uj z!vw)y?aY^2<&7A3|KEN1J?G_(y^{TZYI*j5K!>7~1&KrT1D&rs(4VZ={RivK+IM{; zL6p=3H&g#tS`oV)4$z;7nNB0MLp9T>D5IL+`6yPOG%_b>9Qsge(Y$Dtzg4eH0yTJw z)z49Ips_EZ?+1+#B@vt)-Y!B{r(8eOY3X%{Sp8bNJlHWw2lm;mcE+CQyIVvqZ+29F z$#_N!Ojva`Ig}SS@RnOfVf{#qj0;YW7jC2IjA*%XUiVrMzP#SB#oeSgin8Q)+qkyo>1@9mR$-3 zRIk_XzlZ^t{M?zzS4u+9iZl#WDkzzD8@oiapy`d!t~RSN*ENT55bDXk7|=_3TUU^c zs$;$-J(akSaIGLs%QaTTa+BhfZizPvRhlCGc}A_3V8f8Ixqj)VYvBcVJf~fMd}UMM z#CL1Rf?X|`xh~^C;V#td_mQo`!+|DsLw_u6s4uifkrpT|KHAFU0t{&LcH_cZY%WZ_ z0T>xCa`l|9{%SmRX-S;+$ zshdR5CNQQ~p}L(BecR6(Bq=19R1|b*PziN}A`x?<8&ogE!r87gM1}Y)SXgfmGo!Hs15ga) z?d0~mJ9Lb59~bTlBUaV3lQes;kousxL~jobJMy7IPS|^PN^_up$ij#Mlw1^oP6n*% zfUItJLbzm5v6MNgTuH4OG-*FVMB79FB&#H8kzA7AMk%2qLlH`UQaA?bX%};l67<~I^ zaLnZ|!ao*+OD^btzV8mR;AV+RWUEt5!LOh44BNja@P3?C_gbCRcl>#Zci^1ZqHE(8 z$+SL=DgB6}b)Ttp)Sb0srL9=EXs08=K;;4Pl#6qql``%rs*?L$(Z2V-hK>T$T2a6Q z7$;%8NNOSA(B$U{kxk>Ks=L^IP>$fKGj-9YevO$VrkuimiBs2gKmvTZJ+DL=ziveW zk5Ryo{TvkDm^+EI@*1!Hc$Yi&!IHwOzWWRegW1TN(~Q(W7YfWBdwo>AZOX z5y>4ojJITe*XU?$4@y0bQ68&*AJ;2yqb0YuA1?+|tiDZ5{U8LbRd~`$u9HS)&1D;^ z916GJ1t(@|N?{ieKfL#i62@Zo5RAQYg%SnGXg`R_2{UUe&u5x@5Qj90(3s3gWn_-A zEoh!lX3>T>+K5ei=4wG5(*p6jjfDga)osB7hL-Pt_X$nbYopYbJLbI7itPNl7MkVV z?tEZ}QTp??UF)zL$}o{|n;6S7^>$P3<%s5L)S1XA`VPUmdG9)v^7G}o`J$6;@*Ja2 z6fz{W6-uiMnHr4Xwj&M{fcY-x1)en**qP^8;Yhs0R17Korcq%}^xiz?I78xrE);|} zFH%5%X?i?gffISR{jT1(jmfOObwf-?%k1nok@r&=mcC|K zc${j0p{C8N$myQor#g~GUYru+HP zHTf<>uX1deLKXU4?L`j1tMvVw4yfEfmJ0|Ke~!Eq{}fXt&bt(C&mK5$f;4TUqC_Y{ zeVMhmVkQ2*A^BzRL{qQNAm#*FqLfM~r73wpySSt?5sEAOZ9@Y#3d}B-E@Z4#TuGxE zVQIQeG%x{!y`#L>(iyYOm<#}oh)9+bsqg^K{vuXW$D>m}Xr@gy7BKB>kpOT*o}wPJ zfAhTJL~-46$dS1SX!jl6o3rE&S_J`D%EMp9Y0yA@i9g2*V!D~70Lvg0EC7ViwQIV~ zcf~5RpK9ea3ayXOugEfi!K)K}YvDNSx{guPZxBM|5Z&5ZH6^NBq_$G+8^rwEyx|Pq zhRf}ZzI+g3YlpRJh#aU|->hl#Z<^R^e~iSnI#TTWuMVQyM32f-h2|C3cQ|31OQ(j~ z|0s=1*)Tj{$jlY( zu!R=n)i)vWO~o5DpxvQ+Y>me6kp})xB$!w|7F~%B*o=#{_c&ZpwCyQ<`iML~e^}Ni zENi0qIkyPo>uJj++QL5H^Tr2$+y5Ny44R>JTLUe{+ZwP6>vMkI2Ml|EyERbz_%`0y z8Pt;l7O+bAuVu$!)-WIu`jK21T^_6Bk8t%!0K>5=EB8#KU!mzxPEwI(v4N3a<#=;| zRH=ccG=1a1Pzw5e8%X+qUnX7qO&HWm%~f*Il`dy0%gLFnPzYAEHQ?<(qu{tQ;O7j* zA39PZi;mQV(~?=D>OX2*qQ1fBXCEg2?4YQSYv3i(;=b$tsRrAMXQ}!~ZbFw|4G0+- z8r_k;rd-_oU%nR%a6y+klhOA6u-Gv8AeWI12orx|KVmK*&Xi>sk!L#yE+u2d(z2op z_cx!ANyFm*7<#yuLCLtTZ4a?FRI*~+1PLXk+9#~@6rnrLY9WnL?LP-+iYkxTz>znFS?6ExSJr<6HVW@ zk>r$`Ht!o!3OU=15qB%12PS*e$jx$vNlbm-ewK2`gJPF zT<5wDLe&AO8j%UW^}BuA2)fCjy`vrwvY|J-jiC6OLW<4K+--p>Bj!6}@*7ByNA!RB z>zjBCV|eqa1`0F+KtkJ3|F*ZJ?RO=LH?PCzBOz7Li=6^<0r4DB*e?S%y$c2`Z0lOB zL`OAZ4WeXgpOVsRUKAQ2GY~-D6*q=`h4w8i)py0&!(kQ~Me+Up zClL=5)jt`E%~b@f|LJ@@iiLkup6M62I_8Ts1R*G)&t&JARo}4?9{T42i(oUybAcTQ zlO}Ov{Lqn8w&QL{K#anMc@a6>FMOdm+=o$kDQZee)$49tP|^r}hI@=n6e)amGgNEQ z8>L3&Z-gZMFs4NkTL&wrN+g~9%Q3`~{jk`HU+hCinSmydu3PcgEY^QlVlCG52&SGv@XAFKS3nln1TtJH02#G1yHZlnJ>BS zZD6e(YJ^rK4QhE;D7Aldr(Xz6qkZ~c@!sK9DiU;C$$M(k454nBEk^Scqa5#3tnq8< zIx>Cpn-7O`Pk1jt;pQjEcX=u`JO!orBam-)!?35wotu=>()clzF)5$= zi@VgCs?OBR-Lsl)QgZQ0$oc3<-Pj@HmNOsV%$JN)1q3NWXy|_d@tdu9r+}h?e%@IB z66@c$iN1Wm-1!#Ga?}DJr*C|b3>5J}QP-cu2%r`0%RnW7YL6p)@oA(H)cYN^SdR9= z*IVV9cAxvEMAys6<9X{YYA85S=AgGU@b zO9xHNtVk>7uBv~A=lB?hv=8-7gNmq{!)Sh@!rJbM z)Q!5O^1iOjO_Z8n>E?+E#;s?Ia^$^xQM8qeAw0 zDy1e*)ES?G-)Wo-t zV(Dw#)YI}$73B{Ln@Hk+Uo^t2lfVK??$9y<9Y%lktC#dE#~Te04dG1;haJ)U-wgRX z=tw4gALXtBy-4{nqB9rbPWypFj;)YVUz;5U`8a@l13?&G+WK{i-b7r!M0^cD;m=3L z&Q*Nl#k=aOJGsWMqm(`=M6I~11@H3EtR;P}N5VR)mKSv)j|RE`qPAo5+(Qr^*9g{X zsF>%7 zGnm$IYb_}~M%^S3p!*&O5>&-iZTwW&a0h?d?WM7sq+b4Vsk)AzN%{>|9`BOmfKnRr zilBEvv7W|!0efi-*lJg(=cJKumIv{2B-!`6Y=l`|U`ep=E)w;tITdiw+GoTbz(y{Q z?X@h^h z=Vl3Be8)v9G39pLmmc#z_Yog!0jYtm6V9t`XL>aFcPu3lK}s4RBbKtc9=Xn4<~kFa#Dn;aM)TyltEhS9&9gr!F4fVz(nFFI(+%2) z6xXit$Bn&a|D6*rPVW(#OkYeT-y?sUb>spaaJR^C;h~zwefn^Ozk(n*&?*S%b^J!W zlEOGCuy3#d1J>q98qWCX29s*K2{DZ?;hE66(qR<;g^_*%7yF_YoJra}5elhi)fiz1 zlY|||e=j45=!pIlU*qzP`5bwq=@FuJ2=(e>qB#>0@_Y_wfcWL8ZZ#h26BvK1UB92^ zjla7!!5%QvBJLy@=DDnRXzt_`oly|eoLqCeft-8B<@2z;EH~6f zi=ng!89aw~r)IXL7wN_#8=5uDPfhEeqK_NYdyLXvtW**;LoE@LGQeHc~r)R_ddH z2+;=*q`!NDlH0eiO*AF+q}gabusITJhAy`iZ>aJ}CxZG$^z|&zNH?)*zf-;TNFg#? zF>L8+eU7<;-npUlC4P6B_A3tMHDg(7oW)AdUHy6I9WG6!sAT$lZO9gh?D)dM#An-WXtnsGvoUa zPH>=zfk=LhSYyDNFR@!Qescg4n}^>-Sh6<%n~U5Y%!c{q5LbVN<3lnqGC@!1Q6C81 zm+itEMo%+45I(#*tyOT$ZZ6Y%Jn7rErKv_Ton*&{>)pa*x< z6)J7ve7w+3G?Nu+2 z6*tZT*RQn&5J7_W55AXy^t~PahsCAfFryL9#zP!zST7IEEy6 z42tLd+IK+tV@0l=p(S}kFBBcHqw`4U4ORXalNOpn#!r9WO~*J|Zo;Cstb|Yf_K89i z6M8(-D;wqScR&^l2qr5B#Dn+oNPnAIm-hN4&ho5p+6a}V{6+ov73ta!;ju(T-c+TT z1V4u)5@D`68y3oBb*}z$n5%~t$xeKH$b6V~>f99-ku%GM&wTnqBv&X2>;eO2_6+-f zyH*7E1SNklv}B<4s?Yq2JQvY%6ES;wVbnNph+)9SK?e>8&WfwQJ$gj^Ph~+6^uy`! z7fQwP>l2YVz*5Y5Jm7a%&I4$4S5E`@3BGrEYDE2kFY76$lUtH^uGAF_ec~w&YL5SR zZ;0)#3lzIU*}sXrPKDy5gZNJu?pX%9VBc8(Txfq?VSbg8r|!Rv;BdnjkWA}af2*c2 z;{A1>4Kr3vi9$|a<2rQHm)OXxr5Kj_BAXOzB(+jhh&t;~B2phTZ?M-3JY9WcoEkuv z2<;Zk;uUB7Zz$=wB=~wQ&`+UjRMcFaDcX7p{JJk9IpCuERlg~^{wAhXl2N|DIppGM zO-XL#BgAO)^8n_I@1XEAgI&gPmxaNi*0^t}SFX7?Hz`M_i!tirkWNpIh+l8oR zd2dB>7VRsS#OnYvS3fTBf%V;r{L{BaMzc)4En39BUp)ipq&Q0Yc!5a54NYEnu7M84vy5|o~iK%L%U%JbMf$hWh) zafo7<`kSMMmLLb9h;-jG178;TrGAjnXn3Jp{W^ij9x`LX5GZVpWbt`ZnIi1@8Y<8t zbcBHwnF^^xPdD@cO(XdZslk`rAFaVgp2oVx&*O&LZa*b*`%pe{UnAN?qhC%N^w59! z+=rpUa4Nu!km=<8CmHOHbzM!zi5kt&2$s#o+?&NL#=o=3HIUHN>05!nJBph*o6zJ! zVYz3`%ve$vM5VZxTv2I+p6|Nf^mk7Ubwsy@xo)p{0jFN=iDROy^4YrS zY$QgQk#CW3s;355egE6kF78HIHB5ggsW||@Sr(Q-9ZT9+#~?Bp3PGtIt;{f-dd%hi z)K2EEIT`n_CzE_S8A5kOr?No}?+rCvuAzqBU9mZ;6Djg{kF~24>gL0Eok~*!Ky*`$ zs{F(e5`BtVCQy)8_Kkh))|jr?%o44$5xtuwynUvn8QKm|dC{~ZP@5i-2lamx2CPw- z8)l5`RH`KyVr#^7M}?+Kj4sJdj+Zng`*2!+3$P)r0H620zhPu9E>Cf35>mG^(9i-C z$zH9<D=H4BEZ3n9WqxHJhhinFA)KOQodK*!ms+J9cg>p#f+A-wHO8JO^E zs@7OVoW7TNnpeL@oW>Mg;aq=QpE7@{v(3Rj8!^eaLBz~zPh7>J4fqWNv|mViK<@0h zr{yAmQEZg9g*Bs;wt;NA#!#4sqQBuz-PJ|rLG-}c# zCZirz$|OX~APQ?Jf2M-n6FuQ`63xFD`Q(fqLD1CisHQ1=Xt}iH3r%$?S23p9f#($L zK({f_L+e6_*Lo}bEfjxi;j05NZR)j=$_)~5Xe94^Q~`nP-(Jc~}0({5=%^#kmEZref)% zgHRnf9o2t*i{(r6f_@yl7nQh>T9>a` z#em{*Zaf`R7_si7IdnH5wI;lb^=)@M8b!8R|P3Tr>3Wv`vVjr)mgiX-!tFX3*0 za>aNn=KFfIf`c_*;zS{ds5Y~@r?}IAdnPRLnf`ru=Zbx5{AZV^Us#^3JTR~kzvZZb z-D~ZK1=W8W`;A{}{nflyq$x2>;Vj4mxiZ2~-f&Vg&RqPRL)p`^m7SGPZfEH2S^Z#T zvK#cWKM~&>wgtTB3tpDJ&_^k7%aMTWC2ZlB*b0@C^;<~X(qicfI_p}-T-C>6?kGI? zR_C9}*hh7(VjxqU$hr25%p3dOX$tMx8XD!{-#UNQ#oUc`cRo61e=jUOT8~q?Se;YQ ze1Xf(uudiVO?pxL)ejQMU*XBw-=fJx{F*_AEn!VL`(y>n_fZ>$iG&S)yx z2_t_PsN4oRPx1YO*+|6yp;le*zo3!ea$s0pUnRLvZfNE&a75RbfRn9NWYwOr$oDMa}znMn30<`7ND6jt}$91gJy1h-ObcmBK`sAy0e z4kauB)EhwwePaYR*%lmlH!;@aaCL%%&`f{ruLnLDA-Jeh9pv`({*HAJM$b+gs!)C~ zs%Zdg3?}$eNX`L1t@1q&m*g**SmRkB?byEY7kG7B!>F&J@4RE*X;2J2Dz7RAMjNx< zwd;7revM*9sg1*+2;sqOg(hAZXYTa~6oe|XVS(sg?H44N8{YVv>$1vU+U_hhaan(8 z1UWKNP`2t3h#G3P27E;;XRskHuaz_mG8G}o#o$jvBjyq?@;YprYq8NLE3D|#>$VXv zHdrznt;UwRzt^Vgiu4l%ffio9uc^|TIIDZd%6xVkVSlA-IGD)fLNFq!WCR{UX2d5q zf>owk)tIlp_{wN5GM=t~u6$WV=S+X#<b3#Ur^|T#2)%Ff(b!E6jb&?uPs z8v;6}!IDI|r-`8n$XUyS(~wPEnL!tGybX72od6x&+JhG2p5^h|6Sbe;s0@E0{qwMr z(a_A<&kPMH^Gg`jTf|4Qz-z#={QVy~iAks{9Q-x|D&VBPLlZpijG-a}QM9N^;(+1p zk0+>CdQuPP&EH%jx^OvYqS^M)gztM?+hJUzrhxAQci; zw@@zcWgzM+j|JUvskOUcU;TgKpS$P46S_hP{a$zQ3==V6>2A@K0>gJsOc1t5@a2gZ zjwgINUg**p?!dH5D#=}SM+}G*){i10DXPX}F&4KIlcxP8zCpOrE1~lkH%};I>j22KAa{Sp6nDOp59tXb z?&0hE10>RUO#Cviu|xH3DM4*08a!D83kJi=UWS-JvEF5SnS$UE9>^;MtKMhI?H5K5 zv)A7<4LQ>M$I(Y7hhb2+3q@kJ7%%XdFQvYRlO6}w?*BKifqm*0Y|71mfn`tkF}azz zzioxNp1Nx4FVfdjdHh+j{TQAvn_!q{-MPOZm5DqW0!g87YUll)+KE>H>*tIe3)@(}}{ZILEG z$a>a-Ro+5FO0Zkcr?orkd~(WZY_QwNqp13M zfTzQz!F-*&yr???YRfIx>xQj0K`2_gWrC&-7VQmY?qYwOy?8}EQPfWLY!sZzFg|b-(+OxOp5+?Jvo0GhWWiERR}+&E^oE`|(L zO>@S^p%cz6zmzy`da4)3Z}L+1w&nFzcy`@2DMKm&%R~x=S=$aC*&(AQeoVNqXwBb% zP5;RWAaH-3)(~KOJ4U)Ko0Lf%eD0foV>26}ePin*8mjdj?XCEL7q#jgCSO-QE*y|V z5oJx*((ooXh8h>*t|dSy&kBaSQ_>JYV5 zOF9)JORu!)MaT`j)Vix>^Ottz@V|zQ{HK&+mOuv=>=~EtOP>{>`7?R6g)15xbM!uw4cKj{Zjs)5eu#YMhk#-n0 zb#-g?L?=`$t6rDmDy~aa{pXI1hT8ZMwHtpQJ`kb3^u2#VVU8AB80`{;8t)Or%9*(z zvv1woR<^wom7Q{fpmBxRd#8w9y$B(HdA+F7-2Dn|sv@^d{B5)|)>gyu1>T=V?wffM zRgdWLX%c#MG4G?B(>)qwE0zYwZ}3HJk5OLU2ULa0jYE|bJGml+!T_UHC z5Ncb|t1YL9vNyNUu>hov{8ew(HH+)TJG#{8Vx!Y2vVTBcwTJkS{(ngYX|BOMKCj5q zpXtVP?cU4!ghD;ZU$lbyO|3sIHC9}C875W@$aUB@Xi8^?-=SDMjZp_F)Gl7cFmsN%o{)cZXC9(k84oJ8lhB}N5GtK}>A;sKKXlr5E3iSO zU_)t)6{;HTCu$;>fiu=O=)`PJJlq5Rx}L+K>zo;f~&#zIY;$Syz&Bo;E87 zf8YdzKb;-Y|B8*%S|eL-m>z#ikJ0GSPUC_*#687ZJycl0s;_XgHR256a0&%pU~Or(lo6!;lost_z3loLW#obRO>LllXqjpoph;K z5Eiwk4bdMA&wD+>layA63f6@GuqlG0JS1{ZPV`HhTS=|isUhKU6v}@vV{fRZaJmz} zf0z1>?t=^pccD@7pjKIYB(3C$3J=&!P%qXOnOc2kT%S+n=t=+?*K0qbZ-`&ZD;@n& zTdQzuwB;_#&OL`|R9KO27);Ze}(NE&ib%j~R+%29+3S5~X_r1s6q1uobD7DZ_K8LoQt zc|8hkLhV)b783sR+{tlHL#;t~vf9Bu4THBst?3F7GmQf*;nhR{GC%YcmPq7LD^y28 z{U#|k^6rhO7>PLcIz=Xxr>8Z z>A`>VJ(L@)5P7F3MNbFYJ*`8CJxiqw@^wN(RU767fE3-FZoea~C$wam(I%C5^yIy? zK&ZF~IMIo+Ez|B4b+SlG_^HA6+$M($Yf@WE{v8a?B^Xp<8ggfplIjULNgfj^2e(KX zk0C~7YPyWp!e@VrW!G~S|4mc4Vo(8{iwsUZE!grNuj-Vv+LG^c8Mpi>)q&VbrK{mh zd_drSiw|?-&y(VPQQgTmSh*PNETcQ%(!47Y@L~H3CH}9w!5jfm4kh88R*ik>0w%ea z>Jn3I9^l}671=YO;>($*!i(=JuiSmFb?bGeDr5I+;0AyBao`E=xQXu6-H=+I_;4O6 zV|EbVLe8Y(ps>!~7gnYWBYHWoWg*4;`$2NS=sh*9ztYgRLmFXJIFEXrQzHlu!tunAPOj;> z$!hH&q&?AfSK9BER|L7~wXK2bQTp1H$0u=s_AS35=5rUH{}oJffysv=AyKvHrjJsH zb#Tnc_&vI8YnjFdIJlxSuP0j?v0->?7r{juy}o}<6HouJ=X2fj4~IPu0#;ZcYQ+EB zP0&K7jyo}=Z@KD~cPZ+ZcTmfk>WU_Br5eClNKho#%x=Ge*Ahz#_&;3qA!KDCJ*lYY zf)}c}qpfSdK0v`OI#~fm8s0 zOQe6VYxe?e?9sWW)x#!i_q2-sUPt>I?vR;$$R-+U4*>%}t0!WCZ_r%?pJ`NU2j&BM zelwPe-?Ujj&^LwRCvMb|5VKfG-G9S>Uka4 z29}ESE2E26z4p7|sHMw9FZ$X4G9~3-kFkFNDEso{umR|5g^mkPu>sgyZ2I(x?R|&H zPw^$!)`*~vvPaZ+s24hIRamcWU}=5NBkB1A!EZYc;*&?r9EP~`8H?D-r2$;_C706E zZ!y)6eL_PytYqq7!a@0XM-`f{Gq!I~M=b4DfcP1%nMoKdsxs@XW3?XEJ6N#1-41`v zIjVUfF;NTz-zTA*cqNxQv-`fuy&cVcW7C-z`QfeyQFx0Q*(MO z`Z&RRLN;X>)T2FU-7j5Z5pA?Wf96)`%P!Zb)o$&5(rxJOF5P`i>UZa`nIXdTB{kHt z^ktW^L1;SDUe_6#1g2=2H+scC>6U+A8~6J3F&7)d%+r`tKx3D_APQIZlStv-cO}A) z+=|2R61V^0UL-Q1Jz;8S(O%v##bV5%b&4?@y$Ok;Y{Y0|-)Lcnf%>fE@;KMEaROWC zjsm17ZLS%o|6dv>3v58fd8~~SEO!{^p2k@wbqpn`6Md()O9*6nFeT4!=*#JnvaB%NUtuksc*T4Idr7_-_WF3 zcJ0$*L^QM51GsjFD+Oazs859tHk5#dFKtjS$5L9|fvbJV%UavBY$k-u&}qGx$wj2G z%Rqs)3I8@x9qx|--OeN;A2qzFxj0dWT^lb}+rpG%(Fz*O6lI=xUu%EgEB?90>~VA1W7^+8kUu4)?=2q9M6V-D4zvT?(O=El256(2N)B%_pXMx`#6 zW^n$9YD_n(QJZA$PUC88XfKn2+0=4~q#B(wJAYJ9ODomH+URRS+^Hz*9tm=+b3mcS z=b8M;qcv5hiWS83M+bjI|-O)z#6G>;ymcXS>CtlVvk82xc; zpr#tJa!{swR)2rhc!cr_pJGZsamV$pJw4+<-pq_|OH|~Yu5{TsgiwD&U>Ls>O1~#N z+8*{0OpG2#ORkYpRMUGYYKy8Q?OzMJl;0Q4<&@kKYwdE_ZIZX*HSg1RkAD!rp9l7K zfW^>sMl>4(CxI4j;3$F(vb0Qg1_FUaDhbk1-uKWR5o&+yL=73UpN-G^CLz)gXRjlz z^Jei2y*6G>bRn-~Z9RXRG#ZUKaRs8&O7w(xpC=k!@G_}8L@8x7O_M)2Z({A6h|pv? zg){$Qisnt|0tX%ZIWzsg{40kY6wdRVzFII*K)du8w$Qklo1_JcVva5>V`|}&T%u7M zQJ8nMdz^ph@cZl~2|k0jXQOks`)cPEKs!e~x+x}`pII&I~7?07H zZ`whWBCcUCg@*PFmheJ6h|R0ZwC01z7V#S>-K&3dM|4bXsM~6qN+eg##=WRUG&Qu z)MIycvUZm{n{M@vs_d;p{S;zHNt^f93hP=iDJ)Q$6|Q$+BLLiNS;IeF}f z4-aj9Z+eYcMiwGVNf~vNuoz03SEzB7_+V^zoA4i~f8*D-SAEAwNqVxkQ$lp^30AT# z^qL4s`96T_`x^)2dAk5zdQIS3NSJ?SRbNQ=`+#2GhI7)9k_fhRmT;`pVZS*WqIh5v zM#Ev}S|wxx5C=5+nO5%%gOgYMux}IxeT1#BqV$9*a-^SM>ESWVzS8{@X+mgtkKDtG z*xZQ~7BBB5`+a31^~w1c6OJ5!49`{iMC`h8UVOT;E}ja5Wwm;F#mp)pkbaQNW(Af9R?IFR2~Vz3nz*k zCeD_dWTulYPX`eXYB4 z7jN`^lf(A8nn!Npc?aT}a%O)MqdeyL4O;q`&O?Q=M|^b}Wk+`%8Af~0=23e_tjYU> z&LZyIOAxsHM%QQGnvfX_yF%>Mmkz>qY`vpOLo$u6{rt@5Ewgs>7-GSFM-t%CC2%{F zEaA2PRMUFuEIM>bc7Ae8V&X2Z-P%v5MO-jtPc{t>Yx^aXI}TQFCRaT zBW-+nK=IT+v=ab1K*ql$scf8oP6gNWMj~hMBi1)fs)4HT+L>|zV-@#iWj5z^@vYA4 z_0*=@Q`A%|ZahZ}8kWi2_Ug)OF4S!1w&^`YCrC5;O7_TBF0X!dzy1{A%Adcvbo*It zJ2Q!&7Iu?MRD!91(!oW4R!gH|duLD5Q@Ngs!bXP)d}a@$!O zzxzmGR>i$%SH3~#Ys}sPcY-$}8^e5`qUS4xG>MJGr23R~^UBU%>KwU)yMEpva!qQCmKm;$JK{X!jV zy-z6EN6voX;DA1Y)uNGqdL#V_=X7*O?CWR3#WAGmC*LUa6HpnJ#x$a#`E|kUcLPmA z*VRKFNZe$mp3UD3G!7PyYq-@R@vP2h=KefTeMTCuUmIxuFJ?sP58pA2BI&?-ruRM@ z<~@tll|qId#Fi*-q>_NLb`p}vfPT;a!OI~c;PmsCeN32PHiCA4{|7$x`OE*KFNbaF z(l%|`8c?-H&mVs~(D(mv7O##Q=Sm2XIkie)CJ5*>n7BwjAKWe>`V{q#DV){){=wQS z{W+Q-L8^Uq8!E~MQx5@T6InlC(+ZE<-<(2112*mU)Rf)t~?0=4%jA@8+ zh2Dxu_OvXpRCi7n@?a0+&fuJ!;s;*@0}Go9yyW$E2LFVPEhO{lOtZr{+}67`pU+4| z_H;4na&%~&Xp?0iHo0@iez=fNNW5j^6XavXmR5>8RbU@~!7MU6Hy^SAo}NmNkg6yQ zo@J8}Vw2?*o?t`#i$m~C+SCY^jm$*l5%+NWY2chGB~3t}u4du^wtcoD-?8AEqaS7& z+EwQ!7)wH_@&If1GmPY)(vflwp1MSgQLic1v6U?+`+GUv=Mj1+ zD)ElH%o~w(e}n4YVBy|~{%^(eE<$jTp}k9{(QA^h%7;{P2H{S_{2tR4%X2^2{2Hnv zf%@&pBxZRFtGg#L;5`KmzawnjKSDD`hX%BNDIJYr&^TTZy!Gz6h}%!#bTw&pFHk+f zC{>-?gcJDp%FtRE<-RE7Az9Q$0Yu2|1t2K@g|7E;dt}1Ia*LK9e}z@_Jq$=a=G;!A z5U*F%9<#H{x(?l*`-`R3K6(%HSg}bW(e#D(XTO(B{gI!w(YSm1ccX;Yu3;))^y*pc%lLN-FICyGs$0K7!JCk; z3DJ+qUt-b-jAg3c8>juwK2I%LQ2Dcv$)kb2!EeB`jY7nCnD|iYT-TE@l*VQM0!5~g zh#EJYR+p3hiPhcHpuHLC+n3$sR}{ z?2t|B%Wt=c>#{Nn!M&9RLuvXJZ>5@r%wMy9hm>?(2C*I(ovY1Sr|j~-2Gr03>Un~? z7}VwXK1DLckqOiB%lvY#x*q!f7-KliZb~e~SG34O{13&Nw2+_5MGq<5>osPTND?3J zIjx->f9EFAYxmq=+eSWzHw4aq+9?iiK|KuVrpZ->SLbr! zr`pvYyIeJ_3|7WlikOZTs1EO00qKGhL`wB3!}sSzSPX%GO>>99CWR;5 z>qJyD)Z8zZ0~2jOXx6y?R~*tHUNzc%=i>y32g>)tp$iAdR{TbrI6+;UA)9jxp&a8M zh#6qFWjfb@`21;2bc-4^rBumAT<2~($=?VRQdMKSBfN*VX`9IPXy-ȭxfV@yEM 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%0DitUm!BgN>4x!tkynN<4D({h?L=!gZ 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Μ`o;8Jh^y^o%=(BH;LEZ}--TQk?x#_!8fAL*!wUjosp%CtC2tG$f+Vf|` z(mlhKf4-DHAL9p}VFM2wi@!~PjcphAbGEw6COD&MNW3u`Ok|=r$;%3Ax?}&_TTF&) zb~ZcO#>K5!mN2&<7EfOveYJ;&yOUs{01V^7tv>z#qaMQ!K3Pv2&=}onr6-UFI7uM= zE_iTH6dG%gfnzd>$(QakF^8Yfr?zNl!xy$mf1T07u3!WNleuaZHGDfas{Dt*%7{KJ|ju4I9}!Q6TVn2RvdelV`+V@Ah4# z)-pJHsSCR)_|rA_4IpXaRcR&8u#(^KFSp;|edv#|t^w&biHw`_U))KX;4(G{c~qb$ zf4GNC``Lb!4fbAz6zU7CCF4k#@A$G0mkClyy$I<%h7Y6i&Q{un6Hf;fkSF!t<7??j zFsi!a@GCtAuPD7ch~(W~OW=T$Y51%zb~ZFT8IU+6-tjll#M2*jy9ofNqpL0uPzI?O zFaqX&9w83gzssD?MS^=(?*J8E(1) z6TR^hG(>Cnp|yaZxJ1H*`f;BXfe%YRfGzUVec$UF+cPL`7^0uCNwrJ0xY1Sde|5&) zx$8C~40aQSG|>=8Y;3i`R_Nr}qV*#4=NAZZWIwDv6_WHCGn#^sLP;~a0wD%;Co=wW z7503H9Y>4NQ(X{MuES>=?^tkPrpbuuD{xk0k z1M?=}>!sPqH-LB|YLDBY1`^#Qf3IL~OKt_ohUe@Ot`FFV?8lyprkEu611s%KXrA<^ zL<;8Ds=H^tO&`*#nw4+A#EjOgNgthgD)nAqb4{NM@Uug6Z3GMp0^Lh66%#W^2;QBp z;+Ny&lx*%f!MG@jK=>y!KTY4nl?Y22Ae}~W8;8ku|fqyI6sMXXane%?-!fWYMXYQl>xKK{t(KfTEv%dkkzziU)EL zq>+g{_Ua3fq)=Y@h`v1Kf1;jftQ51jXRPy6E=Vt0ZdW12iG=f>1ao#~G@)~U+&>!L zU$T=_u^mXAF#H7{R;+4Kq9GXytSZ-t4ywznF>Wt=j$p$TDtXRD;s-j+^=Se^K#bo- zi(FJhN`1jlus1ySZu|O6_QF0)yk(;`zhVph;-j-eS>0(LSr`sEf8Ku|xsG?($y-ry zIAb<)IXw?o#UmT_;0JXe_9gDSH-<;pbh;d3NpZ`B{0( z#EHc?R6AD^VfB$gqK3u#F|*R8e2hB1qlaE8_)d%$Aw9o;Z7j$b3%_)q2jG;}d5V!I z{om6ILrpWGe-~s?8E(K#(aA#MlKQ-7ssPU#Dpg$emy)!sX1vj;#hy6&*Yl_y_mu}c zcVCjzpGf4vHEHBE`7hJR6Qx-r^W8?K)AF2|JbJp4{?}m`JL_k|y$l8n-`{y(l(m#U zxI!IWfmW8OYsqBIpvG&OiRo_EuxbU%$GS5K4lZ&Xf6Y(Gif4@MLAr$8_t{%T-!mId zNS(MfxMm4ag$y8J?k-Xq#TR?5m6qNVzUa4bmESZ@@pGk;{_8)T71*vB2Fsxu1Pc23 zy_I-@&U^ptyVvp3SNGkBxn=Ne=eN}0IW}JAEv$FVw)2qh%e;z^p6hrwmVMz*%52@; z6Z-35e~~vDXTZ>^0K%K3-MB|XUbb_yG~AIZLyQBX3CO*_ic20@&+JyLR*$E?F7ORf zS8n@rs%}};HP+$O`5Rz`H;H|Sbj&F%l?pF%>q*G(@sTu5D-R5)v+=WMw7fr6FC=5a z^heW>;{kvg0~u?!kcq*uLY8D4gug&&u#cD{f67HK9fdyF6hXsw+Q32({*D2CF52(6 z9D8fv6_1T!d5XV;X!%eG*=B4P5C>X7riDnkoTAgtGZRb$JnQHp#_SaWv)VU|8e!*2 z3uOd`I66`u_{+!scP491g0kM+xcC;oq7da zW8zbo1POs#^7JzzOO4H>(wZ!n|+1F77gF&P_tfU;ph55 zCFr#Q+iN84AoOEN{c1eT`+j0`V|6u$T@A!+zI~pe^=|0 z@6__8RO1c-RSn^DzK5Lz1;K3e`N-q=5$Sut)QK zzPq#@kVRoSoPHF7+x~33OfHKSf0y~WN~#e#e}}G5w%gZ#(Jnlfj5qJeMn8-%n6S3k z_FP42!BL{neSOdBiNkb`Yp32 z4*r6!M`!!}hE3%<4p^ML?cVzL(ejE!$dx5Xy8#yTHDpoczsP_nN4(cxodv9l^G#cU zR2D6VE|I@A*W^wbhwoY7-aws0VUqzaFx&?`^}Y}h>D74Rp9d}S#t!HJdbrp|($9P3Ia*@Y%83+$8s+HBsVJ;Ug?3tXFr{~|!DMf`pi}GghkNYmt7^yGm5%_CG zTbOurP-{H=cY_@c7XmWrIOFkTYIa?EgV0y7^<&pwSuM#o$GR2Cl-LqmUpKd(|Eak> zO~YF`G@Zg(h@(Et=t?!-wRHY!7l0Xqt%nfRQr*qFKpFe+q6ipO-b8e{Y${GtI<5#9WQv z50=tLL>fe=xeWK+7-#c9@9v<{AL3Jbjo$`ZFlPE(i1TH5spf(Agthyj zC^9uUe==;_3?N__+9ruII)V1wU@PnlA-WT4@rd5Z)ONQ&l%#J9K9K}uJ=L`IQzEVH zp@w)dukkf(kTGL)E6FlyW=K6qwTI`gnq9sOT`Vc{$YBn|=($D`26!lvG7zOk#xk6- z>G?B7L_+nPD6BO!#!&^@iX^;A%%m0qfX`kye*m+d+fR2%G6(S4x9&ro+c(LBNd#i1 z@B7*?^@z zz=}5GFbIDgp_L;F%=kcx$1>pgvn|ft=*N&q)`A|WR$JYuU)pd{oAPLyJ#OnQcBWk) zed-Y)<#d6o>LiI1>80-%8C&bpy-vbYSy(Hr5{j z0MJP(FW3|m<7HA{$RUzMiA3T0nM+4n=U{x?=qvfeIUD14$SmSJx&w#*3$dm0pw(3v zV!=#q2D0aWnBBe&BLxMll$GdV9k(^$f6mp%D$n9K`q*s0fUdAzC<{VXr%3nE1Wrf) zd19j}okr1iVV=lT2Tq&5{YnA&)+NaP0cJ0~rHThL4#7Mi-Z#^?(g4ZTi9no&3UJq$^`ZF?* zuvML9b&(if`}i{tPOxx4<6SYppT)}iqd(lQ{&0V0?hjlfeZ`3w1$@qV+D^W4X6m2e zl%>78o9Zs&jP`+7pHS`;e@MBke;ZKn4pwLkzZ+}-?l9F(cSX5carMkzO~cSewa|9jm{xMmPk~<1ieW#G6paO9B3HP( z1gPW+=@scy5p=WGrySQq$eGt7y(_i!g6!DQ9<}(|-5_-^i7b@8?jmO}D4T9ZJ6llbp^0TmMAca)DQ zL97um2To)fk#))86z6Jiyx&R>(bC*Wz?4t>T#(3flbZu-h)kdze~7mChhjcm7(Hci z2+P4ZN}=7n&~ww*Lm+1lO|I)hQHSo##(L2fjLcj0cw--u`u1(axtu*km5?=AKyT!k zPbsZR0vkYdOBHMj^R8mAs)6FZKTVt(?e^5jfjgF=Hu{2*w^FwKV zB+ZYE@aqY>7Mzg~ixe;C`*xu;ZM(x>qAsZpvV02gk>=0>@1ytbpk6Y9xo& zP8_w+m919;OtTYT5$`EqO#li#l#*+daRApN<^1>Yr|mLj>~cF97h)TEJiqoyEf9CX zn&)Tu9_+WPf2~$%)F-cNSe14FgjtMGsE{;~je!(2I_nH<+Sd_SoB3`y^`ue26&?;u z0WJ!CwS6HD^VwB(FW{GR^J)-&DKAc%h@uybK4q@aXDOOhuE@@rZkfdF4`!a=y3_jNW&WfKgJebrdMa z6%#gMW7*Nt6MmZBMrwjc#j_JBB9o?cVixQ5fNDR*V1^`E4VgExq_9CfKfk2UT=%as z$PBbmAd1nEG8wV`Gl$E83;X4BGIW?)fn#G9!ov`qqzGxc9+PdM{=UbPpUQ#BRP+fO z`$jH6f7zeNfD$zb+3d844Ua*1#Mbx_NVWTnBV*hVQgw}nv?ddF<6nL5Bj=%vy$1Q; z9g5wCAroB|g7?if%vWv0FUIEna%@?Yb#F)J9F;1MA`xacGguiBtTP0Y7u z#QsdgvUKlmpmVJERC<0+VK?_3U+b9&G~coHo=s|=TTQ*Z9%&<6ynt$wszSZa5hn+s z_axm1UVFE%$>NU$TxQ>Zk>`2oLuCN-2ZyL|MtY6R+`;~2UYmqW{Ua$Jl}2iMSz8{~ zf4K3XOEV%iLOC^`?IUg~#4xdHQiTX9_bW1Kk=Y}b&N%|0QI#lrR1z5@HeihKavv$+ ztOEJyo{)~vrdHt?)NF2-Pm0i?w|CC;wiZDKRuTyQIxqUC{pQ41rcP~{HR~6Jtx<-^ z`xi5%c__W*3Ni}xOyg2QB$5<|5j#yye~A{7Dol|lnQDKm)Ot!tNlEoX*z;S2)SB)D z)eNY;Yx1MMGmw5HVcZ{CusC3M3`kW)q60N0eR4H#-&QG3)bA$oOoh1JG{q(+Z>m?8 zHaO?Kzk1iz-|vii_FvoPUXe3)%0@cAcfrq)9g$ydHXVoF3CVW88rb{Sf19uixBpj58|O z7n9z_NA$)>ultW9^#_;z;(}w-U_7n&IdT?6oFfm3RZK#NyMzpb)q#EL+}|yNoRQun zFWjsrar#nv6K~5krv@l?!(VY!e{(pK)}59%7y9*Jm29Aii_gSXsR>lKDbYhM#t$_1 zwoANpotVY+{!qlZOZOXf`T4|pV z&`WuDM5xp4M9nL^U9I%DlQiWEe-?&{E9*hp(S%WchBj$2_SAO$nVE#PLl$f|y{Cm? zC3fetX*sYYj@km0D3a4Wx@KiyOoK`TO+_6pw&^$Sbu1eW8>!^|EcmA|F*Vhk`rT6) z!9m57K&H=@Ox4LWmP3W$e^9)#R3j}H?!blSUNhkpG&K>THzzVJLzAN2MtFD~C{V$~ ziazvV85V^NMG0565I6i-M64eQ9ykXu3aFIeGNoZXAgxaQyFNrb??m*%YGyRlk+dutqr_Y2v0A=u@dhb zUpfC~NU-ap&kFDU0<=Cc)Kmq`Uv!33A`xUf+3@cY7=DZ3L9jkeU>bxVnZ8Ruu1s+8 z2Q9&T9YvA7*0NCie=aF-=@G!;5!K~$M_LK}mLN!XoSbKf*3N~)Ok1+hG)g(d!>?%; zveS4!{U@46;tV?zp2wj15#W|)9xD<<7qNlw`4YFD(@@6;x%LBg`og%+vrD^wC&;3Y zB&qGsgb*i+%<&>5u@d$#69O;oDMAA9`3WWsh%|^bsIlsee^ZNcMj>*wEaMNXy>a6HQhG63vzfO1bZ`N6Uny(7lp_MUY2R@2qO{|ELYPsnJdIGo z6~Sq@;V(PM>`P zuP?pqf4(u)@9A@m7q#TUbr0-ms30qmw~z(Nb}fXI`**u+es}NP$P4XHF`bgPDQe<8 zaIG>@8QHV7Nn7P2>)`(we_xX?f9F_r$um=xA`7uM^5J!dE_31D3@S%WDc*CTo6Jx1v(y!?U66|bC+x{?gT{K7=5e;iV9aR4{)1xtd+Zk>F}_z;4sm?ozk3ZfQMxl9Tv~DxQ$e;8R~YR;AMQ4CVQ}J>z?% z^MJxFv&~d4!Cpt5g9)EZKPLsJ8AcGAvS{g}7R0GYMwf~OTvt6jEJ_8KY?fS2l(dD7!vM=wC{>f^J z?s24KKv6OgY<0tv9w6!ZY|h?B_C)Jj=3IpdTljN!j0cz_sT;T@Zle&NAS8dz%T1}$ zv(^A-cw?(s;)zq7 z`fp`GeF_)?ZikB_b?Fd|9>}2Cp}+DT79%P&tinl5!=)V_845~-9+eszLF)x0+^u^r zHGcuoM~Q2nWi#y)C;wX>hogNHZIry;Q-TQL_k%Rc=GOuL$JjSfArp3O7DzZkK*3N1wul7vH31_~!~U2v9{%nb zBtR8?l&YM@GTiZ_FxFNu)J0-(sMq zi)8O{l)ik}qiSO|Sn~CtUPdfq`$+n@k-Rk{UMyVVHkLWy0Ki1f6^8pVE=ibf3PzcZGE=FN7OU+0|pXu~IpSBGlL6+WSC#D6#wcl(0( z)3|+d<56fzDswASc?X2%3s}D?)3qoYslx&^ma-NaTF6#D6_BsbUg#@Y!=P<0cFTqUiF$RgkNp`6Lu$S=#2TKKzW7-J1IKPXz z-V?DFn!W7%+~nbsYCli$8h_2&t$WOrUEgG@l5;!(3%qkAaX@!CYB^gv{!2TBW(C?j zf<)&twLTAxDcMsk>RXm?sgY1eQf7;g7MY2tqP)fPOd~M({k>9Cu|3)sfM7K$u-oZ^ z%;0kKo{NpROQ$jtcvhcBP>ME=psDVUjh_x^`n55N*dlZZh$5BLwtr%-U-wk}<}qNg zKe>hzCw8Hdi;qBzJrsh%%&8CVbZ-n`X(1(Jp#2mr>wTvuynr_wtf56m(+5UU@GBjv znS+D+^xK&YME~7~w&K<|LQ?mit2+Sy1oo~WwT)im6P#1v387Bgj4H`zE>?YnH zm`4h(HSrO{NJ3FSZr)XA2MkZc&s^c^PeTshXa=njBbh|2;zf`{o2=jSBrun}hd{(} zGnHKa8luTr59(1(nIdU%z}rGOpgX~0Rl77-#YYcKd}=zNeW$j!zL}Gdtl=p}sPU87 zwR{lB3eJ1|n}6?yO%pO$6Qi34P5Fa{`x4&~6!SW!d1RcxBVrc7m)Xe`5-a>PArnL6 z1kSV=bG4Y zPq{6{Cz8u2iO{K_evqHAXx5x(d#^VSlp0E!nk;owR*FbH-bx9-FoVoQ(9+R*(E#!d z=}h8~C0A@5iwfnf<5|$OS?RkQ2oSeKY}Nz0(|>23Cd!9_W{?BI;&~7}P7qZTV{oj-N{+Ce zpI~djI=>dLX&QqepDBK^iG(Kad25@wEh9#0Y%NPSoFo--b>wwHs@?V&f{(5P0n)2n z^M8OF7dQtMD6w|!%Hn6mgUQd5yBb6nSxBqjflmV!B%)=y;S6n|N`o-l6D`NEUq~Pc zFzWDu027)77{`#)^pnN^Dh7{wNy%m34UTXM^pwJy-n1;t3fXNEu1A(J6o@1+e(anK zVG_0ZU3aKKZxAdq#DP&`Yw*8&!RQymS#cl-Pzu>X-l-^{I14t;CI*Uk98A_FpQA%T01c7HW_S}DbH#N6xwc@;KDe`{ zfJoW;B|wVeIuU{QRkaTy=tL z*Xr%>D4>wbo22`=yGD^KsYB|vb7nlGFS``u)Vn3?;@unDk2J?X^lpiuG#gQY)JzeWB7XXssTT zDlVAgCZSSSqXeXHVT&hl9Dlx-h6zkH8_pb;uT5uD!^!dh*6RzL4FPeNc;TXI3QXn+ zG}CPfRC(*~ep}!QsQfBuJw6&(^PcM+e{FzCQnZn@1Ed{2c}e9)?_vN~BRO!0MLoni z#z+b-J;k>t&55GYK^JjbKD;|IMVfS(2=ap!yul1{dyD3D=M5t@jeqc$S@#sgYu;!t zpZ!}^JQZ)rxN1Ju_^@&mMe?`q<|a$G!T(O>T4i=Z50XYM(e1f06N1WTw71AldVX^v zmx(Q%N80<_lUA8EGeaYjOhj|=lqOAyeR|!sH@JzwG zVXBcO+URv`I$Xc@NT7?2_%Rd4>DpbU$jV-O=E?7JV%ZT+_=drpVz&{xZ9AsRq;J{3-QSM|K3=10> z?sa9j7vgGC3N)T4YOSusKii z5RjWLja?WN{-(@a={jci;+W6)cGLJEk{kHvPjy~z%<^6!Jo$13t@!H`TwcNCGu=J& z$qI32HL)(;G-A=Q-n%_sdS?s&UAy+I@)AH+4rjj}pnrzzs`q-Y|S^6i|mFe$vw{ff^=colgNbOFyhc1{hzaQ$^-0 zyuW#@({H_>{-1;2&$=%L!N5W2D+QBY~S&><*ZIsNJ;Q> z6yRxTB7a7JVbbp6P%Vi56Fsv-zO#hX;O%Fc@*!lV=1x+SOb`kYXOd-0zx z+{Z>s@V9=N<6D=gDTN~^w&C~)EJ|PP^|1-8UD?b;)Ez<eu>TQ`AUQMTI6cU ztime3UQBF>@R3Q{dh*Kj2U&BO?lY0aU&(pmH91jCdFf0^u5Od`&m-B=qQup|30Zv| zQ-8+^>@->*bKc&z$UCE`$EGO0Hs+Hu4|avj=n(t3yEa~NgUVry4bS6;qZT&Zh(xPM z(Rl6(ePFOs1g7blSeEFT8wKv9ky{dJz9I_%vChVhoh&~^!q&IY-C9vpW9JM|gtu#d#&VO=?ljbgNJ$QN2u;_>dV7+R%Sl_SY;FdX;oTc32~Y=bC~WCfX7Ei#sXc^yGk=7| z7M-fhN~Q zU3#IZId%23O$(RWN+_%MiJ@PaozxEQTF+s!nT{;<;CI84VRT!><5qM_EvJ-A|HSs- zw%r5wZ+nm|^+2soO|EutxZ3LySAQF=w>aD}qS?iq3*Y3L8hs6=tt*xA6KqDx8gU*$ z)Yu)WaB*W)G44*Z%2e}VdjI~F0@Y^EJt3XhJ|QhnJdsSbTj=bZj+NWk%sq@}YP*v+ z9KSFLDoW#pRl4#eg<}^NCq_75hXEd+&)%$r<6Gn9X&y0|Rn4@4G&m9X{C~DwnZJ2? zqO|!kS^X_;X}wxu`Zf7{PhR? zK7zw-_3sz_rkVkp=Jy7EpZcBhVSYcEcc0Alv#8DN+vau4f3jfkPGm;L0{fWiPQ4?s z_?wX#&LSiU_9&p=@jR25%uWDDj z&5Gyd1YaMolGoRk@PCd{Fx*-@T+6t*gVz?OebnViH;uNHv@{YNn|I;7YRV~;Av`_R z1|KtJuHSlA0I3>9%J0}?Sn1>JV-9CxQ^Sth$C&^?jLDXD=__-}{nU15OEc3#g!(_9 z@%tfLrPnhd{Alg5(^bz-?PRt%fER{lt?iP*1M#J6Oa{&5-+zeY4)c*Wv-LGkudQl{ zz>OR8%Re2@ZpyXb)l)PQ@NC{F8HqfN-*~&!TpZ8dw)u|fq;KGt@a49lC2AQz*|dV< z4L@2kj;_o5L2K$>+84A*(B5aJCuVB^L&BlRAxjs6t%NgMrKm!tvveCC+>BS+lsH{g z<1Egi)gQlhKYsx0KQJHI40pra`o}low}Up>H5_e>t9S`7-#hC&TQV~Qrb!sG=);-a z?%F4Z@u`^mI@SJH_2nX%U;dxd-??nQzN%`p*?m#lz0;nU^S^Vcu3ARH6}y!}qd3~k zHBb4cE00}2BLiuS?LiM=slLTl&YP}WDn6@}N|xv~H-A~NES`j`M!h#r!Y>czmOR*8 z)!)d@!etOj87%K~{nqF$pS_iai7#n}nzY`k+rEy?I+U80wqg61+`X>;$B05R?B>hd zw^RHV2hqNv$ad-M+Ht#QjXAEATM;AQ2s+6JMCnKw_h;1}trXg0Wa;LCa_PPy(vQ&k zwS60PbbnMd6S^z)NPsPk&eQU;5-ELbOrbA?ni;>AEu2Ht3L`Nxw*`Gg4gbV{AbhT{ z^Bt`A0yYVVHdelhPt4<$P74+Jk+-ZVsJJ%5VvGe)Ym02PJtJZ=xK0@}T=AnN(`nRF zaMGxap_-$ZKSv;>z+-0jM^E$4_UzQu@;LCTLnR_w~W z{-^75^VgD_+adN+m&94UQoSHC%=gEBOsLyhExig%MY3q83C_6?tu zgRejM+)ho=>cZ!B1FHD|z;laI(j^Nj>`2^^U@b`hl0Gnucx(=TNXr{#Yu5Ly`)FSy znx=cevxiH@!{cAO;yvkBeQ%i`!^N<<#D6QjLt_SqMj>HLV@_myo@jI54ZatKAuM6F zj0ur%Ugw{q7s%>Ras00Vp677H^!+v258)p^ zGJXStQFbjcW6`8TI*u!Ke?1-}2ja1rS<-V{3)uErwrOZ{Yyjevvk8Rs0usUeUVrKG zPqxM_s2g04Z4J7E>|QUWZt~1H170=v(3u)5;Tze5nQ$v6P3)Ub$KYSt)-sD}X#KdU ztxjK$#eh0xTE{bIxC0X>i|8-MN=^V>BCVxJh!oV00o=FTh1f6bpXY{lF-za@-|O+x z2>rL2Cv`aMPp51Ql{ph~Dok+mn15n=7`X+1`3!d`Kho?8Epm~N-BPVi-%1NzX-+)z z34#?TD+bTwURtdNmONL)S(6b%vKpTApH8c*ag1u z&5Gi*TVs35mJC5_pK>ix6grYUPVQsMCwzk>+cib5#XdOkWa*Ge+Ra+rK7Y{##PoEl zZAn1dV=L2^-PX=!X5ZrQzR?HxAPyS5R+?^jCrfW^d^?t)x~CYGb@829!`Ty5oyiZJ zP-9vY-`FgWg_A0CrcFKx(D2y?Nz_D_XPoht?Z1}p?yD69#{}MbyiIXIj3#f%(=qy5 zhO($^?XWCr<+pgt@ag^~b$^Q-(`yMNw-%YQBq%m{(z(TuO(ewE#MGP_J+la)753Gr zR-18fqG$9Mm4XdhXIZoo4{o%DKg(rbW6vMVxS!*{2@@hQ{6zPBvPlF z*96#<$E`@6rb>EdPv;r=k(-E6^XBnNy;g_=A3AQ%YpFIelVGE22UAKwJ*yBW zCV)ly(={_U<$oeEh0ko+uY>=1D_W9+<2 zDntno+W#|>DFuUYt(dO6la(=;CjHC`Bh_Ae%1(@k29f!#YK6|BbUSCrCTFp*n3GeQSp1OS;=W&=g8q0As2?^6K$kftbZu+P&0wTRjd`vpL<%toHhVg zFn`EVsQOt7c>B^(KEuK`&D3OPghUH^{~6^vs!gxUWG7s(V_ehl&IwSCvw$bdo2g^& z+^>*mAaa|uS*xvy)|ZUW@xHHXZJtEv1)X-YMAG+UiY%S&P$L10?NeEUJ8e!RQ}`@& zE|gGdbbl@jkmx_(uRFKiL+>_B=-$Pckr4tVpNx7*mF-sG2mZcz-YAJHcr%d1HM`(lcX_g638cQjfkWpqgi5hLD;$`(Yxf`uj%_`T*9VT4!3Z3zZ zZz#UIKx&aL1OeVr*|zUf<4bfhZ;&ciy0ma!s|tR3PvAlv(Zn7sHj}4Ss?XS z-+!blzf8;+0yvOTkUp*+yQhG9-y($u3TZUjsKR5eJrP7Vvw%Nb3n|yd(8@t(_AGIC zDYBoJQmTV%-B56;%S=M_d9rf(Urj-;Os8OO`h1m`v}yh@=t*sseW}foMT=7-iJfsV zPoI3DMdZ85s{DI*X*=`jXN>dWY@ax2v43_F>L7AG+mMQ{mIChVw>{hBq8O(_B~wlU zqoozkLIH+I(k=Qr2b45eg1B$vy97xG7m!5&IYAEBbv{pw0F;MukK4(1DV^#8$TSa$ zty0aF{6Y7sMDkiq7%s4*b!;E>Br4GnI;Q%nNSx74GEBx&;x;gx07%2CFAb;QZZNK{Qv_)ymJzW#kI zRMpk&z`|obO$9DGHN4237K_Bxh&^LLHb;r%P|4^Ze@bk-d<4}^hK1myiRoj!aj?{b z%rnREq*U`upI1K{7535VP(^w~S$~vAQ3kHEeIQxXgXr!V;JZDKrP%7Ckduk8dfV#T zfdFRARVSN+PK4)P&S`rxto?FT;evzhIZIzX2bTt10V_A)sOBLg;6Siy8R{dlLQ5Sj z2e>84Bb^SO`aC)e?}p-PBgveb& zTLXx4K8NDwKoj9%xl&0}J5Q*odae9_DRS@MoFaZ9)I{N|^tY#y(-O%87bppEek>bo zH`dbGV`8m86kE*|E22>G#O=CBQ?x^>$bGAcDbbpR=)dtWB;*IRE|S(`8RvU%VIv6& z;!pPQxm+|(*NyPiiQnEEU4K+}?sS8IQ?Gmn3Dx2auK84Xs-|qJzCxBU9!UA&A~F|C zR;(HqgT10ch;*_y+T@|dEb_{2zjYZt@f9GsJm4QR*7LcQaf}CCT3>InNnQ~ zJr%OsQ(^wkA^m=o=0{;`yQ4N$`(;S!^!7LqN$#{4-;6>{AGZb3|9`%)a-4E~uKb3a z>6DE8$1MtRteZnxgrWuZ+!_zZajs31%d9+5GB3WYdj8q}s_JY{6EYBq;11&L`hWUuBRAK%zsvx4q!98xy^Wtkm`=LymfISK!aXAu zd+8+nPRA}X0DqPtGoVcy?FD0BgoPe)Bb!brU9v-Ft&2WoM%^Dshbvp(jT;T;ic(x| zJ^%W+*-eY2oX1>JfWjDDEMMrvG1&OIT4V488g zZT~MS#D7FDeUt6CRi^hDWqMJt;KLa+ZT-&zwPUyG=3COdc}GAjsu=7u_?E&Cy^ssc z&h!n9KXMWa``rW?@^-%ZwcU)16agu8&Ahj@-sY zqo4s&FFSuqkj&3aiK%1CZ;i!5jl+m4nEF!6oPTMziqs>Fm*@87pdWEca>rVM)~5Q; zU(Ny#mzN*y%RvOi%LFU+<-7Q0hc+@L_j{^c)`a?}i7P3Fb0v<$wL4uLBVt3=}61)|>tk4w}2vq+lpT4Q^Hx$YCN0 z=6^Fpd2hzX1LOzC$y0qi%?lK-p~icV43qXX{};VXWHY5{;ehg>u~zEFJTN_Mg!-{J zh%#uvKfs{dyy<=5q=tQU!y(7ZTfhqdW@dc*J@sdpK&pNtTuGg)a^4}GP`W){nHd9n zJ{9*|%Magj1+{`jG|{th?u3^M)9R`yi+{1CXq7&lM+##F33OZj!tU=8y>R&yCh?c{ z8~mzoVMw}W;^U#kA2)KxRSfmGkMnkFEwu_3?X--(J2tnh%!95+D<^G#<**oz)k1U} zxAH`&wKcfqNwUO|H)sWhC#z;=DG_eADq&dK8QaTbYCUen$7N<|585-Z3ftz{AAf=4 z3L85#WuNcTLK=(DQY@V)6zQs|=RD01)#~{+;fyQc?b1#=r!ap}8tE>jB_X`h@4udE zEGNM_j@t@gim3ah|Gl{o7RuK0wu6JH&+51xRjfSaHGOP!HEO{X7zW>H$JhNxEczgr zwP(>1R+4hEADdpb+|(DxUxwFTf`6s1jm^IK7aKj&Git>~FL|S1hmG#J>7C@6wydR@ zIlGY)!UcqtJ|mHQA^rj(g3Tw*Kkg&mT`)9`P%US>v>P|$J^CME-zX11@2N9nU%Vk1 zwC(j{<74u({B0)sI(7XvHc8kC{p_|9R6CuZ*r^!J+)WJd?xa&T>>ZARgMYKuTRhv@ z9ijrs%-3Y%72u_`yfjFNVc>j<7Z0u(jiwNuD|pP(f-nt zT6X#c<3N62G<$yZo1W*Lc*R@vwWIGeqt9jIwu{E5fSH-}MPVu*j>K8LMwKUy90GO=iDJ3XU3zYq#;@;cQqypd7y=lfJkMM^^c zdX=B>#`9EN*Dq6XVNsA>O35m}uE)ZPYYOoE42I~38S1gD$EvW%K*)>*oE*Ab(>qEpz#qKvxbtk?HDf#%>=}I`)gQf3UnLBvklS#`9k+bExG> zv&Wj&kc)$7^`KwlJ7e7=g$91xkMEYcUmO>%@V!9_pDFEaBI)UR99&^a>Y7%UMgl;so*pnR4#@kAWc(cTmssM309=I11^9zr!l>+oDA zT(fP^s=Zhv=+jh1x=dR*jL8@62LwZf2>mBBSEu3!H(48gO<l-~=?mAQE$cHOlxo=Lry?+V0hRc2X)Rpr#!#%DJRo1hg zJPyR`)Vm(E`WD$Kcul$D7ge4g`9VqkST1rt~slXwCkp-3QWCz|WhZB2;*N zi|Y*Sjemq@IpkX#UnKiWxeDl!`&h$D{6D6P4Eq|QBIrm<=y76i+G`LOYv$p<6(#!e zPQrt3bjyz^)M4Zz?^o2x{i9|Twvv;&L`Ggi`NY%%WtDqejN!tIjEwG3O#|l&8-?lyk{R#3$?moA zC)m}7)4GeJ+k~C*uq8K2F=ls(jQ&82iiXA?$msPnLVf$iOtqBTxK;!*x8D7!W|Qmq zuE)v+4$@(xg#Cn}0*q90MDXc>U|h0;+n#Mk$~1PVP*>(18fOt#wWJ|mcpOdk>+-NY z6@Qf+GLZg}Z>MSijBBOClqmE4GoQC-tGkO~IlS))W*T{^Ha!n}>MeRi?OQ*%Am^0J zT8*N4{GK9ot_0qwxQX%i3=3Z1AgR#pEGmB(Y1aFvp0tQ)#BjUw@bkiy;2hc~^6<0Z zgGXvU2XJ7zn<~R6;AVl@SmNmFc!dVJx_{oGZ|nL*4~UISd^ZKhm84W3O~D%U3mHII z62A}j>TDlheDAHseO^JS+4q^#?_+NbzT;Hdmdv|6e#S(t>;o(T`)HWQfsowF5PBNOMk&j z#pzly$W~l#e{{F`lp^td_sLhcn>7|QZB|$ES93Jm4DRR&>Mzn^`+*}lS_a{$;vZ^9YV)BV#qzGJ{P3ick@iudM5a9Ps}qVKa*-VbbVw_|Gu5#U$hgZ zp-;51k+vNGfSoQsfBKv6R&>w-e<~P@CKnx=Xv(nFs2*$)nOEvRkNm7&iy3po8XqK@ zHwPrxRgf);fMsFy7&tnqkbgH!EMo)-xu|uf9xolK{%URy%%FlqJ%P+d42fpDR4@z3 zk?LO6Wftu-)Aj1$sZ?L~s_HU$=`+q;_N1@Pmn;l%n zdTR_+sD46VV2w`nzdR*#f#?8<0B!7?PJ2&w_$J-00>-;_58MF_QS>qtNmxDz14xz^s>s>HLfnx~j zLxxTY8z)^$8u-9WLb@mHl^ZgL2;$c{x__HN-fkXy=FB7j%}sol$=3D}Y$f(RVnqU9 zc%oH&>?&-YF{7TC)SxksP0ZmGK{#G1qWJZ+MIvKz`oD4cV1FgxlJ8G##F#+x2;iS6 zE4WRCD2avmotcFcV-*;(;2O^j?1k8XF}fILT9OYoG@C;#rf@cwUZOrdHMB>X(V6rh z1-uDm31)um?=gT!A}dD}H$ijZ27z#NhkKs7JqY_Cy>qJ%H_4oW)1l*x{2}0#@ly0c z;TQ6q#G)DUv464|v}<Wg&OPXs}S`c~>APbkd*a95* z-9;XNStaR*_wK!b3-yld&YK*CxJ_f8L!)^}K^X<{X!-7Ay2_3=(i~dmF!uBFeqe$i zydlZmqb_m^PIpU`M21c(nwJutj)EZfMscpyM@BIC1b@yR75|0^sLODCQG#?zECf}9YvWueUn}Aa#@ZRnCfA5(@ z*J+|=F9U$idN56sENJ~eW4L-`-}&VrQ7u}~F;V~+TkVrYqd;?j)t&u8ddWOBqPFMk z?^+43&3`%R&>-lOs24s|kz%~UuA9z7o@E3m|wT5b(QXC*Ek6$47G$gVZR z0{;}2W>8-3YECNE`)%z1okem?UH3YDj`^esyC?hE>wvZaD)+50C%kgV6*Y~pqO}+S zaw8T=5oJ7tKk&?|h^D7DN|Ldt`8C-(M$EqbJbygSq_jItJmN6P{K#D#w`1y|sSpq^ zq+5LI!Nf#W!QCr3I>`bG6{M<#z4bF|CHkNldBh4qB%kQ|LI$axrb`D?(4!Fkp5x65 z8h}ooB-i0MTG%LwwX^&WX{?h9Lw}FyMtaB}VqkX)JpV{4mV*klgTY|-=qF%o2mDL} zeSe6_yLC@tIP(MJJ@I?>+fS9lkpbOUu9#gHUaO;EG*}Xm_@QRT$3Ev; z$ywC6i5DsC)`MlalIodw!dV3WsGt3dgMV;bIm*rENCqCi$58OzaYU~f@zF4doNCPx zkYm6z$8CCedW@80aNr|#6fuwYn4K^%s5?F_Bes&jd!IHUSubfTW=O?5d@T)jv}|P4 z1V0}uD*V3pc?=2xlXziY-5z;S=Z7@=Q{)L4vCX6q`kH(Xo-z^$yg(wOe_G+gRew{2 z#B|g7fxc}e3eF`?2g}a?(be0_w{CpUgZ>Wmh#CzY%EN+6Pu80 zLJW-4Kx%jpp4|&k$a? zra%f%06<)q8ldtC5%ojx&HBebpnu2=(K;oI%T;57{z%Wb{BB50=ys@j&D{`saz#vt zn6_X0baJRlFq(!CFzzHlu}&Av28Tf`cN9?_eX=(M81IL46tGL~vzLMoAH$@4GeBvV zam}(39WkYa-atHH_Xhh5w>A=D5|o}JeeY8DKL>!20OmA6GQ@$#;%yGpG=F+0@TXd7 zx`w>oA$Y>0f)<=8nUIa-Ezh+a<=RzNO^sQ>}{lUxvdx( zwc!aZFZgjHRo3eKb}fYG)1gF94UyN3tN}3F4LO@e(uh1b2tBA-8^swMV2}I0zQ!iH z;9KnV${n{&@1qFMIRPHMj(<{cjzusyfZ(PHdf=xm37IhFxAAPPmob$1ifV-NmXc^M&V zj5w(0By&TUCQ)N~1{@$xIe(sgD}bkf4t%Z0 zCCT)kh%El-g3`O87fgFOh3fT+hl&m9DIkTEHsrYqf}hVGN@4Z1Z-%QPgGeJzRWi|j z+;foAozwVy^yix5cP>JZJso?*|EEZFd<~`iy)PVuqp}HJI(C2s#6oXD76Zm9)ELz;Np_HdeR#J7hv}Fq2ti)MGivLdu zmd!{_iBMJsSQ#UM`Y^Uy(D5eXYaDAIY(Et{JM0^sT;KpS;eXfh&5)IKWjxd$N?+|f z-j*{q9D;y`2$VINc`Q>fy3G;1My?Fam3SRPv$hvTQTE>Lwf5Vk?Vf|#)!n$a97`|| z#6c}skaY^Aa|lvO8RrtfN**)0TLn8#Jw`t~H$ytvXoJItt6-UnpeB59WY>gE?e`ur z<=&HTUes}?jDNrp*F?r6CiyfBE)-FYSb=0TP>5a|32tC00oj8kTnD`W#fjGkk1oEPL*po&588KvXiEio3|bcYBiz8 z1lO)RyQXYR+n%I{`(9caTm)Yk*$82ECoXXxQfYGDg@0@!1MhWP7C2Z|5TZLqt$`s* zfX-Oc&O+gGX|fhjXmQ*H2jx3xQ5t4V`v4ZVGaS0qOe*;w4%8$^58TB!W94V}V*_0Y z^5YOG8(UoEp%78s3Bm^Y>`P4YYV`Tl3lW&4#?SUR$~JhP=AgB+DAW)4m={03E#g8Y ziXaig9e?vP%T|X13FgKcUO8;=PUv*=?!yU|0;N*MsR00tB=t!Z5-^a%Fa0Q>MW{hC zVP1{^IDtDj_MQ6k{6@hO6Pz)q!E?SFn_yeY(bE%!n5lHgc1un;wANQo^t;LFdgs)d zf}`SE6WUzF&nKF93q0}VM6DCAC*leq=nk_+Kz}Vb$^2FPs84M}Z(|`4+aWhcw_F>xZF_j&6Ic6NBW|j=?Mv$R}VHRV~}>QoOW? z6-=u1do5{VueW*-y?gS31;bs#@Nat|kpO$g`{EiLKa4o}BWb+vd@ya&h{?W*!~+)R1#^XdrMlVZW(m#qvT!zOclHmIEUxP|G=aUSv!Cc3^K9R? zM%@(+G?JUgPVj)!EnovTdxEzvL+*r{f#Pn|xSMi#bNU(D@vfIvJDKD;9D7?us~xe7 zCzK84j`uTuX;SsCw&@%vLOMj}LAd%qO$)aqYz8y-w!ef(77GX-w_pWVzIjI)}(;U&6}XNhc{tLmT@1g!NYs*PZN@ z$s?PPhtVPV0Bb3XV)S7@!*;f2)QfX~98)4%TL&IrRhR=zlS%pgWl5j#C%Dttwf`5znanL|dbVgkfYK4Sa&T2@<{CbH%{&R z<72kFg`-RCPndw6q(vLoBIbJCy7$W9%Re*w`|H&EC+!QUTaUd=|S4 zq#zqb8+auXx&M5&lYcId+?g7nW^CG~Sj6v12=stEp0jq+g^Rckkx{IzS!(hzX|E;S zpd9yO(L3hJ{6H--c>bF3@mB}pRv>e27A>lkabMemhFg3peihF3r8YYM2WgXW(?T3DZnOLy>SVg%n6Xwb{A~~3w3up<|Os?Icb2l_PG#t zv2T;F3k=;>I>6~`GqobVA$p)gYJ~sNjs)tu9}itg({m7+1U#jrdQ~$&(zE!`i_ffC z*L%oOd^tEU1b-6%1-8Hf-^MF~8=m7P55*A~seZp($mXn&^cgvLsQr5pTSLNc@=~~4 zM65z(oexzlzt00}%_Zw>=l|jE-L?{Gny%3c>Te81+>Uirl@w)(h=_=KhP1LrKvd-F z7a21$BC5ph=lS0EAO9Nbq#L0&Sy`Epkr6ZIM6E4w7=Nfb-lN6mH=OZGj~FN8Z5Gd+RXf)5c=9({_VZdm5YVnK*xS!#mdSDSgyiv_{xb zMTK+Byrn!J^pYM%&0T6NgNg||>{BbcnYFHET^V%wg+e0qbP)_({o;3o*P+MPTAuR(6fGs>2!=E>7d zGo;yBIFg?;A9n(I!%xFU>BpeR@DM)sumH{!)lEf8VcX_gd0|!wqQ}D~vZndjOC3HVNz5k$w|LY<^$3IU zjDIHB!&_5vCg99`&QYU;s4EUv7=OM08(#!?>5G(MTn2VCi<1&`D#7kdeujxn)2L!9 zi2RLj7~F!eMHZfGzsI<#j1$*Qr0BR8{K~`OsDxdF4=0`(%ux+Up7Q~)3Gub#o^ z`5Wy~AS+$pATjNDR~OayeTbscD80a6^na&E}v^hLKG zsL?os;EcRLhz?&`L>Bp7Pw1j3_;r4y^nVLk8)X)pqCUHW-yw3EO!W2Cg_6$QO@GTS zAnb=d)AGrs1W89Z0vmabH)Pybm&%6q8lPO{A8VC_633uAq;#ISe<%TV_x8B^m4Cds zfE)_rtEhSGD3%^vWr}xQ?N#$k;g<>qZEu~R0Bq?7L=oJ6@VuDnAaPkLe;)8@N#dQ8 zq&xObzpG+!x7;~y-U+N1fxv)i{u_*{>d`*m*VbiB%SjlU`@m4xh*IY1j0|yS#2Lfj z{M=Zgw!o)y7a3%+A-7~poz9%Su7A)-`&1ScMlr}Oxh&Rn31HDZ5qk`XgxV^Uy!9vm zG5d^%A!X2%OmtN}q){#Ky~9H)WBR?~?4~w-KH!LOaC1K#uG|>aH1f;mp->Zn#Bls} z^M@a!*AP5$oZ^nEhHX>is5{Ph5uqkz3=id3vA1_ zFE5<-5PDpF|J-SFxAU~7LP{m}HVGXTO!{E=x&OSSEqj{4$!npGCV$$*{clc7Hf|h{ zh(A44ICMaVGMi1an+6lcsU{|L3L!OuV38r|)Qkp8mq+mwMI4>F`RzGsfw_P~xYcmk zIxS;9XB>aOV!$ldzh97FX@9c}VzHi-0T&zF^o5%hB?H$RxOE&@xN}$E8t95u1mK|9 z1MkAm!mllF$1;tYJw&Zdoa!@P?Cd(Q(Ys0Y-?eFiaCRohv_{V8ZChnzVw4xIuB9F| zNvaGg$zP7m!m-Jot$P43ej?EW<>&eNXGdjaepDGV_6RdZ4{{jOW`C>=OkPiFZquh= zA)2ddPhaxye{gQ1k3w!mTiD5)d+D>jqL=^dT4yOz1kVW7jw@{J1-U_;`=h;kk7wr) zb3|)^hUv%SKn^ukiZuAlKIWAW-Erjt;;4+@Kv5QD$SNVj_4*!Y4W^KCHq^WwKr$W|3D!{*J01pfLh z3w{KbuUstP#SWDARxgp^Q0C$Ux8a&J{w;{Db%?RGV+i{(#<}JzS+VkP?!1Pbrs*Uu zBI8m~7Sa+t#r%g<*C16u0HiDoPuvMJ;2NQqELYAKiD(F*GlU)TtDrTX+74zOg6Zhl^bk@jT(F+k40fofra z3W%E6*x4cGGUEGtnP#1PTr*nZOy~o)xpnTQn)xS?ZlgL+WK0C4PBuWNM1rw*Be3xcv=aG+2!&X?&9M$G(=kwcG-rwkpfg;~LSUOCMa5irS1 z&?Mn+6`jb0QlY1F+dpdnFmG;)^cc!G=A&I-w*heO>79b|Km^3%Gw;2n-=?FKm0sQT$JoxA-aO&u4poLq-|4C4}Q|p5A}UhO0Kb6y#$m2y$fz32hyz zO#f~$M4uvWn^+%7O~gNau9JAj6Oot$5S_U2y(B`!(u23k+7#II3OkXhq+KLh@xb0i z-4;%^Bdy=KH2YLVlX_JHgA}asa?+xq8y+~x%(U&wBBvTzV2t3~p~!eCT3;{dN0M%Ml+TU#M;uZ2 zM|3RY$??uH_$HWaZC36`Ve-N55uX@Im_ZS5ad;`NX1gJ58W}Ry!u{)MKE-g>&1%5a zv|BR9V&( z6A8pKR{f3e1iOj+;IFum=t%OiG9l;#WYsd0J5G(35^r@bRS9#2oJ>KUk?jWT)46~4 z4@WPlYaFeTwUbmRqDTBSu^OAu3+S1LS_HRrMdn`WjOTI_+xo*M0~Alr{aK z<(ka8J;W3aQBHAG%eyW>X@Ixy*lK^q3-+C!W5e9+-WHzEn%_o1GZ0qn9s#!)0a;jI zlXW#g)TSu}aHMm#lzamNgkGCCb&qWE^U!hX7CbHF$I^K01i@A@L2q@L1*ukkVPb}t z(h#t%kJJQ#sVBLp3puQ?y1eI$3f%e8+w`8bCI zxTE0|Ok(U4@}JMEzmAz%C2*kz@8t{9E)NBy$_m?8F2!!BFD_NtY{}gj>I2__$U>R> zsK|EfgE8(J0_D9+;kIZW-EjezutoP3j5etZ3FZcbTlD=jILq5n;y`hAFPEuuW-2k@ z6!v$?2dz_3CmGVlt?_^2`jmfMqw8}~3*_qYlATh6=9=+_T>?mz3!jEmj{Du-Z#}#r>|4wzG zdxI-+SZ8j~kVKG!$36C|OFD~{W^H(4L({uu`&UwK!uHp%(3?vg zdS@cs5oM=MW#|vzQ_uFoRopDy04F|j=2kw?5nc#Qk;`yGdggy-PXRxzkGB2c9^$VT z2n&S0)yr8^@}0M@aY0+#y`Xfw1qR9Rd%*HPzGLF?K+c)Bpqh zTOnENKt%J^G+U>9Ejl5Z6*-q98GjBKpS-5TS*38Vqtt)g>!4};_0}*o++Kxyom~~Q zW}}@2d9R{enJpe*JAk+Ds2<{3H9+;&ox0XFw`bGXk}n-f_Rt5Yy%j|@L7O?obHp*B z$rkGV&XfpsRw}yIr5LnEH;T!l$72dbqtAm|5VfgDcOezWG@j`nn)Kp5op*)ODQ>}}7a=?S6<2qhFt$}~H=(o0?ls9%28V3!E&tGjgcQ-~( zxx-$36+3l$x;pYuO}PD4Mq~tE-z&EJL^pC_C zaHsd`kQaSaNd<@Aj#gHchAR!ktQ^KH?ChWRnAZuan!1uG&x9sig^80WA5tI9c*c!q zjJbbuy15}R7gIZqT7Myz2P=3-DBuFXU1B($JW7l~`f%meH<(yHOR>}_A+e^8+_4P{ zKhu`jg)P=8nfcDy zAlmlJ7Qbg6d++DT9uM{h-w|H~cdIWT4!(bPlaEHF`vSQ}qKjRHQpG$$K@EiVk=RC- zuf#*1xIUm7e2>oPnwfh7m|#=U{?~GnkyMcPl4VuuKj4eK0h=+6j~+qscKB$K01bfQ zcyGhCP^}zD#^Mk{dSzLOM1!Xt1Zl^_V?9!0{mL`D4oug0q(Dctl|Vs?FSK>(9qO zgz_?PIO`>wars4W<9Rj9t*XET1-j}C<>20<;hpvD|KgMmkd)-1A5U-zyQX$VoXjq1hL+b)n6~d|ATDUw$ z6t)SJ*rF;~@tG+bf8&*j^zExSj_;aGLMF_t~;09>V#<71Xy>2P6 zgo6QLU?b&T(WdZWq>C1=9!4H8~bk<`_C&L z`){3mCEJ+{{faoV!7Xq1S+E5u3XtS-DC>y^<}vUqZCe@M%G?)QiTGB56lIqS&WVpHE8hMX`X8&GN|sZ|6ol11A&$t2W`p) z=dE4{51v#c-o%4azi6nqLQyY_I%f#$@yp%RkpBhQRs5zwi zkC)N2e)VgBK+;~QMDSsOKH~bn2ft|q4yqE)Z1ny1Bl$hVFQb1UpXD9sA^GO%M=amw zX42iUM=!X;7>i}HNe%yMsGDvJ(k$8eM*NaXe2U%o3w_tAYO2O8(3iV<(3VjKuenpa zs7~cseEMxF51|D3<5VtHCQrL&qc*^OaA6DG=U|{Y%0Y34Hb6yua?MQbP8MS=!e3{S zvRosj^O=1^l9+#8uW+YCf-5OoCN(=xn?XIPWvObka@6;D`P)2RIx4huQOm?Yi<&98 zv?XC;8e8mo9x5t~dh(#jv!sBa)r7W#tM@nSfl_!V-nZ0#AeVKMw;#W$J@gdMx5g~! zWTLak8H+Y_`{vgJVg>cETY+)8`DR<%fon+y>*OEV77u@#Rohbfk8DdjbT@QG>&oE( z6?FtGW~`I-vsGEUuK;z0lQ-z)GFsba4(Xfrs8^WmVbB)o1qqe_FB=6srF+yKcpl+{ zdy@z91G;=~rgx!xGxGd>Q`aU7n|$ithDU9*jnm7&_lL20;yx8gUYgv6B$}s4<+fOzwjP30pGux` z7MF+i`oZf@U&BobObOmtH0{vf3W!iqdne38mx|?U<88G9TYOa2v7czZgb-ZM97FMa z&RjD!FP8pSI)9qo9=g_47+Rs5nE^54(dZ%wv z1>l(I9M9rlQIeB$p|NVH4h0#T9IGa1B`OO0owse5MbbFQlBTj@t<83m{ zY8EUN%hw86gBmm1tj=lra;KRW;3sdy;dFoJ|A#?dFp}3dKP~dfGG702)e9?JNmjTt zLI8h$ zUKeN8(`^|ut?f50SL~9)l`c9^S?G4zyFh>G#Gt#Wf%}xRV1Y2gf}xgOhf;LZ&r;e!h}#P!J?ZNuo&pD#*@U%rsKUzV&rxif(M<7c2{gsqR{ey=N% zHaNxOf!h0C@CV5nBW%EzH`}kw)b4D3Ywuwv%m;`aCg}-XtaHdqpBVjo2sDIAs2cFM zIO1D8Fi~e669?~Po&?-hwkc+#fR=x1gosBYOhp>wKAPiKl2cmGdM~nmurKh8+|7^M z%2{FLN9$P0r->ue-IQV_god*sD-XqW_u@!Ptg4#K|0ZJtI!vir5&u&Q-BUH#{?Z8& z5lkrA(~W4l*94}+e?H~U+I)t0q~RH`eo^?nZR#(`QveN~Ed~*)_JoTa{nLM=SnN3F zSV%LMJ&2TMS1Qv7@ozQb^zJ+GZUDucBytTL0*|Tz?*gfv6DRnA#-t&E#U(;u8%_nb zm6xgERxJu9M~Ae4bysr^-hv5uTww}&g2G@)csS`5qqnR0Gm!9QA&hu3lRCWwq_yD! zCN^8X`$otVf6iiM6IstaRPNd8;)uPDrJc6TXx0f{&dgc~HIqez4@NxVKqB=l_ zaqu!WkpYoQPRODpH$i4M06%?`Xp5UX+4od9SqzWU!n<&2l7FRak8&?yf$(^17@J;h znlc)H_t3Kqd@5|U^Vfej51?gk{(`@yk;$%~-`vl?>$_5!&Rw^W(Ozm7siA&&OU_o3 z<*^502x5K6sOwT2*TL;)#c^I3;6L|P-O!O(1}jt&-`ZOy-|suW{jufgx7PZf4qJtJ zGlEvk)L0G8HqXHQ+^48RhAYn6`JEE_I-IX>%D=~1fr=2wj$ePb+DZd%HIpd%W)93O z%kp)|BmiW)fyU9Tj-yraM<}}D$D_MlPct-6LyKjilPekB8s9bF=ZpHzPA`r?ohAi_ zFdf9(>voS*9eeVuvXJu@`?D&-oc)P7mkchm%%r-SeL>ezaHg!&&<;#$o94@p99pU$=i5s5gb-8rhd# ze7gKFy4dyRU`AVoE{zIZ8tr<{toSz zSG*Qyv@IaA?zy(>0c$0bVrd_C@?>BByGQ*cEi|)*1)sh|c=Xm>OPFq-er#sf`fTBu z`-U%T<_q1x9c;UilOblVYMcEXzv3Tnxrqylh&)rm?#GVnwRbsw1=EpZUde$nWv)H4 zW2={dtcia#BiT8Dor`7%X;{=!vEKppFZ8kG2DObFq?M47|r?lbqs-1T( z#_>B@=Ue}4N4xHVM{~-QL{E{n;~d~5a&n93A-1AMgG6DXS!^w^nM`5NS>L&EjxZ62 zc90d#t0u|vbF^mH|7m-dOBJ!Np6h*@e>aKUmeha5gYyGm)i%eE(L) zHuZ{4`r)|l&g1en@OzgPXLJ6aD1W6^ap>xTHn1Z>wj5D$3sU$~;ZS+MuFq4h9r!#r z){y(Yuv*p&Ca7?rZ>njeQIkcfbYUd)q8)z??#W5N{W1Nx@MMwkp9|ghz2$`lVg8sK zG?Wux=8(A{+rwGgj0c)fEknV$>o772(|Fp}!;9~}cyv3;3-FppoVE*Y=DB&!b|~Y{ zJ!e4|o{|l-*qkOug#eEXjtdUD{Am9svRLRK6$@D52JTv~vE*qRLRD5<&8ore6-R$q zDGi5yI{I-8s^ouSvS}Bb&JY`6ds{f0#49k3?8aJsT5Vm&EYjcC zi{f^sxGO9?W5LTVgdUU%K&OH<7oKH4K>6>QE5mTQYh_!|2>FO39fjW}WAev;QX%f9 zg`p8x8E4;aSIg@=$ukl?WTNcfuas?i`N5p~JAlD^w^uIzw2cdq840bT)6sv6cF(}@ zbboOo=rgIohOHW5ZS6c>ncn zWw4MlyKv}SUDoqfnd>LRO{IUZB+A%ijN64PoU{sd{kT=Ip81DQl`qb;PY+IQWhl`L zJ?wN3rD5h=-P`=h&s5d70y2imncLQbe<`k6wS4bLo8Iqsd2j1~=DihKRfsYC*}mpt!Vuw*T!Dv^?zNAKaqg7dLl3xFWd!8xNlR@I>mE6jpz+!a&H)8w7pU z?f?BUZ#VRLFY5Cjc~QGkHGlA9NIrbG)AdRhn>aHYJ^bTuUYMPvdiPys^e2a99}Ow( z^jNqT);m3xUpI(!-0WV@%{ohQ$NR$09yH+%gl-UL<=7}YbN*V_f7>-U^BP68SObR9 zsGSdWrA74b^fsinL%)CcU{8Mc;Y?yQ`Pmcno$@=EDF0u$ML#$LN%V(JKLMNMZR}_j zv~QEydBFi6w~e7L3|tOYQ$pshU~R#XA+eGlm()}{SWoU1dyqIju!B3g`A4ycLh#|w zf64_9Z+_{9;#3%9WbMF>tHXbd}rCYLy>d^kJ`FZ~_@;lUb*Ij=kusXL3l?TpbQ7kX9FA{r$5 zZU<&pyHZL0D{Y!9bO0>=0a=;$#w07MIswcE*Kxiy7qcP?qnm0WhY0BalM>0TAX!cj z^czG&-%TU>W(tay=RylzkvQ0P$uqo!+^YV3Wt-UG?aY4=HswN!LieE2=CZ;I)m{V3 ze6;{7h)hx~k6NN2`1!6tU&XA@xKf=7z&kVmE<{DAL5|ra_7Q2w{iVCo(PoT^MKAX2 zgh$E)v!Mgl&B9OPt72P~B)Ti4c-q{;E6X1;xiUy2%|hxy1+TDf5v;WxdXd(u6k4;x zO`BwjRMUTi=lCu^IlI=3)M<5Tg>nrSl9^<;+cqsKSamd3A!7YF#g4awA`QMsmBRse z>7k9=N$8)09JdC1Rtbxc!Bw9Z zLbBLm8IUm_<&O9LN1LwK*mx=yG{-$Ng&kdHPx-Z7Khl ztVSZ0`I}7J|GG=_1B*^-B3&w6-B*PJcidudr%Tq~-dfwfH68uawjKT*PncIoLFe#M zJeZT>+EOXRKdXh8=XNGVC5z~1Q)*|^&im;Y?_CzssW8^W$!%hX7_P;W+1vGPUG7M* z3QT{ET6Kb;{b6g@XmnvrYE%uQmT4MWCT5UtFIa=aMv(Umd~&romF*3%6iB1)>qEdhSwQaYM-hAuE-3i+l{fJG&v|U6S<^P%7 z71L_}(Kjy>ouLpBA?~l;9f-MA!Pl0IL=rq3G9M z@_Y{ls7atmjxqG82ssfYO#|XUK4)Wg%XmfDYQYfKN|C@S*w_?McR-RI-!5K z?-&x0Wn-}WxeR|(G8UnK#&N;VHL0s6;yK3q&Hv`|vG+a_PEX!l||aC!|l3Y zb!RhhA>DB9%B_ht;k`^DAb0f5RM5ArT^MsaM_sb|#k{*ylst+hsP8!?u73v++OdPX zI|T1d8Yn>WRk%j@N%436c-B{?kw<@Kfr}H?l zPekyxt8@X>K$bHF=4whu@5gi8;?S|CQG+=Q>CKM%D%cfa*T-c>?gA_5qVL(%qj6;x z^t9Y|B`9N$anhC=Bxd-ILOt&}l}FMjYrOf1Q@cUEWIb1E-H(IjO(63~G&g@Yh6CRq5n;H4cGV5SERobBl zZStgTiUQFhNZ?=j*cl3gyWoE?en&|67Z^G%Rb)%VPE@}75sX~m*Lg)j+8H#Ga5*gW zy}$IT*LF-mW!?Q}R|%)>Rp8}ZimuiNj}L$KS3KHjWsMJ0$F!?CmXEi1+K?H#W`1eP z=XaG#gl6yhH7?Y4-cK8bJD~Pmvq;pLK|K%dp-=TrIO4^-7( zblujbYgnplRA@-l$Dm4s#}ky&eH&*BA^c`Cz+?`~eDbhUK}Y6;+qhp~Qz=&jic>cP z==E?-PpRp~S76%#y#jxeV{1G1Ci!-3&nbCY?J!^4WMxM5VEc~wb;XCPv&a%1DB^#w zRBAadzTvk)ETyN>e5NE8jm0cj0snSRf^4CuX+7;TBS=e`WBkQVuJl?n6)9>AXIwAq zk6)#F!m;7q+fP(!rwnVdmmLmb)nWsoYnZ%!CybIG*ePwVwjY1{lKgqa5ayF2WyJ)p z8*B!*y#cID?aN7h=-M#lAHJ%_Uv~5w3ojK7=BRm$sdE~Knsa}vlW<&^ROJ+cCt#%h z!mDkRaTw9ZZwC)tD__+RxQA+mdz2?ahsu=!O@I>x%ofSHS;Xek3;K|?DOW`hEX_so zTw;X1NX~4@5AAmr z>8n{{X5rv|oJe8u9{Vg_A#Oir_DP-Me!?yD6E4&zlVsdp%x3+Vs3;x>_V>U{{{jBZ zCzbOO75YaSCPs8V7ha9jtGY!q{l?=sWF(%2i?oRof+** z4!C2i7+`;o-!CWaL5%{+fkR6O<&QhMHIn9E!D7||S@0$&B>p~NwN#y%ALf7!g3+gg z*mzX_AQaS_SM0mPUiyp%Qg%xGv<|dn-%bikC{-bBJ*^G0PVXsPyYB;Nlmr*ysNTJW z#9<3Ixk8J0TJ=2}q5+BfeF9h8lQ=}DDKY4HC$xXI%IFmg@MJr^^5kA#ns1l8E%*aa zw&!WtivEGiHMK5RDIPu{NiL-FG;|)ZiHamvS}hh z#RA2AcKftifIp0{cGdl=EMPVgN?p$+^i$`@0QqzrkXt@Z{=ywW#aI zr8Vrtkf@)wJCfyj+`uCcV^@E?CHJN&&7Y> zRKpguss7^VhsCuPn2#hJ0D;!8XXVvBs+il#w!w4Ix&SHTizM?{7pyrLxW4FaM|O?e zz9eFL2&+a^ni?hXJ_1Q?_MDj!ad(lW6=+e`mg*)SECMr`)v?Y zFEDLfXXnSRexwL>9Q4g)SCJgl#3_i}K}Q(tmJYl=zhWKDEAqd$7Vq;)h@1o0-mk7u zL$hQb=Jlx1mE$l|!2{YDT+V6i;lAkmZ z2OU~?QwA}(dd;{!{+TY-e<9=cT!-8Y7@hFWzq%n@Lrb$Gwl^lce1s1%4JtMMLex9Y zrSA7Dc&91#YN#&Tr7S#WEhE#uc^rP-K3GsX^1td2URS)noip~=iV6cEZdykKbTicm zXfp~*N9msFvlg^0{KM`uGbVpRC8cSsEdNY+9)#5&_+yVq_R=6c_5EX)-lQKzHKBfX z$>*hbIp+xV(EOvoV29n8=7BSuRU%~)i2_XH+w_f$*nmj0Te|Box8G$9CX-7!z+Jpg z&HMP6s@e>Vw0W$DGWVD7#Wx(+S%u@-&q!v0YI{2o5xV{w5!+D&O#&&+PBq={WsT)`H^2^w$R~7pl zl{X~%wI{hyR{foTxvF{G6gvYl+{P=7|LZX1x8viY^eA$?o?M<;+ow+=L9{{8?GeMf z?!(jm^flxlu2pbpVwQi7GmtvJD`Qra^&lztF^sL4oPW{<%hZuEsI6XOty)jt4W*S2 z_PdjFgz1lY;oi`$pEk(RI{DMWjiPz_VLxUYwreHN%1#l~Xbd)xXGJN#k5OUsaHs0o zpQBiWOrq6*t%lD!@OG`s%0eO7gg9hr6yy&jDl6A)3Gr?Nv5$YIFuEla84flFbZQ49 z-WK^kN`x3WPorc@ARg^rsQU2#Wf0^8Tppr z!G-<`p8gA+gE4GKzfq%*lwZo;h`eh* zZkv5^wIDJ-bgD96?g?#rwBHkmPhAoKE6#2{hom4D?W%3s}94U#VWUMhC;ATdn zd;I1N=G%WgMvI3{ioU7u*dwRmb@V|#_x1XN%w$53*CQ^4mn}g`-Wd2he4#-FN)ouIJCXJ ztAg#V2f^GqLeGfqo+bII(OQf{I;5u?6aTSn9%K-I%VCr;C4>1VO4U1c`R_zoo+)8a zQ#6HFJZjzIiB8i%1|EgnBg^|m>?+jRz3)b(%ms@`-;7e7;e7sxy2TKQceM@9+u9@3zOtDk}?ZTH4WJJj^h>>mhF?8irn6Yujbl<0tdP zlP47`@XwhLI-wDn`NO~fH%aiY@4OFiur0Dz3k3TzDh$`YZ&Y(sRju(_36D26!C}J} z{WXqN(q>lCjBm|GtWa$Rd^OH+b!>mXYGJak?9TixmW|w_R5vAXmChbzo50RAqCAK* zl`BeuJ>_iu)>2*JEVy0Aj{qn+fkpXw<4$rhgJ3*HE}vBIB;ov8jbc9Sd^4rvyIde3(*z$8w+&61)QQV4#4D5e>KECJO zcapN9-Dd?>;0&)3n59_)$QB3lvp^|GiO{3CkQ8lUHv9si#yH*^$3f6LDPeoppNMXS zyPm;0c$g*ubC9g#e%RPANTe=AY_{)YFP3~@{Z~Hz5CnN@0r%yebc}Z)+mLKm$8eO$ z4^n3Dd4_%YhnvpL&8Zt}rFefZiRC#f(!A{-SLPmgmUI%!C0Nzc-3Aq;?MBtx92~hF z%^eB6B|Z+|a{)c!8y~TA*$F!kO^Yq#MTn)*ul~g4tElbyDMmEp-LM$;-d+vT3t?$< z<<)Ea@2>4k3hsMj6{6PR?Q%0R${dNQ#oLa+zut})iQ3H@x#upMLwA3%H~fg9t)$Ld zBJnS%oywaFig4wmZ{kL@UQ{K_ls-nem+y#id^@aJm=fg=NGppo#mQZz(XU_PnJUMZKq9Sg7iM^^L4-L-Y0DX)A_s%=cJDs zr=gLAF^)*V1kU(t2XkB@+`)l3Vygg))!xC z7d~%{7Y3ENOcYv;7^>G83lOJ;D_7z3)`MzzF>e-0mZtMQk5#FMI%9Ayen59WHe7W* z;kTI^QI`dm2LSq(NSx0hYMowK6BIvjtQ9+^4~^dE7QtQMs4>Q*q1k^~F0 zYdKiP3WWaP3JB^#rt9)?X<#p>P&&L2>)1L$uA8Sk<(#-(ZR}_qm}Y7k%3QF6ut1$o zAnuf1X;ec9_}iILMZud%Kymn6hd23*dSEB{#+vRALeh~|{_&d;=%W>Cj#xqiNr$;r zaVCFhtoPu#&?1g~bv#ww!-hU>FxB-}9)j(_t&J_(CRv*E5S4BsI#6sh)M_iL#>9k& zg6zv@J!?U#E!j&Iu8CLl(;OQ+9SN^5IuH(dAo!8C;>bDqYc981p3N}0sVLVoIKDq;G_Bx)C_aM0dzcKexHLl!~$8ERb;(_wQmL`x&pw2-wpbM z-_4%0pj+9kF?KHt;P*-a{Em~CNL&3G-l@t{i*wmEM1zLD(&M*S-+LzO294E7fd_xl z=u$=4Rs^0sseIyLT1PFc;hEo|0+hKQN^{hWEMiAd9a0Y$AyQEPyyY0(Dj2sJZVdOqHN}==8`=(XkheiPsql+ zUkqnZhjbZ$nayZ#n9M7~AvE`fDH(0fWdx?|_+C5r!_ zqQKMd;9iqK`d8emyU!b7;D&QxY09U|K86dz+;x%tR?F8yo!6e*x&JAg*Oq?~|Dch1 za*M(#`CAFH4SCeTx$NmnrrJ<2-}Ns9(oC?0a=@s2JL6l478A&Tl(bF(v!5g~Si_-(YD__cqsIC}qDmv4G1 z>|RuWEWi_97*qYLp?U9(>VijmnZyFaoqEWC<}>^>9G9k0gd^h9n8ymqGvAob!7D$z zv2_97TGK)4B@M1k-HfVmt9yNpPgA<~Mfkv(pDDDlbtVkj_8}eG(7Iy98^&DY^oEKc zV<}Q;w^3kwi`5gZ*8_i?GAQ0H?bef0)o$stF3!2^8G#C z=a66}3(3O(bv7Yills8QmqxVRqvAZDE2dP$KicH`qp=q9Cy0NF5qY74;%EhGgMAU3 z1pRg6V-|}mOPHMIlBps5=hJf;*RB0=KJk{In926mbHwSmUM?W!&3qR8nLemDp35dj z1!fN}lpAwydbx-N#0Tr#Jf7@ER{V>nFuBI6!5MAm$%o&SRvs3MkQt&@u*$0U08Z%L ze^gAqvx5F)BWj!l;nG|3iN^LNDf&nNc3?{|t&f~JGSMLK z*EG)8iqB$Wstl?pL*%h8&`FFUDH0#Y1mzpVjUygq^e)}G2`<;=6~dJv>!`iO9IXSgig_8GzDdP_yQRrDf)w!ZC0~qG z-+Z@-CrAYci{IdiELgA?GZQYua>aW+3|>?^pCPdKHj5p)BM&GIdbKqgdprvHVYfK?TLb z7~oth3~kHOI5C0RvwA+owq1%Nao}juUKQvS7A6Mx!4na4C7@e>7NA018QC^d8ATbl6T}tu*Hvt` z`$T`!&GpGJad|HTzUL|=5JSLj!sbqQ8Vx~!@6npn4k^W@9|PN+KB*N47Lo-0K#Obid(txfB*2>c&L07^n}lEdVi?I2(UkxxK6^EiJ)rddA47T0fXX^LF=(IwY$? zd@PMFF8vs8RRiek_Rjy^s|Jkf?+gC|rg7E3uTSv1pjx<;A{#2Mh0&ac0S?=#k}(hP z`aZ_7fUVcII*Yo0X#(v|6EQycAkpA{2+K(@*jNvW^M$Jjh%I+PDr#EU;Hx7Chf9AM zoL}0G;?|JH@X%EOe{>xGYJ=$7`Dr_IEk8p)x5xM;urGnV_12{M&OFv?&Bk``Fd&rB zFW@Y{LbQr{G4sa%^?Yk1Q7z5?JVj=+}%7rN|Ar^Uf1#d#uZm7p?(yS)*uO|CA0bA?|W?=kfzj7 z($49{7}G4LYnYDWNP^%UJ+>YNVRpQl?7#W<);g~%_O@!&72pjPFA=9lPP*jG$P(=z zrNK=N=VU+>9mW6UBg1xs1^^R6IYmie?ORoJ{Q=}Xg>^_jl-mzc@Js7ASS*XU>1Gin03Z;ia;<$yH zjSiQ3<$r22#B5eY^vQR}Azh(9`9%C;`WefT7D%ux@suqVo_$(^4bpG^6d8NwTi{2d zPH&-CkZJEM?>Na$1Yd7=Og4X#u#4FM%M~4){i5V`eXlF-!e`WvLn%yaikJg_Geamp&i2 z;Ud}DBslJG{6H1Xjr-55PjSZFCN7-uxcG#hz0{-lm*TZD!T$SyR-b=TE|$z3j?Hd# z)?(bxp7abe8!}3&J%vMZKiul~yH4fpy4Qbo)B%1Nz7njrH;2G%Z-M`TBbvjjAjHW# zcDl=V-Lps`o;THeVn1HuLqn?h*x!ZUvB3FVLeEq=3ij>FQe>!g?7b*?{D-%r86h|F zquj41TPxJ_!~TSlJt%+F0PL3*b7zW`{RZ}{zN0>wuurwHF~g23Ivttn<&`N&4mr2B zRwUO#$TfUkm@9wY;j@Qhftm~TODI=~PA(LoHDm$B)Vpw@_?e16w(GFe;E)sbh@ADg zmPBg;?>vMSlk>N8Q+`G;=X0r79JxdLD}@la+v(=hcXqMs94miGMkIxs)wNYCLW#O8 zj~#HATvoxneE!nQur1!Y(J%6IBk+FNp9iu0-U=w&Jnf$0hg^=W)wCp`?##XMbR@D49wS>X$Dv4Zs+={ifx=047C{q z0T}IBA|+zA^*A;Wrna{vuNdjqpNYA8@UsX0>b||pZwP^?Vv4TX9_=?@#)s5-dZe}`&&oEq~v3(`}4OXLb(>y}$J&=E6>L}L7?=ShNkO2F05a#tk zL_fsH^mI3b9dEAhfSaAZ8{)1WqRFBi)Gbknr?=lgoWZY*H=zhMS$Pk)(#Zq}+vS=e z@%S2A?4@kk58-d05AtL4Tp$CF+Ri#S0$N}jqYFJane%fHQej>qhu>SMlMyP*Y5^!o zu&6F2l<$A)-_C4@r}N?;86yN;WJnIEV`{!uYTIS0nO5!K^y6SYED5l4eoO4or<-ai zH@g*_?hz*_Q*xl1dr5 zHk(Xuat^4gzczM&(ZuC$2dLT;cD(QBZjjP~^_qY5(-7!=^Sr03PfsusyhPM|j{;Cl zaDDu-O_?wXllh)R0nxvX@m^`&J$A#<_}q{4nR@BTf{cR@R$;0wNBJY{8iIl`!JOqLBWJM04rB~#;j}6J3 zDZ+o+pBoU!yrRYB8-wL(o+O|)kfO$6e9(}JkPOw=?V~Q|7qndc{@Vp>x#B60{N&ik zpwc}Z$7Wakz`N=?$3p7S6~#iDRkVQ1o+*&vu&I9beuQ_0PGZy?B+-4V?-z=GyeooG zrwD?Z#VO~ywpY1g$iwzE98{_y8}_^cJ#v2;{Ux#4nk5~KPUjkQj?MsZzxg#+YD$D| z_vRXpT48RV&WnBp;YVILz2L{-i2d{7XDnYH#!R^4%CQeP)Je03eNYFrTtZIWi zK}BAVA5Lkx;!JGX59Ymj{HIyxpYibRpU(grIL3KgF2!X~`E=;nI5tpQWFc<*bkTqA z*^JAfyToIXVXAuPpZa$Oyv(2?K&MWaQtDrY*_4Ph-*)vXC4FjSFLwuO6q>L-c007( zq{0C>8lC*eRKTB{#r>It5CeqQ1EMRlK35|#@NOS*)X6OA-j z%A^-P5#mY9nz@OxH=r3&@%l#YTFQUqAo)N$A-e8``*u5%>RN%f9T)e0PP!r3{h~GY zhob7`Dz+LF5Kb{avBPadp`hUjfu8Pi~pvZn@NvnS=0rAqa z>R%C4i#_l9=N6*SJ{F;YqeoNf$t^byQR`;J6=43OD@F+&=F4J1SdR zQJ#jP{=vL{pRZ!4l93Y@%w6;#W@RVWl*+_?_PCa>0rRinBVdiiFRX{aYr->n!~jb` zw7>T-kVmfLWfakFN^(VWDu_ghiYovuXa6TNd_tu zPibJu?V>hT@Hig^VBHxzWjKkxWj;H+k)IPJG3t+X$K6^`eLZb;moalO(HGA=L(YWZ zql@hd-&j~&^OZs!NvB2cS|k>YWZS>(owkHOqvPLNWUYG>viH5pJ0I43~x?QV%zr20L=o!yfU5zyz4V~l)hr&hKQ=bIZdMh*bHKfa3o3P7Wa8bLhCb?9k;(m#ShA46My4ya7UE} zI}#nwymAq|hpgmn;zc(Teur0odTSrb@36hUJ5TlO*UF`weS))Va`qw+?$@|%)1RH1 zv&RW|#h*EDc?y0QLi^bLCR3$Oh+6(1F_#IZ;LZ=IljD-4ru_nZ&j zH2zXQU7Es5-v2YrPBRowFjWdI1LcZ8W|7FHXXyu#gRE43CtB!H$$NE*E$m8W-iwWyTi&&EihYPNOq3lqo zbMsSVzK%m-QuO?~Rwi_R?3 z50>(h6}3+FO``1cP|8@dxzAplXLTAGC#G4o<2Mb%mSc(yHcD@K7k6t;x%G|}U2-)d z7hy;Z+Wrj~v* zoRHq%n}-=Gz4`Wxj_t3xdOR+U?mrSkcgIEoapHD6%2s4d$R4w%>%5$)e4ZzRed3LcAM%ns2 z57-`Mmx)Fc+JOb3Qqe&+<9->w#(Aom=luP_GxV))YEvnHFEwI$Dxm`RQGMee0tc)1 z743p1MwikqTEd4eSHeWUTs&=WQY%+-i)s=Kb9rReu9He(ih=8&CsXg+Wb#vE!poQx zxCNTl)GSVKyB8<77rz6>(qgdZj|Ts%VDM4+Hbq|!V;zO`&Sr@5(MBZ|yIDS;(&`eG zR@T%lxvs(&zoSyqsZT1>A8xK;p4|1?lM)0E;DT9L1PRXbg=Eo+n(_{Rl(<9TEq?ywb$msH$HN%|#|RI>u4Jm3+N%-jQmsUx~>?mIpK$ zO7i5Jo>Tx>ZVhRyAO%*A*-|#Y+7g#vaxlB$cPc()aCi^QCcVKoo)tdS{r;s$^AEV^ zVUC)A{_wsD`s2l}lvI|cUDIg`9~IK9V3MRT!W?L%K^4dgf5_E0aUri3a8xt!DeS+b zmXRjR_|j;dlFZHv`s_JqulrS6i0bH&Q+~=cEJDc#Wx%+E!SyQ!Q%q6zF9x*9kXEo> zs4Y)|>IA;Voc^4~f@KX`df3kORQX2s;#{16J{Z}5Cgf2@VaehW$r{<1lcY&d&eJmg zB?tY8!qszoV6G~M3IQ}YHZX}*_2r!_nm%6TOUEq7-+uBT?|A$TW0-{T2QK8toVtWT zxcXU-a-hYf@e?RDOlX?!Vawo>L)3aM#Nlh!cN<>%2m6)K97KfYSG++*-DdW4d}t7V z;zNPQC+pWZ6B1+`Sh;LN_~SNZrd0j=@IzjEE@)JU=hY1y0adOg8oaehQxG%RxS8WL z3w3GxF9ET(9d<_nfkaaDdUJOjDVK`!`P5aZfN!`@NZUr~MY7F*YC~edRgm(UTE8Sb z@P$ER14eVzYB2Cgf48sO{Kg?9S4L|xP&4R9LQJjN2$(_Vs%1sWLCqh1&1Xg6)2(-}j$nr0LNx#uh?sA0R zQ{7cgCMy4PZ62r*GSfW)Xa({i6-N@fdmD8S`~zth z`NwA(olvEmi6`OTFQa^iwBcf4?-WKp5R7FE9GRgN0s;SCDM2+;xfHMr~NTs1M zmQP2*YwkHa!qh}@@)t6o$;O$MP{;b%o1_u6KP!^6NV(8K;#yIE08F_jAI$ff(BWAg zZ5@U5)Rzm}mC(DSfQhWFz^@RQ-&*7YQDm(7U^|+e8C}He9l^1S!Tyd48JcmBg=l;o z1R5dINJeVE0?`D*@JNWxh$vRWqi>h!AD-=i9^s{8b~TWfmrkQrdo#DajbS#}cRAP2 zmmAk*nSSsw;3R~9cAU{Ky0j#8P2cfI%94@UdbK^-Z&EoAx~XfXNXxG{11swxZkMSh ze>D}@T(oNxG-V@(t;$20MO6-1_@g{k^I8}9v6H%ZBPB+LyJ83zLO~Tk3hr=fwKjZ* zED=7bBObV{1S){0Jg35pb5k<&IELXy%W`VVec2l&kBj|(pNgz_?Oq}z2Ya@Rm3LKC zU<$<`#8s;tmr}41<&kq>paAXWqgmh-z$zr1;`+dXJ&QnHWcRAF!wQmBbtd`hR=`Wo zWpLwQ5lL%m#XxkQRt$R_A%7-p)_oMrX?n+(Xhj+kP#{}ixVLP7Y)s6gmXDEtXP-Bw&3h4p``am8u>;3$oc}p0tn%^$0cyRMk zolu+Qy=KvMjJ}OJRsxswW2Y$gNTv(nZ6`GwlZ29fwZbN@6<}&0OXZuMD;6*WDx@vi z%#l+<6{aU8ffTp;zLx#Wi~?yY0l<2Ph!X^VV-g@(!KH-0Wt2BY_v-k6nM=;kxgs{t zGB!2Z6H&gTTQDMA&3&i!o(C(1p22qy9A}xhrrs&r)bb^7kw#T0T#>ffmdC!5Q*J%eo>1 z7In#zF5_k0@>fQCcirKCCGd~Wq02uAmY?T9Z z8}5Y@W(yWJdX8#_{mi$dAHP7nVW7HX*`~%Dyb$7;SFCPfBIeyMdS5lvQq`nNR8trs zcW|QN7e zEh~>C5|R_4*ky`MKqv+!Y zO850rNq0tIPMg(D?7Jl-u@b9&HgugR&k}{57YX>bIa8D7IA1!aB^A6tWHvf0=~lCS zT8c#liPU}98uM>|m{;R}_9r^Lr{qpzBEYLeOsL`$A=5fT@`>8h_baex-50GMfvU`V z9EIdXkayO&^|OSMO7V|P?GQF~m z=;TU?3w)}y0c_w&E<}*p?;}JlCF3f+B%caHA7;UOak@=^tec~Jk5*+kpeM7WP_}D> zT*19&iHet9!%ceI&kxg++v#`%fIU+lw2K7}xsomU;U(9p3GGgFtKA^947{&1w5s0} zhYb6!Z95)hKoF*k=rn6DLPE8QaZ+RZi-f9Pl;;|STm5E^b9i|H-hS3}CmE-#B6_eb zo&+s=RkVqJU=q~#_`6+g1o5(9la{sy&$#3apG#@Y z37`}5CKqOXG@GR3SHs2!rY!ecsIi(+`decpLsFVj)%3keQTOBbCo&S z@5TANTI&-wq*uqO? z`=Y$k3A81ckjSWhq*8&{kc|GC4d8yoaEk4@r3rg5QW9T%4 z-xcvr(c&-k)FNJyL3|!EoC*98;|f2E6ULMDN=;@7W^r~Yt}o+==!@R$>l;bip8H;J z+>n@m1T)GUl?<~OlTG}u`3l#`6ydOTRpL`=B*|)o4VI-?Q;Iaz2bJSeEO5OiFmjY) zg%%!^40!QEA$HYo3FM~mO-F)3tYg$|SL>F<)`M`3Xa2j$cnmgl6A$OF8GUlC=vDOPCvx|_Dn?c{@HK#O zGr@L|Feb<8+=VWDi$_#2@KAdD8*Mu84G4kE)DF{F1%%oRBMsny-iV-9b%F+5Ru3ux zRPGXSr7sckTZZC!MW=+KMt_Tr5KpAiicZ)HE))?6I*=?8;KYNv@{y7Z2erAR~Os(8cULSbMu8_BXR!3LPFE81EG&v>$80z*oW~14>_n?lY)Z15 zzMEgo*&|oU^HhYI{y@|oM1n#MbWQ7jDBUi$kJ(&h3w#F@i! zOCDmc&~1^=uZ81Ic)v4^HDv_x@%(Y+ib2Zc8TVB<;KPE|!pdJY#OM0DYUF_H(GQH? zc`BkR3MHctTpn;zG1*0;lBi>I4RF&z%+;hkj$Qs8WWLx4g!Wyt0LsMxgKvy~dPUO7 zA+@D-_EZefw{ju+FlEyqLK+nz6y6oQ&qF8VpKU*W^$IR35dTPag$z?ihfH6Tr32QC zsVkG;2VGOP?)}_hLo>-tiq4u~8cGQ1yd%5OXdA7PS0SJpAbs0=vrBQh=Gs=$?-?8#ux_-15^Y3n8cKTdNK5O6dN=9C*Tus$Vb>&?l3X+L*$!IuT^ zY^}B|l~0Inr4wey@h{=+x3G~u7Vy6BPnyX2c;d~q_*(Bz1px-|_@0$b?;IaW-fBA{ z{hsE#_p$DNr-Sn&;FBsX2tG*3A6GGYU$~3=&2d^;^dbglx!h`kbcq!s;ny||#k`H2 z^u{pOKuLp1O7rR?;MfO$S5!YX8Cg5k+{#H-h~o@1E&!W`%(lPJfJawG1(*-QVGjGx z1}|E?7?lb<1*+c~N@vr6ykbA3GU^;655)E7@%jel6S(f09fzbJptQ8f>(1HeZmMNKY3b;MQVOM!R&jtL?(qrg7`8mf~Or^P^v z>#x5578jw0v_sdq4HDbhj4|atF3{hcR9?P08BD}#6v@021{ydHJ= z{{KZ(awd|0#L18Nhb*fzdO&KXHy}VlyZ?6&LpV_52`A3jp98{+GF3 z|9^}Bt^Wo8yS@FTY4vvmHn-ZrzuWej`yatW2`qOsrslo zFx<>n=xi6|%YBXxb7=ZmG|{%cC6iOPKRyji_;5vmfZw=rwEB!q{F2B(00%uX?(A_T zA5cDj)JekWUlaa5s%!N7kfM-JFig+OhLmq3R62(ge5prBXZNkW+gJRuPvoGqA_tu7 z){3MkL}l1zLtFpF!cyj56!mN_8d#t#)s&y^)SW3k;Fo7+^=s?d%7zS^K9u~4XXuP_ z%XSv>ZRd#Q(x*I>{oo)DB_&Z>a+m?3Ae@(fFgniZVfQ%7MtEFBfbT#8oW%d%L%vfp z>w@0QLmduYV^vD;7@_pKA8ag}q~*eSdjcw?t+hYc>EBSV`7K<=)He?blxs;_Q4}~o zh;u}U+f6rXM%zg^Pe`NgTfOk-Q9e^{o3<-OCU2DK{IK%H%^oH>{w~n_yb2>5QdhhU3v660LO=JuAvLv!qTe}~Z zV$p4Xh{EnLNZ{<}q}>9aYNaIfOdg9|-1g=R2=u#BY}8X-AtvWTmz+GxWBzND__@gb zDeymht(BOWLrO5uwW>+~54Uqs%NHVlkQ`63++HeI@8&C$!F<*{zfG^3VlT63n+Bz{ z>eTeTCAN%oBgTowmzkLAY#D&Iw)&qHJ%qPXHe2-f9nk*&GRV5guQ^#(6ehme|5vpI zgA2_~A_~`fBZIyFmx$q#wn}x6G}%6PlvAEef7i|5E@Zf_LLd=%6*A&i8cidAG|r82 zgL8qM#1!jtkycH=W!_D{_|$ipt3+{-&`A(@JTObknigqS6#w-Zy2~qv`+-?8Lt7Fa zGEhOb!k`R)+^25+(T;)AM-l;8Ki+Iiz#z_dBYf3W{KZ;Lo171qXt#vrdE<73-g;k~ z98>kK1c|#){vbTTOrUd4V4k^u0_nEdv*rq8I#i9HC_ZuYZWzBfHdKHdMuwC}l5wni z%uSV&Cy`vmH&ISC>?`1I$MHUT3*3RF^8yRfizabzg*fg8Y+&zTHd5Y**H4A!nV?!@ zGqBDF81*=#qoIfy1*KYR;$}ZeKbeawRrje6*~`Ish}>=cfY0>%ForFEBN7_#7vw|M z%)8YD{YyItVSmOUE6D0LLs3EN_0u{S$eGPQ1ry*`Sw9N%ham+ghaq7Kimv>D z$mz*}o{@M!PDnF<90uQiTsH?EMfLr@-;#%0S3}zx>NP%e+ujmF9Z`Y~BAh>tWB^y@ znQl8HEkBxt+ikl5h&mQtgWFbT7mcSUJ< z$lobZLcM*oiF24{7F`)s@uHho>@`J4bEhArk0QJ;Y9B;|h z;K`g`3b}aGFtk;FLi3XQ(XJj)e!GIY%5m%iYhMRSaEq#%QZ+B5uuc{CeX@vig;F`u zLIHVO(ZZQCp*0Wb9gl1+ek+h^)IwEB@>DGJka{Rgx^cWTB4m49>2Y9XLaEZ@b7!Ro z$yhlqx{}$~-~ST>dmDNbl8&2$y!ZD2#{R1;v|(FQIdO`A2JQZ<&09)htiDZh#em;n zU=4T_S!SkfOmx(lNbub4RgP$&c1{OMH3o9gz?!C=`|9{k z*me679KXfu>b2V5hYC$neX9WCDnf0{YY6Sv*Fds=H3PGS_)}@uN5!t`p`NOg0Z55F zN@ObP_cQS&}TQ)T{z}&qP4NTD#yxTCbCN#jPAFxq990& zlyP+xVS|ogikr1)xKrAi3Lv*LXt|D?Z;Zg)nD+0-g+x3%C&e# zlhSj4SA6saM>V=!-cD5X3quG$hAqAYbo4zIe#zP~{i6@nlfSRbSJCy5#c`077cCvXLI z*fZ0!o7DPbK_bB%+$;>GsOAmFEp3`Fz^#vmBdh zM7e+7TLGWJaTAPTZ>Ah%(!ZnTPjsOKYK^t;MqrT}+4!wldD zbm_Zuv~oeYz5Gy60V+3gyuE(=M>|!_?t8NCEf^D>L+?Oq`oWJ){*mL7+) zoM__K)e;8GuqaLSt2)whjA^_%r)B)?{cj-jKj4EMsWB<2RwHM3h4M62)8=%@F3FW0 zWw&908rpKPuSSjTik%51Q#ZqM!IYfEA^9gcM zy=SvN>Ym}B-eJR$0!#x_Gh8lz)(rR8v1~u0^{u30qOV)o>_o`YciF%kxiM=ud<>a7 z*!0#{-(nvr@9o^0RK?r4W>=p@ql26LtuvsHeV@qw)dIS~ancoxa+juD@$Uy4R*V=| z8EOd#>=OzhXbCCDrg+Z3oUv+Ur~J%qHASncHAM@W&Xct%cHWS9Koi=32h5@fPitVD zBgkR+?m*CvMBiEPI$SpT?_ShT!(WD6Z-p6yCA($3>1C|)t0m%dmARvPqGy8SHQ1So z#w8=LBgvA<<+=BbN_m&-`OTuiX~kAf6m`4QIIaWAUxJuTfO^a*E7On9 z94i=mtkAJ5!0X#ch?+bW7bGR{f02v^I%3a-{A+R)?;%FegpORL#$tZ(s%G}0cdlUb?=O_ zU_+G!8Gmzr;s37Xy+NXwV0}@hx#r^K%e@NuWewt_mo`~di7h{hrGs@yP{u5PRzjK%9s05bytI?7ZL(k;G0YfPd(Szv3ey3w_eo z6voKqUBv4bKx4g)nNsj5nZ^3m_K0`>0)=Ov@w{(zdrL0bLG>bDV`OIhc6Jd3ZR45-Lx@g8 zq&~U%`80)=qgO8lQqf1J;?*3XQx92Y>FC2c0!>YSqUU>s`TYys!iJgau{ysFt)upX zGUKMQcUY7=?@TWO>I5~m^tG?QwM6-ma)?l@rLh;=JS)<)A#5Go@ht2(-Y$&pXrddO zX&mrMgSbE=_m%D7ss1qA6BA%OMkZ{7SN`;k!$RRM{Vw5+$aN zZR@5Gfg4|JH#Q24n?y?A~H?E}%qcWZ_7*XYg-aRQjjmDxu$H^Fa?Z)T2vZ_-;qsO$ObWwCT>_NI8!#09!?%HKbn z@HganyB>ApkzrW{AMH2q&NiG<_V}A{FI#OHUi`>UcA7uixx{1qB-a%7*^96ocX}XkJ$>dY!t6J_0(R=41J|PK3eYcd8&b~;O#*@&7g9B zr$%`2X;jlOSl%jcT3{5N5*W?O%eVHuNZdwbG!KuW5P&{^Bvm%bnnMq0bms*knJomU z`I1M6?W=is1~(GGzteC=Qep?&^u6o>hIi9Y>gs&%*Deev;UPFD z;BtVRkzs8n`j--2$rCi9(Y7ZP$k=6ny!4RI&ubovHiY0bP~hX<0}9yUi#k^^*l39L z(@YI*o3&JjRs_WCR3M30&}OBTHXat?)Q_uN^52;$!H$-%_d3-Q#E(vBiu}885Wrrv zR8E$QU0vlkJ==$qsus&W`T`p~d{0425i9StQ5_91)w6+`9z`BSUXg^Yw zIfL_$Z`&O4OE9nShw+}9>=b*KA_4JNx6b3bpl@p4*kFy~#4GuRxoU-;199TlLO;F5kJm{~RPk58l{$5%7Sg zi`?>XTZdm$UmeJH%a5nScP~^PXfCEoE0j|LBco$;*N-&1ejx}Kt`a}&LPAaOT{anM z92FQ|+?ZNyx8RFt5~`;$3^$O%D(t=vP=6RUUgyMVQU2s5iY%p?qvLyj@v(_76u*%i z@_FP4>_FUpv@@mx_v&UCu9`LQ%XGzsk=tyb)f7lss9CA z1~OHu3p5YUwDu2fqU?{gK=&oE(E5L8N=GKq*UfZMBiqDy73b|^#{GK1w;eZk9eNaV z$3jMQ7C)Y+Sa*Dub&+;|5pW;um8PEU?a~d-(@I&SmH~kdHJ>u=AO%+63E4#^n90*k z5KdcJ0~Q=-*d@m@N{5y&w;Z0u{FSM89g5_oBONx#k;PpU=K0bFi6gvr@zPk$R;^pd zVC9^d9m98BkF9{t;$)HR@^;*3>S;ZbavVBnGm8Pk_P|&AL~V5?S)Fp!D_bFv2+J5k zmA4SH2AN_Wj`sS7$m|>9o_^X=!2X@VhNr7De%cZuz@n6S|Bb zkm{QVAu(jhQZ3GL{TBN~K>gy}V}&#Odw907BPmReF%Q_>DJmIXYv)8z6gEE~gM%{FQ zq{T-5&(PjU7MT0|9JrH;=UWOh*`d~3usFw}`4>u59FzTWq{~^kkEhTX62T?tjRRRw%f5DBb zWdXYhSE`d%0T;s~nZ$7b`60g$z4(?3T!`GIj3-K9DzVmgc{n}PRs4qX+};K6!B50D zA;TftzZ(j&n^uwc-Ija|b3W#OLA(0v`hcEYHk)jsrJ%^JWK zVcC|f{M4oRA^tsxa=^3o-b3ANf3S`GeBXy|2rY~!HAsf6ttfc*Z0KpIgd~c$M`5&$ zu&u%(DaY)CP~;2R#g7w}+5n4^OCwvDd$&gy68tTzuBPn9D5CPb@k zXBX@0Uz)me&J*t_d}m>w6=glFKG*w9*$W0pHFI3z z`Tg}r%jQ!xD!V~$o)qYuLNeIfpYc0BKk<%bw*B$NGD{L2Vl*Ag1|RFk0JSlxPcK{s zNeE_s`^IA)+V4 zC~HTx6l~XVb;cA{e>7XgNX1WqhE=B_7Pp|LF2g)@lo?zfXw=;EU>58;_o_uNr46Iv zy69dyD_YUXMm7h=>vvpapd&1k?6K9=F5at&PVKmBgB6#!+o^kO&+TPgW4vxB)z zQPDS+WyRg!hp@ zqq~%Gu`K0>N}`*NL}zN6Ia?Z2#$Q*74eW)B4nVI&D}}PDA7_uh>hnYe}Mv z3pTWBg0t`Le;(8HMC3P>3L?9DOrO-??J$uvvYo9;T|>0ZEQt_>FBbK39c*-bT+33Q zO@Cw`@QZ6RS#%?#Wqx>56`<7H{_j2${PyiM&6Vw`>USkr>8Pt0OzF_P) zgD+lC*Ar-I_Y3AgZ5NMgfO8zSqf6stmE%e6D_AhYe_0N%kNK+1Puu{p!>gOa_=_Ft zwoj@gP#I`W?99IJFPo<^C3bC?+8f_|o7Dg-v18P* zivOUQf5M*^kN9l&{j(bvxu!}ZzS8@XJKktKJ=nFJvRb6j#F*F^i9Uy6AWy(1;UaZR z9vftdJRziDT~pIGW$O)qmy}mSSpLfgjd7V`J74W8?r@;w`>9i;yXkvHtz}o?@dFXJ zx?;*x&d7Idfb^?IQtCgMKQMn;OSb*CCbf1Rf0xEEJa0I1x3X3@xyclPm@WXhEyqnW zcBj3?$IOMKV(%>@9T$&hAs3EmvZO0HCP|LSu1ePyl72g7%1i&+5jmVGmM)>0=_2ZA znA1)nvVqG$Ah2AjUDr<-QSMV13rw(!zKN?>mL!q0k&nhKIi6hTAyu_PZrjxt8a zM@bdkf{zkyGm{Ee&S7P5S6slyj4kiB83_S5gW%f>$>NZ}4 z3)-p8M_Y~0n1=D7!o%2xnK&}mUHpO_v=3bx_*P!3*3*$u*QKXKG&a=`*9M$Wf6Ld* zD2WFGB03DdlyhfY(!-#^e@RQo!JO-Re1idlKH7NOjfP4t(bCjVfm8eII*Jr(7I>UN z1cxA}0U=~7pXhLMf{T94z4G#nT8UaCf7qV3292k43(n5J5(xIaspXM zJ&k#{X()KtzVF>$iIPkm260q!e_{d>Vx)=iVJHk75!$3}$+-isNR6OJ`n|cM& zq8NiC^U#|9OTPW7o%v4qx6j-1%Y{~K2TLgQ$uVJ7uGvW|UpsNwhA+C&%L1oF1hyFJ zvRKodSzIGH;gr4K%MKHDJ6= zHgV^Ub6K*ZnAsO}<^{U0W-`}Jrd{R=nD=Rxj>r65l{`h@F)Dxiv^BK09$E3u*3w40 zoV7v2f)~9IJ}%k9e=JLRTrR1yJbIaeRMq&JoEtbMj<&z7KrA{se`3CGxSkWGj+sxF z*vg_YTT~8`t&F?63iFw|7C{Aw#Hs6XR<%8#Oz?8q^|GHhOYw)w)+%`~30&;* zuch$hG)}K43gSLIRvXZXaU?h4C4Bp+5N)i85Ub@XYBFUAUbL@)m&h7b=129xg|)69 zvM8XQZ;}a%Ea$!68Q5`ycoKOgWfu9gJHyrUf86ek_#U6)e{A8O*_tl%5M)9Zqk8|w zTMWByF=WH>up4xE!Fl#@RE%o(Dv}>H9AV>1PeiBDt#f`X4xWG6FNP5nRexv>XB3q{ zAWOY>fBT=N0Z99T)>^~Rp|l9c4D}yc?Ucp7k1w5uV**086iZH5yu!Zl90mcjCb1xJ z!M`;f@ya1ne{iGmS@Jn$c(mWiaW2*EL}=s?g5X7VW^%@LO*z@w6eEbq^f|%+XN{CU z?K%Xc;xnU`?BLoFO+|E*&DNOmEX;dzO*P>%mCS%@Ts?`b1WF2AT-_Lg+E@kLk&iTDZw~=~ep7y-$b*Rcuo(fsH z;z>JJDq*G$4wAgPhxzQcsN7xHpMTS3}lyKvO~&lwh@7hR0jWNyD!Dd9yeOeo8A+rO@R zw`gbYP`*333%A>F*3E{j-;BHPH@FTP3R+N|WirAlw~kJ4z4prMdt7pBs5$~mSga}kW90qQ z1%9E}R2&BY8Wz7)etF_}{Z)23F1Q(+X zp21!ylJUbOOD@{~z^#u9?zfaqlA3#Jh(i^{_n1_ac`OJ(pmSKFt7unnO)IOpf7ggd zaz1nMZxk%Nd+Adsf?v&4up4jjm+)vKVwjXN7jd|-lv3YKo}Fu8mjYDb@->U=P$-5} zN?dt{AR7-8tY~rtN?g8_YJ!Bzkgg(EhE%?Df}x*v1qTF!x&v73J~^iDLYJRKkMnoc zRYrp#0BaACl$ijbNfV5_s&tP?e;bnA_C+lWE6otw`SwxWhVSJ&_nGS@hO%yBNfUIo z?Flq8xT54w$*EHbOmC?CJ!0ghg}VwC(4_B_vWov zZ?}q5iQKn^j%3v$uuUwNp_bgZDt*-0WVF#GeFDR9&~)P(k3(sd;2P@+s_<<=o^hz1 zD2S^!q7*Ki2w#-?+BR&zf9n&t=*%P>-2Uz%$u}2RBK?NtC6Lj^UTBGC`HR(4PBeO3 z{}STBl?Z#3F&-DVk1|rL)mxvX-IdSj2nhUsQDC_7BFwI+c9!p#i_X937uuXM{UQO( zqH%9x8h(Cr$V@zxH|6)P+${L)Xu2cVzd7fz<@D}Q;@;v}_Ts9~e+Q0LduJS(#=9dq zG!wJ``Mc+lMZfdD)O{iKxda~m4KH#WSC3Wl)QNeR; z7T6+76evi`vC;?(kd0fj7|WIqyax9`Qo!W0XE@0ZDH!5=pwhp+p;bLS8-}7PV%KB= z>!s(zP}2QE?SD4(pmyghnox5WetSbFmsC4kmVdtnD^reUe_S;Ot^wwue#Kql{GVRp z+Q5J^N=;djOC(x&l5iZV>YWJ4TTM?Z9-r0*C@j;Tv?BIKHEnS<%m-AQhMzs*O1sHu z;entRsZk{J%~vPH&tY+$xa)(RCza=n<^IOgKI4@T*8n1C9L{i!IYL=R2UUsnAMH~8 zO$jEVM^};9e|wVGBK4jVgTjNi@J<^jzZJ|myw~>G8DM^?0NAaUpz6o-km7of3vJR$ z`C9W-B&6`K!|>6B@eLhaVyaY3l+-oC(wUvR?LL{FyCtcuzgYI}+WR^0vIg|R)Os58 zP-fx!i)sFMjXFoU5wH#m?iKCeY{B`Nhjm#F>2e>!Z7G zZ*s$y&X&6~pwi(sfn)(pr~iz`bhG1SRd-jU$VsmVC_(cI|F@rXylnAw9ZymxRVA)S zCHxvLwyt@^>`(sW$o=F>7b2O7EzYbZNNI93g|#*8*d@y-nX*;@b!3P3x<(BF(wd8o zGz`Z~e-kZ%mQ@=iVKk;Xapu?-tJ0*1JqX2v_Z}|78C;q<(gIMf>CXGwdBx~=(`tw5 zF<~ExnZSBLjq8#@wbxyp5AAthQJ*Vv0EyMj)OX`BuMIV)!P*Km&(@rK42lIqp~3oQ zk~uNWUIS!qu&qc=E#B6u0yEJ5xJ27&*vrV=f10C_`AODmm4G3wk6&2RcE2Pii_tmp zM(1?EBB84GXd&1VIp^0HNlkl}67^9dNB8RWkysrGYWXj6h{4i!^}10msdf;fVHgId*WwVarbz5V5!&CyQ6` ze^s~+vIkFJk1`9k)sq&QZSPo#(N9VOnp}4g3bIc!q75w>E7NQcoOd$~Ga70zW|83e zJ^;?@&m6(#uo_2-q(&Y-`ZLiJ5d`-Rni&_PpzFd!=a;;r|ZWz&i?ftN*}_I?1iB! z%DP*5)4#fkc8#@Ra#yhnZ!33|$5W@m1&Nyizs_96A}pe>ui_p9fx5VnzlvSrf4{r{ zsg-dVb4Ll(OpI}9yBXujThUqiFLVz%h2bsQ)iy~0{o7aY-li9!hNVbGbQF0HXkS|L z&o9v6tqPVwB1?5Ua3Gd3%+@C-vDRrr4MXETyb4jmr!L6-!|b<{6LjpB76=p?k^^I> z)BMU$VHzS4L>9uj)?26^>cOj?e;610nfkM$;g>L}!1 zLw48h?X#iL$<77zZ}{qst)ih(kkq;HUQ+|GLnX&8Cg7hUK32KJU}!XifBQ=}nRq@l zZU!3%R>jW5JI+q)z&*T&Jcpo8D7fmUIf1Q*!{6j@lgfBLs11A1b3Inha znpN3h^yFe;ZepicOJx{?-+x7}}RJH-27t4tao_c z&lx)}`&lS757ACSKZix;amwnrvx&#+q7;M8_gR>q52f0l=EHZl$E;>rJQ>-qp}ZYb zntwMp)~NmuS4K+AqiU^m9*Q1r^q|5hY_r%aUI14>sK4GH4<)B4KDi>oo0SRYWm&U)EF-Nc%;PD7B~1?(=lkVxdAlcXUJ)3~Vm05&wCk-Kp(W ze5}IvJ{E=ZP)uMpZKIu;aYKOp8np^-`_Q#}a^R<^F+{Cim-Nt76tNbgW>YRn!|&~A z^nqr)+hRpu`{McCh^SF!y|@vCW#tGoh^*jtk!wXP9#tSOy? zZ`QQ(o+DM%cI6WQ=kQB?bT9R+5@sxbfZnLA=1<J-nmLD~u{4=*y7W*fc@PMrWES2-x z$*o@A+bgNt>8e@!4h9jrhiy*jn=8wkdU7Es)%;@li#@=Kz?n!t0uo3}YuXwWbb|@AVAhnmLDe+rPoruUw6Kct+sCOSL}*UOVI)YefUh z@N{9^SB(=9TKf*-H|W3gs^M4XWPdJxuzjZyCr<6lD*Vj~s2vs)9}VTn;5PI*bjuWD zH;OB;21GoH9MQrHTpXf|`qQEbvI21TFJjpG6OW(l1-G%IQNS{pj<=hdoxCAFk~*@-7ITPD41WW0kWuE? zmOD1pW0P}O0JQX&$885P?et&&RFl>tumc&OWC4Kq(<7ia%&s=WXla*O{_6rM)*0Hc zNo7HAjtqWclDR5xp2US{GCq7P=znMsb{EJ#cBZB9i_uS~%(*2~_xP5f)DD>Mzk3s< z=I4l)Y@X(e*uT*1)L)xakbhOo7n3T~&b+mpmvUnMk-)Ca<+_#Ho<+bmKC61gI@30b zFy}$e@-^+xYUr(*HOFYV3WXm<0-Y(!DX@`AIan;9ma`a}4Iy7U`;7}sAuoxF&yyDU zo!g7Sd-%s~$9Z?b$yNKNOw8?B$x_>`S`dO>K^Y+5d zdrVQNjzn81`DE*QKm%YnSw2*bnJHny4(t7eesvXM^(Jko^P0ObV&w5#q&r_{g7oaM z;omGGI)(oD2uJK?v}A`Eill}GLrv}@b!$9VXKjsvOicf+ZzO~>Q2Mz znHMa3wYIA&UtxuXmP^t24({>=3_fthQZe&7IEIocJ;@}49Xh?9^Hs18i7#>RrtJE2 zi||gAjk(xg8WQ*+Tei{S5fj5Eq9%LdI)#r6A5X_G8Ekm`uMPPVmE`d|1f906{CRd3 zz8`(-F2wmqQPHz~#T;%#b`}@z99%6H0BFz}c*AhRp?~=fN5~O71~DxXOfxE1??cSv zGkiFHUIqk^M(>A5W(*Bk2gxd5(>>q({eCG2>E@ZNp;+=Sy}>KAgr_%hkSYam>LUVh zwo1po&`~VK>C&R!zz@8EZ!FP6<^?<||E%rca?^_~F2n85d~k7+&z@XQytL*={db1L z`uV@I2c8eV-kjI9ub@4g=B#FOs-n5JGw-+l(tqi=*mYR1GG*+s(l)NA98kwx$Y!c& z<+?yhcsuyQSc!MW%MjZxyZq@EX*R*EHMEE|>;QqYag3^nwv;xDytv5Ib9S59k;qr} z;!tv=M7Mye))~ewA9?PMMARzv8S)YgP#Lq>6=q1z&C=D{SiCxMRFPTFk#i91D&UK3nvODDcBM!7V}?)d;e%JkAKK(uWK43W`^(NQ-mQReVrx59+InF<|o%5 zUIvPMlv_=75%8vwS(eh~^(|}>`wB~2=TM#h6Nl=*JI<%CY1H|ro{??EnTzOARYtO^ zi@^nPi^L^sH~TM=wV&%SkBa%?cq=w*x^hWqvBWm~_h-M#vT}d_b1aa;&OHv+{ZZM7 zXO*b}jETEbP*S^$-U1a915X7!aN7f5Hqg}-8qn!`q&(y2VTwMl;-`;DPi4_}Ni=x$ z5P%Cj3M@tdoL17+0EhSF{U+hX-NA$f&-o3P#vl(vfAR+Xwmo`?tvtl|Idh2j5Ea8v zfLZ1tF5RQaQ-DW~Nw1#;;3PG!F;8z|oO^Y->dT+ruK)olB+>ZW}os?OK~;C4!#RrtDqHwW?gwT@l?`=Kp{7;9D)~~+{9c>zalgv0BAtL_kS1oR8Dt?9|IzXQPdF8o$`Mc$0GWj&ab?`IRG)LGM1ZM=KP0*hG+Hvh@g%mkGbT+j8DFv|K|&i8|H z480i*%r}_x<9}u)3pgUxb2>q^O+H{+ZE>gXe{$!^jWf~kPlrefDOSTC@s>e#?~;^E zTsD%VB4HrBhkG2@`gn7U9H}}q(Fix3=W$*iBb?zO9Sj3f6_C-oSf>K11$`k9-Y zd6O&RA}XTxiXF$#`Kw3p)ub9*%8mSzYzP@9O!jC0N(nD<-*`k1Z2a@pF2bxq7^6j! ze}r)tm$1RK=;s|b`{c>*uZ~laPM*YVw8pMa(I8BmOS`*K#4&4mVj)c@E^5GLr8L+IIq5--4Uuw5>2&?cxc)i!=h~^*K{vvJ@~4$;R0* zRMMD+!N-W=>sq>zZ)d{|GLAV$yLic|e}t0YJni+~Mt{Ee>iGG*83dgVw-I@G#X|}bzW1n%~ z?ZOoGkGy$PeN!B`q`YTdVH7k_Vp{gIknvt|MeG^y+xbc{omZ871T@lTf8lh z^cyVPlazjYn?A)4esh~%P#;9O+YE7={>Zxx0?deh>b+u#hY*(q6+;oPR^2tANBs7` zX+Vbr5nYYif`b{wg7YyaJ`|PUaGxHv>9Tedw6TWQYHD26W<6zWPqpA#fBPJ=8yhOI zwJRMi9CX=Ssd;Hz7j6`m6_0RiF*T~FR`G`3JMQ~>UdVXNZXamr-oe}#e8D-m8+r?A zuVfucew8G!+TFpWyLvG^riF1egZ3G>9n_s5nCQG*`y$^vj>G{n-z^t>?m7|r%u*M` zx$>otCBH-?B*s$b1#`;wf3YQN29Wai$C+H?t z1H%&3mQY&aEgOl)J=29uyX~TPtVR?hj9A8PC}%LDEE)P zhFOBGC-ELd=pEa$L<^Vwj7Lj?X!=jvT`HMu(~v0 z+j}t%%OrJ@T9g2GPJP0<)*ei-mC8W~Hot1_fI15yqLCxpY*Uu}GE`x|tv3f*Amx1Q zHn^Gbrl8a4VEH_rf8duRx6xjh^pp+=_O%G?Yx7yyL=a>L-?q zm;L1t9%4dkLTB93_xl~QyDOA|w*3}EpmAy{@ud({)IK`4l|NRr!2JrfcWzJB>pK8q zlB3>9*s0#Rk;0gPH*4xg_k%kz6e2N-dWVn0G4Ew#HJaG^e6 zlS>{VCvd#dfeQuk&RJ$~`e@=Fi3@ng_^N-a&n$OaAq;+oyRF06kynP3i8(faL>)~E zDG!rkUwgypFXPYwzXr@S@TT6~VL(vd)oW5bXE*}tKL-~o&-f|E9CCX1N*MMvExtB^ z1#~A&(D59If6>5EkuiRRAkjupaMnu$6%A0XOO)23>!fEEwRbe3O~(BvU`+4fYVw6O zx||5Q;9!TYZi>KdG^YqRb`T|FWmcEjmWZ$JP_JAMf4+9GfgPqD0xGCu-Mu=IY29Cx z8RKKcyWrg2m50yLJ1oMjZUv`BJ>PH}pC@u;jf*?Cf68s%L)Vu1JENFyaD|wya=lL- z0%D3@h~4XMxTn=Revc|4(V#}kR2xo0MIR{vp;to0-o}h>*+kj!3N|ZdRxo=qC^4Jk z!Le-?FR&h;Ju1CrclOicSdlE>$jpCg)~vhu=`~FbVbkLSk&<4K7eUVu9GPWN$hPbu zj7NiFe-Jgn3=Sg^?qEH8h<)legtFw2!^6^8Zm#;+b?xG{2BhP4gr63DrDLa`P-y9u zTXWG3|Ms|IXeTZMZ8ntOZYBTg)!$P3oG>%4B02JzDR#yD7SKA{0)jH;>RwoKU#Ktj zN}uS-_TIY|he$5)Rllw`bC70-q7d6*XuJgve_~8`9-W{CFyXR=E2bzJF{j5z$bxGe zAuOKmi=gt|xdLy3vrhG{=PV5iJa+>!aLEwGT@(+FeE#{w)6himbJ2_tYboBIJ~ca6 zKovc=rzYS!Mu(hx1{9`Sn`}$wuQCNOOcS2YrX2s}8HX`rTym-se^p-14ByQ%-pyyY zf6BfJs~cc%vF1YP(($yee9Nr4o_%6#SJjK0WA|@~z|P_Pwc6n3*T=@>lbsu9qEp?{ zCiDs!@oigZ!96qMV#BOC6>clEnA^j#*Mh44CrqmE23;gcmlfYN8Ug&O{s9WjgB{sll-Y?Pz(6qIT`o*ho!J ze4hJlUsR}k3@5xf7a_F=yep{qrLIqOKl~7zxbATDx%I+q$zV)YjAR;CL#1j&f2|8q zL^PB`^02(GFdQ56OFmZXZ}P{Un+2dJt?ASyT3bdB7?~N<(T}GpzsE&7P2Q30BKV}G zGCu*6*krAhxmy9k0DDi{JgFdu;gyeww(T>7mD4|W=_euLiPAE)S zA9-qA-}3ns?z8(mUm}4|Wna(LNGlf1ATF@z_2txi@qCdE7#F>Zbi`ctFEWX@z$`W1 ztD$~73JW|=m_C`m-9xUo{W*2tuEHI@?R5SY{e~V*T59ER0)r$aa~~mxMXeOUmfRt0-^N@B)g3#%Mu? zDb*-4vZS?g8wOfmXZ2lmf356tdYlJo2`@c4t9t1)uq}{PC@A`aaWaYS&^0j{5G#4W z)-cIkGA?@QySi|ea$LkZ`WMDoG!L-qv6H8^1nTNH!G!CL>a8tHZ!9o&(j z$u`7;W7r27VsY$me^?H<=r%~Rs(rB$ll^rzG0O9uM1l-En4x?{U`S3|gkYLDj4L?mWhmM2 z*G^KlAGnX}g*p1ZE8xUBGf=dzau?}~)G|KmMZE8OGQeT!?9P;-=-?x9)hE5&Tepj; z?Tf_mwRg%}e^Gg*C1gBc^2AH6o~7&=2$&5ttI z`&S0~{>;zohE^rsGDiw>NVc=e#Y`=aP>J)^2{p0}e~UaiE@v(+zw8 zWn8M(qxtd&R`Z3h$$9|R;?i_!i zXzKY4yK_9^XE#avd6b)c ze`1Cz+oSpqv{BW@$kE}tkY$YnXox8jZ3q$#MSGowx7%NZ6Ml$NqMgpqaE7q;>-o^A z7FcqXc&KKKKagqF{p=Vq%uDHbnHe-oF8LP(YI-$X<<=FsVa+OR%g*&CRIc{M2R(3a z_XA%Euo)&;%&5RMB9C6ee;96~qY%IJe^rZQko{z{NO)Fj`4`79fKm;M80NqS-qatH z&kIB<-nd?O$4zQ!j=5w|lW`G37ue5GgKyU!K=Z2R1tjcztkwC+(;)h0921*~JS+Hy zk3j|DiR<`cClsT5XT(XD#r#s2Kc;s#H;O!M?77X|TxUp=AF|VBjYf4zv*x>Oe@C3V zv$s0qk}Yzc`x9k_jEgl8f2=9E6Yb0(`cpzamEg*X~P8KeHV8Q8$Kd=^JK6Hm7BLQoEfhefZ~>c(jc}95XIVhE?KH)2-|YSX#PKF z=g+WPfS#f1ur;S!kmg%ufl_*ghy~5Cfs^48{mMT5Wtl5LcXujSFY3ctf7kN!PAj}x zfoONJg0Os{NFU;B1^rg+4jzR57ct98`nGz6+Vm{u^UBZ)WkIBFyL1ui6T z&p)aEw}xt(7X3iM`}nEpPI!{YB|Xw%D`2am{qMp#3X;i3a;i71a+sjP34vb@>A^E^ zoD8+pI8&WK;1s!ZJo)DE(z)JX(UI)zf0@tNLuPgQwlASj z2!ChdP^lGPW?11^`iL(x_GVwzOOQhW$N6J+PyfSx7Lmir(S>kr&oB(y6DP43?cvBz zE4)k0DvE1pGB%85#5^~|zJn=EZZk2Qd*tKX`VU zJjkp3w7~vId1roVf9k&V>e!!+c{bXIUdlsPqazOiQe)||5_)r>!iFWdXI|B^93lL^ zMdqUOPACcd-r(9ej&K`RzMMs#p&n#faUBUzN9*%QE@x+?+`+(HhWGYb#-PlOCfVtC zu#~Ga?)*!vVy{Inu-v$kVO^T(w`NffvX`%5-+j5pK`o+Te*t(wFFzmg+P)b5;riS$ zWm#1#-u|(=8Ql^_ZFtLB$B~Cn)tONF#w_m&TA1#n5}rb%i>U+Ql`z6M2r_3b9RPeu zk+@_MM}pWOtV`&yWL8oHHKS9L)da8RX->)$R?(?E8x7u7V~>$I zM_d`P@_YI|e>KX%C=u|$eNzfEm5qLQxmoZQFtCDtwSe_F#5?l(c?sPg-heGBW^iR+ zm4R$ku&?0{s?r(Oy+69%=Lnx)!7LjK*}^-2wzm6%=%6w&B(HvFT(YY;XLi+LcpUuP0_$>C35B-Ae~dy0d%Puysk+n%m=(e;%^Pr% zT1zt4G&R7N=0Vh z-W{1gkGp%abjl3D@Xce$G&zeAoZb?o`v`-?#sh8|XGH&gQzp`v2y`oz1@k)CKY%H) z4sacle-Yd?-70jbwoX@M5w7uD{~W(fzH31Lb;EKc<2NsOSmP632Cd8qFPsmL1cAVG zm3(*)sI2DB(Pu}SaNPE2jJrXdJ@xsO2jMQ2L_uUV1HhwhK>s^OuM<40esRhDl{;aD-SwJ9AZYEa zRNR;7H4hw#>g1_LiWDPVuHX^TtM5^N zAS&~M#jl4%U;p0Y-)vBb#SXr<|GuQJ>~0!95X_eWZWyQ*!B|a|fu!Jh0%xfMyPeY_ z_v?&~dY7ZU^DNKjURC(2BM&j^m5Si=z#>N@b!XJpZ zMxv|_&q91?-%d5v@b*r3#OP+17B>$#0p6ESHxJZ*dTLzGdcgv_DJ)dGylqyYqnMwU zLk%~Zod|faOs|0=TT-1WsRcN`(zhAEvC@OrI(BF5H9jA(lebBVj=4<)yBC@5CQKQf zdFb_vcu;Uk?ddl8lT!P`FG$@ste*0eR;j5i%%CrMt5G4-mGN|OUHO~+jx|YWy$YCB znNXL1!RM0m$fBjXF{P|9y2!dSAH~XWqO~n52#0gZdF65Ni$oNQ2u?`VcFIO7*a)3w zMsZf(+%RR^AP)W@R*yuT6P!O>@xt(AwXbl$_Zb=+el39CD5=WXnWJl^dachIbio@O zJil|I@T4S4nL0W7&^=4TFNPyRV5S^+YS}A)A@MhqNOT+)R99VKgV^5XvaQB&P;?T~ z?wJnGQt9yzlJ-NEPTFPO*iC=&#QIdg1h)anm*UvN1FWVz8@9xs{#|o z!VGR~G=`JWN9~hOIf}l7TFyTF{bdh-4_zy4joZhldBP!%n(W@VE$MF&m~u+g#ipLi zMg3@)2r@S~;P6e${0R?6eYfF}Vb`b$9_Pb2*+M5;-$2&Gto+|6&#DX3KFe7z?vnVHJuAX}%+Ob>8=S)vaDSsrZY}sZlcPsK~E>+%`fl zshXSo4o@ybWT(8U&bgHhw*z+#Bni#dhB!%wy-j<6<20o0p4!%>vCEvRSjYGSE}vdaz^W?He}2(a3m9bSJY!qx@mx z8TCWZuGEwS{n=X+i12F73!Hs_wySlhiW&hESlb~z_@3QDt7b{jkyqiQZU!$DKmCFJ zudbaC*hrXyz)yEgd%Sr7lYo7`+yP~T-5$=#OE5M5k>+*ltqZ_NQ)E!0N_e&A6yRZS z{U~gWQ*|#>usj-p{2T}DP9EUxnncbp`i8(4kv@~H+7CQEXH`~x(IjDiiMUXM^>-&= zH~FTW=}3Vd#^3Nbslfc}&buZWt#jrGCLrzF&;8R3w-$TAx>G4ZvDcxUVmJzOUGMH6y&$xM|pYukwbx-m`N7!10I$i$Ul(>M&70?i?T2btCgx`lrbSh_bwahp&OEK;($zZz4pAs3d^$<58k# zB~RW_*D!Cp%%s|`He3mZ6G#l)wo_hsTX^-^JrYsHnqv4_W>Cu~Y@EF$!g~q;DkHQY z!#Y*LoPcvjT{+Sn(Z0M90wAnEO&~$Y)Ql^a!aNTo8I>aY2A4ILvB68DxKF1VXLEA1 zS`l0(%|HP zo_?&)(4(?pw4i3R=io-^*bp;if&PmZ2i})2ZWq*Ym!mxoECH35&^-@3GkUqB`Xry> z7goijjMFmV4ZEWp8-0_j%smp(oZO985v ziarlrFg5RyY3qGEJN2|Z*BT%UY?p6p+<=}nEiw(TJBVw*;_C)P|E>YF-N*Y{AU(IM zKbIFj51<0NwwJj-4`P2e`RIrY#wRb>(PkPYsb;e#4PTF>Wk;c73A2_IZ#Ck4H!Xso z;lyYg7L?Z#)GayZzmASqJ&h*YMn_*L51F(ff61P=ZfCFWP&?((Ea%eUZZ;XR^opP)iP<4gSHA?6(||i z)X#)&j>+A59ipSI!Ye;M#^80DPdL`D7Ny0hW2;f-Sbl#Xl6t{bLfQeFY3Lbh&5Xq= z{=CfDrkbn4nzjrM+H)Waq%`F9SZTOau0Y$4ivd!dnKgds%$|$^gii~Z^V+^qaphFv zqK;Movq#`8qu_u1Moq&+LqlM_y+%!BhwYz47(Z$*Ac^GhW!I4?WSm_afx7si0cUrE z1zp-;ZUwH(RtOHKmtDycN5#yVQ=WU&ayvgZZU@GanNoTjww1NNX_v0e6WASXw3-eS zo}6xW>!tRZ)f0GAo)FLt1j6I;IZ-8aP~9phx?j&eJwks8j^PE0Ga%?mP`C)4temEn z3h+4sK6*+C&J~%_tD~r>GfFV>Bw2@rMVumb1dVe9`=V;90Z(?!=Hc6(Vd%zbiESgV zgYBn1dc~#TLigLnlOP3PC^C`=Ljflu8guca2(a5+a)T>RJM#Wqv~qw10YS(W5tDgu z-xVxi)8j_5(j9fOZ><=*&Y9w2%lL0BOF{OTt4~^Z670@TWwa_@FTC%K=3&5!L!>rf zL14F{>U9QC8#KzkVdikmU4J}(l9YQ?4VPU)50QUCdF4MUA;Y{IRYQA^L@Y*DvGh|u zoL_XWse%ipbI(xSQW~Y9c@wb=+(B_rv-VK52)$yS!}^~<3^icXDtjz#`Lx3xXqF4t z!I|_4#$xeAn^rY1kzzODqc-t8sZs5HWVJVp`B*B}I0&+atc`3G9{Vxy9X3K=vZ>hG zX&;%4{v{aGsfBrVlWn59}K7 z%m|gg!H{gQ>IXKk2YVzEEcXTfS&fVb})Tv9v;b#)73K6xEeVf6YfGR zi)S~N3`Gx00sWU(MGtoYcbCsa4;m# zUrlWw*yJurnxb?8l3S%3m%By}F#&a#?M4qR5w$S$oAWvVlDZ0+P%Rr^xL%hlM-Pnw z!k4*64DFafe`sgRj)jwEFx)EagpXN;h?X=2yLmlH@2I037dOh^wJ z0n?XfNDnxFH;9HN{6%}w&pVmy;6>FM>{BxSY`MN|^9%ukaqY?rziuOcq$OTl@Hj)? zp`08IL_7J}?O^v?Q}GK7Wa|i+UYXP-zBdJ4)TL2$#e0>UNnBZf402>Z1XKX(PnqVwV;qH4=z^ZH zR%QiUxMAnaYT;_~f?+osciq>%3I?aFt%`t87Zzr7>>U2a9F6Mo4PHe;m7#GlB9a7y zZ!M|e2FwGU8>MX8hpOat=Yrsi!vA;>JoOTkEy+FUBEg+ctszEiP6X@1CodwCs%DrH zrqSqsB6Q<|P2IK__Kt}(@N`!aX8mH6YS!+ssohglIKBLV>a&(44B#Pu zp1=8g_3!Yx4%eB~&fbh74K8cS14?GaBKGra1vXv{k7DvjO!4L)1vf^yLWvkB9{#X) zkpw8Rp@~al@2bX5wSE+WC>ys)V?v#A6vO1BnqBs^CYaj=HqqWuwnyVXh_vp~k3seZ ztg(QArF#o687}3;jX0azxPM7Y-LbQO34kbjo4Js50&W3et4diD?NQJ!hvTBds@TH{ zzznNcqIwq>p;H8hS7Am-dec`L|2|x7*@{gKk42<_arjt8{Tx zda@1`w8KQ5c42N<-})wTVdS=baAuxJwXQq*?jO;~EUsO({6u}8QZ1NI)~YanKPwl` zCM93{0oD#AX|MR<^r())`W!Me@r^fw_%G8wNiQ@HLyxb)HnU2OMbPKvI7V*}=9Fkj zTJSI+`iFHj*gtu!Erz3*ZBHM#VZ8z-Z*-((;!u70kC-(T$wDN%#@O7cb#GZBdD8KpiFCKsq9 zn?fORLc@x?;UJ^RVet*cas^j{*QtAg4aQaZ9p(kFpKsnnUWd>iG9H9~T{gQ`&B0Fs z$5RqWS~G|d^!!9I_vKG4UWkMbKUI~`l^;aahKq(R!zwIo#9VfN6%8AbH(G6Djbntq z3v=5YzPvUbUxk+)KjC_#Tlc6gO?Tf;7QM=%!Kk_k%B$inEL%#h4~aQjl{7fx}8<_v=Gz1hMio)YT)1)^Yc{McV)4iY3Y>Vtz1 zF2@xPb^V>&GreGuE%{xn>^|!>*gKtFaE3z$`cIc2^uM&(29b1Y3I2qznmnVhu#dJ} z7P@tS54J1~PqsIsz`xbyaa0Z;1#LTFyu&4OlQ5Nfn}ShI!A&@SzcgAa*38DMy6i9! zeUjEUkaR(T(ao{w^}cB30C|drOa20xv#_;$@BB3!w$xQ`1v*n`&~IuRSXoy!WolT^ zzs+2+5?lC`XGJUEs0XE-5_J`+@b*m8SMkbEqaY z5KaWbe+sl5-Y`rwu?`oQ04~`Qy;M>M^BkdvP>a#!b*(Y;BxntnvfjuFVSZ8sxwl2x zVsDD;HFl24aAnR>E!o@6!rbh#=tR3wUlfe6^9D((G;RYVMep5jP5o^G1EzGzHSg#v z3kSHyK>p=_WLC&F5y);4P3^pMQ!7}vV=nrzv;FOoX+(6k_c%A)mffwcS=H_e`0-&M zGNJfu+z0s#u#34{-sG6R7rEc-64$}*U!;+cDlE+0Y&N;Y2CN*IeRCSS-A`Z>2EYaF zH%HmkOgx}lUb{qbI|Ht=W2dXJAxcux_(>$pcZrdI!i+|*x_h)8HI$R1ZHXc-t$Vfe zgyg^my7EWKhB`9Xy{MXXzy$LM$&XGxe23G`ZKe@8T;gHY*V;hvkk?Q(YW;*kQ&YWu z!s0FDydx&g?Bt5Xb)-rlw z7OHcmvQKqlR&Ob0xcqd21!nc>!Vtf%Z}VgywC2PV<4VsxwvB4|72Aeg6|ZAWeFyIk z%4QxEP&C`7;JrBymmdy8i+5EGjc9~QuLx;>W{(LZ?L63lDm*El@mj%RLF;Yk#1}SO zu6uqjdX~k0=?ZsUeDsYLm>wGoF~jw3toMhOgLRp&NYoK^NF*F$jp5dfvc|59+IJf7>+b2{9hAak)0N#R3YPMJ z+0>CwPml{QV%X2^M2r`8uYU2$t3`4JjF;xu^us+OZIa#K-hE-+`h6{U$j=*VcJ?g? zi+*;ql51q+SNhY_S9~DS6qgxq1|dGDYrBJXVw0 zhFvO7SiotOn@epJGnqQNC0aFq6325iWL{f_-TPjBENMqtZgba>Ji_biIs4BM5XbQ~R%N?-)_6b>rsRLQKv6%_m zub^B<5l5Hxkj0hbKcg~;70R;STbkBNj^HUw8shDFoc;N5dq{(Fi{~|ehhOQt--tpO zOfdlwiVwp*(V8Cy!{_3($?6jQuZ{{y6P-tgcTU-+Yezdp!PDj%J|ncNl_o)!Kbb`o z%rjYjt6m;bBbI!BkBm-miT^v3nrM4DtcBU#mN<#Gu7OEA)0~#Fq5O;HIOvJZAz=u2 zpR+{DiOxT6PouI5Pg?nZT}>-mizo!?azsQyajqnT>6#6?IcLtbvY@x7dx*=WH=G(O z`5pwD_oK8ZHR**N6^#^_EuscTFZiF_x#`_``^B9-HByJ|k!`F(J9Qmd$;j4uTNe#n z){$^oo8>ypf~+B^`>w8yW1nSzw1$Ihq4?JRJ=&Q} zQ7Rxng!PH<$2%j_BDyJYUtDc+4e$JC9dRji3LY3x!riGlVviZ>?6>CVTf1$1dNz6L zmH9+LG7A%#41d{(bDx)vIAu7GWA5l?bMI!Y%*|q=dWc71%c*?fxS#o@Y8n=HY$NfD zw)^0hP&X4)8p#=d^Xwd+z8_qv?VpMf+&dW0r#>eB$9oshdZTyP+sj7DMwFfS7dy__ zQWYAr?R!>?piR!{5-;1DhUk8vN-%;$6?p*Hrpk{%Pp-oi=Ep>I5qagT-GMx$6=nFm zGWo{86#T|djK>FPhxu?FI{f`;Eo@m?2lo<}=#AF?Htq6%ulATRvK@dzmFNU34{7(c z;W|{F^12@ZbY-Cv-W>r(-xgUCLOkJ?;+N>m4~jhOW0xT+KZ=+P7bE3jjPWGgnUl-z zMJBisU;{JPHz2Ik*cwuWF7rb6XDr%VHpCEJPC!pLSRZ-WV??d&)4d?b!NkRs&|{Ko ze@HJwQ;JZ3O%_d2l>*tAO8s})sgE#KSR#6$3J~4vRp>H@1-~TPp1E9SAw;o<%VW(e zTy28Oba-v;(XrqZ;y}&yFR$Q=YUxX^)Ny0JM5JB8TW}EWig6@Fy7F&yPxzFw)_(~L zt#1D@EOcM{C$P=K3A0dfq~nk>b9}$^&XfW~!>Szy2v^8y?nqdos0!13wByoWxGimqPolAN*=XCZ*bSkj5h zg$JlyMh;KOBE^1vxQ$X$&0fF=O4pqe?-i81DKka@oKTWd)%TNn<((<-x5#m93vQx} z%yo%>Kx`@NJ$PiKS65256qOv`4BSv0ZtjCW;5$EAmby{`K=yg+H*nMDDCw{;Z0BR$0yx zva-Rg8z7Z}w+mK~a1y|$z?Z7t8(;+_d3&yZ_Bv1uPvi3lHa0MS%)f zP1!cSXBVu7t^yWUZQ+7|d;gDMMYRg={L(W6-UvHW`Jcm$2LB&GMtd5#AswK902u|l zbMTIo(dz^%%@x=u?K7-K=-G3xR98EcmRDOQ>#AI(Op&+!D0UE3qjgu16tlh+>dP2^ zg38dSw>LKGZO2tt9*l>^39yKLkR)XQs8UR?hK_CCx97tRyATllUqGOSSp;hQe+PjI zjP6kpEVXHdHkCho?l^n+=<~Qm`}`J;)3`;mE3{~O#mjC-(U8)fP0h8ZiXDV_fh`Au zz4L_1^x8j8@)Y$>@f4jsf^rBvLlixKd{nBOw$BFum}V?vm{5V$$gRW_PCWRC{%SU; zvu8vSwYB&2x}{{hmR zLK;+n%%ttZ`F%n~{iki7$OkH0=_kcvo&Oe~Hdf%JgXrAuO<<}2jxCUh( zdNnuOOa@3;{GT0F*}pHYA+su?Rv-LzdIq>r*I%1Zm#q8uRdqnb1$5hg(dpprWys~* z9PVw(IM^@3qvgFCj!$1DGo1E7!&4!GTS}xFK~)wt9_bY$pz_tLMsQVxUqsKM!?xRh z|2$oraD#=tpJl;G*=ajWU*T)9y=$Jmb{ zjjot`ikUTUan1Af@ioDJe*eWao4DrvscWVH0c_AtqRdNXF^cLl?L4eZUpDj=7kx4J zlMv;$l!as9TO){mvgWKM4meCOrm5)%(LH^K^Y%rew)U?n49^z3f~;TDavE>67a}}=)Ama^Uu_sWbJj)4 zsP?2!cZFGG18Rj50^Vg}=rWV~Ov2;Bt-lI0)-ExB(4ZZ(Fr!q60Sp2*l3+_wdVwR~ zQI^uwC$9VxC2jVYmQ>4ZLN5$K8zY6Jm^47i2)<;`O`JFhqMNok5V7+1gTo#i|HN6Z zG*A+TdT!0Ko>yvrYC5H+zVf?i#`kRH7>NQ%?wpLu_z2Het?@LXj_r%aqoHI=JgHT!TYuwhv)e|&Xs!~bT3@>4hY%D`Y#b!l+jtf6e&CPgx^CL5g?HupKd+1GT`<_2`9v70i z$K6w(wXkWN5#Lk-+R@Ec^g$e7{R>ai8;H=lXS2&vDWiA%zxHTmQY#&|^wn=^tb_X| zI6g3%IOe0BcX?9&rBsZ4z`yA~7_f*NjH_=;<$aq4)f;ba1@8a(1kZtHm(0hb7}VOg-{0Qdwnt9&dXK zUJk9VW>X8alr&ZBT>DX{$Us;UnvOI%70^`EZMFA8h721xqJE2%L>W|`TU`L-TBb4P zN9!MdG~;jXy{TpM38ayWTi<1wCqX!0 zpPT{3qoXOQ$_S=F&&qJ$Mq0PXbft^6aNtqdoR2P3Jfrsr!(%#B*9qzsv3V(TEka$3 z1l`HJcwXImtVOQNi6nlT(eMd00o_ak#;yUSFvBkEk>-%Q$1{1o{x>tZAb2RZX|`-QZ=*d= z2`=I2gXK&l^P{ke-o7>&fH!}7U+3N`&7#O39H~@43{CajXa$sYf=?T6ag?(W*YBr) zZN!t{dq~`mKA7-ws}@&8OJ*(Ipb?@l;^TqLE)0au%iN#6ySPYK!GKjyHo0uFs+w%9 z%M<}>E*)%*)Px@_wl^6d#A35G0=hq}fBKVs1^N?Y`EsS@C(DkVK>(#^i4@HueiSF@ z(m#K9kt7xedN^uYY?B4r4ay4BR>G8j2y)Ir;AP=ufuX8pRJu18mw#!5i<#jW&L#fY zna(3*=BJmTc&0?Z9y!pq=7RXfDaRjNB870k)VA}XS1wTrr9a^o(WrRD3l;N^A4~5k+=9mOYd1`E?A<<%D7kC*Ko9Ow;*=SUhBAjq{OI) zcCJ{ht}=8Xt+dS2meQQws$@Kc%ojVt$M9-N>FHFvyu@Il^iXa;P=UZm33ELna9YS} z(@Up)D7QEm#&+UTsN798BZ78^ALU z;qhyHo1GOs&)`CAcXI1G7ptj%FdocoDCY%InH8q3;2KGUqiU)Pa(Aqo#fg92)uNxa zZZctqL?@AWW~oZRDSn`1Z9P%Q3Eo-W4JtIO>HrzU&3h?|*l_e=pnV z+_0t&-zv+AVjmvXoRXz|v88q&mzA(t%SFwAvyFqBUjeAOTOKucTWi={GQbgIvX3J4 zoAg~5sB@ulpz_Kn_|di(f2~X8_Sduhdl}Xx3ciAnJb+mD7It{ue%Ocsad15m`j( z30u?q)PNIo2F(GImTgobuZ9VW@GMuubn{C^*HUP%B|kF73{p%$*#=nw#ILBD)7la2 z`q_Z<@PdIPCuBAXESu_Vw*Co0l)kXQ9IQ@CFa?_r-%8D~dfL~u{_xq#e~hcpaAhZA zO*FEQV(Px=DI-GIvfFrNZT^Lriw$<#LW(0Hh2Sq`6dDfRB%Z*XSC&CxzO~EV1)Ddo zpaGQFK}NL-qF+HVVdKI^qTY6j2!dKh1hHPu=~9U#pdHrXj~aiWpWh-T^7tbzLJIi5{TvTWb)*N!|=g}OK~)Lami>l zd)S+MuTNXdvd8(>cZWaE^kUORr(&@hw}PFpy;SwP_&U+($S->Ahc95LZ5ex5Cl z=h^w+%roywc6o2}f5TBIV}NMg@h}`O-8g)evS+iY<;R1_I~%WGi5p<=ty&d9DcDfx zaOVI>!KmSS{NwXPk4HBv;A%R{50~!`Oor-}f6Gg$<@Kdxu<6u1i$TI%aP#dXi3hdn?+h7Qj#cc4aqqV4E%RK$wF5mk zL3W)vr4B5&{^r13Qwb>B@Q-pRd@29p3Kf5%x|uU1lfI@V><|Q&O?tK zf^r^<6TfO2-MDpZ5o%_08R}{r0kBs6aJGV9?e!|fUb?M)_bAhw@I38BGd$|ww3xf$ zOSfZKizTxJkX-1q!=q0f4&<>PhJ1w(YCR~(c#6|3hKz^8|_I| zs%6^OC*Pc+)B4t1tgx`!yI<54N5~wIF96$`S*U#y58t!dGidK6)s2goJ!!xkxT$LF zC1h*^RD)(eKol4|t@-#N9JO%A6;Kk)j;T#;stuk)YU6jXee*}XD& ze?I-`R(3#?yr=njjS{$9wUv69P!h0eR%X14*;nx9BpCw=b(v~3aNkAW-B=k{c!b|( zM$0vg@Txz;sX!%B?$h9Gb856xZ9nqut&0Xipu?$giNWHB@xtS&V`go!?pL*zdmF>q z|6%UUy38LU_^yV@Uqn7+ISv@nrY>YO~O*byQX+!Q)@elKa|2Ia0=po0zB2XBd=XfBoT3 zei%Ij74yR()}0GVH;?AW&+LyU^JBsO$h~q^;d>hk<2@BN1+o#OWV~A}H?Yn_C(J*9T%m&VdWf4Mp#ABMG@bqtC&ZYS=tD?Jg#1nN8-CchiEn%05h zo6aOjtGaJoVPRspw=jg7lcnP$;_sP7|C{o;d(RN2YZT;gnzr+EtCQs$OpGtF{G;XR zJ2?0?A^=ak+dCspp{C6%EsT_`Xa>K)-ouyKoZY!pJlK7o;x_?bSMXQAe`L$3VR84P zqE$;R7D^uemf985sj~DSq#5OiR zh+m&nvT(93RdfKe#Wb_N6~poLYi!wG<0rv}v37p#FPt3HtDYB43@p8WB6132{re-` zw$5xyWwfGW#U^aPWo=WnT}Pn2i3bb$Pd9j*HW*Qz{Ye?sEqyW`;SIB zCor@4#=pk+=f}}ve|;d9v)O9|4U_ye?uED*AtuZ<%63a9dMiyHnsh@&je>?8$cxk{ z+!&hynSlZ)#y3PA*P+BaH18i6EwG;9;fy`60gR{;)hfXsx7&=gaudH8&?smTm3hll zIXE8&OlcR&e^KY{)qjkMma#(Rne^Ix2UgK)>rL-;MXLf=iVKwVwF^0J zA|GyUN96eU$IVUXY8|F4+WuM{Y-|e>0^y;)(kh8K}J+1m-}cfu)=u z&gfxNB@LUEX^sZOFB6NKXu{BNnSw7^iFLa9YWXzna+|zxR zTi;W7z(*6ZT&BIsimrJ!PJ^{u-#d}}K^4%N(H}H-BkL0C?VKu!#b%s&+n&l6o>FZ} zaIyrO?Byi$XRB~2X4wHuw5!U=6Q)Lq3Cj`0|T`$!QlyUz)c|KLB`sUtT_yEDeWx0QS}We5SDZE znhBZNmSlviGgMo`+<$InUR7NRdFD|j^AZq%Oy@=K6C^LrCPB_+4o(jMjIm4He{g7f z@%-Y(fVpSStIwhe_=LfIM76yCxfi_)vv@LWK#&;Ql34@PKvN@BZa8k9_2Y&K#eube z*&Rsqi8)h}f#ekU&A8bEngb8$gh4R<`&`JB5=mep*JwKr65Jo5k7#Z}#12L)i|j0ITgeZG^AkbAF(*=269fv;S;`qTZYHgRu}CGS?LgkG?az5WxSKSu)OvnEe+Fa%vrx+_5b zX$6WxN+G=V`e4U!2bP#beFj$8PVh}mYJc;~g=f#zkDu3>43;6Qe^JcM0+3-GsCRy2 z7Pw8@%A1iw1bN~&0aL!=h7{9;ctTQ8)Kq%*4#Iu+<=r@Kv77z+meTkdaRHY{$VUIZ z5S-($&l!rE(JvKF($d9HiwpupZFPttsRL-8Kt&G_>a_NN41$C`;&B++NR@M;KFIFL zOp9x0z1R~?Tc?J$26`3YZ{iTdd43E=YGHz@l%$5h;+0 zp?Hb~jZ^Cv^0r{(Jt)*>VZbaVxY^BU^K6SpwSy(`f0e{@kxONZ!ZYcqNSknc(%4-}aNBik1bjBamT|$(=|B9@Q;x9 zd^oJaiIE8p+`BcnWbuYJV_4r%9HR1?0%FI^57uP0B(KXf{YyP7hBxJxz1W&m8u1MbaR#df=TWPuApH{`x)Xu{_>;6D# zRFLK~8ii(I?~03Z`M?_ChrDvqv_i9i-XWj8!`FS-Ovi&yq4dBzU$Dh=;QWqdc=FEw zQMC5OE3O^EE0u!>o0_!d8CgYZeO#bm?`*bh~+z740fKeZRNKyQ2|Fn18~);YZykYKnb;uCUuEV)It6_Dw;>u z>8M-6caAS3+CP2For94L_mvw z%YbH@OfTEgz{NcVQfW!Xg|x!2e~=tNz%KYm|7GvIWWyM|U&5l<4+zZgjvYot5#rfq z^}8#d&JYdgm64X=6;f^q@0rt2XExd^TP*GFs=B<<7ICDVZ-jKd|4hq<)Bzm+^+gDU z(A0O>>Vec?!RR%(BQ3AV>p^{yq;8y}06LC>B99$HoW+x{0O4}1a5H(De+Cn1yB~pU zn`hf$ez6`jIpwPq|IjC^C{?TzA492I2w+;wWuaWzue8(`n1=X#dY$(W z)2LpGfp~3-YyAb9nDI^We-8DT`ihM5?c3)rDttUN(7cF6NibJ$Sc^v`r6^fIZDV6u@~crjs%2%IwdZFfe_P1LFRVr0p{s8r zsCXj2)3mh2JAxmi^^%qw!{~h_;fPLZxh8fVhm1G%;LSI6@W*yMmLUb&?RnenuZ%e8 z11fCFMSWV+HMKoYcI{=~mul+vV+g)!*pvJ)im$sLU#^Ojqr$p&h)lG9GL2mFG7K+r zr1}ETiRu7d+5psSf1>7>{XPyggx7rLE+*RPJT3QEIv=G&u>YLw5%3-q=G2tV9EN>; z1?B9>|AiyK8)29m@>6*&?_g)&!AD3oRrVc}6MYA(tM94oz3k#BSE9YN>?q+>-v>`TZrl;V%xScERmlL z*|vOQWeJBsC@OjBW%_+=`W@0EgIK!#7%A0hve^7e5V8!qx?!3GS+O{&I91D+9kY%tH7P6QpRX=v4PrJe4OCK(1-$>3b zNF?RJ?-;Z@cU;$;Vmv@dnN@+~xNnZ&#g{KxymrZ{Z3cTHe{BT5>J%*wzGNrm6bWo5 zb#ddgyk6W!vP<+5;ez-woTCxHExJe|EJF>vTCi_DjXSeSE;t#);*2 zyy~h0tWb z)ZrlufB&wP7Fw9wM6^Put;GWkpD+qf+|4kMH3iJ2nCH}G-j4HAt?=XXB zlZ}y+hg+_7sy4MQxR;WPamR$r{H7i54fChG=NjMZY+VwwI9Ip@8RuA2iz9b!jzp69 zDPNf(=NaikG^Ta(ljj?D~} zPtThlw1V}7I}YeN_-p0tJ)5)Ve*tY_9AtgQ#T3}WM@J@Q)1@c7e>Ffh$f>FxG8ds` z5ZryHX-O37McTM^RmNSEDb!y;bL9}``=SfE5g0C}r(0;0`R?ES6lCeEknwLcg>D#; zn%PoXg!;E7pgAgk6GDyFp4r& zLOoe5f}2~_!3suuMNqzOrIgsO7_=^_Eb%x@bIG*KVgq#xqfm<2GRqa;bQqeYitnEQ zd&v3wX`Luk;GulamwxH?F|j<^euCaET^7vOWF{iSMMf96zArZ%f7)8Q<)up%l?093 zr39>qupJj3I&#S3z;%tr3n+~OCYh!2O0um^^+f5Km=1%o}M`b%H;1&m9=4*YLMyo(p*IJe@_)|iaD(MC+czqbU<5b zfW8xl+4fDiV{xxba!YkaV&L^bO4;MTzr=m^63<73Kq*}F70(*7sCasjS@*85F@n&1 z-Moq^u)wY5>L@OR09NoA&{b@xkwL~)tjF^-1FQtfx#ym;xp9ncDqR=Oex7?}E2(Q@ zcy)6gEhEgie}E!A>mDzURIO>o(WWQj$#w0GcpDdyxnZqU8_46Bl*Bj;-ZnkCAJWhP zN~7JSV055ezjFVk>se~(>YDyl)0^=0y2=QH4An7rk0z5Gq&%pz5ms2bEY_1=>-k6U z*J`uFbwvHG*i)F3dbnzJsf=#>t{}W#=k=~qP@1=j19QVT?9M_T5bb% zv8l$tb9rvhY|>=1=*XF;c?^p$>7vp{DxbPG^8M>Ctm&3CyKIH!R28~jFwVvMN!@WXi)zTrkqbD`TKvgRZ_j0O?NC=CZYpObvD^S zQK+C?(4qdWwbDd>nJa`w{wR?kMj{S6bE}kV>Sti6vxsPnwy}SZ{fJjoTr&1^rwdXB zepXLOutr5+{v2CN*&kVIr+jdrKr1_&tMZF9f2mW!O4O6Ee?zs6`}nt184`HUzaQi> zaI0uv6ZyU$5bM7WhtL__`AQiD&X(MOy?{nPt9ZMCxe9TyJbEp3uL?z3So^|GjR_K-sat>MRIfZYGx_vhW7nwqYqc8X^K zf1M!64W+!G0SE3Oib6bhEoFxthiWW08LlPJ=FG<3AzFl?Bxn586n*Z1dI_;MQ2C8R zs3S@vyhrQ}`yn4>a@fAr8zaVXboL;S7S3S(mV@W-03Eem7*8y9i6|2p z%#rb5nucqsB>~nxL|f7{Dnkq*MT)C2e=g{#E%6plc_E)miWF~uwkWxbFQ!k33JL@( zJ2_m7V3X5WKO4kK@Yzb?>dy-)HUQ{0aQMX>ltIFwQ_6!E4(RQqn?KVg)5TECvA$ZV9n!RoUY1qRJkx3n7B?$Ms@2BQ#q@LRe?!Z~ z>Bk~fQ2%sd2eKsDT~OpUr<{d@{ozHCrYQ~a`CIgy|5N%zb`b0}^3Yh7Psic0njh!d); z(r5Wg%Jo@pBuV9MeHB2AB?X+0f0cDA3%0AV{$}#s9 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�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

    sXOY?RjJ*;@VQ7VirK2ehJQhOp92 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:i2Dqz5yrcX}}!(#QPvW z&tcPv?vGb7Y5mEK_LQ2a-n{lb3j$&T#`q)^sM`>(^j=i!Svt8$|Biv?vfSP1I9&~K zn)+@&w2abkVJ*H2aF5S!X9_+scBTTrUGM2vM%1;`;#Wnn>X+Eq>G0$qUxy$!-bVrs z$1v5{q|i@)a&T%KDwKk(Hba~I$3FnKIh9iz_c)mdcc!3*5H-w>(hb9!rGJG>w^(Z^ z-~;|v<5KrL*Rdz&qya02qCaYfQ!S}gs(`k>l>SS$DN-i5An#TatsgaU8LRpv4jXnF zJA~Io7|u!4=zOb*S9&LcQC^m+S!YGHQX4ii7*9 zi~3uC3;Y0Ec1jKeyr36&)uKmXRZqpmqT+g{6jJF7OAtq-({Q;mj! zodf*ytOhC8gM(6&M*^PjfaMqja*MkmYyB{Pow{JCCHX^7jJ8EBF~g-}DmauL^MQwS zbjY+G`M16;kxG{a&A!)S+DLp^bg+pELuXtSgDQ%F|nR(mg`ow89+(=y_Ckl%HG z+Z=K;@F|=CrYal4a{R+0gP+C!eXoAFgL)M}J24Y=QWcH+6EivYP9s7GT0jfuPibrH zlKJ;!?8x0ksyPqPO1hX$CU>NwraAk4{q&!T9PS*=QWhpX14wg?efHZeBWLP^1I$i5 z)tHtWF0+8_)fU^?WHL8bwLdkG)D)6`jqynrRtv z^au|Sb!m7K>MC29HcdQn)pvgBswL?mqV8 zQeW9Jq2)~%7>I-m|eTR#Gd-D#roPp)5OOv zq<)G=EnNhM&#A7I0?WP2@#nucF%Rh3hKu~jCWK<)VM_rcqPXQX;&hD@NFd|5$U%+ zvUhkmYd!Y&E&(VZ%)a?`l~W{;zVoNnYOd%!_kj-t4Bt<`WoVNTp7~DwlmPulgd_Ce zA=jG1r9Q5k0_%ZfteD>txY>5*{%9o)S zA`frJc=lGcI5+gf_5rd>a(W*PcfD~j!Q18Ha^RspYG_JbVqABBw9>_Hs0aJ^F3z(` zCMeEWN?M+?7fiaC#QEF@>A$7_wiCYFTW5~U*bx{$_j{iWaIZ{R3;a19o%{QPTCh)c zit*vBEPw%C;mHNG1G16Y6Fl>Z*7`lEp}jf%ue)6cH1UPwE5XaYC#@){i1--&0g3rKho1knRqRCHTA)TMP>Eu48W`wOQTHYsud zNO7j+L>vLgM_knmJ2oNKG}?278y{0iV*H^uek^UOk6#RnXT9~+nRGva2EoL5GH1`X zmO?`)Ul(IYwg7e{#rcC>oWU5--F#zn_7>HIIS&5Zr(qF)`EDQoFcXFMfAYhoF?qG` z*pD+mqo=RR*xv(O&QFEWyqO+-lmI3lLBTzA# zyQkX)A;TrK34|^CAXPk#HzzT3-#>5~Ee>`}K1 zs`1?@b}_p{wM3~d_#^Vn5qIycII!uvaFl*%tOv0RAi{5IipQow&NdFxgSy{9Bo9dD z6**>>nKdc4Q=#_0B?#6{`PT0_DN@ddujsJGI5k68qM5Y8W7Y&^}X`Z z)D9lIyOaiXvu7f^k4^>H{**x;izkT;_=Cgq`5n&w2x$5bhGYWub;uwdTTb4(TL0-O zgvzKhHBrENM|D#5YX&h;N3@>VJp6FQL3xi`1uo)dPNS`kxqELA4y4PI%EEp~gN6T6 zlNED+kiC-VY)yd#5HNP}(8rcpKBb{H{904y(FmX~3XG9?>&Oq~k+Wvayk(U&6W+<6 zCb$)*HH$Hr-lJUqFGLEJ*RE|4DT1o3954XZLQjur0bZWiJrXCHVCIyGr^A1WVKOHG zn1ioT4CEr>Ng?FueY&b+#?6(PMkYS)HTRx>?2CD7WZ@a3$!PD8N1Md|Gvl2~!^A#K z3E?|RTL-*Qr<#e}FkulIz4~3x4yWpfz|=gX^I2+e>|{6{+skM$gRN=hs)_pSVMe{O z?Te6#xPM>LiXA+iF(y1S6n1V=+j}w(6*nq0bp3pRgeG<4{?LHNw`aI*c6gm`V;2B_ zu@Sx`XNgIDfG{nkz1J*G?7ohS{5&~^Y1=`Ltryl4ss+;--HUFeQx(v6n)9uZ@S3m}+| zf%lSQWwfayArzc#xhL91?njkM)(7qXd8q~p1HsbnVT;NVRf>X%$%WwrZmJ4~rTd#s zu+=7dgq)YNA;}_~<&I?JrwoeeK|ezJG)a4w_INN&%=7~TmC-vpYPK;t;ILP)Q0I=&Eoo&z9=W?!axbOe=AJ6v=JCbEPS9 zw?wUanar(j@aKE|lT*zoA><(K+>xa^c6IVgOw}O+04xa*FEHkgD)_yvFZ7|BJ6YuK zYq9NrIW$ZFYkP5&`Y*o$YW`tDT$;Ci&0fAmEf5LyC@+N+hbRBu%Y|3{&Id#>>*Tf9 z=(Xo~?fw-uuDlM}Br~ypn+t|2U$};#0@jaoSC8pI9y=5hS3|mO=MA`6C!n16s~1rh zp|n&x9 zOdcrMv9arhrmYvBL14^|8R6J`bmjm4J)FIo5fYObBb`FIaKbNtYibs54MKJS5h$fP zaY)(`l?G?1LY_grTX`){!L4oLL?c3%w7oIJw%K?UG)uWnE=17 zw?6k>B66#K6%5ir)u#a`^j3cB@^j~PWGWLGDYaTo-r(q*zNO+WW1dV?;8 zr}9%a1=9=}sKhRR6b1*A2lER!O%J6wNE`PFW&UM7Uomr6Sb+YqYuP|%XmLz;mnQ>( z7yew(4aGe=QqG0wCV-NkF`VYo`mk_PJzeQ=xE=mVKY0X?n_dIl_on!=;+dY9U1ws~ zJO7AQQ25%c#R-VJts|>`TOa7re)fbumo)k&skr5T;w=qVxm8-Zn)9Y~E=U*@N$1fWRn|76c z$E0Y+@NkZjG{Xn{|0POXWgIf4=Lc($XDQ$^y8cFTQ9R<0mif)3oj>6I0ipB4IrXV! zNi5gmr|Zpsmi_w2=K(mwPohmw|K9OpYUp>x0p+NCq$ZpyCm{?0IrE_xeUvdLnDSth z4E#(UXxp~rTQYK!!%12RS}$zS+WR4&?H9eo8q{cco>jhhe5yYD?aF-NEsXs>rbfO- z%sM$ZH5Ym(%Uv@-I`Qpq@NkeBs`fKyP!=})`U|Xoi4D`BpL82gFPJyRTj^QjsR83w z!mT?E;pv#T-G(F*LEOE+q=M^BrY}tQM@~1tgpt}(l%b~%ig~dh~lWW zO~?;CU~F2;%aL7Yy6@*^Pji|4QYhZx8QyWi6;_;NNZ#-(_r7WR!gIeCD+{Q$J(KX+ zVFHv<8^$6141=}e%$mTeSC`e zaWezGUF&(oMGB!b{Aq=2DZtDZeid`~dL1VjVhEI3Oh0ZJ?IVlnNOv9Ic}-9d8rxaO_jyFt4c$ z=7IvHsImP;U!qKfp$$by{Hc%Y3r`rDe97?49hn*uTa&{3@o3;;b0we-Y#C6ej|i7= z1iOX3lDjR5)36!R-Q!$A!@u%>^HYmWO}kYF{(5jxjcS9#X}ZBzQHo3IoLo}vI`>19 z3t^&8oB=InUN!Qs<0uV;J3l+eewcUZU;H(0j-q8HSsCZ*U)inILd=-%yIG>>2U871 zp#jC~?LR6>Lvny@rXPoo>|m70!O^2S7ME}=?mt#lBf^^9IvB8irEal*K=}5`zE=XQ zF^icq6`8X|=2V!@0(Am;=bQeYmR37G5yn4^-FO7`QLX; zh&WJ~`Z?9@&8fCAhTvqHDv011i|O(hy0Nd$N%98#U%}n@2$F#PIZ$>d4*9QsHH0mw z%A)MPjKQ|vtDNm*$23iU!{`yz<>M(+GpyH}o58=-<<&cyvl6uan4P3|^K`?ca=wC3 zA*s#pIMJ0+z;8H-pK4C&p!S*?_8(&zJWf*OB}g<}c0Xavg!qnDvs6Qf&mf*Ap19@% zSw%U;4U$TrW=P2;_MB*Y1H?oSnWilN={K?)r&)lW`ssbR4%E|sfdh6_-)q>z7G_9C za`AI6OA<#4-dzwRd$qy&W|!wp1Pw!`wC1#)$6>PT(B4Id9p#&)PA#f-2P>-^4)e^b zGc@s%bbO6!$@CJ=FW8M+$E*?$-F9tGD#NZkDnF_J6`lE%o~etAGbO$mfXWOY8WTEu zNUJ$}E#EAXyq1A~v#&++gd3fvf|uZ5$YoEpI*TXJG7} ze1Z)0t?vMp9g@3g#SzlEM+s*|52Pwf`*95MWCM5B05Q77QyTHw$2p}vp{h>U00Z@Z zQ%W)?D0WY0VzT>NGvt8T@w@tO)1&dB9dJ??o&hLQ!rQh!nkdZ~)Pl#m)T*xPMe5Sq zA$>Ph<(i&X6o)>jK-45%EwIB}5(?)=cP zZ$(0u3WZVI#L=`C;QOhUy+30(QsUBRocA^jyVC%J=Ki?ykqr%XEyDpaxK zb<5L1A*@Od&X@qgSAMl_qmgS954AIC;s{MNrHLnhqguvI`%| zL}jH~)wRehA{GB%7H732-|7{QVKooNejaZ4{fGJNd(heJa4f>&+QQP$5VSs&ld($_ zD3`^xl2NVBFB+@8H?;3)qU1$vT?FtgTXtU%l(C6 zCSWgr&=|*uum>;$8g&G5`ln3Vp68344w9K+GOczOscZ>r0$!{gFpCIDnZqZ|L8JGc zP`=`vAcV+Brf03{V_MMU2ckn30Y4b==Kyw#;$$)lcAip=c5TCNbpp~Y3U3C=J-<6= z@7y!L!lv(OAmfAY>@i#Y;kE1*GR~)oFqVE|H(^-Y0-d3CQo{Au%l zb}OH6DxbYtF^l8_lC&!O`#FjScnNUW*enuci?0^g;@j9=!^M>SgJfn*nA5Tiy}yPf z9Hif?Gf3)I*n@yRyuKTgX_t)g#}p>f0)*(^;;f?+{^Ip>YEr!`)96Iw{x#i9h#Y)Y z{D!yR^$kx0b3iV7ha6&UcLZL!)Byj(F(!A>GJ-cN2FB8uX`sq~29+ zZ^170($^-5pYmFN=5*fJak|Y|H|ctECjGtj?-9AVwp1Pee0sgUyt!BVLemJ_A8TxH zVvg~n+NO>FE!um085{i!@Q1VxgN`ZIF}P|uQ8_6HF;lJSsqxi{jqn*nehYyS)^K+ORITl zDs37>*@54(+MM5 z*%A3HA_t^xc90^Dw&{3!OG)BYHsmU^`|<8W_hS)DspNGjn?31%EYr__E7xadukZP& z%kG%vbcC&zn~yLrq{0z42J-p2#-#`=D;fD8e>k!F8&0ULs%e*Oe>$^vKC0gwKUX(Q ztScwPyUZ)KGWBGsB6@uRZkkkOpIJTund3>h6q_PpGlTIZ{e zp448Eh5Lu>$|H@5 zMYGywF?4gU7u;F}q#dSUV!!auB~x;sKnx1NcFqk;3ibCS1Axn4cm9Xkpx(4PXd<6H z6jHfKluCeRae5|BI+$JaTg*3$2ToQO)?m73pXVf(nBHq65E2`IY4DACZ^Z$)p!GjJqT{NANO zJ+-8KNwPzU49!^^uZogy%+M+Lix;td3-i*~a!C*HWZbZS|C-7ZE~s_{YiGilSjNT2 z!&A2@x1qKEB=6^|ju29yW_-ea-`(A7K?NQEdiVHDt1oJww*t>_cXV$sqMM#;zo)>H zofvPxWV3cGczzgUaLgB8E#=H@6esRW|FBtmCHr!FQC^M;zWLY+Esp+ZBc#WMQ;lATR8=P28(ZMaGeyN02fqF>}; z+6zPKO%=ZDDkBn;TA4*@>-dHR;F{UF2HKRi>PYDtgSfsY-2$N zJDu(*{isQTdLpkSIagrQQyOzv%ln4Uy=$P zxqL2Z6z`|HW^EFqzjZRiZ~nTESsIeIIVAI~W^(#wQXn!ZJ|K<3#WGI;-$;T-iA5G;&=x9zB%8XCa4Ph%=ASP&Eoaq{*$BDpI9Z1)?$!JXaL7cHnCdA1;sNa-qevo>N|{I+>cEE8ZagSuZ>9x3FA(AlygERp zsAat8;#qENtdSDJWl5!6#qRJA)hhg3xY{6p{g`gIs}yoqSUA;u!Dc9P&2hN(>v9Y4 z@C{X31L1OGW1yW>QOY=)$2X>@<8)T#39AsIn8EtKKAPg+N{3$G zM1;e6CS=Ukln?#kO|8bLT<{I&^05QYa=z#ZDVUC<6{|Wq3bg6G5n~&pA5+6+oLP>4 zpS`+yGB(EeEfv}|9|!A&D%XAELNv13;~uW7vDBMT=Yt;XDf~*6jzSE+Kd}{ie0MBU zO&Qp@KFDwwXQ&Lo9V0{o`-Bt2w(qB$0s}o^6?jjzhI z`FZ?sf<_hnFFSCwsXL5RZ4pHZ<-zTLN*Vc<4?m%fdtvIh7f*1(o}R2W=S&t%4i99{ z%PtcqvKmnaY)G&&J23qm>DD-KObvLlqI%%J{L^@MX;`;4V*)y=IwiBYa^LCj!lV}w zt<*%T0KPvI z{WDKyX_XSDA2Gr_m~5KenQ^3{d@PJ2MI8Et9f}+>J3((1ROiZ0D=?Ra>?RVl;Z&&^ zE~b#O%LNsf(WR|Be-7`O-`p)PA(`*Tzwv>-dpft8kpS?=eC^vus-dv?wwRaMulw!4 zr17c-GKU}dAyxG@u^_iWHRrE?^k7bPJeI*mOJc&RNd1K+Z&Y?gwrNX|ru674d{;mw z_bTwq*oKWN;Fg??JE);*)5B8vbc&_lAY6gxamh(WzR+5lX#Rn)IAlMi2u6Oz>D`?~ zT{fy0J}y&}dJ~MPx!bUf2Gec-)|*QHeA=z3{nK=|oiZR=JrVEDNTzvzzCkkGFCm!@ zUU?ZvV#xMxDyX`yRE|Kq{H(a|NsjS)eX|JmH+Czz+LEoC>W&;lJMziw$VCfp;9;pw zEkD(!*4C#zHD7Yotp{GHHK(ANIi2bIU@I*qka4!1svWeG}YYF*M!I;fFp7*8}N4Cj)^MG+Ts~v)iWiaUq z(>7I)N+#qi;VB*?p3)l8RmAb{kuj8a)CIjM*>mNIVK+l9=;D5Vl`4I3qCi^v*>|m> zg;1#LtQ%HmpX$BT<%+wL{5m{yPYwaHiYG@qAn zWv;?tn0#8N-@%nEKmePcVx$?;Je-uWS;Fk}wy0}XOl5@s04z0 z6IY>cV?z7yZ29|t2S47Y{{b1>!+p9rgTSkT@5_LNXC=Px888~v=Eu~$8c!dl{l`X? zkg~$&iWKT2S8?i0ZIx2cegvN**}ls(aIUh!6If+SQQawBx@pp@BUY5i%Osf5fHM}N zk&k;mbQjO5CL2fma8$kVgTsG4R65Gom+DbQ*pCG(E>tjo=%?fl$NAiq zP|&hMJJLYDN)}2#E%JfqMBw7r92$kUEVRsdF6;H1XdILq^?#m>(^!c` zUdlcD<3lr{kZtiqSqG#1B;Zg{u~Ej%75f4#eh@Uf{2;YobR&-<7by4Zs%GY1(N8II z`Fr}ZI^GVjk}sQt2lUyNvEd;i)lHKx6C76ee@$?IczR~4Oi6Iyn>HjkERhoQL-sUi&S%7)4JY0ER4Ef z!umX#4Z_j4yxWNU0+yCj^kw7romjZikSX>vak8_REQ#Up3?7ED|65!P`_7k@;O~Wm zfG`_>*{!lqvm$@=OY00ILVvhQHO&N^cKam2Zw@-40@qrDJEkgcH%J{L4T#8BYj^3i zA8L%X|B3{}o~8odB%Kl)`H-c%bfG@urd zN?%e>n9=I^$CtTeU>MziTaRif^pT(*9cOcYXRI%A%^WNZt|XK@ARsyt+y|k+tM?Tg zEF%#T$PFTWVtKmhNQN%*m{nK_pGRr6`k$is_eQDZj;k;V`8#$;sriPWXiOf?b!+!+ zF6l5L=Y){q_)2Dwne~jYXy}|A9?i_36@kN)L97OThmwML-FIr%|XDU9Jn)->Ap=aIJ@bucW0H ze0)HWhri?IUN`>Uzcau4*9-LQ;8v3uw^C59!`a2cXAp&)Z^D|$c2Z^Vt4wJUe3R>c z%sdJqNSHQ|WbnAn;=?IYDPrY+y^M{2U4b{M_$+Nddl8$*CQAPk_b<=zO`HOAg!-s{ znmU<=43laIxgFjZ;7A~k%nT>I#O>>{7PsIz$tnaI&B`!1RO%@$Za1xUd1qXiH(K0l zS@VOeEjR~@N<(j>Rs-L9lb4g-w zn0z{;l1Nyyce8xa`o&vpH-&8D*5QIpWQjQkHX-+xg7S{pM3xX1BHdP7T6^^a@eZdD&s)Rvsc4fStkw+qmEv-R5-$^wrPpZVIwu@f$ z4E>gulzTgA1@8QRu~P+JpT=IXUi}k#LoNWXv9U!EZQ6O)HqX_m9@oyi^?{zkXWp!} z_fU*o&}waX#?}h_45>rlGirm?#f4uPkA=yeeOOw0vO*5uIo8E_IZZ6vZD1-oSSR2O z8rF1`WN6>lN2;@Fua*(MzLbirIVu+ZpvQk3UDm1sjE!Ct3s zfu~fGcoh3SDl#~OJJMi3kunTL9Q@BcB`Kk&`Yz_10;@=~%7|vm@A^}QMW;VHL^&8t zQsMY6;v;{52haeNsZzAycB)>bp7`fRL?=@y$>``+c?MdDf%&0vdFx>ukl&)ipio4t zfu#0gL~Luat0%{ZWQiLi4%wgV${x-yA0XC}$FQ-ZW(HH!3T@yc1lxCe|to82#AF17VJ{w5|Q*b zaG~*aM~t`Qy75wM>ArH^Ud_5FtNo11fW3Z#y#}SEZi)_mrc8MK1ic+FXz#iTld5nq z3~ha&qgpjCPgFA{{4>Bl?jqbYvq;OH)N7Wvm7#K7c|S14ex=D{C>@hwl^1+WS;U=_ z>uQvLsTT*C?rE#^QA$XuDXM@d548Rn1EGq5v0hL1$FQQGw^T_*I5>n~2fDnt`BORu`U$Scks z)2-iRdC)df&|4Eg6hE$SzhON;7^Z)bIBt)1q5XH^eh9@vPxefb!0}!hs#xap^wUpD zO4ARHse^aRZQl2u!IrSF%9p?3(hX`wKd2_E4t-KjD<3sxmdAE&pIm+w9i{J2X7W6L zyr-t_{aSM7v0x=1sLN-$p#}BLJpUFpr(bNHiKF-FTH}|CYxa)}MX$Uz)zRoql!!R6 zlexQ}3cVqs7lk+WKC4m7fh;4T*(Ez;poxEJ2z9!ejlm!6A)!f2T{1760@Bsv^7j&j z{QeP-es{*N$BRweYAwSpzo{G{7nVnV;@KU0=|6AsC6sk`DEXMpgv*PKEz8h|S8Pc< z12o|iIL@Dqm`$E;O{F=EXulD9%OrZOgN7-uL}5piGRHR6>)D->ZGuaTQ&kiV_PrbF zRRMr(Ym4>Sy30;A%MO~(m8mTI`Dhz`I+LXK;W*`b)zkE_(9U7MBzHrDPxSqNR{$(e zzHqkth|v*Qc|BAfLN;GU0Hopw1~p|JfwT(}4wq)XjgIW6;zIM`Cw(Z$M6cWzK{~L` zBw{L{WzkP6RaRcW2grkL9~Kd?Fh8h$Tti#!Ci(Ry&UvgrsI=tGca%98#8D8j&rIDi!w93?oYB)K^$jrH z9}wSV954wulft~?FqsVEJ-#v+UVl7KQ)SoOL%HoP7f0|m+uL(m!85}{qC(?{LhH?W zDk!7Qdq_U>9pd7KHz3DorE44lB-Rb)FxstTnl*Jzb~yrqqQfbAhS-|No!4fXu8iq&G|Yg74-c z<;(@IWuKY;f6gr7{yR{=ttZj_F*8AI5iY;5F*Cs)r0q{mkPAS6zM>OLiRe1paFx?f zbXp@O^q7&Zw8Q+{G?8!QNBQv#{;byWEj2J4-~Ju2+x^k1`ir$qdOY^6Y?hno&Tzd) z-(W;NyCBf~2|``gq5OvW zhh)YUbb9F9yk>NN6*s9+b$<57UVaWZ(5~)e^2|q=h)fr&&r0RU^s(}eq&5jb1Ul?vgO*8c| zLf~&)<<_6oJ1vnpdEi`4a|nPcJ4!dF{B-^wr~H&Q<;TTdtMX znecP{e2`X51_zd_&)UR$6?cAu5e!UTg@~@K$`?J|wWSh;7=o<4=4`j3H)~~t!b4MM z^i>^`BYHIv8|!~WMfD#cA5%G<-ZMok?;MX5AW@Kh$fp+&=d!O-r>tVG(RaRDBBI7b+ zhK&iCQkB`08r1qlX|V?gOC8&>Yv^aniIB>sa^K}x!SgT)ryf zuPfwz`m^Car$VWB!Zq43 zHEP8*)+Oq$c@Q>%=WVmPnp+1-sBJzrgh;H2!B7fIVzzQP;@J-`K?vB!Sv|!F5~Z-D z>pCJJdc9GQJrWxxFp9Cth4LL3e?hh-dtGcz-hq}j(R*k@RqBV`Nv*9=3J0OY4!OmD z)zwXZ;JD~+J*`%ZoHsiMmG+}*o9W|VDIghJc|PKnPRr_um)r`)SL+uFMI|JTs$+?; zdfq9bKXx5~Oq@bcXEuV2bQ_5fm^JzWLA7T$5f_i;NR5SXbK#2W3HM>(l@;EbG=g#X zdB7f{4&-X*ND+Uf01J;MD==UMlpK72A0Rb!v`OPnhZq(v)8=*%+N6{^GYE4~(K(7{ zlB@qU%QA@%AR-9q-KQCbo6g(ENTf zNV;$GPaN|_gv`^1Pm9+&h{AH@-|4b1!_$@sKWrcqRfiw(x_5{?uexPRk#SgmPXLue ztoum9`_Ej59IQ51vuw*q?}SYudoA>ej(;tp$0ye=BEt^qU5%LZ$<+fGi~hB^|KwWG zq@;S0ih`S>o9;%#8g+=ak&C~$%_0%VcrY?qzS%86gDn#09td3e=*T@C0h;&*apF${ z!xIPR?9&yH*8iGX-k*?Kgs_=^#kAtrp-cw63QaWT-Elv|P|Jm=KXZ^P%deC;sEC(F z|@#}F$#y777g-g z0{sen(OmJ-X&8D8C(8QoGi>4!hPHb-NRf-qLdmCUnL(j%^vxE3VE)dw*WVNqXe^Yh zbIKH(lN%iMsh%{91=ZT7B|JqMJIjyIC*(7fu-_3(br|V%*oUWUr4)-vCEwf{agFzs zOLM?6YiqNb2{;hmroAV^(V;j`N6YX``lj}#U)|ZD>dg-Bj8ALY#lJ92?_tU&*xlOt zxAV|pPzGO=baR=1mo}F>YjU}PT3=LQfJyY0Z=~9c;I^w@LZ9Ej`>i(Bz)MNCa50&U zY9j6zbmlEUQGRiQ*iGg}Bm#?NbJBn{k6&F39|?bCSk8p8_r_`F*UzHRV1sD-tXHHj z?Q2`whrcCvnCYQ))}rp9@pYe~+w|Awb=)NNXp)2-_S-~%-EDNDc$l2nTmtko2k$J6 z2s6E86RTjrVU&28vz9WE{K$!6v^_2%C-y%3Cg)9obn%kHzD6(g4p;0z;*|_gW4SRye zTOabpwm`do08Bu$zmjKJf4l4ZwRM_vrY*2vgW@O{EM-|9y#?O0?wd!{<@u1;5QIQ{ zb88b1%{>Hmsh@hCQU50J(`-rl1UXawmNucW+P?cnQ`zm}>j#H?GAX?#8zdK|&a&y| z3o6&H&FUa3t?1ynjddXund-Iy8(~~T?!I+_bHeM+z52zy z^0xo;5e30Vf8;!xlF;~Fah+IIrmBX)XI~)H^hAC3?LMD{n>8X^)z(eG$1>&6jAY-ne_IZ<6de70MF1e!F9d7e*PU`S zAV6$wxC$|4No+V-eZv}Po6A3`(l^y)H>ql}o;uTZbi(PhbO$jWglSio&%B1}jia!C z`4QTJUV9}Vim3ArDl+@^11}#(cpC~oYm6jj#0Op|S$wXLEY4VWrxUkKn8i|$bVR;p z-|9*1e`x80kmV>L9rdugoBrY}Sr_9^k^z86hb}hiwc1s3SZ~901=@?sNcqI*)9?Uv zRPp0$Vs!QVeMW&Bx)aR4bB#U;9BCt6ThWioohx;Ch6FeG{-7#*!_`HY_)E!||v)x5@q2FXK6Hf4#%n6}|qehaD;>zG%T-QAo2_Tz_)V zR|~VvBZANRhmS{m-$i&^Bl20C71cYi7`@dn6gHR`#}7DWoV+TAm+n%vA$su6$0JN| z`;yKJy!Ct1l8X8^625akt^oUVq+HH}v|`VG*%z==SKLrd{4#{`1B&IrHBE)s3ZY;` zf7VTpt8NLt@7RlN#o?xMUK~Pj40eK);}FA7_daGnh69HWjJnq{HQ@AL$ZuRaGK^W} zR53!U8{RJ0zSI^X-!L{fgx2?uY~tp=rC$lDIiH| znD05pJx08xQ~b^txrC#k0}}w=v`Zx{e~}&=WgEr$2`S0l&`QI(8(sb1uFjeR6RuX~ z9?qCZR@|A=E$z*LB#1nE7DWHJpvh>KwfoF}bII<%uY*AlPuk*8|Wf0-u< z*hVWj`MqU)i0sU>r1?S;X-&JN{P+`Nn!19z!sHuWC=qbxcc^j*s$okU44mtuXR1}i zhV9G5@#uhDgzj84)X4Fc219w#S-Xh_UsC!*Tw9Gy?;%QoM?9c4T1s%yn=XOoCVOZY zF!ZDjm#Ew6LbF!ui9L8TVPkhJe;EY+bG?(KKV(?#P8_&=EbT*$8)@ep(grA%@y{{ zE&oGJ^m2t9@+kUwz9xG2Tut<+vo+DFc(!`|1dl)wq)@ghIzkeJ+o4i19RwiPfviN&o45Rdn82wHy7p?yJSRU1*$LW0$hW;WiTu^$$(3I!z-%SR`)~ ztWK7Nein;rQZ8zl*mLBmJ=cJ--kFlV=bLuSW)z3}1HH{l5CC+EzD|9$sm zSQ;`{-NiDii}0kZd*C2n%r$w{5N8SRbscyk`pfq9jV$Hfq)Z*J415)pkdDg_sdV;G z&j1uB5+U?e+m7(~G(1HCO7Rr5sl6Q~^7IQt>zE5aI*?}0OswjZe?3=6<5b#D(8){G z`JTby-@LxDvWQEui9l~RP`~zd69|eQ&fj|mj3ox0%Se$fWk($ISY&V>6qiTMaUL@Ekn?#3$Lu~y6#`+E&<14K@vKKWkC^TD z9nSTh$ZTzq;@Xt;*J}d#&@n`DU>ayyZjobuhT*wQ*J1gAwr@oA><=G;`Xm4FLx``0 zchN_)9)zv_|8h<7SltV@`s z9TsLe-Tp3D*7&MhA~mb-gY?pD1aviu0@Q8xLSWU&Tell~=buSUV{O;n=KS;fiO{}c z^VpuDSf-^vf6J-%i5zM|I0($Mb9?KSK7ZgWXhUCWhzbe%P;3OY@RZZ;neYEeEZL)6 zzQ1au(A<=QAAbHwi!GXm)!c=ZXWU(va6N9ZZjIE%HdjgI#3ybD`bLiiT&VAjzu4KMZrlvU4&fH zDmLX|4jo$u5tUP(NeGVtLz{*psu6s&1eRBPW|46*4NZQuB-HOBBoUkBAe>+yG>Qs9 zZluIgf5bP@31Dg%qHmALLevf9?!N%VG&#gWv6p)AEo5hXCm=gIqpiXTVVWmYuW%L7 zu@sD2>1yUv!Le0%0=`DSb*T*l0zUoqWeR^|o__qiBf<$I8~Q&!;*D$)f~d-wW(Iqn~B+!YEg2URohk$#!@S;H9XHGOYlU$dFJWS`(= zsMTYpPHAAh#Zw{3PfC)lv~pxj6}>dC`BDXTXr!};^x>Y>pnHSaA^>DPt4 ze`CRpYIOnF(^%Cj9iPJ zWkG(UU$S_c`XYauiqe-R?wC$1iL77`l zay%Q&`BZG5FsT!j;6lRBg#`*r1?peB|tKP|#-_ue#X5i?g_~{j_zUz={e=mAU zLloGuM5r?$KTEbIO%U~EulXj)^HE(@&)Pv;3&@1Is${DORU{xV(4_p*#Vus=G_l z6;J7Prm(B0VPPuM0fBAxGb$DAf0Jq#nc%WOmyI0C0D-e5EN6>F*RVTf2JBu}F#Cwe ztaXX$os)P)!Gz{M4uL|Z;%h*Z4ns$JWZ%nqJY1>QH!gD?`?N7DYr(V-x&dH04VHbo zMkWvt8;7bey0wf(E_0vJTow@-3<&9dwC+CW9O-;gg%_-Ak>0Y&OR8_(e+xXdd7X7x zkaf8`2phLg-(|8D3_X3B#*Wh3>n?vm1D6j!DG53M0*%Gc7$Qk6K_(_7*%Jz9nRLu^ zEG$NwsUPMZb&8(1!yPnKo6eP_FtNy3zOxm)%f3^NvODfX_Gd$K&hjziKrkP#-+*As zJa9IJZMyAhWdTSaRv<=dkLB-(%IeU|-K+)pxV6YQW4;e*&D90BiGhWytcu6zwg=7ztiI1`wP zGrmb!cZiO<6vAe=9apK56Ow7NhbX0v11LM8PE5D`%JllY8q^$D1AJpBx`q6pL*xiw zke!Sl0`o&!r1@Sbf9gc4DU~iNuS!*utQZT>@O$l#Yv|~QqO^}!e`R_I1+2E?F|)C{ zLrD$AP_R^`K@YSOSUnR*UEtMQ@#`_z=ei0l2}2EMW)t$HG0e>?)Z!s)3}8nyNh78m zr*N$Eg8=6(a8&(Vq6=dsk>IKN<6idObJ~_jEZ3J!T8a?*f9q*kbO5HJn}q;*i*T?U zr*Nhg<|Vrf`5%Q#eDx|o? zPO7yYhF%6z%Vr=k=&)yf5 zUdtUvB0^jXTi&2h;xCKNk+G=?hk<6|su_=*1sH63fA)PImO+$1csYnzQ-#xu8@5~3 zpz?6Mw+b_)UYy?tJo^QdgMfp-HNKERun&v^ubK1;S<$6WQn*`z1fvFwHIP) zfm3$Af1qWUz>D+X`M;dAiWcEeX%{u!S)#aRf5}OlVXFU}3TJ#9sRg=AYC=81R2I)I zj^j#tM|Q{3TSS5(d@r z>o-STRfyQ{pKw~Jz+16bqE{#gAPN+xJih93>A}7^$dozAI5Vo_d@!W8y*fp)B5Z?% zY(`~`_awNrRzu_0AJ_DuF{P5L7{kzJ5)S|ZX3BRmbt6M)#I?f?+Ykd!I~+ zZx~bG8&hCEObwQfNA=U@_^?JO&)x;a*7QBJX@K{$cP=cfeR(SqdacjBOaZauuqnCp z(hcXoB)*wF!sC|h-#ty+)|)3=4*CvJf9xnly1ZvAQ%g7#Ru@#@D!6zN4{ClLXJ~T5 zC}?gUZAN700A8UcYTcG9rVzXtaQwmp~cS-gKue@T_b$}fg1CtVk>*`HoXH? z&}dhEkAUJjUXqvPqhvGRrb>98raPa-^ry+>(O?q#Pp{jm%SY&=5+IeIYD_dr;jTYz zoX45zB}-fbwWm=8sF{AHVZ@GZbqiv>28oGjIJ+m`88toPrtiOQT2afQVP)FA&xFNC zI8$~FM%1c03huO*z?C#agqYNne}#iC1b)yXHpN>cJQ3eqCaEt558?~0<6PCm7kbHO zZc@*gKBn4G;?=S__iy|?{?Q6|(6f4Ek4jP&>l zR%B|wr`mN$Oquo?s)gUy2$ie`+g(W{n@6M~Gc#f4l<;Y0W zy18p5jX=eWyY}o4T;L1oe_6%os`9n&>E0D0D7y*C{46IWp zuH68_s$bOVzsEDd@ihi3w~_rAqgIAhjx&&vvy%-$^sAUstzihge_yecyS5Z@!$9P^ z_~jf7pU?X~-*kGBK|L+(MNpf5!Aad_z4ZB?wl2K%sy%$PkLFGmO`w@ga-pRYW9WMz zcq}R1GAFC$>g6#ygsE!q7yI-#Rlm+vkVzMiAJ$V>Ts(>|^xkkqusG7OL0-yCGS%c9 zodFRPmb?<|vB_6+f7R7Z`5g<2)Jz7|ML2jo#cj;nXOSCvI~A`4ts|EW?k=bbW@CH^ z9Z2KGtPe{hMG@F8l^HQ963)Y>F_B=W9KM}HV%QiZ;mWAm;6gQ-Z?j93P_!BI_EZTr z$cYhru~j2O^l4jnh%UV|90{QQbsfhROB)DQWc~A$;CBdUe=w0oAP~YPUj-GRT%K9J zX0b^Q?Y9X}?zd#z&S2wgT4}SYk~+mG7GqZ&w_|f3zXKEYOm5Jl8JFW3U|sQxgVmB_ z;v$H~A#f*gF|@#10Z_6nBg8MM(i$X|Wpuz` z8)uBeZlU;ysm;vo#4qP>>D$K5^Pg$$TR}i2IW1SUU49E=`lJBvj_Tj$hB((sQ3;@9 zQ|q-}0ph1KqoJUD@%m1lzIpMpL-cP)qb2zAm>4J&fBp6x{EsP;&%-qv;QMPq6T&$W z4v_Kcqd0lb#)Z(4ik?XjK$>fypHbJFFNF|p>i5vkJu$($1n;RBc+VFWg{pDVdO8t% z7#81Mz7=D4R*{ezSiCM#SmOo`cYgr*J;-f9rfcF7y9}(?Au?zmib~>|cVqDl=6II; z9q70te_aR^cS=O|j>{5j@e*ZTB|FJDtD1v z)A`q$iE0)*?9Fmpq^@-YDu?%{F-Z(_&5vO*okgK@N7aK^f-Ma?`(h7x#Ygndqhcs@ z!9S?j)UmbgW+~cg+6(r^co3$Nz?sFL{3dM)f6~^iY`cQn+z%apbR9;5^GUQw*>>Ui zvh^VP8Ll}qRoY3m-m%fqvCQVKT^^ZuMEn{FC1G|(&jL5**I2g?M=d8ce8$ipAO479 z6oWmVh1%}CQsP$s`4@f5_*&rFspM1O22I@xJ}X{I4xiIpN|i`<)RJH(->y0J7mCT({NIGUK5lhx}7D3cuNpC zlcv#O)sOPMbDLh@!{oEg1U8hK*jfT6n#{N?2Da+ki`X6D#khR_Kctax1|(4o4JAa2 z>X-SS?}JmX*QnC3ofo+-89U}uj}l**D*AYy;KO*i%(mA@=wn;A->o>9*Yhv^%`mP| zN?>HnvQb>5;cU<*yu10g_sj@(6akNyZs7=!0oS+x;Rp*40m!!t@d#Q28KCDYYZN1q z-E`{fsxp|c(M}D=q=Jgj|AV)F^azU&0fn~;1PLV*0mrv67YV@we_RS5+)45Aonh~L zh5gFF`TvhXoh_f~`7LI@#@k^F`wnZED&^&c4#nGu;3ve!EM+tYO{@I#+;mL zW`O!0!gCRU(Yfu%f1>9Kg1Bac+y{U)w{`FcIoKpvkiCUHs-3ykvO2;v*9zh|x-rj7 zS}OCj8Kz;oT;;A26=#MKw%Z(4+@7L8pyme{1^8SRu$H)ofCPu4=V4I^%I8u2d=V4d zs!t<6!zd#1h?6nsBh4F(3&QQKj8#OAK&&}OzyM-`X7~qge}V~L6^B#}xooU>erqso_R9KPoKLWgW73swrVa)VQC8aL@PlE8P{||%ktsx6@dHoMT_-3ES z>eT285euJve;9&|Et-<8E5w=L{Kz0uM!-5D(m+%c0h2^pA>y~QD#WBhAb%I6KwHcG z`6%3@HkC;m$iFz>4D0LPqHNK8&w43OLHNJ8%ez|w+s5z@#9-Q%VMiQm3Ww^)tNqZ< z3x@;$FVqGozc!%qzpOR@ITO!FE8u0P__B+gBsGR;f5HCzRgb9_&0-h6YA%PbdXv)} zF83h7QspNOUX=7$NvD7a0ml&XZ~aQAcjP%H`5mubEQ;D-h0TtIcj@5t7F0qAnXlO? z#u~GwB-m(%;IXv5b(ugX0{gZmk1U`D`oZ;dy_l6|8j>-{Vdm<%o|~0AhYm~2ZEF=G zY%rf|f0yJ>f-U9{U%Xh0dc=mn>%!i(Ql6=qEO8Kyg4M#nJg(P*7u<1BRL& zW3O=E921dy(XghCmi-WaWAg+jH2l9iU{e@l903+bf`s<~6Awe)vzcyHCH;__NJ zOfz3%rU$l)S~yYrykalvh*-Y^nzik0UWxh*gj`0hZQSH^? ze=9C9Cxhnu;FXJNoW%&7SFRFXdLKeP03I;$?f$R7i0iD}l6q94l$3~nBK`=Bg?0Gg zf3s#(0+14;fo}gfQ`m**M&G5|wdUayjQ3nDR7teAk=limX(ZQR-eNyj z;ofF*$D=QA+xBVYKyoiSH?Xee>RTGqe*;v}345r?%TC*d^=&yFLq*kP8>r6p{C^4r zkK^v${)>vcd+Xg^;3Etc9t-3$U94X*s<=-uVqHSu>;`ypw#1V&{emYaZyKetRRsdA zW7I)EAs70NZo6Kc-xkH&F5I?;cYRE|X$2utN4zJ{Ggqe-xaZ-kdsgtC#B5;if4NtL zyCRw6rwKd2{3l8%(TZMfK%%xPw>wtqERs!-Qxy>J6^cgkP;h zz31;PqWyVR?1GX{^(^dPt?R1gZq&bbn2T?Y3tGsJS~Ui%>ILBtj3~Aw)xv4@tQ?hh z?NweoAvQ^L>a-V|nLGv+%nci+e|Bn5=_x0*u~Z@Bz9IcRuY&0}BW8Qz744iy;w@r? zpOX;yqw+)JbpfMvVP}N#e{+cd+T zm<0`oMkqTSb0tb0O9Ggygh|*Oy@W;yLVEQo*TTWYQb0-z_I;0S_q?vluCMoQAFhN@ z1R)$m(^dcSYCS6-o_38Te-5hcPzBHQ9;$Exiwc8KA}rvaVIUVA;7m2k#Q528QvE*+NFe0eCt~krOLr8)m8DW zjyw*v?%Oni{||qv9>>G&*DqbMGtz{hf)foFr}7g3HmcZmIKzs-e?(gCMRNM=4-Mho zI?`vjqxm`ii1_4hJj+EJErzm<5OzfR*<0eDMLFR&j{gZcKiVJ6F#h4z8e~nw^dJuV z7bjRvgtQ%`rim&P=$ArxC}&W4#n7rPUH{-nduE_*=?&FJid5~b&7^_^@CUo(`@Im3 zEKZaUL`D2qG|P)Ge-g!%X1*Oigm#L^hF$aVH6HnnpDRnV(Y5(~kCD)w3K)82U1ZZ1 z75DavTgRPIMB}cQ)4oWLS$iuO@?YgOJGz`No&=2q+|blRB@t^jyCrk0?3Ag*-n;2vf6agOR)6y<>o_Gncj{dG zCXb#Lk$#>oC1<|HTE6gB+hfZ7tO^OEDzLOLrM6>1!T`r%c{Z8QT@EjyYs@B+S>OvD zB-^snhDaO_0A;@jzHp_mEIt1ae$AWrHG^{jfMC6`nP$7_G^pAPrg4%=wref5*X5H` zfb=rmD6f5ufBOMPP70wi05pXTG{f;&mxA!&Dw5sk)CZb>?KZAZ{A5+P0{ry{7H)cH=nNlD)YqZsgWlDmZd08cInd6(*0sw9#zCK`?fBN?1gJ zgru6`AMC(b4ndP4asaC3Mq9?1lR>($0|~geH`>xPo>p7;lj$4xQ(MSbIpUeiY$Bp_ zDaER%f62_6ac(V|Z?yY;t6&p*K6^DtvbnZ!Tz4%&{$`pOQ=4UO-#5{|E`otW{P;H> zh*(Xf!!X49R^c)Xu>*EE*SltGnj>qEE%;%cZ@QQ(U>hzgh!MMb26Z=Xl-$?rQn%|V ztdBTLwj@CITfN0w-6;%r-QovAxZSjb(`UcOfA>C(j2Fxe8WZxVh^I%_@LgJS?{{4e z#cZz)dz)<@vq+n~b`{n|mBriCivz{N>$eczh1jDzwsHOyuZY z9lO|kh{jtpp zfALTH@}I6b%-yb`>HHg(_ROe`|^S z9(6E5o{WEW*Lu!b(~b8Y7xy@9wW#{{;%Ac2yM0TqGz?htZ@*%Rg24j>|(HfrK-)zk>Cl=en|1Ohi5JjU`6$B)ac^ zJ4x;aDsoqUiD|~wYfx2gSD<$(e^pe{m(=Chn>G;Y6`^9&wED8b%8A$k-WY>sGF5@pH z)}p@?SWAacT0iMAtQ&;r?MerXN2T9EHC^f6D;?F5uMQm@VJH1u>>TdUf2i*n0>nrF zDj>u*RTzM2oPNyXAC2+e%c@-~OpZX}bD^Y2OTM5i6EOum?|$R&maTMK_U{%Ht9ACX zOEI2t>Zz~Wo7Qtj%07mWn|_8? zEnsKls}|Xze?!YWe~s23f1Ia8BP6)$93NzZ=I>oGK+D4O6DN*SmHE=89^so+E(^vm zUaw*0@g|C-V_H-k5R@M_9YNI>(lI(ycIN)eh0LezAIoxjpH^497${#`IJ#?G>K>?R zt(8oxSK>V;u|IcAP^o_+_vdo(=Miu0(3^rIyrS`5YH-Qm=~j% zz9=WWS*q`Te?0*AJN&fGpJ%-0`3@D)jrm{C_N%kmetS0C=l^83iyN9cav;F@jm(Kl z|2}7f{4nQH{%Li1jQM+UP+4re4!giK;PMbwEEgy8hzX}(?NqQZWFCTky4|O)6sEQB zvsl^OzQ)aIAT=jNf4#@aXs?wn)&`ri@8*i6#dvFN+W5l0;HhZsrWhEgQ$KQIC;c@N-+i# z^jc6kI`T5NM%zMx(btZJd)u~YUX9c9bXq^2?!K@Jn_Qui0+3?NDG?MCH6?es=tOhz?E zd5ZWMt7WK`$p6<0`HaoICsSpgNo;KR&;Fd^lrAg@fALRTo_)t4y6yAg-|&3{DErYB z3JYRP9XFk}4KbZ&$~@&)hhq`&0ZzCIILE0=>}HZ6Vqv;V0pg~ja63{M?nlUy+%zN2 zPc}#ZLjbR7I;Ay9ACii1Ju16^9h2^A&kLA{Gt6Ttrbhp}c{u&?P$fF1FaL`KQiu#C z?qLW|e+|d@4~Sq@{F?yPjHukB(jDQ z0*F`66oSWHP343%WpcaKcai|UIDyJ*lxI_ zeBpDK72Kh#gsFBK;>@_Yn*OJS{OL{*FU{lot zC1OZ+wdVcGC7?B`OHGmHu8a0Hfg3eMK@I$k5x3^`mKDi3+Le<5swtz*UIM$peVHk7 zjyaM!o=v8=sKP07sKtYFl<0Ou)!4?~&3w4va}KSosgv7DzKdbxy-4-!Mchyut~s3j ze{t89Hrj);Pv6jgdne>vy*MQ>FqEy&c;y1>SY1l`Gv$xLpF9LNw=|g^yg_&elc^*p z6T~~JIOrgZuuhv;b*eBkkiP30hWA%v+EIY~VW&lQsKK%YZJWG`!%1i!a5ee5^}OK* zg$E5oi6}Wo_AFM85V&Yd#4*e}u)~k)fB5aSOt8U_cf7{zLJ5@Xm?`-jfbc6K@@alg zaF>@X>YdXV2_c`07==>0OlSV3HFsCOKgLWMwo9xg=gIusC;Y>;`=NgyWyKGR#A0`l z`XpM4A6MazYw_bo{OC282VnHv$i_6m@nfzTCEf)o*hz>9gHDGTEDbF2zy`oue+&{A zQg|e#a~no%+jwq|MF?^_70W5WoL0+F_sje&3|Zi_0KoNYn8=8wdsMoS7eGvn)kNr8 ztf=xnB}^YjOh&rjlS|se@Ei9#4ePr zd5oD<*J|EYR>jP4BpD-XJLtdGQTYsqfG4DS{U{YI;ox^nuO59hl&1g-X&|G2(>AQ@ zI=MomM6qo~{sr?2mW}PFNLNS!OimNNL2Ne#+`4CQYXah?@h8?Qow0V36I=^))g(?v zLS)ROmFjX{-T)L;p9o0le_AEtyP}@~m{8>ddQBEBc}VRGW_)N1W;We&HG&;*9O4;qdwXqpLaW|2{vaGc3feIJeh?yl|wls(h|ZDNM78+ zNoYSFBfq3!*#vX0RXDJQQci3uy(3X`ER+it>xrJ4#!``W-ImFVl3;aBR}l+}XCmudl|!;#tJxA|}*>0J~fe zEflW{J}VIbOLPZc+ztcWKkI!2V4*VSV6FWudL0eKcQY(3j2MfFU0s?sN#@G)`reXc z=vOR1o{7o$x9{Du>x*8lG-qyIoiZVRqAN)@HUXRTk?M@=jk3ieOg!HxDO1enf|c6NK`SNP3bmhAy(qHomwCU_uB1+V;4wEr*L) z1SUsnlR9k`@JlBmjMtkWE{$gQ80vww)kFn0MEC^F@(bN|Gh&ZLvV>hp#pX_ybo3`+ zgHNl2e~G4?lKGI|L7=Na+@^K13=62iT-s61H&B5fD(sEr2qALN%p5MIqNK19)DRvh zBh;iPw*6~~C%Vn2x+IIn8pkSbu{!!NlprA+f2TO72Q0LKHeDB?Dc)@{rEv=V4A%Il zQt5s%N;lCgQ<(55buqGntojnl7iLARlOE!QfBU;Mr?H8`_rwX;Ebjd_NVf3$^}D^* zNwJM{)Bqm% ze`QQj^)LsD-dw++J>s~8YHZk(0WLcD)1y0oMJ3opkg9KpR%e`I-Nz}`tutU$R5(jlyW}T_8 zIXdpyLtVRDukM*%X#H<@81sr(V*<*V5s6ebRQ(UCPJKu#x2DFxeZhp?VJt?Ef5e}& z){$EQ<YuVwNQaUKZ;an{!wYR?5thr9uGp?Lo1Q zg=<+H6P1SGed4KLll8c9d1xSH@%5YGBdiQ#maYD=WChSSFj%k77-Y#2@=u; zSP?z-aX;6}F_Gg2y4bU-5^rHconmX$1)z;3(2XCxfl1Ip26NzLdL}V+e=`EIYtnXb zfvMV6)kRM*emaIIV|!F~p~$@QNXqRls;z!o1cB^goj6?>^>DK6n}?ZpkfE_U&d6>0 z#DRF4e;JHwPL}LLJxRQ{St0bxRoTZb57jODv73H)-4>60O7Kkuu><&b`6i&Se)Q&L zVqhtHrUoFHb?QwjjN&N!f70RBm+k7+Qh-(*B}x+g{n1G|^)MMJfKAjm_-A0*Zxbgb zBD}^D>I1zIb7|AFtL`wshU$#U5V&=DLi!rxPW>(M__;dAlhSkvU+*Dqtwf@vqJ#JS|5nE@Jc9t zVc+6rB93+?kpGv<`K8E`}6XtTCZ+ib8pnbWHjP}TmAQl&PIT*sap5FFOf>&c&e&1D$U(}z|rB> zPP7!?4dA!mqd=Nhym@p4lgD!R>dG(TyDpEha=hy=eq$9D=>>lVy9JQCEkqh`h)eNq zLG}a`f2A(uF!FM`gc6JJ2G@AiXKuoqh#n^#i$CBGU3z5eD)w)Tk%$M_yzRMmqbgJ| zyzn_5pj9Vo4I8pD{89MuRm;{QkVL_+U!UxXBwbP%*{3CN&T(>v?j{Bs{+GU4RVuYa z{~O-y)bTC-3gz3k_oFA_Y$Va0%Airv?>h^~e~k7fOK@4sXDM?#z+!zv+!nCTesYoy z_R;wbOs%6{+-MGNmmQ>wWKrLz7~knmuuKdpP{!p7i2}3b|;7V_N&*_bJO2DL5hWvs91e~{@M(pPfUPTi8YIrxeHTGO?5fsFR~>otn% zjMi>@k7ySX*{t&}W&N|hEM9$cPUd-o)B+%pd6!DvYgKK9%khDk)CVrrr6<(SzlqY$ zI48XObM?O+A`we*puu!=EzB}>yN!s|8l|hFWf@;=07bW8voGKf3eUAzzAB*Le}(P8 zjA|cSZ8v@W#Lsc_jZoC#*Um5Yq=u^I+bT6I2^(-%4s2Hj78T(5Tg;j#f=M>znemB` zN4gg9hDJ;qik1G6Z}PmdI8h#&Hg5MZwQvrt+7nILMiaHE?k7yGm&aMal#qDWAuf82 z!43b6_Dgk0hfEMQl9NzocZ|Hff8uJCXI>b@SqxY=E!`igD1>@B?b#nvV%-5pE4bR3 zUOQAUGROnWi418Er)MJg^5FtRH9qr{trUDD*hHCAr(uB+6AXhih7*j_3E%C6EbLmQ21IR`Kkjgu0J_LVW{e!Z zu}i0FeKi)$PMI-v8&ymte?xTz&=~#Vr%l0Ct=4cYJguWYA|`$U*z0_v1!Rif2-{Cv z=g%y+^Ej;jOeFFs!D_8OMDd8rI%p$-12xa?CA^1W__Ggh&O~F|IFMNC*By>&|EIe* z<=xHr?l(oE*+84(u=@C$r3o;rk0;*^n5$=*EMwPEHbLD2s8&d!e{n5UH>!4f6ffQN z^)?p5WH7gA;$W`W4W?t`zeIKMX;6wK&FoA#O!Fn)JJFG=O9e6WlevoH;t0L0( zg|Q3#GW&Ve7ymCw_V<@q$i<#uOm^hL?bl(tU*9SOdW(NZGr->_QsCzUle5ap(xiS3y`>adQUW~Xy zGO|Ou7QjTsQ6sSXsV5^!Wr|KA55eyih#QqTGz5VcT^BfFf3wsj>Hb~%QcY>$PDIHF z1hTz?KX$rB<+-QM0TJ9c=%%(Hjr$H-n{oYOmk53eRL!V^_uCQ-v*zHO_M}Vwf_YnL zP`{(TU`xaS#=+&U@hT?Jm`ZfwgvE6<~|o|B8*IPAG?+`QOxD<$zC=JJ<+-*fP# zbmsM*l!DHu-CF;tJFyJC&E45g0ziBj?IEy_V4`)Xn1AHDbRxTyyv(|k>Ya+-{ONZl zLf4JhLDeIDqxf!zxB;Tp0ZxIyX63mPcFRC?%PXwZe~IgrecZm-DA-v=;AF82YU?y6XcDO9eQ6|y%al{aXqz4Fy#Ga{$Z2$i~A{B5M z$NAfkSANS=; z;7Di%e|&eRA)sARTaC6a8&~lSMcWoARm7tM0VWl|R`WYK{(#jx8otc0>fAswQ_aCE z1XDI0(!UAF#`M8}-@C+sw*?Wj&VvLLd$8Pz-YqDL1$a|$l(aGJ@`4isBM5CT;bYOW-fpwE;o;L*`D6&ZNbMkqy4B>_ zAK4*>(jCy1RV-J7O{e?IE+jS;)pZ^FlR0{&WCaRNXd7u<64uKV3@k{b)0IRK)j(I) ze{1Y31PZSUl?1Pj&GkK`TM>i@?o2g7xJ%9WV!>Q-#ab<(sMcw7DR%kGLdr}!?c*Q3 z^}f4-g4;VTnBs&Nj6#YQ7gG>VuthjFD&2xZ3QRe!Jg|g-Ev|H>l>WP=1f4b$iO}1wtK7XBfvcW*%G%j6C=2Og)%$(N* zQleNa^xsbpLEPd;WqJfS{Is$5fs!VX(}ezXsnM#&T!^_{XKCK$2L@NHvQa7+(quSu zN2U795rY8T^utTTcazHhyQkic8-XlYdifjrp;z3K#jN;f4oEG zi%Y5?-UcEBRpSikg-Tr_`pT^cP_=BBPGCuJnWvUprLkoC^KU2WZ-&CaP{rB$`8TuG zeZ`SfrOgP)m1G2*FEh`wBby@i-kg94XiD6XbiJ)NPPnUZ}S zAu?VUI!i>|KfW-cO9xtn7v^O~FOm51#p%)))1{g|U2-&CZt(xBqP-c(;(#sMRfHI~ zH5n&s0p`ZFgNZA$viY5I`;Df8EFXh~KpOcr6_1q(*T@twM+bp4^Soxxe_Hg!qSfFG za(m6W*s7Q=P7n|OWnOk|scV~5X@s%*PXX8U)egi>j3rxoVCo~D7{KPm_1JUQ_Z!s~ zR9ZPDrBnuvG*EA4sc2m)MQiWaX(ysZlIgX9`pO<=iG`D|b(#he5=DWcBzpn4WUgJy z_CCtJ6SzGHNDqgX2ihUbfBG^y2*xiD%^6`8Wfe;Z&1l}|aV1C&NE5bGrLG_%1HRC( z0K?PNLLl4b6?eIo@ObRy0bgPiM5Y4v1!ry)3H1#mcn3j986ld~gBIFSC9&SyBu~Xz zT*C^4ujA>>7dUl9!_5wo8sTZP~%naE#ziNpgWVjm0&=XK6JDu)rqx0I#QJ{v3Y?J{ZKqXwi~M*5Z$5Bmr4 znWoE*KY4>2#)7#F)URhc1;vZ3f{336VmJ@bdvQyo&96P2e`!(HXKqT5Nmcy8HE%eh z@1&4Pi_tbzk`3g! zXB_ZfVr}ykgwT+Lak7Cg!qVXBMu~OpZe;x=I5_9`yYBO7>quypk{+4c@m=>a|IFn$(b-@GD0ul4HH_Mtl%ghM6n$s)b^kRRCWjuA8_~hTO!92-KWifx#hHbrh z0J^#!uQ=8o*{=t)yX)BDa*8G2b@rkKO$J*_q%7=0+;VjYbvs`_ow-^&o5}8Jg~~eq z=TCDAqIgP|qElxNlbCEXjw)_;#53iqul1d^plkoJCBXh|GM4~YX<|_=VIckV*};mc zwSj**S0>LA%rHj7>$6$+$=o0`ZjDREf~6d{s=CmNmDeqlxr(IDsK5-ew>O2!m>}b_N;!G>WfDlj8T@c_UYsCwVP=YVshmr;s>iVDWZgxb= z>=)#kg1yLdOCe!-!7s(6k->Ip;@f4MC9T;G7F)N$J6AUm*fa2_NFTDQSS2Wxi?Dw= zi7*WqP;eNwoUor&&>)+NJqmlKh#{M=$mV_eCcW40OxK9^q_nmbCS%OX55Z41hhzNt zC}?o^jl(mVF()i)(SC0{4!F|LvF2f5-@x&78UtDnX7MOygqnyW^qVe-nz*-cNe@E zC!RGbX&UQ?yg>bIuQf9YL7=RA&oe0!!7SfBjjXhv3l*MjD`;VW9dj09rRi%9c`DLO z`n&deCf?hTi#5uRzb@_EoOG5y4vYK+-M;i z7?zg?8j$~;KP@>d%!TjpsvWF_~VvdF4YtmS@M7ALk`S|^|@IY zp2R2Q`4cE)6?+uzRK8UY7~dm%k^xx5|4xlm5mfJLjK(C;IMs7ycr5y7Df*jc?3g#Z z|50}Gn{9K;4<=+-sVUy_25woxTTcGzEuWSumnZGleVu};x{5lub;IWGlh$A9DKgr) za^&X8@i0BIUnw>;_HloZWg0Q>V|1MpG`j`MF(xb%fp@WxiOPuUMjB)*xrC#+A#4+= z#z{G4x9-Im1Q5(L>1pf`+&PFv$@3J|4{o=LQ$>Ab(0k)x2)dM$A?0=4j604MZ%>3b z2Ox3{DS2%u++ToUQGE?q^}hRzaL60@S^^Zj?%v`1MPsDz>C9vxuyxRPxaq($x=;2i zClP3>Cs!!_Q{!U&1S{jUN7V1it_!MLP9It(mn2k=ygVPwS5`;_=+6^Uk3b~<>7HiG zJ+?yy$Jh~vHq6HA-mF~@-NRQy+i0dfY}L4MHk2dM?7ktF+erx;1$iBrJ`$JuNeLx? z&Zx*soYg!#>z6z0E%mJAiOBgw6QXWQ5Gq@=>>BP>JwAJ%I0Mgw(S+@Xlwx>CVq$gq z$0b*#>1jo%dU*MP)87!%n`lvpZU%nrt96`wos%hrUy%6xH&mlL<*k{lznM7l1Xqs5 zvX7y`tDGbkmo#K@`AwnYyJG|T)MU7^`CN(_X-B)-un#1Yc{0~^k`Ilr{&i~-M!y|8Z z3JuocP6_T5kU>Jl+n(abyd4D(w}DCdB5RsCL#HLc-6Lgorp1Xw{zsv78rx-F@G3E z=DGL&8K)7WEp`bHKhv<0w=%nAA+LggbL{iL$!ju2VJrIn^}tzTbebL=Ngh_$MYY|} zvym`|8`bSEfaJK5T6cybyF!S6D11kxTOcJlk=Q#3rrT&fpY*`W z5_E59ems0RPfg@z@+zWG2~|2qz5YL$nTLcCu~e3fBfV{NjmUjkuVUq>16=j@1eUR3 zRKSn#^-S~mHM;JC-Mq9b!g25JbIo40O zk`c*LWlMMoIMDBdQSr3vYnu~w^$Hb>1eQ0ao3+Glt>+0BH#G5%0D;y+P4|^=df~=v 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

    jheTNpz;ep~;7`UlAG<)5H$3>Vh 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 z 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

    IDbz7 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 (Ns(n, t, "read from private field"), e ? e.call(n) : t.ge t instanceof WeakSet ? t.add(n) : t.set(n, e); }, bt = (n, t, e, s) => (Ns(n, t, "write to private field"), s ? s.call(n, e) : t.set(n, e), e); var Es = (n, t, e) => (Ns(n, t, "access private method"), e); -const Rd = "3.0.0", Dd = 1731029563635, Ld = "production", Ft = document, $n = window, yo = Ft.documentElement, pe = Ft.createElement.bind(Ft), vo = pe("div"), As = pe("table"), Fl = pe("tbody"), $r = pe("tr"), { isArray: Qn, prototype: bo } = Array, { concat: Wl, filter: bi, indexOf: wo, map: Co, push: jl, slice: So, some: wi, splice: Bl } = bo, Vl = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/, Ul = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/, Kl = /<.+>/, ql = /^\w+$/; +const Rd = "3.0.0", Dd = 1731033343594, Ld = "production", Ft = document, $n = window, yo = Ft.documentElement, pe = Ft.createElement.bind(Ft), vo = pe("div"), As = pe("table"), Fl = pe("tbody"), $r = pe("tr"), { isArray: Qn, prototype: bo } = Array, { concat: Wl, filter: bi, indexOf: wo, map: Co, push: jl, slice: So, some: wi, splice: Bl } = bo, Vl = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/, Ul = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/, Kl = /<.+>/, ql = /^\w+$/; function Ci(n, t) { const e = Gl(t); return !n || !e && !he(t) && !tt(t) ? [] : !e && Ul.test(n) ? t.getElementsByClassName(n.slice(1).replace(/\\/g, "")) : !e && ql.test(n) ? t.getElementsByTagName(n) : t.querySelectorAll(n); @@ -22,7 +22,7 @@ class ts { let s = t; if (at(t)) { const i = e || Ft; - if (s = Vl.test(t) && he(i) ? i.getElementById(t.slice(1).replace(/\\/g, "")) : Kl.test(t) ? To(t) : Us(i) ? i.find(t) : at(i) ? f(i).find(t) : Ci(t, i), !s) + if (s = Vl.test(t) && he(i) ? i.getElementById(t.slice(1).replace(/\\/g, "")) : Kl.test(t) ? To(t) : Us(i) ? i.find(t) : at(i) ? p(i).find(t) : Ci(t, i), !s) return; } else if (ge(t)) return this.ready(t); @@ -34,8 +34,8 @@ class ts { return new ts(t, e); } } -const x = ts.prototype, f = x.init; -f.fn = f.prototype = x; +const x = ts.prototype, p = x.init; +p.fn = p.prototype = x; x.length = 0; x.splice = Bl; typeof Symbol == "function" && (x[Symbol.iterator] = bo[Symbol.iterator]); @@ -81,11 +81,11 @@ function Si(n) { const t = Object.getPrototypeOf(n); return t === null || t === Object.prototype; } -f.isWindow = xe; -f.isFunction = ge; -f.isArray = Qn; -f.isNumeric = xo; -f.isPlainObject = Si; +p.isWindow = xe; +p.isFunction = ge; +p.isArray = Qn; +p.isNumeric = xo; +p.isPlainObject = Si; function et(n, t, e) { if (e) { let s = n.length; @@ -105,7 +105,7 @@ function et(n, t, e) { return n; return n; } -f.each = et; +p.each = et; x.each = function(n) { return et(this, n); }; @@ -120,7 +120,7 @@ function Nn(...n) { if (!e) return {}; if (!s) - return Nn(t, f, e); + return Nn(t, p, e); for (let i = 0; i < s; i++) { const r = n[i]; for (const o in r) @@ -128,7 +128,7 @@ function Nn(...n) { } return e; } -f.extend = Nn; +p.extend = Nn; x.extend = function(n) { return Nn(x, n); }; @@ -184,7 +184,7 @@ x.get = function(n) { return _t(n) ? So.call(this) : (n = Number(n), this[n < 0 ? n + this.length : n]); }; x.eq = function(n) { - return f(this.get(n)); + return p(this.get(n)); }; x.first = function() { return this.eq(0); @@ -231,7 +231,7 @@ function ns(n) { } x.filter = function(n) { const t = ns(n); - return f(bi.call(this, (e, s) => t.call(e, s, e))); + return p(bi.call(this, (e, s) => t.call(e, s, e))); }; function te(n, t) { return t ? n.filter(t) : n; @@ -256,9 +256,9 @@ function To(n) { if (nc.test(n)) return [pe(RegExp.$1)]; const t = ec.test(n) && RegExp.$1, e = Ar[t] || Ar["*"]; - return e.innerHTML = n, f(e.childNodes).detach().get(); + return e.innerHTML = n, p(e.childNodes).detach().get(); } -f.parseHTML = To; +p.parseHTML = To; x.has = function(n) { const t = at(n) ? (e, s) => Ci(n, s).length : (e, s) => s.contains(n); return this.filter(t); @@ -300,22 +300,22 @@ x.is = function(n) { const t = ns(n); return wi.call(this, (e, s) => t.call(e, s, e)); }; -f.guid = 1; +p.guid = 1; function Rt(n) { return n.length > 1 ? bi.call(n, (t, e, s) => wo.call(s, t) === e) : n; } -f.unique = Rt; +p.unique = Rt; x.add = function(n, t) { - return f(Rt(this.get().concat(f(n, t).get()))); + return p(Rt(this.get().concat(p(n, t).get()))); }; x.children = function(n) { - return te(f(Rt(Bt(this, (t) => t.children))), n); + return te(p(Rt(Bt(this, (t) => t.children))), n); }; x.parent = function(n) { - return te(f(Rt(Bt(this, "parentNode"))), n); + return te(p(Rt(Bt(this, "parentNode"))), n); }; x.index = function(n) { - const t = n ? f(n)[0] : this[0], e = n ? this : f(t).parent().children(); + const t = n ? p(n)[0] : this[0], e = n ? this : p(t).parent().children(); return wo.call(e, t); }; x.closest = function(n) { @@ -326,14 +326,14 @@ x.closest = function(n) { return e.length ? e.closest(n) : t; }; x.siblings = function(n) { - return te(f(Rt(Bt(this, (t) => f(t).parent().children().not(t)))), n); + return te(p(Rt(Bt(this, (t) => p(t).parent().children().not(t)))), n); }; x.find = function(n) { - return f(Rt(Bt(this, (t) => Ci(n, t)))); + return p(Rt(Bt(this, (t) => Ci(n, t)))); }; const ic = /^\s*\s*$/g, rc = /^$|^module$|\/(java|ecma)script/i, oc = ["type", "src", "nonce", "noModule"]; function ac(n, t) { - const e = f(n); + const e = p(n); e.filter("script").add(e.find("script")).each((s, i) => { if (rc.test(i.type) && yo.contains(i)) { const r = pe("script"); @@ -348,9 +348,9 @@ function lc(n, t, e, s, i) { } function ee(n, t, e, s, i, r, o, a) { return et(n, (l, c) => { - et(f(c), (u, h) => { - et(f(t), (p, d) => { - const m = e ? h : d, _ = e ? d : h, v = e ? u : p; + et(p(c), (u, h) => { + et(p(t), (f, d) => { + const m = e ? h : d, _ = e ? d : h, v = e ? u : f; lc(m, v ? _.cloneNode(!0) : _, s, i, !v); }, a); }, o); @@ -369,7 +369,7 @@ function cc(n) { return this; const t = /]/.test(n); return this.each((e, s) => { - tt(s) && (t ? f(s).empty().append(n) : s.innerHTML = n); + tt(s) && (t ? p(s).empty().append(n) : s.innerHTML = n); }); } x.html = cc; @@ -378,7 +378,7 @@ x.appendTo = function(n) { }; x.wrapInner = function(n) { return this.each((t, e) => { - const s = f(e), i = s.contents(); + const s = p(e), i = s.contents(); i.length ? i.wrapAll(n) : s.append(n); }); }; @@ -386,15 +386,15 @@ x.before = function() { return ee(arguments, this, !1, !0); }; x.wrapAll = function(n) { - let t = f(n), e = t[0]; + let t = p(n), e = t[0]; for (; e.children.length; ) e = e.firstElementChild; return this.first().before(t), this.appendTo(e); }; x.wrap = function(n) { return this.each((t, e) => { - const s = f(n)[0]; - f(e).wrapAll(t ? s.cloneNode(!0) : s); + const s = p(n)[0]; + p(e).wrapAll(t ? s.cloneNode(!0) : s); }); }; x.insertAfter = function(n) { @@ -410,10 +410,10 @@ x.prependTo = function(n) { return ee(arguments, this, !0, !0, !0, !1, !1, !0); }; x.contents = function() { - return f(Rt(Bt(this, (n) => n.tagName === "IFRAME" ? [n.contentDocument] : n.tagName === "TEMPLATE" ? n.content.childNodes : n.childNodes))); + return p(Rt(Bt(this, (n) => n.tagName === "IFRAME" ? [n.contentDocument] : n.tagName === "TEMPLATE" ? n.content.childNodes : n.childNodes))); }; x.next = function(n, t, e) { - return te(f(Rt(Bt(this, "nextElementSibling", t, e))), n); + return te(p(Rt(Bt(this, "nextElementSibling", t, e))), n); }; x.nextAll = function(n) { return this.next(n, !0); @@ -422,13 +422,13 @@ x.nextUntil = function(n, t) { return this.next(t, !0, n); }; x.parents = function(n, t) { - return te(f(Rt(Bt(this, "parentElement", !0, t))), n); + return te(p(Rt(Bt(this, "parentElement", !0, t))), n); }; x.parentsUntil = function(n, t) { return this.parents(t, n); }; x.prev = function(n, t, e) { - return te(f(Rt(Bt(this, "previousElementSibling", t, e))), n); + return te(p(Rt(Bt(this, "previousElementSibling", t, e))), n); }; x.prevAll = function(n) { return this.prev(n, !0); @@ -437,7 +437,7 @@ x.prevUntil = function(n, t) { return this.prev(t, !0, n); }; x.map = function(n) { - return f(Wl.apply([], Co.call(this, (t, e) => n.call(t, e, t)))); + return p(Wl.apply([], Co.call(this, (t, e) => n.call(t, e, t)))); }; x.clone = function() { return this.map((n, t) => t.cloneNode(!0)); @@ -451,21 +451,21 @@ x.offsetParent = function() { }); }; x.slice = function(n, t) { - return f(So.call(this, n, t)); + return p(So.call(this, n, t)); }; const hc = /-([a-z])/g; function xi(n) { return n.replace(hc, (t, e) => e.toUpperCase()); } x.ready = function(n) { - const t = () => setTimeout(n, 0, f); + const t = () => setTimeout(n, 0, p); return Ft.readyState !== "loading" ? t() : Ft.addEventListener("DOMContentLoaded", t), this; }; x.unwrap = function() { return this.parent().each((n, t) => { if (t.tagName === "BODY") return; - const e = f(t); + const e = p(t); e.replaceWith(e.children()); }), this; }; @@ -490,7 +490,7 @@ x.position = function() { for (; (i === s.body || i === s.documentElement) && Wt(i, "position") === "static"; ) i = i.parentNode; if (i !== n && tt(i)) { - const r = f(i).offset(); + const r = p(i).offset(); e.top -= r.top + Mt(i, "borderTopWidth"), e.left -= r.left + Mt(i, "borderLeftWidth"); } } @@ -728,7 +728,7 @@ x.replaceWith = function(n) { return this.before(n).remove(); }; x.replaceAll = function(n) { - return f(n).replaceWith(this), this; + return p(n).replaceWith(this), this; }; function Cc(n, t, e, s, i) { if (!at(n)) { @@ -738,7 +738,7 @@ function Cc(n, t, e, s, i) { } return at(t) || (_t(t) || Ge(t) ? t = "" : _t(e) ? (e = t, t = "") : (s = e, e = t, t = "")), ge(s) || (s = e, e = void 0), s ? (et(es(n), (r, o) => { const [a, l] = Ei(o), c = Ni(a), u = a in Po, h = a in $i; - c && this.each((p, d) => { + c && this.each((f, d) => { if (!tt(d) && !he(d) && !xe(d)) return; const m = function(_) { @@ -773,7 +773,7 @@ function Cc(n, t, e, s, i) { const y = s.call(v, _, _.___td); i && En(d, c, l, t, m), y === !1 && (_.preventDefault(), _.stopPropagation()); }; - m.guid = s.guid = s.guid || f.guid++, wc(d, c, l, t, m); + m.guid = s.guid = s.guid || p.guid++, wc(d, c, l, t, m); }); }), this) : this; } @@ -804,7 +804,7 @@ x.serialize = function() { }); }), n.slice(1); }; -window.$ = f; +window.$ = p; function $c(n, t) { if (n == null) return [n, void 0]; @@ -874,7 +874,7 @@ function Ec(n) { Pi = n.toLowerCase().replace("-", "_"); } function Lo(n, t) { - Ht || (Ht = {}), typeof n == "string" && (n = { [n]: t ?? {} }), f.extend(!0, Ht, n); + Ht || (Ht = {}), typeof n == "string" && (n = { [n]: t ?? {} }), p.extend(!0, Ht, n); } function j(n, t, e, s, i, r) { Array.isArray(n) ? Ht && n.unshift(Ht) : n = Ht ? [Ht, n] : [n], typeof e == "string" && (r = i, i = s, s = e, e = void 0); @@ -936,7 +936,7 @@ function Rr(n, t, e) { n instanceof Headers ? n.set(t, e) : Array.isArray(n) ? n.push([t, e]) : n[t] = e; } function ve(n, t, e) { - e != null && (Array.isArray(e) ? e.forEach((s) => ve(n, t, s)) : !(e instanceof Blob) && f.isPlainObject(e) ? Object.entries(e).forEach(([s, i]) => { + e != null && (Array.isArray(e) ? e.forEach((s) => ve(n, t, s)) : !(e instanceof Blob) && p.isPlainObject(e) ? Object.entries(e).forEach(([s, i]) => { ve(n, `${t}[${s}]`, i); }) : n.append(t, e instanceof Blob ? e : String(e))); } @@ -962,7 +962,7 @@ function Pc(n, t) { ve(e, s, i); }) : n instanceof FormData ? n.forEach((s, i) => { ve(e, i, s); - }) : f.isPlainObject(n) && Object.entries(n).forEach(([s, i]) => { + }) : p.isPlainObject(n) && Object.entries(n).forEach(([s, i]) => { ve(e, s, i); })), e; } @@ -1025,7 +1025,7 @@ class Ii { timeout: c, dataFilter: u, beforeSend: h, - success: p, + success: f, error: d, complete: m, ..._ @@ -1046,7 +1046,7 @@ class Ii { return; C && Object.assign(_, C); } - p && this.success(p), d && this.fail(d), m && this.complete(m), _.signal = this._controller.signal, this.url = t, this.request = _; + f && this.success(f), d && this.fail(d), m && this.complete(m), _.signal = this._controller.signal, this.url = t, this.request = _; } _emit(t, ...e) { this._callbacks[t].forEach((s) => { @@ -1067,16 +1067,16 @@ class Ii { a = await fetch(this.url, this.request), this.response = a; const { statusText: h } = a; if (a.ok) { - const p = (u = a.headers.get("Content-Disposition")) == null ? void 0 : u.startsWith("attachment"), d = p ? "blob" : e || Mc(a.headers.get("Content-Type"), s); - p || d === "blob" || d === "file" ? c = await a.blob() : d === "json" ? typeof o == "function" ? (c = await a.text(), c = o(c)) : c = await a.json() : c = await a.text(), this.data = c; + const f = (u = a.headers.get("Content-Disposition")) == null ? void 0 : u.startsWith("attachment"), d = f ? "blob" : e || Mc(a.headers.get("Content-Type"), s); + f || d === "blob" || d === "file" ? c = await a.blob() : d === "json" ? typeof o == "function" ? (c = await a.text(), c = o(c)) : c = await a.json() : c = await a.text(), this.data = c; const m = (i == null ? void 0 : i(c, d)) ?? c; this._emit("success", m, h, a); } else throw this.data = await a.text(), new Error(h); } catch (h) { this.data === void 0 && c !== void 0 && (this.data = c), l = h; - let p = !1; - l.name === "AbortError" && (this._abortError ? l = this._abortError : p = !0), this.error = l, p || this._emit("error", l, a == null ? void 0 : a.statusText, l.message); + let f = !1; + l.name === "AbortError" && (this._abortError ? l = this._abortError : f = !0), this.error = l, f || this._emit("error", l, a == null ? void 0 : a.statusText, l.message); } if (this._timeoutID && clearTimeout(this._timeoutID), this._emit("complete", a, a == null ? void 0 : a.statusText), l && r) throw l; @@ -1084,20 +1084,20 @@ class Ii { } } Ii.globalBeforeSends = []; -f.ajax = (n, t) => { - t = t || {}, typeof n == "string" ? t.url = n : f.extend(t, n); +p.ajax = (n, t) => { + t = t || {}, typeof n == "string" ? t.url = n : p.extend(t, n); const e = new Ii(t); return e.send(), e; }; -f.getJSON = (n, t, e) => (typeof t == "function" && (e = t, t = void 0), f.ajax({ +p.getJSON = (n, t, e) => (typeof t == "function" && (e = t, t = void 0), p.ajax({ url: n, data: t, success: e, dataType: "json" })); -f.get = (n, t, e, s, i = "GET") => { +p.get = (n, t, e, s, i = "GET") => { let r, o; - return typeof t == "function" ? (r = t, o = void 0) : o = t, typeof e == "function" ? (r = e, s = void 0) : s = e, f.ajax({ + return typeof t == "function" ? (r = t, o = void 0) : o = t, typeof e == "function" ? (r = e, s = void 0) : s = e, p.ajax({ method: i, url: n, data: o, @@ -1105,12 +1105,12 @@ f.get = (n, t, e, s, i = "GET") => { dataType: s }); }; -f.post = (n, t, e, s) => f.get(n, t, e, s, "POST"); -f.fn.load = function(n, t, e) { +p.post = (n, t, e, s) => p.get(n, t, e, s, "POST"); +p.fn.load = function(n, t, e) { typeof t == "function" && (e = t, t = void 0); const [s, i] = n.split(" "); - return f.get(s, t, (r, o, a) => { - i && (r = f(r).find(i).html()), f(this).html(r).zuiInit(), e == null || e.call(this, r, o, a); + return p.get(s, t, (r, o, a) => { + i && (r = p(r).find(i).html()), p(this).html(r).zuiInit(), e == null || e.call(this, r, o, a); }, "html"), this; }; async function ss(n, t = [], e, s, i) { @@ -1118,12 +1118,12 @@ async function ss(n, t = [], e, s, i) { if (typeof n == "string") r.url = n; else if (typeof n == "object") - f.extend(r, n); + p.extend(r, n); else if (typeof n == "function") { const l = n.call(s, ...t); return l instanceof Promise ? await l : l; } - e && f.extend(r, typeof e == "function" ? e(r) : e), r.url && (r.url = V(r.url, ...t)); + e && p.extend(r, typeof e == "function" ? e(r) : e), r.url && (r.url = V(r.url, ...t)); const o = new Ii(r); i == null || i(o); const [a] = await o.send(); @@ -1132,9 +1132,9 @@ async function ss(n, t = [], e, s, i) { function zd(n) { return !!(n && (typeof n == "string" || typeof n == "object" && n.url || typeof n == "function")); } -f.fetch = ss; +p.fetch = ss; function ut() { - return f.guid++; + return p.guid++; } function Ks(n, t) { if (n === t) @@ -1229,10 +1229,10 @@ function zo(...n) { }), t.sort((i, r) => (e.get(i[0]) || 0) - (e.get(r[0]) || 0)); } const k = (...n) => zo(...n).reduce((t, [e, s]) => (s && t.push(e), t), []).join(" "); -f.classes = k; -f.fn.setClass = function(n, ...t) { +p.classes = k; +p.fn.setClass = function(n, ...t) { return this.each((e, s) => { - const i = f(s); + const i = p(s); n === !0 ? i.attr("class", k(i.attr("class"), ...t)) : i.addClass(k(n, ...t)); }); }; @@ -1243,21 +1243,21 @@ function Ri(n, t, e) { delete i[r]; }) : Object.assign(i, t), Object.keys(i).forEach((r) => { i[r] === void 0 && delete i[r]; - }), Object.keys(i).length ? (!s && n instanceof Element && Object.assign(i, f(n).dataset(), i), be.set(n, i)) : be.delete(n); + }), Object.keys(i).length ? (!s && n instanceof Element && Object.assign(i, p(n).dataset(), i), be.set(n, i)) : be.delete(n); } function Di(n, t, e) { let s = be.get(n) || {}; - return e && n instanceof Element && (s = Object.assign({}, f(n).dataset(), s)), t === void 0 ? s : s[t]; + return e && n instanceof Element && (s = Object.assign({}, p(n).dataset(), s)), t === void 0 ? s : s[t]; } function Od(n) { be.delete(n); } -f.fn.dataset = f.fn.data; -f.fn.data = function(...n) { +p.fn.dataset = p.fn.data; +p.fn.data = function(...n) { const [t, e] = n; return !n.length || n.length === 1 && typeof t == "string" ? this.length ? Di(this[0], t, !0) : void 0 : this.each((s, i) => Ri(i, t, e)); }; -f.fn.removeData = function(n = null) { +p.fn.removeData = function(n = null) { return this.each((t, e) => Ri(e, n)); }; function ke(n, ...t) { @@ -1268,7 +1268,7 @@ function Hd(n, ...t) { return n.includes("RAWJS") ? ke(n, ...t) : JSON.parse(n); } function Ye(n, t) { - const e = f(n)[0]; + const e = p(n)[0]; if (!e) return; const { prefix: s, getter: i, evalValue: r, json: o = !0, evalArgs: a = [] } = { @@ -1277,14 +1277,14 @@ function Ye(n, t) { }, l = Array.isArray(r) ? new Set(r) : void 0; return Array.from(e.attributes).reduce((c, u) => { let { name: h } = u; - const { value: p } = u; - let d = p; + const { value: f } = u; + let d = f; if (h.startsWith(s)) { if (h = h.slice(s.length).replace(/-([a-z])/g, (m) => m[1].toUpperCase()), i) - d = i(h, p); + d = i(h, f); else try { - r && (!l || l.has(h)) || r === void 0 && p.includes("RAWJS") ? d = ke(p, ...a) : o && (d = JSON.parse(p)); + r && (!l || l.has(h)) || r === void 0 && f.includes("RAWJS") ? d = ke(f, ...a) : o && (d = JSON.parse(f)); } catch { } c[h] = d; @@ -1293,7 +1293,7 @@ function Ye(n, t) { }, {}); } function Dr(n, t, e = "z-") { - const s = f(n); + const s = p(n); Object.keys(t).forEach((i) => { let r = t[i]; typeof r == "function" && (r = `RAWJS<${r}>RAWJS`), typeof r != "string" && (r = JSON.stringify(r)), i = i.replace(/[A-Z]/g, (o) => `-${o.toLowerCase()}`), s.attr(`${e}${i}`, r); @@ -1306,13 +1306,13 @@ function Ic(...n) { return Ye(this); if (t === 1) { const [s] = n; - return typeof s == "string" ? (e = Ye(this)) == null ? void 0 : e[s] : (f.isPlainObject(s) && Dr(this, s), this); + return typeof s == "string" ? (e = Ye(this)) == null ? void 0 : e[s] : (p.isPlainObject(s) && Dr(this, s), this); } return Dr(this, { [n[0]]: n[1] }), this; } -f.fn.z = Ic; -f.fn._attr = f.fn.attr; -f.fn.extend({ +p.fn.z = Ic; +p.fn._attr = p.fn.attr; +p.fn.extend({ attr(...n) { const [t, e] = n; return !n.length || n.length === 1 && typeof t == "string" ? this._attr.apply(this, n) : typeof t == "object" ? (t && Object.keys(t).forEach((s) => { @@ -1321,7 +1321,7 @@ f.fn.extend({ }), this) : e === null ? this.removeAttr(t) : this._attr(t, e); } }); -f.Event || (f.Event = (n, t) => { +p.Event || (p.Event = (n, t) => { const [e, ...s] = n.split("."), i = new Event(e, { bubbles: !0, cancelable: !0 @@ -1332,7 +1332,7 @@ const Mn = (n, t) => new Promise((e) => { const s = window.setTimeout(e, n); t && t(s); }), Rc = {}; -f.share = Rc; +p.share = Rc; var is, z, Oo, ot, ae, Lr, Ho, qs, Li, Gs, Ys, Je = {}, Fo = [], Dc = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, rs = Array.isArray; function qt(n, t) { for (var e in t) @@ -1393,9 +1393,9 @@ function Pn() { Pn.__r = 0; } function Bo(n, t, e, s, i, r, o, a, l, c, u) { - var h, p, d, m, _, v = s && s.__k || Fo, y = t.length; + var h, f, d, m, _, v = s && s.__k || Fo, y = t.length; for (e.__d = l, Lc(e, t, v), l = e.__d, h = 0; h < y; h++) - (d = e.__k[h]) != null && (p = d.__i === -1 ? Je : v[d.__i] || Je, d.__i = h, zi(n, d, p, i, r, o, a, l, c, u), m = d.__e, d.ref && p.ref != d.ref && (p.ref && Oi(p.ref, null, d), u.push(d.ref, d.__c || m, d)), _ == null && m != null && (_ = m), 65536 & d.__u || p.__k === d.__k ? l = Vo(d, l, n) : typeof d.type == "function" && d.__d !== void 0 ? l = d.__d : m && (l = m.nextSibling), d.__d = void 0, d.__u &= -196609); + (d = e.__k[h]) != null && (f = d.__i === -1 ? Je : v[d.__i] || Je, d.__i = h, zi(n, d, f, i, r, o, a, l, c, u), m = d.__e, d.ref && f.ref != d.ref && (f.ref && Oi(f.ref, null, d), u.push(d.ref, d.__c || m, d)), _ == null && m != null && (_ = m), 65536 & d.__u || f.__k === d.__k ? l = Vo(d, l, n) : typeof d.type == "function" && d.__d !== void 0 ? l = d.__d : m && (l = m.nextSibling), d.__d = void 0, d.__u &= -196609); e.__d = l, e.__e = _; } function Lc(n, t, e) { @@ -1487,14 +1487,14 @@ function Hr(n) { }; } function zi(n, t, e, s, i, r, o, a, l, c) { - var u, h, p, d, m, _, v, y, b, w, C, S, $, E, N, A, I = t.type; + var u, h, f, d, m, _, v, y, b, w, C, S, $, E, N, A, I = t.type; if (t.constructor !== void 0) return null; 128 & e.__u && (l = !!(32 & e.__u), r = [a = t.__e = e.__e]), (u = z.__b) && u(t); t: if (typeof I == "function") try { - if (y = t.props, b = "prototype" in I && I.prototype.render, w = (u = I.contextType) && s[u.__c], C = u ? w ? w.props.value : u.__ : s, e.__c ? v = (h = t.__c = e.__c).__ = h.__E : (b ? t.__c = h = new I(y, C) : (t.__c = h = new W(y, C), h.constructor = I, h.render = Hc), w && w.sub(h), h.props = y, h.state || (h.state = {}), h.context = C, h.__n = s, p = h.__d = !0, h.__h = [], h._sb = []), b && h.__s == null && (h.__s = h.state), b && I.getDerivedStateFromProps != null && (h.__s == h.state && (h.__s = qt({}, h.__s)), qt(h.__s, I.getDerivedStateFromProps(y, h.__s))), d = h.props, m = h.state, h.__v = t, p) + if (y = t.props, b = "prototype" in I && I.prototype.render, w = (u = I.contextType) && s[u.__c], C = u ? w ? w.props.value : u.__ : s, e.__c ? v = (h = t.__c = e.__c).__ = h.__E : (b ? t.__c = h = new I(y, C) : (t.__c = h = new W(y, C), h.constructor = I, h.render = Hc), w && w.sub(h), h.props = y, h.state || (h.state = {}), h.context = C, h.__n = s, f = h.__d = !0, h.__h = [], h._sb = []), b && h.__s == null && (h.__s = h.state), b && I.getDerivedStateFromProps != null && (h.__s == h.state && (h.__s = qt({}, h.__s)), qt(h.__s, I.getDerivedStateFromProps(y, h.__s))), d = h.props, m = h.state, h.__v = t, f) b && I.getDerivedStateFromProps == null && h.componentWillMount != null && h.componentWillMount(), b && h.componentDidMount != null && h.__h.push(h.componentDidMount); else { if (b && I.getDerivedStateFromProps == null && y !== d && h.componentWillReceiveProps != null && h.componentWillReceiveProps(y, C), !h.__e && (h.shouldComponentUpdate != null && h.shouldComponentUpdate(y, h.__s, C) === !1 || t.__v === e.__v)) { @@ -1517,7 +1517,7 @@ function zi(n, t, e, s, i, r, o, a, l, c) { do h.__d = !1, $ && $(t), u = h.render(h.props, h.state, h.context), h.state = h.__s; while (h.__d && ++E < 25); - h.state = h.__s, h.getChildContext != null && (s = qt(qt({}, s), h.getChildContext())), b && !p && h.getSnapshotBeforeUpdate != null && (_ = h.getSnapshotBeforeUpdate(d, m)), Bo(n, rs(A = u != null && u.type === Ae && u.key == null ? u.props.children : u) ? A : [A], t, e, s, i, r, o, a, l, c), h.base = t.__e, t.__u &= -161, h.__h.length && o.push(h), v && (h.__E = h.__ = null); + h.state = h.__s, h.getChildContext != null && (s = qt(qt({}, s), h.getChildContext())), b && !f && h.getSnapshotBeforeUpdate != null && (_ = h.getSnapshotBeforeUpdate(d, m)), Bo(n, rs(A = u != null && u.type === Ae && u.key == null ? u.props.children : u) ? A : [A], t, e, s, i, r, o, a, l, c), h.base = t.__e, t.__u &= -161, h.__h.length && o.push(h), v && (h.__E = h.__ = null); } catch (T) { if (t.__v = null, l || r != null) { for (t.__u |= l ? 160 : 128; a && a.nodeType === 8 && a.nextSibling; ) @@ -1546,7 +1546,7 @@ function Uo(n, t, e) { }); } function Oc(n, t, e, s, i, r, o, a, l) { - var c, u, h, p, d, m, _, v = e.props, y = t.props, b = t.type; + var c, u, h, f, d, m, _, v = e.props, y = t.props, b = t.type; if (b === "svg" ? i = "http://www.w3.org/2000/svg" : b === "math" ? i = "http://www.w3.org/1998/Math/MathML" : i || (i = "http://www.w3.org/1999/xhtml"), r != null) { for (c = 0; c < r.length; c++) if ((d = r[c]) && "setAttribute" in d == !!b && (b ? d.localName === b : d.nodeType === 3)) { @@ -1576,10 +1576,10 @@ function Oc(n, t, e, s, i, r, o, a, l) { } } for (c in y) - d = y[c], c == "children" ? p = d : c == "dangerouslySetInnerHTML" ? u = d : c == "value" ? m = d : c == "checked" ? _ = d : a && typeof d != "function" || v[c] === d || mn(n, c, d, v[c], i); + d = y[c], c == "children" ? f = d : c == "dangerouslySetInnerHTML" ? u = d : c == "value" ? m = d : c == "checked" ? _ = d : a && typeof d != "function" || v[c] === d || mn(n, c, d, v[c], i); if (u) a || h && (u.__html === h.__html || u.__html === n.innerHTML) || (n.innerHTML = u.__html), t.__k = []; - else if (h && (n.innerHTML = ""), Bo(n, rs(p) ? p : [p], t, e, s, b === "foreignObject" ? "http://www.w3.org/1999/xhtml" : i, r, o, r ? r[0] : e.__k && Te(e, 0), a, l), r != null) + else if (h && (n.innerHTML = ""), Bo(n, rs(f) ? f : [f], t, e, s, b === "foreignObject" ? "http://www.w3.org/1999/xhtml" : i, r, o, r ? r[0] : e.__k && Te(e, 0), a, l), r != null) for (c = r.length; c--; ) Wo(r[c]); a || (c = "value", b === "progress" && m == null ? n.removeAttribute("value") : m !== void 0 && (m !== n[c] || b === "progress" && !m || b === "option" && m !== v[c]) && mn(n, c, m, v[c], i), c = "checked", _ !== void 0 && _ !== n[c] && mn(n, c, _, v[c], i)); @@ -1645,7 +1645,7 @@ function O(n, ...t) { !e || typeof e != "object" || Object.keys(e).forEach((s) => { let i = e[s]; const r = n[s]; - i !== r && (r !== void 0 && (s === "className" || s.endsWith("Class") ? i = [r, i] : s === "children" ? i = [...In(r), ...In(i)] : typeof r == "object" && (s === "style" || s.endsWith("Style") || s === "attrs" || s.endsWith("Attrs") || s === "props") && (i = f.extend(r, i))), n[s] = i); + i !== r && (r !== void 0 && (s === "className" || s.endsWith("Class") ? i = [r, i] : s === "children" ? i = [...In(r), ...In(i)] : typeof r == "object" && (s === "style" || s.endsWith("Style") || s === "attrs" || s.endsWith("Attrs") || s === "props") && (i = p.extend(r, i))), n[s] = i); }); }), n; } @@ -1655,7 +1655,7 @@ function qo(n) { }), n; } function Fc(n, t = !0) { - const e = f(n), s = e[0], i = "zui-disable-scroll"; + const e = p(n), s = e[0], i = "zui-disable-scroll"; if (t) { if (e.data(i)) return; @@ -1681,18 +1681,18 @@ function Fc(n, t = !0) { e.css(r).removeData(i); } } -f.fn.disableScroll = function(n = !0) { +p.fn.disableScroll = function(n = !0) { return this.each((t, e) => { Fc(e, n); }); }; -f.fn.enableScroll = function(n = !0) { +p.fn.enableScroll = function(n = !0) { return this.disableScroll(!n); }; function Is(n, t, e) { if (!(e.on || "click").split(" ").includes(t.type)) return; - const s = e.selector ? f(t.target).closest(e.selector) : n; + const s = e.selector ? p(t.target).closest(e.selector) : n; if (!s.length) return; const i = (c) => c === "" ? !0 : c, r = (c) => { @@ -1710,7 +1710,7 @@ function Is(n, t, e) { } if (i(e.prevent) && t.preventDefault(), i(e.stop) && t.stopPropagation(), i(e.self) && t.currentTarget !== t.target) return; - const o = [["$element", n], ["event", t], ["options", e], ["$target", s]], a = (c) => typeof c == "function" ? c(...o) : f.runJS(c, ...o); + const o = [["$element", n], ["event", t], ["options", e], ["$target", s]], a = (c) => typeof c == "function" ? c(...o) : p.runJS(c, ...o); if (e.if !== void 0 && !a(e.if)) return; const l = e.call; @@ -1718,30 +1718,30 @@ function Is(n, t, e) { let c; if (typeof l == "string" ? c = /^[$A-Z_][0-9A-Z_$.]*$/i.test(l) ? Ai(window, l) : a(l) : c = l, typeof c == "function") { const u = [], h = e.params; - e.params = u, typeof h == "string" && h.length ? h[0] === "[" ? u.push(...r(h)) : u.push(...h.split(", ").map((p) => (p = p.trim(), p === "$element" ? n : p === "event" ? t : p === "options" ? e : p.startsWith("$element.") || p.startsWith("event.") || p.startsWith("options.") ? a(p) : r(p)))) : Array.isArray(h) ? u.push(...h) : u.push(h), c(...u); + e.params = u, typeof h == "string" && h.length ? h[0] === "[" ? u.push(...r(h)) : u.push(...h.split(", ").map((f) => (f = f.trim(), f === "$element" ? n : f === "event" ? t : f === "options" ? e : f.startsWith("$element.") || f.startsWith("event.") || f.startsWith("options.") ? a(f) : r(f)))) : Array.isArray(h) ? u.push(...h) : u.push(h), c(...u); } } e.do && a(e.do); } function Wc(n) { - const t = f(this), e = n.type, s = t.attr("zui-on"); + const t = p(this), e = n.type, s = t.attr("zui-on"); if (s) { const [o, a] = s.split("~").map((l) => l.trim()); - o && o.split(" ").includes(e) && Is(t, n, f.extend({ + o && o.split(" ").includes(e) && Is(t, n, p.extend({ on: o }, a ? a.startsWith("{") ? ke(a) : { do: a } : Ye(t, { prefix: "data-", evalValue: ["call", "if", "do"] }))); } const i = t.attr(`zui-on-${e}`); - i && Is(t, n, f.extend({ + i && Is(t, n, p.extend({ on: e }, i.startsWith("{") ? ke(i) : { do: i })); const r = t.attr("data-on"); r && r.split(" ").includes(e) && Is(t, n, Ye(t, { prefix: "data-", evalValue: ["call", "if", "do"] })); } function jc(n) { - f(document).off(".zui.global").on(n.map((t) => `${t}.zui.global`).join(" "), `[zui-on],${n.map((t) => `[zui-on-${t}]`)},[data-on]`, Wc); + p(document).off(".zui.global").on(n.map((t) => `${t}.zui.global`).join(" "), `[zui-on],${n.map((t) => `[zui-on-${t}]`)},[data-on]`, Wc); } -f(() => { +p(() => { jc(["click", "change", "inited"]); }); function Hi(n, t) { @@ -1773,7 +1773,7 @@ async function Fr(n, t) { } class Bc { constructor(t) { - this._$target = f(t); + this._$target = p(t); } on(...t) { return this._$target.on(...t), this; @@ -1789,11 +1789,11 @@ class Bc { } } const jt = new Bc(document); -f.bus = jt; -f.on = jt.on.bind(jt); -f.one = jt.one.bind(jt); -f.off = jt.off.bind(jt); -f.trigger = jt.trigger.bind(jt); +p.bus = jt; +p.on = jt.on.bind(jt); +p.one = jt.one.bind(jt); +p.off = jt.off.bind(jt); +p.trigger = jt.trigger.bind(jt); var Vc = ["Shift", "Meta", "Alt", "Control"], Go = typeof navigator == "object" ? navigator.platform : "", Yo = /Mac|iPod|iPhone|iPad/.test(Go), Uc = Yo ? "Meta" : "Control", Kc = Go === "Win32" ? ["Control", "Alt"] : Yo ? ["Alt"] : []; function Rs(n, t) { return typeof n.getModifierState == "function" && (n.getModifierState(t) || Kc.includes(t) && n.getModifierState("AltGraph")); @@ -1815,11 +1815,11 @@ function Jo(n, t) { return function(a) { a instanceof KeyboardEvent && (i.forEach(function(l) { var c = l[0], u = l[1], h = r.get(c) || c; - (function(p, d) { - return !(d[1].toUpperCase() !== p.key.toUpperCase() && d[1] !== p.code || d[0].find(function(m) { - return !Rs(p, m); + (function(f, d) { + return !(d[1].toUpperCase() !== f.key.toUpperCase() && d[1] !== f.code || d[0].find(function(m) { + return !Rs(f, m); }) || Vc.find(function(m) { - return !d[0].includes(m) && d[1] !== m && Rs(p, m); + return !d[0].includes(m) && d[1] !== m && Rs(f, m); })); })(a, h[0]) ? h.length > 1 ? r.set(c, h.slice(1)) : (r.delete(c), u(a)) : Rs(a, a.key) || r.delete(c); }), o && clearTimeout(o), o = setTimeout(r.clear.bind(r), s)); @@ -1853,36 +1853,36 @@ function Zo(n, t = {}) { } function Xo(n, t, e) { const { timeout: s, event: i = "keydown", scope: r, when: o } = e || {}, a = Jo(t, { timeout: s }), l = `.zui.hotkeys${r ? `.${r}` : ""}`, c = "zui-hotkeys-composing"; - return f(n).on(`${i}${l}`, function(u) { - o && o(u) === !1 || f(u.target).data(c) || a(u); + return p(n).on(`${i}${l}`, function(u) { + o && o(u) === !1 || p(u.target).data(c) || a(u); }).on(`compositionstart${l}`, (u) => { - f(u.target).data(c, !0); + p(u.target).data(c, !0); }).on(`compositionend${l}`, (u) => { - f(u.target).removeData(c); + p(u.target).removeData(c); }); } function Qo(n, t) { - return f(n).off(`.zui.hotkeys${t ? `.${t}` : ""}`); + return p(n).off(`.zui.hotkeys${t ? `.${t}` : ""}`); } const Fd = Gc; -f.fn.hotkeys = function(n, t) { +p.fn.hotkeys = function(n, t) { return Xo(this, n, t); }; -f.fn.unbindHotkeys = function(n) { +p.fn.unbindHotkeys = function(n) { return Qo(this, n); }; -f.hotkeys = function(n, t) { +p.hotkeys = function(n, t) { Xo(window, n, t); }; -f.unbindHotkeys = function(n) { +p.unbindHotkeys = function(n) { Qo(window, n); }; function Fi() { return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement; } async function Yc(n) { - (typeof n == "string" || n instanceof Element || n instanceof f) && (n = { target: n }); - const { target: t, onError: e, onSuccess: s, afterExit: i, afterEnter: r } = n, o = f(t), a = o[0]; + (typeof n == "string" || n instanceof Element || n instanceof p) && (n = { target: n }); + const { target: t, onError: e, onSuccess: s, afterExit: i, afterEnter: r } = n, o = p(t), a = o[0]; if (!a) return; const l = a.requestFullscreen || a.webkitRequestFullscreen || a.mozRequestFullScreen; @@ -1891,35 +1891,35 @@ async function Yc(n) { return; } try { - await l.call(a), s == null || s.call(a), f(a).off(".zui.fullscreen"), i && o.on("exitFullscreen.zui.fullscreen", i), r && o.on("enterFullscreen.zui.fullscreen", r); + await l.call(a), s == null || s.call(a), p(a).off(".zui.fullscreen"), i && o.on("exitFullscreen.zui.fullscreen", i), r && o.on("enterFullscreen.zui.fullscreen", r); } catch (c) { e == null || e.call(a, c); } - document.zuiBindFullscreenChange || (document.zuiBindFullscreenChange = !0, f(document).on("fullscreenchange.zui webkitfullscreenchange.zui mozfullscreenchange.zui", (c) => { + document.zuiBindFullscreenChange || (document.zuiBindFullscreenChange = !0, p(document).on("fullscreenchange.zui webkitfullscreenchange.zui mozfullscreenchange.zui", (c) => { const u = Fi(); let h = u; - u ? f(u).addClass("is-in-fullscreen") : (h = f(document).find(".is-in-fullscreen")[0] || document, f(h).removeClass("is-in-fullscreen")), f("body").toggleClass("has-in-fullscreen", !!u); - const p = { event: c, target: h, fullscreenElement: u }; - f(h).trigger(u ? "enterFullscreen" : "exitFullscreen", p).trigger("toggleFullscreen", p); + u ? p(u).addClass("is-in-fullscreen") : (h = p(document).find(".is-in-fullscreen")[0] || document, p(h).removeClass("is-in-fullscreen")), p("body").toggleClass("has-in-fullscreen", !!u); + const f = { event: c, target: h, fullscreenElement: u }; + p(h).trigger(u ? "enterFullscreen" : "exitFullscreen", f).trigger("toggleFullscreen", f); })); } async function ta(n) { const t = Fi(); return n === !1 && !!t === n ? n : t ? (document.exitFullscreen(), !1) : (await Yc(n), !0); } -f.fn.fullscreen = function(n) { +p.fn.fullscreen = function(n) { return ta({ target: this, ...n }); }; -f.getFullscreenElement = Fi; -f.toggleFullscreen = ta; +p.getFullscreenElement = Fi; +p.toggleFullscreen = ta; function ne(n) { return !n || n.parentNode === document ? !1 : n.parentNode ? ne(n.parentNode) : !0; } -f.isDetached = ne; -f.fn.isDetached = function() { +p.isDetached = ne; +p.fn.isDetached = function() { const n = this[0]; return !n || ne(n); }; @@ -1935,11 +1935,11 @@ const me = class ea { const { KEY: s, DATA_KEY: i, MULTI_INSTANCE: r, NAME: o, ATTR_KEY: a, ALL: l, TYPED_ALL: c } = this.constructor; if (!o) throw new Error('[ZUI] The component must have a "NAME" static property.'); - const u = f(t); + const u = p(t); if (u.data(s) && !r) throw new Error(`[ZUI] The component "${o}" has been initialized on element.`); - const h = u[0], p = ut(); - if (this._gid = p, this._element = h, this.resetOptions(e), this._key = this.options.key ?? `__${p}`, l.has(h) ? l.get(h).add(this) : l.set(h, /* @__PURE__ */ new Set([this])), c.has(o) ? c.get(o).add(this) : c.set(o, /* @__PURE__ */ new Set([this])), u.data(s, this).attr(a, "").attr(i, `${p}`), r) { + const h = u[0], f = ut(); + if (this._gid = f, this._element = h, this.resetOptions(e), this._key = this.options.key ?? `__${f}`, l.has(h) ? l.get(h).add(this) : l.set(h, /* @__PURE__ */ new Set([this])), c.has(o) ? c.get(o).add(this) : c.set(o, /* @__PURE__ */ new Set([this])), u.data(s, this).attr(a, "").attr(i, `${f}`), r) { const m = `${s}:ALL`; let _ = u.data(m); _ || (_ = /* @__PURE__ */ new Map(), u.data(m, _)), _.set(this._key, this); @@ -2022,7 +2022,7 @@ const me = class ea { * Get the component element as a jQuery like object. */ get $element() { - return f(this.element); + return p(this.element); } /** * Get the component event emitter. @@ -2058,7 +2058,7 @@ const me = class ea { * Destroy the component. */ destroy() { - var p; + var f; const { KEY: t, DATA_KEY: e, ALL: s, TYPED_ALL: i, NAME: r, MULTI_INSTANCE: o, ATTR_KEY: a } = this.constructor, { $element: l, element: c } = this; if (this.emit("destroyed"), this._destroyed = !0, l.off(this.namespace).removeData(t).removeAttr(a).removeAttr(e), o) { const d = this.$element.data(`${t}:ALL`); @@ -2073,7 +2073,7 @@ const me = class ea { const u = s.get(c); u && (u.delete(this), u.size === 0 && s.delete(c)); const h = i.get(r); - h && (h.delete(this), h.size === 0 && i.delete(r)), (p = this.options.$onDestroy) == null || p.call(this); + h && (h.delete(this), h.size === 0 && i.delete(r)), (f = this.options.$onDestroy) == null || f.call(this); } /** * Auto destroy the component when detached. @@ -2098,11 +2098,11 @@ const me = class ea { }, { $options: i } = s; if (i) { const r = typeof i == "function" ? i.call(this, this.element, s) : i; - r && f.extend(s, r), delete s.$options; + r && p.extend(s, r), delete s.$options; } this._options = s; } else - t && f.extend(this._options, t); + t && p.extend(this._options, t); return this._options; } resetOptions(t) { @@ -2114,7 +2114,7 @@ const me = class ea { * @param args The event arguments. */ emit(t, ...e) { - const s = f.Event(t); + const s = p.Event(t); return s.__src = this, this.$emitter.trigger(s, [this, ...e]), s; } /** @@ -2182,7 +2182,7 @@ const me = class ea { * @returns The component instance. */ static get(t, e) { - const s = f(t); + const s = p(t); if (this.MULTI_INSTANCE && e !== void 0) { const i = s.data(`${this.KEY}:ALL`); return i ? i.get(e) : void 0; @@ -2222,7 +2222,7 @@ const me = class ea { const { SELECTOR: s, ALL: i, TYPED_ALL: r } = this, o = [], a = (c) => { c instanceof this && (!e || e(c) !== !1) && o.push(c); }; - return t ? f(t).find(s).each((c, u) => { + return t ? p(t).find(s).each((c, u) => { var h; (h = i.get(u)) == null || h.forEach(a); }) : this !== ea ? (l = r.get(this.NAME)) == null || l.forEach(a) : i.forEach((c) => { @@ -2237,7 +2237,7 @@ const me = class ea { * @returns The component instance. */ static query(t, e, s) { - return t === void 0 ? this.getAll(void 0, s).pop() : this.get(f(t).closest(this.SELECTOR), e); + return t === void 0 ? this.getAll(void 0, s).pop() : this.get(p(t).closest(this.SELECTOR), e); } /** * Create cash fn.method for current component. @@ -2246,9 +2246,9 @@ const me = class ea { */ static defineFn(t) { let e = t || this.ZUI; - f.fn[e] && (e = `zui${this.NAME}`); + p.fn[e] && (e = `zui${this.NAME}`); const s = this; - f.fn.extend({ + p.fn.extend({ [e](i, ...r) { const o = typeof i == "object" ? i : void 0, a = typeof i == "string" ? i : void 0; let l; @@ -2262,8 +2262,8 @@ const me = class ea { h = new s(u, o); } if (a) { - let p = h[a], d = h; - p === void 0 && (d = h.$, p = d[a]), typeof p == "function" ? l = p.call(d, ...r) : l = p; + let f = h[a], d = h; + f === void 0 && (d = h.$, f = d[a]), typeof f == "function" ? l = f.call(d, ...r) : l = f; } }), l !== void 0 ? l : this; } @@ -2325,7 +2325,7 @@ function Wd(n) { }), Object.assign(window, { _zuiDefined: !0 })); } function Xc(n, t = {}) { - const e = f(n); + const e = p(n); let s = e.attr("zui-create"); const { update: i, onCreate: r } = t, o = (a, l) => { if (l = { @@ -2340,7 +2340,7 @@ function Xc(n, t = {}) { } const c = l.$lib; if (c) { - delete l.$lib, f.getLib(c).then(() => na(a, n, l)); + delete l.$lib, p.getLib(c).then(() => na(a, n, l)); return; } Jc(a, n, l); @@ -2355,8 +2355,8 @@ function Xc(n, t = {}) { [...a, ...c].forEach((h) => { if (u.has(h)) return; - const p = l[h]; - o(h, p), delete l[h], u.add(h); + const f = l[h]; + o(h, f), delete l[h], u.add(h); }); } } else { @@ -2367,8 +2367,8 @@ function Xc(n, t = {}) { } } function Qc() { - f(document).on("click.zui.toggle mouseenter.zui.toggle", "[data-toggle],[zui-toggle]", function(n) { - const t = f(this), e = t.dataset("toggle") || t.attr("zui-toggle"); + p(document).on("click.zui.toggle mouseenter.zui.toggle", "[data-toggle],[zui-toggle]", function(n) { + const t = p(this), e = t.dataset("toggle") || t.attr("zui-toggle"); if (!e) return; const s = vt.toggleMap.get(e) || os(e), i = s == null ? void 0 : s.toggle; @@ -2377,17 +2377,17 @@ function Qc() { const { trigger: r = "click", skip: o = "[disabled],.disabled", check: a } = i, l = n.type === "mouseover" ? "hover" : "click"; if (!r.includes(l) || a && !a.call(s, this, l, n) || o && t.is(o)) return; - const { onGet: c, onCreate: u, setOptions: h = !0, getOptions: p, prevent: d = !0, handler: m, onToggle: _, convertHref: v } = i; + const { onGet: c, onCreate: u, setOptions: h = !0, getOptions: f, prevent: d = !0, handler: m, onToggle: _, convertHref: v } = i; let y = t.dataset(); const b = t.attr(`zui-toggle-${e}`); - if (b && (y = f.extend(y, ke(b))), v && t.is("a")) { + if (b && (y = p.extend(y, ke(b))), v && t.is("a")) { const C = t.attr("href"); if (C) { const S = v === !0 ? { selector: "target", url: "url" } : v; "#.".includes(C[0]) ? S.selector && y[S.selector] === void 0 && (y[S.selector] = C) : S.url && y[S.url] === void 0 && (y[S.url] = C); } } - if (p && (y = p.call(s, this, y, n)), m) { + if (f && (y = f.call(s, this, y, n)), m) { m.call(s, this, y, l, n), d && n.preventDefault(); return; } @@ -2447,18 +2447,18 @@ function eh() { }); n.observe(document.body, { childList: !0, subtree: !0 }), Ri(document.body, "_autoDestoryMob", n); } -f.fn.zuiInit = function(n) { +p.fn.zuiInit = function(n) { return this.find("[zui-create],[data-zui]").each(function() { var t; ((t = n == null ? void 0 : n.beforeCreate) == null ? void 0 : t.call(n, this)) !== !1 && Xc(this, n); }), this.find("[zui-init]").each(function() { - this.hasAttribute("z-zui-inited") || (this.setAttribute("z-zui-inited", ""), f.runJS(this.getAttribute("zui-init"), ["$element", f(this)])); + this.hasAttribute("z-zui-inited") || (this.setAttribute("z-zui-inited", ""), p.runJS(this.getAttribute("zui-init"), ["$element", p(this)])); }), this.find(".hide-before-init").removeClass("invisible hidden opacity-0"), this.find(".scroll-into-view").scrollIntoView(), this.find('[data-on="inited"],[zui-on-inited]').each((t, e) => { - const s = f(e); + const s = p(e); s.zui() || s.trigger("inited"); }), this; }; -f.fn.zui = function(n, t) { +p.fn.zui = function(n, t) { const e = this[0]; if (!e) return; @@ -2470,16 +2470,16 @@ f.fn.zui = function(n, t) { }), n === !0 ? i : r; } const s = os(n); - return s ? t === !0 ? s.getAll(e) : s.query(e, t) : f(e).data(`zui.${n}`); + return s ? t === !0 ? s.getAll(e) : s.query(e, t) : p(e).data(`zui.${n}`); }; -f.fn.zuiCall = function(n, t = []) { +p.fn.zuiCall = function(n, t = []) { return this.each(function() { - const e = n.split("."), s = e.length > 1 ? e[0] : void 0, i = e[e.length > 1 ? 1 : 0], r = f(this).zui(s), o = r == null ? void 0 : r[i]; + const e = n.split("."), s = e.length > 1 ? e[0] : void 0, i = e[e.length > 1 ? 1 : 0], r = p(this).zui(s), o = r == null ? void 0 : r[i]; typeof o == "function" && o.apply(r, t); }), this; }; -f(() => { - f("body").zuiInit({ update: !0 }), Qc(), eh(); +p(() => { + p("body").zuiInit({ update: !0 }), Qc(), eh(); }); class nh extends vt { init() { @@ -2494,7 +2494,7 @@ class nh extends vt { return; } const h = c.getBoundingClientRect(); - l.each((p, d) => { + l.each((f, d) => { const _ = d.getBoundingClientRect()[e || "top"] === h[e || "top"]; d.classList.toggle(i, _); }); @@ -2656,7 +2656,7 @@ async function oh(n, t) { const Ce = "zui.commands", $e = "z-commands", ah = "zui-commands-proxy", aa = "zui-command"; function Wi(n, t) { typeof t == "string" ? t = { scope: t } : typeof t == "function" && (t = { onCommand: t }); - const { scope: e = "", events: s = "click" } = t ?? {}, i = f(n), r = (i.attr($e) || "").split(","); + const { scope: e = "", events: s = "click" } = t ?? {}, i = p(n), r = (i.attr($e) || "").split(","); e && !r.includes(e) && r.push(e), i.attr($e, r.join(",")).data(Ce, { [e]: { ...t, @@ -2668,7 +2668,7 @@ function Wi(n, t) { }); } function ji(n, t = !0) { - const e = f(n); + const e = p(n); if (t === !0) e.removeAttr($e), e.removeData(Ce); else if (t.length) { @@ -2684,7 +2684,7 @@ function la(n, t) { let e = n.closest(`[${$e}]`); if (!e.length) { const o = n.closest(`[${ah}]`); - o.length && (e = f(o.data("zui.commandProxy") || o.attr("COMMAND_PROXY_ATTR")).closest(`[${$e}]`)); + o.length && (e = p(o.data("zui.commandProxy") || o.attr("COMMAND_PROXY_ATTR")).closest(`[${$e}]`)); } if (!e.length) return; @@ -2701,7 +2701,7 @@ function la(n, t) { function lh(n) { if (!n.currentTarget) return; - const t = f(n.currentTarget); + const t = p(n.currentTarget); if (t.closest(".disabled,[disabled]").length) return; const e = t.attr(aa) || (t.is('a[href^="#!"]') ? t.attr("href") : ""); @@ -2723,35 +2723,35 @@ function lh(n) { if (d && (u = d(c, o), n.commandHandled)) return u; } - const p = [c, o]; - if (t.trigger("command", p).trigger(`command:${a ? `${l}.${a}` : l}`, p), a && t.trigger(`command:.${a}`, p), n.commandHandled) + const f = [c, o]; + if (t.trigger("command", f).trigger(`command:${a ? `${l}.${a}` : l}`, f), a && t.trigger(`command:.${a}`, f), n.commandHandled) return u; if (a === "event") { l === "stop" ? n.stopPropagation() : l === "prevent" ? n.preventDefault() : se(n, l, o); return; } - return a === "window" ? se(window, l, o) : a === "zui" ? se(window.zui, l, o) : a === "target" ? se(t[0], l, o) : a === "$target" ? se(t, l, o) : a === "$" ? se(f, l, o) : u; + return a === "window" ? se(window, l, o) : a === "zui" ? se(window.zui, l, o) : a === "target" ? se(t[0], l, o) : a === "$target" ? se(t, l, o) : a === "$" ? se(p, l, o) : u; }, event: n }); } -f.fn.command = function(n, t) { +p.fn.command = function(n, t) { return this.on(`command:${n}`, t); }; -f.fn.offCommand = function(n, t) { +p.fn.offCommand = function(n, t) { return this.off(`command:${n}`, t); }; -f.fn.commands = function(n) { +p.fn.commands = function(n) { return this.each((t, e) => Wi(e, n)), this; }; -f.fn.unbindCommands = function(n) { +p.fn.unbindCommands = function(n) { return this.each((t, e) => ji(e, n)), this; }; -f(() => { - f(document).on("click.zui.command", `[${aa}],a[href^="#!"]`, lh); +p(() => { + p(document).on("click.zui.command", `[${aa}],a[href^="#!"]`, lh); }); function as(n, t = {}) { - const e = f(n)[0]; + const e = p(n)[0]; if (!e) return !1; let { viewport: s } = t; @@ -2760,7 +2760,7 @@ function as(n, t = {}) { return !1; if (!s) if (t.container) - s = f(e).closest(t.container)[0].getBoundingClientRect(); + s = p(e).closest(t.container)[0].getBoundingClientRect(); else { const { innerHeight: m, innerWidth: _ } = window, { clientHeight: v, clientWidth: y } = document.documentElement; s = { left: 0, top: 0, width: _ || y, height: m || v }; @@ -2768,15 +2768,15 @@ function as(n, t = {}) { const { left: l, top: c, width: u, height: h } = s; if (t.fullyCheck) return i >= l && r >= c && i + o <= u + l && r + a <= h + c; - const p = i <= l + u && i + o >= l; - return r <= c + h && r + a >= c && p; + const f = i <= l + u && i + o >= l; + return r <= c + h && r + a >= c && f; } -f.fn.isVisible = function(n) { +p.fn.isVisible = function(n) { return as(this, n); }; function Rn(n, t, e = !1) { var i; - const s = f(n); + const s = p(n); if (t !== void 0) { if (typeof t == "string" && t.length) { const r = `zui-runjs-${ut()}`; @@ -2793,8 +2793,8 @@ function Rn(n, t, e = !1) { Rn(s, o.textContent), o.remove(); }); } -f.runJS = (n, ...t) => (n = n.trim(), !n.startsWith("return ") && !n.endsWith(";") && (n = `return ${n}`), new Function(...t.map(([s]) => s), n)(...t.map(([, s]) => s))); -f.fn.runJS = function(n) { +p.runJS = (n, ...t) => (n = n.trim(), !n.startsWith("return ") && !n.endsWith(";") && (n = `return ${n}`), new Function(...t.map(([s]) => s), n)(...t.map(([, s]) => s))); +p.fn.runJS = function(n) { return this.each((t, e) => { Rn(e, n); }); @@ -2803,10 +2803,10 @@ function ch(n, t = "both") { return (t === "vert" || t === "both") && n.clientHeight < n.scrollHeight || (t === "horz" || t === "both") && n.clientWidth < n.scrollWidth; } function ca(n, t) { - const e = f(n), { ifNeeded: s = !0, container: i, ...r } = t || {}; + const e = p(n), { ifNeeded: s = !0, container: i, ...r } = t || {}; return e.each((o, a) => { if (i) { - const l = f(a).closest(i); + const l = p(a).closest(i); if (!l.length || !ch(l[0])) return; } @@ -2819,22 +2819,22 @@ function ca(n, t) { a.scrollIntoView(r); }), e; } -f.fn.scrollIntoView = function(n) { +p.fn.scrollIntoView = function(n) { return this.each((t, e) => { ca(e, n); }); }; -f.setLibRoot = function(n) { - f.libRoot = n; +p.setLibRoot = function(n) { + p.libRoot = n; }; -f.registerLib = function(n, t) { - f.libMap || (f.libMap = {}), !t.name && t.id && (t.id = `zui-lib-${n}`), f.libMap[n] = t; +p.registerLib = function(n, t) { + p.libMap || (p.libMap = {}), !t.name && t.id && (t.id = `zui-lib-${n}`), p.libMap[n] = t; }; function ha(n) { return new Promise((t, e) => { typeof n == "string" && (n = { src: n }); const { src: s, id: i } = n; - if (f(i ? `#${i}` : `link[href="${s}"]`).length) { + if (p(i ? `#${i}` : `link[href="${s}"]`).length) { t(); return; } @@ -2843,28 +2843,28 @@ function ha(n) { t(); }, o.onerror = () => { e(new Error(`[ZUI] Failed to load CSS from: ${s}`)); - }, o.rel = "stylesheet", o.href = s, i && (o.id = i), f("head").append(o); + }, o.rel = "stylesheet", o.href = s, i && (o.id = i), p("head").append(o); }); } function ua(n) { return new Promise((t, e) => { typeof n == "string" && (n = { src: n }); - const { src: s, id: i } = n, r = f(i ? `#${i}` : `script[src="${s}"]`); + const { src: s, id: i } = n, r = p(i ? `#${i}` : `script[src="${s}"]`); if (r.length) { if (r.dataset("loaded")) t(); else { - const p = r.data("loadCalls") || []; - p.push(t), r.data("loadCalls", p); + const f = r.data("loadCalls") || []; + f.push(t), r.data("loadCalls", f); } return; } const { async: o = !0, defer: a = !1, noModule: l = !1, type: c, integrity: u } = n, h = document.createElement("script"); h.async = o, h.defer = a, h.noModule = l, c && (h.type = c), u && (h.integrity = u), h.onload = () => { - t(), (f(h).dataset("loaded", !0).data("loadCalls") || []).forEach((d) => d()), f(h).removeData("loadCalls"); + t(), (p(h).dataset("loaded", !0).data("loadCalls") || []).forEach((d) => d()), p(h).removeData("loadCalls"); }, h.onerror = () => { e(new Error(`[ZUI] Failed to load JS from: ${s}`)); - }, f("head").append(h), h.src = s; + }, p("head").append(h), h.src = s; }); } function da(n) { @@ -2872,7 +2872,7 @@ function da(n) { typeof n == "string" && (n = { type: "module", src: n }); const { src: e, imports: s, srcList: i = [], id: r } = n; e && i.unshift({ src: e, imports: s }); - const o = i.map((y) => y.src).join(","), a = f(r ? `#${r}` : `script[data-src-list="${o}"]`); + const o = i.map((y) => y.src).join(","), a = p(r ? `#${r}` : `script[data-src-list="${o}"]`); if (a.length) { const y = a.data("module"); if (y) @@ -2883,9 +2883,9 @@ function da(n) { } return; } - const { async: l = !0, defer: c = !1, integrity: u, globalVar: h, resolve: p } = n, d = document.createElement("script"), m = `zui-module-resolve-${f.guid++}`, _ = f(d); + const { async: l = !0, defer: c = !1, integrity: u, globalVar: h, resolve: f } = n, d = document.createElement("script"), m = `zui-module-resolve-${p.guid++}`, _ = p(d); Object.assign(window, { [m]: (y) => { - (_.data("module", y).data("resolves") || []).forEach((w) => w(y)), _.removeData("resolves"), p == null || p(y), t(y), delete window[m]; + (_.data("module", y).data("resolves") || []).forEach((w) => w(y)), _.removeData("resolves"), f == null || f(y), t(y), delete window[m]; } }), d.async = l, d.defer = c, d.type = "module", _.attr("data-src-list", o).attr("data-resolve-id", m); const v = []; d.text = [ @@ -2902,17 +2902,17 @@ function da(n) { h ? `Object.assign(window, ${h === !0 ? "zuiImportResult" : `{${h}: zuiImportResult}`});` : "", `if(window['${m}']) window['${m}'](zuiImportResult);` ].join(` -`), u && (d.integrity = u), f("head").append(d); +`), u && (d.integrity = u), p("head").append(d); }); } -f.getLib = async function(n, t, e) { +p.getLib = async function(n, t, e) { var m; - typeof n == "string" && (n = ((m = f.libMap) == null ? void 0 : m[n]) || { src: n }); - let s = Array.isArray(n) ? { src: n } : f.extend({}, n); - typeof t == "function" ? s.success = t : t && f.extend(s, t), e && (s.success = e); + typeof n == "string" && (n = ((m = p.libMap) == null ? void 0 : m[n]) || { src: n }); + let s = Array.isArray(n) ? { src: n } : p.extend({}, n); + typeof t == "function" ? s.success = t : t && p.extend(s, t), e && (s.success = e); let { src: i } = s; - const { name: r, success: o } = s, a = f.libMap && r ? f.libMap[r] : null; - if (a && (s = f.extend({}, a, s), i = a.src || s.src), typeof i == "string" && (i = [i]), !i || !i.length) + const { name: r, success: o } = s, a = p.libMap && r ? p.libMap[r] : null; + if (a && (s = p.extend({}, a, s), i = a.src || s.src), typeof i == "string" && (i = [i]), !i || !i.length) throw new Error("[ZUI] No src provided for $.getLib."); let { check: l = !0 } = s; l === !0 && r && (l = r); @@ -2920,10 +2920,10 @@ f.getLib = async function(n, t, e) { let u; const h = () => c ? window[c] || u : void 0; typeof l == "string" && (l = () => !!h()); - const p = () => (o == null || o(), h()); + const f = () => (o == null || o(), h()); if (typeof l == "function" && await l()) - return p(); - const { root: d = f.libRoot } = s; + return f(); + const { root: d = p.libRoot } = s; for (let _ of i) { typeof _ == "string" && (_ = { src: _ }); let { src: v } = _; @@ -2943,16 +2943,16 @@ f.getLib = async function(n, t, e) { } await ua(y); } - return p(); + return f(); }; -f.getScript = f.getLib; +p.getScript = p.getLib; function fa(n, t) { - const e = f(n), s = new ResizeObserver(t); + const e = p(n), s = new ResizeObserver(t); return e.each((i, r) => { s.observe(r); }), s; } -f.fn.resize = function(n) { +p.fn.resize = function(n) { return fa(this, n); }; const qd = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ @@ -3498,7 +3498,7 @@ class Q extends W { return t.className; } _getProps(t) { - const { className: e, attrs: s, props: i, data: r, forwardRef: o, children: a, component: l, style: c, class: u, commands: h, onCommand: p, ...d } = t, m = new Set(this.constructor.customProps), _ = "dangerouslySetInnerHTML", v = Object.keys(d).reduce((y, b) => { + const { className: e, attrs: s, props: i, data: r, forwardRef: o, children: a, component: l, style: c, class: u, commands: h, onCommand: f, ...d } = t, m = new Set(this.constructor.customProps), _ = "dangerouslySetInnerHTML", v = Object.keys(d).reduce((y, b) => { if (!m.has(b) && (b === _ || /^(on[A-Z]|data-|zui-|z-)[a-zA-Z-]+/.test(b))) { const w = d[b]; y[b] = b !== _ && w && typeof w == "object" ? JSON.stringify(w) : w; @@ -3581,7 +3581,7 @@ class ue extends W { super(...arguments), this._ref = G(); } _runJS() { - this.props.executeScript && f(this._ref.current).runJS().zuiInit(); + this.props.executeScript && p(this._ref.current).runJS().zuiInit(); } componentDidMount() { this._runJS(); @@ -3606,7 +3606,7 @@ function Ch(n) { onGenerate: l, onRenderItem: c, ...u - } = n, h = [e], p = { ...s }, d = [], m = []; + } = n, h = [e], f = { ...s }, d = [], m = []; return i.forEach((_) => { const v = []; if (typeof _ == "string" && a && a[_] && (_ = a[_]), typeof _ == "function") @@ -3621,11 +3621,11 @@ function Ch(n) { v.forEach((y) => { y != null && (typeof y == "object" && !ot(y) && ("html" in y || "__html" in y || "className" in y || "style" in y || "attrs" in y || "children" in y) ? y.html ? d.push( /* @__PURE__ */ g("div", { className: k(y.className), style: y.style, dangerouslySetInnerHTML: { __html: y.html }, ...y.attrs ?? {} }) - ) : y.__html ? m.push(y.__html) : (y.style && Object.assign(p, y.style), y.className && h.push(y.className), y.children && d.push(y.children), y.attrs && Object.assign(u, y.attrs)) : d.push(y)); + ) : y.__html ? m.push(y.__html) : (y.style && Object.assign(f, y.style), y.className && h.push(y.className), y.children && d.push(y.children), y.attrs && Object.assign(u, y.attrs)) : d.push(y)); }); }), m.length && Object.assign(u, { dangerouslySetInnerHTML: { __html: m } }), [{ className: k(h), - style: p, + style: f, ...u }, d]; } @@ -3654,7 +3654,7 @@ class zn extends W { this._ajax = void 0; } componentDidMount() { - this.load(), f(this._ref.current).on("loadContent.zui", (t, e) => { + this.load(), p(this._ref.current).on("loadContent.zui", (t, e) => { t.stopPropagation(), this.load(e); }); } @@ -3663,7 +3663,7 @@ class zn extends W { } componentWillUnmount() { var t; - (t = this._ajax) == null || t.abort(), f(this._ref.current).off(".zui"); + (t = this._ajax) == null || t.abort(), p(this._ref.current).off(".zui"); } _renderContent(t, e) { const { loading: s, error: i, content: r = "" } = this.state, { loadingContent: o, errorText: a, type: l, ...c } = e; @@ -3800,12 +3800,12 @@ class q extends vt { ...c }; if (e && ((h = i == null ? void 0 : i.resetState) == null || h.call(i, c)), a && r.HElement && (s.tagName.toLowerCase() === a || a === !0)) { - const p = Array.from(s.attributes).reduce((d, m) => { + const f = Array.from(s.attributes).reduce((d, m) => { const { name: _, value: v } = m; return d[_ === "class" ? "className" : _] = v, d; }, {}); we( - wt(r, O({ component: s.tagName.toLowerCase(), attrs: p }, u)), + wt(r, O({ component: s.tagName.toLowerCase(), attrs: f }, u)), s.parentElement, s ); @@ -3827,13 +3827,13 @@ class Z extends Q { this._isEmptyText = e == null || typeof e == "string" && !e.length || s && !i, this._onlyCaret = r && this._isEmptyText && !o && !a && !l && !s; } _getChildren(t) { - const { loading: e, loadingIcon: s, loadingText: i, icon: r, iconClass: o, text: a, textClass: l, children: c, trailingIcon: u, trailingIconClass: h, caret: p } = t; + const { loading: e, loadingIcon: s, loadingText: i, icon: r, iconClass: o, text: a, textClass: l, children: c, trailingIcon: u, trailingIconClass: h, caret: f } = t; return [ e ? /* @__PURE__ */ g(nt, { icon: s || "icon-spinner-snake", className: "spin" }) : /* @__PURE__ */ g(nt, { icon: r, className: o }), this._isEmptyText ? null : /* @__PURE__ */ g("span", { className: k("text", l), children: e ? i : a }), e ? null : c, e ? null : /* @__PURE__ */ g(nt, { icon: u, className: h }), - e ? null : p ? /* @__PURE__ */ g("span", { className: typeof p == "string" ? `caret-${p}` : "caret" }) : null + e ? null : f ? /* @__PURE__ */ g("span", { className: typeof f == "string" ? `caret-${f}` : "caret" }) : null ]; } _getClassName(t) { @@ -3967,11 +3967,11 @@ let lt = class extends Q { _getItem(t, e, s) { if (!e) return !1; - const { itemProps: i, itemPropsMap: r = {}, getItem: o, itemKey: a } = t, { type: l = this.constructor.defaultItemType } = e, { name: c, itemName: u } = this, { defaultItemProps: h = {}, defaultItemPropsMap: p = {} } = this.constructor; + const { itemProps: i, itemPropsMap: r = {}, getItem: o, itemKey: a } = t, { type: l = this.constructor.defaultItemType } = e, { name: c, itemName: u } = this, { defaultItemProps: h = {}, defaultItemPropsMap: f = {} } = this.constructor; if (e = O( { type: l }, h, - p[l], + f[l], i, r[l], { className: [c ? `${c}-${l}` : "", u] }, @@ -4134,7 +4134,7 @@ let ds = class extends W { text: c, code: u, maxTextLength: h = 2, - src: p, + src: f, hueDistance: d = 43, saturation: m = 0.4, lightness: _ = 0.6, @@ -4144,8 +4144,8 @@ let ds = class extends W { let C = 32; s && (typeof s == "number" ? (w.width = `${s}px`, w.height = `${s}px`, w.fontSize = `${Math.max(12, Math.round(s / 2))}px`, C = s) : (b.push(`size-${s}`), C = { xs: 20, sm: 24, lg: 48, xl: 80 }[s])), i ? b.push("circle") : r && (typeof r == "number" ? w.borderRadius = `${r}px` : b.push(`rounded-${r}`)); let S; - if (p) - b.push("has-img"), S = /* @__PURE__ */ g("img", { className: "avatar-img", src: p, alt: c }); + if (f) + b.push("has-img"), S = /* @__PURE__ */ g("img", { className: "avatar-img", src: f, alt: c }); else if (l) b.push("has-icon"), S = /* @__PURE__ */ g(nt, { icon: l }); else if (c != null && c.length) { @@ -4186,7 +4186,7 @@ let kt = class extends lt { _getItem(t, e, s) { if (!e) return !1; - e.type || (e = f.extend({ type: e.dropdown || e.items ? "dropdown" : "item" }, e)); + e.type || (e = p.extend({ type: e.dropdown || e.items ? "dropdown" : "item" }, e)); let i = super._getItem(t, e, s); return i && (this._isBtnType(i) && (i = O({}, this._shareBtnProps, i)), i); } @@ -4207,7 +4207,7 @@ kt.defaultItemProps = { const fs = class Ta extends kt { _getProps(t) { const { gap: e } = t, s = super._getProps(t); - return e && (typeof e == "number" ? s.className = k(s.className, `gap-${e}`) : s.style = f.extend(s.style || {}, { gap: e })), s; + return e && (typeof e == "number" ? s.className = k(s.className, `gap-${e}`) : s.style = p.extend(s.style || {}, { gap: e })), s; } _getItem(t, e, s) { const i = super._getItem(t, e, s); @@ -4307,8 +4307,8 @@ class Ne extends Q { const d = typeof i == "function" ? i.call(this, t) : i; d && (d.className = k("item-avatar", d.className), h.push(/* @__PURE__ */ g(ds, { ...d }, "avatar"))); } - const p = o ? /* @__PURE__ */ g(L, { content: o }, "leading") : null; - return p && h.push(p), u ? h.length ? [ + const f = o ? /* @__PURE__ */ g(L, { content: o }, "leading") : null; + return f && h.push(f), u ? h.length ? [ /* @__PURE__ */ g("div", { className: k("item-leading", a), children: h }, "leading") ] : [] : h; } @@ -4323,11 +4323,11 @@ class Ne extends Q { target: c, content: u, contentClass: h, - contentAttrs: p + contentAttrs: f } = t, d = l && !e, m = d ? "a" : "div"; let { title: _, text: v } = t; return _ === void 0 && (_ = v, v = null), [ - /* @__PURE__ */ g("div", { className: k("item-content", h), ...p, children: [ + /* @__PURE__ */ g("div", { className: k("item-content", h), ...f, children: [ _ ? /* @__PURE__ */ g(m, { className: k("item-title", i), href: d ? l : void 0, target: d ? c : void 0, ...r, children: /* @__PURE__ */ g(L, { content: _ }) }, "title") : null, o ? /* @__PURE__ */ g("div", { className: k("item-subtitle", a), children: /* @__PURE__ */ g(L, { content: o }) }, "subtitle") : null, v ? /* @__PURE__ */ g("div", { className: k("item-text text", s), children: v }, "text") : null, @@ -4364,7 +4364,7 @@ class Ne extends Q { active: c, disabled: u, divider: h, - checked: p, + checked: f, multiline: d, title: m, subtitle: _, @@ -4379,7 +4379,7 @@ class Ne extends Q { disabled: u, "has-divider": h, selected: y, - checked: p, + checked: f, multiline: d ?? !!(m && _), state: C && !u }) @@ -4415,7 +4415,7 @@ class cn extends lt { return t && !Array.isArray(t); } componentDidMount() { - this._afterRender(!0), this.tryLoad(), this.props.activeOnHover && !this.props.multipleActive && f(this.element).on(`mouseenter${this.namespace}`, "[z-item]", (t) => { + this._afterRender(!0), this.tryLoad(), this.props.activeOnHover && !this.props.multipleActive && p(this.element).on(`mouseenter${this.namespace}`, "[z-item]", (t) => { const e = this._getItemFromEvent(t); e && e.renderedItem.type === "item" && !e.renderedItem.disabled && !this.isActive(e.key) && this.toggleActive(e.key, !0); }); @@ -4425,7 +4425,7 @@ class cn extends lt { } componentWillUnmount() { var t; - f(this.element).off(this.namespace), (t = this.props.beforeDestroy) == null || t.call(this); + p(this.element).off(this.namespace), (t = this.props.beforeDestroy) == null || t.call(this); } setItems(t, e) { const { onLoadFail: s } = this.props; @@ -4550,7 +4550,7 @@ class cn extends lt { const { itemName: o, name: a } = this; if (e.innerClass = [o ? `${o}-inner${a ? ` ${a}-${e.type}-inner` : ""}` : "", e.innerClass], e.type === "item") { const { checkbox: l } = t; - e.checkbox === !1 ? e.checked = void 0 : (l || e.checkbox) && (e.checked = this.isChecked(e.key, s, e.checked), typeof l == "object" && e.checkbox !== !1 && (e.checkbox = e.checkbox ? f.extend({}, l, e.checkbox) : l), t.selectOnChecked && e.checked === !0 && (e.selected = !0)), e.active === void 0 && this.isActive(e) && (e.active = !0); + e.checkbox === !1 ? e.checked = void 0 : (l || e.checkbox) && (e.checked = this.isChecked(e.key, s, e.checked), typeof l == "object" && e.checkbox !== !1 && (e.checkbox = e.checkbox ? p.extend({}, l, e.checkbox) : l), t.selectOnChecked && e.checked === !0 && (e.selected = !0)), e.active === void 0 && this.isActive(e) && (e.active = !0); } return e.icon && (this._hasIcons = !0), e.checked !== void 0 && (this._hasCheckbox = !0), e; } @@ -4733,7 +4733,7 @@ class Ie extends cn { constructor(t) { super(t); const { defaultNestedShow: e, preserve: s, nestedShow: i } = t; - if (f.extend( + if (p.extend( this.state, typeof e == "boolean" ? { defaultShow: e, nestedShow: {} } : { nestedShow: e || {} }, i !== void 0 ? { nestedShow: i } : null @@ -4854,7 +4854,7 @@ class Ie extends cn { return; if (this.isRoot) { await this.changeState(({ checked: a, nestedShow: l }) => { - const c = (d) => s[d.keyPath] ?? a[d.keyPath] ?? d.data.checked ?? !1, u = this.getItemMap(), h = {}, { expandChildrenOnCheck: p } = this.props; + const c = (d) => s[d.keyPath] ?? a[d.keyPath] ?? d.data.checked ?? !1, u = this.getItemMap(), h = {}, { expandChildrenOnCheck: f } = this.props; return Object.keys(s).forEach((d) => { e = s[d]; const m = u.get(d); @@ -4863,7 +4863,7 @@ class Ie extends cn { }), Lh(m, (_) => { const { children: v } = _, y = v.reduce((b, w) => (c(w) && b++, b), 0); s[_.keyPath] = y === v.length ? !0 : y ? "indeterminate" : !1; - }), p && e && m.data.items && (h[d] = !0)); + }), f && e && m.data.items && (h[d] = !0)); }), { checked: { ...a, @@ -5197,14 +5197,14 @@ let gs = class extends W { } } }); - e && (this._hotkeysScope = `SearchBox_${this._gid}`, f(this.input).hotkeys(e, { + e && (this._hotkeysScope = `SearchBox_${this._gid}`, p(this.input).hotkeys(e, { scope: this._hotkeysScope, event: "keydown" })); } } componentWillUnmount() { - this._hotkeysScope && f(this.input).unbindHotkeys(this._hotkeysScope); + this._hotkeysScope && p(this.input).unbindHotkeys(this._hotkeysScope); } get id() { return this._gid; @@ -5231,9 +5231,9 @@ let gs = class extends W { this._timer && clearTimeout(this._timer), this._timer = 0; } render(t, e) { - const { style: s, className: i, rootClass: r, rootStyle: o, readonly: a, disabled: l, circle: c, placeholder: u, mergeIcon: h, searchIcon: p, clearIcon: d, value: m, compact: _, prefixClass: v, suffixClass: y } = t, { focus: b, value: w } = e, { id: C } = this, S = m ?? w, $ = typeof S != "string" || !S.trim().length; + const { style: s, className: i, rootClass: r, rootStyle: o, readonly: a, disabled: l, circle: c, placeholder: u, mergeIcon: h, searchIcon: f, clearIcon: d, value: m, compact: _, prefixClass: v, suffixClass: y } = t, { focus: b, value: w } = e, { id: C } = this, S = m ?? w, $ = typeof S != "string" || !S.trim().length; let E, N, A; - return p && (A = p === !0 ? /* @__PURE__ */ g("span", { class: "magnifier" }) : /* @__PURE__ */ g(nt, { icon: p })), !h && p && (E = /* @__PURE__ */ g("label", { for: C, class: k("input-control-prefix", v), children: A }, "prefix")), d && !$ ? N = /* @__PURE__ */ g( + return f && (A = f === !0 ? /* @__PURE__ */ g("span", { class: "magnifier" }) : /* @__PURE__ */ g(nt, { icon: f })), !h && f && (E = /* @__PURE__ */ g("label", { for: C, class: k("input-control-prefix", v), children: A }, "prefix")), d && !$ ? N = /* @__PURE__ */ g( "button", { type: "button", @@ -5241,7 +5241,7 @@ let gs = class extends W { onClick: this._handleClearBtnClick, children: d === !0 ? /* @__PURE__ */ g("span", { class: "close" }) : /* @__PURE__ */ g(nt, { icon: d }) } - ) : h && p && (N = A), N && (N = /* @__PURE__ */ g("label", { for: C, class: k("input-control-suffix", y), children: N }, "suffix")), /* @__PURE__ */ g("div", { class: k("search-box input-control", r, { focus: b, empty: $, compact: _, "has-prefix-icon": E, "has-suffix-icon": N }), style: o, children: [ + ) : h && f && (N = A), N && (N = /* @__PURE__ */ g("label", { for: C, class: k("input-control-suffix", y), children: N }, "suffix")), /* @__PURE__ */ g("div", { class: k("search-box input-control", r, { focus: b, empty: $, compact: _, "has-prefix-icon": E, "has-suffix-icon": N }), style: o, children: [ E, /* @__PURE__ */ g( "input", @@ -5299,7 +5299,7 @@ let Ct = class extends yt { var s; if (!this.isRoot) return; - const t = f(this.element), e = t.find(".item.is-nested.is-not-match").filter((i, r) => this._matchedParents.has(r.getAttribute("z-key-path") || "")).addClass("has-match-child"); + const t = p(this.element), e = t.find(".item.is-nested.is-not-match").filter((i, r) => this._matchedParents.has(r.getAttribute("z-key-path") || "")).addClass("has-match-child"); t.parent().toggleClass("no-match-child", !!((s = this._searchKeys) != null && s.length) && !e.length && !t.children(".item").not(".is-not-match").length); } _isItemMatch(t, e, s, i) { @@ -5385,7 +5385,7 @@ let Ct = class extends yt { * @returns Search keys array. */ static getSearchKeys(t = "") { - return f.unique(t.toLowerCase().split(" ").filter((e) => e.length)); + return p.unique(t.toLowerCase().split(" ").filter((e) => e.length)); } static underlineKeys(t, e, s = "is-match-keys") { return t.reduce((i, r) => [...i].reduce((o, a) => { @@ -5439,8 +5439,8 @@ function Hh({ iconClass: u, ...h }) { - let p; - a === !0 ? p = /* @__PURE__ */ g(Z, { className: "alert-close btn ghost square text-inherit", square: !0, onClick: l, children: /* @__PURE__ */ g("span", { class: "close" }) }) : ot(a) ? p = a : typeof a == "object" && (p = /* @__PURE__ */ g(Z, { ...a, onClick: l })); + let f; + a === !0 ? f = /* @__PURE__ */ g(Z, { className: "alert-close btn ghost square text-inherit", square: !0, onClick: l, children: /* @__PURE__ */ g("span", { class: "close" }) }) : ot(a) ? f = a : typeof a == "object" && (f = /* @__PURE__ */ g(Z, { ...a, onClick: l })); const d = $t.render(e, []); return /* @__PURE__ */ g("div", { className: k("alert", n), style: t, ...h, children: [ /* @__PURE__ */ g(nt, { icon: c, className: k("alert-icon", u) }), @@ -5450,7 +5450,7 @@ function Hh({ s ? d : null ] }), s ? null : d, - p, + f, o ] }); } @@ -5499,7 +5499,7 @@ class Ki extends q { } afterInit() { this.on("click", (t) => { - f(t.target).closest('.alert-close,[data-dismiss="messager"]').length && (t.preventDefault(), t.stopPropagation(), this.hide()); + p(t.target).closest('.alert-close,[data-dismiss="messager"]').length && (t.preventDefault(), t.stopPropagation(), this.hide()); }); } setOptions(t, e) { @@ -5562,14 +5562,14 @@ const un = class Ea extends vt { return this._holder; const { placement: t = "top" } = this.options; let e = this.$element.find(`.messagers-${t}`); - e.length || (e = f(`

    `).appendTo(this.$element)); + e.length || (e = p(`
    `).appendTo(this.$element)); let s = e.find(`#messager-${this.gid}`); - return s.length || (s = f(`
    `).appendTo(e), this._holder = s[0]), s[0]; + return s.length || (s = p(`
    `).appendTo(e), this._holder = s[0]), s[0]; } static show(t, e) { typeof t == "string" && (t = { content: t }); const { container: s, ...i } = t, r = { type: e, key: `messager_${ut()}`, ...i }; - r.type && f.extend(r, this.TypeOptions[r.type]); + r.type && p.extend(r, this.TypeOptions[r.type]); const o = Ea.ensure(s || "body", r); return o.hide(), o.show(), o; } @@ -5616,14 +5616,14 @@ qi.Component = ms; qi.register(); let _s = class extends W { render(t) { - const { percent: e = 50, size: s = 24, circleBg: i, circleColor: r, text: o, className: a, textStyle: l, textX: c, textY: u, children: h } = t, p = s / 2; + const { percent: e = 50, size: s = 24, circleBg: i, circleColor: r, text: o, className: a, textStyle: l, textX: c, textY: u, children: h } = t, f = s / 2; let { circleWidth: d = 0.1 } = t; d < 1 && (d = s * d); const m = (s - d) / 2; return /* @__PURE__ */ g("svg", { className: a, width: s, height: s, children: [ - /* @__PURE__ */ g("circle", { cx: p, cy: p, r: m, "stroke-width": d, stroke: i, fill: "transparent" }), - /* @__PURE__ */ g("circle", { cx: p, cy: p, r: m, "stroke-width": d, stroke: r, fill: "transparent", "stroke-linecap": "round", "stroke-dasharray": Math.PI * m * 2, "stroke-dashoffset": Math.PI * m * 2 * (100 - e) / 100, style: { transformOrigin: "center", transform: "rotate(-90deg)" } }), - o ? /* @__PURE__ */ g("text", { x: c ?? p, y: u ?? p + d / 2, "dominant-baseline": "middle", "text-anchor": "middle", style: l || { fontSize: `${m}px`, stroke: "currentColor" }, children: o === !0 ? Math.round(e) : o }) : null, + /* @__PURE__ */ g("circle", { cx: f, cy: f, r: m, "stroke-width": d, stroke: i, fill: "transparent" }), + /* @__PURE__ */ g("circle", { cx: f, cy: f, r: m, "stroke-width": d, stroke: r, fill: "transparent", "stroke-linecap": "round", "stroke-dasharray": Math.PI * m * 2, "stroke-dashoffset": Math.PI * m * 2 * (100 - e) / 100, style: { transformOrigin: "center", transform: "rotate(-90deg)" } }), + o ? /* @__PURE__ */ g("text", { x: c ?? f, y: u ?? f + d / 2, "dominant-baseline": "middle", "text-anchor": "middle", style: l || { fontSize: `${m}px`, stroke: "currentColor" }, children: o === !0 ? Math.round(e) : o }) : null, h ] }); } @@ -5660,7 +5660,7 @@ it(Vh); const Pa = Symbol("EVENT_PICK"); class Yi extends W { constructor(t) { - super(t), this._handleClick = this._handleClick.bind(this), this._hasInput = !!f(`#${t.id}`).length; + super(t), this._handleClick = this._handleClick.bind(this), this._hasInput = !!p(`#${t.id}`).length; } get hasInput() { return this._hasInput; @@ -5668,7 +5668,7 @@ class Yi extends W { _handleClick(t) { const { togglePop: e, clickType: s, onClick: i } = this.props; let r = s === "open" ? !0 : void 0; - const o = f(t.target), a = i == null ? void 0 : i(t); + const o = p(t.target), a = i == null ? void 0 : i(t); if (!t.defaultPrevented) { if (typeof a == "boolean") r = a; @@ -5714,14 +5714,14 @@ class Yi extends W { const { name: e, state: { value: s = "" }, disabled: i, readonly: r, id: o } = t; if (e) if (this._hasInput) - f(`#${o}`).val(s); + p(`#${o}`).val(s); else return /* @__PURE__ */ g("input", { id: o, type: "hidden", className: "pick-value", name: e, value: s, readonly: r, disabled: i }); return null; } componentDidMount() { const { id: t } = this.props; - f(`#${t}`).on(`change.zui.pick.${t} syncValue.zui.pick.${t}`, (e, s) => { + p(`#${t}`).on(`change.zui.pick.${t} syncValue.zui.pick.${t}`, (e, s) => { if (typeof s == "symbol") return; const i = e.target.value; @@ -5730,11 +5730,11 @@ class Yi extends W { } componentWillUnmount() { const { id: t } = this.props; - f(`#${t}`).off(`change.zui.pick.${t}`); + p(`#${t}`).off(`change.zui.pick.${t}`); } componentDidUpdate(t) { const { id: e, state: s, name: i } = this.props; - i && t.state.value !== s.value && (this._skipTriggerChange !== s.value && f(`#${e}`).trigger("change", Pa), this._skipTriggerChange = !1); + i && t.state.value !== s.value && (this._skipTriggerChange !== s.value && p(`#${e}`).trigger("change", Pa), this._skipTriggerChange = !1); } render(t) { return wt( @@ -5855,7 +5855,7 @@ function eo(n, t, e) { reference: s, floating: i } = n; - const r = de(t), o = Zi(t), a = Ji(o), l = Zt(t), c = r === "y", u = s.x + s.width / 2 - i.width / 2, h = s.y + s.height / 2 - i.height / 2, p = s[a] / 2 - i[a] / 2; + const r = de(t), o = Zi(t), a = Ji(o), l = Zt(t), c = r === "y", u = s.x + s.width / 2 - i.width / 2, h = s.y + s.height / 2 - i.height / 2, f = s[a] / 2 - i[a] / 2; let d; switch (l) { case "top": @@ -5890,10 +5890,10 @@ function eo(n, t, e) { } switch (Le(t)) { case "start": - d[o] -= p * (e && c ? -1 : 1); + d[o] -= f * (e && c ? -1 : 1); break; case "end": - d[o] += p * (e && c ? -1 : 1); + d[o] += f * (e && c ? -1 : 1); break; } return d; @@ -5912,7 +5912,7 @@ const Xh = async (n, t, e) => { }), { x: u, y: h - } = eo(c, s, l), p = s, d = {}, m = 0; + } = eo(c, s, l), f = s, d = {}, m = 0; for (let _ = 0; _ < a.length; _++) { const { name: v, @@ -5926,7 +5926,7 @@ const Xh = async (n, t, e) => { x: u, y: h, initialPlacement: s, - placement: p, + placement: f, strategy: i, middlewareData: d, rects: c, @@ -5942,19 +5942,19 @@ const Xh = async (n, t, e) => { ...d[v], ...C } - }, S && m <= 50 && (m++, typeof S == "object" && (S.placement && (p = S.placement), S.rects && (c = S.rects === !0 ? await o.getElementRects({ + }, S && m <= 50 && (m++, typeof S == "object" && (S.placement && (f = S.placement), S.rects && (c = S.rects === !0 ? await o.getElementRects({ reference: n, floating: t, strategy: i }) : S.rects), { x: u, y: h - } = eo(c, p, l)), _ = -1); + } = eo(c, f, l)), _ = -1); } return { x: u, y: h, - placement: p, + placement: f, strategy: i, middlewareData: d }; @@ -5973,9 +5973,9 @@ async function Xi(n, t) { boundary: c = "clippingAncestors", rootBoundary: u = "viewport", elementContext: h = "floating", - altBoundary: p = !1, + altBoundary: f = !1, padding: d = 0 - } = De(t, n), m = Ra(d), v = a[p ? h === "floating" ? "reference" : "floating" : h], y = Fn(await r.getClippingRect({ + } = De(t, n), m = Ra(d), v = a[f ? h === "floating" ? "reference" : "floating" : h], y = Fn(await r.getClippingRect({ element: (e = await (r.isElement == null ? void 0 : r.isElement(v))) == null || e ? v : v.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)), boundary: c, rootBoundary: u, @@ -6022,15 +6022,15 @@ const Qh = (n) => ({ } = De(n, t) || {}; if (c == null) return {}; - const h = Ra(u), p = { + const h = Ra(u), f = { x: e, y: s - }, d = Zi(i), m = Ji(d), _ = await o.getDimensions(c), v = d === "y", y = v ? "top" : "left", b = v ? "bottom" : "right", w = v ? "clientHeight" : "clientWidth", C = r.reference[m] + r.reference[d] - p[d] - r.floating[m], S = p[d] - r.reference[d], $ = await (o.getOffsetParent == null ? void 0 : o.getOffsetParent(c)); + }, d = Zi(i), m = Ji(d), _ = await o.getDimensions(c), v = d === "y", y = v ? "top" : "left", b = v ? "bottom" : "right", w = v ? "clientHeight" : "clientWidth", C = r.reference[m] + r.reference[d] - f[d] - r.floating[m], S = f[d] - r.reference[d], $ = await (o.getOffsetParent == null ? void 0 : o.getOffsetParent(c)); let E = $ ? $[w] : 0; (!E || !await (o.isElement == null ? void 0 : o.isElement($))) && (E = a.floating[w] || r.floating[m]); const N = C / 2 - S / 2, A = E / 2 - _[m] / 2 - 1, I = Jt(h[y], A), T = Jt(h[b], A), P = I, H = E - _[m] - T, R = E / 2 - _[m] / 2 + N, F = ii(P, R, H), U = !l.arrow && Le(i) != null && R !== F && r.reference[m] / 2 - (R < P ? I : T) - _[m] / 2 < 0, B = U ? R < P ? R - P : R - H : 0; return { - [d]: p[d] + B, + [d]: f[d] + B, data: { [d]: F, centerOffset: R - F - B, @@ -6057,7 +6057,7 @@ const Qh = (n) => ({ } = t, { mainAxis: u = !0, crossAxis: h = !0, - fallbackPlacements: p, + fallbackPlacements: f, fallbackStrategy: d = "bestFit", fallbackAxisSideDirection: m = "none", flipAlignment: _ = !0, @@ -6065,8 +6065,8 @@ const Qh = (n) => ({ } = De(n, t); if ((e = r.arrow) != null && e.alignmentOffset) return {}; - const y = Zt(i), b = de(a), w = Zt(a) === a, C = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), S = p || (w || !_ ? [Hn(a)] : Gh(a)), $ = m !== "none"; - !p && $ && S.push(...Jh(a, _, m, C)); + const y = Zt(i), b = de(a), w = Zt(a) === a, C = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), S = f || (w || !_ ? [Hn(a)] : Gh(a)), $ = m !== "none"; + !f && $ && S.push(...Jh(a, _, m, C)); const E = [a, ...S], N = await Xi(t, v), A = []; let I = ((s = r.flip) == null ? void 0 : s.overflows) || []; if (u && A.push(N[y]), h) { @@ -6128,7 +6128,7 @@ async function eu(n, t) { elements: i } = n, r = await (s.isRTL == null ? void 0 : s.isRTL(i.floating)), o = Zt(e), a = Le(e), l = de(e) === "y", c = ["left", "top"].includes(o) ? -1 : 1, u = r && l ? -1 : 1, h = De(t, n); let { - mainAxis: p, + mainAxis: f, crossAxis: d, alignmentAxis: m } = typeof h == "number" ? { @@ -6142,9 +6142,9 @@ async function eu(n, t) { }; return a && typeof m == "number" && (d = a === "end" ? m * -1 : m), l ? { x: d * u, - y: p * c + y: f * c } : { - x: p * c, + x: f * c, y: d * u }; } @@ -6198,10 +6198,10 @@ const nu = function(n) { } = De(n, t), c = { x: e, y: s - }, u = await Xi(t, l), h = de(Zt(i)), p = Ia(h); - let d = c[p], m = c[h]; + }, u = await Xi(t, l), h = de(Zt(i)), f = Ia(h); + let d = c[f], m = c[h]; if (r) { - const v = p === "y" ? "top" : "left", y = p === "y" ? "bottom" : "right", b = d + u[v], w = d - u[y]; + const v = f === "y" ? "top" : "left", y = f === "y" ? "bottom" : "right", b = d + u[v], w = d - u[y]; d = ii(b, d, w); } if (o) { @@ -6210,7 +6210,7 @@ const nu = function(n) { } const _ = a.fn({ ...t, - [p]: d, + [f]: d, [h]: m }); return { @@ -6219,7 +6219,7 @@ const nu = function(n) { x: _.x - e, y: _.y - s, enabled: { - [p]: r, + [f]: r, [h]: o } } @@ -6241,15 +6241,15 @@ const nu = function(n) { apply: l = () => { }, ...c - } = De(n, t), u = await Xi(t, c), h = Zt(i), p = Le(i), d = de(i) === "y", { + } = De(n, t), u = await Xi(t, c), h = Zt(i), f = Le(i), d = de(i) === "y", { width: m, height: _ } = r.floating; let v, y; - h === "top" || h === "bottom" ? (v = h, y = p === (await (o.isRTL == null ? void 0 : o.isRTL(a.floating)) ? "start" : "end") ? "left" : "right") : (y = h, v = p === "end" ? "top" : "bottom"); + h === "top" || h === "bottom" ? (v = h, y = f === (await (o.isRTL == null ? void 0 : o.isRTL(a.floating)) ? "start" : "end") ? "left" : "right") : (y = h, v = f === "end" ? "top" : "bottom"); const b = _ - u.top - u.bottom, w = m - u.left - u.right, C = Jt(_ - u[v], b), S = Jt(m - u[y], w), $ = !t.middlewareData.shift; let E = C, N = S; - if ((e = t.middlewareData.shift) != null && e.enabled.x && (N = w), (s = t.middlewareData.shift) != null && s.enabled.y && (E = b), $ && !p) { + if ((e = t.middlewareData.shift) != null && e.enabled.x && (N = w), (s = t.middlewareData.shift) != null && s.enabled.y && (E = b), $ && !f) { const I = gt(u.left, 0), T = gt(u.right, 0), P = gt(u.top, 0), H = gt(u.bottom, 0); d ? N = m - 2 * (I !== 0 || T !== 0 ? I + T : gt(u.left, u.right)) : E = _ - 2 * (P !== 0 || H !== 0 ? P + H : gt(u.top, u.bottom)); } @@ -6423,8 +6423,8 @@ function fe(n, t, e, s) { const a = lu(r, e, s) ? Oa(r) : Pt(0); let l = (i.left + a.x) / o.x, c = (i.top + a.y) / o.y, u = i.width / o.x, h = i.height / o.y; if (r) { - const p = mt(r), d = s && Nt(s) ? mt(s) : s; - let m = p, _ = oi(m); + const f = mt(r), d = s && Nt(s) ? mt(s) : s; + let m = f, _ = oi(m); for (; _ && s && d !== m; ) { const v = Se(_), y = _.getBoundingClientRect(), b = Et(_), w = y.left + (_.clientLeft + parseFloat(b.paddingLeft)) * v.x, C = y.top + (_.clientTop + parseFloat(b.paddingTop)) * v.y; l *= v.x, c *= v.y, u *= v.x, h *= v.y, l += w, c += C, m = mt(_), _ = oi(m); @@ -6471,12 +6471,12 @@ function cu(n) { const d = fe(s); c = Se(s), u.x = d.x + s.clientLeft, u.y = d.y + s.clientTop; } - const p = o && !h && !r ? Ha(o, l, !0) : Pt(0); + const f = o && !h && !r ? Ha(o, l, !0) : Pt(0); return { width: e.width * c.x, height: e.height * c.y, - x: e.x * c.x - l.scrollLeft * c.x + u.x + p.x, - y: e.y * c.y - l.scrollTop * c.y + u.y + p.y + x: e.x * c.x - l.scrollLeft * c.x + u.x + f.x, + y: e.y * c.y - l.scrollTop * c.y + u.y + f.y }; } function hu(n) { @@ -6590,8 +6590,8 @@ function _u(n, t, e) { const l = Pt(0); if (s || !s && !r) if ((ze(t) !== "body" || dn(i)) && (a = bs(t)), s) { - const p = fe(t, !0, r, t); - l.x = p.x + t.clientLeft, l.y = p.y + t.clientTop; + const f = fe(t, !0, r, t); + l.x = f.x + t.clientLeft, l.y = f.y + t.clientTop; } else i && (l.x = nr(i)); const c = i && !s && !r ? Ha(i, a) : Pt(0), u = o.left + a.scrollLeft - l.x - c.x, h = o.top + a.scrollTop - l.y - c.y; @@ -6671,11 +6671,11 @@ function wu(n, t) { left: c, top: u, width: h, - height: p + height: f } = n.getBoundingClientRect(); - if (a || t(), !h || !p) + if (a || t(), !h || !f) return; - const d = yn(u), m = yn(i.clientWidth - (c + h)), _ = yn(i.clientHeight - (u + p)), v = yn(c), b = { + const d = yn(u), m = yn(i.clientWidth - (c + h)), _ = yn(i.clientHeight - (u + f)), v = yn(c), b = { rootMargin: -d + "px " + -m + "px " + -_ + "px " + -v + "px", threshold: gt(0, Jt(1, l)) || 1 }; @@ -6719,10 +6719,10 @@ function ja(n, t, e, s) { }), r && y.addEventListener("resize", e); }); const h = c && a ? wu(c, e) : null; - let p = -1, d = null; + let f = -1, d = null; o && (d = new ResizeObserver((y) => { let [b] = y; - b && b.target === c && d && (d.unobserve(t), cancelAnimationFrame(p), p = requestAnimationFrame(() => { + b && b.target === c && d && (d.unobserve(t), cancelAnimationFrame(f), f = requestAnimationFrame(() => { var w; (w = d) == null || w.observe(t); })), e(); @@ -6756,12 +6756,12 @@ const sr = nu, ir = su, rr = tu, Ba = iu, Cu = Qh, or = (n, t, e) => { class Va extends W { constructor(t) { super(t), this._ref = G(), this._handleDocClick = (e) => { - const { state: { open: s }, id: i, togglePop: r } = this.props, o = f(e.target); + const { state: { open: s }, id: i, togglePop: r } = this.props, o = p(e.target); s !== "closing" && !o.closest(`#pick-${i},#pick-pop-${i}`).length && o.parent().length && r(!1); }, this._handleClick = this._handleClick.bind(this); } get trigger() { - return f(`#pick-${this.props.id}`)[0]; + return p(`#pick-${this.props.id}`)[0]; } get element() { var t; @@ -6771,7 +6771,7 @@ class Va extends W { return this._container; } _handleClick(t) { - const { togglePop: e, onClickItem: s, state: i } = this.props, r = f(t.target), o = r.closest("[data-pick-value]"); + const { togglePop: e, onClickItem: s, state: i } = this.props, r = p(t.target), o = r.closest("[data-pick-value]"); if (s && s(t, i.value), o.length) return t.stopPropagation(), e(!1, { value: `${o.dataset("pickValue")}` }); if (r.closest('[data-dismiss="pick"]').length) @@ -6795,7 +6795,7 @@ class Va extends W { maxWidth: r, minHeight: o, minWidth: a - } = t, l = f.extend({ + } = t, l = p.extend({ maxHeight: i, maxWidth: r, minHeight: o, @@ -6811,9 +6811,9 @@ class Va extends W { } _getContainer(t) { if (!this._container) { - const e = f(t.container || "body"); + const e = p(t.container || "body"); let s = e.find(".pick-container"); - s.length || (s = f("
    ").addClass("pick-container").appendTo(e)), this._container = s[0]; + s.length || (s = p("
    ").addClass("pick-container").appendTo(e)), this._container = s[0]; } return this._container; } @@ -6856,19 +6856,19 @@ class Va extends W { }).then(({ x: a, y: l, placement: c }) => { var u, h; if (ne(e) || !as(e)) { - f(t).css({ display: "none" }); + p(t).css({ display: "none" }); return; } - f(t).css(this._getStyle({ + p(t).css(this._getStyle({ left: a, top: l }, c)), (h = (u = this.props).onLayout) == null || h.call(u, t); - }), o === "100%" && f(t).css(this._getStyle()); + }), o === "100%" && p(t).css(this._getStyle()); })); } componentDidMount() { var t, e; - this.layout(), f(document).on("click", this._handleDocClick), (e = (t = this.props).afterRender) == null || e.call(t, { firstRender: !0 }); + this.layout(), p(document).on("click", this._handleDocClick), (e = (t = this.props).afterRender) == null || e.call(t, { firstRender: !0 }); } componentDidUpdate() { var t, e; @@ -6876,9 +6876,9 @@ class Va extends W { } componentWillUnmount() { var e, s; - f(document).off("click", this._handleDocClick); + p(document).off("click", this._handleDocClick); const t = this._layoutWatcher; - t && (t(), this._layoutWatcher = void 0), this._container = void 0, this._ref = void 0, f(`#pick-pop-${this.props.id}`).remove(), (s = (e = this.props).beforeDestroy) == null || s.call(e); + t && (t(), this._layoutWatcher = void 0), this._container = void 0, this._ref = void 0, p(`#pick-pop-${this.props.id}`).remove(), (s = (e = this.props).beforeDestroy) == null || s.call(e); } render(t) { return xh(this._render(t), this._getContainer(t)); @@ -7078,8 +7078,8 @@ let Ua = class extends St { } syncColor() { const { syncBackground: t, syncBorder: e, syncColor: s, syncValue: i } = this.props, r = this.state.value || ""; - if (t && f(t).css("backgroundColor", r), e && f(e).css("borderColor", r), s && f(s).css("color", r), i) { - const o = f(i); + if (t && p(t).css("backgroundColor", r), e && p(e).css("borderColor", r), s && p(s).css("color", r), i) { + const o = p(i); o.is("input,textarea,select") ? o.val(r) : o.text(r); } } @@ -7094,7 +7094,7 @@ let Ua = class extends St { } _getTriggerProps(t, e) { const s = super._getTriggerProps(t, e); - return s.style = f.extend({ + return s.style = p.extend({ color: e.value }, s.style), s.className = k("color-picker", s.className, { disabled: t.disabled }), s; } @@ -7135,7 +7135,7 @@ class qa extends W { } componentDidMount() { setTimeout(() => { - f(this._ref.current).find(".menu-item>.active").scrollIntoView({ container: ".menu" }); + p(this._ref.current).find(".menu-item>.active").scrollIntoView({ container: ".menu" }); }, 100); } render(t) { @@ -7195,8 +7195,8 @@ let Ga = class extends St { if (typeof t == "string") s = t; else { - const [c, u] = (this.state.value || "00:00").split(":"), { hour: h = +c, minute: p = +u } = t; - s = `${h}:${p}`; + const [c, u] = (this.state.value || "00:00").split(":"), { hour: h = +c, minute: f = +u } = t; + s = `${h}:${f}`; } const i = ro(s), { onInvalid: r, required: o, defaultValue: a, format: l } = this.props; return this.changeState({ value: i ? Tt(i, l) : o ? a : "" }, () => { @@ -7289,7 +7289,7 @@ class ku extends W { const { onClickDate: e } = this.props; if (!e) return; - const s = f(t.target).closest(".mini-calendar-day").dataset("date"); + const s = p(t.target).closest(".mini-calendar-day").dataset("date"); s && e(s); }; } @@ -7305,7 +7305,7 @@ class ku extends W { selections: c = [], maxDate: u, minDate: h, - isAllowDate: p + isAllowDate: f } = t, d = [], m = "btn ghost square rounded-full"; for (let P = 0; P < 7; P++) { const H = (s + P) % 7; @@ -7318,7 +7318,7 @@ class ku extends W { const P = []; for (let H = 0; H < 7; H++) { const R = new Date(w); - let F = (p == null ? void 0 : p(R)) ?? !0; + let F = (f == null ? void 0 : f(R)) ?? !0; typeof F == "boolean" && (F = { allow: F }); const U = R.getDate(), B = Tt(R, S), M = R.getDay(), ct = ra(R, y), $s = k("col mini-calendar-day", { active: $.has(B), @@ -7351,7 +7351,7 @@ class ao extends W { const { onChange: s } = this.props; if (!s) return; - const r = f(e.target).closest("[data-value]").dataset("value"); + const r = p(e.target).closest("[data-value]").dataset("value"); r && (s(+r), e.stopPropagation()); }); } @@ -7376,7 +7376,7 @@ class Tu extends W { dt(this, on, void 0); dt(this, an, void 0); bt(this, en, G()), bt(this, nn, (r) => { - const o = f(r.target).closest("[data-set-date]"); + const o = p(r.target).closest("[data-set-date]"); o.length && this.changeDate(o.dataset("set-date")); }), bt(this, sn, () => { const { year: r, month: o } = this.state; @@ -7412,7 +7412,7 @@ class Tu extends W { maxDate: c, weekStart: u } = e, h = Ke(i), { - year: p, + year: f, month: d, select: m } = s, _ = m === "day", v = l || K("1970-1-1"), y = c || K("2099-12-31"); @@ -7420,7 +7420,7 @@ class Tu extends W { Es(this, Zn, Ya).call(this, e), /* @__PURE__ */ g("div", { className: "cell", style: "width: 312px", children: [ /* @__PURE__ */ g("div", { className: "row p-2", children: [ - /* @__PURE__ */ g(Z, { type: m === "year" ? "primary-pale" : "ghost", size: "sm", caret: !0, onClick: this._showSelect.bind(this, "year"), children: V(r, p) }), + /* @__PURE__ */ g(Z, { type: m === "year" ? "primary-pale" : "ghost", size: "sm", caret: !0, onClick: this._showSelect.bind(this, "year"), children: V(r, f) }), /* @__PURE__ */ g(Z, { type: m === "month" ? "primary-pale" : "ghost", size: "sm", caret: !0, onClick: this._showSelect.bind(this, "month"), children: a ? a[d - 1] : d }), /* @__PURE__ */ g("div", { className: "flex-auto" }), _ ? /* @__PURE__ */ g("div", { children: [ @@ -7436,7 +7436,7 @@ class Tu extends W { monthNames: a, maxDate: y, minDate: v, - year: p, + year: f, month: d, selections: h || [], onClickDate: this.changeDate, @@ -7447,7 +7447,7 @@ class Tu extends W { ao, { className: "date-pick-menu-years overflow-y-auto scrollbar-hover scrollbar-thin", - value: p, + value: f, min: v.getFullYear(), max: y.getFullYear(), onChange: ht(this, on) @@ -7541,8 +7541,8 @@ let ws = class extends St { } _renderTrigger(t, e) { const { placeholder: s, icon: i, required: r, disabled: o, readonly: a, display: l } = t, { value: c = "", open: u } = e, h = `date-picker-${this.id}`; - let p; - u && !r && c.length ? p = /* @__PURE__ */ g("button", { type: "button", className: "btn size-sm square ghost", onClick: this._handleClearBtnClick, children: /* @__PURE__ */ g("span", { className: "close" }) }) : i && (i === !0 ? p = /* @__PURE__ */ g("i", { class: "i-calendar" }) : p = /* @__PURE__ */ g(nt, { icon: i })); + let f; + u && !r && c.length ? f = /* @__PURE__ */ g("button", { type: "button", className: "btn size-sm square ghost", onClick: this._handleClearBtnClick, children: /* @__PURE__ */ g("span", { className: "close" }) }) : i && (i === !0 ? f = /* @__PURE__ */ g("i", { class: "i-calendar" }) : f = /* @__PURE__ */ g(nt, { icon: i })); const d = u ? c : l ? l(c, this._date) : c; return [ /* @__PURE__ */ g( @@ -7561,7 +7561,7 @@ let ws = class extends St { }, "input" ), - p ? /* @__PURE__ */ g("label", { for: h, className: "input-control-suffix", children: p }, "icon") : null + f ? /* @__PURE__ */ g("label", { for: h, className: "input-control-suffix", children: f }, "icon") : null ]; } _getTriggerProps(t, e) { @@ -7584,7 +7584,7 @@ let ws = class extends St { return e === !0 || typeof e == "object" && e && e.allow; } _renderPop(t, e) { - const { weekNames: s, monthNames: i, weekStart: r, yearText: o, todayText: a, clearText: l, menu: c, actions: u, required: h, isAllowDate: p } = t, [d, m] = this._getDateRange(e.value); + const { weekNames: s, monthNames: i, weekStart: r, yearText: o, todayText: a, clearText: l, menu: c, actions: u, required: h, isAllowDate: f } = t, [d, m] = this._getDateRange(e.value); return /* @__PURE__ */ g( Tu, { @@ -7600,7 +7600,7 @@ let ws = class extends St { actions: u, minDate: d, maxDate: m, - isAllowDate: p ? this._isAllowDate.bind(this) : void 0 + isAllowDate: f ? this._isAllowDate.bind(this) : void 0 } ); } @@ -7710,20 +7710,20 @@ const lo = "show", Hs = "in", $u = '[data-dismiss="modal"]', vn = "modal-hide", const { modalElement: e } = this; if (!e.parentNode) return this.destroy(); - t.target.closest(".modal") === e && !ie.getAll().some((s) => s.shown) && f("html").enableScroll(); + t.target.closest(".modal") === e && !ie.getAll().some((s) => s.shown) && p("html").enableScroll(); }), this.on("show", (t) => { const { modalElement: e } = this; if (!e.parentNode) return this.destroy(); - t.target.closest(".modal") === e && f("html").disableScroll(); - }), this.shown && f("html").disableScroll(); + t.target.closest(".modal") === e && p("html").disableScroll(); + }), this.shown && p("html").disableScroll(); } destroy() { super.destroy(), this._rob && (this._rob.disconnect(), this._rob = void 0); } show(t) { var c; - const { modalElement: e } = this, s = f(e); + const { modalElement: e } = this, s = p(e); if (this._shown && s.hasClass(Hs)) return s.removeClass(vn).css("z-index", `${ie.zIndex++}`), !1; this._shown = !0, this.setOptions(t); @@ -7749,19 +7749,19 @@ const lo = "show", Hs = "in", $u = '[data-dismiss="modal"]', vn = "modal-hide", }, 50), !0; } hideForOther() { - f(this.modalElement).addClass(vn); + p(this.modalElement).addClass(vn); } hide() { var e; if (!this._shown) return !1; - this._shown = !1, f(this.modalElement).removeClass(Hs), (e = this.options.onHide) == null || e.call(this), this.emit("hide"), this._setTimer(() => { + this._shown = !1, p(this.modalElement).removeClass(Hs), (e = this.options.onHide) == null || e.call(this), this.emit("hide"), this._setTimer(() => { var s; - f(this.modalElement).removeClass(lo), (s = this.options.onHidden) == null || s.call(this), this.emit("hidden"); + p(this.modalElement).removeClass(lo), (s = this.options.onHidden) == null || s.call(this), this.emit("hidden"); }); const t = this.constructor; return t.hideOthers && this.options.hideOthers !== !1 && t.getAll().forEach((s) => { - s.shown && s !== this && f(s.modalElement).removeClass(vn); + s.shown && s !== this && p(s.modalElement).removeClass(vn); }), !0; } layout(t, e) { @@ -7770,7 +7770,7 @@ const lo = "show", Hs = "in", $u = '[data-dismiss="modal"]', vn = "modal-hide", const { dialog: s } = this; if (!s) return; - const i = f(s); + const i = p(s); if (e = e ?? this.options.size, e) { i.removeAttr("data-size"); const u = { width: "", height: "" }; @@ -7785,7 +7785,7 @@ const lo = "show", Hs = "in", $u = '[data-dismiss="modal"]', vn = "modal-hide", right: null }; let l = null, c = "center"; - typeof t == "number" ? (c = "flex-start", l = t) : typeof t == "object" && t ? (Object.assign(a, t), l = a.top ?? l, c = a.alignSelf ?? "flex-start") : t === "fit" ? (c = "flex-start", l = `${Math.max(0, Math.floor((window.innerHeight - o) / 3))}px`) : t === "bottom" ? c = "flex-end" : t === "top" ? c = "flex-start" : t !== "center" && typeof t == "string" && (c = "flex-start", l = t), a.top = l, a.alignSelf = c, i.css(a), f(this.modalElement).css("justifyContent", a.left ? "flex-start" : "center"); + typeof t == "number" ? (c = "flex-start", l = t) : typeof t == "object" && t ? (Object.assign(a, t), l = a.top ?? l, c = a.alignSelf ?? "flex-start") : t === "fit" ? (c = "flex-start", l = `${Math.max(0, Math.floor((window.innerHeight - o) / 3))}px`) : t === "bottom" ? c = "flex-end" : t === "top" ? c = "flex-start" : t !== "center" && typeof t == "string" && (c = "flex-start", l = t), a.top = l, a.alignSelf = c, i.css(a), p(this.modalElement).css("justifyContent", a.left ? "flex-start" : "center"); } _setTimer(t, e) { this._timer && (clearTimeout(this._timer), this._timer = 0), t && (this.options.animation ? this._timer = window.setTimeout(t, e ?? this.options.transTime) : t()); @@ -7816,7 +7816,7 @@ Oe.DEFAULT = { Oe.hideOthers = !0; Oe.zIndex = 1500; let Qe = Oe; -f(window).on(`resize.${Qe.NAMESPACE}`, () => { +p(window).on(`resize.${Qe.NAMESPACE}`, () => { Qe.getAll().forEach((n) => { const t = n; t.shown && t.options.responsive && t.layout(); @@ -7828,7 +7828,7 @@ class Xa extends W { } componentDidMount() { const { waitShowEvent: t, afterRender: e } = this.props; - e == null || e.call(this, { firstRender: !0 }), t && f(this._ref.current).on(t, () => { + e == null || e.call(this, { firstRender: !0 }), t && p(this._ref.current).on(t, () => { this.setState({ showed: !0 }); }); } @@ -7901,7 +7901,7 @@ class Qa extends W { if (!t) return; const { iframeBodyClass: e, watchHeight: s } = this.props; - s && this._watchIframeHeight(), e && t.body.classList.add(e), f(this._ref.current).trigger("modal-iframe-loaded"); + s && this._watchIframeHeight(), e && t.body.classList.add(e), p(this._ref.current).trigger("modal-iframe-loaded"); }; } get iframeDoc() { @@ -7958,7 +7958,7 @@ function Nu(n, t) { }; } async function Eu(n, t) { - const { dataType: e = "html", url: s, request: i, custom: r, title: o, replace: a = !0, executeScript: l = !0 } = t, c = await f.ajax({ + const { dataType: e = "html", url: s, request: i, custom: r, title: o, replace: a = !0, executeScript: l = !0 } = t, c = await p.ajax({ url: s, headers: { "X-ZUI-Modal": "true" @@ -8017,10 +8017,10 @@ const Mu = { s || (s = e.id || `modal-${ut()}`, ye(this, We, s)); const { $element: i } = this; if (t = i.find(`#${s}`)[0], t) - f(t).data(this.constructor.KEY, this); + p(t).data(this.constructor.KEY, this); else { const r = this.key; - t = f("
    ").attr({ + t = p("
    ").attr({ id: s, "data-key": r }).data(this.constructor.KEY, this).css(e.style || {}).setClass("modal modal-async load-indicator", e.className).appendTo(i)[0]; @@ -8031,11 +8031,11 @@ const Mu = { } get $emitter() { const t = xt(this, zt); - return t ? f(t) : this.$element; + return t ? p(t) : this.$element; } afterInit() { super.afterInit(), this.options.destroyOnHide && this.options.type !== "static" && this.on("hidden", (t) => { - f(t.target).data("key") === this.key && this.destroy(); + p(t.target).data("key") === this.key && this.destroy(); }); } show(t) { @@ -8044,7 +8044,7 @@ const Mu = { destroy() { super.destroy(); const t = xt(this, zt); - t && (f(t).removeData(this.constructor.KEY).remove(), ye(this, zt, void 0)); + t && (p(t).removeData(this.constructor.KEY).remove(), ye(this, zt, void 0)); } render(t) { return super.render(t), this.buildDialog(); @@ -8053,7 +8053,7 @@ const Mu = { if (this.loading) return !1; xt(this, Ot) && clearTimeout(xt(this, Ot)); - const { modalElement: t, options: e } = this, s = f(t), { type: i, loadTimeout: r, loadingClass: o = co, loadingText: a = null } = e; + const { modalElement: t, options: e } = this, s = p(t), { type: i, loadTimeout: r, loadingClass: o = co, loadingText: a = null } = e; if (!i || i === "static") return !0; const l = Mu[i]; @@ -8066,7 +8066,7 @@ const Mu = { return this._destroyed ? !1 : (c === !1 ? await Sn(this, xn, ai).call(this, this.options.failedTip) : c && typeof c == "object" && await Sn(this, Wn, ur).call(this, c), xt(this, Ot) && (clearTimeout(xt(this, Ot)), ye(this, Ot, 0)), this.layout(), await Mn(100), s.removeClass(o), !0); } static isValid(t) { - return !f.isDetached(t.modalElement); + return !p.isDetached(t.modalElement); } static open(t) { return new Promise((e) => { @@ -8083,11 +8083,11 @@ const Mu = { static async alert(t) { typeof t == "string" && (t = { message: t }); const { type: e, message: s, icon: i, iconClass: r = "icon-lg muted", actions: o = "confirm", onClickAction: a, custom: l, key: c = "__alert", ...u } = t, h = (typeof l == "function" ? l() : l) || {}; - let p = typeof s == "object" && s.html ? /* @__PURE__ */ g("div", { dangerouslySetInnerHTML: { __html: s.html } }) : /* @__PURE__ */ g("div", { children: s }); - i ? p = /* @__PURE__ */ g("div", { className: k("modal-body row gap-4 items-center", h.bodyClass), children: [ + let f = typeof s == "object" && s.html ? /* @__PURE__ */ g("div", { dangerouslySetInnerHTML: { __html: s.html } }) : /* @__PURE__ */ g("div", { children: s }); + i ? f = /* @__PURE__ */ g("div", { className: k("modal-body row gap-4 items-center", h.bodyClass), children: [ /* @__PURE__ */ g("div", { className: `icon ${i} ${r}` }), - p - ] }) : p = /* @__PURE__ */ g("div", { className: k("modal-body", h.bodyClass), children: p }); + f + ] }) : f = /* @__PURE__ */ g("div", { className: k("modal-body", h.bodyClass), children: f }); const d = []; (Array.isArray(o) ? o : [o]).forEach((v) => { v = { @@ -8110,7 +8110,7 @@ const Mu = { type: "custom", size: 400, className: "modal-alert", - content: p, + content: f, modal: !0, backdrop: "static", hideOthers: !1, @@ -8132,7 +8132,7 @@ const Mu = { static async prompt(t) { typeof t == "string" && (t = { message: t }); const { defaultValue: e = "", placeholder: s, onResult: i, onShown: r, message: o, content: a, bodyClass: l, custom: c, ...u } = t; - let h = e, p = !1; + let h = e, f = !1; const d = G(); return await re.confirm({ ...u, @@ -8145,11 +8145,11 @@ const Mu = { h = _.target.value; }, onKeyDown: (_) => { var v, y; - _.key === "Enter" ? (p = !0, _.preventDefault(), (v = d.current) == null || v.hide()) : _.key === "Escape" && ((y = d.current) == null || y.hide()); + _.key === "Enter" ? (f = !0, _.preventDefault(), (v = d.current) == null || v.hide()) : _.key === "Escape" && ((y = d.current) == null || y.hide()); } }), a ] }) - }) || p ? h : null; + }) || f ? h : null; } }; zt = /* @__PURE__ */ new WeakMap(); @@ -8159,7 +8159,7 @@ Wn = /* @__PURE__ */ new WeakSet(); ur = function(n) { return new Promise((t) => { if (Array.isArray(n)) - return f(this.modalElement).html(n[0]).zuiInit(), this.layout(), this._observeResize(), t(); + return p(this.modalElement).html(n[0]).zuiInit(), this.layout(), this._observeResize(), t(); const { afterRender: e, ...s } = n; n = { afterRender: (i) => { @@ -8312,7 +8312,7 @@ let Qt = class extends Q { }, this._handleClick = (e) => { if (this.props.disabled) return; - const i = f(e.target).closest("[data-remove-file],[data-rename-file]"); + const i = p(e.target).closest("[data-remove-file],[data-rename-file]"); if (!i.length) return; const r = i.data(); @@ -8415,7 +8415,7 @@ let Qt = class extends Q { } startRenameFile(t) { this.setState({ renaming: t, newName: void 0 }, () => { - const e = f(this._file.current).closest(".file-selector").find(".file-selector-rename-input")[0]; + const e = p(this._file.current).closest(".file-selector").find(".file-selector-rename-input")[0]; e && (e.select(), e.focus()); }); } @@ -8459,7 +8459,7 @@ let Qt = class extends Q { } _syncFiles(t = !1) { const e = this._data.files, s = this._file.current; - s.files = e, t && f(s).trigger("change", { files: e }); + s.files = e, t && p(s).trigger("change", { files: e }); } _showAlert(t, e) { return typeof t == "string" && (t = { message: t }), typeof t.message == "string" && (t.message = V(t.message, { ...this.info, ...e })), jn.alert(t); @@ -8741,13 +8741,13 @@ function Du({ if (!s.pageTotal) return; const o = { ...r, square: !0 }, a = () => (o.text = "", o.icon = "icon-ellipsis-h", o.disabled = !0, /* @__PURE__ */ g(Z, { type: t, ...o })), l = (u, h) => { - const p = []; + const f = []; for (let d = u; d <= h; d++) { o.text = d, delete o.icon, o.disabled = !1; const m = tn(s, d); - i && (o.url = typeof i == "function" ? i(m) : V(i, m)), p.push(/* @__PURE__ */ g(Z, { type: t, ...o })); + i && (o.url = typeof i == "function" ? i(m) : V(i, m)), f.push(/* @__PURE__ */ g(Z, { type: t, ...o })); } - return p; + return f; }; let c = []; return c = [...l(1, 1)], s.pageTotal <= 1 || (s.pageTotal <= e ? c = [...c, ...l(2, s.pageTotal)] : s.page < e - 2 ? c = [...c, ...l(2, e - 2), a(), ...l(s.pageTotal, s.pageTotal)] : s.page > s.pageTotal - e + 3 ? c = [...c, a(), ...l(s.pageTotal - e + 3, s.pageTotal)] : c = [...c, a(), ...l(s.page - Math.ceil((e - 4) / 2), s.page + Math.floor((e - 4) / 2)), a(), ...l(s.pageTotal, s.pageTotal)]), c; @@ -8765,14 +8765,14 @@ let Lu = class extends W { arrow: c, headingClass: u, titleClass: h, - contentClass: p, + contentClass: f, arrowStyle: d, onlyInner: m, footer: _, footerClass: v } = t; let y = /* @__PURE__ */ g(L, { content: r }, "content"); - (p || i) && (y = /* @__PURE__ */ g("div", { className: p, children: y }, "content")); + (f || i) && (y = /* @__PURE__ */ g("div", { className: f, children: y }, "content")); let b = /* @__PURE__ */ g(L, { content: _ }, "footer"); (v || i) && (b = /* @__PURE__ */ g("div", { className: v, children: b }, "footer")); const w = [], C = l ? /* @__PURE__ */ g("button", { className: "btn ghost square size-sm btn-close", "data-dismiss": "popover", children: /* @__PURE__ */ g("span", { className: "close" }) }) : null; @@ -8822,12 +8822,12 @@ const ho = "show", uo = "in", He = class ol extends vt { this._triggerEvent = s, this._id = e || `popover_${this.gid}`; const i = this.getTriggerElement(); if (i instanceof HTMLElement) { - const o = f(i), { namespace: a } = this; + const o = p(i), { namespace: a } = this; if (t) { const l = () => { let c = o.dataset(); const u = o.attr(`zui-toggle-${this.constructor.ZUI}`); - u && (c = f.extend(c, ke(u))), this.setOptions(c); + u && (c = p.extend(c, ke(u))), this.setOptions(c); }; t === "hover" ? o.on(`pointerenter${a}`, (c) => { o.is("[disabled],.disabled") || (l(), this.show({ delay: !0, event: c })); @@ -8852,7 +8852,7 @@ const ho = "show", uo = "in", He = class ol extends vt { } initTarget() { let t = this.options.target; - return this._dynamic = !t, t ? (typeof t == "function" && (t = t()), typeof t == "string" && (t === "$next" ? t = f(this._triggerElement).next() : t.startsWith("$target:") && (t = f(this._triggerElement).closest(t.slice(8)))), f(t)[0]) : this._createTarget(); + return this._dynamic = !t, t ? (typeof t == "function" && (t = t()), typeof t == "string" && (t === "$next" ? t = p(this._triggerElement).next() : t.startsWith("$target:") && (t = p(this._triggerElement).closest(t.slice(8)))), p(t)[0]) : this._createTarget(); } show(t) { const { delay: e, event: s, hideOthers: i = this.options.hideOthers } = t || {}; @@ -8870,8 +8870,8 @@ const ho = "show", uo = "in", He = class ol extends vt { if (!r) return; this._targetElement = r; - const o = f(r), { animation: a, onShow: l, onShown: c, trigger: u, elementShowClass: h } = this.options, { SHOWN_POPOVERS: p } = this.constructor; - o.addClass(ho), a && o.addClass(a === !0 ? "fade" : a), this._zIndex = ol.Z_INDEX++, this._shown = !0, this.render(), p.set(this.gid, this), l == null || l.call(this), this.emit("show"), i && p.forEach((m) => { + const o = p(r), { animation: a, onShow: l, onShown: c, trigger: u, elementShowClass: h } = this.options, { SHOWN_POPOVERS: f } = this.constructor; + o.addClass(ho), a && o.addClass(a === !0 ? "fade" : a), this._zIndex = ol.Z_INDEX++, this._shown = !0, this.render(), f.set(this.gid, this), l == null || l.call(this), this.emit("show"), i && f.forEach((m) => { m !== this && m.hide(); }); const { namespace: d } = this; @@ -8879,7 +8879,7 @@ const ho = "show", uo = "in", He = class ol extends vt { this._clearDelayHide(); }).on(`pointerleave${d}`, () => { this.delayHide(); - })), this._virtual || (o.attr("zui-commands-proxy", "").data("zui.commandProxy", this._triggerElement), h && f(this._triggerElement).addClass(h)), this._resetTimer(() => { + })), this._virtual || (o.attr("zui-commands-proxy", "").data("zui.commandProxy", this._triggerElement), h && p(this._triggerElement).addClass(h)), this._resetTimer(() => { o.addClass(uo), this._resetTimer(() => { c == null || c.call(this), this.emit("shown"); }, 200); @@ -8887,9 +8887,9 @@ const ho = "show", uo = "in", He = class ol extends vt { } hide(t) { (!this._shown || !this._targetElement) && this._resetTimer(); - const { destroyOnHide: e, animation: s, onHide: i, onHidden: r, trigger: o, hideNewOnHide: a, elementShowClass: l } = this.options, c = f(this._targetElement), { SHOWN_POPOVERS: u } = this.constructor; + const { destroyOnHide: e, animation: s, onHide: i, onHidden: r, trigger: o, hideNewOnHide: a, elementShowClass: l } = this.options, c = p(this._targetElement), { SHOWN_POPOVERS: u } = this.constructor; if (this._shown = !1, u.delete(this.gid), i == null || i.call(this), this.emit("hide"), c.removeClass(uo), o === "hover" && (this._clearDelayHide(), c.off(this.namespace)), !this._virtual) { - const h = f(this._triggerElement); + const h = p(this._triggerElement); h.removeAttr("zui-commands-proxy").removeData("zui.commandProxy"), l && h.removeClass(l).removeAttr("data-pop-placement"); } a && u.forEach((h) => { @@ -8906,7 +8906,7 @@ const ho = "show", uo = "in", He = class ol extends vt { destroy() { if (super.destroy(), !this._virtual) { const { namespace: t } = this; - f(this._triggerElement).off(t); + p(this._triggerElement).off(t); } this._resetTimer(), this._destoryTarget(), this._clearDelayHide(); } @@ -8921,27 +8921,27 @@ const ho = "show", uo = "in", He = class ol extends vt { return; const { animation: i, name: r = "popover", minWidth: o, minHeight: a, maxWidth: l, maxHeight: c, limitInScreen: u, onLayout: h } = this.options; if (!this._virtual) { - const p = { + const f = { minWidth: Gt(o), minHeight: Gt(a), maxWidth: Gt(l), maxHeight: Gt(c) }, { width: d, height: m } = this.options; - d && (p.width = typeof d == "function" ? d() : d === "100%" ? f(t).outerWidth() : d), m && (p.height = typeof m == "function" ? m() : m), Object.keys(p).length && f(e).css(p); + d && (f.width = typeof d == "function" ? d() : d === "100%" ? p(t).outerWidth() : d), m && (f.height = typeof m == "function" ? m() : m), Object.keys(f).length && p(e).css(f); } - or(...this._getLayoutOptions()).then(({ x: p, y: d, middlewareData: m, placement: _, strategy: v }) => { + or(...this._getLayoutOptions()).then(({ x: f, y: d, middlewareData: m, placement: _, strategy: v }) => { if (t instanceof HTMLElement && ne(t)) { this.hide(!0); return; } const y = { position: v, - left: p, + left: f, top: d - }, b = f(e).css(y); + }, b = p(e).css(y); u && b.css({ top: Math.max(0, Math.min(window.innerHeight - b.outerHeight(), d)), - left: Math.max(0, Math.min(window.innerWidth - b.outerWidth(), p)) + left: Math.max(0, Math.min(window.innerWidth - b.outerWidth(), f)) }); const w = _.split("-")[0], C = { top: "bottom", @@ -8952,12 +8952,12 @@ const ho = "show", uo = "in", He = class ol extends vt { S && b.attr("data-pop-placement", w).find(".arrow").css({ left: S.x, top: S.y - }).attr("class", `arrow ${r}-arrow arrow-${C}`), i === !0 && b.attr("class", `${b.attr("class").split(" ").filter(($) => $ !== "fade" && !$.startsWith("fade-from")).join(" ")} fade-from-${C}`), this._virtual || f(this._triggerElement).attr("data-pop-placement", w), h && h.call(this, { + }).attr("class", `arrow ${r}-arrow arrow-${C}`), i === !0 && b.attr("class", `${b.attr("class").split(" ").filter(($) => $ !== "fade" && !$.startsWith("fade-from")).join(" ")} fade-from-${C}`), this._virtual || p(this._triggerElement).attr("data-pop-placement", w), h && h.call(this, { target: e, trigger: t, popSide: w, arrowSide: C, - x: p, + x: f, y: d, placement: _, strategy: v @@ -8970,17 +8970,17 @@ const ho = "show", uo = "in", He = class ol extends vt { const e = this._targetElement; if (!e) return; - const s = this._getRenderOptions(), i = f(e); + const s = this._getRenderOptions(), i = p(e); if (i.z("popover", this.gid).toggleClass("popup", s.popup).css(s.style), s.className && i.setClass(s.className), this._dynamic) { let r = this._panel; r && r.element !== e && (r.destroy(), r = void 0), r ? r.render(s) : (r = new mr(e, s), r.on("inited", () => this.layout())), this._panel = r; } else - s.arrow && (i.find(".arrow").length || i.append(f('
    ').css(s.arrowStyle))), this.layout(); + s.arrow && (i.find(".arrow").length || i.append(p('
    ').css(s.arrowStyle))), this.layout(); } handleClickOutside(t) { if (this.options.mask) { const e = this._triggerElement; - e instanceof HTMLElement && f(t.target).closest(e).length || this.hide(); + e instanceof HTMLElement && p(t.target).closest(e).length || this.hide(); } } // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -8995,7 +8995,7 @@ const ho = "show", uo = "in", He = class ol extends vt { this._hideTimer && (clearTimeout(this._hideTimer), this._hideTimer = 0); } _getLayoutOptions() { - const t = this._triggerElement, e = this._targetElement, { placement: s, flip: i, limitSize: r, shift: o, offset: a, arrow: l, strategy: c } = this.options, u = l ? e.querySelector(".arrow") : null, h = u ? typeof l == "number" ? l : 5 : 0, p = () => typeof a == "function" ? a : typeof a == "object" ? { + const t = this._triggerElement, e = this._targetElement, { placement: s, flip: i, limitSize: r, shift: o, offset: a, arrow: l, strategy: c } = this.options, u = l ? e.querySelector(".arrow") : null, h = u ? typeof l == "number" ? l : 5 : 0, f = () => typeof a == "function" ? a : typeof a == "object" ? { mainAxis: (a.mainAxis || 0) + h, ...a } : (a || 0) + h; @@ -9005,11 +9005,11 @@ const ho = "show", uo = "in", He = class ol extends vt { middleware: [ i ? rr() : null, o ? ir(typeof o == "object" ? o : void 0) : null, - a || h ? sr(p()) : null, + a || h ? sr(f()) : null, l ? Cu({ element: u }) : null, r ? Ba({ apply({ availableWidth: d, availableHeight: m, placement: _ }) { - f(e).css({ maxHeight: m - (["top", "bottom"].includes(_.split("-")[0]) ? h : 0) - 2, maxWidth: d - 2 }); + p(e).css({ maxHeight: m - (["top", "bottom"].includes(_.split("-")[0]) ? h : 0) - 2, maxWidth: d - 2 }); } }) : null ].filter(Boolean) @@ -9027,7 +9027,7 @@ const ho = "show", uo = "in", He = class ol extends vt { className: c = t, closeBtn: u, arrow: h, - footer: p, + footer: f, footerClass: d = `${t}-footer` } = this.options; return { @@ -9043,7 +9043,7 @@ const ho = "show", uo = "in", He = class ol extends vt { arrow: h ? `arrow ${t}-arrow` : !1, arrowStyle: { "--arrow-size": `${typeof h == "number" ? h : 5}px` }, onlyInner: !0, - footer: p, + footer: f, footerClass: d }; } @@ -9057,9 +9057,9 @@ const ho = "show", uo = "in", He = class ol extends vt { }, e)); } _createTarget() { - const { container: t = "body" } = this.options, e = f(t); + const { container: t = "body" } = this.options, e = p(t); let s = e.find(`#${this._id}`); - return s.length || (s = f("
    ").attr({ id: this._id, class: "popover" }).appendTo(e)), s[0]; + return s.length || (s = p("
    ").attr({ id: this._id, class: "popover" }).appendTo(e)), s[0]; } static show(t) { const { element: e, event: s, ...i } = t, r = e || (s == null ? void 0 : s.currentTarget); @@ -9090,7 +9090,7 @@ At.toggle = { trigger: ["click", "hover"], convertHref: { selector: "target" }, check(n, t) { - const e = f(n); + const e = p(n); return e.data(this.KEY) ? !1 : t === "hover" ? (e.dataset("trigger") || this.DEFAULT.trigger) === "hover" : !0; }, getOptions(n, t, e) { @@ -9104,12 +9104,12 @@ At.toggle = { } }; At.register(); -f(() => { - f(document).on(`click.${At.NAMESPACE}`, (n) => { +p(() => { + p(document).on(`click.${At.NAMESPACE}`, (n) => { const { SHOWN_POPOVERS: t } = At; if (!t.size) return; - const e = f(n.target), s = e.closest("[z-popover]"), i = s.length ? s.z("popover") : 0, r = i ? t.get(i) : null; + const e = p(n.target), s = e.closest("[z-popover]"), i = s.length ? s.z("popover") : 0, r = i ? t.get(i) : null; if (r) { const a = r.options.name ?? r.constructor.ZUI; if (e.closest(`[data-dismiss="popover"],[data-dismiss="${a}"]`).length) { @@ -9128,7 +9128,7 @@ f(() => { Object.assign(window, { Popover: At }); class ce extends At { handleClickTarget(t) { - const e = f(t.target), { notHideOnClick: s } = this.options; + const e = p(t.target), { notHideOnClick: s } = this.options; return (!s || !e.closest(s).length) && this.hide(), !0; } _getMenuOptions() { @@ -9170,7 +9170,7 @@ ce.DEFAULT = { ce.toggle = { ...At.toggle, getOptions(n, t, e) { - return t = At.toggle.getOptions.call(this, n, t, e), !t.target && !t.items && !t.menu && (t.target = f(n).next(".dropdown-menu")), t; + return t = At.toggle.getOptions.call(this, n, t, e), !t.target && !t.items && !t.menu && (t.target = p(n).next(".dropdown-menu")), t; } }; ce.register(); @@ -9187,7 +9187,7 @@ class fn extends Z { onClickItem: i, menu: e, relativeTarget: r, - ...f(this.triggerElement).dataset(), + ...p(this.triggerElement).dataset(), ...t }; o ? o.setOptions(a) : new ce(this.triggerElement, a); @@ -9234,32 +9234,38 @@ class Cs extends Ct { return this.props.dropdown; } layout() { - var a; + var u; if (this.props.tree || this.isRoot) return; - const t = (a = this.element) == null ? void 0 : a.parentElement, e = f(t); + const t = (u = this.element) == null ? void 0 : u.parentElement, e = p(t); t && this._searchFocused && this._position && e.css(this._position); const r = e.parent().children(".dropdown-menu").children(`[z-key-path="${this.props.parentKey}"]`)[0]; if (!t || !r) return; let { maxHeight: o } = this.props; + const { flip: a, shift: l, offset: c } = this.props; or(r, t, { placement: this.props.placement, - middleware: [rr(), ir(), sr(1), Ba({ - apply({ availableWidth: l, availableHeight: c }) { - if (o) { - const [u, h] = Hi(o); - o = Math.min(h === "%" ? u * window.innerHeight : u, c - 2); - } else - o = c; - e.css({ maxHeight: o, maxWidth: l - 2 }); - } - })] - }).then(({ x: l, y: c }) => { + middleware: [ + a ? rr() : null, + l ? ir(typeof l == "object" ? l : void 0) : null, + sr(c), + Ba({ + apply({ availableWidth: h, availableHeight: f }) { + if (o) { + const [d, m] = Hi(o); + o = Math.min(m === "%" ? d * window.innerHeight : d, f - 2); + } else + o = f; + e.css({ maxHeight: o, maxWidth: h - 2 }); + } + }) + ] + }).then(({ x: h, y: f }) => { e.css({ - left: l, - top: c - }), this._position = { left: l, top: c, width: t.offsetWidth, height: t.offsetHeight }; + left: h, + top: f + }), this._position = { left: h, top: f, width: t.offsetWidth, height: t.offsetHeight }; }); } _getClassName(t) { @@ -9280,7 +9286,7 @@ class Cs extends Ct { const e = super._getItemFromEvent(t); if (e) return e; - const s = f(t.target).closest(".dropdown-menu[z-key]"); + const s = p(t.target).closest(".dropdown-menu[z-key]"); if (s.length) { const i = s.attr("z-key"), r = s.parent().parent().children(".dropdown-menu").children(`[z-key="${i}"]`); if (r.length) @@ -9323,7 +9329,10 @@ Cs.defaultProps = { placement: "right-start", defaultNestedShow: !1, expandOnSearch: !1, - nestedSearch: !1 + nestedSearch: !1, + flip: !1, + shift: !0, + offset: 1 }; Cs.inheritNestedProps = [...Ct.inheritNestedProps, "container", "tree"]; const zu = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ @@ -9370,7 +9379,7 @@ function al({ }) { const u = { ...c }; let h; - const p = (_) => { + const f = (_) => { var v; h = Number((v = _.target) == null ? void 0 : v.value) || 1, h = h > i.pageTotal ? i.pageTotal : h; }, d = (_) => { @@ -9381,7 +9390,7 @@ function al({ a && !a({ info: v, event: _ }) || (_.target.href = u.url = typeof l == "function" ? l(v) : V(l, v)); }, m = tn(i, t || 0); return u.url = typeof l == "function" ? l(m) : V(l, m), /* @__PURE__ */ g("div", { className: k("input-group", "pager-goto-group", r ? `size-${r}` : ""), children: [ - /* @__PURE__ */ g("input", { type: "number", class: "form-control", max: i.pageTotal, min: "1", onInput: p }), + /* @__PURE__ */ g("input", { type: "number", class: "form-control", max: i.pageTotal, min: "1", onInput: f }), /* @__PURE__ */ g(Z, { type: s, ...u, onClick: d }) ] }); } @@ -9394,7 +9403,7 @@ const Ss = class li extends $t { const { onChangePageInfo: t } = this.props, e = this._changedPager.value; t && this._changeEvent && (t(e, this._changeEvent), this._changeEvent = void 0); }), this._handleClickLink = (t) => { - const e = f(t.currentTarget); + const e = p(t.currentTarget); if (e.is(".disabled")) return; const s = e.z("goToPage"); @@ -9436,7 +9445,7 @@ const Ss = class li extends $t { if (!i) return !1; const { type: r = "item" } = e, o = this._pagerInfo; - return r === "info" ? f.extend(i, { pagerInfo: o }) : (r === "link" || r === "size-menu" || r === "nav" || r === "goto") && f.extend(i, { pagerInfo: o, linkCreator: t.linkCreator }), r === "size-menu" && (i.menu = { + return r === "info" ? p.extend(i, { pagerInfo: o }) : (r === "link" || r === "size-menu" || r === "nav" || r === "goto") && p.extend(i, { pagerInfo: o, linkCreator: t.linkCreator }), r === "size-menu" && (i.menu = { onClickItem: this._handleClickSizeMenu, ...i.menu }), r === "link" && (i.onClick = this._handleClickLink), i; @@ -9497,7 +9506,7 @@ class vr extends W { }, this.state = { search: t.defaultSearch ?? "" }; } get $pop() { - return f(`#pick-pop-${this.props.id}`); + return p(`#pick-pop-${this.props.id}`); } focus() { var t; @@ -9537,7 +9546,7 @@ class vr extends W { } } }); - e && (this._hotkeysScope = `PickerSearch_${ut()}`, f(this._searchInput.current).hotkeys(e, { + e && (this._hotkeysScope = `PickerSearch_${ut()}`, p(this._searchInput.current).hotkeys(e, { scope: this._hotkeysScope, event: "keydown" })); @@ -9548,13 +9557,13 @@ class vr extends W { if (t) { const { current: e } = this._measure, { current: s } = this._searchInput; if (e && s) { - const i = f(s).parent(); + const i = p(s).parent(); i.width(Math.ceil(Math.min(e.clientWidth, i.closest(".picker").outerWidth() - 32))); } } } componentWillUnmount() { - clearTimeout(this._changeTimer), this._hotkeysScope && f(this._searchInput.current).unbindHotkeys(this._hotkeysScope); + clearTimeout(this._changeTimer), this._hotkeysScope && p(this._searchInput.current).unbindHotkeys(this._hotkeysScope); } render(t, e) { const { placeholder: s, inline: i } = t, { search: r } = e, o = r.trim().length > 0; @@ -9580,7 +9589,7 @@ class vr extends W { class cl extends Yi { constructor() { super(...arguments), this._search = G(), this._handleDeselectClick = (t) => { - const { onDeselect: e, state: { selections: s } } = this.props, i = f(t.target).closest(".picker-deselect-btn").attr("data-value"); + const { onDeselect: e, state: { selections: s } } = this.props, i = p(t.target).closest(".picker-deselect-btn").attr("data-value"); e && s.length && typeof i == "string" && e(i), t.stopPropagation(); }, this._handleSearch = (t) => { this.props.changeState({ search: t }); @@ -9623,13 +9632,13 @@ class cl extends Yi { } _renderTrigger(t) { const { state: { selections: e = [], open: s, value: i }, search: r, placeholder: o, display: a, valueList: l, children: c, caretClass: u } = this.props, h = s && r; - let p; + let f; const d = !h && !e.length; - return a && (!d || o === void 0) ? (typeof a == "function" ? p = a.call(this, l, e) : typeof a == "string" && (p = V(a, { value: i, values: l, count: l.length })), p = /* @__PURE__ */ g("div", { className: "picker-multi-selections", children: p }, "selections")) : d ? p = /* @__PURE__ */ g("span", { className: "picker-select-placeholder", children: o }, "selections") : p = /* @__PURE__ */ g("div", { className: "picker-multi-selections", children: [ + return a && (!d || o === void 0) ? (typeof a == "function" ? f = a.call(this, l, e) : typeof a == "string" && (f = V(a, { value: i, values: l, count: l.length })), f = /* @__PURE__ */ g("div", { className: "picker-multi-selections", children: f }, "selections")) : d ? f = /* @__PURE__ */ g("span", { className: "picker-select-placeholder", children: o }, "selections") : f = /* @__PURE__ */ g("div", { className: "picker-multi-selections", children: [ e.map(this._renderSelection), h ? this._renderSearch(t) : null ] }, "selections"), [ - p, + f, c, /* @__PURE__ */ g("span", { class: k("caret", u) }, "caret") ]; @@ -9638,7 +9647,7 @@ class cl extends Yi { const { name: e, state: { value: s = "" }, disabled: i, readonly: r, id: o, valueList: a, emptyValue: l } = t; if (e) if (this.hasInput) - f(`#${o}`).val(s); + p(`#${o}`).val(s); else { const c = a.length ? a : [l]; return /* @__PURE__ */ g("select", { id: o, multiple: !0, className: "pick-value", name: e.endsWith("[]") ? e : `${e}[]`, disabled: i, readonly: r, style: { display: "none" }, children: c.map((u) => /* @__PURE__ */ g("option", { value: u, children: u }, u)) }); @@ -9648,12 +9657,12 @@ class cl extends Yi { componentDidMount() { super.componentDidMount(); const { id: t, valueList: e, emptyValue: s } = this.props; - f(`#${t}`).val(e.length ? e : [s]); + p(`#${t}`).val(e.length ? e : [s]); } componentDidUpdate(t) { const { id: e, state: s, name: i, valueList: r, emptyValue: o } = this.props; if (i && t.state.value !== s.value) { - const a = f(`#${e}`).val(r.length ? r : [o]); + const a = p(`#${e}`).val(r.length ? r : [o]); this._skipTriggerChange !== s.value && a.trigger("change", Pa), this._skipTriggerChange = !1; } } @@ -9704,7 +9713,7 @@ class hl extends Yi { ); } _renderTrigger(t) { - const { children: e, state: { selections: s = [], value: i, open: r }, placeholder: o, search: a, disabled: l, readonly: c, clearable: u, display: h, caretClass: p } = t, [d] = s, m = r && a; + const { children: e, state: { selections: s = [], value: i, open: r }, placeholder: o, search: a, disabled: l, readonly: c, clearable: u, display: h, caretClass: f } = t, [d] = s, m = r && a; let _; if (m) _ = this._renderSearch(t); @@ -9713,7 +9722,7 @@ class hl extends Yi { typeof h == "function" ? _ = h.call(this, i, s) : typeof h == "string" ? _ = V(h, d) : _ = /* @__PURE__ */ g(L, { content: b }), _ = /* @__PURE__ */ g("span", { className: "picker-single-selection", title: typeof b == "string" ? b : void 0, children: _ }, "main"); } else _ = /* @__PURE__ */ g("span", { className: "picker-select-placeholder", children: o }, "main"); - const v = u && !m ? /* @__PURE__ */ g("button", { type: "button", className: "btn picker-deselect-btn size-xs square ghost", disabled: l, readonly: c, onClick: this._handleDeselectClick, children: /* @__PURE__ */ g("span", { className: "close" }) }, "deselect") : null, y = m ? null : /* @__PURE__ */ g("span", { className: k("caret flex-none", p) }, "caret"); + const v = u && !m ? /* @__PURE__ */ g("button", { type: "button", className: "btn picker-deselect-btn size-xs square ghost", disabled: l, readonly: c, onClick: this._handleDeselectClick, children: /* @__PURE__ */ g("span", { className: "close" }) }, "deselect") : null, y = m ? null : /* @__PURE__ */ g("span", { className: k("caret flex-none", f) }, "caret"); return [ _, e, @@ -9768,8 +9777,8 @@ class dl extends Va { return t; const s = new Set(this.props.valueList); let i = t.items, r = !1, o = !1; - Array.isArray(i) && (r = !0, i = i.reduce((u, h, p) => { - const d = this._getItem(h, p); + Array.isArray(i) && (r = !0, i = i.reduce((u, h, f) => { + const d = this._getItem(h, f); return d && (d.selected ? o = !0 : r = !1, u.push(d)), u; }, [])); const a = r || s.has(t.value); @@ -9793,8 +9802,8 @@ class dl extends Va { const { multiple: r, onToggleValue: o, onSelect: a, togglePop: l, onDeselect: c } = this.props; if (r) if (t.items) { - const h = [...ul(t.items).values()].filter((p) => !p.items && !this._disabledSet.has(p.value)).map((p) => p.value); - f(i).closest(".item").children(".item-inner.selected").length ? c(h) : a(h); + const h = [...ul(t.items).values()].filter((f) => !f.items && !this._disabledSet.has(f.value)).map((f) => f.value); + p(i).closest(".item").children(".item-inner.selected").length ? c(h) : a(h); } else o(s); else @@ -9809,7 +9818,7 @@ class dl extends Va { } componentDidMount() { var t, e; - super.componentDidMount(), this._firstSelected === void 0 ? (t = this.menu) == null || t.activeNext() : (e = this.menu) == null || e.toggleActive(this._firstSelected, !0), f(this.element).on("activeNext.zui.Picker", () => { + super.componentDidMount(), this._firstSelected === void 0 ? (t = this.menu) == null || t.activeNext() : (e = this.menu) == null || e.toggleActive(this._firstSelected, !0), p(this.element).on("activeNext.zui.Picker", () => { var s; (s = this.menu) == null || s.activeNext(); }).on("activePrev.zui.Picker", () => { @@ -9822,17 +9831,17 @@ class dl extends Va { const i = s.getActiveKey(); if (i !== void 0) { const r = s.getRenderedItem(i); - r && f(this.element).find(`.item[z-key-path="${r._keyPath}"]`).trigger("click"); + r && p(this.element).find(`.item[z-key-path="${r._keyPath}"]`).trigger("click"); } }).on("hidePop.zui.Picker", () => { this.props.togglePop(!1); }), setTimeout(() => { var s; - f((s = this.menu) == null ? void 0 : s.element).find(".menu-item>.active").scrollIntoView({ container: ".menu" }); + p((s = this.menu) == null ? void 0 : s.element).find(".menu-item>.active").scrollIntoView({ container: ".menu" }); }, 100); } componentWillUnmount() { - super.componentWillUnmount(), f(this.element).off(".zui.Picker"); + super.componentWillUnmount(), p(this.element).off(".zui.Picker"); } _getClass(t) { return k( @@ -9841,7 +9850,7 @@ class dl extends Va { ); } _getMenuProps(t) { - const { menu: e, tree: s, state: i, checkbox: r, header: o, footer: a, noMatchHint: l, maxItemsCount: c, exceedLimitHint: u } = t, { items: h, search: p } = i; + const { menu: e, tree: s, state: i, checkbox: r, header: o, footer: a, noMatchHint: l, maxItemsCount: c, exceedLimitHint: u } = t, { items: h, search: f } = i; return O({ ref: this._menu, className: "picker-menu-list", @@ -9850,7 +9859,7 @@ class dl extends Va { items: h, defaultNestedShow: !0, activeOnHover: !0, - search: p, + search: f, exceedLimitHint: u, onClickItem: this._handleItemClick, nestedToggle: ".nested-toggle-icon,.item-icon", @@ -10064,7 +10073,7 @@ let ks = class extends St { } formatValueList(t, e) { let s; - return typeof t == "string" && t.length ? s = t.split(e ?? this.props.valueSplitter ?? ",") : Array.isArray(t) ? s = t : s = [t], f.unique(s).reduce((i, r) => (r == null || (r = typeof r != "string" ? String(r) : r, this.isEmptyValue(r) || i.push(r)), i), []); + return typeof t == "string" && t.length ? s = t.split(e ?? this.props.valueSplitter ?? ",") : Array.isArray(t) ? s = t : s = [t], p.unique(s).reduce((i, r) => (r == null || (r = typeof r != "string" ? String(r) : r, this.isEmptyValue(r) || i.push(r)), i), []); } formatValue(t) { const e = this.formatValueList(t); @@ -10250,14 +10259,14 @@ class fo extends W { top: l, bottom: c, right: u - } = this.props, { maxScrollPos: h, scrollPos: p } = this, { dragStart: d } = this.state, m = { + } = this.props, { maxScrollPos: h, scrollPos: f } = this, { dragStart: d } = this.state, m = { left: a, top: l, bottom: c, right: u, ...o }, _ = {}; - return s === "horz" ? (m.height = i, m.width = e, _.width = this.barSize, _.left = Math.round(Math.min(h, p) * (e - _.width) / h)) : (m.width = i, m.height = e, _.height = this.barSize, _.top = Math.round(Math.min(h, p) * (e - _.height) / h)), /* @__PURE__ */ g( + return s === "horz" ? (m.height = i, m.width = e, _.width = this.barSize, _.left = Math.round(Math.min(h, f) * (e - _.width) / h)) : (m.width = i, m.height = e, _.height = this.barSize, _.top = Math.round(Math.min(h, f) * (e - _.height) / h)), /* @__PURE__ */ g( "div", { className: k("scrollbar", r, { @@ -10400,7 +10409,7 @@ function Vu(n, t, e, s) { list: [], flexList: [], widthSetting: c(a) - }, p = { + }, f = { ...u, list: [], flexList: [], @@ -10408,7 +10417,7 @@ function Vu(n, t, e, s) { }, d = { left: h, center: u, - right: p + right: f }, m = [], _ = {}; let v = !1; const y = [], b = {}; @@ -10453,11 +10462,11 @@ function Vu(n, t, e, s) { F.list.push(A), F.totalWidth += A.width, F.width = F.totalWidth, A.flex && F.flexList.push(A), typeof A.order == "number" && (v = !0); }), v) { const C = (S, $) => (S.order ?? S.index) - ($.order ?? $.index); - m.sort(C), h.list.sort(C), u.list.sort(C), p.list.sort(C); + m.sort(C), h.list.sort(C), u.list.sort(C), f.list.sort(C); } - Fs(p, !0); - const w = s - p.width - Math.max(40, r); - return Fs(h, !0, w), u.widthSetting = s - h.width - p.width, Fs(u), { + Fs(f, !0); + const w = s - f.width - Math.max(40, r); + return Fs(h, !0, w), u.widthSetting = s - h.width - f.width, Fs(u), { list: m, map: _, ...d @@ -10465,9 +10474,9 @@ function Vu(n, t, e, s) { } function Uu(n) { var B; - const { col: t, className: e, height: s, row: i, onRenderCell: r, style: o, outerStyle: a, children: l, outerClass: c, width: u, left: h, top: p, ...d } = n, m = { + const { col: t, className: e, height: s, row: i, onRenderCell: r, style: o, outerStyle: a, children: l, outerClass: c, width: u, left: h, top: f, ...d } = n, m = { left: h ?? t.left, - top: p ?? i.top, + top: f ?? i.top, width: u ?? t.realWidth, height: s, ...a @@ -10518,7 +10527,7 @@ function Ws({ className: c, CellComponent: u = Uu, cellClass: h, - onRenderCell: p + onRenderCell: f }) { var v; const d = Array.isArray(n) ? n : [n], m = ((v = d[0]) == null ? void 0 : v.top) ?? 0, _ = d.length; @@ -10546,7 +10555,7 @@ function Ws({ row: b, top: b.top - m, height: e, - onRenderCell: p + onRenderCell: f }, `${b.index}:${S.name}` ) @@ -10567,7 +10576,7 @@ function yl({ className: c, cellClass: u, style: h, - onRenderCell: p, + onRenderCell: f, children: d }) { let m = null; @@ -10581,7 +10590,7 @@ function yl({ width: i.width, rowHeight: e, cellClass: u, - onRenderCell: p + onRenderCell: f }, "left" )); @@ -10598,7 +10607,7 @@ function yl({ width: r.width, rowHeight: e, cellClass: u, - onRenderCell: p + onRenderCell: f }, "center" )); @@ -10614,7 +10623,7 @@ function yl({ width: o.width, rowHeight: e, cellClass: u, - onRenderCell: p + onRenderCell: f }, "right" )), /* @__PURE__ */ g( @@ -10695,7 +10704,7 @@ let kr = class extends W { if (["pageup", "pagedown", "home", "end"].includes(s)) return !this.scroll({ to: s.replace("page", "") }); }), X(this, mi, (e) => { - const s = f(e.target).closest(".dtable-cell"); + const s = p(e.target).closest(".dtable-cell"); if (!s.length) return ft(this, Ve, Tn).call(this, !1); ft(this, Ve, Tn).call(this, [s.attr("data-row"), s.attr("data-col")]); @@ -10756,7 +10765,7 @@ let kr = class extends W { this._rob = r; const { parent: o } = this; s.forEach((a) => { - a !== "window" && (a === "parent" ? o && r.observe(o) : a[0] === "~" ? i.push(a.slice(1)) : f(a).each((l, c) => r.observe(c))); + a !== "window" && (a === "parent" ? o && r.observe(o) : a[0] === "~" ? i.push(a.slice(1)) : p(a).each((l, c) => r.observe(c))); }), i.length && this.on(i.join(" "), this.updateLayout); } s.includes("window") && this.on("window_resize", this.updateLayout); @@ -10819,25 +10828,25 @@ let kr = class extends W { } scroll(t, e) { const { scrollLeft: s, scrollTop: i, rowsHeightTotal: r, rowsHeight: o, rowHeight: a, cols: { center: { totalWidth: l, width: c } } } = this.layout, { to: u } = t; - let { scrollLeft: h, scrollTop: p } = t; + let { scrollLeft: h, scrollTop: f } = t; if (u === "up" || u === "down") - p = i + (u === "down" ? 1 : -1) * Math.floor(o / a) * a; + f = i + (u === "down" ? 1 : -1) * Math.floor(o / a) * a; else if (u === "left" || u === "right") h = s + (u === "right" ? 1 : -1) * c; else if (u === "top") - p = 0; + f = 0; else if (u === "bottom") - p = r - o; + f = r - o; else if (u === "begin") h = 0; else if (u === "end") h = l - c; else { const { offsetLeft: m, offsetTop: _ } = t; - typeof m == "number" && (h = s + m), typeof _ == "number" && (p = i + _); + typeof m == "number" && (h = s + m), typeof _ == "number" && (f = i + _); } const d = {}; - return typeof h == "number" && (h = Math.max(0, Math.min(h, l - c)), h !== s && (d.scrollLeft = h)), typeof p == "number" && (p = Math.max(0, Math.min(p, r - o)), p !== i && (d.scrollTop = p)), Object.keys(d).length ? (this.setState(d, () => { + return typeof h == "number" && (h = Math.max(0, Math.min(h, l - c)), h !== s && (d.scrollLeft = h)), typeof f == "number" && (f = Math.max(0, Math.min(f, r - o)), f !== i && (d.scrollTop = f)), Object.keys(d).length ? (this.setState(d, () => { var m; (m = this.options.onScroll) == null || m.call(this, d), e == null || e.call(this, !0); }), !0) : (e == null || e.call(this, !1), !1); @@ -10893,7 +10902,7 @@ let kr = class extends W { const e = t.target; if (!e || e.closest(".no-cell-event")) return; - const s = f(e).closest(".dtable-cell"); + const s = p(e).closest(".dtable-cell"); if (!s.length) return; const i = s.attr("data-row"), r = s.attr("data-col"); @@ -10934,7 +10943,7 @@ let kr = class extends W { } render() { let t = ft(this, yi, kl).call(this); - const { className: e, rowHover: s, colHover: i, cellHover: r, bordered: o, striped: a, scrollbarHover: l, beforeRender: c, emptyTip: u, style: h } = this.options, p = { ...h }, d = ["dtable", e, { + const { className: e, rowHover: s, colHover: i, cellHover: r, bordered: o, striped: a, scrollbarHover: l, beforeRender: c, emptyTip: u, style: h } = this.options, f = { ...h }, d = ["dtable", e, { "dtable-hover-row": s, "dtable-hover-col": i, "dtable-hover-cell": r, @@ -10953,7 +10962,7 @@ let kr = class extends W { var b; const y = (b = v.beforeRender) == null ? void 0 : b.call(this, t); y && (t = y); - }), p.width = t.width, p.height = t.height, p["--dtable-row-height"] = `${t.rowHeight}px`, p["--dtable-header-height"] = `${t.headerHeight}px`, d.push( + }), f.width = t.width, f.height = t.height, f["--dtable-row-height"] = `${t.rowHeight}px`, f["--dtable-header-height"] = `${t.headerHeight}px`, d.push( t.className, _ ? "dtable-is-empty" : "", { @@ -10963,7 +10972,7 @@ let kr = class extends W { "dtable-scrolled-right": t.scrollLeft > 0, "dtable-scrolled-end": t.scrollLeft >= t.cols.center.totalWidth - t.cols.center.width } - ), t.children && m.push(...t.children), _ && u ? (delete p.height, m.push( + ), t.children && m.push(...t.children), _ && u ? (delete f.height, m.push( /* @__PURE__ */ g("div", { className: "dtable-empty-tip", children: /* @__PURE__ */ g(L, { content: u, generatorThis: this, generatorArgs: [t] }) }, "empty-tip") )) : (m.push( ft(this, ci, bl).call(this, t), @@ -10972,7 +10981,7 @@ let kr = class extends W { ), t.scrollable && m.push(ft(this, di, Sl).call(this, t))), this._plugins.forEach((v) => { var b; const y = (b = v.onRender) == null ? void 0 : b.call(this, t); - y && (y.style && Object.assign(p, y.style), y.className && d.push(y.className), y.children && m.push(y.children)); + y && (y.style && Object.assign(f, y.style), y.className && d.push(y.className), y.children && m.push(y.children)); }); } return /* @__PURE__ */ g( @@ -10980,7 +10989,7 @@ let kr = class extends W { { id: this._id, className: k(d), - style: p, + style: f, ref: this.ref, tabIndex: -1, children: m @@ -11070,7 +11079,7 @@ Cl = function(n) { }; di = /* @__PURE__ */ new WeakSet(); Sl = function(n) { - const t = [], { scrollLeft: e, cols: { left: { width: s }, center: { width: i, totalWidth: r } }, scrollTop: o, rowsHeight: a, rowsHeightTotal: l, footerHeight: c, headerHeight: u } = n, { scrollbarSize: h = 12, horzScrollbarPos: p, vertScrollbarPos: d } = this.options; + const t = [], { scrollLeft: e, cols: { left: { width: s }, center: { width: i, totalWidth: r } }, scrollTop: o, rowsHeight: a, rowsHeightTotal: l, footerHeight: c, headerHeight: u } = n, { scrollbarSize: h = 12, horzScrollbarPos: f, vertScrollbarPos: d } = this.options; return r > i && t.push( /* @__PURE__ */ g( fo, @@ -11081,7 +11090,7 @@ Sl = function(n) { clientSize: i, onScroll: Y(this, Un), left: s, - bottom: (p === "inside" ? 0 : -h) + c, + bottom: (f === "inside" ? 0 : -h) + c, size: h, wheelContainer: this.ref }, @@ -11126,7 +11135,7 @@ Tn = function(n) { const { element: t, options: e } = this; if (!t) return; - const s = f(t), i = n ? { in: !0, row: n[0], col: n[1] } : { in: !1 }; + const s = p(t), i = n ? { in: !0, row: n[0], col: n[1] } : { in: !1 }; e.colHover === "header" && i.row !== "HEADER" && (i.col = void 0); const r = this._hover; i.in !== r.in && s.toggleClass("dtable-hover", i.in), i.row !== r.row && (s.find(".is-hover-row").removeClass("is-hover-row"), i.row && s.find(`.dtable-cell[data-row="${i.row}"]`).addClass("is-hover-row")), i.col !== r.col && (s.find(".is-hover-col").removeClass("is-hover-col"), i.col && s.find(`.dtable-cell[data-col="${i.col}"]`).addClass("is-hover-col")), this._hover = i; @@ -11188,22 +11197,22 @@ xl = function() { Array.isArray(o) && o.forEach((T, P) => { typeof T == "object" ? h(`${T[a] ?? ""}`, P, T) : h(`${T ?? ""}`, P); }); - let p = u; + let f = u; const d = {}; if (t.onAddRows) { - const T = t.onAddRows.call(this, p, r); - T && (p = T); + const T = t.onAddRows.call(this, f, r); + T && (f = T); } for (const T of n) { - const P = (A = T.onAddRows) == null ? void 0 : A.call(this, p, r); - P && (p = P); + const P = (A = T.onAddRows) == null ? void 0 : A.call(this, f, r); + P && (f = P); } - p.forEach((T, P) => { + f.forEach((T, P) => { d[T.id] = T, T.index = P, T.top = T.index * l; }); const { header: m, footer: _ } = t, v = m ? t.headerHeight || l : 0, y = _ ? t.footerHeight || l : 0; let b = t.height, w = 0; - const C = p.length * l, S = v + y + C; + const C = f.length * l, S = v + y + C; if (typeof b == "function" && (b = b.call(this, S)), b === "auto") w = S; else if (typeof b == "object") @@ -11223,7 +11232,7 @@ xl = function() { allRows: u, width: i, height: w, - rows: p, + rows: f, rowsMap: d, rowHeight: l, rowsHeight: $, @@ -11255,13 +11264,13 @@ kl = function() { t.list.forEach((m) => { m.left = s, s += m.realWidth, m.visible = m.left + m.realWidth >= e && m.left <= e + t.width; }); - const { rowsHeightTotal: i, rowsHeight: r, rows: o, rowHeight: a } = n, l = Math.min(Math.max(0, i - r), this.state.scrollTop), c = Math.floor(l / a), u = l + r, h = Math.min(o.length, Math.ceil(u / a)), p = [], { rowDataGetter: d } = this.options; + const { rowsHeightTotal: i, rowsHeight: r, rows: o, rowHeight: a } = n, l = Math.min(Math.max(0, i - r), this.state.scrollTop), c = Math.floor(l / a), u = l + r, h = Math.min(o.length, Math.ceil(u / a)), f = [], { rowDataGetter: d } = this.options; for (let m = c; m < h; m++) { const _ = o[m]; - _.lazy && d && (_.data = d([_.id])[0], _.lazy = !1), p.push(_); + _.lazy && d && (_.data = d([_.id])[0], _.lazy = !1), f.push(_); } return Object.assign(n, { - visibleRows: p, + visibleRows: f, scrollTop: l, scrollLeft: e, headerChildren: [], @@ -11479,10 +11488,10 @@ const Ku = { const c = [a]; typeof l == "string" && c.unshift(Zu[l], r == null ? void 0 : r[l]); const u = {}; - c.forEach((p) => { - if (p) { - const { props: d } = p; - d && f.extend(u, typeof d == "function" ? d.call(this, t) : d), l = p.component || l; + c.forEach((f) => { + if (f) { + const { props: d } = f; + d && p.extend(u, typeof d == "function" ? d.call(this, t) : d), l = f.component || l; } }, { props: {} }); const h = l; @@ -11636,7 +11645,7 @@ const _o = 'input[type="checkbox"],.dtable-checkbox', id = { onCellClick(n, { rowID: t }) { if (this.data.disableCheckable) return; - const e = f(n.target); + const e = p(n.target); if (!e.length || e.closest("btn,a,button.not-checkable,.form-control,.btn").length) return; (e.closest(_o).not(".disabled").length || this.options.checkOnClickRow) && this.toggleCheckRows(t); @@ -11874,7 +11883,7 @@ function js(n, { row: t, col: e }) { className: k(r, c.className, "flex-none") }; if (n[0] = /* @__PURE__ */ g(ds, { ...h }), e.type === "avatarBtn") { - const { avatarBtnProps: p } = e.setting, d = typeof p == "function" ? p(e, t) : p; + const { avatarBtnProps: f } = e.setting, d = typeof f == "function" ? f(e, t) : f; n[0] = /* @__PURE__ */ g("button", { type: "button", className: "btn btn-avatar", ...d, children: [ n[0], /* @__PURE__ */ g("div", { children: u }) @@ -11918,8 +11927,8 @@ const dd = { if (c) { const u = a === "asc" ? "desc" : "asc"; typeof c == "function" && (c = c.call(this, e, u, a)), typeof c == "string" && (c = { url: c }); - const { url: h, ...p } = c; - n[0] = /* @__PURE__ */ g("a", { className: "dtable-sort-link", href: V(h, { ...s, sortType: u }), ...p, children: [ + const { url: h, ...f } = c; + n[0] = /* @__PURE__ */ g("a", { className: "dtable-sort-link", href: V(h, { ...s, sortType: u }), ...f, children: [ typeof n[0] != "object" || ot(n[0]) ? n[0] : e.name, l ] }); @@ -12009,11 +12018,11 @@ const yd = { e.clear(), s.clear(); const a = (l, c, u) => { const { index: h } = c; - l.forEach((p, d) => { - const { index: m } = p, _ = `C${m}R${h}`; + l.forEach((f, d) => { + const { index: m } = f, _ = `C${m}R${h}`; if (s.has(_)) return; - const v = t.call(this, { row: c, col: p }); + const v = t.call(this, { row: c, col: f }); if (!v) return; const y = Math.min(v.colSpan || 1, l.length - d), b = Math.min(v.rowSpan || 1, i.length - u); @@ -12096,11 +12105,11 @@ function Sd() { const i = (C = (w = this.ref.current) == null ? void 0 : w.querySelector(".dtable-body")) == null ? void 0 : C.getBoundingClientRect(); if (!i) return; - const r = ($ = (S = this.ref.current) == null ? void 0 : S.querySelector(".dtable-scroll-center")) == null ? void 0 : $.getBoundingClientRect(), { maxStep: o, detectPadding: a, speed: l, side: c } = n, { x: u, y: h } = t, { top: p, bottom: d } = i, { left: m, right: _ } = r || i; + const r = ($ = (S = this.ref.current) == null ? void 0 : S.querySelector(".dtable-scroll-center")) == null ? void 0 : $.getBoundingClientRect(), { maxStep: o, detectPadding: a, speed: l, side: c } = n, { x: u, y: h } = t, { top: f, bottom: d } = i, { left: m, right: _ } = r || i; let v = 0; u < m - a ? v = -Math.max(o, m - a - u) : u > _ - a && (v = Math.max(o, u - (_ - a))); let y = 0; - if (h < p - a ? y = -Math.max(o, p - a - h) : h > d - a && (y = Math.max(o, h - (d - a))), c) { + if (h < f - a ? y = -Math.max(o, f - a - h) : h > d - a && (y = Math.max(o, h - (d - a))), c) { const E = new Set((Array.isArray(c) ? c : [c]).reduce((N, A) => (A === "x" ? N.push("left", "right") : A === "y" ? N.push("top", "bottom") : N.push(A), N), [])); (!E.has("left") && v < 0 || !E.has("right") && v > 0) && (v = 0), (!E.has("top") && y < 0 || !E.has("bottom") && y > 0) && (y = 0); } @@ -12181,7 +12190,7 @@ const Td = { if (this.data.disableSortable) return; const { sortHandler: t = ".dtable-cell" } = this.options; - if (!f(n.target).closest(t).length) + if (!p(n.target).closest(t).length) return; const i = this.getPointerInfo(n); if (!i || i.rowID === "HEADER") @@ -12204,17 +12213,17 @@ const Td = { let i, r; const { sortingFrom: o, sortingTo: a, sortingSide: l } = e; if (a && l) { - const c = this.layout.rows.map((d) => d.id), u = [...c], h = o.index, p = a.index; - if (!(h === p + 1 && l === "after") && !(h === p - 1 && l === "before")) { + const c = this.layout.rows.map((d) => d.id), u = [...c], h = o.index, f = a.index; + if (!(h === f + 1 && l === "after") && !(h === f - 1 && l === "before")) { const d = c.splice(h, 1); - c.splice(p, 0, d[0]), i = {}, r = [], c.forEach((m, _) => { + c.splice(f, 0, d[0]), i = {}, r = [], c.forEach((m, _) => { i[m] = _, r.push(m); }), (u.join() === r.join() || ((s = this.options.onSort) == null ? void 0 : s.call(this, o, a, l, r)) === !1) && (i = void 0, r = void 0); } } (a || Math.abs(t.lastMouseY - t.startMouseY) > 4) && this.ignoreNextClick(), this.disableAnimation(), this.update({ dirtyType: "layout", - state: (c) => f.extend({ + state: (c) => p.extend({ sortingFrom: void 0, sortingPos: void 0, sortingTo: void 0, @@ -12246,13 +12255,13 @@ const Td = { const { disableSortable: t, sortableInfo: e } = this.data; if (t || !e) return; - const { headerHeight: s, footerHeight: i, visibleRows: r, scrollTop: o, rowHeight: a } = this.layout, l = this.element.getBoundingClientRect(), c = l.width, u = l.height - s - i, h = n.clientX - l.left, p = n.clientY - l.top - s; - if (h < 0 || h > c || p < 0 || p > u) + const { headerHeight: s, footerHeight: i, visibleRows: r, scrollTop: o, rowHeight: a } = this.layout, l = this.element.getBoundingClientRect(), c = l.width, u = l.height - s - i, h = n.clientX - l.left, f = n.clientY - l.top - s; + if (h < 0 || h > c || f < 0 || f > u) return e.state; - const d = p + o, m = r.find((E) => E.top <= d && E.top + a > d); + const d = f + o, m = r.find((E) => E.top <= d && E.top + a > d); if (!m) return e.state; - const _ = e.from, v = m.id !== _.id ? m.id : void 0, y = v ? this.getRowInfo(v) : void 0, b = p, w = d < m.top + a / 2 ? "before" : "after"; + const _ = e.from, v = m.id !== _.id ? m.id : void 0, y = v ? this.getRowInfo(v) : void 0, b = f, w = d < m.top + a / 2 ? "before" : "after"; return y && (($ = this.options.canSortTo) == null ? void 0 : $.call(this, _, y, w)) !== !1 ? { sortingFrom: _, sortingPos: b, @@ -12414,11 +12423,11 @@ class Gn extends vt { } active(t) { const e = this.$element, s = e.find(Vs); - let i = t ? f(t).closest(Vs) : s.filter(`.${Pd}`); + let i = t ? p(t).closest(Vs) : s.filter(`.${Pd}`); if (!i.length && (i = e.find(Vs).first(), !i.length)) return; s.removeClass("active"), i.addClass("active"); - const r = i.attr("href") || i.data("target"), o = i.data("name") || r, a = f(r); + const r = i.attr("href") || i.data("target"), o = i.data("name") || r, a = p(r); a.length && (a.parent().children(".tab-pane").removeClass("active in"), a.addClass("active").trigger("show", [o]), this.emit("show", o), this._timer && clearTimeout(this._timer), this._timer = setTimeout(() => { a.addClass("in").trigger("shown", [o]), this.emit("shown", o), this._timer = 0; }, 10)); @@ -12428,13 +12437,13 @@ Gn.NAME = "Tabs"; Gn.toggle = { name: "tab", handler(n, t) { - const e = f(n), s = e.closest(`.${Md}`); + const e = p(n), s = e.closest(`.${Md}`); s.length && Gn.ensure(s, t).active(e); } }; Gn.register(); export { - f as $, + p as $, Ii as Ajax, Aa as Avatar, Dd as BUILD, @@ -12485,7 +12494,7 @@ export { Wi as bindCommands, Xo as bindHotkeys, jt as bus, - f as cash, + p as cash, k as classes, Od as clearData, ba as computed, diff --git a/dev/zui/zui.esm.js.map b/dev/zui/zui.esm.js.map index 044442a353..6435b273ba 100644 --- a/dev/zui/zui.esm.js.map +++ b/dev/zui/zui.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"zui.esm.js","sources":["../../../../lib/core/src/config/index.ts","../../../../node_modules/cash-dom/dist/cash.esm.js","../../../../lib/core/src/cash/cash.ts","../../../../lib/helpers/src/object/deep-get.ts","../../../../lib/helpers/src/format-string.ts","../../../../lib/core/src/i18n/i18n.ts","../../../../lib/core/src/i18n/common.ts","../../../../lib/core/src/ajax/ajax.ts","../../../../lib/core/src/ajax/helper.ts","../../../../lib/core/src/ajax/fetcher.ts","../../../../lib/core/src/helpers/gid.ts","../../../../lib/core/src/helpers/is-diff.ts","../../../../lib/core/src/helpers/computed.ts","../../../../lib/core/src/helpers/classes.ts","../../../../lib/core/src/helpers/data.ts","../../../../lib/core/src/helpers/raw-data.ts","../../../../lib/core/src/helpers/z.ts","../../../../lib/core/src/helpers/attr.ts","../../../../lib/core/src/helpers/event.ts","../../../../lib/core/src/helpers/delay.ts","../../../../lib/core/src/helpers/share-data.ts","../../../../node_modules/preact/dist/preact.module.js","../../../../lib/core/src/helpers/merge-props.ts","../../../../lib/core/src/helpers/scroll.ts","../../../../lib/core/src/helpers/global-event.ts","../../../../lib/core/src/helpers/size.ts","../../../../lib/core/src/helpers/download-file.ts","../../../../lib/core/src/helpers/bus.ts","../../../../node_modules/tinykeys/dist/tinykeys.module.js","../../../../lib/core/src/helpers/hotkeys.ts","../../../../lib/core/src/helpers/fullscreen.ts","../../../../lib/core/src/dom/is-detached.ts","../../../../lib/core/src/component/component.ts","../../../../lib/core/src/component/creator.ts","../../../../lib/core/src/helpers/sticky.ts","../../../../lib/helpers/src/date-helper.ts","../../../../lib/helpers/src/string-code.ts","../../../../lib/core/src/helpers/commands.ts","../../../../lib/core/src/dom/is-visible.ts","../../../../lib/core/src/dom/run-js.ts","../../../../lib/core/src/dom/scroll-into-view.ts","../../../../lib/core/src/dom/get-lib.ts","../../../../lib/core/src/dom/resize.ts","../../../../node_modules/preact/hooks/dist/hooks.module.js","../../../../node_modules/@preact/signals-core/dist/signals-core.module.js","../../../../node_modules/@preact/signals/dist/signals.module.js","../../../../lib/core/src/react/components/components.ts","../../../../lib/core/src/react/components/h-element.ts","../../../../lib/core/src/react/components/h-element-signals.ts","../../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../../lib/core/src/react/components/html-content.tsx","../../../../lib/core/src/react/components/custom-render.tsx","../../../../lib/core/src/react/components/lazy-content.tsx","../../../../lib/core/src/react/components/custom-content.tsx","../../../../lib/core/src/react/components/icon.tsx","../../../../lib/core/src/react/components/portals.ts","../../../../lib/core/src/react/components/share.ts","../../../../lib/core/src/react/component-from-react.ts","../../../../lib/button/src/component/button.tsx","../../../../lib/button/src/component/share.ts","../../../../lib/common-list/src/component/common-list.tsx","../../../../lib/common-list/src/vanilla/common-list.ts","../../../../lib/common-list/src/component/share.ts","../../../../lib/helpers/src/color-helper.ts","../../../../lib/avatar/src/component/avatar.tsx","../../../../lib/btn-group/src/component/btn-group.tsx","../../../../lib/toolbar/src/component/toolbar.tsx","../../../../lib/checkbox/src/component/checkbox.tsx","../../../../lib/checkbox/src/component/radio.tsx","../../../../lib/checkbox/src/component/switch.tsx","../../../../lib/list/src/component/listitem.tsx","../../../../lib/list/src/component/list.tsx","../../../../lib/store/src/store.ts","../../../../lib/store/src/main.ts","../../../../lib/list/src/component/nested-list.tsx","../../../../lib/menu/src/component/menu.tsx","../../../../lib/search-box/src/components/search-box.tsx","../../../../lib/menu/src/component/search-menu.tsx","../../../../lib/menu/src/vanilla/menu.ts","../../../../lib/menu/src/vanilla/search-menu.ts","../../../../lib/menu/src/component/share.ts","../../../../lib/alert/src/component/alert.tsx","../../../../lib/messager/src/component/messager-item.tsx","../../../../lib/messager/src/vanilla/messager-item.ts","../../../../lib/messager/src/vanilla/messager.ts","../../../../lib/progress/src/components/progress-bar.tsx","../../../../lib/progress/src/components/share.ts","../../../../lib/progress/src/vanilla/index.ts","../../../../lib/progress-circle/src/component/progress-circle.tsx","../../../../lib/progress-circle/src/vanilla/index.ts","../../../../lib/progress-circle/src/component/share.ts","../../../../lib/avatar/src/vanilla/index.ts","../../../../lib/avatar/src/component/share.ts","../../../../lib/btn-group/src/vanilla/index.ts","../../../../lib/btn-group/src/component/share.ts","../../../../lib/pick/src/components/pick-trigger.tsx","../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../lib/pick/src/components/pick-pop.tsx","../../../../lib/pick/src/components/pick.tsx","../../../../lib/color-picker/src/components/color-picker.tsx","../../../../lib/color-picker/src/vanilla/color-picker.ts","../../../../lib/datetime-picker/src/component/time-picker-menu.tsx","../../../../lib/datetime-picker/src/component/time-picker.tsx","../../../../lib/datetime-picker/src/helpers/date-helper.ts","../../../../lib/datetime-picker/src/i18n/index.ts","../../../../lib/datetime-picker/src/component/mini-calendar.tsx","../../../../lib/datetime-picker/src/component/value-selector.tsx","../../../../lib/datetime-picker/src/component/date-picker-menu.tsx","../../../../lib/datetime-picker/src/component/date-picker.tsx","../../../../lib/datetime-picker/src/component/datetime-picker.tsx","../../../../lib/datetime-picker/src/vanilla/time-picker.ts","../../../../lib/datetime-picker/src/vanilla/date-picker.ts","../../../../lib/datetime-picker/src/vanilla/datetime-picker.ts","../../../../lib/modal/src/vanilla/modal-base.ts","../../../../lib/modal/src/component/modal-dialog.tsx","../../../../lib/modal/src/component/modal-iframe-content.tsx","../../../../lib/modal/src/vanilla/modal.tsx","../../../../lib/modal/src/vanilla/modal-trigger.ts","../../../../lib/file-selector/src/i18n/index.ts","../../../../lib/file-selector/src/components/file-selector.tsx","../../../../lib/file-selector/src/components/image-selector.tsx","../../../../lib/file-selector/src/vanilla/file-selector.ts","../../../../lib/file-selector/src/vanilla/image-selector.ts","../../../../lib/file-selector/src/components/share.ts","../../../../lib/nav/src/component/nav.tsx","../../../../lib/nav/src/vanilla/nav.ts","../../../../lib/nav/src/component/share.ts","../../../../lib/pager/src/helpers/update-pager-info.ts","../../../../lib/pager/src/component/pager-link.tsx","../../../../lib/pager/src/component/pager-info.tsx","../../../../lib/pager/src/component/pager-nav.tsx","../../../../lib/popover/src/component/popover-panel.tsx","../../../../lib/popover/src/vanilla/popover-panel.ts","../../../../lib/popover/src/vanilla/popover.ts","../../../../lib/dropdown/src/vanilla/dropdown.ts","../../../../lib/dropdown/src/component/dropdown-button.tsx","../../../../lib/dropdown/src/component/dropdown-menu.tsx","../../../../lib/pager/src/component/pager-size-menu.tsx","../../../../lib/pager/src/component/pager-goto.tsx","../../../../lib/pager/src/component/pager.tsx","../../../../lib/pager/src/vanilla/index.ts","../../../../lib/pager/src/component/share.ts","../../../../lib/pick/src/vanilla/pick.ts","../../../../lib/picker/src/component/picker-search.tsx","../../../../lib/picker/src/component/picker-multi-select.tsx","../../../../lib/picker/src/component/picker-single-select.tsx","../../../../lib/tree/src/components/tree.tsx","../../../../lib/tree/src/components/search-tree.tsx","../../../../lib/picker/src/component/picker-menu.tsx","../../../../lib/picker/src/component/picker.tsx","../../../../lib/picker/src/vanilla/picker.ts","../../../../lib/picker/src/i18n/index.ts","../../../../lib/picker/src/component/share.ts","../../../../lib/search-box/src/vanilla/search-box.ts","../../../../lib/search-box/src/components/share.ts","../../../../lib/toolbar/src/vanilla/index.ts","../../../../lib/toolbar/src/component/share.ts","../../../../lib/tooltip/src/vanilla/tooltip.ts","../../../../lib/dropdown/src/component/share.ts","../../../../lib/scrollbar/src/component/scrollbar.tsx","../../../../lib/dtable/src/helpers/shared-plugins.ts","../../../../lib/dtable/src/helpers/default-options.ts","../../../../lib/dtable/src/helpers/number.ts","../../../../lib/dtable/src/helpers/layout.ts","../../../../lib/dtable/src/components/cell.tsx","../../../../lib/dtable/src/components/cells.tsx","../../../../lib/dtable/src/components/block.tsx","../../../../lib/dtable/src/components/dtable.tsx","../../../../lib/dtable/src/plugins/rich/index.tsx","../../../../lib/dtable/src/plugins/sort/index.tsx","../../../../lib/dtable/src/plugins/custom/index.tsx","../../../../lib/dtable/src/plugins/checkable/index.tsx","../../../../lib/dtable/src/plugins/store/index.ts","../../../../lib/dtable/src/plugins/nested/index.tsx","../../../../lib/dtable/src/plugins/avatar/index.tsx","../../../../lib/dtable/src/plugins/sort-type/index.tsx","../../../../lib/dtable/src/plugins/group/index.tsx","../../../../lib/dtable/src/plugins/header-group/index.tsx","../../../../lib/dtable/src/plugins/cellspan/index.ts","../../../../lib/dtable/src/plugins/mousemove/index.ts","../../../../lib/dtable/src/plugins/autoscroll/index.ts","../../../../lib/dtable/src/plugins/sortable/index.tsx","../../../../lib/dtable/src/plugins/pager/index.tsx","../../../../lib/dtable/src/vanilla/index.ts","../../../../lib/tabs/src/vanilla/tabs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\ndeclare const __APP_VERSION__: string;\n\ndeclare const __BUILD_TIME__: number;\n\ndeclare const __BUILD_MODE__: string;\n\nexport const VERSION = __APP_VERSION__;\nexport const BUILD = __BUILD_TIME__;\nexport const BUILD_MODE = __BUILD_MODE__;\n","const doc = document;\nconst win = window;\nconst docEle = doc.documentElement;\nconst createElement = doc.createElement.bind(doc);\nconst div = createElement('div');\nconst table = createElement('table');\nconst tbody = createElement('tbody');\nconst tr = createElement('tr');\nconst { isArray, prototype: ArrayPrototype } = Array;\nconst { concat, filter, indexOf, map, push, slice, some, splice } = ArrayPrototype;\nconst idRe = /^#(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nconst classRe = /^\\.(?:[\\w-]|\\\\.|[^\\x00-\\xa0])*$/;\nconst htmlRe = /<.+>/;\nconst tagRe = /^\\w+$/;\n// @require ./variables.ts\nfunction find(selector, context) {\n const isFragment = isDocumentFragment(context);\n return !selector || (!isFragment && !isDocument(context) && !isElement(context))\n ? []\n : !isFragment && classRe.test(selector)\n ? context.getElementsByClassName(selector.slice(1).replace(/\\\\/g, ''))\n : !isFragment && tagRe.test(selector)\n ? context.getElementsByTagName(selector)\n : context.querySelectorAll(selector);\n}\n// @require ./find.ts\n// @require ./variables.ts\nclass Cash {\n constructor(selector, context) {\n if (!selector)\n return;\n if (isCash(selector))\n return selector;\n let eles = selector;\n if (isString(selector)) {\n const ctx = context || doc;\n eles = idRe.test(selector) && isDocument(ctx)\n ? ctx.getElementById(selector.slice(1).replace(/\\\\/g, ''))\n : htmlRe.test(selector)\n ? parseHTML(selector)\n : isCash(ctx)\n ? ctx.find(selector)\n : isString(ctx)\n ? cash(ctx).find(selector)\n : find(selector, ctx);\n if (!eles)\n return;\n }\n else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n if (eles.nodeType || eles === win)\n eles = [eles];\n this.length = eles.length;\n for (let i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n }\n init(selector, context) {\n return new Cash(selector, context);\n }\n}\nconst fn = Cash.prototype;\nconst cash = fn.init;\ncash.fn = cash.prototype = fn; // Ensuring that `cash () instanceof cash`\nfn.length = 0;\nfn.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome's devtools\nif (typeof Symbol === 'function') { // Ensuring a cash collection is iterable\n fn[Symbol['iterator']] = ArrayPrototype[Symbol['iterator']];\n}\nfunction isCash(value) {\n return value instanceof Cash;\n}\nfunction isWindow(value) {\n return !!value && value === value.window;\n}\nfunction isDocument(value) {\n return !!value && value.nodeType === 9;\n}\nfunction isDocumentFragment(value) {\n return !!value && value.nodeType === 11;\n}\nfunction isElement(value) {\n return !!value && value.nodeType === 1;\n}\nfunction isText(value) {\n return !!value && value.nodeType === 3;\n}\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isUndefined(value) {\n return value === undefined;\n}\nfunction isNull(value) {\n return value === null;\n}\nfunction isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n}\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\ncash.isWindow = isWindow;\ncash.isFunction = isFunction;\ncash.isArray = isArray;\ncash.isNumeric = isNumeric;\ncash.isPlainObject = isPlainObject;\nfunction each(arr, callback, _reverse) {\n if (_reverse) {\n let i = arr.length;\n while (i--) {\n if (callback.call(arr[i], i, arr[i]) === false)\n return arr;\n }\n }\n else if (isPlainObject(arr)) {\n const keys = Object.keys(arr);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n if (callback.call(arr[key], key, arr[key]) === false)\n return arr;\n }\n }\n else {\n for (let i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], i, arr[i]) === false)\n return arr;\n }\n }\n return arr;\n}\ncash.each = each;\nfn.each = function (callback) {\n return each(this, callback);\n};\nfn.empty = function () {\n return this.each((i, ele) => {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n });\n};\nfunction extend(...sources) {\n const deep = isBoolean(sources[0]) ? sources.shift() : false;\n const target = sources.shift();\n const length = sources.length;\n if (!target)\n return {};\n if (!length)\n return extend(deep, cash, target);\n for (let i = 0; i < length; i++) {\n const source = sources[i];\n for (const key in source) {\n if (deep && (isArray(source[key]) || isPlainObject(source[key]))) {\n if (!target[key] || target[key].constructor !== source[key].constructor)\n target[key] = new source[key].constructor();\n extend(deep, target[key], source[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\ncash.extend = extend;\nfn.extend = function (plugins) {\n return extend(fn, plugins);\n};\n// @require ./type_checking.ts\nconst splitValuesRe = /\\S+/g;\nfunction getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n}\nfn.toggleClass = function (cls, force) {\n const classes = getSplitValues(cls);\n const isForce = !isUndefined(force);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n each(classes, (i, c) => {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n }\n else {\n ele.classList.toggle(c);\n }\n });\n });\n};\nfn.addClass = function (cls) {\n return this.toggleClass(cls, true);\n};\nfn.removeAttr = function (attr) {\n const attrs = getSplitValues(attr);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n each(attrs, (i, a) => {\n ele.removeAttribute(a);\n });\n });\n};\nfunction attr(attr, value) {\n if (!attr)\n return;\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0] || !isElement(this[0]))\n return;\n const value = this[0].getAttribute(attr);\n return isNull(value) ? undefined : value;\n }\n if (isUndefined(value))\n return this;\n if (isNull(value))\n return this.removeAttr(attr);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n ele.setAttribute(attr, value);\n });\n }\n for (const key in attr) {\n this.attr(key, attr[key]);\n }\n return this;\n}\nfn.attr = attr;\nfn.removeClass = function (cls) {\n if (arguments.length)\n return this.toggleClass(cls, false);\n return this.attr('class', '');\n};\nfn.hasClass = function (cls) {\n return !!cls && some.call(this, (ele) => isElement(ele) && ele.classList.contains(cls));\n};\nfn.get = function (index) {\n if (isUndefined(index))\n return slice.call(this);\n index = Number(index);\n return this[index < 0 ? index + this.length : index];\n};\nfn.eq = function (index) {\n return cash(this.get(index));\n};\nfn.first = function () {\n return this.eq(0);\n};\nfn.last = function () {\n return this.eq(-1);\n};\nfunction text(text) {\n if (isUndefined(text)) {\n return this.get().map(ele => isElement(ele) || isText(ele) ? ele.textContent : '').join('');\n }\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n ele.textContent = text;\n });\n}\nfn.text = text;\n// @require core/type_checking.ts\n// @require core/variables.ts\nfunction computeStyle(ele, prop, isVariable) {\n if (!isElement(ele))\n return;\n const style = win.getComputedStyle(ele, null);\n return isVariable ? style.getPropertyValue(prop) || undefined : style[prop] || ele.style[prop];\n}\n// @require ./compute_style.ts\nfunction computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n}\n// @require css/helpers/compute_style_int.ts\nfunction getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, `border${xAxis ? 'Left' : 'Top'}Width`) + computeStyleInt(ele, `padding${xAxis ? 'Left' : 'Top'}`) + computeStyleInt(ele, `padding${xAxis ? 'Right' : 'Bottom'}`) + computeStyleInt(ele, `border${xAxis ? 'Right' : 'Bottom'}Width`);\n}\n// @require css/helpers/compute_style.ts\nconst defaultDisplay = {};\nfunction getDefaultDisplay(tagName) {\n if (defaultDisplay[tagName])\n return defaultDisplay[tagName];\n const ele = createElement(tagName);\n doc.body.insertBefore(ele, null);\n const display = computeStyle(ele, 'display');\n doc.body.removeChild(ele);\n return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n}\n// @require css/helpers/compute_style.ts\nfunction isHidden(ele) {\n return computeStyle(ele, 'display') === 'none';\n}\n// @require ./cash.ts\nfunction matches(ele, selector) {\n const matches = ele && (ele['matches'] || ele['webkitMatchesSelector'] || ele['msMatchesSelector']);\n return !!matches && !!selector && matches.call(ele, selector);\n}\n// @require ./matches.ts\n// @require ./type_checking.ts\nfunction getCompareFunction(comparator) {\n return isString(comparator)\n ? (i, ele) => matches(ele, comparator)\n : isFunction(comparator)\n ? comparator\n : isCash(comparator)\n ? (i, ele) => comparator.is(ele)\n : !comparator\n ? () => false\n : (i, ele) => ele === comparator;\n}\nfn.filter = function (comparator) {\n const compare = getCompareFunction(comparator);\n return cash(filter.call(this, (ele, i) => compare.call(ele, i, ele)));\n};\n// @require collection/filter.ts\nfunction filtered(collection, comparator) {\n return !comparator ? collection : collection.filter(comparator);\n}\nfn.detach = function (comparator) {\n filtered(this, comparator).each((i, ele) => {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n return this;\n};\nconst fragmentRe = /^\\s*<(\\w+)[^>]*>/;\nconst singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\nconst containers = {\n '*': div,\n tr: tbody,\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table\n};\n//TODO: Create elements inside a document fragment, in order to prevent inline event handlers from firing\n//TODO: Ensure the created elements have the fragment as their parent instead of null, this also ensures we can deal with detatched nodes more reliably\nfunction parseHTML(html) {\n if (!isString(html))\n return [];\n if (singleTagRe.test(html))\n return [createElement(RegExp.$1)];\n const fragment = fragmentRe.test(html) && RegExp.$1;\n const container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n}\ncash.parseHTML = parseHTML;\nfn.has = function (selector) {\n const comparator = isString(selector)\n ? (i, ele) => find(selector, ele).length\n : (i, ele) => ele.contains(selector);\n return this.filter(comparator);\n};\nfn.not = function (comparator) {\n const compare = getCompareFunction(comparator);\n return this.filter((i, ele) => (!isString(comparator) || isElement(ele)) && !compare.call(ele, i, ele));\n};\nfunction pluck(arr, prop, deep, until) {\n const plucked = [];\n const isCallback = isFunction(prop);\n const compare = until && getCompareFunction(until);\n for (let i = 0, l = arr.length; i < l; i++) {\n if (isCallback) {\n const val = prop(arr[i]);\n if (val.length)\n push.apply(plucked, val);\n }\n else {\n let val = arr[i][prop];\n while (val != null) {\n if (until && compare(-1, val))\n break;\n plucked.push(val);\n val = deep ? val[prop] : null;\n }\n }\n }\n return plucked;\n}\n// @require core/pluck.ts\n// @require core/variables.ts\nfunction getValue(ele) {\n if (ele.multiple && ele.options)\n return pluck(filter.call(ele.options, option => option.selected && !option.disabled && !option.parentNode.disabled), 'value');\n return ele.value || '';\n}\nfunction val(value) {\n if (!arguments.length)\n return this[0] && getValue(this[0]);\n return this.each((i, ele) => {\n const isSelect = ele.multiple && ele.options;\n if (isSelect || checkableRe.test(ele.type)) {\n const eleValue = isArray(value) ? map.call(value, String) : (isNull(value) ? [] : [String(value)]);\n if (isSelect) {\n each(ele.options, (i, option) => {\n option.selected = eleValue.indexOf(option.value) >= 0;\n }, true);\n }\n else {\n ele.checked = eleValue.indexOf(ele.value) >= 0;\n }\n }\n else {\n ele.value = isUndefined(value) || isNull(value) ? '' : value;\n }\n });\n}\nfn.val = val;\nfn.is = function (comparator) {\n const compare = getCompareFunction(comparator);\n return some.call(this, (ele, i) => compare.call(ele, i, ele));\n};\ncash.guid = 1;\nfunction unique(arr) {\n return arr.length > 1 ? filter.call(arr, (item, index, self) => indexOf.call(self, item) === index) : arr;\n}\ncash.unique = unique;\nfn.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n};\nfn.children = function (comparator) {\n return filtered(cash(unique(pluck(this, ele => ele.children))), comparator);\n};\nfn.parent = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n};\nfn.index = function (selector) {\n const child = selector ? cash(selector)[0] : this[0];\n const collection = selector ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n};\nfn.closest = function (comparator) {\n const filtered = this.filter(comparator);\n if (filtered.length)\n return filtered;\n const $parent = this.parent();\n if (!$parent.length)\n return filtered;\n return $parent.closest(comparator);\n};\nfn.siblings = function (comparator) {\n return filtered(cash(unique(pluck(this, ele => cash(ele).parent().children().not(ele)))), comparator);\n};\nfn.find = function (selector) {\n return cash(unique(pluck(this, ele => find(selector, ele))));\n};\n// @require core/variables.ts\n// @require collection/filter.ts\n// @require traversal/find.ts\nconst HTMLCDATARe = /^\\s*\\s*$/g;\nconst scriptTypeRe = /^$|^module$|\\/(java|ecma)script/i;\nconst scriptAttributes = ['type', 'src', 'nonce', 'noModule'];\nfunction evalScripts(node, doc) {\n const collection = cash(node);\n collection.filter('script').add(collection.find('script')).each((i, ele) => {\n if (scriptTypeRe.test(ele.type) && docEle.contains(ele)) { // The script type is supported // The element is attached to the DOM // Using `documentElement` for broader browser support\n const script = createElement('script');\n script.text = ele.textContent.replace(HTMLCDATARe, '');\n each(scriptAttributes, (i, attr) => {\n if (ele[attr])\n script[attr] = ele[attr];\n });\n doc.head.insertBefore(script, null);\n doc.head.removeChild(script);\n }\n });\n}\n// @require ./eval_scripts.ts\nfunction insertElement(anchor, target, left, inside, evaluate) {\n if (inside) { // prepend/append\n anchor.insertBefore(target, left ? anchor.firstChild : null);\n }\n else { // before/after\n if (anchor.nodeName === 'HTML') {\n anchor.parentNode.replaceChild(target, anchor);\n }\n else {\n anchor.parentNode.insertBefore(target, left ? anchor : anchor.nextSibling);\n }\n }\n if (evaluate) {\n evalScripts(target, anchor.ownerDocument);\n }\n}\n// @require ./insert_element.ts\nfunction insertSelectors(selectors, anchors, inverse, left, inside, reverseLoop1, reverseLoop2, reverseLoop3) {\n each(selectors, (si, selector) => {\n each(cash(selector), (ti, target) => {\n each(cash(anchors), (ai, anchor) => {\n const anchorFinal = inverse ? target : anchor;\n const targetFinal = inverse ? anchor : target;\n const indexFinal = inverse ? ti : ai;\n insertElement(anchorFinal, !indexFinal ? targetFinal : targetFinal.cloneNode(true), left, inside, !indexFinal);\n }, reverseLoop3);\n }, reverseLoop2);\n }, reverseLoop1);\n return anchors;\n}\nfn.after = function () {\n return insertSelectors(arguments, this, false, false, false, true, true);\n};\nfn.append = function () {\n return insertSelectors(arguments, this, false, false, true);\n};\nfunction html(html) {\n if (!arguments.length)\n return this[0] && this[0].innerHTML;\n if (isUndefined(html))\n return this;\n const hasScript = /]/.test(html);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n if (hasScript) {\n cash(ele).empty().append(html);\n }\n else {\n ele.innerHTML = html;\n }\n });\n}\nfn.html = html;\nfn.appendTo = function (selector) {\n return insertSelectors(arguments, this, true, false, true);\n};\nfn.wrapInner = function (selector) {\n return this.each((i, ele) => {\n const $ele = cash(ele);\n const contents = $ele.contents();\n contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n });\n};\nfn.before = function () {\n return insertSelectors(arguments, this, false, true);\n};\nfn.wrapAll = function (selector) {\n let structure = cash(selector);\n let wrapper = structure[0];\n while (wrapper.children.length)\n wrapper = wrapper.firstElementChild;\n this.first().before(structure);\n return this.appendTo(wrapper);\n};\nfn.wrap = function (selector) {\n return this.each((i, ele) => {\n const wrapper = cash(selector)[0];\n cash(ele).wrapAll(!i ? wrapper : wrapper.cloneNode(true));\n });\n};\nfn.insertAfter = function (selector) {\n return insertSelectors(arguments, this, true, false, false, false, false, true);\n};\nfn.insertBefore = function (selector) {\n return insertSelectors(arguments, this, true, true);\n};\nfn.prepend = function () {\n return insertSelectors(arguments, this, false, true, true, true, true);\n};\nfn.prependTo = function (selector) {\n return insertSelectors(arguments, this, true, true, true, false, false, true);\n};\nfn.contents = function () {\n return cash(unique(pluck(this, ele => ele.tagName === 'IFRAME' ? [ele.contentDocument] : (ele.tagName === 'TEMPLATE' ? ele.content.childNodes : ele.childNodes))));\n};\nfn.next = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'nextElementSibling', _all, _until))), comparator);\n};\nfn.nextAll = function (comparator) {\n return this.next(comparator, true);\n};\nfn.nextUntil = function (until, comparator) {\n return this.next(comparator, true, until);\n};\nfn.parents = function (comparator, _until) {\n return filtered(cash(unique(pluck(this, 'parentElement', true, _until))), comparator);\n};\nfn.parentsUntil = function (until, comparator) {\n return this.parents(comparator, until);\n};\nfn.prev = function (comparator, _all, _until) {\n return filtered(cash(unique(pluck(this, 'previousElementSibling', _all, _until))), comparator);\n};\nfn.prevAll = function (comparator) {\n return this.prev(comparator, true);\n};\nfn.prevUntil = function (until, comparator) {\n return this.prev(comparator, true, until);\n};\nfn.map = function (callback) {\n return cash(concat.apply([], map.call(this, (ele, i) => callback.call(ele, i, ele))));\n};\nfn.clone = function () {\n return this.map((i, ele) => ele.cloneNode(true));\n};\nfn.offsetParent = function () {\n return this.map((i, ele) => {\n let offsetParent = ele.offsetParent;\n while (offsetParent && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || docEle;\n });\n};\nfn.slice = function (start, end) {\n return cash(slice.call(this, start, end));\n};\n// @require ./cash.ts\nconst dashAlphaRe = /-([a-z])/g;\nfunction camelCase(str) {\n return str.replace(dashAlphaRe, (match, letter) => letter.toUpperCase());\n}\nfn.ready = function (callback) {\n const cb = () => setTimeout(callback, 0, cash);\n if (doc.readyState !== 'loading') {\n cb();\n }\n else {\n doc.addEventListener('DOMContentLoaded', cb);\n }\n return this;\n};\nfn.unwrap = function () {\n this.parent().each((i, ele) => {\n if (ele.tagName === 'BODY')\n return;\n const $ele = cash(ele);\n $ele.replaceWith($ele.children());\n });\n return this;\n};\nfn.offset = function () {\n const ele = this[0];\n if (!ele)\n return;\n const rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n};\nfn.position = function () {\n const ele = this[0];\n if (!ele)\n return;\n const isFixed = (computeStyle(ele, 'position') === 'fixed');\n const offset = isFixed ? ele.getBoundingClientRect() : this.offset();\n if (!isFixed) {\n const doc = ele.ownerDocument;\n let offsetParent = ele.offsetParent || doc.documentElement;\n while ((offsetParent === doc.body || offsetParent === doc.documentElement) && computeStyle(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent !== ele && isElement(offsetParent)) {\n const parentOffset = cash(offsetParent).offset();\n offset.top -= parentOffset.top + computeStyleInt(offsetParent, 'borderTopWidth');\n offset.left -= parentOffset.left + computeStyleInt(offsetParent, 'borderLeftWidth');\n }\n }\n return {\n top: offset.top - computeStyleInt(ele, 'marginTop'),\n left: offset.left - computeStyleInt(ele, 'marginLeft')\n };\n};\nconst propMap = {\n /* GENERAL */\n class: 'className',\n contenteditable: 'contentEditable',\n /* LABEL */\n for: 'htmlFor',\n /* INPUT */\n readonly: 'readOnly',\n maxlength: 'maxLength',\n tabindex: 'tabIndex',\n /* TABLE */\n colspan: 'colSpan',\n rowspan: 'rowSpan',\n /* IMAGE */\n usemap: 'useMap'\n};\nfn.prop = function (prop, value) {\n if (!prop)\n return;\n if (isString(prop)) {\n prop = propMap[prop] || prop;\n if (arguments.length < 2)\n return this[0] && this[0][prop];\n return this.each((i, ele) => { ele[prop] = value; });\n }\n for (const key in prop) {\n this.prop(key, prop[key]);\n }\n return this;\n};\nfn.removeProp = function (prop) {\n return this.each((i, ele) => { delete ele[propMap[prop] || prop]; });\n};\nconst cssVariableRe = /^--/;\n// @require ./variables.ts\nfunction isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n}\n// @require core/camel_case.ts\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/variables.ts\n// @require ./is_css_variable.ts\nconst prefixedProps = {};\nconst { style } = div;\nconst vendorsPrefixes = ['webkit', 'moz', 'ms'];\nfunction getPrefixedProp(prop, isVariable = isCSSVariable(prop)) {\n if (isVariable)\n return prop;\n if (!prefixedProps[prop]) {\n const propCC = camelCase(prop);\n const propUC = `${propCC[0].toUpperCase()}${propCC.slice(1)}`;\n const props = (`${propCC} ${vendorsPrefixes.join(`${propUC} `)}${propUC}`).split(' ');\n each(props, (i, p) => {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n return prefixedProps[prop];\n}\n// @require core/type_checking.ts\n// @require ./is_css_variable.ts\nconst numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n};\nfunction getSuffixedValue(prop, value, isVariable = isCSSVariable(prop)) {\n return !isVariable && !numericProps[prop] && isNumeric(value) ? `${value}px` : value;\n}\nfunction css(prop, value) {\n if (isString(prop)) {\n const isVariable = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable);\n if (arguments.length < 2)\n return this[0] && computeStyle(this[0], prop, isVariable);\n if (!prop)\n return this;\n value = getSuffixedValue(prop, value, isVariable);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n if (isVariable) {\n ele.style.setProperty(prop, value);\n }\n else {\n ele.style[prop] = value;\n }\n });\n }\n for (const key in prop) {\n this.css(key, prop[key]);\n }\n return this;\n}\n;\nfn.css = css;\nfunction attempt(fn, arg) {\n try {\n return fn(arg);\n }\n catch (_a) {\n return arg;\n }\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nconst JSONStringRe = /^\\s+|\\s+$/;\nfunction getData(ele, key) {\n const value = ele.dataset[key] || ele.dataset[camelCase(key)];\n if (JSONStringRe.test(value))\n return value;\n return attempt(JSON.parse, value);\n}\n// @require core/attempt.ts\n// @require core/camel_case.ts\nfunction setData(ele, key, value) {\n value = attempt(JSON.stringify, value);\n ele.dataset[camelCase(key)] = value;\n}\nfunction data(name, value) {\n if (!name) {\n if (!this[0])\n return;\n const datas = {};\n for (const key in this[0].dataset) {\n datas[key] = getData(this[0], key);\n }\n return datas;\n }\n if (isString(name)) {\n if (arguments.length < 2)\n return this[0] && getData(this[0], name);\n if (isUndefined(value))\n return this;\n return this.each((i, ele) => { setData(ele, name, value); });\n }\n for (const key in name) {\n this.data(key, name[key]);\n }\n return this;\n}\nfn.data = data;\nfunction getDocumentDimension(doc, dimension) {\n const docEle = doc.documentElement;\n return Math.max(doc.body[`scroll${dimension}`], docEle[`scroll${dimension}`], doc.body[`offset${dimension}`], docEle[`offset${dimension}`], docEle[`client${dimension}`]);\n}\neach([true, false], (i, outer) => {\n each(['Width', 'Height'], (i, prop) => {\n const name = `${outer ? 'outer' : 'inner'}${prop}`;\n fn[name] = function (includeMargins) {\n if (!this[0])\n return;\n if (isWindow(this[0]))\n return outer ? this[0][`inner${prop}`] : this[0].document.documentElement[`client${prop}`];\n if (isDocument(this[0]))\n return getDocumentDimension(this[0], prop);\n return this[0][`${outer ? 'offset' : 'client'}${prop}`] + (includeMargins && outer ? computeStyleInt(this[0], `margin${i ? 'Top' : 'Left'}`) + computeStyleInt(this[0], `margin${i ? 'Bottom' : 'Right'}`) : 0);\n };\n });\n});\neach(['Width', 'Height'], (index, prop) => {\n const propLC = prop.toLowerCase();\n fn[propLC] = function (value) {\n if (!this[0])\n return isUndefined(value) ? undefined : this;\n if (!arguments.length) {\n if (isWindow(this[0]))\n return this[0].document.documentElement[`client${prop}`];\n if (isDocument(this[0]))\n return getDocumentDimension(this[0], prop);\n return this[0].getBoundingClientRect()[propLC] - getExtraSpace(this[0], !index);\n }\n const valueNumber = parseInt(value, 10);\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n const boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[propLC] = getSuffixedValue(propLC, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n});\nconst displayProperty = '___cd';\nfn.toggle = function (force) {\n return this.each((i, ele) => {\n if (!isElement(ele))\n return;\n const hidden = isHidden(ele);\n const show = isUndefined(force) ? hidden : force;\n if (show) {\n ele.style.display = ele[displayProperty] || '';\n if (isHidden(ele)) {\n ele.style.display = getDefaultDisplay(ele.tagName);\n }\n }\n else if (!hidden) {\n ele[displayProperty] = computeStyle(ele, 'display');\n ele.style.display = 'none';\n }\n });\n};\nfn.hide = function () {\n return this.toggle(false);\n};\nfn.show = function () {\n return this.toggle(true);\n};\nconst eventsNamespace = '___ce';\nconst eventsNamespacesSeparator = '.';\nconst eventsFocus = { focus: 'focusin', blur: 'focusout' };\nconst eventsHover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\nconst eventsMouseRe = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;\n// @require ./variables.ts\nfunction getEventNameBubbling(name) {\n return eventsHover[name] || eventsFocus[name] || name;\n}\n// @require ./variables.ts\nfunction parseEventName(eventName) {\n const parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n}\nfn.trigger = function (event, data) {\n if (isString(event)) {\n const [nameOriginal, namespaces] = parseEventName(event);\n const name = getEventNameBubbling(nameOriginal);\n if (!name)\n return this;\n const type = eventsMouseRe.test(name) ? 'MouseEvents' : 'HTMLEvents';\n event = doc.createEvent(type);\n event.initEvent(name, true, true);\n event.namespace = namespaces.join(eventsNamespacesSeparator);\n event.___ot = nameOriginal;\n }\n event.___td = data;\n const isEventFocus = (event.___ot in eventsFocus);\n return this.each((i, ele) => {\n if (isEventFocus && isFunction(ele[event.___ot])) {\n ele[`___i${event.type}`] = true; // Ensuring the native event is ignored\n ele[event.___ot]();\n ele[`___i${event.type}`] = false; // Ensuring the custom event is not ignored\n }\n ele.dispatchEvent(event);\n });\n};\n// @require ./variables.ts\nfunction getEventsCache(ele) {\n return ele[eventsNamespace] = (ele[eventsNamespace] || {});\n}\n// @require core/guid.ts\n// @require events/helpers/get_events_cache.ts\nfunction addEvent(ele, name, namespaces, selector, callback) {\n const eventCache = getEventsCache(ele);\n eventCache[name] = (eventCache[name] || []);\n eventCache[name].push([namespaces, selector, callback]);\n ele.addEventListener(name, callback);\n}\nfunction hasNamespaces(ns1, ns2) {\n return !ns2 || !some.call(ns2, (ns) => ns1.indexOf(ns) < 0);\n}\n// @require ./get_events_cache.ts\n// @require ./has_namespaces.ts\n// @require ./parse_event_name.ts\nfunction removeEvent(ele, name, namespaces, selector, callback) {\n const cache = getEventsCache(ele);\n if (!name) {\n for (name in cache) {\n removeEvent(ele, name, namespaces, selector, callback);\n }\n }\n else if (cache[name]) {\n cache[name] = cache[name].filter(([ns, sel, cb]) => {\n if ((callback && cb.guid !== callback.guid) || !hasNamespaces(ns, namespaces) || (selector && selector !== sel))\n return true;\n ele.removeEventListener(name, cb);\n });\n }\n}\nfn.off = function (eventFullName, selector, callback) {\n if (isUndefined(eventFullName)) {\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n removeEvent(ele);\n });\n }\n else if (!isString(eventFullName)) {\n for (const key in eventFullName) {\n this.off(key, eventFullName[key]);\n }\n }\n else {\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [nameOriginal, namespaces] = parseEventName(eventFullName);\n const name = getEventNameBubbling(nameOriginal);\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n removeEvent(ele, name, namespaces, selector, callback);\n });\n });\n }\n return this;\n};\nfn.remove = function (comparator) {\n filtered(this, comparator).detach().off();\n return this;\n};\nfn.replaceWith = function (selector) {\n return this.before(selector).remove();\n};\nfn.replaceAll = function (selector) {\n cash(selector).replaceWith(this);\n return this;\n};\nfunction on(eventFullName, selector, data, callback, _one) {\n if (!isString(eventFullName)) {\n for (const key in eventFullName) {\n this.on(key, selector, data, eventFullName[key], _one);\n }\n return this;\n }\n if (!isString(selector)) {\n if (isUndefined(selector) || isNull(selector)) {\n selector = '';\n }\n else if (isUndefined(data)) {\n data = selector;\n selector = '';\n }\n else {\n callback = data;\n data = selector;\n selector = '';\n }\n }\n if (!isFunction(callback)) {\n callback = data;\n data = undefined;\n }\n if (!callback)\n return this;\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [nameOriginal, namespaces] = parseEventName(eventFullName);\n const name = getEventNameBubbling(nameOriginal);\n const isEventHover = (nameOriginal in eventsHover);\n const isEventFocus = (nameOriginal in eventsFocus);\n if (!name)\n return;\n this.each((i, ele) => {\n if (!isElement(ele) && !isDocument(ele) && !isWindow(ele))\n return;\n const finalCallback = function (event) {\n if (event.target[`___i${event.type}`])\n return event.stopImmediatePropagation(); // Ignoring native event in favor of the upcoming custom one\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))\n return;\n if (!selector && ((isEventFocus && (event.target !== ele || event.___ot === name)) || (isEventHover && event.relatedTarget && ele.contains(event.relatedTarget))))\n return;\n let thisArg = ele;\n if (selector) {\n let target = event.target;\n while (!matches(target, selector)) {\n if (target === ele)\n return;\n target = target.parentNode;\n if (!target)\n return;\n }\n thisArg = target;\n }\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get() {\n return thisArg;\n }\n });\n Object.defineProperty(event, 'delegateTarget', {\n configurable: true,\n get() {\n return ele;\n }\n });\n Object.defineProperty(event, 'data', {\n configurable: true,\n get() {\n return data;\n }\n });\n const returnValue = callback.call(thisArg, event, event.___td);\n if (_one) {\n removeEvent(ele, name, namespaces, selector, finalCallback);\n }\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n finalCallback.guid = callback.guid = (callback.guid || cash.guid++);\n addEvent(ele, name, namespaces, selector, finalCallback);\n });\n });\n return this;\n}\nfn.on = on;\nfunction one(eventFullName, selector, data, callback) {\n return this.on(eventFullName, selector, data, callback, true);\n}\n;\nfn.one = one;\nconst queryEncodeCRLFRe = /\\r?\\n/g;\nfunction queryEncode(prop, value) {\n return `&${encodeURIComponent(prop)}=${encodeURIComponent(value.replace(queryEncodeCRLFRe, '\\r\\n'))}`;\n}\nconst skippableRe = /file|reset|submit|button|image/i;\nconst checkableRe = /radio|checkbox/i;\nfn.serialize = function () {\n let query = '';\n this.each((i, ele) => {\n each(ele.elements || [ele], (i, ele) => {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || (checkableRe.test(ele.type) && !ele.checked))\n return;\n const value = getValue(ele);\n if (!isUndefined(value)) {\n const values = isArray(value) ? value : [value];\n each(values, (i, value) => {\n query += queryEncode(ele.name, value);\n });\n }\n });\n });\n return query.slice(1);\n};\n// @require core/types.ts\n// @require core/cash.ts\n// @require core/type_checking.ts\n// @require core/variables.ts\n// @require core/each.ts\n// @require core/extend.ts\n// @require core/find.ts\n// @require core/get_compare_function.ts\n// @require core/get_split_values.ts\n// @require core/guid.ts\n// @require core/parse_html.ts\n// @require core/unique.ts\n// @require attributes/add_class.ts\n// @require attributes/attr.ts\n// @require attributes/has_class.ts\n// @require attributes/prop.ts\n// @require attributes/remove_attr.ts\n// @require attributes/remove_class.ts\n// @require attributes/remove_prop.ts\n// @require attributes/toggle_class.ts\n// @require collection/add.ts\n// @require collection/each.ts\n// @require collection/eq.ts\n// @require collection/filter.ts\n// @require collection/first.ts\n// @require collection/get.ts\n// @require collection/index.ts\n// @require collection/last.ts\n// @require collection/map.ts\n// @require collection/slice.ts\n// @require css/css.ts\n// @require data/data.ts\n// @require dimensions/inner_outer.ts\n// @require dimensions/normal.ts\n// @require effects/hide.ts\n// @require effects/show.ts\n// @require effects/toggle.ts\n// @require events/off.ts\n// @require events/on.ts\n// @require events/one.ts\n// @require events/ready.ts\n// @require events/trigger.ts\n// @require forms/serialize.ts\n// @require forms/val.ts\n// @require manipulation/after.ts\n// @require manipulation/append.ts\n// @require manipulation/append_to.ts\n// @require manipulation/before.ts\n// @require manipulation/clone.ts\n// @require manipulation/detach.ts\n// @require manipulation/empty.ts\n// @require manipulation/html.ts\n// @require manipulation/insert_after.ts\n// @require manipulation/insert_before.ts\n// @require manipulation/prepend.ts\n// @require manipulation/prepend_to.ts\n// @require manipulation/remove.ts\n// @require manipulation/replace_all.ts\n// @require manipulation/replace_with.ts\n// @require manipulation/text.ts\n// @require manipulation/unwrap.ts\n// @require manipulation/wrap.ts\n// @require manipulation/wrap_all.ts\n// @require manipulation/wrap_inner.ts\n// @require offset/offset.ts\n// @require offset/offset_parent.ts\n// @require offset/position.ts\n// @require traversal/children.ts\n// @require traversal/closest.ts\n// @require traversal/contents.ts\n// @require traversal/find.ts\n// @require traversal/has.ts\n// @require traversal/is.ts\n// @require traversal/next.ts\n// @require traversal/next_all.ts\n// @require traversal/next_until.ts\n// @require traversal/not.ts\n// @require traversal/parent.ts\n// @require traversal/parents.ts\n// @require traversal/parents_until.ts\n// @require traversal/prev.ts\n// @require traversal/prev_all.ts\n// @require traversal/prev_until.ts\n// @require traversal/siblings.ts\n// @no-require extras/get_script.ts\n// @no-require extras/shorthands.ts\n// @require methods.ts\nexport default cash;\nexport { Cash };\n","import $ from 'cash-dom';\nexport type * from 'cash-dom';\n\ndeclare global {\n interface Window {\n $: typeof $\n }\n}\n\nwindow.$ = $;\n\nexport {$, $ as cash};\n","/**\n * Get all values in path from an object\n * @param object The object to access\n * @param pathName Access path\n * @returns All values in path\n * @example\n * const object = {\n * a: [{b: {c: 1}, d: 2}]\n * };\n *\n * deepGetPath(object, 'a[0].b.c'); // Output [[{b: {c: 1}, d: 2}], {b: {c: 1}, {c: 1}, 1]\n */\nexport function deepGetPath(object: object, pathName: string | string[]): (object | undefined)[] {\n if (object === null || object === undefined) {\n return [object, undefined];\n }\n\n if (typeof pathName === 'string') {\n pathName = pathName.split('.');\n }\n\n const fullPath = pathName.join('.');\n let context = object;\n const way = [context];\n while (typeof context === 'object' && context !== null && pathName.length) {\n let name = pathName.shift()!;\n let subName: string | undefined;\n const bracketIndex = name.indexOf('[');\n if (bracketIndex > 0 && bracketIndex < (name.length - 1) && name.endsWith(']')) {\n subName = name.substring(bracketIndex + 1, name.length - 1);\n name = name.substring(0, bracketIndex);\n }\n\n context = (context as Record)[name];\n way.push(context);\n if (subName !== undefined) {\n if (typeof context === 'object' && context !== null) {\n if (context instanceof Map) {\n context = context.get(subName);\n } else {\n context = (context as Record)[subName];\n }\n way.push(context);\n } else {\n throw new Error(`Cannot access property \"${name}[${subName}]\", the full path is \"${fullPath}\".`);\n }\n }\n }\n\n if (pathName.length) {\n throw new Error(`Cannot access property with rest path \"${pathName.join('.')}\", the full path is \"${fullPath}\".`);\n }\n\n return way;\n}\n\n/**\n * Get object inner value with dot-strings\n * @param object The object to access\n * @param pathName Access path\n * @param defaultValue Default value\n * @returns Final value\n * @example\n * const object = {\n * a: [{b: {c: 1}, d: 2}]\n * };\n *\n * deepGetPath(object, 'a[0].b.c'); // Output 1\n * deepGetPath(object, 'a[0].d'); // Output 2\n * deepGetPath(object, 'a'); // Output [{b: {c: 1}, d: 2}]\n */\nexport function deepGet(object: object, pathName: string | string[], defaultValue?: T): T | undefined {\n try {\n const way = deepGetPath(object, pathName);\n const lastValue = way[way.length - 1] as T | undefined;\n return lastValue === undefined ? defaultValue : lastValue;\n } catch (_) {\n return defaultValue;\n }\n}\n\nexport function deepCall(object: object, pathName: string | string[], args?: unknown[], thisObj?: unknown): unknown {\n const callback = deepGet(object, pathName);\n if (typeof callback === 'function') {\n return callback.apply(thisObj || object, args);\n }\n return callback;\n}\n","\n/**\n * 格式化字符串\n * @param str 要格式化的字符串\n * @param args 格式化参数\n * @returns 格式化后的字符串\n * @example 通过参数序号格式化\n * const hello = formatString('{0} {1}!', 'Hello', 'world');\n * // hello 值为 'Hello world!'\n */\nexport function formatString(str: string, ...args: unknown[]): string;\n\n/**\n * 格式化字符串\n * @param str 要格式化的字符串\n * @param obj 格式化参数\n * @returns 格式化后的字符串\n * @example 通过对象名称格式化\n * const say = formatString('Say {what} to {who}', {what: 'hello', who: 'you'});\n * // say 值为 'Say hello to you'\n */\nexport function formatString(str: string, obj: Record): string;\n\nexport function formatString(str: string, ...args: [Record] | unknown[]): string {\n if (args.length === 0) {\n return str;\n }\n if (args.length === 1 && typeof args[0] === 'object' && args[0]) {\n const obj = args[0];\n Object.keys(obj).forEach(key => {\n const value = (obj as Record)[key] ?? '';\n str = str.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), `${value}`);\n });\n return str;\n }\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i] ?? '';\n str = str.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), `${arg}`);\n }\n return str;\n}\n\n/**\n * 字节单位表\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nenum BYTE_UNITS {\n B = 1,\n KB = 1024,\n MB = 1024 * 1024,\n GB = 1024 * 1024 * 1024,\n TB = 1024 * 1024 * 1024 * 1024,\n}\n\n/**\n * 格式化字节值为包含单位的字符串\n * @param size 字节大小\n * @param fixed 保留的小数点位数\n * @param unit 单位,如果留空,则自动使用最合适的单位\n * @returns 格式化后的字符串\n */\nexport function formatBytes(size: number, fixed = 2, unit?: keyof typeof BYTE_UNITS) {\n if (Number.isNaN(size)) {\n return '?KB';\n }\n if (!unit) {\n if (size < BYTE_UNITS.KB) {\n unit = 'B';\n } else if (size < BYTE_UNITS.MB) {\n unit = 'KB';\n } else if (size < BYTE_UNITS.GB) {\n unit = 'MB';\n } else if (size < BYTE_UNITS.TB) {\n unit = 'GB';\n } else {\n unit = 'TB';\n }\n }\n\n return (size / BYTE_UNITS[unit]).toFixed(fixed) + unit;\n}\n\n/**\n * 转换带单位的字节字符串为字节数\n * @param str 带单位的字节字符串\n * @returns 字节数\n */\nexport const convertBytes = (str: string) => {\n const pattern = /^[0-9]*(B|KB|MB|GB|TB)$/;\n str = str.toUpperCase();\n const matchRes = str.match(pattern);\n if (!matchRes) {\n return 0;\n }\n const unit = matchRes[1] as keyof typeof BYTE_UNITS;\n str = str.replace(unit, '');\n return Number.parseInt(str, 10) * BYTE_UNITS[unit];\n};\n","import {$} from '../cash';\nimport {deepGet} from '@zui/helpers/src/object/deep-get';\nimport {formatString} from '@zui/helpers/src/format-string';\nimport {I18nLangMap, I18nLangCode, I18nValuesMap} from './types';\n\nlet globalLangCode = (document.documentElement.getAttribute('lang') || 'zh_cn').toLowerCase().replace('-', '_');\n\nlet globalLangMap: I18nLangMap | undefined;\n\nexport function getLangCode() {\n return globalLangCode;\n}\n\nexport function setLangCode(langCode: I18nLangCode) {\n globalLangCode = langCode.toLowerCase().replace('-', '_');\n}\n\nexport function addI18nMap(map: I18nLangMap): void;\nexport function addI18nMap(code: I18nLangCode, values: I18nValuesMap): void;\nexport function addI18nMap(codeOrMap: I18nLangCode | I18nLangMap, values?: I18nValuesMap): void {\n if (!globalLangMap) {\n globalLangMap = {};\n }\n if (typeof codeOrMap === 'string') {\n codeOrMap = {[codeOrMap]: values ?? {}};\n }\n $.extend(true, globalLangMap, codeOrMap);\n}\n\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, defaultValue?: T, langCode?: I18nLangCode, globalPrefix?: string): T | undefined;\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, args?: string | (string | number)[] | Record, defaultValue?: T, langCode?: I18nLangCode, globalPrefix?: string): T | undefined;\nexport function i18n(maps: I18nLangMap | (I18nLangMap | undefined)[] | undefined, key: string, args?: string | (string | number)[] | Record, defaultValue?: T | I18nLangCode, langCode?: I18nLangCode, globalPrefix?: string): T | undefined {\n if (!Array.isArray(maps)) {\n maps = globalLangMap ? [globalLangMap, maps] : [maps];\n } else if (globalLangMap) {\n maps.unshift(globalLangMap);\n }\n if (typeof args === 'string') {\n globalPrefix = langCode;\n langCode = defaultValue as I18nLangCode;\n defaultValue = args;\n args = undefined;\n }\n const lang = langCode || globalLangCode;\n let value: T | undefined;\n for (const map of maps) {\n if (!map) {\n continue;\n }\n const mapValues = map[lang] || map.default;\n if (!mapValues) {\n continue;\n }\n const mapKey = (globalPrefix && map === globalLangMap) ? `${globalPrefix}.${key}` : key;\n value = deepGet(mapValues, mapKey);\n if (value !== undefined) {\n break;\n }\n }\n if (value === undefined) {\n return defaultValue as T;\n }\n if (args) {\n return formatString(value as string, ...(Array.isArray(args) ? args : [args])) as T;\n }\n return value;\n}\n\nexport function getLang(key: string, args?: string | (string | number)[] | Record, defaultValue?: T, langCode?: I18nLangCode): T | undefined {\n return i18n(undefined, key, args, defaultValue, langCode);\n}\n\ni18n.addLang = addI18nMap;\ni18n.getLang = getLang;\ni18n.getCode = getLangCode;\ni18n.setCode = setLangCode;\ni18n.map = globalLangMap;\n","import {addI18nMap} from './i18n';\n\naddI18nMap({\n 'zh_cn': {\n confirm: '确定',\n save: '保存',\n cancel: '取消',\n delete: '删除',\n reset: '重置',\n add: '添加',\n copy: '复制',\n close: '关闭',\n },\n 'zh_tw': {\n confirm: '確定',\n save: '儲存',\n cancel: '取消',\n delete: '刪除',\n reset: '重置',\n add: '添加',\n Copy: '複製',\n close: '關閉',\n },\n en: {\n confirm: 'Confirm',\n save: 'Save',\n cancel: 'Cancel',\n delete: 'Delete',\n reset: 'Reset',\n add: 'Add',\n copy: 'Copy',\n close: 'Close',\n },\n});\n","import {$} from '@zui/core';\n\nimport type {AjaxBeforeSendCallback, AjaxCallbackMap, AjaxCompleteCallback, AjaxErrorCallback, AjaxFormItemValue, AjaxSetting, AjaxSuccessCallback} from './types';\n\nfunction setHeader(headers: HeadersInit, name: string, value: string) {\n if (headers instanceof Headers) {\n headers.set(name, value);\n } else if (Array.isArray(headers)) {\n headers.push([name, value]);\n } else {\n headers[name] = value;\n }\n}\n\nfunction setFormItem(formData: FormData, name: string, value: AjaxFormItemValue | AjaxFormItemValue[] | Record) {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => setFormItem(formData, name, v));\n } else if (!(value instanceof Blob) && $.isPlainObject(value)) {\n Object.entries(value).forEach(([key, v]) => {\n setFormItem(formData, `${name}[${key}]`, v);\n });\n } else {\n formData.append(name, value instanceof Blob ? value : String(value));\n }\n}\n\nfunction getDataType(contentType: string | undefined | null, accepts: Record | undefined) {\n if (contentType) {\n const map = {\n text: 'text/plain',\n html: 'text/html',\n json: 'application/json',\n ...accepts,\n };\n for (const [key, value] of Object.entries(map)) {\n if (value.split(',').map(x => x.trim()).includes(contentType)) {\n return key;\n }\n }\n }\n\n return 'text';\n}\n\nexport function createFormData(data: string | FormData | URLSearchParams | Record | [name: string, value: AjaxFormItemValue][], existingFormData?: FormData): FormData {\n const formData = existingFormData || new FormData();\n if (data) {\n if (typeof data === 'string') {\n data = new URLSearchParams(data);\n }\n if (data instanceof URLSearchParams) {\n data.forEach((value, name) => {\n setFormItem(formData, name, value);\n });\n } else if (Array.isArray(data)) {\n data.forEach(([name, value]) => {\n setFormItem(formData, name, value);\n });\n } else if (data instanceof FormData) {\n data.forEach((value, name) => {\n setFormItem(formData, name, value);\n });\n } else if ($.isPlainObject(data)) {\n Object.entries(data).forEach(([name, value]) => {\n setFormItem(formData, name, value);\n });\n }\n }\n return formData;\n}\n\nexport class Ajax {\n static globalBeforeSends: AjaxBeforeSendCallback[] = [];\n\n private declare _timeoutID: number;\n\n private _controller: AbortController;\n\n private _callbacks: {[P in keyof AjaxCallbackMap]: AjaxCallbackMap[P][];};\n\n private declare _abortError?: Error;\n\n setting: AjaxSetting;\n\n declare data: T;\n\n declare error: Error;\n\n declare response: Response;\n\n declare url: string;\n\n declare request: RequestInit;\n\n get completed() {\n return this.data !== undefined || this.error !== undefined;\n }\n\n get [Symbol.toStringTag]() {\n return 'Ajax';\n }\n\n constructor(setting: AjaxSetting) {\n this.setting = setting;\n this._controller = new AbortController();\n this._callbacks = {success: [], error: [], complete: []};\n }\n\n on(name: N, callback: AjaxCallbackMap[N]) {\n (this._callbacks[name]).push(callback);\n return this;\n }\n\n success(calback: AjaxSuccessCallback) {\n return this.on('success', calback);\n }\n\n done(calback: AjaxSuccessCallback) {\n return this.success(calback);\n }\n\n fail(calback: AjaxErrorCallback) {\n return this.on('error', calback);\n }\n\n complete(calback: AjaxCompleteCallback) {\n return this.on('complete', calback);\n }\n\n always(calback: AjaxCompleteCallback) {\n return this.complete(calback);\n }\n\n then(resolve: (data: T) => void, reject?: (error: Error) => void) {\n if (this.completed) {\n if (reject && this.error) {\n reject(this.error);\n } else {\n resolve(this.data);\n }\n } else {\n this.success((data) => resolve(data as T));\n if (reject) {\n this.fail(reject);\n }\n }\n return this;\n }\n\n catch(calback: (error: Error) => void) {\n if (this.error) {\n calback(this.error);\n return this;\n }\n return this.on('error', (error) => calback(error));\n }\n\n finally(onFinally: () => void) {\n if (this.completed) {\n onFinally();\n return this;\n }\n return this.complete(() => onFinally());\n }\n\n abort(abortError?: Error) {\n if (this.completed) {\n return false;\n }\n this._abortError = abortError;\n this._controller.abort();\n return true;\n }\n\n getResponseHeader(name: string) {\n return this.response?.headers.get(name);\n }\n\n private _init() {\n if (this.completed) {\n return;\n }\n const {\n url,\n type,\n data,\n processData = true,\n contentType,\n crossDomain,\n accepts,\n dataType,\n timeout,\n dataFilter,\n beforeSend,\n success,\n error,\n complete,\n ...initOptions\n } = this.setting;\n\n if (type) {\n initOptions.method = type;\n }\n let dataSetting = data;\n if (dataSetting) {\n if (processData) {\n dataSetting = createFormData(dataSetting);\n }\n initOptions.body = dataSetting as BodyInit;\n }\n if (crossDomain) {\n initOptions.mode = 'cors';\n }\n const headers = initOptions.headers || {};\n setHeader(headers, 'X-Requested-With', 'XMLHttpRequest');\n if (contentType) {\n setHeader(headers, 'Content-Type', contentType);\n }\n initOptions.headers = headers;\n\n if (initOptions.signal) {\n initOptions.signal.addEventListener('abort', () => {\n this.abort();\n });\n }\n\n const beforeSends = [...(this.constructor as typeof Ajax).globalBeforeSends, beforeSend];\n for (const callback of beforeSends) {\n if (!callback) {\n continue;\n }\n const result = callback.call(this, initOptions);\n if (result === false) {\n return;\n }\n if (result) {\n Object.assign(initOptions, result);\n }\n }\n\n if (success) {\n this.success(success);\n }\n if (error) {\n this.fail(error);\n }\n if (complete) {\n this.complete(complete);\n }\n initOptions.signal = this._controller.signal;\n this.url = url;\n this.request = initOptions;\n }\n\n private _emit(name: N, ...args: Parameters) {\n this._callbacks[name].forEach((callback) => {\n callback.call(this, ...(args as [arg0: Error & Response, statusText: string, arg2: string & Response]));\n });\n }\n\n async send(): Promise<[data?: D | undefined, error?: Error | undefined, response?: Response | undefined]> {\n if (this.completed) {\n return [];\n }\n this._init();\n\n const {timeout, dataType: dataTypeSetting, accepts, dataFilter, throws, jsonParser} = this.setting;\n if (timeout) {\n this._timeoutID = window.setTimeout(() => {\n this.abort(new Error('timeout'));\n }, timeout);\n }\n\n let response: Response | undefined;\n let error: Error | undefined;\n let data: unknown | undefined;\n try {\n response = await fetch(this.url, this.request);\n this.response = response;\n const {statusText} = response;\n if (response.ok) {\n const isAttachment = response.headers.get('Content-Disposition')?.startsWith('attachment');\n const dataType = isAttachment ? 'blob' : (dataTypeSetting || getDataType(response.headers.get('Content-Type'), accepts));\n if (isAttachment || dataType === 'blob' || dataType === 'file') {\n data = await response.blob();\n } else if (dataType === 'json') {\n if (typeof jsonParser === 'function') {\n data = await response.text();\n data = jsonParser(data as string);\n } else {\n data = await response.json();\n }\n } else {\n data = await response.text();\n }\n this.data = data as T;\n const filteredData = dataFilter?.(data, dataType) ?? data;\n this._emit('success', filteredData, statusText, response);\n } else {\n this.data = await response.text() as T;\n throw new Error(statusText);\n }\n } catch (err) {\n if (this.data === undefined && data !== undefined) {\n this.data = data as T;\n }\n error = err as Error;\n let skipTriggerError = false;\n if (error.name === 'AbortError') {\n if (this._abortError) {\n error = this._abortError;\n } else {\n skipTriggerError = true;\n }\n }\n this.error = error;\n if (!skipTriggerError) {\n this._emit('error', error, response?.statusText, error.message);\n }\n }\n\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n }\n\n this._emit('complete', response, response?.statusText);\n if (error && throws) {\n throw error;\n }\n return [data as D, error, response];\n }\n}\n","import {$, Cash} from '@zui/core';\nimport {Ajax} from './ajax';\nimport type {AjaxFormData, AjaxSetting, AjaxSuccessCallback} from './types';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n ajax(urlOrSetting: string | AjaxSetting, setting?: Partial): Ajax;\n\n getJSON(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Ajax;\n\n get(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string, method?: string): Ajax;\n\n post(url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string): Ajax;\n }\n\n interface Cash {\n load(this: Cash, url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Cash;\n }\n}\n\n/* Extend as $.ajax() to create ajax for cash. */\n$.ajax = (urlOrSetting: string | AjaxSetting, setting?: Partial) => {\n setting = setting || {};\n if (typeof urlOrSetting === 'string') {\n setting.url = urlOrSetting;\n } else {\n $.extend(setting, urlOrSetting);\n }\n const ajax = new Ajax(setting as AjaxSetting);\n ajax.send();\n return ajax;\n};\n\n/* Extend as $.getJSON() to create getJSON for cash. */\n$.getJSON = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback) => {\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n dataOrSuccess = undefined;\n }\n return $.ajax({\n url,\n data: dataOrSuccess,\n success,\n dataType: 'json',\n });\n};\n\n/* Extend as $.get() to create get for cash. */\n$.get = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string, method = 'GET') => {\n let success: AjaxSuccessCallback | undefined;\n let data: AjaxFormData | undefined;\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n data = undefined;\n } else {\n data = dataOrSuccess;\n }\n if (typeof successOrDataType === 'function') {\n success = successOrDataType;\n dataType = undefined;\n } else {\n dataType = successOrDataType;\n }\n return $.ajax({\n method,\n url,\n data,\n success,\n dataType,\n });\n};\n\n/* Extend as $.post() to create post for cash. */\n$.post = (url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, successOrDataType?: AjaxSuccessCallback | string, dataType?: string) => {\n return $.get(url, dataOrSuccess, successOrDataType, dataType, 'POST');\n};\n\n/* Extend as $.load() to create load for cash. */\n$.fn.load = function (this: Cash, url: string, dataOrSuccess?: AjaxFormData | AjaxSuccessCallback, success?: AjaxSuccessCallback): Cash {\n if (typeof dataOrSuccess === 'function') {\n success = dataOrSuccess;\n dataOrSuccess = undefined;\n }\n const [realUrl, selector] = url.split(' ');\n $.get(realUrl, dataOrSuccess, (data, statusText, response) => {\n if (selector) {\n data = $(data as string).find(selector).html();\n }\n $(this).html(data as string).zuiInit();\n success?.call(this, data, statusText, response);\n }, 'html');\n return this;\n};\n","import {formatString} from '@zui/helpers/src/format-string';\nimport {$} from '../cash';\nimport {Ajax} from './ajax';\nimport type {AjaxSetting, FetcherSetting} from './types';\n\nexport async function fetchData(setting: FetcherSetting, args: A = ([] as unknown as A), extraAjaxSetting?: Partial | ((ajaxSetting: AjaxSetting) => Partial), thisObj?: THIS, ajaxGetter?: (ajax: Ajax) => void): Promise {\n const ajaxSetting = {throws: true, dataType: 'json'} as AjaxSetting;\n if (typeof setting === 'string') {\n ajaxSetting.url = setting;\n } else if (typeof setting === 'object') {\n $.extend(ajaxSetting, setting);\n } else if (typeof setting === 'function') {\n const result = setting.call(thisObj as THIS, ...args);\n if (result instanceof Promise) {\n const data = await result;\n return data;\n }\n return result;\n }\n if (extraAjaxSetting) {\n $.extend(ajaxSetting, typeof extraAjaxSetting === 'function' ? extraAjaxSetting(ajaxSetting) : extraAjaxSetting);\n }\n if (ajaxSetting.url) {\n ajaxSetting.url = formatString(ajaxSetting.url, ...args);\n }\n const ajax = new Ajax(ajaxSetting);\n ajaxGetter?.(ajax);\n const [data] = await ajax.send();\n return data as T;\n}\n\nexport function isFetchSetting(setting: FetcherSetting | unknown): setting is FetcherSetting {\n return !!(setting && (typeof setting === 'string' || (typeof setting === 'object' && (setting as AjaxSetting).url) || typeof setting === 'function'));\n}\n\ndeclare module 'cash-dom' {\n interface CashStatic {\n fetch(setting: FetcherSetting, args: A, extraAjaxSetting?: Partial | ((ajaxSetting: AjaxSetting) => Partial), thisObj?: THIS, ajaxGetter?: (ajax: Ajax) => void): Promise;\n }\n}\n\n$.fetch = fetchData;\n","import {$} from '../cash';\n\nexport function nextGid() {\n return $.guid++;\n}\n","export function isDiff(value1: unknown, value2: unknown) {\n if (value1 === value2) {\n return false;\n }\n if (value1 && value2) {\n const typeOfValue1 = typeof value1;\n const typeOfValue2 = typeof value2;\n if (typeOfValue1 !== typeOfValue2) {\n return true;\n }\n if (typeOfValue1 === 'object' && typeOfValue2 === 'object') {\n const isArray1 = Array.isArray(value1);\n const isArray2 = Array.isArray(value2);\n if (isArray1 !== isArray2) {\n return true;\n }\n if (isArray1 && isArray2) {\n if (value1.length !== value2.length) {\n return true;\n }\n for (let i = 0; i < value1.length; i++) {\n if (isDiff(value1[i], value2[i])) {\n return true;\n }\n }\n return false;\n }\n\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (isDiff((value1 as Record)[key], (value2 as Record)[key])) {\n return true;\n }\n }\n return false;\n }\n if (typeOfValue1 === 'function' && typeOfValue2 === 'function') {\n return value1.toString() !== value2.toString();\n }\n }\n return value1 !== value2;\n}\n","import {isDiff} from './is-diff';\n\n/**\n * A class representing a computed value that can be cached and recomputed when its dependencies change.\n * @template T The type of the computed value.\n * @template D The type of the dependencies array.\n */\nexport class Computed {\n /**\n * The dependencies of the computed value.\n */\n protected _dependencies: D | (() => D);\n\n /**\n * The function that computes the value.\n */\n protected _compute: () => T;\n\n /**\n * The cached value of the computed value.\n */\n protected _value?: T;\n\n /**\n * The last dependencies array used to compute the value.\n */\n protected _lastDependencies: D | undefined;\n\n /**\n * Creates a new Computed instance.\n * @param compute The function that computes the value.\n * @param dependencies The dependencies of the computed value.\n */\n constructor(compute: () => T, dependencies: D | (() => D)) {\n this._compute = compute;\n this._dependencies = dependencies;\n }\n\n /**\n * Gets the computed value.\n */\n get value(): T {\n return this.compute();\n }\n\n /**\n * Gets the cached value of the computed value.\n */\n get cache(): T {\n return this._lastDependencies ? this._value as T : this.compute();\n }\n\n /**\n * Set the dependencies of the computed value.\n *\n * @param dependencies The dependencies of the computed value.\n * @returns The computed value.\n */\n depends(dependencies: D | (() => D)) {\n this._dependencies = dependencies;\n return this;\n }\n\n /**\n * Forces the computed value to be recomputed.\n * @param dependencies The new dependencies to use for recomputing the value.\n * @returns The recomputed value.\n */\n forceCompute(dependencies?: D | (() => D)) {\n this._lastDependencies = undefined;\n return this.compute(dependencies);\n }\n\n /**\n * Computes the value of the computed value.\n * @param dependencies The dependencies to use for computing the value.\n * @returns The computed value.\n */\n compute(dependencies?: D | (() => D)): T {\n if (dependencies !== undefined) {\n this._dependencies = dependencies;\n }\n\n dependencies = this._dependencies;\n if (typeof dependencies === 'function') {\n dependencies = dependencies();\n }\n\n // Check if dependencies changed.\n const lastDependencies = this._lastDependencies;\n if (!lastDependencies || dependencies.some((dept, index) => {\n if (dept instanceof Computed) {\n return dept.value !== lastDependencies[index];\n }\n return isDiff(dept, lastDependencies[index]);\n })) {\n this._value = this._compute();\n this._lastDependencies = dependencies.map(x => x instanceof Computed ? x.cache : x) as D;\n }\n\n return this._value as T;\n }\n}\n","import {$, Cash} from '../cash';\n\n/**\n * Classname like.\n */\nexport type ClassNameLike = string | null | undefined | boolean | {[key: string]: unknown} | (() => ClassNameLike) | ClassNameLike[];\n\n/**\n * Classname setting.\n */\nexport type ClassNameSetting = [name: string, toggle: boolean];\n\n/**\n * Get class name setting list from arguments.\n *\n * @param args Classname like arguments.\n * @returns Classname setting list.\n */\nexport function getClassList(...args: ClassNameLike[]): ClassNameSetting[] {\n const settings: ClassNameSetting[] = [];\n\n /* Indexes map to keep classname's order. */\n const indexes = new Map();\n\n const setSetting = (name: string | [name: string, toggle?: unknown], toggle?: unknown) => {\n if (Array.isArray(name)) {\n toggle = name[1];\n name = name[0];\n }\n if (!name.length) {\n return;\n }\n const index = indexes.get(name);\n if (typeof index === 'number') {\n settings[index][1] = !!toggle;\n } else {\n indexes.set(name, settings.length);\n settings.push([name, !!toggle]);\n }\n };\n\n args.forEach((arg) => {\n if (typeof arg === 'function') {\n arg = arg();\n }\n\n if (Array.isArray(arg)) {\n getClassList(...arg).forEach(setSetting);\n } else if (arg && typeof arg === 'object') {\n Object.entries(arg).forEach(setSetting);\n } else if (typeof arg === 'string') {\n arg.split(' ').forEach(name => setSetting(name, true));\n }\n });\n\n return settings.sort((a, b) => (indexes.get(a[0]) || 0) - (indexes.get(b[0]) || 0));\n}\n\n/**\n * Get classname string from arguments.\n *\n * @param args Classname like arguments.\n * @returns Classname string.\n */\nexport const classes = (...args: ClassNameLike[]): string => {\n return getClassList(...args).reduce((classList, [name, toggle]) => {\n if (toggle) {\n classList.push(name);\n }\n return classList;\n }, []).join(' ');\n};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n classes(...args: ClassNameLike[]): string;\n }\n\n interface Cash {\n setClass(merge: ClassNameLike | boolean, ...args: ClassNameLike[]): Cash;\n }\n}\n\n/* Extend as $.classes() */\n$.classes = classes;\n\n/* Extend as $.fn.setClass() */\n$.fn.setClass = function (this: Cash, merge: ClassNameLike | boolean, ...args: ClassNameLike[]): Cash {\n return this.each((_, ele) => {\n const $ele = $(ele);\n if (merge === true) {\n $ele.attr('class', classes($ele.attr('class'), ...args));\n } else {\n $ele.addClass(classes(merge, ...args));\n }\n });\n};\n","import {$, Cash} from '../cash';\n\n/**\n * Cache for data associated with the target object.\n */\nconst cache = new WeakMap>();\n\n/**\n * Store data associated with the target object with key value in the cache.\n *\n * @param target Target object to store data.\n * @param key Key to store.\n * @param value Value to store.\n */\nexport function storeData(target: object, key: string | null, value?: unknown): void;\n\n/**\n * Store data associated with the target object in the cache.\n *\n * @param target Target object to store data.\n * @param data Data to store.\n */\nexport function storeData(target: object, data: Record): void;\n\n/**\n * Store data associated with the target object in the cache.\n *\n * @param target Target object to store data.\n * @param keyOrData Key or data to store.\n * @param value Value to store.\n */\nexport function storeData(target: object, keyOrData: string | Record | null, value?: unknown): void {\n const hasCache = cache.has(target);\n const data = hasCache ? cache.get(target)! : {};\n if (typeof keyOrData === 'string') {\n data[keyOrData] = value;\n } else if (keyOrData === null) {\n Object.keys(data).forEach((key) => {\n delete data[key];\n });\n } else {\n Object.assign(data, keyOrData);\n }\n\n Object.keys(data).forEach((key) => {\n if (data[key] === undefined) {\n delete data[key];\n }\n });\n\n if (Object.keys(data).length) {\n if (!hasCache && target instanceof Element) {\n Object.assign(data, $(target).dataset(), data);\n }\n cache.set(target, data);\n } else {\n cache.delete(target);\n }\n}\n\n/**\n * Take data associated with the target object from the cache.\n *\n * @param target Target object to take data.\n */\nexport function takeData(target: object): Record;\n\n/**\n * Take data associated by key with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n */\nexport function takeData(target: object, key: string): unknown;\n\n/**\n * Take data associated by key with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n * @param mergeElementData Whether to merge element dataset.\n */\nexport function takeData(target: object, key: string | undefined, mergeElementData: boolean): unknown;\n\n/**\n * Take data associated with the target object from the cache.\n *\n * @param target Target object to take data.\n * @param key Key to take.\n * @param mergeElementData Whether to merge element dataset.\n * @returns Data associated with the target object.\n */\nexport function takeData(target: object, key?: string, mergeElementData?: boolean): unknown {\n let data = cache.get(target) || {};\n if (mergeElementData && target instanceof Element) {\n data = Object.assign({}, $(target).dataset(), data);\n }\n if (key === undefined) {\n return data;\n }\n return data[key];\n}\n\n/**\n * Clear data associated with the target object from the cache.\n */\nexport function clearData(target: object): void {\n cache.delete(target);\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n dataset(): Record | undefined;\n dataset(name: string): unknown | undefined;\n dataset(name: string, value: unknown): Cash;\n dataset(dataset: Record): Cash;\n\n removeData(name?: string): Cash;\n }\n}\n\n/* Backup the origin $.fn.data method. */\n$.fn.dataset = $.fn.data;\n\n/* Extend as $.fn.data() */\n$.fn.data = function (this: Cash, ...args: (string | Record | unknown)[]) {\n const [data, value] = args;\n if (!args.length || (args.length === 1 && typeof data === 'string')) {\n if (!this.length) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return takeData(this[0]!, data as string, true) as any;\n }\n return this.each((_, ele) => {\n return storeData(ele, data as string, value);\n });\n};\n\n/* Extend as $.fn.removeData() */\n$.fn.removeData = function (this: Cash, name: string | null = null) {\n return this.each((_, ele) => {\n return storeData(ele, name);\n });\n};\n","export function evalValue(value: string, ...args: unknown[]): T {\n if (value.includes('RAWJS')) {\n value = value.split('\"RAWJS<').join('').split('>RAWJS\"').join('').split('').join('\"').split('').join('\\n');\n }\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const func = new Function(`return ${value}`);\n return func(...args);\n}\n\nexport function parseRawData(data: string, ...args: unknown[]): T {\n if (data.includes('RAWJS')) {\n return evalValue(data, ...args);\n }\n\n return JSON.parse(data);\n}\n","import {$, Cash, Selector} from '../cash';\nimport {evalValue} from './raw-data';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n z(): Record | undefined;\n z(name: string): unknown | undefined;\n z(name: string, value: unknown): Cash;\n z(data: Record): Cash;\n }\n}\n\ntype ZDataGetterOptions = {\n prefix?: string;\n evalValue?: boolean | string[];\n evalArgs?: unknown[];\n json?: boolean;\n getter?: (name: string, value: unknown) => unknown;\n};\n\nexport function getZData(selector: Selector, prefixOrOptions?: ZDataGetterOptions | string): Record | undefined {\n const element = $(selector)[0];\n if (!element) {\n return;\n }\n const {prefix, getter, evalValue: evalValueSetting, json = true, evalArgs = []} = {\n prefix: 'z-',\n ...(typeof prefixOrOptions === 'string' ? {prefix: prefixOrOptions} : prefixOrOptions),\n };\n const evalValueSet = Array.isArray(evalValueSetting) ? new Set(evalValueSetting) : undefined;\n return Array.from(element.attributes).reduce>((data, attribute) => {\n let {name} = attribute;\n const {value} = attribute;\n let finalValue: unknown = value;\n if (name.startsWith(prefix)) {\n name = name.slice(prefix.length).replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n if (getter) {\n finalValue = getter(name, value);\n } else {\n try {\n if ((evalValueSetting && (!evalValueSet || evalValueSet.has(name))) || (evalValueSetting === undefined && value.includes('RAWJS'))) {\n finalValue = evalValue(value, ...evalArgs);\n } else if (json) {\n finalValue = JSON.parse(value);\n }\n } catch (error) {\n // Ignore.\n }\n }\n data[name] = finalValue;\n }\n return data;\n }, {});\n}\n\nexport function setZData(selector: Selector, data: Record, prefix = 'z-') {\n const $element = $(selector);\n Object.keys(data).forEach((name) => {\n let value = data[name];\n if (typeof value === 'function') {\n value = `RAWJS<${value}>RAWJS`;\n }\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n name = name.replace(/[A-Z]/g, (g) => `-${g.toLowerCase()}`);\n $element.attr(`${prefix}${name}`, value as string);\n });\n}\n\nfunction z(): Record | undefined;\nfunction z(name: string): unknown | undefined;\nfunction z(name: string, value: unknown): Cash;\nfunction z(data: Record): Cash;\nfunction z(this: Cash, ...args: unknown[]): Record | unknown | Cash | undefined {\n const argsLength = args.length;\n if (!argsLength) {\n return getZData(this);\n }\n if (argsLength === 1) {\n const [nameOrData] = args;\n if (typeof nameOrData === 'string') {\n return getZData(this)?.[nameOrData];\n }\n if ($.isPlainObject(nameOrData)) {\n setZData(this, nameOrData);\n }\n return this;\n }\n setZData(this, {[args[0] as string]: args[1]});\n return this;\n}\n\n/* Extend as $.fn.z() */\n$.fn.z = z;\n","import {$, Cash} from '../cash';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n _attr(): undefined;\n _attr(attrs: string): string | null;\n _attr(attrs: string, value: string): this;\n _attr(attrs: Record): this;\n\n attr(attrs: string, value: string | null): Cash;\n attr(attrs: Record): Cash;\n }\n}\n\n/* Backup the origin $.fn.attr() method. */\n$.fn._attr = $.fn.attr;\n\n/* Extend the attr method. */\n$.fn.extend({\n attr(this: Cash, ...args: (string | Record | null)[]): Cash | string | null | undefined {\n const [attrs, value] = args;\n if (!args.length || (args.length === 1 && typeof attrs === 'string')) {\n // eslint-disable-next-line prefer-spread\n return this._attr.apply(this, args as [attrs: Record]);\n }\n if (typeof attrs === 'object') {\n if (attrs) {\n Object.keys(attrs).forEach((key) => {\n const val = attrs[key];\n if (val === null) {\n this.removeAttr(key);\n } else {\n this._attr(key, val);\n }\n });\n }\n return this;\n }\n if (value === null) {\n return this.removeAttr(attrs as string);\n }\n return this._attr(attrs as string, value as string);\n },\n});\n","import {$} from '../cash';\n\n/**\n * Cash event.\n */\ntype CashEvent = Exclude[0], string>;\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n Event(event: string, data?: unknown): CashEvent;\n }\n}\n\n/* Extend as $.Event() to create custom event for cash. */\nif (!$.Event) {\n $.Event = (event: string, data?: unknown): CashEvent => {\n const [name, ...namespaces] = event.split('.');\n const eventObject = new Event(name, {\n bubbles: true,\n cancelable: true,\n });\n (eventObject as Event & {namespace: string}).namespace = namespaces.join('.');\n (eventObject as Event & {___ot: string}).___ot = name;\n (eventObject as Event & {___td: unknown}).___td = data;\n return eventObject as unknown as CashEvent;\n };\n}\n","export const delay = (ms: number, setTimerID?: (timerID: number) => void) => new Promise(resolve => {\n const id = window.setTimeout(resolve, ms);\n if (setTimerID) {\n setTimerID(id);\n }\n});\n","import {$} from '../cash';\n\nexport const shareData: Record = {};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n share: Record;\n }\n}\n\n/** Define $.share helper. */\n$.share = shareData;\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},v=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function b(n){return n.children}function k(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));M.__r=0}function P(n,l,u,t,i,o,r,f,e,c,s){var a,p,y,d,w,_=t&&t.__k||v,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i).__=n,i.__b=n.__b+1,o=null,-1!==(f=i.__i=L(i,u,r,s))&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f==r-1?a--:f==r+1?a++:(f>r?a--:a++,i.__u|=65536))):i=n.__k[t]=null;if(s)for(t=0;t(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.forEach(function(n){n.__e=!0,S(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},k.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),S(this))},k.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),S(this))},k.prototype.render=b,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},M.__r=0,e=0,c=F(!1),s=F(!0),a=0;export{k as Component,b as Fragment,E as cloneElement,G as createContext,_ as createElement,m as createRef,_ as h,D as hydrate,t as isValidElement,l as options,B as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import {ComponentChildren, toChildArray} from 'preact';\nimport {$} from '../cash';\n\nexport function mergeProps = Record>(props: Record, ...args: unknown[]) {\n args.forEach(arg => {\n if (!arg || typeof arg !== 'object') {\n return;\n }\n Object.keys(arg as Partial).forEach(key => {\n let value = (arg as Record)[key];\n const oldValue = props[key];\n if (value === oldValue) {\n return;\n }\n if (oldValue !== undefined) {\n if (key === 'className' || key.endsWith('Class')) {\n value = [oldValue, value];\n } else if (key === 'children') {\n value = [...toChildArray(oldValue), ...toChildArray(value as ComponentChildren)];\n } else if (typeof oldValue == 'object' && (key === 'style' || key.endsWith('Style') || key === 'attrs' || key.endsWith('Attrs') || key === 'props')) {\n value = $.extend(oldValue, value);\n }\n }\n props[key] = value;\n });\n });\n return props;\n}\n\nexport function removeUndefinedProps(props: Record) {\n Object.keys(props).forEach(key => {\n if (props[key] === undefined) {\n delete props[key];\n }\n });\n return props;\n}\n","import {$, Cash, Selector} from '../cash';\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n disableScroll(disable?: boolean): Cash;\n enableScroll(enable?: boolean): Cash;\n }\n}\n\nexport function disableScroll(selector: Selector, disable = true): void {\n const $element = $(selector);\n const element = $element[0] as HTMLElement;\n const dataName = 'zui-disable-scroll';\n if (disable) {\n if ($element.data(dataName)) {\n return;\n }\n if (($element.css('scrollbar-gutter') || '').includes('stable')) {\n $element.data(dataName, {overflow: $element.css('overflow')}).css('overflow', 'hidden');\n return;\n }\n const scrollbarWidth = (element === document.body || $element.is('html')) ? (window.innerWidth - document.body.clientWidth) : (element.offsetWidth - element.clientWidth);\n if (!scrollbarWidth) {\n return;\n }\n const paddingRight = $element.css('paddingRight') || '0';\n $element.data(dataName, {\n paddingRight: paddingRight,\n overflow: $element.css('overflow'),\n }).css({\n paddingRight: `${scrollbarWidth + Number.parseInt(paddingRight, 10)}px`,\n overflow: 'hidden',\n });\n } else {\n const oldStyle = $element.data(dataName);\n if (!oldStyle) {\n return;\n }\n $element.css(oldStyle).removeData(dataName);\n }\n}\n\n/* Extend as $.fn.disableScroll() */\n$.fn.disableScroll = function (this: Cash, disable = true): Cash {\n return this.each((_, ele) => {\n disableScroll(ele, disable);\n });\n};\n\n$.fn.enableScroll = function (this: Cash, enable = true): Cash {\n return this.disableScroll(!enable);\n};\n","import {$, Cash} from '../cash';\nimport {evalValue} from './raw-data';\nimport {deepGet} from '@zui/helpers/src/object/deep-get';\nimport {getZData} from './z';\n\nexport type GlobalEventOptions = {\n on: string;\n selector?: string;\n prevent?: boolean;\n stop?: boolean;\n call?: string | ((...args: unknown[]) => void);\n self?: boolean;\n params?: unknown[] | string;\n once?: boolean;\n if?: string | ((...args: unknown[]) => boolean);\n do?: string | ((...args: unknown[]) => void);\n [option: string]: unknown;\n};\n\nfunction processGlobalEvent($element: Cash, event: Event, options: GlobalEventOptions) {\n if (!(options.on as string || 'click').split(' ').includes(event.type)) {\n return;\n }\n const $target = options.selector ? $(event.target as HTMLElement).closest(options.selector as string) : $element;\n if (!$target.length) {\n return;\n }\n const parseBool = (value: unknown) => {\n return value === '' ? true : value;\n };\n const parseVal = (value: unknown) => {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n // eslint-disable-next-line no-empty\n } catch (_) {}\n }\n return value;\n };\n if (parseBool(options.once)) {\n if (options.onceCalled) {\n return;\n }\n $element.dataset('once-called', true);\n }\n if (parseBool(options.prevent)) {\n event.preventDefault();\n }\n if (parseBool(options.stop)) {\n event.stopPropagation();\n }\n if (parseBool(options.self) && event.currentTarget !== event.target) {\n return;\n }\n\n const runParams: [string, unknown][] = [['$element', $element], ['event', event], ['options', options], ['$target', $target]];\n const runCode = (code: string | ((...args: unknown[]) => boolean)) => {\n if (typeof code === 'function') {\n return code(...runParams);\n }\n return $.runJS(code as string, ...runParams);\n };\n if (options.if !== undefined && !runCode(options.if)) {\n return;\n }\n\n const call = options.call;\n if (call) {\n let callback: unknown;\n if (typeof call === 'string') {\n const isFuncName = /^[$A-Z_][0-9A-Z_$.]*$/i.test(call);\n callback = isFuncName ? deepGet(window, call) : runCode(call);\n } else {\n callback = call;\n }\n if (typeof callback === 'function') {\n const params: unknown[] = [];\n const paramsOption = options.params;\n options.params = params;\n if (typeof paramsOption === 'string' && paramsOption.length) {\n if (paramsOption[0] === '[') {\n params.push(...(parseVal(paramsOption) as unknown[]));\n } else {\n params.push(...paramsOption.split(', ').map(x => {\n x = x.trim();\n if (x === '$element') return $element;\n if (x === 'event') return event;\n if (x === 'options') return options;\n if (x.startsWith('$element.') || x.startsWith('event.') || x.startsWith('options.')) return runCode(x);\n return parseVal(x);\n }));\n }\n } else if (Array.isArray(paramsOption)) {\n params.push(...paramsOption);\n } else {\n params.push(paramsOption);\n }\n callback(...params);\n }\n }\n\n if (options.do) {\n runCode(options.do as string);\n }\n}\n\n/**\n * Handle global event.\n * @param event The event object\n * @example\n * ```html\n * Click or changed\n * console.log('clicked or changed'), if: () => confirm('continue?')}\">Click or changed\n * Click\n * Click or changed\n * console.log('clicked')}\">Click or changed\n *\n * [data-on] is deprecated\n * ```\n */\nfunction handleGlobalEvent(this: Cash, event: Event) {\n const $element = $(this);\n const type = event.type;\n const zuiOn = $element.attr('zui-on');\n if (zuiOn) {\n const [events, code] = zuiOn.split('~').map(x => x.trim());\n if (events && events.split(' ').includes(type)) {\n processGlobalEvent($element, event, $.extend({\n on: events,\n }, code ? (code.startsWith('{') ? evalValue(code) : {do: code}) : getZData($element, {prefix: 'data-', evalValue: ['call', 'if', 'do']})));\n }\n }\n const zuiOnEvent = $element.attr(`zui-on-${type}`);\n if (zuiOnEvent) {\n processGlobalEvent($element, event, $.extend({\n on: type,\n }, zuiOnEvent.startsWith('{') ? evalValue(zuiOnEvent) : {do: zuiOnEvent}));\n }\n\n const dataOn = $element.attr('data-on');\n if (dataOn && dataOn.split(' ').includes(type)) {\n processGlobalEvent($element, event, getZData($element, {prefix: 'data-', evalValue: ['call', 'if', 'do']}) as GlobalEventOptions);\n }\n}\n\nexport function registerGlobalListener(events: string[]) {\n $(document).off('.zui.global').on(events.map(event => `${event}.zui.global`).join(' '), `[zui-on],${events.map(x => `[zui-on-${x}]`)},[data-on]`, handleGlobalEvent);\n}\n\n$(() => {\n registerGlobalListener(['click', 'change', 'inited']);\n});\n","export type SizeSetting = number | `${number}%` | `${number}px` | `${number}/${number}` | (string & {}) | ((...args: A) => SizeSetting);\n\nexport function parseSize(size: SizeSetting, callbackArgs?: A): [value: number, type?: 'px' | '%'] {\n if (typeof size === 'function') {\n return parseSize(size(...(callbackArgs || [])));\n }\n if (typeof size === 'number') {\n return [size];\n }\n let match = size.match(/(\\d+)(%|px)?/);\n if (match) {\n return [parseInt(match[1]), match[2] as 'px' | '%'];\n }\n match = size.match(/(\\d+)\\/(\\d+)/);\n if (match) {\n return [100 * parseInt(match[1]) / parseInt(match[2]), '%'];\n }\n return [NaN];\n}\n\nexport function toCssSize(size: SizeSetting | undefined | null, callbackArgs?: A): string | null {\n if (size === undefined || size === null) {\n return null;\n }\n const [val, unit = 'px'] = parseSize(size, callbackArgs);\n if (Number.isNaN(val)) {\n return typeof size === 'string' ? size : null;\n }\n return `${val}${unit}`;\n}\n","export async function downloadFile(file: Blob | Response | string, fileName?: string): Promise {\n if (file instanceof Blob) {\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(file);\n if (fileName) {\n link.download = decodeURIComponent(fileName);\n }\n link.click();\n link.remove();\n return file;\n }\n if (file instanceof Response) {\n const blob = await file.blob();\n fileName = fileName || file.headers.get('Content-Disposition')?.split(';')[1]?.split('=')[1]?.replace(/\"/g, '');\n return downloadFile(blob, fileName);\n }\n const response = await fetch(file);\n return downloadFile(response);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {$, type Cash, type Selector} from '../cash';\n\ntype EventCallback = {\n (event: any, data?: any): any;\n guid?: number;\n};\n\nexport class Bus {\n protected _$target: Cash;\n\n constructor(target: Selector) {\n this._$target = $(target);\n }\n\n on(events: Record): this;\n on(events: Record, selector: string): this;\n on(events: Record, data: any): this;\n on(events: Record, selector: string | null | undefined, data: any): this;\n on(events: string, callback: EventCallback): this;\n on(events: string, selector: string, callback: EventCallback): this;\n on(events: string, data: any, callback: EventCallback): this;\n on(events: string, selector: string | null | undefined, data: any, callback: EventCallback, _one?: boolean): this;\n on(...args: any[]): this {\n this._$target.on(...(args as Parameters));\n return this;\n }\n\n one(events: Record): this;\n one(events: Record, selector: string): this;\n one(events: Record, data: any): this;\n one(events: Record, selector: string | null | undefined, data: any): this;\n one(events: string, callback: EventCallback): this;\n one(events: string, selector: string, callback: EventCallback): this;\n one(events: string, data: any, callback: EventCallback): this;\n one(events: string, selector: string | null | undefined, data: any, callback: EventCallback): this;\n one(...args: any[]): this {\n this._$target.one(...(args as Parameters));\n return this;\n }\n\n off(): this;\n off(events: string): this;\n off(events: Record): this;\n off(events: string, callback: EventCallback): this;\n off(events: string, selector: string, callback: EventCallback): this;\n off(...args: any[]): this {\n this._$target.off(...(args as Parameters));\n return this;\n }\n\n trigger(event: Event | string, data?: any): this;\n trigger(...args: any[]): this {\n this._$target.trigger(...(args as Parameters));\n return this;\n }\n}\n\nexport const bus = new Bus(document);\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n bus: Bus;\n\n on(events: Record): Bus;\n on(events: Record, selector: string): Bus;\n on(events: Record, data: any): Bus;\n on(events: Record, selector: string | null | undefined, data: any): Bus;\n on(events: string, callback: EventCallback): Bus;\n on(events: string, selector: string, callback: EventCallback): Bus;\n on(events: string, data: any, callback: EventCallback): Bus;\n on(events: string, selector: string | null | undefined, data: any, callback: EventCallback, _one?: boolean): Bus;\n\n one(events: Record): Bus;\n one(events: Record, selector: string): Bus;\n one(events: Record, data: any): Bus;\n one(events: Record, selector: string | null | undefined, data: any): Bus;\n one(events: string, callback: EventCallback): Bus;\n one(events: string, selector: string, callback: EventCallback): Bus;\n one(events: string, data: any, callback: EventCallback): Bus;\n one(events: string, selector: string | null | undefined, data: any, callback: EventCallback): Bus;\n\n off(): Bus;\n off(events: string): Bus;\n off(events: Record): Bus;\n off(events: string, callback: EventCallback): Bus;\n off(events: string, selector: string, callback: EventCallback): Bus;\n\n trigger(event: Event | string, data?: any): Bus;\n }\n}\n\n$.bus = bus;\n$.on = bus.on.bind(bus);\n$.one = bus.one.bind(bus);\n$.off = bus.off.bind(bus);\n$.trigger = bus.trigger.bind(bus);\n","var t=[\"Shift\",\"Meta\",\"Alt\",\"Control\"],e=\"object\"==typeof navigator?navigator.platform:\"\",n=/Mac|iPod|iPhone|iPad/.test(e),r=n?\"Meta\":\"Control\",o=\"Win32\"===e?[\"Control\",\"Alt\"]:n?[\"Alt\"]:[];function i(t,e){return\"function\"==typeof t.getModifierState&&(t.getModifierState(e)||o.includes(e)&&t.getModifierState(\"AltGraph\"))}function a(t){return t.trim().split(\" \").map(function(t){var e=t.split(/\\b\\+/),n=e.pop();return[e=e.map(function(t){return\"$mod\"===t?r:t}),n]})}function u(e,n){var r;void 0===n&&(n={});var o=null!=(r=n.timeout)?r:1e3,u=Object.keys(e).map(function(t){return[a(t),e[t]]}),c=new Map,f=null;return function(e){e instanceof KeyboardEvent&&(u.forEach(function(n){var r=n[0],o=n[1],a=c.get(r)||r;!function(e,n){return!(n[1].toUpperCase()!==e.key.toUpperCase()&&n[1]!==e.code||n[0].find(function(t){return!i(e,t)})||t.find(function(t){return!n[0].includes(t)&&n[1]!==t&&i(e,t)}))}(e,a[0])?i(e,e.key)||c.delete(r):a.length>1?c.set(r,a.slice(1)):(c.delete(r),o(e))}),f&&clearTimeout(f),f=setTimeout(c.clear.bind(c),o))}}function c(t,e,n){var r;void 0===n&&(n={});var o=null!=(r=n.event)?r:\"keydown\",i=u(e,n);return t.addEventListener(o,i),function(){t.removeEventListener(o,i)}}export{u as createKeybindingsHandler,a as parseKeybinding,c as tinykeys};\n//# sourceMappingURL=tinykeys.module.js.map\n","import {tinykeys, createKeybindingsHandler, type KeyBindingMap, type KeyBindingHandlerOptions} from 'tinykeys';\nimport {$, type Selector, Cash} from '../cash';\n\nexport type HotkeysBindingOptions = KeyBindingHandlerOptions & {\n scope?: string;\n event?: 'keydown' | 'keyup' | 'keypress';\n when?: (event: KeyboardEvent) => boolean;\n};\n\nexport type HotkeysBindingMap = KeyBindingMap;\n\nexport type HotkeyBindingCallback = (event: KeyboardEvent) => void;\n\nexport type HotkeySetting = {\n keys: string | string[];\n handler: HotkeyBindingCallback;\n optional?: boolean;\n};\n\nexport type HotkeyName = string;\n\nexport type HotkeysMap = Record;\n\nexport type HotkeysSettings = boolean | Record;\n\nexport function getHotkeysMap(settings: HotkeysSettings, defaultMap: HotkeysMap = {}): HotkeysBindingMap | undefined {\n if (!settings) {\n return;\n }\n\n const map = Object.keys(defaultMap).reduce((currentMap, name) => {\n if (!defaultMap[name].optional) {\n currentMap[name] = {\n ...defaultMap[name],\n };\n }\n return currentMap;\n }, {});\n Object.keys(settings).forEach((name) => {\n const setting = (settings as Record)[name];\n if (!setting) {\n delete map[name];\n } else if (setting === true) {\n if (defaultMap[name]) {\n map[name] = {\n ...defaultMap[name],\n };\n }\n } else {\n map[name] = setting;\n }\n });\n\n return Object.keys(map).reduce((bindingMap, name) => {\n const {keys, handler} = map[name];\n if (typeof keys === 'string') {\n bindingMap[keys] = handler;\n } else {\n keys.forEach((key) => {\n bindingMap[key] = handler;\n });\n }\n return bindingMap;\n }, {});\n}\n\nexport function bindHotkeys(selector: Selector, bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions) {\n const {timeout, event = 'keydown', scope, when} = options || {};\n const handler = createKeybindingsHandler(bindingMap, {timeout});\n const namespace = `.zui.hotkeys${scope ? `.${scope}` : ''}`;\n const composingDataKey = 'zui-hotkeys-composing';\n return $(selector).on(`${event}${namespace}`, function (e: KeyboardEvent) {\n if (when && when(e) === false) {\n return;\n }\n if ($(e.target as HTMLElement).data(composingDataKey)) {\n return;\n }\n handler(e);\n }).on(`compositionstart${namespace}`, (e: Event) => {\n $(e.target as HTMLElement).data(composingDataKey, true);\n }).on(`compositionend${namespace}`, (e: Event) => {\n $(e.target as HTMLElement).removeData(composingDataKey);\n });\n}\n\nexport function unbindHotkeys(selector: Selector, scope?: string) {\n return $(selector).off(`.zui.hotkeys${scope ? `.${scope}` : ''}`);\n}\n\nexport const hotkeys = tinykeys;\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n hotkeys(bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): void;\n\n unbindHotkeys(scope?: string): void;\n }\n\n interface Cash {\n hotkeys(bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): Cash;\n\n unbindHotkeys(scope?: string): Cash;\n }\n}\n\n/* Extend $.fn.hotkeys(). */\n$.fn.hotkeys = function (this: Cash, bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): Cash {\n return bindHotkeys(this, bindingMap, options);\n};\n\n/* Extend $.fn.unbindHotkeys. */\n$.fn.unbindHotkeys = function (this: Cash, scope?: string): Cash {\n return unbindHotkeys(this, scope);\n};\n\n/* Extend $.hotkeys(). */\n$.hotkeys = function (bindingMap: HotkeysBindingMap, options?: HotkeysBindingOptions): void {\n bindHotkeys(window, bindingMap, options);\n};\n\n/* Extend $.unbindHotkeys. */\n$.unbindHotkeys = function (scope?: string): void {\n unbindHotkeys(window, scope);\n};\n","import {$, Cash, type Selector} from '../cash';\n\nexport type EnterFullscreenOptions = {\n target: Selector;\n onError?: (error: Error) => void;\n onSuccess?: () => void;\n afterEnter?: (event: Event) => void;\n afterExit?: (event: Event) => void;\n};\n\nexport function getFullscreenElement() {\n return document.fullscreenElement || (document as {webkitFullscreenElement?: typeof document.fullscreenElement}).webkitFullscreenElement || (document as {mozFullScreenElement?: typeof document.fullscreenElement}).mozFullScreenElement;\n}\n\nexport async function enterFullscreen(options: Selector | EnterFullscreenOptions) {\n if (typeof options === 'string' || options instanceof Element || options instanceof $) {\n options = {target: options as Selector};\n }\n const {target, onError, onSuccess, afterExit, afterEnter} = options as EnterFullscreenOptions;\n const $target = $(target);\n const element = $target[0] as Element;\n if (!element) {\n return;\n }\n const requestMethod = element.requestFullscreen || (element as {webkitRequestFullscreen?: typeof element.requestFullscreen}).webkitRequestFullscreen || (element as {mozRequestFullScreen?: typeof element.requestFullscreen}).mozRequestFullScreen;\n if (!requestMethod) {\n onError?.call(element, new Error('[ZUI] The browser does not support full screen feature.'));\n return;\n }\n\n try {\n await requestMethod.call(element);\n onSuccess?.call(element);\n $(element).off('.zui.fullscreen');\n if (afterExit) {\n $target.on('exitFullscreen.zui.fullscreen', afterExit);\n }\n if (afterEnter) {\n $target.on('enterFullscreen.zui.fullscreen', afterEnter);\n }\n } catch (error) {\n onError?.call(element, error as Error);\n }\n\n if (!(document as {zuiBindFullscreenChange?: boolean}).zuiBindFullscreenChange) {\n (document as {zuiBindFullscreenChange?: boolean}).zuiBindFullscreenChange = true;\n $(document).on('fullscreenchange.zui webkitfullscreenchange.zui mozfullscreenchange.zui', (event) => {\n const fullscreenElement = getFullscreenElement();\n let triggerElement: Element | Document | null | undefined = fullscreenElement;\n if (fullscreenElement) {\n $(fullscreenElement).addClass('is-in-fullscreen');\n } else {\n triggerElement = $(document).find('.is-in-fullscreen')[0] || document;\n $(triggerElement).removeClass('is-in-fullscreen');\n }\n $('body').toggleClass('has-in-fullscreen', !!fullscreenElement);\n const data = {event, target: triggerElement, fullscreenElement};\n $(triggerElement).trigger(fullscreenElement ? 'enterFullscreen' : 'exitFullscreen', data).trigger('toggleFullscreen', data);\n });\n }\n}\n\nexport async function toggleFullscreen(options?: Selector | EnterFullscreenOptions | false) {\n const fullscreenElement = getFullscreenElement();\n if (options === false) {\n if (!!fullscreenElement === options) {\n return options;\n }\n }\n\n if (fullscreenElement) {\n document.exitFullscreen();\n return false;\n }\n await enterFullscreen(options);\n return true;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n fullscreen(this: Cash, options?: EnterFullscreenOptions | false): Promise;\n }\n\n interface CashStatic {\n getFullscreenElement: typeof getFullscreenElement;\n toggleFullscreen: typeof toggleFullscreen;\n }\n}\n\n/** Extend the $.fn.fullscreen. */\n$.fn.fullscreen = function (this: Cash, options?: EnterFullscreenOptions | false) {\n return toggleFullscreen({\n target: this,\n ...options,\n });\n};\n\n/** Extend the $.getFullscreenElement. */\n$.getFullscreenElement = getFullscreenElement;\n\n/** Extend the $.toggleFullscreen. */\n$.toggleFullscreen = toggleFullscreen;\n","import {$, Cash} from '../cash';\n\n/**\n * Check whether the element is detached from document.\n * @param element The element to check.\n * @returns Whether the element is detached from document.\n */\nexport function isElementDetached(element?: Node): boolean {\n if (!element || element.parentNode === document) {\n return false;\n }\n if (!element.parentNode) {\n return true;\n }\n return isElementDetached(element.parentNode);\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n isDetached(element: Node): boolean;\n }\n\n interface Cash {\n isDetached(): boolean;\n }\n}\n\n/* Extend $.isDetached. */\n$.isDetached = isElementDetached;\n\n/* Extend as $.fn.isDisabled(). */\n$.fn.isDetached = function (this: Cash) {\n const element = this[0];\n return !element || isElementDetached(element);\n};\n","import {I18nLangMap, i18n} from '../i18n';\nimport {$} from '../cash';\nimport {nextGid} from '../helpers';\nimport {isElementDetached} from '../dom/is-detached';\n\nimport type {Cash, Element, Selector} from '../cash';\nimport type {ComponentEventArgs, ComponentEventName, ComponentOptions, ComponentEvents, ComponentEventsDefnition, ComponentToggleConfig} from './types';\n\n/**\n * The event callback for component.\n */\nexport type ComponentEventCallback> = (event: N extends keyof HTMLElementEventMap ? HTMLElementEventMap[N] : Event, args: [Component, ComponentEventArgs]) => void | false;\n\n/**\n * The component base class.\n */\nexport class Component {\n /**\n * The default options.\n */\n static DEFAULT = {};\n\n /**\n * The component name.\n * It usually equals to the class name.\n * The name must be provided in subclass.\n */\n static NAME: string;\n\n /**\n * Whether the component supports multiple instances.\n */\n static MULTI_INSTANCE = false;\n\n /**\n * The component i18n data.\n * It will be merged with global i18n data.\n */\n static i18n: I18nLangMap | undefined;\n\n /**\n * The component toggle config.\n */\n static toggle: ComponentToggleConfig | undefined;\n\n /**\n * ZUI name\n */\n static get ZUI() {\n return this.NAME.replace(/(^[A-Z]+)/, (match) => match.toLowerCase());\n }\n\n /**\n * Component data key, like \"zui.menu\"\n */\n static get KEY(): `zui.${string}` {\n return `zui.${this.NAME}`;\n }\n\n /**\n * Component namespace, like \".zui.menu\"\n */\n static get NAMESPACE(): `.zui.${string}` {\n return `.zui.${this.ZUI}`;\n }\n\n /**\n * @deprecated Use ATTR_KEY instead.\n */\n static get DATA_KEY(): `data-zui-${string}` {\n return `data-zui-${this.NAME}`;\n }\n\n /**\n * Component attribute key, like \"z-use-menu\"\n */\n static get ATTR_KEY(): `z-use-${string}` {\n return `z-use-${this.NAME}`;\n }\n\n /**\n * The component default selector.\n */\n static get SELECTOR() {\n return `[${this.DATA_KEY}]`;\n }\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof Component;\n\n /**\n * Store the component options.\n */\n private _options?: ComponentOptions;\n\n /**\n * Store the component element.\n */\n private _element?: U;\n\n /**\n * The component global ID.\n */\n private _gid: number;\n\n /**\n * The component key.\n */\n protected _key: string | number;\n\n /**\n * The component initialized flag.\n */\n private _inited = false;\n\n /**\n * Auto destroy flag.\n */\n private _autoDestory = 0;\n\n /**\n * The component destroyed flag.\n */\n protected _destroyed = false;\n\n /**\n * The component constructor.\n *\n * @param options The component initial options.\n */\n constructor(selector: Selector, options?: Partial>) {\n const {KEY, DATA_KEY, MULTI_INSTANCE, NAME, ATTR_KEY, ALL, TYPED_ALL} = this.constructor;\n\n if (!NAME) {\n throw new Error('[ZUI] The component must have a \"NAME\" static property.');\n }\n\n const $element = $(selector);\n if ($element.data(KEY) && !MULTI_INSTANCE) {\n throw new Error(`[ZUI] The component \"${NAME}\" has been initialized on element.`);\n }\n\n const element = $element[0] as U;\n const gid = nextGid();\n this._gid = gid;\n this._element = element;\n\n this.resetOptions(options);\n this._key = this.options.key ?? `__${gid}`;\n\n if (ALL.has(element)) {\n ALL.get(element)!.add(this);\n } else {\n ALL.set(element, new Set([this]));\n }\n\n if (TYPED_ALL.has(NAME)) {\n TYPED_ALL.get(NAME)!.add(this);\n } else {\n TYPED_ALL.set(NAME, new Set([this]));\n }\n\n $element.data(KEY, this).attr(ATTR_KEY, '').attr(DATA_KEY, `${gid}`);\n if (MULTI_INSTANCE) {\n const dataName = `${KEY}:ALL`;\n let instanceMap: Map | undefined = $element.data(dataName);\n if (!instanceMap) {\n instanceMap = new Map();\n $element.data(dataName, instanceMap);\n }\n instanceMap.set(this._key, this);\n }\n\n this.init();\n this.options.$onCreate?.call(this);\n requestAnimationFrame(async () => {\n this._inited = true;\n await this.afterInit();\n this.emit('inited', this.options);\n this.options.$onInited?.call(this);\n });\n }\n\n /**\n * Get the component initialized flag.\n */\n get inited() {\n return this._inited;\n }\n\n /**\n * Get the component destroyed flag.\n */\n get destroyed() {\n return this._destroyed;\n }\n\n /**\n * Get the component element.\n */\n get element() {\n return this._element!;\n }\n\n get key() {\n return this._key;\n }\n\n /**\n * Get the component options.\n */\n get options() {\n return this._options!;\n }\n\n /**\n * Get the component global id.\n */\n get gid() {\n return this._gid;\n }\n\n /**\n * Get the component element as a jQuery like object.\n */\n get $element() {\n return $(this.element);\n }\n\n /**\n * Get the component event emitter.\n */\n get $emitter() {\n return this.$element;\n }\n\n /**\n * Get the component i18n data.\n */\n get i18nData(): (I18nLangMap | undefined)[] {\n return [this.options.i18n, this.constructor.i18n];\n }\n\n /**\n * Initialize the component.\n */\n init() {}\n\n /**\n * Do something after the component initialized.\n */\n afterInit(): void | Promise {}\n\n /**\n * Render the component.\n *\n * @param options The component options to override before render.\n */\n render(options?: Partial>, reset?: boolean) {\n this.setOptions(options, reset);\n }\n\n /**\n * Destroy the component.\n */\n destroy() {\n const {KEY, DATA_KEY, ALL, TYPED_ALL, NAME, MULTI_INSTANCE, ATTR_KEY} = this.constructor;\n const {$element, element} = this;\n\n (this.emit as ((event: string, ...args: unknown[]) => void))('destroyed');\n\n this._destroyed = true;\n\n $element\n .off(this.namespace)\n .removeData(KEY)\n .removeAttr(ATTR_KEY)\n .removeAttr(DATA_KEY);\n\n if (MULTI_INSTANCE) {\n const map = this.$element.data(`${KEY}:ALL`) as Map>;\n if (map) {\n map.delete(this._key);\n if (map.size === 0) {\n this.$element.removeData(`${KEY}:ALL`);\n } else {\n const nextInstance = map.values().next().value;\n $element.data(KEY, nextInstance).attr(DATA_KEY, String(nextInstance?.gid));\n }\n }\n }\n\n const map = ALL.get(element);\n if (map) {\n map.delete(this);\n if (map.size === 0) {\n ALL.delete(element);\n }\n }\n\n const typedMap = TYPED_ALL.get(NAME);\n if (typedMap) {\n typedMap.delete(this);\n if (typedMap.size === 0) {\n TYPED_ALL.delete(NAME);\n }\n }\n\n this.options.$onDestroy?.call(this);\n }\n\n /**\n * Auto destroy the component when detached.\n */\n autoDestroy(delay = 100) {\n if (this._autoDestory) {\n clearTimeout(this._autoDestory);\n }\n this._autoDestory = window.setTimeout(() => {\n this._autoDestory = 0;\n if (isElementDetached(this.element)) {\n this.destroy();\n }\n }, delay);\n }\n\n /**\n * Set the component options.\n *\n * @param options The component options to set.\n * @returns The component options.\n */\n setOptions(options?: Partial>, reset?: boolean): ComponentOptions {\n if (reset) {\n const finalOptions = {\n ...this.constructor.DEFAULT,\n ...(options?.$optionsFromDataset !== false ? this.$element.dataset() : {}),\n ...options,\n } as ComponentOptions;\n const {$options} = finalOptions;\n if ($options) {\n const extraOptions = typeof $options === 'function' ? $options.call(this, this.element, finalOptions) : $options;\n if (extraOptions) {\n $.extend(finalOptions, extraOptions);\n }\n delete finalOptions.$options;\n }\n this._options = finalOptions;\n } else if (options) {\n $.extend(this._options, options);\n }\n return this._options!;\n }\n\n resetOptions(options?: Partial>) {\n return this.setOptions(options, true);\n }\n\n /**\n * Emit a component event.\n * @param event The event name.\n * @param args The event arguments.\n */\n emit>(event: N, ...args: ComponentEventArgs): Event {\n const eventObject = $.Event(event);\n (eventObject as unknown as {__src?: unknown}).__src = this;\n this.$emitter.trigger(eventObject, [this, ...args]);\n return eventObject as unknown as Event;\n }\n\n /**\n * Listen to a component event.\n *\n * @param event The event name.\n * @param callback The event callback.\n */\n on>(event: N | (string & {}), callback: ComponentEventCallback, options?: {once?: boolean}) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const component = this;\n this.$element[options?.once ? 'one' : 'on'](this._wrapEvent(event), function (this: Component, e: N extends keyof HTMLElementEventMap ? HTMLElementEventMap[N] : Event, info: [Component, ComponentEventArgs]) {\n if (!(e as {__src?: unknown}).__src || (e as {__src?: unknown}).__src === component) {\n callback.call(this, e, info);\n }\n });\n }\n\n /**\n * Listen to a component event.\n *\n * @param event The event name.\n * @param callback The event callback.\n */\n one>(event: N, callback: ComponentEventCallback) {\n this.on(event, callback, {once: true});\n }\n\n /**\n * Stop listening to a component event.\n * @param event The event name.\n * @param callback The event callback.\n */\n off>(event: N | (string & {})) {\n this.$element.off(this._wrapEvent(event));\n }\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: (string | number)[], defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: Record, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments or the default value.\n * @param defaultValue The default value if the key is not found.\n * @returns The i18n text.\n */\n i18n(key: string, args?: string | (string | number)[] | Record, defaultValue?: string): string {\n const {i18nData} = this;\n return i18n(i18nData, key, args, defaultValue, this.options.lang, this.constructor.NAME)\n ?? i18n(i18nData, key, args, defaultValue, this.options.lang)\n ?? `{i18n:${key}}`;\n }\n\n /**\n * Get event namespace.\n * @returns Event namespace.\n */\n get namespace(): `.zui.${string}` {\n return `${this.constructor.NAMESPACE}.${this._key}`;\n }\n\n /**\n * Wrap event names with component namespace.\n *\n * @param names The event names.\n * @returns The wrapped event names.\n */\n protected _wrapEvent(names: string) {\n return names.split(' ').map(name => name.includes('.') ? name : `${name}${this.namespace}`).join(' ');\n }\n\n static ALL = new Map>();\n\n static TYPED_ALL = new Map>();\n\n /**\n * Get the component instance of the given element.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns The component instance.\n */\n static get>(this: T, selector: Selector, key?: string | number): InstanceType | undefined {\n const $element = $(selector);\n if (this.MULTI_INSTANCE && key !== undefined) {\n const instanceMap = $element.data(`${this.KEY}:ALL`);\n if (instanceMap) {\n return instanceMap.get(key);\n }\n return;\n }\n return $element.data(this.KEY);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static isValid>(this: T, _instance: InstanceType): boolean {\n return true;\n }\n\n /**\n * Ensure the component instance of the given element.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @param options The component options.\n * @returns The component instance.\n */\n static ensure>(this: T, selector: Selector, options?: Partial>): InstanceType {\n const instance = this.get(selector, options?.key);\n if (instance) {\n if (this.isValid(instance)) {\n if (options) {\n instance.setOptions(options);\n }\n return instance;\n } else {\n instance.destroy();\n }\n }\n return new this(selector, options) as InstanceType;\n }\n\n /**\n * Get all component instances.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns All component instances.\n */\n static getAll>(this: T, selector?: Selector, filter?: (instance: InstanceType) => boolean): InstanceType[] {\n const {SELECTOR, ALL, TYPED_ALL} = this;\n const list: InstanceType[] = [];\n const checkInstance = (instance: Component) => {\n if (instance instanceof this && (!filter || filter(instance as InstanceType) !== false)) {\n list.push(instance as InstanceType);\n }\n };\n if (selector) {\n $(selector)\n .find(SELECTOR)\n .each((_, element) => {\n ALL.get(element)?.forEach(checkInstance);\n });\n } else if (this !== Component) {\n TYPED_ALL.get(this.NAME)?.forEach(checkInstance);\n } else {\n ALL.forEach((components) => {\n components.forEach(checkInstance);\n });\n }\n return list.sort((a, b) => a.gid - b.gid);\n }\n\n /**\n * Query the component instance.\n *\n * @param this Current component constructor.\n * @param selector The component element selector.\n * @returns The component instance.\n */\n static query>(this: T, selector?: Selector, key?: string | number, filter?: (instance: InstanceType) => boolean): InstanceType | undefined {\n if (selector === undefined) {\n return this.getAll(undefined, filter).pop();\n }\n return this.get($(selector).closest(this.SELECTOR), key);\n }\n\n /**\n * Create cash fn.method for current component.\n *\n * @param name The method name.\n */\n static defineFn(name?: string) {\n let fnName = (name || this.ZUI) as keyof Cash;\n if ($.fn[fnName]) {\n fnName = `zui${this.NAME}` as keyof Cash;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const ZUIComponent = this;\n $.fn.extend({\n [fnName](options: Partial> | string, ...args: unknown[]) {\n const initOptions = typeof options === 'object' ? options : undefined;\n const callMethod = typeof options === 'string' ? options : undefined;\n let callResult: unknown;\n this.each((_: number, element: Element) => {\n let instance = ZUIComponent.get(element);\n if (instance) {\n if (initOptions) {\n instance.render(initOptions);\n }\n } else if (callMethod) {\n return;\n } else {\n instance = new ZUIComponent(element, initOptions);\n }\n if (callMethod) {\n let method: ((...args: unknown[]) => void) = (instance as unknown as Record void>)[callMethod];\n let callThis: unknown = instance;\n if (method === undefined) {\n callThis = (instance as unknown as {$: Record void>}).$;\n method = (callThis as Record void>)[callMethod as string];\n }\n if (typeof method === 'function') {\n callResult = method.call(callThis, ...args);\n } else {\n callResult = method;\n }\n }\n });\n return callResult !== undefined ? callResult : this;\n },\n });\n }\n\n static map = new Map();\n\n static toggleMap = new Map();\n\n static register(ComponentClass?: typeof Component, name?: string) {\n ComponentClass = ComponentClass || this;\n name = (name ?? ComponentClass.NAME).toLowerCase();\n this.map.set(name, ComponentClass);\n\n const toggleName = ComponentClass.toggle?.name?.toLowerCase();\n if (toggleName && toggleName !== name) {\n this.toggleMap.set(toggleName, ComponentClass);\n }\n }\n}\n","import {$, Cash} from '../cash';\nimport {type GetLibOptions} from '../dom';\nimport {evalValue} from '../helpers';\nimport {storeData, takeData} from '../helpers/data';\nimport {getZData} from '../helpers/z';\nimport {Component} from './component';\n\nimport type {ComponentOptions} from './types';\n\nexport type ComponentClass = typeof Component;\n\nexport type ComponentCreateOptions = ComponentOptions & {\n $update?: boolean | 'reset';\n $reset?: boolean;\n};\n\nexport type ZUIInitOptions = {\n update?: boolean | 'reset';\n beforeCreate?: BeforeCreateCallback;\n onCreate?: OnCreateCallback;\n};\n\nexport function getComponent(name: string): ComponentClass | undefined {\n return Component.map.get(name.toLowerCase());\n}\n\nexport function create(name: string, element: HTMLElement, options: ComponentCreateOptions = {}) {\n let TheComponentClass = getComponent(name);\n if (!TheComponentClass) {\n TheComponentClass = initGlobalComponents(name);\n }\n if (!TheComponentClass) {\n return null;\n }\n const {$update, ...componentOptions} = options;\n if (!TheComponentClass.MULTI_INSTANCE) {\n const component = TheComponentClass.get(element);\n if (component) {\n if ($update) {\n component.render(componentOptions, $update === 'reset');\n }\n return component;\n }\n }\n return new TheComponentClass(element, componentOptions);\n}\n\nfunction createInAnimationFrame(name: string, element: HTMLElement, options: ComponentCreateOptions = {}) {\n requestAnimationFrame(() => create(name, element, options));\n}\n\nexport function registerComponent(component: ComponentClass, name?: string) {\n Component.register(component, name);\n}\n\nexport function initGlobalComponents(name?: string): ComponentClass | undefined {\n const {zui} = window as unknown as {zui: Record};\n if (!zui) {\n return;\n }\n name = name?.toLowerCase();\n for (const n in zui) {\n const isMatch = n.toLowerCase() === name;\n if (name && !isMatch) {\n continue;\n }\n const TheComponentClass = zui[n];\n if (typeof TheComponentClass !== 'function' || !TheComponentClass.NAME || !TheComponentClass.ZUI) {\n continue;\n }\n if (!Component.map.has(n.toLowerCase())) {\n registerComponent(TheComponentClass);\n }\n if (isMatch) {\n return TheComponentClass;\n }\n }\n}\n\nexport function defineFn(name?: string) {\n if (name) {\n getComponent(name)?.defineFn();\n } else if (!(window as unknown as {_zuiDefined: Record})._zuiDefined) {\n initGlobalComponents();\n Component.map.forEach((TheComponentClass) => {\n TheComponentClass.defineFn();\n });\n Object.assign(window, {_zuiDefined: true});\n }\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n zuiInit(this: Cash, options?: ZUIInitOptions): Cash;\n zui(this: Cash, name?: string, key?: string | number | true): ComponentClass | ComponentClass[] | Record | undefined;\n zuiCall(this: Cash, method: string, args?: unknown[]): Cash;\n }\n}\n\nexport type BeforeCreateCallback = (element: HTMLElement) => boolean | void;\n\nexport type OnCreateCallback = (name: string, options: Record) => false | Record | void;\n\n/**\n * Create zui component instance from elements which match [zui-create], [data-zui], [data-zui] is deprecated, use [zui-create] instead.\n * 为匹配 [zui-create], [data-zui] 的元素创建 zui 组件实例,[data-zui] 被弃用,优先使用 [zui-create]。\n *\n * @param element - The element to create zui components. 要创建 zui 组件的元素。\n * @param options - The options. 选项。\n *\n * @example\n * ```html\n *
    \n * \n * Create multiple components\n *\n *
    Deprecated usage
    \n * ```\n */\nfunction initCreators(element: HTMLElement, options: ZUIInitOptions = {}): void {\n const $element = $(element);\n let createNames = $element.attr('zui-create');\n const {update: $update, onCreate} = options;\n const createInstance = (name: string, createOptions?: Record) => {\n createOptions = {\n $update,\n $optionsFromDataset: false,\n ...createOptions,\n };\n if (onCreate) {\n const newCreateOptions = onCreate(name, createOptions);\n if (newCreateOptions === false) {\n return;\n }\n if (newCreateOptions) {\n createOptions = newCreateOptions;\n }\n }\n const $lib = createOptions.$lib as (GetLibOptions | undefined);\n if ($lib) {\n delete createOptions.$lib;\n $.getLib($lib).then(() => create(name, element, createOptions));\n return;\n }\n createInAnimationFrame(name, element, createOptions);\n };\n if (typeof createNames === 'string') {\n createNames = createNames.trim();\n const names = createNames.length ? createNames.split(',').map((name) => name.trim()) : [];\n const createOptionsMap = getZData(element, {prefix: 'zui-create-', evalValue: true})!;\n const createOptionsNames = Object.keys(createOptionsMap);\n if (!createOptionsNames.length && names.length === 1) {\n createInstance(names[0], $element.dataset());\n } else {\n const initedNames = new Set();\n [...names, ...createOptionsNames].forEach(name => {\n if (initedNames.has(name)) {\n return;\n }\n const createOptions = createOptionsMap[name] as ComponentCreateOptions | undefined;\n createInstance(name, createOptions);\n delete createOptionsMap[name];\n initedNames.add(name);\n });\n }\n } else {\n const initOptions = $element.dataset();\n const name = initOptions?.zui as string;\n if (!name) {\n return;\n }\n console.warn('[ZUI] create component instance with [data-zui] is deprecated, use [zui-create] instead.', {element, options});\n delete initOptions!.zui;\n createInstance(name, initOptions);\n }\n}\n\n/**\n * Bind toggle events.\n */\nfunction bindToggleEvents() {\n $(document).on('click.zui.toggle mouseenter.zui.toggle', '[data-toggle],[zui-toggle]', function (this: HTMLElement, event) {\n const $this = $(this);\n const toggleName = ($this.dataset('toggle') || $this.attr('zui-toggle')) as string;\n if (!toggleName) {\n return;\n }\n const TheComponentClass = Component.toggleMap.get(toggleName) || getComponent(toggleName);\n const toggleConfig = TheComponentClass?.toggle;\n if (!toggleConfig) {\n return;\n }\n\n const {trigger = 'click', skip = '[disabled],.disabled', check} = toggleConfig;\n const eventTriggerType = event.type === 'mouseover' ? 'hover' : 'click';\n if (!trigger.includes(eventTriggerType) || (check && !check.call(TheComponentClass, this, eventTriggerType, event)) || (skip && $this.is(skip))) {\n return;\n }\n\n const {onGet, onCreate, setOptions = true, getOptions, prevent = true, handler, onToggle, convertHref} = toggleConfig;\n let options = $this.dataset() as Record;\n const toggleOptions = $this.attr(`zui-toggle-${toggleName}`);\n if (toggleOptions) {\n options = $.extend(options, evalValue(toggleOptions));\n }\n if (convertHref && $this.is('a')) {\n const href = $this.attr('href');\n if (href) {\n const hrefMap = convertHref === true ? {selector: 'target', url: 'url'} : convertHref;\n if ('#.'.includes(href[0])) {\n if (hrefMap.selector && options[hrefMap.selector] === undefined) {\n options[hrefMap.selector] = href;\n }\n } else if (hrefMap.url && options[hrefMap.url] === undefined) {\n options[hrefMap.url] = href;\n }\n }\n }\n if (getOptions) {\n options = getOptions.call(TheComponentClass, this, options, event);\n }\n\n if (handler) {\n handler.call(TheComponentClass, this, options, eventTriggerType, event);\n if (prevent) {\n event.preventDefault();\n }\n return;\n }\n\n let component = onGet ? onGet.call(TheComponentClass, this) : TheComponentClass.get(this);\n if (!component) {\n const newComponent = onCreate ? onCreate.call(TheComponentClass, this, event, options) : (new TheComponentClass(this, options));\n if (!newComponent) {\n return;\n }\n component = newComponent;\n } else if (setOptions) {\n component.setOptions(options);\n }\n\n if (onToggle) {\n if (onToggle.call(TheComponentClass, component, this, event) === false) {\n return;\n }\n } else {\n const {shown, show, hide, toggle: toggleFunc} = component as unknown as {\n shown?: boolean,\n show?: () => void,\n hide?: () => void,\n toggle?: () => void,\n };\n\n let func: (() => void) | undefined;\n if (toggleFunc) {\n func = toggleFunc;\n } else if (show && hide) {\n if (shown) {\n func = hide;\n } else {\n func = show;\n }\n } else if (show) {\n func = show;\n }\n if (func) {\n func.call(component);\n } else {\n return;\n }\n }\n\n if (prevent) {\n event.preventDefault();\n }\n });\n}\n\nfunction getComponentsOnElement(element: HTMLElement, forEach?: (component: Component, dataKey: string) => void | boolean): Component[] {\n const data = takeData(element) as Record;\n const components: Component[] = [];\n Object.keys(data).forEach((dataKey) => {\n if (!dataKey.startsWith('zui.')) {\n return;\n }\n const component = data[dataKey] as Component;\n if (forEach?.(component, dataKey) === false) {\n return;\n }\n components.push(data[dataKey] as Component);\n });\n return components;\n}\n\nlet checkComponentsTimer = 0;\n\nfunction checkComponents(delay = 100) {\n if (checkComponentsTimer) {\n clearTimeout(checkComponentsTimer);\n }\n if (delay) {\n checkComponentsTimer = window.setTimeout(() => checkComponents(0), delay);\n return;\n }\n checkComponentsTimer = 0;\n Component.ALL.forEach((components) => {\n components.forEach((component) => component.autoDestroy());\n });\n}\n\nfunction autoDestroyComponents() {\n if (!document.body || takeData(document.body, '_autoDestoryMob')) {\n return;\n }\n const mob = new MutationObserver((mutations) => {\n let hasRemovedNodes = false;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length) {\n hasRemovedNodes = true;\n break;\n }\n }\n\n if (hasRemovedNodes) {\n checkComponents();\n }\n });\n mob.observe(document.body, {childList: true, subtree: true});\n storeData(document.body, '_autoDestoryMob', mob);\n}\n\n/** Define the $.fn.zuiInit method. */\n$.fn.zuiInit = function (this: Cash, options?: ZUIInitOptions) {\n this.find('[zui-create],[data-zui]').each(function () {\n if (options?.beforeCreate?.(this) === false) {\n return;\n }\n initCreators(this, options);\n });\n this.find('[zui-init]').each(function () {\n if (this.hasAttribute('z-zui-inited')) {\n return;\n }\n this.setAttribute('z-zui-inited', '');\n $.runJS(this.getAttribute('zui-init')!, ['$element', $(this)]);\n });\n this.find('.hide-before-init').removeClass('invisible hidden opacity-0');\n this.find('.scroll-into-view').scrollIntoView();\n this.find('[data-on=\"inited\"],[zui-on-inited]').each((_, ele) => {\n const $ele = $(ele);\n if (!$ele.zui()) {\n $ele.trigger('inited');\n }\n });\n return this;\n};\n\n/** Define the $.fn.zui method. */\n$.fn.zui = function (this: Cash, name?: string | true, key?: string | number | true) {\n const element = this[0];\n if (!element) {\n return;\n }\n if (typeof name !== 'string') {\n const result: Record = {};\n let lastComponent: Component | undefined;\n getComponentsOnElement(element, (component, dataKey) => {\n result[dataKey] = component;\n if (!lastComponent || lastComponent.gid < component.gid) {\n lastComponent = result[dataKey];\n }\n });\n return name === true ? result : lastComponent;\n }\n const TheComponentClass = getComponent(name);\n if (!TheComponentClass) {\n return $(element).data(`zui.${name}`);\n }\n if (key === true) {\n return TheComponentClass.getAll(element);\n }\n return TheComponentClass.query(element, key);\n};\n\n$.fn.zuiCall = function (this: Cash, componentMethod: string, args: unknown[] = []) {\n this.each(function () {\n const parts = componentMethod.split('.');\n const name = parts.length > 1 ? parts[0] : undefined;\n const method = parts[parts.length > 1 ? 1 : 0];\n const component = $(this).zui(name) as (Component | undefined);\n const methodFunc = component?.[method as keyof Component];\n if (typeof methodFunc === 'function') {\n (methodFunc as ((...args: unknown[]) => void)).apply(component, args);\n }\n });\n return this;\n};\n\n$(() => {\n // Init zui creators and call [zui-init] code.\n $('body').zuiInit({update: true});\n\n // Bind toggle events.\n bindToggleEvents();\n\n // Auto destroy components when detached.\n autoDestroyComponents();\n});\n","import {Component} from '../component';\n\nexport type StickyOptions = {\n side?: 'top' | 'bottom';\n offset?: number;\n zIndex?: number;\n pinnedClass?: string;\n targets?: string;\n scrollContainer?: string;\n};\n\nexport class Sticky extends Component {\n static NAME = 'Sticky';\n\n protected declare _ob: IntersectionObserver;\n\n protected declare _container: HTMLElement;\n\n protected declare _scrollListener: () => void;\n\n protected declare _raf: number;\n\n init() {\n const {offset = 1, side, zIndex, pinnedClass = 'is-pinned', targets, scrollContainer} = this.options;\n const {$element} = this;\n const $targets = targets ? $element.find(targets) : $element;\n $targets.css({position: 'sticky', zIndex});\n if (side) $targets.css(side, -offset);\n\n if (scrollContainer) {\n const container = $element.closest(scrollContainer)[0] as HTMLElement;\n if (container) {\n const listener = () => {\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n this._raf = requestAnimationFrame(() => {\n this._raf = 0;\n if (container.scrollTop === 0 && (!side || side === 'top')) {\n $targets.toggleClass(pinnedClass, false);\n return;\n }\n const containerRect = container.getBoundingClientRect();\n $targets.each((_, target) => {\n const rect = target.getBoundingClientRect();\n const pinned = rect[side || 'top'] === containerRect[side || 'top'];\n target.classList.toggle(pinnedClass, pinned);\n });\n });\n };\n this._scrollListener = listener;\n container.addEventListener('scroll', listener);\n }\n this._container = container;\n } else {\n this._ob = new IntersectionObserver(\n (entries) => {\n entries.forEach(e => {\n e.target.classList.toggle(pinnedClass, e.intersectionRatio < offset);\n });\n },\n {threshold: [1]},\n );\n\n $targets.each((_, e) => this._ob.observe(e));\n }\n }\n\n destroy() {\n this._ob?.disconnect();\n if (this._container) {\n this._container.removeEventListener('scroll', this._scrollListener);\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n }\n }\n}\n","export type DateLike = Date | number | string;\n\nexport type DurationType = 'day' | 'month' | 'year' | 'week' | 'hour' | 'minute' | 'second';\n\nexport type DateFormatter = (date: Date) => string;\n\n/**\n * 一天的总毫秒数\n */\nexport const TIME_DAY = 24 * 60 * 60 * 1000;\n\n/**\n * 创建一个 Date 对象\n * @param date 用于创建 Date 对象的日期时间表达值,如果留空则创建当前系统时间对象\n * @returns 日期时间对象\n */\nexport const createDate = (date?: DateLike): Date => {\n if (date === undefined) {\n return new Date();\n }\n if (date instanceof Date) {\n return date;\n }\n if (typeof date === 'string') {\n date = date.trim();\n if (/^\\d+$/.test(date)) {\n date = Number.parseInt(date, 10);\n }\n }\n if (typeof date === 'number' && date < 10000000000) {\n date *= 1000;\n }\n date = new Date(date);\n return date;\n};\n\nexport const addDate = (date: DateLike, value: number | string, type: DurationType = 'day'): Date => {\n if (typeof value === 'string') {\n const count = Number.parseInt(value, 10);\n type = value.replace(count.toString(), '') as DurationType;\n value = count;\n }\n date = new Date(createDate(date).getTime());\n if (type === 'month') {\n date.setMonth(date.getMonth() + value);\n } else if (type === 'year') {\n date.setFullYear(date.getFullYear() + value);\n } else if (type === 'week') {\n date.setDate(date.getDate() + value * 7);\n } else if (type === 'hour') {\n date.setHours(date.getHours() + value);\n } else if (type === 'minute') {\n date.setMinutes(date.getMinutes() + value);\n } else if (type === 'second') {\n date.setSeconds(date.getSeconds() + value);\n } else {\n date.setDate(date.getDate() + value);\n }\n return date;\n};\n\n/**\n * 判断两个日期是否是在同一天\n * @param date1 第一个日期时间表达值\n * @param date2 第二个日期时间表达值,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示两个日期是同一天\n */\nexport const isSameDay = (date1: DateLike, date2: DateLike = new Date()): boolean => {\n return createDate(date1).toDateString() === createDate(date2).toDateString();\n};\n\n/**\n * 判断两个日期是否是在同一年\n * @param date1 第一个日期时间表达值\n * @param date2 第二个日期时间表达值,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示两个日期是同一年\n */\nexport const isSameYear = (date1: DateLike, date2: DateLike = new Date()): boolean => createDate(date1).getFullYear() === createDate(date2).getFullYear();\n\n/**\n * 判断两个日期是否是在同一个月\n * @param date1 第一个日期时间表达值\n * @param date2 第二个日期时间表达值,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示两个日期是同一月\n */\nexport const isSameMonth = (date1: DateLike, date2: DateLike = new Date()): boolean => {\n date1 = createDate(date1);\n date2 = createDate(date2);\n return date1.getFullYear() === date2.getFullYear()\n && date1.getMonth() === date2.getMonth();\n};\n\n/**\n * 判断两个日期是否是在同一个周(周一为第一天)\n * @param date1 第一个日期时间表达值\n * @param date2 第二个日期时间表达值,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示两个日期是同一周\n */\nexport const isSameWeek = (date1: DateLike, date2: DateLike = new Date()): boolean => {\n date1 = createDate(date1);\n date2 = createDate(date2);\n const oneDayTime = 1000 * 60 * 60 * 24;\n const weeks1 = Math.floor(date1.getTime() / oneDayTime);\n const weeks2 = Math.floor(date2.getTime() / oneDayTime);\n // 1970-1-1 是周四\n return Math.floor((weeks1 + 4) / 7) === Math.floor((weeks2 + 4) / 7);\n};\n\n/**\n * 判断指定的日期是否是在今天\n * @param date 要判断的日期时间表达值\n * @param now 作为今天判断依据的日期,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示是今天\n */\nexport const isToday = (date: DateLike, now?: DateLike): boolean => isSameDay(createDate(now), date);\n\n/**\n * 判断指定的日期是否是在昨天\n * @param date 要判断的日期时间表达值\n * @param now 作为今天判断依据的日期,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示是昨天\n */\nexport const isYesterday = (date: DateLike, now?: DateLike): boolean => isSameDay(createDate(now).getTime() - TIME_DAY, date);\n\n/**\n * 判断指定的日期是否是在明天\n * @param date 要判断的日期时间表达值\n * @param now 作为今天判断依据的日期,如果留空则使用当前系统时间\n * @returns 如果为 `true` 则表示是明天\n */\nexport const isTomorrow = (date: DateLike, now?: DateLike): boolean => isSameDay(createDate(now).getTime() + TIME_DAY, date);\n\n/**\n * 判断指定的日期是否合法。\n *\n * @param date 要判断的日期时间表达值。\n * @returns 如果为 `true` 则表示是合法的日期时间表达值。\n */\nexport const isValidDate = (date: DateLike): boolean => date !== undefined && date !== null && !isNaN(createDate(date).getTime());\n\n/**\n * 格式化日期时间值为字符串,所有可用的格式化参数有:\n * - yyyy,例如:'2018',表示四位数字表示的年份\n * - yy,例如:'18',表示两位数字表示的年份\n * - MM,例如:'07',表示两位数字表示的月份,不足两位在起始用 0 填充\n * - M,例如:'10',表示一位或两位数字表示的月份\n * - dd,例如:'05',表示两位数字表示的日期,不足两位在起始用 0 填充\n * - d,例如:'5',表示一位或两位数字表示的日期\n * - hh,例如:'08',表示两位数字表示的小时,不足两位在起始用 0 填充\n * - h,例如:'8',表示一位或两位数字表示的小时\n * - mm,例如:'03',表示两位数字表示的分钟,不足两位在起始用 0 填充\n * - m,例如:'3',表示一位或两位数字表示的分钟\n * - ss,例如:'05',表示两位数字表示的秒数,不足两位在起始用 0 填充\n * - s,例如:'5',表示一位或两位数字表示的秒数\n * - S,例如:'236',表示毫秒数\n * - SSS,例如:'036',表示毫秒数,不足3位在起始用 0 填充\n * @summary 格式化日期时间值为字符串\n * @param date 要格式化的日期时间表达值\n * @param format 格式化字符串\n * @returns 日期时间格式化文本\n */\nexport const formatDate = (date: DateLike, format: string | DateFormatter = 'yyyy-MM-dd hh:mm', invalidDateValue = ''): string => {\n date = createDate(date);\n if (!isValidDate(date)) {\n return invalidDateValue;\n }\n\n if (typeof format === 'function') {\n return format(date);\n }\n\n const dateInfo = {\n 'M+': date.getMonth() + 1,\n 'd+': date.getDate(),\n 'h+': date.getHours(),\n 'H+': date.getHours() % 12,\n 'm+': date.getMinutes(),\n 's+': date.getSeconds(),\n 'S+': date.getMilliseconds(),\n };\n if (/(y+)/i.test(format)) {\n if (format.includes('[yyyy-]')) {\n format = format.replace('[yyyy-]', isSameYear(date) ? '' : 'yyyy-');\n }\n format = format.replace(RegExp.$1, (`${date.getFullYear()}`).substring(4 - RegExp.$1.length));\n }\n Object.keys(dateInfo).forEach((k) => {\n if (new RegExp(`(${k})`).test(format as string)) {\n const str = `${dateInfo[k as keyof typeof dateInfo]}`;\n format = (format as string).replace(RegExp.$1, RegExp.$1.length === 1 ? str : (`00${str}`).substring(str.length));\n }\n });\n return format;\n};\n\n/**\n * 格式化日期时间范围\n * @param date1 起始时间\n * @param date2 结束时间\n * @param format 格式化参数\n * @returns 时间范围描述文本\n */\nexport const formatDateSpan = (date1: DateLike, date2: DateLike, format?: {full?: string; month?: string; day?: string; str?: string;}): string => {\n const finalFormat = {\n full: 'yyyy-M-d', month: 'M-d', day: 'd', str: '{0} ~ {1}', ...format,\n };\n\n const date1Str = formatDate(date1, isSameYear(date1) ? finalFormat.month : finalFormat.full);\n if (isSameDay(date1, date2)) {\n return date1Str;\n }\n const date2Str = formatDate(date2, isSameYear(date1, date2) ? (isSameMonth(date1, date2) ? finalFormat.day : finalFormat.month) : finalFormat.full);\n return finalFormat.str.replace('{0}', date1Str).replace('{1}', date2Str);\n};\n","export function getUniqueCode(str: string): number {\n let code = 0;\n if (typeof str !== 'string') str = String(str);\n if (str && str.length) {\n for (let i = 0; i < str.length; ++i) {\n code += (i + 1) * str.charCodeAt(i);\n }\n }\n return code;\n}\n","import {deepCall} from '@zui/helpers';\nimport {$, Cash, type Selector} from '../cash';\nimport {nextGid} from './gid';\n\nexport interface CommandContext {\n name: string,\n options?: Record,\n event?: Event,\n scope?: string,\n prevResult?: unknown,\n element?: HTMLElement,\n abort?: () => void,\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CommandCallback = (context: CommandContext, params: any[]) => any;\n\nexport type CommandEventCallback = (event: Event, data: [context: CommandContext, params: unknown[]]) => void;\n\nexport type CommandsBindOptions = {\n scope?: string,\n events?: string,\n onCommand?: CommandCallback,\n commands?: Record,\n scoped?: boolean,\n};\n\nexport type CommandsBindInfo = CommandsBindOptions & {\n element: HTMLElement,\n gid: number,\n};\n\nexport interface CommandExecutionOptions {\n execute: (context: CommandContext, params: unknown[]) => unknown;\n event: Event;\n scope?: string;\n options?: Record;\n signal?: AbortSignal;\n}\n\nexport interface CommandExecuteInfo {\n name: string;\n scope: string;\n options: Record;\n params: unknown[];\n}\n\nexport interface CommandsExecuteInfo {\n async?: boolean;\n commands: CommandExecuteInfo[];\n}\n\nexport type CommandLike = string | CommandExecuteInfo | undefined;\n\nexport type CommandsLike = string | CommandsExecuteInfo | (string | CommandExecuteInfo)[];\n\nexport function parseCommand(commandLike: CommandLike): CommandExecuteInfo | undefined {\n if (!commandLike) {\n return;\n }\n if (typeof commandLike === 'object') {\n return commandLike;\n }\n commandLike = commandLike.replace(/^#/, '');\n if (!commandLike.length) {\n return;\n }\n if (!commandLike.startsWith('/')) {\n commandLike = `/${commandLike}`;\n }\n const url = new URL(window.location.origin + commandLike);\n const [, name = '', ...params] = url.pathname.split('/');\n let finalName = name.trim();\n if (!finalName.length) {\n return;\n }\n let scope = '';\n if (finalName.includes('~')) {\n [finalName, scope] = finalName.split('~');\n }\n return {\n name: finalName,\n scope,\n options: Object.fromEntries([...url.searchParams.entries()].map(([key, value]) => {\n try {\n if (value.includes('%')) {\n value = decodeURIComponent(value);\n }\n value = JSON.parse(value);\n // eslint-disable-next-line no-empty\n } catch (_) {}\n return [key, value];\n })),\n params: params.map((param) => {\n if (param === 'undefined') return undefined;\n if (param === 'null') return null;\n try {\n if (param.includes('%')) {\n param = decodeURIComponent(param);\n }\n return JSON.parse(param);\n } catch (_) {\n return param;\n }\n }),\n };\n}\n\nexport function parseCommands(commandsLike: CommandsLike): CommandsExecuteInfo {\n if (Array.isArray(commandsLike)) {\n return {commands: commandsLike.map(parseCommand).filter(Boolean) as CommandExecuteInfo[]};\n }\n if (typeof commandsLike === 'object') {\n return commandsLike;\n }\n commandsLike = commandsLike.replace(/^#!?/, '');\n const async = commandsLike.includes('>');\n const commands = commandsLike.split(async ? '>' : '|').map(parseCommand);\n return {\n async,\n commands: commands.filter(Boolean) as CommandExecuteInfo[],\n };\n}\n\n/**\n * 执行单个命令。\n * Execute single command.\n *\n * @param command 命令。 Command.\n * @param options 选项。 Options.\n * @returns 命令执行结果。 Command execution result.\n */\nexport function executeCommand(command: CommandLike, options: CommandExecutionOptions, prevResult?: unknown): unknown {\n if (typeof command === 'string') {\n command = parseCommand(command);\n }\n if (!command) {\n return;\n }\n const {execute, event, scope} = options;\n if (scope && command.scope && command.scope !== scope) {\n return;\n }\n return execute({\n name: command.name,\n options: {\n ...options.options,\n ...command.options,\n },\n event,\n scope: command.scope,\n prevResult,\n }, command.params);\n}\n\n/**\n * 执行命令行。\n * Execute command line.\n *\n * @param commands 命令行。 Command line.\n * @param context 上下文信息。 Context information.\n * @returns 命令执行结果。 Command execution result.\n */\nexport async function executeCommands(commands: CommandsLike, options: CommandExecutionOptions): Promise {\n const {async, commands: commandList} = parseCommands(commands);\n if (!commandList.length) {\n return [];\n }\n const {signal} = options;\n if (async) {\n const results = [];\n let result;\n for (const command of commandList) {\n if (!signal?.aborted) {\n break;\n }\n result = await executeCommand(command, options, result);\n if (signal?.aborted) {\n result = undefined;\n }\n results.push(result);\n }\n return results;\n }\n const results = await Promise.all(commandList.map(command => {\n if (signal?.aborted) {\n return;\n }\n return executeCommand(command, options);\n }));\n return results;\n}\n\nconst COMMAND_DATA_NAME = 'zui.commands';\nconst COMMANDS_ATTR = 'z-commands';\nconst COMMAND_PROXY_ATTR = 'zui-commands-proxy';\nconst COMMAND_ATTR = 'zui-command';\n\nexport function bindCommands(element?: Selector, options?: CommandsBindOptions | CommandCallback | string): void {\n if (typeof options === 'string') {\n options = {scope: options};\n } else if (typeof options === 'function') {\n options = {onCommand: options};\n }\n const {scope = '', events = 'click'} = options ?? {};\n const $element = $(element);\n const zCommands = ($element.attr(COMMANDS_ATTR) || '').split(',');\n if (scope && !zCommands.includes(scope)) {\n zCommands.push(scope);\n }\n $element.attr(COMMANDS_ATTR, zCommands.join(',')).data(COMMAND_DATA_NAME, {\n [scope]: {\n ...options,\n scope,\n events,\n gid: nextGid(),\n },\n ...$element.data(COMMAND_DATA_NAME),\n });\n}\n\nexport function unbindCommands(element: Selector, scopes: string | true = true): void {\n const $element = $(element);\n if (scopes === true) {\n $element.removeAttr(COMMANDS_ATTR);\n $element.removeData(COMMAND_DATA_NAME);\n } else if (scopes.length) {\n const boundCommands = $element.data(COMMAND_DATA_NAME) || {};\n scopes.split(',').forEach(scope => {\n delete boundCommands[scope];\n });\n const boundScopes = Object.keys(boundCommands);\n if (boundScopes.length) {\n $element.attr(COMMANDS_ATTR, boundScopes.join(',')).data(COMMAND_DATA_NAME, bindCommands);\n } else {\n unbindCommands($element, true);\n }\n }\n}\n\nfunction getCommandBindInfo($target: Cash, scope?: string): CommandsBindInfo | undefined {\n let $element = $target.closest(`[${COMMANDS_ATTR}]`);\n if (!$element.length) {\n const $proxy = $target.closest(`[${COMMAND_PROXY_ATTR}]`);\n if ($proxy.length) {\n $element = $($proxy.data('zui.commandProxy') || $proxy.attr('COMMAND_PROXY_ATTR')).closest(`[${COMMANDS_ATTR}]`);\n }\n }\n if (!$element.length) {\n return;\n }\n const commandsData = $element.data(COMMAND_DATA_NAME) || {};\n const boundCommands = Object.values(commandsData).sort((a, b) => (b.gid - a.gid));\n let commandInfo: CommandsBindInfo | undefined;\n if (scope?.length) {\n commandInfo = boundCommands.find(x => x.scope === scope);\n if (!commandInfo) {\n commandInfo = boundCommands.find(x => !x.scope?.length && !x.scoped);\n }\n return commandInfo;\n } else {\n commandInfo = boundCommands.find(x => !x.scope?.length && !x.scoped);\n if (!commandInfo) {\n commandInfo = boundCommands.find(x => !x.scoped);\n }\n }\n if (commandInfo) {\n commandInfo.element = $element[0] as HTMLElement;\n } else {\n commandInfo = getCommandBindInfo($target.parent(), scope);\n }\n return commandInfo;\n}\n\nfunction handleGlobalCommand(event: Event & {commandHandled?: boolean}) {\n if (!event.currentTarget) {\n return;\n }\n const $target = $(event.currentTarget as HTMLElement);\n if ($target.closest('.disabled,[disabled]').length) {\n return;\n }\n const commandLine = $target.attr(COMMAND_ATTR) || ($target.is('a[href^=\"#!\"]') ? $target.attr('href') : '');\n if (!commandLine) {\n return;\n }\n const abortController = new AbortController();\n const abort = () => abortController.abort();\n executeCommands(commandLine, {\n signal: abortController.signal,\n execute: (context, params) => {\n const {scope, name} = context;\n const finalContext = {\n ...context,\n abort,\n };\n let result;\n const bindInfo = getCommandBindInfo($target, scope);\n if (bindInfo) {\n finalContext.element = bindInfo.element;\n const onCommand = (bindInfo.commands ? (bindInfo.commands[`${scope}~${name}`] || bindInfo.commands[name]) : null) || bindInfo.onCommand;\n if (onCommand) {\n result = onCommand(finalContext, params);\n if (event.commandHandled) {\n return result;\n }\n }\n }\n\n const eventData = [finalContext, params];\n $target.trigger('command', eventData).trigger(`command:${scope ? `${name}.${scope}` : name}`, eventData);\n if (scope) {\n $target.trigger(`command:.${scope}`, eventData);\n }\n\n if (event.commandHandled) {\n return result;\n }\n\n if (scope === 'event') {\n if (name === 'stop') {\n event.stopPropagation();\n } else if (name === 'prevent') {\n event.preventDefault();\n } else {\n deepCall(event, name, params);\n }\n return;\n }\n if (scope === 'window') {\n return deepCall(window, name, params);\n }\n if (scope === 'zui') {\n return deepCall((window as unknown as {zui: object}).zui, name, params);\n }\n if (scope === 'target') {\n return deepCall($target[0] as HTMLElement, name, params);\n }\n if (scope === '$target') {\n return deepCall($target, name, params);\n }\n if (scope === '$') {\n return deepCall($, name, params);\n }\n\n return result;\n },\n event,\n });\n}\n\ndeclare module 'cash-dom' {\n interface Cash {\n command(this: Cash, scopedName: string, callback: CommandEventCallback): Cash;\n offCommand(this: Cash, scopedName: string, callback?: CommandEventCallback): Cash;\n\n commands(this: Cash, options?: CommandsBindOptions | CommandCallback | string): Cash;\n unbindCommands(this: Cash, scope?: string): Cash;\n }\n}\n\n$.fn.command = function (this: Cash, scopedName: string, callback: CommandEventCallback): Cash {\n return this.on(`command:${scopedName}`, callback);\n};\n\n$.fn.offCommand = function (this: Cash, scopedName: string, callback?: CommandEventCallback): Cash {\n return this.off(`command:${scopedName}`, callback as CommandEventCallback);\n};\n\n$.fn.commands = function (this: Cash, options?: CommandsBindOptions | CommandCallback | string): Cash {\n this.each((_, element) => bindCommands(element, options));\n return this;\n};\n\n$.fn.unbindCommands = function (this: Cash, scope?: string): Cash {\n this.each((_, element) => unbindCommands(element, scope));\n return this;\n};\n\n$(() => {\n $(document).on('click.zui.command', `[${COMMAND_ATTR}],a[href^=\"#!\"]`, handleGlobalCommand);\n});\n","import {$, Cash, Selector, Comparator} from '../cash';\n\n/**\n * Options for {@link isVisible}.\n */\ntype ISVisibleOptions = {\n /** Whether to check if the element is fully visible. */\n fullyCheck?: boolean;\n viewport?: {left: number, top: number, width: number, height: number} | DOMRectReadOnly;\n container?: Comparator;\n checkZeroSize?: boolean;\n};\n\n/**\n * Check an element whethear is visible in the current viewport.\n *\n * @param selector Element selector to check.\n * @param options Options.\n * @returns True if the element is visible.\n * @see https://stackoverflow.com/a/26039199\n */\nexport function isVisible(selector: Selector, options: ISVisibleOptions = {}): boolean {\n const element = $(selector)[0];\n if (!element) {\n return false;\n }\n\n let {viewport} = options;\n const {left, top, width, height} = element.getBoundingClientRect();\n if (options.checkZeroSize && !(width * height)) {\n return false;\n }\n if (!viewport) {\n if (options.container) {\n viewport = $(element).closest(options.container)[0]!.getBoundingClientRect();\n } else {\n const {innerHeight, innerWidth} = window;\n const {clientHeight, clientWidth} = document.documentElement;\n viewport = {left: 0, top: 0, width: innerWidth || clientWidth, height: innerHeight || clientHeight};\n }\n }\n const {left: viewportLeft, top: viewportTop, width: viewportWidth, height: viewportHeight} = viewport;\n if (options.fullyCheck) {\n return (\n (left >= viewportLeft)\n && (top >= viewportTop)\n && ((left + width) <= (viewportWidth + viewportLeft))\n && ((top + height) <= (viewportHeight + viewportTop))\n );\n }\n // http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap\n const horInView = (left <= (viewportLeft + viewportWidth)) && ((left + width) >= viewportLeft);\n const vertInView = (top <= (viewportTop + viewportHeight)) && ((top + height) >= viewportTop);\n\n return vertInView && horInView;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n isVisible(options?: ISVisibleOptions): boolean;\n }\n}\n\n/* Extend as $.fn.isVisible() */\n$.fn.isVisible = function (this: Cash, options?: ISVisibleOptions) {\n return isVisible(this, options);\n};\n","import {$, Cash} from '../cash';\nimport {nextGid} from '../helpers';\n\nimport type {Selector} from '../cash';\n\n/**\n * Run javascript in an element.\n *\n * @param selector Element selector to run.\n * @param jsCode If not set, run all scripts in the element.\n */\nexport function runJS(selector: Selector, jsCode?: string | null, removeAfterRun = false) {\n const $element = $(selector);\n if (jsCode !== undefined) {\n if (typeof jsCode === 'string' && jsCode.length) {\n const id = `zui-runjs-${nextGid()}`;\n $element.append(``);\n if (removeAfterRun) {\n $element.find(`#${id}`).remove();\n }\n }\n return;\n }\n if ($element.is('script')) {\n const code = $element[0]?.textContent;\n if (code) {\n runJS($element.parent(), code);\n }\n return;\n }\n $element.find('script').each((_, script) => {\n runJS($element, (script as HTMLScriptElement).textContent);\n script.remove();\n });\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n runJS(jsCode?: string): this;\n }\n\n interface CashStatic {\n runJS(jsCode: string, ...args: [name: string, value: unknown][]): T;\n }\n}\n\n/* Extend as $.runJS() */\n$.runJS = (jsCode: string, ...args: [name: string, value: unknown][]): T => {\n jsCode = jsCode.trim();\n if (!jsCode.startsWith('return ') && !jsCode.endsWith(';')) {\n jsCode = `return ${jsCode}`;\n }\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const func = new Function(...args.map(([name]) => name), jsCode);\n return func(...args.map(([, value]) => value));\n};\n\n/* Extend as $.fn.runJS() */\n$.fn.runJS = function (this: Cash, jsCode?: string) {\n return this.each((_, ele) => {\n runJS(ele, jsCode);\n });\n};\n","import {$, Cash, Selector, Comparator} from '../cash';\nimport {isVisible} from './is-visible';\n\n/**\n * Options for {@link scrollIntoView}.\n */\ntype CashScrollIntoViewOptions = ScrollIntoViewOptions & {\n ifNeeded?: boolean;\n container?: Comparator;\n};\n\nfunction hasScrollbar(element: HTMLElement, direction: 'vert' | 'horz' | 'both' = 'both') {\n if (direction === 'vert' || direction === 'both') {\n if (element.clientHeight < element.scrollHeight) {\n return true;\n }\n }\n\n if (direction === 'horz' || direction === 'both') {\n if (element.clientWidth < element.scrollWidth) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Scroll into view.\n *\n * @param selector Element selector to scroll into view.\n * @param options Options.\n * @returns True if the element is visible.\n * @see https://stackoverflow.com/a/26039199\n */\nexport function scrollIntoView(selector: Selector, options?: CashScrollIntoViewOptions): Cash {\n const $element = $(selector);\n const {ifNeeded = true, container, ...other} = options || {};\n $element.each((_, ele) => {\n if (container) {\n const $container = $(ele).closest(container);\n if (!$container.length || !hasScrollbar($container[0] as HTMLElement)) {\n return;\n }\n }\n if (ifNeeded) {\n if ((ele as unknown as {scrollIntoViewIfNeeded?: (options: ScrollIntoViewOptions) => void}).scrollIntoViewIfNeeded) {\n return (ele as unknown as {scrollIntoViewIfNeeded: (options: ScrollIntoViewOptions) => void}).scrollIntoViewIfNeeded(other);\n }\n if (isVisible(ele, {viewport: ele.getBoundingClientRect()})) {\n return;\n }\n }\n ele.scrollIntoView(other);\n });\n return $element;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n scrollIntoView(options?: CashScrollIntoViewOptions): this;\n }\n}\n\n/* Extend as $.fn.scrollIntoView() */\n$.fn.scrollIntoView = function (this: Cash, options?: CashScrollIntoViewOptions) {\n return this.each((_, ele) => {\n scrollIntoView(ele, options);\n });\n};\n","import {$} from '../cash';\n\nexport type GetLibCallback = () => void;\n\nexport interface LoadJSOptions {\n src: string;\n id?: string;\n async?: boolean;\n defer?: boolean;\n noModule?: boolean;\n type?: string;\n integrity?: string;\n}\n\nexport interface LoadJSModuleOptions extends LoadJSOptions {\n type: 'module',\n imports?: string | Record;\n srcList?: {src: string, imports?: string | Record}[];\n globalVar?: boolean | string;\n resolve?: (result: T) => void;\n}\n\nexport interface LoadCSSOptions {\n src: string;\n id?: string;\n type?: 'css';\n}\n\nexport type GetLibOptions = {\n src: string | (string | LoadJSOptions | LoadCSSOptions)[];\n id?: string;\n async?: boolean;\n defer?: boolean;\n noModule?: boolean;\n type?: string;\n integrity?: string;\n name?: string;\n root?: string;\n css?: string;\n check?: string | boolean | (() => boolean | Promise);\n success?: GetLibCallback;\n};\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface CashStatic {\n libRoot?: string;\n\n libMap?: Record;\n\n setLibRoot(root: string): void;\n\n registerLib(name: string, options: GetLibOptions): void;\n\n getLib(options: GetLibOptions): Promise;\n getLib(src: string | string[]): Promise;\n getLib(src: string | string[], options: Omit): Promise;\n getLib(src: string | string[], callback: GetLibCallback): Promise;\n getLib(src: string | string[], options: GetLibCallback, callback?: GetLibCallback): Promise;\n getLib(optionsOrSrc: string | string[] | GetLibOptions, optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise;\n\n /**\n * @deprecated Use $.getLib instead.\n */\n getScript(optionsOrSrc: string | (GetLibOptions & {src: string}), optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise;\n }\n}\n\n/** Define the $.libRoot property. */\n$.setLibRoot = function (root: string): void {\n $.libRoot = root;\n};\n\n/** Define the $.libMap property. */\n$.registerLib = function (name: string, options: GetLibOptions): void {\n if (!$.libMap) {\n $.libMap = {};\n }\n if (!options.name && options.id) {\n options.id = `zui-lib-${name}`;\n }\n $.libMap[name] = options;\n};\n\n/**\n * Load a CSS file by append a link tag to the head.\n */\nexport function loadCSS(options: string | LoadCSSOptions): Promise {\n return new Promise((resolve, reject) => {\n if (typeof options === 'string') {\n options = {src: options};\n }\n const {src, id} = options;\n const $oldLinks = $(id ? `#${id}` : `link[href=\"${src}\"]`);\n if ($oldLinks.length) {\n resolve();\n return;\n }\n const link = document.createElement('link');\n link.onload = () => {\n resolve();\n };\n link.onerror = () => {\n reject(new Error(`[ZUI] Failed to load CSS from: ${src}`));\n };\n link.rel = 'stylesheet';\n link.href = src;\n if (id) {\n link.id = id;\n }\n $('head').append(link);\n });\n}\n\nexport function loadJS(options: string | LoadJSOptions): Promise {\n return new Promise((resolve, reject) => {\n if (typeof options === 'string') {\n options = {src: options};\n }\n const {src, id} = options;\n const $oldScripts = $(id ? `#${id}` : `script[src=\"${src}\"]`);\n if ($oldScripts.length) {\n if ($oldScripts.dataset('loaded')) {\n resolve();\n } else {\n const callbacks = $oldScripts.data('loadCalls') || [];\n callbacks.push(resolve);\n $oldScripts.data('loadCalls', callbacks);\n }\n return;\n }\n const {async = true, defer = false, noModule = false, type, integrity} = options;\n const script = document.createElement('script');\n script.async = async;\n script.defer = defer;\n script.noModule = noModule;\n if (type) {\n script.type = type;\n }\n if (integrity) {\n script.integrity = integrity;\n }\n\n script.onload = () => {\n resolve();\n const callbacks: GetLibCallback[] = $(script).dataset('loaded', true).data('loadCalls') || [];\n callbacks.forEach(x => x());\n $(script).removeData('loadCalls');\n };\n script.onerror = () => {\n reject(new Error(`[ZUI] Failed to load JS from: ${src}`));\n };\n $('head').append(script);\n script.src = src;\n });\n}\n\nexport function loadModule(options: string | LoadJSModuleOptions): Promise {\n return new Promise((resolve) => {\n if (typeof options === 'string') {\n options = {type: 'module', src: options};\n }\n const {src, imports, srcList = [], id} = options;\n if (src) {\n srcList.unshift({src, imports});\n }\n\n const srcListID = srcList.map(x => x.src).join(',');\n const $oldScripts = $(id ? `#${id}` : `script[data-src-list=\"${srcListID}\"]`);\n if ($oldScripts.length) {\n const moduleResult = $oldScripts.data('module');\n if (moduleResult) {\n resolve(moduleResult);\n } else {\n const callbacks = $oldScripts.data('resolves') || [];\n callbacks.push(resolve);\n $oldScripts.data('resolves', callbacks);\n }\n return;\n }\n const {async = true, defer = false, integrity, globalVar, resolve: resolveCallback} = options;\n const script = document.createElement('script');\n const resolveID = `zui-module-resolve-${$.guid++}`;\n const $script = $(script);\n Object.assign(window, {[resolveID]: (result: T) => {\n const scriptResolves: ((result: T) => void)[] = $script.data('module', result).data('resolves') || [];\n scriptResolves.forEach(x => x(result));\n $script.removeData('resolves');\n resolveCallback?.(result);\n resolve(result);\n delete (window as unknown as Record)[resolveID];\n }});\n script.async = async;\n script.defer = defer;\n script.type = 'module';\n $script.attr('data-src-list', srcListID).attr('data-resolve-id', resolveID);\n const importNames: string[] = [];\n script.text = [\n ...srcList.map(({src: importSrc, imports: importMap}) => {\n if (imports) {\n if (typeof importMap === 'string') {\n importNames.push(importMap);\n return `import * as ${importMap} from '${importSrc}';`;\n }\n if (importMap) {\n importNames.push(...Object.values(importMap));\n return `import {${Object.entries(importMap).map(([key, value]) => `${key} as ${value}`).join(',')}} from '${importSrc}';`;\n }\n }\n return `import '${importSrc}';`;\n }),\n `const zuiImportResult = {${importNames.map(x => `${x}: ${x},`)}};`,\n globalVar ? `Object.assign(window, ${globalVar === true ? 'zuiImportResult' : `{${globalVar}: zuiImportResult}`});` : '',\n `if(window['${resolveID}']) window['${resolveID}'](zuiImportResult);`,\n ].join('\\n');\n if (integrity) {\n script.integrity = integrity;\n }\n $('head').append(script);\n });\n}\n\n/** Define the $.getLib method. */\n$.getLib = async function (optionsOrSrc: string | string[] | GetLibOptions, optionsOrCallback?: Omit | GetLibCallback, callback?: GetLibCallback): Promise {\n if (typeof optionsOrSrc === 'string') {\n optionsOrSrc = ($.libMap?.[optionsOrSrc] || {src: optionsOrSrc}) as GetLibOptions;\n }\n let options: GetLibOptions = Array.isArray(optionsOrSrc) ? {src: optionsOrSrc} : $.extend({}, optionsOrSrc);\n if (typeof optionsOrCallback === 'function') {\n options.success = optionsOrCallback;\n } else if (optionsOrCallback) {\n $.extend(options, optionsOrCallback);\n }\n if (callback) {\n options.success = callback;\n }\n\n let {src: srcList} = options;\n const {name, success} = options;\n const lib = ($.libMap && name) ? $.libMap[name] : null;\n if (lib) {\n options = $.extend({}, lib, options);\n srcList = lib.src || options.src;\n }\n if (typeof srcList === 'string') {\n srcList = [srcList];\n }\n if (!srcList || !srcList.length) {\n throw new Error('[ZUI] No src provided for $.getLib.');\n }\n\n let {check = true} = options;\n if (check === true && name) {\n check = name;\n }\n const libVarName = typeof check === 'string' ? check : name;\n let moduleResult: T | undefined;\n const getLibVar = (): T | undefined => {\n return libVarName ? ((window as unknown as Record)[libVarName] as T || moduleResult) : undefined;\n };\n if (typeof check === 'string') {\n check = () => !!getLibVar();\n }\n const onSuccess = () => {\n success?.();\n return getLibVar();\n };\n if (typeof check === 'function') {\n const checkResult = await check();\n if (checkResult) {\n return onSuccess();\n }\n }\n\n const {root = $.libRoot} = options;\n for (let srcOptions of srcList) {\n if (typeof srcOptions === 'string') {\n srcOptions = {src: srcOptions};\n }\n let {src} = srcOptions;\n if (root && !/https?:\\/\\//.test(src)) {\n src = `${root}${(root.endsWith('/') || src.startsWith('/')) ? '' : '/'}${src}`;\n }\n const loadOptions = {\n ...options,\n ...srcOptions,\n src,\n };\n if (srcOptions.type === 'css' || (!srcOptions.type && src.endsWith('.css'))) {\n await loadCSS(loadOptions as LoadCSSOptions);\n continue;\n }\n if (loadOptions.type === 'module') {\n moduleResult = await loadModule(loadOptions as LoadJSModuleOptions);\n continue;\n }\n await loadJS(loadOptions as LoadJSOptions);\n }\n return onSuccess();\n};\n\n/** Define the $.getScript method. */\n$.getScript = $.getLib;\n","import {$, Cash, Selector} from '../cash';\n\n/**\n * Listen element resize with ResizeObserver.\n *\n * @param selector Element selector to check.\n * @returns True if the element is disabled.\n */\nexport function listenResize(selector: Selector, callback: ResizeObserverCallback): ResizeObserver {\n const $elements = $(selector);\n const observer = new ResizeObserver(callback);\n\n $elements.each((_, ele) => {\n observer.observe(ele);\n });\n\n return observer;\n}\n\n/* Declare types. */\ndeclare module 'cash-dom' {\n interface Cash {\n resize(callback: ResizeObserverCallback): ResizeObserver;\n }\n}\n\n/* Extend as $.fn.resize() */\n$.fn.resize = function (this: Cash, callback: ResizeObserverCallback) {\n return listenResize(this, callback);\n};\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function d(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function h(n){return o=1,p(D,n)}function p(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=d(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function _(n,u){var i=d(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function T(n,r){var u=d(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,p as useReducer,A as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var r=h;h=void 0;f++;while(void 0!==r){var o=r.o;r.o=void 0;r.f&=-3;if(!(8&r.f)&&c(r))try{r.c()}catch(r){if(!t){i=r;t=!0}}r=o}}f=0;s--;if(t)throw i}else s--}function r(i){if(s>0)return i();s++;try{return i()}finally{t()}}var o=void 0;function n(i){var t=o;o=void 0;try{return i()}finally{o=t}}var h=void 0,s=0,f=0,v=0;function e(i){if(void 0!==o){var t=i.n;if(void 0===t||t.t!==o){t={i:0,S:i,p:o.s,n:void 0,t:o,e:void 0,x:void 0,r:t};if(void 0!==o.s)o.s.n=t;o.s=t;i.n=t;if(32&o.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=o.s;t.n=void 0;o.s.n=t;o.s=t}return t}}}function u(i){this.v=i;this.i=0;this.n=void 0;this.t=void 0}u.prototype.brand=i;u.prototype.h=function(){return!0};u.prototype.S=function(i){if(this.t!==i&&void 0===i.e){i.x=this.t;if(void 0!==this.t)this.t.e=i;this.t=i}};u.prototype.U=function(i){if(void 0!==this.t){var t=i.e,r=i.x;if(void 0!==t){t.x=r;i.e=void 0}if(void 0!==r){r.e=t;i.x=void 0}if(i===this.t)this.t=r}};u.prototype.subscribe=function(i){var t=this;return E(function(){var r=t.value,n=o;o=void 0;try{i(r)}finally{o=n}})};u.prototype.valueOf=function(){return this.value};u.prototype.toString=function(){return this.value+\"\"};u.prototype.toJSON=function(){return this.value};u.prototype.peek=function(){var i=o;o=void 0;try{return this.value}finally{o=i}};Object.defineProperty(u.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;v++;s++;try{for(var r=this.t;void 0!==r;r=r.x)r.t.N()}finally{t()}}}});function d(i){return new u(i)}function c(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function a(i){for(var t=i.s;void 0!==t;t=t.n){var r=t.S.n;if(void 0!==r)t.r=r;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function l(i){var t=i.s,r=void 0;while(void 0!==t){var o=t.p;if(-1===t.i){t.S.U(t);if(void 0!==o)o.n=t.n;if(void 0!==t.n)t.n.p=o}else r=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=o}i.s=r}function y(i){u.call(this,void 0);this.x=i;this.s=void 0;this.g=v-1;this.f=4}(y.prototype=new u).h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===v)return!0;this.g=v;this.f|=1;if(this.i>0&&!c(this)){this.f&=-2;return!0}var i=o;try{a(this);o=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}o=i;l(this);this.f&=-2;return!0};y.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}u.prototype.S.call(this,i)};y.prototype.U=function(i){if(void 0!==this.t){u.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};y.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(y.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i){return new y(i)}function _(i){var r=i.u;i.u=void 0;if(\"function\"==typeof r){s++;var n=o;o=void 0;try{r()}catch(t){i.f&=-2;i.f|=8;g(i);throw t}finally{o=n;t()}}}function g(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function p(i){if(o!==this)throw new Error(\"Out-of-order effect\");l(this);o=i;this.f&=-2;if(8&this.f)g(this);t()}function b(i){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32}b.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};b.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);a(this);s++;var i=o;o=this;return p.bind(this,i)};b.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};b.prototype.d=function(){this.f|=8;if(!(1&this.f))g(this)};function E(i){var t=new b(i);try{t.c()}catch(i){t.d();throw i}return t.d.bind(t)}export{u as Signal,r as batch,w as computed,E as effect,d as signal,n as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import{Component as n,options as r,isValidElement as i}from\"preact\";import{useMemo as t,useRef as f,useEffect as o}from\"preact/hooks\";import{Signal as e,computed as u,signal as a,effect as c}from\"@preact/signals-core\";export{Signal,batch,computed,effect,signal,untracked}from\"@preact/signals-core\";var v,s;function l(n,i){r[n]=i.bind(null,r[n]||function(){})}function d(n){if(s)s();s=n&&n.S()}function p(n){var r=this,f=n.data,o=useSignal(f);o.value=f;var e=t(function(){var n=r.__v;while(n=n.__)if(n.__c){n.__c.__$f|=4;break}r.__$u.c=function(){var n;if(!i(e.peek())&&3===(null==(n=r.base)?void 0:n.nodeType))r.base.data=e.peek();else{r.__$f|=1;r.setState({})}};return u(function(){var n=o.value.value;return 0===n?0:!0===n?\"\":n||\"\"})},[]);return e.value}p.displayName=\"_st\";Object.defineProperties(e.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:p},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});l(\"__b\",function(n,r){if(\"string\"==typeof r.type){var i,t=r.props;for(var f in t)if(\"children\"!==f){var o=t[f];if(o instanceof e){if(!i)r.__np=i={};i[f]=o;t[f]=o.peek()}}}n(r)});l(\"__r\",function(n,r){d();var i,t=r.__c;if(t){t.__$f&=-2;if(void 0===(i=t.__$u))t.__$u=i=function(n){var r;c(function(){r=this});r.c=function(){t.__$f|=1;t.setState({})};return r}()}v=t;d(i);n(r)});l(\"__e\",function(n,r,i,t){d();v=void 0;n(r,i,t)});l(\"diffed\",function(n,r){d();v=void 0;var i;if(\"string\"==typeof r.type&&(i=r.__e)){var t=r.__np,f=r.props;if(t){var o=i.U;if(o)for(var e in o){var u=o[e];if(void 0!==u&&!(e in t)){u.d();o[e]=void 0}}else i.U=o={};for(var a in t){var c=o[a],s=t[a];if(void 0===c){c=_(i,a,s,f);o[a]=c}else c.o(s,f)}}}n(r)});function _(n,r,i,t){var f=r in n&&void 0===n.ownerSVGElement,o=a(i);return{o:function(n,r){o.value=n;t=r},d:c(function(){var i=o.value.value;if(t[r]!==i){t[r]=i;if(f)n[r]=i;else if(i)n.setAttribute(r,i);else n.removeAttribute(r)}})}}l(\"unmount\",function(n,r){if(\"string\"==typeof r.type){var i=r.__e;if(i){var t=i.U;if(t){i.U=void 0;for(var f in t){var o=t[f];if(o)o.d()}}}}else{var e=r.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}n(r)});l(\"__h\",function(n,r,i,t){if(t<3||9===t)r.__$f|=2;n(r,i,t)});n.prototype.shouldComponentUpdate=function(n,r){var i=this.__$u;if(!(i&&void 0!==i.s||4&this.__$f))return!0;if(3&this.__$f)return!0;for(var t in r)return!0;for(var f in n)if(\"__source\"!==f&&n[f]!==this.props[f])return!0;for(var o in this.props)if(!(o in n))return!0;return!1};function useSignal(n){return t(function(){return a(n)},[])}function useComputed(n){var r=f(n);r.current=n;v.__$f|=4;return t(function(){return u(function(){return r.current()})},[])}function useSignalEffect(n){var r=f(n);r.current=n;o(function(){return c(function(){return r.current()})},[])}export{useComputed,useSignal,useSignalEffect};//# sourceMappingURL=signals.module.js.map\n","import type {ComponentType} from 'preact';\n\nexport const reactComponents: Record = {};\n\nexport function registerReactComponent

    (name: string, component?: ComponentType

    ): void;\n\nexport function registerReactComponent(componentMap: Record): void;\n\nexport function registerReactComponent(nameOrMap: string | Record, component?: ComponentType): void {\n if (typeof nameOrMap === 'object') {\n Object.keys(nameOrMap).forEach(name => {\n registerReactComponent(name, nameOrMap[name] as ComponentType);\n });\n } else if (component) {\n reactComponents[nameOrMap.toLowerCase()] = component;\n }\n}\n\nexport function getReactComponent

    (name: string): ComponentType

    | undefined {\n return reactComponents[name.toLowerCase()] as (ComponentType

    | undefined);\n}\n","import {h, Component} from 'preact';\nimport {deepCall} from '@zui/helpers';\nimport {nextGid} from '../../helpers/gid';\nimport {classes} from '../../helpers/classes';\nimport {getReactComponent} from './components';\nimport {i18n} from '../../i18n';\nimport {bindCommands, unbindCommands, type CommandContext} from '../../helpers';\n\nimport type {JSX, ComponentType, RenderableProps, ComponentChildren} from 'preact';\nimport type {ClassNameLike} from '../../helpers/classes';\nimport type {HElementProps} from '../types';\nimport type {I18nLangMap} from '../../i18n';\n\n/**\n * The base HTML element.\n */\nexport class HElement

    extends Component {\n static HElement = true;\n\n static customProps: string[] = [];\n\n /**\n * The component name.\n * It usually equals to the class name.\n * The name must be provided in subclass.\n */\n static NAME: string;\n\n /**\n * The component i18n data.\n * It will be merged with global i18n data.\n */\n static i18n: I18nLangMap | undefined;\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof HElement;\n\n protected _gid = nextGid();\n\n constructor(props: P) {\n super(props);\n\n this.state = this.getDefaultState(props);\n }\n\n get gid() {\n return this._gid;\n }\n\n get element() {\n return document.querySelector(`[z-gid-${this._gid}]`);\n }\n\n /**\n * Get the component i18n data.\n */\n get i18nData(): (I18nLangMap | undefined)[] {\n return [this.props.i18n, this.constructor.i18n];\n }\n\n /**\n * Get the command scope.\n */\n get commandScope() {\n return this.constructor.NAME;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getDefaultState(_props?: RenderableProps

    ): S {\n return {} as S;\n }\n\n resetState(props?: RenderableProps

    , init?: boolean) {\n const defaultState = this.getDefaultState(props);\n if (init) {\n this.state = defaultState;\n } else {\n this.changeState(defaultState);\n }\n }\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: (string | number)[], defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments.\n * @param defaultValue The default value if the key is not found.\n */\n i18n(key: string, args?: Record, defaultValue?: string): string;\n\n /**\n * Get the i18n text.\n *\n * @param key The i18n key.\n * @param args The i18n arguments or the default value.\n * @param defaultValue The default value if the key is not found.\n * @returns The i18n text.\n */\n i18n(key: string, args?: string | (string | number)[] | Record, defaultValue?: string): string {\n const {i18nData} = this;\n return i18n(i18nData, key, args, defaultValue, this.props.lang, this.constructor.NAME)\n ?? i18n(i18nData, key, args, defaultValue, this.props.lang)\n ?? `{i18n:${key}}`;\n }\n\n changeState(state: Partial | ((prevState: Readonly) => Partial), callback?: () => void): Promise {\n return new Promise(resolve => {\n this.setState(state, () => {\n callback?.();\n resolve(this.state);\n });\n });\n }\n\n executeCommand(context: CommandContext | string, params: unknown[] = []) {\n const {onCommand, commands} = this.props;\n let result;\n if (typeof context === 'string') {\n context = {name: context};\n }\n const {scope, name} = context;\n const onCommandFromProps = commands ? (commands[`${scope}~${name}`] || commands[name]) : null;\n if (onCommandFromProps) {\n return onCommandFromProps.call(this, context, params);\n }\n if (!context.scope || context.scope === this.commandScope) {\n result = deepCall(this, context.name, params);\n }\n if (onCommand) {\n result = onCommand.call(this, context, params);\n }\n return result;\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return props.className;\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {className, attrs, props: componentProps, data, forwardRef, children, component, style, class: classNameAlt, commands, onCommand, ...others} = props;\n const customProps = new Set((this.constructor as typeof HElement).customProps);\n const strDangerouslySetInnerHTML = 'dangerouslySetInnerHTML';\n const other = Object.keys(others).reduce>((map, key) => {\n if (!customProps.has(key) && (key === strDangerouslySetInnerHTML || /^(on[A-Z]|data-|zui-|z-)[a-zA-Z-]+/.test(key))) {\n const val = others[key as keyof typeof others];\n map[key] = (key !== strDangerouslySetInnerHTML && val && typeof val === 'object') ? JSON.stringify(val) : val;\n }\n return map;\n }, {});\n return {ref: forwardRef, className: classes(this._getClassName(props), classNameAlt) || undefined, style, [`z-gid-${this._gid}`]: '', ...other, ...attrs, ...componentProps};\n }\n\n protected _getComponent(props: RenderableProps

    ): ComponentType | keyof JSX.IntrinsicElements {\n const {component = 'div'} = props;\n return (typeof component === 'string' ? getReactComponent(component as string) : component) || component;\n }\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n return props.children;\n }\n\n protected _beforeRender(props: RenderableProps

    ): RenderableProps

    | undefined | void {\n return props;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _onRender(component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren, _props: RenderableProps

    ): [component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren] | void {\n return [component, componentProps, children];\n }\n\n componentDidMount(): void {\n const {commands, onCommand} = this.props;\n if (commands || onCommand) {\n bindCommands(this.element, {\n commands,\n scope: this.commandScope,\n onCommand: this.executeCommand.bind(this),\n });\n }\n }\n\n componentWillUnmount(): void {\n const {commands, onCommand} = this.props;\n if (commands || onCommand) {\n unbindCommands(this.element, this.commandScope);\n }\n }\n\n render(props: RenderableProps

    ) {\n props = this._beforeRender(props) || props;\n let component = this._getComponent(props);\n let children = this._getChildren(props);\n let componentProps = this._getProps(props);\n const renderResult = this._onRender(component, componentProps, children, props);\n if (renderResult) {\n [component, componentProps, children] = renderResult;\n }\n return h(component as ComponentType, componentProps, children);\n }\n}\n","import type {RenderableProps} from 'preact';\nimport {HElement} from './h-element';\nimport {type Signal, signal, batch} from '../signals';\nimport type {HElementProps} from '../types';\n\nexport class HElementSignals

    }> extends HElement {\n static HElementSignals = true;\n\n declare signals: SIGNALS;\n\n constructor(props: P) {\n super(props);\n\n this.signals = {} as SIGNALS;\n const {state} = this;\n this.changeState(state);\n this.state = {} as S;\n }\n\n changeState(state: Partial | ((prevState: Readonly) => Partial), callback?: () => void): Promise {\n return new Promise(resolve => {\n batch(() => {\n if (typeof state === 'function') {\n state = state(this.state);\n }\n for (const key in state) {\n const sg = this.signals[key as unknown as keyof SIGNALS] as Signal;\n if (sg) {\n sg.value = state[key as keyof S];\n } else {\n this.signals[key as unknown as keyof SIGNALS] = signal(state[key as keyof S]) as SIGNALS[keyof SIGNALS];\n }\n }\n resolve(this.state);\n callback?.();\n });\n });\n }\n\n resetState(props?: RenderableProps

    ) {\n this.changeState(this.getDefaultState(props));\n }\n}\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n

    Hello world

    \n * Hello world\" />\n *\n * // Render and execute script\n * alert('Hello world')\" executeScript />\n */\nexport class HtmlContent extends Component {\n protected _ref = createRef();\n\n protected _runJS() {\n if (!this.props.executeScript) {\n return;\n }\n $(this._ref.current).runJS().zuiInit();\n }\n\n componentDidMount(): void {\n this._runJS();\n }\n\n componentDidUpdate(previousProps: Readonly): void {\n if (this.props.html !== previousProps.html) {\n this._runJS();\n }\n }\n\n render(props: HtmlContentProps) {\n const {executeScript, html, ...others} = props;\n return ;\n }\n}\n","import {h as _h, isValidElement, ComponentChildren, JSX, Attributes} from 'preact';\nimport {classes, ClassNameLike} from '../../helpers';\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultItem = Partial<{\n html: string;\n __html: string;\n style: JSX.CSSProperties;\n className: ClassNameLike;\n children: ComponentChildren;\n attrs: JSX.HTMLAttributes;\n [prop: string]: unknown;\n}>;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultGenerator = unknown[], THIS = unknown> = (this: THIS, result: ComponentChildren[], ...args: T) => (ComponentChildren | CustomRenderResultItem)[] | undefined | void;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResult = unknown[], THIS = unknown> = CustomRenderResultGenerator | CustomRenderResultItem | ComponentChildren;\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderResultList = unknown[], THIS = unknown> = CustomRenderResult[];\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport type CustomRenderProps = unknown[], THIS = unknown> = {\n tag?: string;\n className?: ClassNameLike;\n style?: JSX.CSSProperties;\n renders: CustomRenderResultList;\n generateArgs?: T;\n generators?: Record>;\n generatorThis?: THIS;\n onGenerate?: (this: THIS, generator: CustomRenderResultGenerator, result: ComponentChildren[], ...args: T) => (ComponentChildren | CustomRenderResultItem)[];\n onRenderItem?: (item: CustomRenderResultItem) => ComponentChildren;\n children?: ComponentChildren;\n};\n\n/**\n * @deprecated Use `renderCustomContent` instead.\n */\nexport function renderCustomResult(props: CustomRenderProps): [JSX.HTMLAttributes, ComponentChildren[]] {\n const {\n tag,\n className,\n style,\n renders,\n generateArgs = [],\n generatorThis,\n generators,\n onGenerate,\n onRenderItem,\n ...others\n } = props;\n const classList: ClassNameLike = [className];\n const rootStyle: JSX.CSSProperties = {...style};\n const result: ComponentChildren[] = [];\n const rawHtml: string[] = [];\n renders.forEach(render => {\n const items: (CustomRenderResultItem | ComponentChildren)[] = [];\n if (typeof render === 'string' && generators && generators[render]) {\n render = generators[render];\n }\n if (typeof render === 'function') {\n if (onGenerate) {\n items.push(...onGenerate.call(generatorThis, render as CustomRenderResultGenerator, result, ...generateArgs));\n } else {\n const renderResult = (render as CustomRenderResultGenerator).call(generatorThis, result, ...generateArgs);\n if (renderResult) {\n if (Array.isArray(renderResult)) {\n items.push(...renderResult);\n } else {\n items.push(renderResult);\n }\n }\n }\n } else {\n items.push(render);\n }\n items.forEach(item => {\n if (item === undefined || item === null) {\n return;\n }\n if (typeof item === 'object' && !isValidElement(item) && ('html' in item || '__html' in item || 'className' in item || 'style' in item || 'attrs' in item || 'children' in item)) {\n if (item.html) {\n result.push(\n
    )}>
    ,\n );\n } else if (item.__html) {\n rawHtml.push(item.__html);\n } else {\n if (item.style) {\n Object.assign(rootStyle, item.style);\n }\n if (item.className) {\n classList.push(item.className);\n }\n if (item.children) {\n result.push(item.children);\n }\n if (item.attrs) {\n Object.assign(others, item.attrs);\n }\n }\n } else {\n result.push(item);\n }\n });\n });\n\n if (rawHtml.length) {\n Object.assign(others, {dangerouslySetInnerHTML: {__html: rawHtml}});\n }\n\n return [{\n className: classes(classList),\n style: rootStyle,\n ...others,\n }, result];\n}\n\n/**\n * @deprecated Use `CustomContent` instead.\n */\nexport function CustomRender({\n tag = 'div',\n ...props\n}: CustomRenderProps) {\n const [attrs, children] = renderCustomResult(props);\n return _h(tag, attrs as Attributes, ...children);\n}\n","import {Component, createRef} from 'preact';\nimport type {LazyContentProps, CustomContentType} from '../types';\nimport {$} from '../../cash';\nimport {fetchData, FetcherSetting, type Ajax} from '../../ajax';\nimport {HtmlContent} from './html-content';\nimport {CustomContent} from './custom-content';\nimport {classes} from '../../helpers';\n\nexport type LazyContentState = {\n loading?: boolean;\n error?: Error;\n content?: CustomContentType;\n};\n\nexport class LazyContent extends Component {\n static defaultProps: Partial = {\n type: 'html',\n loadingIndicator: true,\n loadingClass: 'loading',\n };\n\n state: LazyContentState = {};\n\n protected _ref = createRef();\n\n protected _ajax?: Ajax;\n\n async load(newFetcher?: FetcherSetting) {\n const {props} = this;\n const {fetcher, type, fetcherArgs, fetcherThis = this} = props;\n this.setState({loading: true, error: undefined, content: undefined});\n try {\n const content = await fetchData(newFetcher || fetcher, fetcherArgs, {throws: true, dataType: type === 'custom' ? 'json' : 'text'}, fetcherThis, (ajax) => {\n this._ajax = ajax;\n });\n this.setState({content: content as CustomContentType, loading: false});\n } catch (error) {\n this.setState({error: error as Error, loading: false});\n }\n this._ajax = undefined;\n }\n\n componentDidMount(): void {\n this.load();\n $(this._ref.current).on('loadContent.zui', (event: Event, fetcher?: FetcherSetting) => {\n event.stopPropagation();\n this.load(fetcher);\n });\n }\n\n componentDidUpdate(previousProps: Readonly): void {\n if (this.props.fetcher !== previousProps.fetcher || this.props.fetcherArgs !== previousProps.fetcherArgs || this.props.fetcherThis !== previousProps.fetcherThis) {\n this.load();\n }\n }\n\n componentWillUnmount(): void {\n this._ajax?.abort();\n $(this._ref.current).off('.zui');\n }\n\n protected _renderContent(_props: LazyContentProps, others: Partial) {\n const {loading, error, content = ''} = this.state;\n const {loadingContent, errorText, type, ...otherProps} = others;\n if (loading) {\n return loadingContent;\n }\n if (error) {\n return errorText ?? error.message;\n }\n if (type === 'html') {\n return ;\n }\n if (type === 'text') {\n return content;\n }\n return ;\n }\n\n render(props: LazyContentProps) {\n const {loading} = this.state;\n const {id, loadingClass, loadingIndicator, className, style, attrs, loadingText, ...others} = props;\n return (\n
    \n {this._renderContent(props, others)}\n
    \n );\n }\n}\n","import {isValidElement} from 'preact';\nimport {HtmlContent} from './html-content';\nimport {HElement} from './h-element';\nimport {LazyContent} from './lazy-content';\nimport {mergeProps} from '../../helpers';\n\nimport type {ComponentChildren, VNode} from 'preact';\nimport type {HtmlContentProps, HElementProps, CustomContentType, CustomContentGenerator, CustomContentProps, LazyContentProps} from '../types';\n\n/**\n * Render custom content.\n *\n * @param content The content to render.\n * @param generatorThis The `this` value to use when calling the generator.\n * @param generatorArgs The arguments to pass to the generator.\n * @returns The rendered content.\n */\nexport function renderCustomContent(props: CustomContentProps): ComponentChildren {\n const {content: contentSetting, generatorArgs, generatorThis, ...others} = props;\n let content = contentSetting;\n if (typeof content === 'function') {\n content = (content as CustomContentGenerator).call(generatorThis, ...(generatorArgs || []));\n }\n if (Array.isArray(content)) {\n return content.map((x) => renderCustomContent({...others, content: x, generatorThis, generatorArgs}));\n }\n if ((typeof content === 'string' || typeof content === 'number')) {\n if (Object.keys(others).length) {\n return
    {content}
    ;\n }\n return content;\n }\n if (content && typeof content === 'object' && (typeof (content as HtmlContentProps).html === 'string' || (content as HtmlContentProps).component || (content as LazyContentProps).fetcher)) {\n if ((content as LazyContentProps).fetcher) {\n return ;\n }\n if ((content as HtmlContentProps).html) {\n return ;\n }\n const {children, ...contentOthers} = content as HElementProps;\n if (children) {\n content = mergeProps({children: ((Array.isArray(children) ? children : [children]) as CustomContentType[]).map((x) => renderCustomContent({...others, content: x, generatorThis, generatorArgs}))}, contentOthers);\n }\n return ;\n }\n if (isValidElement(content)) {\n return content;\n }\n if (content) {\n console.groupCollapsed('[ZUI] CustomContent format error');\n console.trace('content:', content);\n console.log('props:', props);\n console.groupEnd();\n }\n return null;\n}\n\n/**\n * Component for rendering custom content.\n *\n * @param props Custom content props.\n * @returns Custom content.\n */\nexport function CustomContent(props: CustomContentProps): VNode | null {\n const result = renderCustomContent(props);\n if (result === undefined || result === null || typeof result === 'boolean') {\n return null;\n }\n if (isValidElement(result)) {\n return result;\n }\n return <>{result};\n}\n","import {isValidElement} from 'preact';\nimport {classes} from '../../helpers/classes';\n\nimport type {ClassNameLike} from '../../helpers/classes';\nimport type {IconProps} from '../types';\n\nconst createIconClass = (icon: string) => icon.startsWith('icon-') ? icon : `icon-${icon}`;\n\n/**\n * Component for rendering icons.\n *\n * @param props Icon properties.\n * @returns Icon element.\n */\nexport function Icon(props: IconProps) {\n const {icon, className, ...others} = props;\n if (!icon) {\n return null;\n }\n if (isValidElement(icon)) {\n return icon;\n }\n const classList: ClassNameLike[] = ['icon', className as string];\n if (typeof icon === 'string') {\n classList.push(createIconClass(icon));\n } else if (typeof icon === 'object') {\n const {className: iconClass, icon: finalIcon, ...iconOthers} = icon;\n classList.push(iconClass as string, finalIcon ? createIconClass(finalIcon as string) : '');\n Object.assign(others, iconOthers);\n }\n return ;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {createElement, render} from 'preact';\n\nimport type {VNode, RenderableProps, ContainerNode} from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(this: any, props: RenderableProps<{context: any}>) {\n this.getChildContext = () => props.context;\n return props.children;\n}\n\n/**\n * Portal component\n * @this {import('preact').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nexport function Portal(this: any, props: any) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const container = props._container;\n\n that.componentWillUnmount = function () {\n render(null, that._temp);\n that._temp = null;\n that._container = null;\n };\n\n // When we change container we should clear our old container and\n // indicate a new mount.\n if (that._container && that._container !== container) {\n that.componentWillUnmount();\n }\n\n // When props.vnode is undefined/false/null we are dealing with some kind of\n // conditional vnode. This should not trigger a render.\n if (props._vnode) {\n if (!that._temp) {\n that._container = container;\n\n // Create a fake DOM parent node that manages a subset of `container`'s children:\n that._temp = {\n nodeType: 1,\n parentNode: container,\n childNodes: [],\n appendChild(child: VNode) {\n this.childNodes.push(child);\n that._container.appendChild(child);\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(child: VNode, _before: VNode) {\n this.childNodes.push(child);\n that._container.appendChild(child);\n },\n removeChild(child: VNode) {\n this.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n that._container.removeChild(child);\n },\n };\n }\n\n // Render our wrapping element into temp.\n render(\n createElement(ContextProvider as any, {context: that.context}, props._vnode),\n that._temp,\n );\n } else if (that._temp) {\n // When we come from a conditional render, on a mounted\n // portal we should clear the DOM.\n that.componentWillUnmount();\n }\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n *\n * @param {import('preact').VNode} vnode The vnode to render\n * @param {import('preact').PreactElement} container The DOM node to continue rendering in to.\n * @see https://github.com/developit/preact-portal/blob/master/src/preact-portal.js\n */\nexport function createPortal(vnode: VNode, container: ContainerNode): VNode {\n const el = createElement(Portal as any, {_vnode: vnode, _container: container}) as any;\n el.containerInfo = container;\n return el;\n}\n","import {HElement} from './h-element';\nimport {HtmlContent} from './html-content';\nimport {CustomContent} from './custom-content';\nimport {LazyContent} from './lazy-content';\nimport {Icon} from './icon';\nimport {Portal} from './portals';\nimport {registerReactComponent} from './components';\n\nregisterReactComponent({\n HElement,\n element: HElement,\n HtmlContent,\n html: HtmlContent,\n CustomContent,\n LazyContent,\n custom: CustomContent,\n lazy: LazyContent,\n Icon,\n Portal,\n});\n","import {createRef, render, h} from 'preact';\nimport {Component as ComponentBase} from '../component';\nimport {mergeProps} from '../helpers';\n\nimport type {Component as ComponentReact, ComponentClass} from 'preact';\nimport {type I18nLangMap} from '../i18n';\nimport type {ComponentEventsDefnition} from '../component';\n\nexport class ComponentFromReact = ComponentReact, E extends ComponentEventsDefnition = {}, U extends HTMLElement = HTMLElement> extends ComponentBase {\n /**\n * The React component class.\n */\n static Component: unknown;\n\n /**\n * Whether replace the element.\n */\n static replace: boolean | keyof HTMLElementTagNameMap | (string & {}) = false;\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof ComponentFromReact;\n\n /**\n * The React ref for component instance.\n */\n protected _ref = createRef();\n\n /**\n * The React component instance.\n */\n get $(): C | null {\n return this._ref.current;\n }\n\n /**\n * The i18n data.\n */\n get i18nData() {\n const {i18n, i18nData} = this.constructor.Component as {i18n?: I18nLangMap, i18nData?: (I18nLangMap | undefined)[]};\n if (i18nData) {\n return [...i18nData, this.constructor.i18n];\n }\n return [i18n, ...super.i18nData];\n }\n\n /**\n * Render after component init.\n */\n afterInit() {\n this.render();\n }\n\n /**\n * Destroy component.\n */\n destroy() {\n this.$?.componentWillUnmount?.();\n if (this.element) {\n this.element.innerHTML = '';\n }\n super.destroy();\n }\n\n /**\n * Render component.\n *\n * @param options new options.\n */\n render(options?: Partial, reset?: boolean) {\n const {element, $: instance} = this;\n const {Component, replace} = this.constructor;\n const {$replace = replace, $optionsFromDataset, ...userOptions} = this.setOptions(options, reset);\n const props = {\n ref: this._ref,\n ...userOptions,\n };\n if (reset) {\n (instance as {resetState?: (props?: Record, init?: boolean) => void})?.resetState?.(userOptions);\n }\n\n if ($replace && (Component as {HElement?: boolean}).HElement && (element.tagName.toLowerCase() === $replace || $replace === true)) {\n const attrs = Array.from(element.attributes).reduce>((data, attribute) => {\n const {name, value} = attribute;\n data[name === 'class' ? 'className' : name] = value;\n return data;\n }, {});\n render(\n h(Component as ComponentClass, mergeProps({component: element.tagName.toLowerCase(), attrs}, props)),\n element.parentElement!,\n element,\n );\n } else {\n render(\n h(Component as ComponentClass, props),\n element,\n );\n }\n }\n\n static renderHTML(options: Record): string {\n const tmpNode = document.createElement('div');\n render(h(this.Component as ComponentClass, options), tmpNode);\n return tmpNode.innerHTML;\n }\n}\n","import {HElement, Icon, classes} from '@zui/core';\n\nimport type {ClassNameLike} from '@zui/core';\nimport type {ButtonProps} from '../types/button-props';\nimport type {RenderableProps} from 'preact';\n\nexport class Button

    extends HElement

    {\n protected declare _isEmptyText?: boolean;\n\n protected declare _onlyCaret?: boolean;\n\n protected _beforeRender(props: RenderableProps

    ) {\n const {text, loading, loadingText, caret, icon, trailingIcon, children} = props;\n this._isEmptyText = text === undefined || text === null || (typeof text === 'string' && !text.length) || loading && !loadingText;\n this._onlyCaret = caret && this._isEmptyText && !icon && !trailingIcon && !children && !loading;\n }\n\n protected _getChildren(props: RenderableProps

    ) {\n const {loading, loadingIcon, loadingText, icon, iconClass, text, textClass, children, trailingIcon, trailingIconClass, caret} = props;\n return [\n loading ? : ,\n this._isEmptyText ? null : {loading ? loadingText : text},\n loading ? null : children,\n loading ? null : ,\n loading ? null : caret ? : null,\n ];\n }\n\n protected _getClassName(props: RenderableProps

    ) {\n const {type, className, disabled, loading, active, children, square, size, rounded} = props;\n return ['btn', type, className, {\n 'btn-caret': this._onlyCaret,\n disabled: disabled || loading,\n active,\n loading,\n square: square === undefined ? (!this._onlyCaret && !children && this._isEmptyText) : square,\n }, size ? `size-${size}` : '', typeof rounded === 'string' ? `rounded-${rounded}` : {rounded}];\n }\n\n protected _getComponent(props: RenderableProps

    ) {\n return props.component || (props.url ? 'a' : 'button');\n }\n\n protected _getProps(props: RenderableProps

    ) {\n const component = this._getComponent(props);\n const {url, target, disabled, btnType = 'button', hint, command} = props;\n const asLink = component === 'a';\n const componentProps: Record = {\n ...super._getProps(props),\n type: asLink ? undefined : 'button',\n disabled: (!asLink && disabled) ? '' : undefined,\n title: hint,\n };\n if (btnType) {\n if (['button', 'reset', 'submit'].includes(btnType)) {\n if (component === 'button') {\n componentProps.type = btnType;\n }\n } else {\n componentProps.className = classes([componentProps.className as ClassNameLike, btnType]);\n }\n }\n if (!disabled) {\n if (url !== undefined) {\n componentProps[asLink ? 'href' : 'data-url'] = url;\n }\n if (target !== undefined) {\n componentProps[asLink ? 'target' : 'data-target'] = target;\n }\n if (command) {\n componentProps['zui-command'] = command;\n }\n }\n return componentProps;\n }\n}\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","import {CustomContent, HElement, mergeProps} from '@zui/core';\n\nimport type {ComponentChild, ComponentChildren, ComponentType, JSX, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '../../../core/src/helpers';\nimport type {CommonListProps, Item, ItemKey, ItemType} from '../types';\n\n/**\n * Generic list component.\n */\nexport class CommonList

    extends HElement {\n /**\n * Root element default name, used for class name.\n */\n static NAME = '';\n\n /**\n * Item default name, used for class name.\n */\n static ITEM_NAME = 'item';\n\n /**\n * Root element default tag name, used for DOM rendering.\n */\n static TAG = 'ul';\n\n /**\n * Item components, used for rendering for different item types.\n */\n static ItemComponents: Partial | ((this: CommonList, item: Item, props: CommonListProps) => Partial)]>> = {\n default: HElement,\n divider: [HElement, {className: 'divider'}],\n space: [HElement, (item) => {\n const {space, flex, style} = item as {space: JSX.CSSProperties['width'], flex: JSX.CSSProperties['flex'], style: JSX.CSSProperties};\n return {\n style: {width: space, height: space, flex, ...style},\n };\n }],\n };\n\n /**\n * Item default common props, used for rendering for all item types.\n */\n static defaultItemProps: Partial = {\n component: 'li',\n };\n\n /**\n * Item default props, used for rendering for different item types.\n */\n static defaultItemPropsMap: Partial>> = {};\n\n /**\n * Item default type, used for rendering for item without type.\n */\n static defaultItemType = 'item';\n\n static defaultProps: Partial = {\n itemKey: 'id',\n };\n\n /**\n * Access to static properties via this.constructor.\n *\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n */\n declare ['constructor']: typeof CommonList;\n\n /**\n * Store the raw items.\n */\n protected declare _items: Item[];\n\n /**\n * Store the rendered items.\n */\n protected declare _renderedItems: Item[];\n\n constructor(props: P) {\n super(props);\n this._handleClick = this._handleClick.bind(this);\n }\n\n /**\n * Get the root element name, used for class name.\n */\n get name() {\n return this.props.name || this.constructor.NAME;\n }\n\n /**\n * Get the item element name, used for class name.\n */\n get itemName() {\n return this.props.itemName || this.constructor.ITEM_NAME;\n }\n\n getItems() {\n return this._items;\n }\n\n getRenderedItem(key: ItemKey) {\n return this._renderedItems.find((item) => item.key === key);\n }\n\n getItem(key: ItemKey): Item | undefined {\n return this._items[this.getItemIndex(key)];\n }\n\n getItemIndex(key: ItemKey) {\n return this._renderedItems.findIndex((item) => item.key === key);\n }\n\n getItemByIndex(index: number) {\n return this._items[index];\n }\n\n /**\n * Get the item key by index.\n *\n * @param index The rendered item index.\n * @returns The item key, if the item is not rendered, return undefined.\n */\n getKey(index: number): ItemKey | undefined {\n return this._renderedItems?.[index]?.key;\n }\n\n protected _getItemFromEvent(event: MouseEvent, target?: HTMLElement): {\n index: number;\n item: Item;\n renderedItem: Item;\n element: HTMLElement;\n event: MouseEvent;\n key: ItemKey;\n relativeTarget?: unknown;\n } | undefined {\n const element = (target || event.target as HTMLElement).closest('[z-item]') as HTMLElement;\n if (!element || !element.parentElement?.hasAttribute(`z-gid-${this._gid}`)) {\n return;\n }\n const index = +element.getAttribute('z-item')!;\n const item = this._items[index];\n if (!item) {\n return;\n }\n const key = this.getKey(index);\n if (key === undefined) {\n return;\n }\n const renderedItem = this._renderedItems[index];\n return {index, item, element, event, key, renderedItem, relativeTarget: this.props.relativeTarget};\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = this._getItemFromEvent(event);\n if (!info) {\n return;\n }\n this.props.onClickItem?.call(this, info);\n info.item.onClick?.call(this, event, info);\n return info;\n }\n\n /**\n * Render the item content.\n *\n * @param props Current list properties.\n * @param item The item to render.\n * @param index The item index.\n * @returns The item rendered content.\n */\n protected _renderItem(props: RenderableProps

    , item: Item, index: number): ComponentChildren {\n const {beforeRenderItem} = props;\n if (beforeRenderItem) {\n const result = beforeRenderItem.call(this, item, index);\n if (result !== undefined) {\n item = result;\n }\n }\n\n const {type} = item;\n let {itemRender} = props;\n if (itemRender && typeof itemRender === 'object') {\n itemRender = itemRender[type!];\n }\n if (itemRender) {\n const customResult = itemRender.call(this, item, index);\n if (customResult !== undefined) {\n return ;\n }\n }\n\n const {ItemComponents} = this.constructor;\n let ItemComponent = ItemComponents[type!];\n if (!ItemComponent && item.component) {\n return ;\n }\n ItemComponent = ItemComponent || ItemComponents.default || HElement;\n if (Array.isArray(ItemComponent)) {\n let defaultItemProps = ItemComponent[1];\n if (typeof defaultItemProps === 'function') {\n defaultItemProps = defaultItemProps.call(this as CommonList, item, props);\n }\n item = mergeProps({}, defaultItemProps, item);\n ItemComponent = ItemComponent[0];\n }\n return ;\n }\n\n /**\n * Get the rendered item final properties.\n *\n * @param props Current list properties.\n * @param item The item to render.\n * @param index The item index.\n * @returns The item to rendered, if return false, the item will not be rendered.\n */\n protected _getItem(props: RenderableProps

    , item: Item, index: number): Item | false {\n if (!item) {\n return false;\n }\n const {itemProps, itemPropsMap = {}, getItem, itemKey} = props;\n const {type = this.constructor.defaultItemType} = item;\n const {name, itemName} = this;\n const {defaultItemProps = {}, defaultItemPropsMap = {}} = this.constructor;\n\n item = mergeProps(\n {type},\n defaultItemProps,\n defaultItemPropsMap[type],\n itemProps,\n itemPropsMap[type],\n {className: [name ? `${name}-${type}` : '', itemName]},\n item,\n {\n _item: item,\n _index: index,\n key: String((itemKey ? item[itemKey] : item.key) ?? (item.key ?? index)),\n onClick: undefined,\n },\n );\n\n if (getItem) {\n const result = getItem.call(this, item, index);\n if (result !== undefined) {\n return result;\n }\n }\n return item;\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const finalProps = super._getProps(props);\n return {onClick: this._handleClick, ...finalProps};\n }\n\n /**\n * Get the list root element classname list.\n *\n * @param props Current list properties.\n * @returns The list root element classname list.\n */\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return [this.name, props.className];\n }\n\n /**\n * Get final rendered item list.\n *\n * @param props Current list properties.\n * @returns Item list.\n */\n protected _getItems(props: RenderableProps

    ): Item[] {\n let {items = []} = props;\n if (typeof items === 'function') {\n items = items.call(this);\n } else if (!Array.isArray(items)) {\n items = [];\n }\n const {getItems} = props;\n if (getItems) {\n const result = getItems.call(this, items as Item[]);\n if (result !== undefined) {\n return result;\n }\n }\n return items as Item[];\n }\n\n /**\n * Render items.\n *\n * @param props props Current list properties.\n * @param items Render items.\n * @returns React render children.\n */\n protected _renderItems(props: RenderableProps

    , items: Item[]): ComponentChild[] {\n this._renderedItems = items.map((item, index) => {\n const finalItem = this._getItem(props, item, index);\n return finalItem ? finalItem : undefined;\n }) as Item[];\n return this._renderedItems.reduce((children, item, index) => {\n if (item) {\n children.push(this._renderItem(props, item, index));\n }\n return children;\n }, []);\n }\n\n /**\n * Get root element rendered children.\n *\n * @param props Current list properties.\n * @returns React render children.\n */\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n const items = this._getItems(props);\n this._items = items;\n const children = this._renderItems(props, items);\n if (props.children) {\n children.push(props.children);\n }\n return children;\n }\n\n /**\n * Get root element rendered component type.\n *\n * @param props Current list properties.\n * @returns React component type.\n */\n protected _getComponent(props: RenderableProps

    ): ComponentType | keyof JSX.IntrinsicElements {\n return props.component || (this.constructor.TAG as keyof JSX.IntrinsicElements);\n }\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {CommonList as CommonListReact} from '../component';\n\nimport type {CommonListProps} from '../types';\n\nexport class CommonList extends ComponentFromReact {\n static NAME = 'CommonList';\n\n static Component = CommonListReact;\n\n static replace = CommonListReact.TAG;\n}\n\nCommonList.register();\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","export type RGBColor = [r: number, g: number, b: number];\n\nexport function hex2Rgb(hex: string): RGBColor {\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n throw new Error(`Invalid HEX color \"${hex}\".`);\n }\n return [\n parseInt(hex.slice(0, 2), 16), // r\n parseInt(hex.slice(2, 4), 16), // g\n parseInt(hex.slice(4, 6), 16), // b\n ];\n}\n\nexport function isLightColor(color: string | RGBColor): boolean {\n const [r, g, b] = typeof color === 'string' ? hex2Rgb(color) : color;\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186;\n}\n\nexport function contrastColor(color: string | RGBColor, options?: {dark: string, light: string}) {\n return isLightColor(color) ? (options?.dark ?? '#333333') : (options?.light ?? '#ffffff');\n}\n\nfunction clamp(value: number, max = 255): number {\n return Math.min(Math.max(value, 0), max);\n}\n\nexport function hslToRgb(h: number, s: number, l: number): RGBColor {\n h = (h % 360) / 360;\n s = clamp(s);\n l = clamp(l);\n\n const m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n const m1 = l * 2 - m2;\n\n const hue = (value: number): number => {\n value = value < 0 ? value + 1 : (value > 1 ? value - 1 : value);\n if (value * 6 < 1) {\n return m1 + (m2 - m1) * value * 6;\n } else if (value * 2 < 1) {\n return m2;\n } else if (value * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - value) * 6;\n } else {\n return m1;\n }\n };\n\n return [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255,\n ];\n}\n","import {Component, ComponentChildren, JSX} from 'preact';\nimport {classes, Icon} from '@zui/core';\nimport {contrastColor, hslToRgb} from '@zui/helpers/src/color-helper';\nimport {getUniqueCode} from '@zui/helpers/src/string-code';\nimport {AvatarOptions} from '../types/';\n\nfunction getAvatarText(text: string, maxTextLength: number) {\n if (/^[\\u4e00-\\u9fa5\\s]+$/.test(text)) {\n return text.length <= maxTextLength ? text : text.substring(text.length - maxTextLength);\n }\n if (/^[A-Za-z\\d\\s]+$/.test(text)) {\n return text[0].toUpperCase();\n }\n return text.length <= maxTextLength ? text : text.substring(0, maxTextLength);\n}\n\nexport class Avatar extends Component {\n render() {\n const {\n className,\n style,\n size = '',\n circle,\n rounded,\n background,\n foreColor,\n icon,\n text,\n code,\n maxTextLength = 2,\n src,\n hueDistance = 43,\n saturation = 0.4,\n lightness = 0.6,\n children,\n ...others\n } = this.props;\n\n const finalClass = ['avatar', className];\n const finalStyle = {...style, background, color: foreColor};\n\n let actualSize = 32;\n if (size) {\n if (typeof size === 'number') {\n finalStyle.width = `${size}px`;\n finalStyle.height = `${size}px`;\n finalStyle.fontSize = `${Math.max(12, Math.round(size / 2))}px`;\n actualSize = size;\n } else {\n finalClass.push(`size-${size}`);\n actualSize = ({xs: 20, sm: 24, lg: 48, xl: 80})[size];\n }\n }\n if (circle) {\n finalClass.push('circle');\n } else if (rounded) {\n if (typeof rounded === 'number') {\n finalStyle.borderRadius = `${rounded}px`;\n } else {\n finalClass.push(`rounded-${rounded}`);\n }\n }\n\n let content: ComponentChildren | undefined;\n if (src) {\n finalClass.push('has-img');\n content = {text};\n } else if (icon) {\n finalClass.push('has-icon');\n content = ;\n } else if (text?.length) {\n const displayText = getAvatarText(text, maxTextLength);\n const displayTextLength = displayText.length;\n finalClass.push('has-text', `has-text-${displayTextLength}`);\n\n if (background === undefined) {\n const avatarCode = code ?? text;\n const hue = (typeof avatarCode === 'number' ? avatarCode : getUniqueCode(avatarCode)) * hueDistance % 360;\n finalStyle.background = `hsl(${hue},${saturation * 100}%,${lightness * 100}%)`;\n if (!foreColor) {\n const rgb = hslToRgb(hue, saturation, lightness);\n finalStyle.color = contrastColor(rgb);\n }\n } else if (!foreColor && background) {\n finalStyle.color = contrastColor(background);\n }\n let textStyle: JSX.CSSProperties | undefined;\n if (actualSize && actualSize < (16 * displayTextLength)) {\n textStyle = {transform: `scale(${actualSize / (16 * displayTextLength)})`, whiteSpace: 'nowrap'};\n }\n\n content =

    {displayText}
    ;\n }\n\n return (\n \n {content}\n {children}\n
    \n );\n }\n}\n","import {$, mergeProps, removeUndefinedProps} from '@zui/core';\nimport {Button} from '@zui/button/src/component';\nimport {CommonList} from '@zui/common-list/src/component';\n\nimport type {RenderableProps} from 'preact';\nimport type {ButtonProps} from '@zui/button';\nimport type {Item} from '@zui/common-list';\nimport type {BtnGroupOptions} from '../types';\n\nexport class BtnGroup extends CommonList {\n static NAME = 'btn-group';\n\n /**\n * Root element default tag name, used for DOM rendering.\n */\n static TAG = 'nav';\n\n static ItemComponents = {\n ...CommonList.ItemComponents,\n default: Button,\n };\n\n /**\n * Item default common props, used for rendering for all item types.\n */\n static defaultItemProps: Partial = {\n component: undefined,\n };\n\n protected _shareBtnProps?: Partial;\n\n protected _isBtnType({type}: Item): boolean {\n return type === 'item' || type === 'dropdown';\n }\n\n protected _getItem(props: RenderableProps, item: Item, index: number): false | Item {\n if (!item) {\n return false;\n }\n if (!item.type) {\n item = $.extend({type: (item.dropdown || item.items) ? 'dropdown' : 'item'}, item);\n }\n let itemProps = super._getItem(props, item, index);\n if (!itemProps) {\n return itemProps;\n }\n if (this._isBtnType(itemProps)) {\n itemProps = mergeProps({}, this._shareBtnProps, itemProps);\n }\n return itemProps;\n }\n\n protected _beforeRender(props: RenderableProps): void | RenderableProps | undefined {\n const {btnProps, btnType, size} = props;\n\n this._shareBtnProps = mergeProps({}, btnProps, removeUndefinedProps({btnType, size}));\n }\n}\n","import {classes, $, mergeProps} from '@zui/core';\nimport {BtnGroup} from '@zui/btn-group/src/component/btn-group';\n\nimport type {Item} from '@zui/common-list';\nimport type {ToolbarOptions, ToolbarSetting} from '../types';\nimport type {ClassNameLike} from '@zui/core/src/helpers';\nimport type {Attributes, RenderableProps} from 'preact';\n\nexport class Toolbar extends BtnGroup {\n static NAME = 'toolbar';\n\n static defaultProps: Partial = {\n btnProps: {\n btnType: 'ghost',\n },\n };\n\n static ItemComponents = {\n ...BtnGroup.ItemComponents,\n btnGroup: BtnGroup,\n 'btn-group': BtnGroup,\n };\n\n protected _getProps(props: RenderableProps): Record {\n const {gap} = props;\n const propsMap = super._getProps(props);\n if (gap) {\n if (typeof gap === 'number') {\n propsMap.className = classes(propsMap.className as ClassNameLike, `gap-${gap}`);\n } else {\n propsMap.style = $.extend(propsMap.style || {}, {gap: gap});\n }\n }\n return propsMap;\n }\n\n protected _getItem(props: RenderableProps, item: Item, index: number): false | Item {\n const itemProps = super._getItem(props, item, index);\n if (!itemProps) {\n return itemProps;\n }\n const {type} = itemProps;\n const isBtnGroup = type === 'btn-group' || type === 'btnGroup';\n if (isBtnGroup) {\n itemProps.btnProps = mergeProps({}, this._shareBtnProps, itemProps.btnProps);\n }\n if ((isBtnGroup || type === 'dropdown') && !itemProps.relativeTarget) {\n itemProps.relativeTarget = props.relativeTarget;\n }\n return itemProps;\n }\n\n static render(this: unknown, setting: ToolbarSetting | undefined, args: T, defaultProps?: Partial & Attributes, thisObject?: unknown) {\n let toolbarOptions = typeof setting === 'function' ? setting.call(thisObject ?? this, ...args) : setting;\n if (!toolbarOptions) {\n return;\n }\n if (Array.isArray(toolbarOptions)) {\n toolbarOptions = {\n items: toolbarOptions,\n };\n }\n if (defaultProps) {\n toolbarOptions = mergeProps(defaultProps as Record, toolbarOptions);\n }\n return ;\n }\n}\n","import {CustomContent, HElement} from '@zui/core';\n\nimport type {ClassNameLike} from '@zui/core';\nimport type {ComponentChildren, RenderableProps} from 'preact';\nimport type {CheckboxProps, CheckboxState} from '../types';\n\nexport class Checkbox

    extends HElement {\n protected _controlled: boolean;\n\n constructor(props: P) {\n super(props);\n this.state = {\n checked: props.checked ?? props.defaultChecked ?? false,\n };\n this._controlled = props.checked !== undefined;\n }\n\n get checked() {\n return this._controlled ? this.props.checked : this.state.checked;\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n const {disabled, type = 'checkbox'} = props;\n const {checked} = this;\n return [props.className, type === 'switch' ? type : `${type}-primary`, {\n disabled,\n checked: checked === true,\n indeterminate: checked === 'indeterminate',\n }];\n }\n\n protected _handleChange = (event: Event) => {\n const {onChange} = this.props;\n const checked = (event.target as HTMLInputElement).indeterminate ? 'indeterminate' : (event.target as HTMLInputElement).checked;\n if (onChange) {\n onChange.call(this, event, checked);\n }\n if (!this._controlled) {\n this.setState({checked});\n }\n };\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n const {name, type, value, id, label} = props;\n const {checked} = this;\n return [\n name ? (\n \n ) : null,\n (),\n ];\n }\n}\n","import {RadioProps} from '../types';\nimport {Checkbox} from './checkbox';\n\nexport class Radio

    extends Checkbox

    {\n static defaultProps: Partial = {\n type: 'radio',\n };\n}\n","import {SwitchProps} from '../types';\nimport {Checkbox} from './checkbox';\n\nexport class Switch

    extends Checkbox

    {\n static defaultProps: Partial = {\n type: 'switch',\n };\n}\n","import {toChildArray} from 'preact';\nimport {CustomContent, HElement, Icon, classes, mergeProps} from '@zui/core';\nimport {Avatar} from '@zui/avatar/src/component';\nimport {Toolbar} from '@zui/toolbar/src/component';\nimport {Checkbox} from '@zui/checkbox/src/component';\n\nimport type {ComponentChild, ComponentChildren, ComponentType, JSX, RenderableProps} from 'preact';\nimport type {ListitemProps} from '../types';\n\nexport class Listitem

    extends HElement {\n protected _renderLeading(props: RenderableProps

    ): ComponentChild[] {\n const {\n icon,\n iconClass,\n avatar,\n toggleIcon,\n leading,\n leadingClass,\n checked,\n checkbox,\n multiline,\n } = props;\n const contents: ComponentChild[] = [];\n if (toggleIcon) {\n contents.push();\n }\n if (checked !== undefined) {\n contents.push();\n }\n if (icon) {\n contents.push();\n }\n if (avatar) {\n const avatarProps = typeof avatar === 'function' ? avatar.call(this, props) : avatar;\n if (avatarProps) {\n avatarProps.className = classes('item-avatar', avatarProps.className);\n contents.push();\n }\n }\n const customLeading = leading ? : null;\n if (customLeading) {\n contents.push(customLeading);\n }\n if (multiline) {\n return contents.length ? [\n

    {contents}
    ,\n ] : [];\n }\n return contents;\n }\n\n protected _renderContent(props: RenderableProps

    , linkRendered?: boolean): ComponentChild[] {\n const {\n textClass,\n titleClass,\n titleAttrs,\n subtitle,\n subtitleClass,\n url,\n target,\n content,\n contentClass,\n contentAttrs,\n } = props;\n const titleAsLink = url && !linkRendered;\n const TitleComponent = titleAsLink ? 'a' : 'div';\n let {title, text} = props;\n if (title === undefined) {\n title = text;\n text = null;\n }\n return [\n

    \n {title ? : null}\n {subtitle ?
    : null}\n {text ?
    {text}
    : null}\n {content ? : null}\n
    ,\n ];\n }\n\n protected _renderTrailing(props: RenderableProps

    ): ComponentChild[] {\n const {\n multiline,\n trailing,\n trailingClass,\n trailingIcon,\n trailingIconClass,\n actions,\n } = props;\n const contents: ComponentChild[] = [];\n if (trailingIcon) {\n contents.push();\n }\n if (actions) {\n contents.push(Toolbar.render(actions, [props], {key: 'actions', className: 'item-actions', relativeTarget: props, size: 'sm'}, this));\n }\n const customTrailing = trailing ? : null;\n if (customTrailing) {\n contents.push(customTrailing);\n }\n if (multiline) {\n return contents.length ? [\n

    {contents}{customTrailing}
    ,\n ] : [];\n }\n return contents;\n }\n\n protected _render(props: RenderableProps

    , extraAttrs?: Record): ComponentChild {\n const {\n innerComponent,\n innerClass,\n innerAttrs,\n url,\n actions,\n target,\n active,\n disabled,\n divider,\n checked,\n multiline,\n title,\n subtitle,\n hint,\n selected,\n command,\n } = props;\n const ComponentName = innerComponent || ((url && !actions) ? 'a' : 'div');\n const asLink = ComponentName === 'a';\n const attrs = mergeProps({\n key: 'item',\n title: hint,\n className: classes('listitem', innerClass, {\n active,\n disabled,\n 'has-divider': divider,\n selected,\n checked,\n multiline: multiline ?? !!(title && subtitle),\n state: asLink && !disabled,\n }),\n }, command ? {'zui-command': command} : null, asLink ? {href: url || 'javascript:;', target} : null, extraAttrs, innerAttrs);\n return (\n \n {this._renderLeading(props)}\n {this._renderContent(props, asLink)}\n {this._renderTrailing(props)}\n \n );\n }\n\n protected _onRender(component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren, _props: RenderableProps

    ): void | [component: ComponentType | keyof JSX.IntrinsicElements, componentProps: Record, children: ComponentChildren] {\n const innerAttrs = Object.keys(componentProps).reduce>((attrs, key) => {\n if (key.startsWith('data-')) {\n attrs[key] = componentProps[key];\n delete componentProps[key];\n }\n return attrs;\n }, {});\n return [component, componentProps, [this._render(_props, innerAttrs), ...toChildArray(children)]];\n }\n}\n","import {$, Computed, HElement, classes, fetchData, mergeProps, removeUndefinedProps} from '@zui/core';\nimport {CommonList} from '@zui/common-list/src/component';\nimport {Listitem} from './listitem';\n\nimport type {ComponentChild, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike, CustomContentType} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {CheckedType} from '@zui/checkbox';\nimport type {ListProps, ListState, ListItemsSetting, ListItemsFetcher} from '../types';\n\nexport class List

    extends CommonList {\n static ItemComponents: typeof CommonList.ItemComponents = {\n ...CommonList.ItemComponents,\n default: HElement,\n item: Listitem,\n heading: Listitem,\n };\n\n static NAME = 'list';\n\n protected _loadedSetting?: ListItemsSetting;\n\n protected declare _hasIcons: boolean;\n\n protected declare _hasCheckbox: boolean;\n\n protected _activeSet = new Computed>(() => {\n const map = new Set();\n const {active} = this.props;\n if (Array.isArray(active)) {\n active.forEach(x => map.add(x));\n } else if (typeof active === 'string') {\n map.add(active);\n } else if (active) {\n Object.keys(active).forEach(x => active[x] && map.add(x));\n }\n const {activeMap} = this.state;\n Object.keys(activeMap).forEach(x => activeMap[x] ? map.add(x) : map.delete(x));\n return map;\n }, () => [this.state.activeMap, this.props.active]);\n\n constructor(props: P) {\n super(props);\n this.state = {\n checked: {},\n activeMap: {},\n } as S;\n }\n\n get namespace() {\n return `.zui.${this.constructor.NAME}.list_${this.gid}`;\n }\n\n get isLazyItems() {\n const {items} = this.props;\n return items && !Array.isArray(items);\n }\n\n componentDidMount() {\n this._afterRender(true);\n this.tryLoad();\n\n if (this.props.activeOnHover && !this.props.multipleActive) {\n $(this.element).on(`mouseenter${this.namespace}`, '[z-item]', (event) => {\n const info = this._getItemFromEvent(event);\n if (info && info.renderedItem.type === 'item' && !info.renderedItem.disabled && !this.isActive(info.key)) {\n this.toggleActive(info.key, true);\n }\n });\n }\n }\n\n componentDidUpdate(): void {\n this._afterRender(false);\n this.tryLoad();\n }\n\n componentWillUnmount(): void {\n $(this.element).off(this.namespace);\n this.props.beforeDestroy?.call(this);\n }\n\n setItems(items?: Item[], error?: Error) {\n const {onLoadFail} = this.props;\n return this.changeState({\n loading: false,\n items: items || [],\n loadFailed: error ? (typeof onLoadFail === 'function' ? (onLoadFail as (error: Error) => CustomContentType | undefined).call(this, error as Error) : onLoadFail) || String(error) : undefined,\n } as S);\n }\n\n load(): void {\n const {items, onLoad} = this.props;\n this._loadedSetting = items;\n this.setState({loading: true, items: []}, async () => {\n try {\n const newItems = await fetchData(items as ListItemsFetcher, [this], {throws: true});\n this.setItems(onLoad?.call(this, newItems) || newItems);\n } catch (error) {\n this.setItems(undefined, error as Error);\n }\n });\n }\n\n tryLoad() {\n const {loading} = this.state;\n const {items} = this.props;\n if (loading || !items || Array.isArray(items) || items === this._loadedSetting) {\n return false;\n }\n this.load();\n return true;\n }\n\n isChecked(key: ItemKey, index?: number, defaultChecked: CheckedType = false): CheckedType {\n const item = (typeof index === 'number' ? this._items[index] : this.getItem(key)) || {};\n return this.state.checked[key] ?? item.checked ?? defaultChecked;\n }\n\n isAllChecked(): boolean {\n return this._renderedItems.every(({key}, index) => this.isChecked(key!, index) === true);\n }\n\n toggleAllChecked(checked?: boolean) {\n if (checked === undefined) {\n checked = !this.isAllChecked();\n }\n return this.toggleChecked(this._renderedItems.map(x => x.key!), checked);\n }\n\n async toggleChecked(keyOrChange: ItemKey | ItemKey[] | Record, checked?: boolean) {\n let change: Record;\n if (Array.isArray(keyOrChange)) {\n if (!keyOrChange.length) {\n return;\n }\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange[0]);\n }\n change = keyOrChange.reduce>((map, key) => {\n map[key] = checked!;\n return map;\n }, {});\n } else if (typeof keyOrChange === 'object') {\n change = keyOrChange;\n } else {\n const isChecked = this.isChecked(keyOrChange);\n if (checked === undefined) {\n checked = !isChecked;\n }\n change = {[keyOrChange]: checked!};\n }\n if (!Object.keys(change).length) {\n return;\n }\n\n await this.changeState(prevState => ({\n checked: {\n ...prevState.checked,\n ...change,\n },\n } as Partial), () => {\n const checkState = this.state.checked;\n this.props.onCheck?.call(this, change, Object.keys(checkState).filter(x => checkState[x] === true));\n });\n }\n\n getChecks() {\n return this._renderedItems.reduce((checks, {key}, index) => {\n if (key !== undefined && this.isChecked(key, index) === true) {\n checks.push(key);\n }\n return checks;\n }, []);\n }\n\n isActive(key: string | Item) {\n if (typeof key === 'object') {\n key = key.key!;\n }\n return this._activeSet.cache.has(key);\n }\n\n getActiveKeys() {\n return [...this._activeSet.value];\n }\n\n getActiveKey() {\n return this.getActiveKeys()[0];\n }\n\n async toggleActive(keys: string | string[], active?: boolean) {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n if (!keys.length) {\n return;\n }\n active = active ?? !this.isActive(keys[0]);\n await this.changeState(prevState => {\n const activeMap = this.props.multipleActive ? (keys as string[]).reduce>((map, key) => {\n map[key] = active!;\n return map;\n }, {...prevState.activeMap}) : {[keys[0]]: active!};\n return {activeMap} as Partial;\n }, () => {\n this.props.onActive?.call(this, keys as string[], active!);\n });\n }\n\n getNextItem(key: string | undefined, condition?: (item: Item, index: number) => boolean, step = 1, items: Item[] | undefined = undefined): Item | undefined {\n items = items || this._renderedItems;\n const count = items.length;\n if (key === undefined) {\n return items[step ? 0 : count - 1];\n }\n let index = items.findIndex(x => x.key === key);\n if (index < 0 || count < 2) {\n return items[step ? 0 : count - 1];\n }\n let checkCount = 0;\n condition = condition || ((x) => x.type === 'item' && !x.disabled);\n while (checkCount < count) {\n index = (index + step + count) % count;\n const nextItem = items[index];\n if (nextItem && !nextItem.disabled && !nextItem.hidden && condition.call(this, nextItem, index)) {\n return nextItem;\n }\n checkCount++;\n }\n }\n\n getPrevItem(key: string | undefined, condition?: (item: Item, index: number) => boolean): Item | undefined {\n return this.getNextItem(key, condition, -1);\n }\n\n activeNext(condition?: (item: Item, index: number) => boolean, step = 1) {\n const nextItem = this.getNextItem(this.getActiveKey(), condition, step);\n if (nextItem) {\n this.toggleActive(nextItem.key!);\n }\n }\n\n activePrev(condition?: (item: Item, index: number) => boolean) {\n this.activeNext(condition, -1);\n }\n\n protected _afterRender(firstRender: boolean) {\n this.props.afterRender?.call(this, firstRender);\n }\n\n protected _beforeRender(props: RenderableProps

    ): void | RenderableProps

    | undefined {\n return this.props.beforeRender?.call(this, props);\n }\n\n protected _getItems(props: RenderableProps

    ): Item[] {\n const {items} = props;\n const {items: stateItems} = this.state;\n return stateItems || (Array.isArray(items) ? items : []);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _getRenderedItem(props: RenderableProps

    , renderedItem: Item, index: number): Item {\n const {divider, multiline} = props;\n renderedItem = mergeProps({}, removeUndefinedProps({\n divider,\n multiline,\n }), renderedItem);\n\n const {itemName, name} = this;\n renderedItem.innerClass = [itemName ? `${itemName}-inner${name ? ` ${name}-${renderedItem.type}-inner` : ''}` : '', renderedItem.innerClass];\n\n if (renderedItem.type === 'item') {\n const {checkbox} = props;\n if (renderedItem.checkbox === false) {\n renderedItem.checked = undefined;\n } else if (checkbox || renderedItem.checkbox) {\n renderedItem.checked = this.isChecked(renderedItem.key!, index, renderedItem.checked as CheckedType);\n if (typeof checkbox === 'object' && renderedItem.checkbox !== false) {\n renderedItem.checkbox = renderedItem.checkbox ? $.extend({}, checkbox, renderedItem.checkbox) : checkbox;\n }\n if (props.selectOnChecked && renderedItem.checked === true) {\n renderedItem.selected = true;\n }\n }\n if (renderedItem.active === undefined && this.isActive(renderedItem)) {\n renderedItem.active = true;\n }\n }\n\n if (renderedItem.icon) {\n this._hasIcons = true;\n }\n if (renderedItem.checked !== undefined) {\n this._hasCheckbox = true;\n }\n\n return renderedItem;\n }\n\n protected _getItem(props: RenderableProps

    , item: Item, index: number): Item | false {\n const renderedItem = super._getItem(props, item, index);\n if (!renderedItem) {\n return renderedItem;\n }\n return this._getRenderedItem(props, renderedItem, index);\n }\n\n protected _renderItem(props: RenderableProps

    , item: Item, index: number): ComponentChildren {\n if (item.type === 'item' && this._hasIcons && item.icon === undefined) {\n item.icon = 'EMPTY';\n }\n return super._renderItem(props, item, index);\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = super._handleClick(event);\n let {checkOnClick} = this.props;\n if (checkOnClick === 'any') {\n checkOnClick = '.item-checkbox,.item-content,.item-icon';\n } else if (checkOnClick === true) {\n checkOnClick = '.item-checkbox';\n }\n if (!checkOnClick || !info || !info.renderedItem) {\n return info;\n }\n const renderedItem = info.renderedItem;\n const itemCheckbox = renderedItem.checkbox;\n const hasCheckbox = itemCheckbox !== false && (this.props.checkbox || itemCheckbox || renderedItem.checked !== undefined);\n if (hasCheckbox && !renderedItem.disabled && info && (event.target as HTMLElement).closest(checkOnClick)) {\n this.toggleChecked(info.key);\n event.stopPropagation();\n return;\n }\n return info;\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n const {loading, loadFailed} = this.state;\n return [super._getClassName(props), loading ? 'loading' : (loadFailed ? 'is-load-failed' : ''), props.hoverItemActions ? 'with-hover-actions' : ''];\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {className, ...others} = super._getProps(props);\n return {\n ...others,\n className: classes(className as ClassNameLike, this._hasIcons ? 'has-icons' : '', this._hasCheckbox ? 'has-checkbox' : ''),\n };\n }\n\n protected _getChildren(props: RenderableProps

    ): ComponentChildren {\n this._hasIcons = false;\n this._hasCheckbox = false;\n this._activeSet.compute();\n const children = super._getChildren(props) as ComponentChild[];\n const {loadFailed} = this.state;\n if (loadFailed) {\n children.push(loadFailed);\n }\n return children;\n }\n}\n","/** Store type. */\nexport type StoreType = 'local' | 'session';\n\nconst STR_PREFIX = '```ZUI_STR\\n';\n\n/**\n * Store for using localStorage and sessionStorage.\n */\nexport class Store {\n protected _type: StoreType;\n\n protected _name: string;\n\n protected _id: string;\n\n protected _storage: Storage;\n\n protected _altStorage?: Store;\n\n /**\n * Create new store instance.\n * @param id Store profile ID.\n * @param type Store type.\n */\n constructor(id: string = '', type: StoreType = 'local') {\n this._type = type;\n this._id = id;\n this._name = `ZUI_STORE:${this._id}`;\n this._storage = type === 'local' ? localStorage : sessionStorage;\n }\n\n /**\n * Get store type.\n */\n get type(): StoreType {\n return this._type;\n }\n\n /**\n * Get session type store instance.\n */\n get session(): Store {\n if (this.type === 'session') {\n return this;\n }\n if (!this._altStorage) {\n this._altStorage = new Store(this._id, 'session');\n }\n return this._altStorage;\n }\n\n protected _getKey(key: string): string {\n return `${this._name}:${key}`;\n }\n\n /**\n * Switch store profile.\n *\n * @param id Store profile ID.\n */\n switch(id: string) {\n this._id = id;\n this._name = `ZUI_STORE:${this._id}`;\n }\n\n /**\n * Get value from store.\n *\n * @param key Key to get\n * @returns Value of key or undefined if key is not found\n */\n get(key: string): T | undefined;\n\n /**\n * Get value from store, if key is not found, return defaultValue.\n *\n * @param key Key to get.\n * @param defaultValue Default value to return if key is not found.\n */\n get(key: string, defaultValue: T): T;\n\n /**\n * Get value from store.\n *\n * @param key Key to get.\n * @param defaultValue Default value to return if key is not found.\n * @returns Value of key or defaultValue if key is not found.\n */\n get(key: string, defaultValue?: T): T | undefined {\n const value = this._storage.getItem(this._getKey(key));\n if (typeof value === 'string') {\n if (value.startsWith(STR_PREFIX)) {\n return value.substring(STR_PREFIX.length) as T;\n }\n try {\n return JSON.parse(value);\n // eslint-disable-next-line no-empty\n } catch (_error) {}\n }\n return (value as T) ?? defaultValue;\n }\n\n /**\n * Set key-value pair in store.\n *\n * @param key Key to set.\n * @param value Value to set.\n */\n set(key: string, value: unknown): void {\n if (value === undefined || value === null) {\n return this.remove(key);\n }\n this._storage.setItem(this._getKey(key), typeof value === 'string' ? `${STR_PREFIX}${value}` : JSON.stringify(value));\n }\n\n /**\n * Remove key-value pair from store.\n *\n * @param key Key to remove.\n */\n remove(key: string): void {\n this._storage.removeItem(this._getKey(key));\n }\n\n /**\n * Iterate all key-value pairs in store.\n *\n * @param callback Callback function to call for each key-value pair in the store.\n */\n each(callback: (name: string, value: unknown) => void): void {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(this._name)) {\n const value = this._storage.getItem(key);\n if (typeof value === 'string') {\n callback(key.substring(this._name.length + 1), JSON.parse(value));\n }\n }\n }\n }\n\n /**\n * Get all key values in store.\n *\n * @returns All key-value pairs in the store.\n */\n getAll(): Record {\n const result: Record = {};\n this.each((key, value) => {\n result[key] = value;\n });\n return result;\n }\n}\n","import {Store, StoreType} from './store';\n\nexport type {Store} from './store';\n\nexport const store = new Store('DEFAULT');\n\nfunction createStore(name?: string, type: StoreType = 'local') {\n return new Store(name, type);\n}\n\nObject.assign(store, {create: createStore});\n","import {Icon, classes, mergeProps, $, isValidElement} from '@zui/core';\nimport {store} from '@zui/store';\nimport {List} from './list';\nimport '@zui/css-icons/src/icons/caret.css';\n\nimport type {ComponentChild, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {CheckedType} from '@zui/checkbox';\nimport type {ListItemsSetting, NestedItem, NestedListProps, NestedListState} from '../types';\n\nexport type MouseEventInfo = {\n index: number;\n item: NestedItem;\n renderedItem: NestedItem;\n element: HTMLElement;\n target: HTMLElement;\n event: MouseEvent;\n key: ItemKey;\n parentKey?: ItemKey;\n hover?: boolean;\n keyPath: string;\n};\n\nexport type ItemInfo = {\n key: string;\n level: number;\n keyPath: string;\n parentKey?: string;\n parent?: ItemInfo;\n children: ItemInfo[];\n data: Item;\n};\n\nfunction forEachChild(item: ItemInfo, callback: (child: ItemInfo) => void) {\n const {children} = item;\n if (!children.length) {\n return;\n }\n children.forEach(child => {\n callback(child);\n forEachChild(child, callback);\n });\n}\n\nfunction forEachParent(item: ItemInfo, callback: (parent: ItemInfo) => void) {\n let parent = item.parent;\n while (parent) {\n callback(parent);\n parent = parent.parent;\n }\n}\n\nfunction parentKeys(keyPath: string) {\n return keyPath.split(':').reduce((keys, item, index) => {\n keys.push(index ? keys[index - 1] + ':' + item : item);\n return keys;\n }, []);\n}\n\n\nfunction reduceNestedItems(items: Item[], itemKey: string | undefined, reducer: (previousValue: T, info: ItemInfo) => T, initialValue: T, level = 0, parent?: ItemInfo): T {\n return items.reduce((currentValue, item, index) => {\n if (!item) {\n return currentValue;\n }\n const key = String((itemKey ? item[itemKey] : item.key) ?? (item.key ?? index));\n const keyPath = parent ? `${parent.keyPath}:${key}` : key;\n const itemInfo = {\n key,\n level,\n keyPath,\n parentKey: parent?.keyPath,\n parent: parent,\n data: item,\n children: [],\n };\n if (parent) {\n parent.children.push(itemInfo);\n }\n currentValue = reducer(currentValue, itemInfo);\n if (Array.isArray(item.items)) {\n return reduceNestedItems(item.items as Item[], itemKey, reducer, currentValue, level + 1, itemInfo);\n }\n return currentValue;\n }, initialValue);\n}\n\nexport class NestedList

    extends List {\n static defaultProps: Partial = {\n ...List.defaultProps,\n defaultNestedShow: false,\n level: 0,\n indent: 20,\n } as Partial;\n\n static inheritNestedProps = ['component', 'name', 'itemName', 'itemKey', 'indent', 'hover', 'divider', 'multiline', 'toggleIcons', 'nestedToggle', 'accordion', 'itemRender', 'itemProps', 'onToggle', 'checkbox', 'getItem', 'getItems', 'checkOnClick', 'selectOnChecked', 'checkedState', 'onClickItem', 'activeOnHover', 'multipleActive', 'onActive', 'hoverItemActions'];\n\n protected declare _hasNestedItems: boolean;\n\n protected declare _storeID: string;\n\n protected declare _renderedItemMap: Map;\n\n protected declare _itemMap?: Map;\n\n protected declare _itemMapCache: Map;\n\n protected declare _needInitChecks?: boolean;\n\n constructor(props: P) {\n super(props);\n const {defaultNestedShow, preserve, nestedShow} = props;\n $.extend(\n this.state,\n typeof defaultNestedShow === 'boolean' ? {defaultShow: defaultNestedShow, nestedShow: {}} : {nestedShow: defaultNestedShow || {}},\n nestedShow !== undefined ? {nestedShow} : null,\n );\n if (preserve && nestedShow === undefined) {\n this._storeID = `${this.constructor.NAME}:${preserve}:state`;\n const storeState = store.get(this._storeID) as NestedListState;\n if (storeState) {\n (this.state as NestedListState).nestedShow = storeState.nestedShow;\n }\n }\n\n if (!props.level) {\n const nestedState = this.state.nestedShow;\n if (nestedState) {\n Object.keys(nestedState).forEach(key => {\n if (!nestedState[key]) {\n return;\n }\n parentKeys(key).forEach(parentKey => {\n nestedState[parentKey] = true;\n });\n });\n }\n this._needInitChecks = true;\n }\n\n this._renderedItemMap = new Map();\n this._handleClick = this._handleClick.bind(this);\n this._beforeRenderNestedItem = this._beforeRenderNestedItem.bind(this);\n this._handleNestedToggle = this._handleNestedToggle.bind(this);\n this._handleNestedCheck = this._handleNestedCheck.bind(this);\n this._preserveState = this._preserveState.bind(this);\n }\n\n get isRoot() {\n return !this.props.level;\n }\n\n get nestedShow() {\n return this.props.nestedShow ?? this.state.nestedShow ?? false;\n }\n\n async setItems(items?: Item[] | undefined, error?: Error | undefined) {\n if (this.isRoot) {\n this._needInitChecks = true;\n }\n const state = await super.setItems(items, error);\n if (items && this.props.parent?.checked === true) {\n this.toggleChecked(this._renderedItems.map(x => x.key!), true);\n } else if (items?.some((x) => x.checked)) {\n this._needInitChecks = true;\n this.forceUpdate();\n }\n return state;\n }\n\n getItemMap(useCache?: boolean) {\n if (useCache && (this._itemMap || this._itemMapCache)) {\n return this._itemMap || this._itemMapCache;\n }\n if (!this._itemMap) {\n let needCheckRenderItems = false;\n const map: Map = reduceNestedItems(this._items, this.props.itemKey, (currentMap, info) => {\n currentMap.set(info.keyPath, info);\n if (info.data.items && !Array.isArray(info.data.items)) {\n needCheckRenderItems = true;\n }\n return currentMap;\n }, new Map());\n if (needCheckRenderItems) {\n this._renderedItemMap.forEach((item, keyPath) => {\n if (map.has(keyPath)) {\n return;\n }\n map.set(keyPath, {\n key: item.key,\n level: item._level,\n keyPath,\n parentKey: `${keyPath.split(':').slice(0, -1).join(':')}`,\n children: [],\n data: item,\n } as ItemInfo);\n });\n map.forEach((info) => {\n const {parentKey} = info;\n if (!parentKey) {\n return;\n }\n const parent = map.get(parentKey);\n if (parent) {\n parent.children.push(info);\n info.parent = parent;\n }\n });\n this._itemMapCache = map;\n return map;\n }\n this._itemMap = map;\n }\n return this._itemMap;\n }\n\n getRenderedItem(keyPath: string): Item | undefined {\n return this._renderedItemMap.get(keyPath);\n }\n\n getItem(keyPath: string) {\n const itemMap = this._itemMap || this._itemMapCache;\n if (itemMap) {\n return itemMap.get(keyPath)?.data;\n }\n const renderedItem = this.getRenderedItem(keyPath);\n return renderedItem ? (renderedItem._item as Item) : super.getItem(keyPath);\n }\n\n isExpanded(keyPath: string) {\n const {nestedShow} = this;\n if (typeof nestedShow === 'boolean') {\n return nestedShow;\n }\n return !!(nestedShow[keyPath] ?? this.state.defaultShow);\n }\n\n async toggle(keyPath: string, toggle?: boolean, reset?: boolean) {\n const isExpanded = this.isExpanded(keyPath);\n if (!reset && toggle === isExpanded) {\n return;\n }\n if (toggle === undefined) {\n toggle = !isExpanded;\n }\n const {nestedShow, onToggle, accordion} = this.props;\n if (onToggle && onToggle.call(this, keyPath, toggle, reset) === false) {\n return;\n }\n if (nestedShow !== undefined) {\n return;\n }\n await this.changeState(prevState => {\n let newNestedShow: Record = {\n ...(reset ? {} : prevState.nestedShow),\n [keyPath]: toggle!,\n };\n if (toggle && accordion) {\n let parentKey = `${keyPath.split(':').slice(0, -1).join(':')}`;\n if (parentKey.length) {\n parentKey += ':';\n }\n Object.keys(newNestedShow).forEach(key => {\n if (key !== keyPath && key.startsWith(parentKey)) {\n newNestedShow[key] = false;\n }\n });\n }\n newNestedShow = toggle ? parentKeys(keyPath).reduce>((map, key) => {\n map[key] = toggle!;\n return map;\n }, newNestedShow) : newNestedShow;\n return {\n nestedShow: newNestedShow,\n } as Partial;\n }, this._preserveState);\n }\n\n toggleAll(show: boolean) {\n if (this.props.nestedShow !== undefined) {\n return;\n }\n return this.setState({nestedShow: {}, defaultShow: show}, this._preserveState);\n }\n\n getChecks() {\n return Array.from(this.getItemMap(true).values()).reduce((checks, {keyPath, data}) => {\n const checkState = this.state.checked[keyPath];\n if ((checkState === true || (data.checked && checkState !== false)) === true) {\n checks.push(keyPath);\n }\n return checks;\n }, []);\n }\n\n isChecked(key: ItemKey, index?: number, defaultChecked: CheckedType = false): CheckedType {\n const item = (typeof index === 'number' ? this._items[index] : this.getItem(key)) || {};\n if (this.isRoot) {\n return this.state.checked[key] ?? (item.checked as CheckedType) ?? defaultChecked;\n }\n return this.props.checkedState![`${this.props.parentKey}:${key}`] ?? (item.checked as CheckedType) ?? defaultChecked;\n }\n\n async toggleChecked(keyOrChange: ItemKey | ItemKey[] | Record, checked?: CheckedType) {\n let change: Record;\n if (Array.isArray(keyOrChange)) {\n if (!keyOrChange.length) {\n return;\n }\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange[0]);\n }\n change = keyOrChange.reduce>((map, key) => {\n map[key] = checked!;\n return map;\n }, {});\n } else if (typeof keyOrChange === 'object') {\n change = keyOrChange;\n } else {\n if (checked === undefined) {\n checked = !this.isChecked(keyOrChange);\n }\n change = {[keyOrChange]: checked!};\n }\n if (!Object.keys(change).length) {\n return;\n }\n if (this.isRoot) {\n await this.changeState(({checked: prevChecked, nestedShow: preNestedShow}) => {\n const isChecked = (item: ItemInfo) => {\n return change[item.keyPath] ?? prevChecked[item.keyPath] ?? item.data.checked ?? false;\n };\n const map = this.getItemMap();\n const nestedShow: Record = {};\n const {expandChildrenOnCheck} = this.props;\n Object.keys(change).forEach(key => {\n checked = change[key];\n const item = map.get(key);\n if (!item) {\n return;\n }\n forEachChild(item, child => {\n if (isChecked(child) !== checked) {\n change[child.keyPath] = checked!;\n }\n });\n forEachParent(item, parent => {\n const {children} = parent;\n const checkedCount = children.reduce((count, child) => {\n if (isChecked(child)) {\n count++;\n }\n return count;\n }, 0);\n\n change[parent.keyPath] = checkedCount === children.length ? true : (checkedCount ? 'indeterminate' : false);\n });\n if (expandChildrenOnCheck && checked && item.data.items) {\n nestedShow[key] = true;\n }\n });\n return {\n checked: {\n ...prevChecked,\n ...change,\n },\n nestedShow: {\n ...preNestedShow,\n ...nestedShow,\n },\n } as Partial;\n }, () => {\n const checkState = this.state.checked;\n this.props.onCheck?.call(this, change, Object.keys(checkState).filter(x => checkState[x] === true));\n });\n return;\n }\n\n const {parentKey, onCheck} = this.props;\n const nestedChange = Object.keys(change).reduce>((map, key) => {\n map[`${parentKey !== undefined ? `${parentKey}:` : ''}${key}`] = change[key];\n return map;\n }, {});\n onCheck!.call(this, nestedChange, []);\n }\n\n getKeyPath(key: string) {\n if (this.isRoot) {\n return key;\n }\n const parentKey = this.props.parentKey!;\n if (!key.startsWith(parentKey + ':')) {\n return `${parentKey}:${key}`;\n }\n return key;\n }\n\n isActive(keyPath: string | Item) {\n if (typeof keyPath === 'object') {\n const keyOrKeyPath = (keyPath._keyPath ?? keyPath.key) as (string | undefined);\n if (keyOrKeyPath === undefined) {\n return false;\n }\n keyPath = keyOrKeyPath;\n }\n return this._activeSet.cache.has(this.getKeyPath(keyPath));\n }\n\n async toggleActive(keys: string | string[], active?: boolean) {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n keys = keys.map(key => this.getKeyPath(key));\n if (this.isRoot) {\n await super.toggleActive(keys, active);\n if (this.props.toggleOnActive) {\n (keys as string[]).forEach(key => {\n if (this.isActive(key) && !this.isExpanded(key)) {\n this.toggle(key, true);\n }\n });\n }\n return;\n }\n\n this.props.onActive!.call(this, keys, active ?? !this.isActive(keys[0]));\n }\n\n activeNext(condition?: (item: Item, index: number) => boolean, step = 1) {\n const nextItem = this.getNextItem(this.getActiveKey(), condition, step);\n if (nextItem) {\n this.toggleActive(nextItem._keyPath as string);\n }\n }\n\n getNextItem(key: string | undefined, condition?: (item: Item, index: number) => boolean, step = 1, items: Item[] | undefined = undefined): Item | undefined {\n items = items || reduceNestedItems(this._items, this.props.itemKey, (list, info) => {\n if (info.data.disabled) {\n return list;\n }\n list.push({\n _keyPath: info.keyPath,\n type: 'item',\n ...info.data,\n ...this._renderedItemMap.get(info.keyPath),\n key: info.keyPath,\n });\n return list;\n }, []);\n return super.getNextItem(key, condition, step, items);\n }\n\n protected _afterRender(firstRender: boolean): void {\n super._afterRender(firstRender);\n if (this._needInitChecks) {\n const initChecks: Record = {};\n const itemMap = this.getItemMap();\n itemMap.forEach(item => {\n if (item.data.checked !== undefined) {\n initChecks[item.keyPath] = item.data.checked as CheckedType;\n }\n });\n this.toggleChecked(initChecks);\n this._needInitChecks = false;\n }\n }\n\n protected _preserveState() {\n if (this._storeID) {\n store.set(this._storeID, {nestedShow: this.state.nestedShow});\n }\n }\n\n protected _getClassName(props: RenderableProps

    ): ClassNameLike {\n return [super._getClassName(props), 'is-nested', props.level ? 'is-nested-sub' : 'is-nested-root'];\n }\n\n protected _getNestedProps(props: RenderableProps

    , items: ListItemsSetting, item: NestedItem, expanded: boolean): NestedListProps {\n const {\n parentKey,\n level = 0,\n } = props;\n const {isRoot} = this;\n return mergeProps(((this.constructor as typeof NestedList).inheritNestedProps.reduce>((propMap, key) => {\n propMap[key] = props[key as keyof P];\n return propMap;\n }, {})), {\n key: item.key,\n level: level + 1,\n className: `is-nested-${expanded ? 'expanded' : 'collapsed'}`,\n items,\n parent: item,\n parentKey: parentKey ? `${parentKey}:${item.key}` : item.key,\n nestedShow: this.nestedShow,\n defaultNestedShow: this.state.defaultShow,\n checkedState: props.checkedState || this.state.checked,\n onCheck: isRoot ? this._handleNestedCheck : props.onCheck,\n onToggle: isRoot ? this._handleNestedToggle : props.onToggle,\n beforeRenderItem: isRoot ? this._beforeRenderNestedItem : props.beforeRenderItem,\n active: isRoot ? this.getActiveKeys() : props.active,\n onActive: isRoot ? this.toggleActive.bind(this) : props.onActive,\n }, item.listProps);\n }\n\n protected _renderNestedList(props: RenderableProps

    , items: ListItemsSetting, item: NestedItem, expanded: boolean): ComponentChildren {\n if (!expanded && !props.renderCollapsedList) {\n return;\n }\n const nestedListProps = this._getNestedProps(props, items, item, expanded);\n const NestedListComponent = this.constructor as typeof NestedList;\n return ;\n }\n\n protected _renderNestedToggle(props: RenderableProps

    , isExpanded: boolean | undefined): ComponentChild {\n let toggleIcon: ComponentChild;\n let toggleClass = '';\n const {toggleIcons = {}} = props;\n if (typeof isExpanded === 'boolean') {\n toggleIcon = isExpanded ? (toggleIcons.expanded || ) : (toggleIcons.collapsed || );\n toggleClass = `state is-${isExpanded ? 'expanded' : 'collapsed'}`;\n if (!isValidElement(toggleIcon)) {\n toggleIcon = ;\n }\n } else {\n toggleIcon = ;\n toggleClass = 'is-empty';\n }\n return {toggleIcon};\n }\n\n protected _getItems(props: RenderableProps

    ): Item[] {\n const items = super._getItems(props);\n if (this.isRoot && items !== this._items) {\n this._itemMap = undefined;\n }\n return items;\n }\n\n protected _getItem(props: RenderableProps

    , item: NestedItem, index: number): NestedItem | false {\n const nestedItem = super._getItem(props, item, index) ?? item;\n if (!nestedItem) {\n return nestedItem;\n }\n const {parentKey} = props;\n const key = nestedItem.key!;\n const keyPath = `${parentKey !== undefined ? `${parentKey}:` : ''}${key}`;\n if (nestedItem.items) {\n const expanded = nestedItem.expanded ?? this.isExpanded(keyPath);\n mergeProps(nestedItem, {\n expanded: expanded,\n className: ['is-nested', `is-nested-${expanded ? 'show' : 'hide'}`],\n });\n this._hasNestedItems = true;\n }\n return mergeProps(nestedItem, {\n _level: props.level,\n _keyPath: keyPath,\n parentKey,\n });\n }\n\n protected _beforeRenderNestedItem(item: NestedItem, index: number): NestedItem | false {\n const {beforeRenderItem} = this.props;\n if (beforeRenderItem) {\n const result = beforeRenderItem.call(this, item, index);\n if (result !== undefined) {\n item = result;\n }\n }\n this._renderedItemMap.set(item._keyPath as string, item);\n return item;\n }\n\n protected _renderItem(props: RenderableProps

    , renderedItem: NestedItem, index: number): ComponentChildren {\n if ((this._hasNestedItems || !this.isRoot) && renderedItem.type === 'item' && renderedItem.toggleIcon === undefined) {\n renderedItem.toggleIcon = this._renderNestedToggle(props, renderedItem.expanded as boolean | undefined);\n }\n const nestedListContent = renderedItem.items ? this._renderNestedList(props, renderedItem.items, renderedItem, renderedItem.expanded as boolean) : null;\n renderedItem = mergeProps(renderedItem, {\n 'z-parent': renderedItem.parentKey,\n 'z-key-path': renderedItem._keyPath,\n }, nestedListContent ? {children: nestedListContent} : null);\n this._renderedItemMap.set(renderedItem._keyPath as string, renderedItem);\n return super._renderItem(props, renderedItem, index);\n }\n\n protected _getItemFromEvent(event: MouseEvent, target?: HTMLElement): MouseEventInfo | undefined {\n target = target || event.target as HTMLElement;\n let info = super._getItemFromEvent(event, target) as MouseEventInfo;\n if (!info) {\n const listEle = target.closest('[z-list]') as HTMLElement;\n if (listEle) {\n const listKey = listEle.getAttribute('z-list')!;\n const item = this.getItem(listKey);\n const renderedItem = this.getRenderedItem(listKey);\n if (!item || !renderedItem) {\n return;\n }\n info = {\n target,\n index: renderedItem._index as number,\n item,\n element: listEle,\n event,\n key: listKey,\n keyPath: listKey,\n renderedItem,\n };\n }\n return;\n }\n if (event.type === 'mouseenter' || event.type === 'mouseleave' || event.type === 'mouseover') {\n info.hover = event.type !== 'mouseleave';\n }\n const {parentKey} = this.props;\n return {...info, parentKey, keyPath: `${parentKey !== undefined ? `${parentKey}:` : ''}${info.key}`, target};\n }\n\n protected _handleNestedToggle(key: ItemKey, toggle: boolean, reset?: boolean) {\n this.toggle(key, toggle, reset);\n }\n\n protected _handleClick(event: MouseEvent) {\n const info = super._handleClick(event);\n if (info) {\n const {renderedItem: item, keyPath, target} = info as MouseEventInfo;\n const {nestedToggle} = this.props;\n if (!item.items || event.defaultPrevented || target.closest('.not-nested-toggle') || (nestedToggle && !item.disabled && !target.closest(nestedToggle)) || (!nestedToggle && !item.disabled && target.closest('a,.btn,.item-checkbox,.open-url,input,select,textarea') && !target.closest('.nested-toggle-icon,.item-icon'))) {\n return info;\n }\n this.toggle(keyPath);\n event.preventDefault();\n }\n return info;\n }\n\n protected _handleNestedCheck(change: Record) {\n this.toggleChecked(change);\n }\n\n protected _getProps(props: RenderableProps

    ): Record {\n const {level = 0, indent = 20, parentKey} = props;\n const finalProps = mergeProps(super._getProps(props), {\n 'z-level': level,\n 'z-list': parentKey,\n style: {'--list-nested-indent': `${level * indent}px`, '--list-indent': `${indent}px`},\n className: this._hasNestedItems ? 'has-nested-items' : 'no-nested-items',\n });\n finalProps.className = classes(finalProps.className as ClassNameLike);\n return finalProps;\n }\n\n protected _beforeRender(props: RenderableProps

    ): void | RenderableProps

    | undefined {\n this._renderedItemMap.clear();\n this._hasIcons = false;\n this._hasNestedItems = false;\n return super._beforeRender(props);\n }\n}\n","import {CustomContent, classes, mergeProps} from '@zui/core';\nimport {NestedList, Listitem} from '@zui/list/src/component';\n\nimport type {Attributes, ComponentChildren, RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {NestedListState} from '@zui/list';\nimport type {MenuOptions, MenuSetting} from '../types';\n\nexport class Menu extends NestedList {\n static NAME = 'menu';\n\n static TAG = 'menu';\n\n static inheritNestedProps = [...NestedList.inheritNestedProps, 'compact'];\n\n static ItemComponents: typeof NestedList.ItemComponents = {\n ...NestedList.ItemComponents,\n item: [Listitem, {innerComponent: 'a'}],\n };\n\n static defaultProps: Partial = {\n ...NestedList.defaultProps,\n scrollbarHover: true,\n };\n\n protected declare _hoverInfo?: {timer: number, keyPath?: string | null, shown?: boolean};\n\n constructor(props: T) {\n super(props);\n this._handleHover = this._handleHover.bind(this);\n }\n\n get isHoverTrigger() {\n return this.props.nestedTrigger === 'hover';\n }\n\n protected _getClassName(props: RenderableProps): ClassNameLike {\n return [super._getClassName(props), this._hasNestedItems ? 'menu-nested' : '', props.className, props.wrap ? {'scrollbar-thin': props.scrollbarThin, 'scrollbar-hover': props.scrollbarHover} : {popup: props.popup, compact: props.compact}];\n }\n\n protected _getWrapClass(props: RenderableProps): ClassNameLike {\n return ['menu-wrapper', props.wrapClass, {popup: props.popup, compact: props.compact}];\n }\n\n protected _getWrapperProps(props: RenderableProps): Record {\n const {wrapAttrs, height, maxHeight, parentKey} = props;\n const wrapProps = mergeProps(\n {'z-list-wrapper': parentKey},\n wrapAttrs,\n (height || maxHeight) ? {style: {height, maxHeight}} : null,\n this.isRoot && this.isHoverTrigger ? {\n onMouseEnter: this._handleHover,\n onMouseLeave: this._handleHover,\n onMouseOver: this._handleHover,\n } : null,\n );\n wrapProps.className = classes(this._getWrapClass(props), wrapProps.className as ClassNameLike);\n return wrapProps;\n }\n\n protected _renderWrapperHeader(props: RenderableProps): ComponentChildren {\n return ;\n }\n\n protected _renderWrapperFooter(props: RenderableProps): ComponentChildren {\n return ;\n }\n\n protected _handleHover(event: MouseEvent) {\n const target = event.target;\n if (!(target instanceof HTMLElement) || !this.isHoverTrigger) {\n return;\n }\n\n let keyPath: string | null | undefined;\n if (event.type !== 'mouseleave') {\n const itemEle = target.closest('[z-item]');\n if (itemEle) {\n keyPath = itemEle.getAttribute('z-key-path') as string;\n if (!itemEle.classList.contains('is-nested')) {\n keyPath = itemEle.getAttribute('z-parent') as string;\n }\n } else {\n const listEle = target.closest('[z-list-wrapper]');\n keyPath = listEle?.getAttribute('z-list-wrapper');\n }\n }\n\n const lastInfo = this._hoverInfo;\n const lastKeyPath = lastInfo?.keyPath;\n if (lastKeyPath === keyPath) {\n return;\n }\n if (lastInfo?.timer) {\n clearTimeout(lastInfo.timer);\n }\n const hasKey = typeof keyPath === 'string';\n const lastHasKey = typeof lastKeyPath === 'string';\n const delay = hasKey ? ((lastHasKey && lastInfo?.shown) ? 50 : 200) : (lastInfo?.shown ? 100 : 200);\n this._hoverInfo = {\n keyPath,\n timer: window.setTimeout(() => {\n if (hasKey) {\n this.toggle(keyPath!, true, true);\n this._hoverInfo!.shown = true;\n } else {\n this.toggleAll(false);\n this._hoverInfo = undefined;\n }\n }, delay),\n };\n }\n\n componentWillUnmount(): void {\n super.componentWillUnmount();\n const timer = this._hoverInfo?.timer;\n if (timer) {\n clearTimeout(timer);\n }\n }\n\n render(props: RenderableProps) {\n const menuView = super.render(props);\n if (props.wrap) {\n return (\n

    \n {this._renderWrapperHeader(props)}\n {menuView}\n {this._renderWrapperFooter(props)}\n \n );\n }\n return menuView;\n }\n\n static render(this: unknown, setting: MenuSetting | undefined, args: T, defaultProps?: Partial & Attributes, thisObject?: unknown) {\n let menuOptions = typeof setting === 'function' ? setting.call(thisObject ?? this, ...args) : setting;\n if (!menuOptions) {\n return;\n }\n if (Array.isArray(menuOptions)) {\n menuOptions = {\n items: menuOptions,\n };\n }\n if (defaultProps) {\n menuOptions = mergeProps(defaultProps as Record, menuOptions);\n }\n return ;\n }\n}\n","import {Component, createRef} from 'preact';\nimport {$, classes, getHotkeysMap, Icon, nextGid} from '@zui/core';\nimport '../style';\n\nimport type {ComponentChildren, RenderableProps} from 'preact';\nimport type {SearchBoxOptions, SearchBoxState} from '../types';\n\nexport class SearchBox extends Component {\n static defaultProps: Partial = {\n clearIcon: true,\n searchIcon: true,\n delay: 500,\n hotkeys: true,\n };\n\n protected _gid: string;\n\n protected _input = createRef();\n\n protected _timer = 0;\n\n protected _hotkeysScope?: string;\n\n constructor(props: SearchBoxOptions) {\n super(props);\n this.state = {focus: false, value: props.defaultValue || ''};\n this._gid = props.id || `search-box-${nextGid()}`;\n }\n\n componentDidMount(): void {\n const {hotkeys} = this.props;\n if (hotkeys) {\n const hotkeysMap = getHotkeysMap(hotkeys, {\n clear: {\n keys: 'Escape',\n handler: (event) => {\n this.clear(event);\n },\n },\n enter: {\n keys: 'Enter',\n handler: (event) => {\n this.props.onEnter?.(this.state.value, event);\n },\n },\n });\n if (hotkeysMap) {\n this._hotkeysScope = `SearchBox_${this._gid}`;\n $(this.input).hotkeys(hotkeysMap, {\n scope: this._hotkeysScope,\n event: 'keydown',\n });\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this._hotkeysScope) {\n $(this.input).unbindHotkeys(this._hotkeysScope);\n }\n }\n\n get id() {\n return this._gid;\n }\n\n get input() {\n return this._input.current;\n }\n\n focus() {\n this.input?.focus();\n }\n\n blur() {\n this.input?.blur();\n }\n\n clear(event?: Event) {\n const oldValue = this.state.value;\n this.setState({value: ''}, () => {\n const {onChange, onClear} = this.props;\n onClear?.(event);\n this.focus();\n if (oldValue.trim() !== '') {\n onChange?.('', event);\n }\n });\n }\n\n _handleClearBtnClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.clear(event);\n };\n\n _handleChange = (event: Event) => {\n const oldValue = this.state.value;\n const value = (event.target as HTMLInputElement).value;\n const {onChange, delay} = this.props;\n this.setState({value}, () => {\n if (!onChange || oldValue === value) {\n return;\n }\n if (delay) {\n this._clearTimer();\n this._timer = window.setTimeout(() => {\n onChange(value, event);\n this._timer = 0;\n }, delay);\n } else {\n onChange(value, event);\n }\n });\n };\n\n _handleFocus = (event: FocusEvent) => {\n const focus = event.type === 'focus';\n this.setState({focus}, () => {\n const callback = focus ? this.props.onFocus : this.props.onBlur;\n callback?.(event);\n });\n };\n\n _clearTimer() {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n this._timer = 0;\n }\n\n render(props: RenderableProps, state: Readonly) {\n const {style, className, rootClass, rootStyle, readonly, disabled, circle, placeholder, mergeIcon, searchIcon, clearIcon, value: controlledValue, compact, prefixClass, suffixClass} = props;\n const {focus, value} = state;\n const {id} = this;\n const finalValue = controlledValue ?? value;\n const empty = typeof finalValue !== 'string' || !finalValue.trim().length;\n let prefixView: ComponentChildren;\n let suffixView: ComponentChildren;\n let searchIconView: ComponentChildren;\n if (searchIcon) {\n searchIconView = searchIcon === true ? : ;\n }\n if (!mergeIcon && searchIcon) {\n prefixView = ;\n }\n if (clearIcon && !empty) {\n suffixView = (\n \n {clearIcon === true ? : }\n \n );\n } else if (mergeIcon && searchIcon) {\n suffixView = searchIconView;\n }\n if (suffixView) {\n suffixView = (\n \n );\n }\n\n return (\n
    \n {prefixView}\n \n {suffixView}\n
    \n );\n }\n}\n","import {$, classes, mergeProps} from '@zui/core';\nimport {formatString} from '@zui/helpers';\nimport {SearchBox} from '@zui/search-box/src/components';\nimport {Menu} from './menu';\n\nimport {type ComponentChild, type ComponentChildren, type RenderableProps} from 'preact';\nimport type {ClassNameLike} from '@zui/core';\nimport type {Item, ItemKey} from '@zui/common-list';\nimport type {ListItemsSetting, NestedItem, NestedListItem, NestedListProps} from '@zui/list';\nimport type {SearchBoxOptions} from '@zui/search-box';\nimport type {SearchMenuOptions, SearchMenuState} from '../types';\n\nexport class SearchMenu extends Menu {\n static inheritNestedProps = [...Menu.inheritNestedProps, 'isItemMatch', 'search', 'underlineKeys', 'nestedSearch'];\n\n static defaultProps: Partial = {\n ...Menu.defaultProps,\n defaultNestedShow: true,\n wrap: true,\n nestedSearch: true,\n underlineKeys: true,\n };\n\n protected declare _searchKeys: string[];\n\n protected declare _matchedParents: Set;\n\n protected declare _showCount: number;\n\n constructor(props: T) {\n super(props);\n (this.state as SearchMenuState).search = props.search ?? props.defaultSearch;\n this._searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(this.state.search);\n this._isNestedItemMatch = this._isNestedItemMatch.bind(this);\n }\n\n componentWillUpdate(nextProps: Readonly): void {\n if (this.isRoot) {\n if (nextProps.search !== undefined && nextProps.search !== this.props.search) {\n this._searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(nextProps.search);\n }\n }\n }\n\n componentDidMount(): void {\n super.componentDidMount();\n this._updateMatchedParents();\n }\n\n componentDidUpdate(): void {\n super.componentDidUpdate();\n this._updateMatchedParents();\n }\n\n isExpanded(keyPath: string): boolean {\n if (this.props.expandOnSearch && this._searchKeys.length) {\n return true;\n }\n return super.isExpanded(keyPath);\n }\n\n protected _updateMatchedParents(): void {\n if (!this.isRoot) {\n return;\n }\n const $element = $(this.element);\n const $matchedChildren = $element.find('.item.is-nested.is-not-match').filter((_, element) => this._matchedParents.has(element.getAttribute('z-key-path') || '')).addClass('has-match-child');\n $element.parent().toggleClass('no-match-child', !!this._searchKeys?.length && !$matchedChildren.length && !$element.children('.item').not('.is-not-match').length);\n }\n\n protected _handleSearchChange = (search: string) => {\n const searchKeys = (this.constructor as typeof SearchMenu).getSearchKeys(search);\n this._searchKeys = searchKeys;\n this.setState({search: searchKeys.join(' ')});\n };\n\n protected _isItemMatch(props: RenderableProps, item: NestedItem, index: number, parentKey: ItemKey | undefined) {\n const {isItemMatch, nestedSearch} = props;\n const isMatch = isItemMatch ? isItemMatch.call(this, item, this._searchKeys, index, parentKey) : (this.constructor as typeof SearchMenu).isItemMatch(item, this._searchKeys, props.searchProps);\n if ((nestedSearch && this.isRoot) && isMatch && parentKey !== undefined) {\n let key = '';\n String(parentKey).split(':').forEach(x => {\n key += `${key.length ? ':' : ''}${x}`;\n this._matchedParents.add(key);\n });\n }\n return isMatch;\n }\n\n protected _isNestedItemMatch(item: NestedItem, _searchKeys: string[], index: number, parentKey: ItemKey | undefined): boolean {\n return this._isItemMatch(this.props, item, index, parentKey);\n }\n\n protected _getNestedProps(props: RenderableProps, items: ListItemsSetting, item: NestedItem, expanded: boolean): NestedListProps {\n const nestedProps = super._getNestedProps(props, items, item, expanded) as SearchMenuOptions;\n if (this.isRoot && props.nestedSearch) {\n nestedProps.isItemMatch = this._isNestedItemMatch;\n nestedProps.search = this._searchKeys.join(' ');\n } else if (!props.nestedSearch) {\n mergeProps(nestedProps as Record, {search: undefined, defaultSearch: undefined}, item.listProps);\n }\n return nestedProps;\n }\n\n protected _getItem(props: RenderableProps, item: NestedItem, index: number): NestedItem | false {\n const finalItem = super._getItem(props, item, index);\n if (!finalItem) {\n return finalItem;\n }\n if (this.isRoot && this.props.limit && this._showCount >= this.props.limit) {\n return false;\n }\n finalItem.hidden = !this._isItemMatch(props, item, index, props.parentKey);\n if (!finalItem.hidden) {\n this._showCount++;\n }\n return finalItem;\n }\n\n protected _renderItem(props: RenderableProps, item: Item, index: number): ComponentChildren {\n item.className = [item.className, item.hidden ? 'is-not-match' : ''];\n if (props.underlineKeys && this._searchKeys.length) {\n ['text', 'title', 'subtitle', 'content'].forEach(key => {\n if (typeof item[key] === 'string') {\n item[key] = (this.constructor as typeof SearchMenu).underlineKeys(this._searchKeys, [item[key] as string]);\n }\n });\n }\n return super._renderItem(props, item, index);\n }\n\n protected _getWrapClass(props: RenderableProps): ClassNameLike {\n const isSearchMode = this.isRoot && this._searchKeys.length;\n return classes(super._getWrapClass(props), 'search-menu', props.searchBox ? `search-menu-on-${props.searchPlacement || 'top'}` : '', isSearchMode ? 'is-search-mode' : '', isSearchMode && props.expandOnSearch ? 'no-toggle-on-search' : '');\n }\n\n protected _getSearchBoxProps(props: RenderableProps): SearchBoxOptions {\n const {searchBox} = props;\n const searchOptions: SearchBoxOptions = {\n compact: true,\n className: 'not-nested-toggle',\n onChange: this._handleSearchChange,\n };\n if (typeof searchBox === 'object') {\n mergeProps(searchOptions, searchBox);\n }\n if (props.search !== undefined) {\n searchOptions.value = this._searchKeys.join(' ');\n searchOptions.disabled = true;\n }\n return searchOptions;\n }\n\n protected _renderSearchBox(props: RenderableProps): ComponentChildren {\n const searchBoxOptions = this._getSearchBoxProps(props);\n return ;\n }\n\n protected _renderWrapperHeader(props: RenderableProps): ComponentChildren {\n const hasHeader = props.header;\n const {noMatchHint, searchBox, searchPlacement, nestedSearch, headerClass} = props;\n const hasTopSearchBox = (!nestedSearch || this.isRoot) && searchBox && searchPlacement !== 'bottom';\n if (!hasHeader && !hasTopSearchBox && !noMatchHint) {\n return null;\n }\n return [\n noMatchHint ?
    {noMatchHint}
    : null,\n (hasHeader || hasTopSearchBox) ? (
    \n {hasHeader ? super._renderWrapperHeader(props) : null}\n {hasTopSearchBox ? this._renderSearchBox(props) : null}\n
    ) : null,\n ];\n }\n\n protected _renderWrapperFooter(props: RenderableProps): ComponentChildren {\n const hasFooter = props.footer;\n const {searchBox, searchPlacement, nestedSearch, footerClass, exceedLimitHint, limit} = props;\n const hasBottomSearchBox = (!nestedSearch || this.isRoot) && searchBox && searchPlacement === 'bottom';\n const hasExceedLimitHint = exceedLimitHint && limit && this._items.length > limit;\n if (!hasFooter && !hasBottomSearchBox && !hasExceedLimitHint) {\n return null;\n }\n return (\n
    \n {hasExceedLimitHint ?
    {formatString(exceedLimitHint, this._items.length - limit)}
    : null}\n {hasFooter ? super._renderWrapperFooter(props) : null}\n {hasBottomSearchBox ? this._renderSearchBox(props) : null}\n
    \n );\n }\n\n protected _beforeRender(props: RenderableProps): void | RenderableProps | undefined {\n if (this.isRoot) {\n this._matchedParents = new Set();\n this._showCount = 0;\n }\n return super._beforeRender(props);\n }\n\n /**\n * Check whether item is matched.\n *\n * @param item Item to match.\n * @param searchKeys Search keys.\n * @returns Whether item is matched.\n */\n static isItemMatch(item: Item, searchKeys: string[], searchProps: (string | ((item: Item) => string | undefined))[] = ['keys', 'text', 'title', 'subtitle']) {\n if (!searchKeys.length) {\n return true;\n }\n return searchKeys.every(searchKey => searchProps.some(propSetting => {\n const propValue = typeof propSetting === 'function' ? propSetting(item) : item[propSetting];\n return typeof propValue === 'string' && propValue.length && propValue.toLowerCase().includes(searchKey);\n }));\n }\n\n /**\n * Convert search string to search keys.\n *\n * @param search Search string.\n * @returns Search keys array.\n */\n static getSearchKeys(search: string = ''): string[] {\n return $.unique((search).toLowerCase().split(' ').filter(x => x.length)) as string[];\n }\n\n static underlineKeys(searchKeys: string[], text: string[], className = 'is-match-keys'): ComponentChild[] {\n return searchKeys.reduce((result, key) => {\n return [...result].reduce((list, span) => {\n if (typeof span !== 'string') {\n list.push(span);\n return list;\n }\n const parts = span.toLowerCase().split(key);\n if (parts.length === 1) {\n list.push(span);\n return list;\n }\n let start = 0;\n parts.forEach((part, index) => {\n if (index) {\n list.push({span.substring(start, start + key.length)});\n start += key.length;\n }\n list.push(span.substring(start, start + part.length));\n start += part.length;\n });\n return list;\n }, []);\n }, text);\n }\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {Menu as MenuReact} from '../component';\n\nimport type {MenuOptions} from '../types';\n\nexport class Menu extends ComponentFromReact> {\n static NAME = 'Menu';\n\n static Component = MenuReact;\n\n static replace = MenuReact.TAG;\n}\n","import {ComponentFromReact} from '@zui/core';\nimport {SearchMenu as MenuReact} from '../component';\n\nimport type {SearchMenuOptions} from '../types';\n\nexport class SearchMenu extends ComponentFromReact {\n static NAME = 'SearchMenu';\n\n static Component = MenuReact;\n\n static replace = MenuReact.TAG;\n}\n","import {registerReactComponent} from '@zui/core';\nimport * as components from './index';\n\nregisterReactComponent(components);\n","import {isValidElement, ComponentChildren} from 'preact';\nimport {classes, CustomContent, Icon} from '@zui/core';\nimport {Button} from '@zui/button/src/component/button';\nimport type {ButtonProps} from '@zui/button';\nimport '@zui/css-icons/src/icons/close.css';\nimport {AlertOptions} from '../types';\nimport {Toolbar} from '@zui/toolbar/src/component';\n\nexport function Alert({\n className,\n style,\n actions,\n heading,\n content,\n contentClass,\n children,\n close,\n onClose,\n icon,\n iconClass,\n ...others\n}: AlertOptions) {\n let closeButton: ComponentChildren;\n if (close === true) {\n closeButton = ;\n } else if (isValidElement(close)) {\n closeButton = close;\n } else if (typeof close === 'object') {\n closeButton =