@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,290 @@
|
|
|
1
|
+
import { provide, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createCommentVNode, createElementVNode } from 'vue';
|
|
2
|
+
|
|
3
|
+
const withInstall = (main, extra) => {
|
|
4
|
+
main.install = (app) => {
|
|
5
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
6
|
+
app.component(comp.name, comp);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
if (extra) {
|
|
10
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
11
|
+
main[key] = comp;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return main;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
navigator.userAgent.toLowerCase();
|
|
18
|
+
|
|
19
|
+
var _export_sfc = (sfc, props) => {
|
|
20
|
+
const target = sfc.__vccOpts || sfc;
|
|
21
|
+
for (const [key, val] of props) {
|
|
22
|
+
target[key] = val;
|
|
23
|
+
}
|
|
24
|
+
return target;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const _sfc_main$1 = /*@__PURE__*/Object.assign({
|
|
28
|
+
name: 'ToCard',
|
|
29
|
+
}, {
|
|
30
|
+
__name: 'Card',
|
|
31
|
+
props: {
|
|
32
|
+
fillet: { type: String, default: 'none' },
|
|
33
|
+
color: { type: String, default: '' },
|
|
34
|
+
mode: { type: String, default: 'default' },
|
|
35
|
+
padding: { type: [Number, String], default: '' },
|
|
36
|
+
link: Boolean,
|
|
37
|
+
shadow: Boolean,
|
|
38
|
+
checked: Boolean,
|
|
39
|
+
wrap: Boolean,
|
|
40
|
+
type: { type: String, default: '' },
|
|
41
|
+
width: { type: [Number, String], default: '' },
|
|
42
|
+
},
|
|
43
|
+
emits: ['click'],
|
|
44
|
+
setup(__props, { emit: __emit }) {
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
const props = __props;
|
|
49
|
+
|
|
50
|
+
const emits = __emit;
|
|
51
|
+
|
|
52
|
+
provide('toCard', {});
|
|
53
|
+
|
|
54
|
+
const setClass = computed(() => {
|
|
55
|
+
const arr = [];
|
|
56
|
+
if (props.wrap) arr.push('is-wrap');
|
|
57
|
+
if (props.mode) arr.push(`mode-${props.mode}`);
|
|
58
|
+
if (props.color) arr.push(`color-${props.color}`);
|
|
59
|
+
if (props.link) arr.push('is-link');
|
|
60
|
+
if (props.type) arr.push(`type-${props.type}`);
|
|
61
|
+
if (props.checked) arr.push('is-checked');
|
|
62
|
+
if (props.width === 'auto') arr.push('width-auto');
|
|
63
|
+
return arr;
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const setStyle = computed(() => {
|
|
67
|
+
const obj = {};
|
|
68
|
+
if (props.width) {
|
|
69
|
+
obj.width = isNaN(Number(props.width)) ? props.width : `${props.width}em`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const hasUnit = val => /[a-z%]+$/i.test(val);
|
|
73
|
+
if (String(props.padding).trim()) {
|
|
74
|
+
// 分割成各个值
|
|
75
|
+
const padded = String(props.padding)
|
|
76
|
+
.trim()
|
|
77
|
+
.split(/\s+/)
|
|
78
|
+
.map(val => {
|
|
79
|
+
// 如果是数字(或纯数字字符串),或末尾无单位,就加 em
|
|
80
|
+
return hasUnit(val) ? val : `${val}em`;
|
|
81
|
+
})
|
|
82
|
+
.join(' ');
|
|
83
|
+
|
|
84
|
+
obj.padding = padded;
|
|
85
|
+
}
|
|
86
|
+
return obj;
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const setFnStyle = computed(() => {
|
|
90
|
+
const obj = {};
|
|
91
|
+
if (props.padding >= 0 && props.padding !== 1) {
|
|
92
|
+
obj.top = `${props.padding}em`;
|
|
93
|
+
obj.right = `${props.padding}em`;
|
|
94
|
+
}
|
|
95
|
+
return obj;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
function clickHandle(evt) {
|
|
99
|
+
if (props.link) {
|
|
100
|
+
emits('click', evt);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return (_ctx, _cache) => {
|
|
105
|
+
return (openBlock(), createElementBlock("div", {
|
|
106
|
+
class: normalizeClass(["to-card", setClass.value]),
|
|
107
|
+
style: normalizeStyle(setStyle.value),
|
|
108
|
+
onClick: clickHandle
|
|
109
|
+
}, [
|
|
110
|
+
renderSlot(_ctx.$slots, "default"),
|
|
111
|
+
(_ctx.$slots.fn)
|
|
112
|
+
? (openBlock(), createElementBlock("div", {
|
|
113
|
+
key: 0,
|
|
114
|
+
class: "to-card-fn",
|
|
115
|
+
style: normalizeStyle(setFnStyle.value)
|
|
116
|
+
}, [
|
|
117
|
+
renderSlot(_ctx.$slots, "fn")
|
|
118
|
+
], 4 /* STYLE */))
|
|
119
|
+
: createCommentVNode("v-if", true)
|
|
120
|
+
], 6 /* CLASS, STYLE */))
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
});
|
|
125
|
+
var Card = /*#__PURE__*/_export_sfc(_sfc_main$1, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/card/src/Card.vue"]]);
|
|
126
|
+
|
|
127
|
+
const _hoisted_1 = {
|
|
128
|
+
key: 0,
|
|
129
|
+
class: "to-card-title"
|
|
130
|
+
};
|
|
131
|
+
const _hoisted_2 = {
|
|
132
|
+
key: 0,
|
|
133
|
+
class: "to-card-title-main"
|
|
134
|
+
};
|
|
135
|
+
const _hoisted_3 = { class: "to-card-title-text" };
|
|
136
|
+
const _hoisted_4 = {
|
|
137
|
+
key: 1,
|
|
138
|
+
class: "to-card-title-side"
|
|
139
|
+
};
|
|
140
|
+
const _hoisted_5 = { class: "to-card-title-side-text" };
|
|
141
|
+
const _hoisted_6 = {
|
|
142
|
+
key: 1,
|
|
143
|
+
class: "to-card-content"
|
|
144
|
+
};
|
|
145
|
+
const _hoisted_7 = {
|
|
146
|
+
key: 0,
|
|
147
|
+
class: "to-card-content-main"
|
|
148
|
+
};
|
|
149
|
+
const _hoisted_8 = { class: "to-card-content-text" };
|
|
150
|
+
const _hoisted_9 = {
|
|
151
|
+
key: 1,
|
|
152
|
+
class: "to-card-content-side"
|
|
153
|
+
};
|
|
154
|
+
const _hoisted_10 = { class: "to-card-content-side-text" };
|
|
155
|
+
const _hoisted_11 = {
|
|
156
|
+
key: 2,
|
|
157
|
+
class: "to-card-value"
|
|
158
|
+
};
|
|
159
|
+
const _hoisted_12 = { class: "to-card-value-text" };
|
|
160
|
+
const _hoisted_13 = {
|
|
161
|
+
key: 3,
|
|
162
|
+
class: "to-card-label"
|
|
163
|
+
};
|
|
164
|
+
const _hoisted_14 = { class: "to-card-value-text" };
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
const _sfc_main = /*@__PURE__*/Object.assign({
|
|
168
|
+
name: 'ToCardItem',
|
|
169
|
+
}, {
|
|
170
|
+
__name: 'CardItem',
|
|
171
|
+
props: {
|
|
172
|
+
type: { type: String, default: 'side' },
|
|
173
|
+
align: { type: String, default: '' },
|
|
174
|
+
padding: { type: [Number, String], default: 0 },
|
|
175
|
+
width: { type: [Number, String], default: 0 },
|
|
176
|
+
line: Boolean,
|
|
177
|
+
more: Boolean,
|
|
178
|
+
link: Boolean,
|
|
179
|
+
main: Boolean,
|
|
180
|
+
},
|
|
181
|
+
setup(__props) {
|
|
182
|
+
|
|
183
|
+
const props = __props;
|
|
184
|
+
|
|
185
|
+
// const toCard = inject('toCard')
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
const setClass = computed(() => {
|
|
190
|
+
const arr = [];
|
|
191
|
+
if (props.type === 'main' || props.main) arr.push('is-main');
|
|
192
|
+
if (props.type === 'more' || props.more) arr.push('is-more');
|
|
193
|
+
if (props.type === 'link' || props.link) arr.push('is-link');
|
|
194
|
+
if (props.line === 'solid') arr.push('line-solid');
|
|
195
|
+
if (props.align) arr.push(`align-${props.align}`);
|
|
196
|
+
return arr;
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
const setStyle = computed(() => {
|
|
200
|
+
const obj = {};
|
|
201
|
+
|
|
202
|
+
const hasUnit = val => /[a-z%]+$/i.test(val);
|
|
203
|
+
if (String(props.padding).trim()) {
|
|
204
|
+
// 分割成各个值
|
|
205
|
+
const padded = String(props.padding)
|
|
206
|
+
.trim()
|
|
207
|
+
.split(/\s+/)
|
|
208
|
+
.map(val => {
|
|
209
|
+
// 如果是数字(或纯数字字符串),或末尾无单位,就加 em
|
|
210
|
+
return hasUnit(val) ? val : `${val}em`;
|
|
211
|
+
})
|
|
212
|
+
.join(' ');
|
|
213
|
+
|
|
214
|
+
obj.padding = padded;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (props.width) {
|
|
218
|
+
obj.width = props.width + 'em';
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return obj;
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
return (_ctx, _cache) => {
|
|
225
|
+
return (openBlock(), createElementBlock("div", {
|
|
226
|
+
class: normalizeClass(["to-card-item", setClass.value]),
|
|
227
|
+
style: normalizeStyle(setStyle.value)
|
|
228
|
+
}, [
|
|
229
|
+
renderSlot(_ctx.$slots, "default"),
|
|
230
|
+
(_ctx.$slots.title || _ctx.$slots.titleSide)
|
|
231
|
+
? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
232
|
+
(_ctx.$slots.title)
|
|
233
|
+
? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
234
|
+
createElementVNode("span", _hoisted_3, [
|
|
235
|
+
renderSlot(_ctx.$slots, "title")
|
|
236
|
+
])
|
|
237
|
+
]))
|
|
238
|
+
: createCommentVNode("v-if", true),
|
|
239
|
+
(_ctx.$slots.titleSide)
|
|
240
|
+
? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
241
|
+
createElementVNode("span", _hoisted_5, [
|
|
242
|
+
renderSlot(_ctx.$slots, "titleSide")
|
|
243
|
+
])
|
|
244
|
+
]))
|
|
245
|
+
: createCommentVNode("v-if", true)
|
|
246
|
+
]))
|
|
247
|
+
: createCommentVNode("v-if", true),
|
|
248
|
+
(_ctx.$slots.content || _ctx.$slots.contentSide)
|
|
249
|
+
? (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
250
|
+
(_ctx.$slots.content)
|
|
251
|
+
? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
252
|
+
createElementVNode("span", _hoisted_8, [
|
|
253
|
+
renderSlot(_ctx.$slots, "content")
|
|
254
|
+
])
|
|
255
|
+
]))
|
|
256
|
+
: createCommentVNode("v-if", true),
|
|
257
|
+
(_ctx.$slots.contentSide)
|
|
258
|
+
? (openBlock(), createElementBlock("div", _hoisted_9, [
|
|
259
|
+
createElementVNode("span", _hoisted_10, [
|
|
260
|
+
renderSlot(_ctx.$slots, "contentSide")
|
|
261
|
+
])
|
|
262
|
+
]))
|
|
263
|
+
: createCommentVNode("v-if", true)
|
|
264
|
+
]))
|
|
265
|
+
: createCommentVNode("v-if", true),
|
|
266
|
+
(_ctx.$slots.value)
|
|
267
|
+
? (openBlock(), createElementBlock("div", _hoisted_11, [
|
|
268
|
+
createElementVNode("span", _hoisted_12, [
|
|
269
|
+
renderSlot(_ctx.$slots, "value")
|
|
270
|
+
])
|
|
271
|
+
]))
|
|
272
|
+
: createCommentVNode("v-if", true),
|
|
273
|
+
(_ctx.$slots.label)
|
|
274
|
+
? (openBlock(), createElementBlock("div", _hoisted_13, [
|
|
275
|
+
createElementVNode("span", _hoisted_14, [
|
|
276
|
+
renderSlot(_ctx.$slots, "label")
|
|
277
|
+
])
|
|
278
|
+
]))
|
|
279
|
+
: createCommentVNode("v-if", true)
|
|
280
|
+
], 6 /* CLASS, STYLE */))
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
});
|
|
285
|
+
var CardItem = /*#__PURE__*/_export_sfc(_sfc_main, [['__file',"/Users/wangding/WorkSpace/AsiaInfo/projects/前端框架/touch-vue3-ui/packages/components/card/src/CardItem.vue"]]);
|
|
286
|
+
|
|
287
|
+
const ToCard = withInstall(Card, [CardItem]);
|
|
288
|
+
|
|
289
|
+
export { ToCard };
|
|
290
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/card/src/Card.vue","../../../../packages/components/card/src/CardItem.vue","../../../../packages/components/card/index.ts"],"sourcesContent":["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","<template>\n <div class=\"to-card\" :style=\"setStyle\" :class=\"setClass\" @click=\"clickHandle\">\n <slot></slot>\n <div v-if=\"$slots.fn\" class=\"to-card-fn\" :style=\"setFnStyle\">\n <slot name=\"fn\"></slot>\n </div>\n </div>\n</template>\n<script setup>\nimport { computed, provide } from 'vue';\n\ndefineOptions({\n name: 'ToCard',\n});\n\nconst props = defineProps({\n fillet: { type: String, default: 'none' },\n color: { type: String, default: '' },\n mode: { type: String, default: 'default' },\n padding: { type: [Number, String], default: '' },\n link: Boolean,\n shadow: Boolean,\n checked: Boolean,\n wrap: Boolean,\n type: { type: String, default: '' },\n width: { type: [Number, String], default: '' },\n});\n\nconst emits = defineEmits(['click']);\n\nprovide('toCard', {});\n\nconst setClass = computed(() => {\n const arr = [];\n if (props.wrap) arr.push('is-wrap');\n if (props.mode) arr.push(`mode-${props.mode}`);\n if (props.color) arr.push(`color-${props.color}`);\n if (props.link) arr.push('is-link');\n if (props.type) arr.push(`type-${props.type}`);\n if (props.checked) arr.push('is-checked');\n if (props.width === 'auto') arr.push('width-auto');\n return arr;\n});\n\nconst setStyle = computed(() => {\n const obj = {};\n if (props.width) {\n obj.width = isNaN(Number(props.width)) ? props.width : `${props.width}em`;\n }\n\n const hasUnit = val => /[a-z%]+$/i.test(val);\n if (String(props.padding).trim()) {\n // 分割成各个值\n const padded = String(props.padding)\n .trim()\n .split(/\\s+/)\n .map(val => {\n // 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n return hasUnit(val) ? val : `${val}em`;\n })\n .join(' ');\n\n obj.padding = padded;\n }\n return obj;\n});\n\nconst setFnStyle = computed(() => {\n const obj = {};\n if (props.padding >= 0 && props.padding !== 1) {\n obj.top = `${props.padding}em`;\n obj.right = `${props.padding}em`;\n }\n return obj;\n});\n\nfunction clickHandle(evt) {\n if (props.link) {\n emits('click', evt);\n }\n}\n</script>\n","<template>\n <div class=\"to-card-item\" :class=\"setClass\" :style=\"setStyle\">\n <slot></slot>\n <div v-if=\"$slots.title || $slots.titleSide\" class=\"to-card-title\">\n <div v-if=\"$slots.title\" class=\"to-card-title-main\">\n <span class=\"to-card-title-text\">\n <slot name=\"title\" />\n </span>\n </div>\n <div v-if=\"$slots.titleSide\" class=\"to-card-title-side\">\n <span class=\"to-card-title-side-text\">\n <slot name=\"titleSide\" />\n </span>\n </div>\n </div>\n <div v-if=\"$slots.content || $slots.contentSide\" class=\"to-card-content\">\n <div v-if=\"$slots.content\" class=\"to-card-content-main\">\n <span class=\"to-card-content-text\">\n <slot name=\"content\" />\n </span>\n </div>\n <div v-if=\"$slots.contentSide\" class=\"to-card-content-side\">\n <span class=\"to-card-content-side-text\">\n <slot name=\"contentSide\" />\n </span>\n </div>\n </div>\n <div v-if=\"$slots.value\" class=\"to-card-value\">\n <span class=\"to-card-value-text\">\n <slot name=\"value\" />\n </span>\n </div>\n <div v-if=\"$slots.label\" class=\"to-card-label\">\n <span class=\"to-card-value-text\">\n <slot name=\"label\" />\n </span>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\n\nconst props = defineProps({\n type: { type: String, default: 'side' },\n align: { type: String, default: '' },\n padding: { type: [Number, String], default: 0 },\n width: { type: [Number, String], default: 0 },\n line: Boolean,\n more: Boolean,\n link: Boolean,\n main: Boolean,\n});\n\n// const toCard = inject('toCard')\n\ndefineOptions({\n name: 'ToCardItem',\n});\n\nconst setClass = computed(() => {\n const arr = [];\n if (props.type === 'main' || props.main) arr.push('is-main');\n if (props.type === 'more' || props.more) arr.push('is-more');\n if (props.type === 'link' || props.link) arr.push('is-link');\n if (props.line === 'solid') arr.push('line-solid');\n if (props.align) arr.push(`align-${props.align}`);\n return arr;\n});\n\nconst setStyle = computed(() => {\n const obj = {};\n\n const hasUnit = val => /[a-z%]+$/i.test(val);\n if (String(props.padding).trim()) {\n // 分割成各个值\n const padded = String(props.padding)\n .trim()\n .split(/\\s+/)\n .map(val => {\n // 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n return hasUnit(val) ? val : `${val}em`;\n })\n .join(' ');\n\n obj.padding = padded;\n }\n\n if (props.width) {\n obj.width = props.width + 'em';\n }\n\n return obj;\n});\n</script>\n","import { withInstall } from '@touchvue/utils';\nimport Card from './src/Card.vue';\nimport CardItem from './src/CardItem.vue';\n\nexport const ToCard = withInstall(Card, [CardItem]);\n\nexport * from './src/Card.vue';\nexport * from './src/CardItem.vue';\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot","$slots","_openBlock","_createElementVNode"],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, withModifiers, createElementVNode, toDisplayString, createCommentVNode } from 'vue';
|
|
2
|
+
|
|
3
|
+
const withInstall = (main, extra) => {
|
|
4
|
+
main.install = (app) => {
|
|
5
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
6
|
+
app.component(comp.name, comp);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
if (extra) {
|
|
10
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
11
|
+
main[key] = comp;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return main;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
navigator.userAgent.toLowerCase();
|
|
18
|
+
|
|
19
|
+
const _hoisted_1 = {
|
|
20
|
+
key: 0,
|
|
21
|
+
class: "to-checkbox-label"
|
|
22
|
+
};
|
|
23
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
24
|
+
...{
|
|
25
|
+
name: "ToCheckbox"
|
|
26
|
+
},
|
|
27
|
+
__name: "Checkbox",
|
|
28
|
+
props: {
|
|
29
|
+
mode: { type: String, required: false, default: "default" },
|
|
30
|
+
label: { type: String, required: false, default: "" },
|
|
31
|
+
value: { type: Boolean, required: false }
|
|
32
|
+
},
|
|
33
|
+
setup(__props) {
|
|
34
|
+
const props = __props;
|
|
35
|
+
let checked = ref(false);
|
|
36
|
+
const setStyle = computed(() => {
|
|
37
|
+
const obj = {};
|
|
38
|
+
return obj;
|
|
39
|
+
});
|
|
40
|
+
const setClass = computed(() => {
|
|
41
|
+
let arr = [];
|
|
42
|
+
if (props.mode) {
|
|
43
|
+
arr.push(`mode-${props.mode}`);
|
|
44
|
+
}
|
|
45
|
+
if (checked.value) {
|
|
46
|
+
arr.push(`is-checked`);
|
|
47
|
+
}
|
|
48
|
+
return arr;
|
|
49
|
+
});
|
|
50
|
+
function toggle() {
|
|
51
|
+
checked.value = !checked.value;
|
|
52
|
+
}
|
|
53
|
+
return (_ctx, _cache) => {
|
|
54
|
+
return openBlock(), createElementBlock(
|
|
55
|
+
"div",
|
|
56
|
+
{
|
|
57
|
+
class: normalizeClass(["to-checkbox", setClass.value]),
|
|
58
|
+
style: normalizeStyle(setStyle.value),
|
|
59
|
+
onClick: withModifiers(toggle, ["stop"])
|
|
60
|
+
},
|
|
61
|
+
[
|
|
62
|
+
_cache[0] || (_cache[0] = createElementVNode(
|
|
63
|
+
"div",
|
|
64
|
+
{ class: "to-checkbox-box" },
|
|
65
|
+
null,
|
|
66
|
+
-1
|
|
67
|
+
/* CACHED */
|
|
68
|
+
)),
|
|
69
|
+
_ctx.label ? (openBlock(), createElementBlock(
|
|
70
|
+
"div",
|
|
71
|
+
_hoisted_1,
|
|
72
|
+
toDisplayString(_ctx.label),
|
|
73
|
+
1
|
|
74
|
+
/* TEXT */
|
|
75
|
+
)) : createCommentVNode("v-if", true)
|
|
76
|
+
],
|
|
77
|
+
6
|
|
78
|
+
/* CLASS, STYLE */
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
var _export_sfc = (sfc, props) => {
|
|
85
|
+
const target = sfc.__vccOpts || sfc;
|
|
86
|
+
for (const [key, val] of props) {
|
|
87
|
+
target[key] = val;
|
|
88
|
+
}
|
|
89
|
+
return target;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
var Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/checkbox/src/Checkbox.vue"]]);
|
|
93
|
+
|
|
94
|
+
const ToCheckbox = withInstall(Checkbox);
|
|
95
|
+
|
|
96
|
+
export { ToCheckbox };
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/checkbox/src/Checkbox.vue","../../../../packages/components/checkbox/index.ts"],"sourcesContent":["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","<template>\n <div class=\"to-checkbox\" :class=\"setClass\" :style=\"setStyle\" @click.stop=\"toggle\">\n <div class=\"to-checkbox-box\"></div>\n <div v-if=\"label\" class=\"to-checkbox-label\">{{ label }}</div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, computed, defineProps } from 'vue';\n\ndefineOptions({\n name: 'ToCheckbox',\n});\n\ninterface Props {\n mode?: string;\n label?: string;\n value?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'default',\n label: '',\n});\n\nlet checked = ref<boolean>(false);\n\nconst setStyle = computed(() => {\n const obj = {};\n return obj;\n});\n\nconst setClass = computed(() => {\n let arr: string[] = [];\n if (props.mode) {\n arr.push(`mode-${props.mode}`);\n }\n if (checked.value) {\n arr.push(`is-checked`);\n }\n return arr;\n});\n\nfunction toggle() {\n checked.value = !checked.value;\n}\n</script>\n","import { withInstall, SFCWithInstall } from '@touchvue/utils';\nimport Checkbox from './src/Checkbox.vue';\n\nexport const ToCheckbox: SFCWithInstall<typeof Checkbox> = withInstall(Checkbox);\nexport * from './src/Checkbox.vue';\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","label","_toDisplayString"],"mappings":";;AAUa,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;;;;;;;;;;;;;;;;;ACS3C,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAKd,IAAI,IAAA,OAAA,GAAU,IAAa,KAAK,CAAA,CAAA;AAEhC,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,MAAM,MAAM,EAAC,CAAA;AACb,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,IAAI,MAAgB,EAAC,CAAA;AACrB,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAI,GAAA,CAAA,IAAA,CAAK,CAAQ,KAAA,EAAA,KAAA,CAAM,IAAM,CAAA,CAAA,CAAA,CAAA;AAAA,OAC/B;AACA,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAA,GAAA,CAAI,KAAK,CAAY,UAAA,CAAA,CAAA,CAAA;AAAA,OACvB;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,SAAS,MAAS,GAAA;AAChB,MAAQ,OAAA,CAAA,KAAA,GAAQ,CAAC,OAAQ,CAAA,KAAA,CAAA;AAAA,KAC3B;;wBA3CE,EAAAA,kBAAA;AAAA,QAGM,KAAA;AAAA,QAAA;AAAA,UAHD,OAAKC,cAAA,CAAA,CAAC,aAAsB,EAAA,QAAA,CAAQ,KAAA,CAAA,CAAA;AAAA,UAAG,KAAA,gBAAO,CAAA,QAAA,CAAQ,KAAA,CAAA;AAAA,UAAG,uBAAY,MAAM,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;;iCAC9E,GAAAC,kBAAA;AAAA,YAAmC,KAAA;AAAA,YAAA,EAA9B,OAAM,iBAAiB,EAAA;AAAA,YAAA,IAAA;AAAA,YAAA,CAAA,CAAA;AAAA;AAAA,WAAA,CAAA;AAAA,UACjBC,IAAAA,CAAK,oBAAhB,EAAAH,kBAAA;AAAA,YAA6D,KAAA;AAAA,YAA7D,UAAA;AAAA,YAA6DI,eAAA,CAAdD,KAAK,KAAA,CAAA;AAAA,YAAA,CAAA;AAAA;AAAA,WAAA;;;;;;;;;;;;;;;;;;;ACA3C,MAAA,UAAA,GAA8C,YAAY,QAAQ;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { defineComponent, openBlock, createElementBlock } from 'vue';
|
|
2
|
+
|
|
3
|
+
const withInstall = (main, extra) => {
|
|
4
|
+
main.install = (app) => {
|
|
5
|
+
for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
|
|
6
|
+
app.component(comp.name, comp);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
if (extra) {
|
|
10
|
+
for (const [key, comp] of Object.entries(extra)) {
|
|
11
|
+
main[key] = comp;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return main;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
navigator.userAgent.toLowerCase();
|
|
18
|
+
|
|
19
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
20
|
+
...{
|
|
21
|
+
name: "ToDatepicker"
|
|
22
|
+
},
|
|
23
|
+
__name: "DatePicker",
|
|
24
|
+
setup(__props) {
|
|
25
|
+
return (_ctx, _cache) => {
|
|
26
|
+
return openBlock(), createElementBlock("div");
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
var _export_sfc = (sfc, props) => {
|
|
32
|
+
const target = sfc.__vccOpts || sfc;
|
|
33
|
+
for (const [key, val] of props) {
|
|
34
|
+
target[key] = val;
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var DatePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/wangding/WorkSpace/AsiaInfo/projects/\u524D\u7AEF\u6846\u67B6/touch-vue3-ui/packages/components/datepicker/src/DatePicker.vue"]]);
|
|
40
|
+
|
|
41
|
+
const ToDatepikcer = withInstall(DatePicker);
|
|
42
|
+
|
|
43
|
+
export { ToDatepikcer };
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/utils/types.ts","../../../../packages/utils/ratio.ts","../../../../packages/components/datepicker/src/DatePicker.vue","../../../../packages/components/datepicker/index.ts"],"sourcesContent":["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","<template>\n <div></div>\n</template>\n<script setup lang=\"ts\">\ndefineOptions({\n name: 'ToDatepicker',\n});\n</script>\n","import { withInstall, SFCWithInstall } from '@touchvue/utils';\nimport DatePicker from './src/DatePicker.vue';\n\nexport const ToDatepikcer: SFCWithInstall<typeof DatePicker> = withInstall(DatePicker);\nexport * from './src/DatePicker.vue';\n"],"names":["_createElementBlock"],"mappings":";;AAUa,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;;;;;;;;;wBCTzC,EAAAA,kBAAA,CAAW,KAAA,CAAA,CAAA;AAAA;;;;;;;;;;;;;;ACEA,MAAA,YAAA,GAAkD,YAAY,UAAU;;;;"}
|