@weasel-js/ui 1.7.0 → 1.7.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.
- package/dist/chunks/ActionBar-xA73vzzF.js +64 -0
- package/dist/chunks/ActionBar-xA73vzzF.js.map +1 -0
- package/dist/chunks/{Badge-D2aD7xVL.js → Badge-jYQjrTKc.js} +235 -264
- package/dist/chunks/{Badge-D2aD7xVL.js.map → Badge-jYQjrTKc.js.map} +1 -1
- package/dist/chunks/BandEditor-Dd0egAgE.js.map +1 -1
- package/dist/chunks/{Button-BIdXHQOx.js → Button-XB-T75YL.js} +2 -2
- package/dist/chunks/{Button-BIdXHQOx.js.map → Button-XB-T75YL.js.map} +1 -1
- package/dist/chunks/{ButtonBar-DIQTe5GQ.js → ButtonBar-CIMKPPRS.js} +7 -9
- package/dist/chunks/{ButtonBar-DIQTe5GQ.js.map → ButtonBar-CIMKPPRS.js.map} +1 -1
- package/dist/chunks/Callout-BUn0dP_S.js +115 -0
- package/dist/chunks/Callout-BUn0dP_S.js.map +1 -0
- package/dist/chunks/Checkbox-DFn-x0JO.js +37 -0
- package/dist/chunks/Checkbox-DFn-x0JO.js.map +1 -0
- package/dist/chunks/{CloseButton-C2J7wVfo.js → CloseButton-BmNmRVtb.js} +3 -3
- package/dist/chunks/{CloseButton-C2J7wVfo.js.map → CloseButton-BmNmRVtb.js.map} +1 -1
- package/dist/chunks/ColorField-BLs9fbeq.js +90 -0
- package/dist/chunks/ColorField-BLs9fbeq.js.map +1 -0
- package/dist/chunks/{ColorModeControl-BewxA0rX.js → ColorModeControl-DaVJ-SyX.js} +3 -3
- package/dist/chunks/{ColorModeControl-BewxA0rX.js.map → ColorModeControl-DaVJ-SyX.js.map} +1 -1
- package/dist/chunks/ComboBox-CuTLRmUg.js +138 -0
- package/dist/chunks/ComboBox-CuTLRmUg.js.map +1 -0
- package/dist/chunks/{CurveEditor-DUVjd25R.js → CurveEditor-jVBEqqdv.js} +90 -87
- package/dist/chunks/CurveEditor-jVBEqqdv.js.map +1 -0
- package/dist/chunks/{DataGrid-LZ2JgY2Y.js → DataGrid-BklgBqS0.js} +2 -2
- package/dist/chunks/{DataGrid-LZ2JgY2Y.js.map → DataGrid-BklgBqS0.js.map} +1 -1
- package/dist/chunks/{DetailList-BKomDzg5.js → DetailList-DFtqdOJj.js} +7 -7
- package/dist/chunks/DetailList-DFtqdOJj.js.map +1 -0
- package/dist/chunks/{DetentSlider-5uQPFucv.js → DetentSlider-Bh7EpMqT.js} +2 -2
- package/dist/chunks/{DetentSlider-5uQPFucv.js.map → DetentSlider-Bh7EpMqT.js.map} +1 -1
- package/dist/chunks/{Dialog-DGFutQ--.js → Dialog-DKfsk5VN.js} +3 -3
- package/dist/chunks/{Dialog-DGFutQ--.js.map → Dialog-DKfsk5VN.js.map} +1 -1
- package/dist/chunks/{DragGhost-B5_hb9W9.js → DragGhost-BeYDJyLZ.js} +2 -2
- package/dist/chunks/{DragGhost-B5_hb9W9.js.map → DragGhost-BeYDJyLZ.js.map} +1 -1
- package/dist/chunks/{FallthroughDiagram-BEHiM5IS.js → FallthroughDiagram-C7BUe8eU.js} +3 -3
- package/dist/chunks/{FallthroughDiagram-BEHiM5IS.js.map → FallthroughDiagram-C7BUe8eU.js.map} +1 -1
- package/dist/chunks/Field-DsBlnFKf.js +25 -0
- package/dist/chunks/Field-DsBlnFKf.js.map +1 -0
- package/dist/chunks/FillStrokeSwatch-CgsYQgew.js +112 -0
- package/dist/chunks/FillStrokeSwatch-CgsYQgew.js.map +1 -0
- package/dist/chunks/{FontFamilySelect-DkRgNtag.js → FontFamilySelect-CGJ5OIOy.js} +2 -2
- package/dist/chunks/FontFamilySelect-CGJ5OIOy.js.map +1 -0
- package/dist/chunks/FontWeightSelect-RbcXYJPS.js +49 -0
- package/dist/chunks/FontWeightSelect-RbcXYJPS.js.map +1 -0
- package/dist/chunks/{GestureRoute-C_YGl7bJ.js → GestureRoute-BXESrHI0.js} +2 -2
- package/dist/chunks/{GestureRoute-C_YGl7bJ.js.map → GestureRoute-BXESrHI0.js.map} +1 -1
- package/dist/chunks/GradientEditor-DypXzMc-.js +325 -0
- package/dist/chunks/GradientEditor-DypXzMc-.js.map +1 -0
- package/dist/chunks/{Icon-CcVjdq2C.js → Icon--B1ME-6c.js} +3 -1
- package/dist/chunks/Icon--B1ME-6c.js.map +1 -0
- package/dist/chunks/{Input-CHmkfYaD.js → Input-CzwvCZs_.js} +10 -15
- package/dist/chunks/Input-CzwvCZs_.js.map +1 -0
- package/dist/chunks/{ItemList-Cm-HUWCi.js → ItemList-CRu9y7hL.js} +2 -2
- package/dist/chunks/ItemList-CRu9y7hL.js.map +1 -0
- package/dist/chunks/{Jog-DRmfrkCg.js → Jog-DfNUYejm.js} +8 -8
- package/dist/chunks/Jog-DfNUYejm.js.map +1 -0
- package/dist/chunks/{LayerList-wCI1EueM.js → LayerList-CsDqwYh-.js} +151 -153
- package/dist/chunks/LayerList-CsDqwYh-.js.map +1 -0
- package/dist/chunks/ListEditor-BnGzqERm.js +72 -0
- package/dist/chunks/ListEditor-BnGzqERm.js.map +1 -0
- package/dist/chunks/MenuButton-L9f5vido.js +75 -0
- package/dist/chunks/MenuButton-L9f5vido.js.map +1 -0
- package/dist/chunks/MeshEditor-GbqqiPk8.js +199 -0
- package/dist/chunks/MeshEditor-GbqqiPk8.js.map +1 -0
- package/dist/chunks/{NumberField-BnJxcazc.js → NumberField-DLXXgh48.js} +26 -23
- package/dist/chunks/NumberField-DLXXgh48.js.map +1 -0
- package/dist/chunks/{OptionsBar-ujxYidhj.js → OptionsBar-DeTAjVb7.js} +6 -8
- package/dist/chunks/{OptionsBar-ujxYidhj.js.map → OptionsBar-DeTAjVb7.js.map} +1 -1
- package/dist/chunks/PaintField-C0hoXc0Y.js +63 -0
- package/dist/chunks/PaintField-C0hoXc0Y.js.map +1 -0
- package/dist/chunks/PaintInput-jQRxM95Y.js +132 -0
- package/dist/chunks/PaintInput-jQRxM95Y.js.map +1 -0
- package/dist/chunks/PatternPicker-CaMYXzhF.js +135 -0
- package/dist/chunks/PatternPicker-CaMYXzhF.js.map +1 -0
- package/dist/chunks/{Plot2D-CTXHkL5p.js → Plot2D-BHNbgCAl.js} +7 -7
- package/dist/chunks/Plot2D-BHNbgCAl.js.map +1 -0
- package/dist/chunks/{PointPlotter-ldI4RrU1.js → PointPlotter-BZ_vk6gV.js} +2 -2
- package/dist/chunks/{PointPlotter-ldI4RrU1.js.map → PointPlotter-BZ_vk6gV.js.map} +1 -1
- package/dist/chunks/{Powerline-DNyH885r.js → Powerline-6wIFmDik.js} +2 -2
- package/dist/chunks/{Powerline-DNyH885r.js.map → Powerline-6wIFmDik.js.map} +1 -1
- package/dist/chunks/{Prefs-ByA-x51i.js → Prefs-CkyldX-e.js} +83 -70
- package/dist/chunks/Prefs-CkyldX-e.js.map +1 -0
- package/dist/chunks/{Properties-DmAeQ3mk.js → Properties-D15c8NP-.js} +25 -25
- package/dist/chunks/{Properties-DmAeQ3mk.js.map → Properties-D15c8NP-.js.map} +1 -1
- package/dist/chunks/PropertyField-CV_Gw57S.js +686 -0
- package/dist/chunks/PropertyField-CV_Gw57S.js.map +1 -0
- package/dist/chunks/{RadioGroup-Bh4-12e-.js → RadioGroup-4dbzqvGy.js} +2 -2
- package/dist/chunks/{RadioGroup-Bh4-12e-.js.map → RadioGroup-4dbzqvGy.js.map} +1 -1
- package/dist/chunks/{RangeSlider-SEGE-7VF.js → RangeSlider-BxokZViJ.js} +8 -8
- package/dist/chunks/RangeSlider-BxokZViJ.js.map +1 -0
- package/dist/chunks/RecentColorsProvider-DHcfk25u.js +84 -0
- package/dist/chunks/RecentColorsProvider-DHcfk25u.js.map +1 -0
- package/dist/chunks/ResizeHandle-CbAgCQOt.js +81 -0
- package/dist/chunks/ResizeHandle-CbAgCQOt.js.map +1 -0
- package/dist/chunks/Select-BppLsJTz.js +236 -0
- package/dist/chunks/Select-BppLsJTz.js.map +1 -0
- package/dist/chunks/{SelectionPanel-BaQnX4Bs.js → SelectionPanel-Cm1qu-ZX.js} +14 -13
- package/dist/chunks/{SelectionPanel-BaQnX4Bs.js.map → SelectionPanel-Cm1qu-ZX.js.map} +1 -1
- package/dist/chunks/{SidebarPanel-BblDEz4G.js → SidebarPanel-AXQ0jRDx.js} +2 -2
- package/dist/chunks/{SidebarPanel-BblDEz4G.js.map → SidebarPanel-AXQ0jRDx.js.map} +1 -1
- package/dist/chunks/{Slider-YofwGOI4.js → Slider-Cl5RCeZ7.js} +19 -19
- package/dist/chunks/Slider-Cl5RCeZ7.js.map +1 -0
- package/dist/chunks/SwatchGrid-9ZPiDmxd.js +78 -0
- package/dist/chunks/SwatchGrid-9ZPiDmxd.js.map +1 -0
- package/dist/chunks/SwatchStrip-Cw0l8Om7.js +577 -0
- package/dist/chunks/SwatchStrip-Cw0l8Om7.js.map +1 -0
- package/dist/chunks/{ThemeSwitcher-BlsInAmR.js → ThemeSwitcher-DiBmMh_B.js} +3 -3
- package/dist/chunks/{ThemeSwitcher-BlsInAmR.js.map → ThemeSwitcher-DiBmMh_B.js.map} +1 -1
- package/dist/chunks/{Timeline-B39cwfMB.js → Timeline-pqnYk5cV.js} +244 -246
- package/dist/chunks/Timeline-pqnYk5cV.js.map +1 -0
- package/dist/chunks/Toast-C3ozq11V.js +170 -0
- package/dist/chunks/Toast-C3ozq11V.js.map +1 -0
- package/dist/chunks/{ToggleBar-BTYkBXU9.js → ToggleBar-Z2jZiguF.js} +6 -8
- package/dist/chunks/{ToggleBar-BTYkBXU9.js.map → ToggleBar-Z2jZiguF.js.map} +1 -1
- package/dist/chunks/{TokenPanel-CMDAOfYH.js → TokenPanel-DAkL6vwQ.js} +32 -32
- package/dist/chunks/TokenPanel-DAkL6vwQ.js.map +1 -0
- package/dist/chunks/{ToolButton-CAHBa08P.js → ToolButton-BURp4YIO.js} +7 -9
- package/dist/chunks/ToolButton-BURp4YIO.js.map +1 -0
- package/dist/chunks/{ToolOptionsBar-D_GCrBAN.js → ToolOptionsBar-COsTJ1cu.js} +3 -2
- package/dist/chunks/{ToolOptionsBar-D_GCrBAN.js.map → ToolOptionsBar-COsTJ1cu.js.map} +1 -1
- package/dist/chunks/{ToolPalette-OOWN51Xx.js → ToolPalette-DKDFWOX-.js} +7 -9
- package/dist/chunks/{ToolPalette-OOWN51Xx.js.map → ToolPalette-DKDFWOX-.js.map} +1 -1
- package/dist/chunks/{Tooltip-Clg2mhSt.js → Tooltip-C6eFCYxw.js} +2 -2
- package/dist/chunks/{Tooltip-Clg2mhSt.js.map → Tooltip-C6eFCYxw.js.map} +1 -1
- package/dist/chunks/Tree-Cc8lIzgM.js.map +1 -1
- package/dist/chunks/checkbox.module-DLQV9tMX.js +5 -0
- package/dist/chunks/checkbox.module-DLQV9tMX.js.map +1 -0
- package/dist/chunks/{createKeyframeLayer-DVl321_l.js → createKeyframeLayer-BTa4LyJE.js} +194 -208
- package/dist/chunks/createKeyframeLayer-BTa4LyJE.js.map +1 -0
- package/dist/chunks/field.module-Bh7BTKMh.js +15 -0
- package/dist/chunks/field.module-Bh7BTKMh.js.map +1 -0
- package/dist/chunks/formatShortcut-DRQrVThu.js.map +1 -1
- package/dist/chunks/handles-CqVANLtu.js +17 -0
- package/dist/chunks/handles-CqVANLtu.js.map +1 -0
- package/dist/chunks/{icons-BhcR1l64.js → icons-Dr2-r30x.js} +2 -2
- package/dist/chunks/icons-Dr2-r30x.js.map +1 -0
- package/dist/chunks/listbox.module-BcdVJMbm.js +8 -0
- package/dist/chunks/listbox.module-BcdVJMbm.js.map +1 -0
- package/dist/chunks/model-B1-gMBIW.js +386 -0
- package/dist/chunks/model-B1-gMBIW.js.map +1 -0
- package/dist/chunks/{portalHost-yTOVuCej.js → portalHost-CE70wLzo.js} +10 -6
- package/dist/chunks/portalHost-CE70wLzo.js.map +1 -0
- package/dist/chunks/prefField-BE_Ytr2H.js +229 -0
- package/dist/chunks/prefField-BE_Ytr2H.js.map +1 -0
- package/dist/chunks/{segmentTooltip-CStYHKzd.js → segmentTooltip-CGxCOWNz.js} +2 -2
- package/dist/chunks/{segmentTooltip-CStYHKzd.js.map → segmentTooltip-CGxCOWNz.js.map} +1 -1
- package/dist/chunks/segmentedControl.module-BzGXUL5G.js +11 -0
- package/dist/chunks/segmentedControl.module-BzGXUL5G.js.map +1 -0
- package/dist/chunks/useReorderDragList-CStYKjHl.js +133 -0
- package/dist/chunks/useReorderDragList-CStYKjHl.js.map +1 -0
- package/dist/chunks/useRovingTabIndex-D7u22Ia_.js +91 -0
- package/dist/chunks/useRovingTabIndex-D7u22Ia_.js.map +1 -0
- package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
- package/dist/components/ActionBar/index.js +1 -1
- package/dist/components/Badge/bases/ChamferedRect.d.ts.map +1 -1
- package/dist/components/Badge/index.js +1 -1
- package/dist/components/BandEditor/BandEditor.d.ts +1 -0
- package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -1
- package/dist/components/ButtonBar/index.js +1 -1
- package/dist/components/Callout/Callout.d.ts.map +1 -1
- package/dist/components/Callout/index.js +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +28 -13
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/CloseButton/index.js +1 -1
- package/dist/components/ColorField/ColorField.d.ts.map +1 -1
- package/dist/components/ColorField/OpacityRange.d.ts +18 -0
- package/dist/components/ColorField/OpacityRange.d.ts.map +1 -0
- package/dist/components/ColorField/index.js +1 -1
- package/dist/components/ColorModeControl/index.js +1 -1
- package/dist/components/ComboBox/ComboBox.d.ts +7 -0
- package/dist/components/ComboBox/ComboBox.d.ts.map +1 -1
- package/dist/components/ComboBox/index.js +1 -1
- package/dist/components/CurveEditor/CurveEditor.d.ts.map +1 -1
- package/dist/components/CurveEditor/LayeredCurveEditor.d.ts.map +1 -1
- package/dist/components/CurveEditor/index.js +2 -2
- package/dist/components/DataGrid/index.js +1 -1
- package/dist/components/DetailList/index.js +1 -1
- package/dist/components/DetentSlider/index.js +1 -1
- package/dist/components/Dialog/index.js +1 -1
- package/dist/components/DragGhost/index.js +1 -1
- package/dist/components/FallthroughDiagram/index.js +1 -1
- package/dist/components/Field/index.js +1 -1
- package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -1
- package/dist/components/FillStrokeSwatch/index.js +1 -1
- package/dist/components/FontFamilySelect/FontFamilySelect.d.ts +20 -0
- package/dist/components/FontFamilySelect/FontFamilySelect.d.ts.map +1 -1
- package/dist/components/FontFamilySelect/index.js +1 -1
- package/dist/components/FontWeightSelect/FontWeightSelect.d.ts +26 -0
- package/dist/components/FontWeightSelect/FontWeightSelect.d.ts.map +1 -0
- package/dist/components/FontWeightSelect/index.d.ts +3 -0
- package/dist/components/FontWeightSelect/index.d.ts.map +1 -0
- package/dist/components/FontWeightSelect/index.js +2 -0
- package/dist/components/GestureRoute/index.js +1 -1
- package/dist/components/GradientEditor/GradientHandles.d.ts +1 -8
- package/dist/components/GradientEditor/GradientHandles.d.ts.map +1 -1
- package/dist/components/GradientEditor/SceneGradientHandles.d.ts +7 -5
- package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
- package/dist/components/GradientEditor/handleOverlay.d.ts +41 -0
- package/dist/components/GradientEditor/handleOverlay.d.ts.map +1 -0
- package/dist/components/GradientEditor/index.js +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/ItemList/ItemList.d.ts +32 -31
- package/dist/components/ItemList/ItemList.d.ts.map +1 -1
- package/dist/components/ItemList/index.js +1 -1
- package/dist/components/Jog/index.js +1 -1
- package/dist/components/LayerList/LayerList.d.ts.map +1 -1
- package/dist/components/LayerList/index.js +1 -1
- package/dist/components/ListEditor/ListEditor.d.ts.map +1 -1
- package/dist/components/ListEditor/index.js +1 -1
- package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
- package/dist/components/MenuButton/index.js +1 -1
- package/dist/components/MeshEditor/MeshEditor.d.ts +4 -3
- package/dist/components/MeshEditor/MeshEditor.d.ts.map +1 -1
- package/dist/components/MeshEditor/MeshHandles.d.ts +38 -0
- package/dist/components/MeshEditor/MeshHandles.d.ts.map +1 -0
- package/dist/components/MeshEditor/index.d.ts +2 -0
- package/dist/components/MeshEditor/index.d.ts.map +1 -1
- package/dist/components/MeshEditor/index.js +2 -2
- package/dist/components/NumberField/NumberField.d.ts +1 -1
- package/dist/components/NumberField/NumberField.d.ts.map +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OptionsBar/OptionsBar.d.ts.map +1 -1
- package/dist/components/OptionsBar/index.js +1 -1
- package/dist/components/PaintField/PaintField.d.ts.map +1 -1
- package/dist/components/PaintField/index.js +1 -1
- package/dist/components/PaintInput/PaintInput.d.ts.map +1 -1
- package/dist/components/PaintInput/index.js +1 -1
- package/dist/components/PatternPicker/PatternPicker.d.ts +6 -5
- package/dist/components/PatternPicker/PatternPicker.d.ts.map +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/PrefsForm.d.ts +8 -0
- package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
- package/dist/components/Prefs/PrefsRail.d.ts +3 -2
- package/dist/components/Prefs/PrefsRail.d.ts.map +1 -1
- package/dist/components/Prefs/index.js +2 -2
- package/dist/components/Prefs/prefField.d.ts +13 -0
- package/dist/components/Prefs/prefField.d.ts.map +1 -1
- package/dist/components/Properties/PropertyField.d.ts +13 -2
- package/dist/components/Properties/PropertyField.d.ts.map +1 -1
- package/dist/components/Properties/index.js +3 -3
- package/dist/components/RadioGroup/index.js +1 -1
- package/dist/components/RangeSlider/index.js +1 -1
- package/dist/components/RecentColors/RecentColorsProvider.d.ts +24 -0
- package/dist/components/RecentColors/RecentColorsProvider.d.ts.map +1 -0
- package/dist/components/RecentColors/index.d.ts +5 -0
- package/dist/components/RecentColors/index.d.ts.map +1 -0
- package/dist/components/RecentColors/index.js +2 -0
- package/dist/components/RecentColors/recentColors.d.ts +39 -0
- package/dist/components/RecentColors/recentColors.d.ts.map +1 -0
- 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 +6 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/SelectionPanel/index.js +2 -2
- package/dist/components/SelectionPanel/renderLeaf.d.ts +12 -2
- package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
- package/dist/components/SidebarPanel/index.js +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -1
- package/dist/components/SwatchGrid/index.js +1 -1
- package/dist/components/SwatchStrip/SwatchStrip.d.ts +44 -0
- package/dist/components/SwatchStrip/SwatchStrip.d.ts.map +1 -0
- package/dist/components/SwatchStrip/index.d.ts +5 -0
- package/dist/components/SwatchStrip/index.d.ts.map +1 -0
- package/dist/components/SwatchStrip/index.js +2 -0
- package/dist/components/SwatchStrip/palettes.d.ts +21 -0
- package/dist/components/SwatchStrip/palettes.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher/index.js +1 -1
- package/dist/components/Timeline/AnimatedTimeline.d.ts +1 -0
- package/dist/components/Timeline/AnimatedTimeline.d.ts.map +1 -1
- package/dist/components/Timeline/EasingPicker.d.ts +3 -0
- package/dist/components/Timeline/EasingPicker.d.ts.map +1 -1
- package/dist/components/Timeline/LaneGraph.d.ts +1 -1
- package/dist/components/Timeline/LaneGraph.d.ts.map +1 -1
- package/dist/components/Timeline/Timeline.d.ts +10 -1
- package/dist/components/Timeline/Timeline.d.ts.map +1 -1
- package/dist/components/Timeline/Transport.d.ts +6 -0
- package/dist/components/Timeline/Transport.d.ts.map +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Timeline/keys.d.ts +1 -0
- package/dist/components/Timeline/keys.d.ts.map +1 -1
- package/dist/components/Toast/Toast.d.ts +12 -3
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
- package/dist/components/ToggleBar/index.js +1 -1
- package/dist/components/TokenPanel/index.js +1 -1
- package/dist/components/TokenPanel/tokenTypes.d.ts +1 -0
- package/dist/components/TokenPanel/tokenTypes.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +1 -10
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/index.js +1 -1
- package/dist/components/ToolOptionsBar/index.js +1 -1
- package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
- package/dist/components/ToolPalette/formatShortcut.d.ts +2 -0
- package/dist/components/ToolPalette/formatShortcut.d.ts.map +1 -1
- package/dist/components/ToolPalette/index.js +1 -1
- package/dist/components/Tooltip/index.js +1 -1
- package/dist/components/Tree/Tree.d.ts +27 -26
- package/dist/components/Tree/Tree.d.ts.map +1 -1
- package/dist/icons/index.d.ts +51 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/paths.d.ts +2 -0
- package/dist/icons/paths.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -95
- package/dist/index.js.map +1 -1
- package/dist/overlays/portalHost.d.ts +6 -0
- package/dist/overlays/portalHost.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/dist/useAsyncOptions.d.ts.map +1 -1
- package/dist/useReorderDragList.d.ts.map +1 -1
- package/dist/useRovingTabIndex.d.ts +40 -39
- package/dist/useRovingTabIndex.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/chunks/ActionBar-DCq16yFA.js +0 -57
- package/dist/chunks/ActionBar-DCq16yFA.js.map +0 -1
- package/dist/chunks/Callout-ndW5_Bqx.js +0 -116
- package/dist/chunks/Callout-ndW5_Bqx.js.map +0 -1
- package/dist/chunks/Checkbox-DHXTUHO9.js +0 -47
- package/dist/chunks/Checkbox-DHXTUHO9.js.map +0 -1
- package/dist/chunks/ColorField-Yz_BkcCT.js +0 -69
- package/dist/chunks/ColorField-Yz_BkcCT.js.map +0 -1
- package/dist/chunks/ComboBox-B34H76CW.js +0 -138
- package/dist/chunks/ComboBox-B34H76CW.js.map +0 -1
- package/dist/chunks/CurveEditor-DUVjd25R.js.map +0 -1
- package/dist/chunks/DetailList-BKomDzg5.js.map +0 -1
- package/dist/chunks/Field--onYxXTF.js +0 -32
- package/dist/chunks/Field--onYxXTF.js.map +0 -1
- package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js +0 -111
- package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js.map +0 -1
- package/dist/chunks/FontFamilySelect-DkRgNtag.js.map +0 -1
- package/dist/chunks/GradientEditor-b7v4Ph3i.js +0 -363
- package/dist/chunks/GradientEditor-b7v4Ph3i.js.map +0 -1
- package/dist/chunks/Icon-CcVjdq2C.js.map +0 -1
- package/dist/chunks/Input-CHmkfYaD.js.map +0 -1
- package/dist/chunks/ItemList-Cm-HUWCi.js.map +0 -1
- package/dist/chunks/Jog-DRmfrkCg.js.map +0 -1
- package/dist/chunks/LayerList-wCI1EueM.js.map +0 -1
- package/dist/chunks/ListEditor-BeA60TAA.js +0 -71
- package/dist/chunks/ListEditor-BeA60TAA.js.map +0 -1
- package/dist/chunks/MenuButton-BSqEChJE.js +0 -70
- package/dist/chunks/MenuButton-BSqEChJE.js.map +0 -1
- package/dist/chunks/MeshEditor-D1HLZcAh.js +0 -87
- package/dist/chunks/MeshEditor-D1HLZcAh.js.map +0 -1
- package/dist/chunks/NumberField-BnJxcazc.js.map +0 -1
- package/dist/chunks/PaintField-DadOELMg.js +0 -62
- package/dist/chunks/PaintField-DadOELMg.js.map +0 -1
- package/dist/chunks/PaintInput-v8Y7MDbH.js +0 -121
- package/dist/chunks/PaintInput-v8Y7MDbH.js.map +0 -1
- package/dist/chunks/PatternPicker-R_EQtw2Q.js +0 -93
- package/dist/chunks/PatternPicker-R_EQtw2Q.js.map +0 -1
- package/dist/chunks/Plot2D-CTXHkL5p.js.map +0 -1
- package/dist/chunks/Prefs-ByA-x51i.js.map +0 -1
- package/dist/chunks/PropertyField-DfIJJ5GS.js +0 -673
- package/dist/chunks/PropertyField-DfIJJ5GS.js.map +0 -1
- package/dist/chunks/RangeSlider-SEGE-7VF.js.map +0 -1
- package/dist/chunks/ResizeHandle-rKVWyeTG.js +0 -79
- package/dist/chunks/ResizeHandle-rKVWyeTG.js.map +0 -1
- package/dist/chunks/Select-ClmKtyWg.js +0 -229
- package/dist/chunks/Select-ClmKtyWg.js.map +0 -1
- package/dist/chunks/Slider-YofwGOI4.js.map +0 -1
- package/dist/chunks/SwatchGrid-BYvA8Bmh.js +0 -73
- package/dist/chunks/SwatchGrid-BYvA8Bmh.js.map +0 -1
- package/dist/chunks/Timeline-B39cwfMB.js.map +0 -1
- package/dist/chunks/Toast-BF9GE0HC.js +0 -126
- package/dist/chunks/Toast-BF9GE0HC.js.map +0 -1
- package/dist/chunks/TokenPanel-CMDAOfYH.js.map +0 -1
- package/dist/chunks/ToolButton-CAHBa08P.js.map +0 -1
- package/dist/chunks/createKeyframeLayer-DVl321_l.js.map +0 -1
- package/dist/chunks/icons-BhcR1l64.js.map +0 -1
- package/dist/chunks/model-BaF65rnX.js +0 -365
- package/dist/chunks/model-BaF65rnX.js.map +0 -1
- package/dist/chunks/portalHost-yTOVuCej.js.map +0 -1
- package/dist/chunks/prefField-BopW9bjx.js +0 -201
- package/dist/chunks/prefField-BopW9bjx.js.map +0 -1
- package/dist/chunks/segmentedControl.module-D6SzYJD7.js +0 -11
- package/dist/chunks/segmentedControl.module-D6SzYJD7.js.map +0 -1
- package/dist/chunks/useReorderDragList-FCMoFIzH.js +0 -131
- package/dist/chunks/useReorderDragList-FCMoFIzH.js.map +0 -1
- package/dist/chunks/useRovingTabIndex-Bp_hYm_h.js +0 -65
- package/dist/chunks/useRovingTabIndex-Bp_hYm_h.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAsyncOptions.d.ts","sourceRoot":"","sources":["../src/useAsyncOptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAsyncOptions.d.ts","sourceRoot":"","sources":["../src/useAsyncOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3B,oEAAoE;AACpE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,IAAI,cAAc,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEvE,2CAA2C;AAC3C,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,GAAG,IAAI;IAChD;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,GAAG,IAAI;IAC9C,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,GAAG,GAAG,MAAM,EAAE,EACtD,IAAI,EACJ,UAAgB,EAChB,SAAa,GACd,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CA6DjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReorderDragList.d.ts","sourceRoot":"","sources":["../src/useReorderDragList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIvF,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD;;;;;oEAKgE;IAChE,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;0BAEsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAID;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,aAAa,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAE,CAAC;IACnF,cAAc,EAAE;QACd,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KAC/B,CAAC;IACF,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;CAC1D;AAuDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"useReorderDragList.d.ts","sourceRoot":"","sources":["../src/useReorderDragList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIvF,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD;;;;;oEAKgE;IAChE,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;0BAEsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAID;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,aAAa,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAE,CAAC;IACnF,cAAc,EAAE;QACd,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KAC/B,CAAC;IACF,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;CAC1D;AAuDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,mBAAmB,CAuHvF"}
|
|
@@ -1,59 +1,60 @@
|
|
|
1
1
|
import { type KeyboardEvent as ReactKeyboardEvent, type RefObject } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
2
|
+
/** Which arrow keys walk the items. `'both'` answers to all four, the way a
|
|
3
|
+
* radio group does; a one-axis toolbar leaves the cross-axis arrows to the
|
|
4
|
+
* page. Matches `aria-orientation` for the one-axis values. */
|
|
5
|
+
export type RovingOrientation = 'horizontal' | 'vertical' | 'both';
|
|
7
6
|
/** Options for {@link useRovingTabIndex}. */
|
|
8
7
|
export type UseRovingTabIndexOptions = {
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
8
|
+
/** Selects the items inside the container, in DOM order. Items belonging to
|
|
9
|
+
* a nested roving container are its own, not this one's. Defaults to
|
|
10
|
+
* `'button, [role="button"]'`. */
|
|
11
|
+
itemSelector?: string;
|
|
12
|
+
/** Defaults to `'both'`. */
|
|
13
|
+
orientation?: RovingOrientation;
|
|
14
|
+
/** The item that holds the tab stop while focus is outside the container —
|
|
15
|
+
* a radiogroup-style bar passes its selected index so Tab lands on the
|
|
16
|
+
* current value. Omitted, the stop stays on whichever item last had focus,
|
|
17
|
+
* starting at the first enabled one. */
|
|
17
18
|
tabStopIndex?: number;
|
|
18
|
-
/** Called with the
|
|
19
|
-
*
|
|
19
|
+
/** Called with the destination index as arrow/Home/End navigation moves,
|
|
20
|
+
* before focus does. This is where a selection-follows-focus bar commits
|
|
21
|
+
* the value. */
|
|
20
22
|
onNavigate?: (index: number) => void;
|
|
21
23
|
/** Space/Enter on the item at `index`. When omitted the keypress is left
|
|
22
24
|
* alone, which on a native `<button>` produces an ordinary click. */
|
|
23
25
|
onActivate?: (index: number) => void;
|
|
24
26
|
};
|
|
25
|
-
/**
|
|
26
|
-
* What {@link useRovingTabIndex} returns: a container ref plus the per-item
|
|
27
|
-
* `tabIndex` and `onKeyDown` values to spread onto each item.
|
|
28
|
-
*/
|
|
27
|
+
/** What {@link useRovingTabIndex} returns. Attach both to the container. */
|
|
29
28
|
export type RovingTabIndex<T extends HTMLElement = HTMLDivElement> = {
|
|
30
|
-
/** Attach to the container element that holds the items. */
|
|
31
29
|
rootRef: RefObject<T | null>;
|
|
32
|
-
|
|
33
|
-
tabIndexFor: (index: number) => 0 | -1;
|
|
34
|
-
/** `onKeyDown` for the item at `index`. */
|
|
35
|
-
onKeyDown: (index: number) => (e: ReactKeyboardEvent<HTMLElement>) => void;
|
|
30
|
+
onKeyDown: (e: ReactKeyboardEvent<T>) => void;
|
|
36
31
|
};
|
|
32
|
+
/** Where `key` takes focus from `current`, or null if it does not move it.
|
|
33
|
+
* Arrows skip disabled items and wrap; Home and End go to the first and last
|
|
34
|
+
* enabled item. */
|
|
35
|
+
export declare function rovingTarget(current: number, key: string, enabled: readonly boolean[], orientation?: RovingOrientation): number | null;
|
|
37
36
|
/**
|
|
38
|
-
*
|
|
39
|
-
* arrow keys move focus among the rest, skipping
|
|
40
|
-
*
|
|
41
|
-
*
|
|
37
|
+
* The APG roving-tabindex contract for a container of items: exactly one item
|
|
38
|
+
* is in the tab order, and the arrow keys move focus among the rest, skipping
|
|
39
|
+
* disabled ones (`disabled` or `aria-disabled="true"`) and wrapping at both
|
|
40
|
+
* ends. Home and End go to the first and last enabled item. While focus is
|
|
41
|
+
* inside, the focused item holds the tab stop, so Tab and Shift+Tab both leave
|
|
42
|
+
* the container.
|
|
42
43
|
*
|
|
43
|
-
*
|
|
44
|
+
* The items are found in the DOM and their `tabIndex` is written there, so the
|
|
45
|
+
* container can hold arbitrary children; callers must not render `tabIndex` on
|
|
46
|
+
* the items themselves. Adding, removing, disabling or enabling an item moves
|
|
47
|
+
* the stop without the container re-rendering.
|
|
48
|
+
*
|
|
49
|
+
* With every item disabled there is no tab stop and the container drops out of
|
|
50
|
+
* the tab order entirely.
|
|
44
51
|
*
|
|
45
52
|
* **When a bar should not use this.** What decides it is the items, not who
|
|
46
53
|
* owns them. A container of compound controls — a number field, a select, a
|
|
47
54
|
* color field — must leave the arrow keys alone, because those controls edit
|
|
48
|
-
* their own value with them
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* children, and a schema-drawn number field eats arrows exactly as a
|
|
52
|
-
* hand-placed one did, so it keeps plain DOM tab order. A bar whose items are
|
|
53
|
-
* all simple buttons is the case this hook is for.
|
|
54
|
-
*
|
|
55
|
-
* With every item disabled there is no tab stop and the bar drops out of the
|
|
56
|
-
* tab order entirely.
|
|
55
|
+
* their own value with them. `ToolOptionsBar` is that case, and keeps plain
|
|
56
|
+
* DOM tab order. A bar whose items are all simple buttons is the case this
|
|
57
|
+
* hook is for.
|
|
57
58
|
*/
|
|
58
|
-
export declare function useRovingTabIndex<T extends HTMLElement = HTMLDivElement>(options
|
|
59
|
+
export declare function useRovingTabIndex<T extends HTMLElement = HTMLDivElement>(options?: UseRovingTabIndexOptions): RovingTabIndex<T>;
|
|
59
60
|
//# sourceMappingURL=useRovingTabIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRovingTabIndex.d.ts","sourceRoot":"","sources":["../src/useRovingTabIndex.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useRovingTabIndex.d.ts","sourceRoot":"","sources":["../src/useRovingTabIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,IAAI,kBAAkB,EACxC,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf;;gEAEgE;AAChE,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;AAEnE,6CAA6C;AAC7C,MAAM,MAAM,wBAAwB,GAAG;IACrC;;uCAEmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;6CAGyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;qBAEiB;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;0EACsE;IACtE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,IAAI;IACnE,OAAO,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/C,CAAC;AASF;;oBAEoB;AACpB,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,GAAE,iBAA0B,GACtC,MAAM,GAAG,IAAI,CAmBf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EACtE,OAAO,GAAE,wBAA6B,GACrC,cAAc,CAAC,CAAC,CAAC,CAqGnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weasel-js/ui",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "UI chrome primitives for weasel apps (properties panel, etc.)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -23,17 +23,17 @@
|
|
|
23
23
|
"./package.json": "./package.json"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@weasel-js/font": "1.7.
|
|
27
|
-
"@weasel-js/modes": "1.7.
|
|
28
|
-
"@weasel-js/quantity": "1.7.
|
|
29
|
-
"@weasel-js/svg": "1.7.
|
|
30
|
-
"@weasel-js/theme": "1.7.
|
|
26
|
+
"@weasel-js/font": "1.7.1",
|
|
27
|
+
"@weasel-js/modes": "1.7.1",
|
|
28
|
+
"@weasel-js/quantity": "1.7.1",
|
|
29
|
+
"@weasel-js/svg": "1.7.1",
|
|
30
|
+
"@weasel-js/theme": "1.7.1",
|
|
31
31
|
"react-aria-components": "^1.5.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"react": ">=18",
|
|
35
35
|
"react-dom": ">=18",
|
|
36
|
-
"@weasel-js/core": "1.7.
|
|
36
|
+
"@weasel-js/core": "1.7.1"
|
|
37
37
|
},
|
|
38
38
|
"author": "orochi235",
|
|
39
39
|
"homepage": "https://orochi235.github.io/weasel/",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"provenance": true
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@weasel-js/cursor": "1.7.
|
|
65
|
-
"@weasel-js/geom": "1.7.
|
|
64
|
+
"@weasel-js/cursor": "1.7.1",
|
|
65
|
+
"@weasel-js/geom": "1.7.1"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { n as e, r as t } from "./Tooltip-Clg2mhSt.js";
|
|
2
|
-
import { t as n } from "./formatShortcut-DRQrVThu.js";
|
|
3
|
-
import { actionItems as r, actionShortcuts as i, buildDepsFromRequires as a, evaluateEnabled as o, useActionsRegistry as s, useOptionalDepRegistry as c } from "@weasel-js/core";
|
|
4
|
-
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
5
|
-
import { useSyncExternalStore as d } from "react";
|
|
6
|
-
import { Focusable as f } from "react-aria-components";
|
|
7
|
-
var p = {
|
|
8
|
-
bar: "_bar_1x8zd_7",
|
|
9
|
-
vertical: "_vertical_1x8zd_18",
|
|
10
|
-
button: "_button_1x8zd_22"
|
|
11
|
-
}, m = Object.freeze([]), h = () => () => {};
|
|
12
|
-
function g(e, t) {
|
|
13
|
-
if (t !== void 0) return t;
|
|
14
|
-
let n = e.icon;
|
|
15
|
-
return typeof n == "function" ? n() : n;
|
|
16
|
-
}
|
|
17
|
-
function _(e, t) {
|
|
18
|
-
let r = t.action.shortcut ?? n(i(t.action, t.params)[0]);
|
|
19
|
-
return r ? `${e} (${r})` : e;
|
|
20
|
-
}
|
|
21
|
-
function v(n) {
|
|
22
|
-
let { group: i, orientation: v = "horizontal", icons: y, labels: b, className: x } = n, S = s(), C = c(), w = d(S ? S.subscribe : h, S ? S.list : () => m, S ? S.list : () => m).filter((e) => e.group === i).flatMap(r), T = [
|
|
23
|
-
p.bar,
|
|
24
|
-
v === "vertical" && p.vertical,
|
|
25
|
-
x
|
|
26
|
-
].filter(Boolean).join(" ");
|
|
27
|
-
return /* @__PURE__ */ l("div", {
|
|
28
|
-
className: T,
|
|
29
|
-
role: "toolbar",
|
|
30
|
-
"aria-label": `${i} actions`,
|
|
31
|
-
children: w.map((n) => {
|
|
32
|
-
let r = b?.[n.key] ?? n.label, i = g(n, y?.[n.key]), s = C ? a(n.action, C) : void 0, { enabled: c } = o(n.action, s), d = !c, m = _(r, n);
|
|
33
|
-
return /* @__PURE__ */ u(t, {
|
|
34
|
-
isDisabled: d,
|
|
35
|
-
children: [/* @__PURE__ */ l(f, {
|
|
36
|
-
isDisabled: d,
|
|
37
|
-
children: /* @__PURE__ */ l("button", {
|
|
38
|
-
type: "button",
|
|
39
|
-
"data-testid": `action-bar-item-${n.key}`,
|
|
40
|
-
"aria-label": r,
|
|
41
|
-
"aria-disabled": d || void 0,
|
|
42
|
-
disabled: d,
|
|
43
|
-
className: p.button,
|
|
44
|
-
onClick: () => {
|
|
45
|
-
d || S?.trigger(n.action.id, n.params);
|
|
46
|
-
},
|
|
47
|
-
children: i
|
|
48
|
-
})
|
|
49
|
-
}), /* @__PURE__ */ l(e, { children: m })]
|
|
50
|
-
}, n.key);
|
|
51
|
-
})
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
//#endregion
|
|
55
|
-
export { v as t };
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=ActionBar-DCq16yFA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar-DCq16yFA.js","names":["s","TooltipTrigger","Tooltip","Tooltip$1","TooltipTrigger$1","formatShortcut","ActionBar_module_default","EMPTY_LIST","noopSubscribe","resolveIcon","override","i","item","resolveTitle","shortcut","actionShortcuts","label","ActionBar","props","registry","useActionsRegistry","depReg","useOptionalDepRegistry","items","useSyncExternalStore","a","group","actionItems","cls","orientation","className","labels","icon","icons","deps","buildDepsFromRequires","evaluateEnabled","disabled","enabled","title","Focusable"],"sources":["../../src/components/ActionBar/ActionBar.module.css","../../src/components/ActionBar/ActionBar.tsx"],"sourcesContent":["/* `<ActionBar>` shares the segmented widget look of the WeaselDraw\n * pathfinder panel — small chrome on the panel surface so a bar of\n * Action buttons reads as a single control. Tokens are theme-driven\n * via `--wzl-*`. Visual parity with `PathfinderPanel.module.css` is\n * intentional; this is the generic version. */\n\n.bar {\n display: flex;\n flex-direction: row;\n gap: 1px;\n background: var(--wzl-surface);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n padding: var(--wzl-space-1);\n user-select: none;\n}\n\n.bar.vertical {\n flex-direction: column;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wzl-tb-height);\n height: var(--wzl-tb-height);\n padding: 0;\n background: transparent;\n border: 0;\n border-radius: var(--wzl-radius-sm);\n color: var(--wzl-fg);\n cursor: default;\n}\n\n.button:hover:not([disabled]) {\n background: var(--wzl-border);\n}\n\n.button:active:not([disabled]) {\n background: color-mix(in srgb, var(--wzl-border) 70%, transparent);\n}\n\n.button[disabled] {\n opacity: 0.4;\n cursor: default;\n}\n\n.button > svg {\n display: block;\n}\n","import { useSyncExternalStore, type ReactNode } from 'react';\nimport { Focusable } from 'react-aria-components';\nimport {\n useActionsRegistry,\n useOptionalDepRegistry,\n evaluateEnabled,\n buildDepsFromRequires,\n actionItems,\n actionShortcuts,\n type Action,\n type ActionItem,\n} from '@weasel-js/core';\nimport { Tooltip, TooltipTrigger } from '../Tooltip';\nimport { formatShortcut } from '../ToolPalette/formatShortcut';\nimport s from './ActionBar.module.css';\n\nconst EMPTY_LIST: readonly Action[] = Object.freeze([]);\nconst noopSubscribe = (): (() => void) => () => {};\n\n/** Props for {@link ActionBar}. */\nexport interface ActionBarProps {\n /** Group key — only actions with `action.group === group` are rendered. */\n group: string;\n /** Layout direction. Defaults to `'horizontal'`. */\n orientation?: 'horizontal' | 'vertical';\n /**\n * Per-entry icon overrides, keyed by `ActionItem.key` — the action id, or\n * `id:variant` for one variant of a parametric action. When an entry is provided\n * it replaces the action's own `icon` for this bar only. Mirrors\n * `PathfinderPanelProps.icons` so call sites that ship custom glyph sets\n * can swap them in without re-registering actions.\n */\n icons?: Record<string, ReactNode>;\n /**\n * Per-entry label overrides, keyed like `icons`. Drives both `aria-label`\n * and `title`. When omitted, the entry's own `label` is used.\n */\n labels?: Record<string, string>;\n /** Additional class for the toolbar root. */\n className?: string;\n}\n\nfunction resolveIcon(item: ActionItem, override: ReactNode | undefined): ReactNode {\n if (override !== undefined) return override;\n const i = item.icon;\n if (typeof i === 'function') return i();\n return i;\n}\n\nfunction resolveTitle(label: string, item: ActionItem): string {\n const shortcut = item.action.shortcut ?? formatShortcut(actionShortcuts(item.action, item.params)[0]);\n return shortcut ? `${label} (${shortcut})` : label;\n}\n\n/**\n * Generic group-keyed action toolbar. Reads the parent `ActionsRegistry`,\n * filters to actions whose `group` matches `props.group`, and renders one\n * icon button per match — or per variant, for an action that declares\n * `variants`. Disabled state is derived from each action's\n * `enabled` predicate via `evaluateEnabled` (so the button greys out and\n * swallows clicks while the keybinding — if any — still fires through the\n * registry's keydown listener; that's the registry's contract, not ours).\n *\n * Visual parity with the WeaselDraw `<PathfinderPanel>` is intentional;\n * this is the generic, registry-driven version. No keyboard navigation\n * (roving tabindex) yet — bar consumers today are short flat strips. Add\n * if/when a long bar lands.\n */\nexport function ActionBar(props: ActionBarProps) {\n const { group, orientation = 'horizontal', icons, labels, className } = props;\n const registry = useActionsRegistry();\n const depReg = useOptionalDepRegistry();\n const all = useSyncExternalStore(\n registry ? registry.subscribe : noopSubscribe,\n registry ? registry.list : () => EMPTY_LIST,\n registry ? registry.list : () => EMPTY_LIST,\n );\n const items = all.filter((a) => a.group === group).flatMap(actionItems);\n\n const cls = [s.bar, orientation === 'vertical' && s.vertical, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cls} role=\"toolbar\" aria-label={`${group} actions`}>\n {items.map((item) => {\n const label = labels?.[item.key] ?? item.label;\n const icon = resolveIcon(item, icons?.[item.key]);\n // Read at render: `enabled` reflects whatever the deps hold now, so\n // the bar is current as long as its parent re-renders on changes.\n const deps = depReg ? buildDepsFromRequires(item.action, depReg) : undefined;\n const { enabled } = evaluateEnabled(item.action, deps);\n const disabled = !enabled;\n const title = resolveTitle(label, item);\n return (\n <TooltipTrigger key={item.key} isDisabled={disabled}>\n <Focusable isDisabled={disabled}>\n <button\n type=\"button\"\n data-testid={`action-bar-item-${item.key}`}\n aria-label={label}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n className={s.button}\n onClick={() => {\n if (disabled) return;\n // Dispatch through the registry so the enabled() guard runs.\n // If no registry is in scope the click is a no-op — ActionBar\n // is expected to render under an `ActionsProvider`.\n registry?.trigger(item.action.id, item.params);\n }}\n >\n {icon}\n </button>\n </Focusable>\n <Tooltip>{title}</Tooltip>\n </TooltipTrigger>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;GCgBMO,IAAgC,OAAO,OAAO,CAAC,CAAC,GAChDC,gBAA0C,CAAC;AAyBjD,SAASC,EAAY,GAAkB,GAA4C;CACjF,IAAIC,MAAa,KAAA,GAAW,OAAOA;CACnC,IAAMC,IAAIC,EAAK;CAEf,OADI,OAAOD,KAAM,aAAmBA,EAAE,IAC/BA;AACT;AAEA,SAASE,EAAa,GAAe,GAA0B;CAC7D,IAAMC,IAAWF,EAAK,OAAO,YAAYP,EAAeU,EAAgBH,EAAK,QAAQA,EAAK,MAAM,CAAC,CAAC,EAAE;CACpG,OAAOE,IAAW,GAAGE,EAAM,IAAIF,EAAS,KAAKE;AAC/C;AAgBA,SAAgBC,EAAU,GAAuB;CAC/C,IAAM,EAAE,UAAO,iBAAc,cAAc,UAAO,WAAQ,iBAAcC,GAClEC,IAAWC,EAAmB,GAC9BC,IAASC,EAAuB,GAMhCC,IALMC,EACVL,IAAWA,EAAS,YAAYX,GAChCW,IAAWA,EAAS,aAAaZ,GACjCY,IAAWA,EAAS,aAAaZ,CAErB,CAAA,CAAI,QAAQ,MAAMkB,EAAE,UAAUC,CAAK,CAAC,CAAC,QAAQC,CAAW,GAEhEC,IAAM;EAAC5B,EAAE;EAAK6B,MAAgB,cAAc7B,EAAE;EAAU8B;CAAS,CAAC,CACrE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OACE,kBAAC,OAAD;EAAK,WAAWF;EAAK,MAAK;EAAU,cAAY,GAAGF,EAAM;EACtD,UAAAH,EAAM,KAAK,MAAS;GACnB,IAAMP,IAAQe,IAASnB,EAAK,QAAQA,EAAK,OACnCoB,IAAOvB,EAAYG,GAAMqB,IAAQrB,EAAK,IAAI,GAG1CsB,IAAOb,IAASc,EAAsBvB,EAAK,QAAQS,CAAM,IAAI,KAAA,GAC7D,EAAE,eAAYe,EAAgBxB,EAAK,QAAQsB,CAAI,GAC/CG,IAAW,CAACC,GACZC,IAAQ1B,EAAaG,GAAOJ,CAAI;GACtC,OACE,kBAACX,GAAD;IAA+B,YAAYoC;IAA3C,UAAA,CACE,kBAACG,GAAD;KAAW,YAAYH;KACrB,UAAA,kBAAC,UAAD;MACE,MAAK;MACL,eAAa,mBAAmBzB,EAAK;MACrC,cAAYI;MACZ,iBAAeqB,KAAY,KAAA;MACjB;MACV,WAAWrC,EAAE;MACb,eAAe;OACb,AAAIqC,KAIJlB,GAAU,QAAQP,EAAK,OAAO,IAAIA,EAAK,MAAM;MAC/C;MAEC,UAAAoB;KACK,CAAA;IACC,CAAA,GACX,kBAAC9B,GAAD,EAAA,UAAUqC,EAAe,CAAA,CACX;GArBK,GAAA3B,EAAK,GAqBV;EAEpB,CAAC;CACE,CAAA;AAET"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { r as e } from "./portalHost-yTOVuCej.js";
|
|
2
|
-
import { t } from "./stance-BFQpS_fL.js";
|
|
3
|
-
import { t as n } from "./CloseButton-C2J7wVfo.js";
|
|
4
|
-
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
-
import { useCallback as o, useEffect as s, useId as c, useRef as l } from "react";
|
|
6
|
-
import { Dialog as u, DialogTrigger as d, Heading as f, OverlayArrow as p, Popover as m } from "react-aria-components";
|
|
7
|
-
import { createPortal as h } from "react-dom";
|
|
8
|
-
var g = {
|
|
9
|
-
anchor: "_anchor_w6dfg_1",
|
|
10
|
-
popover: "_popover_w6dfg_6",
|
|
11
|
-
arrow: "_arrow_w6dfg_204",
|
|
12
|
-
dialog: "_dialog_w6dfg_223",
|
|
13
|
-
header: "_header_w6dfg_230",
|
|
14
|
-
title: "_title_w6dfg_237",
|
|
15
|
-
body: "_body_w6dfg_248",
|
|
16
|
-
footer: "_footer_w6dfg_255"
|
|
17
|
-
};
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region src/components/Callout/Callout.tsx
|
|
20
|
-
function _(d) {
|
|
21
|
-
let { children: _, className: v, title: y, footer: b, stance: x = "notice", tone: S, modal: C = !1, showCloseButton: w, onDismiss: T, triggerRef: E, anchorRect: D, placement: O = "top", offset: k = 12, maxHeight: A = 400, onOpenChange: j, shouldCloseOnInteractOutside: M, "aria-label": N, "aria-labelledby": P, portalContainer: F, ...I } = d, L = l(null), R = t({
|
|
22
|
-
stance: x,
|
|
23
|
-
tone: S
|
|
24
|
-
}), { anchor: z, portalProps: B } = e(F), V = w ?? !C, H = l(T);
|
|
25
|
-
H.current = T;
|
|
26
|
-
let U = l((e) => {
|
|
27
|
-
e.key === "Escape" && H.current?.();
|
|
28
|
-
}), W = l(null), G = o((e) => {
|
|
29
|
-
W.current?.removeEventListener("keydown", U.current), W.current = e, e?.addEventListener("keydown", U.current);
|
|
30
|
-
}, []), K = c(), q = D !== void 0;
|
|
31
|
-
s(() => {
|
|
32
|
-
q && typeof window < "u" && window.dispatchEvent(new Event("resize"));
|
|
33
|
-
}, [
|
|
34
|
-
q,
|
|
35
|
-
D?.x,
|
|
36
|
-
D?.y,
|
|
37
|
-
D?.width,
|
|
38
|
-
D?.height
|
|
39
|
-
]);
|
|
40
|
-
let J = C && y !== void 0 ? K : P, Y = C ? N : void 0;
|
|
41
|
-
return /* @__PURE__ */ a(r, { children: [
|
|
42
|
-
z,
|
|
43
|
-
D !== void 0 && h(/* @__PURE__ */ i("span", {
|
|
44
|
-
ref: L,
|
|
45
|
-
"data-callout-anchor": "",
|
|
46
|
-
className: g.anchor,
|
|
47
|
-
"aria-hidden": "true",
|
|
48
|
-
style: {
|
|
49
|
-
left: D.x,
|
|
50
|
-
top: D.y,
|
|
51
|
-
width: D.width,
|
|
52
|
-
height: D.height
|
|
53
|
-
}
|
|
54
|
-
}), document.body),
|
|
55
|
-
/* @__PURE__ */ a(m, {
|
|
56
|
-
...I,
|
|
57
|
-
triggerRef: D === void 0 ? E : L,
|
|
58
|
-
isNonModal: !C,
|
|
59
|
-
placement: O,
|
|
60
|
-
offset: k,
|
|
61
|
-
maxHeight: A,
|
|
62
|
-
onOpenChange: j,
|
|
63
|
-
shouldCloseOnInteractOutside: M ?? (C ? () => !1 : void 0),
|
|
64
|
-
"aria-label": Y,
|
|
65
|
-
"aria-labelledby": J,
|
|
66
|
-
className: [g.popover, v].filter(Boolean).join(" "),
|
|
67
|
-
...R,
|
|
68
|
-
"data-weasel-overlay": "",
|
|
69
|
-
...B,
|
|
70
|
-
children: [/* @__PURE__ */ i(p, {
|
|
71
|
-
className: g.arrow,
|
|
72
|
-
children: /* @__PURE__ */ i("svg", {
|
|
73
|
-
width: 12,
|
|
74
|
-
height: 12,
|
|
75
|
-
viewBox: "0 0 12 12",
|
|
76
|
-
"aria-hidden": "true",
|
|
77
|
-
children: /* @__PURE__ */ i("path", { d: "M0 0 L6 6 L12 0" })
|
|
78
|
-
})
|
|
79
|
-
}), /* @__PURE__ */ i(u, {
|
|
80
|
-
role: C ? "alertdialog" : "dialog",
|
|
81
|
-
className: g.dialog,
|
|
82
|
-
"aria-label": N,
|
|
83
|
-
"aria-labelledby": P,
|
|
84
|
-
ref: G,
|
|
85
|
-
children: ({ close: e }) => /* @__PURE__ */ a(r, { children: [
|
|
86
|
-
(y !== void 0 || V) && /* @__PURE__ */ a("header", {
|
|
87
|
-
className: g.header,
|
|
88
|
-
children: [y !== void 0 && /* @__PURE__ */ i(f, {
|
|
89
|
-
id: K,
|
|
90
|
-
slot: "title",
|
|
91
|
-
className: g.title,
|
|
92
|
-
children: y
|
|
93
|
-
}), V && /* @__PURE__ */ i(n, {
|
|
94
|
-
ariaLabel: "Close callout",
|
|
95
|
-
onClick: () => {
|
|
96
|
-
e(), j?.(!1), T?.();
|
|
97
|
-
}
|
|
98
|
-
})]
|
|
99
|
-
}),
|
|
100
|
-
/* @__PURE__ */ i("div", {
|
|
101
|
-
className: g.body,
|
|
102
|
-
children: _
|
|
103
|
-
}),
|
|
104
|
-
b !== void 0 && /* @__PURE__ */ i("footer", {
|
|
105
|
-
className: g.footer,
|
|
106
|
-
children: b
|
|
107
|
-
})
|
|
108
|
-
] })
|
|
109
|
-
})]
|
|
110
|
-
})
|
|
111
|
-
] });
|
|
112
|
-
}
|
|
113
|
-
//#endregion
|
|
114
|
-
export { d as n, _ as t };
|
|
115
|
-
|
|
116
|
-
//# sourceMappingURL=Callout-ndW5_Bqx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Callout-ndW5_Bqx.js","names":["_Fragment","s","RACPopover","RACDialog","useOverlayPortal","CloseButton","DialogTrigger$1","Callout_module_default","Callout","ariaLabel","ariaLabelledby","rest","props","anchorRef","useRef","stanced","useStance","portalAnchor","portalContainer","showClose","showCloseButton","modal","onDismissRef","onDismiss","escapeListener","listeningTo","dialogRef","useCallback","node","titleId","useId","hasAnchorRect","anchorRect","popoverAriaLabelledby","title","popoverAriaLabel","Fragment","createPortal","Popover","triggerRef","shouldCloseOnInteractOutside","className","portalProps","OverlayArrow","Dialog","Heading","close","onOpenChange","footer"],"sources":["../../src/components/Callout/Callout.module.css","../../src/components/Callout/Callout.tsx"],"sourcesContent":[".anchor {\n position: fixed;\n pointer-events: none;\n}\n\n.popover {\n /* Above Dialog overlay (1000) and ToastRegion (1100) — RAC sets no z-index. */\n z-index: 1200;\n background: var(--_s-fill);\n border: var(--_s-border-width) var(--_s-border-style) var(--_s-border-color);\n border-radius: var(--_s-radius);\n box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);\n color: var(--wzl-fg);\n font-family: var(--wzl-font-ui);\n max-width: 320px;\n transition: opacity var(--wzl-motion-fast);\n}\n\n.popover[data-entering],\n.popover[data-exiting] {\n opacity: 0;\n}\n\n/* BEGIN GENERATED stance rules: callout — `npm run gen:stances`, do not edit. */\n\n.popover {\n --wzl-tone: initial;\n}\n\n.popover {\n --_s-surface: var(--wzl-surface);\n --_s-border-color: var(--wzl-accent-strong);\n --_s-border-style: solid;\n --_s-border-width: 1px;\n --_s-radius: var(--wzl-radius-md);\n --_s-tone-mix: var(--wzl-panel-tone-mix);\n --_s-tone: var(--wzl-tone, var(--_s-surface));\n --_s-accent: var(--wzl-tone);\n --_s-title-font: var(--wzl-font-ui);\n --_s-title-weight: var(--wzl-font-weight-bold);\n --_s-title-size: var(--wzl-font-size);\n --_s-title-case: none;\n --_s-title-tracking: normal;\n --_s-title-color: var(--wzl-fg);\n}\n\n.popover[data-stance='scope'] {\n --_s-surface: var(--wzl-stance-scope-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-scope-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-scope-border-style, solid);\n --_s-border-width: var(--wzl-stance-scope-border-width, 1px);\n --_s-radius: var(--wzl-stance-scope-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-scope-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-scope-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-scope-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-scope-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-scope-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-scope-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-scope-title-case, none);\n --_s-title-tracking: var(--wzl-stance-scope-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-scope-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='aside'] {\n --_s-surface: var(--wzl-stance-aside-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-aside-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-aside-border-style, solid);\n --_s-border-width: var(--wzl-stance-aside-border-width, 1px);\n --_s-radius: var(--wzl-stance-aside-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-aside-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-aside-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-aside-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-aside-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-aside-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-aside-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-aside-title-case, none);\n --_s-title-tracking: var(--wzl-stance-aside-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-aside-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='advanced'] {\n --_s-surface: var(--wzl-stance-advanced-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-advanced-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-advanced-border-style, solid);\n --_s-border-width: var(--wzl-stance-advanced-border-width, 1px);\n --_s-radius: var(--wzl-stance-advanced-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-advanced-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-advanced-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-advanced-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-advanced-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-advanced-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-advanced-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-advanced-title-case, none);\n --_s-title-tracking: var(--wzl-stance-advanced-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-advanced-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='debug'] {\n --_s-surface: var(--wzl-stance-debug-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-debug-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-debug-border-style, solid);\n --_s-border-width: var(--wzl-stance-debug-border-width, 1px);\n --_s-radius: var(--wzl-stance-debug-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-debug-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-debug-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-debug-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-debug-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-debug-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-debug-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-debug-title-case, none);\n --_s-title-tracking: var(--wzl-stance-debug-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-debug-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='danger'] {\n --_s-surface: var(--wzl-stance-danger-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-danger-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-danger-border-style, solid);\n --_s-border-width: var(--wzl-stance-danger-border-width, 1px);\n --_s-radius: var(--wzl-stance-danger-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-danger-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-danger-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-danger-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-danger-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-danger-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-danger-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-danger-title-case, none);\n --_s-title-tracking: var(--wzl-stance-danger-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-danger-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='notice'] {\n --_s-surface: var(--wzl-stance-notice-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-notice-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-notice-border-style, solid);\n --_s-border-width: var(--wzl-stance-notice-border-width, 1px);\n --_s-radius: var(--wzl-stance-notice-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-notice-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-notice-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-notice-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-notice-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-notice-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-notice-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-notice-title-case, none);\n --_s-title-tracking: var(--wzl-stance-notice-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-notice-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='important'] {\n --_s-surface: var(--wzl-stance-important-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-important-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-important-border-style, solid);\n --_s-border-width: var(--wzl-stance-important-border-width, 1px);\n --_s-radius: var(--wzl-stance-important-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-important-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-important-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-important-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-important-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-important-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-important-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-important-title-case, none);\n --_s-title-tracking: var(--wzl-stance-important-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-important-title-color, var(--wzl-fg));\n}\n\n.popover[data-stance='preview'] {\n --_s-surface: var(--wzl-stance-preview-surface, var(--wzl-surface));\n --_s-border-color: var(--wzl-stance-preview-border-color, var(--wzl-accent-strong));\n --_s-border-style: var(--wzl-stance-preview-border-style, solid);\n --_s-border-width: var(--wzl-stance-preview-border-width, 1px);\n --_s-radius: var(--wzl-stance-preview-radius, var(--wzl-radius-md));\n --_s-tone-mix: var(--wzl-stance-preview-tone-mix, var(--wzl-panel-tone-mix));\n --_s-tone: var(--wzl-tone, var(--wzl-stance-preview-tone, var(--_s-surface)));\n --_s-accent: var(--wzl-stance-preview-accent, var(--wzl-tone));\n --_s-title-font: var(--wzl-stance-preview-title-font, var(--wzl-font-ui));\n --_s-title-weight: var(--wzl-stance-preview-title-weight, var(--wzl-font-weight-bold));\n --_s-title-size: var(--wzl-stance-preview-title-size, var(--wzl-font-size));\n --_s-title-case: var(--wzl-stance-preview-title-case, none);\n --_s-title-tracking: var(--wzl-stance-preview-title-tracking, normal);\n --_s-title-color: var(--wzl-stance-preview-title-color, var(--wzl-fg));\n}\n\n.popover {\n --_s-fill: var(--_s-surface);\n}\n\n.popover[data-tone],\n.popover[data-stance] {\n --_s-fill: color-mix(in oklab, var(--_s-tone) var(--_s-tone-mix), var(--_s-surface));\n}\n\n.popover[data-tone] {\n --wzl-accent: var(--_s-accent);\n --wzl-accent-base: var(--_s-accent);\n --wzl-accent-strong: color-mix(in oklab, var(--_s-accent) 70%, var(--wzl-fg));\n --wzl-accent-soft: color-mix(in oklab, var(--_s-accent) 45%, var(--wzl-surface));\n --wzl-accent-hover: var(--wzl-accent-strong);\n --wzl-accent-fg: var(--wzl-accent-strong);\n --wzl-focus-ring: var(--wzl-accent-strong);\n}\n\n/* END GENERATED stance rules: callout */\n\n.arrow svg {\n display: block;\n fill: var(--_s-fill);\n stroke: var(--_s-border-color);\n stroke-width: 1;\n}\n\n.arrow[data-placement='bottom'] svg {\n transform: rotate(180deg);\n}\n\n.arrow[data-placement='left'] svg {\n transform: rotate(-90deg);\n}\n\n.arrow[data-placement='right'] svg {\n transform: rotate(90deg);\n}\n\n.dialog {\n outline: none;\n max-height: inherit;\n display: flex;\n flex-direction: column;\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-4);\n padding: var(--wzl-space-5) var(--wzl-space-6) 0;\n}\n\n.title {\n margin: 0;\n flex: 1;\n font-family: var(--_s-title-font);\n font-size: var(--_s-title-size);\n font-weight: var(--_s-title-weight);\n text-transform: var(--_s-title-case);\n letter-spacing: var(--_s-title-tracking);\n color: var(--_s-title-color);\n}\n\n.body {\n padding: var(--wzl-space-4) var(--wzl-space-6) var(--wzl-space-5);\n font-size: var(--wzl-font-size);\n line-height: 1.4;\n overflow-y: auto;\n}\n\n.footer {\n display: flex;\n justify-content: flex-end;\n gap: var(--wzl-space-4);\n padding: 0 var(--wzl-space-6) var(--wzl-space-5);\n}\n","import { useCallback, useEffect, useId, useRef, type ReactNode, type RefObject } from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n DialogTrigger,\n Popover as RACPopover,\n OverlayArrow,\n Dialog as RACDialog,\n Heading,\n type PopoverProps as RACPopoverProps,\n} from 'react-aria-components';\nimport { useOverlayPortal, type OverlayPortalProps, type WithoutPortalTarget } from '../../overlays/portalHost';\nimport { CloseButton } from '../CloseButton';\nimport { type StanceProps, useStance } from '../stance';\nimport s from './Callout.module.css';\n\n/**\n * Composition wrapper for press-to-open callouts:\n * `<CalloutTrigger><Pressable>…</Pressable><Callout>…</Callout></CalloutTrigger>`.\n * Re-exported RAC DialogTrigger — non-RAC trigger elements must be wrapped\n * in `<Pressable>` from react-aria-components.\n * In composed mode, put `defaultOpen` on `CalloutTrigger`, not `Callout` —\n * RAC detaches to local open state on the trigger, not the popover.\n */\nexport { DialogTrigger as CalloutTrigger };\n\n/** Props for {@link Callout}, on top of React Aria's `Popover` props. */\nexport type CalloutProps = Omit<\n WithoutPortalTarget<RACPopoverProps>,\n 'children' | 'className' | 'isNonModal' | 'triggerRef'\n> &\n OverlayPortalProps &\n StanceProps & {\n children?: ReactNode;\n className?: string;\n /** Optional heading rendered above the body. */\n title?: ReactNode;\n /** Footer slot — typically action buttons. */\n footer?: ReactNode;\n /**\n * `true` — blocks interaction with the rest of the app until dismissed;\n * inner dialog is `role=\"alertdialog\"`. `false` (default) — non-blocking:\n * the app stays interactive; Esc / outside click / close button dismiss.\n */\n modal?: boolean;\n /**\n * Show the close button. Defaults to `!modal`. In programmatic\n * `triggerRef`/`anchorRect` modes the close button needs controlled open\n * (`isOpen` + `onOpenChange`); with only `defaultOpen` it has no open-state\n * setter to call and cannot close.\n */\n showCloseButton?: boolean;\n /**\n * The user asked for this callout to go away — the close button or Escape.\n *\n * Distinct from `onOpenChange`, which a non-modal popover *also* fires when\n * interaction or focus merely leaves it. On a canvas that's every click on\n * the artwork, so a consumer that pins `isOpen` and treats `onOpenChange`\n * as dismissal retires messages nobody read. Use this instead: it fires\n * only on a deliberate act, and never on incidental focus loss.\n */\n onDismiss?: () => void;\n /** Anchor to an arbitrary element (programmatic use, with `isOpen`). */\n triggerRef?: RefObject<Element | null>;\n /**\n * Anchor to a client-coordinate rect — e.g. a scene node's on-screen box.\n * The callout re-anchors whenever this rect changes, so a consumer that\n * recomputes it on pan, zoom, or scene edits keeps the arrow on its target.\n * Takes precedence over `triggerRef`.\n */\n anchorRect?: { x: number; y: number; width: number; height: number };\n };\n\n/**\n * Anchored callout with an arrow pointing at its source — a trigger\n * element, an arbitrary `triggerRef`, or a client-space `anchorRect`.\n * Wraps React Aria Popover + Dialog; positioning, collision flipping,\n * dismissal, and focus behavior come from the underlying primitives.\n */\nexport function Callout(props: CalloutProps) {\n const {\n children,\n className,\n title,\n footer,\n stance = 'notice',\n tone,\n modal = false,\n showCloseButton,\n onDismiss,\n triggerRef,\n anchorRect,\n placement = 'top',\n offset = 12,\n maxHeight = 400,\n onOpenChange,\n shouldCloseOnInteractOutside,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n portalContainer,\n ...rest\n } = props;\n const anchorRef = useRef<HTMLSpanElement>(null);\n const stanced = useStance({ stance, tone });\n const { anchor: portalAnchor, portalProps } = useOverlayPortal(portalContainer);\n const showClose = showCloseButton ?? !modal;\n // Escape is a dismissal like the close button is. It can't ride on a React `onKeyDown`:\n // RAC's Dialog runs its props through filterDOMProps, which drops handlers\n // it doesn't know, so the listener goes on the section itself. RAC's own\n // Escape handling is untouched — this only adds the signal.\n const onDismissRef = useRef(onDismiss);\n onDismissRef.current = onDismiss;\n const escapeListener = useRef((e: KeyboardEvent) => {\n if (e.key === 'Escape') onDismissRef.current?.();\n });\n const listeningTo = useRef<HTMLElement | null>(null);\n const dialogRef = useCallback((node: HTMLElement | null) => {\n listeningTo.current?.removeEventListener('keydown', escapeListener.current);\n listeningTo.current = node;\n node?.addEventListener('keydown', escapeListener.current);\n }, []);\n const titleId = useId();\n // RAC positions on open and recomputes on scroll, resize, and a\n // ResizeObserver on the anchor — none of which fire when `anchorRect` is\n // merely *translated*, as it is when a consumer tracks a scene node across a\n // pan. (Zoom happens to work, since scaling also changes the anchor's size.)\n // Nudging RAC's own resize listener is the supported way to make it\n // recompute; there's no public updatePosition on Popover.\n const hasAnchorRect = anchorRect !== undefined;\n useEffect(() => {\n if (!hasAnchorRect || typeof window === 'undefined') return;\n window.dispatchEvent(new Event('resize'));\n }, [hasAnchorRect, anchorRect?.x, anchorRect?.y, anchorRect?.width, anchorRect?.height]);\n // RAC's popover role-heuristic misses alertdialog; label the outer role\n // it stamps. Upstream: react-spectrum Popover.mjs querySelector('[role=dialog]').\n const popoverAriaLabelledby =\n modal && title !== undefined ? titleId : ariaLabelledby;\n const popoverAriaLabel = modal ? ariaLabel : undefined;\n return (\n <>\n {portalAnchor}\n {/* Harmless while closed — RAC reads the ref only when the popover is open. */}\n {anchorRect !== undefined &&\n createPortal(\n <span\n ref={anchorRef}\n data-callout-anchor=\"\"\n className={s.anchor}\n aria-hidden=\"true\"\n // Dynamic geometry — inline style is the mechanism here, not styling.\n style={{\n left: anchorRect.x,\n top: anchorRect.y,\n width: anchorRect.width,\n height: anchorRect.height,\n }}\n />,\n document.body,\n )}\n <RACPopover\n {...rest}\n triggerRef={anchorRect !== undefined ? anchorRef : triggerRef}\n isNonModal={!modal}\n placement={placement}\n offset={offset}\n maxHeight={maxHeight}\n onOpenChange={onOpenChange}\n shouldCloseOnInteractOutside={\n shouldCloseOnInteractOutside ?? (modal ? () => false : undefined)\n }\n aria-label={popoverAriaLabel}\n aria-labelledby={popoverAriaLabelledby}\n className={[s.popover, className].filter(Boolean).join(' ')}\n {...stanced}\n data-weasel-overlay=\"\"\n {...portalProps}\n >\n <OverlayArrow className={s.arrow}>\n <svg width={12} height={12} viewBox=\"0 0 12 12\" aria-hidden=\"true\">\n <path d=\"M0 0 L6 6 L12 0\" />\n </svg>\n </OverlayArrow>\n <RACDialog\n role={modal ? 'alertdialog' : 'dialog'}\n className={s.dialog}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={dialogRef}\n >\n {({ close }) => (\n <>\n {(title !== undefined || showClose) && (\n <header className={s.header}>\n {title !== undefined && (\n <Heading id={titleId} slot=\"title\" className={s.title}>\n {title}\n </Heading>\n )}\n {showClose && (\n <CloseButton\n ariaLabel=\"Close callout\"\n onClick={() => {\n // `close()` resolves OverlayTriggerStateContext, only\n // provided by DialogTrigger (composed mode). In\n // triggerRef/anchorRect modes there is no such\n // context, so `close()` is a no-op there — the\n // controlled-open fallback below does the work.\n close();\n onOpenChange?.(false);\n onDismiss?.();\n }}\n />\n )}\n </header>\n )}\n <div className={s.body}>{children}</div>\n {footer !== undefined && <footer className={s.footer}>{footer}</footer>}\n </>\n )}\n </RACDialog>\n </RACPopover>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AC8EA,SAAgBQ,EAAQ,GAAqB;CAC3C,IAAM,EACJ,aACA,cACA,UACA,WACA,YAAS,UACT,SACA,WAAQ,IACR,oBACA,cACA,eACA,eACA,eAAY,OACZ,YAAS,IACT,eAAY,KACZ,iBACA,iCACA,cAAcC,GACd,mBAAmBC,GACnB,oBACA,GAAGC,MACDC,GACEC,IAAYC,EAAwB,IAAI,GACxCC,IAAUC,EAAU;EAAE;EAAQ;CAAK,CAAC,GACpC,EAAE,QAAQC,GAAc,mBAAgBb,EAAiBc,CAAe,GACxEC,IAAYC,KAAmB,CAACC,GAKhCC,IAAeR,EAAOS,CAAS;CACrC,EAAa,UAAUA;CACvB,IAAMC,IAAiBV,GAAQ,MAAqB;EAClD,AAAI,EAAE,QAAQ,YAAUQ,EAAa,UAAU;CACjD,CAAC,GACKG,IAAcX,EAA2B,IAAI,GAC7CY,IAAYC,GAAa,MAA6B;EAG1D,AAFAF,EAAY,SAAS,oBAAoB,WAAWD,EAAe,OAAO,GAC1E,EAAY,UAAUI,GACtBA,GAAM,iBAAiB,WAAWJ,EAAe,OAAO;CAC1D,GAAG,CAAC,CAAC,GACCK,IAAUC,EAAM,GAOhBC,IAAgBC,MAAe,KAAA;CACrC,QAAgB;EACd,AAAKD,KAAiB,OAAO,SAAW,OACxC,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;CAC1C,GAAG;EAACA;EAAeC,GAAY;EAAGA,GAAY;EAAGA,GAAY;EAAOA,GAAY;CAAM,CAAC;CAGvF,IAAMC,IACJZ,KAASa,MAAU,KAAA,IAAYL,IAAUnB,GACrCyB,IAAmBd,IAAQZ,IAAY,KAAA;CAC7C,OACE,kBAAAT,GAAA,EAAA,UAAA;EACGiB;EAEAe,MAAe,KAAA,KACdK,EACE,kBAAC,QAAD;GACE,KAAKxB;GACL,uBAAoB;GACpB,WAAWZ,EAAE;GACb,eAAY;GAEZ,OAAO;IACL,MAAM+B,EAAW;IACjB,KAAKA,EAAW;IAChB,OAAOA,EAAW;IAClB,QAAQA,EAAW;GACrB;EACD,CAAA,GACD,SAAS,IACX;EACF,kBAAC9B,GAAD;GACE,GAAIS;GACJ,YAAYqB,MAAe,KAAA,IAAwBO,IAAZ1B;GACvC,YAAY,CAACQ;GACF;GACH;GACG;GACG;GACd,8BACEmB,MAAiCnB,UAAc,KAAQ,KAAA;GAEzD,cAAYc;GACZ,mBAAiBF;GACjB,WAAW,CAAChC,EAAE,SAASwC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GAC1D,GAAI1B;GACJ,uBAAoB;GACpB,GAAI2B;GAhBN,UAAA,CAkBE,kBAACC,GAAD;IAAc,WAAW1C,EAAE;IACzB,UAAA,kBAAC,OAAD;KAAK,OAAO;KAAI,QAAQ;KAAI,SAAQ;KAAY,eAAY;KAC1D,UAAA,kBAAC,QAAD,EAAM,GAAE,kBAAmB,CAAA;IACxB,CAAA;GACO,CAAA,GACd,kBAACE,GAAD;IACE,MAAMkB,IAAQ,gBAAgB;IAC9B,WAAWpB,EAAE;IACb,cAAYQ;IACZ,mBAAiBC;IACjB,KAAKgB;IAEH,WAAA,EAAE,eACF,kBAAA1B,GAAA,EAAA,UAAA;MACIkC,MAAU,KAAA,KAAaf,MACvB,kBAAC,UAAD;MAAQ,WAAWlB,EAAE;MAArB,UAAA,CACGiC,MAAU,KAAA,KACT,kBAACW,GAAD;OAAS,IAAIhB;OAAS,MAAK;OAAQ,WAAW5B,EAAE;OAC7C,UAAAiC;MACM,CAAA,GAEVf,KACC,kBAACd,GAAD;OACE,WAAU;OACV,eAAe;QAQb,AAFAyC,EAAM,GACNC,IAAe,EAAK,GACpBxB,IAAY;OACd;MACD,CAAA,CAEG;;KAEV,kBAAC,OAAD;MAAK,WAAWtB,EAAE;MAAO;KAAc,CAAA;KACtC+C,MAAW,KAAA,KAAa,kBAAC,UAAD;MAAQ,WAAW/C,EAAE;MAAS,UAAA+C;KAAe,CAAA;IACtE,EAAA,CAAA;GAEK,CAAA,CACD;;CACZ,EAAA,CAAA;AAEN"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as r } from "react";
|
|
3
|
-
import { Checkbox as i } from "react-aria-components";
|
|
4
|
-
var a = {
|
|
5
|
-
checkbox: "_checkbox_1gsy2_1",
|
|
6
|
-
box: "_box_1gsy2_18",
|
|
7
|
-
checkmark: "_checkmark_1gsy2_47",
|
|
8
|
-
label: "_label_1gsy2_60"
|
|
9
|
-
}, o = r(function(r, o) {
|
|
10
|
-
let { children: s, className: c, ...l } = r;
|
|
11
|
-
return /* @__PURE__ */ t(i, {
|
|
12
|
-
...l,
|
|
13
|
-
ref: o,
|
|
14
|
-
className: [a.checkbox, c].filter(Boolean).join(" "),
|
|
15
|
-
children: ({ isIndeterminate: r }) => /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("span", {
|
|
16
|
-
className: a.box,
|
|
17
|
-
children: /* @__PURE__ */ t("svg", {
|
|
18
|
-
className: a.checkmark,
|
|
19
|
-
viewBox: "0 0 14 14",
|
|
20
|
-
"aria-hidden": "true",
|
|
21
|
-
children: r ? /* @__PURE__ */ t("line", {
|
|
22
|
-
x1: "3",
|
|
23
|
-
y1: "7",
|
|
24
|
-
x2: "11",
|
|
25
|
-
y2: "7",
|
|
26
|
-
stroke: "currentColor",
|
|
27
|
-
strokeWidth: "2",
|
|
28
|
-
strokeLinecap: "round"
|
|
29
|
-
}) : /* @__PURE__ */ t("polyline", {
|
|
30
|
-
points: "3,7.5 6,10.5 11,4.5",
|
|
31
|
-
fill: "none",
|
|
32
|
-
stroke: "currentColor",
|
|
33
|
-
strokeWidth: "2",
|
|
34
|
-
strokeLinecap: "round",
|
|
35
|
-
strokeLinejoin: "round"
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
}), s !== void 0 && /* @__PURE__ */ t("span", {
|
|
39
|
-
className: a.label,
|
|
40
|
-
children: s
|
|
41
|
-
})] })
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
//#endregion
|
|
45
|
-
export { o as t };
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=Checkbox-DHXTUHO9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox-DHXTUHO9.js","names":["Checkbox","RACCheckbox","s","_Fragment","Checkbox_module_default","Checkbox$1","forwardRef","rest","props","Checkbox","className","Fragment","isIndeterminate","children"],"sources":["../../src/components/Checkbox/Checkbox.module.css","../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":[".checkbox {\n display: inline-flex;\n align-items: center;\n gap: var(--wzl-space-4);\n cursor: pointer;\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n color: var(--wzl-fg);\n user-select: none;\n -webkit-user-select: none;\n}\n\n.checkbox[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.box {\n position: relative;\n flex: 0 0 auto;\n width: 14px;\n height: 14px;\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border-strong);\n border-radius: var(--wzl-radius-sm);\n transition: background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);\n}\n\n.checkbox[data-focus-visible] .box {\n box-shadow: 0 0 0 2px var(--wzl-focus-ring);\n}\n\n.checkbox[data-hovered]:not([data-disabled]) .box {\n border-color: var(--wzl-fg-muted);\n}\n\n.checkbox[data-selected] .box,\n.checkbox[data-indeterminate] .box {\n background: var(--wzl-accent-strong);\n border-color: var(--wzl-accent-strong);\n}\n\n.checkbox[data-invalid] .box {\n border-color: var(--wzl-danger);\n}\n\n.checkmark {\n position: absolute;\n inset: 0;\n color: var(--wzl-fg-on-accent);\n opacity: 0;\n pointer-events: none;\n}\n\n.checkbox[data-selected] .checkmark,\n.checkbox[data-indeterminate] .checkmark {\n opacity: 1;\n}\n\n.label {\n line-height: 1.2;\n}\n","import { forwardRef, type ReactNode, type Ref } from 'react';\nimport {\n Checkbox as RACCheckbox,\n type CheckboxProps as RACCheckboxProps,\n} from 'react-aria-components';\nimport s from './Checkbox.module.css';\n\n/**\n * Props for {@link Checkbox}, on top of React Aria's `Checkbox` props. The\n * label is passed as children.\n */\nexport type CheckboxProps = Omit<RACCheckboxProps, 'children' | 'className'> & {\n children?: ReactNode;\n className?: string;\n};\n\n/**\n * Single checkbox wrapping React Aria's Checkbox. Supports indeterminate\n * via `isIndeterminate`. The label is supplied as children.\n */\nexport const Checkbox = forwardRef(function Checkbox(\n props: CheckboxProps,\n ref: Ref<HTMLLabelElement>,\n) {\n const { children, className, ...rest } = props;\n return (\n <RACCheckbox\n {...rest}\n ref={ref}\n className={[s.checkbox, className].filter(Boolean).join(' ')}\n >\n {({ isIndeterminate }) => (\n <>\n <span className={s.box}>\n <svg className={s.checkmark} viewBox=\"0 0 14 14\" aria-hidden=\"true\">\n {isIndeterminate ? (\n <line x1=\"3\" y1=\"7\" x2=\"11\" y2=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n ) : (\n <polyline\n points=\"3,7.5 6,10.5 11,4.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </svg>\n </span>\n {children !== undefined && <span className={s.label}>{children}</span>}\n </>\n )}\n </RACCheckbox>\n );\n});\n"],"mappings":";;;;;;;;GCoBaA,IAAWM,EAAW,SACjC,GACA,GACA;CACA,IAAM,EAAE,aAAU,cAAW,GAAGC,MAASC;CACzC,OACE,kBAACP,GAAD;EACE,GAAIM;EACC;EACL,WAAW,CAACL,EAAE,UAAUQ,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAEzD,WAAA,EAAE,yBACF,kBAAAP,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;GAAM,WAAWD,EAAE;GACjB,UAAA,kBAAC,OAAD;IAAK,WAAWA,EAAE;IAAW,SAAQ;IAAY,eAAY;IAC1D,UAAAU,IACC,kBAAC,QAAD;KAAM,IAAG;KAAI,IAAG;KAAI,IAAG;KAAK,IAAG;KAAI,QAAO;KAAe,aAAY;KAAI,eAAc;IAAS,CAAA,IAEhG,kBAAC,YAAD;KACE,QAAO;KACP,MAAK;KACL,QAAO;KACP,aAAY;KACZ,eAAc;KACd,gBAAe;IAChB,CAAA;GAEA,CAAA;EACD,CAAA,GACLC,MAAa,KAAA,KAAa,kBAAC,QAAD;GAAM,WAAWX,EAAE;GAAQ;EAAe,CAAA,CACrE,EAAA,CAAA;CAEO,CAAA;AAEjB,CAAC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { n as e, t } from "./InlineRange-P01ABSzo.js";
|
|
2
|
-
import { getAlpha01 as n, toHex8 as r, withAlpha01 as i } from "@weasel-js/core";
|
|
3
|
-
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
-
import { useEffect as c, useRef as l, useState as u } from "react";
|
|
5
|
-
var d = {
|
|
6
|
-
root: "_root_1vb3y_1",
|
|
7
|
-
chip: "_chip_1vb3y_7",
|
|
8
|
-
color: "_color_1vb3y_14",
|
|
9
|
-
alphaRange: "_alphaRange_1vb3y_46",
|
|
10
|
-
alphaReadout: "_alphaReadout_1vb3y_50"
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
//#region src/components/ColorField/ColorField.tsx
|
|
14
|
-
function f(f) {
|
|
15
|
-
let { value: p, mixed: m = !1, alpha: h = !1, alphaDisabled: g = !1, onInput: _, onChange: v, id: y, className: b } = f, x = r(p ?? "#000000"), S = x.slice(0, 7), C = n(x), w = Math.round(C * 100), [T, E] = u(null), [D, O] = u(null), k = T ?? S, A = D ?? w, j = (e, t) => h ? i(e, t) : e, M = m && T === null, N = (e, t) => {
|
|
16
|
-
(T !== null || D !== null) && (v(j(e, t)), E(null), O(null));
|
|
17
|
-
}, P = l(null), F = l(() => {});
|
|
18
|
-
return c(() => {
|
|
19
|
-
F.current = () => N(k, A / 100);
|
|
20
|
-
}), c(() => {
|
|
21
|
-
let e = P.current;
|
|
22
|
-
if (!e) return;
|
|
23
|
-
let t = () => F.current();
|
|
24
|
-
return e.addEventListener("change", t), () => e.removeEventListener("change", t);
|
|
25
|
-
}, []), /* @__PURE__ */ s("span", {
|
|
26
|
-
className: [d.root, b].filter(Boolean).join(" "),
|
|
27
|
-
...m && T === null ? { "data-mixed": "" } : {},
|
|
28
|
-
children: [/* @__PURE__ */ o("span", {
|
|
29
|
-
className: d.chip,
|
|
30
|
-
children: /* @__PURE__ */ o("input", {
|
|
31
|
-
ref: P,
|
|
32
|
-
id: y,
|
|
33
|
-
className: d.color,
|
|
34
|
-
type: "color",
|
|
35
|
-
value: k,
|
|
36
|
-
"aria-label": f["aria-label"] ?? "Color",
|
|
37
|
-
onInput: (e) => {
|
|
38
|
-
let t = e.target.value;
|
|
39
|
-
E(t), _?.(j(t, A / 100));
|
|
40
|
-
},
|
|
41
|
-
onBlur: () => N(k, A / 100)
|
|
42
|
-
})
|
|
43
|
-
}), h && /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(t, {
|
|
44
|
-
className: `${d.alphaRange} ${e.alpha}`,
|
|
45
|
-
min: 0,
|
|
46
|
-
max: 100,
|
|
47
|
-
step: 1,
|
|
48
|
-
value: A,
|
|
49
|
-
disabled: M || g,
|
|
50
|
-
"aria-label": f["aria-label"] ? `${f["aria-label"]} opacity` : "Opacity",
|
|
51
|
-
onInput: (e) => {
|
|
52
|
-
let t = Number(e.target.value);
|
|
53
|
-
O(t), _?.(j(k, t / 100));
|
|
54
|
-
},
|
|
55
|
-
onPointerUp: () => N(k, A / 100),
|
|
56
|
-
onPointerCancel: () => N(k, A / 100),
|
|
57
|
-
onKeyUp: () => N(k, A / 100),
|
|
58
|
-
onBlur: () => N(k, A / 100)
|
|
59
|
-
}), /* @__PURE__ */ s("span", {
|
|
60
|
-
className: d.alphaReadout,
|
|
61
|
-
"aria-hidden": "true",
|
|
62
|
-
children: [A, "%"]
|
|
63
|
-
})] })]
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
//#endregion
|
|
67
|
-
export { f as t };
|
|
68
|
-
|
|
69
|
-
//# sourceMappingURL=ColorField-Yz_BkcCT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorField-Yz_BkcCT.js","names":["s","_Fragment","shared","range_module_default","ColorField_module_default","ColorField","props","hex8","toHex8","value","rgb6","alpha01","getAlpha01","alphaPct","colorDraft","setColorDraft","useState","alphaDraft","setAlphaDraft","visibleRgb","visibleAlphaPct","compose","alpha","withAlpha01","rgb","a01","alphaLocked","mixed","commit","onChange","swatch","useRef","latestCommit","useEffect","el","onClose","className","onInput","Fragment","InlineRange","alphaDisabled","pct"],"sources":["../../src/components/ColorField/ColorField.module.css","../../src/components/ColorField/ColorField.tsx"],"sourcesContent":[".root {\n display: inline-flex;\n align-items: center;\n gap: var(--wzl-space-3);\n}\n\n.chip {\n position: relative;\n display: inline-flex;\n border-radius: var(--wzl-radius-sm);\n overflow: hidden;\n}\n\n.color {\n inline-size: 28px;\n block-size: var(--wzl-control-h-sm);\n padding: 0;\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n background: none;\n cursor: pointer;\n}\n\n.color:focus-visible {\n outline: none;\n border-color: var(--wzl-focus-ring);\n box-shadow: 0 0 0 1px var(--wzl-focus-ring);\n}\n\n/* Indeterminate (mixed) presentation: checkerboard overlay atop the\n * swatch. pointer-events: none so the input stays clickable. */\n.root[data-mixed] .chip::after {\n content: '';\n position: absolute;\n inset: 1px;\n border-radius: var(--wzl-radius-sm);\n pointer-events: none;\n background: repeating-conic-gradient(\n var(--wzl-checker-a) 0% 25%,\n var(--wzl-checker-b) 0% 50%\n )\n 50% / var(--wzl-checker-size) var(--wzl-checker-size);\n}\n\n/* `InlineRange` owns the track; this only says how it shares the row. */\n.alphaRange {\n flex: 1;\n}\n\n.alphaReadout {\n min-inline-size: 3ch;\n text-align: end;\n font-size: var(--wzl-font-size-sm);\n opacity: 0.7;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { toHex8, getAlpha01, withAlpha01 } from '@weasel-js/core';\nimport { InlineRange } from '../InlineRange';\nimport shared from '../range.module.css';\nimport s from './ColorField.module.css';\n\n/**\n * Props for {@link ColorField}. `onInput` fires throughout a gesture and\n * `onChange` once at its end.\n */\nexport interface ColorFieldProps {\n /** Current color, `#rrggbb` or `#rrggbbaa`. Omit when `mixed`. */\n value?: string;\n /** Indeterminate presentation (multi-selection with differing colors):\n * checkered chip, empty value. The first color edit produces a real\n * value; the opacity slider stays disabled until then (an alpha-only\n * edit would otherwise commit a value composed against the\n * placeholder black). */\n mixed?: boolean;\n /** Show the opacity slider; emitted values are `#rrggbbaa`. */\n alpha?: boolean;\n /** Draw the opacity slider inert, for a consumer that drops alpha. */\n alphaDisabled?: boolean;\n /** Live value during interaction (picker drag, slider drag). Optional —\n * wire it for live preview; omit it for commit-only consumers. */\n onInput?: (hex: string) => void;\n /** Committed value — picker close or blur, or slider release. One call\n * per user gesture; pair with an undoable write. */\n onChange: (hex: string) => void;\n /** Id for the color input, for a `<label htmlFor>` outside it. */\n id?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/**\n * Compact color editor: native color input + optional opacity slider.\n * Commit semantics are gesture-based (see `onChange`) because native\n * color/range inputs fire `change` continuously during interaction —\n * commit-on-change would emit one undo entry per tick.\n */\nexport function ColorField(props: ColorFieldProps) {\n const { value, mixed = false, alpha = false, alphaDisabled = false, onInput, onChange, id, className } = props;\n const hex8 = toHex8(value ?? '#000000');\n const rgb6 = hex8.slice(0, 7);\n const alpha01 = getAlpha01(hex8);\n const alphaPct = Math.round(alpha01 * 100);\n\n // Drafts track the control during a gesture (the committed prop only\n // updates after onChange), then reset to follow the prop again.\n const [colorDraft, setColorDraft] = useState<string | null>(null);\n const [alphaDraft, setAlphaDraft] = useState<number | null>(null);\n const visibleRgb = colorDraft ?? rgb6;\n const visibleAlphaPct = alphaDraft ?? alphaPct;\n\n const compose = (rgb: string, a01: number): string =>\n alpha ? withAlpha01(rgb, a01) : rgb;\n\n // Mixed with no color edit yet: the alpha slider has nothing real to\n // compose against (rgb6 is the placeholder black), so keep it disabled\n // until the first color edit lands.\n const alphaLocked = mixed && colorDraft === null;\n\n // Commit only when a gesture actually changed something — blur with no\n // preceding input must not emit (it would create a no-op undo entry).\n const commit = (rgb: string, a01: number): void => {\n if (colorDraft === null && alphaDraft === null) return;\n onChange(compose(rgb, a01));\n setColorDraft(null);\n setAlphaDraft(null);\n };\n\n // The picker closing fires a native `change`, which React's `onChange` does\n // not deliver apart from `input`; the input can keep focus after it closes,\n // so waiting for blur alone would hold the commit until the next click.\n const swatch = useRef<HTMLInputElement>(null);\n const latestCommit = useRef(() => {});\n useEffect(() => {\n latestCommit.current = () => commit(visibleRgb, visibleAlphaPct / 100);\n });\n useEffect(() => {\n const el = swatch.current;\n if (!el) return;\n const onClose = () => latestCommit.current();\n el.addEventListener('change', onClose);\n return () => el.removeEventListener('change', onClose);\n }, []);\n\n return (\n <span\n className={[s.root, className].filter(Boolean).join(' ')}\n {...(mixed && colorDraft === null ? { 'data-mixed': '' } : {})}\n >\n <span className={s.chip}>\n <input\n ref={swatch}\n id={id}\n className={s.color}\n type=\"color\"\n value={visibleRgb}\n aria-label={props['aria-label'] ?? 'Color'}\n onInput={(e) => {\n const rgb = (e.target as HTMLInputElement).value;\n setColorDraft(rgb);\n onInput?.(compose(rgb, visibleAlphaPct / 100));\n }}\n onBlur={() => commit(visibleRgb, visibleAlphaPct / 100)}\n />\n </span>\n {alpha && (\n <>\n <InlineRange\n className={`${s.alphaRange} ${shared.alpha}`}\n min={0}\n max={100}\n step={1}\n value={visibleAlphaPct}\n disabled={alphaLocked || alphaDisabled}\n aria-label={props['aria-label'] ? `${props['aria-label']} opacity` : 'Opacity'}\n onInput={(e) => {\n const pct = Number((e.target as HTMLInputElement).value);\n setAlphaDraft(pct);\n onInput?.(compose(visibleRgb, pct / 100));\n }}\n onPointerUp={() => commit(visibleRgb, visibleAlphaPct / 100)}\n onPointerCancel={() => commit(visibleRgb, visibleAlphaPct / 100)}\n onKeyUp={() => commit(visibleRgb, visibleAlphaPct / 100)}\n onBlur={() => commit(visibleRgb, visibleAlphaPct / 100)}\n />\n <span className={s.alphaReadout} aria-hidden=\"true\">{visibleAlphaPct}%</span>\n </>\n )}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;;ACyCA,SAAgBK,EAAW,GAAwB;CACjD,IAAM,EAAE,UAAO,WAAQ,IAAO,WAAQ,IAAO,mBAAgB,IAAO,YAAS,aAAU,OAAI,iBAAcC,GACnGC,IAAOC,EAAOC,KAAS,SAAS,GAChCC,IAAOH,EAAK,MAAM,GAAG,CAAC,GACtBI,IAAUC,EAAWL,CAAI,GACzBM,IAAW,KAAK,MAAMF,IAAU,GAAG,GAInC,CAACG,GAAYC,KAAiBC,EAAwB,IAAI,GAC1D,CAACC,GAAYC,KAAiBF,EAAwB,IAAI,GAC1DG,IAAaL,KAAcJ,GAC3BU,IAAkBH,KAAcJ,GAEhCQ,KAAW,GAAa,MAC5BC,IAAQC,EAAYC,GAAKC,CAAG,IAAID,GAK5BE,IAAcC,KAASb,MAAe,MAItCc,KAAU,GAAa,MAAsB;EACjD,CAAId,MAAe,QAAQG,MAAe,UAC1CY,EAASR,EAAQG,GAAKC,CAAG,CAAC,GAC1BV,EAAc,IAAI,GAClBG,EAAc,IAAI;CACpB,GAKMY,IAASC,EAAyB,IAAI,GACtCC,IAAeD,QAAa,CAAC,CAAC;CAYpC,OAXAE,QAAgB;EACd,EAAa,gBAAgBL,EAAOT,GAAYC,IAAkB,GAAG;CACvE,CAAC,GACDa,QAAgB;EACd,IAAMC,IAAKJ,EAAO;EAClB,IAAI,CAACI,GAAI;EACT,IAAMC,UAAgBH,EAAa,QAAQ;EAE3C,OADAE,EAAG,iBAAiB,UAAUC,CAAO,SACxBD,EAAG,oBAAoB,UAAUC,CAAO;CACvD,GAAG,CAAC,CAAC,GAGH,kBAAC,QAAD;EACE,WAAW,CAACnC,EAAE,MAAMoC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACvD,GAAKT,KAASb,MAAe,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;EAF9D,UAAA,CAIE,kBAAC,QAAD;GAAM,WAAWd,EAAE;GACjB,UAAA,kBAAC,SAAD;IACE,KAAK8B;IACD;IACJ,WAAW9B,EAAE;IACb,MAAK;IACL,OAAOmB;IACP,cAAYb,EAAM,iBAAiB;IACnC,UAAU,MAAM;KACd,IAAMkB,IAAO,EAAE,OAA4B;KAE3C,AADAT,EAAcS,CAAG,GACjBa,IAAUhB,EAAQG,GAAKJ,IAAkB,GAAG,CAAC;IAC/C;IACA,cAAcQ,EAAOT,GAAYC,IAAkB,GAAG;GACvD,CAAA;EACG,CAAA,GACLE,KACC,kBAAArB,GAAA,EAAA,UAAA,CACE,kBAACsC,GAAD;GACE,WAAW,GAAGvC,EAAE,WAAW,GAAGE,EAAO;GACrC,KAAK;GACL,KAAK;GACL,MAAM;GACN,OAAOkB;GACP,UAAUM,KAAec;GACzB,cAAYlC,EAAM,gBAAgB,GAAGA,EAAM,cAAc,YAAY;GACrE,UAAU,MAAM;IACd,IAAMmC,IAAM,OAAQ,EAAE,OAA4B,KAAK;IAEvD,AADAvB,EAAcuB,CAAG,GACjBJ,IAAUhB,EAAQF,GAAYsB,IAAM,GAAG,CAAC;GAC1C;GACA,mBAAmBb,EAAOT,GAAYC,IAAkB,GAAG;GAC3D,uBAAuBQ,EAAOT,GAAYC,IAAkB,GAAG;GAC/D,eAAeQ,EAAOT,GAAYC,IAAkB,GAAG;GACvD,cAAcQ,EAAOT,GAAYC,IAAkB,GAAG;EACvD,CAAA,GACD,kBAAC,QAAD;GAAM,WAAWpB,EAAE;GAAc,eAAY;GAA7C,UAAA,CAAqDoB,GAAgB,GAAO;EAC5E,CAAA,CAAA,EAAA,CAAA,CAEA;;AAEV"}
|