@tanstack/hotkeys-devtools 1.0.0 → 1.1.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.
Files changed (43) hide show
  1. package/dist/HotkeysContextProvider.js +1 -2
  2. package/dist/_registrations.js +1 -2
  3. package/dist/components/ActionButtons.js +2 -3
  4. package/dist/components/DetailsPanel.js +16 -3
  5. package/dist/components/HeldKeysTopbar.js +5 -3
  6. package/dist/components/HotkeyList.js +13 -3
  7. package/dist/components/Shell.js +5 -4
  8. package/dist/components/index.js +1 -2
  9. package/dist/core.d.ts +3 -6
  10. package/dist/core.js +1 -2
  11. package/dist/index.d.ts +2 -4
  12. package/dist/index.js +1 -2
  13. package/dist/sequence-progress.js +1 -2
  14. package/dist/styles/tokens.js +1 -2
  15. package/dist/styles/use-styles.js +5 -4
  16. package/package.json +11 -11
  17. package/dist/HotkeysContextProvider.js.map +0 -1
  18. package/dist/_registrations.js.map +0 -1
  19. package/dist/components/ActionButtons.js.map +0 -1
  20. package/dist/components/DetailsPanel.js.map +0 -1
  21. package/dist/components/HeldKeysTopbar.js.map +0 -1
  22. package/dist/components/HotkeyList.js.map +0 -1
  23. package/dist/components/Shell.js.map +0 -1
  24. package/dist/components/index.js.map +0 -1
  25. package/dist/core.js.map +0 -1
  26. package/dist/index.js.map +0 -1
  27. package/dist/sequence-progress.js.map +0 -1
  28. package/dist/styles/tokens.js.map +0 -1
  29. package/dist/styles/use-styles.js.map +0 -1
  30. package/src/HotkeysContextProvider.tsx +0 -130
  31. package/src/_registrations.ts +0 -59
  32. package/src/components/ActionButtons.tsx +0 -38
  33. package/src/components/DetailsPanel.tsx +0 -685
  34. package/src/components/HeldKeysTopbar.tsx +0 -46
  35. package/src/components/HotkeyList.tsx +0 -473
  36. package/src/components/Shell.tsx +0 -171
  37. package/src/components/index.tsx +0 -19
  38. package/src/core.tsx +0 -11
  39. package/src/index.ts +0 -11
  40. package/src/production.ts +0 -5
  41. package/src/sequence-progress.ts +0 -29
  42. package/src/styles/tokens.ts +0 -305
  43. package/src/styles/use-styles.ts +0 -687
@@ -76,5 +76,4 @@ function useHotkeysDevtoolsState() {
76
76
  }
77
77
 
78
78
  //#endregion
79
- export { HotkeysContextProvider, useHotkeysDevtoolsState };
80
- //# sourceMappingURL=HotkeysContextProvider.js.map
79
+ export { HotkeysContextProvider, useHotkeysDevtoolsState };
@@ -44,5 +44,4 @@ function getBindingKind(reg) {
44
44
  }
45
45
 
46
46
  //#endregion
47
- export { formatRegistration, getBindingKind, useRegistrationConflicts };
48
- //# sourceMappingURL=_registrations.js.map
47
+ export { formatRegistration, getBindingKind, useRegistrationConflicts };
@@ -3,7 +3,7 @@ import { className, delegateEvents, effect, template } from "solid-js/web";
3
3
  import { HotkeyManager, SequenceManager } from "@tanstack/hotkeys";
4
4
 
5
5
  //#region src/components/ActionButtons.tsx
6
- var _tmpl$ = /* @__PURE__ */ template(`<div><button><span></span>Trigger`);
6
+ var _tmpl$ = /*#__PURE__*/ template(`<div><button><span></span>Trigger`);
7
7
  function isSequenceRegistration(reg) {
8
8
  return "sequence" in reg && Array.isArray(reg.sequence);
9
9
  }
@@ -34,5 +34,4 @@ function ActionButtons(props) {
34
34
  delegateEvents(["mousedown"]);
35
35
 
36
36
  //#endregion
37
- export { ActionButtons };
38
- //# sourceMappingURL=ActionButtons.js.map
37
+ export { ActionButtons };
@@ -9,7 +9,21 @@ import { detectPlatform, formatForDisplay, normalizeHotkeyFromParsed, parseHotke
9
9
  import clsx from "clsx";
10
10
 
11
11
  //#region src/components/DetailsPanel.tsx
12
- var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div><span></span><span>`), _tmpl$3 = /* @__PURE__ */ template(`<div><div></div><div><div>ID</div><div></div><div>Matches</div><div></div><div>Raw</div><div></div><div>Target</div><div>`), _tmpl$4 = /* @__PURE__ */ template(`<div><div>Conflicts (<!>)</div><div>`), _tmpl$5 = /* @__PURE__ */ template(`<div><div><div>Key Breakdown</div><div><div><div></div></div><span aria-hidden=true>-></span><div></div></div></div><div><div>Actions</div></div><div><div>Meta</div><div><div><span>name</span><span></span></div><div><span>description</span><span></span></div></div></div><div><div>Options</div><div><div><span>enabled</span><span></span></div><div><span>eventType</span><span></span></div><div><span>preventDefault</span><span></span></div><div><span>stopPropagation</span><span></span></div><div><span>ignoreInputs</span><span></span></div><div><span>requireReset</span><span></span></div><div><span>conflictBehavior</span><span></span></div><div><span>hasFired</span><span>`), _tmpl$6 = /* @__PURE__ */ template(`<span>+`), _tmpl$7 = /* @__PURE__ */ template(`<span>`), _tmpl$8 = /* @__PURE__ */ template(`<div><span>overlap</span> <!>: <!> (<!>) on `), _tmpl$9 = /* @__PURE__ */ template(`<div><span>scope</span> <!>: <!> (<!>) on `), _tmpl$0 = /* @__PURE__ */ template(`<div><div></div><div><div>ID</div><div></div><div>Matches</div><div></div><div>Raw</div><div></div><div>Sequence</div><div></div><div>Target</div><div>`), _tmpl$1 = /* @__PURE__ */ template(`<div><div><div>Key Breakdown</div><div></div><div>Each chord</div></div><div><div>Actions</div></div><div><div>Meta</div><div><div><span>name</span><span></span></div><div><span>description</span><span></span></div></div></div><div><div>Options</div><div><div><span>enabled</span><span></span></div><div><span>eventType</span><span></span></div><div><span>timeout</span><span>ms</span></div><div><span>preventDefault</span><span></span></div><div><span>stopPropagation</span><span></span></div><div><span>ignoreInputs</span><span></span></div><div><span>conflictBehavior</span><span>`), _tmpl$10 = /* @__PURE__ */ template(`<span><span>`), _tmpl$11 = /* @__PURE__ */ template(`<span>→`), _tmpl$12 = /* @__PURE__ */ template(`<div><div>Step <!> — </div><div><div><div></div></div><span aria-hidden=true>-></span><div>`), _tmpl$13 = /* @__PURE__ */ template(`<div>Select a hotkey or sequence from the list to view its details`);
12
+ var _tmpl$ = /*#__PURE__*/ template(`<div>`);
13
+ var _tmpl$2 = /*#__PURE__*/ template(`<div><span></span><span>`);
14
+ var _tmpl$3 = /*#__PURE__*/ template(`<div><div></div><div><div>ID</div><div></div><div>Matches</div><div></div><div>Raw</div><div></div><div>Target</div><div>`);
15
+ var _tmpl$4 = /*#__PURE__*/ template(`<div><div>Conflicts (<!>)</div><div>`);
16
+ var _tmpl$5 = /*#__PURE__*/ template(`<div><div><div>Key Breakdown</div><div><div><div></div></div><span aria-hidden=true>-></span><div></div></div></div><div><div>Actions</div></div><div><div>Meta</div><div><div><span>name</span><span></span></div><div><span>description</span><span></span></div></div></div><div><div>Options</div><div><div><span>enabled</span><span></span></div><div><span>eventType</span><span></span></div><div><span>preventDefault</span><span></span></div><div><span>stopPropagation</span><span></span></div><div><span>ignoreInputs</span><span></span></div><div><span>requireReset</span><span></span></div><div><span>conflictBehavior</span><span></span></div><div><span>hasFired</span><span>`);
17
+ var _tmpl$6 = /*#__PURE__*/ template(`<span>+`);
18
+ var _tmpl$7 = /*#__PURE__*/ template(`<span>`);
19
+ var _tmpl$8 = /*#__PURE__*/ template(`<div><span>overlap</span> <!>: <!> (<!>) on `);
20
+ var _tmpl$9 = /*#__PURE__*/ template(`<div><span>scope</span> <!>: <!> (<!>) on `);
21
+ var _tmpl$0 = /*#__PURE__*/ template(`<div><div></div><div><div>ID</div><div></div><div>Matches</div><div></div><div>Raw</div><div></div><div>Sequence</div><div></div><div>Target</div><div>`);
22
+ var _tmpl$1 = /*#__PURE__*/ template(`<div><div><div>Key Breakdown</div><div></div><div>Each chord</div></div><div><div>Actions</div></div><div><div>Meta</div><div><div><span>name</span><span></span></div><div><span>description</span><span></span></div></div></div><div><div>Options</div><div><div><span>enabled</span><span></span></div><div><span>eventType</span><span></span></div><div><span>timeout</span><span>ms</span></div><div><span>preventDefault</span><span></span></div><div><span>stopPropagation</span><span></span></div><div><span>ignoreInputs</span><span></span></div><div><span>conflictBehavior</span><span>`);
23
+ var _tmpl$10 = /*#__PURE__*/ template(`<span><span>`);
24
+ var _tmpl$11 = /*#__PURE__*/ template(`<span>→`);
25
+ var _tmpl$12 = /*#__PURE__*/ template(`<div><div>Step <!> — </div><div><div><div></div></div><span aria-hidden=true>-></span><div>`);
26
+ var _tmpl$13 = /*#__PURE__*/ template(`<div>Select a hotkey or sequence from the list to view its details`);
13
27
  const PLATFORM_ROWS = [
14
28
  {
15
29
  id: "mac",
@@ -730,5 +744,4 @@ function DetailsPanel(props) {
730
744
  }
731
745
 
732
746
  //#endregion
733
- export { DetailsPanel };
734
- //# sourceMappingURL=DetailsPanel.js.map
747
+ export { DetailsPanel };
@@ -5,7 +5,10 @@ import { For, Show } from "solid-js";
5
5
  import { detectPlatform, formatForDisplay } from "@tanstack/hotkeys";
6
6
 
7
7
  //#region src/components/HeldKeysTopbar.tsx
8
- var _tmpl$ = /* @__PURE__ */ template(`<div><span>Held</span><div>`), _tmpl$2 = /* @__PURE__ */ template(`<span>--`), _tmpl$3 = /* @__PURE__ */ template(`<span>`), _tmpl$4 = /* @__PURE__ */ template(`<span><span>`);
8
+ var _tmpl$ = /*#__PURE__*/ template(`<div><span>Held</span><div>`);
9
+ var _tmpl$2 = /*#__PURE__*/ template(`<span>--`);
10
+ var _tmpl$3 = /*#__PURE__*/ template(`<span>`);
11
+ var _tmpl$4 = /*#__PURE__*/ template(`<span><span>`);
9
12
  function HeldKeysBar() {
10
13
  const styles = useStyles();
11
14
  const state = useHotkeysDevtoolsState();
@@ -74,5 +77,4 @@ function HeldKeysBar() {
74
77
  }
75
78
 
76
79
  //#endregion
77
- export { HeldKeysBar };
78
- //# sourceMappingURL=HeldKeysTopbar.js.map
80
+ export { HeldKeysBar };
@@ -9,7 +9,18 @@ import clsx from "clsx";
9
9
  import { matchSorter } from "match-sorter";
10
10
 
11
11
  //#region src/components/HotkeyList.tsx
12
- var _tmpl$ = /* @__PURE__ */ template(`<span data-tooltip>`), _tmpl$2 = /* @__PURE__ */ template(`<span>`), _tmpl$3 = /* @__PURE__ */ template(`<span>x`), _tmpl$4 = /* @__PURE__ */ template(`<div><span><span></span></span><div><span data-binding-kind></span><span><span data-tooltip></span></span><span><span data-tooltip>Fires on <!> event</span></span><span><span data-tooltip>`), _tmpl$5 = /* @__PURE__ */ template(`<span><span>`), _tmpl$6 = /* @__PURE__ */ template(`<span><span data-tooltip>`), _tmpl$7 = /* @__PURE__ */ template(`<span>i<span data-tooltip>`), _tmpl$8 = /* @__PURE__ */ template(`<button>&times;`), _tmpl$9 = /* @__PURE__ */ template(`<div><input type=text placeholder="Search hotkeys...">`), _tmpl$0 = /* @__PURE__ */ template(`<div>Hotkeys (<!>)`), _tmpl$1 = /* @__PURE__ */ template(`<div>`), _tmpl$10 = /* @__PURE__ */ template(`<div>Sequences (<!>)`);
12
+ var _tmpl$ = /*#__PURE__*/ template(`<span data-tooltip>`);
13
+ var _tmpl$2 = /*#__PURE__*/ template(`<span>`);
14
+ var _tmpl$3 = /*#__PURE__*/ template(`<span>x`);
15
+ var _tmpl$4 = /*#__PURE__*/ template(`<div><span><span></span></span><div><span data-binding-kind></span><span><span data-tooltip></span></span><span><span data-tooltip>Fires on <!> event</span></span><span><span data-tooltip>`);
16
+ var _tmpl$5 = /*#__PURE__*/ template(`<span><span>`);
17
+ var _tmpl$6 = /*#__PURE__*/ template(`<span><span data-tooltip>`);
18
+ var _tmpl$7 = /*#__PURE__*/ template(`<span>i<span data-tooltip>`);
19
+ var _tmpl$8 = /*#__PURE__*/ template(`<button>&times;`);
20
+ var _tmpl$9 = /*#__PURE__*/ template(`<div><input type=text placeholder="Search hotkeys...">`);
21
+ var _tmpl$0 = /*#__PURE__*/ template(`<div>Hotkeys (<!>)`);
22
+ var _tmpl$1 = /*#__PURE__*/ template(`<div>`);
23
+ var _tmpl$10 = /*#__PURE__*/ template(`<div>Sequences (<!>)`);
13
24
  function getTargetLabel(target) {
14
25
  if (typeof document !== "undefined" && target === document) return "document";
15
26
  if (typeof window !== "undefined" && target === window) return "window";
@@ -441,5 +452,4 @@ function HotkeyList(props) {
441
452
  delegateEvents(["click", "input"]);
442
453
 
443
454
  //#endregion
444
- export { HotkeyList };
445
- //# sourceMappingURL=HotkeyList.js.map
455
+ export { HotkeyList };
@@ -8,7 +8,8 @@ import { Header, HeaderLogo, MainPanel } from "@tanstack/devtools-ui";
8
8
  import { createEffect, createMemo, createSignal, onCleanup, onMount } from "solid-js";
9
9
 
10
10
  //#region src/components/Shell.tsx
11
- var _tmpl$ = /* @__PURE__ */ template(`<div><div><div style=min-width:150px;max-width:800px><div></div></div><div></div><div style=flex:1><div>Details`), _tmpl$2 = /* @__PURE__ */ template(`<div>`);
11
+ var _tmpl$ = /*#__PURE__*/ template(`<div><div><div style=min-width:150px;max-width:800px><div></div></div><div></div><div style=flex:1><div>Details`);
12
+ var _tmpl$2 = /*#__PURE__*/ template(`<div>`);
12
13
  function readResizeObserverBlockSize(entry) {
13
14
  const [box] = entry.borderBoxSize;
14
15
  if (box !== void 0) return box.blockSize;
@@ -52,7 +53,8 @@ function Shell() {
52
53
  if (!isDragging()) return;
53
54
  e.preventDefault();
54
55
  const deltaX = e.clientX - dragStartX;
55
- setLeftPanelWidth(Math.max(150, Math.min(800, dragStartWidth + deltaX)));
56
+ const newWidth = Math.max(150, Math.min(800, dragStartWidth + deltaX));
57
+ setLeftPanelWidth(newWidth);
56
58
  };
57
59
  const handleMouseUp = () => {
58
60
  setIsDragging(false);
@@ -153,5 +155,4 @@ function Shell() {
153
155
  delegateEvents(["mousedown"]);
154
156
 
155
157
  //#endregion
156
- export { Shell };
157
- //# sourceMappingURL=Shell.js.map
158
+ export { Shell };
@@ -18,5 +18,4 @@ function HotkeysDevtools(props) {
18
18
  }
19
19
 
20
20
  //#endregion
21
- export { HotkeysDevtools as default };
22
- //# sourceMappingURL=index.js.map
21
+ export { HotkeysDevtools as default };
package/dist/core.d.ts CHANGED
@@ -1,8 +1,5 @@
1
1
  import { ClassType } from "@tanstack/devtools-utils/solid";
2
-
3
2
  //#region src/core.d.ts
4
- interface HotkeysDevtoolsInit {}
5
- declare const HotkeysDevtoolsCore: ClassType;
6
- //#endregion
7
- export { HotkeysDevtoolsCore, HotkeysDevtoolsInit };
8
- //# sourceMappingURL=core.d.ts.map
3
+ export interface HotkeysDevtoolsInit {}
4
+ export declare const HotkeysDevtoolsCore: ClassType;
5
+ //#endregion
package/dist/core.js CHANGED
@@ -7,5 +7,4 @@ const HotkeysDevtoolsCore = coreClasses[0];
7
7
  const HotkeysDevtoolsCoreNoOp = coreClasses[1];
8
8
 
9
9
  //#endregion
10
- export { HotkeysDevtoolsCore, HotkeysDevtoolsCoreNoOp };
11
- //# sourceMappingURL=core.js.map
10
+ export { HotkeysDevtoolsCore, HotkeysDevtoolsCoreNoOp };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  import { HotkeysDevtoolsInit } from "./core.js";
2
2
  import { ClassType } from "@tanstack/devtools-utils/solid";
3
-
4
3
  //#region src/index.d.ts
5
- declare const HotkeysDevtoolsCore: ClassType;
4
+ export declare const HotkeysDevtoolsCore: ClassType;
6
5
  //#endregion
7
- export { HotkeysDevtoolsCore, type HotkeysDevtoolsInit };
8
- //# sourceMappingURL=index.d.ts.map
6
+ export type { HotkeysDevtoolsInit };
package/dist/index.js CHANGED
@@ -6,5 +6,4 @@ import { HotkeysDevtoolsCore as HotkeysDevtoolsCore$1, HotkeysDevtoolsCoreNoOp }
6
6
  const HotkeysDevtoolsCore = process.env.NODE_ENV !== "development" ? HotkeysDevtoolsCoreNoOp : HotkeysDevtoolsCore$1;
7
7
 
8
8
  //#endregion
9
- export { HotkeysDevtoolsCore };
10
- //# sourceMappingURL=index.js.map
9
+ export { HotkeysDevtoolsCore };
@@ -16,5 +16,4 @@ function needsSequenceProgressClock(regs, now) {
16
16
  }
17
17
 
18
18
  //#endregion
19
- export { effectiveSequenceMatchedSteps, needsSequenceProgressClock };
20
- //# sourceMappingURL=sequence-progress.js.map
19
+ export { effectiveSequenceMatchedSteps, needsSequenceProgressClock };
@@ -297,5 +297,4 @@ const tokens = {
297
297
  };
298
298
 
299
299
  //#endregion
300
- export { tokens };
301
- //# sourceMappingURL=tokens.js.map
300
+ export { tokens };
@@ -1,5 +1,5 @@
1
1
  import { tokens } from "./tokens.js";
2
- import { useTheme } from "@tanstack/devtools-ui";
2
+ import { createTheme } from "@tanstack/devtools-ui";
3
3
  import { createEffect, createSignal } from "solid-js";
4
4
  import * as goober from "goober";
5
5
 
@@ -10,6 +10,7 @@ const stylesFactory = (theme) => {
10
10
  const css = goober.css;
11
11
  const t = (light, dark) => theme === "light" ? light : dark;
12
12
  return {
13
+ /** Full-height flex child so MainPanel gets a bounded height from the portal */
13
14
  shellRoot: css`
14
15
  display: flex;
15
16
  flex-direction: column;
@@ -18,6 +19,7 @@ const stylesFactory = (theme) => {
18
19
  flex: 1;
19
20
  overflow: hidden;
20
21
  `,
22
+ /** Overrides devtools-ui MainPanel (overflow-y: auto) so inner columns scroll independently */
21
23
  mainPanelShell: css`
22
24
  display: flex;
23
25
  flex-direction: column;
@@ -675,7 +677,7 @@ const stylesFactory = (theme) => {
675
677
  };
676
678
  };
677
679
  function useStyles() {
678
- const { theme } = useTheme();
680
+ const { theme } = createTheme();
679
681
  const [styles, setStyles] = createSignal(stylesFactory(theme()));
680
682
  createEffect(() => {
681
683
  setStyles(stylesFactory(theme()));
@@ -684,5 +686,4 @@ function useStyles() {
684
686
  }
685
687
 
686
688
  //#endregion
687
- export { useStyles };
688
- //# sourceMappingURL=use-styles.js.map
689
+ export { useStyles };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/hotkeys-devtools",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Devtools for TanStack Hotkeys",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -30,25 +30,24 @@
30
30
  },
31
31
  "sideEffects": false,
32
32
  "engines": {
33
- "node": ">=18"
33
+ "node": ">=20"
34
34
  },
35
35
  "files": [
36
- "dist/",
37
- "src"
36
+ "dist"
38
37
  ],
39
38
  "peerDependencies": {
40
- "@tanstack/hotkeys": "0.9.0"
39
+ "@tanstack/hotkeys": "0.10.0"
41
40
  },
42
41
  "dependencies": {
43
- "@tanstack/devtools-ui": "^0.5.1",
44
- "@tanstack/devtools-utils": "^0.4.0",
42
+ "@tanstack/devtools-ui": "^0.7.1",
43
+ "@tanstack/devtools-utils": "^0.7.0",
45
44
  "clsx": "^2.1.1",
46
- "goober": "^2.1.18",
45
+ "goober": "^2.1.19",
47
46
  "match-sorter": "^8.3.0",
48
- "solid-js": "^1.9.12"
47
+ "solid-js": "^1.9.15"
49
48
  },
50
49
  "devDependencies": {
51
- "vite-plugin-solid": "^2.11.12"
50
+ "vite-plugin-solid": "^2.11.14"
52
51
  },
53
52
  "scripts": {
54
53
  "clean": "premove ./build ./dist",
@@ -58,6 +57,7 @@
58
57
  "test:lib": "vitest --passWithNoTests",
59
58
  "test:lib:dev": "pnpm test:lib --watch",
60
59
  "test:types": "tsc",
61
- "build": "tsdown"
60
+ "build": "tsdown",
61
+ "test:build": "publint --strict && node ../../scripts/verify-package.ts"
62
62
  }
63
63
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"HotkeysContextProvider.js","names":["createContext","createEffect","createSignal","onCleanup","useContext","HotkeyManager","KeyStateTracker","SequenceManager","needsSequenceProgressClock","Accessor","HotkeyRegistration","SequenceRegistrationView","HotkeysDevtoolsContextType","registrations","Array","sequenceRegistrations","heldKeys","heldCodes","Record","sequenceProgressNow","HotkeysDevtoolsContext","Date","now","HotkeysContextProvider","props","children","manager","getInstance","sequenceManager","tracker","setRegistrations","from","state","values","setSequenceRegistrations","setHeldKeys","store","setHeldCodes","unsubscribe","subscribe","setSequenceProgressNow","regs","id","ReturnType","setInterval","tick","t","undefined","clearInterval","_$createComponent","Provider","value","useHotkeysDevtoolsState"],"sources":["../src/HotkeysContextProvider.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n onCleanup,\n useContext,\n} from 'solid-js'\nimport {\n HotkeyManager,\n KeyStateTracker,\n SequenceManager,\n} from '@tanstack/hotkeys'\nimport { needsSequenceProgressClock } from './sequence-progress'\nimport type { Accessor } from 'solid-js'\nimport type {\n HotkeyRegistration,\n SequenceRegistrationView,\n} from '@tanstack/hotkeys'\n\ninterface HotkeysDevtoolsContextType {\n registrations: Accessor<Array<HotkeyRegistration>>\n sequenceRegistrations: Accessor<Array<SequenceRegistrationView>>\n heldKeys: Accessor<Array<string>>\n heldCodes: Accessor<Record<string, string>>\n /** Monotonic clock for sequence in-progress UI (updates while a sequence match is active). */\n sequenceProgressNow: Accessor<number>\n}\n\nconst HotkeysDevtoolsContext = createContext<HotkeysDevtoolsContextType>({\n registrations: () => [],\n sequenceRegistrations: () => [],\n heldKeys: () => [],\n heldCodes: () => ({}),\n sequenceProgressNow: () => Date.now(),\n})\n\nexport function HotkeysContextProvider(props: { children: any }) {\n const manager = HotkeyManager.getInstance()\n const sequenceManager = SequenceManager.getInstance()\n const tracker = KeyStateTracker.getInstance()\n\n // Create local signals that will be updated by subscriptions\n const [registrations, setRegistrations] = createSignal<\n Array<HotkeyRegistration>\n >(Array.from(manager.registrations.state.values()))\n const [sequenceRegistrations, setSequenceRegistrations] = createSignal<\n Array<SequenceRegistrationView>\n >(Array.from(sequenceManager.registrations.state.values()))\n const [heldKeys, setHeldKeys] = createSignal<Array<string>>(\n tracker.store.state.heldKeys,\n )\n const [heldCodes, setHeldCodes] = createSignal<Record<string, string>>(\n tracker.store.state.heldCodes,\n )\n\n // Subscribe to HotkeyManager registrations store\n createEffect(() => {\n const unsubscribe = manager.registrations.subscribe(() => {\n setRegistrations(Array.from(manager.registrations.state.values()))\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n // Subscribe to SequenceManager registrations store\n createEffect(() => {\n const unsubscribe = sequenceManager.registrations.subscribe(() => {\n setSequenceRegistrations(\n Array.from(sequenceManager.registrations.state.values()),\n )\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n // Subscribe to KeyStateTracker store\n createEffect(() => {\n const unsubscribe = tracker.store.subscribe(() => {\n setHeldKeys(tracker.store.state.heldKeys)\n setHeldCodes(tracker.store.state.heldCodes)\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n const [sequenceProgressNow, setSequenceProgressNow] = createSignal(Date.now())\n\n createEffect(() => {\n const regs = sequenceRegistrations()\n let id: ReturnType<typeof setInterval> | undefined\n\n const tick = () => {\n const t = Date.now()\n setSequenceProgressNow(t)\n if (!needsSequenceProgressClock(sequenceRegistrations(), t)) {\n if (id !== undefined) {\n clearInterval(id)\n id = undefined\n }\n }\n }\n\n if (needsSequenceProgressClock(regs, Date.now())) {\n id = setInterval(tick, 50)\n } else {\n setSequenceProgressNow(Date.now())\n }\n\n onCleanup(() => {\n if (id !== undefined) {\n clearInterval(id)\n }\n })\n })\n\n return (\n <HotkeysDevtoolsContext.Provider\n value={{\n registrations,\n sequenceRegistrations,\n heldKeys,\n heldCodes,\n sequenceProgressNow,\n }}\n >\n {props.children}\n </HotkeysDevtoolsContext.Provider>\n )\n}\n\nexport function useHotkeysDevtoolsState() {\n return useContext(HotkeysDevtoolsContext)\n}\n"],"mappings":";;;;;;AA4BA,MAAMoB,yBAAyBpB,cAA0C;CACvEa,qBAAqB,EAAE;CACvBE,6BAA6B,EAAE;CAC/BC,gBAAgB,EAAE;CAClBC,kBAAkB,EAAE;CACpBE,2BAA2BE,KAAKC,KAAI;CACrC,CAAC;AAEF,SAAgBC,uBAAuBC,OAA0B;CAC/D,MAAME,UAAUrB,cAAcsB,aAAa;CAC3C,MAAMC,kBAAkBrB,gBAAgBoB,aAAa;CACrD,MAAME,UAAUvB,gBAAgBqB,aAAa;CAG7C,MAAM,CAACd,eAAeiB,oBAAoB5B,aAExCY,MAAMiB,KAAKL,QAAQb,cAAcmB,MAAMC,QAAQ,CAAC,CAAC;CACnD,MAAM,CAAClB,uBAAuBmB,4BAA4BhC,aAExDY,MAAMiB,KAAKH,gBAAgBf,cAAcmB,MAAMC,QAAQ,CAAC,CAAC;CAC3D,MAAM,CAACjB,UAAUmB,eAAejC,aAC9B2B,QAAQO,MAAMJ,MAAMhB,SACrB;CACD,MAAM,CAACC,WAAWoB,gBAAgBnC,aAChC2B,QAAQO,MAAMJ,MAAMf,UACrB;AAGDhB,oBAAmB;EACjB,MAAMqC,cAAcZ,QAAQb,cAAc0B,gBAAgB;AACxDT,oBAAiBhB,MAAMiB,KAAKL,QAAQb,cAAcmB,MAAMC,QAAQ,CAAC,CAAC;IAClE,CAACK;AACHnC,kBAAgBmC,aAAa,CAAC;GAC9B;AAGFrC,oBAAmB;EACjB,MAAMqC,cAAcV,gBAAgBf,cAAc0B,gBAAgB;AAChEL,4BACEpB,MAAMiB,KAAKH,gBAAgBf,cAAcmB,MAAMC,QAAQ,CACzD,CAAC;IACD,CAACK;AACHnC,kBAAgBmC,aAAa,CAAC;GAC9B;AAGFrC,oBAAmB;EACjB,MAAMqC,cAAcT,QAAQO,MAAMG,gBAAgB;AAChDJ,eAAYN,QAAQO,MAAMJ,MAAMhB,SAAS;AACzCqB,gBAAaR,QAAQO,MAAMJ,MAAMf,UAAU;IAC3C,CAACqB;AACHnC,kBAAgBmC,aAAa,CAAC;GAC9B;CAEF,MAAM,CAACnB,qBAAqBqB,0BAA0BtC,aAAamB,KAAKC,KAAK,CAAC;AAE9ErB,oBAAmB;EACjB,MAAMwC,OAAO1B,uBAAuB;EACpC,IAAI2B;EAEJ,MAAMG,aAAa;GACjB,MAAMC,IAAIzB,KAAKC,KAAK;AACpBkB,0BAAuBM,EAAE;AACzB,OAAI,CAACtC,2BAA2BO,uBAAuB,EAAE+B,EAAE,EACzD;QAAIJ,OAAOK,QAAW;AACpBC,mBAAcN,GAAG;AACjBA,UAAKK;;;;AAKX,MAAIvC,2BAA2BiC,MAAMpB,KAAKC,KAAK,CAAC,CAC9CoB,MAAKE,YAAYC,MAAM,GAAG;MAE1BL,wBAAuBnB,KAAKC,KAAK,CAAC;AAGpCnB,kBAAgB;AACd,OAAIuC,OAAOK,OACTC,eAAcN,GAAG;IAEnB;GACF;AAEF,QAAAO,gBACG7B,uBAAuB8B,UAAQ;EAC9BC,OAAO;GACLtC;GACAE;GACAC;GACAC;GACAE;GACD;EAAA,IAAAM,WAAA;AAAA,UAEAD,MAAMC;;EAAQ,CAAA;;AAKrB,SAAgB2B,0BAA0B;AACxC,QAAOhD,WAAWgB,uBAAuB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_registrations.js","names":[],"sources":["../src/_registrations.ts"],"sourcesContent":["import { createMemo } from 'solid-js'\nimport {\n findHotkeyConflicts,\n formatForDisplay,\n parseHotkey,\n} from '@tanstack/hotkeys'\nimport { useHotkeysDevtoolsState } from './HotkeysContextProvider'\nimport type { HotkeyConflict } from '@tanstack/hotkeys'\n\n/** Refresh shared conflict reporting when either registry changes. */\nexport function useRegistrationConflicts(\n registration: () => HotkeyConflict['registration'],\n) {\n const state = useHotkeysDevtoolsState()\n return createMemo(() => {\n state.registrations()\n state.sequenceRegistrations()\n const reg = registration()\n if (reg.options.enabled === false) return { overlapping: [], separate: [] }\n const binding = 'sequence' in reg ? reg.sequence : reg.hotkey\n const options = {\n target: reg.target,\n platform: reg.options.platform,\n eventType: reg.options.eventType,\n excludeIds: [reg.id],\n }\n const overlapping = findHotkeyConflicts(binding, options).map(\n (c) => c.registration,\n )\n const ids = new Set(overlapping.map((r) => r.id))\n const separate = findHotkeyConflicts(binding, { ...options, scope: 'all' })\n .map((c) => c.registration)\n .filter((r) => !ids.has(r.id))\n // Without source events, key/code overlap depends on the layout and cannot be inferred.\n return { overlapping, separate }\n })\n}\n\n/** Format either kind of registration, respecting its platform and physical labels. */\nexport function formatRegistration(\n reg: HotkeyConflict['registration'],\n): string {\n const steps = 'sequence' in reg ? reg.sequence : [reg.hotkey]\n return steps\n .map((step) => formatForDisplay(step, { platform: reg.options.platform }))\n .join(' → ')\n}\n\n/** Sequences may mix logical keys and physical codes, so report both when needed. */\nexport function getBindingKind(\n reg: HotkeyConflict['registration'],\n): 'Key' | 'Code' | 'Mixed' {\n const parsed =\n 'sequence' in reg\n ? reg.sequence.map((step) => parseHotkey(step, reg.options.platform))\n : [reg.parsedHotkey]\n const codes = parsed.filter((step) => step.code !== undefined).length\n return codes === 0 ? 'Key' : codes === parsed.length ? 'Code' : 'Mixed'\n}\n"],"mappings":";;;;;;AAUA,SAAgB,yBACd,cACA;CACA,MAAM,QAAQ,yBAAyB;AACvC,QAAO,iBAAiB;AACtB,QAAM,eAAe;AACrB,QAAM,uBAAuB;EAC7B,MAAM,MAAM,cAAc;AAC1B,MAAI,IAAI,QAAQ,YAAY,MAAO,QAAO;GAAE,aAAa,EAAE;GAAE,UAAU,EAAE;GAAE;EAC3E,MAAM,UAAU,cAAc,MAAM,IAAI,WAAW,IAAI;EACvD,MAAM,UAAU;GACd,QAAQ,IAAI;GACZ,UAAU,IAAI,QAAQ;GACtB,WAAW,IAAI,QAAQ;GACvB,YAAY,CAAC,IAAI,GAAG;GACrB;EACD,MAAM,cAAc,oBAAoB,SAAS,QAAQ,CAAC,KACvD,MAAM,EAAE,aACV;EACD,MAAM,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,EAAE,GAAG,CAAC;AAKjD,SAAO;GAAE;GAAa,UAJL,oBAAoB,SAAS;IAAE,GAAG;IAAS,OAAO;IAAO,CAAC,CACxE,KAAK,MAAM,EAAE,aAAa,CAC1B,QAAQ,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC;GAEA;GAChC;;;AAIJ,SAAgB,mBACd,KACQ;AAER,SADc,cAAc,MAAM,IAAI,WAAW,CAAC,IAAI,OAAO,EAE1D,KAAK,SAAS,iBAAiB,MAAM,EAAE,UAAU,IAAI,QAAQ,UAAU,CAAC,CAAC,CACzE,KAAK,MAAM;;;AAIhB,SAAgB,eACd,KAC0B;CAC1B,MAAM,SACJ,cAAc,MACV,IAAI,SAAS,KAAK,SAAS,YAAY,MAAM,IAAI,QAAQ,SAAS,CAAC,GACnE,CAAC,IAAI,aAAa;CACxB,MAAM,QAAQ,OAAO,QAAQ,SAAS,KAAK,SAAS,OAAU,CAAC;AAC/D,QAAO,UAAU,IAAI,QAAQ,UAAU,OAAO,SAAS,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionButtons.js","names":["HotkeyManager","SequenceManager","useStyles","HotkeyRegistration","SequenceRegistrationView","ActionButtonsProps","registration","isSequenceRegistration","reg","Array","isArray","sequence","ActionButtons","props","styles","handleTrigger","getInstance","triggerSequence","id","triggerRegistration","_el$","_tmpl$","_el$2","firstChild","_el$3","$$mousedown","_$effect","_p$","_v$","actionsRow","_v$2","actionButton","_v$3","actionDotGreen","e","_$className","t","a","undefined","_$delegateEvents"],"sources":["../../src/components/ActionButtons.tsx"],"sourcesContent":["import { HotkeyManager, SequenceManager } from '@tanstack/hotkeys'\nimport { useStyles } from '../styles/use-styles'\nimport type {\n HotkeyRegistration,\n SequenceRegistrationView,\n} from '@tanstack/hotkeys'\n\ntype ActionButtonsProps = {\n registration: HotkeyRegistration | SequenceRegistrationView\n}\n\nfunction isSequenceRegistration(\n reg: HotkeyRegistration | SequenceRegistrationView,\n): reg is SequenceRegistrationView {\n return 'sequence' in reg && Array.isArray(reg.sequence)\n}\n\nexport function ActionButtons(props: ActionButtonsProps) {\n const styles = useStyles()\n\n const handleTrigger = () => {\n const reg = props.registration\n if (isSequenceRegistration(reg)) {\n SequenceManager.getInstance().triggerSequence(reg.id)\n } else {\n HotkeyManager.getInstance().triggerRegistration(reg.id)\n }\n }\n\n return (\n <div class={styles().actionsRow}>\n <button class={styles().actionButton} onMouseDown={handleTrigger}>\n <span class={styles().actionDotGreen} />\n Trigger\n </button>\n </div>\n )\n}\n"],"mappings":";;;;;;AAWA,SAASO,uBACPC,KACiC;AACjC,QAAO,cAAcA,OAAOC,MAAMC,QAAQF,IAAIG,SAAS;;AAGzD,SAAgBC,cAAcC,OAA2B;CACvD,MAAMC,SAASZ,WAAW;CAE1B,MAAMa,sBAAsB;EAC1B,MAAMP,MAAMK,MAAMP;AAClB,MAAIC,uBAAuBC,IAAI,CAC7BP,iBAAgBe,aAAa,CAACC,gBAAgBT,IAAIU,GAAG;MAErDlB,eAAcgB,aAAa,CAACG,oBAAoBX,IAAIU,GAAG;;AAI3D,eAAA;EAAA,IAAAE,OAAAC,QAAA,EAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC;AAAAD,QAAAG,cAEuDV;AAAaW,UAAAC,QAAA;GAAA,IAAAC,MADtDd,QAAQ,CAACe,YAAUC,OACdhB,QAAQ,CAACiB,cAAYC,OACrBlB,QAAQ,CAACmB;AAAcL,WAAAD,IAAAO,KAAAC,UAAAf,MAAAO,IAAAO,IAAAN,IAAA;AAAAE,YAAAH,IAAAS,KAAAD,UAAAb,OAAAK,IAAAS,IAAAN,KAAA;AAAAE,YAAAL,IAAAU,KAAAF,UAAAX,OAAAG,IAAAU,IAAAL,KAAA;AAAA,UAAAL;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAA,CAAA;AAAA,SAAAlB;KAAA;;AAK3CmB,eAAA,CAAA,YAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DetailsPanel.js","names":["For","Show","createMemo","clsx","detectPlatform","formatForDisplay","normalizeHotkeyFromParsed","parseHotkey","useStyles","useHotkeysDevtoolsState","effectiveSequenceMatchedSteps","formatRegistration","getBindingKind","useRegistrationConflicts","ActionButtons","ConflictBehavior","HotkeyRegistration","ParsedHotkey","SequenceRegistrationView","PLATFORM_ROWS","id","const","label","KeyBreakdownPlatformTable","props","getParsed","getCanonicalPlatform","styles","ReturnType","st","_el$","_tmpl$","_$insert","_$createComponent","each","children","row","_el$2","_tmpl$2","_el$3","firstChild","_el$4","nextSibling","platform","_$effect","_p$","_v$","platformBreakdownRow","_v$2","platformBreakdownLabel","_v$3","platformBreakdownPretty","e","_$className","t","a","undefined","platformBreakdown","isSequenceRegistration","reg","Array","isArray","sequence","DetailsPanelProps","selectedRegistration","getTargetDescription","target","HTMLElement","Document","Window","document","window","tag","tagName","toLowerCase","cls","className","split","join","HotkeyDetails","registration","parsed","parsedHotkey","conflicts","targetConflicts","overlapping","scopeConflicts","separate","allConflicts","conflictBehavior","options","registrationPlatform","keyParts","parts","_el$5","_tmpl$3","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_el$13","hotkey","_v$4","stateHeader","_v$5","stateTitle","_v$6","infoGrid","_v$7","infoLabel","_v$8","infoValueMono","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","o","i","n","s","h","r","d","l","_el$14","_tmpl$5","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","_el$31","_el$32","_el$33","_el$34","_el$35","_el$36","_el$37","_el$38","_el$39","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$46","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","part","when","_el$66","_tmpl$6","keyBreakdownPlus","_el$67","_tmpl$7","keyCapLarge","meta","name","description","_$memo","Object","keys","filter","k","length","entries","key","value","_el$68","_el$69","_el$70","String","_v$60","optionRow","_v$61","optionLabel","_v$62","optionValue","enabled","eventType","preventDefault","stopPropagation","ignoreInputs","requireReset","hasFired","_el$60","_tmpl$4","_el$61","_el$62","_el$64","_el$63","_el$65","conflict","_el$71","_tmpl$8","_el$72","_el$73","_el$79","_el$74","_el$80","_el$76","_el$81","_el$77","conflictItem","_el$82","_tmpl$9","_el$83","_el$84","_el$90","_el$85","_el$91","_el$87","_el$92","_el$88","conflictItemScope","_v$13","detailSection","_v$14","detailSectionHeader","_v$15","conflictList","_v$16","detailsGrid","_v$17","_v$18","_v$19","keyBreakdownSplitRow","_v$20","keyBreakdownSplitLeft","_v$21","keyBreakdown","_v$22","keyBreakdownSplitArrow","_v$23","keyBreakdownSplitRight","_v$24","_v$25","_v$26","_v$27","_v$28","_v$29","_v$30","_v$31","_v$32","_v$33","_v$34","_v$35","_v$36","_v$37","_v$38","optionValueTrue","optionValueFalse","_v$39","_v$40","_v$41","_v$42","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","_v$49","_v$50","_v$51","_v$52","_v$53","_v$54","_v$55","_v$56","_v$57","_v$58","_v$59","u","c","w","m","f","y","g","p","b","T","A","O","I","S","W","C","B","v","x","j","q","z","P","H","F","M","D","R","E","L","N","G","SequenceDetails","state","liveReg","sequenceRegistrations","find","matchedSteps","sequenceProgressNow","sequenceCanonicalPlatform","_el$93","_tmpl$0","_el$94","_el$95","_el$96","_el$97","_el$98","_el$99","_el$100","_el$101","_el$102","_el$103","_el$104","_el$105","step","_el$153","_tmpl$10","_el$154","sequenceStepMatched","_el$155","_el$156","_v$63","_v$64","_v$65","_v$66","_v$67","_v$68","_v$69","_v$70","_v$71","_v$72","_v$73","_v$74","_v$75","_el$106","_tmpl$1","_el$107","_el$108","_el$109","_el$110","_el$111","_el$112","_el$113","_el$114","_el$115","_el$116","_el$117","_el$118","_el$119","_el$120","_el$121","_el$122","_el$123","_el$124","_el$125","_el$126","_el$127","_el$128","_el$129","_el$130","_el$131","_el$132","_el$133","_el$134","_el$135","_el$136","_el$137","_el$138","_el$139","_el$140","_el$141","_el$142","_el$143","_el$144","_el$145","_el$146","_el$157","_tmpl$11","_el$158","keyCapLargeInProgress","stepIdx","stepParsed","stepParts","_el$159","_tmpl$12","_el$160","_el$161","_el$164","_el$162","_el$165","_el$166","_el$167","_el$168","_el$169","code","_el$170","_el$171","_v$117","sequenceChordDetail","_v$118","keyBreakdownSubHeader","_v$119","_v$120","_v$121","_v$122","_v$123","_el$172","_el$173","_el$174","_v$124","_v$125","_v$126","timeout","_el$147","_el$148","_el$149","_el$151","_el$150","_el$152","_el$175","_el$176","_el$177","_el$183","_el$178","_el$184","_el$180","_el$185","_el$181","_el$186","_el$187","_el$188","_el$194","_el$189","_el$195","_el$191","_el$196","_el$192","_v$76","_v$77","_v$78","_v$79","_v$80","_v$81","_v$82","_v$83","_v$84","_v$85","_v$86","_v$87","_v$88","_v$89","_v$90","_v$91","_v$92","_v$93","_v$94","_v$95","_v$96","_v$97","_v$98","_v$99","_v$100","_v$101","_v$102","_v$103","_v$104","_v$105","_v$106","_v$107","_v$108","_v$109","_v$110","_v$111","_v$112","_v$113","_v$114","_v$115","_v$116","DetailsPanel","_el$197","fallback","_el$198","_tmpl$13","noSelection","stateDetails"],"sources":["../../src/components/DetailsPanel.tsx"],"sourcesContent":["import { For, Show, createMemo } from 'solid-js'\nimport clsx from 'clsx'\nimport {\n detectPlatform,\n formatForDisplay,\n normalizeHotkeyFromParsed,\n parseHotkey,\n} from '@tanstack/hotkeys'\nimport { useStyles } from '../styles/use-styles'\nimport { useHotkeysDevtoolsState } from '../HotkeysContextProvider'\nimport { effectiveSequenceMatchedSteps } from '../sequence-progress'\nimport {\n formatRegistration,\n getBindingKind,\n useRegistrationConflicts,\n} from '../_registrations'\nimport { ActionButtons } from './ActionButtons'\nimport type {\n ConflictBehavior,\n HotkeyRegistration,\n ParsedHotkey,\n SequenceRegistrationView,\n} from '@tanstack/hotkeys'\n\nconst PLATFORM_ROWS = [\n { id: 'mac' as const, label: 'macOS' },\n { id: 'windows' as const, label: 'Windows' },\n { id: 'linux' as const, label: 'Linux' },\n]\n\nfunction KeyBreakdownPlatformTable(props: {\n getParsed: () => ParsedHotkey\n /** Platform used when the parsed hotkey was produced (registration `options.platform`). */\n getCanonicalPlatform: () => 'mac' | 'windows' | 'linux'\n styles: ReturnType<typeof useStyles>\n}) {\n const st = () => props.styles()\n return (\n <div class={st().platformBreakdown}>\n <For each={PLATFORM_ROWS}>\n {(row) => (\n <div class={st().platformBreakdownRow}>\n <span class={st().platformBreakdownLabel}>{row.label}</span>\n <span class={st().platformBreakdownPretty}>\n {formatForDisplay(\n normalizeHotkeyFromParsed(\n props.getParsed(),\n props.getCanonicalPlatform(),\n ),\n {\n platform: row.id,\n },\n )}\n </span>\n </div>\n )}\n </For>\n </div>\n )\n}\n\nfunction isSequenceRegistration(\n reg: HotkeyRegistration | SequenceRegistrationView,\n): reg is SequenceRegistrationView {\n return 'sequence' in reg && Array.isArray(reg.sequence)\n}\n\ntype DetailsPanelProps = {\n selectedRegistration: () =>\n | HotkeyRegistration\n | SequenceRegistrationView\n | null\n}\n\nfunction getTargetDescription(target: HTMLElement | Document | Window): string {\n if (typeof document !== 'undefined' && target === document) {\n return 'document'\n }\n if (typeof window !== 'undefined' && target === window) {\n return 'window'\n }\n if (target instanceof HTMLElement) {\n const tag = target.tagName.toLowerCase()\n const id = target.id ? `#${target.id}` : ''\n const cls = target.className\n ? `.${target.className.split(' ').join('.')}`\n : ''\n return `${tag}${id}${cls}`\n }\n return 'element'\n}\n\nfunction HotkeyDetails(props: {\n registration: HotkeyRegistration\n getTargetDescription: (t: HTMLElement | Document | Window) => string\n styles: ReturnType<typeof useStyles>\n}) {\n const reg = () => props.registration\n const parsed = () => reg().parsedHotkey\n const conflicts = useRegistrationConflicts(reg)\n const targetConflicts = () => conflicts().overlapping\n const scopeConflicts = () => conflicts().separate\n const allConflicts = () => [...targetConflicts(), ...scopeConflicts()]\n const conflictBehavior = (): ConflictBehavior =>\n reg().options.conflictBehavior ?? 'warn'\n\n const registrationPlatform = () => reg().options.platform ?? detectPlatform()\n\n const keyParts = createMemo(() =>\n formatForDisplay(parsed(), {\n platform: registrationPlatform(),\n parts: true,\n }),\n )\n\n const styles = props.styles\n\n return (\n <>\n <div class={styles().stateHeader}>\n <div class={styles().stateTitle}>{formatRegistration(reg())}</div>\n <div class={styles().infoGrid}>\n <div class={styles().infoLabel}>ID</div>\n <div class={styles().infoValueMono}>{reg().id}</div>\n <div class={styles().infoLabel}>Matches</div>\n <div class={styles().infoValueMono}>{getBindingKind(reg())}</div>\n <div class={styles().infoLabel}>Raw</div>\n <div class={styles().infoValueMono}>{reg().hotkey}</div>\n <div class={styles().infoLabel}>Target</div>\n <div class={styles().infoValueMono}>\n {props.getTargetDescription(reg().target)}\n </div>\n </div>\n </div>\n\n <div class={styles().detailsGrid}>\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Key Breakdown</div>\n <div class={styles().keyBreakdownSplitRow}>\n <div class={styles().keyBreakdownSplitLeft}>\n <div class={styles().keyBreakdown}>\n <For each={keyParts()}>\n {(part, i) => (\n <>\n <Show when={i() > 0}>\n <span class={styles().keyBreakdownPlus}>+</span>\n </Show>\n <span class={styles().keyCapLarge}>{part}</span>\n </>\n )}\n </For>\n </div>\n </div>\n <span class={styles().keyBreakdownSplitArrow} aria-hidden=\"true\">\n {'->'}\n </span>\n <div class={styles().keyBreakdownSplitRight}>\n <KeyBreakdownPlatformTable\n getParsed={() => parsed()}\n getCanonicalPlatform={registrationPlatform}\n styles={props.styles}\n />\n </div>\n </div>\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Actions</div>\n <ActionButtons registration={reg()} />\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Meta</div>\n <div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>name</span>\n <span class={styles().optionValue}>\n {reg().options.meta?.name ?? '—'}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>description</span>\n <span class={styles().optionValue}>\n {reg().options.meta?.description ?? '—'}\n </span>\n </div>\n <Show\n when={\n reg().options.meta &&\n Object.keys(reg().options.meta!).filter(\n (k) => k !== 'name' && k !== 'description',\n ).length > 0\n }\n >\n <For\n each={Object.entries(reg().options.meta ?? {}).filter(\n ([k]) => k !== 'name' && k !== 'description',\n )}\n >\n {([key, value]) => (\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>{key}</span>\n <span class={styles().optionValue}>{String(value)}</span>\n </div>\n )}\n </For>\n </Show>\n </div>\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Options</div>\n <div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>enabled</span>\n <span\n class={\n reg().options.enabled !== false\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(reg().options.enabled !== false)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>eventType</span>\n <span class={styles().optionValue}>\n {reg().options.eventType ?? 'keydown'}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>preventDefault</span>\n <span\n class={\n reg().options.preventDefault\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(!!reg().options.preventDefault)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>stopPropagation</span>\n <span\n class={\n reg().options.stopPropagation\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(!!reg().options.stopPropagation)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>ignoreInputs</span>\n <span\n class={\n reg().options.ignoreInputs !== false\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(reg().options.ignoreInputs !== false)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>requireReset</span>\n <span\n class={\n reg().options.requireReset\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(!!reg().options.requireReset)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>conflictBehavior</span>\n <span class={styles().optionValue}>{conflictBehavior()}</span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>hasFired</span>\n <span\n class={\n reg().hasFired\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(reg().hasFired)}\n </span>\n </div>\n </div>\n </div>\n\n <Show when={allConflicts().length > 0}>\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>\n Conflicts ({allConflicts().length})\n </div>\n <div class={styles().conflictList}>\n <For each={targetConflicts()}>\n {(conflict) => {\n return (\n <div class={styles().conflictItem}>\n <span>overlap</span> {conflict.id}:{' '}\n {formatRegistration(conflict)} (\n {conflict.options.eventType ?? 'keydown'}) on{' '}\n {props.getTargetDescription(conflict.target)}\n </div>\n )\n }}\n </For>\n <For each={scopeConflicts()}>\n {(conflict) => (\n <div class={styles().conflictItemScope}>\n <span>scope</span> {conflict.id}:{' '}\n {formatRegistration(conflict)} (\n {conflict.options.eventType ?? 'keydown'}) on{' '}\n {props.getTargetDescription(conflict.target)}\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </div>\n </>\n )\n}\n\nfunction SequenceDetails(props: {\n registration: SequenceRegistrationView\n state: ReturnType<typeof useHotkeysDevtoolsState>\n getTargetDescription: (t: HTMLElement | Document | Window) => string\n styles: ReturnType<typeof useStyles>\n}) {\n const reg = () => props.registration\n const liveReg = createMemo(\n () =>\n props.state.sequenceRegistrations().find((r) => r.id === reg().id) ??\n reg(),\n )\n const matchedSteps = createMemo(() =>\n effectiveSequenceMatchedSteps(liveReg(), props.state.sequenceProgressNow()),\n )\n const conflicts = useRegistrationConflicts(liveReg)\n const targetConflicts = () => conflicts().overlapping\n const scopeConflicts = () => conflicts().separate\n const allConflicts = () => [...targetConflicts(), ...scopeConflicts()]\n const conflictBehavior = (): ConflictBehavior =>\n liveReg().options.conflictBehavior ?? 'warn'\n\n const sequenceCanonicalPlatform = createMemo(\n () => liveReg().options.platform ?? detectPlatform(),\n )\n\n const styles = props.styles\n\n return (\n <>\n <div class={styles().stateHeader}>\n <div class={styles().stateTitle}>\n <For each={liveReg().sequence}>\n {(step, i) => (\n <span>\n <Show when={i() > 0}> </Show>\n <span\n class={\n i() < matchedSteps()\n ? styles().sequenceStepMatched\n : undefined\n }\n >\n {formatForDisplay(step, {\n platform: sequenceCanonicalPlatform(),\n })}\n </span>\n </span>\n )}\n </For>\n </div>\n <div class={styles().infoGrid}>\n <div class={styles().infoLabel}>ID</div>\n <div class={styles().infoValueMono}>{liveReg().id}</div>\n <div class={styles().infoLabel}>Matches</div>\n <div class={styles().infoValueMono}>{getBindingKind(liveReg())}</div>\n <div class={styles().infoLabel}>Raw</div>\n <div class={styles().infoValueMono}>\n {liveReg().sequence.join(' → ')}\n </div>\n <div class={styles().infoLabel}>Sequence</div>\n <div class={styles().infoValueMono}>\n <For each={liveReg().sequence}>\n {(step, i) => (\n <span>\n <Show when={i() > 0}> </Show>\n <span\n class={\n i() < matchedSteps()\n ? styles().sequenceStepMatched\n : undefined\n }\n >\n {formatForDisplay(step, {\n platform: sequenceCanonicalPlatform(),\n })}\n </span>\n </span>\n )}\n </For>\n </div>\n <div class={styles().infoLabel}>Target</div>\n <div class={styles().infoValueMono}>\n {props.getTargetDescription(liveReg().target)}\n </div>\n </div>\n </div>\n\n <div class={styles().detailsGrid}>\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Key Breakdown</div>\n <div class={styles().keyBreakdown}>\n <For each={liveReg().sequence}>\n {(step, i) => (\n <>\n <Show when={i() > 0}>\n <span class={styles().keyBreakdownPlus}>→</span>\n </Show>\n <span\n class={clsx(\n styles().keyCapLarge,\n i() < matchedSteps() && styles().keyCapLargeInProgress,\n )}\n >\n {formatForDisplay(step, {\n platform: sequenceCanonicalPlatform(),\n })}\n </span>\n </>\n )}\n </For>\n </div>\n\n <div class={styles().keyBreakdownSubHeader}>Each chord</div>\n <For each={liveReg().sequence}>\n {(step, stepIdx) => {\n const stepParsed = () =>\n parseHotkey(step, sequenceCanonicalPlatform())\n const stepParts = () =>\n formatForDisplay(stepParsed(), {\n platform: sequenceCanonicalPlatform(),\n parts: true,\n })\n return (\n <div class={styles().sequenceChordDetail}>\n <div class={styles().keyBreakdownSubHeader}>\n Step {stepIdx() + 1} —{' '}\n {stepParsed().code !== undefined ? 'Code' : 'Key'}\n </div>\n <div class={styles().keyBreakdownSplitRow}>\n <div class={styles().keyBreakdownSplitLeft}>\n <div class={styles().keyBreakdown}>\n <For each={stepParts()}>\n {(part, i) => (\n <>\n <Show when={i() > 0}>\n <span class={styles().keyBreakdownPlus}>+</span>\n </Show>\n <span class={styles().keyCapLarge}>{part}</span>\n </>\n )}\n </For>\n </div>\n </div>\n <span\n class={styles().keyBreakdownSplitArrow}\n aria-hidden=\"true\"\n >\n {'->'}\n </span>\n <div class={styles().keyBreakdownSplitRight}>\n <KeyBreakdownPlatformTable\n getParsed={stepParsed}\n getCanonicalPlatform={() => sequenceCanonicalPlatform()}\n styles={props.styles}\n />\n </div>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Actions</div>\n <ActionButtons registration={liveReg()} />\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Meta</div>\n <div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>name</span>\n <span class={styles().optionValue}>\n {liveReg().options.meta?.name ?? '—'}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>description</span>\n <span class={styles().optionValue}>\n {liveReg().options.meta?.description ?? '—'}\n </span>\n </div>\n <Show\n when={\n liveReg().options.meta &&\n Object.keys(liveReg().options.meta!).filter(\n (k) => k !== 'name' && k !== 'description',\n ).length > 0\n }\n >\n <For\n each={Object.entries(liveReg().options.meta ?? {}).filter(\n ([k]) => k !== 'name' && k !== 'description',\n )}\n >\n {([key, value]) => (\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>{key}</span>\n <span class={styles().optionValue}>{String(value)}</span>\n </div>\n )}\n </For>\n </Show>\n </div>\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Options</div>\n <div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>enabled</span>\n <span\n class={\n liveReg().options.enabled !== false\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(liveReg().options.enabled !== false)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>eventType</span>\n <span class={styles().optionValue}>\n {liveReg().options.eventType ?? 'keydown'}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>timeout</span>\n <span class={styles().optionValue}>\n {liveReg().options.timeout ?? 1000}ms\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>preventDefault</span>\n <span\n class={\n liveReg().options.preventDefault\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(!!liveReg().options.preventDefault)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>stopPropagation</span>\n <span\n class={\n liveReg().options.stopPropagation\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(!!liveReg().options.stopPropagation)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>ignoreInputs</span>\n <span\n class={\n liveReg().options.ignoreInputs !== false\n ? styles().optionValueTrue\n : styles().optionValueFalse\n }\n >\n {String(liveReg().options.ignoreInputs !== false)}\n </span>\n </div>\n <div class={styles().optionRow}>\n <span class={styles().optionLabel}>conflictBehavior</span>\n <span class={styles().optionValue}>{conflictBehavior()}</span>\n </div>\n </div>\n </div>\n\n <Show when={allConflicts().length > 0}>\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>\n Conflicts ({allConflicts().length})\n </div>\n <div class={styles().conflictList}>\n <For each={targetConflicts()}>\n {(conflict) => {\n return (\n <div class={styles().conflictItem}>\n <span>overlap</span> {conflict.id}:{' '}\n {formatRegistration(conflict)} (\n {conflict.options.eventType ?? 'keydown'}) on{' '}\n {props.getTargetDescription(conflict.target)}\n </div>\n )\n }}\n </For>\n <For each={scopeConflicts()}>\n {(conflict) => (\n <div class={styles().conflictItemScope}>\n <span>scope</span> {conflict.id}:{' '}\n {formatRegistration(conflict)} (\n {conflict.options.eventType ?? 'keydown'}) on{' '}\n {props.getTargetDescription(conflict.target)}\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </div>\n </>\n )\n}\n\nexport function DetailsPanel(props: DetailsPanelProps) {\n const styles = useStyles()\n const state = useHotkeysDevtoolsState()\n\n return (\n <div class={styles().stateDetails}>\n <Show\n when={props.selectedRegistration()}\n fallback={\n <div class={styles().noSelection}>\n Select a hotkey or sequence from the list to view its details\n </div>\n }\n >\n {(reg) => (\n <Show\n when={isSequenceRegistration(reg())}\n fallback={\n <HotkeyDetails\n registration={reg() as HotkeyRegistration}\n getTargetDescription={getTargetDescription}\n styles={styles}\n />\n }\n >\n <SequenceDetails\n registration={reg() as SequenceRegistrationView}\n state={state}\n getTargetDescription={getTargetDescription}\n styles={styles}\n />\n </Show>\n )}\n </Show>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,MAAMmB,gBAAgB;CACpB;EAAEC,IAAI;EAAgBE,OAAO;EAAS;CACtC;EAAEF,IAAI;EAAoBE,OAAO;EAAW;CAC5C;EAAEF,IAAI;EAAkBE,OAAO;EAAS;CACzC;AAED,SAASC,0BAA0BC,OAKhC;CACD,MAAMK,WAAWL,MAAMG,QAAQ;AAC/B,eAAA;EAAA,IAAAG,OAAAC,QAAA;AAAAC,SAAAF,MAAAG,gBAEKjC,KAAG;GAACkC,MAAMf;GAAagB,WACpBC,eAAG;IAAA,IAAAC,QAAAC,SAAA,EAAAC,QAAAF,MAAAG,YAAAC,QAAAF,MAAAG;AAAAV,WAAAO,aAE0CH,IAAId,MAAK;AAAAU,WAAAS,aAEjDpC,iBACCC,0BACEkB,MAAMC,WAAW,EACjBD,MAAME,sBACR,CAAC,EACD,EACEiB,UAAUP,IAAIhB,IAElB,CAAC,CAAA;AAAAwB,YAAAC,QAAA;KAAA,IAAAC,MAXOjB,IAAI,CAACkB,sBAAoBC,OACtBnB,IAAI,CAACoB,wBAAsBC,OAC3BrB,IAAI,CAACsB;AAAuBL,aAAAD,IAAAO,KAAAC,UAAAhB,OAAAQ,IAAAO,IAAAN,IAAA;AAAAE,cAAAH,IAAAS,KAAAD,UAAAd,OAAAM,IAAAS,IAAAN,KAAA;AAAAE,cAAAL,IAAAU,KAAAF,UAAAZ,OAAAI,IAAAU,IAAAL,KAAA;AAAA,YAAAL;OAAA;KAAAO,GAAAI;KAAAF,GAAAE;KAAAD,GAAAC;KAAA,CAAA;AAAA,WAAAnB;OAAA;GAY5C,CAAA,CAAA;AAAAO,eAAAS,UAAAvB,MAjBOD,IAAI,CAAC4B,kBAAiB,CAAA;AAAA,SAAA3B;KAAA;;AAuBtC,SAAS4B,uBACPC,KACiC;AACjC,QAAO,cAAcA,OAAOC,MAAMC,QAAQF,IAAIG,SAAS;;AAUzD,SAASG,qBAAqBC,QAAiD;AAC7E,KAAI,OAAOI,aAAa,eAAeJ,WAAWI,SAChD,QAAO;AAET,KAAI,OAAOC,WAAW,eAAeL,WAAWK,OAC9C,QAAO;AAET,KAAIL,kBAAkBC,YAMpB,QAAO,GALKD,OAAOO,QAAQC,aAAa,GAC7BR,OAAO9C,KAAK,IAAI8C,OAAO9C,OAAO,KAC7B8C,OAAOU,YACf,IAAIV,OAAOU,UAAUC,MAAM,IAAI,CAACC,KAAK,IAAI,KACzC;AAGN,QAAO;;AAGT,SAASC,cAAcvD,OAIpB;CACD,MAAMmC,YAAYnC,MAAMwD;CACxB,MAAMC,eAAetB,KAAK,CAACuB;CAC3B,MAAMC,YAAYtE,yBAAyB8C,IAAI;CAC/C,MAAMyB,wBAAwBD,WAAW,CAACE;CAC1C,MAAMC,uBAAuBH,WAAW,CAACI;CACzC,MAAMC,qBAAqB,CAAC,GAAGJ,iBAAiB,EAAE,GAAGE,gBAAgB,CAAC;CACtE,MAAMG,yBACJ9B,KAAK,CAAC+B,QAAQD,oBAAoB;CAEpC,MAAME,6BAA6BhC,KAAK,CAAC+B,QAAQ/C,YAAYvC,gBAAgB;CAE7E,MAAMwF,WAAW1F,iBACfG,iBAAiB4E,QAAQ,EAAE;EACzBtC,UAAUgD,sBAAsB;EAChCE,OAAO;EACR,CACH,CAAC;CAED,MAAMlE,SAASH,MAAMG;AAErB,QAAA,QAAA;EAAA,IAAAmE,QAAAC,SAAA,EAAAC,QAAAF,MAAAtD,YAAAyD,QAAAD,MAAAtD,aAAAwD,QAAAD,MAAAzD,YAAA2D,QAAAD,MAAAxD,aAAA0D,QAAAD,MAAAzD,aAAA2D,QAAAD,MAAA1D,aAAA4D,SAAAD,MAAA3D,aAAA6D,SAAAD,OAAA5D,aAAA8D,SAAAD,OAAA7D,aAAA+D,SAAAD,OAAA9D;AAAAV,SAAAgE,aAGwCrF,mBAAmBgD,KAAK,CAAC,CAAA;AAAA3B,SAAAmE,aAGpBxC,KAAK,CAACvC,GAAE;AAAAY,SAAAqE,aAERzF,eAAe+C,KAAK,CAAC,CAAA;AAAA3B,SAAAuE,cAErB5C,KAAK,CAAC+C,OAAM;AAAA1E,SAAAyE,cAG9CjF,MAAMyC,qBAAqBN,KAAK,CAACO,OAAO,CAAA;AAAAtB,UAAAC,QAAA;GAAA,IAAA8D,OAXnChF,QAAQ,CAACiF,aAAWC,OAClBlF,QAAQ,CAACmF,YAAUC,OACnBpF,QAAQ,CAACqF,UAAQC,OACftF,QAAQ,CAACuF,WAASC,OAClBxF,QAAQ,CAACyF,eAAaC,OACtB1F,QAAQ,CAACuF,WAASI,OAClB3F,QAAQ,CAACyF,eAAaG,OACtB5F,QAAQ,CAACuF,WAASM,QAClB7F,QAAQ,CAACyF,eAAaK,QACtB9F,QAAQ,CAACuF,WAASQ,QAClB/F,QAAQ,CAACyF;AAAaT,YAAA9D,IAAAO,KAAAC,UAAAyC,OAAAjD,IAAAO,IAAAuD,KAAA;AAAAE,YAAAhE,IAAAS,KAAAD,UAAA2C,OAAAnD,IAAAS,IAAAuD,KAAA;AAAAE,YAAAlE,IAAAU,KAAAF,UAAA4C,OAAApD,IAAAU,IAAAwD,KAAA;AAAAE,YAAApE,IAAA8E,KAAAtE,UAAA6C,OAAArD,IAAA8E,IAAAV,KAAA;AAAAE,YAAAtE,IAAA+E,KAAAvE,UAAA8C,OAAAtD,IAAA+E,IAAAT,KAAA;AAAAE,YAAAxE,IAAAgF,KAAAxE,UAAA+C,OAAAvD,IAAAgF,IAAAR,KAAA;AAAAC,YAAAzE,IAAAiF,KAAAzE,UAAAgD,OAAAxD,IAAAiF,IAAAR,KAAA;AAAAC,YAAA1E,IAAAkF,KAAA1E,UAAAiD,QAAAzD,IAAAkF,IAAAR,KAAA;AAAAC,aAAA3E,IAAAmF,KAAA3E,UAAAkD,QAAA1D,IAAAmF,IAAAR,MAAA;AAAAC,aAAA5E,IAAAoF,KAAA5E,UAAAmD,QAAA3D,IAAAoF,IAAAR,MAAA;AAAAC,aAAA7E,IAAAqF,KAAA7E,UAAAoD,QAAA5D,IAAAqF,IAAAR,MAAA;AAAA,UAAA7E;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAAmE,GAAAnE;GAAAoE,GAAApE;GAAAqE,GAAArE;GAAAsE,GAAAtE;GAAAuE,GAAAvE;GAAAwE,GAAAxE;GAAAyE,GAAAzE;GAAA0E,GAAA1E;GAAA,CAAA;AAAA,SAAAsC;KAAA,SAAA;EAAA,IAAAqC,SAAAC,SAAA,EAAAC,SAAAF,OAAA3F,YAAA8F,SAAAD,OAAA7F,YAAA+F,SAAAD,OAAA5F,aAAA8F,SAAAD,OAAA/F,YAAAiG,SAAAD,OAAAhG,YAAAkG,SAAAF,OAAA9F,aAAAiG,SAAAD,OAAAhG,aAAAkG,SAAAP,OAAA3F,aAAAmG,SAAAD,OAAApG,YAAAsG,SAAAF,OAAAlG,aAAAqG,SAAAD,OAAAtG,YAAAwG,SAAAD,OAAArG,aAAAuG,SAAAD,OAAAxG,YAAA0G,SAAAD,OAAAzG,YAAA2G,SAAAD,OAAAxG,aAAA0G,SAAAH,OAAAvG,aAAA2G,SAAAD,OAAA5G,YAAA8G,SAAAD,OAAA3G,aAAA6G,SAAAT,OAAApG,aAAA8G,SAAAD,OAAA/G,YAAAkH,SAAAF,OAAA9G,YAAAF,YAAAmH,SAAAD,OAAAlH,YAAAoH,SAAAD,OAAAjH,aAAAmH,SAAAH,OAAAhH,aAAAoH,SAAAD,OAAArH,YAAAuH,SAAAD,OAAApH,aAAAsH,SAAAH,OAAAnH,aAAAuH,SAAAD,OAAAxH,YAAA0H,SAAAD,OAAAvH,aAAAyH,SAAAH,OAAAtH,aAAA0H,SAAAD,OAAA3H,YAAA6H,SAAAD,OAAA1H,aAAA4H,SAAAH,OAAAzH,aAAA6H,SAAAD,OAAA9H,YAAAgI,SAAAD,OAAA7H,aAAA+H,SAAAH,OAAA5H,aAAAgI,SAAAD,OAAAjI,YAAAmI,SAAAD,OAAAhI,aAAAkI,SAAAH,OAAA/H,aAAAmI,SAAAD,OAAApI,YAAAsI,SAAAD,OAAAnI,aAAAqI,SAAAH,OAAAlI,aAAAsI,SAAAD,OAAAvI,YAAAyI,SAAAD,OAAAtI;AAAAV,SAAAyG,QAAAxG,gBAY3BjC,KAAG;GAAA,IAACkC,OAAI;AAAA,WAAE0D,UAAU;;GAAAzD,WACjB+I,MAAMtD,MAAC,CAAA3F,gBAEJhC,MAAI;IAAA,IAACkL,OAAI;AAAA,YAAEvD,GAAG,GAAG;;IAAC,IAAAzF,WAAA;KAAA,IAAAiJ,SAAAC,SAAA;AAAAzI,kBAAAS,UAAA+H,QACJzJ,QAAQ,CAAC2J,iBAAgB,CAAA;AAAA,YAAAF;;IAAA,CAAA,SAAA;IAAA,IAAAG,SAAAC,SAAA;AAAAxJ,WAAAuJ,QAEJL,KAAI;AAAAtI,iBAAAS,UAAAkI,QAA3B5J,QAAQ,CAAC8J,YAAW,CAAA;AAAA,WAAAF;OAAA,CAAA;GAEpC,CAAA,CAAA;AAAAvJ,SAAA2G,QAAA1G,gBAQJV,2BAAyB;GACxBE,iBAAiBwD,QAAQ;GACzBvD,sBAAsBiE;GAAoB,IAC1ChE,SAAM;AAAA,WAAEH,MAAMG;;GAAM,CAAA,CAAA;AAAAK,SAAA4G,QAAA3G,gBAQzBnB,eAAa,EAAA,IAACkE,eAAY;AAAA,UAAErB,KAAK;KAAA,CAAA,EAAA,KAAA;AAAA3B,SAAAmH,cAS3BxF,KAAK,CAAC+B,QAAQgG,MAAMC,QAAQ,IAAG;AAAA3J,SAAAsH,cAM/B3F,KAAK,CAAC+B,QAAQgG,MAAME,eAAe,IAAG;AAAA5J,SAAAgH,QAAA/G,gBAG1ChC,MAAI;GAAA,IACHkL,OAAI;AAAA,WACFU,WAAA,CAAA,CAAAlI,KAAK,CAAC+B,QAAQgG,KAAI,EAAA,IAClBI,OAAOC,KAAKpI,KAAK,CAAC+B,QAAQgG,KAAM,CAACM,QAC9BC,MAAMA,MAAM,UAAUA,MAAM,cAC9B,CAACC,SAAS;;GAAC,IAAA/J,WAAA;AAAA,WAAAF,gBAGbjC,KAAG;KAAA,IACFkC,OAAI;AAAA,aAAE4J,OAAOK,QAAQxI,KAAK,CAAC+B,QAAQgG,QAAQ,EAAE,CAAC,CAACM,QAC5C,CAACC,OAAOA,MAAM,UAAUA,MAAM,cAChC;;KAAA9J,WAEC,CAACiK,KAAKC,kBAAM;MAAA,IAAAC,SAAAhK,SAAA,EAAAiK,SAAAD,OAAA9J,YAAAgK,SAAAD,OAAA7J;AAAAV,aAAAuK,QAE0BH,IAAG;AAAApK,aAAAwK,cACHC,OAAOJ,MAAM,CAAA;AAAAzJ,cAAAC,QAAA;OAAA,IAAA6J,QAFvC/K,QAAQ,CAACgL,WAASC,QACfjL,QAAQ,CAACkL,aAAWC,QACpBnL,QAAQ,CAACoL;AAAWL,iBAAA7J,IAAAO,KAAAC,UAAAiJ,QAAAzJ,IAAAO,IAAAsJ,MAAA;AAAAE,iBAAA/J,IAAAS,KAAAD,UAAAkJ,QAAA1J,IAAAS,IAAAsJ,MAAA;AAAAE,iBAAAjK,IAAAU,KAAAF,UAAAmJ,QAAA3J,IAAAU,IAAAuJ,MAAA;AAAA,cAAAjK;SAAA;OAAAO,GAAAI;OAAAF,GAAAE;OAAAD,GAAAC;OAAA,CAAA;AAAA,aAAA8I;SAAA;KAEpC,CAAA;;GAAA,CAAA,EAAA,KAAA;AAAAtK,SAAA4H,cAkBA6C,OAAO9I,KAAK,CAAC+B,QAAQsH,YAAY,MAAM,CAAA;AAAAhL,SAAA+H,cAMvCpG,KAAK,CAAC+B,QAAQuH,aAAa,UAAS;AAAAjL,SAAAkI,cAYpCuC,OAAO,CAAC,CAAC9I,KAAK,CAAC+B,QAAQwH,eAAe,CAAA;AAAAlL,SAAAqI,cAYtCoC,OAAO,CAAC,CAAC9I,KAAK,CAAC+B,QAAQyH,gBAAgB,CAAA;AAAAnL,SAAAwI,cAYvCiC,OAAO9I,KAAK,CAAC+B,QAAQ0H,iBAAiB,MAAM,CAAA;AAAApL,SAAA2I,cAY5C8B,OAAO,CAAC,CAAC9I,KAAK,CAAC+B,QAAQ2H,aAAa,CAAA;AAAArL,SAAA8I,QAKHrF,iBAAgB;AAAAzD,SAAAiJ,cAWjDwB,OAAO9I,KAAK,CAAC2J,SAAS,CAAA;AAAAtL,SAAAmG,QAAAlG,gBAM9BhC,MAAI;GAAA,IAACkL,OAAI;AAAA,WAAE3F,cAAc,CAAC0G,SAAS;;GAAC,IAAA/J,WAAA;IAAA,IAAAoL,SAAAC,SAAA,EAAAC,SAAAF,OAAA/K,YAAAmL,SAAAF,OAAAjL,WAAAE;AAAAiL,WAAAjL;IAAA,IAAAmL,SAAAJ,OAAA/K;AAAAV,WAAAyL,cAGnBjI,cAAc,CAAC0G,QAAMyB,OAAA;AAAA3L,WAAA6L,QAAA5L,gBAGhCjC,KAAG;KAAA,IAACkC,OAAI;AAAA,aAAEkD,iBAAiB;;KAAAjD,WACxB2L,aAAa;AACb,oBAAA;OAAA,IAAAC,SAAAC,SAAA,EAAAG,SAAAJ,OAAAvL,WAAAE,YAAAA,aAAA2L,SAAAF,OAAAzL,YAAAA,aAAA6L,SAAAF,OAAA3L,YAAAA;AAAA6L,cAAA7L;AAAAV,cAAA+L,cAE0BD,SAAS1M,IAAE+M,OAAA;AAAAnM,cAAA+L,cAChCpN,mBAAmBmN,SAAS,EAAAO,OAAA;AAAArM,cAAA+L,cAC5BD,SAASpI,QAAQuH,aAAa,WAASsB,OAAA;AAAAvM,cAAA+L,cACvCvM,MAAMyC,qBAAqB6J,SAAS5J,OAAO,EAAA,KAAA;AAAAtB,oBAAAS,UAAA0K,QAJlCpM,QAAQ,CAAC8M,aAAY,CAAA;AAAA,cAAAV;UAAA;;KAOpC,CAAA,EAAA,KAAA;AAAA/L,WAAA6L,QAAA5L,gBAEFjC,KAAG;KAAA,IAACkC,OAAI;AAAA,aAAEoD,gBAAgB;;KAAAnD,WACvB2L,oBAAQ;MAAA,IAAAY,SAAAC,SAAA,EAAAG,SAAAJ,OAAAlM,WAAAE,YAAAA,aAAAsM,SAAAF,OAAApM,YAAAA,aAAAwM,SAAAF,OAAAtM,YAAAA;AAAAwM,aAAAxM;AAAAV,aAAA0M,cAEcZ,SAAS1M,IAAE0N,OAAA;AAAA9M,aAAA0M,cAC9B/N,mBAAmBmN,SAAS,EAAAkB,OAAA;AAAAhN,aAAA0M,cAC5BZ,SAASpI,QAAQuH,aAAa,WAASiC,OAAA;AAAAlN,aAAA0M,cACvClN,MAAMyC,qBAAqB6J,SAAS5J,OAAO,EAAA,KAAA;AAAAtB,mBAAAS,UAAAqL,QAJlC/M,QAAQ,CAACyN,kBAAiB,CAAA;AAAA,aAAAV;SAAA;KAMvC,CAAA,EAAA,KAAA;AAAA9L,YAAAC,QAAA;KAAA,IAAAwM,QAzBK1N,QAAQ,CAAC2N,eAAaC,QACpB5N,QAAQ,CAAC6N,qBAAmBC,QAG5B9N,QAAQ,CAAC+N;AAAYL,eAAAxM,IAAAO,KAAAC,UAAAkK,QAAA1K,IAAAO,IAAAiM,MAAA;AAAAE,eAAA1M,IAAAS,KAAAD,UAAAoK,QAAA5K,IAAAS,IAAAiM,MAAA;AAAAE,eAAA5M,IAAAU,KAAAF,UAAAwK,QAAAhL,IAAAU,IAAAkM,MAAA;AAAA,YAAA5M;OAAA;KAAAO,GAAAI;KAAAF,GAAAE;KAAAD,GAAAC;KAAA,CAAA;AAAA,WAAA+J;;GAAA,CAAA,EAAA,KAAA;AAAA3K,UAAAC,QAAA;GAAA,IAAA8M,QAxK3BhO,QAAQ,CAACiO,aAAWC,QAClBlO,QAAQ,CAAC2N,eAAaQ,QACpBnO,QAAQ,CAAC6N,qBAAmBO,QAC5BpO,QAAQ,CAACqO,sBAAoBC,QAC3BtO,QAAQ,CAACuO,uBAAqBC,QAC5BxO,QAAQ,CAACyO,cAAYC,QAatB1O,QAAQ,CAAC2O,wBAAsBC,QAGhC5O,QAAQ,CAAC6O,wBAAsBC,QAUnC9O,QAAQ,CAAC2N,eAAaoB,QACpB/O,QAAQ,CAAC6N,qBAAmBmB,QAI9BhP,QAAQ,CAAC2N,eAAasB,QACpBjP,QAAQ,CAAC6N,qBAAmBqB,QAE1BlP,QAAQ,CAACgL,WAASmE,QACfnP,QAAQ,CAACkL,aAAWkE,QACpBpP,QAAQ,CAACoL,aAAWiE,QAIvBrP,QAAQ,CAACgL,WAASsE,QACftP,QAAQ,CAACkL,aAAWqE,QACpBvP,QAAQ,CAACoL,aAAWoE,QA4B3BxP,QAAQ,CAAC2N,eAAa8B,QACpBzP,QAAQ,CAAC6N,qBAAmB6B,QAE1B1P,QAAQ,CAACgL,WAAS2E,QACf3P,QAAQ,CAACkL,aAAW0E,QAG7B5N,KAAK,CAAC+B,QAAQsH,YAAY,QACtBrL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBC,QAMvB/P,QAAQ,CAACgL,WAASgF,QACfhQ,QAAQ,CAACkL,aAAW+E,QACpBjQ,QAAQ,CAACoL,aAAW8E,QAIvBlQ,QAAQ,CAACgL,WAASmF,QACfnQ,QAAQ,CAACkL,aAAWkF,QAG7BpO,KAAK,CAAC+B,QAAQwH,iBACVvL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBO,QAMvBrQ,QAAQ,CAACgL,WAASsF,QACftQ,QAAQ,CAACkL,aAAWqF,QAG7BvO,KAAK,CAAC+B,QAAQyH,kBACVxL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBU,QAMvBxQ,QAAQ,CAACgL,WAASyF,QACfzQ,QAAQ,CAACkL,aAAWwF,QAG7B1O,KAAK,CAAC+B,QAAQ0H,iBAAiB,QAC3BzL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBa,QAMvB3Q,QAAQ,CAACgL,WAAS4F,QACf5Q,QAAQ,CAACkL,aAAW2F,QAG7B7O,KAAK,CAAC+B,QAAQ2H,eACV1L,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBgB,QAMvB9Q,QAAQ,CAACgL,WAAS+F,QACf/Q,QAAQ,CAACkL,aAAW8F,QACpBhR,QAAQ,CAACoL,aAAW6F,QAEvBjR,QAAQ,CAACgL,WAASkG,QACflR,QAAQ,CAACkL,aAAWiG,QAG7BnP,KAAK,CAAC2J,WACF3L,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P;AAAgB9B,aAAA9M,IAAAO,KAAAC,UAAA8E,QAAAtF,IAAAO,IAAAuM,MAAA;AAAAE,aAAAhN,IAAAS,KAAAD,UAAAgF,QAAAxF,IAAAS,IAAAuM,MAAA;AAAAC,aAAAjN,IAAAU,KAAAF,UAAAiF,QAAAzF,IAAAU,IAAAuM,MAAA;AAAAC,aAAAlN,IAAA8E,KAAAtE,UAAAkF,QAAA1F,IAAA8E,IAAAoI,MAAA;AAAAE,aAAApN,IAAA+E,KAAAvE,UAAAmF,QAAA3F,IAAA+E,IAAAqI,MAAA;AAAAE,aAAAtN,IAAAgF,KAAAxE,UAAAoF,QAAA5F,IAAAgF,IAAAsI,MAAA;AAAAE,aAAAxN,IAAAiF,KAAAzE,UAAAqF,QAAA7F,IAAAiF,IAAAuI,MAAA;AAAAE,aAAA1N,IAAAkF,KAAA1E,UAAAsF,QAAA9F,IAAAkF,IAAAwI,MAAA;AAAAE,aAAA5N,IAAAmF,KAAA3E,UAAAuF,QAAA/F,IAAAmF,IAAAyI,MAAA;AAAAC,aAAA7N,IAAAoF,KAAA5E,UAAAwF,QAAAhG,IAAAoF,IAAAyI,MAAA;AAAAC,aAAA9N,IAAAqF,KAAA7E,UAAAyF,QAAAjG,IAAAqF,IAAAyI,MAAA;AAAAC,aAAA/N,IAAAkQ,KAAA1P,UAAA0F,QAAAlG,IAAAkQ,IAAAnC,MAAA;AAAAC,aAAAhO,IAAAmQ,KAAA3P,UAAA4F,QAAApG,IAAAmQ,IAAAnC,MAAA;AAAAC,aAAAjO,IAAAoQ,KAAA5P,UAAA6F,QAAArG,IAAAoQ,IAAAnC,MAAA;AAAAC,aAAAlO,IAAAqQ,KAAA7P,UAAA8F,QAAAtG,IAAAqQ,IAAAnC,MAAA;AAAAC,aAAAnO,IAAAsQ,KAAA9P,UAAA+F,QAAAvG,IAAAsQ,IAAAnC,MAAA;AAAAC,aAAApO,IAAAuQ,KAAA/P,UAAAgG,QAAAxG,IAAAuQ,IAAAnC,MAAA;AAAAC,aAAArO,IAAAwQ,KAAAhQ,UAAAiG,QAAAzG,IAAAwQ,IAAAnC,MAAA;AAAAC,aAAAtO,IAAAyQ,KAAAjQ,UAAAkG,QAAA1G,IAAAyQ,IAAAnC,MAAA;AAAAC,aAAAvO,IAAA0Q,KAAAlQ,UAAAmG,QAAA3G,IAAA0Q,IAAAnC,MAAA;AAAAC,aAAAxO,IAAA2Q,KAAAnQ,UAAAqG,QAAA7G,IAAA2Q,IAAAnC,MAAA;AAAAC,aAAAzO,IAAA4Q,KAAApQ,UAAAsG,QAAA9G,IAAA4Q,IAAAnC,MAAA;AAAAC,aAAA1O,IAAA6Q,KAAArQ,UAAAuG,QAAA/G,IAAA6Q,IAAAnC,MAAA;AAAAG,aAAA7O,IAAA8Q,KAAAtQ,UAAAwG,QAAAhH,IAAA8Q,IAAAjC,MAAA;AAAAC,aAAA9O,IAAA+Q,KAAAvQ,UAAAyG,QAAAjH,IAAA+Q,IAAAjC,MAAA;AAAAC,aAAA/O,IAAAgR,KAAAxQ,UAAA0G,QAAAlH,IAAAgR,IAAAjC,MAAA;AAAAC,aAAAhP,IAAAiR,KAAAzQ,UAAA2G,QAAAnH,IAAAiR,IAAAjC,MAAA;AAAAC,aAAAjP,IAAAkR,KAAA1Q,UAAA4G,QAAApH,IAAAkR,IAAAjC,MAAA;AAAAC,aAAAlP,IAAAmR,KAAA3Q,UAAA6G,QAAArH,IAAAmR,IAAAjC,MAAA;AAAAC,aAAAnP,IAAAoJ,KAAA5I,UAAA8G,QAAAtH,IAAAoJ,IAAA+F,MAAA;AAAAC,aAAApP,IAAAoR,KAAA5Q,UAAA+G,QAAAvH,IAAAoR,IAAAhC,MAAA;AAAAC,aAAArP,IAAAqR,KAAA7Q,UAAAgH,QAAAxH,IAAAqR,IAAAhC,MAAA;AAAAC,aAAAtP,IAAAsR,KAAA9Q,UAAAiH,QAAAzH,IAAAsR,IAAAhC,MAAA;AAAAC,aAAAvP,IAAAuR,KAAA/Q,UAAAkH,QAAA1H,IAAAuR,IAAAhC,MAAA;AAAAC,aAAAxP,IAAAwR,KAAAhR,UAAAmH,QAAA3H,IAAAwR,IAAAhC,MAAA;AAAAC,aAAAzP,IAAAyR,KAAAjR,UAAAoH,QAAA5H,IAAAyR,IAAAhC,MAAA;AAAAC,aAAA1P,IAAA0R,KAAAlR,UAAAqH,QAAA7H,IAAA0R,IAAAhC,MAAA;AAAAC,aAAA3P,IAAA2R,KAAAnR,UAAAsH,QAAA9H,IAAA2R,IAAAhC,MAAA;AAAAC,aAAA5P,IAAA4R,KAAApR,UAAAuH,QAAA/H,IAAA4R,IAAAhC,MAAA;AAAAC,aAAA7P,IAAA6R,KAAArR,UAAAwH,QAAAhI,IAAA6R,IAAAhC,MAAA;AAAAC,aAAA9P,IAAA8R,KAAAtR,UAAAyH,QAAAjI,IAAA8R,IAAAhC,MAAA;AAAAC,aAAA/P,IAAA+R,KAAAvR,UAAA0H,QAAAlI,IAAA+R,IAAAhC,MAAA;AAAAC,aAAAhQ,IAAAgS,KAAAxR,UAAA2H,QAAAnI,IAAAgS,IAAAhC,MAAA;AAAAC,aAAAjQ,IAAAiS,KAAAzR,UAAA4H,QAAApI,IAAAiS,IAAAhC,MAAA;AAAA,UAAAjQ;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAAmE,GAAAnE;GAAAoE,GAAApE;GAAAqE,GAAArE;GAAAsE,GAAAtE;GAAAuE,GAAAvE;GAAAwE,GAAAxE;GAAAyE,GAAAzE;GAAA0E,GAAA1E;GAAAuP,GAAAvP;GAAAwP,GAAAxP;GAAAyP,GAAAzP;GAAA0P,GAAA1P;GAAA2P,GAAA3P;GAAA4P,GAAA5P;GAAA6P,GAAA7P;GAAA8P,GAAA9P;GAAA+P,GAAA/P;GAAAgQ,GAAAhQ;GAAAiQ,GAAAjQ;GAAAkQ,GAAAlQ;GAAAmQ,GAAAnQ;GAAAoQ,GAAApQ;GAAAqQ,GAAArQ;GAAAsQ,GAAAtQ;GAAAuQ,GAAAvQ;GAAAwQ,GAAAxQ;GAAAyI,GAAAzI;GAAAyQ,GAAAzQ;GAAA0Q,GAAA1Q;GAAA2Q,GAAA3Q;GAAA4Q,GAAA5Q;GAAA6Q,GAAA7Q;GAAA8Q,GAAA9Q;GAAA+Q,GAAA/Q;GAAAgR,GAAAhR;GAAAiR,GAAAjR;GAAAkR,GAAAlR;GAAAmR,GAAAnR;GAAAoR,GAAApR;GAAAqR,GAAArR;GAAAsR,GAAAtR;GAAA,CAAA;AAAA,SAAA2E;KAAA,CAAA;;AA6C/C,SAAS4M,gBAAgBvT,OAKtB;CACD,MAAMmC,YAAYnC,MAAMwD;CACxB,MAAMiQ,UAAU/U,iBAEZsB,MAAMwT,MAAME,uBAAuB,CAACC,MAAMnN,MAAMA,EAAE5G,OAAOuC,KAAK,CAACvC,GAAG,IAClEuC,KACJ,CAAC;CACD,MAAMyR,eAAelV,iBACnBQ,8BAA8BuU,SAAS,EAAEzT,MAAMwT,MAAMK,qBAAqB,CAC5E,CAAC;CACD,MAAMlQ,YAAYtE,yBAAyBoU,QAAQ;CACnD,MAAM7P,wBAAwBD,WAAW,CAACE;CAC1C,MAAMC,uBAAuBH,WAAW,CAACI;CACzC,MAAMC,qBAAqB,CAAC,GAAGJ,iBAAiB,EAAE,GAAGE,gBAAgB,CAAC;CACtE,MAAMG,yBACJwP,SAAS,CAACvP,QAAQD,oBAAoB;CAExC,MAAM6P,4BAA4BpV,iBAC1B+U,SAAS,CAACvP,QAAQ/C,YAAYvC,gBACtC,CAAC;CAED,MAAMuB,SAASH,MAAMG;AAErB,QAAA,QAAA;EAAA,IAAA4T,SAAAC,SAAA,EAAAC,SAAAF,OAAA/S,YAAAkT,SAAAD,OAAA/S,aAAAiT,SAAAD,OAAAlT,YAAAoT,SAAAD,OAAAjT,aAAAmT,SAAAD,OAAAlT,aAAAoT,SAAAD,OAAAnT,aAAAqT,UAAAD,OAAApT,aAAAsT,UAAAD,QAAArT,aAAAuT,UAAAD,QAAAtT,aAAAwT,UAAAD,QAAAvT,aAAAyT,UAAAD,QAAAxT,aAAA0T,UAAAD,QAAAzT;AAAAV,SAAAyT,QAAAxT,gBAISjC,KAAG;GAAA,IAACkC,OAAI;AAAA,WAAE+S,SAAS,CAACnR;;GAAQ3B,WACzBkU,MAAMzO,aAAC;IAAA,IAAA0O,UAAAC,UAAA,EAAAC,UAAAF,QAAA9T;AAAAR,WAAAsU,SAAArU,gBAEJhC,MAAI;KAAA,IAACkL,OAAI;AAAA,aAAEvD,GAAG,GAAG;;KAACzF,UAAA;KAAA,CAAA,EAAAqU,QAAA;AAAAxU,WAAAwU,eAQhBnW,iBAAiBgW,MAAM,EACtB1T,UAAU2S,2BAA0B,EACrC,CAAC,CAAA;AAAA1S,iBAAAS,UAAAmT,SAPA5O,GAAG,GAAGwN,cAAc,GAChBzT,QAAQ,CAAC8U,sBACTjT,OAAS,CAAA;AAAA,WAAA8S;OAAA;GAQpB,CAAA,CAAA;AAAAtU,SAAA4T,cAKkCX,SAAS,CAAC7T,GAAE;AAAAY,SAAA8T,cAEZlV,eAAeqU,SAAS,CAAC,CAAA;AAAAjT,SAAAgU,eAG3Df,SAAS,CAACnR,SAASgB,KAAK,MAAM,CAAA;AAAA9C,SAAAkU,SAAAjU,gBAI9BjC,KAAG;GAAA,IAACkC,OAAI;AAAA,WAAE+S,SAAS,CAACnR;;GAAQ3B,WACzBkU,MAAMzO,aAAC;IAAA,IAAA8O,UAAAH,UAAA,EAAAI,UAAAD,QAAAlU;AAAAR,WAAA0U,SAAAzU,gBAEJhC,MAAI;KAAA,IAACkL,OAAI;AAAA,aAAEvD,GAAG,GAAG;;KAACzF,UAAA;KAAA,CAAA,EAAAwU,QAAA;AAAA3U,WAAA2U,eAQhBtW,iBAAiBgW,MAAM,EACtB1T,UAAU2S,2BAA0B,EACrC,CAAC,CAAA;AAAA1S,iBAAAS,UAAAsT,SAPA/O,GAAG,GAAGwN,cAAc,GAChBzT,QAAQ,CAAC8U,sBACTjT,OAAS,CAAA;AAAA,WAAAkT;OAAA;GAQpB,CAAA,CAAA;AAAA1U,SAAAoU,eAKF5U,MAAMyC,qBAAqBgR,SAAS,CAAC/Q,OAAO,CAAA;AAAAtB,UAAAC,QAAA;GAAA,IAAA+T,QArDvCjV,QAAQ,CAACiF,aAAWiQ,QAClBlV,QAAQ,CAACmF,YAAUgQ,QAoBnBnV,QAAQ,CAACqF,UAAQ+P,QACfpV,QAAQ,CAACuF,WAAS8P,QAClBrV,QAAQ,CAACyF,eAAa6P,QACtBtV,QAAQ,CAACuF,WAASgQ,QAClBvV,QAAQ,CAACyF,eAAa+P,QACtBxV,QAAQ,CAACuF,WAASkQ,QAClBzV,QAAQ,CAACyF,eAAaiQ,QAGtB1V,QAAQ,CAACuF,WAASoQ,QAClB3V,QAAQ,CAACyF,eAAamQ,QAoBtB5V,QAAQ,CAACuF,WAASsQ,QAClB7V,QAAQ,CAACyF;AAAawP,aAAA/T,IAAAO,KAAAC,UAAAkS,QAAA1S,IAAAO,IAAAwT,MAAA;AAAAC,aAAAhU,IAAAS,KAAAD,UAAAoS,QAAA5S,IAAAS,IAAAuT,MAAA;AAAAC,aAAAjU,IAAAU,KAAAF,UAAAqS,QAAA7S,IAAAU,IAAAuT,MAAA;AAAAC,aAAAlU,IAAA8E,KAAAtE,UAAAsS,QAAA9S,IAAA8E,IAAAoP,MAAA;AAAAC,aAAAnU,IAAA+E,KAAAvE,UAAAuS,QAAA/S,IAAA+E,IAAAoP,MAAA;AAAAC,aAAApU,IAAAgF,KAAAxE,UAAAwS,QAAAhT,IAAAgF,IAAAoP,MAAA;AAAAC,aAAArU,IAAAiF,KAAAzE,UAAAyS,QAAAjT,IAAAiF,IAAAoP,MAAA;AAAAC,aAAAtU,IAAAkF,KAAA1E,UAAA0S,SAAAlT,IAAAkF,IAAAoP,MAAA;AAAAC,aAAAvU,IAAAmF,KAAA3E,UAAA2S,SAAAnT,IAAAmF,IAAAoP,MAAA;AAAAC,aAAAxU,IAAAoF,KAAA5E,UAAA4S,SAAApT,IAAAoF,IAAAoP,MAAA;AAAAC,aAAAzU,IAAAqF,KAAA7E,UAAA6S,SAAArT,IAAAqF,IAAAoP,MAAA;AAAAC,aAAA1U,IAAAkQ,KAAA1P,UAAA8S,SAAAtT,IAAAkQ,IAAAwE,MAAA;AAAAC,aAAA3U,IAAAmQ,KAAA3P,UAAA+S,SAAAvT,IAAAmQ,IAAAwE,MAAA;AAAA,UAAA3U;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAAmE,GAAAnE;GAAAoE,GAAApE;GAAAqE,GAAArE;GAAAsE,GAAAtE;GAAAuE,GAAAvE;GAAAwE,GAAAxE;GAAAyE,GAAAzE;GAAA0E,GAAA1E;GAAAuP,GAAAvP;GAAAwP,GAAAxP;GAAA,CAAA;AAAA,SAAA+R;KAAA,SAAA;EAAA,IAAAkC,UAAAC,SAAA,EAAAC,UAAAF,QAAAjV,YAAAoV,UAAAD,QAAAnV,YAAAqV,UAAAD,QAAAlV,aAAAoV,UAAAD,QAAAnV,aAAAqV,UAAAJ,QAAAjV,aAAAsV,UAAAD,QAAAvV,YAAAyV,UAAAF,QAAArV,aAAAwV,UAAAD,QAAAzV,YAAA2V,UAAAD,QAAAxV,aAAA0V,UAAAD,QAAA3V,YAAA6V,UAAAD,QAAA5V,YAAA8V,UAAAD,QAAA3V,aAAA6V,UAAAH,QAAA1V,aAAA8V,UAAAD,QAAA/V,YAAAiW,UAAAD,QAAA9V,aAAAgW,UAAAT,QAAAvV,aAAAiW,UAAAD,QAAAlW,YAAAqW,UAAAF,QAAAjW,YAAAF,YAAAsW,UAAAD,QAAArW,YAAAuW,UAAAD,QAAApW,aAAAsW,UAAAH,QAAAnW,aAAAuW,UAAAD,QAAAxW,YAAA0W,UAAAD,QAAAvW,aAAAyW,UAAAH,QAAAtW,aAAA0W,UAAAD,QAAA3W,YAAA6W,UAAAD,QAAA1W,aAAA4W,UAAAD,QAAA7W,YAAA+W,UAAAJ,QAAAzW,aAAA8W,UAAAD,QAAA/W,YAAAiX,UAAAD,QAAA9W,aAAAgX,UAAAH,QAAA7W,aAAAiX,UAAAD,QAAAlX,YAAAoX,UAAAD,QAAAjX,aAAAmX,UAAAH,QAAAhX,aAAAoX,UAAAD,QAAArX,YAAAuX,UAAAD,QAAApX,aAAAsX,UAAAH,QAAAnX,aAAAuX,UAAAD,QAAAxX,YAAA0X,UAAAD,QAAAvX;AAAAV,SAAA6V,SAAA5V,gBAU/BjC,KAAG;GAAA,IAACkC,OAAI;AAAA,WAAE+S,SAAS,CAACnR;;GAAQ3B,WACzBkU,MAAMzO,MAAC,CAAA3F,gBAEJhC,MAAI;IAAA,IAACkL,OAAI;AAAA,YAAEvD,GAAG,GAAG;;IAAC,IAAAzF,WAAA;KAAA,IAAAgY,UAAAC,UAAA;AAAAxX,kBAAAS,UAAA8W,SACJxY,QAAQ,CAAC2J,iBAAgB,CAAA;AAAA,YAAA6O;;IAAA,CAAA,SAAA;IAAA,IAAAE,UAAA7O,SAAA;AAAAxJ,WAAAqY,eAQrCha,iBAAiBgW,MAAM,EACtB1T,UAAU2S,2BAA0B,EACrC,CAAC,CAAA;AAAA1S,iBAAAS,UAAAgX,SAPKla,KACLwB,QAAQ,CAAC8J,aACT7D,GAAG,GAAGwN,cAAc,IAAIzT,QAAQ,CAAC2Y,sBAClC,CAAA,CAAA;AAAA,WAAAD;OAAA,CAAA;GAON,CAAA,CAAA;AAAArY,SAAA2V,SAAA1V,gBAKJjC,KAAG;GAAA,IAACkC,OAAI;AAAA,WAAE+S,SAAS,CAACnR;;GAAQ3B,WACzBkU,MAAMkE,YAAY;IAClB,MAAMC,mBACJja,YAAY8V,MAAMf,2BAA2B,CAAC;IAChD,MAAMmF,kBACJpa,iBAAiBma,YAAY,EAAE;KAC7B7X,UAAU2S,2BAA2B;KACrCzP,OAAO;KACR,CAAC;AACJ,kBAAA;KAAA,IAAA6U,UAAAC,UAAA,EAAAC,UAAAF,QAAAlY,YAAAsY,UAAAF,QAAApY,WAAAE;AAAAoY,aAAApY;KAAA,IAAAsY,UAAAJ,QAAAlY,aAAAuY,UAAAD,QAAAxY,YAAA0Y,UAAAD,QAAAzY,YAAA2Y,UAAAF,QAAAvY,aAAA0Y,UAAAD,QAAAzY;AAAAV,YAAA4Y,eAGYL,SAAS,GAAG,GAACO,QAAA;AAAA9Y,YAAA4Y,eAClBJ,YAAY,CAACa,SAAS7X,SAAY,SAAS,OAAK,KAAA;AAAAxB,YAAAkZ,SAAAjZ,gBAK5CjC,KAAG;MAAA,IAACkC,OAAI;AAAA,cAAEuY,WAAW;;MAAAtY,WAClB+I,MAAMtD,MAAC,CAAA3F,gBAEJhC,MAAI;OAAA,IAACkL,OAAI;AAAA,eAAEvD,GAAG,GAAG;;OAAC,IAAAzF,WAAA;QAAA,IAAAmZ,UAAAjQ,SAAA;AAAAzI,qBAAAS,UAAAiY,SACJ3Z,QAAQ,CAAC2J,iBAAgB,CAAA;AAAA,eAAAgQ;;OAAA,CAAA,SAAA;OAAA,IAAAC,UAAA/P,SAAA;AAAAxJ,cAAAuZ,SAEJrQ,KAAI;AAAAtI,oBAAAS,UAAAkY,SAA3B5Z,QAAQ,CAAC8J,YAAW,CAAA;AAAA,cAAA8P;UAAA,CAAA;MAEpC,CAAA,CAAA;AAAAvZ,YAAAoZ,SAAAnZ,gBAWJV,2BAAyB;MACxBE,WAAW+Y;MACX9Y,4BAA4B4T,2BAA2B;MAAA,IACvD3T,SAAM;AAAA,cAAEH,MAAMG;;MAAM,CAAA,CAAA;AAAAiB,aAAAC,QAAA;MAAA,IAAA2Y,SA9BhB7Z,QAAQ,CAAC8Z,qBAAmBC,SAC1B/Z,QAAQ,CAACga,uBAAqBC,SAI9Bja,QAAQ,CAACqO,sBAAoB6L,SAC3Bla,QAAQ,CAACuO,uBAAqB4L,SAC5Bna,QAAQ,CAACyO,cAAY2L,SAc1Bpa,QAAQ,CAAC2O,wBAAsB0L,SAK5Bra,QAAQ,CAAC6O;AAAsBgL,iBAAA3Y,IAAAO,KAAAC,UAAAqX,SAAA7X,IAAAO,IAAAoY,OAAA;AAAAE,iBAAA7Y,IAAAS,KAAAD,UAAAuX,SAAA/X,IAAAS,IAAAoY,OAAA;AAAAE,iBAAA/Y,IAAAU,KAAAF,UAAA2X,SAAAnY,IAAAU,IAAAqY,OAAA;AAAAC,iBAAAhZ,IAAA8E,KAAAtE,UAAA4X,SAAApY,IAAA8E,IAAAkU,OAAA;AAAAC,iBAAAjZ,IAAA+E,KAAAvE,UAAA6X,SAAArY,IAAA+E,IAAAkU,OAAA;AAAAC,iBAAAlZ,IAAAgF,KAAAxE,UAAA8X,SAAAtY,IAAAgF,IAAAkU,OAAA;AAAAC,iBAAAnZ,IAAAiF,KAAAzE,UAAA+X,SAAAvY,IAAAiF,IAAAkU,OAAA;AAAA,aAAAnZ;QAAA;MAAAO,GAAAI;MAAAF,GAAAE;MAAAD,GAAAC;MAAAmE,GAAAnE;MAAAoE,GAAApE;MAAAqE,GAAArE;MAAAsE,GAAAtE;MAAA,CAAA;AAAA,YAAAkX;QAAA;;GAUlD,CAAA,EAAA,KAAA;AAAA1Y,SAAA+V,SAAA9V,gBAMFnB,eAAa,EAAA,IAACkE,eAAY;AAAA,UAAEiQ,SAAS;KAAA,CAAA,EAAA,KAAA;AAAAjT,SAAAsW,eAS/BrD,SAAS,CAACvP,QAAQgG,MAAMC,QAAQ,IAAG;AAAA3J,SAAAyW,eAMnCxD,SAAS,CAACvP,QAAQgG,MAAME,eAAe,IAAG;AAAA5J,SAAAmW,SAAAlW,gBAG9ChC,MAAI;GAAA,IACHkL,OAAI;AAAA,WACFU,WAAA,CAAA,CAAAoJ,SAAS,CAACvP,QAAQgG,KAAI,EAAA,IACtBI,OAAOC,KAAKkJ,SAAS,CAACvP,QAAQgG,KAAM,CAACM,QAClCC,MAAMA,MAAM,UAAUA,MAAM,cAC9B,CAACC,SAAS;;GAAC,IAAA/J,WAAA;AAAA,WAAAF,gBAGbjC,KAAG;KAAA,IACFkC,OAAI;AAAA,aAAE4J,OAAOK,QAAQ8I,SAAS,CAACvP,QAAQgG,QAAQ,EAAE,CAAC,CAACM,QAChD,CAACC,OAAOA,MAAM,UAAUA,MAAM,cAChC;;KAAA9J,WAEC,CAACiK,KAAKC,kBAAM;MAAA,IAAA4P,UAAA3Z,SAAA,EAAA4Z,UAAAD,QAAAzZ,YAAA2Z,UAAAD,QAAAxZ;AAAAV,aAAAka,SAE0B9P,IAAG;AAAApK,aAAAma,eACH1P,OAAOJ,MAAM,CAAA;AAAAzJ,cAAAC,QAAA;OAAA,IAAAuZ,SAFvCza,QAAQ,CAACgL,WAAS0P,SACf1a,QAAQ,CAACkL,aAAWyP,SACpB3a,QAAQ,CAACoL;AAAWqP,kBAAAvZ,IAAAO,KAAAC,UAAA4Y,SAAApZ,IAAAO,IAAAgZ,OAAA;AAAAC,kBAAAxZ,IAAAS,KAAAD,UAAA6Y,SAAArZ,IAAAS,IAAA+Y,OAAA;AAAAC,kBAAAzZ,IAAAU,KAAAF,UAAA8Y,SAAAtZ,IAAAU,IAAA+Y,OAAA;AAAA,cAAAzZ;SAAA;OAAAO,GAAAI;OAAAF,GAAAE;OAAAD,GAAAC;OAAA,CAAA;AAAA,aAAAyY;SAAA;KAEpC,CAAA;;GAAA,CAAA,EAAA,KAAA;AAAAja,SAAA+W,eAkBAtM,OAAOwI,SAAS,CAACvP,QAAQsH,YAAY,MAAM,CAAA;AAAAhL,SAAAkX,eAM3CjE,SAAS,CAACvP,QAAQuH,aAAa,UAAS;AAAAjL,SAAAqX,eAMxCpE,SAAS,CAACvP,QAAQ6W,WAAW,KAAIjD,QAAA;AAAAtX,SAAAyX,eAYjChN,OAAO,CAAC,CAACwI,SAAS,CAACvP,QAAQwH,eAAe,CAAA;AAAAlL,SAAA4X,eAY1CnN,OAAO,CAAC,CAACwI,SAAS,CAACvP,QAAQyH,gBAAgB,CAAA;AAAAnL,SAAA+X,eAY3CtN,OAAOwI,SAAS,CAACvP,QAAQ0H,iBAAiB,MAAM,CAAA;AAAApL,SAAAkY,SAKfzU,iBAAgB;AAAAzD,SAAAyV,SAAAxV,gBAKzDhC,MAAI;GAAA,IAACkL,OAAI;AAAA,WAAE3F,cAAc,CAAC0G,SAAS;;GAAC,IAAA/J,WAAA;IAAA,IAAAqa,UAAAhP,SAAA,EAAAiP,UAAAD,QAAAha,YAAAma,UAAAF,QAAAja,WAAAE;AAAAia,YAAAja;IAAA,IAAAma,UAAAJ,QAAA/Z;AAAAV,WAAAya,eAGnBjX,cAAc,CAAC0G,QAAMyQ,QAAA;AAAA3a,WAAA6a,SAAA5a,gBAGhCjC,KAAG;KAAA,IAACkC,OAAI;AAAA,aAAEkD,iBAAiB;;KAAAjD,WACxB2L,aAAa;AACb,oBAAA;OAAA,IAAAgP,UAAA9O,SAAA,EAAAiP,UAAAH,QAAAta,WAAAE,YAAAA,aAAAya,UAAAF,QAAAva,YAAAA,aAAA2a,UAAAF,QAAAza,YAAAA;AAAA2a,eAAA3a;AAAAV,cAAA8a,eAE0BhP,SAAS1M,IAAE6b,QAAA;AAAAjb,cAAA8a,eAChCnc,mBAAmBmN,SAAS,EAAAqP,QAAA;AAAAnb,cAAA8a,eAC5BhP,SAASpI,QAAQuH,aAAa,WAASoQ,QAAA;AAAArb,cAAA8a,eACvCtb,MAAMyC,qBAAqB6J,SAAS5J,OAAO,EAAA,KAAA;AAAAtB,oBAAAS,UAAAyZ,SAJlCnb,QAAQ,CAAC8M,aAAY,CAAA;AAAA,cAAAqO;UAAA;;KAOpC,CAAA,EAAA,KAAA;AAAA9a,WAAA6a,SAAA5a,gBAEFjC,KAAG;KAAA,IAACkC,OAAI;AAAA,aAAEoD,gBAAgB;;KAAAnD,WACvB2L,oBAAQ;MAAA,IAAAyP,UAAA5O,SAAA,EAAA+O,UAAAH,QAAA/a,WAAAE,YAAAA,aAAAkb,UAAAF,QAAAhb,YAAAA,aAAAob,UAAAF,QAAAlb,YAAAA;AAAAob,cAAApb;AAAAV,aAAAub,eAEczP,SAAS1M,IAAEsc,QAAA;AAAA1b,aAAAub,eAC9B5c,mBAAmBmN,SAAS,EAAA8P,QAAA;AAAA5b,aAAAub,eAC5BzP,SAASpI,QAAQuH,aAAa,WAAS6Q,QAAA;AAAA9b,aAAAub,eACvC/b,MAAMyC,qBAAqB6J,SAAS5J,OAAO,EAAA,KAAA;AAAAtB,mBAAAS,UAAAka,SAJlC5b,QAAQ,CAACyN,kBAAiB,CAAA;AAAA,aAAAmO;SAAA;KAMvC,CAAA,EAAA,KAAA;AAAA3a,YAAAC,QAAA;KAAA,IAAAmb,QAzBKrc,QAAQ,CAAC2N,eAAa2O,QACpBtc,QAAQ,CAAC6N,qBAAmB0O,QAG5Bvc,QAAQ,CAAC+N;AAAYsO,eAAAnb,IAAAO,KAAAC,UAAAmZ,SAAA3Z,IAAAO,IAAA4a,MAAA;AAAAC,eAAApb,IAAAS,KAAAD,UAAAoZ,SAAA5Z,IAAAS,IAAA2a,MAAA;AAAAC,eAAArb,IAAAU,KAAAF,UAAAwZ,SAAAha,IAAAU,IAAA2a,MAAA;AAAA,YAAArb;OAAA;KAAAO,GAAAI;KAAAF,GAAAE;KAAAD,GAAAC;KAAA,CAAA;AAAA,WAAAgZ;;GAAA,CAAA,EAAA,KAAA;AAAA5Z,UAAAC,QAAA;GAAA,IAAAsb,QAnM3Bxc,QAAQ,CAACiO,aAAWwO,QAClBzc,QAAQ,CAAC2N,eAAa+O,QACpB1c,QAAQ,CAAC6N,qBAAmB8O,QAC5B3c,QAAQ,CAACyO,cAAYmO,QAsBrB5c,QAAQ,CAACga,uBAAqB6C,QAmDhC7c,QAAQ,CAAC2N,eAAamP,QACpB9c,QAAQ,CAAC6N,qBAAmBkP,QAI9B/c,QAAQ,CAAC2N,eAAaqP,QACpBhd,QAAQ,CAAC6N,qBAAmBoP,QAE1Bjd,QAAQ,CAACgL,WAASkS,QACfld,QAAQ,CAACkL,aAAWiS,QACpBnd,QAAQ,CAACoL,aAAWgS,QAIvBpd,QAAQ,CAACgL,WAASqS,QACfrd,QAAQ,CAACkL,aAAWoS,QACpBtd,QAAQ,CAACoL,aAAWmS,QA4B3Bvd,QAAQ,CAAC2N,eAAa6P,QACpBxd,QAAQ,CAAC6N,qBAAmB4P,QAE1Bzd,QAAQ,CAACgL,WAAS0S,QACf1d,QAAQ,CAACkL,aAAWyS,QAG7BrK,SAAS,CAACvP,QAAQsH,YAAY,QAC1BrL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgB8N,QAMvB5d,QAAQ,CAACgL,WAAS6S,SACf7d,QAAQ,CAACkL,aAAW4S,SACpB9d,QAAQ,CAACoL,aAAW2S,SAIvB/d,QAAQ,CAACgL,WAASgT,SACfhe,QAAQ,CAACkL,aAAW+S,SACpBje,QAAQ,CAACoL,aAAW8S,SAIvBle,QAAQ,CAACgL,WAASmT,SACfne,QAAQ,CAACkL,aAAWkT,SAG7B9K,SAAS,CAACvP,QAAQwH,iBACdvL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgBuO,SAMvBre,QAAQ,CAACgL,WAASsT,SACfte,QAAQ,CAACkL,aAAWqT,SAG7BjL,SAAS,CAACvP,QAAQyH,kBACdxL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgB0O,SAMvBxe,QAAQ,CAACgL,WAASyT,SACfze,QAAQ,CAACkL,aAAWwT,SAG7BpL,SAAS,CAACvP,QAAQ0H,iBAAiB,QAC/BzL,QAAQ,CAAC6P,kBACT7P,QAAQ,CAAC8P,kBAAgB6O,SAMvB3e,QAAQ,CAACgL,WAAS4T,SACf5e,QAAQ,CAACkL,aAAW2T,SACpB7e,QAAQ,CAACoL;AAAWoR,aAAAtb,IAAAO,KAAAC,UAAAoU,SAAA5U,IAAAO,IAAA+a,MAAA;AAAAC,aAAAvb,IAAAS,KAAAD,UAAAsU,SAAA9U,IAAAS,IAAA8a,MAAA;AAAAC,aAAAxb,IAAAU,KAAAF,UAAAuU,SAAA/U,IAAAU,IAAA8a,MAAA;AAAAC,aAAAzb,IAAA8E,KAAAtE,UAAAwU,SAAAhV,IAAA8E,IAAA2W,MAAA;AAAAC,aAAA1b,IAAA+E,KAAAvE,UAAAyU,SAAAjV,IAAA+E,IAAA2W,MAAA;AAAAC,aAAA3b,IAAAgF,KAAAxE,UAAA0U,SAAAlV,IAAAgF,IAAA2W,MAAA;AAAAC,aAAA5b,IAAAiF,KAAAzE,UAAA2U,SAAAnV,IAAAiF,IAAA2W,MAAA;AAAAC,aAAA7b,IAAAkF,KAAA1E,UAAA4U,SAAApV,IAAAkF,IAAA2W,MAAA;AAAAC,aAAA9b,IAAAmF,KAAA3E,UAAA6U,SAAArV,IAAAmF,IAAA2W,MAAA;AAAAC,aAAA/b,IAAAoF,KAAA5E,UAAA+U,SAAAvV,IAAAoF,IAAA2W,MAAA;AAAAC,aAAAhc,IAAAqF,KAAA7E,UAAAgV,SAAAxV,IAAAqF,IAAA2W,MAAA;AAAAC,aAAAjc,IAAAkQ,KAAA1P,UAAAiV,SAAAzV,IAAAkQ,IAAA+L,MAAA;AAAAC,aAAAlc,IAAAmQ,KAAA3P,UAAAkV,SAAA1V,IAAAmQ,IAAA+L,MAAA;AAAAC,aAAAnc,IAAAoQ,KAAA5P,UAAAmV,SAAA3V,IAAAoQ,IAAA+L,MAAA;AAAAC,aAAApc,IAAAqQ,KAAA7P,UAAAoV,SAAA5V,IAAAqQ,IAAA+L,MAAA;AAAAC,aAAArc,IAAAsQ,KAAA9P,UAAAqV,SAAA7V,IAAAsQ,IAAA+L,MAAA;AAAAC,aAAAtc,IAAAuQ,KAAA/P,UAAAsV,SAAA9V,IAAAuQ,IAAA+L,MAAA;AAAAC,aAAAvc,IAAAwQ,KAAAhQ,UAAAwV,SAAAhW,IAAAwQ,IAAA+L,MAAA;AAAAC,aAAAxc,IAAAyQ,KAAAjQ,UAAAyV,SAAAjW,IAAAyQ,IAAA+L,MAAA;AAAAC,aAAAzc,IAAA0Q,KAAAlQ,UAAA0V,SAAAlW,IAAA0Q,IAAA+L,MAAA;AAAAC,aAAA1c,IAAA2Q,KAAAnQ,UAAA2V,SAAAnW,IAAA2Q,IAAA+L,MAAA;AAAAC,cAAA3c,IAAA4Q,KAAApQ,UAAA4V,SAAApW,IAAA4Q,IAAA+L,OAAA;AAAAC,cAAA5c,IAAA6Q,KAAArQ,UAAA6V,SAAArW,IAAA6Q,IAAA+L,OAAA;AAAAC,cAAA7c,IAAA8Q,KAAAtQ,UAAA8V,SAAAtW,IAAA8Q,IAAA+L,OAAA;AAAAC,cAAA9c,IAAA+Q,KAAAvQ,UAAA+V,SAAAvW,IAAA+Q,IAAA+L,OAAA;AAAAC,cAAA/c,IAAAgR,KAAAxQ,UAAAgW,SAAAxW,IAAAgR,IAAA+L,OAAA;AAAAC,cAAAhd,IAAAiR,KAAAzQ,UAAAkW,SAAA1W,IAAAiR,IAAA+L,OAAA;AAAAC,cAAAjd,IAAAkR,KAAA1Q,UAAAmW,SAAA3W,IAAAkR,IAAA+L,OAAA;AAAAC,cAAAld,IAAAmR,KAAA3Q,UAAAoW,SAAA5W,IAAAmR,IAAA+L,OAAA;AAAAC,cAAAnd,IAAAoJ,KAAA5I,UAAAqW,SAAA7W,IAAAoJ,IAAA+T,OAAA;AAAAC,cAAApd,IAAAoR,KAAA5Q,UAAAsW,SAAA9W,IAAAoR,IAAAgM,OAAA;AAAAC,cAAArd,IAAAqR,KAAA7Q,UAAAuW,SAAA/W,IAAAqR,IAAAgM,OAAA;AAAAC,cAAAtd,IAAAsR,KAAA9Q,UAAAwW,SAAAhX,IAAAsR,IAAAgM,OAAA;AAAAC,cAAAvd,IAAAuR,KAAA/Q,UAAAyW,SAAAjX,IAAAuR,IAAAgM,OAAA;AAAAC,cAAAxd,IAAAwR,KAAAhR,UAAA0W,SAAAlX,IAAAwR,IAAAgM,OAAA;AAAAC,cAAAzd,IAAAyR,KAAAjR,UAAA2W,SAAAnX,IAAAyR,IAAAgM,OAAA;AAAAC,cAAA1d,IAAA0R,KAAAlR,UAAA4W,SAAApX,IAAA0R,IAAAgM,OAAA;AAAAC,cAAA3d,IAAA2R,KAAAnR,UAAA6W,SAAArX,IAAA2R,IAAAgM,OAAA;AAAA,UAAA3d;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAAmE,GAAAnE;GAAAoE,GAAApE;GAAAqE,GAAArE;GAAAsE,GAAAtE;GAAAuE,GAAAvE;GAAAwE,GAAAxE;GAAAyE,GAAAzE;GAAA0E,GAAA1E;GAAAuP,GAAAvP;GAAAwP,GAAAxP;GAAAyP,GAAAzP;GAAA0P,GAAA1P;GAAA2P,GAAA3P;GAAA4P,GAAA5P;GAAA6P,GAAA7P;GAAA8P,GAAA9P;GAAA+P,GAAA/P;GAAAgQ,GAAAhQ;GAAAiQ,GAAAjQ;GAAAkQ,GAAAlQ;GAAAmQ,GAAAnQ;GAAAoQ,GAAApQ;GAAAqQ,GAAArQ;GAAAsQ,GAAAtQ;GAAAuQ,GAAAvQ;GAAAwQ,GAAAxQ;GAAAyI,GAAAzI;GAAAyQ,GAAAzQ;GAAA0Q,GAAA1Q;GAAA2Q,GAAA3Q;GAAA4Q,GAAA5Q;GAAA6Q,GAAA7Q;GAAA8Q,GAAA9Q;GAAA+Q,GAAA/Q;GAAAgR,GAAAhR;GAAA,CAAA;AAAA,SAAAiU;KAAA,CAAA;;AAyC/C,SAAgBgJ,aAAajf,OAA0B;CACrD,MAAMG,SAASnB,WAAW;CAC1B,MAAMwU,QAAQvU,yBAAyB;AAEvC,eAAA;EAAA,IAAAigB,UAAA3e,QAAA;AAAAC,SAAA0e,SAAAze,gBAEKhC,MAAI;GAAA,IACHkL,OAAI;AAAA,WAAE3J,MAAMwC,sBAAsB;;GAAA,IAClC2c,WAAQ;AAAA,kBAAA;KAAA,IAAAC,UAAAC,UAAA;AAAAje,kBAAAS,UAAAud,SACMjf,QAAQ,CAACmf,YAAW,CAAA;AAAA,YAAAF;QAAA;;GAAAze,WAKhCwB,QAAG1B,gBACFhC,MAAI;IAAA,IACHkL,OAAI;AAAA,YAAEzH,uBAAuBC,KAAK,CAAC;;IAAA,IACnCgd,WAAQ;AAAA,YAAA1e,gBACL8C,eAAa;MAAA,IACZC,eAAY;AAAA,cAAErB,KAAK;;MACGM;MACdtC;MAAM,CAAA;;IAAA,IAAAQ,WAAA;AAAA,YAAAF,gBAIjB8S,iBAAe;MAAA,IACd/P,eAAY;AAAA,cAAErB,KAAK;;MACZqR;MACe/Q;MACdtC;MAAM,CAAA;;IAAA,CAAA;GAGnB,CAAA,CAAA;AAAAiB,eAAAS,UAAAqd,SA3BO/e,QAAQ,CAACof,aAAY,CAAA;AAAA,SAAAL;KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeldKeysTopbar.js","names":["For","Show","detectPlatform","formatForDisplay","useStyles","useHotkeysDevtoolsState","RegisterableHotkey","HeldKeysBar","styles","state","platform","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$insert","_$createComponent","when","heldKeys","length","fallback","_el$4","_tmpl$2","_$effect","_$className","noKeysHeld","children","each","key","code","heldCodes","label","useSymbols","codeLabel","c","undefined","_el$5","_tmpl$4","_el$6","_$memo","_el$7","_tmpl$3","keyCapCode","keyCap","_p$","_v$","heldKeysBar","_v$2","heldKeysBarHeader","_v$3","heldKeysBarList","e","t","a"],"sources":["../../src/components/HeldKeysTopbar.tsx"],"sourcesContent":["import { For, Show } from 'solid-js'\nimport { detectPlatform, formatForDisplay } from '@tanstack/hotkeys'\nimport { useStyles } from '../styles/use-styles'\nimport { useHotkeysDevtoolsState } from '../HotkeysContextProvider'\nimport type { RegisterableHotkey } from '@tanstack/hotkeys'\n\nexport function HeldKeysBar() {\n const styles = useStyles()\n const state = useHotkeysDevtoolsState()\n const platform = detectPlatform()\n\n return (\n <div class={styles().heldKeysBar}>\n <span class={styles().heldKeysBarHeader}>Held</span>\n <div class={styles().heldKeysBarList}>\n <Show\n when={state.heldKeys().length > 0}\n fallback={<span class={styles().noKeysHeld}>--</span>}\n >\n <For each={state.heldKeys()}>\n {(key) => {\n const code = () => state.heldCodes()[key]\n const label = () =>\n formatForDisplay(key as RegisterableHotkey, {\n platform,\n useSymbols: true,\n })\n const codeLabel = () => {\n const c = code()\n return c || undefined\n }\n return (\n <span class={styles().keyCap}>\n <span>{label()}</span>\n <Show when={codeLabel() && codeLabel() !== key}>\n <span class={styles().keyCapCode}>{codeLabel()}</span>\n </Show>\n </span>\n )\n }}\n </For>\n </Show>\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;AAMA,SAAgBO,cAAc;CAC5B,MAAMC,SAASJ,WAAW;CAC1B,MAAMK,QAAQJ,yBAAyB;CACvC,MAAMK,WAAWR,gBAAgB;AAEjC,eAAA;EAAA,IAAAS,OAAAC,QAAA,EAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAG;AAAAC,SAAAF,OAAAG,gBAIOjB,MAAI;GAAA,IACHkB,OAAI;AAAA,WAAEV,MAAMW,UAAU,CAACC,SAAS;;GAAC,IACjCC,WAAQ;AAAA,kBAAA;KAAA,IAAAC,QAAAC,SAAA;AAAAC,kBAAAC,UAAAH,OAAef,QAAQ,CAACmB,WAAU,CAAA;AAAA,YAAAJ;QAAA;;GAAA,IAAAK,WAAA;AAAA,WAAAV,gBAEzClB,KAAG;KAAA,IAAC6B,OAAI;AAAA,aAAEpB,MAAMW,UAAU;;KAAAQ,WACvBE,QAAQ;MACR,MAAMC,aAAatB,MAAMuB,WAAW,CAACF;MACrC,MAAMG,cACJ9B,iBAAiB2B,KAA2B;OAC1CpB;OACAwB,YAAY;OACb,CAAC;MACJ,MAAMC,kBAAkB;AAEtB,cADUJ,MAAM,IACJM;;AAEd,oBAAA;OAAA,IAAAC,QAAAC,SAAA,EAAAC,QAAAF,MAAAxB;AAAAG,cAAAuB,OAEWP,MAAK;AAAAhB,cAAAqB,OAAApB,gBACXjB,MAAI;QAAA,IAACkB,OAAI;AAAA,gBAAEsB,WAAA,CAAA,CAAAN,WAAW,CAAA,EAAA,IAAIA,WAAW,KAAKL;;QAAG,IAAAF,WAAA;SAAA,IAAAc,QAAAC,SAAA;AAAA1B,gBAAAyB,OACTP,UAAS;AAAAV,sBAAAC,UAAAgB,OAA/BlC,QAAQ,CAACoC,WAAU,CAAA;AAAA,gBAAAF;;QAAA,CAAA,EAAA,KAAA;AAAAjB,oBAAAC,UAAAY,OAHvB9B,QAAQ,CAACqC,OAAM,CAAA;AAAA,cAAAP;UAAA;;KAO/B,CAAA;;GAAA,CAAA,CAAA;AAAAb,UAAAqB,QAAA;GAAA,IAAAC,MA3BGvC,QAAQ,CAACwC,aAAWC,OACjBzC,QAAQ,CAAC0C,mBAAiBC,OAC3B3C,QAAQ,CAAC4C;AAAeL,WAAAD,IAAAO,KAAA3B,UAAAf,MAAAmC,IAAAO,IAAAN,IAAA;AAAAE,YAAAH,IAAAQ,KAAA5B,UAAAb,OAAAiC,IAAAQ,IAAAL,KAAA;AAAAE,YAAAL,IAAAS,KAAA7B,UAAAX,OAAA+B,IAAAS,IAAAJ,KAAA;AAAA,UAAAL;KAAA;GAAAO,GAAAhB;GAAAiB,GAAAjB;GAAAkB,GAAAlB;GAAA,CAAA;AAAA,SAAA1B;KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HotkeyList.js","names":["For","Show","createEffect","createMemo","createSignal","on","clsx","matchSorter","formatForDisplay","useStyles","useHotkeysDevtoolsState","effectiveSequenceMatchedSteps","formatRegistration","getBindingKind","useRegistrationConflicts","SequenceRegistrationView","HotkeyListProps","selectedId","setSelectedId","id","getTargetLabel","target","HTMLElement","Document","Window","document","window","tagName","toLowerCase","getTargetTooltip","tag","parts","Array","push","className","classes","split","filter","Boolean","join","dataAttrs","from","attributes","attr","name","startsWith","map","value","length","buildRowTooltip","meta","description","group","undefined","SequenceListRow","props","reg","getSequences","sequenceProgressNow","styles","sequenceRegistrations","conflicts","targetConflicts","overlapping","scopeConflicts","separate","hasTargetConflict","hasScopeConflict","targetConflictBadge","style","const","label","tooltip","scopeConflictTooltip","enabled","options","liveSequenceReg","find","r","triggerCount","matchedSteps","prevCount","setPrevCount","pulsing","setPulsing","current","setTimeout","metaName","rowTooltip","_el$","_tmpl$4","_el$3","firstChild","_el$4","_el$8","nextSibling","_el$9","_el$0","_el$1","_el$10","_el$11","_el$12","_el$14","_el$13","_el$15","_el$16","$$click","_$insert","_$createComponent","when","children","_el$2","_tmpl$","_$effect","_$className","rowTooltipText","each","sequence","step","i","_el$17","_tmpl$5","_el$18","platform","sequenceStepMatched","_el$5","_tmpl$2","hotkeyLabelName","_el$6","_tmpl$3","_el$7","_c$","_$memo","_el$19","_tmpl$6","_el$20","_p$","_v$10","badge","_v$11","tooltipText","e","t","_c$2","_el$21","_tmpl$7","_el$22","_el$23","_v$12","badgeInfo","_v$13","eventType","_v$","hotkeyRow","hotkeyRowSelected","hotkeyRowTriggered","_v$2","hotkeyLabel","_v$3","hotkeyLabelKeys","_v$4","hotkeyBadges","_v$5","badgeTarget","_v$6","badgeEnabled","badgeDisabled","_v$7","_v$8","badgeKeydown","badgeKeyup","_v$9","_v$0","_v$1","a","o","n","s","h","d","l","HotkeyList","state","searchQuery","setSearchQuery","registrations","filteredRegistrations","query","trim","keys","filteredSequenceRegistrations","_el$24","_tmpl$9","_el$25","$$input","currentTarget","_el$26","_tmpl$8","searchClear","_v$14","searchContainer","_v$15","searchInput","_el$27","_tmpl$0","_el$28","_el$30","_el$29","panelHeader","_el$31","_tmpl$1","_el$37","_el$39","_el$40","_el$44","_el$45","_el$46","_el$47","_el$48","_el$49","_el$50","_el$52","_el$51","_el$53","_el$54","_el$38","_el$41","_el$42","_el$43","_c$3","_el$55","_el$56","_v$27","_v$28","_c$4","_el$57","_el$58","_el$59","_v$29","_v$30","_v$16","_v$17","_v$18","_v$19","_v$20","_v$21","_v$22","_v$23","_v$24","_v$25","_v$26","hotkeyList","_el$32","_tmpl$10","_el$33","_el$35","_el$34","_el$36","_$delegateEvents"],"sources":["../../src/components/HotkeyList.tsx"],"sourcesContent":["import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js'\nimport clsx from 'clsx'\nimport { matchSorter } from 'match-sorter'\nimport { formatForDisplay } from '@tanstack/hotkeys'\nimport { useStyles } from '../styles/use-styles'\nimport { useHotkeysDevtoolsState } from '../HotkeysContextProvider'\nimport { effectiveSequenceMatchedSteps } from '../sequence-progress'\nimport {\n formatRegistration,\n getBindingKind,\n useRegistrationConflicts,\n} from '../_registrations'\nimport type { SequenceRegistrationView } from '@tanstack/hotkeys'\n\ntype HotkeyListProps = {\n selectedId: () => string | null\n setSelectedId: (id: string | null) => void\n}\n\nfunction getTargetLabel(target: HTMLElement | Document | Window): string {\n if (typeof document !== 'undefined' && target === document) {\n return 'document'\n }\n if (typeof window !== 'undefined' && target === window) {\n return 'window'\n }\n if (target instanceof HTMLElement) {\n return target.tagName.toLowerCase()\n }\n return 'element'\n}\n\nfunction getTargetTooltip(target: HTMLElement | Document | Window): string {\n if (typeof document !== 'undefined' && target === document) {\n return 'Listening on document'\n }\n if (typeof window !== 'undefined' && target === window) {\n return 'Listening on window'\n }\n if (target instanceof HTMLElement) {\n const tag = target.tagName.toLowerCase()\n const parts: Array<string> = [tag]\n if (target.id) {\n parts.push(`id=\"${target.id}\"`)\n }\n if (target.className) {\n const classes = target.className.split(/\\s+/).filter(Boolean).join(', ')\n parts.push(`class=\"${classes}\"`)\n }\n // Collect data- attributes\n const dataAttrs = Array.from(target.attributes)\n .filter((attr) => attr.name.startsWith('data-'))\n .map((attr) => `${attr.name}=\"${attr.value}\"`)\n if (dataAttrs.length > 0) {\n parts.push(...dataAttrs)\n }\n return `Listening on ${parts.join(' ')}`\n }\n return 'Listening on element'\n}\n\nfunction buildRowTooltip(meta?: {\n name?: string\n description?: string\n group?: string\n}): string | undefined {\n if (!meta) return undefined\n const parts: Array<string> = []\n if (meta.group) parts.push(meta.group)\n if (meta.name) parts.push(meta.name)\n if (meta.description) parts.push(meta.description)\n return parts.length > 0 ? parts.join(' — ') : undefined\n}\n\nfunction SequenceListRow(props: {\n reg: SequenceRegistrationView\n getSequences: () => Array<SequenceRegistrationView>\n sequenceProgressNow: () => number\n selectedId: () => string | null\n setSelectedId: (id: string | null) => void\n}) {\n const styles = useStyles()\n\n const sequenceRegistrations = () => props.getSequences()\n\n const conflicts = useRegistrationConflicts(() => props.reg)\n const targetConflicts = () => conflicts().overlapping\n const scopeConflicts = () => conflicts().separate\n const hasTargetConflict = () => targetConflicts().length > 0\n const hasScopeConflict = () => scopeConflicts().length > 0\n const targetConflictBadge = () => ({\n style: 'badgeConflict' as const,\n label: '!',\n tooltip: `Potential overlap: ${targetConflicts().length} other bindings on overlapping targets`,\n })\n const scopeConflictTooltip = () =>\n `Info: ${scopeConflicts().length} related bindings on separate targets`\n\n const enabled = () => props.reg.options.enabled !== false\n\n const liveSequenceReg = createMemo(\n () =>\n sequenceRegistrations().find((r) => r.id === props.reg.id) ?? props.reg,\n )\n\n const triggerCount = () =>\n sequenceRegistrations().find((r) => r.id === props.reg.id)?.triggerCount ??\n props.reg.triggerCount\n\n const matchedSteps = createMemo(() =>\n effectiveSequenceMatchedSteps(\n liveSequenceReg(),\n props.sequenceProgressNow(),\n ),\n )\n\n const [prevCount, setPrevCount] = createSignal(props.reg.triggerCount)\n const [pulsing, setPulsing] = createSignal(false)\n\n createEffect(\n on(triggerCount, (current) => {\n if (current > prevCount()) {\n setPulsing(true)\n setTimeout(() => setPulsing(false), 600)\n }\n setPrevCount(current)\n }),\n )\n\n const metaName = () => props.reg.options.meta?.name\n const rowTooltip = () => buildRowTooltip(props.reg.options.meta)\n\n return (\n <div\n class={clsx(\n styles().hotkeyRow,\n props.selectedId() === props.reg.id && styles().hotkeyRowSelected,\n pulsing() && styles().hotkeyRowTriggered,\n rowTooltip() && styles().tooltip,\n )}\n onClick={() => props.setSelectedId(props.reg.id)}\n >\n <Show when={rowTooltip()}>\n <span class={styles().rowTooltipText} data-tooltip>\n {rowTooltip()}\n </span>\n </Show>\n <span class={styles().hotkeyLabel}>\n <span class={styles().hotkeyLabelKeys}>\n <For each={liveSequenceReg().sequence}>\n {(step, i) => (\n <span>\n <Show when={i() > 0}> </Show>\n <span\n class={\n i() < matchedSteps()\n ? styles().sequenceStepMatched\n : undefined\n }\n >\n {formatForDisplay(step, {\n platform: props.reg.options.platform,\n })}\n </span>\n </span>\n )}\n </For>\n </span>\n <Show when={metaName()}>\n <span class={styles().hotkeyLabelName}>{metaName()}</span>\n </Show>\n </span>\n <Show when={triggerCount() > 0}>\n <span class={styles().triggerCount}>x{triggerCount()}</span>\n </Show>\n <div class={styles().hotkeyBadges}>\n <span\n class={clsx(styles().badge, styles().badgeTarget)}\n data-binding-kind\n >\n {getBindingKind(props.reg)}\n </span>\n {hasTargetConflict() && (\n <span\n class={clsx(\n styles().badge,\n styles()[targetConflictBadge().style],\n styles().tooltip,\n )}\n >\n {targetConflictBadge().label}\n <span class={styles().tooltipText} data-tooltip>\n {targetConflictBadge().tooltip}\n </span>\n </span>\n )}\n {hasScopeConflict() && (\n <span\n class={clsx(styles().badge, styles().badgeInfo, styles().tooltip)}\n >\n i\n <span class={styles().tooltipText} data-tooltip>\n {scopeConflictTooltip()}\n </span>\n </span>\n )}\n <span\n class={clsx(\n styles().badge,\n enabled() ? styles().badgeEnabled : styles().badgeDisabled,\n styles().tooltip,\n )}\n >\n {enabled() ? 'on' : 'off'}\n <span class={styles().tooltipText} data-tooltip>\n {enabled() ? 'Sequence is enabled' : 'Sequence is disabled'}\n </span>\n </span>\n <span\n class={clsx(\n styles().badge,\n (props.reg.options.eventType ?? 'keydown') === 'keydown'\n ? styles().badgeKeydown\n : styles().badgeKeyup,\n styles().tooltip,\n )}\n >\n {props.reg.options.eventType ?? 'keydown'}\n <span class={styles().tooltipText} data-tooltip>\n Fires on {props.reg.options.eventType ?? 'keydown'} event\n </span>\n </span>\n <span\n class={clsx(styles().badge, styles().badgeTarget, styles().tooltip)}\n >\n {getTargetLabel(props.reg.target)}\n <span class={styles().tooltipText} data-tooltip>\n {getTargetTooltip(props.reg.target)}\n </span>\n </span>\n </div>\n </div>\n )\n}\n\nexport function HotkeyList(props: HotkeyListProps) {\n const styles = useStyles()\n const state = useHotkeysDevtoolsState()\n\n const [searchQuery, setSearchQuery] = createSignal('')\n\n const registrations = createMemo(() => state.registrations())\n const sequenceRegistrations = createMemo(() => state.sequenceRegistrations())\n\n const filteredRegistrations = createMemo(() => {\n const query = searchQuery().trim()\n if (!query) return registrations()\n return matchSorter(registrations(), query, {\n keys: [\n (r) => formatRegistration(r),\n 'hotkey',\n 'options.meta.name',\n 'options.meta.description',\n 'options.meta.group',\n ],\n })\n })\n\n const filteredSequenceRegistrations = createMemo(() => {\n const query = searchQuery().trim()\n if (!query) return sequenceRegistrations()\n return matchSorter(sequenceRegistrations(), query, {\n keys: [\n (r) => formatRegistration(r),\n (r) => r.sequence.join(' '),\n 'options.meta.name',\n 'options.meta.description',\n 'options.meta.group',\n ],\n })\n })\n\n return (\n <>\n <div class={styles().searchContainer}>\n <input\n type=\"text\"\n class={styles().searchInput}\n placeholder=\"Search hotkeys...\"\n value={searchQuery()}\n onInput={(e) => setSearchQuery(e.currentTarget.value)}\n />\n <Show when={searchQuery()}>\n <button\n class={styles().searchClear}\n onClick={() => setSearchQuery('')}\n >\n &times;\n </button>\n </Show>\n </div>\n\n <div class={styles().panelHeader}>\n Hotkeys ({filteredRegistrations().length})\n </div>\n <div class={styles().hotkeyList}>\n <For each={filteredRegistrations()}>\n {(reg) => {\n const conflicts = useRegistrationConflicts(() => reg)\n const targetConflicts = () => conflicts().overlapping\n const scopeConflicts = () => conflicts().separate\n const hasTargetConflict = () => targetConflicts().length > 0\n const hasScopeConflict = () => scopeConflicts().length > 0\n const targetConflictBadge = () => ({\n style: 'badgeConflict' as const,\n label: '!',\n tooltip: `Potential overlap: ${targetConflicts().length} other bindings on overlapping targets`,\n })\n const scopeConflictTooltip = () =>\n `Info: ${scopeConflicts().length} related bindings on separate targets`\n\n const enabled = () => reg.options.enabled !== false\n\n // Look up trigger count reactively from the registrations list\n // (reg is a stable object ref; the list re-derives on store change)\n const triggerCount = () =>\n registrations().find((r) => r.id === reg.id)?.triggerCount ??\n reg.triggerCount\n\n // Track trigger count changes for pulse animation\n const [prevCount, setPrevCount] = createSignal(reg.triggerCount)\n const [pulsing, setPulsing] = createSignal(false)\n\n createEffect(\n on(triggerCount, (current) => {\n if (current > prevCount()) {\n setPulsing(true)\n setTimeout(() => setPulsing(false), 600)\n }\n setPrevCount(current)\n }),\n )\n\n const metaName = () => reg.options.meta?.name\n const rowTooltip = () => buildRowTooltip(reg.options.meta)\n\n return (\n <div\n class={clsx(\n styles().hotkeyRow,\n props.selectedId() === reg.id && styles().hotkeyRowSelected,\n pulsing() && styles().hotkeyRowTriggered,\n rowTooltip() && styles().tooltip,\n )}\n onClick={() => props.setSelectedId(reg.id)}\n >\n <Show when={rowTooltip()}>\n <span class={styles().rowTooltipText} data-tooltip>\n {rowTooltip()}\n </span>\n </Show>\n <span class={styles().hotkeyLabel}>\n <span class={styles().hotkeyLabelKeys}>\n {formatRegistration(reg)}\n </span>\n <Show when={metaName()}>\n <span class={styles().hotkeyLabelName}>{metaName()}</span>\n </Show>\n </span>\n <Show when={triggerCount() > 0}>\n <span class={styles().triggerCount}>x{triggerCount()}</span>\n </Show>\n <div class={styles().hotkeyBadges}>\n <span\n class={clsx(styles().badge, styles().badgeTarget)}\n data-binding-kind\n >\n {getBindingKind(reg)}\n </span>\n {hasTargetConflict() && (\n <span\n class={clsx(\n styles().badge,\n styles()[targetConflictBadge().style],\n styles().tooltip,\n )}\n >\n {targetConflictBadge().label}\n <span class={styles().tooltipText} data-tooltip>\n {targetConflictBadge().tooltip}\n </span>\n </span>\n )}\n {hasScopeConflict() && (\n <span\n class={clsx(\n styles().badge,\n styles().badgeInfo,\n styles().tooltip,\n )}\n >\n i\n <span class={styles().tooltipText} data-tooltip>\n {scopeConflictTooltip()}\n </span>\n </span>\n )}\n <span\n class={clsx(\n styles().badge,\n enabled()\n ? styles().badgeEnabled\n : styles().badgeDisabled,\n styles().tooltip,\n )}\n >\n {enabled() ? 'on' : 'off'}\n <span class={styles().tooltipText} data-tooltip>\n {enabled() ? 'Hotkey is enabled' : 'Hotkey is disabled'}\n </span>\n </span>\n <span\n class={clsx(\n styles().badge,\n (reg.options.eventType ?? 'keydown') === 'keydown'\n ? styles().badgeKeydown\n : styles().badgeKeyup,\n styles().tooltip,\n )}\n >\n {reg.options.eventType ?? 'keydown'}\n <span class={styles().tooltipText} data-tooltip>\n Fires on {reg.options.eventType ?? 'keydown'} event\n </span>\n </span>\n <span\n class={clsx(\n styles().badge,\n styles().badgeTarget,\n styles().tooltip,\n )}\n >\n {getTargetLabel(reg.target)}\n <span class={styles().tooltipText} data-tooltip>\n {getTargetTooltip(reg.target)}\n </span>\n </span>\n </div>\n </div>\n )\n }}\n </For>\n </div>\n\n <div class={styles().panelHeader}>\n Sequences ({filteredSequenceRegistrations().length})\n </div>\n <div class={styles().hotkeyList}>\n <For each={filteredSequenceRegistrations()}>\n {(reg) => (\n <SequenceListRow\n reg={reg}\n getSequences={sequenceRegistrations}\n sequenceProgressNow={state.sequenceProgressNow}\n selectedId={props.selectedId}\n setSelectedId={props.setSelectedId}\n />\n )}\n </For>\n </div>\n </>\n )\n}\n"],"mappings":"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"}