@weasel-js/ui 1.4.0 → 1.4.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/chunks/{ActionsBar-B-gWm0NE.js → ActionsBar-C2oXIJk-.js} +3 -3
- package/dist/chunks/{ActionsBar-B-gWm0NE.js.map → ActionsBar-C2oXIJk-.js.map} +1 -1
- package/dist/chunks/{Badge-BXTDs-zi.js → Badge-7yQseqZb.js} +233 -263
- package/dist/chunks/Badge-7yQseqZb.js.map +1 -0
- package/dist/chunks/BandEditor-CqiMlSF9.js +252 -0
- package/dist/chunks/BandEditor-CqiMlSF9.js.map +1 -0
- package/dist/chunks/{Callout-wRyevt8I.js → Callout-63z0T-w3.js} +1 -1
- package/dist/chunks/{Callout-wRyevt8I.js.map → Callout-63z0T-w3.js.map} +1 -1
- package/dist/chunks/{Checkbox-D_GCnoJ0.js → Checkbox-CkcngYWa.js} +1 -1
- package/dist/chunks/{Checkbox-D_GCnoJ0.js.map → Checkbox-CkcngYWa.js.map} +1 -1
- package/dist/chunks/{ColorField-pEkaSppg.js → ColorField-CCBSv8dp.js} +2 -2
- package/dist/chunks/{ColorField-pEkaSppg.js.map → ColorField-CCBSv8dp.js.map} +1 -1
- package/dist/chunks/{ComboBox-inno5gt1.js → ComboBox-TnIrRldB.js} +2 -2
- package/dist/chunks/{ComboBox-inno5gt1.js.map → ComboBox-TnIrRldB.js.map} +1 -1
- package/dist/chunks/{CurveEditor-Cpuvl_iN.js → CurveEditor-BNbP2wgq.js} +193 -196
- package/dist/chunks/CurveEditor-BNbP2wgq.js.map +1 -0
- package/dist/chunks/{DataGrid-BWZZUekH.js → DataGrid-CiJGbgok.js} +2 -5
- package/dist/chunks/DataGrid-CiJGbgok.js.map +1 -0
- package/dist/chunks/{DetentSlider--tQdVQj_.js → DetentSlider-C6RTsiPi.js} +2 -2
- package/dist/chunks/{DetentSlider--tQdVQj_.js.map → DetentSlider-C6RTsiPi.js.map} +1 -1
- package/dist/chunks/{Dialog-CX2B8PIp.js → Dialog-D8pVzsw8.js} +1 -1
- package/dist/chunks/{Dialog-CX2B8PIp.js.map → Dialog-D8pVzsw8.js.map} +1 -1
- package/dist/chunks/Disclosure-aSX2CZlw.js +47 -0
- package/dist/chunks/Disclosure-aSX2CZlw.js.map +1 -0
- package/dist/chunks/{DragHandleGlyph--2zsZzA2.js → DragHandleGlyph-C6GJyfnm.js} +1 -1
- package/dist/chunks/{DragHandleGlyph--2zsZzA2.js.map → DragHandleGlyph-C6GJyfnm.js.map} +1 -1
- package/dist/chunks/{Field-Bc6Nuc3p.js → Field-BUroh92b.js} +1 -1
- package/dist/chunks/{Field-Bc6Nuc3p.js.map → Field-BUroh92b.js.map} +1 -1
- package/dist/chunks/{FontFamilySelect-CvrXKVwv.js → FontFamilySelect-xjOHQMsK.js} +2 -2
- package/dist/chunks/{FontFamilySelect-CvrXKVwv.js.map → FontFamilySelect-xjOHQMsK.js.map} +1 -1
- package/dist/chunks/{GradientEditor-C5pPbMa_.js → GradientEditor-D1IVEkHO.js} +13 -11
- package/dist/chunks/{GradientEditor-C5pPbMa_.js.map → GradientEditor-D1IVEkHO.js.map} +1 -1
- package/dist/chunks/{InlineRange-CBt_SBsC.js → InlineRange-DG2dvtb4.js} +2 -2
- package/dist/chunks/{InlineRange-CBt_SBsC.js.map → InlineRange-DG2dvtb4.js.map} +1 -1
- package/dist/chunks/{Input-CSAECs_T.js → Input-CxMANia3.js} +2 -2
- package/dist/chunks/{Input-CSAECs_T.js.map → Input-CxMANia3.js.map} +1 -1
- package/dist/chunks/{ItemList-POiCvUDx.js → ItemList-BcdHAah3.js} +1 -1
- package/dist/chunks/{ItemList-POiCvUDx.js.map → ItemList-BcdHAah3.js.map} +1 -1
- package/dist/chunks/{Keycaps-DszN5Dwl.js → Keycaps-D-UGWDrt.js} +1 -1
- package/dist/chunks/{Keycaps-DszN5Dwl.js.map → Keycaps-D-UGWDrt.js.map} +1 -1
- package/dist/chunks/{LayerStack-htMwIsJ6.js → LayerStack-DQnWSOVC.js} +23 -26
- package/dist/chunks/LayerStack-DQnWSOVC.js.map +1 -0
- package/dist/chunks/{NumberField-Byw1iaIJ.js → NumberField-DLw4UmF3.js} +12 -10
- package/dist/chunks/NumberField-DLw4UmF3.js.map +1 -0
- package/dist/chunks/{OptionsBar-efIwfqYe.js → OptionsBar-BXyk_5gT.js} +3 -3
- package/dist/chunks/{OptionsBar-efIwfqYe.js.map → OptionsBar-BXyk_5gT.js.map} +1 -1
- package/dist/chunks/{PaintInput-DtCSGda0.js → PaintInput-DCgWtKxw.js} +5 -5
- package/dist/chunks/{PaintInput-DtCSGda0.js.map → PaintInput-DCgWtKxw.js.map} +1 -1
- package/dist/chunks/{PatternPicker-G9e0CU5H.js → PatternPicker-CPFEhpXD.js} +2 -2
- package/dist/chunks/{PatternPicker-G9e0CU5H.js.map → PatternPicker-CPFEhpXD.js.map} +1 -1
- package/dist/chunks/{Plot2D-D63D5w6c.js → Plot2D-BtI_c25q.js} +1 -1
- package/dist/chunks/{Plot2D-D63D5w6c.js.map → Plot2D-BtI_c25q.js.map} +1 -1
- package/dist/chunks/{PointPlotter-CR-QGCIf.js → PointPlotter-B-DvXjkL.js} +2 -2
- package/dist/chunks/{PointPlotter-CR-QGCIf.js.map → PointPlotter-B-DvXjkL.js.map} +1 -1
- package/dist/chunks/{Powerline--gx4j0Zr.js → Powerline-CJYCbqSc.js} +2 -2
- package/dist/chunks/{Powerline--gx4j0Zr.js.map → Powerline-CJYCbqSc.js.map} +1 -1
- package/dist/chunks/{Prefs-ByKG3ylD.js → Prefs-BqnwyjmH.js} +10 -10
- package/dist/chunks/{Prefs-ByKG3ylD.js.map → Prefs-BqnwyjmH.js.map} +1 -1
- package/dist/chunks/Properties-fLSEE65J.js +746 -0
- package/dist/chunks/Properties-fLSEE65J.js.map +1 -0
- package/dist/chunks/{RadioGroup-XjbfUb7S.js → RadioGroup-VGAaLYaR.js} +2 -2
- package/dist/chunks/{RadioGroup-XjbfUb7S.js.map → RadioGroup-VGAaLYaR.js.map} +1 -1
- package/dist/chunks/{RangeSlider-D0hFbx_Z.js → RangeSlider-DefoAOsh.js} +1 -1
- package/dist/chunks/{RangeSlider-D0hFbx_Z.js.map → RangeSlider-DefoAOsh.js.map} +1 -1
- package/dist/chunks/ResizeHandle-DMJdqRud.js +79 -0
- package/dist/chunks/ResizeHandle-DMJdqRud.js.map +1 -0
- package/dist/chunks/Select-DGafwTF0.js +121 -0
- package/dist/chunks/Select-DGafwTF0.js.map +1 -0
- package/dist/chunks/{SelectionPanel-OfbtyDJH.js → SelectionPanel-BwBevj5F.js} +10 -10
- package/dist/chunks/{SelectionPanel-OfbtyDJH.js.map → SelectionPanel-BwBevj5F.js.map} +1 -1
- package/dist/chunks/{Sidebar-Du0yp1S0.js → Sidebar-CeSRkWKK.js} +1 -1
- package/dist/chunks/{Sidebar-Du0yp1S0.js.map → Sidebar-CeSRkWKK.js.map} +1 -1
- package/dist/chunks/{SidebarPanel-Cuq__FIC.js → SidebarPanel-BWIiJv7M.js} +1 -1
- package/dist/chunks/{SidebarPanel-Cuq__FIC.js.map → SidebarPanel-BWIiJv7M.js.map} +1 -1
- package/dist/chunks/Slider-X6WcO-6s.js +303 -0
- package/dist/chunks/Slider-X6WcO-6s.js.map +1 -0
- package/dist/chunks/{StatusBar-DLYwh5sb.js → StatusBar-COyPUoEs.js} +1 -1
- package/dist/chunks/{StatusBar-DLYwh5sb.js.map → StatusBar-COyPUoEs.js.map} +1 -1
- package/dist/chunks/{Switch-B521iN3m.js → Switch-Y097LD1L.js} +1 -1
- package/dist/chunks/{Switch-B521iN3m.js.map → Switch-Y097LD1L.js.map} +1 -1
- package/dist/chunks/{Tabs-BuifAv0p.js → Tabs-BDzkqWDE.js} +1 -1
- package/dist/chunks/{Tabs-BuifAv0p.js.map → Tabs-BDzkqWDE.js.map} +1 -1
- package/dist/chunks/{Timeline-BE7UWajy.js → Timeline-D9xQBdKN.js} +219 -205
- package/dist/chunks/Timeline-D9xQBdKN.js.map +1 -0
- package/dist/chunks/{Toast-B75V2gqL.js → Toast-DX0iLdC3.js} +1 -1
- package/dist/chunks/{Toast-B75V2gqL.js.map → Toast-DX0iLdC3.js.map} +1 -1
- package/dist/chunks/{ToggleBar-D0veW91s.js → ToggleBar-fQGk_Wf_.js} +2 -2
- package/dist/chunks/{ToggleBar-D0veW91s.js.map → ToggleBar-fQGk_Wf_.js.map} +1 -1
- package/dist/chunks/{ToolButton-D5VwD47i.js → ToolButton-DpqTcgLa.js} +1 -1
- package/dist/chunks/{ToolButton-D5VwD47i.js.map → ToolButton-DpqTcgLa.js.map} +1 -1
- package/dist/chunks/{ToolGroup-B2PlMKQ-.js → ToolGroup-DOrObiiA.js} +1 -1
- package/dist/chunks/{ToolGroup-B2PlMKQ-.js.map → ToolGroup-DOrObiiA.js.map} +1 -1
- package/dist/chunks/{ToolOptionsBar-ByHX7y1M.js → ToolOptionsBar-f6b5u99i.js} +1 -1
- package/dist/chunks/{ToolOptionsBar-ByHX7y1M.js.map → ToolOptionsBar-f6b5u99i.js.map} +1 -1
- package/dist/chunks/{ToolPalette-Bi5ezkO6.js → ToolPalette-B_Zjw6dC.js} +5 -5
- package/dist/chunks/{ToolPalette-Bi5ezkO6.js.map → ToolPalette-B_Zjw6dC.js.map} +1 -1
- package/dist/chunks/{keyGlyph-BLFMKZgF.js → keyGlyph-L5bsDQe5.js} +1 -1
- package/dist/chunks/{keyGlyph-BLFMKZgF.js.map → keyGlyph-L5bsDQe5.js.map} +1 -1
- package/dist/chunks/{number-D3TDawLC.js → number-Dy633mrx.js} +1 -1
- package/dist/chunks/{number-D3TDawLC.js.map → number-Dy633mrx.js.map} +1 -1
- package/dist/chunks/{range.module-CttzfN6a.js → range.module-CO59aXEH.js} +1 -1
- package/dist/chunks/{range.module-CttzfN6a.js.map → range.module-CO59aXEH.js.map} +1 -1
- package/dist/chunks/{segmentedControl.module-XADeq9e5.js → segmentedControl.module-pcPOsNey.js} +1 -1
- package/dist/chunks/{segmentedControl.module-XADeq9e5.js.map → segmentedControl.module-pcPOsNey.js.map} +1 -1
- package/dist/chunks/useReorderDragList-C2fhvbU1.js +102 -0
- package/dist/chunks/useReorderDragList-C2fhvbU1.js.map +1 -0
- package/dist/chunks/{useRovingTabIndex-ByjY4lnw.js → useRovingTabIndex-DqXFNDaD.js} +1 -1
- package/dist/chunks/{useRovingTabIndex-ByjY4lnw.js.map → useRovingTabIndex-DqXFNDaD.js.map} +1 -1
- package/dist/components/ActionsBar/index.js +1 -1
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/index.js +1 -1
- package/dist/components/Badge/shapes/Perforated.d.ts.map +1 -1
- package/dist/components/Badge/shapes/Shield.d.ts.map +1 -1
- package/dist/components/Badge/useSvgBox.d.ts +10 -0
- package/dist/components/Badge/useSvgBox.d.ts.map +1 -0
- package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
- package/dist/components/BandEditor/index.js +1 -1
- package/dist/components/Callout/index.js +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/ColorField/index.js +1 -1
- package/dist/components/ComboBox/index.js +1 -1
- package/dist/components/CurveEditor/LayeredCurveEditor.d.ts.map +1 -1
- package/dist/components/CurveEditor/index.js +1 -1
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/index.js +1 -1
- package/dist/components/DetentSlider/index.js +1 -1
- package/dist/components/Dialog/index.js +1 -1
- package/dist/components/Disclosure/Disclosure.d.ts +64 -0
- package/dist/components/Disclosure/Disclosure.d.ts.map +1 -0
- package/dist/components/Disclosure/index.d.ts +3 -0
- package/dist/components/Disclosure/index.d.ts.map +1 -0
- package/dist/components/Disclosure/index.js +2 -0
- package/dist/components/DragHandleGlyph/index.js +1 -1
- package/dist/components/Field/index.js +1 -1
- package/dist/components/FontFamilySelect/index.js +1 -1
- package/dist/components/GradientEditor/index.js +1 -1
- package/dist/components/InlineRange/index.js +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/ItemList/index.js +1 -1
- package/dist/components/Keycaps/index.js +2 -2
- package/dist/components/LayerStack/LayerStack.d.ts +22 -9
- package/dist/components/LayerStack/LayerStack.d.ts.map +1 -1
- package/dist/components/LayerStack/index.js +1 -1
- package/dist/components/NumberField/NumberField.d.ts +12 -0
- package/dist/components/NumberField/NumberField.d.ts.map +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OptionsBar/index.js +1 -1
- package/dist/components/PaintInput/index.js +1 -1
- package/dist/components/PatternPicker/index.js +1 -1
- package/dist/components/Plot2D/index.js +1 -1
- package/dist/components/PointPlotter/index.js +1 -1
- package/dist/components/Powerline/index.js +2 -2
- package/dist/components/Prefs/index.js +1 -1
- package/dist/components/Properties/EffectCard.d.ts +3 -2
- package/dist/components/Properties/EffectCard.d.ts.map +1 -1
- package/dist/components/Properties/PropertyGroup.d.ts +24 -10
- package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
- package/dist/components/Properties/PropertyPanel.d.ts +68 -24
- package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
- package/dist/components/Properties/index.d.ts +1 -1
- package/dist/components/Properties/index.d.ts.map +1 -1
- package/dist/components/Properties/index.js +2 -2
- package/dist/components/RadioGroup/index.js +1 -1
- package/dist/components/RangeSlider/index.js +1 -1
- package/dist/components/ResizeHandle/ResizeHandle.d.ts.map +1 -1
- package/dist/components/ResizeHandle/index.js +1 -1
- package/dist/components/Select/Select.d.ts +7 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/SelectionPanel/index.js +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/SidebarPanel/index.js +1 -1
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/StatusBar/index.js +1 -1
- package/dist/components/Switch/index.js +1 -1
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/Timeline/Lane.d.ts.map +1 -1
- package/dist/components/Timeline/Ruler.d.ts.map +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleBar/index.js +1 -1
- package/dist/components/ToolButton/index.js +1 -1
- package/dist/components/ToolGroup/index.js +1 -1
- package/dist/components/ToolOptionsBar/index.js +1 -1
- package/dist/components/ToolPalette/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -57
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/useReorderDragList.d.ts +20 -7
- package/dist/useReorderDragList.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunks/Badge-BXTDs-zi.js.map +0 -1
- package/dist/chunks/BandEditor-CfLW44uR.js +0 -248
- package/dist/chunks/BandEditor-CfLW44uR.js.map +0 -1
- package/dist/chunks/CurveEditor-Cpuvl_iN.js.map +0 -1
- package/dist/chunks/DataGrid-BWZZUekH.js.map +0 -1
- package/dist/chunks/LayerStack-htMwIsJ6.js.map +0 -1
- package/dist/chunks/NumberField-Byw1iaIJ.js.map +0 -1
- package/dist/chunks/Properties-BEGlt0Z2.js +0 -662
- package/dist/chunks/Properties-BEGlt0Z2.js.map +0 -1
- package/dist/chunks/ResizeHandle-DjGZkPpx.js +0 -81
- package/dist/chunks/ResizeHandle-DjGZkPpx.js.map +0 -1
- package/dist/chunks/Select-D1uP21db.js +0 -103
- package/dist/chunks/Select-D1uP21db.js.map +0 -1
- package/dist/chunks/Slider-CSwL-Nj9.js +0 -296
- package/dist/chunks/Slider-CSwL-Nj9.js.map +0 -1
- package/dist/chunks/Timeline-BE7UWajy.js.map +0 -1
- package/dist/chunks/useReorderDragList-nQMVwNBd.js +0 -109
- package/dist/chunks/useReorderDragList-nQMVwNBd.js.map +0 -1
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { useCallback as e, useRef as t, useState as n } from "react";
|
|
2
|
-
//#region src/useReorderDragList.ts
|
|
3
|
-
function r(e, t) {
|
|
4
|
-
let n = 0;
|
|
5
|
-
for (let r = t - 1; r >= 0; r--) if (e[r]?.locked) {
|
|
6
|
-
n = r + 1;
|
|
7
|
-
break;
|
|
8
|
-
}
|
|
9
|
-
let r = e.length;
|
|
10
|
-
for (let n = t + 1; n < e.length; n++) if (e[n]?.locked) {
|
|
11
|
-
r = n;
|
|
12
|
-
break;
|
|
13
|
-
}
|
|
14
|
-
return [n, r];
|
|
15
|
-
}
|
|
16
|
-
function i(i) {
|
|
17
|
-
let { threshold: a = 4 } = i, o = t(i);
|
|
18
|
-
o.current = i;
|
|
19
|
-
let s = t(null), c = t(null), l = t(null), [u, d] = n({
|
|
20
|
-
draggedIds: null,
|
|
21
|
-
targetIndex: null
|
|
22
|
-
}), f = e((e, t) => {
|
|
23
|
-
let [n, i] = r(o.current.items, t), a = s.current;
|
|
24
|
-
if (!a) return n;
|
|
25
|
-
let c = Array.from(a.children), l = c.length;
|
|
26
|
-
for (let t = 0; t < c.length; t++) {
|
|
27
|
-
let n = c[t];
|
|
28
|
-
if (n && e < n.getBoundingClientRect().bottom) {
|
|
29
|
-
l = t;
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return Math.max(n, Math.min(l, i));
|
|
34
|
-
}, []), p = e((e) => {
|
|
35
|
-
s.current = e;
|
|
36
|
-
}, []), m = e((e, t, n) => {
|
|
37
|
-
if (!o.current.items[t]?.locked) {
|
|
38
|
-
try {
|
|
39
|
-
n.currentTarget.setPointerCapture?.(n.pointerId);
|
|
40
|
-
} catch {}
|
|
41
|
-
c.current = {
|
|
42
|
-
id: e,
|
|
43
|
-
sourceIndex: t,
|
|
44
|
-
startX: n.clientX,
|
|
45
|
-
startY: n.clientY,
|
|
46
|
-
pointerId: n.pointerId
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}, []), h = e(() => {
|
|
50
|
-
c.current = null, l.current = null, d({
|
|
51
|
-
draggedIds: null,
|
|
52
|
-
targetIndex: null
|
|
53
|
-
});
|
|
54
|
-
}, []);
|
|
55
|
-
return {
|
|
56
|
-
rowProps: (e, t) => ({ onPointerDown: (n) => m(e, t, n) }),
|
|
57
|
-
containerProps: {
|
|
58
|
-
ref: p,
|
|
59
|
-
onPointerMove: e((e) => {
|
|
60
|
-
let t = l.current;
|
|
61
|
-
if (t) {
|
|
62
|
-
let n = f(e.clientY, t.sourceIndex);
|
|
63
|
-
n !== t.targetIndex && (t.targetIndex = n, d({
|
|
64
|
-
draggedIds: t.draggedIds,
|
|
65
|
-
targetIndex: n
|
|
66
|
-
}));
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
let n = c.current;
|
|
70
|
-
if (!n) return;
|
|
71
|
-
let i = e.clientX - n.startX, s = e.clientY - n.startY;
|
|
72
|
-
if (Math.hypot(i, s) < a) return;
|
|
73
|
-
let u = o.current.selectedIds, p = u.includes(n.id), [m, h] = r(o.current.items, n.sourceIndex), g = (p ? [...u] : [n.id]).filter((e) => {
|
|
74
|
-
let t = o.current.items.findIndex((t) => t.id === e);
|
|
75
|
-
return t >= m && t < h;
|
|
76
|
-
}), _ = f(e.clientY, n.sourceIndex);
|
|
77
|
-
l.current = {
|
|
78
|
-
...n,
|
|
79
|
-
draggedIds: g,
|
|
80
|
-
targetIndex: _
|
|
81
|
-
}, d({
|
|
82
|
-
draggedIds: g,
|
|
83
|
-
targetIndex: _
|
|
84
|
-
});
|
|
85
|
-
}, [f, a]),
|
|
86
|
-
onPointerUp: e((e) => {
|
|
87
|
-
let t = l.current;
|
|
88
|
-
if (!t) {
|
|
89
|
-
h();
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
let n = f(e.clientY, t.sourceIndex), r = o.current.items, i = t.draggedIds.map((e) => r.findIndex((t) => t.id === e)).filter((e) => e >= 0).sort((e, t) => e - t), a = i.length > 0 && i.every((e, t) => {
|
|
93
|
-
if (t === 0) return !0;
|
|
94
|
-
let n = i[t - 1];
|
|
95
|
-
return n !== void 0 && e === n + 1;
|
|
96
|
-
}), s = i[0], c = i[i.length - 1];
|
|
97
|
-
a && s !== void 0 && c !== void 0 && n >= s && n <= c + 1 || o.current.onReorder(t.draggedIds, n), h();
|
|
98
|
-
}, [f, h]),
|
|
99
|
-
onPointerCancel: e(() => {
|
|
100
|
-
h();
|
|
101
|
-
}, [h])
|
|
102
|
-
},
|
|
103
|
-
state: u
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
//#endregion
|
|
107
|
-
export { i as t };
|
|
108
|
-
|
|
109
|
-
//# sourceMappingURL=useReorderDragList-nQMVwNBd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useReorderDragList-nQMVwNBd.js","names":[],"sources":["../../src/useReorderDragList.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport type { ReactNode, PointerEvent as ReactPointerEvent, RefCallback } from 'react';\n\n/** One row in a reorderable list. */\nexport interface LayerListItem {\n id: string;\n label: ReactNode;\n /** Locked rows cannot be dragged, cannot be crossed by drops, and\n * never combine with other rows in a multi-selection. */\n locked?: boolean;\n /** Optional color swatch rendered before the label. Any CSS color string. */\n swatch?: string;\n}\n\n/**\n * Options for {@link useReorderDragList}. `onReorder` receives the dragged ids\n * and the index they were dropped at, measured against the pre-drag `items`.\n */\nexport interface UseReorderDragListOptions {\n items: LayerListItem[];\n selectedIds: string[];\n onReorder(ids: string[], targetIndex: number): void;\n /** Pointer-move distance (px) before pending drag engages. Default 4. */\n threshold?: number;\n}\n\n/**\n * Live drag state for rendering feedback: which ids are being dragged and the\n * insertion index the drop would use. Both `null` when no drag is engaged.\n */\nexport interface ReorderDragState {\n draggedIds: string[] | null;\n targetIndex: number | null;\n}\n\n/**\n * Props to spread onto the list container and each row, plus the live\n * {@link ReorderDragState}.\n */\nexport interface ReorderDragHandlers {\n rowProps(id: string, index: number): { onPointerDown(e: ReactPointerEvent): void };\n containerProps: {\n ref: RefCallback<HTMLElement>;\n onPointerMove(e: ReactPointerEvent): void;\n onPointerUp(e: ReactPointerEvent): void;\n onPointerCancel(e: ReactPointerEvent): void;\n };\n state: ReorderDragState;\n}\n\ninterface PendingState {\n id: string;\n sourceIndex: number;\n startX: number;\n startY: number;\n pointerId: number;\n}\n\ninterface ActiveState extends PendingState {\n draggedIds: string[];\n targetIndex: number;\n}\n\n/**\n * The half-open run of indices a row at `sourceIndex` may be dropped into:\n * bounded by the nearest locked row above and below it, so a locked row is a\n * wall in both directions rather than a global ceiling.\n */\nfunction unlockedSegment(items: readonly LayerListItem[], sourceIndex: number): [number, number] {\n let lo = 0;\n for (let i = sourceIndex - 1; i >= 0; i--) {\n if (items[i]?.locked) { lo = i + 1; break; }\n }\n let hi = items.length;\n for (let i = sourceIndex + 1; i < items.length; i++) {\n if (items[i]?.locked) { hi = i; break; }\n }\n return [lo, hi];\n}\n\n/**\n * Drag-to-reorder for a vertical list of rows. Dragging a row that is part of\n * the current selection drags the whole selection; dragging any other row\n * drags just that row. Locked rows can neither be dragged nor crossed by a\n * drop. A drop that would leave a contiguous block where it already is does\n * not call `onReorder`.\n *\n * The pointer is captured on the row, so a drag that leaves the list still\n * tracks and still releases cleanly.\n */\nexport function useReorderDragList(opts: UseReorderDragListOptions): ReorderDragHandlers {\n const { threshold = 4 } = opts;\n const optsRef = useRef(opts);\n optsRef.current = opts;\n const containerRef = useRef<HTMLElement | null>(null);\n const pendingRef = useRef<PendingState | null>(null);\n const activeRef = useRef<ActiveState | null>(null);\n const [state, setState] = useState<ReorderDragState>({ draggedIds: null, targetIndex: null });\n\n const computeTargetIndex = useCallback((clientY: number, sourceIndex: number): number => {\n const [lo, hi] = unlockedSegment(optsRef.current.items, sourceIndex);\n const c = containerRef.current;\n if (!c) return lo;\n const rows = Array.from(c.children) as HTMLElement[];\n let raw = rows.length;\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) continue;\n const r = row.getBoundingClientRect();\n if (clientY < r.bottom) { raw = i; break; }\n }\n return Math.max(lo, Math.min(raw, hi));\n }, []);\n\n const refCb = useCallback<RefCallback<HTMLElement>>((el) => {\n containerRef.current = el;\n }, []);\n\n const onPointerDownRow = useCallback((id: string, index: number, e: ReactPointerEvent) => {\n // Locked items cannot be dragged — skip recording the pending state so\n // pointer-move cannot engage. Plain click still works because LayerList\n // tracks click intent in its own ref, separate from drag candidacy.\n const item = optsRef.current.items[index];\n if (item?.locked) return;\n // Capture the pointer to the row so subsequent move/up events keep firing\n // (on the row, bubbling to the container) even when the user drags\n // outside the list's bounding box. Without capture, releasing outside\n // the container leaves the drag state stuck because pointerup fires on\n // the document, not the list.\n try { (e.currentTarget as Element).setPointerCapture?.(e.pointerId); } catch { /* unsupported / already captured */ }\n pendingRef.current = {\n id,\n sourceIndex: index,\n startX: e.clientX,\n startY: e.clientY,\n pointerId: e.pointerId,\n };\n }, []);\n\n const reset = useCallback(() => {\n pendingRef.current = null;\n activeRef.current = null;\n setState({ draggedIds: null, targetIndex: null });\n }, []);\n\n const onPointerMove = useCallback((e: ReactPointerEvent) => {\n const active = activeRef.current;\n if (active) {\n const targetIndex = computeTargetIndex(e.clientY, active.sourceIndex);\n if (targetIndex !== active.targetIndex) {\n active.targetIndex = targetIndex;\n setState({ draggedIds: active.draggedIds, targetIndex });\n }\n return;\n }\n const pending = pendingRef.current;\n if (!pending) return;\n const dx = e.clientX - pending.startX;\n const dy = e.clientY - pending.startY;\n if (Math.hypot(dx, dy) < threshold) return;\n // Engage.\n const selected = optsRef.current.selectedIds;\n const inSelection = selected.includes(pending.id);\n const [lo, hi] = unlockedSegment(optsRef.current.items, pending.sourceIndex);\n const draggedIds = (inSelection ? [...selected] : [pending.id]).filter((id) => {\n const i = optsRef.current.items.findIndex((it) => it.id === id);\n return i >= lo && i < hi;\n });\n const targetIndex = computeTargetIndex(e.clientY, pending.sourceIndex);\n activeRef.current = { ...pending, draggedIds, targetIndex };\n setState({ draggedIds, targetIndex });\n }, [computeTargetIndex, threshold]);\n\n const onPointerUp = useCallback((e: ReactPointerEvent) => {\n const active = activeRef.current;\n if (!active) {\n reset();\n return;\n }\n const targetIndex = computeTargetIndex(e.clientY, active.sourceIndex);\n // Skip no-op: target lands inside the dragged-ids contiguous block.\n const items = optsRef.current.items;\n const indices = active.draggedIds\n .map((id) => items.findIndex((it) => it.id === id))\n .filter((i) => i >= 0)\n .sort((a, b) => a - b);\n const isContiguous =\n indices.length > 0 &&\n indices.every((v, i) => {\n if (i === 0) return true;\n const prev = indices[i - 1];\n return prev !== undefined && v === prev + 1;\n });\n const first = indices[0];\n const last = indices[indices.length - 1];\n const wouldBeNoop =\n isContiguous &&\n first !== undefined &&\n last !== undefined &&\n targetIndex >= first &&\n targetIndex <= last + 1;\n if (!wouldBeNoop) {\n optsRef.current.onReorder(active.draggedIds, targetIndex);\n }\n reset();\n }, [computeTargetIndex, reset]);\n\n const onPointerCancel = useCallback(() => {\n reset();\n }, [reset]);\n\n return {\n rowProps: (id, index) => ({\n onPointerDown: (e) => onPointerDownRow(id, index, e),\n }),\n containerProps: {\n ref: refCb,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n },\n state,\n };\n}\n"],"mappings":"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"}
|