@rvx/ui 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/common/events.d.ts +8 -26
  2. package/dist/common/events.d.ts.map +1 -1
  3. package/dist/common/events.js +8 -17
  4. package/dist/common/events.js.map +1 -1
  5. package/dist/common/focus-trap.d.ts +2 -0
  6. package/dist/common/focus-trap.d.ts.map +1 -0
  7. package/dist/common/focus-trap.js +96 -0
  8. package/dist/common/focus-trap.js.map +1 -0
  9. package/dist/components/button.d.ts.map +1 -1
  10. package/dist/components/button.js +2 -3
  11. package/dist/components/button.js.map +1 -1
  12. package/dist/components/dropdown.d.ts.map +1 -1
  13. package/dist/components/dropdown.js +35 -42
  14. package/dist/components/dropdown.js.map +1 -1
  15. package/dist/components/layer.d.ts +3 -3
  16. package/dist/components/layer.d.ts.map +1 -1
  17. package/dist/components/layer.js +6 -2
  18. package/dist/components/layer.js.map +1 -1
  19. package/dist/components/link.d.ts.map +1 -1
  20. package/dist/components/link.js +2 -3
  21. package/dist/components/link.js.map +1 -1
  22. package/dist/components/nav-list.d.ts.map +1 -1
  23. package/dist/components/nav-list.js +2 -3
  24. package/dist/components/nav-list.js.map +1 -1
  25. package/dist/components/text-input.d.ts.map +1 -1
  26. package/dist/components/text-input.js +4 -13
  27. package/dist/components/text-input.js.map +1 -1
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -1
  32. package/package.json +2 -2
  33. package/src/common/events.tsx +16 -42
  34. package/src/common/focus-trap.tsx +111 -0
  35. package/src/components/button.tsx +2 -3
  36. package/src/components/dropdown.tsx +29 -42
  37. package/src/components/layer.tsx +9 -5
  38. package/src/components/link.tsx +2 -3
  39. package/src/components/nav-list.tsx +2 -3
  40. package/src/components/text-input.tsx +4 -13
  41. package/src/index.tsx +1 -0
@@ -1,29 +1,11 @@
1
- /**
2
- * Get an identifier for the pressed key including any modifiers.
3
- *
4
- * The identifier is constructed by concatenating the modifies and lower cased key. In addition, the space key is represented as `space` for better readability.
5
- *
6
- * Modifiers in order:
7
- * + `ctrl+`
8
- * + `shift+`
9
- * + `alt+`
10
- * + `meta+`
11
- *
12
- * Examples:
13
- * + `shift+a`
14
- * + `ctrl+shift+space`
15
- *
16
- * @returns The identifier.
17
- *
18
- * @example
19
- * ```tsx
20
- * switch (keyFor(event)) {
21
- * case "enter": ...
22
- * case "ctrl+a": ...
23
- * }
24
- * ```
25
- */
26
- export declare function keyFor(event: KeyboardEvent): string;
1
+ export interface Key {
2
+ key: string;
3
+ meta?: boolean;
4
+ alt?: boolean;
5
+ shift?: boolean;
6
+ ctrl?: boolean;
7
+ }
8
+ export declare function isKey(event: KeyboardEvent, key: string | Key): boolean;
27
9
  /**
28
10
  * A function to run an optionally async user action.
29
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/common/events.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAkBnD;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5G;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAW3G;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,KAAK,SAAM,GAAG,IAAI,CAWtG;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,KAAK,CAEhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAQjG"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/common/events.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,WAS5D;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5G;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAW3G;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,KAAK,SAAM,GAAG,IAAI,CAWtG;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,KAAK,CAEhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAQjG"}
@@ -1,22 +1,13 @@
1
1
  import { TASKS } from "rvx/async";
2
- export function keyFor(event) {
3
- let key = event.key.toLowerCase();
4
- if (key === " ") {
5
- key = "space";
2
+ export function isKey(event, key) {
3
+ if (typeof key === "string") {
4
+ key = { key };
6
5
  }
7
- if (event.metaKey) {
8
- key = "meta+" + key;
9
- }
10
- if (event.altKey) {
11
- key = "alt+" + key;
12
- }
13
- if (event.shiftKey) {
14
- key = "shift+" + key;
15
- }
16
- if (event.ctrlKey) {
17
- key = "ctrl+" + key;
18
- }
19
- return key;
6
+ return event.key.toLowerCase() === key.key
7
+ && event.metaKey === (key.meta ?? false)
8
+ && event.altKey === (key.alt ?? false)
9
+ && event.shiftKey === (key.shift ?? false)
10
+ && event.ctrlKey === (key.ctrl ?? false);
20
11
  }
21
12
  export function handleActionEvent(event, action, ...args) {
22
13
  const result = action(event, ...args);
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/common/events.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/common/events.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAUlC,MAAM,UAAU,KAAK,CAAC,KAAoB,EAAE,GAAiB;IAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG;WACtC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;WACrC,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC;WACnC,KAAK,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;WACvC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;AAC3C,CAAC;AAYD,MAAM,UAAU,iBAAiB,CAAsB,KAAY,EAAE,MAAiB,EAAE,GAAG,IAAO;IACjG,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACjC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAoBD,MAAM,UAAU,6BAA6B,CAAC,KAAiB,EAAE,MAAkB,EAAE,KAAK,GAAG,GAAG;IAC/F,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACxD,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC;AAQD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAO5D,MAAM,UAAU,wBAAwB;IACvC,OAAO,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAC9C,CAAC;AAKD,MAAM,UAAU,aAAa,CAAI,OAAe,EAAE,OAA2B;IAC5E,IAAI,KAAa,CAAC;IAClB,OAAO,KAAK,CAAC,EAAE;QACd,IAAI,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,GAAI,UAAuC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useGlobalFocusTrap(): void;
2
+ //# sourceMappingURL=focus-trap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-trap.d.ts","sourceRoot":"","sources":["../../src/common/focus-trap.tsx"],"names":[],"mappings":"AA8FA,wBAAgB,kBAAkB,SAgBjC"}
@@ -0,0 +1,96 @@
1
+ import { teardown } from "rvx";
2
+ function visible(node) {
3
+ return node.getClientRects().length > 0;
4
+ }
5
+ const SUMMARY = ":scope>summary";
6
+ function filter(node) {
7
+ if (node instanceof HTMLElement) {
8
+ if (node.inert) {
9
+ return NodeFilter.FILTER_REJECT;
10
+ }
11
+ if ((node.tabIndex < 0
12
+ && !node.hasAttribute("tabindex")
13
+ && !node.hasAttribute("contenteditable")
14
+ && !(node.tagName === "DETAILS" && !node.querySelector(SUMMARY))
15
+ && !(node.tagName === "SUMMARY" && node.parentElement.querySelector(SUMMARY) === node)) || node.disabled) {
16
+ return NodeFilter.FILTER_SKIP;
17
+ }
18
+ if (node instanceof HTMLInputElement && node.type === "radio" && !node.checked) {
19
+ for (const other of document.getElementsByName(node.name)) {
20
+ if (other instanceof HTMLInputElement && !other.disabled && other.checked && visible(other)) {
21
+ return NodeFilter.FILTER_SKIP;
22
+ }
23
+ }
24
+ }
25
+ if (visible(node)) {
26
+ return NodeFilter.FILTER_ACCEPT;
27
+ }
28
+ }
29
+ else if (node.tabIndex >= 0 && visible(node)) {
30
+ return NodeFilter.FILTER_ACCEPT;
31
+ }
32
+ return NodeFilter.FILTER_SKIP;
33
+ }
34
+ function createWalker(root) {
35
+ return document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, filter);
36
+ }
37
+ function enable() {
38
+ const walker = createWalker(document.body);
39
+ let lastActive = null;
40
+ const onWindowFocusIn = () => { lastActive = document.activeElement; };
41
+ window.addEventListener("focusin", onWindowFocusIn, { passive: true });
42
+ const delegateFocus = (dir) => {
43
+ if (!lastActive || lastActive === document.body || lastActive === document.documentElement) {
44
+ dir = !dir;
45
+ }
46
+ walker.currentNode = dir ? prefix : suffix;
47
+ const target = dir ? walker.nextNode() : walker.previousNode();
48
+ if (target !== prefix && target !== suffix) {
49
+ target?.focus();
50
+ }
51
+ };
52
+ const createSentinel = (dir) => {
53
+ const node = document.createElement("div");
54
+ node.tabIndex = 0;
55
+ node.style.all = "unset";
56
+ node.addEventListener("focusin", () => delegateFocus(dir), { passive: true });
57
+ return node;
58
+ };
59
+ const prefix = createSentinel(false);
60
+ const suffix = createSentinel(true);
61
+ const observer = new MutationObserver(() => {
62
+ if (document.body.firstElementChild !== prefix) {
63
+ document.body.prepend(prefix);
64
+ }
65
+ if (document.body.lastElementChild !== suffix) {
66
+ document.body.append(suffix);
67
+ }
68
+ });
69
+ observer.observe(document.body, { childList: true });
70
+ return () => {
71
+ observer.disconnect();
72
+ prefix.remove();
73
+ suffix.remove();
74
+ window.removeEventListener("focusin", onWindowFocusIn);
75
+ };
76
+ }
77
+ let current;
78
+ let enabled = 0;
79
+ export function useGlobalFocusTrap() {
80
+ let disposed = false;
81
+ teardown(() => {
82
+ if (!disposed) {
83
+ disposed = true;
84
+ enabled--;
85
+ if (enabled === 0) {
86
+ current();
87
+ current = undefined;
88
+ }
89
+ }
90
+ });
91
+ enabled++;
92
+ if (!current) {
93
+ current = enable();
94
+ }
95
+ }
96
+ //# sourceMappingURL=focus-trap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../../src/common/focus-trap.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAO,UAAU,EAAE,MAAM,KAAK,CAAC;AAG9D,OAAO,EAAE,MAAM,EAA6B,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC7B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CA0CV"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAO,UAAU,EAAE,MAAM,KAAK,CAAC;AAG9D,OAAO,EAAE,MAAM,EAA4B,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC7B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAyCV"}
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { get } from "rvx";
3
3
  import { isPending } from "rvx/async";
4
4
  import { optionalString } from "rvx/convert";
5
- import { handleActionEvent, keyFor } from "../common/events.js";
5
+ import { handleActionEvent, isKey } from "../common/events.js";
6
6
  import { THEME } from "../common/theme.js";
7
7
  export function Button(props) {
8
8
  const theme = THEME.current;
@@ -18,8 +18,7 @@ export function Button(props) {
18
18
  () => theme?.[`button_${get(props.variant) ?? "default"}`],
19
19
  props.class,
20
20
  ], style: props.style, id: props.id, title: props.title, role: props.role, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], "aria-expanded": optionalString(props["aria-expanded"]), "aria-haspopup": props["aria-haspopup"], "aria-controls": props["aria-controls"], "aria-invalid": props.validator ? optionalString(props.validator.invalid) : undefined, "aria-errormessage": props.validator ? props.validator.messageIds : undefined, autofocus: props.autofocus, "on:click": action, "on:keydown": event => {
21
- const key = keyFor(event);
22
- if (key === "enter" || key === "space") {
21
+ if (isKey(event, "enter") || isKey(event, " ")) {
23
22
  action(event);
24
23
  }
25
24
  }, children: props.children });
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAc,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C,MAAM,UAAU,MAAM,CAAC,KAyCtB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,iBACN,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,EACvC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1D,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,EAAE,KAAK,CAAC,IAAI,gBACJ,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,mBAC1B,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,mBACtC,KAAK,CAAC,eAAe,CAAC,mBACtB,KAAK,CAAC,eAAe,CAAC,kBACvB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,uBAChE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC3E,SAAS,EAAE,KAAK,CAAC,SAAS,cAEhB,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACP,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAc,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C,MAAM,UAAU,MAAM,CAAC,KAyCtB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,iBACN,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,EACvC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1D,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,IAAI,EAAE,KAAK,CAAC,IAAI,gBACJ,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,mBAC1B,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,mBACtC,KAAK,CAAC,eAAe,CAAC,mBACtB,KAAK,CAAC,eAAe,CAAC,kBACvB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,uBAChE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC3E,SAAS,EAAE,KAAK,CAAC,SAAS,cAEhB,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACP,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/components/dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAK,UAAU,EAAE,UAAU,EAA+B,UAAU,EAAyB,MAAM,KAAK,CAAC;AAEhH,OAAO,EAAE,MAAM,EAAsF,MAAM,qBAAqB,CAAC;AAGjI,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACrC;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAElC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,mCAAmC;IACnC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CAyLT;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC/B;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAEhD;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAElC,mCAAmC;IACnC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAwBV"}
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/components/dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAK,UAAU,EAAE,UAAU,EAA+B,UAAU,EAAyB,MAAM,KAAK,CAAC;AAEhH,OAAO,EAAE,MAAM,EAAqF,MAAM,qBAAqB,CAAC;AAGhI,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACrC;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAElC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,mCAAmC;IACnC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CA4KT;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,eAAe,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC/B;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAEhD;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAElC,mCAAmC;IACnC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,OAAO,CAwBV"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { $, For, get, map, memo, render, uniqueId, watch } from "rvx";
3
3
  import { optionalString } from "rvx/convert";
4
- import { createPassiveActionEvent, handleActionEvent, keyFor, startDelayedHoverOnMouseenter } from "../common/events.js";
4
+ import { createPassiveActionEvent, handleActionEvent, isKey, startDelayedHoverOnMouseenter } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
6
  import { LAYER } from "./layer.js";
7
7
  import { Popout } from "./popout.js";
@@ -31,55 +31,48 @@ export function createDropdown(props) {
31
31
  layer.useEvent("keydown", event => {
32
32
  const currentItems = items();
33
33
  const current = activeItem.value;
34
- switch (keyFor(event)) {
35
- case "escape": {
34
+ if (isKey(event, "escape")) {
35
+ popout.hide();
36
+ }
37
+ else if (isKey(event, "arrowleft")) {
38
+ if (props.expansion) {
36
39
  popout.hide();
37
- break;
38
40
  }
39
- case "arrowleft": {
40
- if (props.expansion) {
41
- popout.hide();
42
- break;
43
- }
41
+ else {
44
42
  return;
45
43
  }
46
- case "arrowdown": {
47
- activeItem.value = currentItems[(current === undefined ? 0 : (currentItems.indexOf(current) + 1)) % currentItems.length];
48
- scrollToActive();
49
- break;
50
- }
51
- case "arrowup": {
52
- const index = current === undefined ? -1 : (currentItems.indexOf(current) - 1);
53
- activeItem.value = currentItems[index < 0 ? currentItems.length - 1 : index];
54
- scrollToActive();
55
- break;
56
- }
57
- case "arrowright": {
58
- if (current) {
59
- const instance = instances.get(current);
60
- if (instance?.children) {
61
- instance.children.show(instance.view, event);
62
- event.stopImmediatePropagation();
63
- event.preventDefault();
64
- }
44
+ }
45
+ else if (isKey(event, "arrowdown")) {
46
+ activeItem.value = currentItems[(current === undefined ? 0 : (currentItems.indexOf(current) + 1)) % currentItems.length];
47
+ scrollToActive();
48
+ }
49
+ else if (isKey(event, "arrowup")) {
50
+ const index = current === undefined ? -1 : (currentItems.indexOf(current) - 1);
51
+ activeItem.value = currentItems[index < 0 ? currentItems.length - 1 : index];
52
+ scrollToActive();
53
+ }
54
+ else if (isKey(event, "arrowright")) {
55
+ if (current) {
56
+ const instance = instances.get(current);
57
+ if (instance?.children) {
58
+ instance.children.show(instance.view, event);
59
+ event.stopImmediatePropagation();
60
+ event.preventDefault();
65
61
  }
66
- break;
67
62
  }
68
- case "enter": {
69
- if (current?.action && handleActionEvent(event, current.action)) {
70
- popout.hide();
71
- }
72
- else if (current) {
73
- const instance = instances.get(current);
74
- if (instance?.children) {
75
- instance.children.show(instance.view, event);
76
- event.stopImmediatePropagation();
77
- event.preventDefault();
78
- }
63
+ }
64
+ else if (isKey(event, "enter")) {
65
+ if (current?.action && handleActionEvent(event, current.action)) {
66
+ popout.hide();
67
+ }
68
+ else if (current) {
69
+ const instance = instances.get(current);
70
+ if (instance?.children) {
71
+ instance.children.show(instance.view, event);
72
+ event.stopImmediatePropagation();
73
+ event.preventDefault();
79
74
  }
80
- break;
81
75
  }
82
- default: return;
83
76
  }
84
77
  event.stopImmediatePropagation();
85
78
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/components/dropdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/components/dropdown.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Component, Context, Expression } from "rvx";
2
- import { Action } from "../common/events.js";
2
+ import { Action, Key } from "../common/events.js";
3
3
  export declare const LAYER: Context<LayerHandle | undefined>;
4
4
  /**
5
5
  * Render content inside the root layer.
@@ -56,9 +56,9 @@ export interface LayerHandle {
56
56
  useEvent<K extends keyof WindowEventMap>(type: K, listener: (event: WindowEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
57
57
  useEvent(type: string, listener: (event: Event) => void, options?: boolean | AddEventListenerOptions): void;
58
58
  /**
59
- * Shorthand for adding a global "keydown" event listener using {@link useEvent} and {@link keyFor}.
59
+ * Shorthand for adding a global "keydown" event listener using {@link useEvent}.
60
60
  */
61
- useHotkey(key: string, action: Action): void;
61
+ useHotkey(key: string | Key, action: Action): void;
62
62
  /**
63
63
  * Check if this layer contains the specified node.
64
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAK,SAAS,EAAE,OAAO,EAAE,UAAU,EAAkE,MAAM,KAAK,CAAC;AAExH,OAAO,EAAE,MAAM,EAA6B,MAAM,qBAAqB,CAAC;AAaxE,eAAO,MAAM,KAAK,kCAAyC,CAAC;AA6C5D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAChC,QAAQ,EAAE,SAAS,CAAC;CACpB,GAAG,OAAO,CAEV;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACpB,GAAG,OAAO,CAEV;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC5B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,OAAO,CA0EV;AAED,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC;IAErB;;OAEG;IACH,IAAI,GAAG,IAAI,OAAO,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAAC;IACnJ,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAAC;IAE5G;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAE5D;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC"}
1
+ {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAK,SAAS,EAAE,OAAO,EAAE,UAAU,EAAkE,MAAM,KAAK,CAAC;AACxH,OAAO,EAAE,MAAM,EAA4B,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAc5E,eAAO,MAAM,KAAK,kCAAyC,CAAC;AA6C5D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAChC,QAAQ,EAAE,SAAS,CAAC;CACpB,GAAG,OAAO,CAEV;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACpB,GAAG,OAAO,CAEV;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC5B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,OAAO,CA8EV;AAED,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC;IAErB;;OAEG;IACH,IAAI,GAAG,IAAI,OAAO,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAAC;IACnJ,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAAC;IAE5G;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAE5D;;;;OAIG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { $, Context, get, Inject, memo, teardown, uncapture, untrack, watch } from "rvx";
3
- import { handleActionEvent, keyFor } from "../common/events.js";
3
+ import { handleActionEvent, isKey } from "../common/events.js";
4
+ import { useGlobalFocusTrap } from "../common/focus-trap.js";
4
5
  export const LAYER = new Context();
5
6
  const LAYERS = $([
6
7
  {
@@ -46,6 +47,9 @@ export function Layer(props) {
46
47
  inert: $(false),
47
48
  autoFocusFallback: undefined,
48
49
  };
50
+ if (props.modal) {
51
+ useGlobalFocusTrap();
52
+ }
49
53
  const enabled = memo(() => Boolean(get(props.enabled) ?? true));
50
54
  watch(enabled, enable => {
51
55
  if (!enable) {
@@ -141,7 +145,7 @@ class Handle {
141
145
  }
142
146
  useHotkey(key, action) {
143
147
  this.useEvent("keydown", event => {
144
- if (keyFor(event) === key) {
148
+ if (isKey(event, key)) {
145
149
  handleActionEvent(event, action);
146
150
  }
147
151
  });
@@ -1 +1 @@
1
- {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,MAAM,EAA6B,MAAM,qBAAqB,CAAC;AAGxE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,4BAA4B,GAAG,QAAQ,GAAG,0BAA0B,GAAG,aAAa,GAAG,eAAe,GAAG,iCAAiC,GAAG,YAAY,CAAC;AAE3M;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,kBAAkB,CAAC;AAE1O,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;AAExF,wBAAgB,IAAI,CAAC,KAAK,EAAE;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAEpD;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE1C;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3D;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAE5D;;;;OAIG;IACH,GAAG,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IAE9D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CA4CV"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,MAAM,EAA4B,MAAM,qBAAqB,CAAC;AAGvE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,4BAA4B,GAAG,QAAQ,GAAG,0BAA0B,GAAG,aAAa,GAAG,eAAe,GAAG,iCAAiC,GAAG,YAAY,CAAC;AAE3M;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,kBAAkB,CAAC;AAE1O,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;AAExF,wBAAgB,IAAI,CAAC,KAAK,EAAE;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAEpD;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE1C;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3D;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAE5D;;;;OAIG;IACH,GAAG,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IAE9D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CA2CV"}
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { get, map } from "rvx";
3
3
  import { isPending } from "rvx/async";
4
4
  import { optionalString, separated } from "rvx/convert";
5
- import { handleActionEvent, keyFor } from "../common/events.js";
5
+ import { handleActionEvent, isKey } from "../common/events.js";
6
6
  import { THEME } from "../common/theme.js";
7
7
  export function Link(props) {
8
8
  const theme = THEME.current;
@@ -17,8 +17,7 @@ export function Link(props) {
17
17
  theme?.link,
18
18
  props.class,
19
19
  ], style: props.style, id: props.id, "aria-expanded": optionalString(props["aria-expanded"]), "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], title: props.title, autofocus: props.autofocus, role: props.action === undefined ? undefined : "button", tabindex: "0", download: props.download, href: props.href, hreflang: props.hreflang, target: props.target, referrerpolicy: map(props.referrerpolicy, v => v ?? "no-referrer"), rel: separated(map(props.rel, v => v ?? "noreferrer"), " "), "on:click": action, "on:keydown": event => {
20
- const key = keyFor(event);
21
- if (key === "enter" || key === "space") {
20
+ if (isKey(event, "enter") || isKey(event, " ")) {
22
21
  action(event);
23
22
  }
24
23
  }, children: props.children });
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAW3C,MAAM,UAAU,IAAI,CAAC,KAyDpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YACN,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,mBACG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,gBACzC,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACvD,QAAQ,EAAC,GAAG,EAEZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAClE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,cAEjD,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACZ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAW3C,MAAM,UAAU,IAAI,CAAC,KAyDpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YACN,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,mBACG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,gBACzC,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACvD,QAAQ,EAAC,GAAG,EAEZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAClE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,cAEjD,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACZ,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nav-list.d.ts","sourceRoot":"","sources":["../../src/components/nav-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,MAAM,EAA6B,MAAM,qBAAqB,CAAC;AAGxE,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAE9C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAgBV;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE1C,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAgCV"}
1
+ {"version":3,"file":"nav-list.d.ts","sourceRoot":"","sources":["../../src/components/nav-list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,KAAK,CAAC;AAGnE,OAAO,EAAE,MAAM,EAA4B,MAAM,qBAAqB,CAAC;AAGvE,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAE9C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAgBV;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE1C,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CA+BV"}
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { get, map } from "rvx";
3
3
  import { isPending } from "rvx/async";
4
4
  import { optionalString } from "rvx/convert";
5
- import { handleActionEvent, keyFor } from "../common/events.js";
5
+ import { handleActionEvent, isKey } from "../common/events.js";
6
6
  import { THEME } from "../common/theme.js";
7
7
  export function NavList(props) {
8
8
  const theme = THEME.current;
@@ -28,8 +28,7 @@ export function NavListButton(props) {
28
28
  map(props.current, current => current && theme?.nav_list_item_current),
29
29
  props.class,
30
30
  ], style: props.style, id: props.id, "on:click": action, "on:keydown": event => {
31
- const key = keyFor(event);
32
- if (key === "enter" || key === "space") {
31
+ if (isKey(event, "enter") || isKey(event, " ")) {
33
32
  action(event);
34
33
  }
35
34
  }, "aria-current": optionalString(props.current), children: props.children });
@@ -1 +1 @@
1
- {"version":3,"file":"nav-list.js","sourceRoot":"","sources":["../../src/components/nav-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,OAAO,CAAC,KAYvB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,cACN,KAAK,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE;YACN,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;YACjC,KAAK,CAAC,KAAK;SACX,EACD,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,YAElD,KAAK,CAAC,QAAQ,GACV,CAAC;AACR,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAY7B;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,iBACN,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,EAAE,qBAAqB,CAAC;YACtE,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,cACF,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,kBACa,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,YAE1C,KAAK,CAAC,QAAQ,GACP,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"nav-list.js","sourceRoot":"","sources":["../../src/components/nav-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,OAAO,CAAC,KAYvB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,cACN,KAAK,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE;YACN,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;YACjC,KAAK,CAAC,KAAK;SACX,EACD,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,YAElD,KAAK,CAAC,QAAQ,GACV,CAAC;AACR,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAY7B;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,iBACN,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,aAAa;YACpB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,EAAE,qBAAqB,CAAC;YACtE,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,cACF,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,kBACa,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,YAE1C,KAAK,CAAC,QAAQ,GACP,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"text-input.d.ts","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,KAAK,CAAC;AAOtE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,wBAAgB,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CAC7C,GAAG;IACH;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CAC5C,CAAC,GAAG;IACJ;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD,GAAG,OAAO,CAmDV"}
1
+ {"version":3,"file":"text-input.d.ts","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,KAAK,CAAC;AAOtE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,wBAAgB,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAElB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CAC7C,GAAG;IACH;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CAC5C,CAAC,GAAG;IACJ;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE3C;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD,GAAG,OAAO,CA0CV"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { get, Signal } from "rvx";
3
- import { isPending, TASKS } from "rvx/async";
3
+ import { isPending } from "rvx/async";
4
4
  import { optionalString } from "rvx/convert";
5
- import { keyFor } from "../common/events.js";
5
+ import { handleActionEvent, isKey } from "../common/events.js";
6
6
  import { THEME } from "../common/theme.js";
7
7
  import { closestValidator } from "./validation.js";
8
8
  export function TextInput(props) {
@@ -18,17 +18,8 @@ export function TextInput(props) {
18
18
  props.value.value = input.value;
19
19
  }
20
20
  }, "on:keydown": event => {
21
- const key = keyFor(event);
22
- if (key === "enter" && props.enterAction && !disabled()) {
23
- const result = props.enterAction(event);
24
- if (result === false) {
25
- return;
26
- }
27
- event.preventDefault();
28
- event.stopImmediatePropagation();
29
- if (result instanceof Promise) {
30
- TASKS.current?.waitFor(result);
31
- }
21
+ if (isKey(event, "enter") && props.enterAction && !disabled()) {
22
+ handleActionEvent(event, props.enterAction);
32
23
  }
33
24
  }, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], "aria-invalid": validator ? optionalString(validator.invalid) : undefined, "aria-errormessage": validator ? validator.messageIds : undefined });
34
25
  return input;
@@ -1 +1 @@
1
- {"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,MAAM,EAAc,MAAM,KAAK,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKnD,MAAM,UAAU,SAAS,CAAC,KAuDzB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,MAAM,KAAK,GAAG,KAAC,QAAQ,IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EACrE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC9C,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC9C,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,MAAM,CAAC,gBAE9B,KAAK,CAAC,KAAK,cACb,GAAG,EAAE;YACd,IAAI,KAAK,CAAC,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACjC,CAAC;QACF,CAAC,gBACW,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC/D,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC,gBAEW,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,kBAE3B,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,uBACpD,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,GAC1C,CAAC;IAEvB,OAAO,KAAK,CAAC;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./common/context.js";
2
2
  export * from "./common/coupling.js";
3
3
  export * from "./common/events.js";
4
+ export * from "./common/focus-trap.js";
4
5
  export * from "./common/theme.js";
5
6
  export * from "./common/types.js";
6
7
  export * from "./common/writing-mode.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./common/context.js";
2
2
  export * from "./common/coupling.js";
3
3
  export * from "./common/events.js";
4
+ export * from "./common/focus-trap.js";
4
5
  export * from "./common/theme.js";
5
6
  export * from "./common/types.js";
6
7
  export * from "./common/writing-mode.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "rvx"
13
13
  ],
14
14
  "license": "MIT",
15
- "version": "0.2.0",
15
+ "version": "0.3.1",
16
16
  "type": "module",
17
17
  "main": "./dist/index.js",
18
18
  "sideEffects": false,
@@ -28,6 +28,6 @@
28
28
  "./dist/": "./dist/"
29
29
  },
30
30
  "peerDependencies": {
31
- "rvx": "^23.0.0"
31
+ "rvx": "^24.0.0"
32
32
  }
33
33
  }
@@ -1,48 +1,22 @@
1
1
  import { TASKS } from "rvx/async";
2
2
 
3
- /**
4
- * Get an identifier for the pressed key including any modifiers.
5
- *
6
- * The identifier is constructed by concatenating the modifies and lower cased key. In addition, the space key is represented as `space` for better readability.
7
- *
8
- * Modifiers in order:
9
- * + `ctrl+`
10
- * + `shift+`
11
- * + `alt+`
12
- * + `meta+`
13
- *
14
- * Examples:
15
- * + `shift+a`
16
- * + `ctrl+shift+space`
17
- *
18
- * @returns The identifier.
19
- *
20
- * @example
21
- * ```tsx
22
- * switch (keyFor(event)) {
23
- * case "enter": ...
24
- * case "ctrl+a": ...
25
- * }
26
- * ```
27
- */
28
- export function keyFor(event: KeyboardEvent): string {
29
- let key = event.key.toLowerCase();
30
- if (key === " ") {
31
- key = "space";
32
- }
33
- if (event.metaKey) {
34
- key = "meta+" + key;
35
- }
36
- if (event.altKey) {
37
- key = "alt+" + key;
38
- }
39
- if (event.shiftKey) {
40
- key = "shift+" + key;
41
- }
42
- if (event.ctrlKey) {
43
- key = "ctrl+" + key;
3
+ export interface Key {
4
+ key: string;
5
+ meta?: boolean;
6
+ alt?: boolean;
7
+ shift?: boolean;
8
+ ctrl?: boolean;
9
+ }
10
+
11
+ export function isKey(event: KeyboardEvent, key: string | Key) {
12
+ if (typeof key === "string") {
13
+ key = { key };
44
14
  }
45
- return key;
15
+ return event.key.toLowerCase() === key.key
16
+ && event.metaKey === (key.meta ?? false)
17
+ && event.altKey === (key.alt ?? false)
18
+ && event.shiftKey === (key.shift ?? false)
19
+ && event.ctrlKey === (key.ctrl ?? false);
46
20
  }
47
21
 
48
22
  /**
@@ -0,0 +1,111 @@
1
+ import { teardown, TeardownHook } from "rvx";
2
+
3
+ function visible(node: Element) {
4
+ return node.getClientRects().length > 0;
5
+ }
6
+
7
+ const SUMMARY = ":scope>summary";
8
+
9
+ function filter(node: Element): number {
10
+ type Input = HTMLInputElement;
11
+ if (node instanceof HTMLElement) {
12
+ if (node.inert) {
13
+ return NodeFilter.FILTER_REJECT;
14
+ }
15
+ if (
16
+ (
17
+ node.tabIndex < 0
18
+ && !node.hasAttribute("tabindex")
19
+ && !node.hasAttribute("contenteditable")
20
+ && !(node.tagName === "DETAILS" && !node.querySelector(SUMMARY))
21
+ && !(node.tagName === "SUMMARY" && node.parentElement!.querySelector(SUMMARY) === node)
22
+ ) || (node as Input).disabled
23
+ ) {
24
+ return NodeFilter.FILTER_SKIP;
25
+ }
26
+ if (node instanceof HTMLInputElement && node.type === "radio" && !node.checked) {
27
+ for (const other of document.getElementsByName(node.name)) {
28
+ if (other instanceof HTMLInputElement && !other.disabled && other.checked && visible(other)) {
29
+ return NodeFilter.FILTER_SKIP;
30
+ }
31
+ }
32
+ }
33
+ if (visible(node)) {
34
+ return NodeFilter.FILTER_ACCEPT;
35
+ }
36
+ } else if ((node as HTMLElement).tabIndex >= 0 && visible(node)) {
37
+ return NodeFilter.FILTER_ACCEPT;
38
+ }
39
+ return NodeFilter.FILTER_SKIP;
40
+ }
41
+
42
+ function createWalker(root: Node) {
43
+ return document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, filter as NodeFilter);
44
+ }
45
+
46
+ function enable() {
47
+ const walker = createWalker(document.body);
48
+
49
+ let lastActive: Element | null = null;
50
+ const onWindowFocusIn = () => { lastActive = document.activeElement };
51
+ window.addEventListener("focusin", onWindowFocusIn, { passive: true });
52
+
53
+ const delegateFocus = (dir: boolean) => {
54
+ if (!lastActive || lastActive === document.body || lastActive === document.documentElement) {
55
+ dir = !dir;
56
+ }
57
+ walker.currentNode = dir ? prefix : suffix;
58
+ const target = dir ? walker.nextNode() : walker.previousNode();
59
+ if (target !== prefix && target !== suffix) {
60
+ (target as HTMLElement | null)?.focus();
61
+ }
62
+ };
63
+
64
+ const createSentinel = (dir: boolean) => {
65
+ const node = document.createElement("div");
66
+ node.tabIndex = 0;
67
+ node.style.all = "unset";
68
+ node.addEventListener("focusin", () => delegateFocus(dir), { passive: true });
69
+ return node;
70
+ };
71
+
72
+ const prefix = createSentinel(false);
73
+ const suffix = createSentinel(true);
74
+ const observer = new MutationObserver(() => {
75
+ if (document.body.firstElementChild !== prefix) {
76
+ document.body.prepend(prefix);
77
+ }
78
+ if (document.body.lastElementChild !== suffix) {
79
+ document.body.append(suffix);
80
+ }
81
+ });
82
+ observer.observe(document.body, { childList: true });
83
+
84
+ return () => {
85
+ observer.disconnect();
86
+ prefix.remove();
87
+ suffix.remove();
88
+ window.removeEventListener("focusin", onWindowFocusIn);
89
+ };
90
+ }
91
+
92
+ let current: TeardownHook | undefined;
93
+ let enabled = 0;
94
+
95
+ export function useGlobalFocusTrap() {
96
+ let disposed = false;
97
+ teardown(() => {
98
+ if (!disposed) {
99
+ disposed = true;
100
+ enabled--;
101
+ if (enabled === 0) {
102
+ current!();
103
+ current = undefined;
104
+ }
105
+ }
106
+ });
107
+ enabled++;
108
+ if (!current) {
109
+ current = enable();
110
+ }
111
+ }
@@ -1,7 +1,7 @@
1
1
  import { ClassValue, Expression, get, StyleValue } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
3
  import { optionalString } from "rvx/convert";
4
- import { Action, handleActionEvent, keyFor } from "../common/events.js";
4
+ import { Action, handleActionEvent, isKey } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
6
  import { Validator } from "./validation.js";
7
7
 
@@ -83,8 +83,7 @@ export function Button(props: {
83
83
 
84
84
  on:click={action}
85
85
  on:keydown={event => {
86
- const key = keyFor(event);
87
- if (key === "enter" || key === "space") {
86
+ if (isKey(event, "enter") || isKey(event, " ")) {
88
87
  action(event);
89
88
  }
90
89
  }}
@@ -1,6 +1,6 @@
1
1
  import { $, ClassValue, Expression, For, get, map, memo, render, StyleValue, uniqueId, View, watch } from "rvx";
2
2
  import { optionalString } from "rvx/convert";
3
- import { Action, createPassiveActionEvent, handleActionEvent, keyFor, startDelayedHoverOnMouseenter } from "../common/events.js";
3
+ import { Action, createPassiveActionEvent, handleActionEvent, isKey, startDelayedHoverOnMouseenter } from "../common/events.js";
4
4
  import { THEME } from "../common/theme.js";
5
5
  import { LAYER } from "./layer.js";
6
6
  import { Popout, PopoutAlignment, PopoutPlacement } from "./popout.js";
@@ -118,54 +118,41 @@ export function createDropdown(props: {
118
118
  layer.useEvent("keydown", event => {
119
119
  const currentItems = items();
120
120
  const current = activeItem.value;
121
- switch (keyFor(event)) {
122
- case "escape": {
121
+ if (isKey(event, "escape")) {
122
+ popout.hide();
123
+ } else if (isKey(event, "arrowleft")) {
124
+ if (props.expansion) {
123
125
  popout.hide();
124
- break;
125
- }
126
- case "arrowleft": {
127
- if (props.expansion) {
128
- popout.hide();
129
- break;
130
- }
126
+ } else {
131
127
  return;
132
128
  }
133
- case "arrowdown": {
134
- activeItem.value = currentItems[(current === undefined ? 0 : (currentItems.indexOf(current) + 1)) % currentItems.length];
135
- scrollToActive();
136
- break;
137
- }
138
- case "arrowup": {
139
- const index = current === undefined ? -1 : (currentItems.indexOf(current) - 1);
140
- activeItem.value = currentItems[index < 0 ? currentItems.length - 1 : index];
141
- scrollToActive();
142
- break;
143
- }
144
- case "arrowright": {
145
- if (current) {
146
- const instance = instances.get(current);
147
- if (instance?.children) {
148
- instance.children.show(instance.view, event);
149
- event.stopImmediatePropagation();
150
- event.preventDefault();
151
- }
129
+ } else if (isKey(event, "arrowdown")) {
130
+ activeItem.value = currentItems[(current === undefined ? 0 : (currentItems.indexOf(current) + 1)) % currentItems.length];
131
+ scrollToActive();
132
+ } else if (isKey(event, "arrowup")) {
133
+ const index = current === undefined ? -1 : (currentItems.indexOf(current) - 1);
134
+ activeItem.value = currentItems[index < 0 ? currentItems.length - 1 : index];
135
+ scrollToActive();
136
+ } else if (isKey(event, "arrowright")) {
137
+ if (current) {
138
+ const instance = instances.get(current);
139
+ if (instance?.children) {
140
+ instance.children.show(instance.view, event);
141
+ event.stopImmediatePropagation();
142
+ event.preventDefault();
152
143
  }
153
- break;
154
144
  }
155
- case "enter": {
156
- if (current?.action && handleActionEvent(event, current.action)) {
157
- popout.hide();
158
- } else if (current) {
159
- const instance = instances.get(current);
160
- if (instance?.children) {
161
- instance.children.show(instance.view, event);
162
- event.stopImmediatePropagation();
163
- event.preventDefault();
164
- }
145
+ } else if (isKey(event, "enter")) {
146
+ if (current?.action && handleActionEvent(event, current.action)) {
147
+ popout.hide();
148
+ } else if (current) {
149
+ const instance = instances.get(current);
150
+ if (instance?.children) {
151
+ instance.children.show(instance.view, event);
152
+ event.stopImmediatePropagation();
153
+ event.preventDefault();
165
154
  }
166
- break;
167
155
  }
168
- default: return;
169
156
  }
170
157
  event.stopImmediatePropagation();
171
158
  event.preventDefault();
@@ -1,6 +1,6 @@
1
1
  import { $, Component, Context, Expression, get, Inject, memo, Signal, teardown, uncapture, untrack, watch } from "rvx";
2
-
3
- import { Action, handleActionEvent, keyFor } from "../common/events.js";
2
+ import { Action, handleActionEvent, isKey, Key } from "../common/events.js";
3
+ import { useGlobalFocusTrap } from "../common/focus-trap.js";
4
4
 
5
5
  interface LayerInstance {
6
6
  /** The root nodes of this layer. */
@@ -105,6 +105,10 @@ export function Layer(props: {
105
105
  autoFocusFallback: undefined,
106
106
  };
107
107
 
108
+ if (props.modal) {
109
+ useGlobalFocusTrap();
110
+ }
111
+
108
112
  const enabled = memo(() => Boolean(get(props.enabled) ?? true));
109
113
  watch(enabled, enable => {
110
114
  if (!enable) {
@@ -199,9 +203,9 @@ export interface LayerHandle {
199
203
  useEvent(type: string, listener: (event: Event) => void, options?: boolean | AddEventListenerOptions): void;
200
204
 
201
205
  /**
202
- * Shorthand for adding a global "keydown" event listener using {@link useEvent} and {@link keyFor}.
206
+ * Shorthand for adding a global "keydown" event listener using {@link useEvent}.
203
207
  */
204
- useHotkey(key: string, action: Action): void;
208
+ useHotkey(key: string | Key, action: Action): void;
205
209
 
206
210
  /**
207
211
  * Check if this layer contains the specified node.
@@ -286,7 +290,7 @@ class Handle implements LayerHandle {
286
290
 
287
291
  useHotkey(key: string, action: Action): void {
288
292
  this.useEvent("keydown", event => {
289
- if (keyFor(event) === key) {
293
+ if (isKey(event, key)) {
290
294
  handleActionEvent(event, action);
291
295
  }
292
296
  });
@@ -1,7 +1,7 @@
1
1
  import { ClassValue, Expression, get, map, StyleValue } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
3
  import { optionalString, separated } from "rvx/convert";
4
- import { Action, handleActionEvent, keyFor } from "../common/events.js";
4
+ import { Action, handleActionEvent, isKey } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
6
 
7
7
  export type LinkReferrerPolicy = "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
@@ -106,8 +106,7 @@ export function Link(props: {
106
106
 
107
107
  on:click={action}
108
108
  on:keydown={event => {
109
- const key = keyFor(event);
110
- if (key === "enter" || key === "space") {
109
+ if (isKey(event, "enter") || isKey(event, " ")) {
111
110
  action(event);
112
111
  }
113
112
  }}
@@ -1,7 +1,7 @@
1
1
  import { ClassValue, Expression, get, map, StyleValue } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
3
  import { optionalString } from "rvx/convert";
4
- import { Action, handleActionEvent, keyFor } from "../common/events.js";
4
+ import { Action, handleActionEvent, isKey } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
6
 
7
7
  export function NavList(props: {
@@ -69,8 +69,7 @@ export function NavListButton(props: {
69
69
  id={props.id}
70
70
  on:click={action}
71
71
  on:keydown={event => {
72
- const key = keyFor(event);
73
- if (key === "enter" || key === "space") {
72
+ if (isKey(event, "enter") || isKey(event, " ")) {
74
73
  action(event);
75
74
  }
76
75
  }}
@@ -1,7 +1,7 @@
1
1
  import { ClassValue, Expression, get, Signal, StyleValue } from "rvx";
2
- import { isPending, TASKS } from "rvx/async";
2
+ import { isPending } from "rvx/async";
3
3
  import { optionalString } from "rvx/convert";
4
- import { keyFor } from "../common/events.js";
4
+ import { handleActionEvent, isKey } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
6
  import { closestValidator } from "./validation.js";
7
7
 
@@ -92,17 +92,8 @@ export function TextInput(props: ({
92
92
  }
93
93
  }}
94
94
  on:keydown={event => {
95
- const key = keyFor(event);
96
- if (key === "enter" && props.enterAction && !disabled()) {
97
- const result = props.enterAction(event);
98
- if (result === false) {
99
- return;
100
- }
101
- event.preventDefault();
102
- event.stopImmediatePropagation();
103
- if (result instanceof Promise) {
104
- TASKS.current?.waitFor(result);
105
- }
95
+ if (isKey(event, "enter") && props.enterAction && !disabled()) {
96
+ handleActionEvent(event, props.enterAction);
106
97
  }
107
98
  }}
108
99
 
package/src/index.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./common/context.js";
2
2
  export * from "./common/coupling.js";
3
3
  export * from "./common/events.js";
4
+ export * from "./common/focus-trap.js";
4
5
  export * from "./common/theme.js";
5
6
  export * from "./common/types.js";
6
7
  export * from "./common/writing-mode.js";