@vidact/runtime 0.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +50 -0
  4. package/dist/actions.d.ts +37 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +295 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/async.d.ts +22 -0
  9. package/dist/async.d.ts.map +1 -0
  10. package/dist/async.js +24 -0
  11. package/dist/async.js.map +1 -0
  12. package/dist/compiled/async-resource.d.ts +7 -0
  13. package/dist/compiled/async-resource.d.ts.map +1 -0
  14. package/dist/compiled/async-resource.js +89 -0
  15. package/dist/compiled/async-resource.js.map +1 -0
  16. package/dist/compiled/core.d.ts +183 -0
  17. package/dist/compiled/core.d.ts.map +1 -0
  18. package/dist/compiled/core.js +3170 -0
  19. package/dist/compiled/core.js.map +1 -0
  20. package/dist/compiled/types.d.ts +63 -0
  21. package/dist/compiled/types.d.ts.map +1 -0
  22. package/dist/compiled/types.js +7 -0
  23. package/dist/compiled/types.js.map +1 -0
  24. package/dist/compiled/validation.d.ts +2 -0
  25. package/dist/compiled/validation.d.ts.map +1 -0
  26. package/dist/compiled/validation.js +22 -0
  27. package/dist/compiled/validation.js.map +1 -0
  28. package/dist/component-spread.d.ts +6 -0
  29. package/dist/component-spread.d.ts.map +1 -0
  30. package/dist/component-spread.js +71 -0
  31. package/dist/component-spread.js.map +1 -0
  32. package/dist/concurrent.d.ts +26 -0
  33. package/dist/concurrent.d.ts.map +1 -0
  34. package/dist/concurrent.js +244 -0
  35. package/dist/concurrent.js.map +1 -0
  36. package/dist/direct-dom.d.ts +14 -0
  37. package/dist/direct-dom.d.ts.map +1 -0
  38. package/dist/direct-dom.js +239 -0
  39. package/dist/direct-dom.js.map +1 -0
  40. package/dist/dom/attributes.d.ts +7 -0
  41. package/dist/dom/attributes.d.ts.map +1 -0
  42. package/dist/dom/attributes.js +52 -0
  43. package/dist/dom/attributes.js.map +1 -0
  44. package/dist/dom/events.d.ts +3 -0
  45. package/dist/dom/events.d.ts.map +1 -0
  46. package/dist/dom/events.js +78 -0
  47. package/dist/dom/events.js.map +1 -0
  48. package/dist/dom/forms.d.ts +7 -0
  49. package/dist/dom/forms.d.ts.map +1 -0
  50. package/dist/dom/forms.js +217 -0
  51. package/dist/dom/forms.js.map +1 -0
  52. package/dist/dom/intrinsic.d.ts +19 -0
  53. package/dist/dom/intrinsic.d.ts.map +1 -0
  54. package/dist/dom/intrinsic.js +53 -0
  55. package/dist/dom/intrinsic.js.map +1 -0
  56. package/dist/dom/namespace.d.ts +3 -0
  57. package/dist/dom/namespace.d.ts.map +1 -0
  58. package/dist/dom/namespace.js +34 -0
  59. package/dist/dom/namespace.js.map +1 -0
  60. package/dist/dom/namespaces.d.ts +9 -0
  61. package/dist/dom/namespaces.d.ts.map +1 -0
  62. package/dist/dom/namespaces.js +14 -0
  63. package/dist/dom/namespaces.js.map +1 -0
  64. package/dist/dom/properties.d.ts +27 -0
  65. package/dist/dom/properties.d.ts.map +1 -0
  66. package/dist/dom/properties.js +333 -0
  67. package/dist/dom/properties.js.map +1 -0
  68. package/dist/dom/style-properties.d.ts +2 -0
  69. package/dist/dom/style-properties.d.ts.map +1 -0
  70. package/dist/dom/style-properties.js +47 -0
  71. package/dist/dom/style-properties.js.map +1 -0
  72. package/dist/dom/styles.d.ts +4 -0
  73. package/dist/dom/styles.d.ts.map +1 -0
  74. package/dist/dom/styles.js +77 -0
  75. package/dist/dom/styles.js.map +1 -0
  76. package/dist/dom-forms.d.ts +3 -0
  77. package/dist/dom-forms.d.ts.map +1 -0
  78. package/dist/dom-forms.js +17 -0
  79. package/dist/dom-forms.js.map +1 -0
  80. package/dist/dom-styles.d.ts +3 -0
  81. package/dist/dom-styles.d.ts.map +1 -0
  82. package/dist/dom-styles.js +11 -0
  83. package/dist/dom-styles.js.map +1 -0
  84. package/dist/env.d.ts +6 -0
  85. package/dist/framework-hydrate.d.ts +21 -0
  86. package/dist/framework-hydrate.d.ts.map +1 -0
  87. package/dist/framework-hydrate.js +165 -0
  88. package/dist/framework-hydrate.js.map +1 -0
  89. package/dist/framework-protocol.d.ts +33 -0
  90. package/dist/framework-protocol.d.ts.map +1 -0
  91. package/dist/framework-protocol.js +235 -0
  92. package/dist/framework-protocol.js.map +1 -0
  93. package/dist/framework.d.ts +39 -0
  94. package/dist/framework.d.ts.map +1 -0
  95. package/dist/framework.js +111 -0
  96. package/dist/framework.js.map +1 -0
  97. package/dist/hydrate.d.ts +9 -0
  98. package/dist/hydrate.d.ts.map +1 -0
  99. package/dist/hydrate.js +14 -0
  100. package/dist/hydrate.js.map +1 -0
  101. package/dist/hydration-bridge.d.ts +62 -0
  102. package/dist/hydration-bridge.d.ts.map +1 -0
  103. package/dist/hydration-bridge.js +95 -0
  104. package/dist/hydration-bridge.js.map +1 -0
  105. package/dist/hydration.d.ts +29 -0
  106. package/dist/hydration.d.ts.map +1 -0
  107. package/dist/hydration.js +489 -0
  108. package/dist/hydration.js.map +1 -0
  109. package/dist/index.d.ts +13 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +13 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/indexed-list.d.ts +12 -0
  114. package/dist/indexed-list.d.ts.map +1 -0
  115. package/dist/indexed-list.js +10 -0
  116. package/dist/indexed-list.js.map +1 -0
  117. package/dist/jsx-runtime.d.ts +12 -0
  118. package/dist/jsx-runtime.d.ts.map +1 -0
  119. package/dist/jsx-runtime.js +27 -0
  120. package/dist/jsx-runtime.js.map +1 -0
  121. package/dist/keyed-list.d.ts +17 -0
  122. package/dist/keyed-list.d.ts.map +1 -0
  123. package/dist/keyed-list.js +180 -0
  124. package/dist/keyed-list.js.map +1 -0
  125. package/dist/metadata.d.ts +4 -0
  126. package/dist/metadata.d.ts.map +1 -0
  127. package/dist/metadata.js +187 -0
  128. package/dist/metadata.js.map +1 -0
  129. package/dist/nested-prop.d.ts +4 -0
  130. package/dist/nested-prop.d.ts.map +1 -0
  131. package/dist/nested-prop.js +18 -0
  132. package/dist/nested-prop.js.map +1 -0
  133. package/dist/profiling.d.ts +10 -0
  134. package/dist/profiling.d.ts.map +1 -0
  135. package/dist/profiling.js +21 -0
  136. package/dist/profiling.js.map +1 -0
  137. package/dist/protocol.d.ts +3 -0
  138. package/dist/protocol.d.ts.map +1 -0
  139. package/dist/protocol.js +7 -0
  140. package/dist/protocol.js.map +1 -0
  141. package/dist/raw-html.d.ts +3 -0
  142. package/dist/raw-html.d.ts.map +1 -0
  143. package/dist/raw-html.js +172 -0
  144. package/dist/raw-html.js.map +1 -0
  145. package/dist/ref.d.ts +6 -0
  146. package/dist/ref.d.ts.map +1 -0
  147. package/dist/ref.js +5 -0
  148. package/dist/ref.js.map +1 -0
  149. package/dist/renderable-protocol.d.ts +10 -0
  150. package/dist/renderable-protocol.d.ts.map +1 -0
  151. package/dist/renderable-protocol.js +12 -0
  152. package/dist/renderable-protocol.js.map +1 -0
  153. package/dist/renderable.d.ts +27 -0
  154. package/dist/renderable.d.ts.map +1 -0
  155. package/dist/renderable.js +147 -0
  156. package/dist/renderable.js.map +1 -0
  157. package/dist/retained-ui.d.ts +8 -0
  158. package/dist/retained-ui.d.ts.map +1 -0
  159. package/dist/retained-ui.js +12 -0
  160. package/dist/retained-ui.js.map +1 -0
  161. package/dist/root.d.ts +18 -0
  162. package/dist/root.d.ts.map +1 -0
  163. package/dist/root.js +94 -0
  164. package/dist/root.js.map +1 -0
  165. package/dist/scheduler.d.ts +10 -0
  166. package/dist/scheduler.d.ts.map +1 -0
  167. package/dist/scheduler.js +124 -0
  168. package/dist/scheduler.js.map +1 -0
  169. package/dist/server-framework.d.ts +52 -0
  170. package/dist/server-framework.d.ts.map +1 -0
  171. package/dist/server-framework.js +247 -0
  172. package/dist/server-framework.js.map +1 -0
  173. package/dist/server.d.ts +159 -0
  174. package/dist/server.d.ts.map +1 -0
  175. package/dist/server.js +793 -0
  176. package/dist/server.js.map +1 -0
  177. package/dist/shared/promise.d.ts +4 -0
  178. package/dist/shared/promise.d.ts.map +1 -0
  179. package/dist/shared/promise.js +23 -0
  180. package/dist/shared/promise.js.map +1 -0
  181. package/dist/source-mask.d.ts +7 -0
  182. package/dist/source-mask.d.ts.map +1 -0
  183. package/dist/source-mask.js +74 -0
  184. package/dist/source-mask.js.map +1 -0
  185. package/dist/spread.d.ts +3 -0
  186. package/dist/spread.d.ts.map +1 -0
  187. package/dist/spread.js +103 -0
  188. package/dist/spread.js.map +1 -0
  189. package/dist/state-slot.d.ts +18 -0
  190. package/dist/state-slot.d.ts.map +1 -0
  191. package/dist/state-slot.js +46 -0
  192. package/dist/state-slot.js.map +1 -0
  193. package/dist/testing.d.ts +7 -0
  194. package/dist/testing.d.ts.map +1 -0
  195. package/dist/testing.js +18 -0
  196. package/dist/testing.js.map +1 -0
  197. package/package.json +151 -0
@@ -0,0 +1,172 @@
1
+ import { isCompiledBinding, mountCompiledPropTransition, } from './compiled/core.js';
2
+ import { HydrationMismatch, isHydrating } from './hydration-bridge.js';
3
+ const RAW_HTML_PUBLICATION_PRIORITY = 100;
4
+ const rawHtmlHosts = new WeakSet();
5
+ const DEV = typeof __VIDACT_DEV__ === 'undefined' || __VIDACT_DEV__;
6
+ export function mountRawHtmlProp(element, value, children) {
7
+ if (value === null || value === undefined)
8
+ return;
9
+ if (isCompiledBinding(value)) {
10
+ mountCompiledPropTransition(value, (initial) => mountRawHtml(element, initial, children), (next, previous) => prepareRawHtml(element, next, previous, children));
11
+ return;
12
+ }
13
+ mountRawHtml(element, value, children);
14
+ }
15
+ function mountRawHtml(element, value, children) {
16
+ const html = readRawHtml(element, value, children);
17
+ if (html === null || html === undefined)
18
+ return;
19
+ const container = rawHtmlContainer(element);
20
+ const staged = parseRawHtml(element, html);
21
+ if (isHydrating()) {
22
+ if (!hasEqualHydrationRawChildren(container, staged)) {
23
+ throw new HydrationMismatch('server raw HTML does not match the client value');
24
+ }
25
+ }
26
+ else {
27
+ container.replaceChildren(adoptRawHtml(element, staged));
28
+ }
29
+ rawHtmlHosts.add(element);
30
+ }
31
+ function hasEqualHydrationRawChildren(container, expected) {
32
+ const start = container.firstChild;
33
+ const end = container.lastChild;
34
+ if (!(start instanceof Comment) ||
35
+ start.data !== 'vidact:v1:h' ||
36
+ !(end instanceof Comment) ||
37
+ end.data !== '/vidact:v1:h') {
38
+ return false;
39
+ }
40
+ const actual = [];
41
+ for (let node = start.nextSibling; node !== null && node !== end; node = node.nextSibling) {
42
+ actual.push(node);
43
+ }
44
+ if (actual.length !== expected.childNodes.length)
45
+ return false;
46
+ for (let index = 0; index < actual.length; index += 1) {
47
+ if (!actual[index]?.isEqualNode(expected.childNodes[index] ?? null))
48
+ return false;
49
+ }
50
+ return true;
51
+ }
52
+ function prepareRawHtml(element, nextValue, previousValue, children) {
53
+ const nextHtml = readRawHtml(element, nextValue, children);
54
+ const previousHtml = readRawHtml(element, previousValue, children);
55
+ if (nextHtml === null || nextHtml === undefined || nextHtml === previousHtml)
56
+ return undefined;
57
+ const staged = parseRawHtml(element, nextHtml);
58
+ const container = rawHtmlContainer(element);
59
+ const wasRawHtmlHost = rawHtmlHosts.has(element);
60
+ let previousNodes;
61
+ return [
62
+ () => {
63
+ // A reactive script `type` prop commits before the raw subtree.
64
+ assertExecutableRawHtmlTarget(element);
65
+ const adopted = adoptRawHtml(element, staged);
66
+ previousNodes = [...container.childNodes];
67
+ container.replaceChildren(adopted);
68
+ rawHtmlHosts.add(element);
69
+ },
70
+ () => {
71
+ if (previousNodes === undefined)
72
+ return;
73
+ container.replaceChildren(...previousNodes);
74
+ if (!wasRawHtmlHost)
75
+ rawHtmlHosts.delete(element);
76
+ previousNodes = undefined;
77
+ },
78
+ undefined,
79
+ undefined,
80
+ RAW_HTML_PUBLICATION_PRIORITY,
81
+ ];
82
+ }
83
+ export function validateRawHtmlRelatedProp(element, name) {
84
+ if (name === 'type' && rawHtmlHosts.has(element))
85
+ assertExecutableRawHtmlTarget(element);
86
+ }
87
+ function readRawHtml(element, value, children) {
88
+ if (value === null || value === undefined)
89
+ return undefined;
90
+ assertRawHtmlPropTarget(element);
91
+ if (typeof value !== 'object' || !('__html' in value)) {
92
+ throw new Error(DEV
93
+ ? '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.'
94
+ : 'V601');
95
+ }
96
+ const html = value['__html'];
97
+ if (html === null || html === undefined)
98
+ return html;
99
+ if (children.some((child) => child !== null && child !== undefined)) {
100
+ throw new Error(DEV ? 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.' : 'V602');
101
+ }
102
+ assertExecutableRawHtmlTarget(element);
103
+ return html;
104
+ }
105
+ function assertRawHtmlPropTarget(element) {
106
+ const tag = element.localName;
107
+ if (isVoidHtmlElement(tag)) {
108
+ throw new Error(DEV
109
+ ? `${tag} is a void element tag and must neither have \`children\` nor use \`dangerouslySetInnerHTML\`.`
110
+ : 'V603');
111
+ }
112
+ if (tag === 'textarea') {
113
+ throw new Error(DEV ? '`dangerouslySetInnerHTML` does not make sense on <textarea>.' : 'V604');
114
+ }
115
+ }
116
+ function assertExecutableRawHtmlTarget(element) {
117
+ const tag = element.localName;
118
+ if (tag === 'script' && isExecutableScript(element)) {
119
+ throw new Error(DEV
120
+ ? 'dangerouslySetInnerHTML on an executable <script> is unsupported because direct-created scripts execute when connected; use a non-executable data MIME type'
121
+ : 'V605');
122
+ }
123
+ }
124
+ function isVoidHtmlElement(tag) {
125
+ return (tag === 'area' ||
126
+ tag === 'base' ||
127
+ tag === 'br' ||
128
+ tag === 'col' ||
129
+ tag === 'embed' ||
130
+ tag === 'hr' ||
131
+ tag === 'img' ||
132
+ tag === 'input' ||
133
+ tag === 'keygen' ||
134
+ tag === 'link' ||
135
+ tag === 'menuitem' ||
136
+ tag === 'meta' ||
137
+ tag === 'param' ||
138
+ tag === 'source' ||
139
+ tag === 'track' ||
140
+ tag === 'wbr');
141
+ }
142
+ function isExecutableScript(element) {
143
+ const type = element.type.trim().toLowerCase().split(';', 1)[0] ?? '';
144
+ if (type === '' || type === 'module' || type === 'importmap' || type === 'speculationrules') {
145
+ return true;
146
+ }
147
+ return (/^(?:application|text)\/(?:x-)?(?:java|ecma)script(?:1\.[0-5])?$/.test(type) ||
148
+ type === 'text/jscript' ||
149
+ type === 'text/livescript');
150
+ }
151
+ function parseRawHtml(element, html) {
152
+ const stagingDocument = element.ownerDocument.implementation.createHTMLDocument();
153
+ const staging = element.localName === 'noscript'
154
+ ? element.cloneNode(false)
155
+ : stagingDocument.createElement(element.localName.includes('-') ? 'div' : element.localName);
156
+ Reflect.set(staging, 'innerHTML', html);
157
+ const fragment = staging.ownerDocument.createDocumentFragment();
158
+ fragment.append(...rawHtmlContainer(staging).childNodes);
159
+ return fragment;
160
+ }
161
+ function rawHtmlContainer(element) {
162
+ return element instanceof HTMLTemplateElement ? element.content : element;
163
+ }
164
+ function adoptRawHtml(element, staged) {
165
+ if (staged.ownerDocument === element.ownerDocument)
166
+ return staged;
167
+ const adopted = element.ownerDocument.createDocumentFragment();
168
+ adopted.append(...staged.childNodes);
169
+ element.ownerDocument.defaultView?.customElements.upgrade(adopted);
170
+ return adopted;
171
+ }
172
+ //# sourceMappingURL=raw-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-html.js","sourceRoot":"","sources":["../src/raw-html.ts"],"names":[],"mappings":"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"}
package/dist/ref.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface MutableRef<T> {
2
+ current: T;
3
+ }
4
+ /** Creates the stable ref cell captured by a component's one-time execution. */
5
+ export declare function useRef<T>(initialValue: T): MutableRef<T>;
6
+ //# sourceMappingURL=ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAA;CACX;AAED,gFAAgF;AAChF,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAExD"}
package/dist/ref.js ADDED
@@ -0,0 +1,5 @@
1
+ /** Creates the stable ref cell captured by a component's one-time execution. */
2
+ export function useRef(initialValue) {
3
+ return { current: initialValue };
4
+ }
5
+ //# sourceMappingURL=ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.js","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,MAAM,UAAU,MAAM,CAAI,YAAe;IACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;AAClC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const RENDERABLE: unique symbol;
2
+ export interface RenderableProtocol {
3
+ readonly [RENDERABLE]: {
4
+ readonly input: unknown;
5
+ readonly construct: (input: never) => unknown;
6
+ };
7
+ }
8
+ export declare function isRenderableProtocol(value: unknown): value is RenderableProtocol;
9
+ export declare function materializeRenderable(value: RenderableProtocol): unknown;
10
+ //# sourceMappingURL=renderable-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable-protocol.d.ts","sourceRoot":"","sources":["../src/renderable-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAqC,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;QACvB,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;KAC9C,CAAA;CACF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAOhF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAGxE"}
@@ -0,0 +1,12 @@
1
+ export const RENDERABLE = Symbol.for('vidact.v1.Renderable');
2
+ export function isRenderableProtocol(value) {
3
+ return (typeof value === 'object' &&
4
+ value !== null &&
5
+ Object.hasOwn(value, RENDERABLE) &&
6
+ typeof value[RENDERABLE]?.construct === 'function');
7
+ }
8
+ export function materializeRenderable(value) {
9
+ const internals = value[RENDERABLE];
10
+ return internals.construct(internals.input);
11
+ }
12
+ //# sourceMappingURL=renderable-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable-protocol.js","sourceRoot":"","sources":["../src/renderable-protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AAS5D,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;QAChC,OAAQ,KAA4B,CAAC,UAAU,CAAC,EAAE,SAAS,KAAK,UAAU,CAC3E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;IACnC,OAAO,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAc,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { CompiledBinding, CompiledRenderValue } from './compiled/types.js';
2
+ import { Fragment, type DirectComponent } from './direct-dom.js';
3
+ import { RENDERABLE } from './renderable-protocol.js';
4
+ type Props = Record<string, unknown>;
5
+ export type RenderablePropsInput = Props | CompiledBinding<Props>;
6
+ type RenderableInternals = {
7
+ readonly input: RenderablePropsInput;
8
+ readonly construct: (input: RenderablePropsInput) => CompiledRenderValue;
9
+ };
10
+ export interface CompiledRenderable {
11
+ readonly props: Props;
12
+ readonly [RENDERABLE]: RenderableInternals;
13
+ }
14
+ export declare function createRenderable(input: RenderablePropsInput, construct: (input: RenderablePropsInput) => CompiledRenderValue): CompiledRenderable;
15
+ export declare function isRenderable(value: unknown): value is CompiledRenderable;
16
+ export declare function createReactElement(type: string | typeof Fragment | DirectComponent | CompiledRenderable, props: Props | null, ...children: CompiledRenderValue[]): CompiledRenderable;
17
+ export declare function renderableToArray(value: unknown): [CompiledRenderable];
18
+ export declare function renderableMarker(value: unknown): undefined;
19
+ export declare function cloneRenderable(value: unknown, overrides?: RenderablePropsInput): CompiledRenderValue;
20
+ export declare function cloneRenderableComponent(props: Record<string, unknown>): CompiledRenderValue;
21
+ export declare function renderableProps(input: RenderablePropsInput): Record<string, unknown>;
22
+ export declare function renderableChildren(input: RenderablePropsInput): CompiledRenderValue;
23
+ export declare function renderableRef(input: RenderablePropsInput): unknown;
24
+ export declare function forwardedRef(props: Record<string, unknown>): unknown;
25
+ export declare function dynamicIntrinsicComponent(props: Record<string, unknown>): CompiledRenderValue;
26
+ export {};
27
+ //# sourceMappingURL=renderable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable.d.ts","sourceRoot":"","sources":["../src/renderable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAiB,MAAM,qBAAqB,CAAA;AAC9F,OAAO,EAAE,QAAQ,EAAK,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAwB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAQ3E,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACpC,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;AAEjE,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;IACpC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,mBAAmB,CAAA;CACzE,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAA;CAC3C;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,oBAAoB,EAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,mBAAmB,GAC9D,kBAAkB,CAWpB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,OAAO,QAAQ,GAAG,eAAe,GAAG,kBAAkB,EACrE,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,GAAG,QAAQ,EAAE,mBAAmB,EAAE,GACjC,kBAAkB,CAapB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAOtE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAO1D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,oBAAoB,GAC/B,mBAAmB,CAMrB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAG5F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,mBAAmB,CAEnF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAElE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEpE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAO7F"}
@@ -0,0 +1,147 @@
1
+ import { binding, isCompiledBinding } from './compiled/core.js';
2
+ import { Fragment, h } from './direct-dom.js';
3
+ import { isRenderableProtocol, RENDERABLE } from './renderable-protocol.js';
4
+ import { unionSources } from './source-mask.js';
5
+ import { compiledSpread } from './spread.js';
6
+ const DEV = typeof __VIDACT_DEV__ === 'undefined' || __VIDACT_DEV__;
7
+ const SPECIAL_PROPS = new Set(['children', 'key', 'ref']);
8
+ export function createRenderable(input, construct) {
9
+ readPropsInput(input);
10
+ const capability = {
11
+ props: propsView(input),
12
+ };
13
+ Object.defineProperty(capability, RENDERABLE, {
14
+ configurable: false,
15
+ enumerable: false,
16
+ value: { input, construct },
17
+ });
18
+ return capability;
19
+ }
20
+ export function isRenderable(value) {
21
+ return isRenderableProtocol(value);
22
+ }
23
+ export function createReactElement(type, props, ...children) {
24
+ const input = { ...props };
25
+ if (children.length === 1)
26
+ input.children = children[0];
27
+ else if (children.length > 1)
28
+ input.children = children;
29
+ return createRenderable(input, (currentInput) => {
30
+ if (isRenderable(type))
31
+ return cloneRenderable(type, currentInput);
32
+ const resolved = readPropsInput(currentInput);
33
+ const { children: currentChildren, key: _key, ...currentProps } = resolved;
34
+ return Object.hasOwn(resolved, 'children')
35
+ ? h(type, currentProps, currentChildren)
36
+ : h(type, currentProps);
37
+ });
38
+ }
39
+ export function renderableToArray(value) {
40
+ if (!isRenderable(value)) {
41
+ throw new TypeError(DEV ? 'Children.toArray requires one compiled renderable capability' : 'V107');
42
+ }
43
+ return [value];
44
+ }
45
+ export function renderableMarker(value) {
46
+ if (!isRenderable(value)) {
47
+ throw new TypeError(DEV ? 'React element metadata requires a compiled renderable capability' : 'V107');
48
+ }
49
+ return undefined;
50
+ }
51
+ export function cloneRenderable(value, overrides) {
52
+ if (!isRenderable(value)) {
53
+ throw new TypeError(DEV ? 'cloneRenderable requires a compiled renderable capability' : 'V107');
54
+ }
55
+ const internals = value[RENDERABLE];
56
+ return internals.construct(mergeInputs(internals.input, overrides));
57
+ }
58
+ export function cloneRenderableComponent(props) {
59
+ const value = isCompiledBinding(props.value) ? props.value[1]() : props.value;
60
+ return cloneRenderable(value, props.overrides);
61
+ }
62
+ export function renderableProps(input) {
63
+ const ordinary = projectInput(input, (props) => Object.fromEntries(Object.entries(props).filter(([name]) => !SPECIAL_PROPS.has(name))));
64
+ return isCompiledBinding(ordinary) ? compiledSpread(ordinary, []) : ordinary;
65
+ }
66
+ export function renderableChildren(input) {
67
+ return projectInput(input, (props) => props.children);
68
+ }
69
+ export function renderableRef(input) {
70
+ return projectInput(input, (props) => props.ref);
71
+ }
72
+ export function forwardedRef(props) {
73
+ return props.ref;
74
+ }
75
+ export function dynamicIntrinsicComponent(props) {
76
+ const tag = isCompiledBinding(props.tag) ? props.tag[1]() : props.tag;
77
+ if (typeof tag !== 'string') {
78
+ throw new TypeError(DEV ? 'dynamic intrinsic construction requires a string tag' : 'V107');
79
+ }
80
+ const input = props.props;
81
+ return h(tag, { ...renderableProps(input), ref: renderableRef(input) }, renderableChildren(input));
82
+ }
83
+ function propsView(input) {
84
+ return new Proxy({}, {
85
+ get(_target, property) {
86
+ const value = Reflect.get(readPropsInput(input), property);
87
+ return isCompiledBinding(value) ? value[1]() : value;
88
+ },
89
+ getOwnPropertyDescriptor(_target, property) {
90
+ return Object.hasOwn(readPropsInput(input), property)
91
+ ? { configurable: true, enumerable: true }
92
+ : undefined;
93
+ },
94
+ has(_target, property) {
95
+ return Reflect.has(readPropsInput(input), property);
96
+ },
97
+ ownKeys() {
98
+ return Reflect.ownKeys(readPropsInput(input));
99
+ },
100
+ });
101
+ }
102
+ function mergeInputs(authored, overrides) {
103
+ if (overrides === undefined)
104
+ return authored;
105
+ if (!isCompiledBinding(authored) && !isCompiledBinding(overrides)) {
106
+ return { ...readPropsInput(authored), ...readPropsInput(overrides) };
107
+ }
108
+ const inputs = [authored, overrides];
109
+ const subscriptions = collectSubscriptions(inputs);
110
+ const evaluate = () => ({
111
+ ...readPropsInput(authored),
112
+ ...readPropsInput(overrides),
113
+ });
114
+ return binding(subscriptions[0][0], subscriptions[0][1], evaluate, subscriptions[1]?.[0], subscriptions[1]?.[1]);
115
+ }
116
+ function projectInput(input, project) {
117
+ if (!isCompiledBinding(input))
118
+ return project(readPropsInput(input));
119
+ return binding(input[2], input[3], () => project(readPropsInput(input)), input[4], input[5]);
120
+ }
121
+ function collectSubscriptions(inputs) {
122
+ const subscriptions = new Map();
123
+ for (const input of inputs) {
124
+ if (!isCompiledBinding(input))
125
+ continue;
126
+ addSubscription(subscriptions, input[2], input[3]);
127
+ if (input[4] !== undefined && input[5] !== undefined) {
128
+ addSubscription(subscriptions, input[4], input[5]);
129
+ }
130
+ }
131
+ if (subscriptions.size > 2) {
132
+ throw new TypeError(DEV ? 'a compiled renderable can combine reactive props from at most two scopes' : 'V107');
133
+ }
134
+ return [...subscriptions];
135
+ }
136
+ function addSubscription(subscriptions, scope, reads) {
137
+ const current = subscriptions.get(scope);
138
+ subscriptions.set(scope, current === undefined ? reads : unionSources(current, reads));
139
+ }
140
+ function readPropsInput(input) {
141
+ const value = isCompiledBinding(input) ? input[1]() : input;
142
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
143
+ throw new TypeError(DEV ? 'compiled renderable props must evaluate to an object' : 'V107');
144
+ }
145
+ return value;
146
+ }
147
+ //# sourceMappingURL=renderable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderable.js","sourceRoot":"","sources":["../src/renderable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CompiledBinding, CompiledRenderValue, StructuralBinding } from './compiled/types.js';
2
+ export interface ActivityProps {
3
+ readonly children?: (() => CompiledRenderValue) | readonly [() => CompiledRenderValue];
4
+ readonly mode: 'visible' | 'hidden' | CompiledBinding<'visible' | 'hidden'>;
5
+ readonly name?: string;
6
+ }
7
+ export declare function Activity(props: ActivityProps): StructuralBinding;
8
+ //# sourceMappingURL=retained-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retained-ui.d.ts","sourceRoot":"","sources":["../src/retained-ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGlG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,mBAAmB,CAAC,GAAG,SAAS,CAAC,MAAM,mBAAmB,CAAC,CAAA;IACtF,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAA;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,CAQhE"}
@@ -0,0 +1,12 @@
1
+ import { enableRetainedUi, retainedActivity } from './compiled/core.js';
2
+ import { enableRetainedUiStyles } from './dom/styles.js';
3
+ export function Activity(props) {
4
+ const render = Array.isArray(props.children) ? props.children[0] : props.children;
5
+ if (typeof render !== 'function') {
6
+ throw new TypeError('Activity children must be a compiler-generated render function');
7
+ }
8
+ enableRetainedUi();
9
+ enableRetainedUiStyles();
10
+ return retainedActivity(props.mode, render);
11
+ }
12
+ //# sourceMappingURL=retained-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retained-ui.js","sourceRoot":"","sources":["../src/retained-ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAQxD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IACjF,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAA;IACvF,CAAC;IACD,gBAAgB,EAAE,CAAA;IAClB,sBAAsB,EAAE,CAAA;IACxB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC7C,CAAC"}
package/dist/root.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { type MountCompiledOptions } from './compiled/core.js';
2
+ import type { CompiledComponentResult } from './compiled/types.js';
3
+ export interface CompiledRoot {
4
+ readonly mount: (application: () => CompiledComponentResult) => void;
5
+ readonly replace: (application: () => CompiledComponentResult) => void;
6
+ readonly unmount: () => void;
7
+ }
8
+ export interface HotContext {
9
+ readonly data: Record<string, unknown>;
10
+ readonly accept: () => void;
11
+ readonly dispose: (callback: (data: Record<string, unknown>) => void) => void;
12
+ readonly prune: (callback: () => void) => void;
13
+ }
14
+ export declare function createRoot(host: ParentNode, options?: MountCompiledOptions): CompiledRoot;
15
+ export declare function hydrateRoot(host: ParentNode, application: () => CompiledComponentResult, options?: MountCompiledOptions): CompiledRoot;
16
+ export declare function mountHotRoot(hot: HotContext, host: ParentNode, application: () => CompiledComponentResult, options?: MountCompiledOptions): CompiledRoot;
17
+ export declare function hydrateHotRoot(hot: HotContext, host: ParentNode, application: () => CompiledComponentResult, options?: MountCompiledOptions): CompiledRoot;
18
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAIlE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,uBAAuB,KAAK,IAAI,CAAA;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,uBAAuB,KAAK,IAAI,CAAA;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,CAAA;IAC7E,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CAC/C;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAyBzF;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,uBAAuB,EAC1C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAqBd;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,uBAAuB,EAC1C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAOd;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,uBAAuB,EAC1C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAMd"}
package/dist/root.js ADDED
@@ -0,0 +1,94 @@
1
+ import { hydrateCompiled, mountCompiled } from './compiled/core.js';
2
+ const DEV = typeof __VIDACT_DEV__ === 'undefined' || __VIDACT_DEV__;
3
+ const HOT_ROOT = '__vidactHotRoot';
4
+ export function createRoot(host, options) {
5
+ let dispose;
6
+ let terminal = false;
7
+ return {
8
+ mount(application) {
9
+ if (terminal)
10
+ throw new Error(DEV ? 'cannot mount an unmounted root' : 'V024');
11
+ if (dispose !== undefined) {
12
+ throw new Error(DEV ? 'compiled root already has a mounted application' : 'V025');
13
+ }
14
+ dispose = mountCompiled(application, host, options).dispose;
15
+ },
16
+ replace(nextApplication) {
17
+ if (terminal)
18
+ throw new Error(DEV ? 'cannot replace an unmounted root' : 'V030');
19
+ const previous = dispose;
20
+ const next = mountCompiled(nextApplication, host, options).dispose;
21
+ dispose = next;
22
+ previous?.();
23
+ },
24
+ unmount() {
25
+ if (terminal)
26
+ return;
27
+ terminal = true;
28
+ dispose?.();
29
+ dispose = undefined;
30
+ },
31
+ };
32
+ }
33
+ export function hydrateRoot(host, application, options) {
34
+ let dispose = hydrateCompiled(application, host, options).dispose;
35
+ let terminal = false;
36
+ return {
37
+ mount() {
38
+ throw new Error(DEV ? 'hydration roots are mounted during creation' : 'V029');
39
+ },
40
+ replace(nextApplication) {
41
+ if (terminal)
42
+ throw new Error(DEV ? 'cannot replace an unmounted root' : 'V030');
43
+ const previous = dispose;
44
+ const next = mountCompiled(nextApplication, host, options).dispose;
45
+ dispose = next;
46
+ previous?.();
47
+ },
48
+ unmount() {
49
+ if (terminal)
50
+ return;
51
+ terminal = true;
52
+ dispose?.();
53
+ dispose = undefined;
54
+ },
55
+ };
56
+ }
57
+ export function mountHotRoot(hot, host, application, options) {
58
+ const previous = hot.data[HOT_ROOT];
59
+ const root = isCompiledRoot(previous) ? previous : createRoot(host, options);
60
+ if (isCompiledRoot(previous))
61
+ root.replace(application);
62
+ else
63
+ root.mount(application);
64
+ registerHotRoot(hot, root);
65
+ return root;
66
+ }
67
+ export function hydrateHotRoot(hot, host, application, options) {
68
+ const previous = hot.data[HOT_ROOT];
69
+ const root = isCompiledRoot(previous) ? previous : hydrateRoot(host, application, options);
70
+ if (isCompiledRoot(previous))
71
+ root.replace(application);
72
+ registerHotRoot(hot, root);
73
+ return root;
74
+ }
75
+ function registerHotRoot(hot, root) {
76
+ hot.data[HOT_ROOT] = root;
77
+ hot.accept();
78
+ hot.dispose((data) => {
79
+ data[HOT_ROOT] = root;
80
+ });
81
+ hot.prune(() => {
82
+ if (hot.data[HOT_ROOT] !== root)
83
+ return;
84
+ delete hot.data[HOT_ROOT];
85
+ root.unmount();
86
+ });
87
+ }
88
+ function isCompiledRoot(value) {
89
+ return (typeof value === 'object' &&
90
+ value !== null &&
91
+ typeof Reflect.get(value, 'replace') === 'function' &&
92
+ typeof Reflect.get(value, 'unmount') === 'function');
93
+ }
94
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ type ScheduledTask = () => void;
2
+ export type CancelScheduledTask = () => void;
3
+ export declare function scheduleTask(task: ScheduledTask): void;
4
+ export declare function scheduleDeferredTask(task: ScheduledTask): CancelScheduledTask;
5
+ export declare function flushScheduledTasks(): number;
6
+ export declare function hasScheduledTasks(): boolean;
7
+ export declare function beginActScope(): void;
8
+ export declare function endActScope(): void;
9
+ export {};
10
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,MAAM,IAAI,CAAA;AAC/B,MAAM,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAA;AAc5C,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAGtD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,mBAAmB,CAO7E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CA0C5C;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}