@xmachines/docs 1.0.0-beta.16 → 1.0.0-beta.18

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 (186) hide show
  1. package/api/@xmachines/play/README.md +56 -17
  2. package/api/@xmachines/play/classes/PlayError.md +240 -0
  3. package/api/@xmachines/play/type-aliases/PlayEvent.md +4 -4
  4. package/api/@xmachines/play-actor/README.md +32 -31
  5. package/api/@xmachines/play-actor/classes/AbstractActor.md +20 -19
  6. package/api/@xmachines/play-actor/interfaces/PlaySpec.md +37 -0
  7. package/api/@xmachines/play-actor/interfaces/Routable.md +5 -4
  8. package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +6 -6
  9. package/api/@xmachines/play-actor/interfaces/Viewable.md +8 -8
  10. package/api/@xmachines/play-dom/README.md +36 -0
  11. package/api/@xmachines/play-dom/classes/PlayRenderer.md +83 -0
  12. package/api/@xmachines/play-dom/functions/connectRenderer.md +51 -0
  13. package/api/@xmachines/play-dom/functions/renderSpec.md +28 -0
  14. package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +18 -0
  15. package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +18 -0
  16. package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +14 -0
  17. package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +23 -0
  18. package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +11 -0
  19. package/api/@xmachines/play-react/README.md +227 -305
  20. package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
  21. package/api/@xmachines/play-react/functions/defineRegistry.md +47 -0
  22. package/api/@xmachines/play-react/functions/useActor.md +13 -0
  23. package/api/@xmachines/play-react/functions/useBoundProp.md +43 -0
  24. package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
  25. package/api/@xmachines/play-react/functions/useStateBinding.md +32 -0
  26. package/api/@xmachines/play-react/interfaces/ComponentContext.md +35 -0
  27. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
  28. package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
  29. package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +15 -7
  30. package/api/@xmachines/play-react/type-aliases/ComponentFn.md +34 -0
  31. package/api/@xmachines/play-react/type-aliases/PlayActor.md +9 -0
  32. package/api/@xmachines/play-react/variables/PlayRenderer.md +18 -30
  33. package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +32 -32
  34. package/api/@xmachines/play-react-router/classes/RouteMap.md +5 -5
  35. package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +11 -5
  36. package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +1 -1
  37. package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -8
  38. package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
  39. package/api/@xmachines/play-router/README.md +51 -0
  40. package/api/@xmachines/play-router/classes/BaseRouteMap.md +6 -6
  41. package/api/@xmachines/play-router/classes/RouterBridgeBase.md +33 -35
  42. package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
  43. package/api/@xmachines/play-router/functions/connectRouter.md +1 -1
  44. package/api/@xmachines/play-router/functions/crawlMachine.md +1 -1
  45. package/api/@xmachines/play-router/functions/createBrowserHistory.md +4 -1
  46. package/api/@xmachines/play-router/functions/createRouteMap.md +3 -3
  47. package/api/@xmachines/play-router/functions/createRouter.md +1 -1
  48. package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
  49. package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
  50. package/api/@xmachines/play-router/functions/extractRoute.md +1 -1
  51. package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
  52. package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
  53. package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
  54. package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
  55. package/api/@xmachines/play-router/functions/routeExists.md +1 -1
  56. package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
  57. package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
  58. package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +3 -3
  59. package/api/@xmachines/play-router/interfaces/BrowserHistory.md +19 -15
  60. package/api/@xmachines/play-router/interfaces/BrowserWindow.md +14 -14
  61. package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +6 -6
  62. package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
  63. package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
  64. package/api/@xmachines/play-router/interfaces/RouteMap.md +4 -4
  65. package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
  66. package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
  67. package/api/@xmachines/play-router/interfaces/RouteTree.md +4 -4
  68. package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
  69. package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
  70. package/api/@xmachines/play-router/interfaces/StateVisit.md +4 -4
  71. package/api/@xmachines/play-router/interfaces/VanillaRouter.md +4 -4
  72. package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
  73. package/api/@xmachines/play-signals/README.md +22 -10
  74. package/api/@xmachines/play-signals/functions/watchSignal.md +35 -0
  75. package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
  76. package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
  77. package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
  78. package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
  79. package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
  80. package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
  81. package/api/@xmachines/play-solid/README.md +193 -219
  82. package/api/@xmachines/play-solid/functions/defineRegistry.md +47 -0
  83. package/api/@xmachines/play-solid/functions/useActor.md +13 -0
  84. package/api/@xmachines/play-solid/functions/useStateBinding.md +23 -0
  85. package/api/@xmachines/play-solid/interfaces/ComponentContext.md +35 -0
  86. package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +15 -7
  87. package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +34 -0
  88. package/api/@xmachines/play-solid/type-aliases/PlayActor.md +9 -0
  89. package/api/@xmachines/play-solid/variables/PlayRenderer.md +15 -43
  90. package/api/@xmachines/play-solid-router/README.md +56 -30
  91. package/api/@xmachines/play-solid-router/classes/RouteMap.md +6 -6
  92. package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +37 -37
  93. package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +11 -5
  94. package/api/@xmachines/play-solid-router/functions/createRouteMap.md +1 -1
  95. package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +18 -17
  96. package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -8
  97. package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +3 -3
  98. package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +3 -1
  99. package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
  100. package/api/@xmachines/play-tanstack-react-router/README.md +1 -5
  101. package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +5 -5
  102. package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +45 -33
  103. package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +11 -5
  104. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +2 -2
  105. package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +1 -1
  106. package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +1 -1
  107. package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +1 -1
  108. package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -8
  109. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
  110. package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
  111. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
  112. package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +24 -4
  113. package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +6 -6
  114. package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +33 -33
  115. package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +11 -5
  116. package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +1 -1
  117. package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -8
  118. package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
  119. package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +3 -1
  120. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
  121. package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +4 -4
  122. package/api/@xmachines/play-vue/README.md +219 -209
  123. package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
  124. package/api/@xmachines/play-vue/functions/useActor.md +13 -0
  125. package/api/@xmachines/play-vue/functions/useStateBinding.md +30 -0
  126. package/api/@xmachines/play-vue/interfaces/ComponentContext.md +35 -0
  127. package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +14 -6
  128. package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
  129. package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +33 -0
  130. package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
  131. package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +21 -0
  132. package/api/@xmachines/play-vue/type-aliases/PlayActor.md +9 -0
  133. package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
  134. package/api/@xmachines/play-vue-router/README.md +74 -29
  135. package/api/@xmachines/play-vue-router/classes/RouteMap.md +7 -7
  136. package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +7 -7
  137. package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +48 -51
  138. package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
  139. package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +4 -4
  140. package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +3 -1
  141. package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +7 -1
  142. package/api/@xmachines/play-xstate/README.md +236 -111
  143. package/api/@xmachines/play-xstate/classes/PlayerActor.md +36 -33
  144. package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -18
  145. package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
  146. package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
  147. package/api/@xmachines/play-xstate/functions/definePlayer.md +12 -61
  148. package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
  149. package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
  150. package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
  151. package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
  152. package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
  153. package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
  154. package/api/@xmachines/play-xstate/functions/stateMatches.md +1 -1
  155. package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +9 -13
  156. package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
  157. package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +8 -9
  158. package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
  159. package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
  160. package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
  161. package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
  162. package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
  163. package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +14 -4
  164. package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +19 -4
  165. package/api/@xmachines/shared/functions/defineXmVitestConfig.md +2 -2
  166. package/api/@xmachines/shared/functions/xmAliases.md +1 -1
  167. package/api/README.md +2 -2
  168. package/api/llms.txt +12 -6
  169. package/examples/multi-router-integration.md +31 -19
  170. package/guides/README.md +2 -1
  171. package/guides/installation.md +1 -6
  172. package/package.json +2 -2
  173. package/api/@xmachines/play-catalog/README.md +0 -331
  174. package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
  175. package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
  176. package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
  177. package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
  178. package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
  179. package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
  180. package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
  181. package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
  182. package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
  183. package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
  184. package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
  185. package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
  186. package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Interface: Routable
4
4
 
5
- Defined in: [packages/play-actor/src/abstract-actor.ts:41](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L41)
5
+ Defined in: [packages/play-actor/src/abstract-actor.ts:42](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L42)
6
6
 
7
7
  Optional capability: Routing support
8
8
 
@@ -24,6 +24,7 @@ function connectRouter<T extends AbstractActor & Routable>(actor: T) {
24
24
 
25
25
  ## Properties
26
26
 
27
- | Property | Modifier | Type | Description | Defined in |
28
- | ------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
- | <a id="property-currentroute"></a> `currentRoute` | `readonly` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> | Current route signal Computed signal derived from state machine. Infrastructure observes to sync browser URL. Invariant: Passive Infrastructure - Infrastructure reflects route, never decides. **Example** `const watcher = new Signal.subtle.Watcher(() => { const route = actor.currentRoute.get(); console.log('Route changed:', route); }); watcher.watch(actor.currentRoute);` | [packages/play-actor/src/abstract-actor.ts:58](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L58) |
27
+ | Property | Modifier | Type | Description | Defined in |
28
+ | ------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
+ | <a id="property-currentroute"></a> `currentRoute` | `readonly` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> | Current route signal Computed signal derived from state machine. Infrastructure observes to sync browser URL. Invariant: Passive Infrastructure - Infrastructure reflects route, never decides. **Example** `const watcher = new Signal.subtle.Watcher(() => { const route = actor.currentRoute.get(); console.log('Route changed:', route); }); watcher.watch(actor.currentRoute);` | [packages/play-actor/src/abstract-actor.ts:59](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L59) |
30
+ | <a id="property-initialroute"></a> `initialRoute` | `readonly` | `string` \| `null` | The route derived from the machine's **initial** state — fixed at construction and never changes, even after `start()` with a restored snapshot. Router bridges use this to distinguish a deep-link (browser URL differs from the initial route because the user navigated there) from a restore (browser is at the machine's default starting URL while the actor was restored to a different route from a snapshot). `null` when the machine's initial state has no `meta.route`. | [packages/play-actor/src/abstract-actor.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L71) |
@@ -2,16 +2,16 @@
2
2
 
3
3
  # Interface: ViewMetadata
4
4
 
5
- Defined in: [packages/play-actor/src/abstract-actor.ts:87](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L87)
5
+ Defined in: [packages/play-actor/src/abstract-actor.ts:131](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L131)
6
6
 
7
7
  View metadata for rendering
8
8
 
9
- Describes the component to be rendered and the props to pass to it.
9
+ Describes the component to be rendered and the json-render Spec to use.
10
10
  Used by PlayRenderer to dynamically render UI based on actor state.
11
11
 
12
12
  ## Properties
13
13
 
14
- | Property | Type | Description | Defined in |
15
- | ------------------------------------------- | ------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
16
- | <a id="property-component"></a> `component` | `string` | Name of the component to render from the catalog | [packages/play-actor/src/abstract-actor.ts:89](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L89) |
17
- | <a id="property-props"></a> `props` | `Record`\<`string`, `unknown`\> | Props to pass to the component | [packages/play-actor/src/abstract-actor.ts:91](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L91) |
14
+ | Property | Type | Description | Defined in |
15
+ | ------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
16
+ | <a id="property-component"></a> `component` | `string` | Root element type name (for diagnostics and component resolution) | [packages/play-actor/src/abstract-actor.ts:133](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L133) |
17
+ | <a id="property-spec"></a> `spec` | [`PlaySpec`](PlaySpec.md) | XMachines view spec extends `@json-render/core` Spec with `contextProps` for explicit context field exposure. | [packages/play-actor/src/abstract-actor.ts:138](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L138) |
@@ -2,18 +2,18 @@
2
2
 
3
3
  # Interface: Viewable
4
4
 
5
- Defined in: [packages/play-actor/src/abstract-actor.ts:102](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L102)
5
+ Defined in: [packages/play-actor/src/abstract-actor.ts:150](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L150)
6
6
 
7
7
  Actor capability for exposing renderable view state.
8
8
 
9
- `Viewable` marks actors that publish a `currentView` signal plus a component
10
- catalog. Renderers such as `PlayRenderer` consume this contract to resolve the
9
+ `Viewable` marks actors that publish a `currentView` signal.
10
+ Renderers such as `PlayRenderer` consume this contract to resolve the
11
11
  current view description into concrete UI without embedding view logic inside the
12
- framework adapter.
12
+ framework adapter. Component lookup is handled by the json-render registry
13
+ passed to PlayRenderer, not stored on the actor.
13
14
 
14
15
  ## Properties
15
16
 
16
- | Property | Modifier | Type | Description | Defined in |
17
- | ----------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
- | <a id="property-catalog"></a> `catalog` | `readonly` | `Record`\<`string`, `unknown`\> | Component catalog for view resolution Maps component names to actual component implementations. Used by renderers to resolve view.component to actual UI components. | [packages/play-actor/src/abstract-actor.ts:127](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L127) |
19
- | <a id="property-currentview"></a> `currentView` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<[`ViewMetadata`](ViewMetadata.md) \| `null`\> | Current view signal State signal containing UI structure schema from meta.view. Infrastructure renders view. Invariant: Logic-Driven UI - View structure is defined by business logic, not JSX. **Example** `const watcher = new Signal.subtle.Watcher(() => { const view = actor.currentView.get(); console.log('View changed:', view); }); watcher.watch(actor.currentView);` | [packages/play-actor/src/abstract-actor.ts:119](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.16/packages/play-actor/src/abstract-actor.ts#L119) |
17
+ | Property | Modifier | Type | Description | Defined in |
18
+ | ----------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
+ | <a id="property-currentview"></a> `currentView` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<[`ViewMetadata`](ViewMetadata.md) \| `null`\> | Current view signal State signal containing view.component and view.spec from meta.view. Infrastructure renders view. Invariant: Logic-Driven UI - View structure is defined by business logic, not JSX. **Example** `const watcher = new Signal.subtle.Watcher(() => { const view = actor.currentView.get(); console.log('View changed:', view.component, view.spec); }); watcher.watch(actor.currentView);` | [packages/play-actor/src/abstract-actor.ts:167](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-actor/src/abstract-actor.ts#L167) |
@@ -0,0 +1,36 @@
1
+ [Documentation](../../README.md) / @xmachines/play-dom
2
+
3
+ # @xmachines/play-dom
4
+
5
+ @xmachines/play-dom - Vanilla DOM renderer for XMachines Play architecture
6
+
7
+ Provides a two-layer architecture:
8
+
9
+ - Inner layer (dom-renderer): Pure json-render-core compatible DOM renderer.
10
+ Zero XMachines dependencies. Upstreamable to @json-render/dom.
11
+ - Outer layer (PlayRenderer): XMachines wrapper. Bridges actor.currentView
12
+ (TC39 Signal) to the inner DOM renderer using watchSignal.
13
+
14
+ Also provides connectRenderer() as a backward-compat convenience function.
15
+
16
+ No framework required. Pure DOM APIs only.
17
+
18
+ ## Classes
19
+
20
+ - [PlayRenderer](classes/PlayRenderer.md)
21
+
22
+ ## Interfaces
23
+
24
+ - [ConnectRendererOptions](interfaces/ConnectRendererOptions.md)
25
+ - [DomRenderContext](interfaces/DomRenderContext.md)
26
+ - [PlayDomOptions](interfaces/PlayDomOptions.md)
27
+
28
+ ## Type Aliases
29
+
30
+ - [DomComponentRenderer](type-aliases/DomComponentRenderer.md)
31
+ - [DomRegistry](type-aliases/DomRegistry.md)
32
+
33
+ ## Functions
34
+
35
+ - [connectRenderer](functions/connectRenderer.md)
36
+ - [renderSpec](functions/renderSpec.md)
@@ -0,0 +1,83 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / PlayRenderer
2
+
3
+ # Class: PlayRenderer
4
+
5
+ Defined in: [PlayRenderer.ts:39](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/PlayRenderer.ts#L39)
6
+
7
+ PlayRenderer connects an actor's currentView signal to the DOM renderer.
8
+
9
+ Usage:
10
+
11
+ ```typescript
12
+ const renderer = new PlayRenderer(container, actor, registry, { actions: { ... } });
13
+ renderer.connect();
14
+
15
+ // Controlled mode — bring your own store:
16
+ import { createAtom } from "@xstate/store";
17
+ import { xstateStoreStateStore } from "@json-render/xstate";
18
+ const store = xstateStoreStateStore({ atom: createAtom({ username: "" }) });
19
+ const renderer = new PlayRenderer(container, actor, registry, { store, actions: { ... } });
20
+
21
+ // Later:
22
+ renderer.disconnect();
23
+ ```
24
+
25
+ ## Constructors
26
+
27
+ ### Constructor
28
+
29
+ ```ts
30
+ new PlayRenderer(
31
+ container,
32
+ actor,
33
+ registry,
34
+ options?): PlayRenderer;
35
+ ```
36
+
37
+ Defined in: [PlayRenderer.ts:50](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/PlayRenderer.ts#L50)
38
+
39
+ #### Parameters
40
+
41
+ | Parameter | Type | Description |
42
+ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
43
+ | `container` | `HTMLElement` | The `HTMLElement` to render into. Cleared and repopulated on every view transition. |
44
+ | `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`). |
45
+ | `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Map of component type names to `DomComponentRenderer` functions. |
46
+ | `options` | [`PlayDomOptions`](../interfaces/PlayDomOptions.md) | Optional configuration: `actions` map (action name → XState event type) and optional external `store` (controlled mode — when omitted, a fresh `@xstate/store` atom is created per view transition seeded from `spec.state`). |
47
+
48
+ #### Returns
49
+
50
+ `PlayRenderer`
51
+
52
+ ## Methods
53
+
54
+ ### connect()
55
+
56
+ ```ts
57
+ connect(): void;
58
+ ```
59
+
60
+ Defined in: [PlayRenderer.ts:61](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/PlayRenderer.ts#L61)
61
+
62
+ Start watching actor.currentView and render to container.
63
+ Renders the initial view synchronously, then subscribes to signal changes.
64
+
65
+ #### Returns
66
+
67
+ `void`
68
+
69
+ ---
70
+
71
+ ### disconnect()
72
+
73
+ ```ts
74
+ disconnect(): void;
75
+ ```
76
+
77
+ Defined in: [PlayRenderer.ts:69](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/PlayRenderer.ts#L69)
78
+
79
+ Stop watching and clear the container.
80
+
81
+ #### Returns
82
+
83
+ `void`
@@ -0,0 +1,51 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / connectRenderer
2
+
3
+ # Function: connectRenderer()
4
+
5
+ ```ts
6
+ function connectRenderer(options): () => void;
7
+ ```
8
+
9
+ Defined in: [connect-renderer.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/connect-renderer.ts#L46)
10
+
11
+ Connect a signal-driven DOM renderer to an actor's currentView signal.
12
+
13
+ Subscribes to `actor.currentView` via TC39 Signals and renders `DomComponentRenderer`
14
+ functions into the provided `container` element on every state change.
15
+
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)
19
+
20
+ ## Parameters
21
+
22
+ | Parameter | Type | Description |
23
+ | --------- | ------------------------------------------------------------------- | ---------------------- |
24
+ | `options` | [`ConnectRendererOptions`](../interfaces/ConnectRendererOptions.md) | ConnectRendererOptions |
25
+
26
+ ## Returns
27
+
28
+ A cleanup function that stops all DOM mutations
29
+
30
+ () => `void`
31
+
32
+ ## Example
33
+
34
+ ```typescript
35
+ import { connectRenderer, type DomComponentRenderer } from "@xmachines/play-dom";
36
+
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
+ return el;
44
+ },
45
+ },
46
+ container: document.getElementById("app")!,
47
+ });
48
+
49
+ // Later: stop watching
50
+ unwatch();
51
+ ```
@@ -0,0 +1,28 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / renderSpec
2
+
3
+ # Function: renderSpec()
4
+
5
+ ```ts
6
+ function renderSpec(spec, store, registry, send, actor, actorActions): Node | null;
7
+ ```
8
+
9
+ Defined in: [dom-renderer.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/dom-renderer.ts#L26)
10
+
11
+ Render a Spec tree into DOM nodes using the provided DomRegistry.
12
+
13
+ ## Parameters
14
+
15
+ | Parameter | Type | Description |
16
+ | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
17
+ | `spec` | `Spec` | The json-render Spec describing the UI tree |
18
+ | `store` | `StateStore` | StateStore holding the current state values |
19
+ | `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Map of element type names to DomComponentRenderer functions |
20
+ | `send` | (`event`) => `void` | Function to dispatch XState events from UI interactions |
21
+ | `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) | Raw actor — available to DOM components for state reading, complex events |
22
+ | `actorActions` | `Record`\<`string`, `string`\> | Map of json-render action names → XState event types |
23
+
24
+ ## Returns
25
+
26
+ `Node` \| `null`
27
+
28
+ The root DOM node, or null if root element is invisible or unknown
@@ -0,0 +1,18 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / ConnectRendererOptions
2
+
3
+ # Interface: ConnectRendererOptions
4
+
5
+ Defined in: [types.ts:63](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L63)
6
+
7
+ Options for connectRenderer() — backward compat API.
8
+
9
+ ## Properties
10
+
11
+ | Property | Type | Description | Defined in |
12
+ | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
13
+ | <a id="property-actions"></a> `actions?` | `Record`\<`string`, `string`\> | Map of json-render actionName → XState event type | [types.ts:77](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L77) |
14
+ | <a id="property-actor"></a> `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 with currentView signal (requires Viewable capability) | [types.ts:65](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L65) |
15
+ | <a id="property-container"></a> `container` | `HTMLElement` | Container element to render into | [types.ts:71](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L71) |
16
+ | <a id="property-fallback"></a> `fallback?` | `HTMLElement` \| `null` | Optional element shown when currentView is null (defaults to nothing — clears container) | [types.ts:74](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L74) |
17
+ | <a id="property-registry"></a> `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Registry of component renderers — replaces old `components` map | [types.ts:68](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L68) |
18
+ | <a id="property-store"></a> `store?` | `StateStore` | Optional external StateStore (e.g. from `xstateStoreStateStore` in @json-render/xstate). When provided, PlayRenderer operates in controlled mode — spec.state is ignored. When omitted, a fresh @xstate/store atom is created internally per view transition. | [types.ts:84](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L84) |
@@ -0,0 +1,18 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / DomRenderContext
2
+
3
+ # Interface: DomRenderContext
4
+
5
+ Defined in: [types.ts:14](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L14)
6
+
7
+ Context passed to each DomComponentRenderer when rendering an element.
8
+
9
+ ## Properties
10
+
11
+ | Property | Type | Description | Defined in |
12
+ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
13
+ | <a id="property-actor"></a> `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) | Raw actor — access from any DOM component for state reading, complex events, lifecycle | [types.ts:22](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L22) |
14
+ | <a id="property-actoractions"></a> `actorActions` | `Record`\<`string`, `string`\> | Map of json-render action names → XState event types | [types.ts:24](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L24) |
15
+ | <a id="property-renderchildren"></a> `renderChildren` | (`keys`) => `Node`[] | Recursively render child elements by key | [types.ts:26](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L26) |
16
+ | <a id="property-send"></a> `send` | (`event`) => `void` | Send an event to the actor | [types.ts:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L20) |
17
+ | <a id="property-spec"></a> `spec` | `Spec` | Full spec tree | [types.ts:16](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L16) |
18
+ | <a id="property-store"></a> `store` | `StateStore` | State store bound to spec.state | [types.ts:18](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L18) |
@@ -0,0 +1,14 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / PlayDomOptions
2
+
3
+ # Interface: PlayDomOptions
4
+
5
+ Defined in: [types.ts:46](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L46)
6
+
7
+ Options for PlayRenderer.
8
+
9
+ ## Properties
10
+
11
+ | Property | Type | Description | Defined in |
12
+ | ---------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
13
+ | <a id="property-actions"></a> `actions?` | `Record`\<`string`, `string`\> | Map of json-render actionName → XState event type | [types.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L48) |
14
+ | <a id="property-store"></a> `store?` | `StateStore` | Optional external StateStore (e.g. from `xstateStoreStateStore` in @json-render/xstate). When provided, PlayRenderer operates in controlled mode — spec.state is ignored and this store is the single source of truth for UI state (form values, etc.). When omitted, a fresh @xstate/store atom is created internally per view transition, seeded from spec.state. | [types.ts:57](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L57) |
@@ -0,0 +1,23 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / DomComponentRenderer
2
+
3
+ # Type Alias: DomComponentRenderer
4
+
5
+ ```ts
6
+ type DomComponentRenderer = (element, ctx) => HTMLElement | Text | null;
7
+ ```
8
+
9
+ Defined in: [types.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L33)
10
+
11
+ Pure DOM component renderer — receives a UIElement + context and returns a DOM node.
12
+ No framework required. Return null for unknown/unsupported elements.
13
+
14
+ ## Parameters
15
+
16
+ | Parameter | Type |
17
+ | --------- | ------------------------------------------------------- |
18
+ | `element` | `UIElement` |
19
+ | `ctx` | [`DomRenderContext`](../interfaces/DomRenderContext.md) |
20
+
21
+ ## Returns
22
+
23
+ `HTMLElement` \| `Text` \| `null`
@@ -0,0 +1,11 @@
1
+ [Documentation](../../../README.md) / [@xmachines/play-dom](../README.md) / DomRegistry
2
+
3
+ # Type Alias: DomRegistry
4
+
5
+ ```ts
6
+ type DomRegistry = Record<string, DomComponentRenderer>;
7
+ ```
8
+
9
+ Defined in: [types.ts:41](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.18/packages/play-dom/src/types.ts#L41)
10
+
11
+ Registry of component renderers keyed by element type.