@tempots/dom 9.0.2 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +1 -1
  2. package/{components → dom}/animatable.d.ts +7 -1
  3. package/dom/attr.d.ts +73 -0
  4. package/dom/dom-context.d.ts +108 -0
  5. package/dom/dom-utils.d.ts +21 -0
  6. package/dom/handle-anchor-click.d.ts +13 -0
  7. package/dom/ssr-tracker.d.ts +14 -0
  8. package/dom/ssr.d.ts +8 -0
  9. package/index.cjs +1 -0
  10. package/index.d.ts +52 -34
  11. package/index.js +1412 -31
  12. package/mountable/appearance.d.ts +38 -0
  13. package/mountable/async.d.ts +7 -0
  14. package/mountable/attribute.d.ts +489 -0
  15. package/mountable/autofocus.d.ts +3 -0
  16. package/mountable/autoselect.d.ts +3 -0
  17. package/mountable/bind.d.ts +16 -0
  18. package/mountable/conjunction.d.ts +8 -0
  19. package/mountable/consumers.d.ts +12 -0
  20. package/mountable/ctx.d.ts +3 -0
  21. package/mountable/domel.d.ts +3 -0
  22. package/mountable/element.d.ts +236 -0
  23. package/mountable/empty.d.ts +3 -0
  24. package/mountable/ensure.d.ts +4 -0
  25. package/mountable/foreach.d.ts +5 -0
  26. package/mountable/fragment.d.ts +3 -0
  27. package/mountable/handler.d.ts +102 -0
  28. package/mountable/hidden-when-empty.d.ts +3 -0
  29. package/mountable/html-title.d.ts +3 -0
  30. package/mountable/inviewport.d.ts +6 -0
  31. package/mountable/map-signal.d.ts +4 -0
  32. package/mountable/not-empty.d.ts +4 -0
  33. package/mountable/ondispose.d.ts +4 -0
  34. package/mountable/oneof.d.ts +22 -0
  35. package/mountable/onmount.d.ts +3 -0
  36. package/mountable/portal.d.ts +4 -0
  37. package/mountable/providers.d.ts +16 -0
  38. package/mountable/render.d.ts +8 -0
  39. package/mountable/repeat.d.ts +5 -0
  40. package/mountable/size.d.ts +8 -0
  41. package/mountable/style.d.ts +503 -0
  42. package/mountable/task.d.ts +7 -0
  43. package/mountable/text.d.ts +6 -0
  44. package/mountable/when.d.ts +4 -0
  45. package/package.json +15 -8
  46. package/std/interpolate.d.ts +5 -0
  47. package/std/position.d.ts +9 -0
  48. package/std/signal.d.ts +120 -0
  49. package/types/aria-attributes.d.ts +50 -0
  50. package/types/css-styles.d.ts +3 -0
  51. package/types/domain.d.ts +14 -0
  52. package/types/html-attributes.d.ts +115 -0
  53. package/types/html-events.d.ts +89 -0
  54. package/types/html-tags.d.ts +113 -0
  55. package/types/mathml-attributes.d.ts +50 -0
  56. package/types/mathml-tags.d.ts +30 -0
  57. package/types/svg-attributes.d.ts +243 -0
  58. package/types/svg-tags.d.ts +64 -0
  59. package/clean.d.ts +0 -2
  60. package/clean.js +0 -1
  61. package/components/Attribute.d.ts +0 -15
  62. package/components/Attribute.js +0 -16
  63. package/components/Autofocus.d.ts +0 -2
  64. package/components/Autofocus.js +0 -4
  65. package/components/BooleanAttribute.d.ts +0 -15
  66. package/components/BooleanAttribute.js +0 -16
  67. package/components/ClassName.d.ts +0 -13
  68. package/components/ClassName.js +0 -14
  69. package/components/El.d.ts +0 -15
  70. package/components/El.js +0 -21
  71. package/components/FadeIn.d.ts +0 -20
  72. package/components/FadeIn.js +0 -54
  73. package/components/FadeOut.d.ts +0 -16
  74. package/components/FadeOut.js +0 -39
  75. package/components/For.d.ts +0 -18
  76. package/components/For.js +0 -27
  77. package/components/Fragment.d.ts +0 -12
  78. package/components/Fragment.js +0 -16
  79. package/components/HiddenWhenEmpty.d.ts +0 -7
  80. package/components/HiddenWhenEmpty.js +0 -13
  81. package/components/If.d.ts +0 -14
  82. package/components/If.js +0 -19
  83. package/components/InnerHTML.d.ts +0 -13
  84. package/components/InnerHTML.js +0 -23
  85. package/components/Lifecycle.d.ts +0 -14
  86. package/components/Lifecycle.js +0 -18
  87. package/components/NotEmpty.d.ts +0 -9
  88. package/components/NotEmpty.js +0 -11
  89. package/components/On.d.ts +0 -15
  90. package/components/On.js +0 -14
  91. package/components/OnRemove.d.ts +0 -6
  92. package/components/OnRemove.js +0 -4
  93. package/components/OneOf.d.ts +0 -62
  94. package/components/OneOf.js +0 -68
  95. package/components/Portal.d.ts +0 -15
  96. package/components/Portal.js +0 -20
  97. package/components/Property.d.ts +0 -15
  98. package/components/Property.js +0 -16
  99. package/components/Provider.d.ts +0 -28
  100. package/components/Provider.js +0 -44
  101. package/components/Repeat.d.ts +0 -28
  102. package/components/Repeat.js +0 -146
  103. package/components/Show.d.ts +0 -15
  104. package/components/Show.js +0 -8
  105. package/components/Text.d.ts +0 -15
  106. package/components/Text.js +0 -33
  107. package/components/TextContent.d.ts +0 -13
  108. package/components/TextContent.js +0 -23
  109. package/components/animatable.js +0 -283
  110. package/dom-context.d.ts +0 -39
  111. package/dom-context.js +0 -263
  112. package/helpers/handle-anchor-click.d.ts +0 -4
  113. package/helpers/handle-anchor-click.js +0 -43
  114. package/helpers/handle-text-input.d.ts +0 -1
  115. package/helpers/handle-text-input.js +0 -4
  116. package/helpers/is-empty-element.d.ts +0 -2
  117. package/helpers/is-empty-element.js +0 -8
  118. package/jsx-dev-runtime.d.ts +0 -1
  119. package/jsx-dev-runtime.js +0 -1
  120. package/jsx-runtime.d.ts +0 -9
  121. package/jsx-runtime.js +0 -157
  122. package/jsx.d.ts +0 -806
  123. package/jsx.js +0 -1
  124. package/prop.d.ts +0 -58
  125. package/prop.js +0 -256
  126. package/render.d.ts +0 -3
  127. package/render.js +0 -7
  128. package/renderable.d.ts +0 -5
  129. package/renderable.js +0 -1
package/README.md CHANGED
@@ -1 +1 @@
1
- # @tempots/dom
1
+ # Tempo DOM
@@ -52,7 +52,13 @@ export interface Animatable {
52
52
  contrast?: number;
53
53
  blur?: number;
54
54
  }
55
- export type ColorChannels = [number, number, number, number, 'rgba' | 'hex' | 'hsla'];
55
+ export type ColorChannels = [
56
+ number,
57
+ number,
58
+ number,
59
+ number,
60
+ 'rgba' | 'hex' | 'hsla'
61
+ ];
56
62
  export declare function parseColorChannels(color: string): ColorChannels;
57
63
  export interface BoxShadow {
58
64
  inset: boolean;
package/dom/attr.d.ts ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Sets a boolean property on an HTML element.
3
+ *
4
+ * If the `value` is `null`, the property is set to `null`. Otherwise, the
5
+ * property is set to the boolean value of `value`.
6
+ *
7
+ * @param attributeName - The name of the boolean property to set.
8
+ * @returns A function that takes an `Element` and a `value` and sets the
9
+ * boolean property on the element.
10
+ */
11
+ export declare function setBooleanProperty(attributeName: string): (element: Element, value: unknown) => void;
12
+ /**
13
+ * Sets a numeric property on an HTML element.
14
+ *
15
+ * If the provided `value` is `null`, the property will be set to `null`.
16
+ * Otherwise, the property will be set to the numeric value of the provided `value`.
17
+ *
18
+ * @param attributeName - The name of the property to set on the element.
19
+ * @returns A function that takes an `Element` and a `value` and sets the property.
20
+ */
21
+ export declare function setNumberProperty(attributeName: string): (element: Element, value: unknown) => void;
22
+ /**
23
+ * Sets a date property on an element.
24
+ *
25
+ * If the `value` is `null`, the date property is set to `null`. Otherwise, the
26
+ * date property is set to the provided `value`.
27
+ *
28
+ * @param attributeName - The name of the date property to set on the element.
29
+ * @returns A function that takes an element and a value, and sets the date
30
+ * property on the element.
31
+ */
32
+ export declare function setDateProperty(attributeName: string): (element: Element, value: unknown) => void;
33
+ /**
34
+ * Sets a string property on an `Element` object.
35
+ *
36
+ * If the provided `value` is `null`, the property will be set to `null`.
37
+ * Otherwise, the `value` will be converted to a string and set as the property.
38
+ *
39
+ * @param attributeName - The name of the property to set on the `Element`.
40
+ * @returns A function that takes an `Element` and a `value` and sets the property.
41
+ */
42
+ export declare function setStringProperty(attributeName: string): (element: Element, value: unknown) => void;
43
+ /**
44
+ * Sets the specified attribute on the given element to the provided value.
45
+ * If the value is `null`, the attribute will be removed from the element.
46
+ *
47
+ * @param attributeName - The name of the attribute to set.
48
+ * @returns A function that takes an element and a value, and sets the attribute on the element.
49
+ */
50
+ export declare function setAttribute(attributeName: string): (element: Element, value: unknown) => void;
51
+ /**
52
+ * Creates a setter function for an element attribute based on the attribute's type.
53
+ *
54
+ * The returned setter function will set the attribute value on the given element
55
+ * using the appropriate method (e.g. `setAttribute()`, `setProperty()`) based
56
+ * on the attribute's type.
57
+ *
58
+ * @param attributeName - The name of the attribute to create a setter for.
59
+ * @returns A function that sets the attribute value on an element.
60
+ */
61
+ export declare function makeSetter(attributeName: string): (element: Element, value: unknown) => void;
62
+ /**
63
+ * Creates a getter function for a specific HTML element attribute.
64
+ *
65
+ * The returned getter function takes an `Element` and returns the value of the
66
+ * specified attribute. The function handles different attribute types (boolean,
67
+ * number, date, string) and returns the appropriate type.
68
+ *
69
+ * @param attributeName - The name of the HTML element attribute to get.
70
+ * @returns A function that takes an `Element` and returns the value of the
71
+ * specified attribute.
72
+ */
73
+ export declare function makeGetter<T>(attributeName: string): (element: Element) => T;
@@ -0,0 +1,108 @@
1
+ import { ProviderMark, Providers } from '../types/domain';
2
+
3
+ /**
4
+ * `DOMContext` is an immutable class that represents the context of a DOM element.
5
+ * It provides methods and properties to manipulate and interact with the DOM element.
6
+ *
7
+ * A reference in a DOMContext is to mark a position within a set of sibblings.
8
+ * It is used to insert new elements before the reference.
9
+ */
10
+ export declare class DOMContext {
11
+ readonly document: Document;
12
+ readonly element: Element;
13
+ readonly reference: Node | undefined;
14
+ readonly providers: Providers;
15
+ readonly isFirstLevel: boolean;
16
+ /**
17
+ * Creates a new `DOMContext` instance for the given `Element` and optional reference `Node`.
18
+ *
19
+ * @param element - The `Element` to create the `DOMContext` for.
20
+ * @param ref - An optional reference `Node` to associate with the `DOMContext`.
21
+ * @returns A new `DOMContext` instance.
22
+ */
23
+ static of(element: Element, ref?: Node | undefined): DOMContext;
24
+ /**
25
+ * Constructs a new `DOMContext` instance.
26
+ *
27
+ * @param document - The `Document` instance associated with this context.
28
+ * @param element - The `Element` instance associated with this context.
29
+ * @param reference - An optional `Node` instance that serves as a reference for this context.
30
+ * @param providers - The `Providers` instance associated with this context.
31
+ * @param isFirstLevel - A boolean value indicating whether this context is at the first level, meaning the outermost node in the generated DOM.
32
+ */
33
+ constructor(document: Document, element: Element, reference: Node | undefined, providers: Providers, isFirstLevel: boolean);
34
+ /**
35
+ * Creates a new DOM element (eg: HTML or SVG) with the specified tag name and namespace.
36
+ *
37
+ * @param tagName - The tag name of the element to create.
38
+ * @param namespace - The namespace URI to create the element in, or `undefined` to create a standard HTML element.
39
+ * @returns The newly created element.
40
+ */
41
+ readonly createElement: (tagName: string, namespace: string | undefined) => Element;
42
+ /**
43
+ * Creates a new text node with the specified text content.
44
+ * @param text - The text content for the new text node.
45
+ * @returns A new `Text` node with the specified text content.
46
+ */
47
+ readonly createText: (text: string) => Text;
48
+ /**
49
+ * Creates a new `DOMContext` with a reference to a newly created text node.
50
+ * The text node is appended or inserted to the current `DOMContext`.
51
+ * The new `DOMContext` with the reference is returned.
52
+ */
53
+ readonly makeRef: () => DOMContext;
54
+ /**
55
+ * Appends or inserts a child node to the element, depending on whether a reference node is provided.
56
+ *
57
+ * @param child - The child node to append or insert.
58
+ */
59
+ readonly appendOrInsert: (child: Node) => void;
60
+ /**
61
+ * Creates a new `DOMContext` instance with the provided `document`.
62
+ *
63
+ * @param document - The `Document` to use for the `DOMContext`.
64
+ * @returns A new `DOMContext` instance.
65
+ */
66
+ readonly withDocument: (document: Document) => DOMContext;
67
+ /**
68
+ * Creates a new `DOMContext` instance with the provided `element`.
69
+ * @param element - The DOM element to use in the new `DOMContext` instance.
70
+ * @returns A new `DOMContext` instance with the provided `element`.
71
+ */
72
+ readonly withElement: (element: Element) => DOMContext;
73
+ /**
74
+ * Creates a new `DOMContext` instance with the `isFirstLevel` property set to `true`.
75
+ * @returns A new `DOMContext` instance with the `isFirstLevel` property set to `true`.
76
+ */
77
+ readonly withFirstLevel: () => DOMContext;
78
+ /**
79
+ * Creates a new `DOMContext` instance with the specified reference.
80
+ *
81
+ * @param reference - The optional `Text` node to use as the reference for the new `DOMContext`.
82
+ * @returns A new `DOMContext` instance with the specified reference.
83
+ */
84
+ readonly withReference: (reference: Text | undefined) => DOMContext;
85
+ /** Creates a new DOMContext with the provided provider value.
86
+ *
87
+ * @param mark - The provider mark to associate the value with.
88
+ * @param value - The value to set for the provider.
89
+ * @returns A new DOMContext with the updated providers.
90
+ */
91
+ readonly withProvider: <T>(mark: ProviderMark<T>, value: T) => DOMContext;
92
+ /**
93
+ * Returns a new DOMContext instance with the specified providers merged into
94
+ * the existing providers.
95
+ *
96
+ * @param providers - An object containing the providers to be merged into the existing providers.
97
+ * @returns A new DOMContext instance with the merged providers.
98
+ */
99
+ readonly withProviders: (providers: { [K in ProviderMark<unknown>]: unknown; }) => DOMContext;
100
+ /**
101
+ * Retrieves a provider for the given provider mark.
102
+ *
103
+ * @param mark - The provider mark to retrieve the provider for.
104
+ * @returns The provider for the given mark.
105
+ * @throws {Error} If the provider for the given mark is not found.
106
+ */
107
+ readonly getProvider: <T>(mark: ProviderMark<T>) => T;
108
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Removes the specified node from the DOM.
3
+ *
4
+ * @param node - The node to be removed from the DOM.
5
+ */
6
+ export declare function removeDOMNode(node: Node): void;
7
+ /**
8
+ * Returns the given `node` if it is an `Element`, or the parent `Element` of
9
+ * the given `node` if it is not an `Element`.
10
+ *
11
+ * @param node - The `Node` to get the `Element` for.
12
+ * @returns The `Element` for the given `node`.
13
+ */
14
+ export declare function getSelfOrParentElement(node: Node): Element;
15
+ /**
16
+ * Determines if the given `Node` is an `Element`.
17
+ *
18
+ * @param node - The `Node` to check.
19
+ * @returns `true` if the `node` is an `Element`, `false` otherwise.
20
+ */
21
+ export declare function isElement(node: Node): node is Element;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Handles anchor click events, optionally checking for external URLs and file extensions.
3
+ *
4
+ * @param callback - A function that is called when the anchor click should be handled. The function should return a boolean indicating whether the default anchor click behavior should be prevented.
5
+ * @param options - An optional object with the following properties:
6
+ * - `checkExtension`: A boolean indicating whether to check the anchor's href for a file extension. Defaults to `true`.
7
+ * - `checkExternalUrl`: A boolean indicating whether to check if the anchor's href points to an external URL. Defaults to `true`.
8
+ * @returns A function that handles the anchor click event, calling the provided callback and preventing the default behavior if the callback returns `true`.
9
+ */
10
+ export declare const handleAnchorClick: (callback: () => boolean, options?: {
11
+ checkExtension?: boolean;
12
+ checkExternalUrl?: boolean;
13
+ }) => (e: MouseEvent) => void;
@@ -0,0 +1,14 @@
1
+ import { DOMContext } from './dom-context';
2
+
3
+ export declare function addAttributeTracker(element: Element, name: string): void;
4
+ export declare function maybeAddAttributeTracker(ctx: DOMContext, name: string): void;
5
+ export declare function removeAttributeTrackers(doc: Document): void;
6
+ export declare function addClassTracker(element: Element): void;
7
+ export declare function maybeAddClassTracker(ctx: DOMContext): void;
8
+ export declare function removeClassTrackers(doc: Document): void;
9
+ export declare function addNodeTracker(element: Element): void;
10
+ export declare function maybeAddNodeTracker(ctx: DOMContext): void;
11
+ export declare function removeNodeTrackers(doc: Document): void;
12
+ export declare function addTextTracker(element: Element): void;
13
+ export declare function maybeAddTextTracker(ctx: DOMContext): void;
14
+ export declare function removeTextTrackers(doc: Document): void;
package/dom/ssr.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { Child, Mountable } from '../types/domain';
2
+
3
+ export declare function clearSSR(doc: Document): void;
4
+ export declare const startSSR: (timeoutSeconds?: number) => Promise<void>;
5
+ export declare const ssr: {
6
+ useDone(child: (done: () => void) => Child): Mountable;
7
+ readonly isSSR: boolean;
8
+ };
package/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";var ct=Object.defineProperty;var ft=(t,e,r)=>e in t?ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var l=(t,e,r)=>ft(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Ee(t,e,r){return t+(e-t)*r}const he=97;function Ce(t,e,r){const n=Math.max(t.length,e.length);let s="";for(let i=0;i<n;i++){let o=t.charCodeAt(i);isNaN(o)&&(o=he);let u=e.charCodeAt(i);isNaN(u)&&(u=he),s+=String.fromCharCode(o+(u-o)*r)}return s}function De(t,e,r){return new Date(t.getTime()+(e.getTime()-t.getTime())*r)}function Te(t,e,r){return e}function _e(t){return typeof t=="number"?Ee:typeof t=="string"?Ce:t instanceof Date?De:Te}class Me{constructor(e,r){this.index=e,this.total=r}get isFirst(){return this.index===0}get isLast(){return this.index===this.total-1}get isEven(){return this.index%2===0}get isOdd(){return this.index%2===1}}const pe=Symbol("isSignal"),me=Symbol("isProp"),ge=Symbol("isComputed");var be;be=pe;const P=class P{constructor(e,r){l(this,be,!0);l(this,"_value");l(this,"_derivatives",[]);l(this,"_onValueListeners",[]);l(this,"_onDisposeListeners",[]);l(this,"get",()=>this._value);l(this,"hasListeners",()=>this._onValueListeners.length>0);l(this,"on",e=>(e(this.get()),this._onValueListeners.push(e),()=>{this._onValueListeners.splice(this._onValueListeners.indexOf(e),1)}));l(this,"_setAndNotify",(e,r)=>{const n=this.equals(this._value,e);n||(this._value=e),(r||!n)&&this._onValueListeners.forEach(s=>s(e))});l(this,"_disposed",!1);l(this,"isDisposed",()=>this._disposed);l(this,"onDispose",e=>{this._onDisposeListeners.push(e)});l(this,"dispose",()=>{this._disposed||(this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)});l(this,"map",(e,r=(n,s)=>n===s)=>{const n=new T(()=>{try{return e(this.get())}catch(s){throw console.error("Error in Signal.map:",s),s}},r);return this.setDerivative(n),n});l(this,"flatMap",(e,r=(n,s)=>n===s)=>{const n=new T(()=>{try{return e(this.get()).get()}catch(s){throw console.error("Error in Signal.flatMap:",s),s}},r);return this.setDerivative(n),n});l(this,"tap",e=>this.map(r=>(e(r),r)));l(this,"at",e=>this.map(r=>r[e]));l(this,"filter",(e,r)=>{let n=r??this.get();const s=new T(()=>{try{const i=this.get();return n=e(i)?i:n}catch(i){throw console.error("Error in Signal.filter:",i),i}},this.equals);return this.setDerivative(s),s});l(this,"filterMap",(e,r,n=(s,i)=>s===i)=>{let s=r;const i=new T(()=>{try{const o=this.get(),u=e(o);return s=u??s}catch(o){throw console.error("Error in Signal.filterMap:",o),o}},n);return this.setDerivative(i),i});l(this,"mapAsync",(e,r,n,s=(i,o)=>i===o)=>{const i=v(r,s);let o=0;return i.onDispose(this.on(u=>{const a=++o;try{e(u).then(c=>{a===o&&i.set(c)}).catch(c=>{a===o&&(n!=null?i.set(n(c)):console.error("Unhandled promise rejection in Signal.mapAsync:",c))})}catch(c){throw console.error("Error in Signal.mapAsync:",c),c}})),i});l(this,"mapMaybe",(e,r)=>this.map(n=>e(n)??r));l(this,"feedProp",(e,r=!1)=>{const n=this.on(e.set);return e.onDispose(n),r?this.onDispose(e.dispose):this.onDispose(n),e});l(this,"deriveProp",(e=!0)=>this.feedProp(v(this.get()),e));l(this,"count",()=>{let e=0;return this.map(()=>++e)});l(this,"setDerivative",e=>{this._derivatives.push(e),e.onDispose(()=>{this._derivatives.splice(this._derivatives.indexOf(e),1)}),e.onDispose(this.on(e.setDirty)),this.onDispose(e.dispose)});this.equals=r,this._value=e}static ofPromise(e,r,n,s=(i,o)=>i===o){const i=new P(r,s);return e.then(o=>i._setAndNotify(o,!1)).catch(o=>{n!=null?i._setAndNotify(n(o),!1):console.error("Unhandled promise rejection in Signal.ofPromise:",o)}),i}static is(e){return e!=null&&e[pe]===!0}static wrap(e,r=(n,s)=>n===s){return P.is(e)?e:new P(e,r)}static maybeWrap(e){return e==null?e:P.wrap(e)}static unwrap(e){return P.is(e)?e.get():e}static map(e,r){return P.is(e)?e.map(r):r(e)}get value(){return this._value}};let d=P;const dt=typeof queueMicrotask=="function"?queueMicrotask:t=>Promise.resolve().then(t);var ve,Ae;class T extends(Ae=d,ve=ge,Ae){constructor(r,n){super(void 0,n);l(this,ve,!0);l(this,"_isDirty",!1);l(this,"setDirty",()=>{this._isDirty||this._disposed||(this._isDirty=!0,this._derivatives.forEach(r=>r.setDirty()),this.scheduleNotify())});l(this,"_scheduleCount",0);l(this,"scheduleNotify",()=>{const r=++this._scheduleCount;dt(()=>{this._scheduleCount!==r||this._disposed!==!1||this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn(),!1))})});l(this,"get",()=>(this._isDirty&&(this._isDirty=!1,this._value=this._fn(),this._setAndNotify(this._value,!0)),this._value));this._fn=r,this.setDirty()}static is(r){return r!=null&&r[ge]===!0}get value(){return this.get()}}var ye,Pe;class I extends(Pe=d,ye=me,Pe){constructor(){super(...arguments);l(this,ye,!0);l(this,"set",r=>{this._setAndNotify(r,!1)});l(this,"update",r=>{this._setAndNotify(r(this.get()),!1)});l(this,"reducer",r=>n=>this.update(s=>r(s,n)));l(this,"iso",(r,n,s=(i,o)=>i===o)=>{const i=new I(r(this.get()),s);return i.onDispose(this.on(o=>i.set(r(o)))),i.on(o=>this._setAndNotify(n(o),!1)),i});l(this,"atProp",r=>this.iso(n=>n[r],n=>({...this.value,[r]:n})))}static is(r){return r!=null&&r[me]===!0}get value(){return this.get()}set value(r){this._setAndNotify(r,!1)}}function q(t,e,r=(n,s)=>n===s){const n=new T(t,r);return e.forEach(s=>s.setDerivative(n)),n}function ht(t,e){return q(t,e).dispose}function v(t,e=(r,n)=>r===n){return new I(t,e)}function pt(t,e=(r,n)=>r===n){return new d(t,e)}class Q{constructor(){l(this,"_store",new Map);l(this,"getItem",e=>this._store.get(e)??null);l(this,"setItem",(e,r)=>{this._store.set(e,r)})}}function ee({key:t,defaultValue:e,store:r,serialize:n=JSON.stringify,deserialize:s=JSON.parse,equals:i=(u,a)=>u===a,onLoad:o=u=>u}){const u=r.getItem(t),a=new I(u!=null?o(s(u)):typeof e=="function"?e():e,i);return a.on(c=>{r.setItem(t,n(c))}),a}function mt(t){return ee({...t,store:(window==null?void 0:window.localStorage)??new Q})}function gt(t){return ee({...t,store:(window==null?void 0:window.sessionStorage)??new Q})}function we(t){return typeof requestAnimationFrame=="function"?requestAnimationFrame(t):setTimeout(t,0)}function Ne(t,e,r,n){const s=(n==null?void 0:n.duration)??300,i=(n==null?void 0:n.easing)??(A=>A),o=(n==null?void 0:n.equals)??((A,x)=>A===x);let u=n==null?void 0:n.interpolate,a=t,c=e(),p=performance.now(),m=null,h=!0;const D=new T(e,o),y=v(t,o);y.onDispose(()=>{m!==null&&cancelAnimationFrame(m)}),y.onDispose(D.dispose),r.forEach(A=>{A.setDerivative(D),A.onDispose(y.dispose)});const U=A=>{c=A,p=performance.now(),a=y.value,h&&(h=!1,m=we(fe))},fe=()=>{const x=(performance.now()-p)/d.unwrap(s),ut=i(x);u==null&&(u=_e(a));let de=u(a,c,ut);x>=1?(h=!0,de=c):m=we(fe),y.set(de)};return D.on(U),y}function wt(t,e){const{initialValue:r,...n}=e??{};return Ne(r??t.get(),t.get,[t],n)}function St(t,e){const{signals:r,literals:n}=Object.entries(t).reduce(({signals:i,literals:o},[u,a])=>(d.is(a)?i.push([u,a]):o[u]=a,{signals:i,literals:o}),{signals:[],literals:{}}),s=r.map(([,i])=>i);return q(()=>(r.forEach(([i,o])=>n[i]=o.value),e(n)),s)}function K(t){let e=t.match(/rgba?\((\d+), (\d+), (\d+)(, (\d+))?\)/);return e!=null?[Number(e[1]),Number(e[2]),Number(e[3]),e[4]!=null?Number(e[5]):1,"rgba"]:(e=t.match(/#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/),e!=null?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16),1,"hex"]:(e=t.match(/hsla?\((\d+), (\d+)%?, (\d+)%?(, (\d+))?\)/),e!=null?[Number(e[1]),Number(e[2]),Number(e[3]),e[4]!=null?Number(e[5]):1,"hsla"]:[0,0,0,1,"rgba"]))}function Se(t){const e=/^(inset\s)?(-?\d+)([a-zA-Z]*)(\s+)(-?\d+)([a-zA-Z]*)(?:\s+(-?\d+)([a-zA-Z]*))?(?:\s+(-?\d+)([a-zA-Z]*))?(?:\s+(-?\d+)([a-zA-Z]*))?(?:\s+)([a-zA-Z0-9(),.]+)$/i,r=t.match(e);if(r==null)return{inset:!1,x:0,y:0,blur:0,spread:0,color:"rgba(0, 0, 0, 0)"};const[,n,s,,,i,,o,,u,,a]=r,c=o!=null?parseInt(o,10):0,p=u!=null?parseInt(u,10):0;return{inset:!!n,x:parseInt(s,10),y:parseInt(i,10),blur:c,spread:p,color:a}}function bt(t){const{inset:e,x:r,y:n,blur:s,spread:i,color:o}=t;return`${e?"inset ":""}${r}px ${n}px ${s}px ${i}px ${o}`}function $e(t){return t[4]==="rgba"?`rgba(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`:t[4]==="hex"?`#${t[0].toString(16).padStart(2,"0")}${t[1].toString(16).padStart(2,"0")}${t[2].toString(16).padStart(2,"0")}`:t[4]==="hsla"?`hsla(${t[0]}, ${t[1]}%, ${t[2]}%, ${t[3]})`:""}function Le(t,e){const[r,n,s,i,o]=K(t),[u,a,c,p]=K(e);return m=>{const h=r+(u-r)*m,D=n+(a-n)*m,y=s+(c-s)*m,U=i+(p-i)*m;return $e([h,D,y,U,o])}}function vt(t,e){const r=Se(t),n=Se(e);return s=>{const i=r.x+(n.x-r.x)*s,o=r.y+(n.y-r.y)*s,u=r.blur+(n.blur-r.blur)*s,a=r.spread+(n.spread-r.spread)*s,c=Re(r.color,n.color)(s);return bt({inset:r.inset,x:i,y:o,blur:u,spread:a,color:c})}}function Ie(t,e){var r,n,s,i,o,u,a,c;return e==="translateX"?new WebKitCSSMatrix(t.transform).m41:e==="translateY"?new WebKitCSSMatrix(t.transform).m42:e==="translateZ"?new WebKitCSSMatrix(t.transform).m43:e==="rotateX"?new WebKitCSSMatrix(t.transform).m12:e==="rotateY"?new WebKitCSSMatrix(t.transform).m21:e==="rotateZ"?new WebKitCSSMatrix(t.transform).m31:e==="scaleX"?new WebKitCSSMatrix(t.transform).m11:e==="scaleY"?new WebKitCSSMatrix(t.transform).m22:e==="scaleZ"?new WebKitCSSMatrix(t.transform).m33:e==="skewX"?new WebKitCSSMatrix(t.transform).m13:e==="skewY"?new WebKitCSSMatrix(t.transform).m23:Number(e==="grayScale"?(r=t.filter.match(/grayscale\((\d+)%\)/))==null?void 0:r[1]:e==="sepia"?(n=t.filter.match(/sepia\((\d+)%\)/))==null?void 0:n[1]:e==="saturate"?(s=t.filter.match(/saturate\((\d+)%\)/))==null?void 0:s[1]:e==="hueRotate"?(i=t.filter.match(/hue-rotate\((\d+)deg\)/))==null?void 0:i[1]:e==="invert"?(o=t.filter.match(/invert\((\d+)%\)/))==null?void 0:o[1]:e==="brightness"?(u=t.filter.match(/brightness\((\d+)%\)/))==null?void 0:u[1]:e==="contrast"?(a=t.filter.match(/contrast\((\d+)%\)/))==null?void 0:a[1]:e==="blur"?(c=t.filter.match(/blur\((\d+)px\)/))==null?void 0:c[1]:t.getPropertyValue(e))}function At(t,e){const r={},n=getComputedStyle(t);for(const[s,i]of Object.entries(e)){const o=s;i!=null&&(r[o]=Ie(n,o))}return r}function $(t,e,r){r!=null&&(e==="translateX"?t.style.transform+=` translateX(${r}px)`:e==="translateY"?t.style.transform+=` translateY(${r}px)`:e==="translateZ"?t.style.transform+=` translateZ(${r}px)`:e==="rotateX"?t.style.transform+=` rotateX(${r}deg)`:e==="rotateY"?t.style.transform+=` rotateY(${r}deg)`:e==="rotateZ"?t.style.transform+=` rotateZ(${r}deg)`:e==="scaleX"?t.style.transform+=` scaleX(${r})`:e==="scaleY"?t.style.transform+=` scaleY(${r})`:e==="scaleZ"?t.style.transform+=` scaleZ(${r})`:e==="skewX"?t.style.transform+=` skewX(${r}deg)`:e==="skewY"?t.style.transform+=` skewY(${r}deg)`:e==="grayScale"?t.style.filter+=` grayscale(${r}%)`:e==="sepia"?t.style.filter+=` sepia(${r}%)`:e==="saturate"?t.style.filter+=` saturate(${r}%)`:e==="hueRotate"?t.style.filter+=` hue-rotate(${r}deg)`:e==="invert"?t.style.filter+=` invert(${r}%)`:e==="brightness"?t.style.filter+=` brightness(${r}%)`:e==="contrast"?t.style.filter+=` contrast(${r}%)`:e==="blur"&&(t.style.filter+=` blur(${r}px)`),t.style.setProperty(e,String(r)))}const X=new Map;function Oe(t,e,r){if(X.has(r+":"+t+e))return X.get(t+e);const n=Le(t,e);return X.set(r+":"+t+e,n),n}function Re(t,e){return Oe(t,e,"c")}function yt(t,e){return Oe(t,e,"s")}function xe(t,e,r,n,s){if(r!=null&&n!=null){if(typeof r=="number"&&typeof n=="number"){const i=r+(n-r)*s;$(t,e,i)}else if(e==="boxShadow"||e==="textShadow"){const i=yt(r,n)(s);$(t,e,i)}else if(e==="color"||e==="backgroundColor"||e==="borderColor"||e==="outlineColor"){const i=Re(r,n)(s);$(t,e,i)}}}function Pt(t,e,r,n){t.style.transform="",t.style.filter="";for(const[s,i]of Object.entries(r)){const o=s;xe(t,o,e[o],i,n)}}function Et(t,e){t.style.transform="",t.style.filter="";for(const[r,n]of Object.entries(e))n!=null&&$(t,r,n)}const We=new Set(["checked","disabled","hidden","selected"]),Fe=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),ze=new Set(["valueAsDate"]),Ve=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),j=new Map;function N(t,e){if(j.has(t))return j.get(t);{const r=e(t);return j.set(t,r),r}}function qe(t){return(e,r)=>{r==null?e[t]=null:e[t]=!!r}}function Ze(t){return(e,r)=>{r==null?e[t]=null:e[t]=Number(r)}}function ke(t){return(e,r)=>{r==null?e[t]=null:e[t]=r}}function He(t){return(e,r)=>{r==null?e[t]=null:e[t]=String(r)}}function Ue(t){return(e,r)=>{r==null?e.removeAttribute(t):e.setAttribute(t,r)}}function te(t){return We.has(t)?N(t,qe):Fe.has(t)?N(t,Ze):ze.has(t)?N(t,ke):Ve.has(t)?N(t,He):N(t,Ue)}function re(t){return e=>We.has(t)?!!e[t]:Fe.has(t)?Number(e[t]):ze.has(t)?e[t]:Ve.has(t)?String(e[t]):e.getAttribute(t)}class b{constructor(e,r,n,s,i){l(this,"createElement",(e,r)=>r!==void 0?this.document.createElementNS(r,e):this.document.createElement(e));l(this,"createText",e=>this.document.createTextNode(e));l(this,"makeRef",()=>{const e=this.createText("");return this.appendOrInsert(e),this.withReference(e)});l(this,"appendOrInsert",e=>{this.reference===void 0?this.element.appendChild(e):this.element.insertBefore(e,this.reference)});l(this,"withDocument",e=>new b(e,this.element,this.reference,this.providers,!1));l(this,"withElement",e=>new b(this.document,e,void 0,this.providers,!1));l(this,"withFirstLevel",()=>new b(this.document,this.element,this.reference,this.providers,!0));l(this,"withReference",e=>new b(this.document,this.element,e,this.providers,this.isFirstLevel));l(this,"withProvider",(e,r)=>new b(this.document,this.element,this.reference,{...this.providers,[e]:r},this.isFirstLevel));l(this,"withProviders",e=>new b(this.document,this.element,this.reference,{...this.providers,...e},this.isFirstLevel));l(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new Error(`Provider not found: ${e.description}`);return this.providers[e]});this.document=e,this.element=r,this.reference=n,this.providers=s,this.isFirstLevel=i}static of(e,r){return new b(e.ownerDocument,e,r,{},!0)}}function S(t){const e=t;e&&e.onblur&&(e.onblur=null),!(!t||t.ownerDocument===void 0)&&t.parentElement&&t.parentElement.removeChild(t)}function Xe(t){return ne(t)?t:t.parentElement}function ne(t){return t.nodeType===1}function Ct(t,e,r){let n=t.target;for(;n!=null&&!(n instanceof HTMLAnchorElement);)n=n.parentElement;if(n==null)return!0;const s=n;if(t.button!==0||t.ctrlKey||t.metaKey||s.target!=="_self"&&s.target!==""||s.getAttribute("download")!=null)return!0;if(r){const{pathname:i,search:o,hash:u}=s,a=i+o+u;if(s.getAttribute("href")!==a||e&&!/\/[^/.]*$/.test(i))return!0}return!1}const Dt=(t,e={checkExtension:!0,checkExternalUrl:!0})=>r=>{const{checkExtension:n,checkExternalUrl:s}=e;Ct(r,n===!0,s===!0)||t()&&r.preventDefault()},se=t=>e=>{e.isFirstLevel&&C.isSSR&&e.element.setAttribute("data-tempo-text","");const r=e.createText(t);return e.appendOrInsert(r),n=>{n&&S(r)}},ie=t=>e=>{e.isFirstLevel&&C.isSSR&&e.element.setAttribute("data-tempo-text","");const r=e.createText(t.value);e.appendOrInsert(r);const n=t.on(s=>r.data=s);return s=>{n(),s&&S(r)}};function Tt(t){return d.is(t)?ie(t):se(t)}const g=(...t)=>e=>{const r=t.map(n=>f(n)(e));return n=>{r.forEach(s=>s(n))}},w=()=>()=>{},V="data-tempo-attr",F="data-tempo-class",je="data-tempo-node",Y="data-tempo-text";function _t(t,e){const r=t.getAttribute(V);r!=null&&t.setAttribute(`${V}:${e}`,r)}function Ye(t,e){C.isSSR&&t.isFirstLevel&&_t(t.element,e)}function Mt(t){t.querySelectorAll(`[^${V}:]`).forEach(e=>{const r=e.getAttributeNames().filter(n=>n.startsWith(`${V}:`));for(const n of r){const s=e.getAttribute(n),i=n.split("-").pop();e.removeAttribute(n),e.setAttribute(i,s)}})}function Nt(t){const e=t.className.trim();e.length>0&&t.setAttribute(F,e)}function Ke(t){C.isSSR&&t.isFirstLevel&&Nt(t.element)}function $t(t){t.querySelectorAll(`[${F}]`).forEach(e=>{const r=e.getAttribute(F);r!==null&&(e.className=r,e.removeAttribute(F))})}function Lt(t){t.setAttribute(je,"")}function It(t){t.querySelectorAll(`[${je}]`).forEach(e=>{S(e)})}function Ot(t){t.querySelectorAll(`[${Y}]`).forEach(e=>{e.textContent=e.getAttribute(Y),e.removeAttribute(Y)})}const Rt=t=>e=>(Ke(e),e.element.classList.add(...t),r=>{r&&e.element.classList.remove(...t)}),xt=t=>e=>{Ke(e);const r=e.element;let n=[];const s=t.on(i=>{n.forEach(o=>r.classList.remove(o)),n=(i??"").split(" ").filter(o=>o.length>0),r.classList.add(...n)});return i=>{s(),i&&n.forEach(o=>r.classList.remove(o)),n.length=0}},Z=(t,e)=>{const r=te(t),n=re(t);return s=>{Ye(s,t);const i=n(s.element);return r(s.element,e),o=>{o&&r(s.element,i)}}},k=(t,e)=>{const r=te(t),n=re(t);return s=>{Ye(s,t);const i=n(s.element);return e.on(o=>r(s.element,o)),o=>{o&&r(s.element,i)}}},E=new Proxy({},{get:(t,e)=>e==="class"?r=>d.is(r)?xt(r):Rt((r??"").split(" ").filter(n=>n.length>0)):r=>d.is(r)?k(e,r):Z(e,r)}),Wt=new Proxy({},{get:(t,e)=>r=>d.is(r)?k(`aria-${e}`,r):Z(`aria-${e}`,r)}),Ft=new Proxy({},{get:(t,e)=>r=>d.is(r)?k(e,r):Z(e,r)}),zt=new Proxy({},{get:(t,e)=>r=>d.is(r)?k(e,r):Z(e,r)});function f(t){return t==null?w:Array.isArray(t)?g(...t.map(f)):typeof t=="string"?se(t):d.is(t)?ie(t):t}function oe(t,...e){return r=>{const n=r.createElement(t,void 0);r.appendOrInsert(n),r.isFirstLevel&&C.isSSR&&Lt(n),r=r.withElement(n);const s=e.map(i=>f(i)(r));return i=>{s.forEach(o=>o(!1)),i&&S(n)}}}function ae(t,e,...r){return n=>{const s=n.createElement(t,e);n.appendOrInsert(s),n.isFirstLevel&&C.isSSR&&s.setAttribute("data-tempo-node",""),n=n.withElement(s);const i=r.map(o=>f(o)(n));return o=>{i.forEach(u=>u(!1)),o&&S(s)}}}const Vt=new Proxy({},{get:(t,e)=>(...r)=>oe(e,r.flatMap(f))}),qt=new Proxy({},{get:(t,e)=>(...r)=>oe("input",E.type(e),...r)}),Zt="http://www.w3.org/2000/svg",kt=new Proxy({},{get:(t,e)=>(...r)=>ae(e,Zt,r.flatMap(f))}),Ht="http://www.w3.org/1998/Math/MathML",Ut=new Proxy({},{get:(t,e)=>(...r)=>ae(e,Ht,r.flatMap(f))});let B=!1;function Be(t){It(t),$t(t),Mt(t),Ot(t)}let G=0;const Xt=(t=30)=>(B=!0,new Promise((e,r)=>{let n;const s=setInterval(()=>{G<=0&&(clearInterval(s),clearTimeout(n),B=!1,e())},10);n=setTimeout(()=>{clearInterval(s),r(new Error("SSR Timeout"))},t*1e3)})),C={useDone(t){return G++,f(t(()=>G--))},get isSSR(){return B}},Ge=(t,e)=>r=>{const n=Object.values(t).reduce((s,i)=>{const o=r.getProvider(i);if(o==null)throw new Error(`No provider found for mark: ${i.description}`);return s[i]=o,s},{});return f(e(n))(r)},jt=(t,e)=>r=>{const n=[],s=Object.entries(t).reduce((i,[o,u])=>(n.push(u(a=>(Reflect.set(i,o,a),null))(r)),i),{});return n.push(e(s)(r)),i=>{n.forEach(o=>o(i))}},Je=(t,e)=>Ge([t],r=>f(e(r[t]))),Yt=(t,e)=>Ge(t,r=>f(e(r))),_=t=>e=>r=>t(r,e);function Qe(t){return Symbol(t)}const et=(t,e)=>r=>f(e)(r.withProviders(t)),Kt=(...t)=>t.length>0?t.reduceRight((e,r)=>n=>e(r(n))):f,tt=(t,e,r)=>et({[t]:e},f(r)),Bt=(t,e)=>et(t,f(e)),J=Qe("Appearance"),Gt={provide:t=>{const e=window.matchMedia!=null&&window.matchMedia("(prefers-color-scheme: dark)").matches,r=v(e?"dark":"light"),n=i=>{r.set(i.matches?"dark":"light")},s=window.matchMedia!=null?window.matchMedia("(prefers-color-scheme: dark)"):void 0;return s==null||s.addEventListener("change",n),g(tt(J,r,t),_(()=>s==null?void 0:s.removeEventListener("change",n)))},consume:t=>Je(J,t)},le=(t,e)=>{if(typeof e=="function")return le(t,{then:e});const r=e.pending!=null?f(e.pending):w,n=e.then,s=e.error!=null?i=>f(e.error(i)):()=>w;return i=>{let o=!0;const u=t();i=i.makeRef();let a=f(r)(i);return u.then(c=>{o&&(a(!0),a=f(n(c))(i))},c=>{o&&(a(!0),a=f(s(c))(i))}),c=>{o=!1,a(c),c&&i.reference&&S(i.reference)}}},Jt=(t,e)=>le(()=>t,e),Qt=(t=10)=>e=>{const r=setTimeout(()=>{var n;(n=e.element)==null||n.focus()},t);return n=>clearTimeout(r)},er=(t=10)=>e=>{const r=setTimeout(()=>{var n;(n=e.element)==null||n.select()},t);return n=>{clearTimeout(r)}},rt=(t,e)=>r=>(r.element.addEventListener(t,e),n=>{n&&r.element.removeEventListener(t,e)}),nt=t=>rt("click",e=>{e.preventDefault();const r=e.target;setTimeout(()=>{const n=r.ownerDocument!=null?r==null?void 0:r.checked:void 0;n!=null&&t(!n)},0)}),O=new Proxy({},{get:(t,e)=>r=>rt(e,r)}),R={value:t=>e=>{const r=e.target;t(r.value)},valueAsNumber:t=>e=>{const r=e.target;t(r.valueAsNumber)},valueAsDate:t=>e=>{const r=e.target;if(r.value==="")return;const n=r.value.split("-"),s=new Date(Number(n[0]),Number(n[1])-1,Number(n[2].substring(0,2)));t(s)},valueAsDateTime:t=>e=>{const r=e.target;if(r.value==="")return;const n=r.value.split("T"),s=n[0].split("-"),i=new Date(Number(s[0]),Number(s[1])-1,Number(s[2])),o=n[1].split(":");i.setHours(Number(o[0])),i.setMinutes(Number(o[1])),i.setSeconds(Number(o[2])),t(i)},checked:t=>e=>{const r=e.target;t(r.checked)},preventDefault:t=>e=>{e.preventDefault(),t()},stopPropagation:t=>e=>{e.stopPropagation(),t()},stopImmediatePropagation:t=>e=>{e.stopImmediatePropagation(),t()}};function tr(t,e="input"){return g(E.valueAsDate(t),O[e](R.valueAsDate(t.set)))}function rr(t,e="input"){return g(E.valueAsDate(t),O[e](R.valueAsDateTime(t.set)))}function nr(t,e="input"){return g(E.valueAsNumber(t),O[e](R.valueAsNumber(t.set)))}function sr(t,e="input"){return g(E.value(t),O[e](R.value(t.set)))}function ir(t){return g(E.checked(t),nt(t.set))}const or={date:tr,dateTime:rr,number:nr,text:sr,checked:ir},W=(t,e)=>r=>{r=r.makeRef();let n,s;const i=t.map(a=>Object.keys(a)[0]);let o;const u=i.on(a=>{if(a!==o){s==null||s.dispose(),n==null||n(!0),s=t.map(p=>p[a]);const c=e[a](s);n=f(c)(r),o=a}});return a=>{u(),a&&r.reference!=null&&S(r.reference),n==null||n(!0)}},M={bool:(t,e)=>W(t.map(r=>r?{true:!0}:{false:!0}),e),field:(t,e,r)=>W(t.map(n=>({[n[e]]:n})),r),kind:(t,e)=>M.field(t,"kind",e),tuple:(t,e)=>{const r=t.map(([n,s])=>({[n]:s}));return W(r,e)},type:(t,e)=>M.field(t,"type",e),value:(t,e)=>W(t.map(r=>({[r]:!0})),e)},ar=(t,e)=>r=>{const n=(e==null?void 0:e.firstSeparator)??w,s=(e==null?void 0:e.lastSeparator)??w;return M.value(r.map(i=>i.isFirst?"first":i.isLast?"last":"other"),{first:()=>n,last:()=>s,other:()=>t})},lr=t=>e=>t(e)(e),ur=t=>e=>(e.appendOrInsert(t),r=>{r&&S(t)}),st=(t,e,r)=>n=>{n=n.makeRef();let s=null,i=!1;const o=v(null),u=t.on(a=>{a==null?(s==null||s(!0),s=f((r==null?void 0:r())??w)(n),i=!1):(o.value=a,i||(s==null||s(!0),s=f(e(o))(n),i=!0))});return a=>{u(),s==null||s(a),a&&n.reference&&S(n.reference)}},ue=(t,e,r)=>r!=null?ue(t,n=>{const s=n.map(i=>i.isLast?"last":"other");return g(_(()=>s.dispose()),f(e(n)),M.value(s,{last:()=>w,other:()=>r(n)}))}):n=>{n=n.makeRef();const s=t.map(a=>Array.from({length:a},(c,p)=>p).map(c=>new Me(c,a))),i=[],o=[],u=s.on(a=>{var p,m;const c=a.length;for(;c<i.length;)(p=i.pop())==null||p(!0),(m=o.pop())==null||m.dispose();for(let h=0;h<c;h++)if(o[h]==null){o[h]=v(a[h]);const D=f(e(o[h]));i[h]=D(n)}else o[h].value=a[h]});return a=>{u(),a&&n.reference&&S(n.reference)}},it=(t,e,r)=>r!=null?it(t,(n,s)=>{const i=s.map(o=>o.isLast?"last":"other");return g([_(()=>i.dispose()),f(e(n,s)),M.value(i,{last:()=>w,other:()=>r(s)})])}):n=>{const s=t.map(i=>i.length);return ue(s,i=>{const o=q(()=>t.value[i.value.index],[i,t]);return g(_(()=>o.dispose()),f(e(o,i)))})(n)},cr=t=>{const e=t.element,r=e.style.getPropertyValue(":empty");return e.style.setProperty(":empty","display:none"),n=>{n&&e.style.setProperty(":empty",r)}};function ce(t,e){const r=t(e);return()=>r(!0)}function fr(t,e,{doc:r,clear:n}={}){const s=typeof e=="string"?(r??document).querySelector(e):e;if(s===null)throw new Error(`Cannot find element by selector for render: ${e}`);n&&(r??s.ownerDocument)!=null&&Be(r??s.ownerDocument);const i=Xe(s),o=ne(s)?void 0:s,u=b.of(i,o);return ce(t,u)}const ot=(t,e)=>r=>{const n=r.document.querySelector(t);if(n===null)throw new Error(`Cannot find element by selector for portal: ${t}`);return ce(f(e),r.withElement(n).withFirstLevel())},dr=t=>ot("head title",E.innerText(t)),at=t=>e=>t(e.element)??(()=>{}),H=(t,e,r)=>st(t.map(n=>n?!0:null),()=>e,r!=null?()=>r:void 0),hr=(t,e,r)=>H(t.map(n=>!n),e,r),pr={partial:{root:null,rootMargin:"0px",threshold:0},full:{root:null,rootMargin:"0px",threshold:1}},z={partial:new Map,full:new Map},L={partial:null,full:null};function mr(t){return L[t]==null&&(L[t]=new IntersectionObserver(e=>{e.forEach(r=>{const n=z[t].get(r.target);n==null||n.set(r.isIntersecting)})},pr[t])),L[t]}function lt(t,e){const r=v(C.isSSR);return g(at(n=>{const s=typeof IntersectionObserver<"u"?mr(t):null;return z[t].set(n,r),s==null||s.observe(n),()=>{var i;s==null||s.unobserve(n),z[t].delete(n),z[t].size===0&&((i=L[t])==null||i.disconnect(),L[t]=null)}}),_(r.dispose),f(e(r)))}const gr=(t,e,r)=>lt(t,n=>H(n,e,r??w)),wr=(t,e)=>r=>{r=r.makeRef();const n=t.map(o=>f(e(o)));let s=()=>{};const i=n.on(o=>{s(!0),s=o(r)});return o=>{i(),s(o)}};function Sr(t,e,r=w){return H(t.map(n=>n.length>0),e,r)}const br=t=>e=>{const r=e.element,n=v({width:r.clientWidth,height:r.clientHeight}),s=f(t(n))(e),i=()=>{n.set({width:r.clientWidth,height:r.clientHeight})};let o;return typeof ResizeObserver=="function"&&(o=new ResizeObserver(i),o.observe(r)),u=>{o==null||o.disconnect(),s(u)}},vr=t=>e=>{const r=v({width:(window==null?void 0:window.innerWidth)??0,height:(window==null?void 0:window.innerHeight)??0}),n=f(t(r))(e),s=()=>{r.set({width:(window==null?void 0:window.innerWidth)??0,height:(window==null?void 0:window.innerHeight)??0})};return window==null||window.addEventListener("resize",s),i=>{window==null||window.removeEventListener("resize",s),n(i)}},Ar={element:br,window:vr},yr=(t,e)=>r=>{const n=r.element,s=n.style.getPropertyValue(t);return n.style.setProperty(t,e),i=>{i&&n.style.setProperty(t,s)}},Pr=(t,e)=>r=>{const n=r.element,s=n.style.getPropertyValue(t);return e.on(i=>n.style.setProperty(t,i)),i=>{i&&n.style.setProperty(t,s)}},Er=new Proxy({},{get:(t,e)=>r=>d.is(r)?Pr(e,r):yr(e,r)});exports.Async=Jt;exports.AutoFocus=Qt;exports.AutoSelect=er;exports.Computed=T;exports.Conjunction=ar;exports.Ctx=lr;exports.DOMContext=b;exports.DOMEl=ur;exports.El=oe;exports.ElNS=ae;exports.Empty=w;exports.Ensure=st;exports.ForEach=it;exports.Fragment=g;exports.HTMLTitle=dr;exports.HiddenWhenEmpty=cr;exports.InViewport=lt;exports.MapSignal=wr;exports.MemoryStore=Q;exports.NotEmpty=Sr;exports.OnChecked=nt;exports.OnDispose=_;exports.OnMount=at;exports.Portal=ot;exports.Position=Me;exports.Prop=I;exports.Provide=Kt;exports.Repeat=ue;exports.Signal=d;exports.Task=le;exports.Text=Tt;exports.Unless=hr;exports.Use=jt;exports.UseProvider=Je;exports.UseProviders=Yt;exports.When=H;exports.WhenInViewport=gr;exports.WithProvider=tt;exports.WithProviders=Bt;exports.animate=Ne;exports.animateOne=wt;exports.appearance=Gt;exports.appearanceMarker=J;exports.applyAnimatable=Et;exports.applyAnimatableProp=$;exports.applyInterpolatedAnimatable=Pt;exports.applyInterpolatedAnimatableProp=xe;exports.aria=Wt;exports.attr=E;exports.bind=or;exports.childToMountable=f;exports.clearSSR=Be;exports.colorChannelsToString=$e;exports.computed=q;exports.computedRecord=St;exports.dateInterpolate=De;exports.effect=ht;exports.emit=R;exports.endInterpolate=Te;exports.getComputedAnimatable=At;exports.getComputedAnimatableProp=Ie;exports.getSelfOrParentElement=Xe;exports.guessInterpolate=_e;exports.handleAnchorClick=Dt;exports.html=Vt;exports.input=qt;exports.interpolateColor=Le;exports.interpolateShadow=vt;exports.isElement=ne;exports.makeGetter=re;exports.makeProviderMark=Qe;exports.makeSetter=te;exports.math=Ut;exports.mathAttr=zt;exports.numberInterpolate=Ee;exports.on=O;exports.oneof=M;exports.parseColorChannels=K;exports.prop=v;exports.propOfLocalStorage=mt;exports.propOfSessionStorage=gt;exports.propOfStorage=ee;exports.removeDOMNode=S;exports.render=fr;exports.renderWithContext=ce;exports.setAttribute=Ue;exports.setBooleanProperty=qe;exports.setDateProperty=ke;exports.setNumberProperty=Ze;exports.setStringProperty=He;exports.signal=pt;exports.signalText=ie;exports.size=Ar;exports.ssr=C;exports.startSSR=Xt;exports.staticText=se;exports.stringInterpolate=Ce;exports.style=Er;exports.svg=kt;exports.svgAttr=Ft;
package/index.d.ts CHANGED
@@ -1,34 +1,52 @@
1
- export { type Clear, type Clean } from './clean';
2
- export { makeProviderMark, DOMContext, type ProviderMark } from './dom-context';
3
- export { Prop, Signal } from './prop';
4
- export { render } from './render';
5
- export { type Renderable } from './renderable';
6
- export { isEmptyElement } from './helpers/is-empty-element';
7
- export { handleTextInput } from './helpers/handle-text-input';
8
- export { handleAnchorClick } from './helpers/handle-anchor-click';
9
- export { type Animatable, applyInterpolatedAnimatableProp, applyInterpolatedAnimatable, applyAnimatableProp, applyAnimatable, getComputedAnimatableProp, getComputedAnimatable } from './components/animatable';
10
- export { AttributeImpl, Attribute, type AttributeProps } from './components/Attribute';
11
- export { Autofocus } from './components/Autofocus';
12
- export { BooleanAttributeImpl, BooleanAttribute, type BooleanAttributeProps } from './components/BooleanAttribute';
13
- export { ClassNameImpl, ClassName, type ClassNameProps } from './components/ClassName';
14
- export { ConsumerImpl, Consumer, type ConsumerProps, ProviderImpl, Provider, type ProviderProps } from './components/Provider';
15
- export { ElImpl, El, type ElProps } from './components/El';
16
- export { FadeIn, FadeInImpl, type FadeInProps } from './components/FadeIn';
17
- export { FadeOut, FadeOutImpl, type FadeOutProps } from './components/FadeOut';
18
- export { For, type ForProps } from './components/For';
19
- export { FragmentImpl, Fragment } from './components/Fragment';
20
- export { HiddenWhenEmptyImpl, HiddenWhenEmpty } from './components/HiddenWhenEmpty';
21
- export { If, type IfProps, Unless, When, type WhenProps } from './components/If';
22
- export { InnerHTMLImpl, InnerHTML, type InnerHTMLProps } from './components/InnerHTML';
23
- export { Lifecycle, LifecycleImpl, type LifecycleProps } from './components/Lifecycle';
24
- export { NotEmpty, type NotEmptyProps } from './components/NotEmpty';
25
- export { OnImpl, On, type OnProps } from './components/On';
26
- export { OnRemove, type OnRemoveProps } from './components/OnRemove';
27
- export { OneOfImpl, OneOf, type OneOfProps, OneOfLiteral, type OneOfLiteralProps, OneOfUnion, type OneOfUnionProps, OneOfUnionKind, type OneOfUnionKindProps, OneOfUnionType, type OneOfUnionTypeProps } from './components/OneOf';
28
- export { PortalImpl, Portal, type PortalProps } from './components/Portal';
29
- export { PropertyImpl, Property, type PropertyProps } from './components/Property';
30
- export { RepeatImpl, Repeat, type RepeatProps, conjuctions, type PositionProps } from './components/Repeat';
31
- export { Show, type ShowProps } from './components/Show';
32
- export { TextImpl, Text, type TextProps } from './components/Text';
33
- export { TextContentImpl, TextContent, type TextContentProps } from './components/TextContent';
34
- export type { JSX } from './jsx-runtime';
1
+ export type * from './types/aria-attributes';
2
+ export type * from './types/css-styles';
3
+ export type * from './types/domain';
4
+ export type * from './types/html-attributes';
5
+ export type * from './types/html-events';
6
+ export type * from './types/html-tags';
7
+ export type * from './types/mathml-attributes';
8
+ export type * from './types/mathml-tags';
9
+ export type * from './types/svg-attributes';
10
+ export type * from './types/svg-tags';
11
+ export * from './std/interpolate';
12
+ export * from './std/position';
13
+ export * from './std/signal';
14
+ export * from './dom/animatable';
15
+ export * from './dom/attr';
16
+ export * from './dom/dom-context';
17
+ export * from './dom/dom-utils';
18
+ export * from './dom/handle-anchor-click';
19
+ export * from './dom/ssr';
20
+ export * from './mountable/appearance';
21
+ export * from './mountable/async';
22
+ export * from './mountable/attribute';
23
+ export * from './mountable/autofocus';
24
+ export * from './mountable/autoselect';
25
+ export * from './mountable/bind';
26
+ export * from './mountable/conjunction';
27
+ export * from './mountable/consumers';
28
+ export * from './mountable/ctx';
29
+ export * from './mountable/domel';
30
+ export * from './mountable/element';
31
+ export * from './mountable/empty';
32
+ export * from './mountable/ensure';
33
+ export * from './mountable/foreach';
34
+ export * from './mountable/fragment';
35
+ export * from './mountable/handler';
36
+ export * from './mountable/hidden-when-empty';
37
+ export * from './mountable/html-title';
38
+ export * from './mountable/inviewport';
39
+ export * from './mountable/map-signal';
40
+ export * from './mountable/not-empty';
41
+ export * from './mountable/ondispose';
42
+ export * from './mountable/oneof';
43
+ export * from './mountable/onmount';
44
+ export * from './mountable/portal';
45
+ export * from './mountable/providers';
46
+ export * from './mountable/render';
47
+ export * from './mountable/repeat';
48
+ export * from './mountable/size';
49
+ export * from './mountable/style';
50
+ export * from './mountable/task';
51
+ export * from './mountable/text';
52
+ export * from './mountable/when';