wssf-kage-ui 0.1.2 → 0.1.3

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 (83) hide show
  1. package/dist/cjs/Alert/index.d.ts +37 -0
  2. package/dist/cjs/Alert/index.js +124 -0
  3. package/dist/cjs/Alert/style.less +248 -0
  4. package/dist/cjs/Drawer/index.d.ts +57 -0
  5. package/dist/cjs/Drawer/index.js +203 -0
  6. package/dist/cjs/Drawer/style.less +215 -0
  7. package/dist/cjs/FloatButton/index.d.ts +54 -0
  8. package/dist/cjs/FloatButton/index.js +119 -0
  9. package/dist/cjs/FloatButton/style.less +266 -0
  10. package/dist/cjs/Message/index.d.ts +38 -0
  11. package/dist/cjs/Message/index.js +292 -0
  12. package/dist/cjs/Message/style.less +183 -0
  13. package/dist/cjs/Modal/index.d.ts +63 -0
  14. package/dist/cjs/Modal/index.js +254 -0
  15. package/dist/cjs/Modal/style.less +298 -0
  16. package/dist/cjs/Notification/index.d.ts +48 -0
  17. package/dist/cjs/Notification/index.js +340 -0
  18. package/dist/cjs/Notification/style.less +260 -0
  19. package/dist/cjs/Popconfirm/index.d.ts +58 -0
  20. package/dist/cjs/Popconfirm/index.js +393 -0
  21. package/dist/cjs/Popconfirm/style.less +417 -0
  22. package/dist/cjs/Progress/index.d.ts +43 -0
  23. package/dist/cjs/Progress/index.js +213 -0
  24. package/dist/cjs/Progress/style.less +206 -0
  25. package/dist/cjs/Result/index.d.ts +25 -0
  26. package/dist/cjs/Result/index.js +63 -0
  27. package/dist/cjs/Result/style.less +111 -0
  28. package/dist/cjs/Skeleton/index.d.ts +88 -0
  29. package/dist/cjs/Skeleton/index.js +207 -0
  30. package/dist/cjs/Skeleton/style.less +487 -0
  31. package/dist/cjs/Spin/index.d.ts +25 -0
  32. package/dist/cjs/Spin/index.js +98 -0
  33. package/dist/cjs/Spin/style.less +169 -0
  34. package/dist/cjs/Tree/index.d.ts +82 -0
  35. package/dist/cjs/Tree/index.js +226 -0
  36. package/dist/cjs/Tree/style.less +313 -0
  37. package/dist/cjs/Watermark/index.d.ts +41 -0
  38. package/dist/cjs/Watermark/index.js +353 -0
  39. package/dist/cjs/Watermark/style.less +31 -0
  40. package/dist/cjs/index.d.ts +27 -1
  41. package/dist/cjs/index.js +91 -0
  42. package/dist/esm/Alert/index.d.ts +37 -0
  43. package/dist/esm/Alert/index.js +121 -0
  44. package/dist/esm/Alert/style.less +248 -0
  45. package/dist/esm/Drawer/index.d.ts +57 -0
  46. package/dist/esm/Drawer/index.js +202 -0
  47. package/dist/esm/Drawer/style.less +215 -0
  48. package/dist/esm/FloatButton/index.d.ts +54 -0
  49. package/dist/esm/FloatButton/index.js +123 -0
  50. package/dist/esm/FloatButton/style.less +266 -0
  51. package/dist/esm/Message/index.d.ts +38 -0
  52. package/dist/esm/Message/index.js +294 -0
  53. package/dist/esm/Message/style.less +183 -0
  54. package/dist/esm/Modal/index.d.ts +63 -0
  55. package/dist/esm/Modal/index.js +251 -0
  56. package/dist/esm/Modal/style.less +298 -0
  57. package/dist/esm/Notification/index.d.ts +48 -0
  58. package/dist/esm/Notification/index.js +345 -0
  59. package/dist/esm/Notification/style.less +260 -0
  60. package/dist/esm/Popconfirm/index.d.ts +58 -0
  61. package/dist/esm/Popconfirm/index.js +389 -0
  62. package/dist/esm/Popconfirm/style.less +417 -0
  63. package/dist/esm/Progress/index.d.ts +43 -0
  64. package/dist/esm/Progress/index.js +208 -0
  65. package/dist/esm/Progress/style.less +206 -0
  66. package/dist/esm/Result/index.d.ts +25 -0
  67. package/dist/esm/Result/index.js +57 -0
  68. package/dist/esm/Result/style.less +111 -0
  69. package/dist/esm/Skeleton/index.d.ts +88 -0
  70. package/dist/esm/Skeleton/index.js +213 -0
  71. package/dist/esm/Skeleton/style.less +487 -0
  72. package/dist/esm/Spin/index.d.ts +25 -0
  73. package/dist/esm/Spin/index.js +95 -0
  74. package/dist/esm/Spin/style.less +169 -0
  75. package/dist/esm/Tree/index.d.ts +82 -0
  76. package/dist/esm/Tree/index.js +225 -0
  77. package/dist/esm/Tree/style.less +313 -0
  78. package/dist/esm/Watermark/index.d.ts +41 -0
  79. package/dist/esm/Watermark/index.js +349 -0
  80. package/dist/esm/Watermark/style.less +31 -0
  81. package/dist/esm/index.d.ts +27 -1
  82. package/dist/esm/index.js +14 -1
  83. package/package.json +1 -1
@@ -0,0 +1,487 @@
1
+ // Skeleton 骨架屏组件样式
2
+
3
+ @prefix: kage-skeleton;
4
+
5
+ // 颜色变量
6
+ @skeleton-color: #f2f2f2;
7
+ @skeleton-to-color: #e6e6e6;
8
+ @skeleton-avatar-size-default: 40px;
9
+ @skeleton-avatar-size-small: 24px;
10
+ @skeleton-avatar-size-large: 48px;
11
+
12
+ // ============ 主容器 ============
13
+ .@{prefix} {
14
+ display: flex;
15
+ padding: 16px 0;
16
+ box-sizing: border-box;
17
+
18
+ * {
19
+ box-sizing: border-box;
20
+ }
21
+ }
22
+
23
+ .@{prefix}-round {
24
+ .@{prefix}-title-content,
25
+ .@{prefix}-paragraph-line-content,
26
+ .@{prefix}-avatar-content,
27
+ .@{prefix}-button-content,
28
+ .@{prefix}-input-content,
29
+ .@{prefix}-image-content {
30
+ border-radius: 4px;
31
+ }
32
+ }
33
+
34
+ // ============ 头像 ============
35
+ .@{prefix}-avatar {
36
+ flex-shrink: 0;
37
+ margin-right: 16px;
38
+ background-color: @skeleton-color;
39
+ border-radius: 50%;
40
+
41
+ &-content {
42
+ display: block;
43
+ width: 100%;
44
+ height: 100%;
45
+ background-color: @skeleton-color;
46
+ border-radius: 50%;
47
+ }
48
+
49
+ &-square {
50
+ border-radius: 4px;
51
+
52
+ .@{prefix}-avatar-content {
53
+ border-radius: 4px;
54
+ }
55
+ }
56
+
57
+ &-default {
58
+ width: @skeleton-avatar-size-default;
59
+ height: @skeleton-avatar-size-default;
60
+ }
61
+
62
+ &-small {
63
+ width: @skeleton-avatar-size-small;
64
+ height: @skeleton-avatar-size-small;
65
+ }
66
+
67
+ &-large {
68
+ width: @skeleton-avatar-size-large;
69
+ height: @skeleton-avatar-size-large;
70
+ }
71
+ }
72
+
73
+ // ============ 内容 ============
74
+ .@{prefix}-content {
75
+ flex: 1;
76
+ min-width: 0;
77
+ }
78
+
79
+ // ============ 标题 ============
80
+ .@{prefix}-title {
81
+ margin-bottom: 16px;
82
+
83
+ &-content {
84
+ display: block;
85
+ height: 16px;
86
+ background-color: @skeleton-color;
87
+ border-radius: 2px;
88
+ }
89
+ }
90
+
91
+ // ============ 段落 ============
92
+ .@{prefix}-paragraph {
93
+ margin-bottom: 0;
94
+
95
+ &-line {
96
+ margin-bottom: 16px;
97
+
98
+ &:last-child {
99
+ margin-bottom: 0;
100
+ width: 61% !important;
101
+ }
102
+
103
+ &-content {
104
+ display: block;
105
+ height: 16px;
106
+ background-color: @skeleton-color;
107
+ border-radius: 2px;
108
+ }
109
+ }
110
+ }
111
+
112
+ // ============ 按钮 ============
113
+ .@{prefix}-button {
114
+ display: inline-block;
115
+ vertical-align: middle;
116
+ background-color: @skeleton-color;
117
+ border-radius: 4px;
118
+
119
+ &-content {
120
+ display: block;
121
+ width: 100%;
122
+ height: 100%;
123
+ background-color: @skeleton-color;
124
+ border-radius: 4px;
125
+ }
126
+
127
+ &-default {
128
+ width: 80px;
129
+ height: 32px;
130
+ }
131
+
132
+ &-small {
133
+ width: 60px;
134
+ height: 24px;
135
+ }
136
+
137
+ &-large {
138
+ width: 100px;
139
+ height: 40px;
140
+ }
141
+
142
+ &-block {
143
+ display: block;
144
+ width: 100%;
145
+ }
146
+ }
147
+
148
+ // ============ 输入框 ============
149
+ .@{prefix}-input {
150
+ display: inline-block;
151
+ vertical-align: middle;
152
+ background-color: @skeleton-color;
153
+ border-radius: 4px;
154
+
155
+ &-content {
156
+ display: block;
157
+ width: 100%;
158
+ height: 100%;
159
+ background-color: @skeleton-color;
160
+ border-radius: 4px;
161
+ }
162
+
163
+ &-default {
164
+ width: 200px;
165
+ height: 32px;
166
+ }
167
+
168
+ &-small {
169
+ width: 160px;
170
+ height: 24px;
171
+ }
172
+
173
+ &-large {
174
+ width: 240px;
175
+ height: 40px;
176
+ }
177
+
178
+ &-block {
179
+ display: block;
180
+ width: 100%;
181
+ }
182
+ }
183
+
184
+ // ============ 图片 ============
185
+ .@{prefix}-image {
186
+ display: inline-block;
187
+ vertical-align: middle;
188
+ background-color: @skeleton-color;
189
+ border-radius: 4px;
190
+
191
+ &-content {
192
+ display: block;
193
+ width: 100%;
194
+ height: 100%;
195
+ background-color: @skeleton-color;
196
+ border-radius: 4px;
197
+ }
198
+ }
199
+
200
+ // ============ 动画 ============
201
+ .@{prefix}-active {
202
+ .@{prefix}-title-content,
203
+ .@{prefix}-paragraph-line-content,
204
+ .@{prefix}-avatar-content,
205
+ .@{prefix}-button-content,
206
+ .@{prefix}-input-content,
207
+ .@{prefix}-image-content {
208
+ background: linear-gradient(
209
+ 90deg,
210
+ @skeleton-color 25%,
211
+ @skeleton-to-color 37%,
212
+ @skeleton-color 63%
213
+ );
214
+ background-size: 400% 100%;
215
+ animation: skeleton-loading 1.4s ease infinite;
216
+ }
217
+ }
218
+
219
+ @keyframes skeleton-loading {
220
+ 0% {
221
+ background-position: 100% 50%;
222
+ }
223
+ 100% {
224
+ background-position: 0% 50%;
225
+ }
226
+ }
227
+
228
+ // ============ 暗色模式适配 ============
229
+ [data-theme='dark'],
230
+ [data-prefers-color-scheme='dark'],
231
+ [data-prefers-color='dark'],
232
+ html.dark,
233
+ body.dark,
234
+ .dark {
235
+ .@{prefix} {
236
+ // 标题和段落内容
237
+ .@{prefix}-title-content,
238
+ .@{prefix}-paragraph-line-content {
239
+ background-color: rgba(255, 255, 255, 0.08);
240
+ }
241
+
242
+ // 头像容器和内容
243
+ .@{prefix}-avatar {
244
+ background-color: rgba(255, 255, 255, 0.08);
245
+
246
+ &-content {
247
+ background-color: rgba(255, 255, 255, 0.08);
248
+ }
249
+ }
250
+
251
+ // 按钮容器和内容
252
+ .@{prefix}-button {
253
+ background-color: rgba(255, 255, 255, 0.08);
254
+
255
+ &-content {
256
+ background-color: rgba(255, 255, 255, 0.08);
257
+ }
258
+ }
259
+
260
+ // 输入框容器和内容
261
+ .@{prefix}-input {
262
+ background-color: rgba(255, 255, 255, 0.08);
263
+
264
+ &-content {
265
+ background-color: rgba(255, 255, 255, 0.08);
266
+ }
267
+ }
268
+
269
+ // 图片容器和内容
270
+ .@{prefix}-image {
271
+ background-color: rgba(255, 255, 255, 0.08);
272
+
273
+ &-content {
274
+ background-color: rgba(255, 255, 255, 0.08);
275
+ }
276
+ }
277
+ }
278
+
279
+ // 动画状态
280
+ .@{prefix}-active {
281
+ .@{prefix}-title-content,
282
+ .@{prefix}-paragraph-line-content {
283
+ background: linear-gradient(
284
+ 90deg,
285
+ rgba(255, 255, 255, 0.08) 25%,
286
+ rgba(255, 255, 255, 0.12) 37%,
287
+ rgba(255, 255, 255, 0.08) 63%
288
+ );
289
+ background-size: 400% 100%;
290
+ }
291
+
292
+ .@{prefix}-avatar {
293
+ background: linear-gradient(
294
+ 90deg,
295
+ rgba(255, 255, 255, 0.08) 25%,
296
+ rgba(255, 255, 255, 0.12) 37%,
297
+ rgba(255, 255, 255, 0.08) 63%
298
+ );
299
+ background-size: 400% 100%;
300
+
301
+ &-content {
302
+ background: linear-gradient(
303
+ 90deg,
304
+ rgba(255, 255, 255, 0.08) 25%,
305
+ rgba(255, 255, 255, 0.12) 37%,
306
+ rgba(255, 255, 255, 0.08) 63%
307
+ );
308
+ background-size: 400% 100%;
309
+ }
310
+ }
311
+
312
+ .@{prefix}-button {
313
+ background: linear-gradient(
314
+ 90deg,
315
+ rgba(255, 255, 255, 0.08) 25%,
316
+ rgba(255, 255, 255, 0.12) 37%,
317
+ rgba(255, 255, 255, 0.08) 63%
318
+ );
319
+ background-size: 400% 100%;
320
+
321
+ &-content {
322
+ background: linear-gradient(
323
+ 90deg,
324
+ rgba(255, 255, 255, 0.08) 25%,
325
+ rgba(255, 255, 255, 0.12) 37%,
326
+ rgba(255, 255, 255, 0.08) 63%
327
+ );
328
+ background-size: 400% 100%;
329
+ }
330
+ }
331
+
332
+ .@{prefix}-input {
333
+ background: linear-gradient(
334
+ 90deg,
335
+ rgba(255, 255, 255, 0.08) 25%,
336
+ rgba(255, 255, 255, 0.12) 37%,
337
+ rgba(255, 255, 255, 0.08) 63%
338
+ );
339
+ background-size: 400% 100%;
340
+
341
+ &-content {
342
+ background: linear-gradient(
343
+ 90deg,
344
+ rgba(255, 255, 255, 0.08) 25%,
345
+ rgba(255, 255, 255, 0.12) 37%,
346
+ rgba(255, 255, 255, 0.08) 63%
347
+ );
348
+ background-size: 400% 100%;
349
+ }
350
+ }
351
+
352
+ .@{prefix}-image {
353
+ background: linear-gradient(
354
+ 90deg,
355
+ rgba(255, 255, 255, 0.08) 25%,
356
+ rgba(255, 255, 255, 0.12) 37%,
357
+ rgba(255, 255, 255, 0.08) 63%
358
+ );
359
+ background-size: 400% 100%;
360
+
361
+ &-content {
362
+ background: linear-gradient(
363
+ 90deg,
364
+ rgba(255, 255, 255, 0.08) 25%,
365
+ rgba(255, 255, 255, 0.12) 37%,
366
+ rgba(255, 255, 255, 0.08) 63%
367
+ );
368
+ background-size: 400% 100%;
369
+ }
370
+ }
371
+ }
372
+
373
+ // 独立的子组件(Button, Input, Image, Avatar)
374
+ .@{prefix}-button {
375
+ background-color: rgba(255, 255, 255, 0.08);
376
+
377
+ &-content {
378
+ background-color: rgba(255, 255, 255, 0.08);
379
+ }
380
+ }
381
+
382
+ .@{prefix}-input {
383
+ background-color: rgba(255, 255, 255, 0.08);
384
+
385
+ &-content {
386
+ background-color: rgba(255, 255, 255, 0.08);
387
+ }
388
+ }
389
+
390
+ .@{prefix}-image {
391
+ background-color: rgba(255, 255, 255, 0.08);
392
+
393
+ &-content {
394
+ background-color: rgba(255, 255, 255, 0.08);
395
+ }
396
+ }
397
+
398
+ .@{prefix}-avatar {
399
+ background-color: rgba(255, 255, 255, 0.08);
400
+
401
+ &-content {
402
+ background-color: rgba(255, 255, 255, 0.08);
403
+ }
404
+ }
405
+
406
+ // 独立子组件的动画状态
407
+ .@{prefix}-button.kage-skeleton-active {
408
+ background: linear-gradient(
409
+ 90deg,
410
+ rgba(255, 255, 255, 0.08) 25%,
411
+ rgba(255, 255, 255, 0.12) 37%,
412
+ rgba(255, 255, 255, 0.08) 63%
413
+ );
414
+ background-size: 400% 100%;
415
+
416
+ .@{prefix}-button-content {
417
+ background: linear-gradient(
418
+ 90deg,
419
+ rgba(255, 255, 255, 0.08) 25%,
420
+ rgba(255, 255, 255, 0.12) 37%,
421
+ rgba(255, 255, 255, 0.08) 63%
422
+ );
423
+ background-size: 400% 100%;
424
+ }
425
+ }
426
+
427
+ .@{prefix}-input.kage-skeleton-active {
428
+ background: linear-gradient(
429
+ 90deg,
430
+ rgba(255, 255, 255, 0.08) 25%,
431
+ rgba(255, 255, 255, 0.12) 37%,
432
+ rgba(255, 255, 255, 0.08) 63%
433
+ );
434
+ background-size: 400% 100%;
435
+
436
+ .@{prefix}-input-content {
437
+ background: linear-gradient(
438
+ 90deg,
439
+ rgba(255, 255, 255, 0.08) 25%,
440
+ rgba(255, 255, 255, 0.12) 37%,
441
+ rgba(255, 255, 255, 0.08) 63%
442
+ );
443
+ background-size: 400% 100%;
444
+ }
445
+ }
446
+
447
+ .@{prefix}-image.kage-skeleton-active {
448
+ background: linear-gradient(
449
+ 90deg,
450
+ rgba(255, 255, 255, 0.08) 25%,
451
+ rgba(255, 255, 255, 0.12) 37%,
452
+ rgba(255, 255, 255, 0.08) 63%
453
+ );
454
+ background-size: 400% 100%;
455
+
456
+ .@{prefix}-image-content {
457
+ background: linear-gradient(
458
+ 90deg,
459
+ rgba(255, 255, 255, 0.08) 25%,
460
+ rgba(255, 255, 255, 0.12) 37%,
461
+ rgba(255, 255, 255, 0.08) 63%
462
+ );
463
+ background-size: 400% 100%;
464
+ }
465
+ }
466
+
467
+ .@{prefix}-avatar.kage-skeleton-active {
468
+ background: linear-gradient(
469
+ 90deg,
470
+ rgba(255, 255, 255, 0.08) 25%,
471
+ rgba(255, 255, 255, 0.12) 37%,
472
+ rgba(255, 255, 255, 0.08) 63%
473
+ );
474
+ background-size: 400% 100%;
475
+
476
+ .@{prefix}-avatar-content {
477
+ background: linear-gradient(
478
+ 90deg,
479
+ rgba(255, 255, 255, 0.08) 25%,
480
+ rgba(255, 255, 255, 0.12) 37%,
481
+ rgba(255, 255, 255, 0.08) 63%
482
+ );
483
+ background-size: 400% 100%;
484
+ }
485
+ }
486
+ }
487
+
@@ -0,0 +1,25 @@
1
+ import React, { ReactNode, CSSProperties } from 'react';
2
+ import './style.less';
3
+ /** Spin 属性 */
4
+ export interface SpinProps {
5
+ /** 是否显示加载中 */
6
+ spinning?: boolean;
7
+ /** 自定义指示符 */
8
+ indicator?: ReactNode;
9
+ /** 尺寸 */
10
+ size?: 'small' | 'default' | 'large';
11
+ /** 提示文字 */
12
+ tip?: ReactNode;
13
+ /** 延迟显示时间(毫秒) */
14
+ delay?: number;
15
+ /** 包装器类名 */
16
+ wrapperClassName?: string;
17
+ /** 自定义类名 */
18
+ className?: string;
19
+ /** 自定义样式 */
20
+ style?: CSSProperties;
21
+ /** 子元素 */
22
+ children?: ReactNode;
23
+ }
24
+ export declare const Spin: React.FC<SpinProps>;
25
+ export default Spin;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Spin = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ require("./style.less");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // ============ 类型定义 ============
17
+ /** Spin 属性 */
18
+ // ============ 默认指示符 ============
19
+ var DefaultIndicator = function DefaultIndicator() {
20
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
21
+ className: "kage-spin-dot",
22
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
23
+ className: "kage-spin-dot-item"
24
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
25
+ className: "kage-spin-dot-item"
26
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
27
+ className: "kage-spin-dot-item"
28
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
29
+ className: "kage-spin-dot-item"
30
+ })]
31
+ });
32
+ };
33
+
34
+ // ============ Spin 组件 ============
35
+ var Spin = exports.Spin = function Spin(_ref) {
36
+ var _ref$spinning = _ref.spinning,
37
+ spinning = _ref$spinning === void 0 ? true : _ref$spinning,
38
+ indicator = _ref.indicator,
39
+ _ref$size = _ref.size,
40
+ size = _ref$size === void 0 ? 'default' : _ref$size,
41
+ tip = _ref.tip,
42
+ _ref$delay = _ref.delay,
43
+ delay = _ref$delay === void 0 ? 0 : _ref$delay,
44
+ _ref$wrapperClassName = _ref.wrapperClassName,
45
+ wrapperClassName = _ref$wrapperClassName === void 0 ? '' : _ref$wrapperClassName,
46
+ _ref$className = _ref.className,
47
+ className = _ref$className === void 0 ? '' : _ref$className,
48
+ style = _ref.style,
49
+ children = _ref.children;
50
+ var _React$useState = _react.default.useState(false),
51
+ _React$useState2 = _slicedToArray(_React$useState, 2),
52
+ delayedSpinning = _React$useState2[0],
53
+ setDelayedSpinning = _React$useState2[1];
54
+ _react.default.useEffect(function () {
55
+ if (spinning && delay > 0) {
56
+ var timer = setTimeout(function () {
57
+ setDelayedSpinning(true);
58
+ }, delay);
59
+ return function () {
60
+ return clearTimeout(timer);
61
+ };
62
+ } else {
63
+ setDelayedSpinning(spinning);
64
+ }
65
+ }, [spinning, delay]);
66
+ var indicatorNode = indicator || /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultIndicator, {});
67
+ var spinClassNames = ['kage-spin', "kage-spin-".concat(size), delayedSpinning && 'kage-spin-spinning', className].filter(Boolean).join(' ');
68
+ var containerClassNames = ['kage-spin-container', delayedSpinning && 'kage-spin-container-blur', wrapperClassName].filter(Boolean).join(' ');
69
+
70
+ // 如果没有子元素,直接显示 Spin
71
+ if (!children) {
72
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
73
+ className: spinClassNames,
74
+ style: style,
75
+ children: [indicatorNode, tip && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
76
+ className: "kage-spin-tip",
77
+ children: tip
78
+ })]
79
+ });
80
+ }
81
+
82
+ // 有子元素时,包装显示
83
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
84
+ className: containerClassNames,
85
+ style: style,
86
+ children: [delayedSpinning && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
87
+ className: spinClassNames,
88
+ children: [indicatorNode, tip && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
89
+ className: "kage-spin-tip",
90
+ children: tip
91
+ })]
92
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
93
+ className: "kage-spin-children",
94
+ children: children
95
+ })]
96
+ });
97
+ };
98
+ var _default = exports.default = Spin;