@xmachines/docs 1.0.0-beta.46 → 1.0.0-beta.48

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 (346) hide show
  1. package/README.md +135 -7
  2. package/api/@xmachines/play/README.md +134 -57
  3. package/api/@xmachines/play/classes/NonNullableError.md +4 -4
  4. package/api/@xmachines/play/classes/PlayError.md +4 -4
  5. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  6. package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
  7. package/api/@xmachines/play-actor/README.md +130 -155
  8. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  9. package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
  10. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
  11. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
  12. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  13. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  14. package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
  15. package/api/@xmachines/play-dom/README.md +140 -232
  16. package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
  17. package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
  18. package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
  19. package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
  20. package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -1
  21. package/api/@xmachines/play-dom/functions/renderSpec.md +1 -1
  22. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
  23. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +13 -13
  24. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +6 -6
  25. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +4 -4
  26. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +12 -12
  27. package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
  28. package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
  29. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +5 -5
  30. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +5 -5
  31. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
  32. package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
  33. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
  34. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
  35. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
  36. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
  37. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +2 -2
  38. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
  39. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
  40. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
  41. package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
  42. package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
  43. package/api/@xmachines/play-dom/variables/schema.md +1 -1
  44. package/api/@xmachines/play-dom-router/README.md +160 -158
  45. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  46. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  47. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  48. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  49. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  50. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  51. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
  52. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  53. package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
  54. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  55. package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +2 -2
  56. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  57. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  58. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  59. package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
  60. package/api/@xmachines/play-react/README.md +109 -320
  61. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  62. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  63. package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
  64. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  65. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
  66. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  67. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  68. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
  69. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
  70. package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
  71. package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
  72. package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
  73. package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
  74. package/api/@xmachines/play-react-router/README.md +107 -124
  75. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +23 -23
  76. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  77. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
  78. package/api/@xmachines/play-react-router/functions/createRouteMap.md +1 -1
  79. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  80. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  81. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  82. package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +2 -2
  83. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  84. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  85. package/api/@xmachines/play-router/README.md +235 -475
  86. package/api/@xmachines/play-router/classes/RouteMap.md +4 -4
  87. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +23 -23
  88. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  89. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  90. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  91. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  92. package/api/@xmachines/play-router/functions/createRouteMatcher.md +1 -1
  93. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  94. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  95. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  96. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  97. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  98. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  99. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  100. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  101. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  102. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  103. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  104. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  105. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  106. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  107. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  108. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  109. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  110. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  111. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  112. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  113. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  114. package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +2 -2
  115. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  116. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  117. package/api/@xmachines/play-router/interfaces/RouteMatcher.md +4 -4
  118. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  119. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  120. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  121. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  122. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  123. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  124. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  125. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  126. package/api/@xmachines/play-signals/README.md +105 -73
  127. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  128. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  129. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  130. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  131. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  132. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  133. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  134. package/api/@xmachines/play-solid/README.md +117 -263
  135. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  136. package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
  137. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
  138. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
  139. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
  140. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
  141. package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
  142. package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
  143. package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
  144. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
  145. package/api/@xmachines/play-solid-router/README.md +93 -606
  146. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  147. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +24 -24
  148. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
  149. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  150. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  151. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  152. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  153. package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +2 -2
  154. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  155. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  156. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  157. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  158. package/api/@xmachines/play-svelte/README.md +111 -103
  159. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  160. package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
  161. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
  162. package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
  163. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
  164. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
  165. package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +11 -11
  166. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
  167. package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +1 -1
  168. package/api/@xmachines/play-svelte-spa-router/README.md +156 -17
  169. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  170. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  171. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  172. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
  173. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  174. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +2 -2
  175. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  176. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  177. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  178. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  179. package/api/@xmachines/play-sveltekit-router/README.md +168 -17
  180. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  181. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  182. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  183. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
  184. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  185. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  186. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +2 -2
  187. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  188. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  189. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  190. package/api/@xmachines/play-tanstack-react-router/README.md +147 -122
  191. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  192. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +23 -23
  193. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
  194. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  195. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  196. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  197. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  198. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  199. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +2 -2
  200. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  201. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  202. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  203. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  204. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  205. package/api/@xmachines/play-tanstack-solid-router/README.md +195 -173
  206. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  207. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +24 -24
  208. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
  209. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  210. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  211. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  212. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +2 -2
  213. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  214. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  215. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  216. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  217. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
  218. package/api/@xmachines/play-vue/README.md +126 -271
  219. package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
  220. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
  221. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  222. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
  223. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
  224. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
  225. package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +1 -1
  226. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  227. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  228. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  229. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
  230. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  231. package/api/@xmachines/play-vue-router/README.md +148 -528
  232. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  233. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +24 -24
  234. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  235. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  236. package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +2 -2
  237. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  238. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  239. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  240. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
  241. package/api/@xmachines/play-xstate/README.md +167 -496
  242. package/api/@xmachines/play-xstate/classes/PlayerActor.md +12 -12
  243. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  244. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  245. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  246. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  247. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  248. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  249. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  250. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  251. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  252. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  253. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  254. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  255. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  256. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
  257. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  258. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  259. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  260. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  261. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  262. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  263. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  264. package/api/@xmachines/shared/README.md +81 -294
  265. package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
  266. package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
  267. package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
  268. package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
  269. package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +1 -1
  270. package/examples/@xmachines/play-dom-demo/README.md +3 -3
  271. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  272. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  273. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  274. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  275. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  276. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  277. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  278. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  279. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  280. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  281. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  282. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  283. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  284. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  285. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  286. package/examples/@xmachines/play-dom-router-demo/README.md +2 -2
  287. package/examples/@xmachines/play-react-demo/README.md +1 -1
  288. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  289. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  290. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  291. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  292. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  293. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  294. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  295. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  296. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  297. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  298. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  299. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  300. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  301. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  302. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  303. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  304. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  305. package/examples/@xmachines/play-react-router-demo/README.md +1 -1
  306. package/examples/@xmachines/play-solid-demo/README.md +1 -1
  307. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  308. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  309. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  310. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  311. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  312. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  313. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  314. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  315. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  316. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  317. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  318. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  319. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  320. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  321. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  322. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  323. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  324. package/examples/@xmachines/play-svelte-demo/README.md +1 -1
  325. package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +1 -1
  326. package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +1 -1
  327. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +2 -2
  328. package/examples/@xmachines/play-sveltekit-router-demo/README.md +2 -2
  329. package/examples/@xmachines/play-vue-demo/README.md +1 -1
  330. package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +1 -1
  331. package/examples/@xmachines/play-vue-demo/variables/App.md +1 -1
  332. package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +1 -1
  333. package/examples/README.md +24 -25
  334. package/examples/form-validation.md +2 -2
  335. package/guides/README.md +7 -7
  336. package/guides/actor-model.md +18 -18
  337. package/guides/architecture.md +500 -0
  338. package/guides/configuration.md +556 -0
  339. package/guides/deployment.md +336 -0
  340. package/guides/development.md +617 -0
  341. package/guides/getting-started.md +351 -142
  342. package/guides/signals.md +19 -19
  343. package/guides/state-machines.md +16 -16
  344. package/guides/testing.md +460 -0
  345. package/package.json +5 -5
  346. package/guides/installation.md +0 -257
@@ -1,108 +1,26 @@
1
1
  [API](../../README.md) / @xmachines/play-dom
2
2
 
3
+ <!-- generated-by: gsd-doc-writer -->
4
+
3
5
  # @xmachines/play-dom
4
6
 
5
- **Vanilla DOM renderer for XMachines**
7
+ Vanilla DOM renderer for XMachines Play architecture with signal-driven rendering.
6
8
 
7
- Framework-free view rendering driven by an XState v5 actor's `currentView` TC39 Signal. Implements the same catalog-typed `defineRegistry` / `ComponentFn` / `ActionFn` API surface as `@json-render/react`, `/solid`, `/vue`, and `/svelte`.
9
+ Part of the [xmachines-js monorepo](../../README.md).
8
10
 
9
11
  ## Installation
10
12
 
11
13
  ```bash
12
- npm install @xmachines/play-dom @json-render/core zod
14
+ npm install @xmachines/play-dom
13
15
  ```
14
16
 
15
- ## Key Exports
16
-
17
- | Export | Description |
18
- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
19
- | `createPlayUI(registryResult, options?)` | Batteries-included factory: returns `mount(actor, container) → disconnect` — parallel to `PlayUIProvider` in framework packages |
20
- | `createRenderer(catalog, componentMap)` | One-call factory: returns `mount(actor, container, options?) → disconnect` |
21
- | `connectRenderer(options)` | Functional API: connect actor → DOM with full options |
22
- | `defineRegistry(catalog, { components, actions })` | Build a catalog-typed `DomRegistry` with typed action handlers |
23
- | `UIProviderOptions` | Standard options interface: `validationFunctions`, `navigate`, `functions`, `onRenderError`, `fallback` |
24
- | `PlayRenderer` | Class-based renderer — `connect()` / `disconnect()` lifecycle |
25
- | `schema` | DOM schema for `defineCatalog` (mirrors `@json-render/react/schema`) |
26
- | `ComponentFn<C, K>` | Catalog-typed DOM component function type |
27
- | `ComponentContext<C, K>` | Context passed to each `ComponentFn` — `props`, `on`, `emit`, `children`, `bindings`, `ctx` |
28
- | `ActionFn<C, K>` | `(params, setState, state) => Promise<void>` — catalog-typed action handler |
29
- | `SetState` | `(updater: prev => next) => void` — write to the local state store |
30
- | `BaseComponentProps<P>` | Base type for catalog component prop definitions |
31
- | `CatalogHasActions<C>` | Conditional type: `true` when catalog declares actions |
32
- | `renderSpec(spec, store, registry, send, handlers)` | Pure Spec → DOM renderer (advanced use) |
33
-
34
- ## Quick Start — `createPlayUI`
35
-
36
- The standard entry point — mirrors `PlayUIProvider` in framework packages. Pass a `registryResult` (from `defineRegistry`) plus optional `UIProviderOptions`, and get back a `mount` function:
37
-
38
- ```typescript
39
- import { defineRegistry, createPlayUI, schema } from "@xmachines/play-dom";
40
- import { defineCatalog } from "@json-render/core";
41
- import { z } from "zod";
42
- import type { ComponentFn } from "@xmachines/play-dom";
17
+ **Peer dependencies:**
43
18
 
44
- // 1. Define catalog
45
- const catalog = defineCatalog(schema, {
46
- components: {
47
- Home: { props: z.object({ title: z.string() }) },
48
- Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
49
- },
50
- actions: {
51
- login: { params: z.object({ username: z.string() }) },
52
- logout: {},
53
- },
54
- });
55
-
56
- // 2. Build registry with typed action handlers
57
- const registryResult = defineRegistry(catalog, {
58
- components: {
59
- Home: ({ props }) => {
60
- const el = document.createElement("section");
61
- el.textContent = props.title;
62
- return el;
63
- },
64
- Login: ({ props, on }) => {
65
- const section = document.createElement("section");
66
- const button = document.createElement("button");
67
- button.textContent = "Log In";
68
- const submit = on("submit");
69
- button.addEventListener("click", () => submit.emit());
70
- section.append(button);
71
- return section;
72
- },
73
- },
74
- actions: {
75
- login: async (params) => {
76
- if (!params) return;
77
- actor.send({ type: "auth.login", username: params.username });
78
- },
79
- logout: async () => actor.send({ type: "auth.logout" }),
80
- },
81
- });
82
-
83
- // 3. Create the UI factory (once, at module level)
84
- const ui = createPlayUI(registryResult, {
85
- onRenderError: (error, elementType) => console.warn(`<${elementType}> crashed:`, error),
86
- fallback: (() => {
87
- const el = document.createElement("p");
88
- el.textContent = "Loading…";
89
- return el;
90
- })(),
91
- });
92
-
93
- // 4. Mount when actor and container are ready
94
- const actor = createPlayer()();
95
- actor.start();
96
-
97
- const disconnect = ui.mount(actor, document.getElementById("app")!);
98
-
99
- // Cleanup:
100
- disconnect();
19
+ ```bash
20
+ npm install xstate @xstate/store @json-render/core @json-render/xstate
101
21
  ```
102
22
 
103
- ## Quick Start — `createRenderer`
104
-
105
- The lower-level one-call pattern — takes a catalog and component map directly:
23
+ ## Quick Start
106
24
 
107
25
  ```typescript
108
26
  import { createRenderer, schema } from "@xmachines/play-dom";
@@ -110,7 +28,7 @@ import { defineCatalog } from "@json-render/core";
110
28
  import { z } from "zod";
111
29
  import type { ComponentFn } from "@xmachines/play-dom";
112
30
 
113
- // 1. Define catalog
31
+ // 1. Define a catalog
114
32
  const catalog = defineCatalog(schema, {
115
33
  components: {
116
34
  Home: { props: z.object({ title: z.string() }) },
@@ -121,213 +39,203 @@ const catalog = defineCatalog(schema, {
121
39
  logout: {},
122
40
  },
123
41
  });
124
- type AppCatalog = typeof catalog;
125
42
 
126
43
  // 2. Implement components
127
- const Home: ComponentFn<AppCatalog, "Home"> = ({ props }) => {
44
+ const Home: ComponentFn<typeof catalog, "Home"> = ({ props }) => {
128
45
  const el = document.createElement("section");
129
46
  el.textContent = props.title;
130
47
  return el;
131
48
  };
132
49
 
133
- const Login: ComponentFn<AppCatalog, "Login"> = ({ props, on }) => {
134
- const section = document.createElement("section");
135
- const input = document.createElement("input");
136
- input.value = props.username ?? "";
137
- input.addEventListener("input", () =>
138
- ctx.store.update((s) => ({ ...s, username: input.value })),
139
- );
140
-
141
- const button = document.createElement("button");
142
- button.textContent = "Log In";
50
+ const Login: ComponentFn<typeof catalog, "Login"> = ({ props, on }) => {
51
+ const el = document.createElement("section");
52
+ const btn = document.createElement("button");
143
53
  const submit = on("submit");
144
- button.addEventListener("click", () => submit.emit());
145
-
146
- section.append(input, button);
147
- return section;
54
+ btn.addEventListener("click", () => submit.emit());
55
+ el.append(btn);
56
+ return el;
148
57
  };
149
58
 
150
- // 3. Create the renderer factory (once, at module level)
59
+ // 3. Build the factory once (module scope)
151
60
  const mount = createRenderer(catalog, { Home, Login });
152
61
 
153
62
  // 4. Mount when actor and container are ready
154
- const actor = createPlayer()();
155
- actor.start();
156
-
157
63
  const disconnect = mount(actor, document.getElementById("app")!);
158
64
 
159
- // Cleanup:
65
+ // 5. Cleanup on teardown
160
66
  disconnect();
161
67
  ```
162
68
 
163
- ## `defineRegistry` — Full Control
69
+ ## Usage
164
70
 
165
- When you need `registryResult.executeAction()` or want to share the registry with `connectRenderer`:
71
+ ### `createRenderer` one-call factory (recommended)
72
+
73
+ `createRenderer` is the simplest integration path. Call it once at module scope with your catalog and component map, then call the returned `mount` function for each actor/container pair.
166
74
 
167
75
  ```typescript
168
- import { defineRegistry, connectRenderer, schema } from "@xmachines/play-dom";
76
+ import { createRenderer, schema } from "@xmachines/play-dom";
169
77
  import { defineCatalog } from "@json-render/core";
170
- import { z } from "zod";
171
78
 
172
79
  const catalog = defineCatalog(schema, {
173
- components: {
174
- Home: { props: z.object({ title: z.string() }) },
175
- },
176
- actions: {
177
- login: { params: z.object({ username: z.string() }) },
178
- logout: {},
179
- },
80
+ /* ... */
81
+ });
82
+
83
+ const mount = createRenderer(catalog, { MyComponent });
84
+
85
+ const disconnect = mount(actor, document.getElementById("app")!);
86
+ // Returns a cleanup function — call it to stop rendering and clear the container.
87
+ disconnect();
88
+ ```
89
+
90
+ ### `createPlayUI` — batteries-included factory with full options
91
+
92
+ Use `createPlayUI` when you need render error handling, a fallback element, or a shared `registryResult` that you also need to reference programmatically (e.g. for `executeAction`).
93
+
94
+ ```typescript
95
+ import { defineRegistry, createPlayUI, schema } from "@xmachines/play-dom";
96
+ import { defineCatalog } from "@json-render/core";
97
+
98
+ const catalog = defineCatalog(schema, {
99
+ /* ... */
180
100
  });
181
101
 
182
- // Action handlers receive (params, setState, state)
183
- // - params: resolved from the spec's on.submit.params (e.g. { $state: "/username" })
184
- // - setState: write to the local state store (e.g. to clear a form)
185
- // - state: current local state store snapshot
186
102
  const registryResult = defineRegistry(catalog, {
187
- components: {
188
- Home: ({ props }) => {
189
- const el = document.createElement("section");
190
- el.textContent = props.title;
191
- return el;
192
- },
193
- },
103
+ components: { Home, Login },
194
104
  actions: {
195
105
  login: async (params, setState) => {
196
- if (!params) return;
197
- actor.send({ type: "auth.login", username: params.username });
198
- setState((prev) => ({ ...prev, username: "" })); // clear the form
106
+ /* ... */
199
107
  },
200
108
  logout: async () => actor.send({ type: "auth.logout" }),
201
109
  },
202
110
  });
203
111
 
204
- const disconnect = connectRenderer({
205
- actor,
206
- registry: registryResult.registry,
207
- registryResult, // wires setState/state from xstate store automatically
208
- container: document.getElementById("app")!,
112
+ const mount = createPlayUI(registryResult, {
113
+ onRenderError: console.error,
114
+ fallback: document.getElementById("loading")!,
209
115
  });
116
+
117
+ const disconnect = mount(actor, document.getElementById("app")!);
118
+ disconnect();
210
119
  ```
211
120
 
212
- ## Component API
121
+ ### `PlayRenderer` — class-based lifecycle control
213
122
 
214
- ### `ComponentFn<C, K>` component function signature
123
+ Use `PlayRenderer` directly when you need explicit `connect()` / `disconnect()` lifecycle control, or when integrating into a system that manages the renderer's lifetime externally.
215
124
 
216
125
  ```typescript
217
- const MyCard: ComponentFn<AppCatalog, "Card"> = ({
218
- props, // catalog-typed props for this component
219
- children, // Node[] — rendered child nodes
220
- on, // (eventName) => EventHandle — get emit() for catalog-declared events
221
- emit, // (eventName) => void — fire an event directly
222
- bindings, // Record<string, string> — $bindState paths for two-way bindings
223
- ctx, // DomRenderContext — store, send, handlers, loading, functions
224
- }) => {
225
- const el = document.createElement("div");
226
- el.append(...children);
227
- return el;
228
- };
229
- ```
126
+ import { PlayRenderer, defineRegistry, schema } from "@xmachines/play-dom";
230
127
 
231
- ### Two-way binding with `$bindState`
128
+ const registryResult = defineRegistry(catalog, { components, actions });
232
129
 
233
- In the view spec:
130
+ const renderer = new PlayRenderer(container, actor, registryResult.registry, { registryResult });
234
131
 
235
- ```json
236
- { "username": { "$bindState": "/username" } }
132
+ renderer.connect();
133
+ // Later:
134
+ renderer.disconnect();
237
135
  ```
238
136
 
239
- In the component:
137
+ **Controlled store mode** — supply an external `StateStore` so the renderer shares state with other parts of your app:
240
138
 
241
139
  ```typescript
242
- const Login: ComponentFn<AppCatalog, "Login"> = ({ props, ctx }) => {
243
- const input = document.createElement("input");
244
- input.value = props.username ?? "";
245
- // Write back to the store on user input
246
- input.addEventListener("input", () => {
247
- ctx.store.update((s) => ({ ...s, username: input.value }));
248
- });
249
- return input;
250
- };
251
- ```
140
+ import { createAtom } from "@xstate/store";
141
+ import { xstateStoreStateStore } from "@json-render/xstate";
252
142
 
253
- ### `on()` event handle
143
+ const atom = createAtom({ username: "" });
144
+ const store = xstateStoreStateStore({ atom });
254
145
 
255
- ```typescript
256
- const submit = on("submit"); // EventHandle
257
- if (submit.bound) {
258
- button.addEventListener("click", (e) => {
259
- if (submit.shouldPreventDefault) e.preventDefault();
260
- submit.emit(); // resolves params from store, calls action handler
261
- });
262
- }
146
+ const renderer = new PlayRenderer(container, actor, registryResult.registry, {
147
+ registryResult,
148
+ store,
149
+ });
150
+ renderer.connect();
263
151
  ```
264
152
 
265
- ### `ActionFn` — action handler signature
153
+ ### `connectRenderer` — functional API (backward-compatible)
154
+
155
+ `connectRenderer` is the original functional API, equivalent to creating a `PlayRenderer` and calling `connect()` in one step. Prefer `createRenderer` or `createPlayUI` for new code.
266
156
 
267
157
  ```typescript
268
- // Full signature all three params are available
269
- login: async (params, setState, state) => {
270
- actor.send({ type: "auth.login", username: params!.username });
271
- setState(prev => ({ ...prev, username: "" }));
272
- console.log("previous state was:", state);
273
- },
274
-
275
- // Params-only — setState/state can be omitted if unused
276
- logout: async () => actor.send({ type: "auth.logout" }),
277
- route: async (params) => actor.send({ type: "play.route", to: params!.to }),
278
- ```
158
+ import { connectRenderer, defineRegistry, schema } from "@xmachines/play-dom";
159
+
160
+ const registryResult = defineRegistry(catalog, {
161
+ components: {
162
+ Home: ({ props }) => {
163
+ const el = document.createElement("section");
164
+ el.textContent = props.title;
165
+ return el;
166
+ },
167
+ },
168
+ actions: {
169
+ logout: async () => actor.send({ type: "auth.logout" }),
170
+ },
171
+ });
279
172
 
280
- ## Spec Features
173
+ const disconnect = connectRenderer({
174
+ actor,
175
+ registry: registryResult.registry,
176
+ registryResult,
177
+ container: document.getElementById("app")!,
178
+ });
281
179
 
282
- `renderSpec` / `renderElement` supports these spec directives:
180
+ // Later:
181
+ disconnect();
182
+ ```
283
183
 
284
- | Directive | Description |
285
- | ------------------------------------------------------ | ------------------------------------------------------------------------------------- |
286
- | `visible` | Boolean or `{ $state: "/path" }` — hide element when false |
287
- | `on.submit` / `on.click` | Action binding — `{ action: "login", params: { username: { $state: "/username" } } }` |
288
- | `repeat: { statePath, key? }` | Render children once per item in the state array at `statePath` |
289
- | `watch: { "/path": actionBinding }` | Fire action when store path changes after mount |
290
- | `props.username: { $bindState: "/username" }` | Two-way binding — read from store, write back via `ctx.store.update()` |
291
- | `props.value: { $state: "/value" }` | Read-only store reference |
292
- | `props.label: { $computed: "computeFn", args: [...] }` | Computed prop via `functions` map |
184
+ ## API Summary
293
185
 
294
- ## `PlayRenderer` — class API
186
+ ### XMachines Layer
295
187
 
296
- ```typescript
297
- import { PlayRenderer, defineRegistry } from "@xmachines/play-dom";
188
+ | Export | Kind | Description |
189
+ | ---------------------------------------- | -------- | --------------------------------------------------------------------------- |
190
+ | `createRenderer(catalog, components)` | function | One-call factory — returns `mount(actor, container, options?) → disconnect` |
191
+ | `createPlayUI(registryResult, options?)` | function | Batteries-included factory — returns `MountFn` |
192
+ | `PlayRenderer` | class | Class-based renderer with `connect()` / `disconnect()` lifecycle |
193
+ | `connectRenderer(options)` | function | Functional API; backward-compatible alternative to `PlayRenderer` |
194
+ | `defineRegistry(catalog, options)` | function | Build a catalog-typed `DomRegistry` with typed handlers |
195
+ | `renderSpec(...)` | function | Pure Spec → DOM renderer (low-level) |
196
+ | `schema` | const | The `@json-render/dom` schema — pass to `defineCatalog()` |
298
197
 
299
- const { registry, registryResult } = defineRegistry(catalog, { components, actions });
198
+ ### Key Types
300
199
 
301
- const renderer = new PlayRenderer(document.getElementById("app")!, actor, registry, {
302
- registryResult,
303
- });
200
+ | Type | Description |
201
+ | ------------------------ | -------------------------------------------------------------------------------------- |
202
+ | `ComponentFn<C, K>` | Catalog-typed component function — returns `HTMLElement \| Text \| null` |
203
+ | `ComponentContext<C, K>` | Context passed to each component: `props`, `children`, `emit`, `on`, `bindings`, `ctx` |
204
+ | `ActionFn<C, K>` | Catalog-typed action function — receives `(params, setState, state)` |
205
+ | `EventHandle` | Handle returned by `on(eventName)` — has `emit()`, `shouldPreventDefault`, `bound` |
206
+ | `SetState` | State updater: `(prev => next) => void` |
207
+ | `DefineRegistryResult` | Result from `defineRegistry` — has `registry`, `handlers`, `executeAction` |
208
+ | `PlayDomOptions` | Options for `PlayRenderer` and `connectRenderer` |
209
+ | `BaseComponentProps<P>` | Catalog-agnostic component props for shared component libraries |
210
+ | `DomRegistry` | Raw registry type: `Record<string, DomComponentRenderer>` |
211
+ | `DomSchema` | Type of the `schema` export |
304
212
 
305
- renderer.connect(); // starts watching actor.currentView
306
- renderer.disconnect(); // stops watching, clears container
213
+ ### Error Classes
307
214
 
308
- // double-connect is safe — connect() calls disconnect() internally if already connected
309
- ```
215
+ | Class | Error Code | Description |
216
+ | ----------------------- | --------------------------------- | ---------------------------------------- |
217
+ | `MissingCatalogError` | `PLAY_RENDERER_MISSING_CATALOG` | Components map was `null` or `undefined` |
218
+ | `MissingComponentError` | `PLAY_RENDERER_MISSING_COMPONENT` | Component name not found in catalog |
310
219
 
311
- ## Options Reference
220
+ ## Rendering Behaviour
312
221
 
313
- ### `ConnectRendererOptions` / `PlayDomOptions`
222
+ - **Initial render is synchronous** — the container is populated before `connect()` or `connectRenderer()` returns.
223
+ - **Signal-driven re-renders are microtask-deferred** — `watchSignal` schedules updates on the next microtask queue tick.
224
+ - **Null view** clears the container. A `fallback` element can be shown on initial mount when the view is `null`; it is **not** re-appended if the view later transitions back to `null` after a non-null view.
225
+ - **Double `connect()` is safe** — calling `connect()` on an already-connected renderer auto-disconnects first.
226
+ - **`disconnect()` clears the container** and unsubscribes all signal and store watchers.
314
227
 
315
- | Option | Type | Description |
316
- | ---------------- | ------------------------------- | ----------------------------------------------------------------------------- |
317
- | `actor` | `AbstractActor & Viewable` | Actor providing `currentView` signal |
318
- | `registry` | `DomRegistry` | Component renderer map from `defineRegistry` |
319
- | `registryResult` | `DefineRegistryResult` | Preferred — auto-wires `setState`/`state` from xstate store |
320
- | `handlers` | `Record<string, ActionHandler>` | Pre-resolved handlers (legacy / advanced) |
321
- | `container` | `HTMLElement` | DOM element to render into |
322
- | `fallback` | `HTMLElement \| null` | Shown on initial mount when view is `null` (initial mount only) |
323
- | `store` | `StateStore` | External store — controlled mode, overrides `spec.state` |
324
- | `loading` | `boolean` | Streaming mode — suppresses missing-child warnings, exposes `ctx.ctx.loading` |
228
+ ## Testing
325
229
 
326
- ## Learn More
230
+ ```bash
231
+ # Run all tests (jsdom environment)
232
+ npm test
233
+
234
+ # Run with coverage
235
+ npm run test:coverage
236
+ ```
327
237
 
328
- - [Demo](../../../examples/@xmachines/play-dom-demo/README.md)
329
- - [DOM Router adapter](../play-dom-router/README.md)
330
- - [Play RFC](../../packages/docs/rfc/play.md)
238
+ Tests live in `test/` and use [Vitest](https://vitest.dev/) with a jsdom environment. Coverage thresholds: 80% lines, functions, branches, and statements.
331
239
 
332
240
  @xmachines/play-dom — Vanilla DOM renderer for XMachines Play architecture.
333
241
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Class: PlayRenderer
4
4
 
5
- Defined in: [packages/play-dom/src/PlayRenderer.ts:78](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/PlayRenderer.ts#L78)
5
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:78](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/PlayRenderer.ts#L78)
6
6
 
7
7
  PlayRenderer connects an actor's `currentView` signal to the DOM renderer.
8
8
 
@@ -50,7 +50,7 @@ new PlayRenderer(
50
50
  options?): PlayRenderer;
51
51
  ```
52
52
 
53
- Defined in: [packages/play-dom/src/PlayRenderer.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/PlayRenderer.ts#L101)
53
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/PlayRenderer.ts#L101)
54
54
 
55
55
  #### Parameters
56
56
 
@@ -73,7 +73,7 @@ Defined in: [packages/play-dom/src/PlayRenderer.ts:101](https://gitlab.com/xmach
73
73
  connect(): void;
74
74
  ```
75
75
 
76
- Defined in: [packages/play-dom/src/PlayRenderer.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/PlayRenderer.ts#L117)
76
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/PlayRenderer.ts#L117)
77
77
 
78
78
  Start watching actor.currentView and render to container.
79
79
  Renders the initial view synchronously, then subscribes to signal changes.
@@ -95,7 +95,7 @@ change. Guard against this by auto-disconnecting first.
95
95
  disconnect(): void;
96
96
  ```
97
97
 
98
- Defined in: [packages/play-dom/src/PlayRenderer.ts:126](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/PlayRenderer.ts#L126)
98
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:126](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/PlayRenderer.ts#L126)
99
99
 
100
100
  Stop watching and clear the container.
101
101
 
@@ -6,7 +6,7 @@
6
6
  function connectRenderer(options): () => void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/src/connect-renderer.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/connect-renderer.ts#L65)
9
+ Defined in: [packages/play-dom/src/connect-renderer.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/connect-renderer.ts#L65)
10
10
 
11
11
  Connect a signal-driven DOM renderer to an actor's `currentView` signal.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function createPlayUI(registryResult, options?): MountFn;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/src/create-play-ui.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/create-play-ui.ts#L64)
9
+ Defined in: [packages/play-dom/src/create-play-ui.ts:64](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/create-play-ui.ts#L64)
10
10
 
11
11
  Create a batteries-included DOM renderer mount function.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function createRenderer<C>(catalog, componentMap): (actor, container, options?) => () => void;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/src/create-renderer.ts:83](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/create-renderer.ts#L83)
9
+ Defined in: [packages/play-dom/src/create-renderer.ts:83](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/create-renderer.ts#L83)
10
10
 
11
11
  Create a reusable DOM renderer factory from a catalog and component map.
12
12
 
@@ -6,7 +6,7 @@
6
6
  function defineRegistry<C>(_catalog, options): DefineRegistryResult;
7
7
  ```
8
8
 
9
- Defined in: [packages/play-dom/src/json-render/types.ts:398](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L398)
9
+ Defined in: [packages/play-dom/src/json-render/types.ts:398](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L398)
10
10
 
11
11
  ## Type Parameters
12
12
 
@@ -17,7 +17,7 @@ function renderSpec(
17
17
  ): Node | null;
18
18
  ```
19
19
 
20
- Defined in: [packages/play-dom/src/json-render/renderer.ts:116](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/renderer.ts#L116)
20
+ Defined in: [packages/play-dom/src/json-render/renderer.ts:116](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/renderer.ts#L116)
21
21
 
22
22
  Render a Spec tree into DOM nodes using the provided `DomRegistry`.
23
23
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: ComponentContext\<C, K\>
4
4
 
5
- Defined in: [packages/play-dom/src/json-render/types.ts:184](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L184)
5
+ Defined in: [packages/play-dom/src/json-render/types.ts:184](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L184)
6
6
 
7
7
  ## Type Parameters
8
8
 
@@ -15,9 +15,9 @@ Defined in: [packages/play-dom/src/json-render/types.ts:184](https://gitlab.com/
15
15
 
16
16
  | Property | Type | Description | Defined in |
17
17
  | ----------------------------------------- | --------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
18
- | <a id="property-bindings"></a> `bindings` | `Record`\<`string`, `string`\> \| `undefined` | Two-way binding paths resolved from `$bindState` / `$bindItem` prop expressions. | [packages/play-dom/src/json-render/types.ts:194](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L194) |
19
- | <a id="property-children"></a> `children` | `Node`[] | Rendered child nodes from the spec's `children` list. | [packages/play-dom/src/json-render/types.ts:190](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L190) |
20
- | <a id="property-ctx"></a> `ctx` | [`DomRenderContext`](DomRenderContext.md) | Low-level render context. | [packages/play-dom/src/json-render/types.ts:206](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L206) |
21
- | <a id="property-emit"></a> `emit` | (`event`) => `void` | Dispatch a named event defined in the spec's `on` map. | [packages/play-dom/src/json-render/types.ts:198](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L198) |
22
- | <a id="property-on"></a> `on` | (`event`) => [`EventHandle`](EventHandle.md) | Get an `EventHandle` for a named event from the spec's `on` map. | [packages/play-dom/src/json-render/types.ts:202](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L202) |
23
- | <a id="property-props"></a> `props` | `InferComponentProps`\<`C`, `K`\> | Catalog-typed, store-resolved props for this component. | [packages/play-dom/src/json-render/types.ts:186](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.46/packages/play-dom/src/json-render/types.ts#L186) |
18
+ | <a id="property-bindings"></a> `bindings` | `Record`\<`string`, `string`\> \| `undefined` | Two-way binding paths resolved from `$bindState` / `$bindItem` prop expressions. | [packages/play-dom/src/json-render/types.ts:194](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L194) |
19
+ | <a id="property-children"></a> `children` | `Node`[] | Rendered child nodes from the spec's `children` list. | [packages/play-dom/src/json-render/types.ts:190](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L190) |
20
+ | <a id="property-ctx"></a> `ctx` | [`DomRenderContext`](DomRenderContext.md) | Low-level render context. | [packages/play-dom/src/json-render/types.ts:206](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L206) |
21
+ | <a id="property-emit"></a> `emit` | (`event`) => `void` | Dispatch a named event defined in the spec's `on` map. | [packages/play-dom/src/json-render/types.ts:198](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L198) |
22
+ | <a id="property-on"></a> `on` | (`event`) => [`EventHandle`](EventHandle.md) | Get an `EventHandle` for a named event from the spec's `on` map. | [packages/play-dom/src/json-render/types.ts:202](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L202) |
23
+ | <a id="property-props"></a> `props` | `InferComponentProps`\<`C`, `K`\> | Catalog-typed, store-resolved props for this component. | [packages/play-dom/src/json-render/types.ts:186](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.48/packages/play-dom/src/json-render/types.ts#L186) |