dialkit 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/icons.d.ts +19 -0
- package/dist/icons.js +39 -0
- package/dist/icons.js.map +1 -0
- package/dist/shortcut-utils.d.ts +39 -0
- package/dist/shortcut-utils.js +100 -0
- package/dist/shortcut-utils.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/icons.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare const ICON_CHEVRON = "M6 9.5L12 15.5L18 9.5";
|
|
2
|
+
declare const ICON_CHECK = "M5 12.75L10 19L19 5";
|
|
3
|
+
declare const ICON_CLIPBOARD: {
|
|
4
|
+
board: string;
|
|
5
|
+
sparkle: string;
|
|
6
|
+
body: string;
|
|
7
|
+
};
|
|
8
|
+
declare const ICON_ADD_PRESET: string[];
|
|
9
|
+
declare const ICON_TRASH: string[];
|
|
10
|
+
declare const ICON_PANEL: {
|
|
11
|
+
path: string;
|
|
12
|
+
circles: {
|
|
13
|
+
cx: string;
|
|
14
|
+
cy: string;
|
|
15
|
+
r: string;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { ICON_ADD_PRESET, ICON_CHECK, ICON_CHEVRON, ICON_CLIPBOARD, ICON_PANEL, ICON_TRASH };
|
package/dist/icons.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/icons.ts
|
|
2
|
+
var ICON_CHEVRON = "M6 9.5L12 15.5L18 9.5";
|
|
3
|
+
var ICON_CHECK = "M5 12.75L10 19L19 5";
|
|
4
|
+
var ICON_CLIPBOARD = {
|
|
5
|
+
board: "M8 6C8 4.34315 9.34315 3 11 3H13C14.6569 3 16 4.34315 16 6V7H8V6Z",
|
|
6
|
+
sparkle: "M19.2405 16.1852L18.5436 14.3733C18.4571 14.1484 18.241 14 18 14C17.759 14 17.5429 14.1484 17.4564 14.3733L16.7595 16.1852C16.658 16.4493 16.4493 16.658 16.1852 16.7595L14.3733 17.4564C14.1484 17.5429 14 17.759 14 18C14 18.241 14.1484 18.4571 14.3733 18.5436L16.1852 19.2405C16.4493 19.342 16.658 19.5507 16.7595 19.8148L17.4564 21.6267C17.5429 21.8516 17.759 22 18 22C18.241 22 18.4571 21.8516 18.5436 21.6267L19.2405 19.8148C19.342 19.5507 19.5507 19.342 19.8148 19.2405L21.6267 18.5436C21.8516 18.4571 22 18.241 22 18C22 17.759 21.8516 17.5429 21.6267 17.4564L19.8148 16.7595C19.5507 16.658 19.342 16.4493 19.2405 16.1852Z",
|
|
7
|
+
body: "M16 5H17C18.6569 5 20 6.34315 20 8V11M8 5H7C5.34315 5 4 6.34315 4 8V18C4 19.6569 5.34315 21 7 21H12"
|
|
8
|
+
};
|
|
9
|
+
var ICON_ADD_PRESET = [
|
|
10
|
+
"M4 6H20",
|
|
11
|
+
"M4 12H10",
|
|
12
|
+
"M15 15L21 15",
|
|
13
|
+
"M18 12V18",
|
|
14
|
+
"M4 18H10"
|
|
15
|
+
];
|
|
16
|
+
var ICON_TRASH = [
|
|
17
|
+
"M5 6.5L5.80734 18.2064C5.91582 19.7794 7.22348 21 8.80023 21H15.1998C16.7765 21 18.0842 19.7794 18.1927 18.2064L19 6.5",
|
|
18
|
+
"M10 11V16",
|
|
19
|
+
"M14 11V16",
|
|
20
|
+
"M3.5 6H20.5",
|
|
21
|
+
"M8.07092 5.74621C8.42348 3.89745 10.0485 2.5 12 2.5C13.9515 2.5 15.5765 3.89745 15.9291 5.74621"
|
|
22
|
+
];
|
|
23
|
+
var ICON_PANEL = {
|
|
24
|
+
path: "M6.84766 11.75C6.78583 11.9899 6.75 12.2408 6.75 12.5C6.75 12.7592 6.78583 13.0101 6.84766 13.25H2C1.58579 13.25 1.25 12.9142 1.25 12.5C1.25 12.0858 1.58579 11.75 2 11.75H6.84766ZM14 11.75C14.4142 11.75 14.75 12.0858 14.75 12.5C14.75 12.9142 14.4142 13.25 14 13.25H12.6523C12.7142 13.0101 12.75 12.7592 12.75 12.5C12.75 12.2408 12.7142 11.9899 12.6523 11.75H14ZM3.09766 7.25C3.03583 7.48994 3 7.74075 3 8C3 8.25925 3.03583 8.51006 3.09766 8.75H2C1.58579 8.75 1.25 8.41421 1.25 8C1.25 7.58579 1.58579 7.25 2 7.25H3.09766ZM14 7.25C14.4142 7.25 14.75 7.58579 14.75 8C14.75 8.41421 14.4142 8.75 14 8.75H8.90234C8.96417 8.51006 9 8.25925 9 8C9 7.74075 8.96417 7.48994 8.90234 7.25H14ZM7.59766 2.75C7.53583 2.98994 7.5 3.24075 7.5 3.5C7.5 3.75925 7.53583 4.01006 7.59766 4.25H2C1.58579 4.25 1.25 3.91421 1.25 3.5C1.25 3.08579 1.58579 2.75 2 2.75H7.59766ZM14 2.75C14.4142 2.75 14.75 3.08579 14.75 3.5C14.75 3.91421 14.4142 4.25 14 4.25H13.4023C13.4642 4.01006 13.5 3.75925 13.5 3.5C13.5 3.24075 13.4642 2.98994 13.4023 2.75H14Z",
|
|
25
|
+
circles: [
|
|
26
|
+
{ cx: "6", cy: "8", r: "0.998596" },
|
|
27
|
+
{ cx: "10.4999", cy: "3.5", r: "0.998657" },
|
|
28
|
+
{ cx: "9.75015", cy: "12.5", r: "0.997986" }
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
ICON_ADD_PRESET,
|
|
33
|
+
ICON_CHECK,
|
|
34
|
+
ICON_CHEVRON,
|
|
35
|
+
ICON_CLIPBOARD,
|
|
36
|
+
ICON_PANEL,
|
|
37
|
+
ICON_TRASH
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/icons.ts"],"sourcesContent":["// Shared SVG icon geometry — single source of truth across all framework adapters.\n\nexport const ICON_CHEVRON = 'M6 9.5L12 15.5L18 9.5';\n\nexport const ICON_CHECK = 'M5 12.75L10 19L19 5';\n\nexport const ICON_CLIPBOARD = {\n board: 'M8 6C8 4.34315 9.34315 3 11 3H13C14.6569 3 16 4.34315 16 6V7H8V6Z',\n sparkle: 'M19.2405 16.1852L18.5436 14.3733C18.4571 14.1484 18.241 14 18 14C17.759 14 17.5429 14.1484 17.4564 14.3733L16.7595 16.1852C16.658 16.4493 16.4493 16.658 16.1852 16.7595L14.3733 17.4564C14.1484 17.5429 14 17.759 14 18C14 18.241 14.1484 18.4571 14.3733 18.5436L16.1852 19.2405C16.4493 19.342 16.658 19.5507 16.7595 19.8148L17.4564 21.6267C17.5429 21.8516 17.759 22 18 22C18.241 22 18.4571 21.8516 18.5436 21.6267L19.2405 19.8148C19.342 19.5507 19.5507 19.342 19.8148 19.2405L21.6267 18.5436C21.8516 18.4571 22 18.241 22 18C22 17.759 21.8516 17.5429 21.6267 17.4564L19.8148 16.7595C19.5507 16.658 19.342 16.4493 19.2405 16.1852Z',\n body: 'M16 5H17C18.6569 5 20 6.34315 20 8V11M8 5H7C5.34315 5 4 6.34315 4 8V18C4 19.6569 5.34315 21 7 21H12',\n};\n\nexport const ICON_ADD_PRESET = [\n 'M4 6H20',\n 'M4 12H10',\n 'M15 15L21 15',\n 'M18 12V18',\n 'M4 18H10',\n];\n\nexport const ICON_TRASH = [\n 'M5 6.5L5.80734 18.2064C5.91582 19.7794 7.22348 21 8.80023 21H15.1998C16.7765 21 18.0842 19.7794 18.1927 18.2064L19 6.5',\n 'M10 11V16',\n 'M14 11V16',\n 'M3.5 6H20.5',\n 'M8.07092 5.74621C8.42348 3.89745 10.0485 2.5 12 2.5C13.9515 2.5 15.5765 3.89745 15.9291 5.74621',\n];\n\nexport const ICON_PANEL = {\n path: 'M6.84766 11.75C6.78583 11.9899 6.75 12.2408 6.75 12.5C6.75 12.7592 6.78583 13.0101 6.84766 13.25H2C1.58579 13.25 1.25 12.9142 1.25 12.5C1.25 12.0858 1.58579 11.75 2 11.75H6.84766ZM14 11.75C14.4142 11.75 14.75 12.0858 14.75 12.5C14.75 12.9142 14.4142 13.25 14 13.25H12.6523C12.7142 13.0101 12.75 12.7592 12.75 12.5C12.75 12.2408 12.7142 11.9899 12.6523 11.75H14ZM3.09766 7.25C3.03583 7.48994 3 7.74075 3 8C3 8.25925 3.03583 8.51006 3.09766 8.75H2C1.58579 8.75 1.25 8.41421 1.25 8C1.25 7.58579 1.58579 7.25 2 7.25H3.09766ZM14 7.25C14.4142 7.25 14.75 7.58579 14.75 8C14.75 8.41421 14.4142 8.75 14 8.75H8.90234C8.96417 8.51006 9 8.25925 9 8C9 7.74075 8.96417 7.48994 8.90234 7.25H14ZM7.59766 2.75C7.53583 2.98994 7.5 3.24075 7.5 3.5C7.5 3.75925 7.53583 4.01006 7.59766 4.25H2C1.58579 4.25 1.25 3.91421 1.25 3.5C1.25 3.08579 1.58579 2.75 2 2.75H7.59766ZM14 2.75C14.4142 2.75 14.75 3.08579 14.75 3.5C14.75 3.91421 14.4142 4.25 14 4.25H13.4023C13.4642 4.01006 13.5 3.75925 13.5 3.5C13.5 3.24075 13.4642 2.98994 13.4023 2.75H14Z',\n circles: [\n { cx: '6', cy: '8', r: '0.998596' },\n { cx: '10.4999', cy: '3.5', r: '0.998657' },\n { cx: '9.75015', cy: '12.5', r: '0.997986' },\n ],\n};\n"],"mappings":";AAEO,IAAM,eAAe;AAErB,IAAM,aAAa;AAEnB,IAAM,iBAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AACR;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,SAAS;AAAA,IACP,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,WAAW;AAAA,IAClC,EAAE,IAAI,WAAW,IAAI,OAAO,GAAG,WAAW;AAAA,IAC1C,EAAE,IAAI,WAAW,IAAI,QAAQ,GAAG,WAAW;AAAA,EAC7C;AACF;","names":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
type ShortcutMode = 'fine' | 'normal' | 'coarse';
|
|
2
|
+
type ShortcutInteraction = 'scroll' | 'drag' | 'move' | 'scroll-only';
|
|
3
|
+
type ShortcutConfig = {
|
|
4
|
+
key?: string;
|
|
5
|
+
modifier?: 'alt' | 'shift' | 'meta';
|
|
6
|
+
mode?: ShortcutMode;
|
|
7
|
+
interaction?: ShortcutInteraction;
|
|
8
|
+
};
|
|
9
|
+
type ControlMeta = {
|
|
10
|
+
type: 'slider' | 'toggle' | 'spring' | 'transition' | 'folder' | 'action' | 'select' | 'color' | 'text';
|
|
11
|
+
path: string;
|
|
12
|
+
label: string;
|
|
13
|
+
min?: number;
|
|
14
|
+
max?: number;
|
|
15
|
+
step?: number;
|
|
16
|
+
children?: ControlMeta[];
|
|
17
|
+
defaultOpen?: boolean;
|
|
18
|
+
options?: (string | {
|
|
19
|
+
value: string;
|
|
20
|
+
label: string;
|
|
21
|
+
})[];
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
shortcut?: ShortcutConfig;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
declare function decimalsForStep(step: number): number;
|
|
27
|
+
declare function roundValue(val: number, step: number): number;
|
|
28
|
+
declare function getEffectiveStep(control: ControlMeta, shortcut: ShortcutConfig): number;
|
|
29
|
+
declare function applySliderDelta(panelId: string, path: string, control: ControlMeta, effectiveStep: number, direction: number): void;
|
|
30
|
+
declare function snapToDecile(rawValue: number, min: number, max: number): number;
|
|
31
|
+
declare function isInputFocused(): boolean;
|
|
32
|
+
declare function getActiveModifier(e: KeyboardEvent | WheelEvent | MouseEvent): 'alt' | 'shift' | 'meta' | undefined;
|
|
33
|
+
declare function findControl(controls: ControlMeta[], path: string): ControlMeta | null;
|
|
34
|
+
declare const DRAG_SENSITIVITY = 4;
|
|
35
|
+
declare function formatInteractionLabel(interaction: string): string;
|
|
36
|
+
declare function formatSliderShortcut(sc: ShortcutConfig): string;
|
|
37
|
+
declare function formatToggleShortcut(sc: ShortcutConfig): string;
|
|
38
|
+
|
|
39
|
+
export { DRAG_SENSITIVITY, applySliderDelta, decimalsForStep, findControl, formatInteractionLabel, formatSliderShortcut, formatToggleShortcut, getActiveModifier, getEffectiveStep, isInputFocused, roundValue, snapToDecile };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/shortcut-utils.ts
|
|
2
|
+
import { DialStore } from "dialkit/store";
|
|
3
|
+
function decimalsForStep(step) {
|
|
4
|
+
const s = step.toString();
|
|
5
|
+
const dot = s.indexOf(".");
|
|
6
|
+
return dot === -1 ? 0 : s.length - dot - 1;
|
|
7
|
+
}
|
|
8
|
+
function roundValue(val, step) {
|
|
9
|
+
const raw = Math.round(val / step) * step;
|
|
10
|
+
return parseFloat(raw.toFixed(decimalsForStep(step)));
|
|
11
|
+
}
|
|
12
|
+
function getEffectiveStep(control, shortcut) {
|
|
13
|
+
const min = control.min ?? 0;
|
|
14
|
+
const max = control.max ?? 1;
|
|
15
|
+
const range = max - min;
|
|
16
|
+
const mode = shortcut.mode ?? "normal";
|
|
17
|
+
return mode === "fine" ? range * 0.01 : mode === "coarse" ? range * 0.1 : control.step ?? 1;
|
|
18
|
+
}
|
|
19
|
+
function applySliderDelta(panelId, path, control, effectiveStep, direction) {
|
|
20
|
+
const currentValue = DialStore.getValue(panelId, path);
|
|
21
|
+
const min = control.min ?? 0;
|
|
22
|
+
const max = control.max ?? 1;
|
|
23
|
+
const newValue = Math.max(min, Math.min(max, currentValue + direction * effectiveStep));
|
|
24
|
+
DialStore.updateValue(panelId, path, roundValue(newValue, effectiveStep));
|
|
25
|
+
}
|
|
26
|
+
function snapToDecile(rawValue, min, max) {
|
|
27
|
+
const normalized = (rawValue - min) / (max - min);
|
|
28
|
+
const nearest = Math.round(normalized * 10) / 10;
|
|
29
|
+
if (Math.abs(normalized - nearest) <= 0.03125) {
|
|
30
|
+
return min + nearest * (max - min);
|
|
31
|
+
}
|
|
32
|
+
return rawValue;
|
|
33
|
+
}
|
|
34
|
+
function isInputFocused() {
|
|
35
|
+
const el = document.activeElement;
|
|
36
|
+
if (!el) return false;
|
|
37
|
+
const tag = el.tagName;
|
|
38
|
+
if (tag === "INPUT" || tag === "TEXTAREA") return true;
|
|
39
|
+
if (el.contentEditable === "true") return true;
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
function getActiveModifier(e) {
|
|
43
|
+
if (e.altKey) return "alt";
|
|
44
|
+
if (e.shiftKey) return "shift";
|
|
45
|
+
if (e.metaKey) return "meta";
|
|
46
|
+
return void 0;
|
|
47
|
+
}
|
|
48
|
+
function findControl(controls, path) {
|
|
49
|
+
for (const control of controls) {
|
|
50
|
+
if (control.path === path) return control;
|
|
51
|
+
if (control.type === "folder" && control.children) {
|
|
52
|
+
const found = findControl(control.children, path);
|
|
53
|
+
if (found) return found;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
var DRAG_SENSITIVITY = 4;
|
|
59
|
+
function formatInteractionLabel(interaction) {
|
|
60
|
+
switch (interaction) {
|
|
61
|
+
case "drag":
|
|
62
|
+
return "Drag";
|
|
63
|
+
case "move":
|
|
64
|
+
return "Move";
|
|
65
|
+
case "scroll-only":
|
|
66
|
+
return "Scroll";
|
|
67
|
+
default:
|
|
68
|
+
return "Scroll";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function formatSliderShortcut(sc) {
|
|
72
|
+
const interaction = sc.interaction ?? "scroll";
|
|
73
|
+
const actionLabel = formatInteractionLabel(interaction);
|
|
74
|
+
if (!sc.key) return actionLabel;
|
|
75
|
+
const mod = formatModifier(sc.modifier);
|
|
76
|
+
return `${mod}${sc.key.toUpperCase()}+${actionLabel}`;
|
|
77
|
+
}
|
|
78
|
+
function formatToggleShortcut(sc) {
|
|
79
|
+
if (!sc.key) return "Press";
|
|
80
|
+
const mod = formatModifier(sc.modifier);
|
|
81
|
+
return `${mod}${sc.key.toUpperCase()}`;
|
|
82
|
+
}
|
|
83
|
+
function formatModifier(modifier) {
|
|
84
|
+
return modifier === "alt" ? "\u2325" : modifier === "shift" ? "\u21E7" : modifier === "meta" ? "\u2318" : "";
|
|
85
|
+
}
|
|
86
|
+
export {
|
|
87
|
+
DRAG_SENSITIVITY,
|
|
88
|
+
applySliderDelta,
|
|
89
|
+
decimalsForStep,
|
|
90
|
+
findControl,
|
|
91
|
+
formatInteractionLabel,
|
|
92
|
+
formatSliderShortcut,
|
|
93
|
+
formatToggleShortcut,
|
|
94
|
+
getActiveModifier,
|
|
95
|
+
getEffectiveStep,
|
|
96
|
+
isInputFocused,
|
|
97
|
+
roundValue,
|
|
98
|
+
snapToDecile
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=shortcut-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shortcut-utils.ts"],"sourcesContent":["// Shared shortcut utilities — single source of truth across all framework adapters.\n\nimport { DialStore } from './store/DialStore';\nimport type { ControlMeta, ShortcutConfig } from './store/DialStore';\n\n// ── Math helpers ──\n\nexport function decimalsForStep(step: number): number {\n const s = step.toString();\n const dot = s.indexOf('.');\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nexport function roundValue(val: number, step: number): number {\n const raw = Math.round(val / step) * step;\n return parseFloat(raw.toFixed(decimalsForStep(step)));\n}\n\nexport function getEffectiveStep(control: ControlMeta, shortcut: ShortcutConfig): number {\n const min = control.min ?? 0;\n const max = control.max ?? 1;\n const range = max - min;\n const mode = shortcut.mode ?? 'normal';\n return mode === 'fine' ? range * 0.01\n : mode === 'coarse' ? range * 0.1\n : control.step ?? 1;\n}\n\nexport function applySliderDelta(\n panelId: string,\n path: string,\n control: ControlMeta,\n effectiveStep: number,\n direction: number\n): void {\n const currentValue = DialStore.getValue(panelId, path) as number;\n const min = control.min ?? 0;\n const max = control.max ?? 1;\n const newValue = Math.max(min, Math.min(max, currentValue + direction * effectiveStep));\n DialStore.updateValue(panelId, path, roundValue(newValue, effectiveStep));\n}\n\nexport function snapToDecile(rawValue: number, min: number, max: number): number {\n const normalized = (rawValue - min) / (max - min);\n const nearest = Math.round(normalized * 10) / 10;\n if (Math.abs(normalized - nearest) <= 0.03125) {\n return min + nearest * (max - min);\n }\n return rawValue;\n}\n\n// ── DOM helpers ──\n\nexport function isInputFocused(): boolean {\n const el = document.activeElement;\n if (!el) return false;\n const tag = el.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA') return true;\n if ((el as HTMLElement).contentEditable === 'true') return true;\n return false;\n}\n\nexport function getActiveModifier(e: KeyboardEvent | WheelEvent | MouseEvent): 'alt' | 'shift' | 'meta' | undefined {\n if (e.altKey) return 'alt';\n if (e.shiftKey) return 'shift';\n if (e.metaKey) return 'meta';\n return undefined;\n}\n\nexport function findControl(controls: ControlMeta[], path: string): ControlMeta | null {\n for (const control of controls) {\n if (control.path === path) return control;\n if (control.type === 'folder' && control.children) {\n const found = findControl(control.children, path);\n if (found) return found;\n }\n }\n return null;\n}\n\nexport const DRAG_SENSITIVITY = 4;\n\n// ── Formatting helpers ──\n\nexport function formatInteractionLabel(interaction: string): string {\n switch (interaction) {\n case 'drag': return 'Drag';\n case 'move': return 'Move';\n case 'scroll-only': return 'Scroll';\n default: return 'Scroll';\n }\n}\n\nexport function formatSliderShortcut(sc: ShortcutConfig): string {\n const interaction = sc.interaction ?? 'scroll';\n const actionLabel = formatInteractionLabel(interaction);\n if (!sc.key) return actionLabel;\n const mod = formatModifier(sc.modifier);\n return `${mod}${sc.key.toUpperCase()}+${actionLabel}`;\n}\n\nexport function formatToggleShortcut(sc: ShortcutConfig): string {\n if (!sc.key) return 'Press';\n const mod = formatModifier(sc.modifier);\n return `${mod}${sc.key.toUpperCase()}`;\n}\n\nfunction formatModifier(modifier?: string): string {\n return modifier === 'alt' ? '\\u2325'\n : modifier === 'shift' ? '\\u21E7'\n : modifier === 'meta' ? '\\u2318'\n : '';\n}\n"],"mappings":";AAEA,SAAS,iBAAiB;AAKnB,SAAS,gBAAgB,MAAsB;AACpD,QAAM,IAAI,KAAK,SAAS;AACxB,QAAM,MAAM,EAAE,QAAQ,GAAG;AACzB,SAAO,QAAQ,KAAK,IAAI,EAAE,SAAS,MAAM;AAC3C;AAEO,SAAS,WAAW,KAAa,MAAsB;AAC5D,QAAM,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI;AACrC,SAAO,WAAW,IAAI,QAAQ,gBAAgB,IAAI,CAAC,CAAC;AACtD;AAEO,SAAS,iBAAiB,SAAsB,UAAkC;AACvF,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,QAAQ,MAAM;AACpB,QAAM,OAAO,SAAS,QAAQ;AAC9B,SAAO,SAAS,SAAS,QAAQ,OAC7B,SAAS,WAAW,QAAQ,MAC5B,QAAQ,QAAQ;AACtB;AAEO,SAAS,iBACd,SACA,MACA,SACA,eACA,WACM;AACN,QAAM,eAAe,UAAU,SAAS,SAAS,IAAI;AACrD,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,eAAe,YAAY,aAAa,CAAC;AACtF,YAAU,YAAY,SAAS,MAAM,WAAW,UAAU,aAAa,CAAC;AAC1E;AAEO,SAAS,aAAa,UAAkB,KAAa,KAAqB;AAC/E,QAAM,cAAc,WAAW,QAAQ,MAAM;AAC7C,QAAM,UAAU,KAAK,MAAM,aAAa,EAAE,IAAI;AAC9C,MAAI,KAAK,IAAI,aAAa,OAAO,KAAK,SAAS;AAC7C,WAAO,MAAM,WAAW,MAAM;AAAA,EAChC;AACA,SAAO;AACT;AAIO,SAAS,iBAA0B;AACxC,QAAM,KAAK,SAAS;AACpB,MAAI,CAAC,GAAI,QAAO;AAChB,QAAM,MAAM,GAAG;AACf,MAAI,QAAQ,WAAW,QAAQ,WAAY,QAAO;AAClD,MAAK,GAAmB,oBAAoB,OAAQ,QAAO;AAC3D,SAAO;AACT;AAEO,SAAS,kBAAkB,GAAkF;AAClH,MAAI,EAAE,OAAQ,QAAO;AACrB,MAAI,EAAE,SAAU,QAAO;AACvB,MAAI,EAAE,QAAS,QAAO;AACtB,SAAO;AACT;AAEO,SAAS,YAAY,UAAyB,MAAkC;AACrF,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,SAAS,KAAM,QAAO;AAClC,QAAI,QAAQ,SAAS,YAAY,QAAQ,UAAU;AACjD,YAAM,QAAQ,YAAY,QAAQ,UAAU,IAAI;AAChD,UAAI,MAAO,QAAO;AAAA,IACpB;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,mBAAmB;AAIzB,SAAS,uBAAuB,aAA6B;AAClE,UAAQ,aAAa;AAAA,IACnB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAe,aAAO;AAAA,IAC3B;AAAS,aAAO;AAAA,EAClB;AACF;AAEO,SAAS,qBAAqB,IAA4B;AAC/D,QAAM,cAAc,GAAG,eAAe;AACtC,QAAM,cAAc,uBAAuB,WAAW;AACtD,MAAI,CAAC,GAAG,IAAK,QAAO;AACpB,QAAM,MAAM,eAAe,GAAG,QAAQ;AACtC,SAAO,GAAG,GAAG,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,WAAW;AACrD;AAEO,SAAS,qBAAqB,IAA4B;AAC/D,MAAI,CAAC,GAAG,IAAK,QAAO;AACpB,QAAM,MAAM,eAAe,GAAG,QAAQ;AACtC,SAAO,GAAG,GAAG,GAAG,GAAG,IAAI,YAAY,CAAC;AACtC;AAEA,SAAS,eAAe,UAA2B;AACjD,SAAO,aAAa,QAAQ,WACxB,aAAa,UAAU,WACvB,aAAa,SAAS,WACtB;AACN;","names":[]}
|