@weasel-js/ui 1.7.3 → 1.8.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/{Callout-BUn0dP_S.js → Callout-DpTO3fkb.js} +10 -10
- package/dist/chunks/Callout-DpTO3fkb.js.map +1 -0
- package/dist/chunks/{Checkbox-DFn-x0JO.js → Checkbox-d4IfhiXh.js} +2 -2
- package/dist/chunks/{Checkbox-DFn-x0JO.js.map → Checkbox-d4IfhiXh.js.map} +1 -1
- package/dist/chunks/{CloseButton-BmNmRVtb.js → CloseButton-wb7Or5Eg.js} +2 -2
- package/dist/chunks/{CloseButton-BmNmRVtb.js.map → CloseButton-wb7Or5Eg.js.map} +1 -1
- package/dist/chunks/{ColorModeControl-DaVJ-SyX.js → ColorModeControl-DET6Itwq.js} +3 -3
- package/dist/chunks/{ColorModeControl-DaVJ-SyX.js.map → ColorModeControl-DET6Itwq.js.map} +1 -1
- package/dist/chunks/{DataGrid-CmHJe57v.js → DataGrid-B6IS9vUk.js} +2 -2
- package/dist/chunks/{DataGrid-CmHJe57v.js.map → DataGrid-B6IS9vUk.js.map} +1 -1
- package/dist/chunks/{DetentSlider-DNTAk8xP.js → DetentSlider-D40V8Oma.js} +2 -2
- package/dist/chunks/{DetentSlider-DNTAk8xP.js.map → DetentSlider-D40V8Oma.js.map} +1 -1
- package/dist/chunks/{Dialog-DKfsk5VN.js → Dialog-h-5MeYpu.js} +9 -9
- package/dist/chunks/{Dialog-DKfsk5VN.js.map → Dialog-h-5MeYpu.js.map} +1 -1
- package/dist/chunks/{Disclosure-Ch2KxYuB.js → Disclosure-CpWt87nO.js} +7 -7
- package/dist/chunks/{Disclosure-Ch2KxYuB.js.map → Disclosure-CpWt87nO.js.map} +1 -1
- package/dist/chunks/FitLabel-BzZGkWfL.js +76 -0
- package/dist/chunks/FitLabel-BzZGkWfL.js.map +1 -0
- package/dist/chunks/{GradientEditor-DD2OjQtn.js → GradientEditor-vz771M-N.js} +4 -4
- package/dist/chunks/{GradientEditor-DD2OjQtn.js.map → GradientEditor-vz771M-N.js.map} +1 -1
- package/dist/chunks/{Icon--B1ME-6c.js → Icon-DPRUIo3G.js} +4 -1
- package/dist/chunks/Icon-DPRUIo3G.js.map +1 -0
- package/dist/chunks/{Jog-BrkzdGV2.js → Jog-TE6QI9i1.js} +3 -3
- package/dist/chunks/{Jog-BrkzdGV2.js.map → Jog-TE6QI9i1.js.map} +1 -1
- package/dist/chunks/{LayerList-BqeWFuGc.js → LayerList-BXTAjK-4.js} +6 -6
- package/dist/chunks/{LayerList-BqeWFuGc.js.map → LayerList-BXTAjK-4.js.map} +1 -1
- package/dist/chunks/{ListEditor-OQDzG4A5.js → ListEditor-DGtwj99m.js} +2 -2
- package/dist/chunks/{ListEditor-OQDzG4A5.js.map → ListEditor-DGtwj99m.js.map} +1 -1
- package/dist/chunks/{MeshEditor-DWpvg8H6.js → MeshEditor-8CRsu-Td.js} +2 -2
- package/dist/chunks/{MeshEditor-DWpvg8H6.js.map → MeshEditor-8CRsu-Td.js.map} +1 -1
- package/dist/chunks/{NumberField-DS0WSiin.js → NumberField-BXFrOi5M.js} +8 -5
- package/dist/chunks/{NumberField-DS0WSiin.js.map → NumberField-BXFrOi5M.js.map} +1 -1
- package/dist/chunks/{PaintField-BdmQM53v.js → PaintField-DX4uYlF9.js} +2 -2
- package/dist/chunks/{PaintField-BdmQM53v.js.map → PaintField-DX4uYlF9.js.map} +1 -1
- package/dist/chunks/{PaintInput-DaQMeBsI.js → PaintInput-CWyOJXUM.js} +5 -5
- package/dist/chunks/{PaintInput-DaQMeBsI.js.map → PaintInput-CWyOJXUM.js.map} +1 -1
- package/dist/chunks/{PatternPicker-B3HcMZWg.js → PatternPicker-0j51aDJ3.js} +9 -9
- package/dist/chunks/PatternPicker-0j51aDJ3.js.map +1 -0
- package/dist/chunks/{Prefs-BnVEyfWO.js → Prefs-gbjYqvSD.js} +41 -41
- package/dist/chunks/Prefs-gbjYqvSD.js.map +1 -0
- package/dist/chunks/{Properties-BoG2MMHR.js → Properties-BbNuMiic.js} +4 -4
- package/dist/chunks/{Properties-BoG2MMHR.js.map → Properties-BbNuMiic.js.map} +1 -1
- package/dist/chunks/PropertyField-CWUtNK1w.js +751 -0
- package/dist/chunks/PropertyField-CWUtNK1w.js.map +1 -0
- package/dist/chunks/{SelectionPanel-COZ6z9_P.js → SelectionPanel-BpUqP75b.js} +2 -2
- package/dist/chunks/{SelectionPanel-COZ6z9_P.js.map → SelectionPanel-BpUqP75b.js.map} +1 -1
- package/dist/chunks/{SidebarPanel-AXQ0jRDx.js → SidebarPanel--dJ-k9-V.js} +3 -3
- package/dist/chunks/{SidebarPanel-AXQ0jRDx.js.map → SidebarPanel--dJ-k9-V.js.map} +1 -1
- package/dist/chunks/Slider-CHBQ8uUC.js +439 -0
- package/dist/chunks/Slider-CHBQ8uUC.js.map +1 -0
- package/dist/chunks/{SwatchGrid-9ZPiDmxd.js → SwatchGrid-DxK9e_IV.js} +3 -3
- package/dist/chunks/SwatchGrid-DxK9e_IV.js.map +1 -0
- package/dist/chunks/{SwatchStrip-Bi9iPLoh.js → SwatchStrip-BY6A511W.js} +2 -2
- package/dist/chunks/{SwatchStrip-Bi9iPLoh.js.map → SwatchStrip-BY6A511W.js.map} +1 -1
- package/dist/chunks/{ThemeSwitcher-DiBmMh_B.js → ThemeSwitcher-tnATkIo1.js} +2 -2
- package/dist/chunks/{ThemeSwitcher-DiBmMh_B.js.map → ThemeSwitcher-tnATkIo1.js.map} +1 -1
- package/dist/chunks/{Timeline-sMCH2fah.js → Timeline-FlLUm8nd.js} +4 -4
- package/dist/chunks/{Timeline-sMCH2fah.js.map → Timeline-FlLUm8nd.js.map} +1 -1
- package/dist/chunks/{Toast-C3ozq11V.js → Toast-CuHkT0x0.js} +2 -2
- package/dist/chunks/{Toast-C3ozq11V.js.map → Toast-CuHkT0x0.js.map} +1 -1
- package/dist/chunks/ToggleBar-BZ4Gk1IU.js +84 -0
- package/dist/chunks/ToggleBar-BZ4Gk1IU.js.map +1 -0
- package/dist/chunks/{TokenPanel-WtKGY2Db.js → TokenPanel-DongdiZM.js} +23 -23
- package/dist/chunks/{TokenPanel-WtKGY2Db.js.map → TokenPanel-DongdiZM.js.map} +1 -1
- package/dist/chunks/ToolOptionsBar-wTPJFfOn.js +94 -0
- package/dist/chunks/ToolOptionsBar-wTPJFfOn.js.map +1 -0
- package/dist/chunks/{Tree-Cc8lIzgM.js → Tree-hzIbj2q1.js} +2 -2
- package/dist/chunks/{Tree-Cc8lIzgM.js.map → Tree-hzIbj2q1.js.map} +1 -1
- package/dist/chunks/checkbox.module-Dcx8ILgR.js +5 -0
- package/dist/chunks/checkbox.module-Dcx8ILgR.js.map +1 -0
- package/dist/chunks/{icons-Dr2-r30x.js → icons-CofIOTiI.js} +2 -2
- package/dist/chunks/{icons-Dr2-r30x.js.map → icons-CofIOTiI.js.map} +1 -1
- package/dist/chunks/{model-B6zuQg6b.js → model-qQj8Ny9w.js} +134 -133
- package/dist/chunks/model-qQj8Ny9w.js.map +1 -0
- package/dist/chunks/{prefField-BE_Ytr2H.js → prefField-CCm_nzlM.js} +81 -75
- package/dist/chunks/prefField-CCm_nzlM.js.map +1 -0
- package/dist/components/Callout/index.js +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/CloseButton/index.js +1 -1
- package/dist/components/ColorModeControl/index.js +1 -1
- package/dist/components/DataGrid/index.js +1 -1
- package/dist/components/DetentSlider/index.js +1 -1
- package/dist/components/Dialog/index.js +1 -1
- package/dist/components/Disclosure/index.js +1 -1
- package/dist/components/FitLabel/FitLabel.d.ts +41 -0
- package/dist/components/FitLabel/FitLabel.d.ts.map +1 -0
- package/dist/components/FitLabel/index.d.ts +3 -0
- package/dist/components/FitLabel/index.d.ts.map +1 -0
- package/dist/components/FitLabel/index.js +2 -0
- package/dist/components/GradientEditor/index.js +1 -1
- package/dist/components/InlineRange/InlineRange.d.ts +1 -1
- package/dist/components/Jog/index.js +1 -1
- package/dist/components/LayerList/index.js +1 -1
- package/dist/components/ListEditor/index.js +1 -1
- package/dist/components/MeshEditor/index.js +1 -1
- package/dist/components/NumberField/UnitField.d.ts.map +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/PaintField/index.js +1 -1
- package/dist/components/PaintInput/index.js +1 -1
- package/dist/components/PatternPicker/index.js +1 -1
- package/dist/components/Prefs/index.js +2 -2
- package/dist/components/Prefs/prefField.d.ts.map +1 -1
- package/dist/components/Properties/NumberControls.d.ts +16 -0
- package/dist/components/Properties/NumberControls.d.ts.map +1 -0
- package/dist/components/Properties/PropertyField.d.ts +18 -8
- package/dist/components/Properties/PropertyField.d.ts.map +1 -1
- package/dist/components/Properties/index.js +2 -2
- package/dist/components/SelectionPanel/index.js +2 -2
- package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
- package/dist/components/SidebarPanel/index.js +1 -1
- package/dist/components/Slider/Slider.d.ts +6 -0
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SwatchGrid/index.js +1 -1
- package/dist/components/SwatchStrip/index.js +1 -1
- package/dist/components/ThemeSwitcher/index.js +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
- package/dist/components/ToggleBar/index.js +1 -1
- package/dist/components/TokenPanel/index.js +1 -1
- package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts +1 -1
- package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts.map +1 -1
- package/dist/components/ToolOptionsBar/index.js +1 -1
- package/dist/components/Tree/index.js +1 -1
- package/dist/components/stanceCss.d.ts +6 -0
- package/dist/components/stanceCss.d.ts.map +1 -1
- package/dist/components/stanceSurfaces.d.ts.map +1 -1
- package/dist/endless.d.ts +7 -0
- package/dist/endless.d.ts.map +1 -0
- package/dist/icons/paths.d.ts +2 -0
- package/dist/icons/paths.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -70
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +9 -9
- package/dist/chunks/Callout-BUn0dP_S.js.map +0 -1
- package/dist/chunks/Icon--B1ME-6c.js.map +0 -1
- package/dist/chunks/PatternPicker-B3HcMZWg.js.map +0 -1
- package/dist/chunks/Prefs-BnVEyfWO.js.map +0 -1
- package/dist/chunks/PropertyField-PMrqBA0n.js +0 -743
- package/dist/chunks/PropertyField-PMrqBA0n.js.map +0 -1
- package/dist/chunks/Slider-DSrlMEq8.js +0 -389
- package/dist/chunks/Slider-DSrlMEq8.js.map +0 -1
- package/dist/chunks/SwatchGrid-9ZPiDmxd.js.map +0 -1
- package/dist/chunks/ToggleBar-Z2jZiguF.js +0 -80
- package/dist/chunks/ToggleBar-Z2jZiguF.js.map +0 -1
- package/dist/chunks/ToolOptionsBar-BJKwnemU.js +0 -88
- package/dist/chunks/ToolOptionsBar-BJKwnemU.js.map +0 -1
- package/dist/chunks/checkbox.module-DLQV9tMX.js +0 -5
- package/dist/chunks/checkbox.module-DLQV9tMX.js.map +0 -1
- package/dist/chunks/model-B6zuQg6b.js.map +0 -1
- package/dist/chunks/prefField-BE_Ytr2H.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Fragment as e, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as n, useCallback as r, useContext as i, useLayoutEffect as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
3
|
+
import { flushSync as l } from "react-dom";
|
|
4
|
+
//#region src/components/FitLabel/FitLabel.tsx
|
|
5
|
+
function u(e, t) {
|
|
6
|
+
let n = e == null || e === "" ? [] : [e];
|
|
7
|
+
return t === void 0 ? n : [...n, ...t];
|
|
8
|
+
}
|
|
9
|
+
var d = n(null);
|
|
10
|
+
function f({ value: e, children: n }) {
|
|
11
|
+
return /* @__PURE__ */ t(d.Provider, {
|
|
12
|
+
value: e,
|
|
13
|
+
children: n
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
var p = (e) => e !== null && e.scrollWidth > e.clientWidth;
|
|
17
|
+
function m(e) {
|
|
18
|
+
let t = i(d), [n, u] = c(0), [f, m] = c([]), h = s(/* @__PURE__ */ new Map()), g = s(null), _ = f.reduce((e, t) => Math.max(e, t), 0), v = t?.register, y = r((e) => {
|
|
19
|
+
let t = Symbol("fit-label");
|
|
20
|
+
h.current.set(t, e), m([...h.current.values()]);
|
|
21
|
+
let n = v?.(e);
|
|
22
|
+
return () => {
|
|
23
|
+
h.current.delete(t), m([...h.current.values()]), n?.();
|
|
24
|
+
};
|
|
25
|
+
}, [v]), b = s(n);
|
|
26
|
+
a(() => {
|
|
27
|
+
b.current = n;
|
|
28
|
+
}, [n]);
|
|
29
|
+
let x = r(() => {
|
|
30
|
+
let t = e.current;
|
|
31
|
+
if (!t || b.current >= _ - 1) return !1;
|
|
32
|
+
let n = t.parentElement;
|
|
33
|
+
return !p(t) && !p(n) ? !1 : (g.current = {
|
|
34
|
+
self: t.clientWidth,
|
|
35
|
+
parent: n?.clientWidth ?? 0
|
|
36
|
+
}, !0);
|
|
37
|
+
}, [e, _]), S = s(f);
|
|
38
|
+
a(() => {
|
|
39
|
+
if (S.current !== f && (S.current = f, g.current = null, n !== 0)) {
|
|
40
|
+
u(0);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
x() && u(n + 1);
|
|
44
|
+
}, [
|
|
45
|
+
f,
|
|
46
|
+
n,
|
|
47
|
+
x
|
|
48
|
+
]), a(() => {
|
|
49
|
+
let t = e.current;
|
|
50
|
+
if (!t || _ < 2 || typeof ResizeObserver > "u") return;
|
|
51
|
+
let n = t.parentElement, r = new ResizeObserver(() => {
|
|
52
|
+
let e = g.current;
|
|
53
|
+
e !== null && (t.clientWidth > e.self + .5 || n !== null && n.clientWidth > e.parent + .5) ? (g.current = null, l(() => u(0))) : x() && l(() => u((e) => e + 1));
|
|
54
|
+
});
|
|
55
|
+
return r.observe(t), n && r.observe(n), () => r.disconnect();
|
|
56
|
+
}, [
|
|
57
|
+
e,
|
|
58
|
+
_,
|
|
59
|
+
x
|
|
60
|
+
]);
|
|
61
|
+
let C = Math.max(n, t?.step ?? 0);
|
|
62
|
+
return o(() => ({
|
|
63
|
+
step: C,
|
|
64
|
+
register: y
|
|
65
|
+
}), [C, y]);
|
|
66
|
+
}
|
|
67
|
+
function h({ forms: n }) {
|
|
68
|
+
let r = i(d), o = r?.register, s = n.length;
|
|
69
|
+
a(() => o?.(s), [o, s]);
|
|
70
|
+
let c = r?.step ?? 0;
|
|
71
|
+
return /* @__PURE__ */ t(e, { children: n[Math.min(c, s - 1)] });
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { m as i, f as n, u as r, h as t };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=FitLabel-BzZGkWfL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FitLabel-BzZGkWfL.js","names":["_Fragment","labelForms","head","name","short","FitContext","createContext","FitScope","overflows","el","useFitScope","outer","useContext","own","setOwn","useState","labels","setLabels","counted","useRef","steppedAt","depth","max","d","outerRegister","register","useCallback","id","labelDepth","releaseOuter","ownRef","shouldStep","ref","parent","fittedFor","useLayoutEffect","observer","at","flushSync","s","step","useMemo","FitLabel","scope","forms","Fragment"],"sources":["../../src/components/FitLabel/FitLabel.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { flushSync } from 'react-dom';\n\n/**\n * A label's forms, longest first: the canonical name, then each shorter form a\n * surface may fall back to. `name` stays the control's accessible name whichever\n * form is shown.\n */\nexport function labelForms(name: ReactNode, short?: readonly ReactNode[]): readonly ReactNode[] {\n const head = name === undefined || name === null || name === '' ? [] : [name];\n return short === undefined ? head : [...head, ...short];\n}\n\n/** What a {@link FitScope} tells the labels inside it. */\nexport interface FitScopeValue {\n /** How many forms down every label in the scope steps. */\n readonly step: number;\n /** Counts a label holding `depth` forms toward the scope; returns its release. */\n readonly register: (depth: number) => () => void;\n}\n\nconst FitContext = createContext<FitScopeValue | null>(null);\n\n/** Hands a {@link useFitScope} result to the {@link FitLabel}s beneath it. */\nexport function FitScope({ value, children }: { value: FitScopeValue; children?: ReactNode }) {\n return <FitContext.Provider value={value}>{children}</FitContext.Provider>;\n}\n\nconst overflows = (el: Element | null): boolean => el !== null && el.scrollWidth > el.clientWidth;\n\n/**\n * Fits the {@link FitLabel}s under `ref` to the room they are given.\n *\n * Every label steps down together, one form at a time, until neither `ref`'s\n * element nor its parent overflows or no label has a shorter form left: the\n * element overflowing itself is a control squeezed below its content, and its\n * parent overflowing is one that will not shrink at all. Each label takes its\n * form at the step, or its last where it has fewer. The room growing past the\n * size it had when a step was taken starts again from the full forms.\n *\n * A scope nested in another steps at least as far as the outer one, so a\n * control inside a strip shortens along with the strip.\n */\nexport function useFitScope(ref: RefObject<HTMLElement | null>): FitScopeValue {\n const outer = useContext(FitContext);\n const [own, setOwn] = useState(0);\n const [labels, setLabels] = useState<readonly number[]>([]);\n const counted = useRef(new Map<symbol, number>());\n // Room sizes when the last step was taken: growing past them retries the\n // full forms, while the shrink a step itself causes does not.\n const steppedAt = useRef<{ self: number; parent: number } | null>(null);\n\n const depth = labels.reduce((max, d) => Math.max(max, d), 0);\n const outerRegister = outer?.register;\n const register = useCallback(\n (labelDepth: number) => {\n const id = Symbol('fit-label');\n counted.current.set(id, labelDepth);\n setLabels([...counted.current.values()]);\n const releaseOuter = outerRegister?.(labelDepth);\n return () => {\n counted.current.delete(id);\n setLabels([...counted.current.values()]);\n releaseOuter?.();\n };\n },\n [outerRegister],\n );\n\n const ownRef = useRef(own);\n useLayoutEffect(() => {\n ownRef.current = own;\n }, [own]);\n /** Whether the room overflows and a label has a shorter form left; records the room if so. */\n const shouldStep = useCallback((): boolean => {\n const el = ref.current;\n if (!el || ownRef.current >= depth - 1) return false;\n const parent = el.parentElement;\n if (!overflows(el) && !overflows(parent)) return false;\n steppedAt.current = { self: el.clientWidth, parent: parent?.clientWidth ?? 0 };\n return true;\n }, [ref, depth]);\n\n // A label set that changed may fit at a longer form than the old one did.\n const fittedFor = useRef(labels);\n useLayoutEffect(() => {\n if (fittedFor.current !== labels) {\n fittedFor.current = labels;\n steppedAt.current = null;\n if (own !== 0) {\n setOwn(0);\n return;\n }\n }\n if (shouldStep()) setOwn(own + 1);\n }, [labels, own, shouldStep]);\n\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || depth < 2 || typeof ResizeObserver === 'undefined') return;\n const parent = el.parentElement;\n const observer = new ResizeObserver(() => {\n const at = steppedAt.current;\n const grew =\n at !== null &&\n (el.clientWidth > at.self + 0.5 || (parent !== null && parent.clientWidth > at.parent + 0.5));\n if (grew) {\n steppedAt.current = null;\n flushSync(() => setOwn(0));\n } else if (shouldStep()) {\n flushSync(() => setOwn((s) => s + 1));\n }\n });\n observer.observe(el);\n if (parent) observer.observe(parent);\n return () => observer.disconnect();\n }, [ref, depth, shouldStep]);\n\n const step = Math.max(own, outer?.step ?? 0);\n return useMemo(() => ({ step, register }), [step, register]);\n}\n\n/**\n * One label that shortens to fit: the form at the enclosing {@link FitScope}'s\n * step, or its last where it has fewer. Outside any scope it shows the first.\n */\nexport function FitLabel({ forms }: { forms: readonly ReactNode[] }) {\n const scope = useContext(FitContext);\n const register = scope?.register;\n const depth = forms.length;\n useLayoutEffect(() => register?.(depth), [register, depth]);\n const step = scope?.step ?? 0;\n return <>{forms[Math.min(step, depth - 1)]}</>;\n}\n"],"mappings":";;;;AAkBA,SAAgBC,EAAW,GAAiB,GAAoD;CAC9F,IAAMC,IAAOC,KAA+B,QAAQA,MAAS,KAAK,CAAC,IAAI,CAACA,CAAI;CAC5E,OAAOC,MAAU,KAAA,IAAYF,IAAO,CAAC,GAAGA,GAAM,GAAGE,CAAK;AACxD;AAUA,IAAMC,IAAaC,EAAoC,IAAI;AAG3D,SAAgBC,EAAS,EAAE,UAAO,eAA4D;CAC5F,OAAO,kBAACF,EAAW,UAAZ;EAA4B;EAAQ;CAA8B,CAAA;AAC3E;AAEA,IAAMG,KAAa,MAAgCC,MAAO,QAAQA,EAAG,cAAcA,EAAG;AAetF,SAAgBC,EAAY,GAAmD;CAC7E,IAAMC,IAAQC,EAAWP,CAAU,GAC7B,CAACQ,GAAKC,KAAUC,EAAS,CAAC,GAC1B,CAACC,GAAQC,KAAaF,EAA4B,CAAC,CAAC,GACpDG,IAAUC,kBAAO,IAAI,IAAoB,CAAC,GAG1CC,IAAYD,EAAgD,IAAI,GAEhEE,IAAQL,EAAO,QAAQ,GAAK,MAAM,KAAK,IAAIM,GAAKC,CAAC,GAAG,CAAC,GACrDC,IAAgBb,GAAO,UACvBc,IAAWC,GACd,MAAuB;EACtB,IAAMC,IAAK,OAAO,WAAW;EAE7B,AADAT,EAAQ,QAAQ,IAAIS,GAAIC,CAAU,GAClCX,EAAU,CAAC,GAAGC,EAAQ,QAAQ,OAAO,CAAC,CAAC;EACvC,IAAMW,IAAeL,IAAgBI,CAAU;EAC/C,aAAa;GAGX,AAFAV,EAAQ,QAAQ,OAAOS,CAAE,GACzBV,EAAU,CAAC,GAAGC,EAAQ,QAAQ,OAAO,CAAC,CAAC,GACvCW,IAAe;EACjB;CACF,GACA,CAACL,CAAa,CAChB,GAEMM,IAASX,EAAON,CAAG;CACzB,QAAsB;EACpB,EAAO,UAAUA;CACnB,GAAG,CAACA,CAAG,CAAC;CAER,IAAMkB,IAAaL,QAA2B;EAC5C,IAAMjB,IAAKuB,EAAI;EACf,IAAI,CAACvB,KAAMqB,EAAO,WAAWT,IAAQ,GAAG,OAAO;EAC/C,IAAMY,IAASxB,EAAG;EAGlB,OAFI,CAACD,EAAUC,CAAE,KAAK,CAACD,EAAUyB,CAAM,IAAU,MACjD,EAAU,UAAU;GAAE,MAAMxB,EAAG;GAAa,QAAQwB,GAAQ,eAAe;EAAE,GACtE;CACT,GAAG,CAACD,GAAKX,CAAK,CAAC,GAGTa,IAAYf,EAAOH,CAAM;CAa/B,AAZAmB,QAAsB;EACpB,IAAID,EAAU,YAAYlB,MACxB,EAAU,UAAUA,GACpB,EAAU,UAAU,MAChBH,MAAQ,IAAG;GACb,EAAO,CAAC;GACR;EACF;EAEF,AAAIkB,EAAW,KAAGjB,EAAOD,IAAM,CAAC;CAClC,GAAG;EAACG;EAAQH;EAAKkB;CAAU,CAAC,GAE5BI,QAAsB;EACpB,IAAM1B,IAAKuB,EAAI;EACf,IAAI,CAACvB,KAAMY,IAAQ,KAAK,OAAO,iBAAmB,KAAa;EAC/D,IAAMY,IAASxB,EAAG,eACZ2B,IAAW,IAAI,qBAAqB;GACxC,IAAMC,IAAKjB,EAAU;GAIrB,AAFEiB,MAAO,SACN5B,EAAG,cAAc4B,EAAG,OAAO,MAAQJ,MAAW,QAAQA,EAAO,cAAcI,EAAG,SAAS,OAExF,EAAU,UAAU,MACpBC,QAAgBxB,EAAO,CAAC,CAAC,KAChBiB,EAAW,KACpBO,QAAgBxB,GAAQ,MAAMyB,IAAI,CAAC,CAAC;EAExC,CAAC;EAGD,OAFAH,EAAS,QAAQ3B,CAAE,GACfwB,KAAQG,EAAS,QAAQH,CAAM,SACtBG,EAAS,WAAW;CACnC,GAAG;EAACJ;EAAKX;EAAOU;CAAU,CAAC;CAE3B,IAAMS,IAAO,KAAK,IAAI3B,GAAKF,GAAO,QAAQ,CAAC;CAC3C,OAAO8B,SAAe;EAAE;EAAM;CAAS,IAAI,CAACD,GAAMf,CAAQ,CAAC;AAC7D;AAMA,SAAgBiB,EAAS,EAAE,YAA0C;CACnE,IAAMC,IAAQ/B,EAAWP,CAAU,GAC7BoB,IAAWkB,GAAO,UAClBtB,IAAQuB,EAAM;CACpB,QAAsBnB,IAAWJ,CAAK,GAAG,CAACI,GAAUJ,CAAK,CAAC;CAC1D,IAAMmB,IAAOG,GAAO,QAAQ;CAC5B,OAAO,kBAAA3C,GAAA,EAAA,UAAG4C,EAAM,KAAK,IAAIJ,GAAMnB,IAAQ,CAAC,GAAK,CAAA;AAC/C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./ColorField-BwlelY26.js";
|
|
2
|
-
import { t } from "./Slider-
|
|
3
|
-
import { t as n } from "./ToggleBar-
|
|
4
|
-
import { a as r, i, n as a, o, r as s, s as c, t as l } from "./MeshEditor-
|
|
2
|
+
import { t } from "./Slider-CHBQ8uUC.js";
|
|
3
|
+
import { t as n } from "./ToggleBar-BZ4Gk1IU.js";
|
|
4
|
+
import { a as r, i, n as a, o, r as s, s as c, t as l } from "./MeshEditor-8CRsu-Td.js";
|
|
5
5
|
import { fillInPoseFrame as u, fillToBoundsFrame as d, gradientGeometry as f, isGradientFill as p, sampleGradientStops as m, switchGradientKind as h, useGradientKinds as g, useNodeOverlayFrame as _, useOngoingAction as v, usePaintKind as y } from "@weasel-js/core";
|
|
6
6
|
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
7
7
|
import "react";
|
|
@@ -322,4 +322,4 @@ function R(e, t, n) {
|
|
|
322
322
|
//#endregion
|
|
323
323
|
export { D as i, N as n, j as r, L as t };
|
|
324
324
|
|
|
325
|
-
//# sourceMappingURL=GradientEditor-
|
|
325
|
+
//# sourceMappingURL=GradientEditor-vz771M-N.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GradientEditor-DD2OjQtn.js","names":["s","_Fragment","_Fragment","s","ColorField","ToggleBar","handleOverlay_module_default","DragPoint","Guide","isMeshPaint","MeshHandles","DEFAULT_HATCH","paintGradientTrack","opts","stops","i","samples","t","gradient","ctx","baseGradient","layers","activeRange","low","high","h","hatch","stripe","dimColor","dimOverlay","wL","wR","style","GradientEditor_module_default","SPACES","MIN_STOPS","GradientEditor","props","kind","value","space","entry","usePaintKind","kinds","useGradientKinds","svg","nativeSvgKind","spaces","nativeSvgSpace","item","switchKind","converted","switchGradientKind","next","onChange","className","kindSwitch","renderBody","spaceBar","spaceSwitch","Editor","Fragment","isGradientFill","StopsBody","MeshEditor","withStops","thumbs","stop","applyThumbs","setStopColor","index","ordered","a","b","Slider","onInput","at","sampleGradientStops","hex","GradientHandles","HandleOverlay","renderForKind","toScreen","toLocal","emit","phase","from","to","HANDLE_RADIUS","p","center","edge","screenRadius","local","radius","MIN_RADIUS","gradientGeometry","tip","angle","SceneGradientHandles","frame","useNodeOverlayFrame","scene","containerRef","nodeId","edit","useOngoingAction","slot","paint","paintOf","dispatch","normalized","fillToBoundsFrame","common","fillInPoseFrame","isMeshGradientFill","resolved","data"],"sources":["../../src/paintGradientTrack.tsx","../../src/components/GradientEditor/GradientEditor.module.css","../../src/components/GradientEditor/GradientEditor.tsx","../../src/components/GradientEditor/GradientHandles.tsx","../../src/components/GradientEditor/SceneGradientHandles.tsx"],"sourcesContent":["import type { ReactNode, CSSProperties } from 'react';\nimport type { TrackCtx } from './components/Slider';\n\n/**\n * Options for {@link paintGradientTrack}.\n *\n * `gradient` maps a normalized position along the slider's value span (0 to\n * 1) to a CSS color; `samples` is how many stops the resulting\n * linear-gradient uses. The ramp is laid on the same span as the thumbs, so a\n * thumb at 0.3 sits over `gradient(0.3)`; any track beyond the span takes the\n * end colors.\n * `activeRange`, given in the slider's own value units, keeps that span at\n * full strength and dims + hatches the rest.\n */\nexport type GradientTrackOpts = {\n gradient: (t: number) => string;\n samples?: number;\n activeRange?: [number, number];\n hatch?: {\n angleDeg?: number;\n stripe?: number;\n gap?: number;\n dim?: number;\n };\n};\n\nconst DEFAULT_HATCH = { angleDeg: 135, stripe: 2, gap: 4, dim: 75 };\n\n/**\n * Builds a `Slider` `renderTrack` function that paints the track as a\n * sampled color gradient, optionally dimming and hatching the portions\n * outside an active range.\n */\nexport function paintGradientTrack(opts: GradientTrackOpts): (ctx: TrackCtx) => ReactNode {\n const { gradient, samples = 16, activeRange, hatch } = opts;\n\n return (ctx: TrackCtx) => {\n const stops: string[] = [];\n for (let i = 0; i <= samples; i++) {\n const t = i / samples;\n stops.push(`${gradient(t)} ${ctx.fractionToPosition(t)}`);\n }\n const baseGradient = `linear-gradient(to right, ${stops.join(', ')})`;\n\n const layers: string[] = [];\n if (activeRange) {\n const low = ctx.valueToFraction(activeRange[0]);\n const high = ctx.valueToFraction(activeRange[1]);\n const h = { ...DEFAULT_HATCH, ...hatch };\n const stripe = `repeating-linear-gradient(${h.angleDeg}deg, transparent 0 ${h.stripe}px, var(--wzl-surface) ${h.stripe}px ${h.stripe + h.gap}px)`;\n const dimColor = `color-mix(in srgb, var(--wzl-surface) ${h.dim}%, transparent)`;\n const dimOverlay = `linear-gradient(${dimColor}, ${dimColor})`;\n\n if (low > 0) {\n const wL = ctx.fractionToPosition(low);\n layers.push(`${dimOverlay} left 0 / ${wL} 100% no-repeat`);\n layers.push(`${stripe} left 0 / ${wL} 100% no-repeat`);\n }\n if (high < 1) {\n const wR = `calc(100% - ${ctx.fractionToPosition(high)})`;\n layers.push(`${dimOverlay} right 0 / ${wR} 100% no-repeat`);\n layers.push(`${stripe} right 0 / ${wR} 100% no-repeat`);\n }\n }\n layers.push(baseGradient);\n\n const style: CSSProperties = {\n position: 'absolute',\n inset: 0,\n background: layers.join(', '),\n };\n return <div style={style} />;\n };\n}\n",".root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-4);\n min-inline-size: 0;\n}\n\n.swatches {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wzl-space-3);\n}\n\n/* Each stop's opacity slider would otherwise stretch the row to a width no\n * properties panel has; the chip stays legible, the slider yields. */\n.swatch {\n flex: 0 1 auto;\n min-inline-size: 0;\n}\n\n.noEditor {\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-muted);\n}\n","import { type ReactElement, type ReactNode } from 'react';\nimport {\n isGradientFill,\n sampleGradientStops,\n switchGradientKind,\n useGradientKinds,\n usePaintKind,\n type ColorSpace,\n type FillStyle,\n type GradStop,\n type GradientFill,\n type PaintKind,\n} from '@weasel-js/core';\nimport { nativeSvgKind, nativeSvgSpace } from '@weasel-js/svg';\nimport { Slider, type Thumb } from '../Slider';\nimport { ColorField } from '../ColorField';\nimport { MeshEditor, isMeshPaint } from '../MeshEditor';\nimport { ToggleBar, type ToggleBarItem } from '../ToggleBar';\nimport { paintGradientTrack } from '../../paintGradientTrack';\nimport s from './GradientEditor.module.css';\n\nconst SPACES: readonly ToggleBarItem<ColorSpace>[] = [\n { value: 'rgb', label: 'sRGB' },\n { value: 'oklab', label: 'OKLab' },\n { value: 'oklch', label: 'OKLCh' },\n];\n\n/** Fewer than two stops is not a gradient any renderer can ramp between. */\nconst MIN_STOPS = 2;\n\n/**\n * Props for {@link GradientEditor}. `onInput` fires throughout a gesture and\n * `onChange` once at its end.\n */\nexport interface GradientEditorProps {\n /** The gradient being edited: a paint of any gradient kind — one that\n * `listGradientKinds` returns. */\n value: FillStyle;\n /**\n * Live value during a gesture — a stop drag, a color-picker scrub. Wire\n * it for preview; it fires many times per gesture and must not be\n * written to history.\n */\n onInput?: (next: FillStyle) => void;\n /** Committed value: one call per completed gesture. Pair with an\n * undoable write. */\n onChange: (next: FillStyle) => void;\n /** Show the kind switch — every registered gradient kind. Default true;\n * turn it off when the surrounding UI already owns the kind. */\n kindSwitch?: boolean;\n /** Show the sRGB / OKLab / OKLCh switch, which writes `interpolate`.\n * Default true. */\n spaceSwitch?: boolean;\n /**\n * Offer only what an SVG file carries natively: the linear and radial\n * gradients, which SVG has elements for, blended in sRGB, the only space\n * every SVG renderer honors. A conic or mesh gradient exports as a weasel\n * element that other renderers paint as one flat color, and an OKLab or\n * OKLCh blend exports as an attribute they ignore. A value already outside\n * that set keeps its own kind and space on offer, so it can be switched\n * back. Default false.\n */\n svg?: boolean;\n className?: string;\n}\n\ntype StopThumb = Thumb & { color: string };\n\n/**\n * Editor for a gradient's kind and colors: the stop list of a linear, radial\n * or conic gradient, a mesh's corner colors, or a registered kind's own\n * `Editor`. Switching kind goes through `switchGradientKind`, so the colors\n * carry across.\n *\n * Geometry (`from`/`to`, `center`, `radius`, `angle`) is deliberately not\n * edited here — on a canvas that belongs on the artwork, via\n * `<GradientHandles>`. This component owns the parts with no spatial\n * meaning, so it composes into a properties panel at any width.\n *\n * Stops are addressed by their position in `value.stops`, which is never\n * reordered — dragging one stop past another leaves both indices alone, so\n * a drag can cross a neighbour without the two swapping under the pointer.\n * Rendering sorts a copy.\n */\nexport function GradientEditor(props: GradientEditorProps): ReactElement {\n const { value, onInput, onChange, kindSwitch = true, spaceSwitch = true, svg = false, className } = props;\n const kind: PaintKind = value.fill ?? 'solid';\n const space: ColorSpace = (value as { interpolate?: ColorSpace }).interpolate ?? 'rgb';\n\n const entry = usePaintKind(kind);\n const kinds: readonly ToggleBarItem<PaintKind>[] = useGradientKinds()\n .filter((entry) => !svg || nativeSvgKind(entry.id) || entry.id === kind)\n .map((entry) => ({ value: entry.id, label: entry.label }));\n const spaces = SPACES.filter((item) => !svg || nativeSvgSpace(item.value) || item.value === space);\n\n const switchKind = (next: PaintKind): void => {\n const converted = switchGradientKind(value, next);\n if (converted && converted !== value) onChange(converted);\n };\n\n return (\n <div className={[s.root, className].filter(Boolean).join(' ')}>\n {kindSwitch && (\n <ToggleBar<PaintKind>\n items={kinds}\n value={kind}\n size=\"sm\"\n ariaLabel=\"Gradient kind\"\n onChange={(next) => next && switchKind(next)}\n />\n )}\n\n {renderBody()}\n </div>\n );\n\n function renderBody(): ReactElement {\n const spaceBar = spaceSwitch && spaces.length > 1 && (\n <ToggleBar<ColorSpace>\n items={spaces}\n value={space}\n size=\"sm\"\n ariaLabel=\"Blend space\"\n onChange={(next) => next && onChange({ ...value, interpolate: next } as FillStyle)}\n />\n );\n // A registered `Editor` wins even for a built-in id, as it does in `PaintInput`.\n if (entry?.Editor) {\n const Editor = entry.Editor;\n return <><Editor value={value} onInput={onInput} onChange={onChange} />{spaceBar}</>;\n }\n if (isGradientFill(value)) {\n return <StopsBody value={value} spaceBar={spaceBar} onInput={onInput} onChange={onChange} />;\n }\n if (isMeshPaint(value)) {\n return <><MeshEditor value={value} spaceSwitch={false} onInput={onInput} onChange={onChange} />{spaceBar}</>;\n }\n return <div className={s.noEditor}>{entry?.label ?? kind}: no editor</div>;\n }\n}\n\n/** The stop slider and swatch row of a linear, radial or conic gradient. */\nfunction StopsBody(props: {\n value: GradientFill;\n spaceBar: ReactNode;\n onInput?: (next: FillStyle) => void;\n onChange: (next: FillStyle) => void;\n}): ReactElement {\n const { value, spaceBar, onInput, onChange } = props;\n const stops = value.stops;\n const space = value.interpolate ?? 'rgb';\n\n const withStops = (next: GradStop[]): GradientFill => ({ ...value, stops: next });\n\n const thumbs: StopThumb[] = stops.map((stop) => ({ value: stop.offset, color: stop.color }));\n\n const applyThumbs = (next: StopThumb[]): GradStop[] =>\n next.map((t) => ({ offset: t.value, color: t.color }));\n\n const setStopColor = (index: number, color: string): GradStop[] =>\n stops.map((stop, i) => (i === index ? { ...stop, color } : stop));\n\n // Sorted view for the swatch row, carrying each stop's real index so a\n // recolor writes back to the right entry.\n const ordered = stops\n .map((stop, index) => ({ stop, index }))\n .sort((a, b) => a.stop.offset - b.stop.offset);\n\n return (\n <>\n <Slider<StopThumb>\n min={0}\n max={1}\n step={0.005}\n constraint=\"free\"\n thumbs={thumbs}\n ariaLabel=\"Gradient stops\"\n readoutPlacement=\"none\"\n onInput={(next) => onInput?.(withStops(applyThumbs(next)))}\n onChange={(next) => onChange(withStops(applyThumbs(next)))}\n onAddThumb={(at) => ({ value: at, color: sampleGradientStops(stops, at, space) })}\n onRemoveThumb={() => stops.length > MIN_STOPS}\n renderTrack={paintGradientTrack({\n gradient: (t) => sampleGradientStops(stops, t, space),\n // The track lerps between samples in sRGB whatever the gradient does,\n // so a hue arc needs more of them to not read as a straight line.\n samples: space === 'rgb' ? 32 : 64,\n })}\n />\n\n {spaceBar}\n\n <div className={s.swatches}>\n {ordered.map(({ stop, index }) => (\n <ColorField\n key={index}\n value={stop.color}\n alpha\n aria-label={`Stop ${index + 1} at ${Math.round(stop.offset * 100)}%`}\n className={s.swatch}\n onInput={(hex) => onInput?.(withStops(setStopColor(index, hex)))}\n onChange={(hex) => onChange(withStops(setStopColor(index, hex)))}\n />\n ))}\n </div>\n </>\n );\n}\n","import { type ReactElement, type ReactNode } from 'react';\nimport { gradientGeometry, type GradientFill } from '@weasel-js/core';\nimport { DragPoint, Guide, HandleOverlay, type EditPhase, type OverlayPoint as Point } from './handleOverlay';\nimport s from './handleOverlay.module.css';\n\n/**\n * Props for {@link GradientHandles}. `onInput` fires throughout a drag and\n * `onChange` once at its end.\n */\nexport interface GradientHandlesProps {\n /**\n * The gradient whose geometry these handles move, in a **resolved,\n * isotropic** frame — one where `radius` is a length in the same units as\n * `center.x` and a right angle is a right angle.\n *\n * A `units: 'bounds'` gradient is not such a frame: `x` and `y` are\n * fractions of two different lengths, so a circle there is an ellipse on\n * screen and polar math silently mixes scales. Resolve it first with\n * `fillInPoseFrame(fill, box)` and convert edits back with\n * `fillToBoundsFrame(next, box)`.\n */\n value: GradientFill;\n /**\n * Gradient space → overlay pixels. For a `units: 'local'` gradient this\n * is the node's local-to-screen transform; for `'world'`, the view.\n */\n toScreen: (p: Point) => Point;\n /** Overlay pixels → gradient space. Must invert `toScreen`. */\n toLocal: (p: Point) => Point;\n /** Live during a drag — wire for preview, do not write to history. */\n onInput?: (next: GradientFill) => void;\n /** Committed at drag end: one call per gesture. */\n onChange: (next: GradientFill) => void;\n /** Overlay size in CSS pixels. */\n width: number;\n height: number;\n className?: string;\n}\n\n/**\n * Direct-manipulation handles for a gradient's geometry, drawn as an SVG\n * overlay above a canvas: endpoints for linear, center and radius for\n * radial, center and angle arm for conic.\n *\n * Positioning is entirely the consumer's `toScreen` / `toLocal` — this\n * component never sees a view or a scene node, so the same handles serve a\n * node-local gradient, a world-space one, and a plain unzoomed preview.\n *\n * The overlay ignores pointer events except on the handles themselves, so\n * it can sit over live canvas content without swallowing tool input.\n */\nexport function GradientHandles(props: GradientHandlesProps): ReactElement {\n const { value, toScreen, toLocal, onInput, onChange, width, height, className } = props;\n\n return (\n <HandleOverlay width={width} height={height} className={className}>\n {renderForKind(value, toScreen, toLocal, onInput, onChange)}\n </HandleOverlay>\n );\n}\n\nfunction renderForKind(\n value: GradientFill,\n toScreen: (p: Point) => Point,\n toLocal: (p: Point) => Point,\n onInput: ((next: GradientFill) => void) | undefined,\n onChange: (next: GradientFill) => void,\n): ReactNode {\n const emit = (next: GradientFill, phase: EditPhase): void => {\n if (phase === 'input') onInput?.(next);\n else onChange(next);\n };\n\n if (value.fill === 'linear-gradient') {\n const from = toScreen(value.from);\n const to = toScreen(value.to);\n return (\n <>\n <Guide x1={from.x} y1={from.y} x2={to.x} y2={to.y} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={from}\n label=\"Gradient start\"\n onDrag={(p, phase) => emit({ ...value, from: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={to}\n label=\"Gradient end\"\n onDrag={(p, phase) => emit({ ...value, to: toLocal(p) }, phase)}\n />\n </>\n );\n }\n\n if (value.fill === 'radial-gradient') {\n const center = toScreen(value.center);\n // The radius handle rides the +x axis of gradient space, so it stays on\n // the drawn circle under a rotated or anisotropic transform.\n const edge = toScreen({ x: value.center.x + value.radius, y: value.center.y });\n const screenRadius = Math.hypot(edge.x - center.x, edge.y - center.y);\n return (\n <>\n <circle className={s.guide} cx={center.x} cy={center.y} r={screenRadius} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={center}\n label=\"Gradient center\"\n onDrag={(p, phase) => emit({ ...value, center: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={edge}\n label=\"Gradient radius\"\n onDrag={(p, phase) => {\n const local = toLocal(p);\n const radius = Math.hypot(local.x - value.center.x, local.y - value.center.y);\n emit({ ...value, radius: Math.max(MIN_RADIUS, radius) }, phase);\n }}\n />\n </>\n );\n }\n\n const center = toScreen(value.center);\n const { radius } = gradientGeometry(value);\n const tip = toScreen({\n x: value.center.x + Math.cos(value.angle) * radius,\n y: value.center.y + Math.sin(value.angle) * radius,\n });\n return (\n <>\n <Guide x1={center.x} y1={center.y} x2={tip.x} y2={tip.y} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={center}\n label=\"Gradient center\"\n onDrag={(p, phase) => emit({ ...value, center: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={tip}\n label=\"Gradient angle\"\n onDrag={(p, phase) => {\n const local = toLocal(p);\n const angle = Math.atan2(local.y - value.center.y, local.x - value.center.x);\n emit({ ...value, angle }, phase);\n }}\n />\n </>\n );\n}\n\n/** A radius of zero divides by zero in the shader's `t`; keep it off the floor. */\nconst MIN_RADIUS = 1;\n\nconst HANDLE_RADIUS = 7;\n","import { type ReactElement, type RefObject } from 'react';\nimport {\n fillInPoseFrame,\n fillToBoundsFrame,\n isGradientFill,\n useNodeOverlayFrame,\n useOngoingAction,\n type FillStyle,\n type GradientFill,\n type RectPose,\n type Scene,\n type Stroke,\n type View,\n} from '@weasel-js/core';\nimport { isMeshGradientFill, type MeshGradientFill } from '@weasel-js/core/mesh';\nimport { MeshHandles } from '../MeshEditor/MeshHandles';\nimport { GradientHandles } from './GradientHandles';\n\n/** The paint slots a node carries. Either may hold a gradient, and each has\n * its own action, so the overlay is told which one it is editing. */\nexport type PaintSlot = 'fill' | 'stroke';\n\n/** What `SceneGradientHandles` reads off a node. Every field is optional, so\n * any richer app data shape satisfies it. */\nexport interface PaintedNodeData {\n fill?: FillStyle | null;\n stroke?: Stroke | null;\n}\n\n/** Props for {@link SceneGradientHandles}. */\nexport interface SceneGradientHandlesProps<\n TData extends PaintedNodeData,\n TLayer extends string,\n TPose extends RectPose,\n> {\n scene: Scene<TData, TLayer, TPose>;\n /** The element the overlay is positioned in. Must be the canvas's own box,\n * or the handles land somewhere other than the paint. */\n containerRef: RefObject<HTMLElement | null>;\n /** The node whose paint is being edited — usually the lone selected id. */\n nodeId: string | null | undefined;\n /** Which of the node's two paints these handles move. */\n slot: PaintSlot;\n /** Current viewport; a thunk is re-read per projection. See\n * `useNodeOverlayFrame`. */\n view?: View | (() => View);\n className?: string;\n}\n\n/**\n * Scene-aware paint handles: on-canvas geometry handles for the gradient in\n * one node's `fill` or `stroke` — `GradientHandles` for the three ramps,\n * `MeshHandles` for a mesh — committed through the `setFill` / `setStroke`\n * actions as a single undo entry per drag.\n *\n * Renders nothing unless the targeted slot holds a gradient or a mesh. The\n * node stores its gradient in `units: 'bounds'` — fractions of its own box, so the paint\n * survives pan, zoom and resize — which is not a frame polar math can work\n * in; the handles get it resolved onto the box and every edit is normalized\n * back on the way out.\n *\n * `slot` is a prop rather than state the kit keeps: an app that edits fill\n * and stroke separately already knows which one has focus.\n */\nexport function SceneGradientHandles<\n TData extends PaintedNodeData,\n TLayer extends string,\n TPose extends RectPose,\n>(props: SceneGradientHandlesProps<TData, TLayer, TPose>): ReactElement | null {\n const { scene, containerRef, nodeId, slot, view, className } = props;\n const frame = useNodeOverlayFrame(scene, containerRef, nodeId, { view });\n const edit = useOngoingAction(slot === 'fill' ? 'setFill' : 'setStroke');\n\n const paint = frame ? paintOf(scene, nodeId, slot) : null;\n if (!frame || !paint) return null;\n\n const dispatch = (next: FillStyle, phase: 'input' | 'commit'): void => {\n const normalized = fillToBoundsFrame(next, frame.box);\n if (phase === 'commit') edit.commit({ paint: normalized });\n else edit.input({ paint: normalized });\n };\n const common = {\n toScreen: frame.toScreen,\n toLocal: frame.toLocal,\n width: frame.width,\n height: frame.height,\n className,\n onInput: (next: FillStyle) => dispatch(next, 'input'),\n onChange: (next: FillStyle) => dispatch(next, 'commit'),\n };\n\n if (isGradientFill(paint)) {\n return <GradientHandles value={fillInPoseFrame(paint, frame.box) as GradientFill} {...common} />;\n }\n if (isMeshGradientFill(paint)) {\n const resolved = fillInPoseFrame(paint, frame.box) as unknown as MeshGradientFill;\n // Still in the bounds frame means the mesh kind has not loaded, and\n // handles drawn now would sit in fractions of the box.\n if (resolved.units === 'bounds') return null;\n return <MeshHandles value={resolved} {...common} />;\n }\n return null;\n}\n\nfunction paintOf<TData extends PaintedNodeData, TLayer extends string, TPose extends RectPose>(\n scene: Scene<TData, TLayer, TPose>,\n nodeId: string | null | undefined,\n slot: PaintSlot,\n): FillStyle | null | undefined {\n if (nodeId == null) return undefined;\n const data = (scene.nodes as ReadonlyMap<string, { data: TData }>).get(nodeId)?.data;\n if (!data) return undefined;\n return slot === 'fill' ? data.fill : data.stroke?.paint;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GradientEditor-vz771M-N.js","names":["s","_Fragment","_Fragment","s","ColorField","ToggleBar","handleOverlay_module_default","DragPoint","Guide","isMeshPaint","MeshHandles","DEFAULT_HATCH","paintGradientTrack","opts","stops","i","samples","t","gradient","ctx","baseGradient","layers","activeRange","low","high","h","hatch","stripe","dimColor","dimOverlay","wL","wR","style","GradientEditor_module_default","SPACES","MIN_STOPS","GradientEditor","props","kind","value","space","entry","usePaintKind","kinds","useGradientKinds","svg","nativeSvgKind","spaces","nativeSvgSpace","item","switchKind","converted","switchGradientKind","next","onChange","className","kindSwitch","renderBody","spaceBar","spaceSwitch","Editor","Fragment","isGradientFill","StopsBody","MeshEditor","withStops","thumbs","stop","applyThumbs","setStopColor","index","ordered","a","b","Slider","onInput","at","sampleGradientStops","hex","GradientHandles","HandleOverlay","renderForKind","toScreen","toLocal","emit","phase","from","to","HANDLE_RADIUS","p","center","edge","screenRadius","local","radius","MIN_RADIUS","gradientGeometry","tip","angle","SceneGradientHandles","frame","useNodeOverlayFrame","scene","containerRef","nodeId","edit","useOngoingAction","slot","paint","paintOf","dispatch","normalized","fillToBoundsFrame","common","fillInPoseFrame","isMeshGradientFill","resolved","data"],"sources":["../../src/paintGradientTrack.tsx","../../src/components/GradientEditor/GradientEditor.module.css","../../src/components/GradientEditor/GradientEditor.tsx","../../src/components/GradientEditor/GradientHandles.tsx","../../src/components/GradientEditor/SceneGradientHandles.tsx"],"sourcesContent":["import type { ReactNode, CSSProperties } from 'react';\nimport type { TrackCtx } from './components/Slider';\n\n/**\n * Options for {@link paintGradientTrack}.\n *\n * `gradient` maps a normalized position along the slider's value span (0 to\n * 1) to a CSS color; `samples` is how many stops the resulting\n * linear-gradient uses. The ramp is laid on the same span as the thumbs, so a\n * thumb at 0.3 sits over `gradient(0.3)`; any track beyond the span takes the\n * end colors.\n * `activeRange`, given in the slider's own value units, keeps that span at\n * full strength and dims + hatches the rest.\n */\nexport type GradientTrackOpts = {\n gradient: (t: number) => string;\n samples?: number;\n activeRange?: [number, number];\n hatch?: {\n angleDeg?: number;\n stripe?: number;\n gap?: number;\n dim?: number;\n };\n};\n\nconst DEFAULT_HATCH = { angleDeg: 135, stripe: 2, gap: 4, dim: 75 };\n\n/**\n * Builds a `Slider` `renderTrack` function that paints the track as a\n * sampled color gradient, optionally dimming and hatching the portions\n * outside an active range.\n */\nexport function paintGradientTrack(opts: GradientTrackOpts): (ctx: TrackCtx) => ReactNode {\n const { gradient, samples = 16, activeRange, hatch } = opts;\n\n return (ctx: TrackCtx) => {\n const stops: string[] = [];\n for (let i = 0; i <= samples; i++) {\n const t = i / samples;\n stops.push(`${gradient(t)} ${ctx.fractionToPosition(t)}`);\n }\n const baseGradient = `linear-gradient(to right, ${stops.join(', ')})`;\n\n const layers: string[] = [];\n if (activeRange) {\n const low = ctx.valueToFraction(activeRange[0]);\n const high = ctx.valueToFraction(activeRange[1]);\n const h = { ...DEFAULT_HATCH, ...hatch };\n const stripe = `repeating-linear-gradient(${h.angleDeg}deg, transparent 0 ${h.stripe}px, var(--wzl-surface) ${h.stripe}px ${h.stripe + h.gap}px)`;\n const dimColor = `color-mix(in srgb, var(--wzl-surface) ${h.dim}%, transparent)`;\n const dimOverlay = `linear-gradient(${dimColor}, ${dimColor})`;\n\n if (low > 0) {\n const wL = ctx.fractionToPosition(low);\n layers.push(`${dimOverlay} left 0 / ${wL} 100% no-repeat`);\n layers.push(`${stripe} left 0 / ${wL} 100% no-repeat`);\n }\n if (high < 1) {\n const wR = `calc(100% - ${ctx.fractionToPosition(high)})`;\n layers.push(`${dimOverlay} right 0 / ${wR} 100% no-repeat`);\n layers.push(`${stripe} right 0 / ${wR} 100% no-repeat`);\n }\n }\n layers.push(baseGradient);\n\n const style: CSSProperties = {\n position: 'absolute',\n inset: 0,\n background: layers.join(', '),\n };\n return <div style={style} />;\n };\n}\n",".root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-4);\n min-inline-size: 0;\n}\n\n.swatches {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wzl-space-3);\n}\n\n/* Each stop's opacity slider would otherwise stretch the row to a width no\n * properties panel has; the chip stays legible, the slider yields. */\n.swatch {\n flex: 0 1 auto;\n min-inline-size: 0;\n}\n\n.noEditor {\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-muted);\n}\n","import { type ReactElement, type ReactNode } from 'react';\nimport {\n isGradientFill,\n sampleGradientStops,\n switchGradientKind,\n useGradientKinds,\n usePaintKind,\n type ColorSpace,\n type FillStyle,\n type GradStop,\n type GradientFill,\n type PaintKind,\n} from '@weasel-js/core';\nimport { nativeSvgKind, nativeSvgSpace } from '@weasel-js/svg';\nimport { Slider, type Thumb } from '../Slider';\nimport { ColorField } from '../ColorField';\nimport { MeshEditor, isMeshPaint } from '../MeshEditor';\nimport { ToggleBar, type ToggleBarItem } from '../ToggleBar';\nimport { paintGradientTrack } from '../../paintGradientTrack';\nimport s from './GradientEditor.module.css';\n\nconst SPACES: readonly ToggleBarItem<ColorSpace>[] = [\n { value: 'rgb', label: 'sRGB' },\n { value: 'oklab', label: 'OKLab' },\n { value: 'oklch', label: 'OKLCh' },\n];\n\n/** Fewer than two stops is not a gradient any renderer can ramp between. */\nconst MIN_STOPS = 2;\n\n/**\n * Props for {@link GradientEditor}. `onInput` fires throughout a gesture and\n * `onChange` once at its end.\n */\nexport interface GradientEditorProps {\n /** The gradient being edited: a paint of any gradient kind — one that\n * `listGradientKinds` returns. */\n value: FillStyle;\n /**\n * Live value during a gesture — a stop drag, a color-picker scrub. Wire\n * it for preview; it fires many times per gesture and must not be\n * written to history.\n */\n onInput?: (next: FillStyle) => void;\n /** Committed value: one call per completed gesture. Pair with an\n * undoable write. */\n onChange: (next: FillStyle) => void;\n /** Show the kind switch — every registered gradient kind. Default true;\n * turn it off when the surrounding UI already owns the kind. */\n kindSwitch?: boolean;\n /** Show the sRGB / OKLab / OKLCh switch, which writes `interpolate`.\n * Default true. */\n spaceSwitch?: boolean;\n /**\n * Offer only what an SVG file carries natively: the linear and radial\n * gradients, which SVG has elements for, blended in sRGB, the only space\n * every SVG renderer honors. A conic or mesh gradient exports as a weasel\n * element that other renderers paint as one flat color, and an OKLab or\n * OKLCh blend exports as an attribute they ignore. A value already outside\n * that set keeps its own kind and space on offer, so it can be switched\n * back. Default false.\n */\n svg?: boolean;\n className?: string;\n}\n\ntype StopThumb = Thumb & { color: string };\n\n/**\n * Editor for a gradient's kind and colors: the stop list of a linear, radial\n * or conic gradient, a mesh's corner colors, or a registered kind's own\n * `Editor`. Switching kind goes through `switchGradientKind`, so the colors\n * carry across.\n *\n * Geometry (`from`/`to`, `center`, `radius`, `angle`) is deliberately not\n * edited here — on a canvas that belongs on the artwork, via\n * `<GradientHandles>`. This component owns the parts with no spatial\n * meaning, so it composes into a properties panel at any width.\n *\n * Stops are addressed by their position in `value.stops`, which is never\n * reordered — dragging one stop past another leaves both indices alone, so\n * a drag can cross a neighbour without the two swapping under the pointer.\n * Rendering sorts a copy.\n */\nexport function GradientEditor(props: GradientEditorProps): ReactElement {\n const { value, onInput, onChange, kindSwitch = true, spaceSwitch = true, svg = false, className } = props;\n const kind: PaintKind = value.fill ?? 'solid';\n const space: ColorSpace = (value as { interpolate?: ColorSpace }).interpolate ?? 'rgb';\n\n const entry = usePaintKind(kind);\n const kinds: readonly ToggleBarItem<PaintKind>[] = useGradientKinds()\n .filter((entry) => !svg || nativeSvgKind(entry.id) || entry.id === kind)\n .map((entry) => ({ value: entry.id, label: entry.label }));\n const spaces = SPACES.filter((item) => !svg || nativeSvgSpace(item.value) || item.value === space);\n\n const switchKind = (next: PaintKind): void => {\n const converted = switchGradientKind(value, next);\n if (converted && converted !== value) onChange(converted);\n };\n\n return (\n <div className={[s.root, className].filter(Boolean).join(' ')}>\n {kindSwitch && (\n <ToggleBar<PaintKind>\n items={kinds}\n value={kind}\n size=\"sm\"\n ariaLabel=\"Gradient kind\"\n onChange={(next) => next && switchKind(next)}\n />\n )}\n\n {renderBody()}\n </div>\n );\n\n function renderBody(): ReactElement {\n const spaceBar = spaceSwitch && spaces.length > 1 && (\n <ToggleBar<ColorSpace>\n items={spaces}\n value={space}\n size=\"sm\"\n ariaLabel=\"Blend space\"\n onChange={(next) => next && onChange({ ...value, interpolate: next } as FillStyle)}\n />\n );\n // A registered `Editor` wins even for a built-in id, as it does in `PaintInput`.\n if (entry?.Editor) {\n const Editor = entry.Editor;\n return <><Editor value={value} onInput={onInput} onChange={onChange} />{spaceBar}</>;\n }\n if (isGradientFill(value)) {\n return <StopsBody value={value} spaceBar={spaceBar} onInput={onInput} onChange={onChange} />;\n }\n if (isMeshPaint(value)) {\n return <><MeshEditor value={value} spaceSwitch={false} onInput={onInput} onChange={onChange} />{spaceBar}</>;\n }\n return <div className={s.noEditor}>{entry?.label ?? kind}: no editor</div>;\n }\n}\n\n/** The stop slider and swatch row of a linear, radial or conic gradient. */\nfunction StopsBody(props: {\n value: GradientFill;\n spaceBar: ReactNode;\n onInput?: (next: FillStyle) => void;\n onChange: (next: FillStyle) => void;\n}): ReactElement {\n const { value, spaceBar, onInput, onChange } = props;\n const stops = value.stops;\n const space = value.interpolate ?? 'rgb';\n\n const withStops = (next: GradStop[]): GradientFill => ({ ...value, stops: next });\n\n const thumbs: StopThumb[] = stops.map((stop) => ({ value: stop.offset, color: stop.color }));\n\n const applyThumbs = (next: StopThumb[]): GradStop[] =>\n next.map((t) => ({ offset: t.value, color: t.color }));\n\n const setStopColor = (index: number, color: string): GradStop[] =>\n stops.map((stop, i) => (i === index ? { ...stop, color } : stop));\n\n // Sorted view for the swatch row, carrying each stop's real index so a\n // recolor writes back to the right entry.\n const ordered = stops\n .map((stop, index) => ({ stop, index }))\n .sort((a, b) => a.stop.offset - b.stop.offset);\n\n return (\n <>\n <Slider<StopThumb>\n min={0}\n max={1}\n step={0.005}\n constraint=\"free\"\n thumbs={thumbs}\n ariaLabel=\"Gradient stops\"\n readoutPlacement=\"none\"\n onInput={(next) => onInput?.(withStops(applyThumbs(next)))}\n onChange={(next) => onChange(withStops(applyThumbs(next)))}\n onAddThumb={(at) => ({ value: at, color: sampleGradientStops(stops, at, space) })}\n onRemoveThumb={() => stops.length > MIN_STOPS}\n renderTrack={paintGradientTrack({\n gradient: (t) => sampleGradientStops(stops, t, space),\n // The track lerps between samples in sRGB whatever the gradient does,\n // so a hue arc needs more of them to not read as a straight line.\n samples: space === 'rgb' ? 32 : 64,\n })}\n />\n\n {spaceBar}\n\n <div className={s.swatches}>\n {ordered.map(({ stop, index }) => (\n <ColorField\n key={index}\n value={stop.color}\n alpha\n aria-label={`Stop ${index + 1} at ${Math.round(stop.offset * 100)}%`}\n className={s.swatch}\n onInput={(hex) => onInput?.(withStops(setStopColor(index, hex)))}\n onChange={(hex) => onChange(withStops(setStopColor(index, hex)))}\n />\n ))}\n </div>\n </>\n );\n}\n","import { type ReactElement, type ReactNode } from 'react';\nimport { gradientGeometry, type GradientFill } from '@weasel-js/core';\nimport { DragPoint, Guide, HandleOverlay, type EditPhase, type OverlayPoint as Point } from './handleOverlay';\nimport s from './handleOverlay.module.css';\n\n/**\n * Props for {@link GradientHandles}. `onInput` fires throughout a drag and\n * `onChange` once at its end.\n */\nexport interface GradientHandlesProps {\n /**\n * The gradient whose geometry these handles move, in a **resolved,\n * isotropic** frame — one where `radius` is a length in the same units as\n * `center.x` and a right angle is a right angle.\n *\n * A `units: 'bounds'` gradient is not such a frame: `x` and `y` are\n * fractions of two different lengths, so a circle there is an ellipse on\n * screen and polar math silently mixes scales. Resolve it first with\n * `fillInPoseFrame(fill, box)` and convert edits back with\n * `fillToBoundsFrame(next, box)`.\n */\n value: GradientFill;\n /**\n * Gradient space → overlay pixels. For a `units: 'local'` gradient this\n * is the node's local-to-screen transform; for `'world'`, the view.\n */\n toScreen: (p: Point) => Point;\n /** Overlay pixels → gradient space. Must invert `toScreen`. */\n toLocal: (p: Point) => Point;\n /** Live during a drag — wire for preview, do not write to history. */\n onInput?: (next: GradientFill) => void;\n /** Committed at drag end: one call per gesture. */\n onChange: (next: GradientFill) => void;\n /** Overlay size in CSS pixels. */\n width: number;\n height: number;\n className?: string;\n}\n\n/**\n * Direct-manipulation handles for a gradient's geometry, drawn as an SVG\n * overlay above a canvas: endpoints for linear, center and radius for\n * radial, center and angle arm for conic.\n *\n * Positioning is entirely the consumer's `toScreen` / `toLocal` — this\n * component never sees a view or a scene node, so the same handles serve a\n * node-local gradient, a world-space one, and a plain unzoomed preview.\n *\n * The overlay ignores pointer events except on the handles themselves, so\n * it can sit over live canvas content without swallowing tool input.\n */\nexport function GradientHandles(props: GradientHandlesProps): ReactElement {\n const { value, toScreen, toLocal, onInput, onChange, width, height, className } = props;\n\n return (\n <HandleOverlay width={width} height={height} className={className}>\n {renderForKind(value, toScreen, toLocal, onInput, onChange)}\n </HandleOverlay>\n );\n}\n\nfunction renderForKind(\n value: GradientFill,\n toScreen: (p: Point) => Point,\n toLocal: (p: Point) => Point,\n onInput: ((next: GradientFill) => void) | undefined,\n onChange: (next: GradientFill) => void,\n): ReactNode {\n const emit = (next: GradientFill, phase: EditPhase): void => {\n if (phase === 'input') onInput?.(next);\n else onChange(next);\n };\n\n if (value.fill === 'linear-gradient') {\n const from = toScreen(value.from);\n const to = toScreen(value.to);\n return (\n <>\n <Guide x1={from.x} y1={from.y} x2={to.x} y2={to.y} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={from}\n label=\"Gradient start\"\n onDrag={(p, phase) => emit({ ...value, from: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={to}\n label=\"Gradient end\"\n onDrag={(p, phase) => emit({ ...value, to: toLocal(p) }, phase)}\n />\n </>\n );\n }\n\n if (value.fill === 'radial-gradient') {\n const center = toScreen(value.center);\n // The radius handle rides the +x axis of gradient space, so it stays on\n // the drawn circle under a rotated or anisotropic transform.\n const edge = toScreen({ x: value.center.x + value.radius, y: value.center.y });\n const screenRadius = Math.hypot(edge.x - center.x, edge.y - center.y);\n return (\n <>\n <circle className={s.guide} cx={center.x} cy={center.y} r={screenRadius} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={center}\n label=\"Gradient center\"\n onDrag={(p, phase) => emit({ ...value, center: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={edge}\n label=\"Gradient radius\"\n onDrag={(p, phase) => {\n const local = toLocal(p);\n const radius = Math.hypot(local.x - value.center.x, local.y - value.center.y);\n emit({ ...value, radius: Math.max(MIN_RADIUS, radius) }, phase);\n }}\n />\n </>\n );\n }\n\n const center = toScreen(value.center);\n const { radius } = gradientGeometry(value);\n const tip = toScreen({\n x: value.center.x + Math.cos(value.angle) * radius,\n y: value.center.y + Math.sin(value.angle) * radius,\n });\n return (\n <>\n <Guide x1={center.x} y1={center.y} x2={tip.x} y2={tip.y} />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={center}\n label=\"Gradient center\"\n onDrag={(p, phase) => emit({ ...value, center: toLocal(p) }, phase)}\n />\n <DragPoint\n radius={HANDLE_RADIUS}\n at={tip}\n label=\"Gradient angle\"\n onDrag={(p, phase) => {\n const local = toLocal(p);\n const angle = Math.atan2(local.y - value.center.y, local.x - value.center.x);\n emit({ ...value, angle }, phase);\n }}\n />\n </>\n );\n}\n\n/** A radius of zero divides by zero in the shader's `t`; keep it off the floor. */\nconst MIN_RADIUS = 1;\n\nconst HANDLE_RADIUS = 7;\n","import { type ReactElement, type RefObject } from 'react';\nimport {\n fillInPoseFrame,\n fillToBoundsFrame,\n isGradientFill,\n useNodeOverlayFrame,\n useOngoingAction,\n type FillStyle,\n type GradientFill,\n type RectPose,\n type Scene,\n type Stroke,\n type View,\n} from '@weasel-js/core';\nimport { isMeshGradientFill, type MeshGradientFill } from '@weasel-js/core/mesh';\nimport { MeshHandles } from '../MeshEditor/MeshHandles';\nimport { GradientHandles } from './GradientHandles';\n\n/** The paint slots a node carries. Either may hold a gradient, and each has\n * its own action, so the overlay is told which one it is editing. */\nexport type PaintSlot = 'fill' | 'stroke';\n\n/** What `SceneGradientHandles` reads off a node. Every field is optional, so\n * any richer app data shape satisfies it. */\nexport interface PaintedNodeData {\n fill?: FillStyle | null;\n stroke?: Stroke | null;\n}\n\n/** Props for {@link SceneGradientHandles}. */\nexport interface SceneGradientHandlesProps<\n TData extends PaintedNodeData,\n TLayer extends string,\n TPose extends RectPose,\n> {\n scene: Scene<TData, TLayer, TPose>;\n /** The element the overlay is positioned in. Must be the canvas's own box,\n * or the handles land somewhere other than the paint. */\n containerRef: RefObject<HTMLElement | null>;\n /** The node whose paint is being edited — usually the lone selected id. */\n nodeId: string | null | undefined;\n /** Which of the node's two paints these handles move. */\n slot: PaintSlot;\n /** Current viewport; a thunk is re-read per projection. See\n * `useNodeOverlayFrame`. */\n view?: View | (() => View);\n className?: string;\n}\n\n/**\n * Scene-aware paint handles: on-canvas geometry handles for the gradient in\n * one node's `fill` or `stroke` — `GradientHandles` for the three ramps,\n * `MeshHandles` for a mesh — committed through the `setFill` / `setStroke`\n * actions as a single undo entry per drag.\n *\n * Renders nothing unless the targeted slot holds a gradient or a mesh. The\n * node stores its gradient in `units: 'bounds'` — fractions of its own box, so the paint\n * survives pan, zoom and resize — which is not a frame polar math can work\n * in; the handles get it resolved onto the box and every edit is normalized\n * back on the way out.\n *\n * `slot` is a prop rather than state the kit keeps: an app that edits fill\n * and stroke separately already knows which one has focus.\n */\nexport function SceneGradientHandles<\n TData extends PaintedNodeData,\n TLayer extends string,\n TPose extends RectPose,\n>(props: SceneGradientHandlesProps<TData, TLayer, TPose>): ReactElement | null {\n const { scene, containerRef, nodeId, slot, view, className } = props;\n const frame = useNodeOverlayFrame(scene, containerRef, nodeId, { view });\n const edit = useOngoingAction(slot === 'fill' ? 'setFill' : 'setStroke');\n\n const paint = frame ? paintOf(scene, nodeId, slot) : null;\n if (!frame || !paint) return null;\n\n const dispatch = (next: FillStyle, phase: 'input' | 'commit'): void => {\n const normalized = fillToBoundsFrame(next, frame.box);\n if (phase === 'commit') edit.commit({ paint: normalized });\n else edit.input({ paint: normalized });\n };\n const common = {\n toScreen: frame.toScreen,\n toLocal: frame.toLocal,\n width: frame.width,\n height: frame.height,\n className,\n onInput: (next: FillStyle) => dispatch(next, 'input'),\n onChange: (next: FillStyle) => dispatch(next, 'commit'),\n };\n\n if (isGradientFill(paint)) {\n return <GradientHandles value={fillInPoseFrame(paint, frame.box) as GradientFill} {...common} />;\n }\n if (isMeshGradientFill(paint)) {\n const resolved = fillInPoseFrame(paint, frame.box) as unknown as MeshGradientFill;\n // Still in the bounds frame means the mesh kind has not loaded, and\n // handles drawn now would sit in fractions of the box.\n if (resolved.units === 'bounds') return null;\n return <MeshHandles value={resolved} {...common} />;\n }\n return null;\n}\n\nfunction paintOf<TData extends PaintedNodeData, TLayer extends string, TPose extends RectPose>(\n scene: Scene<TData, TLayer, TPose>,\n nodeId: string | null | undefined,\n slot: PaintSlot,\n): FillStyle | null | undefined {\n if (nodeId == null) return undefined;\n const data = (scene.nodes as ReadonlyMap<string, { data: TData }>).get(nodeId)?.data;\n if (!data) return undefined;\n return slot === 'fill' ? data.fill : data.stroke?.paint;\n}\n"],"mappings":";;;;;;;;;;AA0BA,IAAMW,IAAgB;CAAE,UAAU;CAAK,QAAQ;CAAG,KAAK;CAAG,KAAK;AAAG;AAOlE,SAAgBC,EAAmB,GAAuD;CACxF,IAAM,EAAE,aAAU,aAAU,IAAI,gBAAa,aAAUC;CAEvD,QAAQ,MAAkB;EACxB,IAAMC,IAAkB,CAAC;EACzB,KAAK,IAAIC,IAAI,GAAGA,KAAKC,GAAS,KAAK;GACjC,IAAMC,IAAIF,IAAIC;GACd,EAAM,KAAK,GAAGE,EAASD,CAAC,EAAE,GAAGE,EAAI,mBAAmBF,CAAC,GAAG;EAC1D;EACA,IAAMG,IAAe,6BAA6BN,EAAM,KAAK,IAAI,EAAE,IAE7DO,IAAmB,CAAC;EAC1B,IAAIC,GAAa;GACf,IAAMC,IAAMJ,EAAI,gBAAgBG,EAAY,EAAE,GACxCE,IAAOL,EAAI,gBAAgBG,EAAY,EAAE,GACzCG,IAAI;IAAE,GAAGd;IAAe,GAAGe;GAAM,GACjCC,IAAS,6BAA6BF,EAAE,SAAS,qBAAqBA,EAAE,OAAO,yBAAyBA,EAAE,OAAO,KAAKA,EAAE,SAASA,EAAE,IAAI,MACvIG,IAAW,yCAAyCH,EAAE,IAAI,kBAC1DI,IAAa,mBAAmBD,EAAS,IAAIA,EAAS;GAE5D,IAAIL,IAAM,GAAG;IACX,IAAMO,IAAKX,EAAI,mBAAmBI,CAAG;IAErC,AADAF,EAAO,KAAK,GAAGQ,EAAW,YAAYC,EAAG,gBAAgB,GACzDT,EAAO,KAAK,GAAGM,EAAO,YAAYG,EAAG,gBAAgB;GACvD;GACA,IAAIN,IAAO,GAAG;IACZ,IAAMO,IAAK,eAAeZ,EAAI,mBAAmBK,CAAI,EAAE;IAEvD,AADAH,EAAO,KAAK,GAAGQ,EAAW,aAAaE,EAAG,gBAAgB,GAC1DV,EAAO,KAAK,GAAGM,EAAO,aAAaI,EAAG,gBAAgB;GACxD;EACF;EACA,EAAO,KAAKX,CAAY;EAExB,IAAMY,IAAuB;GAC3B,UAAU;GACV,OAAO;GACP,YAAYX,EAAO,KAAK,IAAI;EAC9B;EACA,OAAO,kBAAC,OAAD,EAAY,SAAQ,CAAA;CAC7B;AACF;;;;;;GEpDMa,IAA+C;CACnD;EAAE,OAAO;EAAO,OAAO;CAAO;CAC9B;EAAE,OAAO;EAAS,OAAO;CAAQ;CACjC;EAAE,OAAO;EAAS,OAAO;CAAQ;AACnC,GAGMC,IAAY;AAwDlB,SAAgBC,EAAe,GAA0C;CACvE,IAAM,EAAE,UAAO,YAAS,aAAU,gBAAa,IAAM,iBAAc,IAAM,SAAM,IAAO,iBAAcC,GAC9FC,IAAkBC,EAAM,QAAQ,SAChCC,IAAqBD,EAAuC,eAAe,OAE3EE,IAAQC,EAAaJ,CAAI,GACzBK,IAA6CC,EAAiB,CAAC,CAClE,QAAQ,MAAU,CAACC,KAAOC,EAAcL,EAAM,EAAE,KAAKA,EAAM,OAAOH,CAAI,CAAC,CACvE,KAAK,OAAW;EAAE,OAAOG,EAAM;EAAI,OAAOA,EAAM;CAAM,EAAE,GACrDM,IAASb,EAAO,QAAQ,MAAS,CAACW,KAAOG,EAAeC,EAAK,KAAK,KAAKA,EAAK,UAAUT,CAAK,GAE3FU,KAAc,MAA0B;EAC5C,IAAMC,IAAYC,EAAmBb,GAAOc,CAAI;EAChD,AAAIF,KAAaA,MAAcZ,KAAOe,EAASH,CAAS;CAC1D;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,CAACnD,EAAE,MAAMuD,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAA5D,UAAA,CACGC,KACC,kBAACnD,GAAD;GACE,OAAOsC;GACP,OAAOL;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAASe,KAAQH,EAAWG,CAAI;EAC5C,CAAA,GAGFI,EAAW,CACT;;CAGP,SAASA,IAA2B;EAClC,IAAMC,IAAWC,KAAeZ,EAAO,SAAS,KAC9C,kBAAC1C,GAAD;GACE,OAAO0C;GACP,OAAOP;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAASa,KAAQC,EAAS;IAAE,GAAGf;IAAO,aAAac;GAAK,CAAc;EAClF,CAAA;EAGH,IAAIZ,GAAO,QAAQ;GACjB,IAAMmB,IAASnB,EAAM;GACrB,OAAO,kBAAAxC,GAAA,EAAA,UAAA,CAAE,kBAAC2D,GAAD;IAAe;IAAgB;IAAmB;GAAW,CAAA,GAAEF,CAAW,EAAA,CAAA;EACrF;EAOA,OANII,EAAevB,CAAK,IACf,kBAACwB,GAAD;GAAkB;GAAiB;GAAmB;GAAmB;EAAW,CAAA,IAEzFtD,EAAY8B,CAAK,IACZ,kBAAAtC,GAAA,EAAA,UAAA,CAAE,kBAAC+D,GAAD;GAAmB;GAAO,aAAa;GAAgB;GAAmB;EAAW,CAAA,GAAEN,CAAW,EAAA,CAAA,IAEtG,kBAAC,OAAD;GAAK,WAAW1D,EAAE;GAAlB,UAAA,CAA6ByC,GAAO,SAASH,GAAK,aAAgB;;CAC3E;AACF;AAGA,SAASyB,EAAU,GAKF;CACf,IAAM,EAAE,UAAO,aAAU,YAAS,gBAAa1B,GACzCvB,IAAQyB,EAAM,OACdC,IAAQD,EAAM,eAAe,OAE7B0B,KAAa,OAAoC;EAAE,GAAG1B;EAAO,OAAOc;CAAK,IAEzEa,IAAsBpD,EAAM,KAAK,OAAU;EAAE,OAAOqD,EAAK;EAAQ,OAAOA,EAAK;CAAM,EAAE,GAErFC,KAAe,MACnBf,EAAK,KAAK,OAAO;EAAE,QAAQpC,EAAE;EAAO,OAAOA,EAAE;CAAM,EAAE,GAEjDoD,KAAgB,GAAe,MACnCvD,EAAM,KAAK,GAAM,MAAOC,MAAMuD,IAAQ;EAAE,GAAGH;EAAM;CAAM,IAAIA,CAAK,GAI5DI,IAAUzD,EACb,KAAK,GAAM,OAAW;EAAE;EAAM;CAAM,EAAE,CAAC,CACvC,MAAM,GAAG,MAAM0D,EAAE,KAAK,SAASC,EAAE,KAAK,MAAM;CAE/C,OACE,kBAAAxE,GAAA,EAAA,UAAA;EACE,kBAACyE,GAAD;GACE,KAAK;GACL,KAAK;GACL,MAAM;GACN,YAAW;GACH;GACR,WAAU;GACV,kBAAiB;GACjB,UAAU,MAASC,IAAUV,EAAUG,EAAYf,CAAI,CAAC,CAAC;GACzD,WAAW,MAASC,EAASW,EAAUG,EAAYf,CAAI,CAAC,CAAC;GACzD,aAAa,OAAQ;IAAE,OAAOuB;IAAI,OAAOC,EAAoB/D,GAAO8D,GAAIpC,CAAK;GAAE;GAC/E,qBAAqB1B,EAAM,SAASqB;GACpC,aAAavB,EAAmB;IAC9B,WAAW,MAAMiE,EAAoB/D,GAAOG,GAAGuB,CAAK;IAGpD,SAASA,MAAU,QAAQ,KAAK;GAClC,CAAC;EACF,CAAA;EAEAkB;EAED,kBAAC,OAAD;GAAK,WAAW1D,EAAE;GACf,UAAAuE,EAAQ,KAAK,EAAE,SAAM,eACpB,kBAACnE,GAAD;IAEE,OAAO+D,EAAK;IACZ,OAAA;IACA,cAAY,QAAQG,IAAQ,EAAE,MAAM,KAAK,MAAMH,EAAK,SAAS,GAAG,EAAE;IAClE,WAAWnE,EAAE;IACb,UAAU,MAAQ2E,IAAUV,EAAUI,EAAaC,GAAOQ,CAAG,CAAC,CAAC;IAC/D,WAAW,MAAQxB,EAASW,EAAUI,EAAaC,GAAOQ,CAAG,CAAC,CAAC;GAChE,GAPMR,CAON,CACF;EACE,CAAA;CACL,EAAA,CAAA;AAEN;;;AC5JA,SAAgBS,EAAgB,GAA2C;CACzE,IAAM,EAAE,UAAO,aAAU,YAAS,YAAS,aAAU,UAAO,WAAQ,iBAAc1C;CAElF,OACE,kBAAC2C,GAAD;EAAsB;EAAe;EAAmB;EACrD,UAAAC,EAAc1C,GAAO2C,GAAUC,GAASR,GAASrB,CAAQ;CAC7C,CAAA;AAEnB;AAEA,SAAS2B,EACP,GACA,GACA,GACA,GACA,GACW;CACX,IAAMG,KAAQ,GAAoB,MAA2B;EAC3D,AAAIC,MAAU,UAASV,IAAUtB,CAAI,IAChCC,EAASD,CAAI;CACpB;CAEA,IAAId,EAAM,SAAS,mBAAmB;EACpC,IAAM+C,IAAOJ,EAAS3C,EAAM,IAAI,GAC1BgD,IAAKL,EAAS3C,EAAM,EAAE;EAC5B,OACE,kBAAArC,GAAA,EAAA,UAAA;GACE,kBAACM,GAAD;IAAO,IAAI8E,EAAK;IAAG,IAAIA,EAAK;IAAG,IAAIC,EAAG;IAAG,IAAIA,EAAG;GAAI,CAAA;GACpD,kBAAChF,GAAD;IACE,QAAQiF;IACR,IAAIF;IACJ,OAAM;IACN,SAAS,GAAG,MAAUF,EAAK;KAAE,GAAG7C;KAAO,MAAM4C,EAAQM,CAAC;IAAE,GAAGJ,CAAK;GACjE,CAAA;GACD,kBAAC9E,GAAD;IACE,QAAQiF;IACR,IAAID;IACJ,OAAM;IACN,SAAS,GAAG,MAAUH,EAAK;KAAE,GAAG7C;KAAO,IAAI4C,EAAQM,CAAC;IAAE,GAAGJ,CAAK;GAC/D,CAAA;EACD,EAAA,CAAA;CAEN;CAEA,IAAI9C,EAAM,SAAS,mBAAmB;EACpC,IAAMmD,IAASR,EAAS3C,EAAM,MAAM,GAG9BoD,IAAOT,EAAS;GAAE,GAAG3C,EAAM,OAAO,IAAIA,EAAM;GAAQ,GAAGA,EAAM,OAAO;EAAE,CAAC,GACvEqD,IAAe,KAAK,MAAMD,EAAK,IAAID,EAAO,GAAGC,EAAK,IAAID,EAAO,CAAC;EACpE,OACE,kBAAAxF,GAAA,EAAA,UAAA;GACE,kBAAC,UAAD;IAAQ,WAAWC,EAAE;IAAO,IAAIuF,EAAO;IAAG,IAAIA,EAAO;IAAG,GAAGE;GAAe,CAAA;GAC1E,kBAACrF,GAAD;IACE,QAAQiF;IACR,IAAIE;IACJ,OAAM;IACN,SAAS,GAAG,MAAUN,EAAK;KAAE,GAAG7C;KAAO,QAAQ4C,EAAQM,CAAC;IAAE,GAAGJ,CAAK;GACnE,CAAA;GACD,kBAAC9E,GAAD;IACE,QAAQiF;IACR,IAAIG;IACJ,OAAM;IACN,SAAS,GAAG,MAAU;KACpB,IAAME,IAAQV,EAAQM,CAAC,GACjBK,IAAS,KAAK,MAAMD,EAAM,IAAItD,EAAM,OAAO,GAAGsD,EAAM,IAAItD,EAAM,OAAO,CAAC;KAC5E,EAAK;MAAE,GAAGA;MAAO,QAAQ,KAAK,IAAIwD,GAAYD,CAAM;KAAE,GAAGT,CAAK;IAChE;GACD,CAAA;EACD,EAAA,CAAA;CAEN;CAEA,IAAMK,IAASR,EAAS3C,EAAM,MAAM,GAC9B,EAAE,cAAWyD,EAAiBzD,CAAK,GACnC0D,IAAMf,EAAS;EACnB,GAAG3C,EAAM,OAAO,IAAI,KAAK,IAAIA,EAAM,KAAK,IAAIuD;EAC5C,GAAGvD,EAAM,OAAO,IAAI,KAAK,IAAIA,EAAM,KAAK,IAAIuD;CAC9C,CAAC;CACD,OACE,kBAAA5F,GAAA,EAAA,UAAA;EACE,kBAACM,GAAD;GAAO,IAAIkF,EAAO;GAAG,IAAIA,EAAO;GAAG,IAAIO,EAAI;GAAG,IAAIA,EAAI;EAAI,CAAA;EAC1D,kBAAC1F,GAAD;GACE,QAAQiF;GACR,IAAIE;GACJ,OAAM;GACN,SAAS,GAAG,MAAUN,EAAK;IAAE,GAAG7C;IAAO,QAAQ4C,EAAQM,CAAC;GAAE,GAAGJ,CAAK;EACnE,CAAA;EACD,kBAAC9E,GAAD;GACE,QAAQiF;GACR,IAAIS;GACJ,OAAM;GACN,SAAS,GAAG,MAAU;IACpB,IAAMJ,IAAQV,EAAQM,CAAC,GACjBS,IAAQ,KAAK,MAAML,EAAM,IAAItD,EAAM,OAAO,GAAGsD,EAAM,IAAItD,EAAM,OAAO,CAAC;IAC3E,EAAK;KAAE,GAAGA;KAAO;IAAM,GAAG8C,CAAK;GACjC;EACD,CAAA;CACD,EAAA,CAAA;AAEN;AAGA,IAAMU,IAAa,GAEbP,IAAgB;;;AC5FtB,SAAgBW,EAId,GAA6E;CAC7E,IAAM,EAAE,UAAO,iBAAc,WAAQ,SAAM,SAAM,iBAAc9D,GACzD+D,IAAQC,EAAoBC,GAAOC,GAAcC,GAAQ,EAAE,QAAK,CAAC,GACjEC,IAAOC,EAAiBC,MAAS,SAAS,YAAY,WAAW,GAEjEC,IAAQR,IAAQS,EAAQP,GAAOE,GAAQG,CAAI,IAAI;CACrD,IAAI,CAACP,KAAS,CAACQ,GAAO,OAAO;CAE7B,IAAME,KAAY,GAAiB,MAAoC;EACrE,IAAMC,IAAaC,EAAkB3D,GAAM+C,EAAM,GAAG;EACpD,AAAIf,MAAU,WAAUoB,EAAK,OAAO,EAAE,OAAOM,EAAW,CAAC,IACpDN,EAAK,MAAM,EAAE,OAAOM,EAAW,CAAC;CACvC,GACME,IAAS;EACb,UAAUb,EAAM;EAChB,SAASA,EAAM;EACf,OAAOA,EAAM;EACb,QAAQA,EAAM;EACd;EACA,UAAU,MAAoBU,EAASzD,GAAM,OAAO;EACpD,WAAW,MAAoByD,EAASzD,GAAM,QAAQ;CACxD;CAEA,IAAIS,EAAe8C,CAAK,GACtB,OAAO,kBAAC7B,GAAD;EAAiB,OAAOmC,EAAgBN,GAAOR,EAAM,GAAG;EAAmB,GAAIa;CAAS,CAAA;CAEjG,IAAIE,EAAmBP,CAAK,GAAG;EAC7B,IAAMQ,IAAWF,EAAgBN,GAAOR,EAAM,GAAG;EAIjD,OADIgB,EAAS,UAAU,WAAiB,OACjC,kBAAC1G,GAAD;GAAa,OAAO0G;GAAU,GAAIH;EAAS,CAAA;CACpD;CACA,OAAO;AACT;AAEA,SAASJ,EACP,GACA,GACA,GAC8B;CAC9B,IAAIL,KAAU,MAAM;CACpB,IAAMa,IAAQf,EAAM,MAA+C,IAAIE,CAAM,CAAC,EAAE;CAChF,IAAKa,GACL,OAAOV,MAAS,SAASU,EAAK,OAAOA,EAAK,QAAQ;AACpD"}
|
|
@@ -43,6 +43,7 @@ var n = {
|
|
|
43
43
|
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\"/>",
|
|
44
44
|
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\"/>",
|
|
45
45
|
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\"/>",
|
|
46
|
+
bookmark: "<path d=\"M5.7 16.6V4.8a1.4 1.4 0 0 1 1.4-1.4h5.8a1.4 1.4 0 0 1 1.4 1.4V16.6L10 13.2Z\"/>",
|
|
46
47
|
info: "<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M10 9.4v4.4\"/><path d=\"M10 6.5h0\"/>",
|
|
47
48
|
warning: "<path d=\"M10 3.4 17.4 16.2H2.6z\"/><path d=\"M10 8.4v3.4\"/><path d=\"M10 14h0\"/>",
|
|
48
49
|
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\"/>",
|
|
@@ -224,6 +225,7 @@ var n = {
|
|
|
224
225
|
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\"/>",
|
|
225
226
|
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\"/>"
|
|
226
227
|
}, r = {
|
|
228
|
+
bookmark: "<path d=\"M5.7 16.6V4.8a1.4 1.4 0 0 1 1.4-1.4h5.8a1.4 1.4 0 0 1 1.4 1.4V16.6L10 13.2Z\" fill=\"currentColor\" stroke=\"none\"/>",
|
|
227
229
|
arcStraight: "<path d=\"M1.85 15L2.6 15H17.4L18.15 15L18.15 15.75L1.85 15.75Z\" fill=\"currentColor\" stroke=\"none\"/>",
|
|
228
230
|
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\"/>",
|
|
229
231
|
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\"/>",
|
|
@@ -409,6 +411,7 @@ var n = {
|
|
|
409
411
|
"visible",
|
|
410
412
|
"hidden",
|
|
411
413
|
"pin",
|
|
414
|
+
"bookmark",
|
|
412
415
|
"info",
|
|
413
416
|
"warning",
|
|
414
417
|
"error",
|
|
@@ -556,4 +559,4 @@ function l({ name: e, className: i, size: s = 20, label: l, filled: u = !1, fill
|
|
|
556
559
|
//#endregion
|
|
557
560
|
export { n as a, i, a as n, r, l as t };
|
|
558
561
|
|
|
559
|
-
//# sourceMappingURL=Icon
|
|
562
|
+
//# sourceMappingURL=Icon-DPRUIo3G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon-DPRUIo3G.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\n/** The SVG body of every glyph, by name — what `<Icon name>` draws. */\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 // Paragraph alignment\n textAlignLeft: `<path d=\"M3 4.375H17M3 8.125H12M3 11.875H17M3 15.625H12\"/>`,\n textAlignCenter: `<path d=\"M3 4.375H17M5.5 8.125H14.5M3 11.875H17M5.5 15.625H14.5\"/>`,\n textAlignRight: `<path d=\"M3 4.375H17M8 8.125H17M3 11.875H17M8 15.625H17\"/>`,\n textAlignJustify: `<path d=\"M3 4.375H17M3 8.125H17M3 11.875H17M3 15.625H12\"/>`,\n textAlignTop: `<rect x=\"1.875\" y=\"1.875\" width=\"16.25\" height=\"16.25\" rx=\"2\" stroke-width=\"1\"/><path d=\"M5.5 5.625H14.5M7 9.375H13\"/>`,\n textAlignMiddle: `<rect x=\"1.875\" y=\"1.875\" width=\"16.25\" height=\"16.25\" rx=\"2\" stroke-width=\"1\"/><path d=\"M5.5 8.125H14.5M7 11.875H13\"/>`,\n textAlignBottom: `<rect x=\"1.875\" y=\"1.875\" width=\"16.25\" height=\"16.25\" rx=\"2\" stroke-width=\"1\"/><path d=\"M5.5 10.625H14.5M7 14.375H13\"/>`,\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 bookmark: `<path d=\"M5.7 16.6V4.8a1.4 1.4 0 0 1 1.4-1.4h5.8a1.4 1.4 0 0 1 1.4 1.4V16.6L10 13.2Z\"/>`,\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 // Badge status\n statusSuccess: `<circle cx=\"10\" cy=\"10\" r=\"7\"/><path d=\"M6.84 10.33 8.89 12.38 13.17 7.62\"/>`,\n statusAccent: `<circle cx=\"10\" cy=\"10\" r=\"7\" fill=\"currentColor\"/>`,\n statusNeutral: `<path d=\"M10 3A7 7 0 0 1 10 17Z\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"10\" cy=\"10\" r=\"7\"/>`,\n statusMuted: `<path d=\"M11.44 3.15A7 7 0 0 0 8.56 3.15M4.79 5.33A7 7 0 0 0 3.35 7.82M3.35 12.18A7 7 0 0 0 4.79 14.67M8.56 16.85A7 7 0 0 0 11.44 16.85M15.21 14.67A7 7 0 0 0 16.65 12.18M16.65 7.82A7 7 0 0 0 15.21 5.33\"/>`,\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 bookmark: `<path d=\"M5.7 16.6V4.8a1.4 1.4 0 0 1 1.4-1.4h5.8a1.4 1.4 0 0 1 1.4 1.4V16.6L10 13.2Z\" fill=\"currentColor\" stroke=\"none\"/>`,\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: 'Paragraph alignment',\n names: [\n 'textAlignLeft',\n 'textAlignCenter',\n 'textAlignRight',\n 'textAlignJustify',\n 'textAlignTop',\n 'textAlignMiddle',\n 'textAlignBottom',\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 'bookmark',\n 'info',\n 'warning',\n 'error',\n 'busy',\n 'check',\n 'modeLight',\n 'modeDark',\n 'modeAuto',\n ],\n },\n {\n label: 'Badge status',\n names: [\n 'statusSuccess',\n 'statusAccent',\n 'statusNeutral',\n 'statusMuted',\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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AACP,GAMaC,IAAwE;CACnF;EACE,OAAO;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;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;GACA;GACA;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;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;GACA;EACF;CACF;CACA;EACE,OAAO;EACP,OAAO;GACL;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,GCrpBaC,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,6 +1,6 @@
|
|
|
1
|
-
import { Ct as e, rt as t, st as n, wt as r } from "./icons-
|
|
1
|
+
import { Ct as e, rt as t, st as n, wt as r } from "./icons-CofIOTiI.js";
|
|
2
2
|
import { t as i } from "./Button-XB-T75YL.js";
|
|
3
|
-
import { t as a } from "./Slider-
|
|
3
|
+
import { t as a } from "./Slider-CHBQ8uUC.js";
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
5
|
var c = {
|
|
6
6
|
jog: "_jog_1xcj4_4",
|
|
@@ -78,4 +78,4 @@ function u(e, t) {
|
|
|
78
78
|
//#endregion
|
|
79
79
|
export { l as t };
|
|
80
80
|
|
|
81
|
-
//# sourceMappingURL=Jog-
|
|
81
|
+
//# sourceMappingURL=Jog-TE6QI9i1.js.map
|