synstate-dom 0.0.0-stage → 0.1.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 (185) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +218 -2
  3. package/dist/bind/bind-props.d.mts +9 -0
  4. package/dist/bind/bind-props.d.mts.map +1 -0
  5. package/dist/bind/bind-props.mjs +117 -0
  6. package/dist/bind/bind-props.mjs.map +1 -0
  7. package/dist/bind/index.d.mts +2 -0
  8. package/dist/bind/index.d.mts.map +1 -0
  9. package/dist/bind/index.mjs +2 -0
  10. package/dist/bind/index.mjs.map +1 -0
  11. package/dist/constant/bindable.d.mts +11 -0
  12. package/dist/constant/bindable.d.mts.map +1 -0
  13. package/dist/constant/bindable.mjs +2 -0
  14. package/dist/constant/bindable.mjs.map +1 -0
  15. package/dist/constant/constant.d.mts +20 -0
  16. package/dist/constant/constant.d.mts.map +1 -0
  17. package/dist/constant/constant.mjs +10 -0
  18. package/dist/constant/constant.mjs.map +1 -0
  19. package/dist/constant/derive.d.mts +16 -0
  20. package/dist/constant/derive.d.mts.map +1 -0
  21. package/dist/constant/derive.mjs +28 -0
  22. package/dist/constant/derive.mjs.map +1 -0
  23. package/dist/constant/index.d.mts +7 -0
  24. package/dist/constant/index.d.mts.map +1 -0
  25. package/dist/constant/index.mjs +7 -0
  26. package/dist/constant/index.mjs.map +1 -0
  27. package/dist/constant/map-bindable.d.mts +10 -0
  28. package/dist/constant/map-bindable.d.mts.map +1 -0
  29. package/dist/constant/map-bindable.mjs +16 -0
  30. package/dist/constant/map-bindable.mjs.map +1 -0
  31. package/dist/constant/to-observable.d.mts +12 -0
  32. package/dist/constant/to-observable.d.mts.map +1 -0
  33. package/dist/constant/to-observable.mjs +16 -0
  34. package/dist/constant/to-observable.mjs.map +1 -0
  35. package/dist/constant/view.d.mts +25 -0
  36. package/dist/constant/view.d.mts.map +1 -0
  37. package/dist/constant/view.mjs +15 -0
  38. package/dist/constant/view.mjs.map +1 -0
  39. package/dist/control/for.d.mts +24 -0
  40. package/dist/control/for.d.mts.map +1 -0
  41. package/dist/control/for.mjs +164 -0
  42. package/dist/control/for.mjs.map +1 -0
  43. package/dist/control/if.d.mts +16 -0
  44. package/dist/control/if.d.mts.map +1 -0
  45. package/dist/control/if.mjs +12 -0
  46. package/dist/control/if.mjs.map +1 -0
  47. package/dist/control/index.d.mts +6 -0
  48. package/dist/control/index.d.mts.map +1 -0
  49. package/dist/control/index.mjs +6 -0
  50. package/dist/control/index.mjs.map +1 -0
  51. package/dist/control/longest-increasing-subsequence.d.mts +7 -0
  52. package/dist/control/longest-increasing-subsequence.d.mts.map +1 -0
  53. package/dist/control/longest-increasing-subsequence.mjs +37 -0
  54. package/dist/control/longest-increasing-subsequence.mjs.map +1 -0
  55. package/dist/control/match-optional.d.mts +19 -0
  56. package/dist/control/match-optional.d.mts.map +1 -0
  57. package/dist/control/match-optional.mjs +21 -0
  58. package/dist/control/match-optional.mjs.map +1 -0
  59. package/dist/control/match-result.d.mts +19 -0
  60. package/dist/control/match-result.d.mts.map +1 -0
  61. package/dist/control/match-result.mjs +27 -0
  62. package/dist/control/match-result.mjs.map +1 -0
  63. package/dist/control/mount-switch.d.mts +18 -0
  64. package/dist/control/mount-switch.d.mts.map +1 -0
  65. package/dist/control/mount-switch.mjs +51 -0
  66. package/dist/control/mount-switch.mjs.map +1 -0
  67. package/dist/control/portal.d.mts +15 -0
  68. package/dist/control/portal.d.mts.map +1 -0
  69. package/dist/control/portal.mjs +22 -0
  70. package/dist/control/portal.mjs.map +1 -0
  71. package/dist/index.d.mts +5 -0
  72. package/dist/index.d.mts.map +1 -0
  73. package/dist/index.mjs +5 -0
  74. package/dist/index.mjs.map +1 -0
  75. package/dist/internal/as-constant.d.mts +9 -0
  76. package/dist/internal/as-constant.d.mts.map +1 -0
  77. package/dist/internal/as-constant.mjs +10 -0
  78. package/dist/internal/as-constant.mjs.map +1 -0
  79. package/dist/internal/bind-value.d.mts +14 -0
  80. package/dist/internal/bind-value.d.mts.map +1 -0
  81. package/dist/internal/bind-value.mjs +39 -0
  82. package/dist/internal/bind-value.mjs.map +1 -0
  83. package/dist/internal/dom-tables.d.mts +30 -0
  84. package/dist/internal/dom-tables.d.mts.map +1 -0
  85. package/dist/internal/dom-tables.mjs +167 -0
  86. package/dist/internal/dom-tables.mjs.map +1 -0
  87. package/dist/internal/index.d.mts +7 -0
  88. package/dist/internal/index.d.mts.map +1 -0
  89. package/dist/internal/index.mjs +7 -0
  90. package/dist/internal/index.mjs.map +1 -0
  91. package/dist/internal/is-view.d.mts +3 -0
  92. package/dist/internal/is-view.d.mts.map +1 -0
  93. package/dist/internal/is-view.mjs +4 -0
  94. package/dist/internal/is-view.mjs.map +1 -0
  95. package/dist/internal/mountable-tag.d.mts +6 -0
  96. package/dist/internal/mountable-tag.d.mts.map +1 -0
  97. package/dist/internal/mountable-tag.mjs +6 -0
  98. package/dist/internal/mountable-tag.mjs.map +1 -0
  99. package/dist/internal/view-tag.d.mts +7 -0
  100. package/dist/internal/view-tag.d.mts.map +1 -0
  101. package/dist/internal/view-tag.mjs +7 -0
  102. package/dist/internal/view-tag.mjs.map +1 -0
  103. package/dist/jsx/child.d.mts +20 -0
  104. package/dist/jsx/child.d.mts.map +1 -0
  105. package/dist/jsx/child.mjs +33 -0
  106. package/dist/jsx/child.mjs.map +1 -0
  107. package/dist/jsx/element-props.d.mts +78 -0
  108. package/dist/jsx/element-props.d.mts.map +1 -0
  109. package/dist/jsx/element-props.mjs +2 -0
  110. package/dist/jsx/element-props.mjs.map +1 -0
  111. package/dist/jsx/event-prop-names.d.mts +120 -0
  112. package/dist/jsx/event-prop-names.d.mts.map +1 -0
  113. package/dist/jsx/event-prop-names.mjs +2 -0
  114. package/dist/jsx/event-prop-names.mjs.map +1 -0
  115. package/dist/jsx/index.d.mts +7 -0
  116. package/dist/jsx/index.d.mts.map +1 -0
  117. package/dist/jsx/index.mjs +7 -0
  118. package/dist/jsx/index.mjs.map +1 -0
  119. package/dist/jsx/jsx-namespace.d.mts +11 -0
  120. package/dist/jsx/jsx-namespace.d.mts.map +1 -0
  121. package/dist/jsx/jsx-namespace.mjs +2 -0
  122. package/dist/jsx/jsx-namespace.mjs.map +1 -0
  123. package/dist/jsx/jsx.d.mts +18 -0
  124. package/dist/jsx/jsx.d.mts.map +1 -0
  125. package/dist/jsx/jsx.mjs +46 -0
  126. package/dist/jsx/jsx.mjs.map +1 -0
  127. package/dist/jsx/mountable.d.mts +25 -0
  128. package/dist/jsx/mountable.d.mts.map +1 -0
  129. package/dist/jsx/mountable.mjs +7 -0
  130. package/dist/jsx/mountable.mjs.map +1 -0
  131. package/dist/jsx-dev-runtime.d.mts +7 -0
  132. package/dist/jsx-dev-runtime.d.mts.map +1 -0
  133. package/dist/jsx-dev-runtime.mjs +7 -0
  134. package/dist/jsx-dev-runtime.mjs.map +1 -0
  135. package/dist/jsx-runtime.d.mts +7 -0
  136. package/dist/jsx-runtime.d.mts.map +1 -0
  137. package/dist/jsx-runtime.mjs +7 -0
  138. package/dist/jsx-runtime.mjs.map +1 -0
  139. package/dist/render.d.mts +14 -0
  140. package/dist/render.d.mts.map +1 -0
  141. package/dist/render.mjs +25 -0
  142. package/dist/render.mjs.map +1 -0
  143. package/package.json +97 -3
  144. package/src/bind/bind-props.mts +174 -0
  145. package/src/bind/index.mts +1 -0
  146. package/src/constant/bindable.mts +19 -0
  147. package/src/constant/constant.mts +24 -0
  148. package/src/constant/constant.test.mts +70 -0
  149. package/src/constant/derive.mts +51 -0
  150. package/src/constant/derive.test.mts +64 -0
  151. package/src/constant/index.mts +6 -0
  152. package/src/constant/map-bindable.mts +23 -0
  153. package/src/constant/map-bindable.test.mts +63 -0
  154. package/src/constant/to-observable.mts +20 -0
  155. package/src/constant/to-observable.test.mts +37 -0
  156. package/src/constant/view.mts +35 -0
  157. package/src/constant/view.test.mts +40 -0
  158. package/src/control/for.mts +298 -0
  159. package/src/control/if.mts +28 -0
  160. package/src/control/index.mts +5 -0
  161. package/src/control/longest-increasing-subsequence.mts +59 -0
  162. package/src/control/longest-increasing-subsequence.test.mts +26 -0
  163. package/src/control/match-optional.mts +41 -0
  164. package/src/control/match-result.mts +48 -0
  165. package/src/control/mount-switch.mts +75 -0
  166. package/src/control/portal.mts +32 -0
  167. package/src/index.mts +4 -0
  168. package/src/internal/as-constant.mts +11 -0
  169. package/src/internal/bind-value.mts +58 -0
  170. package/src/internal/dom-tables.mts +176 -0
  171. package/src/internal/index.mts +6 -0
  172. package/src/internal/is-view.mts +6 -0
  173. package/src/internal/mountable-tag.mts +5 -0
  174. package/src/internal/view-tag.mts +6 -0
  175. package/src/jsx/child.mts +51 -0
  176. package/src/jsx/element-props.mts +132 -0
  177. package/src/jsx/element-props.test.mts +28 -0
  178. package/src/jsx/event-prop-names.mts +119 -0
  179. package/src/jsx/index.mts +6 -0
  180. package/src/jsx/jsx-namespace.mts +11 -0
  181. package/src/jsx/jsx.mts +63 -0
  182. package/src/jsx/mountable.mts +31 -0
  183. package/src/jsx-dev-runtime.mts +6 -0
  184. package/src/jsx-runtime.mts +11 -0
  185. package/src/render.mts +32 -0
package/src/render.mts ADDED
@@ -0,0 +1,32 @@
1
+ import { createScope } from 'synstate';
2
+ import { type JSX, toNodes } from './jsx/index.mjs';
3
+
4
+ /**
5
+ * Mounts `app` into `container` and returns the function that unmounts it
6
+ * (SPEC.md 6.5).
7
+ *
8
+ * `app` is called once, inside a new root scope; everything created while it
9
+ * and the description it returns are mounted belongs to that scope, and
10
+ * unmounting disposes it and removes the nodes.
11
+ *
12
+ * `render(App, el)` rather than `render(<App />, el)`: taking the component
13
+ * makes it plain that it is evaluated here.
14
+ */
15
+ export const render = (
16
+ app: () => JSX.Element,
17
+ container: Element,
18
+ ): (() => void) => {
19
+ const root = createScope(undefined);
20
+
21
+ const nodes = root.run(() => toNodes(app().mount()));
22
+
23
+ container.append(...nodes);
24
+
25
+ return () => {
26
+ root.dispose();
27
+
28
+ for (const node of nodes) {
29
+ node.remove();
30
+ }
31
+ };
32
+ };