frosty 0.0.111 → 0.0.113

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 (73) hide show
  1. package/dist/_native.d.mts +19 -0
  2. package/dist/_native.d.mts.map +1 -0
  3. package/dist/_native.js +3 -3
  4. package/dist/_native.mjs +4 -4
  5. package/dist/dom.d.mts +15 -0
  6. package/dist/dom.d.mts.map +1 -0
  7. package/dist/dom.js +4 -4
  8. package/dist/dom.mjs +4 -4
  9. package/dist/index.d.mts +551 -0
  10. package/dist/index.d.mts.map +1 -0
  11. package/dist/index.d.ts +8 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -3
  14. package/dist/index.mjs +4 -4
  15. package/dist/internals/common-CpEB3ieX.d.mts +3451 -0
  16. package/dist/internals/common-CpEB3ieX.d.mts.map +1 -0
  17. package/dist/internals/fragment-BlS4iF_x.d.mts +9 -0
  18. package/dist/internals/fragment-BlS4iF_x.d.mts.map +1 -0
  19. package/dist/internals/{fragment-CaAgTjMI.d.ts → fragment-Dch7YNeZ.d.ts} +4 -1
  20. package/dist/internals/{fragment-CaAgTjMI.d.ts.map → fragment-Dch7YNeZ.d.ts.map} +1 -1
  21. package/dist/internals/renderer-BQawOCgo.d.mts +38 -0
  22. package/dist/internals/renderer-BQawOCgo.d.mts.map +1 -0
  23. package/dist/internals/renderer-BelBgEvy.d.mts +47 -0
  24. package/dist/internals/renderer-BelBgEvy.d.mts.map +1 -0
  25. package/dist/internals/{renderer-D042jXUg.mjs → renderer-CA9aKFMW.mjs} +3 -3
  26. package/dist/internals/{renderer-D042jXUg.mjs.map → renderer-CA9aKFMW.mjs.map} +1 -1
  27. package/dist/internals/{renderer-mim3fEAf.js → renderer-CNz1Y3a_.js} +3 -3
  28. package/dist/internals/{renderer-mim3fEAf.js.map → renderer-CNz1Y3a_.js.map} +1 -1
  29. package/dist/internals/{renderer-DUavelz2.mjs → renderer-DowEJaeR.mjs} +4 -4
  30. package/dist/internals/{renderer-DUavelz2.mjs.map → renderer-DowEJaeR.mjs.map} +1 -1
  31. package/dist/internals/{renderer-B04DCuHt.js → renderer-I-1wuWMB.js} +4 -4
  32. package/dist/internals/{renderer-B04DCuHt.js.map → renderer-I-1wuWMB.js.map} +1 -1
  33. package/dist/internals/{runtime-BFi9M0jE.js → runtime-57ivQprw.js} +4 -1
  34. package/dist/internals/runtime-57ivQprw.js.map +1 -0
  35. package/dist/internals/{runtime-BB51vIJ7.mjs → runtime-Dp4_akLf.mjs} +4 -1
  36. package/dist/internals/runtime-Dp4_akLf.mjs.map +1 -0
  37. package/dist/internals/{state-DFlnc6I0.js → state-C9_fGuhZ.js} +9 -2
  38. package/dist/internals/state-C9_fGuhZ.js.map +1 -0
  39. package/dist/internals/{state-YzaxTA1n.mjs → state-DgSrjGGU.mjs} +9 -2
  40. package/dist/internals/state-DgSrjGGU.mjs.map +1 -0
  41. package/dist/internals/{sync-OyR_m41B.js → sync-B7gLfyQK.js} +2 -2
  42. package/dist/internals/{sync-OyR_m41B.js.map → sync-B7gLfyQK.js.map} +1 -1
  43. package/dist/internals/{sync-CxgNMmpR.mjs → sync-CeJllG9M.mjs} +2 -2
  44. package/dist/internals/{sync-CxgNMmpR.mjs.map → sync-CeJllG9M.mjs.map} +1 -1
  45. package/dist/internals/utils-CWsh4Zpu.d.mts +7 -0
  46. package/dist/internals/utils-CWsh4Zpu.d.mts.map +1 -0
  47. package/dist/jsx-dev-runtime.d.mts +11 -0
  48. package/dist/jsx-dev-runtime.d.mts.map +1 -0
  49. package/dist/jsx-dev-runtime.d.ts +1 -1
  50. package/dist/jsx-dev-runtime.js +1 -1
  51. package/dist/jsx-dev-runtime.mjs +1 -1
  52. package/dist/jsx-runtime.d.mts +23 -0
  53. package/dist/jsx-runtime.d.mts.map +1 -0
  54. package/dist/jsx-runtime.d.ts +1 -1
  55. package/dist/jsx-runtime.js +1 -1
  56. package/dist/jsx-runtime.mjs +2 -2
  57. package/dist/server-dom.d.mts +15 -0
  58. package/dist/server-dom.d.mts.map +1 -0
  59. package/dist/server-dom.js +4 -4
  60. package/dist/server-dom.mjs +4 -4
  61. package/dist/web.d.mts +211 -0
  62. package/dist/web.d.mts.map +1 -0
  63. package/dist/web.d.ts +99 -0
  64. package/dist/web.d.ts.map +1 -1
  65. package/dist/web.js +104 -5
  66. package/dist/web.js.map +1 -1
  67. package/dist/web.mjs +105 -6
  68. package/dist/web.mjs.map +1 -1
  69. package/package.json +5 -17
  70. package/dist/internals/runtime-BB51vIJ7.mjs.map +0 -1
  71. package/dist/internals/runtime-BFi9M0jE.js.map +0 -1
  72. package/dist/internals/state-DFlnc6I0.js.map +0 -1
  73. package/dist/internals/state-YzaxTA1n.mjs.map +0 -1
package/dist/web.mjs CHANGED
@@ -1,15 +1,15 @@
1
- import { r as reconciler, a as uniqueId, d as EventEmitter } from './internals/state-YzaxTA1n.mjs';
2
- import { _ as _DOMRenderer } from './internals/renderer-DUavelz2.mjs';
3
- export { D as DOMNativeNode } from './internals/renderer-DUavelz2.mjs';
1
+ import { r as reconciler, a as uniqueId, d as EventEmitter } from './internals/state-DgSrjGGU.mjs';
2
+ import { _ as _DOMRenderer } from './internals/renderer-DowEJaeR.mjs';
3
+ export { D as DOMNativeNode } from './internals/renderer-DowEJaeR.mjs';
4
4
  import _ from 'lodash';
5
5
  import 'myers.js';
6
- import { c as useSyncExternalStore, u as useMemo, b as useCallback, a as useEffect } from './internals/sync-CxgNMmpR.mjs';
6
+ import { c as useSyncExternalStore, u as useMemo, b as useCallback, a as useEffect } from './internals/sync-CeJllG9M.mjs';
7
7
  import 'nextick';
8
8
  import 'postcss';
9
9
  import 'postcss-js';
10
10
  import 'postcss-nested';
11
- import './internals/runtime-BB51vIJ7.mjs';
12
- import './internals/renderer-D042jXUg.mjs';
11
+ import './internals/runtime-Dp4_akLf.mjs';
12
+ import './internals/renderer-CA9aKFMW.mjs';
13
13
 
14
14
  //
15
15
  // document.ts
@@ -35,6 +35,12 @@ import './internals/renderer-D042jXUg.mjs';
35
35
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
36
36
  // THE SOFTWARE.
37
37
  //
38
+ /**
39
+ * Hook to access the current document object in a web renderer.
40
+ *
41
+ * @returns The current document object.
42
+ * @throws Error if used outside of a render function or with an unsupported renderer.
43
+ */
38
44
  const useDocument = () => {
39
45
  const state = reconciler.currentHookState;
40
46
  if (!state)
@@ -71,6 +77,12 @@ const useDocument = () => {
71
77
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
72
78
  // THE SOFTWARE.
73
79
  //
80
+ /**
81
+ * Hook to access the current window object in a web renderer.
82
+ *
83
+ * @returns The current window object.
84
+ * @throws Error if used outside of a render function or with an unsupported renderer.
85
+ */
74
86
  const useWindow = () => {
75
87
  const state = reconciler.currentHookState;
76
88
  if (!state)
@@ -116,6 +128,12 @@ const safeAreaInsets = (window) => {
116
128
  style.remove();
117
129
  return _.mapValues(insets, v => parseFloat(v));
118
130
  };
131
+ /**
132
+ * A hook that provides various metrics of the window object.
133
+ * It listens to the 'resize' event to update the metrics.
134
+ *
135
+ * @returns An object containing safe area insets, device pixel ratio, outer and inner dimensions of the window.
136
+ */
119
137
  const useWindowMetrics = () => {
120
138
  const window = useWindow();
121
139
  return useSyncExternalStore((onStoreChange) => {
@@ -132,6 +150,12 @@ const useWindowMetrics = () => {
132
150
  innerHeight: window.innerHeight,
133
151
  }));
134
152
  };
153
+ /**
154
+ * A hook that provides metrics of the visual viewport.
155
+ * It listens to the 'resize' event of the visual viewport to update the metrics.
156
+ *
157
+ * @returns An object containing width, height, and scale of the visual viewport.
158
+ */
135
159
  const useVisualViewportMetrics = () => {
136
160
  const { visualViewport } = useWindow();
137
161
  return useSyncExternalStore((onStoreChange) => {
@@ -145,6 +169,12 @@ const useVisualViewportMetrics = () => {
145
169
  scale: visualViewport.scale,
146
170
  }));
147
171
  };
172
+ /**
173
+ * A hook that provides the current scroll position of the window.
174
+ * It listens to the 'scroll' event to update the position.
175
+ *
176
+ * @returns An object containing scrollX and scrollY values.
177
+ */
148
178
  const useWindowScroll = () => {
149
179
  const window = useWindow();
150
180
  return useSyncExternalStore((onStoreChange) => {
@@ -158,6 +188,12 @@ const useWindowScroll = () => {
158
188
  }));
159
189
  };
160
190
  const colorSchemeDarkCache = new WeakMap();
191
+ /**
192
+ * A hook that detects the user's preferred color scheme (light or dark).
193
+ * It listens to changes in the '(prefers-color-scheme: dark)' media query.
194
+ *
195
+ * @returns A string indicating the current color scheme: 'light' or 'dark'.
196
+ */
161
197
  const useColorScheme = () => {
162
198
  const window = useWindow();
163
199
  if (!colorSchemeDarkCache.has(window))
@@ -346,6 +382,13 @@ const observer = typeof window === 'undefined' ? undefined : {
346
382
  resize: createObserver(ResizeObserver),
347
383
  intersection: createObserver(IntersectionObserver),
348
384
  };
385
+ /**
386
+ * A hook that sets up a ResizeObserver on the given target element.
387
+ *
388
+ * @param target - The target element or a ref object containing the target element.
389
+ * @param callback - The callback function to be called when the target element is resized.
390
+ * @param options - Optional ResizeObserverOptions to configure the observer.
391
+ */
349
392
  const useResizeObserver = (target, callback, options) => {
350
393
  const _callback = useCallback(callback);
351
394
  useEffect(() => {
@@ -356,6 +399,12 @@ const useResizeObserver = (target, callback, options) => {
356
399
  return () => observer.resize.unobserve(_target, _callback);
357
400
  }, [target]);
358
401
  };
402
+ /**
403
+ * A hook that sets up an IntersectionObserver on the given target element.
404
+ *
405
+ * @param target - The target element or a ref object containing the target element.
406
+ * @param callback - The callback function to be called when the target element's intersection changes.
407
+ */
359
408
  const useIntersectionObserver = (target, callback) => {
360
409
  const _callback = useCallback(callback);
361
410
  useEffect(() => {
@@ -366,6 +415,13 @@ const useIntersectionObserver = (target, callback) => {
366
415
  return () => observer.intersection.unobserve(_target, _callback);
367
416
  }, [target]);
368
417
  };
418
+ /**
419
+ * A hook that sets up a MutationObserver on the given target node.
420
+ *
421
+ * @param target - The target node or a ref object containing the target node.
422
+ * @param callback - The callback function to be called when mutations are observed.
423
+ * @param options - Optional MutationObserverInit to configure the observer.
424
+ */
369
425
  const useMutationObserver = (target, callback, options) => {
370
426
  const _callback = useCallback(callback);
371
427
  useEffect(() => {
@@ -377,6 +433,12 @@ const useMutationObserver = (target, callback, options) => {
377
433
  return () => observer.disconnect();
378
434
  }, [target]);
379
435
  };
436
+ /**
437
+ * A hook that sets up a PerformanceObserver with the given callback and options.
438
+ *
439
+ * @param callback - The callback function to be called when performance entries are observed.
440
+ * @param options - Optional PerformanceObserverInit to configure the observer.
441
+ */
380
442
  const usePerformanceObserver = (callback, options) => {
381
443
  const _callback = useCallback(callback);
382
444
  useEffect(() => {
@@ -412,6 +474,12 @@ const usePerformanceObserver = (callback, options) => {
412
474
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
413
475
  // THE SOFTWARE.
414
476
  //
477
+ /**
478
+ * A hook that returns the current online status of the browser.
479
+ * It listens to the 'online' and 'offline' events to update the status.
480
+ *
481
+ * @returns A boolean indicating whether the browser is online.
482
+ */
415
483
  const useOnline = () => useSyncExternalStore((onStoreChange) => {
416
484
  window.addEventListener('offline', onStoreChange);
417
485
  window.addEventListener('online', onStoreChange);
@@ -551,6 +619,15 @@ const decompress = (compressedInput) => {
551
619
  // THE SOFTWARE.
552
620
  //
553
621
  const decodedSsrData = new WeakMap();
622
+ /**
623
+ * A hook to manage server-side resources in a web renderer.
624
+ * It allows tracking and retrieving resources identified by a key.
625
+ *
626
+ * @param key - The unique key for the resource.
627
+ * @param resource - An optional function that returns the resource string when called on the server side.
628
+ * @returns The resource string if available, otherwise undefined.
629
+ * @throws Error if used outside of a render function or with an unsupported renderer.
630
+ */
554
631
  const useServerResource = (key, resource) => {
555
632
  const state = reconciler.currentHookState;
556
633
  if (!state)
@@ -654,7 +731,23 @@ const _useStorage = (storage, key, initialValue) => {
654
731
  }, [key]);
655
732
  return [state ?? initialValue ?? null, setState];
656
733
  };
734
+ /**
735
+ * A hook to manage a value in localStorage.
736
+ * It provides a stateful value and a function to update it.
737
+ *
738
+ * @param key - The key in localStorage to manage.
739
+ * @param initialValue - An optional initial value if the key does not exist in localStorage.
740
+ * @returns A tuple containing the current value and a function to update it.
741
+ */
657
742
  const useLocalStorage = (key, initialValue) => _useStorage(() => window.localStorage, key, initialValue);
743
+ /**
744
+ * A hook to manage a value in sessionStorage.
745
+ * It provides a stateful value and a function to update it.
746
+ *
747
+ * @param key - The key in sessionStorage to manage.
748
+ * @param initialValue - An optional initial value if the key does not exist in sessionStorage.
749
+ * @returns A tuple containing the current value and a function to update it.
750
+ */
658
751
  const useSessionStorage = (key, initialValue) => _useStorage(() => window.sessionStorage, key, initialValue);
659
752
 
660
753
  //
@@ -681,6 +774,12 @@ const useSessionStorage = (key, initialValue) => _useStorage(() => window.sessio
681
774
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
682
775
  // THE SOFTWARE.
683
776
  //
777
+ /**
778
+ * A hook to get the current visibility state of the document.
779
+ * It listens to the 'visibilitychange' event to update the state.
780
+ *
781
+ * @returns A string indicating the current visibility state: 'active', 'inactive', 'background', or 'unknown'.
782
+ */
684
783
  const useVisibility = () => {
685
784
  const document = useDocument();
686
785
  return useSyncExternalStore((onStoreChange) => {
package/dist/web.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.mjs","sources":["../../src/web/document.ts","../../src/web/window.ts","../../src/web/location.ts","../../src/web/observer.ts","../../src/web/online.ts","../../src/renderer/minify/decompress.ts","../../src/web/server.ts","../../src/web/storage.ts","../../src/web/visibility.ts"],"sourcesContent":["//\n// document.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\n\nexport const useDocument = () => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useDocument must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n return state.renderer.document;\n } else {\n throw Error('Unsupported renderer.');\n }\n}","//\n// window.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { uniqueId } from '../core/utils';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\n\nexport const useWindow = () => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useWindow must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n return state.renderer.window;\n } else {\n throw Error('Unsupported renderer.');\n }\n}\n\nconst emptyInsets = { top: 0, left: 0, right: 0, bottom: 0 };\nconst safeAreaInsets = (window: ReturnType<typeof useWindow>) => {\n let support;\n if (!('CSS' in window) || !_.isFunction(window.CSS.supports)) {\n return emptyInsets;\n }\n if (window.CSS.supports('top: env(safe-area-inset-top)')) {\n support = 'env'\n } else if (window.CSS.supports('top: constant(safe-area-inset-top)')) {\n support = 'constant'\n } else {\n return emptyInsets;\n }\n const id = uniqueId();\n const style = document.createElement('style');\n style.textContent = `:root {\n --${id}-top: ${support}(safe-area-inset-top);\n --${id}-left: ${support}(safe-area-inset-left);\n --${id}-right: ${support}(safe-area-inset-right);\n --${id}-bottom: ${support}(safe-area-inset-bottom);\n }`;\n document.head.appendChild(style);\n const computedStyle = getComputedStyle(document.documentElement);\n const insets = {\n top: computedStyle.getPropertyValue(`--${id}-top`),\n left: computedStyle.getPropertyValue(`--${id}-left`),\n right: computedStyle.getPropertyValue(`--${id}-right`),\n bottom: computedStyle.getPropertyValue(`--${id}-bottom`),\n };\n style.remove();\n return _.mapValues(insets, v => parseFloat(v));\n}\n\nexport const useWindowMetrics = () => {\n const window = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('resize', onStoreChange);\n return () => {\n window.removeEventListener('resize', onStoreChange);\n };\n }, () => ({\n safeAreaInsets: safeAreaInsets(window),\n devicePixelRatio: window.devicePixelRatio,\n outerWidth: window.outerWidth,\n outerHeight: window.outerHeight,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n }));\n}\n\nexport const useVisualViewportMetrics = () => {\n const { visualViewport } = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n visualViewport?.addEventListener('resize', onStoreChange);\n return () => {\n visualViewport?.removeEventListener('resize', onStoreChange);\n };\n }, () => visualViewport && ({\n width: visualViewport.width,\n height: visualViewport.height,\n scale: visualViewport.scale,\n }));\n}\n\nexport const useWindowScroll = () => {\n const window = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('scroll', onStoreChange);\n return () => {\n window.removeEventListener('scroll', onStoreChange);\n };\n }, () => ({\n scrollX: window.scrollX,\n scrollY: window.scrollY,\n }));\n}\n\nconst colorSchemeDarkCache = new WeakMap<ReturnType<typeof useWindow>, MediaQueryList | undefined>();\n\nexport const useColorScheme = () => {\n const window = useWindow();\n if (!colorSchemeDarkCache.has(window)) colorSchemeDarkCache.set(window, window.matchMedia?.('(prefers-color-scheme: dark)'));\n const colorSchemeDark = colorSchemeDarkCache.get(window);\n return useSyncExternalStore((onStoreChange) => {\n colorSchemeDark?.addEventListener('change', onStoreChange);\n return () => {\n colorSchemeDark?.removeEventListener('change', onStoreChange);\n };\n }, () => colorSchemeDark?.matches ? 'dark' : 'light');\n}\n","//\n// location.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useMemo } from '../core/hooks/memo';\nimport { useCallback } from '../core/hooks/callback';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { EventEmitter } from '../core/reconciler/events';\nimport { SetStateAction } from '../core/types/common';\nimport { useWindow } from './window';\n\nconst emitters = new WeakMap<Document, EventEmitter>();\nconst emitterFor = (document: Document) => {\n if (!emitters.has(document)) emitters.set(document, new EventEmitter());\n return emitters.get(document)!;\n}\n\n/**\n * A hook that provides the current browser location and methods to manipulate the browser history.\n *\n * @returns An object with the following properties and methods:\n * - `hash`: The fragment identifier of the URL.\n * - `host`: The hostname and port number.\n * - `hostname`: The domain name.\n * - `href`: The full URL.\n * - `origin`: The protocol, hostname, and port.\n * - `pathname`: The path of the URL.\n * - `port`: The port number.\n * - `protocol`: The protocol scheme.\n * - `search`: The query string.\n * - `state`: The current state object associated with the history entry.\n * - `back()`: Navigates to the previous entry in the history stack.\n * - `forward()`: Navigates to the next entry in the history stack.\n * - `pushState(data, url)`: Pushes a new entry onto the history stack.\n * - `replaceState(data, url)`: Replaces the current history entry.\n *\n * The hook subscribes to changes in the browser's history and location, causing components to re-render when navigation occurs.\n *\n * @example\n * const location = useLocation();\n * console.log(location.pathname); // e.g., \"/about\"\n * location.pushState({ some: 'state' }, '/new-path');\n */\nexport const useLocation = () => {\n const window = useWindow();\n const emitter = emitterFor(window.document);\n const result = (history?: History) => ({\n ..._.pick(window.document.location, 'hash', 'host', 'hostname', 'href', 'origin', 'pathname', 'port', 'protocol', 'search'),\n state: history?.state ?? null,\n back: () => {\n history?.back();\n },\n forward: () => {\n history?.forward();\n emitter.emit('change');\n },\n pushState: (data: any, url?: string | URL | null) => {\n history?.pushState(data, '', url);\n emitter.emit('change');\n },\n replaceState: (data: any, url?: string | URL | null) => {\n history?.replaceState(data, '', url);\n emitter.emit('change');\n },\n });\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('popstate', onStoreChange);\n const event = emitter.register('change', onStoreChange);\n return () => {\n window.removeEventListener('popstate', onStoreChange);\n event.remove();\n }\n }, () => result(window.history));\n}\n\n/**\n * A hook for reading and updating the URL's query string (search parameters).\n *\n * @returns A tuple:\n * - The first element is a `URLSearchParams` instance representing the current query string.\n * - The second element is a function to update the search parameters, which accepts any valid\n * `URLSearchParams` initializer (string, array, or object).\n *\n * Updating the search parameters will push a new history entry and update the URL in the address bar.\n *\n * @example\n * const [searchParams, setSearchParams] = useSearchParams();\n * const page = searchParams.get('page');\n * setSearchParams({ page: '2', filter: 'active' });\n */\nexport const useSearchParams = () => {\n const location = useLocation();\n const searchParams = useMemo(() => new URLSearchParams(location.search), [location.search]);\n type URLSearchParamsInit = ConstructorParameters<typeof URLSearchParams>[0];\n const setSearchParams = useCallback((\n dispatch: SetStateAction<URLSearchParamsInit, URLSearchParams>,\n config?: {\n replace?: boolean;\n },\n ) => {\n const params = _.isFunction(dispatch) ? dispatch(new URLSearchParams(location.search)) : dispatch;\n const newParams = new URLSearchParams(params);\n if (config?.replace === false) {\n location.pushState(location.state, `?${newParams.toString()}`);\n } else {\n location.replaceState(location.state, `?${newParams.toString()}`);\n }\n });\n return [searchParams, setSearchParams] as const;\n}\n","//\n// observer.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useEffect } from '../core/hooks/effect';\nimport { useCallback } from '../core/hooks/callback';\nimport { RefObject } from '../core/types/common';\n\ninterface _Observer<T> {\n observe(target: Element, options?: T): void;\n unobserve(target: Element): void;\n}\n\nconst createObserver = <E extends { target: Element; }, T>(\n constructor: new (callback: (entries: E[]) => void) => _Observer<T>\n) => {\n const listeners = new WeakMap<Element, ((entry: E) => void)[]>();\n const observer = new constructor((entries) => {\n for (const entry of entries) {\n for (const listener of listeners.get(entry.target) ?? []) {\n (async () => {\n try {\n await listener(entry);\n } catch (e) {\n console.error(e);\n }\n })();\n }\n }\n });\n return {\n observe: (target: Element, callback: (entry: E) => void, options?: T) => {\n observer.observe(target, options);\n listeners.set(target, [...listeners.get(target) ?? [], callback]);\n },\n unobserve: (target: Element, callback: (entry: E) => void) => {\n const list = _.filter(listeners.get(target), x => x !== callback);\n listeners.set(target, list);\n if (_.isEmpty(list)) observer.unobserve?.(target);\n },\n };\n};\n\nconst observer = typeof window === 'undefined' ? undefined : {\n resize: createObserver(ResizeObserver),\n intersection: createObserver(IntersectionObserver),\n};\n\nexport const useResizeObserver = (\n target: RefObject<Element | null | undefined> | Element | null | undefined,\n callback: (entry: ResizeObserverEntry) => void,\n options?: ResizeObserverOptions,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (!observer || !_target) return;\n observer.resize.observe(_target, _callback, options);\n return () => observer.resize.unobserve(_target, _callback);\n }, [target]);\n}\n\nexport const useIntersectionObserver = (\n target: RefObject<Element | null | undefined> | Element | null | undefined,\n callback: (entry: IntersectionObserverEntry) => void,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (!observer || !_target) return;\n observer.intersection.observe(_target, _callback);\n return () => observer.intersection.unobserve(_target, _callback);\n }, [target]);\n}\n\nexport const useMutationObserver = (\n target: RefObject<Node | null | undefined> | Node | null | undefined,\n callback: MutationCallback,\n options?: MutationObserverInit,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (typeof window === 'undefined' || !_target) return;\n const observer = new MutationObserver(_callback);\n observer.observe(_target, options);\n return () => observer.disconnect();\n }, [target]);\n}\n\nexport const usePerformanceObserver = (\n callback: PerformanceObserverCallback,\n options?: PerformanceObserverInit,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const observer = new PerformanceObserver(_callback);\n observer.observe(options);\n return () => observer.disconnect();\n }, []);\n}\n","//\n// online.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\n\nexport const useOnline = () => useSyncExternalStore((onStoreChange) => {\n window.addEventListener('offline', onStoreChange);\n window.addEventListener('online', onStoreChange);\n return () => {\n window.removeEventListener('offline', onStoreChange);\n window.removeEventListener('online', onStoreChange);\n };\n}, () => navigator.onLine, () => false);","//\n// decompress.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n/**\n * Decompresses a string that was compressed using the compress function\n * @param compressedInput - The compressed string to decompress\n * @returns The original uncompressed string\n */\nexport const decompress = (compressedInput: string): string => {\n // Algorithm state variables\n let previousEntry: string | undefined;\n let bitValue = 0;\n let bitIndex = 0;\n let currentEntry: string | number;\n let charCode = 0;\n\n // Dictionary for storing code->string mappings during decompression\n const dictionary: string[] = [];\n\n // Decompression parameters\n let resetCounter = 1;\n let nextCode = 3;\n let bitsPerCode = 1;\n\n // Output buffer - memory optimized with mutable string\n let result = \"\";\n\n // Bit reading state\n let bitBuffer = 0;\n let inputPosition = 0;\n\n /**\n * Reads the specified number of bits from the compressed input\n * @param numBits - Number of bits to read\n */\n function readBits(numBits: number): void {\n bitIndex = bitValue = 0;\n\n while (bitIndex < numBits) {\n // Refill bit buffer when needed\n if (bitBuffer < 2) {\n bitBuffer = 64;\n charCode = compressedInput.charCodeAt(inputPosition++);\n // Convert from custom alphabet back to numeric value\n charCode = charCode > 92 ? charCode - 59 : charCode - 58;\n }\n\n // Extract bits and build the value\n bitValue |= ((charCode & (bitBuffer /= 2)) > 0 ? 1 : 0) << bitIndex;\n ++bitIndex;\n }\n }\n\n // Main decompression loop\n while (true) {\n // Read the next code from input\n readBits(bitsPerCode + 1);\n\n // Check for end-of-stream marker\n if (bitValue === 2) {\n return result;\n }\n\n // Handle the current code\n currentEntry = bitValue;\n\n // Check if this is a character code (bit pattern check)\n if ((-2 & (currentEntry as number)) === 0) {\n // This is a raw character code, read the character value\n readBits(8 * bitValue + 8);\n\n // Create dictionary entry for this character\n currentEntry = nextCode++;\n dictionary[currentEntry] = String.fromCharCode(bitValue);\n\n // Update compression parameters\n if (--resetCounter === 0) {\n resetCounter = 2 << bitsPerCode++;\n }\n }\n\n // Get the string for this code (from dictionary or construct it)\n const entryString = dictionary[currentEntry as number] || (previousEntry ? previousEntry + previousEntry[0] : \"\");\n\n // Add to output using string concatenation\n result += entryString;\n\n // Update dictionary with new combination if we have a previous entry\n if (previousEntry) {\n dictionary[nextCode++] = previousEntry + entryString[0];\n\n // Update compression parameters\n if (--resetCounter === 0) {\n resetCounter = 2 << bitsPerCode++;\n }\n }\n\n // Remember this entry for next iteration\n previousEntry = entryString;\n }\n};\n","//\n// server.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\nimport { decompress } from '../renderer/minify/decompress';\n\nconst decodedSsrData = new WeakMap<Document, any>();\n\nexport const useServerResource = (key: string, resource?: () => string): string | undefined => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useServerResource must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n if (state.renderer._server) {\n const data = resource?.();\n if (!_.isString(data)) throw Error('Invalid return type of resource');\n state.renderer._tracked_server_resource.set(key, data);\n return data;\n } else {\n const cached = decodedSsrData.get(state.renderer.document);\n if (!_.isNil(cached)) return cached[key];\n const ssrData = state.renderer.document.querySelector('script[data-frosty-ssr-data]');\n if (ssrData instanceof HTMLElement) {\n try {\n const decoded = JSON.parse(decompress(ssrData.innerText.trim()));\n decodedSsrData.set(state.renderer.document, decoded);\n return decoded[key];\n } catch (e) {\n console.error(e);\n decodedSsrData.set(state.renderer.document, {});\n }\n ssrData.remove();\n } else {\n decodedSsrData.set(state.renderer.document, {});\n }\n }\n } else {\n throw Error('Unsupported renderer.');\n }\n}\n","//\n// storage.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { useCallback } from '../core/hooks/callback';\nimport { SetStateAction } from '../core/types/common';\nimport { EventEmitter } from '../core/reconciler/events';\n\nconst emitters = new WeakMap<Storage, EventEmitter>();\nconst emitterFor = (storage: Storage) => {\n if (!emitters.has(storage)) emitters.set(storage, new EventEmitter());\n return emitters.get(storage)!;\n}\n\nconst _useStorage = (\n storage: () => Storage,\n key: string,\n initialValue?: string | null\n) => {\n const state = useSyncExternalStore((onStoreChange) => {\n const _storage = storage();\n const emitter = emitterFor(_storage);\n const callback = (ev: StorageEvent) => { \n if (!ev.storageArea || ev.storageArea === _storage) onStoreChange();\n };\n window.addEventListener('storage', callback);\n const event = emitter.register('change', onStoreChange);\n return () => {\n window.removeEventListener('storage', callback);\n event.remove();\n }\n }, () => storage().getItem(key), () => undefined);\n const setState = useCallback((v: SetStateAction<string | null | undefined>) => {\n try {\n const _storage = storage();\n const newValue = _.isFunction(v) ? v(state) : v;\n if (_.isNil(newValue)) {\n _storage.removeItem(key);\n } else {\n _storage.setItem(key, newValue);\n }\n const emitter = emitterFor(_storage);\n emitter.emit('change');\n } catch (e) {\n console.error(e);\n }\n }, [key]);\n return [state ?? initialValue ?? null, setState] as const;\n}\n\nexport const useLocalStorage = (\n key: string,\n initialValue?: string | null\n) => _useStorage(() => window.localStorage, key, initialValue);\n\nexport const useSessionStorage = (\n key: string,\n initialValue?: string | null\n) => _useStorage(() => window.sessionStorage, key, initialValue);\n","//\n// visibility.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { useDocument } from './document';\n\nexport const useVisibility = () => {\n const document = useDocument();\n return useSyncExternalStore((onStoreChange) => {\n document.addEventListener('visibilitychange', onStoreChange);\n return () => {\n document.removeEventListener('visibilitychange', onStoreChange);\n }\n }, () => {\n if (document.hasFocus()) {\n return 'active' as const;\n } else if (document.visibilityState === 'visible') {\n return 'inactive' as const;\n } else {\n return 'background' as const;\n }\n }, () => 'unknown' as const);\n}\n"],"names":["emitters","emitterFor"],"mappings":"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"}
1
+ {"version":3,"file":"web.mjs","sources":["../../src/web/document.ts","../../src/web/window.ts","../../src/web/location.ts","../../src/web/observer.ts","../../src/web/online.ts","../../src/renderer/minify/decompress.ts","../../src/web/server.ts","../../src/web/storage.ts","../../src/web/visibility.ts"],"sourcesContent":["//\n// document.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\n\n/**\n * Hook to access the current document object in a web renderer.\n * \n * @returns The current document object.\n * @throws Error if used outside of a render function or with an unsupported renderer.\n */\nexport const useDocument = () => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useDocument must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n return state.renderer.document;\n } else {\n throw Error('Unsupported renderer.');\n }\n}","//\n// window.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { uniqueId } from '../core/utils';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\n\n/**\n * Hook to access the current window object in a web renderer.\n * \n * @returns The current window object.\n * @throws Error if used outside of a render function or with an unsupported renderer.\n */\nexport const useWindow = () => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useWindow must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n return state.renderer.window;\n } else {\n throw Error('Unsupported renderer.');\n }\n}\n\nconst emptyInsets = { top: 0, left: 0, right: 0, bottom: 0 };\nconst safeAreaInsets = (window: ReturnType<typeof useWindow>) => {\n let support;\n if (!('CSS' in window) || !_.isFunction(window.CSS.supports)) {\n return emptyInsets;\n }\n if (window.CSS.supports('top: env(safe-area-inset-top)')) {\n support = 'env'\n } else if (window.CSS.supports('top: constant(safe-area-inset-top)')) {\n support = 'constant'\n } else {\n return emptyInsets;\n }\n const id = uniqueId();\n const style = document.createElement('style');\n style.textContent = `:root {\n --${id}-top: ${support}(safe-area-inset-top);\n --${id}-left: ${support}(safe-area-inset-left);\n --${id}-right: ${support}(safe-area-inset-right);\n --${id}-bottom: ${support}(safe-area-inset-bottom);\n }`;\n document.head.appendChild(style);\n const computedStyle = getComputedStyle(document.documentElement);\n const insets = {\n top: computedStyle.getPropertyValue(`--${id}-top`),\n left: computedStyle.getPropertyValue(`--${id}-left`),\n right: computedStyle.getPropertyValue(`--${id}-right`),\n bottom: computedStyle.getPropertyValue(`--${id}-bottom`),\n };\n style.remove();\n return _.mapValues(insets, v => parseFloat(v));\n}\n\n/**\n * A hook that provides various metrics of the window object.\n * It listens to the 'resize' event to update the metrics.\n * \n * @returns An object containing safe area insets, device pixel ratio, outer and inner dimensions of the window.\n */\nexport const useWindowMetrics = () => {\n const window = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('resize', onStoreChange);\n return () => {\n window.removeEventListener('resize', onStoreChange);\n };\n }, () => ({\n safeAreaInsets: safeAreaInsets(window),\n devicePixelRatio: window.devicePixelRatio,\n outerWidth: window.outerWidth,\n outerHeight: window.outerHeight,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n }));\n}\n\n/** \n * A hook that provides metrics of the visual viewport.\n * It listens to the 'resize' event of the visual viewport to update the metrics.\n * \n * @returns An object containing width, height, and scale of the visual viewport.\n */\nexport const useVisualViewportMetrics = () => {\n const { visualViewport } = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n visualViewport?.addEventListener('resize', onStoreChange);\n return () => {\n visualViewport?.removeEventListener('resize', onStoreChange);\n };\n }, () => visualViewport && ({\n width: visualViewport.width,\n height: visualViewport.height,\n scale: visualViewport.scale,\n }));\n}\n\n/**\n * A hook that provides the current scroll position of the window.\n * It listens to the 'scroll' event to update the position.\n * \n * @returns An object containing scrollX and scrollY values.\n */\nexport const useWindowScroll = () => {\n const window = useWindow();\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('scroll', onStoreChange);\n return () => {\n window.removeEventListener('scroll', onStoreChange);\n };\n }, () => ({\n scrollX: window.scrollX,\n scrollY: window.scrollY,\n }));\n}\n\nconst colorSchemeDarkCache = new WeakMap<ReturnType<typeof useWindow>, MediaQueryList | undefined>();\n\n/**\n * A hook that detects the user's preferred color scheme (light or dark).\n * It listens to changes in the '(prefers-color-scheme: dark)' media query.\n * \n * @returns A string indicating the current color scheme: 'light' or 'dark'.\n */\nexport const useColorScheme = () => {\n const window = useWindow();\n if (!colorSchemeDarkCache.has(window)) colorSchemeDarkCache.set(window, window.matchMedia?.('(prefers-color-scheme: dark)'));\n const colorSchemeDark = colorSchemeDarkCache.get(window);\n return useSyncExternalStore((onStoreChange) => {\n colorSchemeDark?.addEventListener('change', onStoreChange);\n return () => {\n colorSchemeDark?.removeEventListener('change', onStoreChange);\n };\n }, () => colorSchemeDark?.matches ? 'dark' : 'light');\n}\n","//\n// location.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useMemo } from '../core/hooks/memo';\nimport { useCallback } from '../core/hooks/callback';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { EventEmitter } from '../core/reconciler/events';\nimport { SetStateAction } from '../core/types/common';\nimport { useWindow } from './window';\n\nconst emitters = new WeakMap<Document, EventEmitter>();\nconst emitterFor = (document: Document) => {\n if (!emitters.has(document)) emitters.set(document, new EventEmitter());\n return emitters.get(document)!;\n}\n\n/**\n * A hook that provides the current browser location and methods to manipulate the browser history.\n *\n * @returns An object with the following properties and methods:\n * - `hash`: The fragment identifier of the URL.\n * - `host`: The hostname and port number.\n * - `hostname`: The domain name.\n * - `href`: The full URL.\n * - `origin`: The protocol, hostname, and port.\n * - `pathname`: The path of the URL.\n * - `port`: The port number.\n * - `protocol`: The protocol scheme.\n * - `search`: The query string.\n * - `state`: The current state object associated with the history entry.\n * - `back()`: Navigates to the previous entry in the history stack.\n * - `forward()`: Navigates to the next entry in the history stack.\n * - `pushState(data, url)`: Pushes a new entry onto the history stack.\n * - `replaceState(data, url)`: Replaces the current history entry.\n *\n * The hook subscribes to changes in the browser's history and location, causing components to re-render when navigation occurs.\n *\n * @example\n * const location = useLocation();\n * console.log(location.pathname); // e.g., \"/about\"\n * location.pushState({ some: 'state' }, '/new-path');\n */\nexport const useLocation = () => {\n const window = useWindow();\n const emitter = emitterFor(window.document);\n const result = (history?: History) => ({\n ..._.pick(window.document.location, 'hash', 'host', 'hostname', 'href', 'origin', 'pathname', 'port', 'protocol', 'search'),\n state: history?.state ?? null,\n back: () => {\n history?.back();\n },\n forward: () => {\n history?.forward();\n emitter.emit('change');\n },\n pushState: (data: any, url?: string | URL | null) => {\n history?.pushState(data, '', url);\n emitter.emit('change');\n },\n replaceState: (data: any, url?: string | URL | null) => {\n history?.replaceState(data, '', url);\n emitter.emit('change');\n },\n });\n return useSyncExternalStore((onStoreChange) => {\n window.addEventListener('popstate', onStoreChange);\n const event = emitter.register('change', onStoreChange);\n return () => {\n window.removeEventListener('popstate', onStoreChange);\n event.remove();\n }\n }, () => result(window.history));\n}\n\n/**\n * A hook for reading and updating the URL's query string (search parameters).\n *\n * @returns A tuple:\n * - The first element is a `URLSearchParams` instance representing the current query string.\n * - The second element is a function to update the search parameters, which accepts any valid\n * `URLSearchParams` initializer (string, array, or object).\n *\n * Updating the search parameters will push a new history entry and update the URL in the address bar.\n *\n * @example\n * const [searchParams, setSearchParams] = useSearchParams();\n * const page = searchParams.get('page');\n * setSearchParams({ page: '2', filter: 'active' });\n */\nexport const useSearchParams = () => {\n const location = useLocation();\n const searchParams = useMemo(() => new URLSearchParams(location.search), [location.search]);\n type URLSearchParamsInit = ConstructorParameters<typeof URLSearchParams>[0];\n const setSearchParams = useCallback((\n dispatch: SetStateAction<URLSearchParamsInit, URLSearchParams>,\n config?: {\n replace?: boolean;\n },\n ) => {\n const params = _.isFunction(dispatch) ? dispatch(new URLSearchParams(location.search)) : dispatch;\n const newParams = new URLSearchParams(params);\n if (config?.replace === false) {\n location.pushState(location.state, `?${newParams.toString()}`);\n } else {\n location.replaceState(location.state, `?${newParams.toString()}`);\n }\n });\n return [searchParams, setSearchParams] as const;\n}\n","//\n// observer.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useEffect } from '../core/hooks/effect';\nimport { useCallback } from '../core/hooks/callback';\nimport { RefObject } from '../core/types/common';\n\ninterface _Observer<T> {\n observe(target: Element, options?: T): void;\n unobserve(target: Element): void;\n}\n\nconst createObserver = <E extends { target: Element; }, T>(\n constructor: new (callback: (entries: E[]) => void) => _Observer<T>\n) => {\n const listeners = new WeakMap<Element, ((entry: E) => void)[]>();\n const observer = new constructor((entries) => {\n for (const entry of entries) {\n for (const listener of listeners.get(entry.target) ?? []) {\n (async () => {\n try {\n await listener(entry);\n } catch (e) {\n console.error(e);\n }\n })();\n }\n }\n });\n return {\n observe: (target: Element, callback: (entry: E) => void, options?: T) => {\n observer.observe(target, options);\n listeners.set(target, [...listeners.get(target) ?? [], callback]);\n },\n unobserve: (target: Element, callback: (entry: E) => void) => {\n const list = _.filter(listeners.get(target), x => x !== callback);\n listeners.set(target, list);\n if (_.isEmpty(list)) observer.unobserve?.(target);\n },\n };\n};\n\nconst observer = typeof window === 'undefined' ? undefined : {\n resize: createObserver(ResizeObserver),\n intersection: createObserver(IntersectionObserver),\n};\n\n/**\n * A hook that sets up a ResizeObserver on the given target element.\n * \n * @param target - The target element or a ref object containing the target element.\n * @param callback - The callback function to be called when the target element is resized.\n * @param options - Optional ResizeObserverOptions to configure the observer.\n */\nexport const useResizeObserver = (\n target: RefObject<Element | null | undefined> | Element | null | undefined,\n callback: (entry: ResizeObserverEntry) => void,\n options?: ResizeObserverOptions,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (!observer || !_target) return;\n observer.resize.observe(_target, _callback, options);\n return () => observer.resize.unobserve(_target, _callback);\n }, [target]);\n}\n\n/**\n * A hook that sets up an IntersectionObserver on the given target element.\n * \n * @param target - The target element or a ref object containing the target element.\n * @param callback - The callback function to be called when the target element's intersection changes.\n */\nexport const useIntersectionObserver = (\n target: RefObject<Element | null | undefined> | Element | null | undefined,\n callback: (entry: IntersectionObserverEntry) => void,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (!observer || !_target) return;\n observer.intersection.observe(_target, _callback);\n return () => observer.intersection.unobserve(_target, _callback);\n }, [target]);\n}\n\n/**\n * A hook that sets up a MutationObserver on the given target node.\n * \n * @param target - The target node or a ref object containing the target node.\n * @param callback - The callback function to be called when mutations are observed.\n * @param options - Optional MutationObserverInit to configure the observer.\n */\nexport const useMutationObserver = (\n target: RefObject<Node | null | undefined> | Node | null | undefined,\n callback: MutationCallback,\n options?: MutationObserverInit,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n const _target = target && 'current' in target ? target.current : target;\n if (typeof window === 'undefined' || !_target) return;\n const observer = new MutationObserver(_callback);\n observer.observe(_target, options);\n return () => observer.disconnect();\n }, [target]);\n}\n\n/**\n * A hook that sets up a PerformanceObserver with the given callback and options.\n * \n * @param callback - The callback function to be called when performance entries are observed.\n * @param options - Optional PerformanceObserverInit to configure the observer.\n */\nexport const usePerformanceObserver = (\n callback: PerformanceObserverCallback,\n options?: PerformanceObserverInit,\n) => {\n const _callback = useCallback(callback);\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const observer = new PerformanceObserver(_callback);\n observer.observe(options);\n return () => observer.disconnect();\n }, []);\n}\n","//\n// online.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\n\n/**\n * A hook that returns the current online status of the browser.\n * It listens to the 'online' and 'offline' events to update the status.\n * \n * @returns A boolean indicating whether the browser is online.\n */\nexport const useOnline = () => useSyncExternalStore((onStoreChange) => {\n window.addEventListener('offline', onStoreChange);\n window.addEventListener('online', onStoreChange);\n return () => {\n window.removeEventListener('offline', onStoreChange);\n window.removeEventListener('online', onStoreChange);\n };\n}, () => navigator.onLine, () => false);","//\n// decompress.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n/**\n * Decompresses a string that was compressed using the compress function\n * @param compressedInput - The compressed string to decompress\n * @returns The original uncompressed string\n */\nexport const decompress = (compressedInput: string): string => {\n // Algorithm state variables\n let previousEntry: string | undefined;\n let bitValue = 0;\n let bitIndex = 0;\n let currentEntry: string | number;\n let charCode = 0;\n\n // Dictionary for storing code->string mappings during decompression\n const dictionary: string[] = [];\n\n // Decompression parameters\n let resetCounter = 1;\n let nextCode = 3;\n let bitsPerCode = 1;\n\n // Output buffer - memory optimized with mutable string\n let result = \"\";\n\n // Bit reading state\n let bitBuffer = 0;\n let inputPosition = 0;\n\n /**\n * Reads the specified number of bits from the compressed input\n * @param numBits - Number of bits to read\n */\n function readBits(numBits: number): void {\n bitIndex = bitValue = 0;\n\n while (bitIndex < numBits) {\n // Refill bit buffer when needed\n if (bitBuffer < 2) {\n bitBuffer = 64;\n charCode = compressedInput.charCodeAt(inputPosition++);\n // Convert from custom alphabet back to numeric value\n charCode = charCode > 92 ? charCode - 59 : charCode - 58;\n }\n\n // Extract bits and build the value\n bitValue |= ((charCode & (bitBuffer /= 2)) > 0 ? 1 : 0) << bitIndex;\n ++bitIndex;\n }\n }\n\n // Main decompression loop\n while (true) {\n // Read the next code from input\n readBits(bitsPerCode + 1);\n\n // Check for end-of-stream marker\n if (bitValue === 2) {\n return result;\n }\n\n // Handle the current code\n currentEntry = bitValue;\n\n // Check if this is a character code (bit pattern check)\n if ((-2 & (currentEntry as number)) === 0) {\n // This is a raw character code, read the character value\n readBits(8 * bitValue + 8);\n\n // Create dictionary entry for this character\n currentEntry = nextCode++;\n dictionary[currentEntry] = String.fromCharCode(bitValue);\n\n // Update compression parameters\n if (--resetCounter === 0) {\n resetCounter = 2 << bitsPerCode++;\n }\n }\n\n // Get the string for this code (from dictionary or construct it)\n const entryString = dictionary[currentEntry as number] || (previousEntry ? previousEntry + previousEntry[0] : \"\");\n\n // Add to output using string concatenation\n result += entryString;\n\n // Update dictionary with new combination if we have a previous entry\n if (previousEntry) {\n dictionary[nextCode++] = previousEntry + entryString[0];\n\n // Update compression parameters\n if (--resetCounter === 0) {\n resetCounter = 2 << bitsPerCode++;\n }\n }\n\n // Remember this entry for next iteration\n previousEntry = entryString;\n }\n};\n","//\n// server.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { reconciler } from '../core/reconciler/state';\nimport { _DOMRenderer } from '../renderer/common';\nimport { decompress } from '../renderer/minify/decompress';\n\nconst decodedSsrData = new WeakMap<Document, any>();\n\n/**\n * A hook to manage server-side resources in a web renderer.\n * It allows tracking and retrieving resources identified by a key.\n * \n * @param key - The unique key for the resource.\n * @param resource - An optional function that returns the resource string when called on the server side.\n * @returns The resource string if available, otherwise undefined.\n * @throws Error if used outside of a render function or with an unsupported renderer.\n */\nexport const useServerResource = (key: string, resource?: () => string): string | undefined => {\n const state = reconciler.currentHookState;\n if (!state) throw Error('useServerResource must be used within a render function.');\n if (state.renderer instanceof _DOMRenderer) {\n if (state.renderer._server) {\n const data = resource?.();\n if (!_.isString(data)) throw Error('Invalid return type of resource');\n state.renderer._tracked_server_resource.set(key, data);\n return data;\n } else {\n const cached = decodedSsrData.get(state.renderer.document);\n if (!_.isNil(cached)) return cached[key];\n const ssrData = state.renderer.document.querySelector('script[data-frosty-ssr-data]');\n if (ssrData instanceof HTMLElement) {\n try {\n const decoded = JSON.parse(decompress(ssrData.innerText.trim()));\n decodedSsrData.set(state.renderer.document, decoded);\n return decoded[key];\n } catch (e) {\n console.error(e);\n decodedSsrData.set(state.renderer.document, {});\n }\n ssrData.remove();\n } else {\n decodedSsrData.set(state.renderer.document, {});\n }\n }\n } else {\n throw Error('Unsupported renderer.');\n }\n}\n","//\n// storage.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { useCallback } from '../core/hooks/callback';\nimport { SetStateAction } from '../core/types/common';\nimport { EventEmitter } from '../core/reconciler/events';\n\nconst emitters = new WeakMap<Storage, EventEmitter>();\nconst emitterFor = (storage: Storage) => {\n if (!emitters.has(storage)) emitters.set(storage, new EventEmitter());\n return emitters.get(storage)!;\n}\n\nconst _useStorage = (\n storage: () => Storage,\n key: string,\n initialValue?: string | null\n) => {\n const state = useSyncExternalStore((onStoreChange) => {\n const _storage = storage();\n const emitter = emitterFor(_storage);\n const callback = (ev: StorageEvent) => { \n if (!ev.storageArea || ev.storageArea === _storage) onStoreChange();\n };\n window.addEventListener('storage', callback);\n const event = emitter.register('change', onStoreChange);\n return () => {\n window.removeEventListener('storage', callback);\n event.remove();\n }\n }, () => storage().getItem(key), () => undefined);\n const setState = useCallback((v: SetStateAction<string | null | undefined>) => {\n try {\n const _storage = storage();\n const newValue = _.isFunction(v) ? v(state) : v;\n if (_.isNil(newValue)) {\n _storage.removeItem(key);\n } else {\n _storage.setItem(key, newValue);\n }\n const emitter = emitterFor(_storage);\n emitter.emit('change');\n } catch (e) {\n console.error(e);\n }\n }, [key]);\n return [state ?? initialValue ?? null, setState] as const;\n}\n\n/**\n * A hook to manage a value in localStorage.\n * It provides a stateful value and a function to update it.\n * \n * @param key - The key in localStorage to manage.\n * @param initialValue - An optional initial value if the key does not exist in localStorage.\n * @returns A tuple containing the current value and a function to update it.\n */\nexport const useLocalStorage = (\n key: string,\n initialValue?: string | null\n) => _useStorage(() => window.localStorage, key, initialValue);\n\n/** \n * A hook to manage a value in sessionStorage.\n * It provides a stateful value and a function to update it.\n * \n * @param key - The key in sessionStorage to manage.\n * @param initialValue - An optional initial value if the key does not exist in sessionStorage.\n * @returns A tuple containing the current value and a function to update it.\n */\nexport const useSessionStorage = (\n key: string,\n initialValue?: string | null\n) => _useStorage(() => window.sessionStorage, key, initialValue);\n","//\n// visibility.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { useSyncExternalStore } from '../core/hooks/sync';\nimport { useDocument } from './document';\n\n/**\n * A hook to get the current visibility state of the document.\n * It listens to the 'visibilitychange' event to update the state.\n * \n * @returns A string indicating the current visibility state: 'active', 'inactive', 'background', or 'unknown'.\n */\nexport const useVisibility = () => {\n const document = useDocument();\n return useSyncExternalStore((onStoreChange) => {\n document.addEventListener('visibilitychange', onStoreChange);\n return () => {\n document.removeEventListener('visibilitychange', onStoreChange);\n }\n }, () => {\n if (document.hasFocus()) {\n return 'active' as const;\n } else if (document.visibilityState === 'visible') {\n return 'inactive' as const;\n } else {\n return 'background' as const;\n }\n }, () => 'unknown' as const);\n}\n"],"names":["emitters","emitterFor"],"mappings":"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"}
package/package.json CHANGED
@@ -1,29 +1,17 @@
1
1
  {
2
2
  "name": "frosty",
3
- "version": "0.0.111",
3
+ "version": "0.0.113",
4
4
  "main": "dist/index",
5
5
  "module": "dist/index",
6
6
  "types": "dist/index",
7
7
  "exports": {
8
8
  ".": {
9
- "import": {
10
- "types": "./dist/index.d.ts",
11
- "default": "./dist/index.mjs"
12
- },
13
- "require": {
14
- "types": "./dist/index.d.ts",
15
- "default": "./dist/index.js"
16
- }
9
+ "import": "./dist/index.mjs",
10
+ "require": "./dist/index.js"
17
11
  },
18
12
  "./*": {
19
- "import": {
20
- "types": "./dist/*.d.ts",
21
- "default": "./dist/*.mjs"
22
- },
23
- "require": {
24
- "types": "./dist/*.d.ts",
25
- "default": "./dist/*.js"
26
- }
13
+ "import": "./dist/*.mjs",
14
+ "require": "./dist/*.js"
27
15
  }
28
16
  },
29
17
  "files": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-BB51vIJ7.mjs","sources":["../../../src/core/components/fragment.ts","../../../src/core/types/component.ts","../../../src/core/types/runtime.ts"],"sourcesContent":["//\n// fragment.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from '../types/common';\n\nexport const Fragment: ComponentType<PropsWithChildren<{}>> = ({ children }) => {\n return children;\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { _ElementType, PropsType } from './runtime';\n\nexport abstract class NativeElementType {\n constructor(...args: any[]) { };\n}\n\nexport class ComponentNode {\n\n /** @internal */\n private _type: _ElementType | typeof NativeElementType;\n\n /** @internal */\n private _props: PropsType;\n\n /** @internal */\n private _key?: string | number;\n\n /** @internal */\n constructor(\n type: _ElementType | typeof NativeElementType,\n props: PropsType,\n key?: string | number\n ) {\n this._type = type;\n this._props = props;\n this._key = key;\n }\n\n get type() {\n return this._type;\n }\n\n get props() {\n return this._props;\n }\n\n get key() {\n return this._key;\n }\n\n /** @internal */\n _equal(other: ComponentNode) {\n return this.type === other.type && this.key === other.key;\n }\n}\n","//\n// basic.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { MergeObject, PickType, WritableKeys } from '@o2ter/utils-js';\nimport { ComponentType, ElementNode, PropsWithChildren, RefAttribute } from './common';\nimport { ClassName, StyleProp } from './style';\nimport { CSSProperties, ExtendedCSSProperties } from '../web/styles/css';\nimport { globalEvents } from '../web/event';\nimport { ComponentNode, NativeElementType } from './component';\nimport { _HTMLElementTagNameMap, _MathMLElementTagNameMap, _SVGElementTagNameMap } from '../web/props';\n\nexport type _ElementType = string | ComponentType<any>;\n\nexport type _IntrinsicAttributes = {\n key?: string | number;\n};\n\nexport type PropsType = Record<string, any>;\n\ntype EventHandler<E extends Event, C, T = EventTarget> = (this: C, event: E & {\n currentTarget: C;\n target: T;\n }) => void;\ntype EventMap = {\n [ev in typeof globalEvents[number]]: ev extends `on${infer x}`\n ? Lowercase<x> extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[Lowercase<x>] : Event\n : never;\n};\n\ntype _PropsOfInstance<Instance> = Omit<\n PickType<{\n [k in WritableKeys<Instance>]: Instance[k];\n }, boolean | number | string | null | undefined>,\n 'className' | 'style' | 'innerText' | 'outerText' | 'outerHTML' | 'nodeValue'\n> & {\n [x in keyof EventMap]?: EventHandler<EventMap[x], Instance>;\n} & {\n [x in keyof EventMap as `${x}Capture`]?: EventHandler<EventMap[x], Instance>;\n};\n\ntype Combine<T, R> = Omit<T, keyof R> & R;\n\ntype _ElementProps<ElementMap extends { [x: string]: { type: any; props?: any; } }> = {\n [x in keyof ElementMap]: PropsWithChildren<\n Partial<\n RefAttribute<ElementMap[x]['type'] | null | undefined>\n & {\n className?: ClassName;\n style?: StyleProp<ExtendedCSSProperties>;\n inlineStyle?: CSSProperties;\n }\n & Combine<ElementMap[x]['props'], _PropsOfInstance<ElementMap[x]['type']>>\n >\n >\n};\n\nexport type _IntrinsicElements = MergeObject<\n | _ElementProps<_HTMLElementTagNameMap>\n | _ElementProps<_SVGElementTagNameMap>\n | _ElementProps<_MathMLElementTagNameMap>\n> & { [x: string]: any; };\n\nexport const _createElement = (\n type: _ElementType | typeof NativeElementType,\n props: PropsType\n) => {\n const { key, ..._props } = props;\n return new ComponentNode(type, _props, key);\n}\n\nexport const createElement = (\n type: _ElementType,\n props?: PropsType | null,\n ...children: ElementNode[]\n) => _createElement(type, { ...props ?? {}, children });\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAIa,QAAQ,GAAyC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC7E,IAAA,OAAO,QAAQ;AACjB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAKsB,iBAAiB,CAAA;IACrC,WAAA,CAAY,GAAG,IAAW,EAAA,EAAI;;AAC/B;MAEY,aAAa,CAAA;;AAGhB,IAAA,KAAK;;AAGL,IAAA,MAAM;;AAGN,IAAA,IAAI;;AAGZ,IAAA,WAAA,CACE,IAA6C,EAC7C,KAAgB,EAChB,GAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;IACjB;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;;AAGA,IAAA,MAAM,CAAC,KAAoB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;IAC3D;AACD;;ACtED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MA6Da,cAAc,GAAG,CAC5B,IAA6C,EAC7C,KAAgB,KACd;IACF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK;IAChC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AAC7C;AAEO,MAAM,aAAa,GAAG,CAC3B,IAAkB,EAClB,KAAwB,EACxB,GAAG,QAAuB,KACvB,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-BFi9M0jE.js","sources":["../../../src/core/components/fragment.ts","../../../src/core/types/component.ts","../../../src/core/types/runtime.ts"],"sourcesContent":["//\n// fragment.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { ComponentType, PropsWithChildren } from '../types/common';\n\nexport const Fragment: ComponentType<PropsWithChildren<{}>> = ({ children }) => {\n return children;\n}\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { _ElementType, PropsType } from './runtime';\n\nexport abstract class NativeElementType {\n constructor(...args: any[]) { };\n}\n\nexport class ComponentNode {\n\n /** @internal */\n private _type: _ElementType | typeof NativeElementType;\n\n /** @internal */\n private _props: PropsType;\n\n /** @internal */\n private _key?: string | number;\n\n /** @internal */\n constructor(\n type: _ElementType | typeof NativeElementType,\n props: PropsType,\n key?: string | number\n ) {\n this._type = type;\n this._props = props;\n this._key = key;\n }\n\n get type() {\n return this._type;\n }\n\n get props() {\n return this._props;\n }\n\n get key() {\n return this._key;\n }\n\n /** @internal */\n _equal(other: ComponentNode) {\n return this.type === other.type && this.key === other.key;\n }\n}\n","//\n// basic.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { MergeObject, PickType, WritableKeys } from '@o2ter/utils-js';\nimport { ComponentType, ElementNode, PropsWithChildren, RefAttribute } from './common';\nimport { ClassName, StyleProp } from './style';\nimport { CSSProperties, ExtendedCSSProperties } from '../web/styles/css';\nimport { globalEvents } from '../web/event';\nimport { ComponentNode, NativeElementType } from './component';\nimport { _HTMLElementTagNameMap, _MathMLElementTagNameMap, _SVGElementTagNameMap } from '../web/props';\n\nexport type _ElementType = string | ComponentType<any>;\n\nexport type _IntrinsicAttributes = {\n key?: string | number;\n};\n\nexport type PropsType = Record<string, any>;\n\ntype EventHandler<E extends Event, C, T = EventTarget> = (this: C, event: E & {\n currentTarget: C;\n target: T;\n }) => void;\ntype EventMap = {\n [ev in typeof globalEvents[number]]: ev extends `on${infer x}`\n ? Lowercase<x> extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[Lowercase<x>] : Event\n : never;\n};\n\ntype _PropsOfInstance<Instance> = Omit<\n PickType<{\n [k in WritableKeys<Instance>]: Instance[k];\n }, boolean | number | string | null | undefined>,\n 'className' | 'style' | 'innerText' | 'outerText' | 'outerHTML' | 'nodeValue'\n> & {\n [x in keyof EventMap]?: EventHandler<EventMap[x], Instance>;\n} & {\n [x in keyof EventMap as `${x}Capture`]?: EventHandler<EventMap[x], Instance>;\n};\n\ntype Combine<T, R> = Omit<T, keyof R> & R;\n\ntype _ElementProps<ElementMap extends { [x: string]: { type: any; props?: any; } }> = {\n [x in keyof ElementMap]: PropsWithChildren<\n Partial<\n RefAttribute<ElementMap[x]['type'] | null | undefined>\n & {\n className?: ClassName;\n style?: StyleProp<ExtendedCSSProperties>;\n inlineStyle?: CSSProperties;\n }\n & Combine<ElementMap[x]['props'], _PropsOfInstance<ElementMap[x]['type']>>\n >\n >\n};\n\nexport type _IntrinsicElements = MergeObject<\n | _ElementProps<_HTMLElementTagNameMap>\n | _ElementProps<_SVGElementTagNameMap>\n | _ElementProps<_MathMLElementTagNameMap>\n> & { [x: string]: any; };\n\nexport const _createElement = (\n type: _ElementType | typeof NativeElementType,\n props: PropsType\n) => {\n const { key, ..._props } = props;\n return new ComponentNode(type, _props, key);\n}\n\nexport const createElement = (\n type: _ElementType,\n props?: PropsType | null,\n ...children: ElementNode[]\n) => _createElement(type, { ...props ?? {}, children });\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAIa,QAAQ,GAAyC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC7E,IAAA,OAAO,QAAQ;AACjB;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MAKsB,iBAAiB,CAAA;IACrC,WAAA,CAAY,GAAG,IAAW,EAAA,EAAI;;AAC/B;MAEY,aAAa,CAAA;;AAGhB,IAAA,KAAK;;AAGL,IAAA,MAAM;;AAGN,IAAA,IAAI;;AAGZ,IAAA,WAAA,CACE,IAA6C,EAC7C,KAAgB,EAChB,GAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;IACjB;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;;AAGA,IAAA,MAAM,CAAC,KAAoB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;IAC3D;AACD;;ACtED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MA6Da,cAAc,GAAG,CAC5B,IAA6C,EAC7C,KAAgB,KACd;IACF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK;IAChC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AAC7C;AAEO,MAAM,aAAa,GAAG,CAC3B,IAAkB,EAClB,KAAwB,EACxB,GAAG,QAAuB,KACvB,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE;;;;;;;;"}