@ghia/native 0.0.0 → 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 (211) 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 +96 -4
@@ -0,0 +1,108 @@
1
+ import type { RootEvent } from "./events/dispatch.js";
2
+ import type { Appearance, AppearanceHost, HostProps, NativeRenderer, NativeWindowInsets, SelectionHost, WindowInsetsHost, WindowSizeHost } from "./host.js";
3
+ import { type Animation, type GetAnimationsOptions } from "./web-animations.js";
4
+ /**
5
+ * `setPointerCapture`, `releasePointerCapture` and `hasPointerCapture` for one
6
+ * host element, as the DOM's `Element` has them. The mouse is `pointerId` 1.
7
+ *
8
+ * Capture applies from the next native pointer input, because the call crosses
9
+ * from JS to the UI thread without waiting for it: calling `setPointerCapture`
10
+ * from a `pointerdown` handler works, the element receives the events after that
11
+ * one, and `gotpointercapture` fires before the first of them. `hasPointerCapture`
12
+ * answers for the request, so it is true right after `setPointerCapture`.
13
+ * Calling it with no button down does nothing. All three throw for a `pointerId`
14
+ * other than 1. For an element that is not in the tree, `setPointerCapture`
15
+ * throws, `releasePointerCapture` does nothing and `hasPointerCapture` is false.
16
+ */
17
+ export interface PointerCaptureMethods {
18
+ setPointerCapture(pointerId: number): void;
19
+ releasePointerCapture(pointerId: number): void;
20
+ hasPointerCapture(pointerId: number): boolean;
21
+ }
22
+ /**
23
+ * What a host ref has beyond props: the pointer capture methods, `click()` and
24
+ * `requestPointerLock()`, like `HTMLElement`'s.
25
+ *
26
+ * `click()` delivers a `click` that no pointer made: `detail` 0, `pointerId`
27
+ * -1, `pointerType` `""`, no position, and it bubbles along the element's path.
28
+ * Throws for an element that is not in the tree.
29
+ *
30
+ * `requestPointerLock()` hides the cursor and freezes it, and from then on
31
+ * every pointer and mouse event goes to this element with a frozen
32
+ * `clientX`/`clientY` and the real motion in `movementX`/`movementY`. It
33
+ * returns at once and the outcome arrives with the next frame, as
34
+ * `pointerlockchange` or `pointerlockerror` at `document`. It fails
35
+ * (`pointerlockerror`) for an element that is not in the tree and when the
36
+ * platform refuses: the window must be active, and only macOS can lock the
37
+ * pointer. Call `renderer.exitPointerLock()` to release it.
38
+ */
39
+ export interface ElementMethods extends PointerCaptureMethods {
40
+ click(): void;
41
+ requestPointerLock(): void;
42
+ /**
43
+ * The CSS transitions, then the CSS animations, of the element that are
44
+ * running, paused or in effect through a fill, in composite order. The same
45
+ * `Animation` object stands for a run every time. See `Animation` for what
46
+ * it has and what is not built. Animations of the motion engine
47
+ * (`motion`, `animate`) are not listed. With `{ subtree: true }` those of the
48
+ * elements below are listed too: every transition of the element and its
49
+ * descendants in document order, then every animation, like Chrome.
50
+ * Pending changes are sent first. An element that is not in the tree has none.
51
+ * Call it on the element: that is the `target` of the effects it returns.
52
+ */
53
+ getAnimations(options?: GetAnimationsOptions): Animation[];
54
+ }
55
+ export declare function createElementMethods(renderer: NativeRenderer, elementId: number): ElementMethods;
56
+ export interface WindowSize {
57
+ width: number;
58
+ height: number;
59
+ }
60
+ export interface ObserverOptions {
61
+ /** Poll interval in milliseconds. Defaults to 100. Set false for one read. */
62
+ intervalMs?: number | false;
63
+ }
64
+ export interface WindowInsets extends NativeWindowInsets {
65
+ keyboardTop: number;
66
+ keyboardVisible: boolean;
67
+ visibleHeight: number;
68
+ }
69
+ export declare function readWindowSize(renderer: WindowSizeHost | NativeRenderer | null): WindowSize;
70
+ export declare function readWindowInsets(renderer: (WindowSizeHost & WindowInsetsHost) | NativeRenderer | null): WindowInsets;
71
+ export declare function observeWindowSize(renderer: WindowSizeHost | NativeRenderer | null, callback: (size: WindowSize) => void, options?: ObserverOptions): () => void;
72
+ export declare function observeWindowInsets(renderer: (WindowSizeHost & WindowInsetsHost) | NativeRenderer | null, callback: (insets: WindowInsets) => void, options?: ObserverOptions): () => void;
73
+ export declare function observeSelectedText(renderer: SelectionHost, subscribe: (listener: (event: RootEvent) => void) => () => void, callback: (text: string | null) => void): () => void;
74
+ export declare function toAppearance(value: string | undefined): Appearance;
75
+ export declare function observeAppearance(renderer: AppearanceHost, subscribe: (listener: (event: RootEvent) => void) => () => void, callback: (appearance: Appearance) => void): () => void;
76
+ export interface FindRangesOptions {
77
+ text: string;
78
+ query: string;
79
+ caseSensitive?: boolean;
80
+ wholeWord?: boolean;
81
+ }
82
+ export declare function findRanges(options: FindRangesOptions): Array<[number, number]>;
83
+ export interface TextSearchOptions {
84
+ query: string;
85
+ caseSensitive?: boolean;
86
+ wholeWord?: boolean;
87
+ color?: string;
88
+ activeColor?: string;
89
+ radius?: number;
90
+ matches?: {
91
+ total: number;
92
+ indexOffset: number;
93
+ };
94
+ }
95
+ export interface TextSearchSnapshot {
96
+ props: Pick<HostProps, "highlight" | "onHighlight">;
97
+ total: number;
98
+ active: number;
99
+ }
100
+ export interface TextSearchController {
101
+ getSnapshot(options: TextSearchOptions): TextSearchSnapshot;
102
+ next(): void;
103
+ previous(): void;
104
+ goTo(index: number): void;
105
+ subscribe(callback: () => void): () => void;
106
+ }
107
+ export declare function createTextSearchController(): TextSearchController;
108
+ //# sourceMappingURL=host-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-runtime.d.ts","sourceRoot":"","sources":["../js/host-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { getElementAnimations } from "./web-animations.js";
2
+ export function createElementMethods(renderer, elementId) {
3
+ const supported = (name) => {
4
+ const method = renderer[name];
5
+ if (!method)
6
+ throw new Error(`This renderer does not support ${name}`);
7
+ return method.bind(renderer);
8
+ };
9
+ return {
10
+ setPointerCapture: (pointerId) => supported("setPointerCapture")(elementId, pointerId),
11
+ releasePointerCapture: (pointerId) => supported("releasePointerCapture")(elementId, pointerId),
12
+ hasPointerCapture: (pointerId) => supported("hasPointerCapture")(elementId, pointerId),
13
+ click: () => supported("clickElement")(elementId),
14
+ requestPointerLock: () => supported("requestPointerLock")(elementId),
15
+ getAnimations(options) {
16
+ return getElementAnimations(renderer, elementId, this, options);
17
+ },
18
+ };
19
+ }
20
+ const DEFAULT_WINDOW_SIZE = { width: 800, height: 600 };
21
+ const ZERO_EDGES = { top: 0, right: 0, bottom: 0, left: 0 };
22
+ export function readWindowSize(renderer) {
23
+ try {
24
+ const size = renderer?.getWindowSize?.();
25
+ if (size && size.width > 0 && size.height > 0)
26
+ return { ...size };
27
+ }
28
+ catch {
29
+ // The platform window can still be opening.
30
+ }
31
+ return DEFAULT_WINDOW_SIZE;
32
+ }
33
+ export function readWindowInsets(renderer) {
34
+ let size = DEFAULT_WINDOW_SIZE;
35
+ let insets = {
36
+ safeArea: ZERO_EDGES,
37
+ ime: ZERO_EDGES,
38
+ effective: ZERO_EDGES,
39
+ };
40
+ try {
41
+ size = renderer?.getWindowSize?.() ?? size;
42
+ insets = renderer?.getWindowInsets?.() ?? insets;
43
+ }
44
+ catch {
45
+ // The platform window can still be opening.
46
+ }
47
+ return {
48
+ ...insets,
49
+ keyboardTop: size.height - insets.ime.bottom,
50
+ keyboardVisible: insets.ime.bottom > 0,
51
+ visibleHeight: size.height - insets.effective.top - insets.effective.bottom,
52
+ };
53
+ }
54
+ function sameWindowSize(left, right) {
55
+ return left.width === right.width && left.height === right.height;
56
+ }
57
+ function sameEdges(left, right) {
58
+ return left.top === right.top && left.right === right.right &&
59
+ left.bottom === right.bottom && left.left === right.left;
60
+ }
61
+ function sameWindowInsets(left, right) {
62
+ return left.keyboardTop === right.keyboardTop &&
63
+ left.keyboardVisible === right.keyboardVisible &&
64
+ left.visibleHeight === right.visibleHeight &&
65
+ sameEdges(left.safeArea, right.safeArea) &&
66
+ sameEdges(left.ime, right.ime) &&
67
+ sameEdges(left.effective, right.effective);
68
+ }
69
+ function observe(read, same, callback, options) {
70
+ let current = read();
71
+ callback(current);
72
+ if (options.intervalMs === false)
73
+ return () => { };
74
+ const timer = setInterval(() => {
75
+ const next = read();
76
+ if (same(current, next))
77
+ return;
78
+ current = next;
79
+ callback(next);
80
+ }, Math.max(16, options.intervalMs ?? 100));
81
+ return () => clearInterval(timer);
82
+ }
83
+ export function observeWindowSize(renderer, callback, options = {}) {
84
+ return observe(() => readWindowSize(renderer), sameWindowSize, callback, options);
85
+ }
86
+ export function observeWindowInsets(renderer, callback, options = {}) {
87
+ return observe(() => readWindowInsets(renderer), sameWindowInsets, callback, options);
88
+ }
89
+ export function observeSelectedText(renderer, subscribe, callback) {
90
+ callback(renderer.getSelectedText() ?? null);
91
+ return subscribe((event) => callback(event.value ?? null));
92
+ }
93
+ export function toAppearance(value) {
94
+ if (value === "light" || value === "dark")
95
+ return value;
96
+ throw new Error(`Expected an appearance of "light" or "dark", got ${String(value)}`);
97
+ }
98
+ export function observeAppearance(renderer, subscribe, callback) {
99
+ callback(toAppearance(renderer.getAppearance()));
100
+ return subscribe((event) => callback(toAppearance(event.value)));
101
+ }
102
+ const WORD_CHAR = /[\p{Alphabetic}\p{N}_]/u;
103
+ function wordCharBefore(text, end) {
104
+ if (end <= 0)
105
+ return false;
106
+ const low = text.charCodeAt(end - 1);
107
+ const start = low >= 0xdc00 && low <= 0xdfff && end >= 2 ? end - 2 : end - 1;
108
+ return WORD_CHAR.test(text.slice(start, end));
109
+ }
110
+ function wordCharAt(text, start) {
111
+ const codePoint = text.codePointAt(start);
112
+ return codePoint === undefined ? false : WORD_CHAR.test(String.fromCodePoint(codePoint));
113
+ }
114
+ function fold(text) {
115
+ let folded = "";
116
+ const map = [];
117
+ for (let index = 0; index < text.length;) {
118
+ const char = String.fromCodePoint(text.codePointAt(index) ?? 0);
119
+ const lower = char.toLowerCase();
120
+ for (let unit = 0; unit < lower.length; unit += 1)
121
+ map.push(index);
122
+ folded += lower;
123
+ index += char.length;
124
+ }
125
+ map.push(text.length);
126
+ return { folded, map };
127
+ }
128
+ export function findRanges(options) {
129
+ const { text, query, caseSensitive = false, wholeWord = false } = options;
130
+ if (query.length === 0)
131
+ return [];
132
+ const { folded, map } = caseSensitive ? { folded: text, map: null } : fold(text);
133
+ const needle = caseSensitive ? query : query.toLowerCase();
134
+ const ranges = [];
135
+ let from = 0;
136
+ for (;;) {
137
+ const at = folded.indexOf(needle, from);
138
+ if (at < 0)
139
+ break;
140
+ from = at + needle.length;
141
+ const start = map ? map[at] : at;
142
+ const end = map ? map[from] : from;
143
+ if (start >= end)
144
+ continue;
145
+ if (wholeWord && (wordCharBefore(text, start) || wordCharAt(text, end)))
146
+ continue;
147
+ ranges.push([start, end]);
148
+ }
149
+ return ranges;
150
+ }
151
+ export function createTextSearchController() {
152
+ let reported = 0;
153
+ let requested = 0;
154
+ let latest = { query: "" };
155
+ const listeners = new Set();
156
+ const emit = () => listeners.forEach((listener) => listener());
157
+ const total = () => latest.query.length === 0 ? 0 : (latest.matches?.total ?? reported);
158
+ const active = () => total() === 0 ? 0 : Math.min(requested, total() - 1);
159
+ const onHighlight = (event) => {
160
+ const next = event.matchCount ?? 0;
161
+ if (reported === next)
162
+ return;
163
+ reported = next;
164
+ emit();
165
+ };
166
+ return {
167
+ getSnapshot(options) {
168
+ latest = options;
169
+ const currentTotal = total();
170
+ const currentActive = active();
171
+ const highlight = options.query.length === 0 ? null : {
172
+ query: options.query,
173
+ caseSensitive: options.caseSensitive,
174
+ wholeWord: options.wholeWord,
175
+ color: options.color,
176
+ activeColor: options.activeColor,
177
+ radius: options.radius,
178
+ activeIndex: currentActive,
179
+ matchIndexOffset: options.matches?.indexOffset,
180
+ };
181
+ return {
182
+ props: { highlight, onHighlight },
183
+ total: currentTotal,
184
+ active: currentActive,
185
+ };
186
+ },
187
+ next() {
188
+ const count = total();
189
+ if (count === 0)
190
+ return;
191
+ requested = (Math.min(requested, count - 1) + 1) % count;
192
+ emit();
193
+ },
194
+ previous() {
195
+ const count = total();
196
+ if (count === 0)
197
+ return;
198
+ requested = (Math.min(requested, count - 1) + count - 1) % count;
199
+ emit();
200
+ },
201
+ goTo(index) {
202
+ if (index < 0 || index >= total())
203
+ return;
204
+ requested = index;
205
+ emit();
206
+ },
207
+ subscribe(callback) {
208
+ listeners.add(callback);
209
+ return () => listeners.delete(callback);
210
+ },
211
+ };
212
+ }
213
+ //# sourceMappingURL=host-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-runtime.js","sourceRoot":"","sources":["../js/host-runtime.ts"],"names":[],"mappings":"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"}