@weasel-js/ui 1.6.1 → 1.7.0
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/Badge-CTc9Lkwn.js +14 -0
- package/dist/chunks/Badge-CTc9Lkwn.js.map +1 -0
- package/dist/chunks/{Badge-CyAIZSDo.js → Badge-D2aD7xVL.js} +277 -228
- package/dist/chunks/Badge-D2aD7xVL.js.map +1 -0
- package/dist/chunks/BandEditor-Dd0egAgE.js +292 -0
- package/dist/chunks/BandEditor-Dd0egAgE.js.map +1 -0
- package/dist/chunks/{ButtonBar-D5Vi0aj_.js → ButtonBar-DIQTe5GQ.js} +2 -2
- package/dist/chunks/{ButtonBar-D5Vi0aj_.js.map → ButtonBar-DIQTe5GQ.js.map} +1 -1
- package/dist/chunks/Callout-ndW5_Bqx.js +116 -0
- package/dist/chunks/Callout-ndW5_Bqx.js.map +1 -0
- package/dist/chunks/CloseButton-C2J7wVfo.js +26 -0
- package/dist/chunks/CloseButton-C2J7wVfo.js.map +1 -0
- package/dist/chunks/ColorField-Yz_BkcCT.js +69 -0
- package/dist/chunks/ColorField-Yz_BkcCT.js.map +1 -0
- package/dist/chunks/{ColorModeControl-ke5PXbBa.js → ColorModeControl-BewxA0rX.js} +3 -3
- package/dist/chunks/{ColorModeControl-ke5PXbBa.js.map → ColorModeControl-BewxA0rX.js.map} +1 -1
- package/dist/chunks/{ComboBox-DpT8lc3p.js → ComboBox-B34H76CW.js} +12 -12
- package/dist/chunks/ComboBox-B34H76CW.js.map +1 -0
- package/dist/chunks/{CurveEditor-BDJXjEvK.js → CurveEditor-DUVjd25R.js} +2 -2
- package/dist/chunks/{CurveEditor-BDJXjEvK.js.map → CurveEditor-DUVjd25R.js.map} +1 -1
- package/dist/chunks/{DataGrid-D-dZj1BD.js → DataGrid-LZ2JgY2Y.js} +17 -17
- package/dist/chunks/DataGrid-LZ2JgY2Y.js.map +1 -0
- package/dist/chunks/DetailList-BKomDzg5.js +52 -0
- package/dist/chunks/DetailList-BKomDzg5.js.map +1 -0
- package/dist/chunks/{DetentSlider-CL8TlX3S.js → DetentSlider-5uQPFucv.js} +2 -2
- package/dist/chunks/{DetentSlider-CL8TlX3S.js.map → DetentSlider-5uQPFucv.js.map} +1 -1
- package/dist/chunks/Dialog-DGFutQ--.js +63 -0
- package/dist/chunks/Dialog-DGFutQ--.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/{DragHandleGlyph-Dr7Fgo0I.js → DragGrip-AoIZXfZb.js} +2 -2
- package/dist/chunks/DragGrip-AoIZXfZb.js.map +1 -0
- package/dist/chunks/FallthroughDiagram-BEHiM5IS.js +284 -0
- package/dist/chunks/FallthroughDiagram-BEHiM5IS.js.map +1 -0
- package/dist/chunks/{FontFamilySelect-DXlMKWfK.js → FontFamilySelect-DkRgNtag.js} +2 -2
- package/dist/chunks/{FontFamilySelect-DXlMKWfK.js.map → FontFamilySelect-DkRgNtag.js.map} +1 -1
- package/dist/chunks/GestureRoute-C_YGl7bJ.js +82 -0
- package/dist/chunks/GestureRoute-C_YGl7bJ.js.map +1 -0
- package/dist/chunks/GradientEditor-b7v4Ph3i.js +363 -0
- package/dist/chunks/GradientEditor-b7v4Ph3i.js.map +1 -0
- package/dist/chunks/{Icon-Cgzy8VgC.js → Icon-CcVjdq2C.js} +31 -1
- package/dist/chunks/Icon-CcVjdq2C.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/{Jog-DESxZ44P.js → Jog-DRmfrkCg.js} +3 -3
- package/dist/chunks/{Jog-DESxZ44P.js.map → Jog-DRmfrkCg.js.map} +1 -1
- 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-wCI1EueM.js} +148 -152
- package/dist/chunks/LayerList-wCI1EueM.js.map +1 -0
- package/dist/chunks/ListEditor-BeA60TAA.js +71 -0
- package/dist/chunks/ListEditor-BeA60TAA.js.map +1 -0
- package/dist/chunks/{MenuButton-DtaGenKf.js → MenuButton-BSqEChJE.js} +7 -7
- package/dist/chunks/MenuButton-BSqEChJE.js.map +1 -0
- package/dist/chunks/{MeshEditor-qqGc6hlD.js → MeshEditor-D1HLZcAh.js} +3 -3
- package/dist/chunks/{MeshEditor-qqGc6hlD.js.map → MeshEditor-D1HLZcAh.js.map} +1 -1
- package/dist/chunks/NumberField-BnJxcazc.js +206 -0
- package/dist/chunks/NumberField-BnJxcazc.js.map +1 -0
- package/dist/chunks/{OptionsBar-DbzAgIln.js → OptionsBar-ujxYidhj.js} +2 -2
- package/dist/chunks/{OptionsBar-DbzAgIln.js.map → OptionsBar-ujxYidhj.js.map} +1 -1
- package/dist/chunks/{PaintField-DaJukRc6.js → PaintField-DadOELMg.js} +2 -2
- package/dist/chunks/{PaintField-DaJukRc6.js.map → PaintField-DadOELMg.js.map} +1 -1
- package/dist/chunks/PaintInput-v8Y7MDbH.js +121 -0
- package/dist/chunks/PaintInput-v8Y7MDbH.js.map +1 -0
- package/dist/chunks/{PatternPicker-B-cUt-JT.js → PatternPicker-R_EQtw2Q.js} +2 -2
- package/dist/chunks/{PatternPicker-B-cUt-JT.js.map → PatternPicker-R_EQtw2Q.js.map} +1 -1
- package/dist/chunks/{PointPlotter-Bxo6haKe.js → PointPlotter-ldI4RrU1.js} +2 -2
- package/dist/chunks/{PointPlotter-Bxo6haKe.js.map → PointPlotter-ldI4RrU1.js.map} +1 -1
- package/dist/chunks/{Powerline-ExO5GwEr.js → Powerline-DNyH885r.js} +2 -2
- package/dist/chunks/{Powerline-ExO5GwEr.js.map → Powerline-DNyH885r.js.map} +1 -1
- package/dist/chunks/{Prefs-DpqFKiwY.js → Prefs-ByA-x51i.js} +46 -34
- package/dist/chunks/Prefs-ByA-x51i.js.map +1 -0
- package/dist/chunks/{Properties-D_KzDN9K.js → Properties-DmAeQ3mk.js} +35 -29
- package/dist/chunks/Properties-DmAeQ3mk.js.map +1 -0
- package/dist/chunks/PropertyField-DfIJJ5GS.js +673 -0
- package/dist/chunks/PropertyField-DfIJJ5GS.js.map +1 -0
- package/dist/chunks/{RangeSlider-BKRRTPTZ.js → RangeSlider-SEGE-7VF.js} +8 -8
- package/dist/chunks/RangeSlider-SEGE-7VF.js.map +1 -0
- package/dist/chunks/{ResizeHandle-BKT0XYpx.js → ResizeHandle-rKVWyeTG.js} +3 -3
- package/dist/chunks/ResizeHandle-rKVWyeTG.js.map +1 -0
- package/dist/chunks/Select-ClmKtyWg.js +229 -0
- package/dist/chunks/Select-ClmKtyWg.js.map +1 -0
- package/dist/chunks/SelectionPanel-BaQnX4Bs.js +106 -0
- package/dist/chunks/SelectionPanel-BaQnX4Bs.js.map +1 -0
- package/dist/chunks/SidebarPanel-BblDEz4G.js +53 -0
- package/dist/chunks/SidebarPanel-BblDEz4G.js.map +1 -0
- package/dist/chunks/Slider-YofwGOI4.js +389 -0
- package/dist/chunks/Slider-YofwGOI4.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-BARC3rnF.js → SwatchGrid-BYvA8Bmh.js} +3 -3
- package/dist/chunks/SwatchGrid-BYvA8Bmh.js.map +1 -0
- package/dist/chunks/ThemeSwitcher-BlsInAmR.js +38 -0
- package/dist/chunks/ThemeSwitcher-BlsInAmR.js.map +1 -0
- package/dist/chunks/{Timeline--58F7MED.js → Timeline-B39cwfMB.js} +207 -203
- package/dist/chunks/Timeline-B39cwfMB.js.map +1 -0
- package/dist/chunks/{Toast-DNBb-24H.js → Toast-BF9GE0HC.js} +25 -27
- package/dist/chunks/Toast-BF9GE0HC.js.map +1 -0
- package/dist/chunks/{ToggleBar-DTjGeS0Q.js → ToggleBar-BTYkBXU9.js} +8 -8
- package/dist/chunks/ToggleBar-BTYkBXU9.js.map +1 -0
- package/dist/chunks/{TokenPanel-CMq7uydV.js → TokenPanel-CMDAOfYH.js} +5 -5
- package/dist/chunks/{TokenPanel-CMq7uydV.js.map → TokenPanel-CMDAOfYH.js.map} +1 -1
- package/dist/chunks/{ToolButton-CR4sQlxF.js → ToolButton-CAHBa08P.js} +6 -6
- package/dist/chunks/ToolButton-CAHBa08P.js.map +1 -0
- package/dist/chunks/{ToolOptionsBar-CtzTlaN2.js → ToolOptionsBar-D_GCrBAN.js} +8 -7
- package/dist/chunks/ToolOptionsBar-D_GCrBAN.js.map +1 -0
- package/dist/chunks/{ToolPalette-CKG9qY6P.js → ToolPalette-OOWN51Xx.js} +3 -3
- package/dist/chunks/ToolPalette-OOWN51Xx.js.map +1 -0
- package/dist/chunks/{Tree-DVOtc9R5.js → Tree-Cc8lIzgM.js} +2 -2
- package/dist/chunks/{Tree-DVOtc9R5.js.map → Tree-Cc8lIzgM.js.map} +1 -1
- package/dist/chunks/{createKeyframeLayer-Czj6Y235.js → createKeyframeLayer-DVl321_l.js} +15 -16
- package/dist/chunks/createKeyframeLayer-DVl321_l.js.map +1 -0
- package/dist/chunks/{icons-Dk8SRS8g.js → icons-BhcR1l64.js} +2 -2
- package/dist/chunks/icons-BhcR1l64.js.map +1 -0
- package/dist/chunks/{model-Du7Lta4C.js → model-BaF65rnX.js} +95 -90
- package/dist/chunks/model-BaF65rnX.js.map +1 -0
- package/dist/chunks/{prefField-Dnl7nmjQ.js → prefField-BopW9bjx.js} +17 -13
- package/dist/chunks/prefField-BopW9bjx.js.map +1 -0
- package/dist/chunks/segmentedControl.module-D6SzYJD7.js +11 -0
- package/dist/chunks/segmentedControl.module-D6SzYJD7.js.map +1 -0
- package/dist/chunks/{useReorderDragList-B_-5L5Gu.js → useReorderDragList-FCMoFIzH.js} +2 -2
- package/dist/chunks/useReorderDragList-FCMoFIzH.js.map +1 -0
- 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 +16 -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/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/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/index.js +1 -1
- package/dist/components/ColorModeControl/index.js +1 -1
- package/dist/components/ComboBox/index.js +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/{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/FontFamilySelect/index.js +1 -1
- 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/index.js +1 -1
- package/dist/components/InlineRange/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/index.js +1 -1
- package/dist/components/MeshEditor/index.js +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/index.js +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/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/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.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 +22 -30
- 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 +2 -2
- package/dist/components/RangeSlider/index.js +1 -1
- package/dist/components/ResizeHandle/index.js +1 -1
- 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 +7 -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/index.js +1 -1
- 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/Transport.d.ts.map +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleBar/index.js +1 -1
- package/dist/components/TokenPanel/index.js +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/index.js +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 +0 -2
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/paths.d.ts +10 -0
- package/dist/icons/paths.d.ts.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -99
- package/dist/index.js.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/useReorderDragList.d.ts +1 -1
- package/dist/useReorderDragList.d.ts.map +1 -1
- package/package.json +9 -8
- 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/ColorField-BcMcW8Sa.js +0 -60
- package/dist/chunks/ColorField-BcMcW8Sa.js.map +0 -1
- package/dist/chunks/ComboBox-DpT8lc3p.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/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/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.map +0 -1
- package/dist/chunks/NumberField-CwJOMmQR.js +0 -117
- package/dist/chunks/NumberField-CwJOMmQR.js.map +0 -1
- package/dist/chunks/PaintInput-Byhna3H-.js +0 -131
- package/dist/chunks/PaintInput-Byhna3H-.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.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.map +0 -1
- package/dist/chunks/Timeline--58F7MED.js.map +0 -1
- package/dist/chunks/Toast-DNBb-24H.js.map +0 -1
- package/dist/chunks/ToggleBar-DTjGeS0Q.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/createKeyframeLayer-Czj6Y235.js.map +0 -1
- package/dist/chunks/icons-Dk8SRS8g.js.map +0 -1
- 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/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.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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Icon-Cgzy8VgC.js","names":["ICON_PATHS","ACTION_GLYPHS","ICON_FILLS","ICON_GROUPS","isFillable","name","SVG_BASE","markup","markupFor","m","html","Icon","shade","filled","size","fillOpacity","label"],"sources":["../../src/icons/paths.ts","../../src/icons/Icon.tsx"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit by hand.\n// Every glyph is a 20x20 viewBox drawn in currentColor at stroke-width 1.5.\n\nimport { ACTION_GLYPHS } from '@weasel-js/core';\n\nexport const ICON_PATHS = {\n\n // View and lifecycle\n clone: `<path d=\"M7 7.4V4.6A1.6 1.6 0 0 1 8.6 3h6.8A1.6 1.6 0 0 1 17 4.6v6.8a1.6 1.6 0 0 1-1.6 1.6H12.6\" stroke-linecap=\"butt\"/><rect x=\"3\" y=\"7\" width=\"10\" height=\"10\" rx=\"1.6\"/><path d=\"M5.7 10.8h4.6M5.7 13.4h3\" stroke-width=\"1\"/>`,\n reset: `<path d=\"M7.28 4.88A5.8 5.8 0 1 0 12.72 4.88\"/><path d=\"M13.81 7.57 12.72 4.88 15.56 4.28\"/>`,\n close: `<path d=\"M4.5 4.5 15.5 15.5M15.5 4.5 4.5 15.5\" stroke-width=\"1.75\"/>`,\n export: `<path d=\"M4 12.6v2.9A1.5 1.5 0 0 0 5.5 17h9a1.5 1.5 0 0 0 1.5-1.5v-2.9\"/><path d=\"M10 3.2v8.5\"/><path d=\"M11.7 9.35 10 11.7 8.3 9.35\"/><path d=\"M6.8 14.7h6.4\" stroke-width=\"1\"/>`,\n zoomIn: `<circle cx=\"9\" cy=\"9\" r=\"5.4\"/><path d=\"M12.82 12.82 16.9 16.9\"/><path d=\"M9 6.7v4.6M6.7 9h4.6\"/>`,\n zoomOut: `<circle cx=\"9\" cy=\"9\" r=\"5.4\"/><path d=\"M12.82 12.82 16.9 16.9\"/><path d=\"M6.7 9h4.6\"/>`,\n fit: `<path d=\"M3.2 7.2V4.4A1.2 1.2 0 0 1 4.4 3.2h2.8M12.8 3.2h2.8A1.2 1.2 0 0 1 16.8 4.4v2.8M16.8 12.8v2.8a1.2 1.2 0 0 1-1.2 1.2h-2.8M7.2 16.8H4.4a1.2 1.2 0 0 1-1.2-1.2v-2.8\"/><rect x=\"7.4\" y=\"8.2\" width=\"5.2\" height=\"3.6\" rx=\"0.8\" stroke-width=\"1\"/>`,\n pan: `<path d=\"M10 8.1V3.2M10 11.9V16.8M8.1 10H3.2M11.9 10H16.8\"/><path d=\"M8.26 5.27 10 3.2 11.74 5.27M11.74 14.73 10 16.8 8.26 14.73M5.27 11.74 3.2 10 5.27 8.26M14.73 8.26 16.8 10 14.73 11.74\"/><circle cx=\"10\" cy=\"10\" r=\"1.9\"/>`,\n\n // Actions\n filter: `<path d=\"M3.4 4.6h13.2L11.8 11v5.4L8.2 14.8V11z\"/>`,\n add: `<path d=\"M10 4.9v10.2M4.9 10h10.2\"/>`,\n remove: `<path d=\"M4.9 10h10.2\"/>`,\n delete: ACTION_GLYPHS.delete,\n sort: `<path d=\"M3.6 5.6h7.2M3.6 10h8.8M3.6 14.4h5\"/><path d=\"M15.3 5.4v9.4\"/><path d=\"M16.97 12.81 15.3 14.8 13.63 12.81\"/>`,\n undo: ACTION_GLYPHS.undo,\n redo: ACTION_GLYPHS.redo,\n snapshot: `<path d=\"M3.8 8.3A1.4 1.4 0 0 1 5.2 6.9h1.9L8 5.1h4l.9 1.8h1.9A1.4 1.4 0 0 1 16.2 8.3v6A1.4 1.4 0 0 1 14.8 15.7H5.2A1.4 1.4 0 0 1 3.8 14.3z\"/><circle cx=\"10\" cy=\"11\" r=\"2.75\"/>`,\n\n // Character styling\n bold: `<path d=\"M6 3.5h4.6a3.1 3.1 0 0 1 0 6.2H6zM6 9.7h5.4a3.4 3.4 0 0 1 0 6.8H6z\" stroke-width=\"2.1\"/>`,\n italic: `<path d=\"M9 3.5h6M5 16.5h6M12.5 3.5 7.5 16.5\"/>`,\n underline: `<path d=\"M6 3.4v5.6a4 4 0 0 0 8 0V3.4\"/><path d=\"M4.6 17h10.8\"/>`,\n strikethrough: `<path d=\"M14.4 5.8c-.9-1.6-2.4-2.4-4.4-2.4-2.5 0-4.2 1.3-4.2 3.1 0 .9.4 1.6 1.2 2.2\"/><path d=\"M5.6 14.2c.9 1.6 2.4 2.4 4.4 2.4 2.5 0 4.2-1.3 4.2-3.1 0-.9-.4-1.6-1.2-2.2\"/><path d=\"M3.4 10h13.2\"/>`,\n overline: `<path d=\"M4.6 3h10.8\"/><ellipse cx=\"10\" cy=\"11.4\" rx=\"4.4\" ry=\"4.8\"/>`,\n superscript: `<path d=\"M3.6 8.6 10.4 16.4M10.4 8.6 3.6 16.4\"/><path d=\"M11.9 5.3a2.2 2.2 0 1 1 4.3.8c0 1.4-4.3 2.2-4.3 3.5h4.5\"/>`,\n subscript: `<path d=\"M3.6 3.6 10.4 11.4M10.4 3.6 3.6 11.4\"/><path d=\"M11.9 11.5a2.2 2.2 0 1 1 4.3.8c0 1.4-4.3 2.2-4.3 3.5h4.5\"/>`,\n code: `<path d=\"M7 6.2 3.2 10 7 13.8M13 6.2 16.8 10 13 13.8\"/><path d=\"M11.2 4.8 8.8 15.2\"/>`,\n\n // Playback\n play: `<path d=\"M7.6 5.2 15.6 10 7.6 14.8Z\"/>`,\n pause: `<path d=\"M7.8 5.2v9.6M12.2 5.2v9.6\"/>`,\n stop: `<rect x=\"5.6\" y=\"5.6\" width=\"8.8\" height=\"8.8\" rx=\"1.4\"/>`,\n stepBack: `<path d=\"M13.6 5.4 7 10 13.6 14.6Z\"/><path d=\"M4.8 5.4v9.2\"/>`,\n stepForward: `<path d=\"M6.4 5.4 13 10 6.4 14.6Z\"/><path d=\"M15.2 5.4v9.2\"/>`,\n\n // State\n lock: `<rect x=\"4.6\" y=\"9\" width=\"10.8\" height=\"8\" rx=\"1.6\"/><path d=\"M7.2 9V6.6a2.8 2.8 0 0 1 5.6 0V9\"/>`,\n unlock: `<rect x=\"4.6\" y=\"9\" width=\"10.8\" height=\"8\" rx=\"1.6\"/><path d=\"M7.2 9V6.6a2.8 2.8 0 0 1 5.6 0\"/>`,\n visible: `<path d=\"M2.6 10C4.6 6.6 7.1 5 10 5s5.4 1.6 7.4 5c-2 3.4-4.5 5-7.4 5s-5.4-1.6-7.4-5z\"/><circle cx=\"10\" cy=\"10\" r=\"2.2\"/>`,\n hidden: `<path d=\"M2.6 10C4.6 6.6 7.1 5 10 5s5.4 1.6 7.4 5c-2 3.4-4.5 5-7.4 5s-5.4-1.6-7.4-5z\"/><circle cx=\"10\" cy=\"10\" r=\"2.2\"/><path d=\"M4.2 15.8 15.8 4.2\"/>`,\n pin: `<path d=\"M8.2 3.4v5.2l-2 2.6h7.6l-2-2.6V3.4z\"/><path d=\"M7 3.4h6\"/><path d=\"M10 11.2v5.4\"/>`,\n info: `<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 9.4v4.4\"/><path d=\"M10 6.5h0\"/>`,\n warning: `<path d=\"M10 3.4 17.4 16.2H2.6z\"/><path d=\"M10 8.4v3.4\"/><path d=\"M10 14h0\"/>`,\n error: `<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M7.6 7.6 12.4 12.4M12.4 7.6 7.6 12.4\"/>`,\n busy: `<path d=\"M10 3.2A6.8 6.8 0 1 1 3.2 10\"/>`,\n check: `<path d=\"M4.35 10.56 8.03 14.24 15.66 5.77\"/>`,\n modeLight: `<circle cx=\"10\" cy=\"10\" r=\"3.5\"/><path d=\"M15.3 10L17.7 10M13.75 6.25L15.44 4.56M10 4.7L10 2.3M6.25 6.25L4.56 4.56M4.7 10L2.3 10M6.25 13.75L4.56 15.44M10 15.3L10 17.7M13.75 13.75L15.44 15.44\"/>`,\n modeDark: `<path d=\"M8.19 3.55A6.7 6.7 0 1 0 16.45 11.81A5.9 5.9 0 0 1 8.19 3.55Z\"/>`,\n modeAuto: `<path d=\"M10 2.6Q10 10 17.4 10Q10 10 10 17.4Q10 10 2.6 10Q10 10 10 2.6Z\"/>`,\n\n // Instrument\n crosshair: `<circle cx=\"10\" cy=\"10\" r=\"5.6\"/><path d=\"M10 2.8v4.4M10 12.8v4.4M2.8 10h4.4M12.8 10h4.4\"/>`,\n fullscreen: `<path d=\"M11.6 3.6h4.8v4.8M8.4 16.4H3.6v-4.8\"/><path d=\"M16.4 3.6 11.2 8.8M3.6 16.4 8.8 11.2\"/>`,\n compare: `<rect x=\"3.4\" y=\"4.6\" width=\"13.2\" height=\"10.8\" rx=\"1.6\"/><path d=\"M10 4.6v10.8\" stroke-width=\"1\"/><path d=\"M5.2 7.6h3.4M5.2 10h2.6M5.2 12.4h3.4\" stroke-width=\"1\"/><path d=\"M11.4 7.6h3.4M11.4 10h3.4M11.4 12.4h1.8\" stroke-width=\"1\"/>`,\n search: `<circle cx=\"9\" cy=\"9\" r=\"5.4\"/><path d=\"M12.82 12.82 16.9 16.9\"/>`,\n loupe: `<circle cx=\"9\" cy=\"9\" r=\"5.6\"/><path d=\"M12.96 12.96 17 17\"/><rect x=\"6\" y=\"6\" width=\"6\" height=\"6\" stroke-width=\"1\"/><path d=\"M9 6v6M6 9h6\" stroke-width=\"1\"/>`,\n layers: `<path d=\"M10 2.8 17.2 6.6 10 10.4 2.8 6.6z\"/><path d=\"M2.8 10 10 13.8 17.2 10\" stroke-width=\"1\"/><path d=\"M2.8 13.4 10 17.2 17.2 13.4\" stroke-width=\"1\"/>`,\n page: `<path d=\"M4.6 2.8H11.6L15.4 6.6V17.2H4.6z\"/><path d=\"M11.6 2.8V6.6H15.4\"/>`,\n link: `<path d=\"M8.6 11.4a3.4 3.4 0 0 1 0-4.8l2.2-2.2a3.4 3.4 0 0 1 4.8 4.8l-1.1 1.1\"/><path d=\"M11.4 8.6a3.4 3.4 0 0 1 0 4.8l-2.2 2.2a3.4 3.4 0 0 1-4.8-4.8l1.1-1.1\"/>`,\n collapse: `<path d=\"M14.16 4.05 10 7.8 5.84 4.05M5.84 15.95 10 12.2 14.16 15.95\"/>`,\n expand: `<path d=\"M5.84 8.15 10 4.4 14.16 8.15M14.16 11.85 10 15.6 5.84 11.85\"/>`,\n chevron: `<path d=\"M14.9 7.98 10 12.4 5.1 7.98\"/>`,\n tune: `<path d=\"M3.4 6h13.2M3.4 10h13.2M3.4 14h13.2\" stroke-width=\"1.25\"/><circle cx=\"7\" cy=\"6\" r=\"1.8\"/><circle cx=\"12.6\" cy=\"10\" r=\"1.8\"/><circle cx=\"9\" cy=\"14\" r=\"1.8\"/>`,\n grid: `<rect x=\"3.4\" y=\"3.4\" width=\"13.2\" height=\"13.2\" rx=\"1.4\"/><path d=\"M7.8 3.4v13.2M12.2 3.4v13.2M3.4 7.8h13.2M3.4 12.2h13.2\" stroke-width=\"1\"/>`,\n snap: `<path d=\"M5.4 15.6V9.4a4.6 4.6 0 0 1 9.2 0v6.2h-3.2V9.4a1.4 1.4 0 0 0-2.8 0v6.2z\"/><path d=\"M5.4 12.8h3.2M11.4 12.8h3.2\" stroke-width=\"1\"/>`,\n measure: `<rect x=\"2.6\" y=\"7.4\" width=\"14.8\" height=\"5.2\" rx=\"1.2\"/><path d=\"M6 7.4v2.2M9.4 7.4v3M12.8 7.4v2.2\" stroke-width=\"1\"/>`,\n randomize: `<rect x=\"3.6\" y=\"3.6\" width=\"12.8\" height=\"12.8\" rx=\"2\"/><circle cx=\"7.2\" cy=\"7.2\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"10\" cy=\"10\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12.8\" cy=\"12.8\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>`,\n refresh: `<path d=\"M4.27 12.09A6.1 6.1 0 0 1 14.67 6.08\"/><path d=\"M14.67 3.38 14.67 6.08 12.01 5.61\"/><path d=\"M15.73 7.91A6.1 6.1 0 0 1 5.33 13.92\"/><path d=\"M5.33 16.62 5.33 13.92 7.99 14.39\"/>`,\n\n // Stroke cap, join, align and dash\n strokeWidth: `<path d=\"M3.4 5.6h13.2\" stroke-width=\"1\"/><path d=\"M3.4 10h13.2\" stroke-width=\"2\"/><path d=\"M3.4 15.2h13.2\" stroke-width=\"3.4\"/>`,\n strokeCap: `<path d=\"M2.5 10H12\" stroke-linecap=\"butt\"/><path d=\"M12 6V14\" stroke-width=\"1\"/>`,\n strokeJoin: `<path d=\"M4.4 15.5 10 5.5 15.6 15.5\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\"/>`,\n strokeAlign: `<circle cx=\"10\" cy=\"10\" r=\"6.2\"/>`,\n capButt: `<path d=\"M5.5 5.25H14.5V14.75H5.5Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"miter\"/>`,\n capRound: `<path d=\"M3.13 5.25H12.13V14.75H3.13Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"miter\"/><path d=\"M12.13 4.5A5.5 5.5 0 0 1 12.13 15.5Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n capSquare: `<path d=\"M3.13 5.25H12.13V14.75H3.13Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"miter\"/><path d=\"M12.13 4.5H17.63V15.5H12.13Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n joinMiter: `<path d=\"M10 3.5 15.6 15.5H4.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n joinRound: `<path d=\"M4.4 15.5V12a5.6 5.6 0 0 1 11.2 0v3.5Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n joinBevel: `<path d=\"M6.8 8.2h6.4l2.4 7.3H4.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n alignInner: `<path d=\"M10 3.8A6.2 6.2 0 1 0 10 16.2A6.2 6.2 0 1 0 10 3.8Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n alignCenter: `<path d=\"M10 2.1A7.9 7.9 0 1 0 10 17.9A7.9 7.9 0 1 0 10 2.1ZM10 5.5A4.5 4.5 0 1 0 10 14.5A4.5 4.5 0 1 0 10 5.5Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n alignOuter: `<path d=\"M0 0H20V20H0ZM10 3.8A6.2 6.2 0 1 0 10 16.2A6.2 6.2 0 1 0 10 3.8Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n dashSolid: `<path d=\"M2 10h16\" stroke-width=\"3\" stroke-linecap=\"butt\"/>`,\n dashDashed: `<path d=\"M2 10h16\" stroke-width=\"3\" stroke-linecap=\"butt\" stroke-dasharray=\"6 4\"/>`,\n dashDotted: `<path d=\"M2 10h16\" stroke-width=\"3\" stroke-linecap=\"butt\" stroke-dasharray=\"2.5 2\"/>`,\n dashCustom: `<path d=\"M2 10h16\" stroke-width=\"3\" stroke-linecap=\"butt\" stroke-dasharray=\"5 2 2 2\"/>`,\n paintSolid: `<path d=\"M3.4 3.4H16.6V16.6H3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"1\"/>`,\n paintLinear: `<path d=\"M3.4 3.4H6.7V16.6H3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"1\"/><path d=\"M6.7 3.4H10V16.6H6.7Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.68\"/><path d=\"M10 3.4H13.3V16.6H10Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.42\"/><path d=\"M13.3 3.4H16.6V16.6H13.3Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.2\"/>`,\n paintRadial: `<path d=\"M3.4 3.4H16.6V16.6H3.4ZM4.95 4.95H15.05V15.05H4.95Z\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke=\"none\" fill-opacity=\"0.7\"/><path d=\"M4.95 4.95H15.05V15.05H4.95ZM6.5 6.5H13.5V13.5H6.5Z\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke=\"none\" fill-opacity=\"0.53\"/><path d=\"M6.5 6.5H13.5V13.5H6.5ZM8.05 8.05H11.95V11.95H8.05Z\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke=\"none\" fill-opacity=\"0.37\"/><path d=\"M8.05 8.05H11.95V11.95H8.05Z\" fill=\"currentColor\" fill-rule=\"evenodd\" stroke=\"none\" fill-opacity=\"0.2\"/>`,\n paintConic: `<path d=\"M10 10L16.6 3.4L16.6 16.6Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"1\"/><path d=\"M10 10L16.6 16.6L3.4 16.6Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.68\"/><path d=\"M10 10L3.4 16.6L3.4 3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.42\"/><path d=\"M10 10L3.4 3.4L16.6 3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.2\"/>`,\n paintMesh: `<path d=\"M3.4 3.4L10 3.4C10 6.26 11.6 5.74 11.6 8.6C7.09 8.6 7.91 10 3.4 10L3.4 3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"1\"/><path d=\"M10 3.4L16.6 3.4L16.6 10C13.85 10 14.35 8.6 11.6 8.6C11.6 5.74 10 6.26 10 3.4Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.68\"/><path d=\"M11.6 8.6C14.35 8.6 13.85 10 16.6 10L16.6 16.6L10 16.6C10 12.2 11.6 13 11.6 8.6Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.42\"/><path d=\"M11.6 8.6C11.6 13 10 12.2 10 16.6L3.4 16.6L3.4 10C7.91 10 7.09 8.6 11.6 8.6Z\" fill=\"currentColor\" stroke=\"none\" fill-opacity=\"0.2\"/>`,\n paintPattern: `<path d=\"M3.4 3.4L4.7 3.4L3.4 4.7Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M8.7 3.4L11.3 3.4L3.4 11.3L3.4 8.7Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M15.3 3.4L16.6 3.4L16.6 4.7L4.7 16.6L3.4 16.6L3.4 15.3Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M16.6 8.7L16.6 11.3L11.3 16.6L8.7 16.6Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M16.6 15.3L16.6 16.6L15.3 16.6Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M15.3 3.4L16.6 3.4L16.6 4.7Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M8.7 3.4L11.3 3.4L16.6 8.7L16.6 11.3Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M3.4 3.4L4.7 3.4L16.6 15.3L16.6 16.6L15.3 16.6L3.4 4.7Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M11.3 16.6L8.7 16.6L3.4 11.3L3.4 8.7Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M4.7 16.6L3.4 16.6L3.4 15.3Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n paintNone: `<path d=\"M3.4 3.4H16.6V16.6H3.4Z\"/><path d=\"M3.4 16.6L16.6 3.4\" stroke=\"var(--wzl-danger, #d94a3f)\" stroke-width=\"1.8\" stroke-linecap=\"butt\"/>`,\n\n // Workspace layout\n layoutRows: `<rect x=\"3.4\" y=\"3.4\" width=\"13.2\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"3.4\" y=\"8.3\" width=\"13.2\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"3.4\" y=\"13.2\" width=\"13.2\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/>`,\n layoutColumns: `<rect x=\"3.4\" y=\"3.4\" width=\"3.4\" height=\"13.2\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"8.3\" y=\"3.4\" width=\"3.4\" height=\"13.2\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"13.2\" y=\"3.4\" width=\"3.4\" height=\"13.2\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/>`,\n layoutGrid: `<rect x=\"3.4\" y=\"3.4\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"8.3\" y=\"3.4\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"13.2\" y=\"3.4\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"3.4\" y=\"8.3\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"8.3\" y=\"8.3\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"13.2\" y=\"8.3\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"3.4\" y=\"13.2\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"8.3\" y=\"13.2\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/><rect x=\"13.2\" y=\"13.2\" width=\"3.4\" height=\"3.4\" rx=\"1\" fill=\"currentColor\" stroke=\"none\"/>`,\n\n // Arc profiles\n arcStraight: `<path d=\"M2.6 15H17.4\"/>`,\n arcParabola: `<path d=\"M2.6 15Q10 -5 17.4 15\"/>`,\n arcCircle: `<path d=\"M2.6 15A7.4 7.4 0 0 1 17.4 15\"/>`,\n arcSine: `<path d=\"M2.6 10C3.83 7.38 5.07 5 6.3 5C7.53 5 8.77 7.38 10 10C11.23 12.62 12.47 15 13.7 15C14.93 15 16.17 12.62 17.4 10\"/>`,\n arcBump: `<path d=\"M2.6 15C3.83 15 5.07 11.87 6.3 9.38C7.53 6.88 8.77 5 10 5C11.23 5 12.47 6.88 13.7 9.38C14.93 11.87 16.17 15 17.4 15\"/>`,\n arcPlateau: `<path d=\"M2.6 15V8.6A3.6 3.6 0 0 1 6.2 5H13.8A3.6 3.6 0 0 1 17.4 8.6V15\"/>`,\n arcBell: `<path d=\"M2.6 15C3.42 14.87 4.24 14.6 5.07 13.65C5.89 12.7 6.71 10.87 7.53 8.87C8.36 6.86 9.18 5 10 5C10.82 5 11.64 6.86 12.47 8.87C13.29 10.87 14.11 12.7 14.93 13.65C15.76 14.6 16.58 14.87 17.4 15\"/>`,\n arcEllipse: `<path d=\"M2.6 15A7.4 10 0 0 1 17.4 15\"/>`,\n arcLob: `<path d=\"M2.6 15C3.78 -0.6 10.74 4.2 17.4 15\"/>`,\n arcDive: `<path d=\"M2.6 15C9.26 4.2 16.22 -0.6 17.4 15\"/>`,\n arcTriangle: `<path d=\"M2.6 10L6.3 5L13.7 15L17.4 10\"/>`,\n arcSquare: `<path d=\"M2.6 10L2.6 5L10 5L10 15L17.4 15L17.4 10\"/>`,\n arcSawtooth: `<path d=\"M2.6 10L10 5L10 15L17.4 10\"/>`,\n arcStair: `<path d=\"M2.6 10L4.97 10L4.97 5L8.82 5L8.82 10L11.18 10L11.18 15L15.03 15L15.03 10L17.4 10\"/>`,\n arcZigzag: `<path d=\"M2.6 10L4.45 5L8.15 15L10 10L11.85 5L15.55 15L17.4 10\"/>`,\n arcRipple: `<path d=\"M2.6 10C3.22 7.38 3.83 5 4.45 5C5.07 5 5.68 7.38 6.3 10C6.92 12.62 7.53 15 8.15 15C8.77 15 9.38 12.62 10 10C10.62 7.38 11.23 5 11.85 5C12.47 5 13.08 7.38 13.7 10C14.32 12.62 14.93 15 15.55 15C16.17 15 16.78 12.62 17.4 10\"/>`,\n arcHop: `<path d=\"M2.6 15Q6.3 -5 10 15M10 15Q13.7 4 17.4 15\"/>`,\n arcCusp: `<path d=\"M2.6 15Q7.34 12.8 10 5Q12.66 12.8 17.4 15\"/>`,\n\n // Curves\n curveLine: `<path d=\"M2.6 10.72H17.4\"/>`,\n curveParabola: `<path d=\"M2.6 15.72Q10 -4.28 17.4 15.72\"/>`,\n curveCircle: `<path d=\"M2.6 15.72A7.4 7.4 0 0 1 17.4 15.72\"/>`,\n curveEllipse: `<path d=\"M2.6 15.72A7.4 10 0 0 1 17.4 15.72\"/>`,\n curveHyperbola: `<path d=\"M2.6 15.72C2.91 15.08 3.8 13.12 4.48 11.86C5.16 10.61 5.76 9.21 6.68 8.19C7.6 7.16 8.89 5.72 10 5.72C11.11 5.72 12.4 7.16 13.32 8.19C14.24 9.21 14.84 10.61 15.52 11.86C16.2 13.12 17.09 15.08 17.4 15.72\"/>`,\n curveHyperbolaPair: `<path d=\"M2.6 15.72C2.91 15.08 3.8 13.12 4.48 11.86C5.16 10.61 5.76 9.21 6.68 8.19C7.6 7.16 8.89 5.72 10 5.72C11.11 5.72 12.4 7.16 13.32 8.19C14.24 9.21 14.84 10.61 15.52 11.86C16.2 13.12 17.09 15.08 17.4 15.72M2.6 5.72C2.91 6.36 3.8 8.32 4.48 9.58C5.16 10.83 5.76 12.23 6.68 13.25C7.6 14.28 8.89 15.72 10 15.72C11.11 15.72 12.4 14.28 13.32 13.25C14.24 12.23 14.84 10.83 15.52 9.58C16.2 8.32 17.09 6.36 17.4 5.72\"/>`,\n curveCubic: `<path d=\"M2.6 15.72C2.88 15.27 3.59 13.78 4.3 13.01C5 12.24 5.89 11.49 6.84 11.11C7.79 10.73 8.95 10.85 10 10.72C11.05 10.59 12.21 10.71 13.16 10.33C14.11 9.95 15 9.2 15.7 8.43C16.41 7.66 17.12 6.17 17.4 5.72\"/>`,\n curveQuartic: `<path d=\"M2.6 15.28C2.98 15.06 4.27 14.67 4.88 13.94C5.49 13.22 5.8 11.93 6.27 10.92C6.74 9.92 7.08 8.79 7.7 7.93C8.32 7.06 9.23 5.72 10 5.72C10.77 5.72 11.68 7.06 12.3 7.93C12.92 8.79 13.26 9.92 13.73 10.92C14.2 11.93 14.51 13.22 15.12 13.94C15.73 14.67 17.02 15.06 17.4 15.28\"/>`,\n curveSqrt: `<path d=\"M2.6 15.72C2.8 15.25 3.19 13.72 3.77 12.91C4.36 12.1 5.27 11.46 6.1 10.86C6.93 10.25 7.86 9.75 8.77 9.26C9.69 8.77 10.63 8.35 11.58 7.93C12.53 7.51 13.5 7.13 14.47 6.76C15.44 6.4 16.91 5.89 17.4 5.72\"/>`,\n curveReciprocal: `<path d=\"M2.6 15.72C2.69 15.31 2.91 14.08 3.15 13.28C3.39 12.49 3.66 11.68 4.06 10.96C4.46 10.24 4.95 9.53 5.55 8.97C6.15 8.41 6.89 7.97 7.63 7.61C8.37 7.25 9.19 7.01 9.99 6.79C10.79 6.57 11.62 6.43 12.44 6.29C13.26 6.15 14.09 6.05 14.91 5.96C15.74 5.86 16.99 5.76 17.4 5.72\"/>`,\n curveAbs: `<path d=\"M2.6 5.72L10 15.72L17.4 5.72\"/>`,\n curveCusp: `<path d=\"M2.6 15.72Q7.34 13.52 10 5.72Q12.66 13.52 17.4 15.72\"/>`,\n curveExponential: `<path d=\"M2.6 15.72C3.12 15.64 4.69 15.47 5.72 15.26C6.74 15.04 7.78 14.79 8.76 14.42C9.73 14.05 10.7 13.59 11.57 13.01C12.44 12.44 13.26 11.74 13.98 10.99C14.7 10.23 15.32 9.37 15.89 8.49C16.46 7.61 17.15 6.18 17.4 5.72\"/>`,\n curveLogarithm: `<path d=\"M2.6 15.72C2.72 15.34 3.01 14.18 3.35 13.47C3.68 12.76 4.11 12.07 4.61 11.46C5.11 10.86 5.72 10.32 6.35 9.85C6.97 9.37 7.67 8.98 8.37 8.61C9.07 8.25 9.81 7.94 10.55 7.66C11.28 7.37 12.04 7.12 12.79 6.89C13.55 6.66 14.32 6.45 15.09 6.26C15.85 6.06 17.01 5.81 17.4 5.72\"/>`,\n curveDecay: `<path d=\"M2.6 5.72C2.84 6.19 3.5 7.64 4.06 8.53C4.61 9.43 5.22 10.31 5.94 11.08C6.65 11.85 7.47 12.56 8.34 13.13C9.22 13.71 10.2 14.16 11.19 14.52C12.17 14.88 13.22 15.11 14.26 15.31C15.29 15.51 16.88 15.65 17.4 15.72\"/>`,\n curveSigmoid: `<path d=\"M2.6 15.72C3.11 15.62 4.75 15.55 5.68 15.14C6.61 14.74 7.46 14.02 8.18 13.29C8.9 12.55 9.39 11.58 10 10.72C10.61 9.86 11.1 8.89 11.82 8.15C12.54 7.42 13.39 6.7 14.32 6.3C15.25 5.89 16.89 5.82 17.4 5.72\"/>`,\n curveSoftplus: `<path d=\"M2.6 15.72C3.13 15.7 4.74 15.73 5.79 15.62C6.85 15.5 7.95 15.42 8.92 15.03C9.89 14.65 10.79 14 11.59 13.32C12.38 12.63 13.03 11.75 13.7 10.93C14.37 10.1 14.97 9.22 15.59 8.35C16.2 7.48 17.1 6.16 17.4 5.72\"/>`,\n curveRelu: `<path d=\"M2.6 15.72L10 15.72L17.4 5.72\"/>`,\n curveStep: `<path d=\"M2.6 15.72L10 15.72L10 5.72L17.4 5.72\"/>`,\n curvePowerLaw: `<path d=\"M2.6 15.72C2.62 15.25 2.67 13.85 2.74 12.91C2.81 11.98 2.83 11.03 3.01 10.12C3.19 9.21 3.27 8.11 3.8 7.45C4.33 6.78 5.32 6.39 6.18 6.13C7.04 5.87 8.04 5.93 8.98 5.87C9.91 5.81 10.85 5.8 11.78 5.78C12.72 5.76 13.66 5.75 14.59 5.74C15.53 5.73 16.93 5.72 17.4 5.72\"/>`,\n curveCatenary: `<path d=\"M2.6 5.72C2.86 6.4 3.53 8.49 4.16 9.8C4.79 11.11 5.4 12.57 6.37 13.55C7.34 14.54 8.79 15.72 10 15.72C11.21 15.72 12.66 14.54 13.63 13.55C14.6 12.57 15.21 11.11 15.84 9.8C16.47 8.49 17.14 6.4 17.4 5.72\"/>`,\n curveBathtub: `<path d=\"M2.6 5.72C2.71 6.29 2.98 8.02 3.27 9.14C3.57 10.27 3.81 11.47 4.37 12.45C4.92 13.43 5.67 14.5 6.61 15.04C7.55 15.59 8.87 15.72 10 15.72C11.13 15.72 12.45 15.59 13.39 15.04C14.33 14.5 15.08 13.43 15.63 12.45C16.19 11.47 16.43 10.27 16.73 9.14C17.02 8.02 17.29 6.29 17.4 5.72\"/>`,\n curveHockeyStick: `<path d=\"M2.6 15.72C3.15 15.68 4.81 15.61 5.91 15.5C7.01 15.39 8.12 15.31 9.19 15.06C10.26 14.8 11.38 14.51 12.3 13.96C13.23 13.41 14.08 12.61 14.75 11.76C15.42 10.91 15.89 9.86 16.33 8.86C16.78 7.85 17.22 6.24 17.4 5.72\"/>`,\n curveSine: `<path d=\"M2.6 10.72C3.83 8.1 5.07 5.72 6.3 5.72C7.53 5.72 8.77 8.1 10 10.72C11.23 13.34 12.47 15.72 13.7 15.72C14.93 15.72 16.17 13.34 17.4 10.72\"/>`,\n curveCosine: `<path d=\"M2.6 5.72C3.83 5.72 5.07 8.1 6.3 10.72C7.53 13.34 8.77 15.72 10 15.72C11.23 15.72 12.47 13.34 13.7 10.72C14.93 8.1 16.17 5.72 17.4 5.72\"/>`,\n curveRipple: `<path d=\"M2.6 10.72C3.22 8.1 3.83 5.72 4.45 5.72C5.07 5.72 5.68 8.1 6.3 10.72C6.92 13.34 7.53 15.72 8.15 15.72C8.77 15.72 9.38 13.34 10 10.72C10.62 8.1 11.23 5.72 11.85 5.72C12.47 5.72 13.08 8.1 13.7 10.72C14.32 13.34 14.93 15.72 15.55 15.72C16.17 15.72 16.78 13.34 17.4 10.72\"/>`,\n curveTriangleWave: `<path d=\"M2.6 10.72L6.3 5.72L13.7 15.72L17.4 10.72\"/>`,\n curveSquareWave: `<path d=\"M2.6 10.72L2.6 5.72L10 5.72L10 15.72L17.4 15.72L17.4 10.72\"/>`,\n curveSawtooth: `<path d=\"M2.6 10.72L10 5.72L10 15.72L17.4 10.72\"/>`,\n curveStair: `<path d=\"M2.6 10.72L4.97 10.72L4.97 5.72L8.82 5.72L8.82 10.72L11.18 10.72L11.18 15.72L15.03 15.72L15.03 10.72L17.4 10.72\"/>`,\n curvePulseTrain: `<path d=\"M2.6 10.72L4.23 10.72L4.23 5.72L6.3 5.72L6.3 10.72L8.96 10.72L8.96 5.72L11.04 5.72L11.04 10.72L13.7 10.72L13.7 5.72L15.77 5.72L15.77 10.72L17.4 10.72\"/>`,\n curveDamped: `<path d=\"M2.6 5.72C2.95 6.01 3.3 6.7 3.66 7.55C4.01 8.39 4.36 9.37 4.71 10.24C5.07 11.11 5.42 11.86 5.77 12.37C6.12 12.87 6.48 13.13 6.83 13.15C7.18 13.17 7.53 12.96 7.89 12.63C8.24 12.3 8.59 11.86 8.94 11.42C9.3 10.99 9.65 10.57 10 10.25C10.35 9.94 10.7 9.72 11.06 9.63C11.41 9.54 11.76 9.56 12.11 9.67C12.47 9.77 12.82 9.96 13.17 10.16C13.52 10.36 13.88 10.57 14.23 10.75C14.58 10.93 14.93 11.08 15.29 11.16C15.64 11.25 15.99 11.28 16.34 11.26C16.7 11.24 17.05 11.17 17.4 11.09\"/>`,\n curveChirp: `<path d=\"M2.6 10.72C2.85 10.33 3.09 9.84 3.34 9.28C3.59 8.73 3.83 8.1 4.08 7.53C4.33 6.96 4.57 6.45 4.82 6.23C5.07 6.01 5.31 6.1 5.56 6.66C5.81 7.22 6.05 8.29 6.3 9.65C6.55 11 6.79 12.65 7.04 13.83C7.29 15.01 7.53 15.64 7.78 15.14C8.03 14.64 8.27 12.95 8.52 10.95C8.77 8.95 9.01 6.8 9.26 6.26C9.51 5.72 9.75 7.01 10 9.3C10.25 11.59 10.49 14.54 10.74 15.18C10.99 15.82 11.23 13.76 11.48 10.95C11.73 8.14 11.97 5.47 12.22 6.3C12.47 7.13 12.71 11.45 12.96 13.83C13.21 16.2 13.45 15.12 13.7 11.79C13.95 8.47 14.19 4.96 14.44 6.66C14.69 8.37 14.93 14.36 15.18 15.21C15.43 16.05 15.67 10.43 15.92 7.53C16.17 4.63 16.41 8.14 16.66 12.16C16.91 16.17 17.15 15.15 17.4 10.72\"/>`,\n curveBeat: `<path d=\"M2.6 10.72C2.81 10.72 3.01 10.48 3.22 10.2C3.42 9.92 3.63 9.65 3.83 9.69C4.04 9.73 4.24 10.11 4.45 10.72C4.66 11.33 4.86 12.16 5.07 12.71C5.27 13.26 5.48 13.5 5.68 13.15C5.89 12.79 6.09 11.86 6.3 10.72C6.51 9.58 6.71 8.3 6.92 7.56C7.12 6.82 7.33 6.66 7.53 7.27C7.74 7.88 7.94 9.24 8.15 10.72C8.36 12.2 8.56 13.75 8.77 14.57C8.97 15.39 9.18 15.44 9.38 14.67C9.59 13.9 9.79 12.33 10 10.72C10.21 9.11 10.41 7.54 10.62 6.77C10.82 6 11.03 6.05 11.23 6.87C11.44 7.69 11.64 9.24 11.85 10.72C12.06 12.2 12.26 13.56 12.47 14.17C12.67 14.78 12.88 14.62 13.08 13.88C13.29 13.14 13.49 11.86 13.7 10.72C13.91 9.58 14.11 8.65 14.32 8.29C14.52 7.94 14.73 8.18 14.93 8.73C15.14 9.28 15.34 10.11 15.55 10.72C15.76 11.33 15.96 11.71 16.17 11.75C16.37 11.79 16.58 11.52 16.78 11.24C16.99 10.96 17.19 10.72 17.4 10.72\"/>`,\n curveGaussian: `<path d=\"M2.6 15.72C3.13 15.57 4.98 15.47 5.78 14.83C6.57 14.18 6.92 12.87 7.35 11.84C7.79 10.8 7.97 9.62 8.41 8.6C8.85 7.58 9.47 5.72 10 5.72C10.53 5.72 11.15 7.58 11.59 8.6C12.03 9.62 12.21 10.8 12.65 11.84C13.08 12.87 13.43 14.18 14.22 14.83C15.02 15.47 16.87 15.57 17.4 15.72\"/>`,\n curveBimodal: `<path d=\"M2.6 15.72C2.95 15.39 4.21 14.57 4.67 13.73C5.14 12.89 5.17 11.7 5.39 10.68C5.62 9.66 5.69 8.28 6 7.6C6.31 6.92 6.93 6.26 7.24 6.61C7.56 6.96 7.69 8.66 7.9 9.68C8.12 10.7 8.19 11.81 8.54 12.75C8.89 13.7 9.51 15.36 10 15.36C10.49 15.36 11.11 13.7 11.46 12.75C11.81 11.81 11.88 10.7 12.1 9.68C12.31 8.66 12.44 6.96 12.76 6.61C13.07 6.26 13.69 6.92 14 7.6C14.31 8.28 14.38 9.66 14.61 10.68C14.83 11.7 14.86 12.89 15.33 13.73C15.79 14.57 17.05 15.39 17.4 15.72\"/>`,\n curveSkewed: `<path d=\"M2.6 15.72C2.76 15.32 3.35 14.19 3.58 13.35C3.82 12.5 3.87 11.55 4.02 10.65C4.17 9.75 4.22 8.78 4.5 7.96C4.79 7.14 5.26 5.74 5.71 5.75C6.15 5.76 6.71 7.24 7.15 8.03C7.6 8.82 7.92 9.69 8.38 10.47C8.85 11.25 9.32 12.06 9.94 12.71C10.56 13.36 11.3 13.96 12.09 14.37C12.88 14.78 13.8 15.01 14.69 15.2C15.57 15.39 16.95 15.46 17.4 15.52\"/>`,\n curveLorentzian: `<path d=\"M2.6 15.72C3.06 15.64 4.52 15.6 5.35 15.26C6.18 14.92 7.02 14.36 7.57 13.66C8.11 12.96 8.34 11.97 8.62 11.08C8.89 10.2 8.99 9.25 9.22 8.35C9.45 7.46 9.74 5.72 10 5.72C10.26 5.72 10.55 7.46 10.78 8.35C11.01 9.25 11.11 10.2 11.38 11.08C11.66 11.97 11.89 12.96 12.43 13.66C12.98 14.36 13.82 14.92 14.65 15.26C15.48 15.6 16.94 15.64 17.4 15.72\"/>`,\n curveOgive: `<path d=\"M2.6 15.72C3.13 15.66 4.83 15.71 5.79 15.34C6.75 14.97 7.64 14.25 8.35 13.48C9.05 12.71 9.45 11.64 10 10.72C10.55 9.8 10.95 8.73 11.65 7.96C12.36 7.19 13.25 6.47 14.21 6.1C15.17 5.73 16.87 5.78 17.4 5.72\"/>`,\n curveUniform: `<path d=\"M2.6 15.72V9.32A3.6 3.6 0 0 1 6.2 5.72H13.8A3.6 3.6 0 0 1 17.4 9.32V15.72\"/>`,\n curveSinc: `<path d=\"M2.6 15.72C2.83 15.6 3.61 15.35 4.01 15.02C4.4 14.69 4.68 14.18 4.96 13.72C5.25 13.27 5.49 12.78 5.73 12.3C5.97 11.82 6.19 11.33 6.42 10.84C6.65 10.35 6.86 9.86 7.1 9.37C7.33 8.89 7.55 8.39 7.82 7.93C8.08 7.46 8.32 6.93 8.69 6.57C9.05 6.2 9.56 5.72 10 5.72C10.44 5.72 10.95 6.2 11.31 6.57C11.68 6.93 11.92 7.46 12.18 7.93C12.45 8.39 12.67 8.89 12.9 9.37C13.14 9.86 13.35 10.35 13.58 10.84C13.81 11.33 14.03 11.82 14.27 12.3C14.51 12.78 14.75 13.27 15.04 13.72C15.32 14.18 15.6 14.69 15.99 15.02C16.39 15.35 17.17 15.6 17.4 15.72\"/>`,\n curveImpulse: `<path d=\"M2.6 15.72L9.7 15.72L10 5.72L10.3 15.72L17.4 15.72\"/>`,\n curveEaseIn: `<path d=\"M2.6 15.72C3.13 15.7 4.75 15.75 5.8 15.62C6.86 15.49 7.94 15.31 8.93 14.94C9.91 14.57 10.87 14.01 11.72 13.38C12.56 12.75 13.31 11.95 14 11.14C14.7 10.34 15.29 9.43 15.86 8.53C16.42 7.63 17.14 6.19 17.4 5.72\"/>`,\n curveEaseOut: `<path d=\"M2.6 15.72C2.86 15.25 3.58 13.81 4.14 12.91C4.71 12.01 5.3 11.1 6 10.3C6.69 9.49 7.44 8.69 8.28 8.06C9.13 7.43 10.09 6.87 11.07 6.5C12.06 6.13 13.14 5.95 14.2 5.82C15.25 5.69 16.87 5.74 17.4 5.72\"/>`,\n curveEaseInOut: `<path d=\"M2.6 15.72C3 15.69 4.23 15.75 4.99 15.55C5.75 15.36 6.53 15.01 7.16 14.55C7.79 14.09 8.32 13.43 8.79 12.8C9.26 12.16 9.6 11.41 10 10.72C10.4 10.03 10.74 9.28 11.21 8.64C11.68 8.01 12.21 7.35 12.84 6.89C13.47 6.43 14.25 6.08 15.01 5.89C15.77 5.69 17 5.75 17.4 5.72\"/>`,\n curveOvershoot: `<path d=\"M2.6 15.72C2.76 15.33 3.2 14.15 3.54 13.39C3.88 12.62 4.24 11.86 4.64 11.13C5.05 10.4 5.48 9.67 6 9.02C6.51 8.36 7.06 7.7 7.72 7.19C8.37 6.69 9.14 6.25 9.92 6.01C10.7 5.77 11.57 5.73 12.4 5.73C13.23 5.73 14.07 5.92 14.9 6C15.73 6.08 16.98 6.18 17.4 6.22\"/>`,\n curveBounce: `<path d=\"M2.6 15.72Q6 -4.28 9.41 15.72M9.41 15.72Q11.63 6.72 13.85 15.72M13.85 15.72Q15.18 12.12 16.51 15.72M16.51 15.72Q16.96 14.72 17.4 15.72\"/>`,\n curveElastic: `<path d=\"M2.6 15.72C2.91 15.01 3.22 13.44 3.53 11.66C3.83 9.87 4.14 7.89 4.45 6.23C4.76 4.58 5.07 3.25 5.38 2.45C5.68 1.65 5.99 1.37 6.3 1.5C6.61 1.63 6.92 2.17 7.23 2.85C7.53 3.53 7.84 4.35 8.15 5.07C8.46 5.79 8.77 6.41 9.07 6.82C9.38 7.24 9.69 7.44 10 7.46C10.31 7.47 10.62 7.31 10.93 7.06C11.23 6.81 11.54 6.48 11.85 6.18C12.16 5.87 12.47 5.59 12.77 5.39C13.08 5.18 13.39 5.06 13.7 5.02C14.01 4.99 14.32 5.03 14.62 5.11C14.93 5.2 15.24 5.33 15.55 5.45C15.86 5.58 16.17 5.71 16.47 5.8C16.78 5.9 17.09 5.96 17.4 5.99\"/>`,\n curveLemniscate: `<path d=\"M17.4 11.12C17.4 11.98 16.91 12.8 16.23 13.25C15.54 13.7 14.73 13.8 14.01 13.7C13.29 13.6 12.66 13.3 12.11 12.95C11.57 12.6 11.1 12.19 10.65 11.76C10.21 11.34 9.79 10.9 9.35 10.48C8.9 10.05 8.43 9.64 7.89 9.29C7.34 8.94 6.71 8.64 5.99 8.54C5.27 8.44 4.46 8.54 3.77 8.99C3.09 9.44 2.6 10.26 2.6 11.12C2.6 11.98 3.09 12.8 3.77 13.25C4.46 13.7 5.27 13.8 5.99 13.7C6.71 13.6 7.34 13.3 7.89 12.95C8.43 12.6 8.9 12.19 9.35 11.76C9.79 11.34 10.21 10.9 10.65 10.48C11.1 10.05 11.57 9.64 12.11 9.29C12.66 8.94 13.29 8.64 14.01 8.54C14.73 8.44 15.54 8.54 16.23 8.99C16.91 9.44 17.4 10.26 17.4 11.12\"/>`,\n curveCardioid: `<path d=\"M10 6.14C10 6.14 10 6.09 10.03 6C10.06 5.91 10.13 5.78 10.24 5.63C10.36 5.48 10.54 5.31 10.77 5.16C11.01 5.01 11.32 4.88 11.68 4.8C12.04 4.72 12.45 4.69 12.91 4.74C13.36 4.79 13.84 4.92 14.32 5.15C14.8 5.38 15.27 5.71 15.7 6.14C16.12 6.56 16.5 7.08 16.79 7.69C17.08 8.29 17.28 8.96 17.36 9.68C17.44 10.4 17.4 11.15 17.23 11.9C17.06 12.65 16.76 13.39 16.33 14.07C15.9 14.75 15.35 15.37 14.7 15.89C14.05 16.41 13.3 16.82 12.5 17.1C11.7 17.38 10.85 17.53 10 17.53C9.15 17.53 8.3 17.38 7.5 17.1C6.7 16.82 5.95 16.41 5.3 15.89C4.65 15.37 4.1 14.75 3.67 14.07C3.24 13.39 2.94 12.65 2.77 11.9C2.6 11.15 2.56 10.4 2.64 9.68C2.72 8.96 2.92 8.29 3.21 7.69C3.5 7.08 3.88 6.56 4.3 6.14C4.73 5.71 5.2 5.38 5.68 5.15C6.16 4.92 6.64 4.79 7.09 4.74C7.55 4.69 7.96 4.72 8.32 4.8C8.68 4.88 8.99 5.01 9.23 5.16C9.46 5.31 9.64 5.48 9.76 5.63C9.87 5.78 9.94 5.91 9.97 6C10 6.09 10 6.14 10 6.14\"/>`,\n curveAstroid: `<path d=\"M17.4 11.12C17.4 11.12 17.02 11.13 16.37 11.34C15.72 11.55 14.81 11.97 13.92 12.62C13.02 13.27 12.15 14.14 11.5 15.04C10.85 15.93 10.43 16.84 10.22 17.49C10.01 18.14 10 18.52 10 18.52C10 18.52 9.99 18.14 9.78 17.49C9.57 16.84 9.15 15.93 8.5 15.04C7.85 14.14 6.98 13.27 6.08 12.62C5.19 11.97 4.28 11.55 3.63 11.34C2.98 11.13 2.6 11.12 2.6 11.12C2.6 11.12 2.98 11.11 3.63 10.9C4.28 10.69 5.19 10.27 6.08 9.62C6.98 8.97 7.85 8.1 8.5 7.2C9.15 6.31 9.57 5.4 9.78 4.75C9.99 4.1 10 3.72 10 3.72C10 3.72 10.01 4.1 10.22 4.75C10.43 5.4 10.85 6.31 11.5 7.2C12.15 8.1 13.02 8.97 13.92 9.62C14.81 10.27 15.72 10.69 16.37 10.9C17.02 11.11 17.4 11.12 17.4 11.12\"/>`,\n curveRose: `<path d=\"M16.57 11.12C16.57 11.49 16.32 11.85 15.86 12.13C15.4 12.42 14.72 12.61 13.9 12.66C13.08 12.71 12.13 12.61 11.13 12.35C10.14 12.09 9.11 11.67 8.16 11.12C7.21 10.57 6.33 9.89 5.61 9.16C4.89 8.43 4.32 7.65 3.96 6.92C3.59 6.18 3.42 5.5 3.43 4.96C3.44 4.42 3.64 4.02 3.96 3.84C4.27 3.65 4.71 3.68 5.19 3.94C5.66 4.2 6.17 4.69 6.62 5.38C7.07 6.06 7.47 6.94 7.74 7.93C8.01 8.92 8.16 10.02 8.16 11.12C8.16 12.22 8.01 13.32 7.74 14.31C7.47 15.3 7.07 16.18 6.62 16.86C6.17 17.55 5.66 18.04 5.19 18.3C4.71 18.56 4.27 18.59 3.96 18.4C3.64 18.22 3.44 17.82 3.43 17.28C3.42 16.74 3.59 16.06 3.96 15.32C4.32 14.59 4.89 13.81 5.61 13.08C6.33 12.35 7.21 11.67 8.16 11.12C9.11 10.57 10.14 10.15 11.13 9.89C12.13 9.63 13.08 9.53 13.9 9.58C14.72 9.63 15.4 9.82 15.86 10.11C16.32 10.39 16.57 10.75 16.57 11.12C16.57 11.49 16.32 11.85 15.86 12.13C15.4 12.42 14.72 12.61 13.9 12.66C13.08 12.71 12.13 12.61 11.13 12.35C10.14 12.09 9.11 11.67 8.16 11.12C7.21 10.57 6.33 9.89 5.61 9.16C4.89 8.43 4.32 7.65 3.96 6.92C3.59 6.18 3.42 5.5 3.43 4.96C3.44 4.42 3.64 4.02 3.96 3.84C4.27 3.65 4.71 3.68 5.19 3.94C5.66 4.2 6.17 4.69 6.62 5.38C7.07 6.06 7.47 6.94 7.74 7.93C8.01 8.92 8.16 10.02 8.16 11.12C8.16 12.22 8.01 13.32 7.74 14.31C7.47 15.3 7.07 16.18 6.62 16.86C6.17 17.55 5.66 18.04 5.19 18.3C4.71 18.56 4.27 18.59 3.96 18.4C3.64 18.22 3.44 17.82 3.43 17.28C3.42 16.74 3.59 16.06 3.96 15.32C4.32 14.59 4.89 13.81 5.61 13.08C6.33 12.35 7.21 11.67 8.16 11.12C9.11 10.57 10.14 10.15 11.13 9.89C12.13 9.63 13.08 9.53 13.9 9.58C14.72 9.63 15.4 9.82 15.86 10.11C16.32 10.39 16.57 10.75 16.57 11.12\"/>`,\n curveSpiral: `<path d=\"M10.77 12.22C10.92 12.38 11.02 12.66 10.97 12.97C10.93 13.28 10.74 13.62 10.42 13.86C10.09 14.1 9.63 14.24 9.13 14.18C8.63 14.13 8.1 13.88 7.69 13.45C7.29 13.01 7 12.38 6.97 11.68C6.94 10.98 7.15 10.22 7.63 9.58C8.11 8.94 8.85 8.43 9.73 8.21C10.6 7.99 11.6 8.08 12.51 8.5C13.42 8.93 14.22 9.7 14.71 10.69C15.19 11.68 15.35 12.89 15.09 14.07C14.83 15.24 14.14 16.38 13.12 17.2C12.1 18.02 10.75 18.51 9.34 18.52C7.93 18.53 6.47 18.04 5.28 17.11C4.09 16.18 3.19 14.8 2.81 13.23C2.43 11.66 2.59 9.91 3.31 8.35C4.03 6.79 5.31 5.44 6.94 4.61C8.56 3.79 10.51 3.51 12.4 3.89C14.28 4.27 16.08 5.31 17.39 6.85\"/>`,\n curveLissajous: `<path d=\"M10 11.12C11.66 12.23 13.32 13.33 14.61 14.33C15.91 15.33 16.84 16.22 17.21 16.91C17.58 17.6 17.39 18.09 16.67 18.33C15.95 18.58 14.71 18.58 13.21 18.33C11.71 18.09 9.97 17.6 8.35 16.91C6.73 16.22 5.25 15.33 4.21 14.33C3.18 13.33 2.6 12.23 2.6 11.12C2.6 10.01 3.18 8.91 4.21 7.91C5.25 6.91 6.73 6.02 8.35 5.33C9.97 4.64 11.71 4.15 13.21 3.91C14.71 3.66 15.95 3.66 16.67 3.91C17.39 4.15 17.58 4.64 17.21 5.33C16.84 6.02 15.91 6.91 14.61 7.91C13.32 8.91 11.66 10.01 10 11.12C8.34 12.23 6.68 13.33 5.39 14.33C4.09 15.33 3.16 16.22 2.79 16.91C2.42 17.6 2.61 18.09 3.33 18.33C4.05 18.58 5.29 18.58 6.79 18.33C8.29 18.09 10.03 17.6 11.65 16.91C13.27 16.22 14.75 15.33 15.79 14.33C16.82 13.33 17.4 12.23 17.4 11.12C17.4 10.01 16.82 8.91 15.79 7.91C14.75 6.91 13.27 6.02 11.65 5.33C10.03 4.64 8.29 4.15 6.79 3.91C5.29 3.66 4.05 3.66 3.33 3.91C2.61 4.15 2.42 4.64 2.79 5.33C3.16 6.02 4.09 6.91 5.39 7.91C6.68 8.91 8.34 10.01 10 11.12\"/>`,\n curveCycloid: `<path d=\"M2.6 15.72C2.6 15.72 2.6 15.49 2.66 15.05C2.71 14.61 2.82 13.98 3.03 13.22C3.23 12.46 3.53 11.59 3.94 10.72C4.36 9.85 4.88 8.98 5.49 8.22C6.11 7.46 6.82 6.83 7.59 6.39C8.36 5.95 9.18 5.72 10 5.72C10.82 5.72 11.64 5.95 12.41 6.39C13.18 6.83 13.89 7.46 14.51 8.22C15.12 8.98 15.64 9.85 16.06 10.72C16.47 11.59 16.77 12.46 16.97 13.22C17.18 13.98 17.29 14.61 17.34 15.05C17.4 15.49 17.4 15.72 17.4 15.72\"/>`,\n curveSuperellipse: `<path d=\"M17.4 11.12C17.4 14.45 17.38 12.98 17.34 13.46C17.31 13.94 17.25 14.34 17.17 14.69C17.1 15.05 17 15.37 16.89 15.66C16.78 15.94 16.64 16.21 16.49 16.44C16.34 16.68 16.16 16.9 15.97 17.09C15.78 17.28 15.56 17.46 15.32 17.61C15.09 17.76 14.82 17.9 14.54 18.01C14.25 18.12 13.93 18.22 13.57 18.29C13.22 18.37 12.82 18.43 12.34 18.46C11.86 18.5 13.33 18.52 10 18.52C6.67 18.52 8.14 18.5 7.66 18.46C7.18 18.43 6.78 18.37 6.43 18.29C6.07 18.22 5.75 18.12 5.46 18.01C5.18 17.9 4.91 17.76 4.68 17.61C4.44 17.46 4.22 17.28 4.03 17.09C3.84 16.9 3.66 16.68 3.51 16.44C3.36 16.21 3.22 15.94 3.11 15.66C3 15.37 2.9 15.05 2.83 14.69C2.75 14.34 2.69 13.94 2.66 13.46C2.62 12.98 2.6 14.45 2.6 11.12C2.6 7.79 2.62 9.26 2.66 8.78C2.69 8.3 2.75 7.9 2.83 7.55C2.9 7.19 3 6.87 3.11 6.58C3.22 6.3 3.36 6.03 3.51 5.8C3.66 5.56 3.84 5.34 4.03 5.15C4.22 4.96 4.44 4.78 4.68 4.63C4.91 4.48 5.18 4.34 5.46 4.23C5.75 4.12 6.07 4.02 6.43 3.95C6.78 3.87 7.18 3.81 7.66 3.78C8.14 3.74 6.67 3.72 10 3.72C13.33 3.72 11.86 3.74 12.34 3.78C12.82 3.81 13.22 3.87 13.57 3.95C13.93 4.02 14.25 4.12 14.54 4.23C14.82 4.34 15.09 4.48 15.32 4.63C15.56 4.78 15.78 4.96 15.97 5.15C16.16 5.34 16.34 5.56 16.49 5.8C16.64 6.03 16.78 6.3 16.89 6.58C17 6.87 17.1 7.19 17.17 7.55C17.25 7.9 17.31 8.3 17.34 8.78C17.38 9.26 17.4 7.79 17.4 11.12\"/>`,\n curveTangent: `<path d=\"M2.6 10.72C2.66 10.67 2.82 10.51 2.93 10.4C3.04 10.29 3.16 10.18 3.27 10.06C3.38 9.94 3.49 9.82 3.6 9.69C3.71 9.56 3.82 9.43 3.93 9.28C4.04 9.13 4.15 8.97 4.26 8.78C4.38 8.59 4.49 8.4 4.6 8.14C4.71 7.89 4.82 7.64 4.93 7.26C5.04 6.88 5.21 6.12 5.26 5.89M7.34 15.55C7.45 15.17 7.78 13.86 8 13.3C8.22 12.73 8.45 12.48 8.67 12.16C8.89 11.84 9.11 11.62 9.33 11.38C9.56 11.14 9.78 10.94 10 10.72C10.22 10.5 10.44 10.3 10.67 10.06C10.89 9.82 11.11 9.6 11.33 9.28C11.55 8.96 11.78 8.71 12 8.14C12.22 7.58 12.55 6.27 12.66 5.89M14.74 15.55C14.79 15.32 14.96 14.56 15.07 14.18C15.18 13.8 15.29 13.55 15.4 13.3C15.51 13.04 15.62 12.85 15.73 12.66C15.85 12.47 15.96 12.31 16.07 12.16C16.18 12.01 16.29 11.88 16.4 11.75C16.51 11.62 16.62 11.5 16.73 11.38C16.85 11.26 16.96 11.15 17.07 11.04C17.18 10.93 17.34 10.77 17.4 10.72\"/>`,\n curveCotangent: `<path d=\"M3.64 5.89C3.75 6.27 4.08 7.58 4.3 8.14C4.52 8.71 4.75 8.96 4.97 9.28C5.19 9.6 5.41 9.82 5.63 10.06C5.86 10.3 6.08 10.5 6.3 10.72C6.52 10.94 6.74 11.14 6.97 11.38C7.19 11.62 7.41 11.84 7.63 12.16C7.85 12.48 8.08 12.73 8.3 13.3C8.52 13.86 8.85 15.17 8.96 15.55M11.04 5.89C11.15 6.27 11.48 7.58 11.7 8.14C11.92 8.71 12.15 8.96 12.37 9.28C12.59 9.6 12.81 9.82 13.03 10.06C13.26 10.3 13.48 10.5 13.7 10.72C13.92 10.94 14.14 11.14 14.37 11.38C14.59 11.62 14.81 11.84 15.03 12.16C15.25 12.48 15.48 12.73 15.7 13.3C15.92 13.86 16.25 15.17 16.36 15.55\"/>`,\n curveSecant: `<path d=\"M2.6 12.64C2.66 12.65 2.82 12.65 2.93 12.66C3.04 12.68 3.16 12.69 3.27 12.72C3.38 12.75 3.49 12.78 3.6 12.83C3.71 12.88 3.82 12.93 3.93 13C4.04 13.07 4.15 13.14 4.26 13.25C4.38 13.35 4.49 13.47 4.6 13.63C4.71 13.79 4.82 13.95 4.93 14.22C5.04 14.49 5.2 15.01 5.26 15.24C5.33 15.46 5.33 15.51 5.34 15.56M7.26 5.88C7.37 6.18 7.71 7.28 7.93 7.7C8.15 8.12 8.37 8.23 8.59 8.39C8.82 8.56 9.04 8.63 9.26 8.7C9.48 8.76 9.7 8.79 9.93 8.8C10.15 8.8 10.37 8.79 10.59 8.73C10.81 8.68 11.04 8.62 11.26 8.49C11.48 8.35 11.7 8.24 11.92 7.91C12.15 7.58 12.45 6.82 12.59 6.48C12.73 6.15 12.71 5.98 12.74 5.88M14.66 15.56C14.72 15.37 14.88 14.7 15 14.4C15.11 14.1 15.22 13.92 15.33 13.74C15.44 13.56 15.55 13.44 15.66 13.32C15.77 13.2 15.88 13.12 15.99 13.05C16.11 12.97 16.22 12.91 16.33 12.86C16.44 12.81 16.55 12.77 16.66 12.74C16.77 12.71 16.88 12.69 16.99 12.67C17.1 12.66 17.26 12.65 17.33 12.64C17.39 12.64 17.39 12.64 17.4 12.64\"/>`,\n curveCosecant: `<path d=\"M3.56 15.56C3.67 15.26 4.01 14.16 4.23 13.74C4.45 13.32 4.67 13.21 4.89 13.05C5.12 12.88 5.34 12.81 5.56 12.74C5.78 12.68 6 12.65 6.23 12.64C6.45 12.64 6.67 12.65 6.89 12.71C7.11 12.76 7.34 12.82 7.56 12.95C7.78 13.09 8 13.2 8.22 13.53C8.45 13.86 8.75 14.62 8.89 14.96C9.03 15.29 9.01 15.46 9.04 15.56M10.96 5.88C11.07 6.18 11.41 7.28 11.63 7.7C11.85 8.12 12.07 8.23 12.29 8.39C12.52 8.56 12.74 8.63 12.96 8.7C13.18 8.76 13.4 8.79 13.63 8.8C13.85 8.8 14.07 8.79 14.29 8.73C14.51 8.68 14.74 8.62 14.96 8.49C15.18 8.35 15.4 8.24 15.62 7.91C15.85 7.58 16.15 6.82 16.29 6.48C16.43 6.15 16.41 5.98 16.44 5.88\"/>`,\n curveArcsine: `<path d=\"M2.6 15.72C2.85 15.38 3.59 14.16 4.08 13.67C4.57 13.18 5.07 13.04 5.56 12.77C6.05 12.49 6.55 12.26 7.04 12.03C7.53 11.8 8.03 11.58 8.52 11.36C9.01 11.14 9.51 10.93 10 10.72C10.49 10.51 10.99 10.3 11.48 10.08C11.97 9.86 12.47 9.64 12.96 9.41C13.45 9.18 13.95 8.95 14.44 8.67C14.93 8.4 15.43 8.26 15.92 7.77C16.41 7.28 17.15 6.06 17.4 5.72\"/>`,\n curveAsymptote: `<path d=\"M2.6 12.61C2.69 12.64 2.97 12.71 3.16 12.77C3.34 12.82 3.53 12.88 3.71 12.95C3.9 13.01 4.08 13.08 4.26 13.16C4.45 13.24 4.64 13.33 4.82 13.43C5.01 13.52 5.19 13.63 5.38 13.75C5.56 13.87 5.75 14 5.93 14.16C6.11 14.32 6.3 14.49 6.49 14.71C6.67 14.92 6.92 15.29 7.04 15.45C7.16 15.62 7.16 15.66 7.19 15.7M12.81 5.74C12.9 5.87 13.18 6.32 13.37 6.56C13.55 6.79 13.74 6.97 13.92 7.15C14.11 7.32 14.29 7.46 14.48 7.59C14.66 7.72 14.85 7.83 15.03 7.93C15.22 8.04 15.4 8.13 15.59 8.21C15.77 8.3 15.96 8.37 16.14 8.44C16.33 8.51 16.51 8.57 16.7 8.63C16.88 8.69 17.13 8.75 17.25 8.79C17.37 8.82 17.38 8.82 17.4 8.83\"/>`,\n\n // Shapes\n shapeTriangle: `<path d=\"M10 3.59L17.4 16.41L2.6 16.41Z\" stroke-linejoin=\"miter\"/>`,\n shapeRightTriangle: `<path d=\"M2.6 17.4L2.6 2.6L17.4 17.4Z\" stroke-linejoin=\"miter\"/>`,\n shapeSquare: `<path d=\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\" stroke-linejoin=\"miter\"/>`,\n shapeRectangle: `<path d=\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\" stroke-linejoin=\"miter\"/>`,\n shapeDiamond: `<path d=\"M10 2.6L17.4 10L10 17.4L2.6 10Z\" stroke-linejoin=\"miter\"/>`,\n shapeParallelogram: `<path d=\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\" stroke-linejoin=\"miter\"/>`,\n shapeTrapezoid: `<path d=\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\" stroke-linejoin=\"miter\"/>`,\n shapeKite: `<path d=\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\" stroke-linejoin=\"miter\"/>`,\n shapePentagon: `<path d=\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\" stroke-linejoin=\"miter\"/>`,\n shapeHexagon: `<path d=\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\" stroke-linejoin=\"miter\"/>`,\n shapeHexagonFlat: `<path d=\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\" stroke-linejoin=\"miter\"/>`,\n shapeHeptagon: `<path d=\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\" stroke-linejoin=\"miter\"/>`,\n shapeOctagon: `<path d=\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\" stroke-linejoin=\"miter\"/>`,\n shapeDecagon: `<path d=\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\" stroke-linejoin=\"miter\"/>`,\n shapeDodecagon: `<path d=\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\" stroke-linejoin=\"miter\"/>`,\n shapeCross: `<path d=\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\" stroke-linejoin=\"miter\"/>`,\n shapeLShape: `<path d=\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\" stroke-linejoin=\"miter\"/>`,\n shapeChevron: `<path d=\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\" stroke-linejoin=\"miter\"/>`,\n shapeStar: `<path d=\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\" stroke-linejoin=\"miter\"/>`,\n shapeStar4: `<path d=\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\" stroke-linejoin=\"miter\"/>`,\n shapeStar6: `<path d=\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\" stroke-linejoin=\"miter\"/>`,\n shapeStar8: `<path d=\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\" stroke-linejoin=\"miter\"/>`,\n shapePentagram: `<path d=\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\" stroke-linejoin=\"miter\"/>`,\n shapeCircle: `<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\"/>`,\n shapeEllipse: `<path d=\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\"/>`,\n shapeSemicircle: `<path d=\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\"/>`,\n shapeQuarter: `<path d=\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\"/>`,\n shapeStadium: `<path d=\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\"/>`,\n shapeRoundedSquare: `<path d=\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\"/>`,\n shapeRing: `<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\"/>`,\n shapeCrescent: `<path d=\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\"/>`,\n shapeLens: `<path d=\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\"/>`,\n shapeSector: `<path d=\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\"/>`,\n shapeSegment: `<path d=\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\"/>`,\n shapeArch: `<path d=\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\"/>`,\n shapeTeardrop: `<path d=\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\"/>`,\n shapeEgg: `<path d=\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\"/>`,\n shapeHeart: `<path d=\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\"/>`,\n shapeAngle: `<path d=\"M17.4 16.34L2.6 16.34L14.8 3.66M6.12 16.34A3.52 3.52 0 0 0 5.04 13.8\"/>`,\n\n // Platonic solids\n d4: `<path d=\"M2.6 14.47L10 3.31L17.4 14.47L10 16.69Z\" stroke-linejoin=\"miter\" stroke-width=\"1\"/><path d=\"M10 16.69L10 3.31\" stroke-width=\"0.6\"/>`,\n d6: `<path d=\"M3.59 6.3L10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7Z\" stroke-linejoin=\"miter\" stroke-width=\"1\"/><path d=\"M10 10L16.41 6.3M10 17.4L10 10M10 10L3.59 6.3\" stroke-width=\"0.6\"/>`,\n d8: `<path d=\"M2.85 9.6L10 2.6L17.15 10.4L10 17.4Z\" stroke-linejoin=\"miter\" stroke-width=\"1\"/><path d=\"M7.68 11.24L2.85 9.6M10 2.6L7.68 11.24M7.68 11.24L10 17.4M17.15 10.4L7.68 11.24\" stroke-width=\"0.6\"/>`,\n d12: `<path d=\"M2.96 7.71L5.65 4.01L10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29Z\" stroke-linejoin=\"miter\" stroke-width=\"1\"/><path d=\"M10 5.43L10 2.6M14.35 8.59L10 5.43M17.04 7.71L14.35 8.59M14.35 8.59L12.69 13.7M5.65 8.59L10 5.43M7.31 13.7L5.65 8.59M12.69 13.7L7.31 13.7M5.65 8.59L2.96 7.71M14.35 15.99L12.69 13.7M5.65 15.99L7.31 13.7\" stroke-width=\"0.6\"/>`,\n d20: `<path d=\"M3.59 13.7L3.59 6.3L10 2.6L16.41 6.3L16.41 13.7L10 17.4Z\" stroke-linejoin=\"miter\" stroke-width=\"1\"/><path d=\"M10 5.43L13.96 12.29M6.04 12.29L10 5.43M13.96 12.29L6.04 12.29M3.59 6.3L10 5.43M6.04 12.29L3.59 6.3M10 5.43L10 2.6M16.41 6.3L10 5.43M16.41 6.3L13.96 12.29M6.04 12.29L10 17.4M3.59 13.7L6.04 12.29M13.96 12.29L10 17.4M16.41 13.7L13.96 12.29\" stroke-width=\"0.6\"/>`,\n} as const;\n\n/** Every glyph name in the set. */\nexport type IconName = keyof typeof ICON_PATHS;\n\n/** The region a glyph encloses, for `<Icon filled>`. A shape fills its own\n * outline; a plotted curve fills down to the frame's baseline, reaching the outer\n * edge of the stroke rather than stopping at the path's own endpoint. Only the\n * glyphs where an enclosed region means something have an entry. */\nexport const ICON_FILLS = {\n arcStraight: `<path d=\"M1.85 15L2.6 15H17.4L18.15 15L18.15 15.75L1.85 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcParabola: `<path d=\"M2.31 15.69L2.6 15Q10 -5 17.4 15L17.69 15.69L17.69 15.75L2.31 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcCircle: `<path d=\"M2.52 15.75L2.6 15A7.4 7.4 0 0 1 17.4 15L17.48 15.75L17.48 15.75L2.52 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcSine: `<path d=\"M2.28 10.68L2.6 10C3.83 7.38 5.07 5 6.3 5C7.53 5 8.77 7.38 10 10C11.23 12.62 12.47 15 13.7 15C14.93 15 16.17 12.62 17.4 10L17.72 9.32L17.72 15.75L2.28 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcBump: `<path d=\"M1.87 15.18L2.6 15C3.83 15 5.07 11.87 6.3 9.38C7.53 6.88 8.77 5 10 5C11.23 5 12.47 6.88 13.7 9.38C14.93 11.87 16.17 15 17.4 15L18.13 15.18L18.13 15.75L1.87 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcPlateau: `<path d=\"M2.6 15.75L2.6 15V8.6A3.6 3.6 0 0 1 6.2 5H13.8A3.6 3.6 0 0 1 17.4 8.6V15L17.4 15.75L17.4 15.75L2.6 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcBell: `<path d=\"M1.86 15.13L2.6 15C3.42 14.87 4.24 14.6 5.07 13.65C5.89 12.7 6.71 10.87 7.53 8.87C8.36 6.86 9.18 5 10 5C10.82 5 11.64 6.86 12.47 8.87C13.29 10.87 14.11 12.7 14.93 13.65C15.76 14.6 16.58 14.87 17.4 15L18.14 15.13L18.14 15.75L1.86 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcEllipse: `<path d=\"M2.54 15.75L2.6 15A7.4 10 0 0 1 17.4 15L17.46 15.75L17.46 15.75L2.54 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcLob: `<path d=\"M2.5 15.74L2.6 15C3.78 -0.6 10.74 4.2 17.4 15L17.81 15.63L17.81 15.75L2.5 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcDive: `<path d=\"M2.19 15.63L2.6 15C9.26 4.2 16.22 -0.6 17.4 15L17.5 15.74L17.5 15.75L2.19 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcTriangle: `<path d=\"M2.15 10.6L2.6 10L6.3 5L13.7 15L17.4 10L17.85 9.4L17.85 15.75L2.15 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcSquare: `<path d=\"M2.6 10.75L2.6 10L2.6 5L10 5L10 15L17.4 15L17.4 10L17.4 9.25L17.4 15.75L2.6 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcSawtooth: `<path d=\"M1.98 10.42L2.6 10L10 5L10 15L17.4 10L18.02 9.58L18.02 15.75L1.98 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcStair: `<path d=\"M1.85 10L2.6 10L4.97 10L4.97 5L8.82 5L8.82 10L11.18 10L11.18 15L15.03 15L15.03 10L17.4 10L18.15 10L18.15 15.75L1.85 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcZigzag: `<path d=\"M2.34 10.7L2.6 10L4.45 5L8.15 15L10 10L11.85 5L15.55 15L17.4 10L17.66 9.3L17.66 15.75L2.34 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcRipple: `<path d=\"M2.43 10.73L2.6 10C3.22 7.38 3.83 5 4.45 5C5.07 5 5.68 7.38 6.3 10C6.92 12.62 7.53 15 8.15 15C8.77 15 9.38 12.62 10 10C10.62 7.38 11.23 5 11.85 5C12.47 5 13.08 7.38 13.7 10C14.32 12.62 14.93 15 15.55 15C16.17 15 16.78 12.62 17.4 10L17.57 9.27L17.57 15.75L2.43 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcHop: `<path d=\"M2.45 15.73L2.6 15Q6.3 -5 10 15L10.15 15.73L10.15 15.75L2.45 15.75ZM9.74 15.7L10 15Q13.7 4 17.4 15L17.66 15.7L17.66 15.75L9.74 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n arcCusp: `<path d=\"M1.94 15.35L2.6 15Q7.34 12.8 10 5Q12.66 12.8 17.4 15L18.06 15.35L18.06 15.75L1.94 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveLine: `<path d=\"M1.85 10.72L2.6 10.72H17.4L18.15 10.72L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveParabola: `<path d=\"M2.31 16.41L2.6 15.72Q10 -4.28 17.4 15.72L17.69 16.41L17.69 16.47L2.31 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCircle: `<path d=\"M2.52 16.47L2.6 15.72A7.4 7.4 0 0 1 17.4 15.72L17.48 16.47L17.48 16.47L2.52 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveEllipse: `<path d=\"M2.54 16.47L2.6 15.72A7.4 10 0 0 1 17.4 15.72L17.46 16.47L17.46 16.47L2.54 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveHyperbola: `<path d=\"M2.28 16.4L2.6 15.72C2.91 15.08 3.8 13.12 4.48 11.86C5.16 10.61 5.76 9.21 6.68 8.19C7.6 7.16 8.89 5.72 10 5.72C11.11 5.72 12.4 7.16 13.32 8.19C14.24 9.21 14.84 10.61 15.52 11.86C16.2 13.12 17.09 15.08 17.4 15.72L17.72 16.4L17.72 16.47L2.28 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCubic: `<path d=\"M2.22 16.37L2.6 15.72C2.88 15.27 3.59 13.78 4.3 13.01C5 12.24 5.89 11.49 6.84 11.11C7.79 10.73 8.95 10.85 10 10.72C11.05 10.59 12.21 10.71 13.16 10.33C14.11 9.95 15 9.2 15.7 8.43C16.41 7.66 17.12 6.17 17.4 5.72L17.78 5.07L17.78 16.47L2.22 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveQuartic: `<path d=\"M1.93 15.62L2.6 15.28C2.98 15.06 4.27 14.67 4.88 13.94C5.49 13.22 5.8 11.93 6.27 10.92C6.74 9.92 7.08 8.79 7.7 7.93C8.32 7.06 9.23 5.72 10 5.72C10.77 5.72 11.68 7.06 12.3 7.93C12.92 8.79 13.26 9.92 13.73 10.92C14.2 11.93 14.51 13.22 15.12 13.94C15.73 14.67 17.02 15.06 17.4 15.28L18.07 15.62L18.07 16.47L1.93 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSqrt: `<path d=\"M2.33 16.42L2.6 15.72C2.8 15.25 3.19 13.72 3.77 12.91C4.36 12.1 5.27 11.46 6.1 10.86C6.93 10.25 7.86 9.75 8.77 9.26C9.69 8.77 10.63 8.35 11.58 7.93C12.53 7.51 13.5 7.13 14.47 6.76C15.44 6.4 16.91 5.89 17.4 5.72L18.11 5.47L18.11 16.47L2.33 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveReciprocal: `<path d=\"M2.45 16.45L2.6 15.72C2.69 15.31 2.91 14.08 3.15 13.28C3.39 12.49 3.66 11.68 4.06 10.96C4.46 10.24 4.95 9.53 5.55 8.97C6.15 8.41 6.89 7.97 7.63 7.61C8.37 7.25 9.19 7.01 9.99 6.79C10.79 6.57 11.62 6.43 12.44 6.29C13.26 6.15 14.09 6.05 14.91 5.96C15.74 5.86 16.99 5.76 17.4 5.72L18.15 5.65L18.15 16.47L2.45 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveAbs: `<path d=\"M2.15 5.12L2.6 5.72L10 15.72L17.4 5.72L17.85 5.12L17.85 16.47L2.15 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCusp: `<path d=\"M1.94 16.07L2.6 15.72Q7.34 13.52 10 5.72Q12.66 13.52 17.4 15.72L18.06 16.07L18.06 16.47L1.94 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveExponential: `<path d=\"M1.86 15.83L2.6 15.72C3.12 15.64 4.69 15.47 5.72 15.26C6.74 15.04 7.78 14.79 8.76 14.42C9.73 14.05 10.7 13.59 11.57 13.01C12.44 12.44 13.26 11.74 13.98 10.99C14.7 10.23 15.32 9.37 15.89 8.49C16.46 7.61 17.15 6.18 17.4 5.72L17.75 5.06L17.75 16.47L1.86 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveLogarithm: `<path d=\"M2.38 16.44L2.6 15.72C2.72 15.34 3.01 14.18 3.35 13.47C3.68 12.76 4.11 12.07 4.61 11.46C5.11 10.86 5.72 10.32 6.35 9.85C6.97 9.37 7.67 8.98 8.37 8.61C9.07 8.25 9.81 7.94 10.55 7.66C11.28 7.37 12.04 7.12 12.79 6.89C13.55 6.66 14.32 6.45 15.09 6.26C15.85 6.06 17.01 5.81 17.4 5.72L18.13 5.55L18.13 16.47L2.38 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveDecay: `<path d=\"M2.27 5.05L2.6 5.72C2.84 6.19 3.5 7.64 4.06 8.53C4.61 9.43 5.22 10.31 5.94 11.08C6.65 11.85 7.47 12.56 8.34 13.13C9.22 13.71 10.2 14.16 11.19 14.52C12.17 14.88 13.22 15.11 14.26 15.31C15.29 15.51 16.88 15.65 17.4 15.72L18.14 15.81L18.14 16.47L2.27 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSigmoid: `<path d=\"M1.86 15.84L2.6 15.72C3.11 15.62 4.75 15.55 5.68 15.14C6.61 14.74 7.46 14.02 8.18 13.29C8.9 12.55 9.39 11.58 10 10.72C10.61 9.86 11.1 8.89 11.82 8.15C12.54 7.42 13.39 6.7 14.32 6.3C15.25 5.89 16.89 5.82 17.4 5.72L18.14 5.6L18.14 16.47L1.86 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSoftplus: `<path d=\"M1.85 15.74L2.6 15.72C3.13 15.7 4.74 15.73 5.79 15.62C6.85 15.5 7.95 15.42 8.92 15.03C9.89 14.65 10.79 14 11.59 13.32C12.38 12.63 13.03 11.75 13.7 10.93C14.37 10.1 14.97 9.22 15.59 8.35C16.2 7.48 17.1 6.16 17.4 5.72L17.82 5.1L17.82 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveRelu: `<path d=\"M1.85 15.72L2.6 15.72L10 15.72L17.4 5.72L17.85 5.12L17.85 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveStep: `<path d=\"M1.85 15.72L2.6 15.72L10 15.72L10 5.72L17.4 5.72L18.15 5.72L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curvePowerLaw: `<path d=\"M2.57 16.47L2.6 15.72C2.62 15.25 2.67 13.85 2.74 12.91C2.81 11.98 2.83 11.03 3.01 10.12C3.19 9.21 3.27 8.11 3.8 7.45C4.33 6.78 5.32 6.39 6.18 6.13C7.04 5.87 8.04 5.93 8.98 5.87C9.91 5.81 10.85 5.8 11.78 5.78C12.72 5.76 13.66 5.75 14.59 5.74C15.53 5.73 16.93 5.72 17.4 5.72L18.15 5.72L18.15 16.47L2.57 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCatenary: `<path d=\"M2.34 5.02L2.6 5.72C2.86 6.4 3.53 8.49 4.16 9.8C4.79 11.11 5.4 12.57 6.37 13.55C7.34 14.54 8.79 15.72 10 15.72C11.21 15.72 12.66 14.54 13.63 13.55C14.6 12.57 15.21 11.11 15.84 9.8C16.47 8.49 17.14 6.4 17.4 5.72L17.66 5.02L17.66 16.47L2.34 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveBathtub: `<path d=\"M2.46 4.98L2.6 5.72C2.71 6.29 2.98 8.02 3.27 9.14C3.57 10.27 3.81 11.47 4.37 12.45C4.92 13.43 5.67 14.5 6.61 15.04C7.55 15.59 8.87 15.72 10 15.72C11.13 15.72 12.45 15.59 13.39 15.04C14.33 14.5 15.08 13.43 15.63 12.45C16.19 11.47 16.43 10.27 16.73 9.14C17.02 8.02 17.29 6.29 17.4 5.72L17.54 4.98L17.54 16.47L2.46 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveHockeyStick: `<path d=\"M1.85 15.77L2.6 15.72C3.15 15.68 4.81 15.61 5.91 15.5C7.01 15.39 8.12 15.31 9.19 15.06C10.26 14.8 11.38 14.51 12.3 13.96C13.23 13.41 14.08 12.61 14.75 11.76C15.42 10.91 15.89 9.86 16.33 8.86C16.78 7.85 17.22 6.24 17.4 5.72L17.63 5.01L17.63 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSine: `<path d=\"M2.28 11.4L2.6 10.72C3.83 8.1 5.07 5.72 6.3 5.72C7.53 5.72 8.77 8.1 10 10.72C11.23 13.34 12.47 15.72 13.7 15.72C14.93 15.72 16.17 13.34 17.4 10.72L17.72 10.04L17.72 16.47L2.28 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCosine: `<path d=\"M1.86 5.58L2.6 5.72C3.83 5.72 5.07 8.1 6.3 10.72C7.53 13.34 8.77 15.72 10 15.72C11.23 15.72 12.47 13.34 13.7 10.72C14.93 8.1 16.17 5.72 17.4 5.72L18.14 5.58L18.14 16.47L1.86 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveRipple: `<path d=\"M2.43 11.45L2.6 10.72C3.22 8.1 3.83 5.72 4.45 5.72C5.07 5.72 5.68 8.1 6.3 10.72C6.92 13.34 7.53 15.72 8.15 15.72C8.77 15.72 9.38 13.34 10 10.72C10.62 8.1 11.23 5.72 11.85 5.72C12.47 5.72 13.08 8.1 13.7 10.72C14.32 13.34 14.93 15.72 15.55 15.72C16.17 15.72 16.78 13.34 17.4 10.72L17.57 9.99L17.57 16.47L2.43 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveTriangleWave: `<path d=\"M2.15 11.32L2.6 10.72L6.3 5.72L13.7 15.72L17.4 10.72L17.85 10.12L17.85 16.47L2.15 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSquareWave: `<path d=\"M2.6 11.47L2.6 10.72L2.6 5.72L10 5.72L10 15.72L17.4 15.72L17.4 10.72L17.4 9.97L17.4 16.47L2.6 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSawtooth: `<path d=\"M1.98 11.14L2.6 10.72L10 5.72L10 15.72L17.4 10.72L18.02 10.3L18.02 16.47L1.98 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveStair: `<path d=\"M1.85 10.72L2.6 10.72L4.97 10.72L4.97 5.72L8.82 5.72L8.82 10.72L11.18 10.72L11.18 15.72L15.03 15.72L15.03 10.72L17.4 10.72L18.15 10.72L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curvePulseTrain: `<path d=\"M1.85 10.72L2.6 10.72L4.23 10.72L4.23 5.72L6.3 5.72L6.3 10.72L8.96 10.72L8.96 5.72L11.04 5.72L11.04 10.72L13.7 10.72L13.7 5.72L15.77 5.72L15.77 10.72L17.4 10.72L18.15 10.72L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveDamped: `<path d=\"M2.05 5.21L2.6 5.72C2.95 6.01 3.3 6.7 3.66 7.55C4.01 8.39 4.36 9.37 4.71 10.24C5.07 11.11 5.42 11.86 5.77 12.37C6.12 12.87 6.48 13.13 6.83 13.15C7.18 13.17 7.53 12.96 7.89 12.63C8.24 12.3 8.59 11.86 8.94 11.42C9.3 10.99 9.65 10.57 10 10.25C10.35 9.94 10.7 9.72 11.06 9.63C11.41 9.54 11.76 9.56 12.11 9.67C12.47 9.77 12.82 9.96 13.17 10.16C13.52 10.36 13.88 10.57 14.23 10.75C14.58 10.93 14.93 11.08 15.29 11.16C15.64 11.25 15.99 11.28 16.34 11.26C16.7 11.24 17.05 11.17 17.4 11.09L18.13 10.93L18.13 16.47L2.05 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveGaussian: `<path d=\"M1.87 15.88L2.6 15.72C3.13 15.57 4.98 15.47 5.78 14.83C6.57 14.18 6.92 12.87 7.35 11.84C7.79 10.8 7.97 9.62 8.41 8.6C8.85 7.58 9.47 5.72 10 5.72C10.53 5.72 11.15 7.58 11.59 8.6C12.03 9.62 12.21 10.8 12.65 11.84C13.08 12.87 13.43 14.18 14.22 14.83C15.02 15.47 16.87 15.57 17.4 15.72L18.13 15.88L18.13 16.47L1.87 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveBimodal: `<path d=\"M2.03 16.21L2.6 15.72C2.95 15.39 4.21 14.57 4.67 13.73C5.14 12.89 5.17 11.7 5.39 10.68C5.62 9.66 5.69 8.28 6 7.6C6.31 6.92 6.93 6.26 7.24 6.61C7.56 6.96 7.69 8.66 7.9 9.68C8.12 10.7 8.19 11.81 8.54 12.75C8.89 13.7 9.51 15.36 10 15.36C10.49 15.36 11.11 13.7 11.46 12.75C11.81 11.81 11.88 10.7 12.1 9.68C12.31 8.66 12.44 6.96 12.76 6.61C13.07 6.26 13.69 6.92 14 7.6C14.31 8.28 14.38 9.66 14.61 10.68C14.83 11.7 14.86 12.89 15.33 13.73C15.79 14.57 17.05 15.39 17.4 15.72L17.97 16.21L17.97 16.47L2.03 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSkewed: `<path d=\"M2.31 16.41L2.6 15.72C2.76 15.32 3.35 14.19 3.58 13.35C3.82 12.5 3.87 11.55 4.02 10.65C4.17 9.75 4.22 8.78 4.5 7.96C4.79 7.14 5.26 5.74 5.71 5.75C6.15 5.76 6.71 7.24 7.15 8.03C7.6 8.82 7.92 9.69 8.38 10.47C8.85 11.25 9.32 12.06 9.94 12.71C10.56 13.36 11.3 13.96 12.09 14.37C12.88 14.78 13.8 15.01 14.69 15.2C15.57 15.39 16.95 15.46 17.4 15.52L18.15 15.6L18.15 16.47L2.31 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveLorentzian: `<path d=\"M1.86 15.82L2.6 15.72C3.06 15.64 4.52 15.6 5.35 15.26C6.18 14.92 7.02 14.36 7.57 13.66C8.11 12.96 8.34 11.97 8.62 11.08C8.89 10.2 8.99 9.25 9.22 8.35C9.45 7.46 9.74 5.72 10 5.72C10.26 5.72 10.55 7.46 10.78 8.35C11.01 9.25 11.11 10.2 11.38 11.08C11.66 11.97 11.89 12.96 12.43 13.66C12.98 14.36 13.82 14.92 14.65 15.26C15.48 15.6 16.94 15.64 17.4 15.72L18.14 15.82L18.14 16.47L1.86 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveOgive: `<path d=\"M1.85 15.78L2.6 15.72C3.13 15.66 4.83 15.71 5.79 15.34C6.75 14.97 7.64 14.25 8.35 13.48C9.05 12.71 9.45 11.64 10 10.72C10.55 9.8 10.95 8.73 11.65 7.96C12.36 7.19 13.25 6.47 14.21 6.1C15.17 5.73 16.87 5.78 17.4 5.72L18.15 5.66L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveUniform: `<path d=\"M2.6 16.47L2.6 15.72V9.32A3.6 3.6 0 0 1 6.2 5.72H13.8A3.6 3.6 0 0 1 17.4 9.32V15.72L17.4 16.47L17.4 16.47L2.6 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSinc: `<path d=\"M1.92 16.04L2.6 15.72C2.83 15.6 3.61 15.35 4.01 15.02C4.4 14.69 4.68 14.18 4.96 13.72C5.25 13.27 5.49 12.78 5.73 12.3C5.97 11.82 6.19 11.33 6.42 10.84C6.65 10.35 6.86 9.86 7.1 9.37C7.33 8.89 7.55 8.39 7.82 7.93C8.08 7.46 8.32 6.93 8.69 6.57C9.05 6.2 9.56 5.72 10 5.72C10.44 5.72 10.95 6.2 11.31 6.57C11.68 6.93 11.92 7.46 12.18 7.93C12.45 8.39 12.67 8.89 12.9 9.37C13.14 9.86 13.35 10.35 13.58 10.84C13.81 11.33 14.03 11.82 14.27 12.3C14.51 12.78 14.75 13.27 15.04 13.72C15.32 14.18 15.6 14.69 15.99 15.02C16.39 15.35 17.17 15.6 17.4 15.72L18.08 16.04L18.08 16.47L1.92 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveImpulse: `<path d=\"M1.85 15.72L2.6 15.72L9.7 15.72L10 5.72L10.3 15.72L17.4 15.72L18.15 15.72L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveEaseIn: `<path d=\"M1.85 15.74L2.6 15.72C3.13 15.7 4.75 15.75 5.8 15.62C6.86 15.49 7.94 15.31 8.93 14.94C9.91 14.57 10.87 14.01 11.72 13.38C12.56 12.75 13.31 11.95 14 11.14C14.7 10.34 15.29 9.43 15.86 8.53C16.42 7.63 17.14 6.19 17.4 5.72L17.76 5.06L17.76 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveEaseOut: `<path d=\"M2.24 16.38L2.6 15.72C2.86 15.25 3.58 13.81 4.14 12.91C4.71 12.01 5.3 11.1 6 10.3C6.69 9.49 7.44 8.69 8.28 8.06C9.13 7.43 10.09 6.87 11.07 6.5C12.06 6.13 13.14 5.95 14.2 5.82C15.25 5.69 16.87 5.74 17.4 5.72L18.15 5.7L18.15 16.47L2.24 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveEaseInOut: `<path d=\"M1.85 15.75L2.6 15.72C3 15.69 4.23 15.75 4.99 15.55C5.75 15.36 6.53 15.01 7.16 14.55C7.79 14.09 8.32 13.43 8.79 12.8C9.26 12.16 9.6 11.41 10 10.72C10.4 10.03 10.74 9.28 11.21 8.64C11.68 8.01 12.21 7.35 12.84 6.89C13.47 6.43 14.25 6.08 15.01 5.89C15.77 5.69 17 5.75 17.4 5.72L18.15 5.69L18.15 16.47L1.85 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveOvershoot: `<path d=\"M2.32 16.42L2.6 15.72C2.76 15.33 3.2 14.15 3.54 13.39C3.88 12.62 4.24 11.86 4.64 11.13C5.05 10.4 5.48 9.67 6 9.02C6.51 8.36 7.06 7.7 7.72 7.19C8.37 6.69 9.14 6.25 9.92 6.01C10.7 5.77 11.57 5.73 12.4 5.73C13.23 5.73 14.07 5.92 14.9 6C15.73 6.08 16.98 6.18 17.4 6.22L18.15 6.29L18.15 16.47L2.32 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveBounce: `<path d=\"M2.46 16.46L2.6 15.72Q6 -4.28 9.41 15.72L9.55 16.46L9.55 16.47L2.46 16.47ZM9.21 16.44L9.41 15.72Q11.63 6.72 13.85 15.72L14.05 16.44L14.05 16.47L9.21 16.47ZM13.57 16.41L13.85 15.72Q15.18 12.12 16.51 15.72L16.79 16.41L16.79 16.47L13.57 16.47ZM16.17 16.39L16.51 15.72Q16.96 14.72 17.4 15.72L17.73 16.39L17.73 16.47L16.17 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveElastic: `<path d=\"M2.33 16.42L2.6 15.72C2.91 15.01 3.22 13.44 3.53 11.66C3.83 9.87 4.14 7.89 4.45 6.23C4.76 4.58 5.07 3.25 5.38 2.45C5.68 1.65 5.99 1.37 6.3 1.5C6.61 1.63 6.92 2.17 7.23 2.85C7.53 3.53 7.84 4.35 8.15 5.07C8.46 5.79 8.77 6.41 9.07 6.82C9.38 7.24 9.69 7.44 10 7.46C10.31 7.47 10.62 7.31 10.93 7.06C11.23 6.81 11.54 6.48 11.85 6.18C12.16 5.87 12.47 5.59 12.77 5.39C13.08 5.18 13.39 5.06 13.7 5.02C14.01 4.99 14.32 5.03 14.62 5.11C14.93 5.2 15.24 5.33 15.55 5.45C15.86 5.58 16.17 5.71 16.47 5.8C16.78 5.9 17.09 5.96 17.4 5.99L18.15 6.07L18.15 16.47L2.33 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveLemniscate: `<path d=\"M17.4 11.12C17.4 11.98 16.91 12.8 16.23 13.25C15.54 13.7 14.73 13.8 14.01 13.7C13.29 13.6 12.66 13.3 12.11 12.95C11.57 12.6 11.1 12.19 10.65 11.76C10.21 11.34 9.79 10.9 9.35 10.48C8.9 10.05 8.43 9.64 7.89 9.29C7.34 8.94 6.71 8.64 5.99 8.54C5.27 8.44 4.46 8.54 3.77 8.99C3.09 9.44 2.6 10.26 2.6 11.12C2.6 11.98 3.09 12.8 3.77 13.25C4.46 13.7 5.27 13.8 5.99 13.7C6.71 13.6 7.34 13.3 7.89 12.95C8.43 12.6 8.9 12.19 9.35 11.76C9.79 11.34 10.21 10.9 10.65 10.48C11.1 10.05 11.57 9.64 12.11 9.29C12.66 8.94 13.29 8.64 14.01 8.54C14.73 8.44 15.54 8.54 16.23 8.99C16.91 9.44 17.4 10.26 17.4 11.12\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveCardioid: `<path d=\"M10 6.14C10 6.14 10 6.09 10.03 6C10.06 5.91 10.13 5.78 10.24 5.63C10.36 5.48 10.54 5.31 10.77 5.16C11.01 5.01 11.32 4.88 11.68 4.8C12.04 4.72 12.45 4.69 12.91 4.74C13.36 4.79 13.84 4.92 14.32 5.15C14.8 5.38 15.27 5.71 15.7 6.14C16.12 6.56 16.5 7.08 16.79 7.69C17.08 8.29 17.28 8.96 17.36 9.68C17.44 10.4 17.4 11.15 17.23 11.9C17.06 12.65 16.76 13.39 16.33 14.07C15.9 14.75 15.35 15.37 14.7 15.89C14.05 16.41 13.3 16.82 12.5 17.1C11.7 17.38 10.85 17.53 10 17.53C9.15 17.53 8.3 17.38 7.5 17.1C6.7 16.82 5.95 16.41 5.3 15.89C4.65 15.37 4.1 14.75 3.67 14.07C3.24 13.39 2.94 12.65 2.77 11.9C2.6 11.15 2.56 10.4 2.64 9.68C2.72 8.96 2.92 8.29 3.21 7.69C3.5 7.08 3.88 6.56 4.3 6.14C4.73 5.71 5.2 5.38 5.68 5.15C6.16 4.92 6.64 4.79 7.09 4.74C7.55 4.69 7.96 4.72 8.32 4.8C8.68 4.88 8.99 5.01 9.23 5.16C9.46 5.31 9.64 5.48 9.76 5.63C9.87 5.78 9.94 5.91 9.97 6C10 6.09 10 6.14 10 6.14\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveAstroid: `<path d=\"M17.4 11.12C17.4 11.12 17.02 11.13 16.37 11.34C15.72 11.55 14.81 11.97 13.92 12.62C13.02 13.27 12.15 14.14 11.5 15.04C10.85 15.93 10.43 16.84 10.22 17.49C10.01 18.14 10 18.52 10 18.52C10 18.52 9.99 18.14 9.78 17.49C9.57 16.84 9.15 15.93 8.5 15.04C7.85 14.14 6.98 13.27 6.08 12.62C5.19 11.97 4.28 11.55 3.63 11.34C2.98 11.13 2.6 11.12 2.6 11.12C2.6 11.12 2.98 11.11 3.63 10.9C4.28 10.69 5.19 10.27 6.08 9.62C6.98 8.97 7.85 8.1 8.5 7.2C9.15 6.31 9.57 5.4 9.78 4.75C9.99 4.1 10 3.72 10 3.72C10 3.72 10.01 4.1 10.22 4.75C10.43 5.4 10.85 6.31 11.5 7.2C12.15 8.1 13.02 8.97 13.92 9.62C14.81 10.27 15.72 10.69 16.37 10.9C17.02 11.11 17.4 11.12 17.4 11.12\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveRose: `<path d=\"M16.57 11.12C16.57 11.49 16.32 11.85 15.86 12.13C15.4 12.42 14.72 12.61 13.9 12.66C13.08 12.71 12.13 12.61 11.13 12.35C10.14 12.09 9.11 11.67 8.16 11.12C7.21 10.57 6.33 9.89 5.61 9.16C4.89 8.43 4.32 7.65 3.96 6.92C3.59 6.18 3.42 5.5 3.43 4.96C3.44 4.42 3.64 4.02 3.96 3.84C4.27 3.65 4.71 3.68 5.19 3.94C5.66 4.2 6.17 4.69 6.62 5.38C7.07 6.06 7.47 6.94 7.74 7.93C8.01 8.92 8.16 10.02 8.16 11.12C8.16 12.22 8.01 13.32 7.74 14.31C7.47 15.3 7.07 16.18 6.62 16.86C6.17 17.55 5.66 18.04 5.19 18.3C4.71 18.56 4.27 18.59 3.96 18.4C3.64 18.22 3.44 17.82 3.43 17.28C3.42 16.74 3.59 16.06 3.96 15.32C4.32 14.59 4.89 13.81 5.61 13.08C6.33 12.35 7.21 11.67 8.16 11.12C9.11 10.57 10.14 10.15 11.13 9.89C12.13 9.63 13.08 9.53 13.9 9.58C14.72 9.63 15.4 9.82 15.86 10.11C16.32 10.39 16.57 10.75 16.57 11.12C16.57 11.49 16.32 11.85 15.86 12.13C15.4 12.42 14.72 12.61 13.9 12.66C13.08 12.71 12.13 12.61 11.13 12.35C10.14 12.09 9.11 11.67 8.16 11.12C7.21 10.57 6.33 9.89 5.61 9.16C4.89 8.43 4.32 7.65 3.96 6.92C3.59 6.18 3.42 5.5 3.43 4.96C3.44 4.42 3.64 4.02 3.96 3.84C4.27 3.65 4.71 3.68 5.19 3.94C5.66 4.2 6.17 4.69 6.62 5.38C7.07 6.06 7.47 6.94 7.74 7.93C8.01 8.92 8.16 10.02 8.16 11.12C8.16 12.22 8.01 13.32 7.74 14.31C7.47 15.3 7.07 16.18 6.62 16.86C6.17 17.55 5.66 18.04 5.19 18.3C4.71 18.56 4.27 18.59 3.96 18.4C3.64 18.22 3.44 17.82 3.43 17.28C3.42 16.74 3.59 16.06 3.96 15.32C4.32 14.59 4.89 13.81 5.61 13.08C6.33 12.35 7.21 11.67 8.16 11.12C9.11 10.57 10.14 10.15 11.13 9.89C12.13 9.63 13.08 9.53 13.9 9.58C14.72 9.63 15.4 9.82 15.86 10.11C16.32 10.39 16.57 10.75 16.57 11.12\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n curveLissajous: `<path d=\"M10 11.12C11.66 12.23 13.32 13.33 14.61 14.33C15.91 15.33 16.84 16.22 17.21 16.91C17.58 17.6 17.39 18.09 16.67 18.33C15.95 18.58 14.71 18.58 13.21 18.33C11.71 18.09 9.97 17.6 8.35 16.91C6.73 16.22 5.25 15.33 4.21 14.33C3.18 13.33 2.6 12.23 2.6 11.12C2.6 10.01 3.18 8.91 4.21 7.91C5.25 6.91 6.73 6.02 8.35 5.33C9.97 4.64 11.71 4.15 13.21 3.91C14.71 3.66 15.95 3.66 16.67 3.91C17.39 4.15 17.58 4.64 17.21 5.33C16.84 6.02 15.91 6.91 14.61 7.91C13.32 8.91 11.66 10.01 10 11.12C8.34 12.23 6.68 13.33 5.39 14.33C4.09 15.33 3.16 16.22 2.79 16.91C2.42 17.6 2.61 18.09 3.33 18.33C4.05 18.58 5.29 18.58 6.79 18.33C8.29 18.09 10.03 17.6 11.65 16.91C13.27 16.22 14.75 15.33 15.79 14.33C16.82 13.33 17.4 12.23 17.4 11.12C17.4 10.01 16.82 8.91 15.79 7.91C14.75 6.91 13.27 6.02 11.65 5.33C10.03 4.64 8.29 4.15 6.79 3.91C5.29 3.66 4.05 3.66 3.33 3.91C2.61 4.15 2.42 4.64 2.79 5.33C3.16 6.02 4.09 6.91 5.39 7.91C6.68 8.91 8.34 10.01 10 11.12\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n curveCycloid: `<path d=\"M2.59 16.47L2.6 15.72C2.6 15.72 2.6 15.49 2.66 15.05C2.71 14.61 2.82 13.98 3.03 13.22C3.23 12.46 3.53 11.59 3.94 10.72C4.36 9.85 4.88 8.98 5.49 8.22C6.11 7.46 6.82 6.83 7.59 6.39C8.36 5.95 9.18 5.72 10 5.72C10.82 5.72 11.64 5.95 12.41 6.39C13.18 6.83 13.89 7.46 14.51 8.22C15.12 8.98 15.64 9.85 16.06 10.72C16.47 11.59 16.77 12.46 16.97 13.22C17.18 13.98 17.29 14.61 17.34 15.05C17.4 15.49 17.4 15.72 17.4 15.72L17.41 16.47L17.41 16.47L2.59 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveSuperellipse: `<path d=\"M17.4 11.12C17.4 14.45 17.38 12.98 17.34 13.46C17.31 13.94 17.25 14.34 17.17 14.69C17.1 15.05 17 15.37 16.89 15.66C16.78 15.94 16.64 16.21 16.49 16.44C16.34 16.68 16.16 16.9 15.97 17.09C15.78 17.28 15.56 17.46 15.32 17.61C15.09 17.76 14.82 17.9 14.54 18.01C14.25 18.12 13.93 18.22 13.57 18.29C13.22 18.37 12.82 18.43 12.34 18.46C11.86 18.5 13.33 18.52 10 18.52C6.67 18.52 8.14 18.5 7.66 18.46C7.18 18.43 6.78 18.37 6.43 18.29C6.07 18.22 5.75 18.12 5.46 18.01C5.18 17.9 4.91 17.76 4.68 17.61C4.44 17.46 4.22 17.28 4.03 17.09C3.84 16.9 3.66 16.68 3.51 16.44C3.36 16.21 3.22 15.94 3.11 15.66C3 15.37 2.9 15.05 2.83 14.69C2.75 14.34 2.69 13.94 2.66 13.46C2.62 12.98 2.6 14.45 2.6 11.12C2.6 7.79 2.62 9.26 2.66 8.78C2.69 8.3 2.75 7.9 2.83 7.55C2.9 7.19 3 6.87 3.11 6.58C3.22 6.3 3.36 6.03 3.51 5.8C3.66 5.56 3.84 5.34 4.03 5.15C4.22 4.96 4.44 4.78 4.68 4.63C4.91 4.48 5.18 4.34 5.46 4.23C5.75 4.12 6.07 4.02 6.43 3.95C6.78 3.87 7.18 3.81 7.66 3.78C8.14 3.74 6.67 3.72 10 3.72C13.33 3.72 11.86 3.74 12.34 3.78C12.82 3.81 13.22 3.87 13.57 3.95C13.93 4.02 14.25 4.12 14.54 4.23C14.82 4.34 15.09 4.48 15.32 4.63C15.56 4.78 15.78 4.96 15.97 5.15C16.16 5.34 16.34 5.56 16.49 5.8C16.64 6.03 16.78 6.3 16.89 6.58C17 6.87 17.1 7.19 17.17 7.55C17.25 7.9 17.31 8.3 17.34 8.78C17.38 9.26 17.4 7.79 17.4 11.12\" fill=\"currentColor\" stroke=\"none\"/>`,\n curveArcsine: `<path d=\"M2.17 16.33L2.6 15.72C2.85 15.38 3.59 14.16 4.08 13.67C4.57 13.18 5.07 13.04 5.56 12.77C6.05 12.49 6.55 12.26 7.04 12.03C7.53 11.8 8.03 11.58 8.52 11.36C9.01 11.14 9.51 10.93 10 10.72C10.49 10.51 10.99 10.3 11.48 10.08C11.97 9.86 12.47 9.64 12.96 9.41C13.45 9.18 13.95 8.95 14.44 8.67C14.93 8.4 15.43 8.26 15.92 7.77C16.41 7.28 17.15 6.06 17.4 5.72L17.83 5.11L17.83 16.47L2.17 16.47Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeTriangle: `<path d=\"M10 3.59L17.4 16.41L2.6 16.41Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeRightTriangle: `<path d=\"M2.6 17.4L2.6 2.6L17.4 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeSquare: `<path d=\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeRectangle: `<path d=\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeDiamond: `<path d=\"M10 2.6L17.4 10L10 17.4L2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeParallelogram: `<path d=\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeTrapezoid: `<path d=\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeKite: `<path d=\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapePentagon: `<path d=\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeHexagon: `<path d=\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeHexagonFlat: `<path d=\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeHeptagon: `<path d=\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeOctagon: `<path d=\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeDecagon: `<path d=\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeDodecagon: `<path d=\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeCross: `<path d=\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeLShape: `<path d=\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeChevron: `<path d=\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeStar: `<path d=\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeStar4: `<path d=\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeStar6: `<path d=\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeStar8: `<path d=\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapePentagram: `<path d=\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n shapeCircle: `<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeEllipse: `<path d=\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeSemicircle: `<path d=\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeQuarter: `<path d=\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeStadium: `<path d=\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeRoundedSquare: `<path d=\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeRing: `<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>`,\n shapeCrescent: `<path d=\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeLens: `<path d=\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeSector: `<path d=\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeSegment: `<path d=\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeArch: `<path d=\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeTeardrop: `<path d=\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeEgg: `<path d=\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeHeart: `<path d=\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n shapeAngle: `<path d=\"M2.6 16.34L17.4 16.34L14.8 3.66Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n d4: `<path d=\"M2.6 14.47L10 3.31L17.4 14.47L10 16.69Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n d6: `<path d=\"M3.59 6.3L10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n d8: `<path d=\"M2.85 9.6L10 2.6L17.15 10.4L10 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n d12: `<path d=\"M2.96 7.71L5.65 4.01L10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n d20: `<path d=\"M3.59 13.7L3.59 6.3L10 2.6L16.41 6.3L16.41 13.7L10 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>`,\n} as const;\n\n/** The glyphs `<Icon filled>` can shade. */\nexport type FillableIconName = keyof typeof ICON_FILLS;\n\n/** Every glyph in `ICON_PATHS`, once, sorted into the families it was drawn in. */\nexport const ICON_GROUPS: readonly { label: string; names: readonly IconName[] }[] = [\n {\n label: 'View and lifecycle',\n names: [\n 'clone',\n 'reset',\n 'close',\n 'export',\n 'zoomIn',\n 'zoomOut',\n 'fit',\n 'pan',\n ],\n },\n {\n label: 'Actions',\n names: [\n 'filter',\n 'add',\n 'remove',\n 'delete',\n 'sort',\n 'undo',\n 'redo',\n 'snapshot',\n ],\n },\n {\n label: 'Character styling',\n names: [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'overline',\n 'superscript',\n 'subscript',\n 'code',\n ],\n },\n {\n label: 'Playback',\n names: [\n 'play',\n 'pause',\n 'stop',\n 'stepBack',\n 'stepForward',\n ],\n },\n {\n label: 'State',\n names: [\n 'lock',\n 'unlock',\n 'visible',\n 'hidden',\n 'pin',\n 'info',\n 'warning',\n 'error',\n 'busy',\n 'check',\n 'modeLight',\n 'modeDark',\n 'modeAuto',\n ],\n },\n {\n label: 'Instrument',\n names: [\n 'crosshair',\n 'fullscreen',\n 'compare',\n 'search',\n 'loupe',\n 'layers',\n 'page',\n 'link',\n 'collapse',\n 'expand',\n 'chevron',\n 'tune',\n 'grid',\n 'snap',\n 'measure',\n 'randomize',\n 'refresh',\n ],\n },\n {\n label: 'Stroke cap, join, align and dash',\n names: [\n 'strokeWidth',\n 'strokeCap',\n 'strokeJoin',\n 'strokeAlign',\n 'capButt',\n 'capRound',\n 'capSquare',\n 'joinMiter',\n 'joinRound',\n 'joinBevel',\n 'alignInner',\n 'alignCenter',\n 'alignOuter',\n 'dashSolid',\n 'dashDashed',\n 'dashDotted',\n 'dashCustom',\n 'paintSolid',\n 'paintLinear',\n 'paintRadial',\n 'paintConic',\n 'paintMesh',\n 'paintPattern',\n 'paintNone',\n ],\n },\n {\n label: 'Workspace layout',\n names: [\n 'layoutRows',\n 'layoutColumns',\n 'layoutGrid',\n ],\n },\n {\n label: 'Arc profiles',\n names: [\n 'arcStraight',\n 'arcParabola',\n 'arcCircle',\n 'arcSine',\n 'arcBump',\n 'arcPlateau',\n 'arcBell',\n 'arcEllipse',\n 'arcLob',\n 'arcDive',\n 'arcTriangle',\n 'arcSquare',\n 'arcSawtooth',\n 'arcStair',\n 'arcZigzag',\n 'arcRipple',\n 'arcHop',\n 'arcCusp',\n ],\n },\n {\n label: 'Curves',\n names: [\n 'curveLine',\n 'curveParabola',\n 'curveCircle',\n 'curveEllipse',\n 'curveHyperbola',\n 'curveHyperbolaPair',\n 'curveCubic',\n 'curveQuartic',\n 'curveSqrt',\n 'curveReciprocal',\n 'curveAbs',\n 'curveCusp',\n 'curveExponential',\n 'curveLogarithm',\n 'curveDecay',\n 'curveSigmoid',\n 'curveSoftplus',\n 'curveRelu',\n 'curveStep',\n 'curvePowerLaw',\n 'curveCatenary',\n 'curveBathtub',\n 'curveHockeyStick',\n 'curveSine',\n 'curveCosine',\n 'curveRipple',\n 'curveTriangleWave',\n 'curveSquareWave',\n 'curveSawtooth',\n 'curveStair',\n 'curvePulseTrain',\n 'curveDamped',\n 'curveChirp',\n 'curveBeat',\n 'curveGaussian',\n 'curveBimodal',\n 'curveSkewed',\n 'curveLorentzian',\n 'curveOgive',\n 'curveUniform',\n 'curveSinc',\n 'curveImpulse',\n 'curveEaseIn',\n 'curveEaseOut',\n 'curveEaseInOut',\n 'curveOvershoot',\n 'curveBounce',\n 'curveElastic',\n 'curveLemniscate',\n 'curveCardioid',\n 'curveAstroid',\n 'curveRose',\n 'curveSpiral',\n 'curveLissajous',\n 'curveCycloid',\n 'curveSuperellipse',\n 'curveTangent',\n 'curveCotangent',\n 'curveSecant',\n 'curveCosecant',\n 'curveArcsine',\n 'curveAsymptote',\n ],\n },\n {\n label: 'Shapes',\n names: [\n 'shapeTriangle',\n 'shapeRightTriangle',\n 'shapeSquare',\n 'shapeRectangle',\n 'shapeDiamond',\n 'shapeParallelogram',\n 'shapeTrapezoid',\n 'shapeKite',\n 'shapePentagon',\n 'shapeHexagon',\n 'shapeHexagonFlat',\n 'shapeHeptagon',\n 'shapeOctagon',\n 'shapeDecagon',\n 'shapeDodecagon',\n 'shapeCross',\n 'shapeLShape',\n 'shapeChevron',\n 'shapeStar',\n 'shapeStar4',\n 'shapeStar6',\n 'shapeStar8',\n 'shapePentagram',\n 'shapeCircle',\n 'shapeEllipse',\n 'shapeSemicircle',\n 'shapeQuarter',\n 'shapeStadium',\n 'shapeRoundedSquare',\n 'shapeRing',\n 'shapeCrescent',\n 'shapeLens',\n 'shapeSector',\n 'shapeSegment',\n 'shapeArch',\n 'shapeTeardrop',\n 'shapeEgg',\n 'shapeHeart',\n 'shapeAngle',\n ],\n },\n {\n label: 'Platonic solids',\n names: [\n 'd4',\n 'd6',\n 'd8',\n 'd12',\n 'd20',\n ],\n },\n];\n","import type { SVGProps } from 'react';\nimport { ICON_FILLS, ICON_PATHS, type FillableIconName, type IconName } from './paths';\n\n/** Shared prop shape for the icon set. Color comes from the surrounding\n * `color` CSS property — every glyph strokes in `currentColor`. */\nexport interface IconProps {\n className?: string;\n /** Rendered pixel size, applied to both width and height. Defaults to 20. */\n size?: number;\n /** Accessible name. Omit inside a button that already labels itself; the\n * glyph is then `aria-hidden`. */\n label?: string;\n /** Shade the region the glyph encloses, in the same `currentColor` at\n * `fillOpacity`. Ignored by a glyph with no enclosed region — a spiral, or a\n * function with poles — so a caller can set it across a set without checking. */\n filled?: boolean;\n /** Tint strength for `filled`. */\n fillOpacity?: number;\n}\n\n/** True when `filled` will shade this glyph. */\nexport const isFillable = (name: IconName): name is FillableIconName => name in ICON_FILLS;\n\nconst SVG_BASE: SVGProps<SVGSVGElement> = {\n viewBox: '0 0 20 20',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.5,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n\n// React 19 rewrites innerHTML whenever this object's identity changes, and a\n// rewrite during a press removes the node pointerdown hit, so no click follows.\nconst markup = new Map<string, { __html: string }>();\nconst markupFor = (html: string) => {\n let m = markup.get(html);\n if (!m) markup.set(html, (m = { __html: html }));\n return m;\n};\n\n/** Renders one glyph by name. The named components below are the usual way\n * in; reach for this when the glyph is chosen at runtime. */\nexport function Icon({\n name,\n className,\n size = 20,\n label,\n filled = false,\n fillOpacity = 0.16,\n}: IconProps & { name: IconName }) {\n const shade = filled && isFillable(name) ? ICON_FILLS[name] : '';\n return (\n <svg\n {...SVG_BASE}\n className={className}\n width={size}\n height={size}\n // The shade is drawn first so the stroke sits on top of it, and the tint\n // rides on the root: the stroked paths inherit `fill=\"none\"`, so a fill\n // opacity here reaches only the shade.\n fillOpacity={shade ? fillOpacity : undefined}\n role={label ? 'img' : undefined}\n aria-label={label}\n aria-hidden={label ? undefined : true}\n // Glyph bodies are generated from scripts/icons/ and contain no\n // interpolated input.\n dangerouslySetInnerHTML={markupFor(shade + ICON_PATHS[name])}\n />\n );\n}\n"],"mappings":"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CA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO,40BA+DP;CACF;CACA;EACE,OAAO;EACP,OAAO,yhBAwCP;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;EACF;CACF;AACF,GC7mBaC,KAAc,MAA6CC,KAAQH,GAE1EI,IAAoC;CACxC,SAAS;CACT,MAAM;CACN,QAAQ;CACR,aAAa;CACb,eAAe;CACf,gBAAgB;AAClB,GAIMC,oBAAS,IAAI,IAAgC,GAC7CC,KAAa,MAAiB;CAClC,IAAIC,IAAIF,EAAO,IAAIG,CAAI;CAEvB,OADKD,KAAGF,EAAO,IAAIG,GAAO,IAAI,EAAE,QAAQA,EAAK,CAAE,GACxCD;AACT;AAIA,SAAgBE,EAAK,EACnB,SACA,cACA,UAAO,IACP,UACA,YAAS,IACT,iBAAc,OACmB;CACjC,IAAMC,IAAQC,KAAUT,EAAWC,CAAI,IAAIH,EAAWG,KAAQ;CAC9D,OACE,kBAAC,OAAD;EACE,GAAIC;EACO;EACX,OAAOQ;EACP,QAAQA;EAIR,aAAaF,IAAQG,IAAc,KAAA;EACnC,MAAMC,IAAQ,QAAQ,KAAA;EACtB,cAAYA;EACZ,eAAa,MAAQ,KAAA;EAGrB,yBAAyBR,EAAUI,IAAQZ,EAAWK,EAAK;CAC5D,CAAA;AAEL"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRange-eOj6JpJl.js","names":["range","shared","s","range_module_default","InlineRange_module_default","InlineRange","forwardRef","rest","props","span","max","min","filled","value","className","style"],"sources":["../../src/components/range.module.css","../../src/components/InlineRange/InlineRange.module.css","../../src/components/InlineRange/InlineRange.tsx"],"sourcesContent":["/* The one skin for a native <input type=\"range\">. Imported by InlineRange and\n by the property rows, which render the same DOM and used to carry three\n independently authored copies of these rules.\n\n The track is painted here rather than left to `accent-color`: a UA fills the\n left of the track with the accent but draws the remainder near-white on a\n dark surface whatever `color-scheme` says, and overriding the track's\n background removes the accent fill instead of recolouring the remainder. */\n.range {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-inline-size: 48px;\n /* The box is taller than the track so the thumb has room to spill; a surface\n where the element itself IS the track overrides this. */\n height: var(--wzl-range-box-h, 12px);\n margin: 0;\n padding: 0;\n /* Transparent so the track pseudo-element shows; a surface that paints the element itself overrides it. */\n background: var(--wzl-range-bg, transparent);\n cursor: pointer;\n}\n\n.range::-webkit-slider-runnable-track {\n height: var(--wzl-slider-track-h, 4px);\n border-radius: var(--wzl-radius-sm);\n background: var(\n --wzl-range-track-bg,\n color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-track-mix, 18%), transparent)\n );\n}\n\n.range::-moz-range-track {\n height: var(--wzl-slider-track-h, 4px);\n border-radius: var(--wzl-radius-sm);\n background: var(\n --wzl-range-track-bg,\n color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-track-mix, 18%), transparent)\n );\n}\n\n.range::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: var(--wzl-slider-thumb-size, 8px);\n height: var(--wzl-slider-thumb-size, 8px);\n border: none;\n border-radius: 50%;\n background: color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-thumb-mix, 70%), transparent);\n /* Centres an 8px thumb on a 4px track. Webkit does not centre it for you. */\n margin-top: calc((var(--wzl-slider-track-h, 4px) - var(--wzl-slider-thumb-size, 8px)) / 2);\n}\n\n.range::-moz-range-thumb {\n width: var(--wzl-slider-thumb-size, 8px);\n height: var(--wzl-slider-thumb-size, 8px);\n border: none;\n border-radius: 50%;\n background: color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-thumb-mix, 70%), transparent);\n}\n\n.range:focus-visible {\n outline: 2px solid var(--wzl-focus-ring);\n outline-offset: 2px;\n}\n\n.range:disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n/* Alpha variant: a fainter track, used where the row already carries a colour\n swatch and the slider must not compete with it. */\n.alpha::-webkit-slider-runnable-track {\n background: var(--wzl-range-track-bg, color-mix(in srgb, var(--wzl-accent) 10%, transparent));\n}\n\n.alpha::-moz-range-track {\n background: var(--wzl-range-track-bg, color-mix(in srgb, var(--wzl-accent) 10%, transparent));\n}\n\n/* A dead alpha track keeps its groove but loses its thumb, so the affordance\n reads inert rather than merely dimmed. Keyed off `:disabled`, which a color field\n already sets on the input — not off a class on the row. */\n.alpha:disabled::-webkit-slider-runnable-track,\n.alpha:disabled::-moz-range-track {\n background: color-mix(in srgb, var(--wzl-fg) 5%, transparent);\n}\n\n.alpha:disabled::-webkit-slider-thumb,\n.alpha:disabled::-moz-range-thumb {\n background: transparent;\n}\n","/* Track and thumb come from the shared range skin. What is local to\n InlineRange is the filled-to-N% paint, which no other surface has:\n `--slider-fill` carries the value, since no static rule expresses it. */\n.range {\n flex: 1;\n --wzl-range-bg: linear-gradient(\n to right,\n var(--wzl-accent) 0 var(--slider-fill, 0%),\n var(--wzl-border-strong) var(--slider-fill, 0%) 100%\n );\n --wzl-range-box-h: var(--wzl-slider-track-h);\n /* The gradient above IS the track, so the shared track paint must not land on top of it. */\n --wzl-range-track-bg: transparent;\n border-radius: var(--wzl-radius-pill);\n}\n","import { type CSSProperties, forwardRef, type InputHTMLAttributes, type Ref } from 'react';\nimport shared from '../range.module.css';\nimport s from './InlineRange.module.css';\n\n/** Props for {@link InlineRange} — a range input's, with `value` required. */\nexport type InlineRangeProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'min' | 'max'\n> & {\n value: number;\n min?: number;\n max?: number;\n};\n\n/**\n * Compact range input for a property row: one track, no label, no output.\n *\n * Distinct from the kit's other two — `Slider` is shaped for canvas scrubbing,\n * and `RangeSlider` is a full-width labelled form control on React Aria. This\n * one exists to sit inline beside a swatch or a readout, and to own the track\n * painting both of those surfaces need.\n */\nexport const InlineRange = forwardRef(function InlineRange(\n props: InlineRangeProps,\n ref: Ref<HTMLInputElement>,\n) {\n const { value, min = 0, max = 100, className, style, ...rest } = props;\n const span = max - min;\n const filled = span > 0 ? ((Math.min(Math.max(value, min), max) - min) / span) * 100 : 0;\n return (\n <input\n {...rest}\n ref={ref}\n type=\"range\"\n value={value}\n min={min}\n max={max}\n className={[shared.range, s.range, className].filter(Boolean).join(' ')}\n style={{ ['--slider-fill' as string]: `${filled}%`, ...style } as CSSProperties}\n />\n );\n});\n"],"mappings":";;;;;oCEsBaK,IAAcC,EAAW,SACpC,GACA,GACA;CACA,IAAM,EAAE,UAAO,SAAM,GAAG,SAAM,KAAK,cAAW,UAAO,GAAGC,MAASC,GAC3DC,IAAOC,IAAMC,GACbC,IAASH,IAAO,KAAM,KAAK,IAAI,KAAK,IAAII,GAAOF,CAAG,GAAGD,CAAG,IAAIC,KAAOF,IAAQ,MAAM;CACvF,OACE,kBAAC,SAAD;EACE,GAAIF;EACC;EACL,MAAK;EACE;EACF;EACA;EACL,WAAW;GAACN,EAAO;GAAOC,EAAE;GAAOY;EAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACtE,OAAO;GAAG,iBAA4B,GAAGF,EAAO;GAAI,GAAGG;EAAM;CAC9D,CAAA;AAEL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Keycaps-C0H_v2gO.js","names":["s","s","Fragment","Fragment$1","Keycaps_module_default","MOD_BY_PLATFORM","MODIFIER_LABELS","byPlatform","byLegend","detectPlatform","raw","keySpecsFromMods","platform","opts","legend","mods","label","m","NAMED_KEY","keySpecFromKey","entry","WIDE_GLYPHS","inferKeycapKind","KeyCap","resolvedStyle","font","style","className","variant","inverted","KeySequence","keys","ordered","a","b","k","sepIdx","showSep","separator","i","keySpecsFromShortcut","shortcut","key"],"sources":["../../src/components/Keycaps/Keycaps.module.css","../../src/components/Keycaps/keySpecsFromMods.ts","../../src/components/Keycaps/Keycap.tsx","../../src/components/Keycaps/Keycaps.tsx","../../src/components/Keycaps/keySpecsFromShortcut.ts"],"sourcesContent":["/* Keystroke \"key cap\" styling — each modifier and key in its own bordered chip. */\n.keys,\n.key {\n --key-h: var(--wzl-control-h-xs);\n}\n\n.keys {\n display: inline-flex;\n gap: 3px;\n /* Bottom-align so chips with text labels and chips with icon glyphs\n (arrows, modifier symbols) line up at the same bottom edge. Baseline\n drifts because text baselines sit above icon centers. */\n align-items: flex-end;\n /* When this whole sequence sits inline in surrounding text (e.g.\n \"Press <KeySequence> to confirm.\"), the row anchors to the\n surrounding line's bottom edge, not its baseline. */\n vertical-align: bottom;\n flex-wrap: wrap;\n}\n\n.keysEmpty {\n color: var(--wzl-fg-muted);\n}\n\n.sep {\n /* A key's height, so the glyph centers on the keys rather than riding the\n row's bottom edge. */\n display: inline-flex;\n align-items: center;\n height: var(--key-h);\n color: var(--wzl-fg-muted);\n font-size: var(--wzl-font-size-sm);\n line-height: 1;\n}\n\n.key {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n height: var(--key-h);\n padding: 0 var(--wzl-space-2);\n /* Light face, slightly-darker-than-face border, dark glyph — reads as\n a real keycap rather than a recessed slot in the panel. */\n background: var(--wzl-fg, #e6e7e9);\n border: 1px solid #25272c;\n border-bottom-width: 2px;\n border-radius: var(--wzl-radius-sm);\n color: var(--wzl-surface);\n /* Keycaps are a deliberate exception to the site theme — the design-\n system UI font (often a display face like Oswald) is wrong for\n keyboard chips. Use a neutral sans stack so labels read like real\n key legends. Consumers wanting a specific face per chip pass the\n `font` prop on KeyCap. */\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: var(--wzl-font-size-sm);\n font-weight: var(--wzl-font-weight-bold);\n line-height: 1;\n}\n\n/* Default chip is square — letters, digits, and single glyphs (⎋ ⌫ ↑ etc.)\n sit in a uniform key-cap box. */\n.key[data-kind='square'] {\n width: var(--key-h);\n padding: 0;\n}\n\n/* Modifiers (⌘ ⇪ ⌥ ⌃) are wider to match the visual weight of how they\n appear on a real keyboard — and to differentiate them from the keys\n they modify in a stack. */\n.key[data-kind='modifier'] {\n min-width: 26px;\n padding: 0 var(--wzl-space-3);\n}\n\n/* Tab / Enter / Space — actual wide keys on a real keyboard. */\n.key[data-kind='wide'] {\n min-width: 32px;\n padding: 0 var(--wzl-space-4);\n}\n\n/* Optional/inverted (default variant): face flips to dark; legend drops\n to 60% opacity; dotted border drops to 40% opacity. Three soft cues\n stacked for \"may be held but isn't required.\" */\n.key[data-inverted] {\n background: var(--wzl-surface);\n color: color-mix(in srgb, var(--wzl-fg, #e6e7e9) 60%, transparent);\n border-style: dotted;\n border-color: color-mix(in srgb, var(--wzl-fg, #e6e7e9) 40%, transparent);\n border-width: 1.5px;\n border-bottom-width: 1.5px;\n}\n\n/* Minimal variant — no fill, borders and legend follow currentColor.\n Useful inline in colored prose / next to colored badges where the\n chip should take the surrounding text color. */\n.key[data-variant='minimal'] {\n background: transparent;\n border-color: currentColor;\n color: currentColor;\n}\n\n/* Optional + minimal: dotted border at full currentColor, legend at full\n currentColor. The dotted pattern alone carries the \"optional\" cue here\n — minimal's whole point is to defer color to the surrounding context,\n so dimming would fight that. (Default variant uses graded opacity as a\n stacked cue; minimal keeps it crisp.) */\n.key[data-variant='minimal'][data-inverted] {\n border-style: dotted;\n border-color: currentColor;\n color: currentColor;\n border-width: 1.5px;\n border-bottom-width: 1.5px;\n}\n","import type { KeySpec } from './Keycaps';\n\n/** Logical modifier name. Matches the kit's `ModifierKey` in shape — kept as a\n * local type so `weasel-ui` stays independent of `@weasel-js/core`. */\nexport type LogicalMod = 'mod' | 'shift' | 'alt' | 'ctrl' | 'meta';\n\n/** Detected (or overridden) platform. `'mod'` resolves to ⌘ on macOS,\n * Ctrl on Windows / Linux. */\nexport type Platform = 'macos' | 'windows' | 'linux';\n\n/** Visual form of a modifier or named-key label.\n *\n * - `'auto'` (default): the per-entry, per-platform default — whatever\n * label is actually printed on the physical key. macOS keys show the\n * Apple glyphs (⌘ ⌥ ⌃ ⇧ ⎋ ↵ ⇥). Windows keys mostly show text\n * (Ctrl, Alt, Shift) BUT the Win key shows its logo (⊞) and the\n * context-menu key shows ▤. Linux mirrors Windows with Super (⊞).\n * - `'symbol'` forces the Apple-style glyph everywhere a symbolic form\n * exists. Entries without a widely-recognized symbol still fall\n * back to text.\n * - `'text'` always spells the label out (Cmd / Option / Esc / Enter). */\nexport type LegendStyle = 'auto' | 'symbol' | 'text';\n\n/** A modifier to render, named platform-independently. */\nexport interface LogicalModSpec {\n name: LogicalMod;\n /** Marks this modifier as optional (may be held but isn't required).\n * Forwarded as the resulting `KeySpec.optional`. */\n optional?: boolean;\n}\n\n/** Options for {@link keySpecsFromMods}. */\nexport interface KeySpecsFromModsOptions {\n /** Override OS detection. Defaults to the detected platform, or\n * `'macos'` when detection is unavailable (e.g. in tests, or when\n * `navigator` is missing). */\n platform?: Platform;\n /** Defaults to `'auto'` (symbol on macOS, text everywhere else). Pass\n * `'symbol'` or `'text'` to force a specific style regardless of\n * platform. */\n legend?: LegendStyle;\n}\n\nconst MOD_BY_PLATFORM: Record<LogicalMod, Record<Platform, Record<LegendStyle, string>>> = {\n mod: {\n macos: { auto: '⌘', symbol: '⌘', text: 'Cmd' },\n windows: { auto: 'Ctrl', symbol: 'Ctrl', text: 'Ctrl' },\n linux: { auto: 'Ctrl', symbol: 'Ctrl', text: 'Ctrl' },\n },\n shift: {\n macos: { auto: '⇧', symbol: '⇧', text: 'Shift' },\n windows: { auto: '⇧', symbol: '⇧', text: 'Shift' },\n linux: { auto: '⇧', symbol: '⇧', text: 'Shift' },\n },\n alt: {\n macos: { auto: '⌥', symbol: '⌥', text: 'Option' },\n windows: { auto: 'Alt', symbol: 'Alt', text: 'Alt' },\n linux: { auto: 'Alt', symbol: 'Alt', text: 'Alt' },\n },\n ctrl: {\n macos: { auto: '⌃', symbol: '⌃', text: 'Control' },\n windows: { auto: 'Ctrl', symbol: 'Ctrl', text: 'Ctrl' },\n linux: { auto: 'Ctrl', symbol: 'Ctrl', text: 'Ctrl' },\n },\n // Windows/Linux Meta has a recognized symbol on the physical key (⊞ Win\n // logo / Super logo), so `auto` shows it. Use `text` for Win / Super.\n meta: {\n macos: { auto: '⌘', symbol: '⌘', text: 'Cmd' },\n windows: { auto: '⊞', symbol: '⊞', text: 'Win' },\n linux: { auto: '⊞', symbol: '⊞', text: 'Super' },\n },\n};\n\n/** Every label {@link keySpecsFromMods} can produce, on any platform and legend. */\nexport const MODIFIER_LABELS: ReadonlySet<string> = new Set(\n Object.values(MOD_BY_PLATFORM).flatMap((byPlatform) =>\n Object.values(byPlatform).flatMap((byLegend) => Object.values(byLegend)),\n ),\n);\n\n/** Detect the user's OS from the browser environment. UA sniffing — not\n * 100% reliable, but adequate for picking a modifier-glyph convention.\n * Falls back to `'macos'` (matches the kit's docs convention) when\n * `navigator` is unavailable. */\nexport function detectPlatform(): Platform {\n if (typeof navigator === 'undefined') return 'macos';\n // Prefer the modern userAgentData when available (Chromium-only today).\n const uaData = (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData;\n const raw = (uaData?.platform ?? navigator.userAgent ?? '').toLowerCase();\n if (raw.includes('mac') || raw.includes('darwin') || raw.includes('iphone') || raw.includes('ipad')) return 'macos';\n if (raw.includes('win')) return 'windows';\n if (raw.includes('linux') || raw.includes('x11')) return 'linux';\n return 'macos';\n}\n\n/**\n * Map a list of **logical** modifiers (`'mod'`, `'shift'`, …) to **visual**\n * `KeySpec`s appropriate for the current platform.\n *\n * The kit-side gesture grammar uses logical names so the same route reads\n * correctly on every OS — `'mod'` means \"Cmd on Mac, Ctrl on Win/Linux\".\n * `KeySequence` is purely visual and renders the labels you give it; this\n * helper is the bridge.\n *\n * ```ts\n * <KeySequence\n * keys={keySpecsFromMods([{ name: 'mod' }, { name: 'shift', optional: true }])}\n * />\n * ```\n *\n * On a Mac: renders `⌘ ⇧`. On Windows: renders `Ctrl Shift`. Pass an\n * explicit `platform` to override detection (e.g. for docs that always\n * show the macOS form). Pass `legend: 'text'` to force \"Cmd\" over \"⌘\"\n * even on macOS.\n */\nexport function keySpecsFromMods(\n mods: readonly LogicalModSpec[],\n opts: KeySpecsFromModsOptions = {},\n): readonly KeySpec[] {\n const platform = opts.platform ?? detectPlatform();\n const legend = opts.legend ?? 'auto';\n return mods.map((m) => {\n const label = MOD_BY_PLATFORM[m.name][platform][legend];\n return m.optional ? { label, optional: true } : { label };\n });\n}\n\n/** Per-platform × per-legend table for named, non-modifier keys. `auto`\n * is whatever's printed on the physical key for that platform. Arrows\n * are universal symbols on every platform. */\nconst NAMED_KEY: Record<string, Record<Platform, Record<LegendStyle, string>>> = {\n Escape: { macos: { auto: '⎋', symbol: '⎋', text: 'Esc' }, windows: { auto: 'Esc', symbol: 'Esc', text: 'Esc' }, linux: { auto: 'Esc', symbol: 'Esc', text: 'Esc' } },\n Enter: { macos: { auto: '↵', symbol: '↵', text: 'Return' }, windows: { auto: 'Enter', symbol: 'Enter', text: 'Enter' }, linux: { auto: 'Enter', symbol: 'Enter', text: 'Enter' } },\n Return: { macos: { auto: '↵', symbol: '↵', text: 'Return' }, windows: { auto: 'Enter', symbol: 'Enter', text: 'Enter' }, linux: { auto: 'Enter', symbol: 'Enter', text: 'Enter' } },\n Tab: { macos: { auto: '⇥', symbol: '⇥', text: 'Tab' }, windows: { auto: 'Tab', symbol: 'Tab', text: 'Tab' }, linux: { auto: 'Tab', symbol: 'Tab', text: 'Tab' } },\n Space: { macos: { auto: '␣', symbol: '␣', text: 'Space' }, windows: { auto: 'Space', symbol: 'Space', text: 'Space' }, linux: { auto: 'Space', symbol: 'Space', text: 'Space' } },\n ' ': { macos: { auto: '␣', symbol: '␣', text: 'Space' }, windows: { auto: 'Space', symbol: 'Space', text: 'Space' }, linux: { auto: 'Space', symbol: 'Space', text: 'Space' } },\n Backspace: { macos: { auto: '⌫', symbol: '⌫', text: 'Backspace' }, windows: { auto: 'Backspace', symbol: 'Backspace', text: 'Backspace' }, linux: { auto: 'Backspace', symbol: 'Backspace', text: 'Backspace' } },\n Delete: { macos: { auto: '⌦', symbol: '⌦', text: 'Delete' }, windows: { auto: 'Delete', symbol: 'Delete', text: 'Delete' }, linux: { auto: 'Delete', symbol: 'Delete', text: 'Delete' } },\n // Context-menu key (the right-Ctrl-area key on Windows / Linux keyboards\n // with a ▤ icon). Mac has no equivalent; falls back to text 'Menu'.\n ContextMenu: { macos: { auto: 'Menu', symbol: 'Menu', text: 'Menu' }, windows: { auto: '▤', symbol: '▤', text: 'Menu' }, linux: { auto: '▤', symbol: '▤', text: 'Menu' } },\n ArrowUp: { macos: { auto: '↑', symbol: '↑', text: '↑' }, windows: { auto: '↑', symbol: '↑', text: '↑' }, linux: { auto: '↑', symbol: '↑', text: '↑' } },\n ArrowDown: { macos: { auto: '↓', symbol: '↓', text: '↓' }, windows: { auto: '↓', symbol: '↓', text: '↓' }, linux: { auto: '↓', symbol: '↓', text: '↓' } },\n ArrowLeft: { macos: { auto: '←', symbol: '←', text: '←' }, windows: { auto: '←', symbol: '←', text: '←' }, linux: { auto: '←', symbol: '←', text: '←' } },\n ArrowRight: { macos: { auto: '→', symbol: '→', text: '→' }, windows: { auto: '→', symbol: '→', text: '→' }, linux: { auto: '→', symbol: '→', text: '→' } },\n};\n\n/**\n * Render a raw `KeyboardEvent.key` value as a platform-appropriate\n * `KeySpec`. Named non-modifier keys (Esc, Enter, Tab, Space, Backspace,\n * Delete, arrows) get the platform's conventional form. Letter / digit /\n * other keys pass through upper-cased.\n *\n * ```ts\n * keySpecFromKey('Escape', { platform: 'macos' }) // { label: '⎋' }\n * keySpecFromKey('Escape', { platform: 'windows' }) // { label: 'Esc' }\n * keySpecFromKey('p') // { label: 'P' }\n * ```\n *\n * Symbol mode is only meaningful on macOS — Windows / Linux keyboards\n * print the text form on the physical key, so symbol mode there falls\n * back to text.\n */\nexport function keySpecFromKey(\n raw: string,\n opts: KeySpecsFromModsOptions & { optional?: boolean } = {},\n): KeySpec {\n const platform = opts.platform ?? detectPlatform();\n const legend = opts.legend ?? 'auto';\n const entry = NAMED_KEY[raw];\n const label = entry ? entry[platform][legend] : raw.length === 1 ? raw.toUpperCase() : raw;\n return opts.optional ? { label, optional: true } : { label };\n}\n","import type { CSSProperties } from 'react';\nimport s from './Keycaps.module.css';\nimport { MODIFIER_LABELS } from './keySpecsFromMods';\n\nconst WIDE_GLYPHS = new Set(['⇥', '↵', '␣']);\n\n/**\n * Width class of a keycap: a modifier glyph, a multi-character legend that\n * needs a wider chip, or a single character in a square one.\n */\nexport type KeycapKind = 'modifier' | 'wide' | 'square';\n\n/**\n * Picks the chip width for a legend — modifier glyphs and anything longer\n * than one character get the wider forms.\n */\nexport function inferKeycapKind(label: string): KeycapKind {\n if (label === '⇪' || MODIFIER_LABELS.has(label)) return 'modifier';\n if (WIDE_GLYPHS.has(label)) return 'wide';\n if (label.length > 1) return 'wide';\n return 'square';\n}\n\n/** Visual style of a keycap chip. */\nexport type KeyCapVariant = 'default' | 'minimal';\n\n/** Props for {@link KeyCap}. */\nexport interface KeyCapProps {\n /** Glyph rendered in the chip (modifier or key). */\n label: string;\n /** Marks the chip as not required to trigger the action. In the default\n * variant the chip face inverts (dark face / light glyph) for\n * emphasis. In the `'minimal'` variant the chip's border becomes\n * dotted to read as \"may be held, but isn't required.\" */\n inverted?: boolean;\n /** Visual style. `'default'` (default) renders a filled chip; `'minimal'`\n * renders an unfilled chip whose border and legend are `currentColor`\n * — useful inline in colored prose / next to colored badges where the\n * chip should take the surrounding text color. */\n variant?: KeyCapVariant;\n className?: string;\n /** Optional inline style. Useful for one-off width overrides (e.g.\n * building a keyboard-layout where the space bar spans several\n * standard-key widths). The component sets no inline styles of its\n * own — everything else comes from the CSS module. */\n style?: CSSProperties;\n /** Override the chip's font-family. Accepts any CSS font-family\n * string. When omitted, the chip inherits from the design-system\n * UI font token (`--wzl-font-ui`). Useful for one-off cases where\n * a different face is desired — though the canonical move is to\n * override the CSS variable at the consumer's scope, not the prop. */\n font?: string;\n}\n\n/** Single bordered keycap chip for one glyph (modifier or key). Use\n * `KeySequence` to render a full shortcut. */\nexport function KeyCap({ label, inverted = false, variant = 'default', className, style, font }: KeyCapProps) {\n const resolvedStyle = font ? { ...style, fontFamily: font } : style;\n return (\n <kbd\n className={[s.key, className].filter(Boolean).join(' ')}\n data-kind={inferKeycapKind(label)}\n data-variant={variant === 'default' ? undefined : variant}\n data-inverted={inverted || undefined}\n style={resolvedStyle}\n >\n {label}\n </kbd>\n );\n}\n","import { Fragment } from 'react';\nimport s from './Keycaps.module.css';\nimport { KeyCap, inferKeycapKind, type KeyCapVariant } from './Keycap';\n\n/** One key in a shortcut. */\nexport interface KeySpec {\n /** Glyph rendered in the chip (modifier or key). */\n label: string;\n /** When true, the chip renders inverted to mark it as not required to\n * trigger the action (e.g. an optional modifier). Defaults to false. */\n optional?: boolean;\n}\n\n/** Props for {@link KeySequence}. */\nexport interface KeySequenceProps {\n /** Keys to render. `undefined` or empty renders a muted em-dash.\n * Modifiers are always rendered first regardless of input order; relative\n * order within each group is preserved. */\n keys: readonly KeySpec[] | undefined;\n /** Character inserted between the trailing modifier chip and the first\n * non-modifier chip (e.g. `'+'` renders `⌘ + K`). `null` or `''`\n * suppresses it. Defaults to `'+'`. */\n separator?: string | null;\n /** Forwarded to every `KeyCap` in the sequence. `'minimal'` renders\n * unfilled chips whose border + legend are `currentColor`. */\n variant?: KeyCapVariant;\n /** Forwarded to every `KeyCap` in the sequence. Overrides the design-\n * system UI font for that chip only. */\n font?: string;\n className?: string;\n}\n\n/** Renders a shortcut as a row of `KeyCap` chips, one per key. Optional\n * keys render inverted to distinguish them from required ones. */\nexport function KeySequence({ keys, separator = '+', variant = 'default', font, className }: KeySequenceProps) {\n if (!keys || keys.length === 0) {\n return <span className={[s.keysEmpty, className].filter(Boolean).join(' ')}>—</span>;\n }\n const ordered = keys\n .map((k, i) => ({ k, i }))\n .sort((a, b) => {\n const am = inferKeycapKind(a.k.label) === 'modifier' ? 0 : 1;\n const bm = inferKeycapKind(b.k.label) === 'modifier' ? 0 : 1;\n return am - bm || a.i - b.i;\n })\n .map(({ k }) => k);\n const sepIdx = ordered.findIndex((k) => inferKeycapKind(k.label) !== 'modifier');\n const showSep = !!separator && sepIdx > 0 && sepIdx < ordered.length;\n return (\n <span className={[s.keys, className].filter(Boolean).join(' ')}>\n {ordered.map((k, i) => (\n <Fragment key={i}>\n {showSep && i === sepIdx ? <span className={s.sep}>{separator}</span> : null}\n <KeyCap label={k.label} inverted={k.optional ?? false} variant={variant} font={font} />\n </Fragment>\n ))}\n </span>\n );\n}\n","import type { ShortcutInput } from '../ToolPalette/formatShortcut';\nimport type { KeySpec } from './Keycaps';\nimport { keySpecFromKey, keySpecsFromMods, type KeySpecsFromModsOptions, type LogicalModSpec } from './keySpecsFromMods';\n\n/**\n * A shortcut as `KeySequence` keys, one per key: mod, shift, alt, then the\n * key, each in the platform's own legend (`⌘` on macOS, `Ctrl` elsewhere).\n * The `KeySpec` counterpart of `formatShortcutParts`, which always prints\n * macOS glyphs. `shift: 'optional'` becomes an optional key; a key list\n * renders its first key. Returns `undefined` for no shortcut.\n *\n * ```tsx\n * <KeySequence keys={keySpecsFromShortcut({ key: 'z', mod: true, shift: true })} />\n * ```\n */\nexport function keySpecsFromShortcut(\n shortcut: ShortcutInput | undefined,\n opts: KeySpecsFromModsOptions = {},\n): readonly KeySpec[] | undefined {\n if (!shortcut) return undefined;\n const mods: LogicalModSpec[] = [];\n if (shortcut.mod) mods.push({ name: 'mod' });\n if (shortcut.shift) mods.push(shortcut.shift === 'optional' ? { name: 'shift', optional: true } : { name: 'shift' });\n if (shortcut.alt) mods.push({ name: 'alt' });\n const key = typeof shortcut.key === 'string' ? shortcut.key : shortcut.key[0];\n const keys = keySpecsFromMods(mods, opts);\n return key === undefined ? keys : [...keys, keySpecFromKey(key, opts)];\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LayerList-nz-QYvTF.js","names":["stop","s","rows","_Fragment","dlog","LockIcon","CloseIcon","Button","useReorderDragList","Disclosure","DragGhost","DragHandleGlyph","ItemList_module_default","PropertyGroup","PropertyList","LayerList_module_default","moveLayers","move","reorder","items","item","moving","ids","kept","siblings","it","moved","at","index","collectCollapsed","isCollapsed","into","anyNested","hasBody","body","LayerList","props","toggled","setToggled","useState","collapsed","collapsedIds","toggle","next","id","prev","onCollapsedChange","live","useRef","press","onSelect","mods","locked","lockedIds","selectedIds","bodies","collectBodies","list","visible","walk","level","rowEls","focusId","setFocusId","pendingFocus","anchor","nudgers","el","tabStop","v","focusRow","selectRange","from","to","a","b","range","keys","e","go","branch","open","delta","parentId","shared","useId","palette","onAdd","addKinds","cls","className","title","kind","empty","Level","out","selected","drag","target","setEl","bind","node","cards","entry","kids","childId","path","onPointerDown","ghosted","isSelected","draggedIds","targetIndex","controls","Controls","head","Handle","stop","Grip","Remove","Fragment","i","ghost","onNudge","onVisibilityChange","onRemove","useSceneLayerList","args","build","scene","itemFor","selection","asNodeId","back","adapter","createMoveToIndexOp","label"],"sources":["../../src/components/LayerList/LayerList.module.css","../../src/components/LayerList/LayerList.tsx","../../src/components/LayerList/useSceneLayerList.ts"],"sourcesContent":["/* Row box, hover and selection are `ItemList`'s, so a layer list and the\n history list stacked under it agree. What is here is only what a layer has. */\n.root,\n.root * {\n box-sizing: border-box;\n}\n\n.root {\n display: grid;\n gap: var(--wzl-space-4);\n}\n\n.head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wzl-space-4);\n}\n\n.title {\n margin: 0;\n font-family: var(--wzl-font-display);\n font-weight: var(--wzl-font-weight-light);\n font-size: var(--wzl-font-size-lg);\n color: var(--wzl-fg);\n}\n\n.palette {\n display: flex;\n gap: var(--wzl-space-2);\n}\n\n.add {\n font: inherit;\n height: var(--wzl-control-h);\n background: transparent;\n border: 1px dashed var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n padding: var(--wzl-space-1) var(--wzl-space-4);\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-subtle);\n cursor: pointer;\n}\n\n.add:hover {\n background: var(--wzl-surface-raised);\n color: var(--wzl-fg);\n}\n\n.level {\n display: flex;\n flex-direction: column;\n gap: 1px;\n position: relative;\n width: 100%;\n}\n\n/* A level of cards is a `PropertyList`, so the controls in each body take the\n panel's density; its rows are spaced like cards rather than lines. */\n.level.cards {\n display: grid;\n row-gap: var(--wzl-space-3);\n}\n\n.entry {\n min-width: 0;\n}\n\n.row {\n user-select: none;\n}\n\n.row:focus-visible {\n outline: 2px solid var(--wzl-focus-ring);\n outline-offset: -2px;\n}\n\n/* A child's twisty sits under its parent's grip. */\n.children {\n padding-left: calc(var(--wzl-disclosure-target, var(--wzl-control-h-sm)) + var(--wzl-space-4));\n}\n\n/* The layer the drag picked up holds its place, faded, while its ghost follows the pointer. */\n.dragging {\n opacity: 0.5;\n}\n\n/* Where the drop would land: a line on the edge of the layer it would land against. */\n.dropBefore {\n box-shadow: 0 -2px 0 var(--wzl-accent);\n}\n\n.dropAfter {\n box-shadow: 0 2px 0 var(--wzl-accent);\n}\n\n/* One width for the grip and the lock, so a locked row's label lines up. */\n.grip,\n.lock {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n min-width: 13px;\n color: var(--wzl-fg-muted);\n}\n\n.row:not([data-locked]) {\n cursor: grab;\n}\n\n.row:not([data-locked]):active {\n cursor: grabbing;\n}\n\n.stop {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n}\n\n/* Holds the twisty column open on rows with nothing to expand, so labels line up down a level. */\n.twistyGap {\n flex: 0 0 auto;\n width: var(--wzl-disclosure-target, var(--wzl-control-h-sm));\n}\n\n/* Sized, so the empty column a locked row keeps is the checkbox's width. */\n.check {\n flex: 0 0 auto;\n width: 13px;\n height: 13px;\n margin: 0;\n accent-color: var(--wzl-accent);\n}\n\n.handle {\n font: inherit;\n background: transparent;\n border: 0;\n color: var(--wzl-fg-subtle);\n padding: var(--wzl-space-1) var(--wzl-space-2);\n cursor: grab;\n touch-action: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--wzl-icon-button-size);\n height: var(--wzl-icon-button-size);\n border-radius: var(--wzl-radius-sm);\n font-weight: var(--wzl-font-weight-bold);\n font-size: var(--wzl-font-size);\n}\n\n.card[data-tone] .handle {\n background: var(--wzl-tone);\n color: var(--wzl-fg-on-accent);\n}\n\n.handle:active {\n cursor: grabbing;\n}\n\n.entry[data-selected] > .card {\n outline: 2px solid var(--wzl-accent);\n outline-offset: -1px;\n}\n","import {\n type KeyboardEvent,\n type ReactNode,\n type RefCallback,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { dlog } from '../../dlog';\nimport { CloseIcon, LockIcon } from '../../icons';\nimport { type PressModifiers, useReorderDragList } from '../../useReorderDragList';\nimport { Button } from '../Button';\nimport { Disclosure } from '../Disclosure';\nimport { DragGhost } from '../DragGhost';\nimport { DragHandleGlyph } from '../DragHandleGlyph';\nimport rows from '../ItemList/ItemList.module.css';\nimport { PropertyGroup, PropertyList } from '../Properties';\nimport type { StanceProps } from '../stance';\nimport s from './LayerList.module.css';\n\n/** One layer. With a body (see `renderBody`) it draws as a card that folds its\n * body away; without one, as a one-line row. Either can hold child layers. */\nexport interface LayerListItem {\n id: string;\n /** The layer's name. Also what its controls are labeled by. */\n label: string;\n /** Shown in the header in place of `label` — a select that switches the\n * layer's kind, say. */\n title?: ReactNode;\n /** Fixed-size content before the label: a color swatch, a kind icon. */\n leading?: ReactNode;\n /** Drawn in the drag handle in place of the grip — an ordinal. */\n badge?: ReactNode;\n /** Which of its list this layer is: an index into the theme's tone list, or\n * a color. A card draws its edge and handle in it and recolors its controls. */\n tone?: StanceProps['tone'];\n /** Cannot be dragged, hidden or removed, walls off drops on either side, and\n * selects alone rather than joining a multi-selection. */\n locked?: boolean;\n /** Shown or not, when the list has `onVisibilityChange`. Default true. */\n visible?: boolean;\n children?: LayerListItem[];\n /** Folds the body and children away until the user opens them.\n * `collapsedIds` overrides it. */\n defaultCollapsed?: boolean;\n}\n\n/**\n * A reorder: `ids`, siblings under `parentId` (`null` at the top level), now\n * sit as one block in list order starting at `index` of the parent's children.\n * A drag never moves a layer to another parent.\n */\nexport interface LayerMove {\n ids: string[];\n parentId: string | null;\n index: number;\n}\n\n/** Props for `<LayerList>`. */\nexport interface LayerListProps {\n items: LayerListItem[];\n /** Omit for a list the user cannot reorder. */\n onReorder?: (move: LayerMove) => void;\n /** Giving both makes rows selectable: a click selects one, shift-click adds\n * or removes one, and dragging a selected row drags its selected siblings. */\n selectedIds?: readonly string[];\n onSelect?: (ids: string[]) => void;\n /** Adds a visibility checkbox to every unlocked layer. */\n onVisibilityChange?: (id: string, visible: boolean) => void;\n /** Adds a ✕ to every unlocked layer. */\n onRemove?: (id: string) => void;\n /** A layer's controls. Returning `null` leaves that layer a one-line row. */\n renderBody?: (item: LayerListItem) => ReactNode;\n /** Ids whose body and children are folded away. Giving it makes folding\n * controlled; `onCollapsedChange` fires either way. */\n collapsedIds?: readonly string[];\n onCollapsedChange?: (ids: string[]) => void;\n /** Heading above the list. */\n title?: string;\n /** Names the list for assistive tech when it has no `title`. */\n label?: string;\n /** Kinds the user can add, as buttons beside the title. Shown only with `onAdd`. */\n addKinds?: string[];\n onAdd?: (kind: string) => void;\n /** Shown in place of the list when `items` is empty. */\n empty?: ReactNode;\n /** Appended to the root's class list — the module's own names are hashed. */\n className?: string;\n}\n\n/** Returns `items` with `move` applied, for a consumer that holds the tree as state. */\nexport function moveLayers(items: LayerListItem[], move: LayerMove): LayerListItem[] {\n if (move.parentId === null) return reorder(items, move);\n return items.map((item) => {\n if (item.id === move.parentId) return { ...item, children: reorder(item.children ?? [], move) };\n return item.children ? { ...item, children: moveLayers(item.children, move) } : item;\n });\n}\n\nfunction reorder(siblings: LayerListItem[], { ids, index }: LayerMove): LayerListItem[] {\n const moving = new Set(ids);\n const kept = siblings.filter((it) => !moving.has(it.id));\n const moved = siblings.filter((it) => moving.has(it.id));\n const at = Math.max(0, Math.min(kept.length, index));\n return [...kept.slice(0, at), ...moved, ...kept.slice(at)];\n}\n\nfunction collectCollapsed(\n items: LayerListItem[],\n isCollapsed: (item: LayerListItem) => boolean,\n into = new Set<string>(),\n): Set<string> {\n for (const item of items) {\n if (isCollapsed(item)) into.add(item.id);\n if (item.children) collectCollapsed(item.children, isCollapsed, into);\n }\n return into;\n}\n\nfunction anyNested(items: LayerListItem[]): boolean {\n return items.some((it) => (it.children?.length ?? 0) > 0);\n}\n\n/** What every level of the tree reads from the list. */\ninterface Shared {\n props: LayerListProps;\n collapsed: ReadonlySet<string>;\n toggle: (id: string) => void;\n press: (item: LayerListItem, mods: PressModifiers) => void;\n uid: string;\n /** Some layer has children, so every row keeps a twisty column. */\n nested: boolean;\n /** Each layer's body, rendered once; a row where it is empty. */\n bodies: ReadonlyMap<string, ReactNode>;\n /** Per sibling group, keyed by parent: move a row one place, as its drag would. */\n nudgers: Map<string | null, (id: string, delta: -1 | 1) => boolean>;\n keys: RowKeys;\n}\n\n/** The roving focus over the rows: one row is in the tab order at a time. */\ninterface RowKeys {\n tabStop: string | undefined;\n register: (id: string) => (el: HTMLElement | null) => void;\n onKeyDown: (item: LayerListItem, parentId: string | null) => (e: KeyboardEvent<HTMLElement>) => void;\n onFocus: (id: string) => void;\n}\n\ninterface VisibleRow {\n item: LayerListItem;\n parentId: string | null;\n level: number;\n}\n\nfunction hasBody(body: ReactNode): boolean {\n return body !== null && body !== undefined && body !== false;\n}\n\n/**\n * An ordered, drag-reorderable list of layers — a document's objects, a lab's\n * canvases, a fill's effects. Each layer is a one-line row or, with a body, a\n * card whose controls fold away; either can nest child layers. Selection,\n * visibility, removal and an add palette are each on when their handler is given.\n */\nexport function LayerList(props: LayerListProps) {\n const { items, collapsedIds, onCollapsedChange, title, addKinds, onAdd, empty, className } = props;\n // Only the user's own toggles are state; everything else reads the layer's\n // `defaultCollapsed`, so a layer added later starts the way it asks to.\n const [toggled, setToggled] = useState<ReadonlyMap<string, boolean>>(new Map());\n const collapsed = collapsedIds\n ? new Set(collapsedIds)\n : collectCollapsed(items, (item) => toggled.get(item.id) ?? item.defaultCollapsed === true);\n const toggle = (id: string) => {\n const next = new Set(collapsed);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n if (!collapsedIds) setToggled((prev) => new Map(prev).set(id, next.has(id)));\n onCollapsedChange?.([...next]);\n };\n\n // The press arrives after the drag session ends, which can be after a render\n // the closure did not see, so it reads the selection from here.\n const live = useRef(props);\n live.current = props;\n const press = (item: LayerListItem, mods: PressModifiers) => {\n const { selectedIds = [], onSelect } = live.current;\n if (!onSelect) return;\n anchor.current = item.id;\n if (item.locked || !mods.shiftKey) {\n onSelect([item.id]);\n return;\n }\n // A leftover locked selection does not carry into a multi-selection.\n const locked = new Set(lockedIds(live.current.items));\n const kept = selectedIds.filter((id) => !locked.has(id));\n onSelect(kept.includes(item.id) ? kept.filter((id) => id !== item.id) : [...kept, item.id]);\n };\n\n const bodies = new Map<string, ReactNode>();\n const collectBodies = (list: LayerListItem[]) => {\n for (const it of list) {\n bodies.set(it.id, props.renderBody ? props.renderBody(it) : null);\n if (it.children) collectBodies(it.children);\n }\n };\n collectBodies(items);\n\n // The rows the arrow keys walk: open branches only, and not cards, whose\n // heads are their own controls.\n const visible: VisibleRow[] = [];\n const walk = (list: LayerListItem[], parentId: string | null, level: number) => {\n for (const item of list) {\n if (!hasBody(bodies.get(item.id))) visible.push({ item, parentId, level });\n if (item.children?.length && !collapsed.has(item.id)) walk(item.children, item.id, level + 1);\n }\n };\n walk(items, null, 1);\n\n const rowEls = useRef(new Map<string, HTMLElement>());\n const [focusId, setFocusId] = useState<string | null>(null);\n const pendingFocus = useRef<string | null>(null);\n const anchor = useRef<string | null>(null);\n const nudgers = useRef(new Map<string | null, (id: string, delta: -1 | 1) => boolean>()).current;\n useLayoutEffect(() => {\n const id = pendingFocus.current;\n if (id === null) return;\n pendingFocus.current = null;\n const el = rowEls.current.get(id);\n if (el && document.activeElement !== el) el.focus();\n });\n\n const selectedIds = props.selectedIds ?? [];\n const tabStop = visible.some((v) => v.item.id === focusId)\n ? (focusId ?? undefined)\n : (visible.find((v) => selectedIds.includes(v.item.id)) ?? visible[0])?.item.id;\n\n const focusRow = (id: string) => {\n pendingFocus.current = id;\n setFocusId(id);\n };\n // Locked rows never join a multi-selection, so a range passes over them.\n const selectRange = (to: string) => {\n const from = anchor.current ?? to;\n const a = visible.findIndex((v) => v.item.id === from);\n const b = visible.findIndex((v) => v.item.id === to);\n if (a < 0 || b < 0) return;\n const range = visible\n .slice(Math.min(a, b), Math.max(a, b) + 1)\n .filter((v) => !v.item.locked)\n .map((v) => v.item.id);\n if (range.length > 0) live.current.onSelect?.(range);\n };\n\n const keys: RowKeys = {\n tabStop,\n register: (id) => (el) => {\n if (el) rowEls.current.set(id, el);\n else rowEls.current.delete(id);\n },\n onFocus: (id) => {\n setFocusId(id);\n anchor.current ??= id;\n },\n onKeyDown: (item, parentId) => (e) => {\n // Keys on a control inside the row are the control's.\n if (e.target !== e.currentTarget) return;\n const at = visible.findIndex((v) => v.item.id === item.id);\n const go = (index: number) => {\n const next = visible[Math.max(0, Math.min(visible.length - 1, index))];\n if (!next) return;\n focusRow(next.item.id);\n if (e.shiftKey && props.onSelect) selectRange(next.item.id);\n else anchor.current = next.item.id;\n };\n const branch = (item.children?.length ?? 0) > 0;\n const open = branch && !collapsed.has(item.id);\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n const delta = e.key === 'ArrowDown' ? 1 : -1;\n if (e.altKey) {\n if (nudgers.get(parentId)?.(item.id, delta)) pendingFocus.current = item.id;\n } else {\n go(at + delta);\n }\n break;\n }\n case 'Home':\n go(0);\n break;\n case 'End':\n go(visible.length - 1);\n break;\n case 'ArrowRight':\n if (branch && !open) toggle(item.id);\n else if (open) go(at + 1);\n else return;\n break;\n case 'ArrowLeft':\n if (open) toggle(item.id);\n else if (parentId !== null) go(visible.findIndex((v) => v.item.id === parentId));\n else return;\n break;\n case 'Enter':\n case ' ':\n press(item, { shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, metaKey: e.metaKey, altKey: e.altKey });\n break;\n default:\n return;\n }\n e.preventDefault();\n },\n };\n\n const uid = useId();\n const shared: Shared = { props, collapsed, toggle, press, uid, nested: anyNested(items), bodies, nudgers, keys };\n const palette = onAdd ? (addKinds ?? []) : [];\n const cls = className ? `${s.root} ${className}` : s.root;\n\n return (\n <div className={cls}>\n {(title !== undefined || palette.length > 0) && (\n <div className={s.head}>\n {title !== undefined && <h2 className={s.title}>{title}</h2>}\n <div className={s.palette}>\n {palette.map((kind) => (\n <button\n key={kind}\n type=\"button\"\n className={s.add}\n aria-label={`Add ${kind}`}\n onClick={() => {\n dlog('layer-list', 'onAdd', { kind });\n onAdd?.(kind);\n }}\n >\n {kind}\n </button>\n ))}\n </div>\n </div>\n )}\n {items.length === 0 ? (\n <div className={rows.empty}>\n {empty ?? (palette.length > 0 ? 'No layers — add one above.' : 'No layers.')}\n </div>\n ) : (\n <Level items={items} parentId={null} shared={shared} path=\"\" level={1} />\n )}\n </div>\n );\n}\n\nfunction lockedIds(items: LayerListItem[]): string[] {\n const out: string[] = [];\n for (const it of items) {\n if (it.locked) out.push(it.id);\n if (it.children) out.push(...lockedIds(it.children));\n }\n return out;\n}\n\ninterface LevelProps {\n items: LayerListItem[];\n parentId: string | null;\n shared: Shared;\n path: string;\n level: number;\n}\n\n/** One sibling group. Each has its own drag, so a drag stays under one parent. */\nfunction Level({ items, parentId, shared, path, level }: LevelProps) {\n const { props } = shared;\n const selected = props.selectedIds ?? [];\n const drag = useReorderDragList({\n // With no `onReorder` every row is a locked one to the drag, so a press\n // still reaches `onPress` and nothing ever engages.\n items: items.map((it) => ({ id: it.id, label: it.label, locked: it.locked || !props.onReorder })),\n selectedIds: items.filter((it) => selected.includes(it.id)).map((it) => it.id),\n onReorder: (ids, target) => {\n const moving = new Set(ids);\n const inOrder = items.filter((it) => moving.has(it.id)).map((it) => it.id);\n // The hook's index counts the dragged rows; a move's index does not.\n const before = items.slice(0, target).filter((it) => moving.has(it.id)).length;\n const move = { ids: inOrder, parentId, index: target - before };\n dlog('layer-list', 'onReorder', move);\n props.onReorder?.(move);\n },\n onPress: (id, mods) => {\n const item = items.find((it) => it.id === id);\n if (item) shared.press(item, mods);\n },\n });\n shared.nudgers.set(parentId, (id, delta) =>\n drag.nudge(id, items.findIndex((it) => it.id === id), delta),\n );\n const [el, setEl] = useState<HTMLDivElement | null>(null);\n const bind = (node: HTMLDivElement | null) => {\n setEl(node);\n (drag.containerProps.ref as RefCallback<HTMLDivElement>)(node);\n };\n\n const bodies = items.map((it) => shared.bodies.get(it.id));\n const cards = bodies.some(hasBody);\n const { draggedIds, targetIndex, ghost } = drag.state;\n\n const entry = (item: LayerListItem, i: number, ghosted: boolean) => {\n const body = bodies[i];\n const kids = item.children ?? [];\n const open = !shared.collapsed.has(item.id);\n const childId = `${shared.uid}${path}-${i}`;\n const onPointerDown = ghosted ? undefined : drag.rowProps(item.id, i).onPointerDown;\n const isSelected = selected.includes(item.id);\n const cls = [s.entry];\n if (!ghosted) {\n if (draggedIds?.includes(item.id)) cls.push(s.dragging);\n if (targetIndex === i && !draggedIds?.includes(item.id)) cls.push(s.dropBefore);\n if (targetIndex === items.length && i === items.length - 1) cls.push(s.dropAfter);\n }\n const controls = <Controls item={item} shared={shared} />;\n const head =\n hasBody(body) ? (\n <PropertyGroup\n className={s.card}\n title={item.title ?? item.label}\n {...(item.tone === undefined ? {} : { tone: item.tone })}\n collapsed={ghosted || !open}\n onCollapsedChange={() => shared.toggle(item.id)}\n leading={\n <Handle\n item={item}\n reorder={props.onReorder !== undefined}\n onPointerDown={onPointerDown}\n onNudge={(delta) => shared.nudgers.get(parentId)?.(item.id, delta)}\n />\n }\n actions={ghosted ? undefined : controls}\n >\n {ghosted ? null : body}\n </PropertyGroup>\n ) : (\n <div\n className={[rows.row, s.row, isSelected ? rows.selected : ''].filter(Boolean).join(' ')}\n data-selected={isSelected ? 'true' : undefined}\n data-locked={item.locked ? 'true' : undefined}\n onPointerDown={onPointerDown}\n {...(ghosted\n ? {}\n : {\n role: 'row',\n 'aria-level': level,\n ...(kids.length > 0 ? { 'aria-expanded': open } : {}),\n ...(props.onSelect ? { 'aria-selected': isSelected } : {}),\n tabIndex: shared.keys.tabStop === item.id ? 0 : -1,\n ref: shared.keys.register(item.id),\n onKeyDown: shared.keys.onKeyDown(item, parentId),\n onFocus: () => shared.keys.onFocus(item.id),\n })}\n >\n {shared.nested &&\n (kids.length > 0 ? (\n <span className={s.stop} onPointerDown={stop}>\n <Disclosure\n open={open}\n onToggle={() => shared.toggle(item.id)}\n label={`${item.label} sublayers`}\n controls={childId}\n />\n </span>\n ) : (\n <span className={s.twistyGap} />\n ))}\n <Grip item={item} reorder={props.onReorder !== undefined} />\n {props.onVisibilityChange &&\n (item.locked ? (\n <span className={s.check} />\n ) : (\n <input\n className={s.check}\n type=\"checkbox\"\n checked={item.visible !== false}\n onPointerDown={stop}\n onChange={(e) => props.onVisibilityChange?.(item.id, e.target.checked)}\n aria-label={`Show ${item.label}`}\n />\n ))}\n {item.leading}\n <span className={rows.label}>{item.title ?? item.label}</span>\n {ghosted ? null : <Remove item={item} shared={shared} />}\n </div>\n );\n return (\n <div key={item.id} role=\"none\" className={cls.join(' ')} data-selected={isSelected ? 'true' : undefined}>\n {head}\n {!ghosted && kids.length > 0 && open && (\n <div id={childId} role=\"rowgroup\" className={s.children}>\n <Level items={kids} parentId={item.id} shared={shared} path={`${path}-${i}`} level={level + 1} />\n </div>\n )}\n </div>\n );\n };\n\n return (\n <>\n {cards ? (\n <PropertyList ref={bind} className={`${s.level} ${s.cards}`}>\n {items.map((it, i) => entry(it, i, false))}\n </PropertyList>\n ) : (\n <div\n ref={bind}\n className={s.level}\n {...(parentId === null\n ? {\n role: 'treegrid',\n 'aria-label': props.label ?? props.title ?? 'Layers',\n ...(props.onSelect ? { 'aria-multiselectable': true } : {}),\n }\n : { role: 'none' })}\n >\n {items.map((it, i) => entry(it, i, false))}\n </div>\n )}\n {ghost && el ? (\n <DragGhost at={ghost} from={el}>\n {items.map((it, i) => (ghost.ids.includes(it.id) ? entry(it, i, true) : null))}\n </DragGhost>\n ) : null}\n </>\n );\n}\n\n// Keeps a press on a control inside a row from also starting the row's press.\nconst stop = (e: { stopPropagation(): void }) => e.stopPropagation();\n\n/** A row's grip: decoration, since the whole row takes the drag. */\nfunction Grip({ item, reorder }: { item: LayerListItem; reorder: boolean }) {\n if (item.locked) {\n return (\n <span className={s.lock} role=\"img\" aria-label=\"Locked\">\n <LockIcon size={12} />\n </span>\n );\n }\n if (!reorder && item.badge === undefined) return null;\n return (\n <span className={s.grip} aria-hidden=\"true\">\n {item.badge ?? <DragHandleGlyph size={13} />}\n </span>\n );\n}\n\n/** A card's handle: the drag target, since the rest of its head folds it, and\n * Alt+Up/Down on it moves the card. */\nfunction Handle({\n item,\n reorder,\n onPointerDown,\n onNudge,\n}: {\n item: LayerListItem;\n reorder: boolean;\n onPointerDown: ((e: React.PointerEvent) => void) | undefined;\n onNudge: (delta: -1 | 1) => void;\n}) {\n if (item.locked) return <Grip item={item} reorder={reorder} />;\n if (!reorder && item.badge === undefined) return undefined;\n return (\n <button\n type=\"button\"\n className={s.handle}\n aria-label={`Drag to reorder ${item.label}`}\n aria-keyshortcuts=\"Alt+ArrowUp Alt+ArrowDown\"\n onPointerDown={onPointerDown}\n onKeyDown={(e) => {\n if (!e.altKey || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')) return;\n e.preventDefault();\n onNudge(e.key === 'ArrowUp' ? -1 : 1);\n }}\n >\n {item.badge ?? <DragHandleGlyph />}\n </button>\n );\n}\n\nfunction Controls({ item, shared }: { item: LayerListItem; shared: Shared }) {\n const { onVisibilityChange } = shared.props;\n return (\n <>\n {onVisibilityChange && !item.locked && (\n <input\n className={s.check}\n type=\"checkbox\"\n checked={item.visible !== false}\n onClick={stop}\n onChange={(e) => onVisibilityChange(item.id, e.target.checked)}\n aria-label={`Show ${item.label}`}\n />\n )}\n <Remove item={item} shared={shared} />\n </>\n );\n}\n\nfunction Remove({ item, shared }: { item: LayerListItem; shared: Shared }) {\n const { onRemove } = shared.props;\n if (!onRemove || item.locked) return null;\n return (\n <span className={s.stop} onPointerDown={stop}>\n <Button variant=\"ghost\" size=\"sm\" iconOnly ariaLabel={`Remove ${item.label}`} onClick={() => onRemove(item.id)}>\n <CloseIcon size={14} />\n </Button>\n </span>\n );\n}\n","import { asNodeId, createMoveToIndexOp, dispatchApplyBatch } from '@weasel-js/core';\nimport type { NodeId, Scene, SceneNode, SelectionApi } from '@weasel-js/core';\nimport type { LayerListItem, LayerListProps } from './LayerList';\n\n/** Arguments for {@link useSceneLayerList}. */\nexport interface UseSceneLayerListArgs<TData, TLayer extends string, TPose> {\n scene: Scene<TData, TLayer, TPose>;\n selection: SelectionApi;\n /** What the reorder op is dispatched against — the adapter `<SceneCanvas>` uses. */\n adapter: object;\n /** A row's content for a node: its label, a leading swatch or icon, whether it is locked. */\n itemFor: (node: SceneNode<TData, TLayer, TPose>) => Omit<LayerListItem, 'id' | 'children'>;\n /** Label of the reorder's history entry. Default `'Reorder'`. */\n label?: string;\n}\n\n/**\n * The props that put a scene in a `<LayerList>`: a row per node, a container's\n * children nested under it, the front-most at the top, selection read from and\n * written to `selection`, and a drag dispatched as a `MoveToIndexOp`.\n */\nexport function useSceneLayerList<TData, TLayer extends string, TPose>(\n args: UseSceneLayerListArgs<TData, TLayer, TPose>,\n): Required<Pick<LayerListProps, 'items' | 'selectedIds' | 'onSelect' | 'onReorder'>> {\n const { scene, selection, adapter, itemFor, label = 'Reorder' } = args;\n\n // A scene orders children back to front and the list front to back. Rebuilt\n // every render: the scene keeps its identity across a reorder, so a memo keyed\n // on it would serve the order from before.\n const build = (ids: readonly NodeId[]): LayerListItem[] =>\n [...ids].reverse().flatMap((id) => {\n const node = scene.get(id);\n if (!node) return [];\n const kids = scene.childrenOf(id);\n return [{ ...itemFor(node), id, ...(kids.length > 0 ? { children: build(kids) } : {}) }];\n });\n\n return {\n items: build(scene.roots),\n selectedIds: selection.current.map(String),\n onSelect: (ids) => selection.set(ids.map(asNodeId)),\n onReorder: ({ ids, parentId, index }) => {\n const siblings = parentId === null ? scene.roots : scene.childrenOf(asNodeId(parentId));\n // `index` counts from the front among the siblings the drag left behind.\n const back = siblings.length - ids.length - index;\n dispatchApplyBatch(adapter, [createMoveToIndexOp({ ids, parentId, index: Math.max(0, back) })], label);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -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 +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"}
|