@easy-editor/materials-dashboard-progress 0.0.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 (44) hide show
  1. package/.vite/plugins/vite-plugin-external-deps.ts +224 -0
  2. package/.vite/plugins/vite-plugin-material-dev.ts +218 -0
  3. package/CHANGELOG.md +7 -0
  4. package/LICENSE +9 -0
  5. package/dist/component.esm.js +257 -0
  6. package/dist/component.esm.js.map +1 -0
  7. package/dist/component.js +265 -0
  8. package/dist/component.js.map +1 -0
  9. package/dist/component.min.js +2 -0
  10. package/dist/component.min.js.map +1 -0
  11. package/dist/index.cjs +560 -0
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.esm.js +557 -0
  14. package/dist/index.esm.js.map +1 -0
  15. package/dist/index.js +564 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.min.js +2 -0
  18. package/dist/index.min.js.map +1 -0
  19. package/dist/meta.esm.js +304 -0
  20. package/dist/meta.esm.js.map +1 -0
  21. package/dist/meta.js +315 -0
  22. package/dist/meta.js.map +1 -0
  23. package/dist/meta.min.js +2 -0
  24. package/dist/meta.min.js.map +1 -0
  25. package/dist/src/component.d.ts +36 -0
  26. package/dist/src/configure.d.ts +7 -0
  27. package/dist/src/constants.d.ts +36 -0
  28. package/dist/src/index.d.ts +6 -0
  29. package/dist/src/meta.d.ts +7 -0
  30. package/dist/src/snippets.d.ts +7 -0
  31. package/package.json +66 -0
  32. package/rollup.config.js +212 -0
  33. package/src/component.module.css +89 -0
  34. package/src/component.tsx +262 -0
  35. package/src/configure.ts +265 -0
  36. package/src/constants.ts +43 -0
  37. package/src/index.tsx +7 -0
  38. package/src/meta.ts +28 -0
  39. package/src/snippets.ts +60 -0
  40. package/src/type.d.ts +8 -0
  41. package/tsconfig.build.json +12 -0
  42. package/tsconfig.json +9 -0
  43. package/tsconfig.test.json +7 -0
  44. package/vite.config.ts +54 -0
@@ -0,0 +1,557 @@
1
+ import { useId, useRef, useState, useEffect } from 'react';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+
4
+ function styleInject(css, ref) {
5
+ if (ref === void 0) ref = {};
6
+ var insertAt = ref.insertAt;
7
+ if (typeof document === 'undefined') {
8
+ return;
9
+ }
10
+ var head = document.head || document.getElementsByTagName('head')[0];
11
+ var style = document.createElement('style');
12
+ style.type = 'text/css';
13
+ if (insertAt === 'top') {
14
+ if (head.firstChild) {
15
+ head.insertBefore(style, head.firstChild);
16
+ } else {
17
+ head.appendChild(style);
18
+ }
19
+ } else {
20
+ head.appendChild(style);
21
+ }
22
+ if (style.styleSheet) {
23
+ style.styleSheet.cssText = css;
24
+ } else {
25
+ style.appendChild(document.createTextNode(css));
26
+ }
27
+ }
28
+
29
+ var css_248z = ".component-module__container___VbZSk,.component-module__wrapper___IYMoW{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.component-module__container___VbZSk{position:relative}.component-module__ring___QkEHa{transform:rotate(-90deg)}.component-module__centerContent___Ri3R3{align-items:center;display:flex;flex-direction:column;justify-content:center;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.component-module__value___Fg70k{font-weight:700;line-height:1.1}.component-module__label___6IHVo{color:#fff;margin-top:4px;opacity:.7}.component-module__barContainer___AOTls{display:flex;flex-direction:column;gap:4px;height:100%;justify-content:center;width:100%}.component-module__barWrapper___cni-a{border-radius:4px;flex:1;max-height:8px;min-height:8px;overflow:hidden;width:100%}.component-module__barFill___KZkJe{border-radius:4px;height:100%;transition:width .5s ease}.component-module__barLabels___BvaEi{align-items:center;display:flex;justify-content:space-between}.component-module__barLabel___wVaWe{color:hsla(0,0%,100%,.7);font-size:12px}.component-module__barValue___H2muu{font-size:14px;font-weight:600}";
30
+ var styles = {"wrapper":"component-module__wrapper___IYMoW","container":"component-module__container___VbZSk","ring":"component-module__ring___QkEHa","centerContent":"component-module__centerContent___Ri3R3","value":"component-module__value___Fg70k","label":"component-module__label___6IHVo","barContainer":"component-module__barContainer___AOTls","barWrapper":"component-module__barWrapper___cni-a","barFill":"component-module__barFill___KZkJe","barLabels":"component-module__barLabels___BvaEi","barLabel":"component-module__barLabel___wVaWe","barValue":"component-module__barValue___H2muu"};
31
+ styleInject(css_248z);
32
+
33
+ /**
34
+ * Progress Component
35
+ * 进度组件 - 支持环形和线性进度条
36
+ */
37
+
38
+ // 格式化数值
39
+ const formatValue = (value, percentage, valueFormat) => {
40
+ if (valueFormat === 'percent') {
41
+ return `${Math.round(percentage)}%`;
42
+ }
43
+ return `${value}`;
44
+ };
45
+
46
+ // 环形进度条组件
47
+ const RingProgress = ({
48
+ percentage,
49
+ strokeWidthRatio,
50
+ trackColor,
51
+ progressColor,
52
+ gradientEnable,
53
+ gradientColors,
54
+ showValue,
55
+ showLabel,
56
+ label,
57
+ valueFormat,
58
+ displayColor,
59
+ gradientId
60
+ }) => {
61
+ const containerRef = useRef(null);
62
+ const [size, setSize] = useState(100);
63
+ useEffect(() => {
64
+ const container = containerRef.current;
65
+ if (!container) {
66
+ return;
67
+ }
68
+ const updateSize = () => {
69
+ const {
70
+ width,
71
+ height
72
+ } = container.getBoundingClientRect();
73
+ const minSize = Math.min(width, height);
74
+ if (minSize > 0) {
75
+ setSize(minSize);
76
+ }
77
+ };
78
+ updateSize();
79
+ const resizeObserver = new ResizeObserver(updateSize);
80
+ resizeObserver.observe(container);
81
+ return () => resizeObserver.disconnect();
82
+ }, []);
83
+ const strokeWidth = Math.max(2, size * strokeWidthRatio);
84
+ const radius = (size - strokeWidth) / 2;
85
+ const circumference = 2 * Math.PI * radius;
86
+ const strokeDashoffset = circumference - percentage / 100 * circumference;
87
+ const center = size / 2;
88
+ return /*#__PURE__*/jsxs("div", {
89
+ className: styles.container,
90
+ ref: containerRef,
91
+ children: [/*#__PURE__*/jsxs("svg", {
92
+ "aria-label": "Progress ring",
93
+ className: styles.ring,
94
+ height: size,
95
+ role: "img",
96
+ width: size,
97
+ children: [/*#__PURE__*/jsx("title", {
98
+ children: "Progress indicator"
99
+ }), gradientEnable ? /*#__PURE__*/jsx("defs", {
100
+ children: /*#__PURE__*/jsxs("linearGradient", {
101
+ id: gradientId,
102
+ x1: "0%",
103
+ x2: "100%",
104
+ y1: "0%",
105
+ y2: "0%",
106
+ children: [/*#__PURE__*/jsx("stop", {
107
+ offset: "0%",
108
+ stopColor: gradientColors[0]
109
+ }), /*#__PURE__*/jsx("stop", {
110
+ offset: "100%",
111
+ stopColor: gradientColors[1]
112
+ })]
113
+ })
114
+ }) : null, /*#__PURE__*/jsx("circle", {
115
+ cx: center,
116
+ cy: center,
117
+ fill: "none",
118
+ r: radius,
119
+ stroke: trackColor,
120
+ strokeWidth: strokeWidth
121
+ }), /*#__PURE__*/jsx("circle", {
122
+ cx: center,
123
+ cy: center,
124
+ fill: "none",
125
+ r: radius,
126
+ stroke: gradientEnable ? `url(#${gradientId})` : progressColor,
127
+ strokeDasharray: circumference,
128
+ strokeDashoffset: strokeDashoffset,
129
+ strokeLinecap: "round",
130
+ strokeWidth: strokeWidth,
131
+ style: {
132
+ transition: 'stroke-dashoffset 0.5s ease'
133
+ }
134
+ })]
135
+ }), /*#__PURE__*/jsxs("div", {
136
+ className: styles.centerContent,
137
+ children: [showValue ? /*#__PURE__*/jsx("span", {
138
+ className: styles.value,
139
+ style: {
140
+ fontSize: size * 0.2,
141
+ color: displayColor
142
+ },
143
+ children: formatValue(Math.round(percentage), percentage, valueFormat)
144
+ }) : null, showLabel && label ? /*#__PURE__*/jsx("span", {
145
+ className: styles.label,
146
+ style: {
147
+ fontSize: size * 0.1
148
+ },
149
+ children: label
150
+ }) : null]
151
+ })]
152
+ });
153
+ };
154
+
155
+ // 线性进度条组件
156
+ const BarProgress = ({
157
+ percentage,
158
+ trackColor,
159
+ progressColor,
160
+ gradientEnable,
161
+ gradientColors,
162
+ showValue,
163
+ showLabel,
164
+ label,
165
+ valueFormat,
166
+ displayColor
167
+ }) => /*#__PURE__*/jsxs("div", {
168
+ className: styles.barContainer,
169
+ children: [showLabel || showValue ? /*#__PURE__*/jsxs("div", {
170
+ className: styles.barLabels,
171
+ children: [showLabel ? /*#__PURE__*/jsx("span", {
172
+ className: styles.barLabel,
173
+ children: label
174
+ }) : null, showValue ? /*#__PURE__*/jsx("span", {
175
+ className: styles.barValue,
176
+ style: {
177
+ color: displayColor
178
+ },
179
+ children: formatValue(Math.round(percentage), percentage, valueFormat)
180
+ }) : null]
181
+ }) : null, /*#__PURE__*/jsx("div", {
182
+ className: styles.barWrapper,
183
+ style: {
184
+ background: trackColor
185
+ },
186
+ children: /*#__PURE__*/jsx("div", {
187
+ className: styles.barFill,
188
+ style: {
189
+ width: `${percentage}%`,
190
+ background: gradientEnable ? `linear-gradient(90deg, ${gradientColors[0]}, ${gradientColors[1]})` : progressColor
191
+ }
192
+ })
193
+ })]
194
+ });
195
+ const Progress = ({
196
+ ref,
197
+ value = 0,
198
+ maxValue = 100,
199
+ type = 'ring',
200
+ showValue = true,
201
+ showLabel = false,
202
+ label = '',
203
+ valueFormat = 'percent',
204
+ strokeWidthRatio = 0.07,
205
+ trackColor = 'rgba(26, 26, 62, 0.8)',
206
+ progressColor = '#00d4ff',
207
+ gradientEnable = false,
208
+ gradientColors = ['#00d4ff', '#9b59b6'],
209
+ style: externalStyle
210
+ }) => {
211
+ const gradientId = useId();
212
+ const normalizedValue = Math.min(Math.max(value, 0), maxValue);
213
+ const percentage = normalizedValue / maxValue * 100;
214
+ const displayColor = gradientEnable ? gradientColors[0] : progressColor;
215
+ if (type === 'ring') {
216
+ return /*#__PURE__*/jsx("div", {
217
+ className: styles.wrapper,
218
+ ref: ref,
219
+ style: externalStyle,
220
+ children: /*#__PURE__*/jsx(RingProgress, {
221
+ displayColor: displayColor,
222
+ gradientColors: gradientColors,
223
+ gradientEnable: gradientEnable,
224
+ gradientId: gradientId,
225
+ label: label,
226
+ percentage: percentage,
227
+ progressColor: progressColor,
228
+ showLabel: showLabel,
229
+ showValue: showValue,
230
+ strokeWidthRatio: strokeWidthRatio,
231
+ trackColor: trackColor,
232
+ valueFormat: valueFormat
233
+ })
234
+ });
235
+ }
236
+ return /*#__PURE__*/jsx("div", {
237
+ className: styles.wrapper,
238
+ ref: ref,
239
+ style: externalStyle,
240
+ children: /*#__PURE__*/jsx(BarProgress, {
241
+ displayColor: displayColor,
242
+ gradientColors: gradientColors,
243
+ gradientEnable: gradientEnable,
244
+ label: label,
245
+ percentage: percentage,
246
+ progressColor: progressColor,
247
+ showLabel: showLabel,
248
+ showValue: showValue,
249
+ trackColor: trackColor,
250
+ valueFormat: valueFormat
251
+ })
252
+ });
253
+ };
254
+
255
+ const MaterialGroup = {
256
+ DISPLAY: 'display'};
257
+
258
+ const COMPONENT_NAME = 'EasyEditorMaterialsProgress';
259
+ const PACKAGE_NAME = '@easy-editor/materials-dashboard-progress';
260
+
261
+ const configure = {
262
+ props: [{
263
+ type: 'group',
264
+ title: '属性',
265
+ setter: 'TabSetter',
266
+ items: [{
267
+ type: 'group',
268
+ key: 'config',
269
+ title: '配置',
270
+ setter: {
271
+ componentName: 'CollapseSetter',
272
+ props: {
273
+ icon: false
274
+ }
275
+ },
276
+ items: [
277
+ {
278
+ name: 'id',
279
+ title: 'ID',
280
+ setter: 'NodeIdSetter',
281
+ extraProps: {
282
+ label: false
283
+ }
284
+ }, {
285
+ name: 'title',
286
+ title: '标题',
287
+ setter: 'StringSetter',
288
+ extraProps: {
289
+ getValue(target) {
290
+ return target.getExtraPropValue('title');
291
+ },
292
+ setValue(target, value) {
293
+ target.setExtraPropValue('title', value);
294
+ }
295
+ }
296
+ }, {
297
+ type: 'group',
298
+ title: '基础属性',
299
+ setter: {
300
+ componentName: 'CollapseSetter',
301
+ props: {
302
+ icon: false
303
+ }
304
+ },
305
+ items: [{
306
+ name: 'rect',
307
+ title: '位置尺寸',
308
+ setter: 'RectSetter',
309
+ extraProps: {
310
+ getValue(target) {
311
+ return target.getExtraPropValue('$dashboard.rect');
312
+ },
313
+ setValue(target, value) {
314
+ target.setExtraPropValue('$dashboard.rect', value);
315
+ }
316
+ }
317
+ }]
318
+ },
319
+ {
320
+ type: 'group',
321
+ title: '数值',
322
+ setter: {
323
+ componentName: 'CollapseSetter',
324
+ props: {
325
+ icon: false
326
+ }
327
+ },
328
+ items: [{
329
+ name: 'value',
330
+ title: '当前值',
331
+ setter: 'NumberSetter',
332
+ extraProps: {
333
+ defaultValue: 0
334
+ }
335
+ }, {
336
+ name: 'maxValue',
337
+ title: '最大值',
338
+ setter: 'NumberSetter',
339
+ extraProps: {
340
+ defaultValue: 100
341
+ }
342
+ }, {
343
+ name: 'valueFormat',
344
+ title: '值格式',
345
+ setter: {
346
+ componentName: 'SelectSetter',
347
+ props: {
348
+ options: [{
349
+ label: '百分比',
350
+ value: 'percent'
351
+ }, {
352
+ label: '数值',
353
+ value: 'number'
354
+ }]
355
+ }
356
+ },
357
+ extraProps: {
358
+ defaultValue: 'percent'
359
+ }
360
+ }]
361
+ }, {
362
+ type: 'group',
363
+ title: '显示',
364
+ setter: {
365
+ componentName: 'CollapseSetter',
366
+ props: {
367
+ icon: false
368
+ }
369
+ },
370
+ items: [{
371
+ name: 'type',
372
+ title: '进度条类型',
373
+ setter: {
374
+ componentName: 'SelectSetter',
375
+ props: {
376
+ options: [{
377
+ label: '环形',
378
+ value: 'ring'
379
+ }, {
380
+ label: '线性',
381
+ value: 'bar'
382
+ }]
383
+ }
384
+ },
385
+ extraProps: {
386
+ defaultValue: 'ring'
387
+ }
388
+ }, {
389
+ name: 'showValue',
390
+ title: '显示数值',
391
+ setter: 'SwitchSetter',
392
+ extraProps: {
393
+ defaultValue: true
394
+ }
395
+ }, {
396
+ name: 'showLabel',
397
+ title: '显示标签',
398
+ setter: 'SwitchSetter',
399
+ extraProps: {
400
+ defaultValue: false
401
+ }
402
+ }, {
403
+ name: 'label',
404
+ title: '标签文本',
405
+ setter: 'StringSetter'
406
+ }]
407
+ }, {
408
+ type: 'group',
409
+ title: '样式',
410
+ setter: {
411
+ componentName: 'CollapseSetter',
412
+ props: {
413
+ icon: false
414
+ }
415
+ },
416
+ items: [{
417
+ name: 'strokeWidthRatio',
418
+ title: '线条粗细',
419
+ setter: {
420
+ componentName: 'SliderSetter',
421
+ props: {
422
+ min: 0.02,
423
+ max: 0.2,
424
+ step: 0.01
425
+ }
426
+ },
427
+ extraProps: {
428
+ defaultValue: 0.07
429
+ }
430
+ }, {
431
+ name: 'trackColor',
432
+ title: '轨道颜色',
433
+ setter: 'ColorSetter',
434
+ extraProps: {
435
+ defaultValue: 'rgba(255, 255, 255, 0.1)'
436
+ }
437
+ }, {
438
+ name: 'progressColor',
439
+ title: '进度颜色',
440
+ setter: 'ColorSetter',
441
+ extraProps: {
442
+ defaultValue: '#00ffff'
443
+ }
444
+ }, {
445
+ name: 'gradientEnable',
446
+ title: '启用渐变',
447
+ setter: 'SwitchSetter',
448
+ extraProps: {
449
+ defaultValue: false
450
+ }
451
+ }, {
452
+ name: 'gradientColors',
453
+ title: '渐变颜色',
454
+ setter: 'ColorSetter',
455
+ extraProps: {
456
+ defaultValue: ['#00d4ff', '#9b59b6']
457
+ }
458
+ }]
459
+ }]
460
+ }, {
461
+ type: 'group',
462
+ key: 'data',
463
+ title: '数据',
464
+ items: [{
465
+ name: 'dataBinding',
466
+ title: '数据绑定',
467
+ setter: 'DataBindingSetter'
468
+ }]
469
+ }, {
470
+ type: 'group',
471
+ key: 'advanced',
472
+ title: '高级',
473
+ items: [{
474
+ name: 'condition',
475
+ title: '显隐控制',
476
+ setter: 'SwitchSetter',
477
+ extraProps: {
478
+ defaultValue: true,
479
+ supportVariable: true
480
+ }
481
+ }]
482
+ }]
483
+ }],
484
+ component: {},
485
+ supports: {},
486
+ advanced: {}
487
+ };
488
+
489
+ const snippets = [{
490
+ title: '进度环',
491
+ screenshot: '',
492
+ schema: {
493
+ componentName: COMPONENT_NAME,
494
+ props: {
495
+ value: 75,
496
+ maxValue: 100,
497
+ type: 'ring',
498
+ showValue: true,
499
+ showLabel: false,
500
+ valueFormat: 'percent',
501
+ strokeWidthRatio: 0.07,
502
+ progressColor: '#00ffff'
503
+ },
504
+ $dashboard: {
505
+ rect: {
506
+ width: 140,
507
+ height: 140
508
+ }
509
+ }
510
+ }
511
+ }, {
512
+ title: '线性进度条',
513
+ screenshot: '',
514
+ schema: {
515
+ componentName: COMPONENT_NAME,
516
+ props: {
517
+ value: 85,
518
+ maxValue: 100,
519
+ type: 'bar',
520
+ showValue: true,
521
+ showLabel: true,
522
+ label: '完成率',
523
+ valueFormat: 'percent',
524
+ progressColor: '#00ff88',
525
+ gradientEnable: true,
526
+ gradientColors: ['#00ff88', '#00d4ff']
527
+ },
528
+ $dashboard: {
529
+ rect: {
530
+ width: 300,
531
+ height: 50
532
+ }
533
+ }
534
+ }
535
+ }];
536
+
537
+ var version = "0.0.1";
538
+ var pkg = {
539
+ version: version};
540
+
541
+ const meta = {
542
+ componentName: COMPONENT_NAME,
543
+ title: '进度条',
544
+ group: MaterialGroup.DISPLAY,
545
+ devMode: 'proCode',
546
+ npm: {
547
+ package: PACKAGE_NAME,
548
+ version: pkg.version,
549
+ globalName: COMPONENT_NAME,
550
+ componentName: COMPONENT_NAME
551
+ },
552
+ snippets,
553
+ configure
554
+ };
555
+
556
+ export { Progress as component, meta };
557
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/component.tsx","../../../../shared/src/index.ts","../src/constants.ts","../src/configure.ts","../src/snippets.ts","../src/meta.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Progress Component\n * 进度组件 - 支持环形和线性进度条\n */\n\nimport { useId, useRef, useEffect, useState, type CSSProperties, type Ref } from 'react'\nimport styles from './component.module.css'\n\nexport interface ProgressProps {\n ref?: Ref<HTMLDivElement>\n /** 当前值 */\n value?: number\n /** 最大值 */\n maxValue?: number\n /** 进度条类型 */\n type?: 'ring' | 'bar'\n /** 是否显示数值 */\n showValue?: boolean\n /** 是否显示标签 */\n showLabel?: boolean\n /** 标签文本 */\n label?: string\n /** 数值格式 */\n valueFormat?: 'percent' | 'number'\n /** 线条宽度比例(相对于尺寸的百分比) */\n strokeWidthRatio?: number\n /** 轨道颜色 */\n trackColor?: string\n /** 进度颜色 */\n progressColor?: string\n /** 是否启用渐变 */\n gradientEnable?: boolean\n /** 渐变颜色 [起始色, 结束色] */\n gradientColors?: [string, string]\n /** 外部样式 */\n style?: CSSProperties\n}\n\n// 格式化数值\nconst formatValue = (value: number, percentage: number, valueFormat: string): string => {\n if (valueFormat === 'percent') {\n return `${Math.round(percentage)}%`\n }\n return `${value}`\n}\n\n// 环形进度条组件\nconst RingProgress = ({\n percentage,\n strokeWidthRatio,\n trackColor,\n progressColor,\n gradientEnable,\n gradientColors,\n showValue,\n showLabel,\n label,\n valueFormat,\n displayColor,\n gradientId,\n}: {\n percentage: number\n strokeWidthRatio: number\n trackColor: string\n progressColor: string\n gradientEnable: boolean\n gradientColors: [string, string]\n showValue: boolean\n showLabel: boolean\n label: string\n valueFormat: string\n displayColor: string\n gradientId: string\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [size, setSize] = useState(100)\n\n useEffect(() => {\n const container = containerRef.current\n if (!container) {\n return\n }\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect()\n const minSize = Math.min(width, height)\n if (minSize > 0) {\n setSize(minSize)\n }\n }\n\n updateSize()\n\n const resizeObserver = new ResizeObserver(updateSize)\n resizeObserver.observe(container)\n\n return () => resizeObserver.disconnect()\n }, [])\n\n const strokeWidth = Math.max(2, size * strokeWidthRatio)\n const radius = (size - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const strokeDashoffset = circumference - (percentage / 100) * circumference\n const center = size / 2\n\n return (\n <div className={styles.container} ref={containerRef}>\n <svg aria-label='Progress ring' className={styles.ring} height={size} role='img' width={size}>\n <title>Progress indicator</title>\n {gradientEnable ? (\n <defs>\n <linearGradient id={gradientId} x1='0%' x2='100%' y1='0%' y2='0%'>\n <stop offset='0%' stopColor={gradientColors[0]} />\n <stop offset='100%' stopColor={gradientColors[1]} />\n </linearGradient>\n </defs>\n ) : null}\n {/* 轨道 */}\n <circle cx={center} cy={center} fill='none' r={radius} stroke={trackColor} strokeWidth={strokeWidth} />\n {/* 进度 */}\n <circle\n cx={center}\n cy={center}\n fill='none'\n r={radius}\n stroke={gradientEnable ? `url(#${gradientId})` : progressColor}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n strokeLinecap='round'\n strokeWidth={strokeWidth}\n style={{\n transition: 'stroke-dashoffset 0.5s ease',\n }}\n />\n </svg>\n <div className={styles.centerContent}>\n {showValue ? (\n <span className={styles.value} style={{ fontSize: size * 0.2, color: displayColor }}>\n {formatValue(Math.round(percentage), percentage, valueFormat)}\n </span>\n ) : null}\n {showLabel && label ? (\n <span className={styles.label} style={{ fontSize: size * 0.1 }}>\n {label}\n </span>\n ) : null}\n </div>\n </div>\n )\n}\n\n// 线性进度条组件\nconst BarProgress = ({\n percentage,\n trackColor,\n progressColor,\n gradientEnable,\n gradientColors,\n showValue,\n showLabel,\n label,\n valueFormat,\n displayColor,\n}: {\n percentage: number\n trackColor: string\n progressColor: string\n gradientEnable: boolean\n gradientColors: [string, string]\n showValue: boolean\n showLabel: boolean\n label: string\n valueFormat: string\n displayColor: string\n}) => (\n <div className={styles.barContainer}>\n {showLabel || showValue ? (\n <div className={styles.barLabels}>\n {showLabel ? <span className={styles.barLabel}>{label}</span> : null}\n {showValue ? (\n <span className={styles.barValue} style={{ color: displayColor }}>\n {formatValue(Math.round(percentage), percentage, valueFormat)}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className={styles.barWrapper} style={{ background: trackColor }}>\n <div\n className={styles.barFill}\n style={{\n width: `${percentage}%`,\n background: gradientEnable\n ? `linear-gradient(90deg, ${gradientColors[0]}, ${gradientColors[1]})`\n : progressColor,\n }}\n />\n </div>\n </div>\n)\n\nexport const Progress: React.FC<ProgressProps> = ({\n ref,\n value = 0,\n maxValue = 100,\n type = 'ring',\n showValue = true,\n showLabel = false,\n label = '',\n valueFormat = 'percent',\n strokeWidthRatio = 0.07,\n trackColor = 'rgba(26, 26, 62, 0.8)',\n progressColor = '#00d4ff',\n gradientEnable = false,\n gradientColors = ['#00d4ff', '#9b59b6'],\n style: externalStyle,\n}) => {\n const gradientId = useId()\n\n const normalizedValue = Math.min(Math.max(value, 0), maxValue)\n const percentage = (normalizedValue / maxValue) * 100\n const displayColor = gradientEnable ? gradientColors[0] : progressColor\n\n if (type === 'ring') {\n return (\n <div className={styles.wrapper} ref={ref} style={externalStyle}>\n <RingProgress\n displayColor={displayColor}\n gradientColors={gradientColors}\n gradientEnable={gradientEnable}\n gradientId={gradientId}\n label={label}\n percentage={percentage}\n progressColor={progressColor}\n showLabel={showLabel}\n showValue={showValue}\n strokeWidthRatio={strokeWidthRatio}\n trackColor={trackColor}\n valueFormat={valueFormat}\n />\n </div>\n )\n }\n\n return (\n <div className={styles.wrapper} ref={ref} style={externalStyle}>\n <BarProgress\n displayColor={displayColor}\n gradientColors={gradientColors}\n gradientEnable={gradientEnable}\n label={label}\n percentage={percentage}\n progressColor={progressColor}\n showLabel={showLabel}\n showValue={showValue}\n trackColor={trackColor}\n valueFormat={valueFormat}\n />\n </div>\n )\n}\n\nexport default Progress\n","/**\n * Shared types, components and utilities for EasyEditor materials\n * @package @easy-editor/materials-shared\n */\n\n// 物料分组常量\nexport const MaterialGroup = {\n /** 内置 */\n INNER: 'inner',\n /** 基础 */\n BASIC: 'basic',\n /** 图表 */\n CHART: 'chart',\n /** 数据展示 */\n DISPLAY: 'display',\n /** 媒体 */\n MEDIA: 'media',\n /** 交互 */\n INTERACTION: 'interaction',\n /** 地图 */\n MAP: 'map',\n} as const\n\nexport type MaterialGroup = (typeof MaterialGroup)[keyof typeof MaterialGroup]\n\n// 工具函数\nexport { cn } from './lib/utils'\n\nexport * from './types'\n","/**\n * 物料常量配置\n * 统一管理全局变量名等配置,确保 meta.ts 和 rollup.config.js 使用相同的值\n */\n\n/**\n * UMD 全局变量基础名称\n * 用于构建:\n * - 元数据:${GLOBAL_NAME}Meta (例如: EasyEditorMaterialsProgressMeta)\n * - 组件:${GLOBAL_NAME}Component (例如: EasyEditorMaterialsProgressComponent)\n * - 完整构建:${GLOBAL_NAME} (例如: EasyEditorMaterialsProgress)\n */\nexport const COMPONENT_NAME = 'EasyEditorMaterialsProgress'\n\n/**\n * 包名\n */\nexport const PACKAGE_NAME = '@easy-editor/materials-dashboard-progress'\n\n/**\n * 值格式类型\n */\nexport const VALUE_FORMATS = ['percent', 'number'] as const\n\n/**\n * 默认轨道颜色\n */\nexport const DEFAULT_TRACK_COLOR = 'rgba(255, 255, 255, 0.1)'\n\n/**\n * 默认进度颜色\n */\nexport const DEFAULT_PROGRESS_COLOR = '#00ffff'\n\n/**\n * 默认渐变颜色\n */\nexport const DEFAULT_GRADIENT_COLORS: [string, string] = ['#00ffff', '#ff00ff']\n\n/**\n * 默认发光颜色\n */\nexport const DEFAULT_GLOW_COLOR = '#00ffff'\n","/**\n * Progress Configure\n * 进度条组件配置\n */\n\nimport type { Configure } from '@easy-editor/core'\n\nexport const configure: Configure = {\n props: [\n {\n type: 'group',\n title: '属性',\n setter: 'TabSetter',\n items: [\n {\n type: 'group',\n key: 'config',\n title: '配置',\n setter: {\n componentName: 'CollapseSetter',\n props: {\n icon: false,\n },\n },\n items: [\n // 基础配置\n {\n name: 'id',\n title: 'ID',\n setter: 'NodeIdSetter',\n extraProps: {\n // @ts-expect-error label is not a valid extra prop\n label: false,\n },\n },\n {\n name: 'title',\n title: '标题',\n setter: 'StringSetter',\n extraProps: {\n getValue(target) {\n return target.getExtraPropValue('title')\n },\n setValue(target, value) {\n target.setExtraPropValue('title', value)\n },\n },\n },\n {\n type: 'group',\n title: '基础属性',\n setter: {\n componentName: 'CollapseSetter',\n props: {\n icon: false,\n },\n },\n items: [\n {\n name: 'rect',\n title: '位置尺寸',\n setter: 'RectSetter',\n extraProps: {\n getValue(target) {\n return target.getExtraPropValue('$dashboard.rect')\n },\n setValue(target, value) {\n target.setExtraPropValue('$dashboard.rect', value)\n },\n },\n },\n ],\n },\n // 组件配置\n {\n type: 'group',\n title: '数值',\n setter: {\n componentName: 'CollapseSetter',\n props: {\n icon: false,\n },\n },\n items: [\n {\n name: 'value',\n title: '当前值',\n setter: 'NumberSetter',\n extraProps: {\n defaultValue: 0,\n },\n },\n {\n name: 'maxValue',\n title: '最大值',\n setter: 'NumberSetter',\n extraProps: {\n defaultValue: 100,\n },\n },\n {\n name: 'valueFormat',\n title: '值格式',\n setter: {\n componentName: 'SelectSetter',\n props: {\n options: [\n { label: '百分比', value: 'percent' },\n { label: '数值', value: 'number' },\n ],\n },\n },\n extraProps: {\n defaultValue: 'percent',\n },\n },\n ],\n },\n {\n type: 'group',\n title: '显示',\n setter: {\n componentName: 'CollapseSetter',\n props: {\n icon: false,\n },\n },\n items: [\n {\n name: 'type',\n title: '进度条类型',\n setter: {\n componentName: 'SelectSetter',\n props: {\n options: [\n { label: '环形', value: 'ring' },\n { label: '线性', value: 'bar' },\n ],\n },\n },\n extraProps: {\n defaultValue: 'ring',\n },\n },\n {\n name: 'showValue',\n title: '显示数值',\n setter: 'SwitchSetter',\n extraProps: {\n defaultValue: true,\n },\n },\n {\n name: 'showLabel',\n title: '显示标签',\n setter: 'SwitchSetter',\n extraProps: {\n defaultValue: false,\n },\n },\n {\n name: 'label',\n title: '标签文本',\n setter: 'StringSetter',\n },\n ],\n },\n {\n type: 'group',\n title: '样式',\n setter: {\n componentName: 'CollapseSetter',\n props: {\n icon: false,\n },\n },\n items: [\n {\n name: 'strokeWidthRatio',\n title: '线条粗细',\n setter: {\n componentName: 'SliderSetter',\n props: {\n min: 0.02,\n max: 0.2,\n step: 0.01,\n },\n },\n extraProps: {\n defaultValue: 0.07,\n },\n },\n {\n name: 'trackColor',\n title: '轨道颜色',\n setter: 'ColorSetter',\n extraProps: {\n defaultValue: 'rgba(255, 255, 255, 0.1)',\n },\n },\n {\n name: 'progressColor',\n title: '进度颜色',\n setter: 'ColorSetter',\n extraProps: {\n defaultValue: '#00ffff',\n },\n },\n {\n name: 'gradientEnable',\n title: '启用渐变',\n setter: 'SwitchSetter',\n extraProps: {\n defaultValue: false,\n },\n },\n {\n name: 'gradientColors',\n title: '渐变颜色',\n setter: 'ColorSetter',\n extraProps: {\n defaultValue: ['#00d4ff', '#9b59b6'],\n },\n },\n ],\n },\n ],\n },\n {\n type: 'group',\n key: 'data',\n title: '数据',\n items: [\n {\n name: 'dataBinding',\n title: '数据绑定',\n setter: 'DataBindingSetter',\n },\n ],\n },\n {\n type: 'group',\n key: 'advanced',\n title: '高级',\n items: [\n {\n name: 'condition',\n title: '显隐控制',\n setter: 'SwitchSetter',\n extraProps: {\n defaultValue: true,\n supportVariable: true,\n },\n },\n ],\n },\n ],\n },\n ],\n component: {},\n supports: {},\n advanced: {},\n}\n\nexport default configure\n","/**\n * Progress Snippets\n * 进度条组件代码片段\n */\n\nimport type { Snippet } from '@easy-editor/core'\nimport { COMPONENT_NAME } from './constants'\n\nexport const snippets: Snippet[] = [\n {\n title: '进度环',\n screenshot: '',\n schema: {\n componentName: COMPONENT_NAME,\n props: {\n value: 75,\n maxValue: 100,\n type: 'ring',\n showValue: true,\n showLabel: false,\n valueFormat: 'percent',\n strokeWidthRatio: 0.07,\n progressColor: '#00ffff',\n },\n $dashboard: {\n rect: {\n width: 140,\n height: 140,\n },\n },\n },\n },\n {\n title: '线性进度条',\n screenshot: '',\n schema: {\n componentName: COMPONENT_NAME,\n props: {\n value: 85,\n maxValue: 100,\n type: 'bar',\n showValue: true,\n showLabel: true,\n label: '完成率',\n valueFormat: 'percent',\n progressColor: '#00ff88',\n gradientEnable: true,\n gradientColors: ['#00ff88', '#00d4ff'],\n },\n $dashboard: {\n rect: {\n width: 300,\n height: 50,\n },\n },\n },\n },\n]\n\nexport default snippets\n","/**\n * Progress Meta\n * 进度条组件元数据\n */\n\nimport type { ComponentMetadata } from '@easy-editor/core'\nimport { MaterialGroup } from '@easy-editor/materials-shared'\nimport { COMPONENT_NAME, PACKAGE_NAME } from './constants'\nimport configure from './configure'\nimport snippets from './snippets'\nimport pkg from '../package.json'\n\nexport const meta: ComponentMetadata = {\n componentName: COMPONENT_NAME,\n title: '进度条',\n group: MaterialGroup.DISPLAY,\n devMode: 'proCode',\n npm: {\n package: PACKAGE_NAME,\n version: pkg.version,\n globalName: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n },\n snippets,\n configure,\n}\n\nexport default meta\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","formatValue","value","percentage","valueFormat","Math","round","RingProgress","strokeWidthRatio","trackColor","progressColor","gradientEnable","gradientColors","showValue","showLabel","label","displayColor","gradientId","containerRef","useRef","size","setSize","useState","useEffect","container","current","updateSize","width","height","getBoundingClientRect","minSize","min","resizeObserver","ResizeObserver","observe","disconnect","strokeWidth","max","radius","circumference","PI","strokeDashoffset","center","_jsxs","className","styles","children","ring","role","_jsx","id","x1","x2","y1","y2","offset","stopColor","cx","cy","fill","r","stroke","strokeDasharray","strokeLinecap","transition","centerContent","fontSize","color","BarProgress","barContainer","barLabels","barLabel","barValue","barWrapper","background","barFill","Progress","maxValue","externalStyle","useId","normalizedValue","wrapper","MaterialGroup","INNER","DISPLAY","COMPONENT_NAME","PACKAGE_NAME","configure","props","title","setter","items","key","componentName","icon","name","extraProps","getValue","target","getExtraPropValue","setValue","setExtraPropValue","defaultValue","options","step","supportVariable","component","supports","advanced","snippets","screenshot","schema","$dashboard","rect","meta","group","devMode","npm","package","version","pkg","globalName"],"mappings":"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","x_google_ignoreList":[0]}