@touchvue/ui 0.0.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -0
- package/es/components/article/index.js +66 -0
- package/es/components/article/index.js.map +1 -0
- package/es/components/box/index.js +98 -0
- package/es/components/box/index.js.map +1 -0
- package/es/components/button/index.js +96 -0
- package/es/components/button/index.js.map +1 -0
- package/es/components/calendar/index.js +44 -0
- package/es/components/calendar/index.js.map +1 -0
- package/es/components/card/index.js +290 -0
- package/es/components/card/index.js.map +1 -0
- package/es/components/checkbox/index.js +97 -0
- package/es/components/checkbox/index.js.map +1 -0
- package/es/components/datepicker/index.js +44 -0
- package/es/components/datepicker/index.js.map +1 -0
- package/es/components/form/index.js +303 -0
- package/es/components/form/index.js.map +1 -0
- package/es/components/grid/index.js +253 -0
- package/es/components/grid/index.js.map +1 -0
- package/es/components/header/index.js +233 -0
- package/es/components/header/index.js.map +1 -0
- package/es/components/icon/index.js +98 -0
- package/es/components/icon/index.js.map +1 -0
- package/es/components/input/index.js +436 -0
- package/es/components/input/index.js.map +1 -0
- package/es/components/line/index.js +100 -0
- package/es/components/line/index.js.map +1 -0
- package/es/components/msg/index.js +322 -0
- package/es/components/msg/index.js.map +1 -0
- package/es/components/padding/index.js +92 -0
- package/es/components/padding/index.js.map +1 -0
- package/es/components/page/index.js +334 -0
- package/es/components/page/index.js.map +1 -0
- package/es/components/select/index.js +218 -0
- package/es/components/select/index.js.map +1 -0
- package/es/components/space/index.js +88 -0
- package/es/components/space/index.js.map +1 -0
- package/es/components/step/index.js +127 -0
- package/es/components/step/index.js.map +1 -0
- package/es/components/switch/index.js +120 -0
- package/es/components/switch/index.js.map +1 -0
- package/es/components/tab/index.js +227 -0
- package/es/components/tab/index.js.map +1 -0
- package/es/components/table/index.js +893 -0
- package/es/components/table/index.js.map +1 -0
- package/es/directives/dis/index.js +32 -0
- package/es/directives/dis/index.js.map +1 -0
- package/es/directives/size/index.js +23 -0
- package/es/directives/size/index.js.map +1 -0
- package/es/hooks/index.js +2 -0
- package/es/hooks/index.js.map +1 -0
- package/es/index.js +4209 -0
- package/es/index.js.map +1 -0
- package/es/utils/index.js +90 -0
- package/es/utils/index.js.map +1 -0
- package/lib/components/article/index.js +70 -0
- package/lib/components/article/index.js.map +1 -0
- package/lib/components/box/index.js +102 -0
- package/lib/components/box/index.js.map +1 -0
- package/lib/components/button/index.js +98 -0
- package/lib/components/button/index.js.map +1 -0
- package/lib/components/calendar/index.js +46 -0
- package/lib/components/calendar/index.js.map +1 -0
- package/lib/components/card/index.js +292 -0
- package/lib/components/card/index.js.map +1 -0
- package/lib/components/checkbox/index.js +99 -0
- package/lib/components/checkbox/index.js.map +1 -0
- package/lib/components/datepicker/index.js +46 -0
- package/lib/components/datepicker/index.js.map +1 -0
- package/lib/components/form/index.js +306 -0
- package/lib/components/form/index.js.map +1 -0
- package/lib/components/grid/index.js +256 -0
- package/lib/components/grid/index.js.map +1 -0
- package/lib/components/header/index.js +235 -0
- package/lib/components/header/index.js.map +1 -0
- package/lib/components/icon/index.js +101 -0
- package/lib/components/icon/index.js.map +1 -0
- package/lib/components/input/index.js +438 -0
- package/lib/components/input/index.js.map +1 -0
- package/lib/components/line/index.js +102 -0
- package/lib/components/line/index.js.map +1 -0
- package/lib/components/msg/index.js +324 -0
- package/lib/components/msg/index.js.map +1 -0
- package/lib/components/padding/index.js +94 -0
- package/lib/components/padding/index.js.map +1 -0
- package/lib/components/page/index.js +336 -0
- package/lib/components/page/index.js.map +1 -0
- package/lib/components/select/index.js +220 -0
- package/lib/components/select/index.js.map +1 -0
- package/lib/components/space/index.js +90 -0
- package/lib/components/space/index.js.map +1 -0
- package/lib/components/step/index.js +129 -0
- package/lib/components/step/index.js.map +1 -0
- package/lib/components/switch/index.js +122 -0
- package/lib/components/switch/index.js.map +1 -0
- package/lib/components/tab/index.js +230 -0
- package/lib/components/tab/index.js.map +1 -0
- package/lib/components/table/index.js +898 -0
- package/lib/components/table/index.js.map +1 -0
- package/lib/directives/dis/index.js +34 -0
- package/lib/directives/dis/index.js.map +1 -0
- package/lib/directives/size/index.js +25 -0
- package/lib/directives/size/index.js.map +1 -0
- package/lib/hooks/index.js +3 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/index.js +4251 -0
- package/lib/index.js.map +1 -0
- package/lib/utils/index.js +99 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +35 -0
- package/theme/components/article/index.css +1 -0
- package/theme/components/box/index.css +1 -0
- package/theme/components/button/index.css +1 -0
- package/theme/components/calendar/index.css +0 -0
- package/theme/components/card/index.css +1 -0
- package/theme/components/checkbox/index.css +1 -0
- package/theme/components/datepicker/index.css +0 -0
- package/theme/components/form/index.css +1 -0
- package/theme/components/grid/index.css +1 -0
- package/theme/components/header/index.css +1 -0
- package/theme/components/icon/index.css +1 -0
- package/theme/components/input/index.css +1 -0
- package/theme/components/line/index.css +1 -0
- package/theme/components/msg/index.css +1 -0
- package/theme/components/padding/index.css +1 -0
- package/theme/components/space/index.css +1 -0
- package/theme/components/step/index.css +1 -0
- package/theme/components/switch/index.css +1 -0
- package/theme/components/tab/index.css +1 -0
- package/theme/components/table/index.css +1 -0
- package/theme/img/default.png +0 -0
- package/theme/img/icon-type-fill.ttf +0 -0
- package/theme/img/icon.ttf +0 -0
- package/theme/img/loading-in.png +0 -0
- package/theme/img/loading-out.png +0 -0
- package/theme/img/msg/error-bg.png +0 -0
- package/theme/img/msg/error-icon.png +0 -0
- package/theme/img/msg/success-bg.png +0 -0
- package/theme/img/msg/success-icon.png +0 -0
- package/theme/index.css +1 -0
- package/theme/skin/default.css +1 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { defineComponent, getCurrentInstance, useSlots, ref, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createBlock, createCommentVNode, renderSlot, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode } from 'vue';
|
|
2
|
+
|
|
3
|
+
const _hoisted_1 = {
|
|
4
|
+
key: 0,
|
|
5
|
+
class: "to-header-left"
|
|
6
|
+
};
|
|
7
|
+
const _hoisted_2 = {
|
|
8
|
+
key: 1,
|
|
9
|
+
class: "to-header-back"
|
|
10
|
+
};
|
|
11
|
+
const _hoisted_3 = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "tip"
|
|
14
|
+
};
|
|
15
|
+
const _hoisted_4 = {
|
|
16
|
+
key: 2,
|
|
17
|
+
class: "to-header-center"
|
|
18
|
+
};
|
|
19
|
+
const _hoisted_5 = {
|
|
20
|
+
key: 3,
|
|
21
|
+
class: "to-header-title"
|
|
22
|
+
};
|
|
23
|
+
const _hoisted_6 = {
|
|
24
|
+
key: 0,
|
|
25
|
+
class: "to-header-title-text"
|
|
26
|
+
};
|
|
27
|
+
const _hoisted_7 = {
|
|
28
|
+
key: 1,
|
|
29
|
+
class: "to-header-title-text"
|
|
30
|
+
};
|
|
31
|
+
const _hoisted_8 = {
|
|
32
|
+
key: 2,
|
|
33
|
+
class: "to-header-title-tip"
|
|
34
|
+
};
|
|
35
|
+
const _hoisted_9 = {
|
|
36
|
+
key: 4,
|
|
37
|
+
class: "to-header-content"
|
|
38
|
+
};
|
|
39
|
+
const _hoisted_10 = { class: "to-header-fn" };
|
|
40
|
+
const _hoisted_11 = {
|
|
41
|
+
key: 5,
|
|
42
|
+
class: "to-header-fn is-float"
|
|
43
|
+
};
|
|
44
|
+
const _hoisted_12 = {
|
|
45
|
+
key: 6,
|
|
46
|
+
class: "to-header-right"
|
|
47
|
+
};
|
|
48
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
49
|
+
__name: "header",
|
|
50
|
+
props: {
|
|
51
|
+
title: { type: String, required: false, default: "" },
|
|
52
|
+
color: { type: String, required: false, default: "" },
|
|
53
|
+
mode: { type: String, required: false, default: "default" },
|
|
54
|
+
titlePosition: { type: String, required: false, default: "left" }
|
|
55
|
+
},
|
|
56
|
+
emits: ["back"],
|
|
57
|
+
setup(__props, { emit: __emit }) {
|
|
58
|
+
const instance = getCurrentInstance();
|
|
59
|
+
const props = __props;
|
|
60
|
+
const emit = __emit;
|
|
61
|
+
const slots = useSlots();
|
|
62
|
+
const float = ref();
|
|
63
|
+
const floatFnIcon = ref();
|
|
64
|
+
const hasBack = computed(() => {
|
|
65
|
+
var _a;
|
|
66
|
+
return !!((_a = instance == null ? void 0 : instance.vnode.props) == null ? void 0 : _a.onClick);
|
|
67
|
+
});
|
|
68
|
+
const setClass = computed(() => {
|
|
69
|
+
const arr = [];
|
|
70
|
+
if (props.mode) {
|
|
71
|
+
arr.push(`mode-${props.mode}`);
|
|
72
|
+
}
|
|
73
|
+
return arr;
|
|
74
|
+
});
|
|
75
|
+
const toggleFloat = () => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
(_b = (_a = float.value) == null ? void 0 : _a.toggle) == null ? void 0 : _b.call(_a, floatFnIcon.value);
|
|
78
|
+
};
|
|
79
|
+
return (_ctx, _cache) => {
|
|
80
|
+
const _component_to_button = resolveComponent("to-button");
|
|
81
|
+
const _component_to_icon = resolveComponent("to-icon");
|
|
82
|
+
const _component_to_float = resolveComponent("to-float");
|
|
83
|
+
return openBlock(), createElementBlock(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
class: normalizeClass(["to-header", setClass.value])
|
|
87
|
+
},
|
|
88
|
+
[
|
|
89
|
+
unref(slots).left || Boolean(hasBack.value) && props.titlePosition === "center" ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
90
|
+
Boolean(hasBack.value) && props.titlePosition === "center" ? (openBlock(), createBlock(_component_to_button, {
|
|
91
|
+
key: 0,
|
|
92
|
+
icon: "back",
|
|
93
|
+
mode: "none",
|
|
94
|
+
onClick: _cache[0] || (_cache[0] = ($event) => emit("back"))
|
|
95
|
+
})) : createCommentVNode("v-if", true),
|
|
96
|
+
renderSlot(_ctx.$slots, "left")
|
|
97
|
+
])) : createCommentVNode("v-if", true),
|
|
98
|
+
(props.title || unref(slots).title) && Boolean(hasBack.value) && props.titlePosition === "left" ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
99
|
+
createVNode(_component_to_button, {
|
|
100
|
+
mode: "none",
|
|
101
|
+
icon: "back",
|
|
102
|
+
onClick: _cache[1] || (_cache[1] = ($event) => emit("back"))
|
|
103
|
+
}, {
|
|
104
|
+
default: withCtx(() => [
|
|
105
|
+
renderSlot(_ctx.$slots, "title", {}, () => [
|
|
106
|
+
createTextVNode(
|
|
107
|
+
toDisplayString(props.title),
|
|
108
|
+
1
|
|
109
|
+
/* TEXT */
|
|
110
|
+
)
|
|
111
|
+
])
|
|
112
|
+
]),
|
|
113
|
+
_: 3
|
|
114
|
+
/* FORWARDED */
|
|
115
|
+
}),
|
|
116
|
+
unref(slots).tip ? (openBlock(), createElementBlock("span", _hoisted_3, [
|
|
117
|
+
renderSlot(_ctx.$slots, "tip")
|
|
118
|
+
])) : createCommentVNode("v-if", true)
|
|
119
|
+
])) : createCommentVNode("v-if", true),
|
|
120
|
+
props.titlePosition === "center" ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
121
|
+
renderSlot(_ctx.$slots, "icon"),
|
|
122
|
+
renderSlot(_ctx.$slots, "title", {}, () => [
|
|
123
|
+
createTextVNode(
|
|
124
|
+
toDisplayString(props.title),
|
|
125
|
+
1
|
|
126
|
+
/* TEXT */
|
|
127
|
+
)
|
|
128
|
+
])
|
|
129
|
+
])) : createCommentVNode("v-if", true),
|
|
130
|
+
(props.title || unref(slots).title) && !Boolean(hasBack.value) && props.titlePosition === "left" ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
131
|
+
_cache[2] || (_cache[2] = createElementVNode(
|
|
132
|
+
"div",
|
|
133
|
+
{ class: "to-header-title-icon" },
|
|
134
|
+
null,
|
|
135
|
+
-1
|
|
136
|
+
/* CACHED */
|
|
137
|
+
)),
|
|
138
|
+
props.title ? (openBlock(), createElementBlock(
|
|
139
|
+
"div",
|
|
140
|
+
_hoisted_6,
|
|
141
|
+
toDisplayString(props.title),
|
|
142
|
+
1
|
|
143
|
+
/* TEXT */
|
|
144
|
+
)) : createCommentVNode("v-if", true),
|
|
145
|
+
unref(slots).title ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
146
|
+
unref(slots).title ? renderSlot(_ctx.$slots, "title", { key: 0 }) : createCommentVNode("v-if", true)
|
|
147
|
+
])) : createCommentVNode("v-if", true),
|
|
148
|
+
unref(slots).tip ? (openBlock(), createElementBlock("div", _hoisted_8, [
|
|
149
|
+
renderSlot(_ctx.$slots, "tip")
|
|
150
|
+
])) : createCommentVNode("v-if", true)
|
|
151
|
+
])) : createCommentVNode("v-if", true),
|
|
152
|
+
unref(slots).content || !((props.title || unref(slots).title) && props.titlePosition === "left") ? (openBlock(), createElementBlock("div", _hoisted_9, [
|
|
153
|
+
renderSlot(_ctx.$slots, "content")
|
|
154
|
+
])) : createCommentVNode("v-if", true),
|
|
155
|
+
createElementVNode("div", _hoisted_10, [
|
|
156
|
+
renderSlot(_ctx.$slots, "default")
|
|
157
|
+
]),
|
|
158
|
+
unref(slots).floatFn ? (openBlock(), createElementBlock("div", _hoisted_11, [
|
|
159
|
+
createVNode(
|
|
160
|
+
_component_to_icon,
|
|
161
|
+
{
|
|
162
|
+
ref_key: "floatFnIcon",
|
|
163
|
+
ref: floatFnIcon,
|
|
164
|
+
link: "",
|
|
165
|
+
value: "menu",
|
|
166
|
+
mode: "none",
|
|
167
|
+
fillet: "normal",
|
|
168
|
+
onClick: toggleFloat
|
|
169
|
+
},
|
|
170
|
+
null,
|
|
171
|
+
512
|
|
172
|
+
/* NEED_PATCH */
|
|
173
|
+
),
|
|
174
|
+
createVNode(
|
|
175
|
+
_component_to_float,
|
|
176
|
+
{
|
|
177
|
+
ref_key: "float",
|
|
178
|
+
ref: float,
|
|
179
|
+
class: "to-header-floatFn",
|
|
180
|
+
width: 10
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
default: withCtx(() => [
|
|
184
|
+
renderSlot(_ctx.$slots, "floatFn")
|
|
185
|
+
]),
|
|
186
|
+
_: 3
|
|
187
|
+
/* FORWARDED */
|
|
188
|
+
},
|
|
189
|
+
512
|
|
190
|
+
/* NEED_PATCH */
|
|
191
|
+
)
|
|
192
|
+
])) : createCommentVNode("v-if", true),
|
|
193
|
+
unref(slots).right ? (openBlock(), createElementBlock("div", _hoisted_12, [
|
|
194
|
+
renderSlot(_ctx.$slots, "right")
|
|
195
|
+
])) : createCommentVNode("v-if", true)
|
|
196
|
+
],
|
|
197
|
+
2
|
|
198
|
+
/* CLASS */
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
var _export_sfc = (sfc, props) => {
|
|
205
|
+
const target = sfc.__vccOpts || sfc;
|
|
206
|
+
for (const [key, val] of props) {
|
|
207
|
+
target[key] = val;
|
|
208
|
+
}
|
|
209
|
+
return target;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
var Header = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/header/src/header.vue"]]);
|
|
213
|
+
|
|
214
|
+
const withInstall = (main, extra) => {
|
|
215
|
+
main.install = (app) => {
|
|
216
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
217
|
+
app.component(comp.name, comp);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
if (extra) {
|
|
221
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
222
|
+
main[key] = comp;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return main;
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
navigator.userAgent.toLowerCase();
|
|
229
|
+
|
|
230
|
+
const ToHeader = withInstall(Header);
|
|
231
|
+
|
|
232
|
+
export { ToHeader };
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/header/src/header.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/header/index.ts"],"sourcesContent":["<template>\n <div class=\"to-header\" :class=\"setClass\">\n <div\n v-if=\"slots.left || (Boolean(hasBack) && props.titlePosition === 'center')\"\n class=\"to-header-left\"\n >\n <to-button\n v-if=\"Boolean(hasBack) && props.titlePosition === 'center'\"\n icon=\"back\"\n mode=\"none\"\n @click=\"emit('back')\"\n />\n <slot name=\"left\" />\n </div>\n\n <div\n v-if=\"(props.title || slots.title) && Boolean(hasBack) && props.titlePosition === 'left'\"\n class=\"to-header-back\"\n >\n <to-button mode=\"none\" icon=\"back\" @click=\"emit('back')\">\n <slot name=\"title\">{{ props.title }}</slot>\n </to-button>\n <span v-if=\"slots.tip\" class=\"tip\">\n <slot name=\"tip\" />\n </span>\n </div>\n\n <div v-if=\"props.titlePosition === 'center'\" class=\"to-header-center\">\n <slot name=\"icon\" />\n <slot name=\"title\">{{ props.title }}</slot>\n </div>\n\n <div\n v-if=\"(props.title || slots.title) && !Boolean(hasBack) && props.titlePosition === 'left'\"\n class=\"to-header-title\"\n >\n <div class=\"to-header-title-icon\"></div>\n <div v-if=\"props.title\" class=\"to-header-title-text\">{{ props.title }}</div>\n <div v-if=\"slots.title\" class=\"to-header-title-text\">\n <slot v-if=\"slots.title\" name=\"title\" />\n </div>\n <div v-if=\"slots.tip\" class=\"to-header-title-tip\">\n <slot name=\"tip\" />\n </div>\n </div>\n\n <div\n v-if=\"slots.content || !((props.title || slots.title) && props.titlePosition === 'left')\"\n class=\"to-header-content\"\n >\n <slot name=\"content\" />\n </div>\n\n <div class=\"to-header-fn\">\n <slot />\n </div>\n\n <div v-if=\"slots.floatFn\" class=\"to-header-fn is-float\">\n <to-icon\n ref=\"floatFnIcon\"\n link\n value=\"menu\"\n mode=\"none\"\n fillet=\"normal\"\n @click=\"toggleFloat\"\n />\n <to-float ref=\"float\" class=\"to-header-floatFn\" :width=\"10\">\n <slot name=\"floatFn\" />\n </to-float>\n </div>\n\n <div v-if=\"slots.right\" class=\"to-header-right\">\n <slot name=\"right\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, useSlots, getCurrentInstance } from 'vue';\nconst instance = getCurrentInstance();\n\ninterface Props {\n title?: string;\n color?: string;\n mode?: string;\n titlePosition?: 'left' | 'center';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n title: '',\n color: '',\n mode: 'default',\n titlePosition: 'left',\n});\n\nconst emit = defineEmits<{\n (e: 'back'): void;\n}>();\n\nconst slots = useSlots();\n\nconst float = ref();\nconst floatFnIcon = ref();\n\nconst hasBack = computed(() => {\n return !!instance?.vnode.props?.onClick;\n});\n\nconst setClass = computed(() => {\n const arr: string[] = [];\n\n if (props.mode) {\n arr.push(`mode-${props.mode}`);\n }\n\n return arr;\n});\n\nconst toggleFloat = () => {\n float.value?.toggle?.(floatFnIcon.value);\n};\n</script>\n","import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n","interface Options {\n ratio?: {\n base?: {\n pc?: number;\n pad?: number;\n phone?: number;\n };\n };\n}\n\nconst ua = navigator.userAgent.toLowerCase();\n\nexport function setRatio(options: Options = {}) {\n const ua = navigator.userAgent.toLowerCase();\n const base = options?.ratio?.base ?? {};\n\n const baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n ? (base.phone ?? 375)\n : /ipad|android(?!.*mobile)|tablet/i.test(ua)\n ? (base.pad ?? 1100)\n : (base.pc ?? 1366);\n\n const updateFontSize = () => {\n const width = window.innerWidth || document.documentElement.clientWidth;\n document.documentElement.style.fontSize = (width / baseSize) * 100 + 'px';\n };\n\n updateFontSize();\n window.addEventListener('resize', updateFontSize);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n const isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua);\n const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua);\n\n return isMobile ? 'phone' : isTablet ? 'pad' : 'pc';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n const html = document.documentElement;\n const classList: string[] = [];\n\n // 判断操作系统\n if (/windows/i.test(ua)) {\n classList.push('os-windows');\n } else if (/macintosh|mac os x/i.test(ua)) {\n classList.push('os-macos');\n } else if (/android/i.test(ua)) {\n classList.push('os-android');\n } else if (/iphone|ipad|ipod/i.test(ua)) {\n classList.push('os-ios');\n }\n\n // 判断设备类型\n const media = getMedia();\n if (media === 'pad') {\n classList.push('media-pad');\n } else if (media === 'phone') {\n classList.push('media-phone');\n } else {\n classList.push('media-pc');\n }\n\n // 添加 class 到 <html>\n html.className += ' ' + classList.join(' ');\n}\n\nexport function getEm() {\n const el = document.createElement('div');\n el.style.width = '1em';\n el.style.height = '1em';\n el.style.position = 'absolute';\n document.body.appendChild(el);\n const size = el.getBoundingClientRect().height;\n document.body.removeChild(el);\n return size;\n}\n","import Header from './src/header.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\nexport const ToHeader: SFCWithInstall<typeof Header> = withInstall(Header);\nexport * from './src/instance';\n"],"names":["_createElementBlock","_normalizeClass","_unref","_openBlock","_createBlock","_renderSlot","_createVNode","_createTextVNode","_toDisplayString","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AASpC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAOd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAIb,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,QAAQ,GAAI,EAAA,CAAA;AAClB,IAAA,MAAM,cAAc,GAAI,EAAA,CAAA;AAExB,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;;AAC7B,MAAA,OAAO,CAAC,EAAA,CAAC,EAAU,GAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAM,UAAhB,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,KACjC,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,MAAM,MAAgB,EAAC,CAAA;AAEvB,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAI,GAAA,CAAA,IAAA,CAAK,CAAQ,KAAA,EAAA,KAAA,CAAM,IAAM,CAAA,CAAA,CAAA,CAAA;AAAA,OAC/B;AAEA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,cAAc,MAAM;;AACxB,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAa,MAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAsB,WAAY,CAAA,KAAA,CAAA,CAAA;AAAA,KACpC,CAAA;;;;;wBAvHE,EAAAA,kBAAA;AAAA,QAyEM,KAAA;AAAA,QAAA;AAAA,UAzED,OAAKC,cAAA,CAAA,CAAC,WAAoB,EAAA,QAAA,CAAQ,KAAA,CAAA,CAAA;AAAA;;UAE7BC,KAAK,CAAA,KAAA,CAAC,CAAA,IAAA,IAAS,QAAQ,OAAO,CAAA,KAAA,CAAK,IAAA,KAAA,CAAM,kBAAa,QAD9D,IAAAC,SAAA,EAAA,EAAAH,kBAAA,CAWM,OAXN,UAWM,EAAA;AAAA,YANI,OAAA,CAAQ,OAAA,CAAA,KAAO,CAAK,IAAA,KAAA,CAAM,kBAAa,uBAD/C,EAAAI,WAAA,CAKE,oBAAA,EAAA;AAAA;cAHA,IAAK,EAAA,MAAA;AAAA,cACL,IAAK,EAAA,MAAA;AAAA,cACJ,OAAA,mCAAO,KAAA,IAAA,CAAI,MAAA,CAAA,CAAA;AAAA;YAEdC,UAAA,CAAoB,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA;AAAA;WAIb,MAAM,KAAS,IAAAH,KAAA,CAAA,KAAA,CAAA,CAAM,UAAU,OAAQ,CAAA,OAAA,CAAA,KAAO,CAAA,IAAK,MAAM,aAAa,KAAA,MAAA,IAD/EC,WAAA,EAAAH,kBAAA,CAUM,OAVN,UAUM,EAAA;AAAA,YANJM,YAEY,oBAAA,EAAA;AAAA,cAFD,IAAK,EAAA,MAAA;AAAA,cAAO,IAAK,EAAA,MAAA;AAAA,cAAQ,OAAA,mCAAO,KAAA,IAAA,CAAI,MAAA,CAAA,CAAA;AAAA;+BAC7C,MAA2C;AAAA,gBAA3CD,WAA2C,0BAA3C,MAA2C;AAAA,kBAArBE,eAAA;AAAA,oBAAAC,eAAA,CAAA,MAAM,KAAK,CAAA;AAAA,oBAAA,CAAA;AAAA;AAAA,mBAAA;AAAA;;;;;YAEvBN,KAAA,CAAA,KAAA,CAAM,CAAA,GAAA,IAAlBC,WAAA,EAAAH,kBAAA,CAEO,QAFP,UAEO,EAAA;AAAA,cADLK,UAAA,CAAmB,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA;AAAA;;UAIZ,MAAM,aAAa,KAAA,QAAA,IAA9BF,WAAA,EAAAH,kBAAA,CAGM,OAHN,UAGM,EAAA;AAAA,YAFJK,UAAA,CAAoB,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA;AAAA,YACpBA,WAA2C,0BAA3C,MAA2C;AAAA,cAArBE,eAAA;AAAA,gBAAAC,eAAA,CAAA,MAAM,KAAK,CAAA;AAAA,gBAAA,CAAA;AAAA;AAAA,eAAA;AAAA;;WAI1B,MAAM,KAAS,IAAAN,KAAA,CAAA,KAAA,CAAM,CAAA,KAAA,KAAW,CAAA,OAAQ,CAAA,OAAA,CAAA,KAAO,CAAA,IAAK,MAAM,aAAa,KAAA,MAAA,IADhFC,WAAA,EAAAH,kBAAA,CAYM,OAZN,UAYM,EAAA;AAAA,mCARJ,GAAAS,kBAAA;AAAA,cAAwC,KAAA;AAAA,cAAA,EAAnC,OAAM,sBAAsB,EAAA;AAAA,cAAA,IAAA;AAAA,cAAA,CAAA,CAAA;AAAA;AAAA,aAAA,CAAA;AAAA,YACtB,KAAA,CAAM,KAAjB,IAAAN,SAAA,EAAA,EAAAH,kBAAA;AAAA,cAA4E,KAAA;AAAA,cAA5E,UAAA;AAAA,cAAwDQ,eAAA,CAAA,MAAM,KAAK,CAAA;AAAA,cAAA,CAAA;AAAA;AAAA,aAAA;YACxDN,KAAA,CAAA,KAAA,CAAM,CAAA,KAAA,IAAjBC,WAAA,EAAAH,kBAAA,CAEM,OAFN,UAEM,EAAA;AAAA,cADQE,KAAA,CAAA,KAAA,CAAM,CAAA,KAAA,GAAlBG,WAAwC,IAAA,CAAA,MAAA,EAAA,OAAA,EAAA,EAAA,KAAA,CAAA,EAAA;;YAE/BH,KAAA,CAAA,KAAA,CAAM,CAAA,GAAA,IAAjBC,WAAA,EAAAH,kBAAA,CAEM,OAFN,UAEM,EAAA;AAAA,cADJK,UAAA,CAAmB,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA;AAAA;;UAKfH,MAAA,KAAA,CAAA,CAAM,WAAc,EAAA,CAAA,KAAA,CAAM,SAASA,KAAA,CAAA,KAAA,CAAM,CAAA,KAAA,KAAU,MAAM,aAAa,KAAA,MAAA,CAAA,IAD9EC,WAAA,EAAAH,kBAAA,CAKM,OALN,UAKM,EAAA;AAAA,YADJK,UAAA,CAAuB,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;UAGzBI,kBAAA,CAEM,OAFN,WAEM,EAAA;AAAA,YADJJ,UAAA,CAAQ,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;UAGCH,KAAA,CAAA,KAAA,CAAM,CAAA,OAAA,IAAjBC,WAAA,EAAAH,kBAAA,CAYM,OAZN,WAYM,EAAA;AAAA,YAXJM,WAAA;AAAA,cAOE,kBAAA;AAAA,cAAA;AAAA,uBANI,EAAA,aAAA;AAAA,gBAAJ,GAAI,EAAA,WAAA;AAAA,gBACJ,IAAA,EAAA,EAAA;AAAA,gBACA,KAAM,EAAA,MAAA;AAAA,gBACN,IAAK,EAAA,MAAA;AAAA,gBACL,MAAO,EAAA,QAAA;AAAA,gBACN,OAAO,EAAA,WAAA;AAAA;;;;;YAEVA,WAAA;AAAA,cAEW,mBAAA;AAAA,cAAA;AAAA,uBAFG,EAAA,OAAA;AAAA,gBAAJ,GAAI,EAAA,KAAA;AAAA,gBAAQ,KAAM,EAAA,mBAAA;AAAA,gBAAqB,KAAO,EAAA,EAAA;AAAA;;iCACtD,MAAuB;AAAA,kBAAvBD,UAAA,CAAuB,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;;;;;;;;UAIhBH,KAAA,CAAA,KAAA,CAAM,CAAA,KAAA,IAAjBC,WAAA,EAAAH,kBAAA,CAEM,OAFN,WAEM,EAAA;AAAA,YADJK,UAAA,CAAqB,IAAA,CAAA,MAAA,EAAA,OAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;AC9Dd,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;;ACbW,SAAU,CAAA,SAAA,CAAU,WAAY;;ACR9B,MAAA,QAAA,GAA0C,YAAY,MAAM;;;;"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot } from 'vue';
|
|
2
|
+
|
|
3
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
|
+
...{
|
|
5
|
+
name: "ToIcon"
|
|
6
|
+
},
|
|
7
|
+
__name: "icon",
|
|
8
|
+
props: {
|
|
9
|
+
value: { type: String, required: false, default: "" },
|
|
10
|
+
type: { type: String, required: false, default: "" },
|
|
11
|
+
color: { type: String, required: false, default: "" },
|
|
12
|
+
mode: { type: String, required: false, default: "text" },
|
|
13
|
+
contentSize: { type: [Number, String], required: false, default: "" },
|
|
14
|
+
link: { type: Boolean, required: false, default: false }
|
|
15
|
+
},
|
|
16
|
+
emits: ["click"],
|
|
17
|
+
setup(__props, { emit: __emit }) {
|
|
18
|
+
const props = __props;
|
|
19
|
+
const emit = __emit;
|
|
20
|
+
const text = ref(null);
|
|
21
|
+
const setClass = computed(() => {
|
|
22
|
+
const arr = props.value ? [`value-${props.value}`] : [];
|
|
23
|
+
if (props.type === "fill") {
|
|
24
|
+
arr.push("type-fill");
|
|
25
|
+
}
|
|
26
|
+
if (props.mode && props.mode !== "text") {
|
|
27
|
+
arr.push(`mode-${props.mode}`);
|
|
28
|
+
}
|
|
29
|
+
if (props.color) {
|
|
30
|
+
arr.push(`color-${props.color}`);
|
|
31
|
+
}
|
|
32
|
+
if (props.link) {
|
|
33
|
+
arr.push("is-link");
|
|
34
|
+
}
|
|
35
|
+
return arr;
|
|
36
|
+
});
|
|
37
|
+
function clickHandle(evt) {
|
|
38
|
+
emit("click", evt);
|
|
39
|
+
}
|
|
40
|
+
return (_ctx, _cache) => {
|
|
41
|
+
return openBlock(), createElementBlock(
|
|
42
|
+
"span",
|
|
43
|
+
{
|
|
44
|
+
class: normalizeClass(["to-icon", setClass.value]),
|
|
45
|
+
onClick: clickHandle
|
|
46
|
+
},
|
|
47
|
+
[
|
|
48
|
+
createElementVNode(
|
|
49
|
+
"span",
|
|
50
|
+
{
|
|
51
|
+
ref_key: "text",
|
|
52
|
+
ref: text,
|
|
53
|
+
class: "to-icon-text"
|
|
54
|
+
},
|
|
55
|
+
[
|
|
56
|
+
renderSlot(_ctx.$slots, "default")
|
|
57
|
+
],
|
|
58
|
+
512
|
|
59
|
+
/* NEED_PATCH */
|
|
60
|
+
)
|
|
61
|
+
],
|
|
62
|
+
2
|
|
63
|
+
/* CLASS */
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
var _export_sfc = (sfc, props) => {
|
|
70
|
+
const target = sfc.__vccOpts || sfc;
|
|
71
|
+
for (const [key, val] of props) {
|
|
72
|
+
target[key] = val;
|
|
73
|
+
}
|
|
74
|
+
return target;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
var Icon = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/icon/src/icon.vue"]]);
|
|
78
|
+
|
|
79
|
+
const withInstall = (main, extra) => {
|
|
80
|
+
main.install = (app) => {
|
|
81
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
82
|
+
app.component(comp.name, comp);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
if (extra) {
|
|
86
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
87
|
+
main[key] = comp;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return main;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
navigator.userAgent.toLowerCase();
|
|
94
|
+
|
|
95
|
+
const ToIcon = withInstall(Icon);
|
|
96
|
+
|
|
97
|
+
export { Icon, ToIcon };
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/components/icon/src/icon.vue","../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/icon/index.ts"],"sourcesContent":["<template>\n <span class=\"to-icon\" :class=\"setClass\" @click=\"clickHandle\">\n <span ref=\"text\" class=\"to-icon-text\">\n <slot></slot>\n </span>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\ndefineOptions({\n name: 'ToIcon',\n});\n// 定义 props\ninterface Props {\n value?: string;\n type?: string;\n color?: string;\n mode?: string;\n contentSize?: number | string;\n link?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n value: '',\n type: '',\n color: '',\n mode: 'text',\n link: false,\n contentSize: '',\n});\n\nconst emit = defineEmits<{\n (e: 'click', evt: MouseEvent): void;\n}>();\n\n// ref\nconst text = ref<HTMLElement | null>(null);\n\n// 计算 class\nconst setClass = computed(() => {\n const arr: string[] = props.value ? [`value-${props.value}`] : [];\n\n if (props.type === 'fill') {\n arr.push('type-fill');\n }\n\n if (props.mode && props.mode !== 'text') {\n arr.push(`mode-${props.mode}`);\n }\n\n if (props.color) {\n arr.push(`color-${props.color}`);\n }\n\n if (props.link) {\n arr.push('is-link');\n }\n\n return arr;\n});\n\n// 事件处理\nfunction clickHandle(evt: MouseEvent) {\n emit('click', evt);\n}\n</script>\n","import type { App, Plugin } from 'vue';\n\n/* 生成install函数 */\n\nexport type SFCWithInstall<T> = T & Plugin;\n\nexport type SFCInstallWithContext<T> = SFCWithInstall<T> & {\n _context: App | null;\n};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E) => {\n (main as SFCWithInstall<T>).install = (app: App): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp);\n }\n };\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp;\n }\n }\n return main as SFCWithInstall<T> & E;\n};\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app: App) => {\n (fn as SFCInstallWithContext<T>)._context = app;\n app.config.globalProperties[name] = fn;\n };\n\n return fn as SFCInstallWithContext<T>;\n};\n","interface Options {\n ratio?: {\n base?: {\n pc?: number;\n pad?: number;\n phone?: number;\n };\n };\n}\n\nconst ua = navigator.userAgent.toLowerCase();\n\nexport function setRatio(options: Options = {}) {\n const ua = navigator.userAgent.toLowerCase();\n const base = options?.ratio?.base ?? {};\n\n const baseSize = /iphone|android.*mobile|windows phone|ipod/i.test(ua)\n ? (base.phone ?? 375)\n : /ipad|android(?!.*mobile)|tablet/i.test(ua)\n ? (base.pad ?? 1100)\n : (base.pc ?? 1366);\n\n const updateFontSize = () => {\n const width = window.innerWidth || document.documentElement.clientWidth;\n document.documentElement.style.fontSize = (width / baseSize) * 100 + 'px';\n };\n\n updateFontSize();\n window.addEventListener('resize', updateFontSize);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function getMedia(options: Options = {}) {\n const isMobile = /iphone|android.*mobile|windows phone|ipod/i.test(ua);\n const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(ua);\n\n return isMobile ? 'phone' : isTablet ? 'pad' : 'pc';\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function setMedia(options: Options = {}) {\n const html = document.documentElement;\n const classList: string[] = [];\n\n // 判断操作系统\n if (/windows/i.test(ua)) {\n classList.push('os-windows');\n } else if (/macintosh|mac os x/i.test(ua)) {\n classList.push('os-macos');\n } else if (/android/i.test(ua)) {\n classList.push('os-android');\n } else if (/iphone|ipad|ipod/i.test(ua)) {\n classList.push('os-ios');\n }\n\n // 判断设备类型\n const media = getMedia();\n if (media === 'pad') {\n classList.push('media-pad');\n } else if (media === 'phone') {\n classList.push('media-phone');\n } else {\n classList.push('media-pc');\n }\n\n // 添加 class 到 <html>\n html.className += ' ' + classList.join(' ');\n}\n\nexport function getEm() {\n const el = document.createElement('div');\n el.style.width = '1em';\n el.style.height = '1em';\n el.style.position = 'absolute';\n document.body.appendChild(el);\n const size = el.getBoundingClientRect().height;\n document.body.removeChild(el);\n return size;\n}\n","import Icon from './src/icon.vue';\nimport { SFCWithInstall, withInstall } from '@touchvue/utils';\n\nexport const ToIcon: SFCWithInstall<typeof Icon> = withInstall(Icon);\n\nexport { Icon };\nexport * from './src/icon.vue';\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AASd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAKb,IAAM,MAAA,IAAA,GAAO,IAAwB,IAAI,CAAA,CAAA;AAGzC,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAM,MAAA,GAAA,GAAgB,MAAM,KAAQ,GAAA,CAAC,SAAS,KAAM,CAAA,KAAA,CAAA,CAAO,IAAI,EAAC,CAAA;AAEhE,MAAI,IAAA,KAAA,CAAM,SAAS,MAAQ,EAAA;AACzB,QAAA,GAAA,CAAI,KAAK,WAAW,CAAA,CAAA;AAAA,OACtB;AAEA,MAAA,IAAI,KAAM,CAAA,IAAA,IAAQ,KAAM,CAAA,IAAA,KAAS,MAAQ,EAAA;AACvC,QAAI,GAAA,CAAA,IAAA,CAAK,CAAQ,KAAA,EAAA,KAAA,CAAM,IAAM,CAAA,CAAA,CAAA,CAAA;AAAA,OAC/B;AAEA,MAAA,IAAI,MAAM,KAAO,EAAA;AACf,QAAI,GAAA,CAAA,IAAA,CAAK,CAAS,MAAA,EAAA,KAAA,CAAM,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,OACjC;AAEA,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAA,GAAA,CAAI,KAAK,SAAS,CAAA,CAAA;AAAA,OACpB;AAEA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAGD,IAAA,SAAS,YAAY,GAAiB,EAAA;AACpC,MAAA,IAAA,CAAK,SAAS,GAAG,CAAA,CAAA;AAAA,KACnB;;wBAhEE,EAAAA,kBAAA;AAAA,QAIO,MAAA;AAAA,QAAA;AAAA,UAJD,OAAKC,cAAA,CAAA,CAAC,SAAkB,EAAA,QAAA,CAAQ,KAAA,CAAA,CAAA;AAAA,UAAG,OAAO,EAAA,WAAA;AAAA;;UAC9CC,kBAAA;AAAA,YAEO,MAAA;AAAA,YAAA;AAAA,qBAFG,EAAA,MAAA;AAAA,cAAJ,GAAI,EAAA,IAAA;AAAA,cAAO,KAAM,EAAA,cAAA;AAAA;;cACrBC,UAAA,CAAa,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACON,MAAA,WAAA,GAAc,CAAmC,IAAA,EAAS,KAAc,KAAA;AACnF,EAAC,IAAA,CAA2B,OAAU,GAAA,CAAC,GAAmB,KAAA;AACxD,IAAW,KAAA,MAAA,IAAA,IAAQ,CAAC,IAAA,EAAM,GAAG,MAAA,CAAO,OAAO,KAAS,IAAA,IAAA,GAAA,KAAA,GAAA,EAAE,CAAC,CAAG,EAAA;AACxD,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAC,IAAA,CAAa,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;;ACbW,SAAU,CAAA,SAAA,CAAU,WAAY;;ACP9B,MAAA,MAAA,GAAsC,YAAY,IAAI;;;;"}
|