@expcat/tigercat-react 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-RUAPTIQ7.mjs → chunk-246DAUEF.mjs} +2 -2
- package/dist/{chunk-PU3JY6RE.mjs → chunk-2JMI7TCM.mjs} +1 -1
- package/dist/{chunk-GCY55TBC.mjs → chunk-2XZHYYZ2.mjs} +106 -91
- package/dist/chunk-2YBLMVDT.mjs +428 -0
- package/dist/{chunk-25D5TXZH.mjs → chunk-32MCQMBJ.mjs} +8 -6
- package/dist/{chunk-6MGQAJ62.mjs → chunk-3GPGSNOQ.mjs} +71 -16
- package/dist/{chunk-M5MZWOHF.mjs → chunk-3HHEVMHE.mjs} +1 -1
- package/dist/{chunk-HSBN5MLS.mjs → chunk-3LACOSJQ.mjs} +1 -1
- package/dist/{chunk-F6WV53BS.mjs → chunk-3LDDXHW2.mjs} +28 -11
- package/dist/{chunk-IXQAECFP.mjs → chunk-3QNIFKVF.mjs} +12 -14
- package/dist/{chunk-UD4DTVJZ.mjs → chunk-4C2X5PZO.mjs} +57 -25
- package/dist/chunk-5JETWHLJ.mjs +28 -0
- package/dist/{chunk-VA6PZWOH.mjs → chunk-5SEMRHBD.mjs} +14 -6
- package/dist/{chunk-MXXAJSRS.mjs → chunk-6RMBUZZE.mjs} +11 -11
- package/dist/{chunk-EKILTLUO.mjs → chunk-72CJNKDY.mjs} +1 -1
- package/dist/{chunk-XE4YFBOZ.mjs → chunk-AUD3VOLO.mjs} +1 -1
- package/dist/{chunk-I4MWOYJS.mjs → chunk-AYFKHWJS.mjs} +13 -7
- package/dist/{chunk-RPSHILHD.mjs → chunk-BXAH2GH3.mjs} +8 -2
- package/dist/{chunk-EW5EO7VE.mjs → chunk-BYD7EAWK.mjs} +1 -1
- package/dist/{chunk-L55UK45A.mjs → chunk-CRIEUKMD.mjs} +5 -2
- package/dist/{chunk-DKNVSQSV.mjs → chunk-CUAXRBKO.mjs} +12 -0
- package/dist/{chunk-NWVNTZOP.mjs → chunk-DECUASRW.mjs} +14 -16
- package/dist/{chunk-XMTEMBQV.mjs → chunk-EAAWB3CK.mjs} +16 -13
- package/dist/{chunk-IR7VA6AO.mjs → chunk-EG7EMDKK.mjs} +1 -1
- package/dist/{chunk-HOYBHB7B.mjs → chunk-FNK2VWPP.mjs} +1 -1
- package/dist/{chunk-RJPNBYK5.mjs → chunk-FQS24AUH.mjs} +12 -3
- package/dist/{chunk-LADKKOJT.mjs → chunk-GBEDWXLL.mjs} +16 -10
- package/dist/{chunk-2ENQZECC.mjs → chunk-HAXRHSCN.mjs} +4 -3
- package/dist/{chunk-K4GIKSZE.mjs → chunk-I2BENK5X.mjs} +2 -1
- package/dist/{chunk-DNOPEJ5I.mjs → chunk-JZZPLKTW.mjs} +7 -4
- package/dist/{chunk-7KCQMXJA.mjs → chunk-KDURW5AS.mjs} +4 -3
- package/dist/{chunk-TFMEHUVZ.mjs → chunk-KKN7KLTB.mjs} +0 -1
- package/dist/{chunk-PFL4HNWM.mjs → chunk-M6ZPTGBV.mjs} +1 -2
- package/dist/{chunk-PXRZ6CKY.mjs → chunk-MJVSZ2UJ.mjs} +46 -16
- package/dist/{chunk-LZKBDQE4.mjs → chunk-MYI3FPG4.mjs} +23 -4
- package/dist/{chunk-OIGEBCAS.mjs → chunk-NADODEZX.mjs} +69 -1
- package/dist/{chunk-UKY2EPS3.mjs → chunk-NJWTZ5MO.mjs} +54 -42
- package/dist/{chunk-ASLRAZZN.mjs → chunk-NXJMVH26.mjs} +5 -2
- package/dist/{chunk-773LH7BK.mjs → chunk-O6VYD4E4.mjs} +24 -2
- package/dist/{chunk-G7D4QV7A.mjs → chunk-O7TV5OKS.mjs} +33 -6
- package/dist/{chunk-DPWRXXXW.mjs → chunk-OJ6SHHOZ.mjs} +3 -3
- package/dist/{chunk-UYJJLHVA.mjs → chunk-PMQJ6AYT.mjs} +23 -21
- package/dist/{chunk-KC55B62J.mjs → chunk-PY2VUNEJ.mjs} +143 -46
- package/dist/{chunk-BEJZPJIK.mjs → chunk-QOAOOD53.mjs} +10 -4
- package/dist/{chunk-JQJM65RJ.mjs → chunk-QU3QXUTC.mjs} +49 -23
- package/dist/{chunk-RQ4PUK6G.mjs → chunk-R7YZ6FKP.mjs} +24 -13
- package/dist/{chunk-YI6YWH66.mjs → chunk-RE5ZLA5D.mjs} +6 -6
- package/dist/{chunk-UCBW5RJN.mjs → chunk-RGVU4EMA.mjs} +11 -6
- package/dist/{chunk-IBSOUQGB.mjs → chunk-RRGPDFDI.mjs} +7 -4
- package/dist/{chunk-ZH5ZBLAN.mjs → chunk-RUQ3F3MV.mjs} +34 -7
- package/dist/{chunk-KVCI2346.mjs → chunk-S2V3HGLZ.mjs} +8 -7
- package/dist/{chunk-PGD5RPKF.mjs → chunk-SVIJ2UZA.mjs} +2 -1
- package/dist/{chunk-UETARXIK.mjs → chunk-SXWEFZOF.mjs} +246 -53
- package/dist/{chunk-H6MVW5YD.mjs → chunk-TEVEXDY2.mjs} +24 -13
- package/dist/{chunk-DJOFM2VO.mjs → chunk-TO6MZFNQ.mjs} +52 -40
- package/dist/{chunk-ZCGIZOMT.mjs → chunk-V7HJ5HLC.mjs} +6 -10
- package/dist/{chunk-SIDDYP3O.mjs → chunk-VJWSKJLJ.mjs} +1 -1
- package/dist/{chunk-ZG56T75O.mjs → chunk-WTHWLCRL.mjs} +51 -11
- package/dist/{chunk-KP6DEYWB.mjs → chunk-X4L3W7RQ.mjs} +1 -1
- package/dist/{chunk-ZMRTETN2.mjs → chunk-X6C6MNG5.mjs} +4 -3
- package/dist/{chunk-OGG2TQDG.mjs → chunk-XVHTJQ4T.mjs} +12 -1
- package/dist/{chunk-FSMJLJFL.mjs → chunk-Y6UH3EKE.mjs} +1 -1
- package/dist/{chunk-7EMCZVJ2.mjs → chunk-YH7FKFRM.mjs} +4 -4
- package/dist/chunk-YJ5T4XZN.mjs +81 -0
- package/dist/{chunk-VVNFXJMN.mjs → chunk-YNDPQVEK.mjs} +8 -1
- package/dist/{chunk-QGZ32NFQ.mjs → chunk-Z23KOLNU.mjs} +4 -3
- package/dist/{chunk-5CKMYMTS.mjs → chunk-ZATZRXMW.mjs} +27 -8
- package/dist/components/ActivityFeed.mjs +2 -2
- package/dist/components/Affix.mjs +1 -1
- package/dist/components/Anchor.mjs +1 -1
- package/dist/components/AreaChart.mjs +4 -3
- package/dist/components/AutoComplete.mjs +1 -1
- package/dist/components/BarChart.mjs +4 -3
- package/dist/components/Calendar.mjs +1 -1
- package/dist/components/Cascader.mjs +1 -1
- package/dist/components/ChartCanvas.mjs +1 -1
- package/dist/components/ChatWindow.mjs +3 -3
- package/dist/components/Code.mjs +3 -1
- package/dist/components/CollapsePanel.mjs +1 -1
- package/dist/components/ColorPicker.d.mts +3 -1
- package/dist/components/ColorPicker.mjs +3 -1
- package/dist/components/CommentThread.mjs +2 -2
- package/dist/components/DataExport.mjs +2 -2
- package/dist/components/DataTableWithToolbar.mjs +7 -7
- package/dist/components/DonutChart.mjs +4 -4
- package/dist/components/Dropdown.mjs +1 -1
- package/dist/components/FileManager.mjs +2 -1
- package/dist/components/FloatButton.mjs +1 -1
- package/dist/components/FormItem.mjs +1 -1
- package/dist/components/FormWizard.mjs +1 -1
- package/dist/components/FunnelChart.mjs +3 -3
- package/dist/components/Gantt.d.mts +3 -1
- package/dist/components/Gantt.mjs +2 -2
- package/dist/components/GaugeChart.mjs +2 -2
- package/dist/components/HeatmapChart.mjs +3 -3
- package/dist/components/Image.mjs +4 -4
- package/dist/components/ImageGroup.mjs +2 -2
- package/dist/components/ImagePreview.mjs +1 -1
- package/dist/components/Input.mjs +1 -1
- package/dist/components/InputNumber.d.mts +1 -1
- package/dist/components/InputNumber.mjs +1 -1
- package/dist/components/Kanban.mjs +2 -2
- package/dist/components/LineChart.mjs +4 -3
- package/dist/components/List.mjs +2 -2
- package/dist/components/Loading.mjs +1 -1
- package/dist/components/MarkdownEditor.mjs +1 -1
- package/dist/components/MaskInput.mjs +1 -1
- package/dist/components/NotificationCenter.mjs +4 -4
- package/dist/components/OrgChart.mjs +2 -2
- package/dist/components/Pagination.mjs +1 -1
- package/dist/components/PieChart.mjs +3 -3
- package/dist/components/Popconfirm.mjs +2 -2
- package/dist/components/Popover.mjs +2 -2
- package/dist/components/QRCode.d.mts +2 -2
- package/dist/components/QRCode.mjs +1 -1
- package/dist/components/RadarChart.mjs +3 -3
- package/dist/components/Rate.mjs +1 -1
- package/dist/components/RichTextEditor.mjs +1 -1
- package/dist/components/ScatterChart.mjs +4 -3
- package/dist/components/ScrollSpy.mjs +1 -1
- package/dist/components/Select.mjs +1 -1
- package/dist/components/Signature.mjs +1 -1
- package/dist/components/SplitButton.mjs +2 -2
- package/dist/components/Splitter.mjs +1 -1
- package/dist/components/Stepper.d.mts +2 -0
- package/dist/components/Stepper.mjs +2 -1
- package/dist/components/SunburstChart.mjs +3 -3
- package/dist/components/Switch.d.mts +5 -1
- package/dist/components/Switch.mjs +2 -1
- package/dist/components/Table.mjs +3 -3
- package/dist/components/TaskBoard.mjs +1 -1
- package/dist/components/Textarea.mjs +1 -1
- package/dist/components/Tooltip.mjs +2 -2
- package/dist/components/Tour.mjs +1 -1
- package/dist/components/TreeMapChart.mjs +3 -3
- package/dist/components/TreeSelect.mjs +1 -1
- package/dist/components/Upload.mjs +1 -1
- package/dist/hooks/useChartInteraction.d.mts +5 -0
- package/dist/hooks/useChartInteraction.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +57 -0
- package/package.json +2 -2
- package/dist/chunk-CB4SK5AU.mjs +0 -235
- package/dist/chunk-KPACLRQH.mjs +0 -55
|
@@ -64,6 +64,10 @@ var Signature = forwardRef(
|
|
|
64
64
|
const canvasRef = useRef(null);
|
|
65
65
|
const strokesRef = useRef([]);
|
|
66
66
|
const activeStrokeRef = useRef(null);
|
|
67
|
+
const capturedPointerIdRef = useRef(null);
|
|
68
|
+
const documentPointerListeningRef = useRef(false);
|
|
69
|
+
const finishStrokeRef = useRef(() => {
|
|
70
|
+
});
|
|
67
71
|
const [strokes, setStrokes] = useState([]);
|
|
68
72
|
const isDisabled = disabled || readonly;
|
|
69
73
|
const normalizedLineWidth = clampSignatureLineWidth(lineWidth);
|
|
@@ -118,9 +122,52 @@ var Signature = forwardRef(
|
|
|
118
122
|
},
|
|
119
123
|
[createPayload, onChange]
|
|
120
124
|
);
|
|
125
|
+
const handleDocumentPointerEnd = useRef(() => {
|
|
126
|
+
finishStrokeRef.current();
|
|
127
|
+
}).current;
|
|
128
|
+
const detachDocumentPointerListeners = () => {
|
|
129
|
+
if (!documentPointerListeningRef.current || typeof document === "undefined") return;
|
|
130
|
+
document.removeEventListener("pointerup", handleDocumentPointerEnd);
|
|
131
|
+
document.removeEventListener("pointercancel", handleDocumentPointerEnd);
|
|
132
|
+
documentPointerListeningRef.current = false;
|
|
133
|
+
};
|
|
134
|
+
const attachDocumentPointerListeners = () => {
|
|
135
|
+
if (documentPointerListeningRef.current || typeof document === "undefined") return;
|
|
136
|
+
document.addEventListener("pointerup", handleDocumentPointerEnd);
|
|
137
|
+
document.addEventListener("pointercancel", handleDocumentPointerEnd);
|
|
138
|
+
documentPointerListeningRef.current = true;
|
|
139
|
+
};
|
|
140
|
+
const captureCanvasPointer = (pointerId) => {
|
|
141
|
+
capturedPointerIdRef.current = pointerId;
|
|
142
|
+
const canvas = canvasRef.current;
|
|
143
|
+
if (!canvas || typeof canvas.setPointerCapture !== "function") return;
|
|
144
|
+
try {
|
|
145
|
+
canvas.setPointerCapture(pointerId);
|
|
146
|
+
} catch {
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const releaseCanvasPointer = () => {
|
|
150
|
+
const canvas = canvasRef.current;
|
|
151
|
+
const pointerId = capturedPointerIdRef.current;
|
|
152
|
+
capturedPointerIdRef.current = null;
|
|
153
|
+
if (!canvas || pointerId == null || typeof canvas.releasePointerCapture !== "function") return;
|
|
154
|
+
if (typeof canvas.hasPointerCapture === "function") {
|
|
155
|
+
try {
|
|
156
|
+
if (!canvas.hasPointerCapture(pointerId)) return;
|
|
157
|
+
} catch {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
canvas.releasePointerCapture(pointerId);
|
|
163
|
+
} catch {
|
|
164
|
+
}
|
|
165
|
+
};
|
|
121
166
|
const clear = useCallback(() => {
|
|
122
167
|
strokesRef.current = [];
|
|
123
168
|
activeStrokeRef.current = null;
|
|
169
|
+
detachDocumentPointerListeners();
|
|
170
|
+
releaseCanvasPointer();
|
|
124
171
|
setStrokes([]);
|
|
125
172
|
draw([]);
|
|
126
173
|
emitChange([]);
|
|
@@ -137,13 +184,23 @@ var Signature = forwardRef(
|
|
|
137
184
|
[clear, toDataURL, toSVG]
|
|
138
185
|
);
|
|
139
186
|
const getPointFromEvent = (event) => {
|
|
140
|
-
const
|
|
187
|
+
const canvas = canvasRef.current;
|
|
188
|
+
const rect = canvas?.getBoundingClientRect() ?? {
|
|
189
|
+
left: 0,
|
|
190
|
+
top: 0,
|
|
191
|
+
width,
|
|
192
|
+
height
|
|
193
|
+
};
|
|
141
194
|
return getSignaturePoint(event.clientX, event.clientY, rect, width, height);
|
|
142
195
|
};
|
|
143
196
|
const handlePointerDown = (event) => {
|
|
144
197
|
if (isDisabled) return;
|
|
145
198
|
event.preventDefault();
|
|
146
199
|
event.currentTarget.focus();
|
|
200
|
+
const pointerId = event.pointerId;
|
|
201
|
+
if (typeof pointerId === "number") {
|
|
202
|
+
captureCanvasPointer(pointerId);
|
|
203
|
+
}
|
|
147
204
|
const stroke = {
|
|
148
205
|
color: penColor,
|
|
149
206
|
lineWidth: normalizedLineWidth,
|
|
@@ -153,6 +210,7 @@ var Signature = forwardRef(
|
|
|
153
210
|
activeStrokeRef.current = stroke;
|
|
154
211
|
strokesRef.current = nextStrokes;
|
|
155
212
|
setStrokes(nextStrokes);
|
|
213
|
+
attachDocumentPointerListeners();
|
|
156
214
|
onBegin?.();
|
|
157
215
|
};
|
|
158
216
|
const handlePointerMove = (event) => {
|
|
@@ -169,7 +227,16 @@ var Signature = forwardRef(
|
|
|
169
227
|
activeStrokeRef.current = null;
|
|
170
228
|
const payload = emitChange(strokesRef.current);
|
|
171
229
|
onEnd?.(payload);
|
|
230
|
+
detachDocumentPointerListeners();
|
|
231
|
+
releaseCanvasPointer();
|
|
172
232
|
};
|
|
233
|
+
finishStrokeRef.current = finishStroke;
|
|
234
|
+
useEffect(() => {
|
|
235
|
+
return () => {
|
|
236
|
+
detachDocumentPointerListeners();
|
|
237
|
+
releaseCanvasPointer();
|
|
238
|
+
};
|
|
239
|
+
}, []);
|
|
173
240
|
const handleKeyDown = (event) => {
|
|
174
241
|
if (!clearable || isDisabled) return;
|
|
175
242
|
if (event.key !== "Delete" && event.key !== "Backspace") return;
|
|
@@ -192,6 +259,7 @@ var Signature = forwardRef(
|
|
|
192
259
|
onPointerMove: handlePointerMove,
|
|
193
260
|
onPointerUp: finishStroke,
|
|
194
261
|
onPointerCancel: finishStroke,
|
|
262
|
+
onLostPointerCapture: finishStroke,
|
|
195
263
|
onKeyDown: handleKeyDown
|
|
196
264
|
}
|
|
197
265
|
) }),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useChartInteraction
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JZZPLKTW.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ChartSeries
|
|
6
6
|
} from "./chunk-SDLMB34Y.mjs";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-YORCCCQX.mjs";
|
|
10
10
|
import {
|
|
11
11
|
ChartCanvas
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CUAXRBKO.mjs";
|
|
13
13
|
import {
|
|
14
14
|
ChartLegend
|
|
15
15
|
} from "./chunk-F2ITBDUS.mjs";
|
|
@@ -20,7 +20,9 @@ import {
|
|
|
20
20
|
chartAxisTickTextClasses,
|
|
21
21
|
chartGridLineClasses,
|
|
22
22
|
classNames,
|
|
23
|
+
createCircleRingPath,
|
|
23
24
|
createPolygonPath,
|
|
25
|
+
createPolygonRingPath,
|
|
24
26
|
getChartGridLineDasharray,
|
|
25
27
|
getChartInnerRect,
|
|
26
28
|
getRadarAngles,
|
|
@@ -121,6 +123,7 @@ var RadarChart = ({
|
|
|
121
123
|
wrapperClasses
|
|
122
124
|
} = useChartInteraction({
|
|
123
125
|
hoverable,
|
|
126
|
+
showTooltip,
|
|
124
127
|
hoveredIndexProp,
|
|
125
128
|
selectable,
|
|
126
129
|
selectedIndexProp,
|
|
@@ -142,11 +145,11 @@ var RadarChart = ({
|
|
|
142
145
|
const [hoveredPoint, setHoveredPoint] = useState(null);
|
|
143
146
|
const handlePointEnter = useCallback(
|
|
144
147
|
(seriesIndex, pointIndex, event) => {
|
|
145
|
-
if (!hoverable) return;
|
|
148
|
+
if (!hoverable && !showTooltip) return;
|
|
146
149
|
setHoveredPoint({ seriesIndex, pointIndex });
|
|
147
150
|
handleHoverEnter(seriesIndex, event);
|
|
148
151
|
},
|
|
149
|
-
[hoverable, handleHoverEnter]
|
|
152
|
+
[hoverable, showTooltip, handleHoverEnter]
|
|
150
153
|
);
|
|
151
154
|
const handlePointMove = useCallback(
|
|
152
155
|
(event) => {
|
|
@@ -422,52 +425,61 @@ var RadarChart = ({
|
|
|
422
425
|
] }),
|
|
423
426
|
splitAreaPaths.map((area, index) => {
|
|
424
427
|
if (area.type === "circle-ring") {
|
|
425
|
-
|
|
426
|
-
/* @__PURE__ */ jsx(
|
|
427
|
-
"
|
|
428
|
+
if (area.innerRadius > 0) {
|
|
429
|
+
return /* @__PURE__ */ jsx(
|
|
430
|
+
"path",
|
|
428
431
|
{
|
|
429
|
-
|
|
430
|
-
cy: area.cy,
|
|
431
|
-
r: area.outerRadius,
|
|
432
|
+
d: createCircleRingPath(area.cx, area.cy, area.outerRadius, area.innerRadius),
|
|
432
433
|
fill: area.color,
|
|
433
434
|
fillOpacity: splitAreaOpacity,
|
|
435
|
+
fillRule: "evenodd",
|
|
434
436
|
stroke: "none",
|
|
435
437
|
"data-radar-split-area": "true"
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
cy: area.cy,
|
|
443
|
-
r: area.innerRadius,
|
|
444
|
-
fill: "var(--tiger-bg,#fff)",
|
|
445
|
-
stroke: "none"
|
|
446
|
-
}
|
|
447
|
-
) : null
|
|
448
|
-
] }, `split-${index}`);
|
|
449
|
-
}
|
|
450
|
-
const outerPath = createPolygonPath(area.outerPoints);
|
|
451
|
-
return /* @__PURE__ */ jsxs("g", { children: [
|
|
452
|
-
outerPath ? /* @__PURE__ */ jsx(
|
|
453
|
-
"path",
|
|
438
|
+
},
|
|
439
|
+
`split-${index}`
|
|
440
|
+
);
|
|
441
|
+
}
|
|
442
|
+
return /* @__PURE__ */ jsx(
|
|
443
|
+
"circle",
|
|
454
444
|
{
|
|
455
|
-
|
|
445
|
+
cx: area.cx,
|
|
446
|
+
cy: area.cy,
|
|
447
|
+
r: area.outerRadius,
|
|
456
448
|
fill: area.color,
|
|
457
449
|
fillOpacity: splitAreaOpacity,
|
|
458
450
|
stroke: "none",
|
|
459
451
|
"data-radar-split-area": "true"
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
|
|
452
|
+
},
|
|
453
|
+
`split-${index}`
|
|
454
|
+
);
|
|
455
|
+
}
|
|
456
|
+
if (area.innerPoints.length > 0) {
|
|
457
|
+
const ringPath = createPolygonRingPath(area.outerPoints, area.innerPoints);
|
|
458
|
+
return ringPath ? /* @__PURE__ */ jsx(
|
|
463
459
|
"path",
|
|
464
460
|
{
|
|
465
|
-
d:
|
|
466
|
-
fill:
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
461
|
+
d: ringPath,
|
|
462
|
+
fill: area.color,
|
|
463
|
+
fillOpacity: splitAreaOpacity,
|
|
464
|
+
fillRule: "evenodd",
|
|
465
|
+
stroke: "none",
|
|
466
|
+
"data-radar-split-area": "true"
|
|
467
|
+
},
|
|
468
|
+
`split-${index}`
|
|
469
|
+
) : null;
|
|
470
|
+
}
|
|
471
|
+
const outerPath = createPolygonPath(area.outerPoints);
|
|
472
|
+
return outerPath ? /* @__PURE__ */ jsx(
|
|
473
|
+
"path",
|
|
474
|
+
{
|
|
475
|
+
d: outerPath,
|
|
476
|
+
fill: area.color,
|
|
477
|
+
fillOpacity: splitAreaOpacity,
|
|
478
|
+
stroke: "none",
|
|
479
|
+
"data-radar-split-area": "true"
|
|
480
|
+
},
|
|
481
|
+
`split-${index}`
|
|
482
|
+
) : null;
|
|
471
483
|
}),
|
|
472
484
|
gridPaths.map(
|
|
473
485
|
(grid, index) => grid.type === "circle" ? /* @__PURE__ */ jsx(
|
|
@@ -581,9 +593,9 @@ var RadarChart = ({
|
|
|
581
593
|
"data-series-index": seriesIndex,
|
|
582
594
|
"data-series-key": item.seriesKey,
|
|
583
595
|
"data-point-index": point.index,
|
|
584
|
-
onMouseEnter: showTooltip
|
|
585
|
-
onMouseMove: showTooltip
|
|
586
|
-
onMouseLeave: showTooltip
|
|
596
|
+
onMouseEnter: showTooltip || hoverable ? (e) => handlePointEnter(seriesIndex, point.index, e) : void 0,
|
|
597
|
+
onMouseMove: showTooltip || hoverable ? handlePointMove : void 0,
|
|
598
|
+
onMouseLeave: showTooltip || hoverable ? handlePointLeave : void 0,
|
|
587
599
|
onFocus: showTooltip && hoverable ? (e) => showPointTooltipFromElement(e.currentTarget, seriesIndex, point.index) : void 0,
|
|
588
600
|
onBlur: showTooltip && hoverable ? handlePointLeave : void 0,
|
|
589
601
|
onKeyDown: showTooltip && hoverable ? (e) => {
|
|
@@ -635,7 +647,7 @@ var RadarChart = ({
|
|
|
635
647
|
]
|
|
636
648
|
}
|
|
637
649
|
);
|
|
638
|
-
const tooltip = showTooltip
|
|
650
|
+
const tooltip = showTooltip ? /* @__PURE__ */ jsx(
|
|
639
651
|
ChartTooltip,
|
|
640
652
|
{
|
|
641
653
|
content: tooltipContent,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
richTextToolbarClasses,
|
|
16
16
|
richTextToolbarSeparatorClasses,
|
|
17
17
|
richTextPlaceholderClasses,
|
|
18
|
-
|
|
18
|
+
createDefaultRichTextToolbar,
|
|
19
19
|
isInlineFormat,
|
|
20
20
|
findHotkeyMatch,
|
|
21
21
|
isContentEmpty,
|
|
@@ -48,7 +48,6 @@ var RichTextEditor = ({
|
|
|
48
48
|
const [currentContent, setContent] = useControlledState(value, defaultValue, onChange);
|
|
49
49
|
const isControlled = value !== void 0;
|
|
50
50
|
const [activeFormats, setActiveFormats] = useState(/* @__PURE__ */ new Set());
|
|
51
|
-
const toolbarItems = toolbar ?? defaultToolbar;
|
|
52
51
|
const empty = isContentEmpty(currentContent);
|
|
53
52
|
const mergedLocale = useMemo(
|
|
54
53
|
() => mergeTigerLocale(config.locale, locale),
|
|
@@ -58,6 +57,10 @@ var RichTextEditor = ({
|
|
|
58
57
|
() => getRichTextEditorLabels(mergedLocale, labelsOverride),
|
|
59
58
|
[mergedLocale, labelsOverride]
|
|
60
59
|
);
|
|
60
|
+
const toolbarItems = useMemo(
|
|
61
|
+
() => toolbar ?? createDefaultRichTextToolbar(labels),
|
|
62
|
+
[toolbar, labels]
|
|
63
|
+
);
|
|
61
64
|
useEffect(() => {
|
|
62
65
|
if (!editorRef.current) return;
|
|
63
66
|
const factory = engine ?? builtinRichTextEngine;
|
|
@@ -28,11 +28,14 @@ import {
|
|
|
28
28
|
kanbanSwimlaneCollapsedClasses,
|
|
29
29
|
kanbanAddColumnClasses,
|
|
30
30
|
filterColumns,
|
|
31
|
+
filterCards,
|
|
31
32
|
groupBySwimlane,
|
|
32
33
|
getColumnCardCount,
|
|
33
34
|
moveCard,
|
|
35
|
+
mapVisibleCardIndexToSource,
|
|
34
36
|
reorderColumns,
|
|
35
37
|
isWipExceeded,
|
|
38
|
+
appendDefaultTaskBoardCard,
|
|
36
39
|
createTaskBoardDragController,
|
|
37
40
|
createDefaultDragSnapshot
|
|
38
41
|
} from "@expcat/tigercat-core";
|
|
@@ -343,6 +346,17 @@ var TaskBoard = ({
|
|
|
343
346
|
},
|
|
344
347
|
[onColumnsChange]
|
|
345
348
|
);
|
|
349
|
+
const consumerOnCardAdd = onCardAdd;
|
|
350
|
+
const showAddCard = Boolean(allowAddCard || consumerOnCardAdd);
|
|
351
|
+
const handleCardAdd = useCallback(
|
|
352
|
+
(columnId) => {
|
|
353
|
+
if (consumerOnCardAdd == null) {
|
|
354
|
+
updateColumns(appendDefaultTaskBoardCard(columnsRef.current, columnId));
|
|
355
|
+
}
|
|
356
|
+
consumerOnCardAdd?.(columnId);
|
|
357
|
+
},
|
|
358
|
+
[consumerOnCardAdd, updateColumns]
|
|
359
|
+
);
|
|
346
360
|
const [dragSnap, setDragSnap] = useState(createDefaultDragSnapshot);
|
|
347
361
|
const boardRef = useRef(null);
|
|
348
362
|
const beforeCardMoveRef = useRef(beforeCardMove);
|
|
@@ -355,9 +369,17 @@ var TaskBoard = ({
|
|
|
355
369
|
onColumnMoveRef.current = onColumnMove;
|
|
356
370
|
const enforceWipLimitRef = useRef(enforceWipLimit);
|
|
357
371
|
enforceWipLimitRef.current = enforceWipLimit;
|
|
372
|
+
const filterTextRef = useRef(filterText);
|
|
373
|
+
filterTextRef.current = filterText;
|
|
358
374
|
const applyCardMove = useCallback(
|
|
359
375
|
async (cardId, fromColumnId, toColumnId, toIdx) => {
|
|
360
|
-
const
|
|
376
|
+
const sourceCol = columnsRef.current.find((c) => c.id === toColumnId);
|
|
377
|
+
const mappedIdx = sourceCol == null ? toIdx : mapVisibleCardIndexToSource(
|
|
378
|
+
sourceCol.cards,
|
|
379
|
+
filterCards(sourceCol.cards, filterTextRef.current),
|
|
380
|
+
toIdx
|
|
381
|
+
);
|
|
382
|
+
const result = moveCard(columnsRef.current, cardId, fromColumnId, toColumnId, mappedIdx, {
|
|
361
383
|
enforceWipLimit: enforceWipLimitRef.current
|
|
362
384
|
});
|
|
363
385
|
if (!result) return;
|
|
@@ -442,7 +464,7 @@ var TaskBoard = ({
|
|
|
442
464
|
renderColumnHeader,
|
|
443
465
|
renderColumnFooter,
|
|
444
466
|
renderEmptyColumn,
|
|
445
|
-
onCardAdd,
|
|
467
|
+
onCardAdd: showAddCard ? handleCardAdd : void 0,
|
|
446
468
|
dragType,
|
|
447
469
|
dragCtrl,
|
|
448
470
|
dragStateId,
|
|
@@ -9,13 +9,28 @@ import {
|
|
|
9
9
|
floatButtonSizeClasses,
|
|
10
10
|
floatButtonTypeClasses,
|
|
11
11
|
floatButtonDisabledClasses,
|
|
12
|
-
|
|
12
|
+
floatButtonIconSizeClasses,
|
|
13
|
+
floatButtonPlusIconPath,
|
|
14
|
+
getFloatButtonGroupClasses,
|
|
13
15
|
getViewportOffsetStyle,
|
|
14
16
|
viewportFloatingBaseClasses,
|
|
15
17
|
viewportPlacementClasses
|
|
16
18
|
} from "@expcat/tigercat-core";
|
|
17
19
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
20
|
var FloatButtonGroupContext = createContext(null);
|
|
21
|
+
var DefaultPlusIcon = ({ size }) => /* @__PURE__ */ jsx(
|
|
22
|
+
"svg",
|
|
23
|
+
{
|
|
24
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
25
|
+
fill: "none",
|
|
26
|
+
viewBox: "0 0 24 24",
|
|
27
|
+
stroke: "currentColor",
|
|
28
|
+
strokeWidth: 2,
|
|
29
|
+
className: floatButtonIconSizeClasses[size],
|
|
30
|
+
"aria-hidden": "true",
|
|
31
|
+
children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: floatButtonPlusIconPath })
|
|
32
|
+
}
|
|
33
|
+
);
|
|
19
34
|
var FloatButton = ({
|
|
20
35
|
shape,
|
|
21
36
|
size = "md",
|
|
@@ -58,11 +73,11 @@ var FloatButton = ({
|
|
|
58
73
|
type: "button",
|
|
59
74
|
disabled,
|
|
60
75
|
style: buttonStyle,
|
|
61
|
-
"aria-label": ariaLabel ?? tooltip,
|
|
76
|
+
"aria-label": children != null ? ariaLabel ?? tooltip : ariaLabel ?? tooltip ?? "Add",
|
|
62
77
|
title: tooltip,
|
|
63
78
|
onClick: disabled ? void 0 : onClick,
|
|
64
79
|
...props,
|
|
65
|
-
children
|
|
80
|
+
children: children ?? /* @__PURE__ */ jsx(DefaultPlusIcon, { size })
|
|
66
81
|
}
|
|
67
82
|
);
|
|
68
83
|
};
|
|
@@ -74,6 +89,10 @@ var FloatButtonGroup = ({
|
|
|
74
89
|
children,
|
|
75
90
|
className,
|
|
76
91
|
onOpenChange,
|
|
92
|
+
placement = "bottom-right",
|
|
93
|
+
offset,
|
|
94
|
+
portal = true,
|
|
95
|
+
style,
|
|
77
96
|
...props
|
|
78
97
|
}) => {
|
|
79
98
|
const groupContextValue = useMemo(() => ({ shape: groupShape }), [groupShape]);
|
|
@@ -92,12 +111,20 @@ var FloatButtonGroup = ({
|
|
|
92
111
|
setInternalOpen(false);
|
|
93
112
|
onOpenChange?.(false);
|
|
94
113
|
}, [onOpenChange]);
|
|
95
|
-
const groupClasses = useMemo(
|
|
96
|
-
|
|
114
|
+
const groupClasses = useMemo(
|
|
115
|
+
() => classNames(getFloatButtonGroupClasses({ placement, portal }), className),
|
|
116
|
+
[placement, portal, className]
|
|
117
|
+
);
|
|
118
|
+
const groupStyle = useMemo(
|
|
119
|
+
() => ({ ...getViewportOffsetStyle(placement, offset), ...style }),
|
|
120
|
+
[placement, offset, style]
|
|
121
|
+
);
|
|
122
|
+
if (portal && !isBrowser()) return null;
|
|
97
123
|
const content = /* @__PURE__ */ jsx(FloatButtonGroupContext.Provider, { value: groupContextValue, children: /* @__PURE__ */ jsxs(
|
|
98
124
|
"div",
|
|
99
125
|
{
|
|
100
126
|
className: groupClasses,
|
|
127
|
+
style: groupStyle,
|
|
101
128
|
onMouseEnter: trigger === "hover" ? handleMouseEnter : void 0,
|
|
102
129
|
onMouseLeave: trigger === "hover" ? handleMouseLeave : void 0,
|
|
103
130
|
...props,
|
|
@@ -107,7 +134,7 @@ var FloatButtonGroup = ({
|
|
|
107
134
|
]
|
|
108
135
|
}
|
|
109
136
|
) });
|
|
110
|
-
return ReactDOM.createPortal(content, document.body);
|
|
137
|
+
return portal ? ReactDOM.createPortal(content, document.body) : content;
|
|
111
138
|
};
|
|
112
139
|
|
|
113
140
|
export {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ImageGroupContext
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3LACOSJQ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ImagePreview
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-V7HJ5HLC.mjs";
|
|
7
7
|
import {
|
|
8
8
|
usePopup
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WTHWLCRL.mjs";
|
|
10
10
|
import {
|
|
11
11
|
renderOverlayPortal
|
|
12
12
|
} from "./chunk-HKAZXG74.mjs";
|
|
@@ -66,28 +66,30 @@ var Textarea = forwardRef(
|
|
|
66
66
|
onChange?.(event);
|
|
67
67
|
};
|
|
68
68
|
const currentLength = currentValue?.length ?? 0;
|
|
69
|
+
const textarea = /* @__PURE__ */ jsx(
|
|
70
|
+
"textarea",
|
|
71
|
+
{
|
|
72
|
+
ref: setRefs,
|
|
73
|
+
className: textareaClasses,
|
|
74
|
+
value: currentValue,
|
|
75
|
+
disabled,
|
|
76
|
+
readOnly: readonly,
|
|
77
|
+
required,
|
|
78
|
+
placeholder,
|
|
79
|
+
rows,
|
|
80
|
+
maxLength,
|
|
81
|
+
minLength,
|
|
82
|
+
onInput: handleInput,
|
|
83
|
+
onChange: handleChange,
|
|
84
|
+
onFocus,
|
|
85
|
+
onBlur,
|
|
86
|
+
...props
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
if (!showCount) return textarea;
|
|
69
90
|
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{
|
|
73
|
-
ref: setRefs,
|
|
74
|
-
className: textareaClasses,
|
|
75
|
-
value: currentValue,
|
|
76
|
-
disabled,
|
|
77
|
-
readOnly: readonly,
|
|
78
|
-
required,
|
|
79
|
-
placeholder,
|
|
80
|
-
rows,
|
|
81
|
-
maxLength,
|
|
82
|
-
minLength,
|
|
83
|
-
onInput: handleInput,
|
|
84
|
-
onChange: handleChange,
|
|
85
|
-
onFocus,
|
|
86
|
-
onBlur,
|
|
87
|
-
...props
|
|
88
|
-
}
|
|
89
|
-
),
|
|
90
|
-
showCount && /* @__PURE__ */ jsx("div", { className: "mt-1 text-sm text-gray-500 text-right", children: maxLength ? `${currentLength}/${maxLength}` : currentLength })
|
|
91
|
+
textarea,
|
|
92
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1 text-sm text-gray-500 text-right", children: maxLength ? `${currentLength}/${maxLength}` : currentLength })
|
|
91
93
|
] });
|
|
92
94
|
}
|
|
93
95
|
);
|