deepsea-components 5.11.6 → 5.12.1

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 (219) hide show
  1. package/dist/components/AutoFit.cjs +116 -0
  2. package/dist/components/AutoFit.js +82 -0
  3. package/dist/components/AutoScroll.cjs +125 -0
  4. package/dist/components/AutoScroll.js +91 -0
  5. package/dist/components/AutoSizeTextarea.cjs +73 -0
  6. package/dist/components/AutoSizeTextarea.js +39 -0
  7. package/dist/components/CircleText.cjs +68 -0
  8. package/dist/components/CircleText.js +34 -0
  9. package/dist/components/CopyButton.cjs +73 -0
  10. package/dist/{cjs/components → components}/CopyButton.d.ts +3 -3
  11. package/dist/components/CopyButton.js +27 -0
  12. package/dist/components/Echart.cjs +74 -0
  13. package/dist/components/Echart.js +34 -0
  14. package/dist/components/Flow.cjs +211 -0
  15. package/dist/components/Flow.js +168 -0
  16. package/dist/components/FormLabel.cjs +77 -0
  17. package/dist/components/FormLabel.js +37 -0
  18. package/dist/components/HlsPlayer.cjs +76 -0
  19. package/dist/components/HlsPlayer.js +32 -0
  20. package/dist/components/InfiniteScroll.cjs +135 -0
  21. package/dist/{cjs/components → components}/InfiniteScroll.d.ts +7 -7
  22. package/dist/components/InfiniteScroll.js +101 -0
  23. package/dist/components/InputFile.cjs +102 -0
  24. package/dist/components/InputFile.js +65 -0
  25. package/dist/components/InputFileButton.cjs +109 -0
  26. package/dist/components/InputFileButton.js +75 -0
  27. package/dist/components/LoopSwiper.cjs +147 -0
  28. package/dist/components/LoopSwiper.js +113 -0
  29. package/dist/components/ReadExcel.cjs +48 -0
  30. package/dist/components/ReadExcel.js +14 -0
  31. package/dist/components/Ring.cjs +53 -0
  32. package/dist/components/Ring.js +19 -0
  33. package/dist/components/Scroll.cjs +143 -0
  34. package/dist/components/Scroll.js +54 -0
  35. package/dist/components/SectionRing.cjs +59 -0
  36. package/dist/components/SectionRing.js +25 -0
  37. package/dist/components/Skeleton.cjs +66 -0
  38. package/dist/components/Skeleton.js +32 -0
  39. package/dist/components/Title.cjs +61 -0
  40. package/dist/components/Title.js +27 -0
  41. package/dist/components/TransitionBox.cjs +79 -0
  42. package/dist/components/TransitionBox.js +45 -0
  43. package/dist/components/TransitionNum.cjs +83 -0
  44. package/dist/components/TransitionNum.js +49 -0
  45. package/dist/components/Trapezium.cjs +67 -0
  46. package/dist/components/Trapezium.js +33 -0
  47. package/dist/components/Unify.cjs +68 -0
  48. package/dist/components/Unify.js +31 -0
  49. package/dist/components/WriteExcel.cjs +50 -0
  50. package/dist/components/WriteExcel.js +16 -0
  51. package/dist/index.cjs +285 -0
  52. package/dist/index.js +26 -0
  53. package/dist/utils/getReactVersion.cjs +40 -0
  54. package/dist/utils/getReactVersion.js +6 -0
  55. package/dist/utils/index.cjs +57 -0
  56. package/dist/utils/index.js +17 -0
  57. package/package.json +26 -17
  58. package/src/components/WriteExcel.tsx +25 -25
  59. package/tsconfig.json +16 -0
  60. package/dist/cjs/components/AutoFit.js +0 -106
  61. package/dist/cjs/components/AutoFit.js.map +0 -7
  62. package/dist/cjs/components/AutoScroll.js +0 -127
  63. package/dist/cjs/components/AutoScroll.js.map +0 -7
  64. package/dist/cjs/components/AutoSizeTextarea.js +0 -70
  65. package/dist/cjs/components/AutoSizeTextarea.js.map +0 -7
  66. package/dist/cjs/components/CircleText.js +0 -77
  67. package/dist/cjs/components/CircleText.js.map +0 -7
  68. package/dist/cjs/components/CopyButton.js +0 -60
  69. package/dist/cjs/components/CopyButton.js.map +0 -7
  70. package/dist/cjs/components/Echart.js +0 -56
  71. package/dist/cjs/components/Echart.js.map +0 -7
  72. package/dist/cjs/components/Flow.js +0 -220
  73. package/dist/cjs/components/Flow.js.map +0 -7
  74. package/dist/cjs/components/FormLabel.js +0 -42
  75. package/dist/cjs/components/FormLabel.js.map +0 -7
  76. package/dist/cjs/components/HlsPlayer.js +0 -65
  77. package/dist/cjs/components/HlsPlayer.js.map +0 -7
  78. package/dist/cjs/components/InfiniteScroll.js +0 -148
  79. package/dist/cjs/components/InfiniteScroll.js.map +0 -7
  80. package/dist/cjs/components/InputFile.js +0 -90
  81. package/dist/cjs/components/InputFile.js.map +0 -7
  82. package/dist/cjs/components/InputFileButton.js +0 -113
  83. package/dist/cjs/components/InputFileButton.js.map +0 -7
  84. package/dist/cjs/components/LoopSwiper.js +0 -137
  85. package/dist/cjs/components/LoopSwiper.js.map +0 -7
  86. package/dist/cjs/components/ReadExcel.js +0 -36
  87. package/dist/cjs/components/ReadExcel.js.map +0 -7
  88. package/dist/cjs/components/Ring.js +0 -49
  89. package/dist/cjs/components/Ring.js.map +0 -7
  90. package/dist/cjs/components/Scroll.js +0 -103
  91. package/dist/cjs/components/Scroll.js.map +0 -7
  92. package/dist/cjs/components/SectionRing.js +0 -54
  93. package/dist/cjs/components/SectionRing.js.map +0 -7
  94. package/dist/cjs/components/Skeleton.js +0 -66
  95. package/dist/cjs/components/Skeleton.js.map +0 -7
  96. package/dist/cjs/components/Title.js +0 -48
  97. package/dist/cjs/components/Title.js.map +0 -7
  98. package/dist/cjs/components/TransitionBox.js +0 -53
  99. package/dist/cjs/components/TransitionBox.js.map +0 -7
  100. package/dist/cjs/components/TransitionNum.js +0 -62
  101. package/dist/cjs/components/TransitionNum.js.map +0 -7
  102. package/dist/cjs/components/Trapezium.js +0 -69
  103. package/dist/cjs/components/Trapezium.js.map +0 -7
  104. package/dist/cjs/components/Unify.js +0 -48
  105. package/dist/cjs/components/Unify.js.map +0 -7
  106. package/dist/cjs/components/WriteExcel.js +0 -45
  107. package/dist/cjs/components/WriteExcel.js.map +0 -7
  108. package/dist/cjs/index.js +0 -74
  109. package/dist/cjs/index.js.map +0 -7
  110. package/dist/cjs/utils/getReactVersion.js +0 -34
  111. package/dist/cjs/utils/getReactVersion.js.map +0 -7
  112. package/dist/cjs/utils/index.js +0 -52
  113. package/dist/cjs/utils/index.js.map +0 -7
  114. package/dist/esm/components/AutoFit.d.ts +0 -25
  115. package/dist/esm/components/AutoFit.js +0 -97
  116. package/dist/esm/components/AutoFit.js.map +0 -1
  117. package/dist/esm/components/AutoScroll.d.ts +0 -38
  118. package/dist/esm/components/AutoScroll.js +0 -102
  119. package/dist/esm/components/AutoScroll.js.map +0 -1
  120. package/dist/esm/components/AutoSizeTextarea.d.ts +0 -5
  121. package/dist/esm/components/AutoSizeTextarea.js +0 -48
  122. package/dist/esm/components/AutoSizeTextarea.js.map +0 -1
  123. package/dist/esm/components/CircleText.d.ts +0 -25
  124. package/dist/esm/components/CircleText.js +0 -49
  125. package/dist/esm/components/CircleText.js.map +0 -1
  126. package/dist/esm/components/CopyButton.d.ts +0 -13
  127. package/dist/esm/components/CopyButton.js +0 -31
  128. package/dist/esm/components/CopyButton.js.map +0 -1
  129. package/dist/esm/components/Echart.d.ts +0 -15
  130. package/dist/esm/components/Echart.js +0 -41
  131. package/dist/esm/components/Echart.js.map +0 -1
  132. package/dist/esm/components/Flow.d.ts +0 -86
  133. package/dist/esm/components/Flow.js +0 -186
  134. package/dist/esm/components/Flow.js.map +0 -1
  135. package/dist/esm/components/FormLabel.d.ts +0 -22
  136. package/dist/esm/components/FormLabel.js +0 -52
  137. package/dist/esm/components/FormLabel.js.map +0 -1
  138. package/dist/esm/components/HlsPlayer.d.ts +0 -5
  139. package/dist/esm/components/HlsPlayer.js +0 -36
  140. package/dist/esm/components/HlsPlayer.js.map +0 -1
  141. package/dist/esm/components/InfiniteScroll.d.ts +0 -54
  142. package/dist/esm/components/InfiniteScroll.js +0 -102
  143. package/dist/esm/components/InfiniteScroll.js.map +0 -1
  144. package/dist/esm/components/InputFile.d.ts +0 -26
  145. package/dist/esm/components/InputFile.js +0 -78
  146. package/dist/esm/components/InputFile.js.map +0 -1
  147. package/dist/esm/components/InputFileButton.d.ts +0 -11
  148. package/dist/esm/components/InputFileButton.js +0 -95
  149. package/dist/esm/components/InputFileButton.js.map +0 -1
  150. package/dist/esm/components/LoopSwiper.d.ts +0 -9
  151. package/dist/esm/components/LoopSwiper.js +0 -122
  152. package/dist/esm/components/LoopSwiper.js.map +0 -1
  153. package/dist/esm/components/ReadExcel.d.ts +0 -8
  154. package/dist/esm/components/ReadExcel.js +0 -19
  155. package/dist/esm/components/ReadExcel.js.map +0 -1
  156. package/dist/esm/components/Ring.d.ts +0 -7
  157. package/dist/esm/components/Ring.js +0 -26
  158. package/dist/esm/components/Ring.js.map +0 -1
  159. package/dist/esm/components/Scroll.d.ts +0 -24
  160. package/dist/esm/components/Scroll.js +0 -67
  161. package/dist/esm/components/Scroll.js.map +0 -1
  162. package/dist/esm/components/SectionRing.d.ts +0 -8
  163. package/dist/esm/components/SectionRing.js +0 -33
  164. package/dist/esm/components/SectionRing.js.map +0 -1
  165. package/dist/esm/components/Skeleton.d.ts +0 -5
  166. package/dist/esm/components/Skeleton.js +0 -38
  167. package/dist/esm/components/Skeleton.js.map +0 -1
  168. package/dist/esm/components/Title.d.ts +0 -3
  169. package/dist/esm/components/Title.js +0 -26
  170. package/dist/esm/components/Title.js.map +0 -1
  171. package/dist/esm/components/TransitionBox.d.ts +0 -10
  172. package/dist/esm/components/TransitionBox.js +0 -50
  173. package/dist/esm/components/TransitionBox.js.map +0 -1
  174. package/dist/esm/components/TransitionNum.d.ts +0 -16
  175. package/dist/esm/components/TransitionNum.js +0 -65
  176. package/dist/esm/components/TransitionNum.js.map +0 -1
  177. package/dist/esm/components/Trapezium.d.ts +0 -9
  178. package/dist/esm/components/Trapezium.js +0 -43
  179. package/dist/esm/components/Trapezium.js.map +0 -1
  180. package/dist/esm/components/Unify.d.ts +0 -13
  181. package/dist/esm/components/Unify.js +0 -47
  182. package/dist/esm/components/Unify.js.map +0 -1
  183. package/dist/esm/components/WriteExcel.d.ts +0 -8
  184. package/dist/esm/components/WriteExcel.js +0 -23
  185. package/dist/esm/components/WriteExcel.js.map +0 -1
  186. package/dist/esm/index.d.ts +0 -26
  187. package/dist/esm/index.js +0 -27
  188. package/dist/esm/index.js.map +0 -1
  189. package/dist/esm/utils/getReactVersion.d.ts +0 -1
  190. package/dist/esm/utils/getReactVersion.js +0 -6
  191. package/dist/esm/utils/getReactVersion.js.map +0 -1
  192. package/dist/esm/utils/index.d.ts +0 -9
  193. package/dist/esm/utils/index.js +0 -17
  194. package/dist/esm/utils/index.js.map +0 -1
  195. /package/dist/{cjs/components → components}/AutoFit.d.ts +0 -0
  196. /package/dist/{cjs/components → components}/AutoScroll.d.ts +0 -0
  197. /package/dist/{cjs/components → components}/AutoSizeTextarea.d.ts +0 -0
  198. /package/dist/{cjs/components → components}/CircleText.d.ts +0 -0
  199. /package/dist/{cjs/components → components}/Echart.d.ts +0 -0
  200. /package/dist/{cjs/components → components}/Flow.d.ts +0 -0
  201. /package/dist/{cjs/components → components}/FormLabel.d.ts +0 -0
  202. /package/dist/{cjs/components → components}/HlsPlayer.d.ts +0 -0
  203. /package/dist/{cjs/components → components}/InputFile.d.ts +0 -0
  204. /package/dist/{cjs/components → components}/InputFileButton.d.ts +0 -0
  205. /package/dist/{cjs/components → components}/LoopSwiper.d.ts +0 -0
  206. /package/dist/{cjs/components → components}/ReadExcel.d.ts +0 -0
  207. /package/dist/{cjs/components → components}/Ring.d.ts +0 -0
  208. /package/dist/{cjs/components → components}/Scroll.d.ts +0 -0
  209. /package/dist/{cjs/components → components}/SectionRing.d.ts +0 -0
  210. /package/dist/{cjs/components → components}/Skeleton.d.ts +0 -0
  211. /package/dist/{cjs/components → components}/Title.d.ts +0 -0
  212. /package/dist/{cjs/components → components}/TransitionBox.d.ts +0 -0
  213. /package/dist/{cjs/components → components}/TransitionNum.d.ts +0 -0
  214. /package/dist/{cjs/components → components}/Trapezium.d.ts +0 -0
  215. /package/dist/{cjs/components → components}/Unify.d.ts +0 -0
  216. /package/dist/{cjs/components → components}/WriteExcel.d.ts +0 -0
  217. /package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
  218. /package/dist/{cjs/utils → utils}/getReactVersion.d.ts +0 -0
  219. /package/dist/{cjs/utils → utils}/index.d.ts +0 -0
@@ -1,220 +0,0 @@
1
- "use client";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/components/Flow.tsx
21
- var Flow_exports = {};
22
- __export(Flow_exports, {
23
- Flow: () => Flow,
24
- ManualFlow: () => ManualFlow,
25
- getGapCountAndSize: () => getGapCountAndSize,
26
- getGapRange: () => getGapRange
27
- });
28
- module.exports = __toCommonJS(Flow_exports);
29
- var import_react = require("react");
30
- var import_css = require("@emotion/css");
31
- var import_deepsea_tools = require("deepsea-tools");
32
- var import_soda_hooks = require("soda-hooks");
33
- var import_utils = require("../utils");
34
- function getGapRange(gap) {
35
- if (typeof gap === "number")
36
- return [gap, gap];
37
- if (Array.isArray(gap))
38
- return [typeof gap[0] === "number" ? gap[0] : 0, gap[1]];
39
- return [0, "auto"];
40
- }
41
- function getGapCountAndSize(width, itemWidth, minGap, maxGap) {
42
- const count = Math.floor((width + minGap) / (itemWidth + minGap)) || 1;
43
- if (count === 1)
44
- return { count, gap: 0 };
45
- const averageGap = (width - itemWidth * count) / (count - 1);
46
- if (averageGap < minGap)
47
- return { count, gap: minGap };
48
- if (maxGap !== "auto" && averageGap > maxGap)
49
- return { count, gap: maxGap };
50
- return { count, gap: averageGap };
51
- }
52
- function ManualFlow(props) {
53
- let {
54
- itemWidth,
55
- itemHeight,
56
- columnGap,
57
- rowGap,
58
- maxRows,
59
- data = [],
60
- render,
61
- keyExactor,
62
- className,
63
- style,
64
- wrapperClassName,
65
- wrapperStyle,
66
- throttle,
67
- transitionDuration,
68
- onSizeChange,
69
- containerClassName,
70
- containerStyle,
71
- gap = 0,
72
- width,
73
- element,
74
- ...rest
75
- } = props;
76
- rowGap ??= gap;
77
- columnGap ??= gap;
78
- const [minColumnGap, maxColumnGap] = getGapRange(columnGap);
79
- const [{ count: columnCount, gap: columnGapSize }, setGapAndCount] = (0, import_react.useState)(() => getGapCountAndSize(width, itemWidth, minColumnGap, maxColumnGap));
80
- const ele = (0, import_react.useRef)(null);
81
- const contentRows = Math.ceil(data.length / columnCount);
82
- const contentShownRows = typeof maxRows === "number" ? Math.min(contentRows, maxRows) : contentRows;
83
- const height = contentShownRows > 0 ? contentShownRows * (itemHeight + rowGap) - rowGap : 0;
84
- function getPosition(index) {
85
- const y = Math.floor(index / columnCount);
86
- const x = index - y * columnCount;
87
- return {
88
- left: x * (itemWidth + columnGapSize),
89
- top: y * (itemHeight + rowGap)
90
- };
91
- }
92
- function getHidden(index) {
93
- if (typeof maxRows !== "number")
94
- return false;
95
- return index >= maxRows * columnCount;
96
- }
97
- (0, import_react.useImperativeHandle)(element, () => ele.current, [ele.current]);
98
- (0, import_react.useEffect)(() => {
99
- function task() {
100
- setGapAndCount(getGapCountAndSize(width, itemWidth, minColumnGap, maxColumnGap));
101
- }
102
- if (throttle === 0)
103
- return task();
104
- const timeout = setTimeout(task, throttle || 200);
105
- return () => clearTimeout(timeout);
106
- }, [width, itemWidth, throttle, minColumnGap, maxColumnGap]);
107
- (0, import_react.useEffect)(() => {
108
- onSizeChange?.({
109
- width,
110
- height,
111
- itemWidth,
112
- itemHeight,
113
- columnGap: columnGapSize,
114
- columnCount,
115
- rowGap,
116
- rowCount: contentShownRows,
117
- overflow: data.length > contentShownRows * columnCount,
118
- itemCount: data.length,
119
- maxRows: maxRows ?? null
120
- });
121
- }, [width, height, columnGapSize, columnCount, rowGap, contentShownRows, data.length, itemWidth, itemHeight, maxRows]);
122
- return /* @__PURE__ */ React.createElement(
123
- "div",
124
- {
125
- ref: ele,
126
- className: (0, import_deepsea_tools.clsx)(
127
- import_css.css`
128
- position: relative;
129
- height: var(--height);
130
- overflow: hidden;
131
- `,
132
- className
133
- ),
134
- style: (0, import_utils.transformCSSVariable)({ height: (0, import_utils.px)(height) }, style),
135
- ...rest
136
- },
137
- data.map((item, index, arr) => /* @__PURE__ */ React.createElement(
138
- "div",
139
- {
140
- key: keyExactor ? keyExactor(item, index, arr) : index,
141
- className: (0, import_deepsea_tools.clsx)(
142
- import_css.css`
143
- position: absolute;
144
- width: var(--width);
145
- height: var(--height);
146
- transition: var(--transition);
147
- left: 0;
148
- top: 0;
149
- transform: translate(var(--left), var(--top));
150
- `,
151
- wrapperClassName
152
- ),
153
- style: (0, import_utils.transformCSSVariable)(
154
- {
155
- width: (0, import_utils.px)(itemWidth),
156
- height: (0, import_utils.px)(itemHeight),
157
- transition: transitionDuration === 0 ? "none" : `all ${transitionDuration || 400}ms`,
158
- left: (0, import_utils.px)(getPosition(index).left),
159
- top: (0, import_utils.px)(getPosition(index).top)
160
- },
161
- wrapperStyle
162
- )
163
- },
164
- /* @__PURE__ */ React.createElement(
165
- "div",
166
- {
167
- className: (0, import_deepsea_tools.clsx)(
168
- import_css.css`
169
- width: 100%;
170
- height: 100%;
171
- display: var(--display);
172
- `,
173
- containerClassName
174
- ),
175
- style: (0, import_utils.transformCSSVariable)({ display: getHidden(index) ? "none" : "block" }, containerStyle)
176
- },
177
- render(item, index, arr)
178
- )
179
- ))
180
- );
181
- }
182
- function Flow(props) {
183
- const {
184
- itemWidth,
185
- itemHeight,
186
- columnGap,
187
- rowGap,
188
- gap,
189
- maxRows,
190
- data,
191
- render,
192
- keyExactor,
193
- wrapperClassName,
194
- wrapperStyle,
195
- containerClassName,
196
- containerStyle,
197
- throttle,
198
- transitionDuration,
199
- onSizeChange,
200
- element,
201
- ...rest
202
- } = props;
203
- const ele = (0, import_react.useRef)(null);
204
- const size = (0, import_soda_hooks.useSize)(ele);
205
- const width = (0, import_react.useRef)(size?.width || 0);
206
- if (size && size.width !== 0)
207
- width.current = size.width;
208
- (0, import_react.useImperativeHandle)(element, () => ele.current, [ele.current]);
209
- if (width.current === 0)
210
- return /* @__PURE__ */ React.createElement("div", { ref: ele, ...rest });
211
- return /* @__PURE__ */ React.createElement(ManualFlow, { element: ele, ...props, width: width.current });
212
- }
213
- // Annotate the CommonJS export names for ESM import in node:
214
- 0 && (module.exports = {
215
- Flow,
216
- ManualFlow,
217
- getGapCountAndSize,
218
- getGapRange
219
- });
220
- //# sourceMappingURL=Flow.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Flow.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { CSSProperties, HTMLAttributes, Key, ReactNode, Ref, useEffect, useImperativeHandle, useRef, useState } from \"react\"\nimport { css } from \"@emotion/css\"\nimport { clsx } from \"deepsea-tools\"\nimport { useSize } from \"soda-hooks\"\n\nimport { px, transformCSSVariable } from \"@/utils\"\n\nexport interface FlowSizeData {\n /** 容器宽度 */\n width: number\n /** 容器高度 */\n height: number\n /** 元素宽度 */\n itemWidth: number\n /** 元素高度 */\n itemHeight: number\n /** 列间距 */\n columnGap: number\n /** 列数 */\n columnCount: number\n /** 行间距 */\n rowGap: number\n /** 行数 */\n rowCount: number\n /** 元素格数 */\n itemCount: number\n /** 最大行数 */\n maxRows: number | null\n /** 是否有元素被隐藏 */\n overflow: boolean\n}\n\nexport interface FlowProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** 元素宽度 */\n itemWidth: number\n /** 元素高度 */\n itemHeight: number\n /**\n * 列间距\n * 1. 如果是数字,表示列间距是固定的\n * 2. 如果是 auto,表示会在尽可能放进更多列的情况下,列间距是平均的\n * 2. 如果是数组,表示列间距是区间的,第一个元素是最小值,第二个元素是最大值\n */\n columnGap?: number | \"auto\" | [number | \"auto\", number | \"auto\"]\n /** 行间距 */\n rowGap?: number\n gap?: number\n /** 最大行数 */\n maxRows?: number | null\n /** 源数据 */\n data?: T[]\n /** 渲染 */\n render: (item: T, index: number, arr: T[]) => ReactNode\n /** key释放器,默认为 index */\n keyExactor?: (item: T, index: number, arr: T[]) => Key\n /**\n * 渲染的元素由两层容器包裹,外层容器类名\n */\n wrapperClassName?: string\n /**\n * 渲染的元素由两层容器包裹,外层容器样式\n */\n wrapperStyle?: CSSProperties\n /**\n * 渲染的元素由两层容器包裹,内层容器类名\n */\n containerClassName?: string\n /**\n * 渲染的元素由两层容器包裹,内层容器样式\n */\n containerStyle?: CSSProperties\n /** 节流时间,单位毫秒,默认200ms,传入 0 不节流 */\n throttle?: number\n /** 动画时间,单位毫秒,默认400ms,传入 0 不展示动画 */\n transitionDuration?: number\n /** 变化的回调函数 */\n onSizeChange?: (sizeData: FlowSizeData) => void\n element?: Ref<HTMLDivElement>\n}\n\nexport function getGapRange(gap?: undefined | number | \"auto\" | (number | \"auto\")[]): [number, number | \"auto\"] {\n if (typeof gap === \"number\") return [gap, gap]\n if (Array.isArray(gap)) return [typeof gap[0] === \"number\" ? gap[0] : 0, gap[1]]\n return [0, \"auto\"]\n}\n\nexport interface GapAndCount {\n count: number\n gap: number\n}\n\nexport function getGapCountAndSize(width: number, itemWidth: number, minGap: number, maxGap: number | \"auto\"): GapAndCount {\n const count = Math.floor((width + minGap) / (itemWidth + minGap)) || 1\n if (count === 1) return { count, gap: 0 }\n const averageGap = (width - itemWidth * count) / (count - 1)\n if (averageGap < minGap) return { count, gap: minGap }\n if (maxGap !== \"auto\" && averageGap > maxGap) return { count, gap: maxGap }\n return { count, gap: averageGap }\n}\n\nexport interface ManualFlowProps<T> extends FlowProps<T> {\n /** 组件宽度,必须指定 */\n width: number\n}\n\n/** 手动组件,由外界指定宽度,性能更好 */\nexport function ManualFlow<T>(props: ManualFlowProps<T>) {\n let {\n itemWidth,\n itemHeight,\n columnGap,\n rowGap,\n maxRows,\n data = [],\n render,\n keyExactor,\n className,\n style,\n wrapperClassName,\n wrapperStyle,\n throttle,\n transitionDuration,\n onSizeChange,\n containerClassName,\n containerStyle,\n gap = 0,\n width,\n element,\n ...rest\n } = props\n rowGap ??= gap\n columnGap ??= gap\n const [minColumnGap, maxColumnGap] = getGapRange(columnGap)\n const [{ count: columnCount, gap: columnGapSize }, setGapAndCount] = useState(() => getGapCountAndSize(width, itemWidth, minColumnGap, maxColumnGap))\n const ele = useRef<HTMLDivElement>(null)\n const contentRows = Math.ceil(data.length / columnCount)\n const contentShownRows = typeof maxRows === \"number\" ? Math.min(contentRows, maxRows) : contentRows\n const height = contentShownRows > 0 ? contentShownRows * (itemHeight + rowGap) - rowGap : 0\n\n function getPosition(index: number) {\n const y = Math.floor(index / columnCount)\n const x = index - y * columnCount\n return {\n left: x * (itemWidth + columnGapSize),\n top: y * (itemHeight + rowGap!),\n }\n }\n\n function getHidden(index: number) {\n if (typeof maxRows !== \"number\") return false\n return index >= maxRows * columnCount\n }\n\n useImperativeHandle(element, () => ele.current!, [ele.current])\n\n useEffect(() => {\n function task() {\n setGapAndCount(getGapCountAndSize(width, itemWidth, minColumnGap, maxColumnGap))\n }\n if (throttle === 0) return task()\n const timeout = setTimeout(task, throttle || 200)\n return () => clearTimeout(timeout)\n }, [width, itemWidth, throttle, minColumnGap, maxColumnGap])\n\n useEffect(() => {\n onSizeChange?.({\n width,\n height,\n itemWidth,\n itemHeight,\n columnGap: columnGapSize,\n columnCount,\n rowGap: rowGap!,\n rowCount: contentShownRows,\n overflow: data.length > contentShownRows * columnCount,\n itemCount: data.length,\n maxRows: maxRows ?? null,\n })\n }, [width, height, columnGapSize, columnCount, rowGap, contentShownRows, data.length, itemWidth, itemHeight, maxRows])\n\n return (\n <div\n ref={ele}\n className={clsx(\n css`\n position: relative;\n height: var(--height);\n overflow: hidden;\n `,\n className,\n )}\n style={transformCSSVariable({ height: px(height) }, style)}\n {...rest}\n >\n {data.map((item, index, arr) => (\n <div\n key={keyExactor ? keyExactor(item, index, arr) : index}\n className={clsx(\n css`\n position: absolute;\n width: var(--width);\n height: var(--height);\n transition: var(--transition);\n left: 0;\n top: 0;\n transform: translate(var(--left), var(--top));\n `,\n wrapperClassName,\n )}\n style={transformCSSVariable(\n {\n width: px(itemWidth),\n height: px(itemHeight),\n transition: transitionDuration === 0 ? \"none\" : `all ${transitionDuration || 400}ms`,\n left: px(getPosition(index).left),\n top: px(getPosition(index).top),\n },\n wrapperStyle,\n )}\n >\n <div\n className={clsx(\n css`\n width: 100%;\n height: 100%;\n display: var(--display);\n `,\n containerClassName,\n )}\n style={transformCSSVariable({ display: getHidden(index) ? \"none\" : \"block\" }, containerStyle)}\n >\n {render(item, index, arr)}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/** 自适应浮动组件 */\nexport function Flow<T>(props: FlowProps<T>): ReactNode {\n const {\n itemWidth,\n itemHeight,\n columnGap,\n rowGap,\n gap,\n maxRows,\n data,\n render,\n keyExactor,\n wrapperClassName,\n wrapperStyle,\n containerClassName,\n containerStyle,\n throttle,\n transitionDuration,\n onSizeChange,\n element,\n ...rest\n } = props\n const ele = useRef<HTMLDivElement>(null)\n const size = useSize(ele)\n const width = useRef(size?.width || 0)\n if (size && size.width !== 0) width.current = size.width\n useImperativeHandle(element, () => ele.current!, [ele.current])\n if (width.current === 0) return <div ref={ele} {...rest} />\n return <ManualFlow element={ele} {...props} width={width.current} />\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,42 +0,0 @@
1
- "use client";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/components/FormLabel.tsx
21
- var FormLabel_exports = {};
22
- __export(FormLabel_exports, {
23
- FormLabel: () => FormLabel,
24
- FormLabelConfigContext: () => FormLabelConfigContext,
25
- FormLabelConfigProvider: () => FormLabelConfigProvider
26
- });
27
- module.exports = __toCommonJS(FormLabel_exports);
28
- var import_react = require("react");
29
- var FormLabelConfigContext = (0, import_react.createContext)({});
30
- var FormLabelConfigProvider = ({ width, before, children }) => /* @__PURE__ */ React.createElement(FormLabelConfigContext.Provider, { value: { width, before } }, children);
31
- var FormLabel = (props) => {
32
- const { width: _width, before: _before } = (0, import_react.useContext)(FormLabelConfigContext);
33
- const { style, width = _width, before = _before, ...rest } = props;
34
- return /* @__PURE__ */ React.createElement(import_react.Fragment, null, !!before && /* @__PURE__ */ React.createElement("div", { style: { width: 11, color: "transparent", userSelect: "none" } }, " "), /* @__PURE__ */ React.createElement("div", { style: { width, textAlign: "justify", textAlignLast: "justify", ...style }, ...rest }));
35
- };
36
- // Annotate the CommonJS export names for ESM import in node:
37
- 0 && (module.exports = {
38
- FormLabel,
39
- FormLabelConfigContext,
40
- FormLabelConfigProvider
41
- });
42
- //# sourceMappingURL=FormLabel.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/FormLabel.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ComponentPropsWithoutRef, FC, Fragment, ReactNode, createContext, useContext } from \"react\"\n\nexport interface FormLabelConfig {\n /**\n * Label 的宽度.\n */\n width?: number\n /**\n * 是否在 Label 前面添加一个空白区域,只有当前 Label 为非必选,而存在其他 Label 为必选的时候开启\n */\n before?: boolean | number\n}\n\nexport interface FormLabelProps extends ComponentPropsWithoutRef<\"div\">, FormLabelConfig {}\n\nexport const FormLabelConfigContext = createContext<Partial<FormLabelConfig>>({})\n\nexport interface FormLabelConfigProviderProps extends FormLabelConfig {\n children?: ReactNode\n}\n\nexport const FormLabelConfigProvider: FC<FormLabelConfigProviderProps> = ({ width, before, children }) => (\n <FormLabelConfigContext.Provider value={{ width, before }}>{children}</FormLabelConfigContext.Provider>\n)\n\n/**\n * 为 Ant Design 的 FormItem 设计的 Label 组件\n */\nexport const FormLabel: FC<FormLabelProps> = props => {\n const { width: _width, before: _before } = useContext(FormLabelConfigContext)\n const { style, width = _width, before = _before, ...rest } = props\n\n return (\n <Fragment>\n {!!before && <div style={{ width: 11, color: \"transparent\", userSelect: \"none\" }}>&ensp;</div>}\n <div style={{ width, textAlign: \"justify\", textAlignLast: \"justify\", ...style }} {...rest} />\n </Fragment>\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6F;AAetF,IAAM,6BAAyB,4BAAwC,CAAC,CAAC;AAMzE,IAAM,0BAA4D,CAAC,EAAE,OAAO,QAAQ,SAAS,MAChG,oCAAC,uBAAuB,UAAvB,EAAgC,OAAO,EAAE,OAAO,OAAO,KAAI,QAAS;AAMlE,IAAM,YAAgC,WAAS;AAClD,QAAM,EAAE,OAAO,QAAQ,QAAQ,QAAQ,QAAI,yBAAW,sBAAsB;AAC5E,QAAM,EAAE,OAAO,QAAQ,QAAQ,SAAS,SAAS,GAAG,KAAK,IAAI;AAE7D,SACI,oCAAC,6BACI,CAAC,CAAC,UAAU,oCAAC,SAAI,OAAO,EAAE,OAAO,IAAI,OAAO,eAAe,YAAY,OAAO,KAAG,GAAM,GACxF,oCAAC,SAAI,OAAO,EAAE,OAAO,WAAW,WAAW,eAAe,WAAW,GAAG,MAAM,GAAI,GAAG,MAAM,CAC/F;AAER;",
6
- "names": []
7
- }
@@ -1,65 +0,0 @@
1
- "use client";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/components/HlsPlayer.tsx
31
- var HlsPlayer_exports = {};
32
- __export(HlsPlayer_exports, {
33
- HlsPlayer: () => HlsPlayer
34
- });
35
- module.exports = __toCommonJS(HlsPlayer_exports);
36
- var import_react = require("react");
37
- var import_hls = __toESM(require("hls.js"));
38
- var HlsPlayer = (0, import_react.forwardRef)((props, ref) => {
39
- const { src, ...rest } = props;
40
- const video = (0, import_react.useRef)(null);
41
- (0, import_react.useImperativeHandle)(ref, () => video.current, []);
42
- (0, import_react.useEffect)(() => {
43
- const { current: player } = video;
44
- if (!player || !src)
45
- return;
46
- if (player.canPlayType("application/vnd.apple.mpegurl")) {
47
- player.src = src;
48
- return;
49
- }
50
- if (import_hls.default.isSupported()) {
51
- const hls = new import_hls.default();
52
- hls.loadSource(src);
53
- hls.attachMedia(player);
54
- return () => {
55
- hls.destroy();
56
- };
57
- }
58
- }, [src]);
59
- return /* @__PURE__ */ React.createElement("video", { ref: video, ...rest });
60
- });
61
- // Annotate the CommonJS export names for ESM import in node:
62
- 0 && (module.exports = {
63
- HlsPlayer
64
- });
65
- //# sourceMappingURL=HlsPlayer.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/HlsPlayer.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { MediaHTMLAttributes, forwardRef, useEffect, useImperativeHandle, useRef } from \"react\"\nimport Hls from \"hls.js\"\n\nexport interface HlsPlayerProps extends Omit<MediaHTMLAttributes<HTMLVideoElement>, \"src\"> {\n src: string\n}\n\nexport const HlsPlayer = forwardRef<HTMLVideoElement, HlsPlayerProps>((props, ref) => {\n const { src, ...rest } = props\n const video = useRef<HTMLVideoElement>(null)\n\n useImperativeHandle(ref, () => video.current!, [])\n\n useEffect(() => {\n const { current: player } = video\n if (!player || !src) return\n if (player.canPlayType(\"application/vnd.apple.mpegurl\")) {\n player.src = src\n return\n }\n if (Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(src)\n hls.attachMedia(player)\n return () => {\n hls.destroy()\n }\n }\n }, [src])\n\n return <video ref={video} {...rest} />\n})\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAwF;AACxF,iBAAgB;AAMT,IAAM,gBAAY,yBAA6C,CAAC,OAAO,QAAQ;AAClF,QAAM,EAAE,KAAK,GAAG,KAAK,IAAI;AACzB,QAAM,YAAQ,qBAAyB,IAAI;AAE3C,wCAAoB,KAAK,MAAM,MAAM,SAAU,CAAC,CAAC;AAEjD,8BAAU,MAAM;AACZ,UAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,QAAI,CAAC,UAAU,CAAC;AAAK;AACrB,QAAI,OAAO,YAAY,+BAA+B,GAAG;AACrD,aAAO,MAAM;AACb;AAAA,IACJ;AACA,QAAI,WAAAA,QAAI,YAAY,GAAG;AACnB,YAAM,MAAM,IAAI,WAAAA,QAAI;AACpB,UAAI,WAAW,GAAG;AAClB,UAAI,YAAY,MAAM;AACtB,aAAO,MAAM;AACT,YAAI,QAAQ;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,GAAG,CAAC;AAER,SAAO,oCAAC,WAAM,KAAK,OAAQ,GAAG,MAAM;AACxC,CAAC;",
6
- "names": ["Hls"]
7
- }
@@ -1,148 +0,0 @@
1
- "use client";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/components/InfiniteScroll.tsx
21
- var InfiniteScroll_exports = {};
22
- __export(InfiniteScroll_exports, {
23
- InfiniteScroll: () => InfiniteScroll
24
- });
25
- module.exports = __toCommonJS(InfiniteScroll_exports);
26
- var import_react = require("react");
27
- var import_css = require("@emotion/css");
28
- var import_deepsea_tools = require("deepsea-tools");
29
- var import_soda_hooks = require("soda-hooks");
30
- var InfiniteScroll = (0, import_react.forwardRef)((props, ref) => {
31
- const {
32
- className,
33
- direction = "vertical",
34
- children,
35
- containerClassName,
36
- containerStyle,
37
- gap = 0,
38
- duration,
39
- withGap,
40
- withEqual,
41
- pauseOnHover,
42
- onMouseEnter,
43
- onMouseLeave,
44
- ...rest
45
- } = props;
46
- const wrapper = (0, import_react.useRef)(null);
47
- const wrapperSize = (0, import_soda_hooks.useSize)(wrapper);
48
- const ele = (0, import_react.useRef)(null);
49
- (0, import_react.useImperativeHandle)(ref, () => wrapper.current, [wrapper.current]);
50
- const container = (0, import_react.useRef)(null);
51
- const containerSize = (0, import_soda_hooks.useSize)(container);
52
- function bigger(containerSize2, wrapperSize2) {
53
- return withEqual ? containerSize2 + (withGap ? gap : 0) >= wrapperSize2 : containerSize2 + (withGap ? gap : 0) > wrapperSize2;
54
- }
55
- const overflow = wrapperSize && containerSize ? direction === "vertical" ? bigger(containerSize.height, wrapperSize.height) : bigger(containerSize.width, wrapperSize.width) : false;
56
- const animation = (0, import_react.useRef)(void 0);
57
- (0, import_react.useEffect)(() => {
58
- if (!wrapperSize || !containerSize || !overflow)
59
- return;
60
- animation.current = ele.current?.animate(
61
- {
62
- transform: direction === "vertical" ? [`translateY(0)`, `translateY(-${containerSize.height + gap}px)`] : [`translateX(0)`, `translateX(-${containerSize.width + gap}px)`]
63
- },
64
- { duration, iterations: Infinity }
65
- );
66
- return () => animation.current?.cancel();
67
- }, [wrapperSize, containerSize, overflow, direction, duration]);
68
- function enter(e) {
69
- if (pauseOnHover)
70
- animation.current?.pause();
71
- onMouseEnter?.(e);
72
- }
73
- function leave(e) {
74
- if (pauseOnHover)
75
- animation.current?.play();
76
- onMouseLeave?.(e);
77
- }
78
- (0, import_react.useEffect)(() => {
79
- if (!pauseOnHover && animation.current?.playState === "paused")
80
- animation.current?.play();
81
- }, [animation.current, pauseOnHover]);
82
- return /* @__PURE__ */ React.createElement(
83
- "div",
84
- {
85
- ref: wrapper,
86
- className: (0, import_deepsea_tools.clsx)(
87
- import_css.css`
88
- position: relative;
89
- ${direction === "vertical" ? "overflow-y: hidden;" : "overflow-x: hidden;"}
90
- `,
91
- className
92
- ),
93
- onMouseEnter: enter,
94
- onMouseLeave: leave,
95
- ...rest
96
- },
97
- /* @__PURE__ */ React.createElement(
98
- "div",
99
- {
100
- ref: ele,
101
- style: {
102
- position: "absolute",
103
- width: direction === "vertical" ? "100%" : containerSize && (overflow ? containerSize.width * 2 + gap : containerSize.width),
104
- height: direction === "horizontal" ? "100%" : containerSize && (overflow ? containerSize.height * 2 + gap : containerSize.width)
105
- }
106
- },
107
- /* @__PURE__ */ React.createElement(
108
- "div",
109
- {
110
- ref: container,
111
- className: (0, import_deepsea_tools.clsx)(
112
- import_css.css`
113
- position: absolute;
114
- left: 0;
115
- top: 0;
116
- ${direction === "vertical" ? "width: 100%;" : "height: 100%;"}
117
- `,
118
- containerClassName
119
- ),
120
- style: containerStyle
121
- },
122
- children
123
- ),
124
- overflow && /* @__PURE__ */ React.createElement(
125
- "div",
126
- {
127
- ref: container,
128
- className: (0, import_deepsea_tools.clsx)(
129
- import_css.css`
130
- position: absolute;
131
- right: 0;
132
- bottom: 0;
133
- ${direction === "vertical" ? "width: 100%;" : "height: 100%;"}
134
- `,
135
- containerClassName
136
- ),
137
- style: containerStyle
138
- },
139
- children
140
- )
141
- )
142
- );
143
- });
144
- // Annotate the CommonJS export names for ESM import in node:
145
- 0 && (module.exports = {
146
- InfiniteScroll
147
- });
148
- //# sourceMappingURL=InfiniteScroll.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/InfiniteScroll.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { CSSProperties, ComponentPropsWithoutRef, MouseEvent as ReactMouseEvent, forwardRef, useEffect, useImperativeHandle, useRef } from \"react\"\nimport { css } from \"@emotion/css\"\nimport { clsx } from \"deepsea-tools\"\nimport { useSize } from \"soda-hooks\"\n\nexport type InfiniteScrollProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * 滚动的方向\n * @default \"vertical\"\n */\n direction?: \"vertical\" | \"horizontal\"\n /** 渲染 children 的容器的类名 */\n containerClassName?: string\n /** 渲染 children 的容器的样式 */\n containerStyle?: CSSProperties\n /**\n * 两个 children 容器之间的间距\n * @default 0\n */\n gap?: number\n /** 一个周期的时间,单位:毫秒 */\n duration: number\n /** 是否将 gap 的距离也加入 overflow 的计算 */\n withGap?: boolean\n /** 尺寸刚好相同时,是否视为溢出 */\n withEqual?: boolean\n /** 鼠标移入时,是否停止动画 */\n pauseOnHover?: boolean\n}\n\n/**\n * 无限滚动的组件\n * 子元素会内置的容器中被渲染两次,首尾相连,形成无限滚动的效果\n * 但是,如果内部检测到并没有溢出,那么不会渲染两次,并且没有动画\n */\nexport const InfiniteScroll = forwardRef<HTMLDivElement, InfiniteScrollProps>((props, ref) => {\n const {\n className,\n direction = \"vertical\",\n children,\n containerClassName,\n containerStyle,\n gap = 0,\n duration,\n withGap,\n withEqual,\n pauseOnHover,\n onMouseEnter,\n onMouseLeave,\n ...rest\n } = props\n\n const wrapper = useRef<HTMLDivElement>(null)\n const wrapperSize = useSize(wrapper)\n\n const ele = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => wrapper.current as HTMLDivElement, [wrapper.current])\n\n const container = useRef<HTMLDivElement>(null)\n const containerSize = useSize(container)\n\n function bigger(containerSize: number, wrapperSize: number) {\n return withEqual ? containerSize + (withGap ? gap : 0) >= wrapperSize : containerSize + (withGap ? gap : 0) > wrapperSize\n }\n\n const overflow =\n wrapperSize && containerSize\n ? direction === \"vertical\"\n ? bigger(containerSize.height, wrapperSize.height)\n : bigger(containerSize.width, wrapperSize.width)\n : false\n\n const animation = useRef<Animation | undefined>(undefined)\n\n useEffect(() => {\n if (!wrapperSize || !containerSize || !overflow) return\n animation.current = ele.current?.animate(\n {\n transform:\n direction === \"vertical\"\n ? [`translateY(0)`, `translateY(-${containerSize.height + gap}px)`]\n : [`translateX(0)`, `translateX(-${containerSize.width + gap}px)`],\n },\n { duration, iterations: Infinity },\n )\n return () => animation.current?.cancel()\n }, [wrapperSize, containerSize, overflow, direction, duration])\n\n function enter(e: ReactMouseEvent<HTMLDivElement, MouseEvent>) {\n if (pauseOnHover) animation.current?.pause()\n onMouseEnter?.(e)\n }\n\n function leave(e: ReactMouseEvent<HTMLDivElement, MouseEvent>) {\n if (pauseOnHover) animation.current?.play()\n onMouseLeave?.(e)\n }\n\n useEffect(() => {\n if (!pauseOnHover && animation.current?.playState === \"paused\") animation.current?.play()\n }, [animation.current, pauseOnHover])\n\n return (\n <div\n ref={wrapper}\n className={clsx(\n css`\n position: relative;\n ${direction === \"vertical\" ? \"overflow-y: hidden;\" : \"overflow-x: hidden;\"}\n `,\n className,\n )}\n onMouseEnter={enter}\n onMouseLeave={leave}\n {...rest}\n >\n <div\n ref={ele}\n style={{\n position: \"absolute\",\n width: direction === \"vertical\" ? \"100%\" : containerSize && (overflow ? containerSize.width * 2 + gap : containerSize.width),\n height: direction === \"horizontal\" ? \"100%\" : containerSize && (overflow ? containerSize.height * 2 + gap : containerSize.width),\n }}\n >\n <div\n ref={container}\n className={clsx(\n css`\n position: absolute;\n left: 0;\n top: 0;\n ${direction === \"vertical\" ? \"width: 100%;\" : \"height: 100%;\"}\n `,\n containerClassName,\n )}\n style={containerStyle}\n >\n {children}\n </div>\n {overflow && (\n <div\n ref={container}\n className={clsx(\n css`\n position: absolute;\n right: 0;\n bottom: 0;\n ${direction === \"vertical\" ? \"width: 100%;\" : \"height: 100%;\"}\n `,\n containerClassName,\n )}\n style={containerStyle}\n >\n {children}\n </div>\n )}\n </div>\n </div>\n )\n})\n"],
5
- "mappings": "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",
6
- "names": ["containerSize", "wrapperSize"]
7
- }
@@ -1,90 +0,0 @@
1
- "use client";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/components/InputFile.tsx
21
- var InputFile_exports = {};
22
- __export(InputFile_exports, {
23
- InputFile: () => InputFile,
24
- getFileData: () => getFileData
25
- });
26
- module.exports = __toCommonJS(InputFile_exports);
27
- var import_react = require("react");
28
- async function getFileData(file, type) {
29
- const fileReader = new FileReader();
30
- switch (type) {
31
- case "arrayBuffer":
32
- fileReader.readAsArrayBuffer(file);
33
- break;
34
- case "binary":
35
- fileReader.readAsBinaryString(file);
36
- break;
37
- case "base64":
38
- fileReader.readAsDataURL(file);
39
- break;
40
- case "text":
41
- fileReader.readAsText(file);
42
- break;
43
- default:
44
- return file;
45
- }
46
- return new Promise((resolve) => {
47
- fileReader.addEventListener("load", () => {
48
- resolve(fileReader.result);
49
- });
50
- });
51
- }
52
- function InputFile(props) {
53
- const { multiple = false, type = "file", onChange: _onChange, disabled: _disabled, clearAfterChange, onValueChange, onFileChange, ...rest } = props;
54
- const [disabled, setDisabled] = (0, import_react.useState)(false);
55
- async function onChange(e) {
56
- _onChange?.(e);
57
- const input = e.target;
58
- const { files } = input;
59
- if (!files || files.length === 0)
60
- return;
61
- setDisabled(true);
62
- try {
63
- if (multiple) {
64
- const files2 = Array.from(files);
65
- const values = [];
66
- for (const file of files2) {
67
- const value = await getFileData(file, type);
68
- values.push(value);
69
- }
70
- onFileChange?.(files2);
71
- onValueChange?.(values);
72
- } else {
73
- const file = files[0];
74
- onFileChange?.(file);
75
- onValueChange?.(await getFileData(file, type));
76
- }
77
- } finally {
78
- if (clearAfterChange)
79
- input.value = "";
80
- setDisabled(false);
81
- }
82
- }
83
- return /* @__PURE__ */ React.createElement("input", { disabled: disabled || _disabled, type: "file", multiple, onChange, ...rest });
84
- }
85
- // Annotate the CommonJS export names for ESM import in node:
86
- 0 && (module.exports = {
87
- InputFile,
88
- getFileData
89
- });
90
- //# sourceMappingURL=InputFile.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/InputFile.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ChangeEvent, ComponentProps, ReactNode, useState } from \"react\"\n\nexport interface InputFileDataTypeMap {\n base64: string\n text: string\n arrayBuffer: ArrayBuffer\n binary: string\n file: File\n}\n\nexport type InputFileDataType = keyof InputFileDataTypeMap\n\nexport async function getFileData<T extends InputFileDataType>(file: File, type: T): Promise<InputFileDataTypeMap[T]> {\n const fileReader = new FileReader()\n switch (type) {\n case \"arrayBuffer\":\n fileReader.readAsArrayBuffer(file)\n break\n case \"binary\":\n fileReader.readAsBinaryString(file)\n break\n case \"base64\":\n fileReader.readAsDataURL(file)\n break\n case \"text\":\n fileReader.readAsText(file)\n break\n default:\n return file as any\n }\n return new Promise(resolve => {\n fileReader.addEventListener(\"load\", () => {\n resolve(fileReader.result as any)\n })\n })\n}\n\nexport interface InputFileBaseProps extends Omit<ComponentProps<\"input\">, \"multiple\" | \"type\"> {}\n\nexport type FileType<Multiple extends boolean> = Multiple extends true ? File[] : File\nexport type ValueType<Multiple extends boolean, Type extends InputFileDataType> = Multiple extends true\n ? InputFileDataTypeMap[Type][]\n : InputFileDataTypeMap[Type]\n\nexport interface InputFileExtraProps<Multiple extends boolean = false, Type extends InputFileDataType = \"file\"> {\n multiple?: Multiple\n type?: Type\n onValueChange?: (data: ValueType<Multiple, Type>) => void\n onFileChange?: (data: FileType<Multiple>) => void\n /** 是否在捕获文件后清除 input 上的文件,默认为 false,主要区别在于如果不清除,连续两次选择同样的文件不会触发 onChange 事件,如果用于 form 表单,请设置为 flase */\n clearAfterChange?: boolean\n}\n\nexport interface InputFileProps<Multiple extends boolean = false, Type extends InputFileDataType = \"file\">\n extends InputFileBaseProps,\n InputFileExtraProps<Multiple, Type> {}\n\n/** 专用于读取文件的组件 */\nexport function InputFile<Multiple extends boolean = false, Type extends InputFileDataType = \"file\">(props: InputFileProps<Multiple, Type>): ReactNode {\n const { multiple = false, type = \"file\", onChange: _onChange, disabled: _disabled, clearAfterChange, onValueChange, onFileChange, ...rest } = props\n const [disabled, setDisabled] = useState(false)\n\n async function onChange(e: ChangeEvent<HTMLInputElement>) {\n _onChange?.(e)\n const input = e.target\n const { files } = input\n if (!files || files.length === 0) return\n setDisabled(true)\n try {\n if (multiple) {\n const files2: File[] = Array.from(files)\n const values: InputFileDataTypeMap[Type][] = []\n for (const file of files2) {\n const value = (await getFileData(file, type)) as InputFileDataTypeMap[Type]\n values.push(value)\n }\n onFileChange?.(files2 as FileType<Multiple>)\n onValueChange?.(values as ValueType<Multiple, Type>)\n } else {\n const file = files[0]\n onFileChange?.(file as FileType<Multiple>)\n onValueChange?.((await getFileData(file, type)) as ValueType<Multiple, Type>)\n }\n } finally {\n if (clearAfterChange) input.value = \"\"\n setDisabled(false)\n }\n }\n\n return <input disabled={disabled || _disabled} type=\"file\" multiple={multiple} onChange={onChange} {...rest} />\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAiE;AAYjE,eAAsB,YAAyC,MAAY,MAA2C;AAClH,QAAM,aAAa,IAAI,WAAW;AAClC,UAAQ,MAAM;AAAA,IACV,KAAK;AACD,iBAAW,kBAAkB,IAAI;AACjC;AAAA,IACJ,KAAK;AACD,iBAAW,mBAAmB,IAAI;AAClC;AAAA,IACJ,KAAK;AACD,iBAAW,cAAc,IAAI;AAC7B;AAAA,IACJ,KAAK;AACD,iBAAW,WAAW,IAAI;AAC1B;AAAA,IACJ;AACI,aAAO;AAAA,EACf;AACA,SAAO,IAAI,QAAQ,aAAW;AAC1B,eAAW,iBAAiB,QAAQ,MAAM;AACtC,cAAQ,WAAW,MAAa;AAAA,IACpC,CAAC;AAAA,EACL,CAAC;AACL;AAuBO,SAAS,UAAqF,OAAkD;AACnJ,QAAM,EAAE,WAAW,OAAO,OAAO,QAAQ,UAAU,WAAW,UAAU,WAAW,kBAAkB,eAAe,cAAc,GAAG,KAAK,IAAI;AAC9I,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAE9C,iBAAe,SAAS,GAAkC;AACtD,gBAAY,CAAC;AACb,UAAM,QAAQ,EAAE;AAChB,UAAM,EAAE,MAAM,IAAI;AAClB,QAAI,CAAC,SAAS,MAAM,WAAW;AAAG;AAClC,gBAAY,IAAI;AAChB,QAAI;AACA,UAAI,UAAU;AACV,cAAM,SAAiB,MAAM,KAAK,KAAK;AACvC,cAAM,SAAuC,CAAC;AAC9C,mBAAW,QAAQ,QAAQ;AACvB,gBAAM,QAAS,MAAM,YAAY,MAAM,IAAI;AAC3C,iBAAO,KAAK,KAAK;AAAA,QACrB;AACA,uBAAe,MAA4B;AAC3C,wBAAgB,MAAmC;AAAA,MACvD,OAAO;AACH,cAAM,OAAO,MAAM,CAAC;AACpB,uBAAe,IAA0B;AACzC,wBAAiB,MAAM,YAAY,MAAM,IAAI,CAA+B;AAAA,MAChF;AAAA,IACJ,UAAE;AACE,UAAI;AAAkB,cAAM,QAAQ;AACpC,kBAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AAEA,SAAO,oCAAC,WAAM,UAAU,YAAY,WAAW,MAAK,QAAO,UAAoB,UAAqB,GAAG,MAAM;AACjH;",
6
- "names": []
7
- }