y-design-ssr 0.2.0 → 0.2.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.
Files changed (119) hide show
  1. package/libs/button/index.css +579 -1
  2. package/libs/button/index.mjs +111 -66
  3. package/libs/button/index.umd.js +203 -2
  4. package/libs/cell/index.css +1077 -1
  5. package/libs/cell/index.mjs +167 -104
  6. package/libs/cell/index.umd.js +300 -2
  7. package/libs/checkbox/index.css +1053 -1
  8. package/libs/checkbox/index.mjs +242 -127
  9. package/libs/checkbox/index.umd.js +369 -2
  10. package/libs/checkboxGroup/index.css +422 -1
  11. package/libs/checkboxGroup/index.mjs +173 -87
  12. package/libs/checkboxGroup/index.umd.js +265 -2
  13. package/libs/col/index.css +615 -1
  14. package/libs/col/index.mjs +246 -81
  15. package/libs/col/index.umd.js +305 -2
  16. package/libs/countdown/index.css +417 -1
  17. package/libs/countdown/index.mjs +179 -71
  18. package/libs/countdown/index.umd.js +231 -2
  19. package/libs/dialog/index.css +1405 -1
  20. package/libs/dialog/index.mjs +646 -476
  21. package/libs/dialog/index.umd.js +1128 -2
  22. package/libs/empty/index.css +457 -1
  23. package/libs/empty/index.mjs +91 -44
  24. package/libs/empty/index.umd.js +139 -2
  25. package/libs/form/index.css +477 -1
  26. package/libs/form/index.mjs +226 -126
  27. package/libs/form/index.umd.js +319 -2
  28. package/libs/formItem/index.css +477 -1
  29. package/libs/formItem/index.mjs +276 -126
  30. package/libs/formItem/index.umd.js +372 -2
  31. package/libs/icon/index.css +982 -1
  32. package/libs/icon/index.mjs +107 -58
  33. package/libs/icon/index.umd.js +186 -2
  34. package/libs/index.css +2902 -1
  35. package/libs/index.mjs +3785 -2344
  36. package/libs/index.umd.js +5509 -2
  37. package/libs/input/index.css +483 -1
  38. package/libs/input/index.mjs +183 -92
  39. package/libs/input/index.umd.js +274 -2
  40. package/libs/layout/index.css +684 -1
  41. package/libs/layout/index.mjs +230 -130
  42. package/libs/layout/index.umd.js +318 -2
  43. package/libs/list/index.css +440 -1
  44. package/libs/list/index.mjs +388 -207
  45. package/libs/list/index.umd.js +571 -2
  46. package/libs/loading/index.css +548 -1
  47. package/libs/loading/index.mjs +196 -118
  48. package/libs/loading/index.umd.js +321 -2
  49. package/libs/mask/index.css +426 -1
  50. package/libs/mask/index.mjs +131 -70
  51. package/libs/mask/index.umd.js +201 -2
  52. package/libs/popup/index.css +465 -1
  53. package/libs/popup/index.mjs +210 -134
  54. package/libs/popup/index.umd.js +358 -2
  55. package/libs/progress/index.css +488 -1
  56. package/libs/progress/index.mjs +200 -128
  57. package/libs/progress/index.umd.js +322 -2
  58. package/libs/pullrefresh/index.css +441 -1
  59. package/libs/pullrefresh/index.mjs +241 -111
  60. package/libs/pullrefresh/index.umd.js +302 -2
  61. package/libs/row/index.css +485 -1
  62. package/libs/row/index.mjs +181 -89
  63. package/libs/row/index.umd.js +237 -2
  64. package/libs/slider/index.css +558 -1
  65. package/libs/slider/index.mjs +356 -160
  66. package/libs/slider/index.umd.js +453 -2
  67. package/libs/stepper/index.css +489 -1
  68. package/libs/stepper/index.mjs +181 -101
  69. package/libs/stepper/index.umd.js +269 -2
  70. package/libs/swipe/index.css +506 -1
  71. package/libs/swipe/index.mjs +542 -259
  72. package/libs/swipe/index.umd.js +703 -2
  73. package/libs/swipeItem/index.css +424 -1
  74. package/libs/swipeItem/index.mjs +111 -52
  75. package/libs/swipeItem/index.umd.js +154 -2
  76. package/libs/switch/index.css +472 -1
  77. package/libs/switch/index.mjs +121 -62
  78. package/libs/switch/index.umd.js +200 -2
  79. package/libs/tab/index.mjs +131 -68
  80. package/libs/tab/index.umd.js +190 -1
  81. package/libs/tabs/index.css +514 -1
  82. package/libs/tabs/index.mjs +751 -410
  83. package/libs/tabs/index.umd.js +1020 -2
  84. package/libs/toast/index.css +1050 -1
  85. package/libs/toast/index.mjs +183 -114
  86. package/libs/toast/index.umd.js +306 -2
  87. package/libs/tooltip/index.css +514 -1
  88. package/libs/tooltip/index.mjs +293 -155
  89. package/libs/tooltip/index.umd.js +416 -2
  90. package/package.json +5 -4
  91. package/libs/button/package.json +0 -5
  92. package/libs/cell/package.json +0 -5
  93. package/libs/checkbox/package.json +0 -5
  94. package/libs/checkboxGroup/package.json +0 -5
  95. package/libs/col/package.json +0 -5
  96. package/libs/countdown/package.json +0 -5
  97. package/libs/dialog/package.json +0 -5
  98. package/libs/empty/package.json +0 -5
  99. package/libs/form/package.json +0 -5
  100. package/libs/formItem/package.json +0 -5
  101. package/libs/icon/package.json +0 -5
  102. package/libs/input/package.json +0 -5
  103. package/libs/layout/package.json +0 -5
  104. package/libs/list/package.json +0 -5
  105. package/libs/loading/package.json +0 -5
  106. package/libs/mask/package.json +0 -5
  107. package/libs/popup/package.json +0 -5
  108. package/libs/progress/package.json +0 -5
  109. package/libs/pullrefresh/package.json +0 -5
  110. package/libs/row/package.json +0 -5
  111. package/libs/slider/package.json +0 -5
  112. package/libs/stepper/package.json +0 -5
  113. package/libs/swipe/package.json +0 -5
  114. package/libs/swipeItem/package.json +0 -5
  115. package/libs/switch/package.json +0 -5
  116. package/libs/tab/package.json +0 -5
  117. package/libs/tabs/package.json +0 -5
  118. package/libs/toast/package.json +0 -5
  119. package/libs/tooltip/package.json +0 -5
@@ -1,11 +1,40 @@
1
- import { ref as x, reactive as w, getCurrentInstance as V, provide as ce, isVNode as ue, inject as fe, onUnmounted as de, computed as p, defineComponent as J, createVNode as S, watch as ve, onMounted as me, nextTick as he, onBeforeUnmount as ge } from "vue";
2
- const I = (t, o) => o ? typeof o == "string" ? ` ${t}--${o}` : Array.isArray(o) ? o.reduce((s, n) => s + I(t, n), "") : Object.keys(o).reduce(
3
- (s, n) => s + (o[n] ? I(t, n) : ""),
4
- ""
5
- ) : "", ye = (t) => (o, s) => {
6
- let n = o, d = s;
7
- return n && typeof n != "string" && (d = n, n = ""), n = n ? `${t}__${n}` : t, `${n}${I(n, d)}`;
8
- }, we = () => (t, o) => o ? `${I(`y-${t}`, o)}` : `y-${t}`, pe = {
1
+ import { ref, reactive, getCurrentInstance, provide, isVNode, inject, onUnmounted, computed, defineComponent, createVNode, watch, onMounted, nextTick, onBeforeUnmount } from "vue";
2
+ const getMods = (el, mods) => {
3
+ if (!mods) {
4
+ return "";
5
+ }
6
+ if (typeof mods === "string") {
7
+ return ` ${el}--${mods}`;
8
+ }
9
+ if (Array.isArray(mods)) {
10
+ return mods.reduce((acc, cur) => acc + getMods(el, cur), "");
11
+ }
12
+ return Object.keys(mods).reduce(
13
+ (acc, cur) => acc + (mods[cur] ? getMods(el, cur) : ""),
14
+ ""
15
+ );
16
+ };
17
+ const createBEM = (block) => {
18
+ return (el, mods) => {
19
+ let _el = el;
20
+ let _mods = mods;
21
+ if (_el && typeof _el !== "string") {
22
+ _mods = _el;
23
+ _el = "";
24
+ }
25
+ _el = _el ? `${block}__${_el}` : block;
26
+ return `${_el}${getMods(_el, _mods)}`;
27
+ };
28
+ };
29
+ const createGlobalBem = () => {
30
+ return (el, mods) => {
31
+ if (!mods) {
32
+ return `y-${el}`;
33
+ }
34
+ return `${getMods(`y-${el}`, mods)}`;
35
+ };
36
+ };
37
+ const defaultLang = {
9
38
  "pull-refresh": {
10
39
  pulling: "下拉刷新...",
11
40
  loosing: "释放刷新...",
@@ -17,57 +46,94 @@ const I = (t, o) => o ? typeof o == "string" ? ` ${t}--${o}` : Array.isArray(o)
17
46
  validateMessage: "请输入正确内容"
18
47
  }
19
48
  };
20
- x("zh-CN");
21
- w({
22
- "zh-CN": pe
49
+ ref("zh-CN");
50
+ reactive({
51
+ "zh-CN": defaultLang
23
52
  });
24
- const Q = (t) => {
25
- const o = `y-${t}`;
26
- return [o, ye(o), we()];
27
- }, q = (t, o) => typeof t == "string" && t.includes("%") && t.includes("%") ? o * Number(t.replace(/%/g, "")) / 100 : Number(t), be = (t) => {
28
- const o = [], s = (n) => {
29
- Array.isArray(n) && n.forEach((d) => {
30
- var c;
31
- ue(d) && (o.push(d), (c = d.component) != null && c.subTree && s(d.component.subTree.children), d.children && s(d.children));
53
+ const createNamespace = (name2) => {
54
+ const prefixedName = `y-${name2}`;
55
+ return [prefixedName, createBEM(prefixedName), createGlobalBem()];
56
+ };
57
+ const parsePercent = (val, baseNumber) => {
58
+ if (typeof val === "string" && val.includes("%")) {
59
+ if (!val.includes("%"))
60
+ return Number(val);
61
+ return baseNumber * Number(val.replace(/%/g, "")) / 100;
62
+ }
63
+ return Number(val);
64
+ };
65
+ const filterChildren = (children) => {
66
+ const vnodes = [];
67
+ const _filterChildren = (childrens) => {
68
+ if (Array.isArray(childrens)) {
69
+ childrens.forEach((child) => {
70
+ var _a;
71
+ if (isVNode(child)) {
72
+ vnodes.push(child);
73
+ if ((_a = child.component) == null ? void 0 : _a.subTree) {
74
+ _filterChildren(child.component.subTree.children);
75
+ }
76
+ if (child.children) {
77
+ _filterChildren(child.children);
78
+ }
79
+ }
80
+ });
81
+ }
82
+ };
83
+ _filterChildren(children);
84
+ return vnodes;
85
+ };
86
+ const sortChildren = (childrens, instance) => {
87
+ const vnodes = filterChildren(instance.subTree.children);
88
+ childrens.sort((a, b) => vnodes.indexOf(a.vnode) - vnodes.indexOf(b.vnode));
89
+ };
90
+ const setRelation = (key) => {
91
+ const instance = getCurrentInstance();
92
+ const childrens = reactive([]);
93
+ const initProvide = (value) => {
94
+ const addChild = (child) => {
95
+ if (child.proxy) {
96
+ childrens.push(child);
97
+ instance && sortChildren(childrens, instance);
98
+ }
99
+ };
100
+ const removeChild = (child) => {
101
+ const index = childrens.indexOf(child);
102
+ childrens.splice(index, 1);
103
+ };
104
+ provide(key, {
105
+ addChild,
106
+ removeChild,
107
+ childrens,
108
+ ...value
32
109
  });
33
110
  };
34
- return s(t), o;
35
- }, Se = (t, o) => {
36
- const s = be(o.subTree.children);
37
- t.sort((n, d) => s.indexOf(n.vnode) - s.indexOf(d.vnode));
38
- }, Ee = (t) => {
39
- const o = V(), s = w([]);
40
111
  return {
41
- childrens: s,
42
- initProvide: (d) => {
43
- ce(t, {
44
- addChild: (r) => {
45
- r.proxy && (s.push(r), o && Se(s, o));
46
- },
47
- removeChild: (r) => {
48
- const l = s.indexOf(r);
49
- s.splice(l, 1);
50
- },
51
- childrens: s,
52
- ...d
53
- });
54
- }
112
+ childrens,
113
+ initProvide
55
114
  };
56
- }, ze = (t) => {
57
- const o = fe(t, null), s = V();
58
- if (o && s) {
59
- const { childrens: n, addChild: d, removeChild: c } = o;
60
- return d(s), de(() => c(s)), {
61
- index: p(() => n.indexOf(s)),
62
- parent: o
115
+ };
116
+ const useRelation = (key) => {
117
+ const parent = inject(key, null);
118
+ const currentInstance = getCurrentInstance();
119
+ if (parent && currentInstance) {
120
+ const { childrens, addChild, removeChild } = parent;
121
+ addChild(currentInstance);
122
+ onUnmounted(() => removeChild(currentInstance));
123
+ const index = computed(() => childrens.indexOf(currentInstance));
124
+ return {
125
+ index,
126
+ parent
63
127
  };
64
128
  }
65
129
  return {
66
130
  parent: null,
67
- index: x(-1)
131
+ index: ref(-1)
68
132
  };
69
- }, [Ne, xe] = Q("swipe-item"), F = /* @__PURE__ */ J({
70
- name: Ne,
133
+ };
134
+ const [name$1, bem$1] = createNamespace("swipe-item");
135
+ const YSwipeItem = /* @__PURE__ */ defineComponent({
136
+ name: name$1,
71
137
  props: {
72
138
  clonenNode: {
73
139
  type: Object,
@@ -78,39 +144,66 @@ const Q = (t) => {
78
144
  default: -1
79
145
  }
80
146
  },
81
- setup(t, {
82
- slots: o
147
+ setup(props, {
148
+ slots
83
149
  }) {
84
- const s = V(), {
85
- parent: n
86
- } = ze(ee);
87
- !t.clonenNode && s && (n == null || n.children.push(s));
88
- const d = p(() => t.clonenNode ? t.index : n == null ? void 0 : n.children.findIndex((u) => u.proxy === (s == null ? void 0 : s.proxy))), c = p(() => {
89
- const u = `${(n == null ? void 0 : n.itemDetail.size) || 0}px`;
90
- let r = "auto";
91
- const l = `${(n == null ? void 0 : n.itemDetail.space) || 0}px`;
92
- return n != null && n.props.autoHeight && (n == null ? void 0 : n.activeIndex) !== d.value && (r = "0"), n != null && n.props.vertical ? {
93
- height: u,
94
- width: r,
95
- marginBottom: l
96
- } : {
97
- width: u,
98
- height: r,
99
- marginRight: l
150
+ const instance = getCurrentInstance();
151
+ const {
152
+ parent
153
+ } = useRelation(SWIPE_PROVIDE_KEY);
154
+ if (!props.clonenNode && instance) {
155
+ parent == null ? void 0 : parent.children.push(instance);
156
+ }
157
+ const index = computed(() => {
158
+ if (props.clonenNode) {
159
+ return props.index;
160
+ }
161
+ return parent == null ? void 0 : parent.children.findIndex((item) => item.proxy === (instance == null ? void 0 : instance.proxy));
162
+ });
163
+ const style2 = computed(() => {
164
+ const width = `${(parent == null ? void 0 : parent.itemDetail.size) || 0}px`;
165
+ let height = "auto";
166
+ const spacing = `${(parent == null ? void 0 : parent.itemDetail.space) || 0}px`;
167
+ if ((parent == null ? void 0 : parent.props.autoHeight) && (parent == null ? void 0 : parent.activeIndex) !== index.value) {
168
+ height = "0";
169
+ }
170
+ if (parent == null ? void 0 : parent.props.vertical) {
171
+ return {
172
+ height: width,
173
+ width: height,
174
+ marginBottom: spacing
175
+ };
176
+ }
177
+ return {
178
+ width,
179
+ height,
180
+ marginRight: spacing
100
181
  };
101
182
  });
102
183
  return () => {
103
- var r, l;
104
- const u = ((r = n == null ? void 0 : n.itemShowedList) == null ? void 0 : r.list[d.value || 0]) || !1;
105
- return S("div", {
106
- class: xe(),
107
- style: c.value
108
- }, [u ? t.clonenNode || ((l = o.default) == null ? void 0 : l.call(o)) : null]);
184
+ var _a, _b;
185
+ const isShow = ((_a = parent == null ? void 0 : parent.itemShowedList) == null ? void 0 : _a.list[index.value || 0]) || false;
186
+ return createVNode("div", {
187
+ "class": bem$1(),
188
+ "style": style2.value
189
+ }, [isShow ? props.clonenNode || ((_b = slots.default) == null ? void 0 : _b.call(slots)) : null]);
109
190
  };
110
191
  }
111
192
  });
112
- var P = /* @__PURE__ */ ((t) => (t.left = "left", t.top = "top", t.bottom = "bottom", t.right = "right", t))(P || {}), D = /* @__PURE__ */ ((t) => (t.start = "start", t.center = "center", t.end = "end", t))(D || {});
113
- const Ce = {
193
+ var Position = /* @__PURE__ */ ((Position2) => {
194
+ Position2["left"] = "left";
195
+ Position2["top"] = "top";
196
+ Position2["bottom"] = "bottom";
197
+ Position2["right"] = "right";
198
+ return Position2;
199
+ })(Position || {});
200
+ var Align = /* @__PURE__ */ ((Align2) => {
201
+ Align2["start"] = "start";
202
+ Align2["center"] = "center";
203
+ Align2["end"] = "end";
204
+ return Align2;
205
+ })(Align || {});
206
+ const swipeProps = {
114
207
  autoplayTime: {
115
208
  type: Number,
116
209
  default: 0
@@ -125,11 +218,11 @@ const Ce = {
125
218
  },
126
219
  loop: {
127
220
  type: Boolean,
128
- default: !0
221
+ default: true
129
222
  },
130
223
  dots: {
131
224
  type: Boolean,
132
- default: !0
225
+ default: true
133
226
  },
134
227
  dotsPosition: {
135
228
  type: String,
@@ -141,15 +234,15 @@ const Ce = {
141
234
  },
142
235
  lazy: {
143
236
  type: Boolean,
144
- default: !1
237
+ default: false
145
238
  },
146
239
  vertical: {
147
240
  type: Boolean,
148
- default: !1
241
+ default: false
149
242
  },
150
243
  autoHeight: {
151
244
  type: Boolean,
152
- default: !1
245
+ default: false
153
246
  },
154
247
  itemSize: {
155
248
  type: [Number, String],
@@ -165,144 +258,253 @@ const Ce = {
165
258
  },
166
259
  touchable: {
167
260
  type: Boolean,
168
- default: !0
261
+ default: true
169
262
  },
170
263
  isFollowHand: {
171
264
  type: Boolean,
172
- default: !0
265
+ default: true
173
266
  },
174
267
  align: {
175
268
  type: String,
176
269
  default: "center"
177
270
  }
178
- }, [Z, O] = Q("swipe"), ee = Z, R = /* @__PURE__ */ J({
179
- name: Z,
271
+ };
272
+ const [name, bem] = createNamespace("swipe");
273
+ const SWIPE_PROVIDE_KEY = name;
274
+ const Swipe = /* @__PURE__ */ defineComponent({
275
+ name,
180
276
  components: {
181
- YSwipeItem: F
277
+ YSwipeItem
182
278
  },
183
- props: Ce,
184
- setup(t, {
185
- slots: o,
186
- emit: s,
187
- expose: n
279
+ props: swipeProps,
280
+ setup(props, {
281
+ slots,
282
+ emit,
283
+ expose
188
284
  }) {
189
285
  const {
190
- initProvide: d
191
- } = Ee(ee), c = w([]), u = x(Number(t.initIndex)), r = w({
286
+ initProvide
287
+ } = setRelation(SWIPE_PROVIDE_KEY);
288
+ const itemList = reactive([]);
289
+ const activeIndex = ref(Number(props.initIndex));
290
+ const itemDetail = reactive({
192
291
  // 元素尺寸
193
292
  size: 0,
194
293
  // 间距
195
294
  space: 0,
196
295
  // 元素宽度比swipe小,占满整个视窗
197
- isFillViewport: !1
198
- }), l = w({
296
+ isFillViewport: false
297
+ });
298
+ const trackDetail = reactive({
199
299
  // 偏移量
200
300
  offset: 0,
201
301
  // 视窗大小
202
302
  viewportSize: 0,
203
303
  // 重复节点个数
204
304
  cloneNodeCount: 0
205
- }), b = x(), $ = x(), A = () => {
206
- const e = c.length, i = [];
207
- for (let f = 0; f < e; f++)
208
- i.push(!t.lazy);
209
- return i;
210
- }, _ = () => {
211
- if (!t.lazy)
305
+ });
306
+ const swipeRef = ref();
307
+ const swipeTrackRef = ref();
308
+ const getBooleanList = () => {
309
+ const l = itemList.length;
310
+ const result = [];
311
+ for (let i = 0; i < l; i++) {
312
+ result.push(!props.lazy);
313
+ }
314
+ return result;
315
+ };
316
+ const checkItemShowed = () => {
317
+ if (!props.lazy)
212
318
  return;
213
- const e = r.size + r.space, i = c.length * e;
214
- let f = -(l.offset + a.offset) - l.cloneNodeCount * e;
215
- f < 0 && (f += i);
216
- const m = f + l.viewportSize;
217
- for (let v = 0; v < c.length; v++)
218
- if (!C.list[v]) {
219
- const h = e * v, g = h + r.size;
220
- (h >= f && h < m || g > f && g < m || h < f && g > m) && (C.list[v] = !0);
319
+ const itemSizeSpace = itemDetail.size + itemDetail.space;
320
+ const trackSize = itemList.length * itemSizeSpace;
321
+ let viewportLeft = -(trackDetail.offset + dragDetail.offset) - trackDetail.cloneNodeCount * itemSizeSpace;
322
+ if (viewportLeft < 0) {
323
+ viewportLeft += trackSize;
324
+ }
325
+ const viewportRight = viewportLeft + trackDetail.viewportSize;
326
+ for (let i = 0; i < itemList.length; i++) {
327
+ if (!itemShowedList.list[i]) {
328
+ const left = itemSizeSpace * i;
329
+ const right = left + itemDetail.size;
330
+ if (left >= viewportLeft && left < viewportRight || right > viewportLeft && right < viewportRight || left < viewportLeft && right > viewportRight) {
331
+ itemShowedList.list[i] = true;
332
+ }
221
333
  }
222
- }, C = w({
223
- list: A()
224
- }), H = () => {
225
- C.list = A(), _();
334
+ }
226
335
  };
227
- ve(() => [...c], H);
228
- const j = (e, i) => {
229
- e ? r.size = q(e, i) : r.size = i, r.space = Number(t.itemSpace) || 0, r.isFillViewport = r.size >= i, l.viewportSize = i, l.cloneNodeCount = te();
230
- }, te = () => {
231
- if (k.value) {
232
- const e = r.size + r.space;
233
- if (e === 0)
336
+ const itemShowedList = reactive({
337
+ list: getBooleanList()
338
+ });
339
+ const initItemShowList = () => {
340
+ itemShowedList.list = getBooleanList();
341
+ checkItemShowed();
342
+ };
343
+ watch(() => [...itemList], initItemShowList);
344
+ const setItemSize = (itemSize, viewportSize) => {
345
+ if (itemSize) {
346
+ itemDetail.size = parsePercent(itemSize, viewportSize);
347
+ } else {
348
+ itemDetail.size = viewportSize;
349
+ }
350
+ itemDetail.space = Number(props.itemSpace) || 0;
351
+ itemDetail.isFillViewport = itemDetail.size >= viewportSize;
352
+ trackDetail.viewportSize = viewportSize;
353
+ trackDetail.cloneNodeCount = getCloneNodeCount();
354
+ };
355
+ const getCloneNodeCount = () => {
356
+ if (needLoop.value) {
357
+ const sizeSpace = itemDetail.size + itemDetail.space;
358
+ if (sizeSpace === 0)
234
359
  return 0;
235
- const i = l.viewportSize * 2 - e, f = Math.ceil(i / e);
236
- return Math.min(f, c.length - 1);
360
+ const freeSize = trackDetail.viewportSize * 2 - sizeSpace;
361
+ const count = Math.ceil(freeSize / sizeSpace);
362
+ return Math.min(count, itemList.length - 1);
237
363
  }
238
364
  return 0;
239
- }, E = () => {
240
- if (!b.value)
365
+ };
366
+ const resize = () => {
367
+ if (!swipeRef.value)
241
368
  return;
242
369
  const {
243
- width: e,
244
- height: i
245
- } = b.value.getBoundingClientRect();
246
- t.vertical ? j(t.itemSize, i) : j(t.itemSize, e), u.value = u.value >= c.length ? c.length - 1 : u.value, u.value < 0 && (u.value = 0), B(u.value), H(), W();
370
+ width,
371
+ height
372
+ } = swipeRef.value.getBoundingClientRect();
373
+ if (props.vertical) {
374
+ setItemSize(props.itemSize, height);
375
+ } else {
376
+ setItemSize(props.itemSize, width);
377
+ }
378
+ activeIndex.value = activeIndex.value >= itemList.length ? itemList.length - 1 : activeIndex.value;
379
+ if (activeIndex.value < 0) {
380
+ activeIndex.value = 0;
381
+ }
382
+ updateTransform(activeIndex.value);
383
+ initItemShowList();
384
+ startAutoplay();
247
385
  };
248
- me(() => {
249
- if (he(E).catch(() => {
250
- }), t.touchable && b.value) {
251
- const e = b.value;
252
- e.addEventListener("touchstart", L, !1), e.addEventListener("mousedown", L, !1), e.addEventListener("touchmove", T, !1), e.addEventListener("mousemove", T, !1), e.addEventListener("touchend", y, !1), e.addEventListener("mouseup", y, !1), e.addEventListener("mouseleave", y, !1), e.addEventListener("touchcancel", y, !1);
386
+ onMounted(() => {
387
+ nextTick(resize).catch(() => {
388
+ });
389
+ if (props.touchable && swipeRef.value) {
390
+ const swipeEl = swipeRef.value;
391
+ swipeEl.addEventListener("touchstart", onTouchStart, false);
392
+ swipeEl.addEventListener("mousedown", onTouchStart, false);
393
+ swipeEl.addEventListener("touchmove", onTouch, false);
394
+ swipeEl.addEventListener("mousemove", onTouch, false);
395
+ swipeEl.addEventListener("touchend", onTouchEnd, false);
396
+ swipeEl.addEventListener("mouseup", onTouchEnd, false);
397
+ swipeEl.addEventListener("mouseleave", onTouchEnd, false);
398
+ swipeEl.addEventListener("touchcancel", onTouchEnd, false);
253
399
  }
254
- window.addEventListener("resize", E, !1), window.addEventListener("orientationchange", E, !1);
255
- }), ge(() => {
256
- if (ne(), t.touchable && b.value) {
257
- const e = b.value;
258
- e.removeEventListener("touchstart", L, !1), e.removeEventListener("mousedown", L, !1), e.removeEventListener("mousemove", T, !1), e.removeEventListener("touchmove", T, !1), e.removeEventListener("mouseup", y, !1), e.removeEventListener("touchend", y, !1), e.removeEventListener("mouseleave", y, !1), e.removeEventListener("touchcancel", y, !1);
400
+ window.addEventListener("resize", resize, false);
401
+ window.addEventListener("orientationchange", resize, false);
402
+ });
403
+ onBeforeUnmount(() => {
404
+ stopAutoPlay();
405
+ if (props.touchable && swipeRef.value) {
406
+ const swipeEl = swipeRef.value;
407
+ swipeEl.removeEventListener("touchstart", onTouchStart, false);
408
+ swipeEl.removeEventListener("mousedown", onTouchStart, false);
409
+ swipeEl.removeEventListener("mousemove", onTouch, false);
410
+ swipeEl.removeEventListener("touchmove", onTouch, false);
411
+ swipeEl.removeEventListener("mouseup", onTouchEnd, false);
412
+ swipeEl.removeEventListener("touchend", onTouchEnd, false);
413
+ swipeEl.removeEventListener("mouseleave", onTouchEnd, false);
414
+ swipeEl.removeEventListener("touchcancel", onTouchEnd, false);
259
415
  }
260
- window.removeEventListener("resize", E, !1), window.removeEventListener("orientationchange", E, !1);
416
+ window.removeEventListener("resize", resize, false);
417
+ window.removeEventListener("orientationchange", resize, false);
261
418
  });
262
- const G = p(() => {
263
- let e = 0;
264
- switch (t.align) {
265
- case D.start:
266
- e = 0;
419
+ const positionOffset = computed(() => {
420
+ let offset = 0;
421
+ switch (props.align) {
422
+ case Align.start:
423
+ offset = 0;
267
424
  break;
268
- case D.center:
269
- e = (l.viewportSize - r.size) / 2;
425
+ case Align.center:
426
+ offset = (trackDetail.viewportSize - itemDetail.size) / 2;
270
427
  break;
271
- case D.end:
272
- e = l.viewportSize - r.size;
428
+ case Align.end:
429
+ offset = trackDetail.viewportSize - itemDetail.size;
273
430
  break;
274
431
  default:
275
- e = 0;
432
+ offset = 0;
433
+ }
434
+ return offset;
435
+ });
436
+ const needLoop = computed(() => {
437
+ return props.loop && itemList.length > 1;
438
+ });
439
+ const updateTransform = (index) => {
440
+ const itemSizeSpace = itemDetail.size + itemDetail.space;
441
+ if (needLoop.value) {
442
+ trackDetail.offset = -itemSizeSpace * (index + trackDetail.cloneNodeCount) + positionOffset.value;
443
+ } else {
444
+ trackDetail.offset = -itemSizeSpace * index + positionOffset.value;
445
+ if (props.align !== "center") {
446
+ if (index === 0) {
447
+ trackDetail.offset = 0;
448
+ }
449
+ if (index === itemList.length - 1) {
450
+ trackDetail.offset = -itemSizeSpace * index + trackDetail.viewportSize - itemDetail.size;
451
+ }
452
+ }
453
+ }
454
+ };
455
+ const afterChange = () => {
456
+ updateTransform(activeIndex.value);
457
+ emit("afterChange", activeIndex.value);
458
+ };
459
+ const getIndex = (index) => {
460
+ return (itemList.length + index) % itemList.length;
461
+ };
462
+ const moveTo = (index, withAnimation = true) => {
463
+ activeIndex.value = getIndex(index);
464
+ updateTransform(index);
465
+ checkItemShowed();
466
+ emit("change", activeIndex.value);
467
+ if (withAnimation) {
468
+ dragDetail.transitionEnabled = true;
469
+ if (swipeTrackRef.value) {
470
+ swipeTrackRef.value.addEventListener("transitionend", () => {
471
+ dragDetail.transitionEnabled = false;
472
+ afterChange();
473
+ }, {
474
+ once: true
475
+ });
476
+ }
477
+ } else {
478
+ afterChange();
479
+ }
480
+ };
481
+ const prev = (withAnimation = true) => {
482
+ moveTo(activeIndex.value - 1, withAnimation);
483
+ };
484
+ const next = (withAnimation = true) => {
485
+ moveTo(activeIndex.value + 1, withAnimation);
486
+ };
487
+ let timer = null;
488
+ const stopAutoPlay = () => {
489
+ if (props.autoplayTime && timer) {
490
+ clearInterval(timer);
276
491
  }
277
- return e;
278
- }), k = p(() => t.loop && c.length > 1), B = (e) => {
279
- const i = r.size + r.space;
280
- k.value ? l.offset = -i * (e + l.cloneNodeCount) + G.value : (l.offset = -i * e + G.value, t.align !== "center" && (e === 0 && (l.offset = 0), e === c.length - 1 && (l.offset = -i * e + l.viewportSize - r.size)));
281
- }, U = () => {
282
- B(u.value), s("afterChange", u.value);
283
- }, Y = (e) => (c.length + e) % c.length, M = (e, i = !0) => {
284
- u.value = Y(e), B(e), _(), s("change", u.value), i ? (a.transitionEnabled = !0, $.value && $.value.addEventListener("transitionend", () => {
285
- a.transitionEnabled = !1, U();
286
- }, {
287
- once: !0
288
- })) : U();
289
- }, K = (e = !0) => {
290
- M(u.value - 1, e);
291
- }, X = (e = !0) => {
292
- M(u.value + 1, e);
293
492
  };
294
- let z = null;
295
- const ne = () => {
296
- t.autoplayTime && z && clearInterval(z);
297
- }, W = () => {
298
- t.autoplayTime && c.length > 1 && (z && clearInterval(z), z = setInterval(() => {
299
- X();
300
- }, Number(t.autoplayTime)));
301
- }, a = w({
493
+ const startAutoplay = () => {
494
+ if (props.autoplayTime && itemList.length > 1) {
495
+ if (timer) {
496
+ clearInterval(timer);
497
+ }
498
+ timer = setInterval(() => {
499
+ next();
500
+ }, Number(props.autoplayTime));
501
+ }
502
+ };
503
+ const dragDetail = reactive({
302
504
  // 拖拽中
303
- isDragging: !1,
505
+ isDragging: false,
304
506
  // 是否首次拖动
305
- isFirstTouch: !0,
507
+ isFirstTouch: true,
306
508
  // 拖拽起始位置X
307
509
  startX: 0,
308
510
  // 拖拽起始位置Y
@@ -312,103 +514,184 @@ const Ce = {
312
514
  // 开始拖动时间
313
515
  startTime: /* @__PURE__ */ new Date(),
314
516
  // 是否在执行动画
315
- transitionEnabled: !1
316
- }), L = (e) => {
317
- if (a.transitionEnabled)
318
- return;
319
- let i = 0, f = 0;
320
- "touches" in e ? (i = e.touches[0].clientX, f = e.touches[0].clientY) : (i = e.clientX, f = e.clientY), a.startX = i, a.startY = f, a.isDragging = !0, a.isFirstTouch = !0, a.startTime = /* @__PURE__ */ new Date();
321
- }, T = (e) => {
322
- if (!a.isDragging)
517
+ transitionEnabled: false
518
+ });
519
+ const onTouchStart = (e) => {
520
+ if (dragDetail.transitionEnabled) {
323
521
  return;
324
- let i = 0, f = 0;
325
- "touches" in e ? (i = e.touches[0].clientX, f = e.touches[0].clientY) : (i = e.clientX, f = e.clientY);
326
- const m = i - a.startX, v = f - a.startY;
327
- if (a.isFirstTouch && (a.isFirstTouch = !1, Math.abs(m) < Math.abs(v) !== t.vertical)) {
328
- a.isDragging = !1;
522
+ }
523
+ let clientX = 0;
524
+ let clientY = 0;
525
+ if ("touches" in e) {
526
+ clientX = e.touches[0].clientX;
527
+ clientY = e.touches[0].clientY;
528
+ } else {
529
+ clientX = e.clientX;
530
+ clientY = e.clientY;
531
+ }
532
+ dragDetail.startX = clientX;
533
+ dragDetail.startY = clientY;
534
+ dragDetail.isDragging = true;
535
+ dragDetail.isFirstTouch = true;
536
+ dragDetail.startTime = /* @__PURE__ */ new Date();
537
+ };
538
+ const onTouch = (e) => {
539
+ if (!dragDetail.isDragging) {
329
540
  return;
330
541
  }
331
- e.preventDefault(), a.offset = t.vertical ? v : m, _(), s("dragging", {
332
- percent: a.offset / (r.size + r.space),
333
- offset: a.offset
542
+ let clientX = 0;
543
+ let clientY = 0;
544
+ if ("touches" in e) {
545
+ clientX = e.touches[0].clientX;
546
+ clientY = e.touches[0].clientY;
547
+ } else {
548
+ clientX = e.clientX;
549
+ clientY = e.clientY;
550
+ }
551
+ const offsetX = clientX - dragDetail.startX;
552
+ const offsetY = clientY - dragDetail.startY;
553
+ if (dragDetail.isFirstTouch) {
554
+ dragDetail.isFirstTouch = false;
555
+ const isVerticalTouch = Math.abs(offsetX) < Math.abs(offsetY);
556
+ if (isVerticalTouch !== props.vertical) {
557
+ dragDetail.isDragging = false;
558
+ return;
559
+ }
560
+ }
561
+ e.preventDefault();
562
+ dragDetail.offset = props.vertical ? offsetY : offsetX;
563
+ checkItemShowed();
564
+ emit("dragging", {
565
+ percent: dragDetail.offset / (itemDetail.size + itemDetail.space),
566
+ offset: dragDetail.offset
334
567
  });
335
- }, y = () => {
336
- if (!a.isDragging)
568
+ };
569
+ const onTouchEnd = () => {
570
+ if (!dragDetail.isDragging) {
337
571
  return;
338
- a.isDragging = !1;
339
- const i = (/* @__PURE__ */ new Date()).getTime() - a.startTime.getTime();
340
- oe() && (Math.abs(a.offset) > ie.value || Math.abs(a.offset) / i > 0.5) && (a.offset > 0 ? K() : X()), a.offset = 0, W();
341
- }, ie = p(() => q(t.minSwipeDistance, r.size + r.space)), oe = () => {
342
- if (k.value)
343
- return !0;
344
- const e = a.offset > 0 ? u.value - 1 : u.value + 1;
345
- return e >= 0 && e < c.length;
346
- }, se = p(() => {
347
- const e = a.isDragging && !t.isFollowHand ? l.offset : l.offset + a.offset, i = {};
348
- return t.vertical ? (i.transform = `translate3d(0, ${e}px, 0)`, i.transitionDuration = a.transitionEnabled ? `${t.duration}ms` : "0ms") : (i.transform = `translate3d(${e}px, 0, 0)`, i.transitionDuration = a.transitionEnabled ? `${t.duration}ms` : "0ms"), a.isDragging && (i.transition = "none"), t.vertical && (i.flexDirection = "column"), t.autoHeight && (i.display = "block", i.whiteSpace = "nowrap"), i;
349
- }), re = p(() => ["y-swipe__dots", `y-swipe__dots--${t.dotsPosition || (t.vertical ? P.left : P.bottom)}`]);
350
- n({
351
- moveTo: M,
352
- next: X,
353
- prev: K,
354
- resize: E
572
+ }
573
+ dragDetail.isDragging = false;
574
+ const now = /* @__PURE__ */ new Date();
575
+ const dragTime = now.getTime() - dragDetail.startTime.getTime();
576
+ if (canGoForward() && (Math.abs(dragDetail.offset) > minSwipeDistance.value || Math.abs(dragDetail.offset) / dragTime > 0.5)) {
577
+ dragDetail.offset > 0 ? prev() : next();
578
+ dragDetail.offset = 0;
579
+ } else {
580
+ dragDetail.offset = 0;
581
+ }
582
+ startAutoplay();
583
+ };
584
+ const minSwipeDistance = computed(() => {
585
+ return parsePercent(props.minSwipeDistance, itemDetail.size + itemDetail.space);
586
+ });
587
+ const canGoForward = () => {
588
+ if (needLoop.value) {
589
+ return true;
590
+ }
591
+ const nextIndex = dragDetail.offset > 0 ? activeIndex.value - 1 : activeIndex.value + 1;
592
+ return nextIndex >= 0 && nextIndex < itemList.length;
593
+ };
594
+ const trackStyle = computed(() => {
595
+ const offset = dragDetail.isDragging && !props.isFollowHand ? trackDetail.offset : trackDetail.offset + dragDetail.offset;
596
+ const style2 = {};
597
+ if (props.vertical) {
598
+ style2.transform = `translate3d(0, ${offset}px, 0)`;
599
+ style2.transitionDuration = dragDetail.transitionEnabled ? `${props.duration}ms` : "0ms";
600
+ } else {
601
+ style2.transform = `translate3d(${offset}px, 0, 0)`;
602
+ style2.transitionDuration = dragDetail.transitionEnabled ? `${props.duration}ms` : "0ms";
603
+ }
604
+ if (dragDetail.isDragging) {
605
+ style2.transition = "none";
606
+ }
607
+ if (props.vertical) {
608
+ style2.flexDirection = "column";
609
+ }
610
+ if (props.autoHeight) {
611
+ style2.display = "block";
612
+ style2.whiteSpace = "nowrap";
613
+ }
614
+ return style2;
355
615
  });
356
- const ae = w({
357
- children: c,
358
- activeIndex: u,
359
- props: t,
360
- itemDetail: r,
361
- itemShowedList: C
616
+ const dotsClass = computed(() => {
617
+ const position = props.dotsPosition || (props.vertical ? Position.left : Position.bottom);
618
+ return ["y-swipe__dots", `y-swipe__dots--${position}`];
362
619
  });
363
- d(ae);
364
- const le = () => t.dots ? S("div", {
365
- class: re.value
366
- }, [c.map((e, i) => {
367
- const f = O("dot", {
368
- active: i === u.value
369
- });
370
- return S("div", {
371
- class: f,
372
- style: {
373
- backgroundColor: t.dotsColor
374
- },
375
- key: i
376
- }, null);
377
- })]) : null;
620
+ expose({
621
+ moveTo,
622
+ next,
623
+ prev,
624
+ resize
625
+ });
626
+ const tabs = reactive({
627
+ children: itemList,
628
+ activeIndex,
629
+ props,
630
+ itemDetail,
631
+ itemShowedList
632
+ });
633
+ initProvide(tabs);
634
+ const renderDots = () => {
635
+ if (props.dots) {
636
+ return createVNode("div", {
637
+ "class": dotsClass.value
638
+ }, [itemList.map((_, index) => {
639
+ const className = bem("dot", {
640
+ active: index === activeIndex.value
641
+ });
642
+ return createVNode("div", {
643
+ "class": className,
644
+ "style": {
645
+ backgroundColor: props.dotsColor
646
+ },
647
+ "key": index
648
+ }, null);
649
+ })]);
650
+ }
651
+ return null;
652
+ };
378
653
  return () => {
379
- var e;
380
- return S("div", {
381
- class: O(),
382
- ref: b
383
- }, [S("div", {
384
- class: O("track"),
385
- style: se.value,
386
- ref: $
387
- }, [Array(l.cloneNodeCount).fill("").map((i, f) => {
388
- var h, g, N;
389
- const m = Y(f - l.cloneNodeCount), v = (N = (h = c[m]) == null ? void 0 : (g = h.slots).default) == null ? void 0 : N.call(g);
390
- return v ? S(F, {
391
- clonenNode: v,
392
- index: m
654
+ var _a;
655
+ return createVNode("div", {
656
+ "class": bem(),
657
+ "ref": swipeRef
658
+ }, [createVNode("div", {
659
+ "class": bem("track"),
660
+ "style": trackStyle.value,
661
+ "ref": swipeTrackRef
662
+ }, [Array(trackDetail.cloneNodeCount).fill("").map((_, index) => {
663
+ var _a2, _b, _c;
664
+ const nodeIndex = getIndex(index - trackDetail.cloneNodeCount);
665
+ const item = (_c = (_a2 = itemList[nodeIndex]) == null ? void 0 : (_b = _a2.slots).default) == null ? void 0 : _c.call(_b);
666
+ return item ? createVNode(YSwipeItem, {
667
+ "clonenNode": item,
668
+ "index": nodeIndex
393
669
  }, null) : null;
394
- }), (e = o.default) == null ? void 0 : e.call(o), Array(l.cloneNodeCount).fill("").map((i, f) => {
395
- var h, g, N;
396
- const m = Y(f), v = (N = (h = c[m]) == null ? void 0 : (g = h.slots).default) == null ? void 0 : N.call(g);
397
- return v ? S(F, {
398
- clonenNode: v,
399
- index: m
670
+ }), (_a = slots.default) == null ? void 0 : _a.call(slots), Array(trackDetail.cloneNodeCount).fill("").map((_, index) => {
671
+ var _a2, _b, _c;
672
+ const nodeIndex = getIndex(index);
673
+ const item = (_c = (_a2 = itemList[nodeIndex]) == null ? void 0 : (_b = _a2.slots).default) == null ? void 0 : _c.call(_b);
674
+ return item ? createVNode(YSwipeItem, {
675
+ "clonenNode": item,
676
+ "index": nodeIndex
400
677
  }, null) : null;
401
- })]), o.dots ? o.dots() : le()]);
678
+ })]), slots.dots ? slots.dots() : renderDots()]);
402
679
  };
403
680
  }
404
681
  });
405
- R.install = (t) => {
406
- const { name: o } = R;
407
- t.component(o, R);
682
+ const reset = "";
683
+ const libs = "";
684
+ const font = "";
685
+ const animation = "";
686
+ const theme = "";
687
+ const style = "";
688
+ Swipe.install = (Vue) => {
689
+ const { name: name2 } = Swipe;
690
+ Vue.component(name2, Swipe);
408
691
  };
409
692
  export {
410
- D as Align,
411
- P as Position,
412
- R as default,
413
- Ce as swipeProps
693
+ Align,
694
+ Position,
695
+ Swipe as default,
696
+ swipeProps
414
697
  };