@weasel-js/ui 1.6.1 → 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-CTc9Lkwn.js +14 -0
- package/dist/chunks/Badge-CTc9Lkwn.js.map +1 -0
- package/dist/chunks/{Badge-CyAIZSDo.js → Badge-jYQjrTKc.js} +506 -486
- package/dist/chunks/Badge-jYQjrTKc.js.map +1 -0
- package/dist/chunks/BandEditor-Dd0egAgE.js +292 -0
- package/dist/chunks/BandEditor-Dd0egAgE.js.map +1 -0
- 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-D5Vi0aj_.js → ButtonBar-CIMKPPRS.js} +7 -9
- package/dist/chunks/{ButtonBar-D5Vi0aj_.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-BmNmRVtb.js +26 -0
- package/dist/chunks/CloseButton-BmNmRVtb.js.map +1 -0
- package/dist/chunks/ColorField-BLs9fbeq.js +90 -0
- package/dist/chunks/ColorField-BLs9fbeq.js.map +1 -0
- package/dist/chunks/{ColorModeControl-ke5PXbBa.js → ColorModeControl-DaVJ-SyX.js} +3 -3
- package/dist/chunks/{ColorModeControl-ke5PXbBa.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-BDJXjEvK.js → CurveEditor-jVBEqqdv.js} +90 -87
- package/dist/chunks/CurveEditor-jVBEqqdv.js.map +1 -0
- package/dist/chunks/{DataGrid-D-dZj1BD.js → DataGrid-BklgBqS0.js} +17 -17
- package/dist/chunks/DataGrid-BklgBqS0.js.map +1 -0
- package/dist/chunks/DetailList-DFtqdOJj.js +52 -0
- package/dist/chunks/DetailList-DFtqdOJj.js.map +1 -0
- package/dist/chunks/{DetentSlider-CL8TlX3S.js → DetentSlider-Bh7EpMqT.js} +2 -2
- package/dist/chunks/{DetentSlider-CL8TlX3S.js.map → DetentSlider-Bh7EpMqT.js.map} +1 -1
- package/dist/chunks/Dialog-DKfsk5VN.js +63 -0
- package/dist/chunks/Dialog-DKfsk5VN.js.map +1 -0
- package/dist/chunks/{Disclosure-0G0uh2fa.js → Disclosure-Ch2KxYuB.js} +7 -7
- package/dist/chunks/Disclosure-Ch2KxYuB.js.map +1 -0
- 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/{DragHandleGlyph-Dr7Fgo0I.js → DragGrip-AoIZXfZb.js} +2 -2
- package/dist/chunks/DragGrip-AoIZXfZb.js.map +1 -0
- package/dist/chunks/FallthroughDiagram-C7BUe8eU.js +284 -0
- package/dist/chunks/FallthroughDiagram-C7BUe8eU.js.map +1 -0
- 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-DXlMKWfK.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-BXESrHI0.js +82 -0
- package/dist/chunks/GestureRoute-BXESrHI0.js.map +1 -0
- package/dist/chunks/GradientEditor-DypXzMc-.js +325 -0
- package/dist/chunks/GradientEditor-DypXzMc-.js.map +1 -0
- package/dist/chunks/{Icon-Cgzy8VgC.js → Icon--B1ME-6c.js} +33 -1
- package/dist/chunks/Icon--B1ME-6c.js.map +1 -0
- package/dist/chunks/{InlineRange-eOj6JpJl.js → InlineRange-P01ABSzo.js} +3 -3
- package/dist/chunks/InlineRange-P01ABSzo.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-DESxZ44P.js → Jog-DfNUYejm.js} +8 -8
- package/dist/chunks/Jog-DfNUYejm.js.map +1 -0
- package/dist/chunks/{Keycaps-C0H_v2gO.js → Keycaps-C-FJyG8k.js} +14 -14
- package/dist/chunks/Keycaps-C-FJyG8k.js.map +1 -0
- package/dist/chunks/{LayerList-nz-QYvTF.js → LayerList-CsDqwYh-.js} +105 -111
- 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-DLXXgh48.js +209 -0
- package/dist/chunks/NumberField-DLXXgh48.js.map +1 -0
- package/dist/chunks/{OptionsBar-DbzAgIln.js → OptionsBar-DeTAjVb7.js} +6 -8
- package/dist/chunks/{OptionsBar-DbzAgIln.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-Bxo6haKe.js → PointPlotter-BZ_vk6gV.js} +2 -2
- package/dist/chunks/{PointPlotter-Bxo6haKe.js.map → PointPlotter-BZ_vk6gV.js.map} +1 -1
- package/dist/chunks/{Powerline-ExO5GwEr.js → Powerline-6wIFmDik.js} +2 -2
- package/dist/chunks/{Powerline-ExO5GwEr.js.map → Powerline-6wIFmDik.js.map} +1 -1
- package/dist/chunks/{Prefs-DpqFKiwY.js → Prefs-CkyldX-e.js} +116 -91
- package/dist/chunks/Prefs-CkyldX-e.js.map +1 -0
- package/dist/chunks/{Properties-D_KzDN9K.js → Properties-D15c8NP-.js} +53 -47
- package/dist/chunks/Properties-D15c8NP-.js.map +1 -0
- 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-BKRRTPTZ.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-Cm1qu-ZX.js +107 -0
- package/dist/chunks/SelectionPanel-Cm1qu-ZX.js.map +1 -0
- package/dist/chunks/SidebarPanel-AXQ0jRDx.js +53 -0
- package/dist/chunks/SidebarPanel-AXQ0jRDx.js.map +1 -0
- package/dist/chunks/Slider-Cl5RCeZ7.js +389 -0
- package/dist/chunks/Slider-Cl5RCeZ7.js.map +1 -0
- package/dist/chunks/{StatusBar-DzoPDY4k.js → StatusBar-Ca9Dvhhq.js} +6 -6
- package/dist/chunks/StatusBar-Ca9Dvhhq.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-DiBmMh_B.js +38 -0
- package/dist/chunks/ThemeSwitcher-DiBmMh_B.js.map +1 -0
- package/dist/chunks/{Timeline--58F7MED.js → Timeline-pqnYk5cV.js} +296 -294
- 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-DTjGeS0Q.js → ToggleBar-Z2jZiguF.js} +13 -15
- package/dist/chunks/ToggleBar-Z2jZiguF.js.map +1 -0
- package/dist/chunks/{TokenPanel-CMq7uydV.js → TokenPanel-DAkL6vwQ.js} +33 -33
- package/dist/chunks/TokenPanel-DAkL6vwQ.js.map +1 -0
- package/dist/chunks/{ToolButton-CR4sQlxF.js → ToolButton-BURp4YIO.js} +12 -14
- package/dist/chunks/ToolButton-BURp4YIO.js.map +1 -0
- package/dist/chunks/{ToolOptionsBar-CtzTlaN2.js → ToolOptionsBar-COsTJ1cu.js} +9 -7
- package/dist/chunks/ToolOptionsBar-COsTJ1cu.js.map +1 -0
- package/dist/chunks/{ToolPalette-CKG9qY6P.js → ToolPalette-DKDFWOX-.js} +8 -10
- package/dist/chunks/ToolPalette-DKDFWOX-.js.map +1 -0
- 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-DVOtc9R5.js → Tree-Cc8lIzgM.js} +2 -2
- package/dist/chunks/Tree-Cc8lIzgM.js.map +1 -0
- package/dist/chunks/checkbox.module-DLQV9tMX.js +5 -0
- package/dist/chunks/checkbox.module-DLQV9tMX.js.map +1 -0
- package/dist/chunks/{createKeyframeLayer-Czj6Y235.js → createKeyframeLayer-BTa4LyJE.js} +208 -223
- 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-Dk8SRS8g.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/bases/Powerline.d.ts.map +1 -1
- package/dist/components/Badge/bases/edgeProfiles.d.ts +31 -4
- package/dist/components/Badge/bases/edgeProfiles.d.ts.map +1 -1
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.d.ts.map +1 -1
- package/dist/components/Badge/index.js +3 -2
- package/dist/components/Badge/statusIcons.d.ts +5 -0
- package/dist/components/Badge/statusIcons.d.ts.map +1 -0
- package/dist/components/BandEditor/BandEditor.d.ts +17 -7
- package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
- package/dist/components/BandEditor/bands.d.ts +5 -2
- package/dist/components/BandEditor/bands.d.ts.map +1 -1
- package/dist/components/BandEditor/index.js +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 +2 -2
- 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/CloseButton.d.ts +21 -0
- package/dist/components/CloseButton/CloseButton.d.ts.map +1 -0
- package/dist/components/CloseButton/index.d.ts +3 -0
- package/dist/components/CloseButton/index.d.ts.map +1 -0
- package/dist/components/CloseButton/index.js +2 -0
- package/dist/components/ColorField/ColorField.d.ts +5 -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/DetailList.d.ts +31 -5
- package/dist/components/DetailList/DetailList.d.ts.map +1 -1
- package/dist/components/DetailList/index.d.ts +1 -1
- package/dist/components/DetailList/index.d.ts.map +1 -1
- package/dist/components/DetailList/index.js +1 -1
- package/dist/components/DetentSlider/index.js +1 -1
- package/dist/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/components/Dialog/index.js +1 -1
- package/dist/components/Disclosure/Disclosure.d.ts +1 -1
- package/dist/components/Disclosure/index.js +1 -1
- package/dist/components/DragGhost/index.js +1 -1
- package/dist/components/{DragHandleGlyph/DragHandleGlyph.d.ts → DragGrip/DragGrip.d.ts} +4 -4
- package/dist/components/DragGrip/DragGrip.d.ts.map +1 -0
- package/dist/components/DragGrip/index.d.ts +3 -0
- package/dist/components/DragGrip/index.d.ts.map +1 -0
- package/dist/components/DragGrip/index.js +2 -0
- package/dist/components/FallthroughDiagram/FallthroughDiagram.d.ts +14 -0
- package/dist/components/FallthroughDiagram/FallthroughDiagram.d.ts.map +1 -0
- package/dist/components/FallthroughDiagram/fixtures.d.ts +17 -0
- package/dist/components/FallthroughDiagram/fixtures.d.ts.map +1 -0
- package/dist/components/FallthroughDiagram/index.d.ts +3 -0
- package/dist/components/FallthroughDiagram/index.d.ts.map +1 -0
- package/dist/components/FallthroughDiagram/index.js +2 -0
- 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/GestureRoute.d.ts +19 -0
- package/dist/components/GestureRoute/GestureRoute.d.ts.map +1 -0
- package/dist/components/GestureRoute/index.d.ts +3 -0
- package/dist/components/GestureRoute/index.d.ts.map +1 -0
- package/dist/components/GestureRoute/index.js +2 -0
- package/dist/components/GradientEditor/GradientEditor.d.ts +22 -8
- package/dist/components/GradientEditor/GradientEditor.d.ts.map +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/InlineRange/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/Keycaps/Keycaps.d.ts +11 -5
- package/dist/components/Keycaps/Keycaps.d.ts.map +1 -1
- package/dist/components/Keycaps/index.d.ts +1 -1
- package/dist/components/Keycaps/index.d.ts.map +1 -1
- package/dist/components/Keycaps/index.js +1 -1
- package/dist/components/LayerList/LayerList.d.ts +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/UnitField.d.ts +20 -7
- package/dist/components/NumberField/UnitField.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.d.ts +1 -1
- package/dist/components/Powerline/index.d.ts.map +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/PrefsRow.d.ts.map +1 -1
- package/dist/components/Prefs/index.d.ts +1 -1
- package/dist/components/Prefs/index.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/Prefs/schema.d.ts +2 -2
- package/dist/components/Prefs/schema.d.ts.map +1 -1
- package/dist/components/Properties/PropertyField.d.ts +35 -32
- package/dist/components/Properties/PropertyField.d.ts.map +1 -1
- package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
- package/dist/components/Properties/PropertyPanel.d.ts +1 -8
- 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 +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/SelectionPanel.d.ts.map +1 -1
- package/dist/components/SelectionPanel/index.js +2 -2
- package/dist/components/SelectionPanel/renderLeaf.d.ts +17 -0
- package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
- package/dist/components/SidebarPanel/SidebarPanel.d.ts +1 -1
- package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
- package/dist/components/SidebarPanel/index.js +1 -1
- package/dist/components/Slider/Slider.d.ts +19 -2
- 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/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/ThemeSwitcher.d.ts +38 -0
- package/dist/components/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher/index.d.ts +3 -0
- package/dist/components/ThemeSwitcher/index.d.ts.map +1 -0
- package/dist/components/ThemeSwitcher/index.js +2 -0
- 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 +2 -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/components/Tree/index.js +1 -1
- package/dist/components/spin.d.ts +16 -0
- package/dist/components/spin.d.ts.map +1 -0
- package/dist/components/stanceSurfaces.d.ts.map +1 -1
- package/dist/icons/index.d.ts +51 -2
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/paths.d.ts +12 -0
- package/dist/icons/paths.d.ts.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -111
- 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/paintGradientTrack.d.ts +5 -2
- package/dist/paintGradientTrack.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/dist/useAsyncOptions.d.ts.map +1 -1
- package/dist/useReorderDragList.d.ts +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 -8
- package/dist/chunks/ActionBar-DCq16yFA.js +0 -57
- package/dist/chunks/ActionBar-DCq16yFA.js.map +0 -1
- package/dist/chunks/Badge-CyAIZSDo.js.map +0 -1
- package/dist/chunks/BandEditor-Dhm_Xrlr.js +0 -248
- package/dist/chunks/BandEditor-Dhm_Xrlr.js.map +0 -1
- package/dist/chunks/Callout-yEn9iPlh.js +0 -119
- package/dist/chunks/Callout-yEn9iPlh.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-BcMcW8Sa.js +0 -60
- package/dist/chunks/ColorField-BcMcW8Sa.js.map +0 -1
- package/dist/chunks/ComboBox-DpT8lc3p.js +0 -138
- package/dist/chunks/ComboBox-DpT8lc3p.js.map +0 -1
- package/dist/chunks/CurveEditor-BDJXjEvK.js.map +0 -1
- package/dist/chunks/DataGrid-D-dZj1BD.js.map +0 -1
- package/dist/chunks/DetailList-BMER1LUZ.js +0 -43
- package/dist/chunks/DetailList-BMER1LUZ.js.map +0 -1
- package/dist/chunks/Dialog-BWyNMgpf.js +0 -66
- package/dist/chunks/Dialog-BWyNMgpf.js.map +0 -1
- package/dist/chunks/Disclosure-0G0uh2fa.js.map +0 -1
- package/dist/chunks/DragHandleGlyph-Dr7Fgo0I.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-DXlMKWfK.js.map +0 -1
- package/dist/chunks/GradientEditor-B3a-MsVJ.js +0 -335
- package/dist/chunks/GradientEditor-B3a-MsVJ.js.map +0 -1
- package/dist/chunks/Icon-Cgzy8VgC.js.map +0 -1
- package/dist/chunks/InlineRange-eOj6JpJl.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-DESxZ44P.js.map +0 -1
- package/dist/chunks/Keycaps-C0H_v2gO.js.map +0 -1
- package/dist/chunks/LayerList-nz-QYvTF.js.map +0 -1
- package/dist/chunks/ListEditor-BQ6AV3Ac.js +0 -74
- package/dist/chunks/ListEditor-BQ6AV3Ac.js.map +0 -1
- package/dist/chunks/MenuButton-DtaGenKf.js +0 -70
- package/dist/chunks/MenuButton-DtaGenKf.js.map +0 -1
- package/dist/chunks/MeshEditor-qqGc6hlD.js +0 -87
- package/dist/chunks/MeshEditor-qqGc6hlD.js.map +0 -1
- package/dist/chunks/NumberField-CwJOMmQR.js +0 -117
- package/dist/chunks/NumberField-CwJOMmQR.js.map +0 -1
- package/dist/chunks/PaintField-DaJukRc6.js +0 -62
- package/dist/chunks/PaintField-DaJukRc6.js.map +0 -1
- package/dist/chunks/PaintInput-Byhna3H-.js +0 -131
- package/dist/chunks/PaintInput-Byhna3H-.js.map +0 -1
- package/dist/chunks/PatternPicker-B-cUt-JT.js +0 -93
- package/dist/chunks/PatternPicker-B-cUt-JT.js.map +0 -1
- package/dist/chunks/Plot2D-CTXHkL5p.js.map +0 -1
- package/dist/chunks/Prefs-DpqFKiwY.js.map +0 -1
- package/dist/chunks/Properties-D_KzDN9K.js.map +0 -1
- package/dist/chunks/PropertyField-DGCecAnV.js +0 -758
- package/dist/chunks/PropertyField-DGCecAnV.js.map +0 -1
- package/dist/chunks/RangeSlider-BKRRTPTZ.js.map +0 -1
- package/dist/chunks/ResizeHandle-BKT0XYpx.js +0 -79
- package/dist/chunks/ResizeHandle-BKT0XYpx.js.map +0 -1
- package/dist/chunks/Select-CzyfaXzp.js +0 -225
- package/dist/chunks/Select-CzyfaXzp.js.map +0 -1
- package/dist/chunks/SelectionPanel-BgUM1h03.js +0 -103
- package/dist/chunks/SelectionPanel-BgUM1h03.js.map +0 -1
- package/dist/chunks/SidebarPanel-aoIqxbtq.js +0 -55
- package/dist/chunks/SidebarPanel-aoIqxbtq.js.map +0 -1
- package/dist/chunks/Slider-CFwQYQ10.js +0 -383
- package/dist/chunks/Slider-CFwQYQ10.js.map +0 -1
- package/dist/chunks/StatusBar-DzoPDY4k.js.map +0 -1
- package/dist/chunks/SwatchGrid-BARC3rnF.js +0 -73
- package/dist/chunks/SwatchGrid-BARC3rnF.js.map +0 -1
- package/dist/chunks/Timeline--58F7MED.js.map +0 -1
- package/dist/chunks/Toast-DNBb-24H.js +0 -128
- package/dist/chunks/Toast-DNBb-24H.js.map +0 -1
- package/dist/chunks/ToggleBar-DTjGeS0Q.js.map +0 -1
- package/dist/chunks/TokenPanel-CMq7uydV.js.map +0 -1
- package/dist/chunks/ToolButton-CR4sQlxF.js.map +0 -1
- package/dist/chunks/ToolOptionsBar-CtzTlaN2.js.map +0 -1
- package/dist/chunks/ToolPalette-CKG9qY6P.js.map +0 -1
- package/dist/chunks/Tree-DVOtc9R5.js.map +0 -1
- package/dist/chunks/createKeyframeLayer-Czj6Y235.js.map +0 -1
- package/dist/chunks/icons-Dk8SRS8g.js.map +0 -1
- package/dist/chunks/model-Du7Lta4C.js +0 -360
- package/dist/chunks/model-Du7Lta4C.js.map +0 -1
- package/dist/chunks/number-D3NEx_8r.js +0 -89
- package/dist/chunks/number-D3NEx_8r.js.map +0 -1
- package/dist/chunks/portalHost-yTOVuCej.js.map +0 -1
- package/dist/chunks/prefField-Dnl7nmjQ.js +0 -197
- package/dist/chunks/prefField-Dnl7nmjQ.js.map +0 -1
- package/dist/chunks/segmentedControl.module-Bv7DEg8f.js +0 -11
- package/dist/chunks/segmentedControl.module-Bv7DEg8f.js.map +0 -1
- package/dist/chunks/useReorderDragList-B_-5L5Gu.js +0 -131
- package/dist/chunks/useReorderDragList-B_-5L5Gu.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
- package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts.map +0 -1
- package/dist/components/DragHandleGlyph/index.d.ts +0 -3
- package/dist/components/DragHandleGlyph/index.d.ts.map +0 -1
- package/dist/components/DragHandleGlyph/index.js +0 -2
- package/dist/format/number.d.ts +0 -56
- package/dist/format/number.d.ts.map +0 -1
- package/dist/icons/ShapeKindIcon.d.ts +0 -10
- package/dist/icons/ShapeKindIcon.d.ts.map +0 -1
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./Button-BIdXHQOx.js";
|
|
2
|
-
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect as r, useRef as i, useState as a } from "react";
|
|
4
|
-
var o = {
|
|
5
|
-
editor: "_editor_14hyz_1",
|
|
6
|
-
list: "_list_14hyz_8",
|
|
7
|
-
entry: "_entry_14hyz_17",
|
|
8
|
-
input: "_input_14hyz_23",
|
|
9
|
-
empty: "_empty_14hyz_42",
|
|
10
|
-
actions: "_actions_14hyz_48"
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
//#region src/components/ListEditor/ListEditor.tsx
|
|
14
|
-
function s({ value: s, onChange: c, placeholder: l, empty: u = "None", addLabel: d = "Add", "aria-label": f, className: p }) {
|
|
15
|
-
let m = i([]), [h, g] = a(null);
|
|
16
|
-
r(() => {
|
|
17
|
-
h !== null && (m.current[h]?.focus(), g(null));
|
|
18
|
-
}, [h]);
|
|
19
|
-
let _ = (e) => {
|
|
20
|
-
c([
|
|
21
|
-
...s.slice(0, e),
|
|
22
|
-
"",
|
|
23
|
-
...s.slice(e)
|
|
24
|
-
]), g(e);
|
|
25
|
-
}, v = (e) => {
|
|
26
|
-
c(s.filter((t, n) => n !== e)), s.length > 1 && g(Math.max(0, e - 1));
|
|
27
|
-
}, y = (e, t) => {
|
|
28
|
-
e.key === "Enter" ? (e.preventDefault(), _(t + 1)) : e.key === "Backspace" && s[t] === "" && (e.preventDefault(), v(t));
|
|
29
|
-
}, b = (e) => `${f ?? "Entry"} ${e + 1}`;
|
|
30
|
-
return /* @__PURE__ */ n("div", {
|
|
31
|
-
className: [o.editor, p].filter(Boolean).join(" "),
|
|
32
|
-
role: "group",
|
|
33
|
-
"aria-label": f,
|
|
34
|
-
children: [s.length === 0 ? /* @__PURE__ */ t("div", {
|
|
35
|
-
className: o.empty,
|
|
36
|
-
children: u
|
|
37
|
-
}) : /* @__PURE__ */ t("ul", {
|
|
38
|
-
className: o.list,
|
|
39
|
-
children: s.map((r, i) => /* @__PURE__ */ n("li", {
|
|
40
|
-
className: o.entry,
|
|
41
|
-
children: [/* @__PURE__ */ t("input", {
|
|
42
|
-
ref: (e) => {
|
|
43
|
-
m.current[i] = e;
|
|
44
|
-
},
|
|
45
|
-
type: "text",
|
|
46
|
-
className: o.input,
|
|
47
|
-
"aria-label": b(i),
|
|
48
|
-
value: r,
|
|
49
|
-
placeholder: l,
|
|
50
|
-
onChange: (e) => c(s.map((t, n) => n === i ? e.target.value : t)),
|
|
51
|
-
onKeyDown: (e) => y(e, i)
|
|
52
|
-
}), /* @__PURE__ */ t(e, {
|
|
53
|
-
variant: "ghost",
|
|
54
|
-
size: "sm",
|
|
55
|
-
iconOnly: !0,
|
|
56
|
-
ariaLabel: `Remove ${b(i)}`,
|
|
57
|
-
onClick: () => v(i),
|
|
58
|
-
children: "×"
|
|
59
|
-
})]
|
|
60
|
-
}, i))
|
|
61
|
-
}), /* @__PURE__ */ t("div", {
|
|
62
|
-
className: o.actions,
|
|
63
|
-
children: /* @__PURE__ */ t(e, {
|
|
64
|
-
size: "sm",
|
|
65
|
-
onClick: () => _(s.length),
|
|
66
|
-
children: d
|
|
67
|
-
})
|
|
68
|
-
})]
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
//#endregion
|
|
72
|
-
export { s as t };
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=ListEditor-BQ6AV3Ac.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListEditor-BQ6AV3Ac.js","names":["s","Button","ListEditor_module_default","ListEditor","ariaLabel","inputs","useRef","focus","setFocus","useState","insert","onChange","value","at","remove","i","onKeyDown","name","className","empty","el","entry","j","v","addLabel"],"sources":["../../src/components/ListEditor/ListEditor.module.css","../../src/components/ListEditor/ListEditor.tsx"],"sourcesContent":[".editor {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-4);\n min-width: min(28rem, calc(100vw - 64px));\n}\n\n.list {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.entry {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-2);\n}\n\n.input {\n flex: 1 1 auto;\n min-width: 0;\n height: var(--wzl-field-h, var(--wzl-control-h));\n padding: 0 var(--wzl-field-pad-x);\n background: var(--wzl-surface-sunken);\n color: var(--wzl-fg);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n}\n\n.input:focus {\n outline: none;\n border-color: var(--wzl-focus-ring);\n box-shadow: 0 0 0 1px var(--wzl-focus-ring);\n}\n\n.empty {\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-subtle);\n font-style: italic;\n}\n\n.actions {\n display: flex;\n}\n","import { useEffect, useRef, useState, type KeyboardEvent } from 'react';\nimport { Button } from '../Button';\nimport s from './ListEditor.module.css';\n\n/** Props for {@link ListEditor}. */\nexport interface ListEditorProps {\n value: readonly string[];\n /** Every edit, add and removal, with the whole list. Entries are written as\n * typed — an empty one stays until it is removed. */\n onChange: (next: string[]) => void;\n /** Shown in an empty entry. */\n placeholder?: string;\n /** Shown in place of the entries when there are none. */\n empty?: string;\n /** Text of the add button. */\n addLabel?: string;\n /** Names the list for assistive tech; each entry is named from it. */\n 'aria-label'?: string;\n className?: string;\n}\n\n/**\n * An editable list of strings: one field per entry, a remove button beside\n * each, and an add button under them. Enter in an entry adds one after it;\n * Backspace in an empty one removes it.\n */\nexport function ListEditor({\n value,\n onChange,\n placeholder,\n empty = 'None',\n addLabel = 'Add',\n 'aria-label': ariaLabel,\n className,\n}: ListEditorProps) {\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n const [focus, setFocus] = useState<number | null>(null);\n\n useEffect(() => {\n if (focus === null) return;\n inputs.current[focus]?.focus();\n setFocus(null);\n }, [focus]);\n\n const insert = (at: number): void => {\n onChange([...value.slice(0, at), '', ...value.slice(at)]);\n setFocus(at);\n };\n const remove = (at: number): void => {\n onChange(value.filter((_, i) => i !== at));\n if (value.length > 1) setFocus(Math.max(0, at - 1));\n };\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>, at: number): void => {\n if (e.key === 'Enter') {\n e.preventDefault();\n insert(at + 1);\n } else if (e.key === 'Backspace' && value[at] === '') {\n e.preventDefault();\n remove(at);\n }\n };\n const name = (i: number): string => `${ariaLabel ?? 'Entry'} ${i + 1}`;\n\n return (\n <div className={[s.editor, className].filter(Boolean).join(' ')} role=\"group\" aria-label={ariaLabel}>\n {value.length === 0 ? (\n <div className={s.empty}>{empty}</div>\n ) : (\n <ul className={s.list}>\n {value.map((entry, i) => (\n // Entries have no identity beyond their position, and two may be equal.\n <li key={i} className={s.entry}>\n <input\n ref={(el) => {\n inputs.current[i] = el;\n }}\n type=\"text\"\n className={s.input}\n aria-label={name(i)}\n value={entry}\n placeholder={placeholder}\n onChange={(e) => onChange(value.map((v, j) => (j === i ? e.target.value : v)))}\n onKeyDown={(e) => onKeyDown(e, i)}\n />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n ariaLabel={`Remove ${name(i)}`}\n onClick={() => remove(i)}\n >\n ×\n </Button>\n </li>\n ))}\n </ul>\n )}\n <div className={s.actions}>\n <Button size=\"sm\" onClick={() => insert(value.length)}>\n {addLabel}\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AC0BA,SAAgBG,EAAW,EACzB,UACA,aACA,gBACA,WAAQ,QACR,cAAW,OACX,cAAcC,GACd,gBACkB;CAClB,IAAMC,IAASC,EAAoC,CAAC,CAAC,GAC/C,CAACC,GAAOC,KAAYC,EAAwB,IAAI;CAEtD,QAAgB;EACd,AAAIF,MAAU,SACdF,EAAO,QAAQE,EAAM,EAAE,MAAM,GAC7BC,EAAS,IAAI;CACf,GAAG,CAACD,CAAK,CAAC;CAEV,IAAMG,KAAU,MAAqB;EAEnC,AADAC,EAAS;GAAC,GAAGC,EAAM,MAAM,GAAGC,CAAE;GAAG;GAAI,GAAGD,EAAM,MAAMC,CAAE;EAAC,CAAC,GACxDL,EAASK,CAAE;CACb,GACMC,KAAU,MAAqB;EAEnC,AADAH,EAASC,EAAM,QAAQ,GAAG,MAAMG,MAAMF,CAAE,CAAC,GACrCD,EAAM,SAAS,KAAGJ,EAAS,KAAK,IAAI,GAAGK,IAAK,CAAC,CAAC;CACpD,GACMG,KAAa,GAAoC,MAAqB;EAC1E,AAAI,EAAE,QAAQ,WACZ,EAAE,eAAe,GACjBN,EAAOG,IAAK,CAAC,KACJ,EAAE,QAAQ,eAAeD,EAAMC,OAAQ,OAChD,EAAE,eAAe,GACjBC,EAAOD,CAAE;CAEb,GACMI,KAAQ,MAAsB,GAAGb,KAAa,QAAQ,GAAGW,IAAI;CAEnE,OACE,kBAAC,OAAD;EAAK,WAAW,CAACf,EAAE,QAAQkB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAAG,MAAK;EAAQ,cAAYd;EAA1F,UAAA,CACGQ,EAAM,WAAW,IAChB,kBAAC,OAAD;GAAK,WAAWZ,EAAE;GAAQ,UAAAmB;EAAW,CAAA,IAErC,kBAAC,MAAD;GAAI,WAAWnB,EAAE;GACd,UAAAY,EAAM,KAAK,GAAO,MAEjB,kBAAC,MAAD;IAAY,WAAWZ,EAAE;IAAzB,UAAA,CACE,kBAAC,SAAD;KACE,MAAM,MAAO;MACX,EAAO,QAAQ,KAAKoB;KACtB;KACA,MAAK;KACL,WAAWpB,EAAE;KACb,cAAYiB,EAAK,CAAC;KAClB,OAAOI;KACM;KACb,WAAW,MAAMV,EAASC,EAAM,KAAK,GAAG,MAAOU,MAAM,IAAI,EAAE,OAAO,QAAQC,CAAE,CAAC;KAC7E,YAAY,MAAMP,EAAU,GAAG,CAAC;IACjC,CAAA,GACD,kBAACf,GAAD;KACE,SAAQ;KACR,MAAK;KACL,UAAA;KACA,WAAW,UAAUgB,EAAK,CAAC;KAC3B,eAAeH,EAAO,CAAC;KACxB,UAAA;IAEO,CAAA,CACN;GAtBK,GAAA,CAsBL,CACL;EACC,CAAA,GAEN,kBAAC,OAAD;GAAK,WAAWd,EAAE;GAChB,UAAA,kBAACC,GAAD;IAAQ,MAAK;IAAK,eAAeS,EAAOE,EAAM,MAAM;IACjD,UAAAY;GACK,CAAA;EACL,CAAA,CACF;;AAET"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { r as e } from "./portalHost-yTOVuCej.js";
|
|
2
|
-
import { n as t, r as n } from "./segmentTooltip-CStYHKzd.js";
|
|
3
|
-
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
import { Button as a, Menu as o, MenuItem as s, MenuTrigger as c, Popover as l } from "react-aria-components";
|
|
5
|
-
var u = {
|
|
6
|
-
trigger: "_trigger_1wmxr_1",
|
|
7
|
-
label: "_label_1wmxr_30",
|
|
8
|
-
chevron: "_chevron_1wmxr_34",
|
|
9
|
-
popover: "_popover_1wmxr_41",
|
|
10
|
-
menu: "_menu_1wmxr_47",
|
|
11
|
-
item: "_item_1wmxr_60"
|
|
12
|
-
};
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/components/MenuButton/MenuButton.tsx
|
|
15
|
-
function d({ label: d, items: f, onAction: p, isDisabled: m, className: h, "aria-label": g, portalContainer: _, shortcut: v, tooltip: y }) {
|
|
16
|
-
let { anchor: b, portalProps: x } = e(_);
|
|
17
|
-
return /* @__PURE__ */ i(c, { children: [
|
|
18
|
-
b,
|
|
19
|
-
/* @__PURE__ */ r(t, {
|
|
20
|
-
content: n({
|
|
21
|
-
tooltip: y,
|
|
22
|
-
shortcut: v,
|
|
23
|
-
ariaLabel: g,
|
|
24
|
-
label: d
|
|
25
|
-
}),
|
|
26
|
-
disabled: m,
|
|
27
|
-
children: /* @__PURE__ */ i(a, {
|
|
28
|
-
className: [u.trigger, h].filter(Boolean).join(" "),
|
|
29
|
-
isDisabled: m,
|
|
30
|
-
"aria-label": g,
|
|
31
|
-
children: [/* @__PURE__ */ r("span", {
|
|
32
|
-
className: u.label,
|
|
33
|
-
children: d
|
|
34
|
-
}), /* @__PURE__ */ r("svg", {
|
|
35
|
-
className: u.chevron,
|
|
36
|
-
viewBox: "0 0 10 10",
|
|
37
|
-
"aria-hidden": "true",
|
|
38
|
-
children: /* @__PURE__ */ r("path", {
|
|
39
|
-
d: "M2 4 L5 7 L8 4",
|
|
40
|
-
fill: "none",
|
|
41
|
-
stroke: "currentColor",
|
|
42
|
-
strokeWidth: "1.5",
|
|
43
|
-
strokeLinecap: "round",
|
|
44
|
-
strokeLinejoin: "round"
|
|
45
|
-
})
|
|
46
|
-
})]
|
|
47
|
-
})
|
|
48
|
-
}),
|
|
49
|
-
/* @__PURE__ */ r(l, {
|
|
50
|
-
className: u.popover,
|
|
51
|
-
"data-weasel-overlay": "",
|
|
52
|
-
...x,
|
|
53
|
-
children: /* @__PURE__ */ r(o, {
|
|
54
|
-
className: u.menu,
|
|
55
|
-
onAction: (e) => p(e),
|
|
56
|
-
children: f.map((e) => /* @__PURE__ */ r(s, {
|
|
57
|
-
id: e.value,
|
|
58
|
-
className: u.item,
|
|
59
|
-
isDisabled: e.isDisabled,
|
|
60
|
-
textValue: e.textValue ?? (typeof e.label == "string" ? e.label : void 0),
|
|
61
|
-
children: e.label
|
|
62
|
-
}, e.value))
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
] });
|
|
66
|
-
}
|
|
67
|
-
//#endregion
|
|
68
|
-
export { d as t };
|
|
69
|
-
|
|
70
|
-
//# sourceMappingURL=MenuButton-DtaGenKf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButton-DtaGenKf.js","names":["RACButton","s","RACPopover","RACMenu","RACMenuItem","useOverlayPortal","TriggerTooltip","segmentTooltipContent","MenuButton_module_default","MenuButton","ariaLabel","portalContainer","MenuTrigger","anchor","isDisabled","Button","className","label","Popover","portalProps","Menu","onAction","key","items","MenuItem","item"],"sources":["../../src/components/MenuButton/MenuButton.module.css","../../src/components/MenuButton/MenuButton.tsx"],"sourcesContent":[".trigger {\n display: inline-flex;\n flex: none;\n align-items: center;\n gap: var(--wzl-space-3);\n height: var(--wzl-control-h);\n padding: 0 var(--wzl-space-3) 0 var(--wzl-space-5);\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n color: var(--wzl-fg);\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n transition: border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);\n}\n\n.trigger[data-focus-visible] {\n border-color: var(--wzl-focus-ring);\n box-shadow: 0 0 0 1px var(--wzl-focus-ring);\n}\n\n.trigger[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.label {\n color: var(--wzl-fg-subtle);\n}\n\n.chevron {\n width: 10px;\n height: 10px;\n color: var(--wzl-fg-muted);\n flex: 0 0 auto;\n}\n\n.popover {\n min-width: var(--trigger-width);\n max-height: inherit;\n outline: none;\n}\n\n.menu {\n background: var(--wzl-surface-raised);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-md);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);\n padding: var(--wzl-space-2);\n max-height: 280px;\n overflow: auto;\n outline: none;\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n}\n\n.item {\n display: flex;\n align-items: center;\n padding: var(--wzl-space-2) var(--wzl-space-4);\n border-radius: var(--wzl-radius-sm);\n cursor: pointer;\n color: var(--wzl-fg);\n white-space: nowrap;\n outline: none;\n}\n\n.item[data-focused] {\n background: var(--wzl-surface-hover);\n}\n\n.item[data-disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n","import type { ReactNode } from 'react';\nimport {\n Button as RACButton,\n Menu as RACMenu,\n MenuItem as RACMenuItem,\n MenuTrigger,\n Popover as RACPopover,\n} from 'react-aria-components';\nimport { useOverlayPortal, type OverlayPortalProps } from '../../overlays/portalHost';\nimport s from './MenuButton.module.css';\nimport { TriggerTooltip, segmentTooltipContent, type SegmentTooltipFields } from '../segmentTooltip';\n\n/** One row in a {@link MenuButton}'s list. */\nexport type MenuButtonItem<T extends string = string> = {\n value: T;\n label: ReactNode;\n isDisabled?: boolean;\n /** Plain-text form of `label`, for type-to-select and screen readers. A\n * string label supplies this itself. */\n textValue?: string;\n};\n\n/** Props for {@link MenuButton}. */\nexport type MenuButtonProps<T extends string = string> = {\n /** What the button says. It never changes to show a chosen row. */\n label: ReactNode;\n items: ReadonlyArray<MenuButtonItem<T>>;\n /** Fired with the value of the row chosen. */\n onAction: (value: T) => void;\n isDisabled?: boolean;\n className?: string;\n 'aria-label'?: string;\n} & SegmentTooltipFields & OverlayPortalProps;\n\n/**\n * A button that opens a list and acts on the row chosen — \"Add trial…\",\n * \"Load…\". Unlike a {@link Select} it holds no value, so it sizes to its own\n * label rather than to its widest row.\n *\n * `shortcut` adds a kit tooltip reading `Name (⌘N)`, named by `aria-label` or\n * a string `label`, as `Button` does; `tooltip` replaces that text.\n */\nexport function MenuButton<T extends string = string>({\n label,\n items,\n onAction,\n isDisabled,\n className,\n 'aria-label': ariaLabel,\n portalContainer,\n shortcut,\n tooltip,\n}: MenuButtonProps<T>) {\n const { anchor, portalProps } = useOverlayPortal(portalContainer);\n return (\n <MenuTrigger>\n {anchor}\n <TriggerTooltip\n content={segmentTooltipContent({ tooltip, shortcut, ariaLabel, label })}\n disabled={isDisabled}\n >\n <RACButton\n className={[s.trigger, className].filter(Boolean).join(' ')}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n >\n <span className={s.label}>{label}</span>\n <svg className={s.chevron} viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M2 4 L5 7 L8 4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </RACButton>\n </TriggerTooltip>\n {/* `data-weasel-overlay`: see Select — the list renders in a portal,\n outside the subtree the trigger sits in. */}\n <RACPopover className={s.popover} data-weasel-overlay=\"\" {...portalProps}>\n <RACMenu className={s.menu} onAction={(key) => onAction(key as T)}>\n {items.map((item) => (\n <RACMenuItem\n key={item.value}\n id={item.value}\n className={s.item}\n isDisabled={item.isDisabled}\n textValue={item.textValue ?? (typeof item.label === 'string' ? item.label : undefined)}\n >\n {item.label}\n </RACMenuItem>\n ))}\n </RACMenu>\n </RACPopover>\n </MenuTrigger>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AC0CA,SAAgBS,EAAsC,EACpD,UACA,UACA,aACA,eACA,cACA,cAAcC,GACd,oBACA,aACA,cACqB;CACrB,IAAM,EAAE,WAAQ,mBAAgBL,EAAiBM,CAAe;CAChE,OACE,kBAACC,GAAD,EAAA,UAAA;EACGC;EACD,kBAACP,GAAD;GACE,SAASC,EAAsB;IAAE;IAAS;IAAU;IAAW;GAAM,CAAC;GACtE,UAAUO;GAEV,UAAA,kBAACd,GAAD;IACE,WAAW,CAACC,EAAE,SAASe,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;IAC9C;IACZ,cAAYN;IAHd,UAAA,CAKE,kBAAC,QAAD;KAAM,WAAWT,EAAE;KAAQ,UAAAgB;IAAY,CAAA,GACvC,kBAAC,OAAD;KAAK,WAAWhB,EAAE;KAAS,SAAQ;KAAY,eAAY;KACzD,UAAA,kBAAC,QAAD;MAAM,GAAE;MAAiB,MAAK;MAAO,QAAO;MAAe,aAAY;MAAM,eAAc;MAAQ,gBAAe;KAAS,CAAA;IACxH,CAAA,CACI;;EACG,CAAA;EAGhB,kBAACC,GAAD;GAAY,WAAWD,EAAE;GAAS,uBAAoB;GAAG,GAAIkB;GAC3D,UAAA,kBAAChB,GAAD;IAAS,WAAWF,EAAE;IAAM,WAAW,MAAQoB,EAASC,CAAQ;IAC7D,UAAAC,EAAM,KAAK,MACV,kBAACnB,GAAD;KAEE,IAAIqB,EAAK;KACT,WAAWxB,EAAE;KACb,YAAYwB,EAAK;KACjB,WAAWA,EAAK,cAAc,OAAOA,EAAK,SAAU,WAAWA,EAAK,QAAQ,KAAA;KAE3E,UAAAA,EAAK;IACK,GAPNA,EAAK,KAOC,CACd;GACM,CAAA;EACC,CAAA;CACD,EAAA,CAAA;AAEjB"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./ColorField-BcMcW8Sa.js";
|
|
2
|
-
import { t } from "./paintPreview-CuSZiHpR.js";
|
|
3
|
-
import { t as n } from "./ToggleBar-DTjGeS0Q.js";
|
|
4
|
-
import { asPaint as r, isMeshGradientFill as i } from "@weasel-js/core";
|
|
5
|
-
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
-
import "react";
|
|
7
|
-
var s = {
|
|
8
|
-
root: "_root_g12ri_1",
|
|
9
|
-
patch: "_patch_g12ri_7",
|
|
10
|
-
preview: "_preview_g12ri_13",
|
|
11
|
-
corners: "_corners_g12ri_21",
|
|
12
|
-
corner: "_corner_g12ri_21"
|
|
13
|
-
}, c = [
|
|
14
|
-
{
|
|
15
|
-
value: "rgb",
|
|
16
|
-
label: "sRGB"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
value: "oklab",
|
|
20
|
-
label: "OKLab"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
value: "oklch",
|
|
24
|
-
label: "OKLCh"
|
|
25
|
-
}
|
|
26
|
-
];
|
|
27
|
-
function l(t) {
|
|
28
|
-
let { value: i, onInput: l, onChange: d, spaceSwitch: f = !0, className: p } = t, m = i.interpolate ?? "rgb", h = (e, t, n) => r({
|
|
29
|
-
...i,
|
|
30
|
-
patches: i.patches.map((r, i) => {
|
|
31
|
-
if (i !== e) return r;
|
|
32
|
-
let [a, o, s, c] = r.colors, l = [
|
|
33
|
-
a,
|
|
34
|
-
o,
|
|
35
|
-
s,
|
|
36
|
-
c
|
|
37
|
-
];
|
|
38
|
-
return l[t] = n, {
|
|
39
|
-
...r,
|
|
40
|
-
colors: l
|
|
41
|
-
};
|
|
42
|
-
})
|
|
43
|
-
});
|
|
44
|
-
return /* @__PURE__ */ o("div", {
|
|
45
|
-
className: [s.root, p].filter(Boolean).join(" "),
|
|
46
|
-
children: [i.patches.map((t, n) => /* @__PURE__ */ o("div", {
|
|
47
|
-
className: s.patch,
|
|
48
|
-
children: [/* @__PURE__ */ a("span", {
|
|
49
|
-
className: s.preview,
|
|
50
|
-
"aria-hidden": "true",
|
|
51
|
-
style: { background: u(i, n) }
|
|
52
|
-
}), /* @__PURE__ */ a("div", {
|
|
53
|
-
className: s.corners,
|
|
54
|
-
children: t.colors.map((t, r) => /* @__PURE__ */ a(e, {
|
|
55
|
-
value: t,
|
|
56
|
-
alpha: !0,
|
|
57
|
-
"aria-label": `Patch ${n + 1} corner ${r + 1}`,
|
|
58
|
-
className: s.corner,
|
|
59
|
-
onInput: (e) => l?.(h(n, r, e)),
|
|
60
|
-
onChange: (e) => d(h(n, r, e))
|
|
61
|
-
}, r))
|
|
62
|
-
})]
|
|
63
|
-
}, n)), f && /* @__PURE__ */ a(n, {
|
|
64
|
-
items: c,
|
|
65
|
-
value: m,
|
|
66
|
-
size: "sm",
|
|
67
|
-
ariaLabel: "Blend space",
|
|
68
|
-
onChange: (e) => e && d(r({
|
|
69
|
-
...i,
|
|
70
|
-
interpolate: e
|
|
71
|
-
}))
|
|
72
|
-
})]
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function u(e, n) {
|
|
76
|
-
return t({
|
|
77
|
-
...e,
|
|
78
|
-
patches: [e.patches[n]]
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
function d(e) {
|
|
82
|
-
return i(e);
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
export { d as n, l as t };
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=MeshEditor-qqGc6hlD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MeshEditor-qqGc6hlD.js","names":["s","ColorField","ToggleBar","MeshEditor_module_default","SPACES","MeshEditor","props","space","value","withCorner","asPaint","patchIndex","patch","b","c","d","next","corner","color","className","previewOf","onInput","onChange","spaceSwitch","paintPreviewCss","isMeshPaint","isMeshGradientFill","fill"],"sources":["../../src/components/MeshEditor/MeshEditor.module.css","../../src/components/MeshEditor/MeshEditor.tsx"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-4);\n}\n\n.patch {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-4);\n}\n\n.preview {\n inline-size: 34px;\n block-size: 34px;\n flex: 0 0 auto;\n border-radius: var(--wzl-radius-sm);\n box-shadow: inset 0 0 0 1px var(--wzl-border);\n}\n\n.corners {\n display: grid;\n grid-template-columns: repeat(2, auto);\n gap: var(--wzl-space-2) var(--wzl-space-3);\n min-inline-size: 0;\n}\n\n.corner {\n min-inline-size: 0;\n}\n","import { type ReactElement } from 'react';\nimport {\n asPaint,\n isMeshGradientFill,\n type ColorSpace,\n type FillStyle,\n type MeshGradientFill,\n} from '@weasel-js/core';\nimport { ColorField } from '../ColorField';\nimport { ToggleBar, type ToggleBarItem } from '../ToggleBar';\nimport { paintPreviewCss } from '../../paintPreview';\nimport s from './MeshEditor.module.css';\n\nconst SPACES: readonly ToggleBarItem<ColorSpace>[] = [\n { value: 'rgb', label: 'sRGB' },\n { value: 'oklab', label: 'OKLab' },\n { value: 'oklch', label: 'OKLCh' },\n];\n\n/** Props for {@link MeshEditor}. `onInput` fires throughout a gesture and\n * `onChange` once at its end. */\nexport interface MeshEditorProps {\n value: MeshGradientFill;\n /** Emitted as a `FillStyle`, which is what every paint control passes\n * around — `FillStyle`'s discriminant stays closed over the built-in\n * members, so a registered kind's own shape only travels through it. */\n onInput?: (next: FillStyle) => void;\n onChange: (next: FillStyle) => void;\n /** Show the sRGB / OKLab / OKLCh switch. Default true. */\n spaceSwitch?: boolean;\n className?: string;\n}\n\n/**\n * Editor for a mesh gradient's colors.\n *\n * Geometry is absent for the same reason it is absent from `GradientEditor`:\n * a patch's twelve control points are a thing to drag on the artwork, not a\n * column of numbers in a panel. What is left is what a panel is good at — the\n * color at each corner, and the space the four of them blend through.\n *\n * Corners are numbered in the patch's own walk order, which is the order the\n * paint stores them in, so a corner's number is stable while it is dragged.\n */\nexport function MeshEditor(props: MeshEditorProps): ReactElement {\n const { value, onInput, onChange, spaceSwitch = true, className } = props;\n const space = value.interpolate ?? 'rgb';\n\n const withCorner = (patchIndex: number, corner: number, color: string): FillStyle => asPaint({\n ...value,\n patches: value.patches.map((patch, i) => {\n if (i !== patchIndex) return patch;\n const [a, b, c, d] = patch.colors;\n const next: [string, string, string, string] = [a, b, c, d];\n next[corner] = color;\n return { ...patch, colors: next };\n }),\n });\n\n return (\n <div className={[s.root, className].filter(Boolean).join(' ')}>\n {value.patches.map((patch, patchIndex) => (\n // A patch has no id; its position in the list is its identity, the way\n // a gradient stop's is.\n <div key={patchIndex} className={s.patch}>\n <span\n className={s.preview}\n aria-hidden=\"true\"\n style={{ background: previewOf(value, patchIndex) }}\n />\n <div className={s.corners}>\n {patch.colors.map((color, corner) => (\n <ColorField\n key={corner}\n value={color}\n alpha\n aria-label={`Patch ${patchIndex + 1} corner ${corner + 1}`}\n className={s.corner}\n onInput={(next) => onInput?.(withCorner(patchIndex, corner, next))}\n onChange={(next) => onChange(withCorner(patchIndex, corner, next))}\n />\n ))}\n </div>\n </div>\n ))}\n\n {spaceSwitch && (\n <ToggleBar<ColorSpace>\n items={SPACES}\n value={space}\n size=\"sm\"\n ariaLabel=\"Blend space\"\n onChange={(next) => next && onChange(asPaint({ ...value, interpolate: next }))}\n />\n )}\n </div>\n );\n}\n\n/** One patch as a swatch: the paint with the other patches taken out, so a\n * multi-patch mesh shows which row belongs to which part of it. */\nfunction previewOf(value: MeshGradientFill, patchIndex: number): string | undefined {\n return paintPreviewCss(\n { ...value, patches: [value.patches[patchIndex]] } as unknown as FillStyle,\n );\n}\n\n/** Narrowing for a consumer rendering this behind a kind switch. */\nexport function isMeshPaint(fill: FillStyle | null | undefined): fill is FillStyle & MeshGradientFill {\n return isMeshGradientFill(fill);\n}\n"],"mappings":";;;;;;;;;;;;GCaMI,IAA+C;CACnD;EAAE,OAAO;EAAO,OAAO;CAAO;CAC9B;EAAE,OAAO;EAAS,OAAO;CAAQ;CACjC;EAAE,OAAO;EAAS,OAAO;CAAQ;AACnC;AA2BA,SAAgBC,EAAW,GAAsC;CAC/D,IAAM,EAAE,UAAO,YAAS,aAAU,iBAAc,IAAM,iBAAcC,GAC9DC,IAAQC,EAAM,eAAe,OAE7BC,KAAc,GAAoB,GAAgB,MAA6BC,EAAQ;EAC3F,GAAGF;EACH,SAASA,EAAM,QAAQ,KAAK,GAAO,MAAM;GACvC,IAAI,MAAMG,GAAY,OAAOC;GAC7B,IAAM,CAAC,GAAGC,GAAGC,GAAGC,KAAKH,EAAM,QACrBI,IAAyC;IAAC;IAAGH;IAAGC;IAAGC;GAAC;GAE1D,OADA,EAAKE,KAAUC,GACR;IAAE,GAAGN;IAAO,QAAQI;GAAK;EAClC,CAAC;CACH,CAAC;CAED,OACE,kBAAC,OAAD;EAAK,WAAW,CAAChB,EAAE,MAAMmB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAA5D,UAAA,CACGX,EAAM,QAAQ,KAAK,GAAO,MAGzB,kBAAC,OAAD;GAAsB,WAAWR,EAAE;GAAnC,UAAA,CACE,kBAAC,QAAD;IACE,WAAWA,EAAE;IACb,eAAY;IACZ,OAAO,EAAE,YAAYoB,EAAUZ,GAAOG,CAAU,EAAE;GACnD,CAAA,GACD,kBAAC,OAAD;IAAK,WAAWX,EAAE;IACf,UAAAY,EAAM,OAAO,KAAK,GAAO,MACxB,kBAACX,GAAD;KAEE,OAAOiB;KACP,OAAA;KACA,cAAY,SAASP,IAAa,EAAE,UAAUM,IAAS;KACvD,WAAWjB,EAAE;KACb,UAAU,MAASqB,IAAUZ,EAAWE,GAAYM,GAAQD,CAAI,CAAC;KACjE,WAAW,MAASM,EAASb,EAAWE,GAAYM,GAAQD,CAAI,CAAC;IAClE,GAPMC,CAON,CACF;GACE,CAAA,CACF;EAnBK,GAAAN,CAmBL,CACN,GAEAY,KACC,kBAACrB,GAAD;GACE,OAAOE;GACP,OAAOG;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAASS,KAAQM,EAASZ,EAAQ;IAAE,GAAGF;IAAO,aAAaQ;GAAK,CAAC,CAAC;EAC9E,CAAA,CAEA;;AAET;AAIA,SAASI,EAAU,GAAyB,GAAwC;CAClF,OAAOI,EACL;EAAE,GAAGhB;EAAO,SAAS,CAACA,EAAM,QAAQG,EAAW;CAAE,CACnD;AACF;AAGA,SAAgBc,EAAY,GAA0E;CACpG,OAAOC,EAAmBC,CAAI;AAChC"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { a as e, r as t } from "./number-D3NEx_8r.js";
|
|
2
|
-
import { n } from "./Field--onYxXTF.js";
|
|
3
|
-
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
import { forwardRef as a, useRef as o, useState as s } from "react";
|
|
5
|
-
import { Button as c, FieldError as l, Group as u, Input as d, Label as f, NumberField as p, Text as m } from "react-aria-components";
|
|
6
|
-
var h = {
|
|
7
|
-
field: "_field_1v3hc_1",
|
|
8
|
-
row: "_row_1v3hc_12",
|
|
9
|
-
label: "_label_1v3hc_19",
|
|
10
|
-
fit: "_fit_1v3hc_20",
|
|
11
|
-
frame: "_frame_1v3hc_20",
|
|
12
|
-
below: "_below_1v3hc_22",
|
|
13
|
-
steppers: "_steppers_1v3hc_72",
|
|
14
|
-
stepper: "_stepper_1v3hc_72",
|
|
15
|
-
ghost: "_ghost_1v3hc_113"
|
|
16
|
-
}, g = a(function(e, t) {
|
|
17
|
-
let { label: a, orientation: o = "stacked", description: s, errorMessage: g, hideSteppers: _, ghost: v, placeholder: y, width: b = "fill", className: x, ...S } = e;
|
|
18
|
-
return /* @__PURE__ */ i(p, {
|
|
19
|
-
...S,
|
|
20
|
-
className: [
|
|
21
|
-
h.field,
|
|
22
|
-
b === "fit" && h.fit,
|
|
23
|
-
n.root,
|
|
24
|
-
o === "row" && n.row,
|
|
25
|
-
o === "row" && h.row,
|
|
26
|
-
x
|
|
27
|
-
].filter(Boolean).join(" "),
|
|
28
|
-
children: [
|
|
29
|
-
a !== void 0 && /* @__PURE__ */ r(f, {
|
|
30
|
-
className: `${n.label} ${h.label}`,
|
|
31
|
-
children: a
|
|
32
|
-
}),
|
|
33
|
-
/* @__PURE__ */ i(u, {
|
|
34
|
-
className: v ? `${h.frame} ${h.ghost}` : h.frame,
|
|
35
|
-
children: [/* @__PURE__ */ r(d, {
|
|
36
|
-
ref: t,
|
|
37
|
-
placeholder: y
|
|
38
|
-
}), !_ && /* @__PURE__ */ i("div", {
|
|
39
|
-
className: h.steppers,
|
|
40
|
-
children: [/* @__PURE__ */ r(c, {
|
|
41
|
-
slot: "increment",
|
|
42
|
-
className: h.stepper,
|
|
43
|
-
"aria-label": "Increment",
|
|
44
|
-
children: "▲"
|
|
45
|
-
}), /* @__PURE__ */ r(c, {
|
|
46
|
-
slot: "decrement",
|
|
47
|
-
className: h.stepper,
|
|
48
|
-
"aria-label": "Decrement",
|
|
49
|
-
children: "▼"
|
|
50
|
-
})]
|
|
51
|
-
})]
|
|
52
|
-
}),
|
|
53
|
-
s !== void 0 && /* @__PURE__ */ r(m, {
|
|
54
|
-
slot: "description",
|
|
55
|
-
className: `${n.hint} ${h.below}`,
|
|
56
|
-
children: s
|
|
57
|
-
}),
|
|
58
|
-
/* @__PURE__ */ r(l, {
|
|
59
|
-
className: `${n.error} ${h.below}`,
|
|
60
|
-
children: g
|
|
61
|
-
})
|
|
62
|
-
]
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
//#endregion
|
|
66
|
-
//#region src/components/NumberField/UnitField.tsx
|
|
67
|
-
function _({ value: i, onChange: a, minValue: c, maxValue: l, step: u = 1, accepts: d, placeholder: f, ghost: p, width: m = "fill", className: g, "aria-label": _ }) {
|
|
68
|
-
let [v, y] = s(null), b = o(!1), x = Number.isFinite(i) ? t(i, {
|
|
69
|
-
useGrouping: !1,
|
|
70
|
-
maximumFractionDigits: 20
|
|
71
|
-
}) : "", S = (e) => Math.min(l ?? Infinity, Math.max(c ?? -Infinity, e)), C = (e) => {
|
|
72
|
-
let t = S(e);
|
|
73
|
-
t !== i && a(t);
|
|
74
|
-
};
|
|
75
|
-
return /* @__PURE__ */ r("div", {
|
|
76
|
-
className: [
|
|
77
|
-
h.field,
|
|
78
|
-
m === "fit" && h.fit,
|
|
79
|
-
n.root,
|
|
80
|
-
g
|
|
81
|
-
].filter(Boolean).join(" "),
|
|
82
|
-
children: /* @__PURE__ */ r("div", {
|
|
83
|
-
className: p ? `${h.frame} ${h.ghost}` : h.frame,
|
|
84
|
-
children: /* @__PURE__ */ r("input", {
|
|
85
|
-
type: "text",
|
|
86
|
-
inputMode: "decimal",
|
|
87
|
-
"aria-label": _,
|
|
88
|
-
placeholder: f,
|
|
89
|
-
value: v ?? x,
|
|
90
|
-
onChange: (e) => y(e.target.value),
|
|
91
|
-
onFocus: () => {
|
|
92
|
-
b.current = !1;
|
|
93
|
-
},
|
|
94
|
-
onBlur: () => {
|
|
95
|
-
if (v !== null && !b.current) {
|
|
96
|
-
let t = e(v, d);
|
|
97
|
-
Number.isFinite(t) && C(t);
|
|
98
|
-
}
|
|
99
|
-
y(null);
|
|
100
|
-
},
|
|
101
|
-
onKeyDown: (t) => {
|
|
102
|
-
if (t.key === "Enter") t.currentTarget.blur();
|
|
103
|
-
else if (t.key === "Escape") b.current = !0, t.currentTarget.blur();
|
|
104
|
-
else if (t.key === "ArrowUp" || t.key === "ArrowDown") {
|
|
105
|
-
t.preventDefault();
|
|
106
|
-
let n = v === null ? i : e(v, d), r = S((Number.isFinite(n) ? n : 0) + (t.key === "ArrowUp" ? u : -u));
|
|
107
|
-
y(null), r !== i && a(r);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
})
|
|
111
|
-
})
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
//#endregion
|
|
115
|
-
export { g as n, _ as t };
|
|
116
|
-
|
|
117
|
-
//# sourceMappingURL=NumberField-CwJOMmQR.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NumberField-CwJOMmQR.js","names":["NumberField","RACNumberField","s","RACInput","RACButton","s","parseNumber","formatNumber","NumberField_module_default","NumberField$1","forwardRef","rest","props","NumberField","width","fieldClasses","orientation","className","label","Label","Group","ghost","Input","hideSteppers","Button","description","Text","FieldError","errorMessage","UnitField","ariaLabel","draft","setDraft","useState","canceled","useRef","text","value","clamp","maxValue","minValue","n","commit","next","onChange","accepts","e","typed","step"],"sources":["../../src/components/NumberField/NumberField.module.css","../../src/components/NumberField/NumberField.tsx","../../src/components/NumberField/UnitField.tsx"],"sourcesContent":[".field {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n gap: var(--wzl-space-2);\n}\n\n/* `orientation='row'`: the label keeps its own width and the field takes the\n rest; description and error wrap onto a line of their own. A `fit` field\n keeps its own width and centers on the label instead. */\n.field.row {\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n column-gap: var(--wzl-space-4);\n row-gap: var(--wzl-space-2);\n}\n.field.row .label { flex: 0 0 auto; }\n.field.row:not(.fit) .frame { flex: 1 1 0; min-width: 0; }\n.field.row.fit { align-items: center; }\n.field.row .below { flex-basis: 100%; }\n\n.frame {\n display: flex;\n align-items: stretch;\n height: var(--wzl-field-h, var(--wzl-control-h));\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n color: var(--wzl-fg);\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n line-height: 1;\n overflow: hidden;\n transition: border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);\n}\n\n.frame:focus-within {\n border-color: var(--wzl-focus-ring);\n box-shadow: 0 0 0 1px var(--wzl-focus-ring);\n}\n\n.field[data-invalid] .frame {\n border-color: var(--wzl-danger);\n}\n\n.field[data-disabled] .frame {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.frame input {\n flex: 1;\n min-width: 0;\n background: transparent;\n border: none;\n outline: none;\n color: inherit;\n font: inherit;\n padding: 0 var(--wzl-field-pad-x);\n text-align: right;\n -moz-appearance: textfield;\n}\n\n.frame input::-webkit-outer-spin-button,\n.frame input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.steppers {\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--wzl-border);\n}\n\n.stepper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wzl-control-h-xs);\n flex: 1;\n background: transparent;\n border: none;\n color: var(--wzl-fg-muted);\n cursor: pointer;\n padding: 0;\n font-size: var(--wzl-font-size-2xs);\n line-height: 1;\n}\n\n.stepper:not(:last-child) {\n border-bottom: 1px solid var(--wzl-border);\n}\n\n.stepper[data-hovered]:not([data-disabled]) {\n background: var(--wzl-surface-hover);\n color: var(--wzl-fg);\n}\n\n.stepper[data-pressed]:not([data-disabled]) {\n background: var(--wzl-surface-pressed);\n}\n\n.stepper[data-disabled] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Mirrors the property rows' editable readout (`.readoutInput`), so a number\n sitting inside other chrome does not draw a second box around itself. */\n.ghost {\n height: auto;\n background: transparent;\n border-color: transparent;\n color: var(--wzl-accent-fg);\n font-weight: var(--wzl-font-weight-medium);\n}\n\n.ghost input {\n padding: 1px 0;\n}\n\n.ghost:hover {\n background: color-mix(in srgb, currentColor 8%, transparent);\n}\n\n.ghost:focus-within {\n background: var(--wzl-surface-sunken);\n border-color: var(--wzl-focus-ring);\n box-shadow: none;\n}\n\n/* `width='fit'` states the field's width in characters: left alone an `<input>`\n asks for its 20-character intrinsic width, wider than most rows it sits in. */\n.fit {\n width: auto;\n max-width: 100%;\n align-items: flex-start;\n}\n\n.fit .frame {\n width: fit-content;\n max-width: 100%;\n}\n\n.fit .frame input {\n flex: 0 0 auto;\n width: var(--wzl-number-field-width, 9ch);\n}\n","import { forwardRef, type ReactNode, type Ref } from 'react';\nimport {\n NumberField as RACNumberField,\n Label,\n Input as RACInput,\n Group,\n Button as RACButton,\n Text,\n FieldError,\n type NumberFieldProps as RACNumberFieldProps,\n type ValidationResult,\n} from 'react-aria-components';\nimport { fieldClasses, type FieldOrientation } from '../Field/Field';\nimport s from './NumberField.module.css';\n\n/** Props for {@link NumberField}, on top of React Aria's `NumberField` props. */\nexport type NumberFieldProps = Omit<RACNumberFieldProps, 'children' | 'className'> & {\n label?: ReactNode;\n /**\n * `'stacked'` (the default) puts the label above the field; `'row'` sets it\n * beside the field at its own width, with any description or error on a\n * line below. Same vocabulary as {@link Field}'s `orientation`.\n */\n orientation?: FieldOrientation;\n description?: ReactNode;\n errorMessage?: ReactNode | ((v: ValidationResult) => ReactNode);\n /** Hide the up/down stepper buttons. Defaults to false. */\n hideSteppers?: boolean;\n /** Render with no box until focused — the readout treatment the property\n * rows use, for a value that sits inside other chrome rather than in a form. */\n ghost?: boolean;\n /** Native input placeholder — e.g. `'Mixed'` for a multi-selection\n * editor with no shared value. */\n placeholder?: string;\n /**\n * `'fill'` (the default) takes the width of whatever row the field sits in.\n * `'fit'` sizes it to `--wzl-number-field-width` (`9ch` by default) plus its\n * own chrome, rather than to the input's 20-character intrinsic width.\n */\n width?: 'fill' | 'fit';\n className?: string;\n};\n\n/**\n * Numeric input with stepper buttons, wrapping React Aria's NumberField and\n * supplying the same label / description / errorMessage slots as `Input`.\n * Arrow keys and scroll step the value; parsing and formatting are React\n * Aria's.\n *\n * `ref` forwards to the underlying `<input>`.\n */\nexport const NumberField = forwardRef(function NumberField(\n props: NumberFieldProps,\n ref: Ref<HTMLInputElement>,\n) {\n const {\n label,\n orientation = 'stacked',\n description,\n errorMessage,\n hideSteppers,\n ghost,\n placeholder,\n width = 'fill',\n className,\n ...rest\n } = props;\n return (\n <RACNumberField\n {...rest}\n className={[\n s.field,\n width === 'fit' && s.fit,\n fieldClasses.root,\n orientation === 'row' && fieldClasses.row,\n orientation === 'row' && s.row,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {label !== undefined && <Label className={`${fieldClasses.label} ${s.label}`}>{label}</Label>}\n <Group className={ghost ? `${s.frame} ${s.ghost}` : s.frame}>\n <RACInput ref={ref} placeholder={placeholder} />\n {!hideSteppers && (\n <div className={s.steppers}>\n <RACButton slot=\"increment\" className={s.stepper} aria-label=\"Increment\">▲</RACButton>\n <RACButton slot=\"decrement\" className={s.stepper} aria-label=\"Decrement\">▼</RACButton>\n </div>\n )}\n </Group>\n {description !== undefined && (\n <Text slot=\"description\" className={`${fieldClasses.hint} ${s.below}`}>\n {description}\n </Text>\n )}\n <FieldError className={`${fieldClasses.error} ${s.below}`}>{errorMessage}</FieldError>\n </RACNumberField>\n );\n});\n","import { useRef, useState } from 'react';\nimport { formatNumber, parseNumber, type UnitTable } from '../../format/number';\nimport { fieldClasses } from '../Field/Field';\nimport s from './NumberField.module.css';\n\n/** Props for {@link UnitField}. */\nexport interface UnitFieldProps {\n /** The value in the unit the field shows. NaN shows an empty field. */\n value: number;\n /** Fired with a value the field read and clamped, in the unit it shows. */\n onChange: (value: number) => void;\n minValue?: number;\n maxValue?: number;\n /** What an arrow key adds or takes away. Defaults to 1. */\n step?: number;\n /** Units a person may type, each mapped to the factor that turns a number\n * in it into the unit the field shows: `{ mm: 0.1, cm: 1 }`. */\n accepts?: Readonly<UnitTable>;\n placeholder?: string;\n /** Render with no box until focused, as {@link NumberField}'s `ghost` does. */\n ghost?: boolean;\n /** As {@link NumberField}'s `width`. */\n width?: 'fill' | 'fit';\n className?: string;\n 'aria-label'?: string;\n}\n\n/**\n * A number typed as text, so it can carry a unit: `12mm` in a field showing\n * centimeters commits `1.2`. Commits on blur or Enter, reverts on Escape or on\n * text it cannot read, clamps to its bounds, and steps with the arrow keys.\n * React Aria's `NumberField` refuses letters as they are typed, which is why\n * this is not that.\n */\nexport function UnitField({\n value,\n onChange,\n minValue,\n maxValue,\n step = 1,\n accepts,\n placeholder,\n ghost,\n width = 'fill',\n className,\n 'aria-label': ariaLabel,\n}: UnitFieldProps) {\n const [draft, setDraft] = useState<string | null>(null);\n const canceled = useRef(false);\n const text = Number.isFinite(value)\n ? formatNumber(value, { useGrouping: false, maximumFractionDigits: 20 })\n : '';\n const clamp = (n: number) =>\n Math.min(maxValue ?? Infinity, Math.max(minValue ?? -Infinity, n));\n const commit = (n: number) => {\n const next = clamp(n);\n if (next !== value) onChange(next);\n };\n\n return (\n <div\n className={[s.field, width === 'fit' && s.fit, fieldClasses.root, className]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={ghost ? `${s.frame} ${s.ghost}` : s.frame}>\n <input\n type=\"text\"\n inputMode=\"decimal\"\n aria-label={ariaLabel}\n placeholder={placeholder}\n value={draft ?? text}\n onChange={(e) => setDraft(e.target.value)}\n onFocus={() => {\n canceled.current = false;\n }}\n onBlur={() => {\n if (draft !== null && !canceled.current) {\n const n = parseNumber(draft, accepts);\n if (Number.isFinite(n)) commit(n);\n }\n setDraft(null);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur();\n } else if (e.key === 'Escape') {\n canceled.current = true;\n e.currentTarget.blur();\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const typed = draft === null ? value : parseNumber(draft, accepts);\n const from = Number.isFinite(typed) ? typed : 0;\n const next = clamp(from + (e.key === 'ArrowUp' ? step : -step));\n setDraft(null);\n if (next !== value) onChange(next);\n }\n }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;GCmDaA,IAAcU,EAAW,SACpC,GACA,GACA;CACA,IAAM,EACJ,UACA,iBAAc,WACd,gBACA,iBACA,iBACA,UACA,gBACA,WAAQ,QACR,cACA,GAAGC,MACDC;CACJ,OACE,kBAACX,GAAD;EACE,GAAIU;EACJ,WAAW;GACTT,EAAE;GACFY,MAAU,SAASZ,EAAE;GACrBa,EAAa;GACbC,MAAgB,SAASD,EAAa;GACtCC,MAAgB,SAASd,EAAE;GAC3Be;EACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;EAXb,UAAA;GAaGC,MAAU,KAAA,KAAa,kBAACC,GAAD;IAAO,WAAW,GAAGJ,EAAa,MAAM,GAAGb,EAAE;IAAU,UAAAgB;GAAa,CAAA;GAC5F,kBAACE,GAAD;IAAO,WAAWC,IAAQ,GAAGnB,EAAE,MAAM,GAAGA,EAAE,UAAUA,EAAE;IAAtD,UAAA,CACE,kBAACC,GAAD;KAAe;KAAkB;IAAc,CAAA,GAC9C,CAACoB,KACA,kBAAC,OAAD;KAAK,WAAWrB,EAAE;KAAlB,UAAA,CACE,kBAACE,GAAD;MAAW,MAAK;MAAY,WAAWF,EAAE;MAAS,cAAW;MAAY,UAAA;KAAY,CAAA,GACrF,kBAACE,GAAD;MAAW,MAAK;MAAY,WAAWF,EAAE;MAAS,cAAW;MAAY,UAAA;KAAY,CAAA,CAClF;IAEF,CAAA,CAAA;;GACNuB,MAAgB,KAAA,KACf,kBAACC,GAAD;IAAM,MAAK;IAAc,WAAW,GAAGX,EAAa,KAAK,GAAGb,EAAE;IAC3D,UAAAuB;GACG,CAAA;GAER,kBAACE,GAAD;IAAY,WAAW,GAAGZ,EAAa,MAAM,GAAGb,EAAE;IAAU,UAAA0B;GAAyB,CAAA;EACvE;;AAEpB,CAAC;;;ACjED,SAAgBC,EAAU,EACxB,UACA,aACA,aACA,aACA,UAAO,GACP,YACA,gBACA,UACA,WAAQ,QACR,cACA,cAAcC,KACG;CACjB,IAAM,CAACC,GAAOC,KAAYC,EAAwB,IAAI,GAChDC,IAAWC,EAAO,EAAK,GACvBC,IAAO,OAAO,SAASC,CAAK,IAC9B9B,EAAa8B,GAAO;EAAE,aAAa;EAAO,uBAAuB;CAAG,CAAC,IACrE,IACEC,KAAS,MACb,KAAK,IAAIC,KAAY,UAAU,KAAK,IAAIC,KAAY,WAAWC,CAAC,CAAC,GAC7DC,KAAU,MAAc;EAC5B,IAAMC,IAAOL,EAAMG,CAAC;EACpB,AAAIE,MAASN,KAAOO,EAASD,CAAI;CACnC;CAEA,OACE,kBAAC,OAAD;EACE,WAAW;GAACtC,EAAE;GAAOS,MAAU,SAAST,EAAE;GAAKU,EAAa;GAAME;EAAS,CAAC,CACzE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;EAEX,UAAA,kBAAC,OAAD;GAAK,WAAWI,IAAQ,GAAGhB,EAAE,MAAM,GAAGA,EAAE,UAAUA,EAAE;GAClD,UAAA,kBAAC,SAAD;IACE,MAAK;IACL,WAAU;IACV,cAAYyB;IACC;IACb,OAAOC,KAASK;IAChB,WAAW,MAAMJ,EAAS,EAAE,OAAO,KAAK;IACxC,eAAe;KACb,EAAS,UAAU;IACrB;IACA,cAAc;KACZ,IAAID,MAAU,QAAQ,CAACG,EAAS,SAAS;MACvC,IAAMO,IAAInC,EAAYyB,GAAOc,CAAO;MACpC,AAAI,OAAO,SAASJ,CAAC,KAAGC,EAAOD,CAAC;KAClC;KACA,EAAS,IAAI;IACf;IACA,YAAY,MAAM;KAChB,IAAIK,EAAE,QAAQ,SACZ,EAAE,cAAc,KAAK;UAChB,IAAIA,EAAE,QAAQ,UAEnB,AADA,EAAS,UAAU,IACnBA,EAAE,cAAc,KAAK;UAChB,IAAIA,EAAE,QAAQ,aAAaA,EAAE,QAAQ,aAAa;MACvD,EAAE,eAAe;MACjB,IAAMC,IAAQhB,MAAU,OAAOM,IAAQ/B,EAAYyB,GAAOc,CAAO,GAE3DF,IAAOL,GADA,OAAO,SAASS,CAAK,IAAIA,IAAQ,MACnBD,EAAE,QAAQ,YAAYE,IAAO,CAACA,EAAK;MAE9D,AADAhB,EAAS,IAAI,GACTW,MAASN,KAAOO,EAASD,CAAI;KACnC;IACF;GACD,CAAA;EACE,CAAA;CACF,CAAA;AAET"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { r as e } from "./portalHost-yTOVuCej.js";
|
|
2
|
-
import { t } from "./paintPreview-CuSZiHpR.js";
|
|
3
|
-
import { t as n } from "./PaintInput-Byhna3H-.js";
|
|
4
|
-
import { getPaintKind as r } from "@weasel-js/core";
|
|
5
|
-
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
|
-
import "react";
|
|
7
|
-
import { Button as o, Dialog as s, DialogTrigger as c, Popover as l } from "react-aria-components";
|
|
8
|
-
var u = {
|
|
9
|
-
trigger: "_trigger_1p91w_1",
|
|
10
|
-
swatch: "_swatch_1p91w_27",
|
|
11
|
-
label: "_label_1p91w_48",
|
|
12
|
-
popover: "_popover_1p91w_57",
|
|
13
|
-
body: "_body_1p91w_61"
|
|
14
|
-
};
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/components/PaintField/PaintField.tsx
|
|
17
|
-
function d(e, t) {
|
|
18
|
-
return t ? "Mixed" : e === null ? "None" : e === void 0 ? "—" : r(e.fill ?? "solid")?.label ?? e.fill ?? "solid";
|
|
19
|
-
}
|
|
20
|
-
function f(r) {
|
|
21
|
-
let { value: f, mixed: p = !1, unset: m = !1, kinds: h, allowNone: g = !0, onInput: _, onChange: v, className: y, portalContainer: b } = r, x = r["aria-label"], { anchor: S, portalProps: C } = e(b), w = p ? void 0 : t(f);
|
|
22
|
-
return /* @__PURE__ */ a(c, { children: [
|
|
23
|
-
S,
|
|
24
|
-
/* @__PURE__ */ a(o, {
|
|
25
|
-
className: [u.trigger, y].filter(Boolean).join(" "),
|
|
26
|
-
"aria-label": x,
|
|
27
|
-
...m ? { "data-unset": "" } : {},
|
|
28
|
-
...p ? { "data-mixed": "" } : {},
|
|
29
|
-
children: [/* @__PURE__ */ i("span", {
|
|
30
|
-
className: u.swatch,
|
|
31
|
-
"aria-hidden": "true",
|
|
32
|
-
...w ? { style: { background: w } } : { "data-empty": "" }
|
|
33
|
-
}), /* @__PURE__ */ i("span", {
|
|
34
|
-
className: u.label,
|
|
35
|
-
children: d(f, p)
|
|
36
|
-
})]
|
|
37
|
-
}),
|
|
38
|
-
/* @__PURE__ */ i(l, {
|
|
39
|
-
className: u.popover,
|
|
40
|
-
"data-weasel-overlay": "",
|
|
41
|
-
...C,
|
|
42
|
-
children: /* @__PURE__ */ i(s, {
|
|
43
|
-
className: u.body,
|
|
44
|
-
"aria-label": x ? `${x} editor` : "Paint editor",
|
|
45
|
-
children: /* @__PURE__ */ i(n, {
|
|
46
|
-
value: f,
|
|
47
|
-
mixed: p,
|
|
48
|
-
unset: m,
|
|
49
|
-
kinds: h,
|
|
50
|
-
allowNone: g,
|
|
51
|
-
onInput: _,
|
|
52
|
-
onChange: v,
|
|
53
|
-
"aria-label": x
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
})
|
|
57
|
-
] });
|
|
58
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
export { f as t };
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=PaintField-DaJukRc6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaintField-DaJukRc6.js","names":["RACButton","s","RACPopover","RACDialog","useOverlayPortal","PaintInput","PaintField_module_default","kindLabel","mixed","paint","getPaintKind","PaintField","props","ariaLabel","portalContainer","preview","paintPreviewCss","value","DialogTrigger","anchor","Button","className","unset","Popover","portalProps","Dialog"],"sources":["../../src/components/PaintField/PaintField.module.css","../../src/components/PaintField/PaintField.tsx"],"sourcesContent":[".trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--wzl-space-3);\n inline-size: 100%;\n min-inline-size: 0;\n padding: 1px var(--wzl-space-3) 1px 1px;\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n background: var(--wzl-surface);\n color: var(--wzl-fg);\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size-sm);\n cursor: pointer;\n}\n\n.trigger[data-unset] {\n opacity: 0.6;\n}\n\n.trigger[data-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.swatch {\n /* A paint preview at a fixed 26:18 aspect, not a control box. */\n inline-size: 26px;\n block-size: 18px; /* not-a-control */\n flex: 0 0 auto;\n border-radius: calc(var(--wzl-radius-sm) - var(--wzl-border-w));\n /* Checker under the paint, so a translucent one reads as translucent. */\n background-color: var(--wzl-surface-raised);\n box-shadow: inset 0 0 0 1px var(--wzl-border);\n}\n\n/* No paint to show: the checker stands in rather than an invented color. */\n.swatch[data-empty],\n.trigger[data-mixed] .swatch {\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.label {\n flex: 1 1 auto;\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: start;\n}\n\n.popover {\n outline: none;\n}\n\n.body {\n inline-size: 240px;\n padding: var(--wzl-space-4);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-md);\n background: var(--wzl-surface-raised);\n box-shadow: 0 8px 24px rgb(0 0 0 / 0.3);\n outline: none;\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n}\n","import { type ReactElement } from 'react';\nimport {\n Button as RACButton,\n Dialog as RACDialog,\n DialogTrigger,\n Popover as RACPopover,\n} from 'react-aria-components';\nimport { getPaintKind, type FillStyle, type PaintKind } from '@weasel-js/core';\nimport { useOverlayPortal, type OverlayPortalProps } from '../../overlays/portalHost';\nimport { paintPreviewCss } from '../../paintPreview';\nimport { PaintInput } from '../PaintInput';\nimport s from './PaintField.module.css';\n\n/** Props for {@link PaintField}. `onInput` fires throughout a gesture inside\n * the popover and `onChange` once at its end. */\nexport interface PaintFieldProps extends OverlayPortalProps {\n /** The paint being edited. `null` is an explicit \"no paint\"; `undefined` is\n * no value to show. */\n value: FillStyle | null | undefined;\n /** Indeterminate presentation: the trigger says \"Mixed\" and the editor\n * lights no kind. */\n mixed?: boolean;\n /** Dim the trigger — a value is in effect but was never chosen. */\n unset?: boolean;\n /** Restrict the editor's kind bar. Default: every registered kind. */\n kinds?: readonly PaintKind[];\n /** Offer \"None\" in the editor. Default `true`. */\n allowNone?: boolean;\n onInput?: (next: FillStyle | null) => void;\n onChange: (next: FillStyle | null) => void;\n /** Names the paint this field edits — `Fill`, `Color`. */\n 'aria-label'?: string;\n className?: string;\n}\n\n/** What the trigger says it is holding. */\nfunction kindLabel(paint: FillStyle | null | undefined, mixed: boolean): string {\n if (mixed) return 'Mixed';\n if (paint === null) return 'None';\n if (paint === undefined) return '—';\n return getPaintKind(paint.fill ?? 'solid')?.label ?? (paint.fill ?? 'solid');\n}\n\n/**\n * A whole `FillStyle` in one control slot: a swatch that says which kind it\n * holds, and a popover holding {@link PaintInput}.\n *\n * `PaintInput` itself is a kind bar over a body — six segments and a stop\n * editor — which a property row's control column cannot hold. This is the\n * shape for a narrow slot, and the difference that matters is fidelity: a\n * `ColorField` in that slot reads a gradient's first stop and writes a solid\n * back, so touching the control loses the paint.\n */\nexport function PaintField(props: PaintFieldProps): ReactElement {\n const {\n value, mixed = false, unset = false, kinds, allowNone = true,\n onInput, onChange, className, portalContainer,\n } = props;\n const ariaLabel = props['aria-label'];\n const { anchor, portalProps } = useOverlayPortal(portalContainer);\n const preview = mixed ? undefined : paintPreviewCss(value);\n\n return (\n <DialogTrigger>\n {anchor}\n <RACButton\n className={[s.trigger, className].filter(Boolean).join(' ')}\n aria-label={ariaLabel}\n {...(unset ? { 'data-unset': '' } : {})}\n {...(mixed ? { 'data-mixed': '' } : {})}\n >\n <span\n className={s.swatch}\n aria-hidden=\"true\"\n {...(preview ? { style: { background: preview } } : { 'data-empty': '' })}\n />\n <span className={s.label}>{kindLabel(value, mixed)}</span>\n </RACButton>\n {/* `data-weasel-overlay`: see Select — the popover renders in a portal,\n outside the subtree the trigger sits in. */}\n <RACPopover className={s.popover} data-weasel-overlay=\"\" {...portalProps}>\n <RACDialog className={s.body} aria-label={ariaLabel ? `${ariaLabel} editor` : 'Paint editor'}>\n <PaintInput\n value={value}\n mixed={mixed}\n unset={unset}\n kinds={kinds}\n allowNone={allowNone}\n onInput={onInput}\n onChange={onChange}\n aria-label={ariaLabel}\n />\n </RACDialog>\n </RACPopover>\n </DialogTrigger>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;ACoCA,SAASO,EAAU,GAAqC,GAAwB;CAI9E,OAHIC,IAAc,UACdC,MAAU,OAAa,SACvBA,MAAU,KAAA,IAAkB,MACzBC,EAAaD,EAAM,QAAQ,OAAO,CAAC,EAAE,SAAUA,EAAM,QAAQ;AACtE;AAYA,SAAgBE,EAAW,GAAsC;CAC/D,IAAM,EACJ,UAAO,WAAQ,IAAO,WAAQ,IAAO,UAAO,eAAY,IACxD,YAAS,aAAU,cAAW,uBAC5BC,GACEC,IAAYD,EAAM,eAClB,EAAE,WAAQ,mBAAgBR,EAAiBU,CAAe,GAC1DC,IAAUP,IAAQ,KAAA,IAAYQ,EAAgBC,CAAK;CAEzD,OACE,kBAACC,GAAD,EAAA,UAAA;EACGC;EACD,kBAACnB,GAAD;GACE,WAAW,CAACC,EAAE,SAASoB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GAC1D,cAAYR;GACZ,GAAKS,IAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;GACrC,GAAKd,IAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;GAJvC,UAAA,CAME,kBAAC,QAAD;IACE,WAAWP,EAAE;IACb,eAAY;IACZ,GAAKc,IAAU,EAAE,OAAO,EAAE,YAAYA,EAAQ,EAAE,IAAI,EAAE,cAAc,GAAG;GACxE,CAAA,GACD,kBAAC,QAAD;IAAM,WAAWd,EAAE;IAAQ,UAAAM,EAAUU,GAAOT,CAAK;GAAQ,CAAA,CAChD;;EAGX,kBAACN,GAAD;GAAY,WAAWD,EAAE;GAAS,uBAAoB;GAAG,GAAIuB;GAC3D,UAAA,kBAACrB,GAAD;IAAW,WAAWF,EAAE;IAAM,cAAYY,IAAY,GAAGA,EAAU,WAAW;IAC5E,UAAA,kBAACR,GAAD;KACS;KACA;KACA;KACA;KACI;KACF;KACC;KACV,cAAYQ;IACb,CAAA;GACQ,CAAA;EACD,CAAA;CACC,EAAA,CAAA;AAEnB"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { a as e, t } from "./Icon-Cgzy8VgC.js";
|
|
2
|
-
import { t as n } from "./ColorField-BcMcW8Sa.js";
|
|
3
|
-
import { t as r } from "./ToggleBar-DTjGeS0Q.js";
|
|
4
|
-
import { r as i } from "./GradientEditor-B3a-MsVJ.js";
|
|
5
|
-
import { n as a, t as o } from "./MeshEditor-qqGc6hlD.js";
|
|
6
|
-
import { t as s } from "./PatternPicker-B-cUt-JT.js";
|
|
7
|
-
import { getPaintKind as c, listPaintKinds as l, withGradientKind as u } from "@weasel-js/core";
|
|
8
|
-
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
9
|
-
import { useCallback as p, useRef as m } from "react";
|
|
10
|
-
var h = {
|
|
11
|
-
root: "_root_1nsz3_2",
|
|
12
|
-
unset: "_unset_1nsz3_10",
|
|
13
|
-
noEditor: "_noEditor_1nsz3_15"
|
|
14
|
-
}, g = "#000000ff", _ = "none", v = [
|
|
15
|
-
"linear-gradient",
|
|
16
|
-
"radial-gradient",
|
|
17
|
-
"conic-gradient"
|
|
18
|
-
];
|
|
19
|
-
function y(e) {
|
|
20
|
-
return e !== void 0 && v.includes(e.fill ?? "");
|
|
21
|
-
}
|
|
22
|
-
function b(e) {
|
|
23
|
-
return e?.fill === "pattern";
|
|
24
|
-
}
|
|
25
|
-
function x(e) {
|
|
26
|
-
return e === null ? _ : e === void 0 ? null : e.fill ?? "solid";
|
|
27
|
-
}
|
|
28
|
-
function S(S) {
|
|
29
|
-
let { value: C, mixed: w = !1, unset: T = !1, kinds: E, allowNone: D = !0, onInput: O, onChange: k, className: A } = S, j = S["aria-label"], M = m(/* @__PURE__ */ new Map()), N = w ? null : x(C);
|
|
30
|
-
C != null && N !== null && M.current.set(N, C);
|
|
31
|
-
let P = l().filter((e) => E === void 0 || E.includes(e.id)), F = (n, r, i) => i && i in e ? {
|
|
32
|
-
value: n,
|
|
33
|
-
label: /* @__PURE__ */ d(t, {
|
|
34
|
-
name: i,
|
|
35
|
-
size: 14
|
|
36
|
-
}),
|
|
37
|
-
ariaLabel: r
|
|
38
|
-
} : {
|
|
39
|
-
value: n,
|
|
40
|
-
label: r
|
|
41
|
-
}, I = [...D ? [F(_, "None", "paintNone")] : [], ...P.map((e) => F(e.id, e.label, e.icon))], L = p(() => C == null ? g : c(x(C) ?? "solid")?.colorOf(C) ?? g, [C]), R = (e) => {
|
|
42
|
-
if (e === N) return;
|
|
43
|
-
if (e === _) {
|
|
44
|
-
k(null);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
let t = M.current.get(e);
|
|
48
|
-
if (t !== void 0) {
|
|
49
|
-
k(t);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (C != null && y(C) && v.includes(e)) {
|
|
53
|
-
k(u(C, e));
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
let n = c(e);
|
|
57
|
-
n && k(n.seed(L()));
|
|
58
|
-
};
|
|
59
|
-
return /* @__PURE__ */ f("div", {
|
|
60
|
-
className: [
|
|
61
|
-
h.root,
|
|
62
|
-
T && h.unset,
|
|
63
|
-
A
|
|
64
|
-
].filter(Boolean).join(" "),
|
|
65
|
-
title: T ? "Not set" : void 0,
|
|
66
|
-
children: [/* @__PURE__ */ d(r, {
|
|
67
|
-
items: I,
|
|
68
|
-
value: N,
|
|
69
|
-
size: "sm",
|
|
70
|
-
ariaLabel: "Paint kind",
|
|
71
|
-
onChange: (e) => e && R(e)
|
|
72
|
-
}), z()]
|
|
73
|
-
});
|
|
74
|
-
function z() {
|
|
75
|
-
if (w || C === void 0) return /* @__PURE__ */ d(n, {
|
|
76
|
-
mixed: !0,
|
|
77
|
-
"aria-label": j,
|
|
78
|
-
onChange: (e) => k({
|
|
79
|
-
fill: "solid",
|
|
80
|
-
color: e
|
|
81
|
-
})
|
|
82
|
-
});
|
|
83
|
-
if (C === null) return null;
|
|
84
|
-
let e = c(x(C) ?? "solid");
|
|
85
|
-
if (e?.Editor) {
|
|
86
|
-
let t = e.Editor;
|
|
87
|
-
return /* @__PURE__ */ d(t, {
|
|
88
|
-
value: C,
|
|
89
|
-
onInput: O,
|
|
90
|
-
onChange: k
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
if (y(C)) return /* @__PURE__ */ d(i, {
|
|
94
|
-
value: C,
|
|
95
|
-
kindSwitch: !1,
|
|
96
|
-
onInput: O,
|
|
97
|
-
onChange: k
|
|
98
|
-
});
|
|
99
|
-
if (b(C)) return /* @__PURE__ */ d(s, {
|
|
100
|
-
value: C,
|
|
101
|
-
color: L(),
|
|
102
|
-
onChange: k
|
|
103
|
-
});
|
|
104
|
-
if (a(C)) return /* @__PURE__ */ d(o, {
|
|
105
|
-
value: C,
|
|
106
|
-
onInput: O,
|
|
107
|
-
onChange: k
|
|
108
|
-
});
|
|
109
|
-
let t = x(C);
|
|
110
|
-
return t === "solid" ? /* @__PURE__ */ d(n, {
|
|
111
|
-
value: L(),
|
|
112
|
-
alpha: !0,
|
|
113
|
-
"aria-label": j,
|
|
114
|
-
onInput: (e) => O?.({
|
|
115
|
-
fill: "solid",
|
|
116
|
-
color: e
|
|
117
|
-
}),
|
|
118
|
-
onChange: (e) => k({
|
|
119
|
-
fill: "solid",
|
|
120
|
-
color: e
|
|
121
|
-
})
|
|
122
|
-
}) : /* @__PURE__ */ f("div", {
|
|
123
|
-
className: h.noEditor,
|
|
124
|
-
children: [e?.label ?? t, ": no editor"]
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
//#endregion
|
|
129
|
-
export { S as t };
|
|
130
|
-
|
|
131
|
-
//# sourceMappingURL=PaintInput-Byhna3H-.js.map
|