@ghia/native 0.0.0-stage → 0.11.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 (212) hide show
  1. package/LICENSE +201 -0
  2. package/browser.mjs +7 -0
  3. package/dist/aria.d.ts +72 -0
  4. package/dist/aria.d.ts.map +1 -0
  5. package/dist/aria.js +2 -0
  6. package/dist/aria.js.map +1 -0
  7. package/dist/automation/client.d.ts +243 -0
  8. package/dist/automation/client.d.ts.map +1 -0
  9. package/dist/automation/client.js +801 -0
  10. package/dist/automation/client.js.map +1 -0
  11. package/dist/automation/index.d.ts +5 -0
  12. package/dist/automation/index.d.ts.map +1 -0
  13. package/dist/automation/index.js +4 -0
  14. package/dist/automation/index.js.map +1 -0
  15. package/dist/automation/protocol.d.ts +309 -0
  16. package/dist/automation/protocol.d.ts.map +1 -0
  17. package/dist/automation/protocol.js +320 -0
  18. package/dist/automation/protocol.js.map +1 -0
  19. package/dist/blob-images.d.ts +32 -0
  20. package/dist/blob-images.d.ts.map +1 -0
  21. package/dist/blob-images.js +55 -0
  22. package/dist/blob-images.js.map +1 -0
  23. package/dist/bounds.d.ts +61 -0
  24. package/dist/bounds.d.ts.map +1 -0
  25. package/dist/bounds.js +85 -0
  26. package/dist/bounds.js.map +1 -0
  27. package/dist/clipboard-global.d.ts +11 -0
  28. package/dist/clipboard-global.d.ts.map +1 -0
  29. package/dist/clipboard-global.js +2 -0
  30. package/dist/clipboard-global.js.map +1 -0
  31. package/dist/clipboard.d.ts +19 -0
  32. package/dist/clipboard.d.ts.map +1 -0
  33. package/dist/clipboard.js +41 -0
  34. package/dist/clipboard.js.map +1 -0
  35. package/dist/cpu-throttle.d.ts +6 -0
  36. package/dist/cpu-throttle.d.ts.map +1 -0
  37. package/dist/cpu-throttle.js +42 -0
  38. package/dist/cpu-throttle.js.map +1 -0
  39. package/dist/events/data-transfer.d.ts +23 -0
  40. package/dist/events/data-transfer.d.ts.map +1 -0
  41. package/dist/events/data-transfer.js +97 -0
  42. package/dist/events/data-transfer.js.map +1 -0
  43. package/dist/events/dispatch.d.ts +144 -0
  44. package/dist/events/dispatch.d.ts.map +1 -0
  45. package/dist/events/dispatch.js +241 -0
  46. package/dist/events/dispatch.js.map +1 -0
  47. package/dist/events/drag.d.ts +21 -0
  48. package/dist/events/drag.d.ts.map +1 -0
  49. package/dist/events/drag.js +111 -0
  50. package/dist/events/drag.js.map +1 -0
  51. package/dist/events/event-props.d.ts +19 -0
  52. package/dist/events/event-props.d.ts.map +1 -0
  53. package/dist/events/event-props.js +104 -0
  54. package/dist/events/event-props.js.map +1 -0
  55. package/dist/events/keyboard-defaults.d.ts +18 -0
  56. package/dist/events/keyboard-defaults.d.ts.map +1 -0
  57. package/dist/events/keyboard-defaults.js +121 -0
  58. package/dist/events/keyboard-defaults.js.map +1 -0
  59. package/dist/events/listeners.d.ts +18 -0
  60. package/dist/events/listeners.d.ts.map +1 -0
  61. package/dist/events/listeners.js +49 -0
  62. package/dist/events/listeners.js.map +1 -0
  63. package/dist/events/route.d.ts +17 -0
  64. package/dist/events/route.d.ts.map +1 -0
  65. package/dist/events/route.js +36 -0
  66. package/dist/events/route.js.map +1 -0
  67. package/dist/events/types.d.ts +269 -0
  68. package/dist/events/types.d.ts.map +1 -0
  69. package/dist/events/types.js +2 -0
  70. package/dist/events/types.js.map +1 -0
  71. package/dist/events/window-target.d.ts +120 -0
  72. package/dist/events/window-target.d.ts.map +1 -0
  73. package/dist/events/window-target.js +311 -0
  74. package/dist/events/window-target.js.map +1 -0
  75. package/dist/eyedropper.d.ts +33 -0
  76. package/dist/eyedropper.d.ts.map +1 -0
  77. package/dist/eyedropper.js +66 -0
  78. package/dist/eyedropper.js.map +1 -0
  79. package/dist/focus.d.ts +18 -0
  80. package/dist/focus.d.ts.map +1 -0
  81. package/dist/focus.js +26 -0
  82. package/dist/focus.js.map +1 -0
  83. package/dist/fonts.d.ts +12 -0
  84. package/dist/fonts.d.ts.map +1 -0
  85. package/dist/fonts.js +17 -0
  86. package/dist/fonts.js.map +1 -0
  87. package/dist/forms.d.ts +10 -0
  88. package/dist/forms.d.ts.map +1 -0
  89. package/dist/forms.js +9 -0
  90. package/dist/forms.js.map +1 -0
  91. package/dist/host-runtime.d.ts +108 -0
  92. package/dist/host-runtime.d.ts.map +1 -0
  93. package/dist/host-runtime.js +213 -0
  94. package/dist/host-runtime.js.map +1 -0
  95. package/dist/host.d.ts +2403 -0
  96. package/dist/host.d.ts.map +1 -0
  97. package/dist/host.js +30 -0
  98. package/dist/host.js.map +1 -0
  99. package/dist/idle-gc.d.ts +36 -0
  100. package/dist/idle-gc.d.ts.map +1 -0
  101. package/dist/idle-gc.js +70 -0
  102. package/dist/idle-gc.js.map +1 -0
  103. package/dist/keyframes.d.ts +108 -0
  104. package/dist/keyframes.d.ts.map +1 -0
  105. package/dist/keyframes.js +107 -0
  106. package/dist/keyframes.js.map +1 -0
  107. package/dist/layout-animation.d.ts +38 -0
  108. package/dist/layout-animation.d.ts.map +1 -0
  109. package/dist/layout-animation.js +41 -0
  110. package/dist/layout-animation.js.map +1 -0
  111. package/dist/match-media.d.ts +62 -0
  112. package/dist/match-media.d.ts.map +1 -0
  113. package/dist/match-media.js +272 -0
  114. package/dist/match-media.js.map +1 -0
  115. package/dist/media-query.d.ts +21 -0
  116. package/dist/media-query.d.ts.map +1 -0
  117. package/dist/media-query.js +599 -0
  118. package/dist/media-query.js.map +1 -0
  119. package/dist/motion-bindings.d.ts +36 -0
  120. package/dist/motion-bindings.d.ts.map +1 -0
  121. package/dist/motion-bindings.js +107 -0
  122. package/dist/motion-bindings.js.map +1 -0
  123. package/dist/motion-config.d.ts +20 -0
  124. package/dist/motion-config.d.ts.map +1 -0
  125. package/dist/motion-config.js +51 -0
  126. package/dist/motion-config.js.map +1 -0
  127. package/dist/motion-span.d.ts +57 -0
  128. package/dist/motion-span.d.ts.map +1 -0
  129. package/dist/motion-span.js +150 -0
  130. package/dist/motion-span.js.map +1 -0
  131. package/dist/motion-value.d.ts +269 -0
  132. package/dist/motion-value.d.ts.map +1 -0
  133. package/dist/motion-value.js +941 -0
  134. package/dist/motion-value.js.map +1 -0
  135. package/dist/motion-variants.d.ts +190 -0
  136. package/dist/motion-variants.d.ts.map +1 -0
  137. package/dist/motion-variants.js +249 -0
  138. package/dist/motion-variants.js.map +1 -0
  139. package/dist/mutations.d.ts +65 -0
  140. package/dist/mutations.d.ts.map +1 -0
  141. package/dist/mutations.js +320 -0
  142. package/dist/mutations.js.map +1 -0
  143. package/dist/nativeview.d.ts +10 -0
  144. package/dist/nativeview.d.ts.map +1 -0
  145. package/dist/nativeview.js +92 -0
  146. package/dist/nativeview.js.map +1 -0
  147. package/dist/observers.d.ts +92 -0
  148. package/dist/observers.d.ts.map +1 -0
  149. package/dist/observers.js +579 -0
  150. package/dist/observers.js.map +1 -0
  151. package/dist/presence.d.ts +63 -0
  152. package/dist/presence.d.ts.map +1 -0
  153. package/dist/presence.js +54 -0
  154. package/dist/presence.js.map +1 -0
  155. package/dist/renderer-state.d.ts +155 -0
  156. package/dist/renderer-state.d.ts.map +1 -0
  157. package/dist/renderer-state.js +302 -0
  158. package/dist/renderer-state.js.map +1 -0
  159. package/dist/reorder.d.ts +63 -0
  160. package/dist/reorder.d.ts.map +1 -0
  161. package/dist/reorder.js +303 -0
  162. package/dist/reorder.js.map +1 -0
  163. package/dist/runtime.d.ts +23 -0
  164. package/dist/runtime.d.ts.map +1 -0
  165. package/dist/runtime.js +157 -0
  166. package/dist/runtime.js.map +1 -0
  167. package/dist/screen.d.ts +8 -0
  168. package/dist/screen.d.ts.map +1 -0
  169. package/dist/screen.js +16 -0
  170. package/dist/screen.js.map +1 -0
  171. package/dist/scroll.d.ts +79 -0
  172. package/dist/scroll.d.ts.map +1 -0
  173. package/dist/scroll.js +170 -0
  174. package/dist/scroll.js.map +1 -0
  175. package/dist/style-images.d.ts +20 -0
  176. package/dist/style-images.d.ts.map +1 -0
  177. package/dist/style-images.js +57 -0
  178. package/dist/style-images.js.map +1 -0
  179. package/dist/svg.d.ts +16 -0
  180. package/dist/svg.d.ts.map +1 -0
  181. package/dist/svg.js +119 -0
  182. package/dist/svg.js.map +1 -0
  183. package/dist/testing.d.ts +811 -0
  184. package/dist/testing.d.ts.map +1 -0
  185. package/dist/testing.js +1187 -0
  186. package/dist/testing.js.map +1 -0
  187. package/dist/text-match.d.ts +8 -0
  188. package/dist/text-match.d.ts.map +1 -0
  189. package/dist/text-match.js +10 -0
  190. package/dist/text-match.js.map +1 -0
  191. package/dist/text-selection.d.ts +34 -0
  192. package/dist/text-selection.d.ts.map +1 -0
  193. package/dist/text-selection.js +23 -0
  194. package/dist/text-selection.js.map +1 -0
  195. package/dist/universal-style.d.ts +22 -0
  196. package/dist/universal-style.d.ts.map +1 -0
  197. package/dist/universal-style.js +58 -0
  198. package/dist/universal-style.js.map +1 -0
  199. package/dist/web-animations.d.ts +300 -0
  200. package/dist/web-animations.d.ts.map +1 -0
  201. package/dist/web-animations.js +1032 -0
  202. package/dist/web-animations.js.map +1 -0
  203. package/dist/webview.d.ts +39 -0
  204. package/dist/webview.d.ts.map +1 -0
  205. package/dist/webview.js +26 -0
  206. package/dist/webview.js.map +1 -0
  207. package/gpuix-native.darwin-arm64.node +4 -0
  208. package/index.cjs +789 -0
  209. package/index.d.ts +2603 -0
  210. package/index.js +729 -0
  211. package/package.json +94 -3
  212. package/README.md +0 -3
@@ -0,0 +1,62 @@
1
+ import type { MediaFeatures } from "../index.js";
2
+ import type { NativeRenderer } from "./host.js";
3
+ import type { MediaEnvironment } from "./media-query.js";
4
+ export type { MediaEnvironment } from "./media-query.js";
5
+ export type { MediaFeatures };
6
+ export type MatchMedia = (query: string) => MediaQueryList;
7
+ export interface MediaSourceEntry {
8
+ notify(): void;
9
+ }
10
+ /** Shared by every `MediaQueryList` of one window. */
11
+ export interface MediaQueryListSource {
12
+ environment(): MediaEnvironment;
13
+ subscribe(entry: MediaSourceEntry): () => void;
14
+ }
15
+ export interface MediaQueryListEventInit extends EventInit {
16
+ matches?: boolean;
17
+ media?: string;
18
+ }
19
+ export declare class MediaQueryListEvent extends Event {
20
+ readonly matches: boolean;
21
+ readonly media: string;
22
+ constructor(type: string, init?: MediaQueryListEventInit);
23
+ }
24
+ type ChangeListener = EventListenerOrEventListenerObject;
25
+ export declare class MediaQueryList {
26
+ #private;
27
+ /** Use `matchMedia`; a list is bound to the window that created it. */
28
+ constructor(query: string, source: MediaQueryListSource);
29
+ get media(): string;
30
+ /** Evaluated against the window now, not when the list was created. */
31
+ get matches(): boolean;
32
+ get onchange(): ((this: MediaQueryList, event: MediaQueryListEvent) => unknown) | null;
33
+ set onchange(handler: ((this: MediaQueryList, event: MediaQueryListEvent) => unknown) | null);
34
+ /** Only `"change"` is ever dispatched; other types are accepted and never fire. */
35
+ addEventListener(type: string, callback: ChangeListener | null, options?: boolean | AddEventListenerOptions): void;
36
+ removeEventListener(type: string, callback: ChangeListener | null, options?: boolean | EventListenerOptions): void;
37
+ /** Deprecated alias of `addEventListener("change", callback)`. */
38
+ addListener(callback: ChangeListener | null): void;
39
+ /** Deprecated alias of `removeEventListener("change", callback)`. */
40
+ removeListener(callback: ChangeListener | null): void;
41
+ dispatchEvent(event: Event): boolean;
42
+ }
43
+ /**
44
+ * `matchMedia` bound to `host`'s window. The same function comes back for the
45
+ * same renderer, so it is safe in dependency lists.
46
+ */
47
+ export declare function matchMediaFor(host: NativeRenderer): MatchMedia;
48
+ /**
49
+ * `window.matchMedia` for code with no component to ask: the window of the
50
+ * most recently mounted root. Throws before any root is mounted.
51
+ */
52
+ export declare function matchMedia(query: string): MediaQueryList;
53
+ /**
54
+ * Call `callback` with the current result now and again whenever it flips.
55
+ * Returns the stop function.
56
+ */
57
+ export declare function observeMediaQuery(host: NativeRenderer, query: string, callback: (matches: boolean) => void): () => void;
58
+ export declare const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
59
+ /** The OS "reduce motion" setting, now and on every change. */
60
+ export declare function observeReducedMotion(host: NativeRenderer, callback: (reduced: boolean) => void): () => void;
61
+ export declare function readReducedMotion(host: NativeRenderer): boolean;
62
+ //# sourceMappingURL=match-media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-media.d.ts","sourceRoot":"","sources":["../js/match-media.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,kBAAkB,CAAA;AAG9E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,YAAY,EAAE,aAAa,EAAE,CAAA;AAS7B,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,cAAc,CAAA;AA+C1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,IAAI,IAAI,CAAA;CACf;AAED,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,WAAW,IAAI,gBAAgB,CAAA;IAC/B,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAA;CAC/C;AA2CD,MAAM,WAAW,uBAAwB,SAAQ,SAAS;IACxD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;gBAEV,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,uBAA4B;CAK7D;AAED,KAAK,cAAc,GAAG,kCAAkC,CAAA;AASxD,qBAAa,cAAc;;IASzB,uEAAuE;gBAC3D,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB;IAMvD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,uEAAuE;IACvE,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,IAAI,CAErF;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,IAAI,EAU3F;IAED,mFAAmF;IACnF,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI;IAeP,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACvC,IAAI;IASP,kEAAkE;IAClE,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIlD,qEAAqE;IACrE,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIrD,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CA8CrC;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAO9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAMxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC,MAAM,IAAI,CAMZ;AAED,eAAO,MAAM,oBAAoB,qCAAqC,CAAA;AAEtE,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GACnC,MAAM,IAAI,CAEZ;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,272 @@
1
+ /// `matchMedia` for a GPUIX window: `MediaQueryList` and `MediaQueryListEvent`
2
+ /// with the DOM shape, backed by the renderer that owns the window.
3
+ ///
4
+ /// The environment is read live from the renderer (`getWindowSize`,
5
+ /// `getAppearance`, `getMediaFeatures`). Every change, a resize included,
6
+ /// arrives as the renderer's `mediaChange` event.
7
+ import { toAppearance } from "./host-runtime.js";
8
+ import { parseMediaQueryList } from "./media-query.js";
9
+ import { createRendererState, mountedRenderer } from "./renderer-state.js";
10
+ /** Platforms with no OS read have no preference set. */
11
+ const NO_PREFERENCES = {
12
+ reducedMotion: false,
13
+ increasedContrast: false,
14
+ forcedColors: false,
15
+ };
16
+ function lazy(read) {
17
+ let cached;
18
+ return () => {
19
+ cached ??= { value: read() };
20
+ return cached.value;
21
+ };
22
+ }
23
+ /** A snapshot that reads each part of the window the first time a query asks. */
24
+ function readEnvironment(host) {
25
+ const size = lazy(() => {
26
+ if (!host.getWindowSize) {
27
+ throw new Error("This renderer does not report the window size, so size media queries cannot be evaluated");
28
+ }
29
+ return host.getWindowSize();
30
+ });
31
+ const colorScheme = lazy(() => {
32
+ if (!host.getAppearance) {
33
+ throw new Error("This renderer does not report the window appearance, so prefers-color-scheme cannot be evaluated");
34
+ }
35
+ return toAppearance(host.getAppearance());
36
+ });
37
+ const features = lazy(() => host.getMediaFeatures?.() ?? NO_PREFERENCES);
38
+ return {
39
+ get width() {
40
+ return size().width;
41
+ },
42
+ get height() {
43
+ return size().height;
44
+ },
45
+ get colorScheme() {
46
+ return colorScheme();
47
+ },
48
+ get reducedMotion() {
49
+ return features().reducedMotion;
50
+ },
51
+ get increasedContrast() {
52
+ return features().increasedContrast;
53
+ },
54
+ get forcedColors() {
55
+ return features().forcedColors;
56
+ },
57
+ };
58
+ }
59
+ function createMediaQueryListSource(host) {
60
+ const entries = new Set();
61
+ let unsubscribeHost;
62
+ const notify = () => {
63
+ for (const entry of [...entries]) {
64
+ if (entries.has(entry))
65
+ entry.notify();
66
+ }
67
+ };
68
+ const sync = () => {
69
+ if (entries.size > 0 && !unsubscribeHost) {
70
+ unsubscribeHost = createRendererState(host).subscribeMedia(notify);
71
+ }
72
+ else if (entries.size === 0 && unsubscribeHost) {
73
+ const unsubscribe = unsubscribeHost;
74
+ unsubscribeHost = undefined;
75
+ unsubscribe();
76
+ }
77
+ };
78
+ return {
79
+ environment: () => readEnvironment(host),
80
+ subscribe(entry) {
81
+ entries.add(entry);
82
+ try {
83
+ sync();
84
+ }
85
+ catch (error) {
86
+ // The caller never gets the unsubscribe function, so nothing else would remove the entry.
87
+ entries.delete(entry);
88
+ throw error;
89
+ }
90
+ return () => {
91
+ if (!entries.delete(entry))
92
+ return;
93
+ sync();
94
+ };
95
+ },
96
+ };
97
+ }
98
+ export class MediaQueryListEvent extends Event {
99
+ matches;
100
+ media;
101
+ constructor(type, init = {}) {
102
+ super(type, init);
103
+ this.matches = init.matches ?? false;
104
+ this.media = init.media ?? "";
105
+ }
106
+ }
107
+ export class MediaQueryList {
108
+ #parsed;
109
+ #source;
110
+ #reevaluate;
111
+ #listeners = [];
112
+ #onchange = null;
113
+ #lastMatches;
114
+ #unsubscribe;
115
+ /** Use `matchMedia`; a list is bound to the window that created it. */
116
+ constructor(query, source) {
117
+ this.#parsed = parseMediaQueryList(query);
118
+ this.#source = source;
119
+ this.#reevaluate = { notify: () => this.#notify() };
120
+ }
121
+ get media() {
122
+ return this.#parsed.media;
123
+ }
124
+ /** Evaluated against the window now, not when the list was created. */
125
+ get matches() {
126
+ return this.#parsed.matches(this.#source.environment());
127
+ }
128
+ get onchange() {
129
+ return this.#onchange;
130
+ }
131
+ set onchange(handler) {
132
+ const typed = typeof handler === "function" ? handler : null;
133
+ this.#onchange = typed;
134
+ const slot = this.#listeners.find((entry) => entry.callback === null);
135
+ if (typed && !slot) {
136
+ this.#listeners.push({ callback: null, capture: false, once: false });
137
+ }
138
+ else if (!typed && slot) {
139
+ this.#listeners = this.#listeners.filter((entry) => entry !== slot);
140
+ }
141
+ this.#sync();
142
+ }
143
+ /** Only `"change"` is ever dispatched; other types are accepted and never fire. */
144
+ addEventListener(type, callback, options) {
145
+ if (type !== "change" || callback === null)
146
+ return;
147
+ const settings = typeof options === "boolean" ? { capture: options } : (options ?? {});
148
+ if (settings.signal?.aborted)
149
+ return;
150
+ const capture = settings.capture ?? false;
151
+ if (this.#listeners.some((entry) => entry.callback === callback && entry.capture === capture)) {
152
+ return;
153
+ }
154
+ this.#listeners.push({ callback, capture, once: settings.once ?? false });
155
+ settings.signal?.addEventListener("abort", () => this.removeEventListener(type, callback, capture), {
156
+ once: true,
157
+ });
158
+ this.#sync();
159
+ }
160
+ removeEventListener(type, callback, options) {
161
+ if (type !== "change" || callback === null)
162
+ return;
163
+ const capture = (typeof options === "boolean" ? options : options?.capture) ?? false;
164
+ this.#listeners = this.#listeners.filter((entry) => !(entry.callback === callback && entry.capture === capture));
165
+ this.#sync();
166
+ }
167
+ /** Deprecated alias of `addEventListener("change", callback)`. */
168
+ addListener(callback) {
169
+ this.addEventListener("change", callback);
170
+ }
171
+ /** Deprecated alias of `removeEventListener("change", callback)`. */
172
+ removeListener(callback) {
173
+ this.removeEventListener("change", callback);
174
+ }
175
+ dispatchEvent(event) {
176
+ Object.defineProperty(event, "target", { value: this, configurable: true });
177
+ Object.defineProperty(event, "currentTarget", { value: this, configurable: true });
178
+ if (event.type === "change")
179
+ this.#invoke(event);
180
+ return !event.defaultPrevented;
181
+ }
182
+ #notify() {
183
+ const matches = this.matches;
184
+ if (matches === this.#lastMatches)
185
+ return;
186
+ this.#lastMatches = matches;
187
+ this.dispatchEvent(new MediaQueryListEvent("change", { matches, media: this.media }));
188
+ }
189
+ #invoke(event) {
190
+ for (const entry of [...this.#listeners]) {
191
+ if (!this.#listeners.includes(entry))
192
+ continue;
193
+ if (entry.once)
194
+ this.#listeners = this.#listeners.filter((other) => other !== entry);
195
+ try {
196
+ if (entry.callback === null) {
197
+ this.#onchange?.call(this, event);
198
+ }
199
+ else if (typeof entry.callback === "function") {
200
+ entry.callback.call(this, event);
201
+ }
202
+ else {
203
+ entry.callback.handleEvent(event);
204
+ }
205
+ }
206
+ catch (error) {
207
+ // DOM reports a listener's error and still runs the others.
208
+ queueMicrotask(() => {
209
+ throw error;
210
+ });
211
+ }
212
+ }
213
+ this.#sync();
214
+ }
215
+ /** Subscribed to the window only while something listens. */
216
+ #sync() {
217
+ if (this.#listeners.length > 0 && !this.#unsubscribe) {
218
+ this.#lastMatches = this.matches;
219
+ this.#unsubscribe = this.#source.subscribe(this.#reevaluate);
220
+ }
221
+ else if (this.#listeners.length === 0 && this.#unsubscribe) {
222
+ this.#unsubscribe();
223
+ this.#unsubscribe = undefined;
224
+ }
225
+ }
226
+ }
227
+ // ── Entry points ─────────────────────────────────────────────────────
228
+ const matchers = new WeakMap();
229
+ /**
230
+ * `matchMedia` bound to `host`'s window. The same function comes back for the
231
+ * same renderer, so it is safe in dependency lists.
232
+ */
233
+ export function matchMediaFor(host) {
234
+ const existing = matchers.get(host);
235
+ if (existing)
236
+ return existing;
237
+ const source = createMediaQueryListSource(host);
238
+ const matcher = (query) => new MediaQueryList(String(query), source);
239
+ matchers.set(host, matcher);
240
+ return matcher;
241
+ }
242
+ /**
243
+ * `window.matchMedia` for code with no component to ask: the window of the
244
+ * most recently mounted root. Throws before any root is mounted.
245
+ */
246
+ export function matchMedia(query) {
247
+ const host = mountedRenderer();
248
+ if (!host) {
249
+ throw new Error("matchMedia needs a mounted GPUIX root. Call it after render(), or use useMatchMedia() / createMatchMedia() inside a component.");
250
+ }
251
+ return matchMediaFor(host)(query);
252
+ }
253
+ /**
254
+ * Call `callback` with the current result now and again whenever it flips.
255
+ * Returns the stop function.
256
+ */
257
+ export function observeMediaQuery(host, query, callback) {
258
+ const list = matchMediaFor(host)(query);
259
+ const listener = (event) => callback(event.matches);
260
+ callback(list.matches);
261
+ list.addEventListener("change", listener);
262
+ return () => list.removeEventListener("change", listener);
263
+ }
264
+ export const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
265
+ /** The OS "reduce motion" setting, now and on every change. */
266
+ export function observeReducedMotion(host, callback) {
267
+ return observeMediaQuery(host, REDUCED_MOTION_QUERY, callback);
268
+ }
269
+ export function readReducedMotion(host) {
270
+ return matchMediaFor(host)(REDUCED_MOTION_QUERY).matches;
271
+ }
272
+ //# sourceMappingURL=match-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-media.js","sourceRoot":"","sources":["../js/match-media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface MediaEnvironment {
2
+ /** Content size of the window in CSS pixels. */
3
+ readonly width: number;
4
+ readonly height: number;
5
+ readonly colorScheme: "light" | "dark";
6
+ readonly reducedMotion: boolean;
7
+ readonly increasedContrast: boolean;
8
+ readonly forcedColors: boolean;
9
+ }
10
+ export interface ParsedMediaQueryList {
11
+ /** Canonical serialization, as `MediaQueryList.media` reports it. */
12
+ readonly media: string;
13
+ matches(env: MediaEnvironment): boolean;
14
+ }
15
+ /**
16
+ * Parse a media query list, as `window.matchMedia` does. An empty string is the
17
+ * empty list, which matches. An item that is invalid or names an unknown
18
+ * feature is `not all`; the other items of a comma list still count.
19
+ */
20
+ export declare function parseMediaQueryList(text: string): ParsedMediaQueryList;
21
+ //# sourceMappingURL=media-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-query.d.ts","sourceRoot":"","sources":["../js/media-query.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B;AA8BD,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAA;CACxC;AAilBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAOtE"}