@xmachines/docs 1.0.0-beta.32 → 1.0.0-beta.34

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 (370) hide show
  1. package/api/@xmachines/play/classes/NonNullableError.md +4 -4
  2. package/api/@xmachines/play/classes/PlayError.md +4 -4
  3. package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
  4. package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
  5. package/api/@xmachines/play-actor/README.md +9 -10
  6. package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
  7. package/api/@xmachines/play-actor/functions/typedSpec.md +7 -10
  8. package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
  9. package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
  10. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
  11. package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
  12. package/api/@xmachines/play-actor/interfaces/Viewable.md +4 -4
  13. package/api/@xmachines/play-dom/README.md +309 -37
  14. package/api/@xmachines/play-dom/classes/PlayRenderer.md +39 -26
  15. package/api/@xmachines/play-dom/functions/connectRenderer.md +39 -20
  16. package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
  17. package/api/@xmachines/play-dom/functions/createRenderer.md +43 -0
  18. package/api/@xmachines/play-dom/functions/defineRegistry.md +5 -5
  19. package/api/@xmachines/play-dom/functions/renderSpec.md +43 -9
  20. package/api/@xmachines/play-dom/interfaces/ComponentContext.md +9 -9
  21. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +19 -9
  22. package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +29 -0
  23. package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +7 -7
  24. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +14 -9
  25. package/api/@xmachines/play-dom/interfaces/EventHandle.md +6 -6
  26. package/api/@xmachines/play-dom/interfaces/MountOptions.md +14 -0
  27. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +7 -5
  28. package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +27 -0
  29. package/api/@xmachines/play-dom/type-aliases/ActionFn.md +23 -7
  30. package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
  31. package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
  32. package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
  33. package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
  34. package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
  35. package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
  36. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
  37. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
  38. package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
  39. package/api/@xmachines/play-dom/type-aliases/MountFn.md +25 -0
  40. package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
  41. package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
  42. package/api/@xmachines/play-dom/variables/schema.md +1 -1
  43. package/api/@xmachines/play-dom-router/README.md +166 -59
  44. package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
  45. package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
  46. package/api/@xmachines/play-dom-router/functions/createRouteMap.md +1 -1
  47. package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
  48. package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
  49. package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
  50. package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
  51. package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
  52. package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +3 -3
  53. package/api/@xmachines/play-dom-router/interfaces/RouteMapLike.md +3 -3
  54. package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
  55. package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
  56. package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
  57. package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
  58. package/api/@xmachines/play-react/README.md +166 -48
  59. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  60. package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
  61. package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
  62. package/api/@xmachines/play-react/functions/Renderer.md +21 -0
  63. package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
  64. package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
  65. package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
  66. package/api/@xmachines/play-react/functions/useActor.md +1 -1
  67. package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
  68. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  69. package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
  70. package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
  71. package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +21 -0
  72. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  73. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  74. package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
  75. package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
  76. package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
  77. package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
  78. package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
  79. package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
  80. package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
  81. package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
  82. package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
  83. package/api/@xmachines/play-react/variables/PlayRenderer.md +5 -50
  84. package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
  85. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +23 -23
  86. package/api/@xmachines/play-react-router/classes/RouteMap.md +4 -4
  87. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
  88. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  89. package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
  90. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  91. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  92. package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
  93. package/api/@xmachines/play-router/classes/BaseRouteMap.md +4 -4
  94. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +23 -23
  95. package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +1 -1
  96. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  97. package/api/@xmachines/play-router/functions/createRouteMap.md +1 -1
  98. package/api/@xmachines/play-router/functions/createRouteMapFromMachine.md +1 -1
  99. package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +1 -1
  100. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  101. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  102. package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
  103. package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
  104. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  105. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  106. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  107. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  108. package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
  109. package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
  110. package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
  111. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  112. package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
  113. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  114. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  115. package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
  116. package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
  117. package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
  118. package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
  119. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  120. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  121. package/api/@xmachines/play-router/interfaces/RouteMap.md +4 -4
  122. package/api/@xmachines/play-router/interfaces/RouteMapping.md +3 -3
  123. package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
  124. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  125. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  126. package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
  127. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
  128. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  129. package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
  130. package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
  131. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  132. package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
  133. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  134. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  135. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  136. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  137. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  138. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  139. package/api/@xmachines/play-solid/README.md +159 -42
  140. package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
  141. package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
  142. package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
  143. package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
  144. package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
  145. package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
  146. package/api/@xmachines/play-solid/functions/defineRegistry.md +1 -1
  147. package/api/@xmachines/play-solid/functions/useAction.md +24 -0
  148. package/api/@xmachines/play-solid/functions/useActions.md +13 -0
  149. package/api/@xmachines/play-solid/functions/useActor.md +1 -1
  150. package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
  151. package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
  152. package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
  153. package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
  154. package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
  155. package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
  156. package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
  157. package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
  158. package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
  159. package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
  160. package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
  161. package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +21 -0
  162. package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
  163. package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
  164. package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
  165. package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
  166. package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
  167. package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +17 -0
  168. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
  169. package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
  170. package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
  171. package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
  172. package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
  173. package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
  174. package/api/@xmachines/play-solid/variables/PlayRenderer.md +5 -18
  175. package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
  176. package/api/@xmachines/play-solid-router/classes/RouteMap.md +4 -4
  177. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +24 -24
  178. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
  179. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  180. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
  181. package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
  182. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  183. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  184. package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
  185. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
  186. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  187. package/api/@xmachines/play-svelte/README.md +142 -27
  188. package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
  189. package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
  190. package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
  191. package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
  192. package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +40 -0
  193. package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +6 -5
  194. package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
  195. package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +9 -0
  196. package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +7 -0
  197. package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +4 -4
  198. package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
  199. package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +1 -1
  200. package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
  201. package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
  202. package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
  203. package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
  204. package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
  205. package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
  206. package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +4 -4
  207. package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
  208. package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +1 -1
  209. package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
  210. package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
  211. package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
  212. package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
  213. package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
  214. package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
  215. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +4 -4
  216. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +23 -23
  217. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
  218. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +1 -1
  219. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  220. package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
  221. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
  222. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
  223. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  224. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  225. package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
  226. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  227. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
  228. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +4 -4
  229. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +24 -24
  230. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
  231. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  232. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
  233. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
  234. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  235. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
  236. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
  237. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  238. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
  239. package/api/@xmachines/play-vue/README.md +137 -40
  240. package/api/@xmachines/play-vue/functions/defineRegistry.md +2 -2
  241. package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
  242. package/api/@xmachines/play-vue/functions/useActor.md +1 -1
  243. package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
  244. package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
  245. package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
  246. package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +20 -0
  247. package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
  248. package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
  249. package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
  250. package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
  251. package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
  252. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
  253. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
  254. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
  255. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
  256. package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
  257. package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
  258. package/api/@xmachines/play-vue/variables/JSONUIProvider.md +96 -0
  259. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  260. package/api/@xmachines/play-vue/variables/Renderer.md +79 -0
  261. package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
  262. package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
  263. package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
  264. package/api/@xmachines/play-vue-router/classes/RouteMap.md +4 -4
  265. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +4 -4
  266. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +24 -24
  267. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  268. package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
  269. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +3 -3
  270. package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
  271. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
  272. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
  273. package/api/@xmachines/play-xstate/classes/PlayerActor.md +24 -24
  274. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
  275. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  276. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  277. package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
  278. package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
  279. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  280. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  281. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  282. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  283. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  284. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  285. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
  286. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  287. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
  288. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  289. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  290. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  291. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  292. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  293. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
  294. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
  295. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +1 -1
  296. package/api/@xmachines/shared/functions/xmAliases.md +1 -1
  297. package/api/_media/README.md +404 -0
  298. package/examples/@xmachines/play-dom-demo/README.md +42 -22
  299. package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +1 -1
  300. package/examples/@xmachines/play-dom-demo/functions/initShell.md +1 -1
  301. package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
  302. package/examples/@xmachines/play-dom-demo/variables/About.md +1 -1
  303. package/examples/@xmachines/play-dom-demo/variables/Contact.md +1 -1
  304. package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +1 -1
  305. package/examples/@xmachines/play-dom-demo/variables/Home.md +1 -1
  306. package/examples/@xmachines/play-dom-demo/variables/Login.md +1 -1
  307. package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +1 -1
  308. package/examples/@xmachines/play-dom-demo/variables/Navigation.md +1 -1
  309. package/examples/@xmachines/play-dom-demo/variables/Overview.md +1 -1
  310. package/examples/@xmachines/play-dom-demo/variables/Profile.md +1 -1
  311. package/examples/@xmachines/play-dom-demo/variables/Settings.md +1 -1
  312. package/examples/@xmachines/play-dom-demo/variables/Stats.md +1 -1
  313. package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
  314. package/examples/@xmachines/play-react-demo/README.md +53 -46
  315. package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
  316. package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
  317. package/examples/@xmachines/play-react-demo/variables/About.md +1 -1
  318. package/examples/@xmachines/play-react-demo/variables/Contact.md +1 -1
  319. package/examples/@xmachines/play-react-demo/variables/Dashboard.md +1 -1
  320. package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +1 -1
  321. package/examples/@xmachines/play-react-demo/variables/Home.md +1 -1
  322. package/examples/@xmachines/play-react-demo/variables/Login.md +1 -1
  323. package/examples/@xmachines/play-react-demo/variables/NavBar.md +1 -1
  324. package/examples/@xmachines/play-react-demo/variables/NavBarView.md +1 -1
  325. package/examples/@xmachines/play-react-demo/variables/Navigation.md +1 -1
  326. package/examples/@xmachines/play-react-demo/variables/Overview.md +1 -1
  327. package/examples/@xmachines/play-react-demo/variables/Profile.md +1 -1
  328. package/examples/@xmachines/play-react-demo/variables/Settings.md +1 -1
  329. package/examples/@xmachines/play-react-demo/variables/Shell.md +1 -1
  330. package/examples/@xmachines/play-react-demo/variables/Stats.md +1 -1
  331. package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
  332. package/examples/@xmachines/play-solid-demo/README.md +53 -34
  333. package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
  334. package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
  335. package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
  336. package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
  337. package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
  338. package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +1 -1
  339. package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
  340. package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
  341. package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
  342. package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +1 -1
  343. package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
  344. package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
  345. package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
  346. package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
  347. package/examples/@xmachines/play-solid-demo/variables/Shell.md +1 -1
  348. package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
  349. package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
  350. package/examples/@xmachines/play-svelte-demo/README.md +23 -20
  351. package/examples/@xmachines/play-svelte-spa-router-demo/README.md +8 -10
  352. package/examples/@xmachines/play-sveltekit-router-demo/README.md +10 -12
  353. package/examples/@xmachines/play-vue-demo/README.md +55 -37
  354. package/examples/form-validation.md +112 -41
  355. package/examples/routing-patterns.md +9 -19
  356. package/guides/README.md +8 -0
  357. package/guides/actor-model.md +180 -0
  358. package/guides/getting-started.md +54 -37
  359. package/guides/installation.md +6 -6
  360. package/guides/signals.md +166 -0
  361. package/guides/state-machines.md +288 -0
  362. package/package.json +2 -2
  363. package/rfc/play.md +62 -35
  364. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
  365. package/api/@xmachines/play-dom/interfaces/DefineRegistryOptions.md +0 -23
  366. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -23
  367. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -23
  368. package/api/@xmachines/play-svelte/interfaces/PlayRendererProps.md +0 -21
  369. package/api/@xmachines/play-svelte/variables/getBoundProp.md +0 -7
  370. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -21
@@ -4,76 +4,328 @@
4
4
 
5
5
  **Vanilla DOM renderer for XMachines**
6
6
 
7
- `connectRenderer` — a framework-free `PlayRenderer` equivalent that wires an XState v5 actor's `currentView` TC39 Signal to pure DOM rendering via a catalog-typed `DomRegistry`.
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`.
8
8
 
9
9
  ## Installation
10
10
 
11
11
  ```bash
12
- npm install @xmachines/play-dom
12
+ npm install @xmachines/play-dom @json-render/core zod
13
13
  ```
14
14
 
15
15
  ## Key Exports
16
16
 
17
- - `connectRenderer({ actor, registry, container, handlers })` — connect actor view signal to DOM
18
- - `defineRegistry(catalog, { components, actions })` — build a catalog-typed `DomRegistry` with real async action handlers
19
- - `schema` DOM schema for use with `defineCatalog` (mirrors `@json-render/react/schema` shape)
20
- - `PlayRenderer` — class-based renderer (connect/disconnect lifecycle)
21
- - `ComponentFn<C, K>` catalog-typed DOM component function type
22
- - `ComponentContext<C, K>` context passed to each `ComponentFn` (props, emit, on, children, bindings)
23
- - `renderSpec(spec, store, registry, send, handlers)` pure Spec → DOM renderer
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";
43
+
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();
24
96
 
25
- ## Usage
97
+ const disconnect = ui.mount(actor, document.getElementById("app")!);
26
98
 
27
- ```ts
28
- import { definePlayer } from "@xmachines/play-xstate";
29
- import { connectRenderer, defineRegistry, schema } from "@xmachines/play-dom";
99
+ // Cleanup:
100
+ disconnect();
101
+ ```
102
+
103
+ ## Quick Start — `createRenderer`
104
+
105
+ The lower-level one-call pattern — takes a catalog and component map directly:
106
+
107
+ ```typescript
108
+ import { createRenderer, schema } from "@xmachines/play-dom";
30
109
  import { defineCatalog } from "@json-render/core";
31
- import { authCatalogDef, type AuthActor } from "@xmachines/play-actor-shared";
110
+ import { z } from "zod";
32
111
  import type { ComponentFn } from "@xmachines/play-dom";
33
112
 
34
- // 1. Build catalog with DOM schema
35
- const authCatalog = defineCatalog(schema, authCatalogDef);
36
- type AuthCatalog = typeof authCatalog;
113
+ // 1. Define catalog
114
+ const catalog = defineCatalog(schema, {
115
+ components: {
116
+ Home: { props: z.object({ title: z.string() }) },
117
+ Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
118
+ },
119
+ actions: {
120
+ login: { params: z.object({ username: z.string() }) },
121
+ logout: {},
122
+ },
123
+ });
124
+ type AppCatalog = typeof catalog;
37
125
 
38
- // 2. Implement catalog components
39
- const Home: ComponentFn<AuthCatalog, "Home"> = ({ props }) => {
126
+ // 2. Implement components
127
+ const Home: ComponentFn<AppCatalog, "Home"> = ({ props }) => {
40
128
  const el = document.createElement("section");
41
129
  el.textContent = props.title;
42
130
  return el;
43
131
  };
44
132
 
45
- // 3. Build registry with real async action handlers
46
- const registryResult = defineRegistry(authCatalog, {
47
- components: { Home /* ... */ },
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", () => ctx.store.update((s) => ({ ...s, username: input.value })));
138
+
139
+ const button = document.createElement("button");
140
+ button.textContent = "Log In";
141
+ const submit = on("submit");
142
+ button.addEventListener("click", () => submit.emit());
143
+
144
+ section.append(input, button);
145
+ return section;
146
+ };
147
+
148
+ // 3. Create the renderer factory (once, at module level)
149
+ const mount = createRenderer(catalog, { Home, Login });
150
+
151
+ // 4. Mount when actor and container are ready
152
+ const actor = createPlayer()();
153
+ actor.start();
154
+
155
+ const disconnect = mount(actor, document.getElementById("app")!);
156
+
157
+ // Cleanup:
158
+ disconnect();
159
+ ```
160
+
161
+ ## `defineRegistry` — Full Control
162
+
163
+ When you need `registryResult.executeAction()` or want to share the registry with `connectRenderer`:
164
+
165
+ ```typescript
166
+ import { defineRegistry, connectRenderer, schema } from "@xmachines/play-dom";
167
+ import { defineCatalog } from "@json-render/core";
168
+ import { z } from "zod";
169
+
170
+ const catalog = defineCatalog(schema, {
171
+ components: {
172
+ Home: { props: z.object({ title: z.string() }) },
173
+ },
48
174
  actions: {
49
- login: async (params) => {
175
+ login: { params: z.object({ username: z.string() }) },
176
+ logout: {},
177
+ },
178
+ });
179
+
180
+ // Action handlers receive (params, setState, state)
181
+ // - params: resolved from the spec's on.submit.params (e.g. { $state: "/username" })
182
+ // - setState: write to the local state store (e.g. to clear a form)
183
+ // - state: current local state store snapshot
184
+ const registryResult = defineRegistry(catalog, {
185
+ components: {
186
+ Home: ({ props }) => {
187
+ const el = document.createElement("section");
188
+ el.textContent = props.title;
189
+ return el;
190
+ },
191
+ },
192
+ actions: {
193
+ login: async (params, setState) => {
50
194
  if (!params) return;
51
195
  actor.send({ type: "auth.login", username: params.username });
196
+ setState((prev) => ({ ...prev, username: "" })); // clear the form
52
197
  },
53
198
  logout: async () => actor.send({ type: "auth.logout" }),
54
199
  },
55
200
  });
56
201
 
57
- // 4. Resolve handlers and connect
58
- const actor = definePlayer({ machine: authMachine })();
59
- actor.start();
60
-
61
- const handlers = registryResult.handlers(
62
- () => undefined,
63
- () => ({}),
64
- );
65
- const container = document.getElementById("app")!;
66
202
  const disconnect = connectRenderer({
67
203
  actor,
68
204
  registry: registryResult.registry,
69
- container,
70
- handlers,
205
+ registryResult, // wires setState/state from xstate store automatically
206
+ container: document.getElementById("app")!,
71
207
  });
72
208
  ```
73
209
 
210
+ ## Component API
211
+
212
+ ### `ComponentFn<C, K>` — component function signature
213
+
214
+ ```typescript
215
+ const MyCard: ComponentFn<AppCatalog, "Card"> = ({
216
+ props, // catalog-typed props for this component
217
+ children, // Node[] — rendered child nodes
218
+ on, // (eventName) => EventHandle — get emit() for catalog-declared events
219
+ emit, // (eventName) => void — fire an event directly
220
+ bindings, // Record<string, string> — $bindState paths for two-way bindings
221
+ ctx, // DomRenderContext — store, send, handlers, loading, functions
222
+ }) => {
223
+ const el = document.createElement("div");
224
+ el.append(...children);
225
+ return el;
226
+ };
227
+ ```
228
+
229
+ ### Two-way binding with `$bindState`
230
+
231
+ In the view spec:
232
+
233
+ ```json
234
+ { "username": { "$bindState": "/username" } }
235
+ ```
236
+
237
+ In the component:
238
+
239
+ ```typescript
240
+ const Login: ComponentFn<AppCatalog, "Login"> = ({ props, ctx }) => {
241
+ const input = document.createElement("input");
242
+ input.value = props.username ?? "";
243
+ // Write back to the store on user input
244
+ input.addEventListener("input", () => {
245
+ ctx.store.update((s) => ({ ...s, username: input.value }));
246
+ });
247
+ return input;
248
+ };
249
+ ```
250
+
251
+ ### `on()` — event handle
252
+
253
+ ```typescript
254
+ const submit = on("submit"); // EventHandle
255
+ if (submit.bound) {
256
+ button.addEventListener("click", (e) => {
257
+ if (submit.shouldPreventDefault) e.preventDefault();
258
+ submit.emit(); // resolves params from store, calls action handler
259
+ });
260
+ }
261
+ ```
262
+
263
+ ### `ActionFn` — action handler signature
264
+
265
+ ```typescript
266
+ // Full signature — all three params are available
267
+ login: async (params, setState, state) => {
268
+ actor.send({ type: "auth.login", username: params!.username });
269
+ setState(prev => ({ ...prev, username: "" }));
270
+ console.log("previous state was:", state);
271
+ },
272
+
273
+ // Params-only — setState/state can be omitted if unused
274
+ logout: async () => actor.send({ type: "auth.logout" }),
275
+ route: async (params) => actor.send({ type: "play.route", to: params!.to }),
276
+ ```
277
+
278
+ ## Spec Features
279
+
280
+ `renderSpec` / `renderElement` supports these spec directives:
281
+
282
+ | Directive | Description |
283
+ | ------------------------------------------------------ | ------------------------------------------------------------------------------------- |
284
+ | `visible` | Boolean or `{ $state: "/path" }` — hide element when false |
285
+ | `on.submit` / `on.click` | Action binding — `{ action: "login", params: { username: { $state: "/username" } } }` |
286
+ | `repeat: { statePath, key? }` | Render children once per item in the state array at `statePath` |
287
+ | `watch: { "/path": actionBinding }` | Fire action when store path changes after mount |
288
+ | `props.username: { $bindState: "/username" }` | Two-way binding — read from store, write back via `ctx.store.update()` |
289
+ | `props.value: { $state: "/value" }` | Read-only store reference |
290
+ | `props.label: { $computed: "computeFn", args: [...] }` | Computed prop via `functions` map |
291
+
292
+ ## `PlayRenderer` — class API
293
+
294
+ ```typescript
295
+ import { PlayRenderer, defineRegistry } from "@xmachines/play-dom";
296
+
297
+ const { registry, registryResult } = defineRegistry(catalog, { components, actions });
298
+
299
+ const renderer = new PlayRenderer(document.getElementById("app")!, actor, registry, {
300
+ registryResult,
301
+ });
302
+
303
+ renderer.connect(); // starts watching actor.currentView
304
+ renderer.disconnect(); // stops watching, clears container
305
+
306
+ // double-connect is safe — connect() calls disconnect() internally if already connected
307
+ ```
308
+
309
+ ## Options Reference
310
+
311
+ ### `ConnectRendererOptions` / `PlayDomOptions`
312
+
313
+ | Option | Type | Description |
314
+ | ---------------- | ------------------------------- | ----------------------------------------------------------------------------- |
315
+ | `actor` | `AbstractActor & Viewable` | Actor providing `currentView` signal |
316
+ | `registry` | `DomRegistry` | Component renderer map from `defineRegistry` |
317
+ | `registryResult` | `DefineRegistryResult` | Preferred — auto-wires `setState`/`state` from xstate store |
318
+ | `handlers` | `Record<string, ActionHandler>` | Pre-resolved handlers (legacy / advanced) |
319
+ | `container` | `HTMLElement` | DOM element to render into |
320
+ | `fallback` | `HTMLElement \| null` | Shown on initial mount when view is `null` (initial mount only) |
321
+ | `store` | `StateStore` | External store — controlled mode, overrides `spec.state` |
322
+ | `loading` | `boolean` | Streaming mode — suppresses missing-child warnings, exposes `ctx.ctx.loading` |
323
+
74
324
  ## Learn More
75
325
 
76
326
  - [DOM Router adapter `@xmachines/play-dom-router`](../play-dom-router/README.md)
327
+ - [API reference](../../_media/README.md)
328
+ - [Play RFC](../../packages/docs/rfc/play.md)
77
329
 
78
330
  @xmachines/play-dom — Vanilla DOM renderer for XMachines Play architecture.
79
331
 
@@ -81,8 +333,9 @@ Public API split into two layers:
81
333
 
82
334
  **XMachines layer** (this package):
83
335
 
84
- - `PlayRenderer` — connects actor.currentView signalDOM renderer
85
- - `connectRenderer()` — backward-compat functional API
336
+ - `createRenderer()` — one-call factory: returns `mount(actor, container, options?) disconnect`
337
+ - `PlayRenderer` — class-based renderer with `connect()` / `disconnect()` lifecycle
338
+ - `connectRenderer()` — functional API (backward-compat alternative to `PlayRenderer`)
86
339
  - `ConnectRendererOptions`, `PlayDomOptions`
87
340
 
88
341
  **json-render layer** (upstreamable to @json-render/dom):
@@ -96,6 +349,9 @@ Public API split into two layers:
96
349
  - `DomRegistry` — raw registry type
97
350
  - `DomRenderContext` — raw render context
98
351
  - `EventHandle` — event handle returned by on()
352
+ - `SetState` — state updater function passed to ActionFn
353
+ - `CatalogHasActions` — conditional type: true when catalog declares actions
354
+ - `BaseComponentProps` — base props type for catalog component definitions
99
355
 
100
356
  ## Classes
101
357
 
@@ -105,21 +361,29 @@ Public API split into two layers:
105
361
 
106
362
  - [ComponentContext](interfaces/ComponentContext.md)
107
363
  - [ConnectRendererOptions](interfaces/ConnectRendererOptions.md)
108
- - [DefineRegistryOptions](interfaces/DefineRegistryOptions.md)
364
+ - [CreatePlayUIOptions](interfaces/CreatePlayUIOptions.md)
109
365
  - [DefineRegistryResult](interfaces/DefineRegistryResult.md)
110
366
  - [DomRenderContext](interfaces/DomRenderContext.md)
111
367
  - [EventHandle](interfaces/EventHandle.md)
368
+ - [MountOptions](interfaces/MountOptions.md)
112
369
  - [PlayDomOptions](interfaces/PlayDomOptions.md)
370
+ - [UIProviderOptions](interfaces/UIProviderOptions.md)
113
371
 
114
372
  ## Type Aliases
115
373
 
116
374
  - [ActionFn](type-aliases/ActionFn.md)
117
375
  - [Actions](type-aliases/Actions.md)
376
+ - [BaseComponentProps](type-aliases/BaseComponentProps.md)
377
+ - [CatalogHasActions](type-aliases/CatalogHasActions.md)
118
378
  - [ComponentFn](type-aliases/ComponentFn.md)
119
379
  - [ComponentRegistry](type-aliases/ComponentRegistry.md)
380
+ - [DefineRegistryOptions](type-aliases/DefineRegistryOptions.md)
120
381
  - [DomComponentRenderer](type-aliases/DomComponentRenderer.md)
121
382
  - [DomRegistry](type-aliases/DomRegistry.md)
122
383
  - [DomSchema](type-aliases/DomSchema.md)
384
+ - [MountFn](type-aliases/MountFn.md)
385
+ - [RenderErrorHandler](type-aliases/RenderErrorHandler.md)
386
+ - [SetState](type-aliases/SetState.md)
123
387
 
124
388
  ## Variables
125
389
 
@@ -128,5 +392,13 @@ Public API split into two layers:
128
392
  ## Functions
129
393
 
130
394
  - [connectRenderer](functions/connectRenderer.md)
395
+ - [createPlayUI](functions/createPlayUI.md)
396
+ - [createRenderer](functions/createRenderer.md)
131
397
  - [defineRegistry](functions/defineRegistry.md)
132
398
  - [renderSpec](functions/renderSpec.md)
399
+
400
+ ## References
401
+
402
+ ### RenderErrorHandler
403
+
404
+ Re-exports [RenderErrorHandler](type-aliases/RenderErrorHandler.md)
@@ -2,34 +2,42 @@
2
2
 
3
3
  # Class: PlayRenderer
4
4
 
5
- Defined in: [PlayRenderer.ts:60](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.32/packages/play-dom/src/PlayRenderer.ts#L60)
5
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:78](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-dom/src/PlayRenderer.ts#L78)
6
6
 
7
- PlayRenderer connects an actor's currentView signal to the DOM renderer.
7
+ PlayRenderer connects an actor's `currentView` signal to the DOM renderer.
8
8
 
9
- Usage:
9
+ Watches `actor.currentView` via TC39 Signals and renders `DomComponentRenderer`
10
+ functions into `container` on every view transition. Cleared on `disconnect()`.
11
+
12
+ **Preferred usage — via `registryResult`:**
10
13
 
11
14
  ```typescript
12
- const { registry, handlers } = defineRegistry(catalog, { components, actions });
13
- const resolvedHandlers = handlers(
14
- () => undefined,
15
- () => ({}),
16
- );
17
- const renderer = new PlayRenderer(container, actor, registry, { handlers: resolvedHandlers });
15
+ import { PlayRenderer, defineRegistry } from "@xmachines/play-dom";
16
+
17
+ const registryResult = defineRegistry(catalog, { components, actions });
18
+ const renderer = new PlayRenderer(container, actor, registryResult.registry, {
19
+ registryResult, // wires setState/getState from xstate store automatically
20
+ });
18
21
  renderer.connect();
22
+ // Later:
23
+ renderer.disconnect();
24
+ ```
25
+
26
+ **Controlled store mode** — bring your own `StateStore`:
19
27
 
20
- // Controlled mode — bring your own store:
28
+ ```typescript
21
29
  import { createAtom } from "@xstate/store";
22
30
  import { xstateStoreStateStore } from "@json-render/xstate";
23
- const store = xstateStoreStateStore({ atom: createAtom({ username: "" }) });
24
- const renderer = new PlayRenderer(container, actor, registry, {
25
- store,
26
- handlers: resolvedHandlers,
27
- });
28
31
 
29
- // Later:
30
- renderer.disconnect();
32
+ const atom = createAtom({ username: "" });
33
+ const store = xstateStoreStateStore({ atom });
34
+ const renderer = new PlayRenderer(container, actor, registry, { registryResult, store });
35
+ renderer.connect();
31
36
  ```
32
37
 
38
+ Double `connect()` is safe — calling `connect()` while already connected
39
+ automatically disconnects first, preventing double-render subscriptions.
40
+
33
41
  ## Constructors
34
42
 
35
43
  ### Constructor
@@ -42,16 +50,16 @@ new PlayRenderer(
42
50
  options?): PlayRenderer;
43
51
  ```
44
52
 
45
- Defined in: [PlayRenderer.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.32/packages/play-dom/src/PlayRenderer.ts#L72)
53
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:101](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-dom/src/PlayRenderer.ts#L101)
46
54
 
47
55
  #### Parameters
48
56
 
49
- | Parameter | Type | Description |
50
- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
- | `container` | `HTMLElement` | The `HTMLElement` to render into. Cleared and repopulated on every view transition. |
52
- | `actor` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<[`AnyActorLogic`](https://www.jsdocs.io/package/xstate#AnyActorLogic), [`EventObject`](https://www.jsdocs.io/package/xstate#EventObject)\> & [`Viewable`](../../play-actor/interfaces/Viewable.md) | Actor instance providing the `currentView` signal (must implement `Viewable`). |
53
- | `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Map of component type names to `DomComponentRenderer` functions. |
54
- | `options` | [`PlayDomOptions`](../interfaces/PlayDomOptions.md) | Optional configuration: `handlers` map (action name async handler) and optional external `store` (controlled mode when omitted, a fresh `@xstate/store` atom is created per view transition seeded from `spec.state`). |
57
+ | Parameter | Type | Description |
58
+ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
59
+ | `container` | `HTMLElement` | `HTMLElement` to render into. Cleared and repopulated on every view transition. |
60
+ | `actor` | [`AbstractActor`](../../play-actor/classes/AbstractActor.md)\<[`AnyActorLogic`](https://www.jsdocs.io/package/xstate#AnyActorLogic), [`EventObject`](https://www.jsdocs.io/package/xstate#EventObject)\> & [`Viewable`](../../play-actor/interfaces/Viewable.md) | Actor providing the `currentView` signal (must implement `Viewable`). |
61
+ | `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Component renderer map typically `registryResult.registry` from `defineRegistry`. |
62
+ | `options` | [`PlayDomOptions`](../interfaces/PlayDomOptions.md) | Configuration: - `registryResult` preferred; auto-wires `setState`/`state` from the xstate store. - `handlers` — pre-resolved handler map (legacy; used when `registryResult` is absent). - `store` external `StateStore` (controlled mode; overrides `spec.state` seeding). - `loading` — streaming mode flag; suppresses missing-child warnings. |
55
63
 
56
64
  #### Returns
57
65
 
@@ -65,11 +73,16 @@ Defined in: [PlayRenderer.ts:72](https://gitlab.com/xmachin-es/xmachines-js/-/bl
65
73
  connect(): void;
66
74
  ```
67
75
 
68
- Defined in: [PlayRenderer.ts:83](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.32/packages/play-dom/src/PlayRenderer.ts#L83)
76
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:117](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-dom/src/PlayRenderer.ts#L117)
69
77
 
70
78
  Start watching actor.currentView and render to container.
71
79
  Renders the initial view synchronously, then subscribes to signal changes.
72
80
 
81
+ Calling `connect()` on an already-connected renderer (where a previous
82
+ `connect()` was never followed by `disconnect()`) would silently install a
83
+ second `watchSignal` subscription, causing double-renders on every view
84
+ change. Guard against this by auto-disconnecting first.
85
+
73
86
  #### Returns
74
87
 
75
88
  `void`
@@ -82,7 +95,7 @@ Renders the initial view synchronously, then subscribes to signal changes.
82
95
  disconnect(): void;
83
96
  ```
84
97
 
85
- Defined in: [PlayRenderer.ts:91](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.32/packages/play-dom/src/PlayRenderer.ts#L91)
98
+ Defined in: [packages/play-dom/src/PlayRenderer.ts:126](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-dom/src/PlayRenderer.ts#L126)
86
99
 
87
100
  Stop watching and clear the container.
88
101
 
@@ -6,46 +6,65 @@
6
6
  function connectRenderer(options): () => void;
7
7
  ```
8
8
 
9
- Defined in: [connect-renderer.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.32/packages/play-dom/src/connect-renderer.ts#L46)
9
+ Defined in: [packages/play-dom/src/connect-renderer.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-dom/src/connect-renderer.ts#L65)
10
10
 
11
- Connect a signal-driven DOM renderer to an actor's currentView signal.
11
+ Connect a signal-driven DOM renderer to an actor's `currentView` signal.
12
12
 
13
- Subscribes to `actor.currentView` via TC39 Signals and renders `DomComponentRenderer`
14
- functions into the provided `container` element on every state change.
13
+ Subscribes to `actor.currentView` via TC39 Signals and renders catalog-typed
14
+ components into `container` on every view transition. Clears the container
15
+ when the view is `null` (optionally appends `fallback` on initial mount).
15
16
 
16
- - Renders the initial view immediately (synchronous)
17
- - Re-renders when `actor.currentView` signal changes (via microtask)
18
- - Clears container when view is `null` (optionally appends fallback)
17
+ - Initial render is **synchronous** — the container is populated before `connectRenderer` returns.
18
+ - Signal-driven re-renders are **microtask-deferred** — `watchSignal` schedules them
19
+ on the next microtask queue tick, not synchronously within the signal update.
20
+
21
+ For the one-call pattern, prefer [createRenderer](createRenderer.md) which wraps `defineRegistry`
22
+ and `PlayRenderer` into a single factory function.
19
23
 
20
24
  ## Parameters
21
25
 
22
- | Parameter | Type | Description |
23
- | --------- | ------------------------------------------------------------------- | ---------------------- |
24
- | `options` | [`ConnectRendererOptions`](../interfaces/ConnectRendererOptions.md) | ConnectRendererOptions |
26
+ | Parameter | Type | Description |
27
+ | --------- | ------------------------------------------------------------------- | ----------------------------------------------------------------- |
28
+ | `options` | [`ConnectRendererOptions`](../interfaces/ConnectRendererOptions.md) | [ConnectRendererOptions](../interfaces/ConnectRendererOptions.md) |
25
29
 
26
30
  ## Returns
27
31
 
28
- A cleanup function that stops all DOM mutations
32
+ A cleanup function call to stop all DOM mutations and remove subscriptions.
29
33
 
30
34
  () => `void`
31
35
 
32
36
  ## Example
33
37
 
34
38
  ```typescript
35
- import { connectRenderer, type DomComponentRenderer } from "@xmachines/play-dom";
39
+ import { connectRenderer, defineRegistry, schema } from "@xmachines/play-dom";
40
+ import { defineCatalog } from "@json-render/core";
41
+ import { z } from "zod";
36
42
 
37
- const unwatch = connectRenderer({
38
- actor,
39
- registry: {
40
- Home: (element, ctx) => {
41
- const el = document.createElement("div");
42
- el.textContent = element.props.title as string;
43
+ const catalog = defineCatalog(schema, {
44
+ components: { Home: { props: z.object({ title: z.string() }) } },
45
+ actions: { logout: {} },
46
+ });
47
+
48
+ const registryResult = defineRegistry(catalog, {
49
+ components: {
50
+ Home: ({ props }) => {
51
+ const el = document.createElement("section");
52
+ el.textContent = props.title;
43
53
  return el;
44
54
  },
45
55
  },
56
+ actions: {
57
+ logout: async () => actor.send({ type: "auth.logout" }),
58
+ },
59
+ });
60
+
61
+ const disconnect = connectRenderer({
62
+ actor,
63
+ registry: registryResult.registry,
64
+ registryResult, // preferred — wires setState/state from xstate store automatically
46
65
  container: document.getElementById("app")!,
47
66
  });
48
67
 
49
- // Later: stop watching
50
- unwatch();
68
+ // Later:
69
+ disconnect();
51
70
  ```