@xmachines/docs 1.0.0-beta.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -7
- package/api/@xmachines/play/README.md +159 -39
- package/api/@xmachines/play/classes/NonNullableError.md +189 -0
- package/api/@xmachines/play/classes/PlayError.md +251 -0
- package/api/@xmachines/play/functions/assertNonNullable.md +56 -0
- package/api/@xmachines/play/type-aliases/PlayEvent.md +6 -6
- package/api/@xmachines/play-actor/README.md +153 -160
- package/api/@xmachines/play-actor/classes/AbstractActor.md +106 -121
- package/api/@xmachines/play-actor/functions/attachRenderErrorHandler.md +40 -0
- package/api/@xmachines/play-actor/functions/toAtomState.md +33 -0
- package/api/@xmachines/play-actor/functions/typedSpec.md +54 -0
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +46 -0
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +33 -0
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +28 -0
- package/api/@xmachines/play-actor/interfaces/Routable.md +6 -21
- package/api/@xmachines/play-actor/interfaces/Viewable.md +12 -6
- package/api/@xmachines/play-dom/README.md +385 -0
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +115 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +28 -0
- package/api/@xmachines/play-dom/functions/createRenderer.md +44 -0
- package/api/@xmachines/play-dom/functions/defineRegistry.md +26 -0
- package/api/@xmachines/play-dom/functions/renderSpec.md +67 -0
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +23 -0
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +34 -0
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +17 -0
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +28 -0
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +15 -0
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +18 -0
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +30 -0
- package/api/@xmachines/play-dom/interfaces/RenderSpecOptions.md +26 -0
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +32 -0
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +46 -0
- package/api/@xmachines/play-dom/type-aliases/Actions.md +18 -0
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +114 -0
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +25 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +26 -0
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +15 -0
- package/api/@xmachines/play-dom/type-aliases/ConfirmHandler.md +44 -0
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +39 -0
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +20 -0
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +9 -0
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +27 -0
- package/api/@xmachines/play-dom/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-dom/type-aliases/SetState.md +30 -0
- package/api/@xmachines/play-dom/variables/schema.md +62 -0
- package/api/@xmachines/play-dom-router/README.md +272 -0
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +43 -0
- package/api/@xmachines/{play-router → play-dom-router}/functions/createBrowserHistory.md +10 -2
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-dom-router/functions/createRouter.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +176 -0
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +69 -0
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +15 -0
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +68 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +54 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +121 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +28 -0
- package/api/@xmachines/play-react/README.md +185 -333
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +46 -42
- package/api/@xmachines/play-react/functions/ActionProvider.md +21 -0
- package/api/@xmachines/play-react/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-react/functions/Renderer.md +21 -0
- package/api/@xmachines/play-react/functions/StateProvider.md +27 -0
- package/api/@xmachines/play-react/functions/ValidationProvider.md +21 -0
- package/api/@xmachines/play-react/functions/VisibilityProvider.md +21 -0
- package/api/@xmachines/play-react/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-react/functions/useActor.md +13 -0
- package/api/@xmachines/play-react/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +32 -0
- package/api/@xmachines/play-react/functions/useSignalEffect.md +29 -20
- package/api/@xmachines/play-react/interfaces/ActionProviderProps.md +15 -0
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +27 -0
- package/api/@xmachines/play-react/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-react/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +7 -7
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-react/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-react/interfaces/StateProviderProps.md +16 -0
- package/api/@xmachines/play-react/interfaces/ValidationProviderProps.md +14 -0
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +20 -0
- package/api/@xmachines/play-react/interfaces/VisibilityProviderProps.md +13 -0
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-react/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-react/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-react/variables/ActorProvider.md +33 -0
- package/api/@xmachines/play-react/variables/PlayRenderer.md +6 -56
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +43 -0
- package/api/@xmachines/play-react-router/README.md +130 -115
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +19 -242
- package/api/@xmachines/play-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +32 -0
- package/api/@xmachines/play-router/README.md +275 -352
- package/api/@xmachines/play-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +21 -221
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +32 -0
- package/api/@xmachines/play-router/functions/buildRouteTree.md +12 -2
- package/api/@xmachines/play-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +46 -0
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +14 -7
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +10 -46
- package/api/@xmachines/play-router/functions/extractQuery.md +22 -0
- package/api/@xmachines/play-router/functions/extractRouteParams.md +54 -0
- package/api/@xmachines/play-router/functions/findRouteById.md +2 -2
- package/api/@xmachines/play-router/functions/findRouteByPath.md +2 -2
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +2 -2
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +43 -0
- package/api/@xmachines/play-router/functions/isRouteReachable.md +38 -0
- package/api/@xmachines/play-router/functions/machineToGraph.md +19 -0
- package/api/@xmachines/play-router/functions/routeExists.md +2 -2
- package/api/@xmachines/play-router/functions/sanitizePathname.md +40 -0
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +10 -9
- package/api/@xmachines/play-router/functions/validateStateExists.md +9 -9
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-router/interfaces/ResolvedRoutePath.md +17 -0
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +64 -0
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/interfaces/RouteNode.md +13 -13
- package/api/@xmachines/play-router/interfaces/RouteObject.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteTree.md +8 -7
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +20 -0
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +2 -2
- package/api/@xmachines/play-signals/README.md +117 -65
- package/api/@xmachines/play-signals/functions/watchSignal.md +42 -0
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +7 -5
- package/api/@xmachines/play-signals/interfaces/SignalState.md +4 -4
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +5 -5
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +8 -8
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +7 -7
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +1 -1
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +9 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +2 -2
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +2 -2
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +2 -2
- package/api/@xmachines/play-solid/README.md +196 -233
- package/api/@xmachines/play-solid/functions/ActionProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/JSONUIProvider.md +21 -0
- package/api/@xmachines/play-solid/functions/Renderer.md +21 -0
- package/api/@xmachines/play-solid/functions/StateProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/ValidationProvider.md +19 -0
- package/api/@xmachines/play-solid/functions/VisibilityProvider.md +20 -0
- package/api/@xmachines/play-solid/functions/defineRegistry.md +49 -0
- package/api/@xmachines/play-solid/functions/useAction.md +24 -0
- package/api/@xmachines/play-solid/functions/useActions.md +13 -0
- package/api/@xmachines/play-solid/functions/useActor.md +13 -0
- package/api/@xmachines/play-solid/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-solid/functions/useFieldValidation.md +29 -0
- package/api/@xmachines/play-solid/functions/useIsVisible.md +19 -0
- package/api/@xmachines/play-solid/functions/useOptionalValidation.md +13 -0
- package/api/@xmachines/play-solid/functions/usePlayView.md +30 -0
- package/api/@xmachines/play-solid/functions/useStateBinding.md +25 -0
- package/api/@xmachines/play-solid/functions/useStateStore.md +13 -0
- package/api/@xmachines/play-solid/functions/useStateValue.md +25 -0
- package/api/@xmachines/play-solid/functions/useVisibility.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +30 -0
- package/api/@xmachines/play-solid/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-solid/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-solid/interfaces/JSONUIProviderProps.md +22 -0
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +26 -0
- package/api/@xmachines/play-solid/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-solid/interfaces/StateProviderProps.md +13 -0
- package/api/@xmachines/play-solid/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentFn.md +36 -0
- package/api/@xmachines/play-solid/type-aliases/ComponentRegistry.md +11 -0
- package/api/@xmachines/play-solid/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-solid/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-solid/type-aliases/VisibilityProviderProps.md +9 -0
- package/api/@xmachines/play-solid/variables/ActorContext.md +13 -0
- package/api/@xmachines/play-solid/variables/ActorProvider.md +27 -0
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +6 -62
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +26 -0
- package/api/@xmachines/play-solid-router/README.md +151 -559
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +27 -242
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +99 -114
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderBaseProps.md +30 -0
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +20 -7
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +34 -0
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +22 -19
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +52 -0
- package/api/@xmachines/play-svelte/README.md +270 -0
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +31 -0
- package/api/@xmachines/play-svelte/functions/getActorContext.md +21 -0
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +19 -0
- package/api/@xmachines/play-svelte/functions/setActorContext.md +19 -0
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +44 -0
- package/api/@xmachines/play-svelte/interfaces/BaseComponentProps.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/ComponentContext.md +29 -0
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +24 -0
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +43 -0
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +24 -0
- package/api/@xmachines/play-svelte/type-aliases/ActionFn.md +30 -0
- package/api/@xmachines/play-svelte/type-aliases/Actions.md +17 -0
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-svelte/type-aliases/ComponentFn.md +18 -0
- package/api/@xmachines/play-svelte/type-aliases/JSONUIProviderProps.md +7 -0
- package/api/@xmachines/play-svelte/type-aliases/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-svelte/type-aliases/SetState.md +21 -0
- package/api/@xmachines/play-svelte/variables/PlayRenderer.md +9 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +197 -0
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +17 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +65 -0
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-sveltekit-router/README.md +212 -0
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +149 -0
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +32 -0
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +39 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +129 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +27 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +104 -0
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +9 -0
- package/api/@xmachines/play-tanstack-react-router/README.md +155 -125
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +48 -36
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +31 -252
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +45 -0
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +22 -36
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +23 -12
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +28 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderBaseProps.md +32 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +25 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +19 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +2 -2
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +34 -0
- package/api/@xmachines/play-tanstack-router/README.md +61 -0
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +131 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +57 -0
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +100 -0
- package/api/@xmachines/play-tanstack-solid-router/README.md +216 -175
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +31 -32
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +121 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +44 -0
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +18 -11
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderBaseProps.md +31 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +23 -9
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +14 -10
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +30 -0
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +40 -18
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +33 -0
- package/api/@xmachines/play-vue/README.md +190 -210
- package/api/@xmachines/play-vue/functions/defineRegistry.md +32 -0
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +28 -0
- package/api/@xmachines/play-vue/functions/useActor.md +13 -0
- package/api/@xmachines/play-vue/functions/useBoundProp.md +45 -0
- package/api/@xmachines/play-vue/interfaces/ActionProviderProps.md +12 -0
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +25 -0
- package/api/@xmachines/play-vue/interfaces/ComponentContext.md +37 -0
- package/api/@xmachines/play-vue/interfaces/DefineRegistryResult.md +15 -0
- package/api/@xmachines/play-vue/interfaces/JSONUIProviderProps.md +21 -0
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +24 -0
- package/api/@xmachines/play-vue/interfaces/RendererProps.md +17 -0
- package/api/@xmachines/play-vue/interfaces/StateProviderProps.md +15 -0
- package/api/@xmachines/play-vue/interfaces/ValidationProviderProps.md +11 -0
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +21 -0
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +5 -0
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +16 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentFn.md +35 -0
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +15 -0
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +22 -0
- package/api/@xmachines/play-vue/type-aliases/RenderErrorHandler.md +23 -0
- package/api/@xmachines/play-vue/variables/ActionProvider.md +64 -0
- package/api/@xmachines/play-vue/variables/JSONUIProvider.md +105 -0
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-vue/variables/Renderer.md +88 -0
- package/api/@xmachines/play-vue/variables/StateProvider.md +79 -0
- package/api/@xmachines/play-vue/variables/ValidationProvider.md +55 -0
- package/api/@xmachines/play-vue/variables/VisibilityProvider.md +40 -0
- package/api/@xmachines/play-vue-router/README.md +173 -486
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +56 -116
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +23 -271
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +26 -6
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +68 -0
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +22 -12
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +13 -0
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +20 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +8 -8
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +8 -4
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +12 -6
- package/api/@xmachines/play-xstate/README.md +203 -354
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +195 -201
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +24 -20
- package/api/@xmachines/play-xstate/functions/composeGuards.md +8 -3
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +8 -3
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +43 -0
- package/api/@xmachines/play-xstate/functions/definePlayer.md +14 -63
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +3 -3
- package/api/@xmachines/play-xstate/functions/eventMatches.md +8 -3
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +3 -3
- package/api/@xmachines/play-xstate/functions/hasContext.md +8 -5
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +2 -2
- package/api/@xmachines/play-xstate/functions/negateGuard.md +8 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +10 -14
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +22 -0
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +14 -16
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +15 -13
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +17 -0
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +8 -3
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +8 -6
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +9 -7
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +15 -18
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +15 -5
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +9 -0
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +22 -6
- package/api/@xmachines/shared/README.md +95 -295
- package/api/@xmachines/shared/vite-aliases/README.md +11 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +38 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +35 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +42 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +33 -0
- package/api/@xmachines/shared/vitest/README.md +12 -0
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +42 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +16 -0
- package/api/README.md +6 -7
- package/api/llms.txt +72 -23
- package/contributing/README.md +10 -0
- package/contributing/architecture.md +601 -0
- package/contributing/configuration.md +368 -0
- package/contributing/deployment.md +333 -0
- package/contributing/development.md +503 -0
- package/contributing/testing.md +461 -0
- package/examples/@xmachines/play-dom-demo/README.md +181 -0
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +24 -0
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +25 -0
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-dom-demo/variables/About.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +12 -0
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Home.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Login.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +16 -0
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +13 -0
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-dom-router-demo/README.md +145 -0
- package/examples/@xmachines/play-react-demo/README.md +187 -0
- package/examples/@xmachines/play-react-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-react-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-react-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-react-demo/variables/About.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Contact.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/Home.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Login.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +16 -0
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Overview.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Profile.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Settings.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/Shell.md +19 -0
- package/examples/@xmachines/play-react-demo/variables/Stats.md +14 -0
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-react-router-demo/README.md +151 -0
- package/examples/@xmachines/play-solid-demo/README.md +187 -0
- package/examples/@xmachines/play-solid-demo/functions/App.md +13 -0
- package/examples/@xmachines/play-solid-demo/functions/DebugPanel.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/HeaderNav.md +20 -0
- package/examples/@xmachines/play-solid-demo/functions/Shell.md +22 -0
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/About.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +17 -0
- package/examples/@xmachines/play-solid-demo/variables/Home.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Login.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +11 -0
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +15 -0
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +18 -0
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +9 -0
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-solid-router-demo/README.md +137 -0
- package/examples/@xmachines/play-svelte-demo/README.md +143 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-svelte-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-svelte-spa-router-demo/README.md +129 -0
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +133 -0
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +156 -0
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +139 -0
- package/examples/@xmachines/play-vue-demo/README.md +183 -0
- package/examples/@xmachines/play-vue-demo/type-aliases/AuthCatalog.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/App.md +9 -0
- package/examples/@xmachines/play-vue-demo/variables/authCatalog.md +172 -0
- package/examples/@xmachines/play-vue-router-demo/README.md +139 -0
- package/examples/README.md +78 -30
- package/examples/basic-state-machine.md +73 -31
- package/examples/form-validation.md +259 -118
- package/examples/multi-router-integration.md +312 -194
- package/examples/routing-patterns.md +228 -189
- package/examples/traffic-light.md +112 -65
- package/guides/README.md +7 -21
- package/guides/actor-model.md +180 -0
- package/guides/getting-started.md +627 -137
- package/guides/signals.md +166 -0
- package/guides/state-machines.md +284 -0
- package/package.json +21 -7
- package/rfc/broker.md +100 -0
- package/rfc/browser.md +44 -0
- package/rfc/cli.md +118 -0
- package/rfc/git.md +61 -0
- package/rfc/mcp.md +43 -0
- package/rfc/node.md +36 -0
- package/rfc/play.md +472 -0
- package/rfc/rest.md +102 -0
- package/rfc/run.md +159 -0
- package/rfc/streams.md +168 -0
- package/api/@xmachines/play-actor/interfaces/ViewMetadata.md +0 -17
- package/api/@xmachines/play-catalog/README.md +0 -331
- package/api/@xmachines/play-catalog/functions/defineCatalog.md +0 -98
- package/api/@xmachines/play-catalog/functions/defineComponents.md +0 -134
- package/api/@xmachines/play-catalog/type-aliases/Catalog.md +0 -48
- package/api/@xmachines/play-catalog/type-aliases/ComponentsFor.md +0 -20
- package/api/@xmachines/play-catalog/type-aliases/InferComponentProps.md +0 -65
- package/api/@xmachines/play-catalog/type-aliases/NoExtraKeys.md +0 -17
- package/api/@xmachines/play-react/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-react-router-demo/README.md +0 -137
- package/api/@xmachines/play-router/classes/BaseRouteMap.md +0 -142
- package/api/@xmachines/play-router/functions/connectRouter.md +0 -67
- package/api/@xmachines/play-router/functions/crawlMachine.md +0 -92
- package/api/@xmachines/play-router/functions/createRouter.md +0 -76
- package/api/@xmachines/play-router/functions/extractRoute.md +0 -45
- package/api/@xmachines/play-router/interfaces/BaseRouteMapping.md +0 -27
- package/api/@xmachines/play-router/interfaces/BrowserHistory.md +0 -172
- package/api/@xmachines/play-router/interfaces/BrowserWindow.md +0 -69
- package/api/@xmachines/play-router/interfaces/ConnectRouterOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMap.md +0 -56
- package/api/@xmachines/play-router/interfaces/StateVisit.md +0 -15
- package/api/@xmachines/play-router/interfaces/VanillaRouter.md +0 -28
- package/api/@xmachines/play-router-demo/README.md +0 -137
- package/api/@xmachines/play-solid/interfaces/PlayRendererProps.md +0 -15
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-solid-router-demo/README.md +0 -127
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-react-router/functions/extractParams.md +0 -38
- package/api/@xmachines/play-tanstack-react-router/functions/extractQueryParams.md +0 -33
- package/api/@xmachines/play-tanstack-react-router/variables/extractMachineRoutes.md +0 -64
- package/api/@xmachines/play-tanstack-react-router-demo/README.md +0 -126
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +0 -343
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +0 -19
- package/api/@xmachines/play-tanstack-solid-router-demo/README.md +0 -126
- package/api/@xmachines/play-vue/interfaces/PlayRendererProps.md +0 -14
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -201
- package/api/@xmachines/play-vue-router-demo/README.md +0 -133
- package/api/@xmachines/play-xstate/functions/mergeViewProps.md +0 -26
- package/api/@xmachines/play-xstate/functions/stateMatches.md +0 -25
- package/api/@xmachines/play-xstate/functions/validateComponentBinding.md +0 -39
- package/api/@xmachines/play-xstate/functions/validateViewProps.md +0 -80
- package/api/@xmachines/play-xstate/interfaces/CatalogEntry.md +0 -16
- package/api/@xmachines/play-xstate/type-aliases/Catalog.md +0 -21
- package/api/@xmachines/play-xstate/type-aliases/ValidationResult.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ViewMergeContext.md +0 -35
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -29
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/guides/installation.md +0 -323
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / BaseViewContextValue
|
|
2
|
+
|
|
3
|
+
# Interface: BaseViewContextValue\<TRegistry\>
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-actor/src/abstract-actor.ts:123](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L123)
|
|
6
|
+
|
|
7
|
+
Framework-agnostic base for every framework's `ViewContextValue`.
|
|
8
|
+
|
|
9
|
+
Holds the three fields that are identical across React, Vue, Solid, and Svelte.
|
|
10
|
+
`registry` is framework-specific (each framework has its own `ComponentRegistry`
|
|
11
|
+
type) so it is typed via `TRegistry` — the same generic used in `BaseActorProviderProps`.
|
|
12
|
+
|
|
13
|
+
## Extended by
|
|
14
|
+
|
|
15
|
+
- [`ViewContextValue`](../../play-react/interfaces/ViewContextValue.md)
|
|
16
|
+
- [`ViewContextValue`](../../play-solid/interfaces/ViewContextValue.md)
|
|
17
|
+
- [`ViewContextValue`](../../play-svelte/interfaces/ViewContextValue.md)
|
|
18
|
+
- [`ViewContextValue`](../../play-vue/interfaces/ViewContextValue.md)
|
|
19
|
+
|
|
20
|
+
## Type Parameters
|
|
21
|
+
|
|
22
|
+
| Type Parameter | Description |
|
|
23
|
+
| ------------------------------ | ------------------------------------------------------------------------------------------------------- |
|
|
24
|
+
| `TRegistry` _extends_ `object` | The framework's component registry type (e.g. `ComponentRegistry` from `@xmachines/json-render-react`). |
|
|
25
|
+
|
|
26
|
+
## Properties
|
|
27
|
+
|
|
28
|
+
| Property | Type | Description | Defined in |
|
|
29
|
+
| ----------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
+
| <a id="property-handlers"></a> `handlers` | `Record`\<`string`, `ActionHandler`\> | Action handlers resolved against the live StateStore. | [packages/play-actor/src/abstract-actor.ts:127](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L127) |
|
|
31
|
+
| <a id="property-registry"></a> `registry` | `TRegistry` | Component registry from registryResult.registry. | [packages/play-actor/src/abstract-actor.ts:129](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L129) |
|
|
32
|
+
| <a id="property-spec"></a> `spec` | [`PlaySpec`](PlaySpec.md) | The current PlaySpec to render. | [packages/play-actor/src/abstract-actor.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L125) |
|
|
33
|
+
| <a id="property-store"></a> `store` | `StateStore` | The active StateStore — pass to JSONUIProvider/JsonUIProvider as `store` to share state across providers. | [packages/play-actor/src/abstract-actor.ts:131](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L131) |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / PlaySpec
|
|
2
|
+
|
|
3
|
+
# Interface: PlaySpec
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-actor/src/abstract-actor.ts:48](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L48)
|
|
6
|
+
|
|
7
|
+
XMachines extension of `@xmachines/json-render-core` `Spec`.
|
|
8
|
+
|
|
9
|
+
Adds `contextProps` — an explicit allowlist of machine context fields that
|
|
10
|
+
`deriveCurrentView` merges into element props as low-priority slots. Only
|
|
11
|
+
fields named here are ever exposed to components; nothing leaks from context
|
|
12
|
+
without an opt-in declaration.
|
|
13
|
+
|
|
14
|
+
Use `typedSpec<TContext>(...)` at the definition site to validate `contextProps`
|
|
15
|
+
entries against your machine's context type at compile time.
|
|
16
|
+
|
|
17
|
+
## Extends
|
|
18
|
+
|
|
19
|
+
- `Spec`
|
|
20
|
+
|
|
21
|
+
## Properties
|
|
22
|
+
|
|
23
|
+
| Property | Modifier | Type | Description | Inherited from | Defined in |
|
|
24
|
+
| -------------------------------------------------- | ---------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
25
|
+
| <a id="property-contextprops"></a> `contextProps?` | `readonly` | readonly `string`[] | Explicit allowlist of machine context field names to expose as prop slots. Each named field is merged into every spec element's `props` at view derivation time, filling any slot whose current value is `undefined`. Use `typedSpec<TContext>(...)` to constrain entries to `keyof TContext & string`. | - | [packages/play-actor/src/abstract-actor.ts:56](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L56) |
|
|
26
|
+
| <a id="property-elements"></a> `elements` | `public` | `Record`\<`string`, `UIElement`\> | Flat map of elements by key | `Spec.elements` | - |
|
|
27
|
+
| <a id="property-root"></a> `root` | `public` | `string` | Root element key | `Spec.root` | - |
|
|
28
|
+
| <a id="property-state"></a> `state?` | `public` | `Record`\<`string`, `unknown`\> | Optional initial state to seed the state model. Components using statePath will read from / write to this state. | `Spec.state` | - |
|
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / Routable
|
|
2
2
|
|
|
3
3
|
# Interface: Routable
|
|
4
4
|
|
|
5
|
-
Defined in: [packages/play-actor/src/abstract-actor.ts:
|
|
5
|
+
Defined in: [packages/play-actor/src/abstract-actor.ts:32](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L32)
|
|
6
6
|
|
|
7
7
|
Optional capability: Routing support
|
|
8
8
|
|
|
9
|
-
Actors implementing this interface can derive a route from their state.
|
|
10
|
-
Router adapters observe the currentRoute signal to sync browser URLs.
|
|
11
|
-
|
|
12
|
-
## Example
|
|
13
|
-
|
|
14
|
-
```typescript
|
|
15
|
-
class MyActor extends AbstractActor implements Routable {
|
|
16
|
-
currentRoute = new Signal.Computed(() => deriveRoute(this.state.get()));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Router requires Routable
|
|
20
|
-
function connectRouter<T extends AbstractActor & Routable>(actor: T) {
|
|
21
|
-
watcher.watch(actor.currentRoute);
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
9
|
## Properties
|
|
26
10
|
|
|
27
|
-
| Property | Modifier | Type |
|
|
28
|
-
| ------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- |
|
|
29
|
-
| <a id="property-currentroute"></a> `currentRoute` | `readonly` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> |
|
|
11
|
+
| Property | Modifier | Type | Defined in |
|
|
12
|
+
| ------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
13
|
+
| <a id="property-currentroute"></a> `currentRoute` | `readonly` | [`Computed`](../../play-signals/namespaces/Signal/classes/Computed.md)\<`string` \| `null`\> | [packages/play-actor/src/abstract-actor.ts:33](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L33) |
|
|
14
|
+
| <a id="property-initialroute"></a> `initialRoute` | `readonly` | `string` \| `null` | [packages/play-actor/src/abstract-actor.ts:34](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L34) |
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
[
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-actor](../README.md) / Viewable
|
|
2
2
|
|
|
3
3
|
# Interface: Viewable
|
|
4
4
|
|
|
5
|
-
Defined in: [packages/play-actor/src/abstract-actor.ts:
|
|
5
|
+
Defined in: [packages/play-actor/src/abstract-actor.ts:104](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L104)
|
|
6
|
+
|
|
7
|
+
Actor capability for exposing renderable view state.
|
|
8
|
+
|
|
9
|
+
`Viewable` marks actors that publish a `currentView` signal.
|
|
10
|
+
Renderers such as `PlayRenderer` consume this contract to resolve the
|
|
11
|
+
current view description into concrete UI without embedding view logic inside the
|
|
12
|
+
framework adapter.
|
|
6
13
|
|
|
7
14
|
## Properties
|
|
8
15
|
|
|
9
|
-
| Property | Modifier | Type
|
|
10
|
-
| ----------------------------------------------- | ---------- |
|
|
11
|
-
| <a id="property-
|
|
12
|
-
| <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:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/00a28432ed57807112288436d1ae4387d9f06919/packages/play-actor/src/abstract-actor.ts#L111) |
|
|
16
|
+
| Property | Modifier | Type | Description | Defined in |
|
|
17
|
+
| ----------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| <a id="property-currentview"></a> `currentView` | `readonly` | [`State`](../../play-signals/namespaces/Signal/classes/State.md)\<[`PlaySpec`](PlaySpec.md) \| `null`\> | Current view signal. Contains the json-render PlaySpec for the current machine state, or null when no view is active. Infrastructure renders view — Logic-Driven UI invariant. | [packages/play-actor/src/abstract-actor.ts:111](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-actor/src/abstract-actor.ts#L111) |
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
[API](../../README.md) / @xmachines/play-dom
|
|
2
|
+
|
|
3
|
+
# @xmachines/play-dom
|
|
4
|
+
|
|
5
|
+
Vanilla DOM renderer for XMachines Play architecture with signal-driven rendering.
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://www.npmjs.com/package/@xmachines/play-dom)
|
|
9
|
+
|
|
10
|
+
Part of the [XMachines Play monorepo](../../README.md).
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pnpm add @xmachines/play-dom
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Peer dependencies:**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pnpm add xstate @xstate/store @xmachines/json-render-core @xmachines/json-render-xstate
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
28
|
+
import { defineCatalog } from "@xmachines/json-render-core";
|
|
29
|
+
import { z } from "zod";
|
|
30
|
+
import type { ComponentFn } from "@xmachines/play-dom";
|
|
31
|
+
|
|
32
|
+
// 1. Define a catalog
|
|
33
|
+
const catalog = defineCatalog(schema, {
|
|
34
|
+
components: {
|
|
35
|
+
Home: { props: z.object({ title: z.string() }) },
|
|
36
|
+
Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
|
|
37
|
+
},
|
|
38
|
+
actions: {
|
|
39
|
+
login: { params: z.object({ username: z.string() }) },
|
|
40
|
+
logout: {},
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// 2. Implement components
|
|
45
|
+
const Home: ComponentFn<typeof catalog, "Home"> = ({ props }) => {
|
|
46
|
+
const el = document.createElement("section");
|
|
47
|
+
el.textContent = props.title;
|
|
48
|
+
return el;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const Login: ComponentFn<typeof catalog, "Login"> = ({ props, on }) => {
|
|
52
|
+
const el = document.createElement("section");
|
|
53
|
+
const btn = document.createElement("button");
|
|
54
|
+
const submit = on("submit");
|
|
55
|
+
btn.addEventListener("click", () => submit.emit());
|
|
56
|
+
el.append(btn);
|
|
57
|
+
return el;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// 3. Build the factory once (module scope)
|
|
61
|
+
const mount = createRenderer(catalog, { Home, Login });
|
|
62
|
+
|
|
63
|
+
// 4. Mount when actor and container are ready
|
|
64
|
+
const disconnect = mount(actor, document.getElementById("app")!);
|
|
65
|
+
|
|
66
|
+
// 5. Cleanup on teardown
|
|
67
|
+
disconnect();
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Usage
|
|
71
|
+
|
|
72
|
+
### `createRenderer` — one-call factory (recommended)
|
|
73
|
+
|
|
74
|
+
`createRenderer` is the simplest integration path. Call it once at module scope with your catalog and component map, then call the returned `mount` function for each actor/container pair.
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
78
|
+
import { defineCatalog } from "@xmachines/json-render-core";
|
|
79
|
+
|
|
80
|
+
const catalog = defineCatalog(schema, {/* ... */});
|
|
81
|
+
|
|
82
|
+
const mount = createRenderer(catalog, { MyComponent });
|
|
83
|
+
|
|
84
|
+
const disconnect = mount(actor, document.getElementById("app")!);
|
|
85
|
+
// Returns a cleanup function — call it to stop rendering and clear the container.
|
|
86
|
+
disconnect();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `createPlayUI` — batteries-included factory with full options
|
|
90
|
+
|
|
91
|
+
Use `createPlayUI` when you need render error handling, a fallback element, navigation integration, computed functions, or custom validation — or when you need to reference `registryResult` programmatically (e.g. for `executeAction`).
|
|
92
|
+
|
|
93
|
+
Factory-level options (`functions`, `validationFunctions`, `navigate`, `onRenderError`, `fallback`) are closed over at creation time and applied on every `mount()` call. Per-mount options (`store`, `loading`) are passed to `mount()` itself.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { defineRegistry, createPlayUI, schema } from "@xmachines/play-dom";
|
|
97
|
+
import { defineCatalog } from "@xmachines/json-render-core";
|
|
98
|
+
|
|
99
|
+
const catalog = defineCatalog(schema, {/* ... */});
|
|
100
|
+
|
|
101
|
+
const registryResult = defineRegistry(catalog, {
|
|
102
|
+
components: { Home, Login },
|
|
103
|
+
actions: {
|
|
104
|
+
login: async (params, setState) => {
|
|
105
|
+
/* ... */
|
|
106
|
+
},
|
|
107
|
+
logout: async () => actor.send({ type: "auth.logout" }),
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const mount = createPlayUI(registryResult, {
|
|
112
|
+
onRenderError: console.error,
|
|
113
|
+
fallback: document.getElementById("loading")!,
|
|
114
|
+
navigate: (path) => myRouter.push(path),
|
|
115
|
+
functions: {
|
|
116
|
+
fullName: (args) => `${args.first} ${args.last}`,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const disconnect = mount(actor, document.getElementById("app")!);
|
|
121
|
+
disconnect();
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `PlayRenderer` — class-based lifecycle control
|
|
125
|
+
|
|
126
|
+
Use `PlayRenderer` directly when you need explicit `connect()` / `disconnect()` lifecycle control, or when integrating into a system that manages the renderer's lifetime externally.
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { PlayRenderer, defineRegistry, schema } from "@xmachines/play-dom";
|
|
130
|
+
|
|
131
|
+
const registryResult = defineRegistry(catalog, { components, actions });
|
|
132
|
+
|
|
133
|
+
const renderer = new PlayRenderer(container, actor, registryResult.registry, { registryResult });
|
|
134
|
+
|
|
135
|
+
renderer.connect();
|
|
136
|
+
// Later:
|
|
137
|
+
renderer.disconnect();
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Controlled store mode** — supply an external `StateStore` so the renderer shares state with other parts of your app:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
import { createAtom } from "@xstate/store";
|
|
144
|
+
import { xstateStoreStateStore } from "@xmachines/json-render-xstate";
|
|
145
|
+
|
|
146
|
+
const atom = createAtom({ username: "" });
|
|
147
|
+
const store = xstateStoreStateStore({ atom });
|
|
148
|
+
|
|
149
|
+
const renderer = new PlayRenderer(container, actor, registryResult.registry, {
|
|
150
|
+
registryResult,
|
|
151
|
+
store,
|
|
152
|
+
});
|
|
153
|
+
renderer.connect();
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Provider Options
|
|
157
|
+
|
|
158
|
+
All entry points (`createPlayUI`, `PlayRenderer`) accept the same set of UI-provider options via `UIProviderOptions`. These are forwarded into `DomRenderContext` on every render pass, making them available to component implementations via `ctx.ctx.*`.
|
|
159
|
+
|
|
160
|
+
### `functions` — named compute functions for `$computed` prop expressions
|
|
161
|
+
|
|
162
|
+
Enables `{ "$computed": "name", "args": {...} }` dynamic prop values in specs. Each function receives the resolved `args` object and returns the computed value.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
const mount = createPlayUI(registryResult, {
|
|
166
|
+
functions: {
|
|
167
|
+
fullName: (args) => `${args.first} ${args.last}`,
|
|
168
|
+
formatDate: (args) => new Date(args.iso as string).toLocaleDateString(),
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Without `functions`, any `$computed` expression silently resolves to `undefined` (no throw, backward-compatible).
|
|
174
|
+
|
|
175
|
+
### `validationFunctions` — custom field validation
|
|
176
|
+
|
|
177
|
+
Provides named validation functions for inline field validation within components. Functions receive `(value, args?)` and return `true` (valid) or `false` (invalid).
|
|
178
|
+
|
|
179
|
+
Unlike the framework renderers, the DOM renderer has no automatic `ValidationProvider` tree. Components must invoke validation explicitly using `runValidationCheck` / `runValidation` from `@xmachines/json-render-core`, passing `ctx.ctx.validationFunctions` as `customFunctions`.
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
import { runValidationCheck } from "@xmachines/json-render-core";
|
|
183
|
+
|
|
184
|
+
const mount = createPlayUI(registryResult, {
|
|
185
|
+
validationFunctions: {
|
|
186
|
+
isEven: (value) => typeof value === "number" && value % 2 === 0,
|
|
187
|
+
phoneNumber: (value) => /^\+?[\d\s\-()]{7,}$/.test(String(value)),
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Inside a ComponentFn:
|
|
192
|
+
const MyField: ComponentFn<typeof catalog, "MyField"> = ({ ctx }) => {
|
|
193
|
+
const result = runValidationCheck(
|
|
194
|
+
{ type: "isEven", message: "must be even" },
|
|
195
|
+
{ value: someValue, stateModel: {}, customFunctions: ctx.ctx.validationFunctions },
|
|
196
|
+
);
|
|
197
|
+
// result.valid, result.message
|
|
198
|
+
};
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### `navigate` — programmatic navigation from action bindings
|
|
202
|
+
|
|
203
|
+
A callback invoked when an action binding resolves with `onSuccess: { navigate: "/path" }`. The resolved path string is passed as the sole argument. Integrate with any router:
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// React Router / TanStack Router / any push-based router:
|
|
207
|
+
const mount = createPlayUI(registryResult, {
|
|
208
|
+
navigate: (path) => myRouter.push(path),
|
|
209
|
+
});
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
With a spec binding:
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"on": {
|
|
217
|
+
"click": {
|
|
218
|
+
"action": "submitForm",
|
|
219
|
+
"onSuccess": { "navigate": "/dashboard" }
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
When `submitForm` completes successfully, `navigate("/dashboard")` is called automatically.
|
|
226
|
+
|
|
227
|
+
The function is also readable by component implementations directly via `ctx.ctx.navigate` for cases where navigation needs to be triggered outside of an action binding.
|
|
228
|
+
|
|
229
|
+
### `onRenderError` — unified error handler
|
|
230
|
+
|
|
231
|
+
Receives `(error, name)` for three distinct error classes:
|
|
232
|
+
|
|
233
|
+
- **Component render errors** — when a `ComponentFn` throws synchronously during `renderSpec`. `name` is the catalog component name (e.g. `"Home"`).
|
|
234
|
+
- **Action handler rejections (emit path)** — when an `ActionFn` throws or returns a rejected promise during `emit()`. `name` is the catalog action name (e.g. `"submitForm"`).
|
|
235
|
+
- **Action handler rejections (watch path)** — when an `ActionFn` rejects during a `watch` binding callback. `name` is the catalog action name.
|
|
236
|
+
|
|
237
|
+
```typescript
|
|
238
|
+
const mount = createPlayUI(registryResult, {
|
|
239
|
+
onRenderError: (err, name) => {
|
|
240
|
+
// Route to your application's error tracking
|
|
241
|
+
Sentry.captureException(err, { extra: { name } });
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
The argument order matches the upstream `RenderErrorHandler` type from `@xmachines/json-render-core`: **error first, name second**. This is consistent with the framework renderers (`@xmachines/json-render-solid`, `@xmachines/json-render-react`).
|
|
247
|
+
|
|
248
|
+
Without `onRenderError`, all three error types are logged via `console.error` and swallowed. No exception propagates, and no unhandled promise rejection is created.
|
|
249
|
+
|
|
250
|
+
The handler is also available to component implementations via `ctx.ctx.onRenderError`, enabling components to route their own internal errors through the same channel:
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
const MyComponent: ComponentFn<typeof catalog, "MyComponent"> = ({ ctx }) => {
|
|
254
|
+
try {
|
|
255
|
+
const el = doSomethingRisky();
|
|
256
|
+
return el;
|
|
257
|
+
} catch (err) {
|
|
258
|
+
ctx.ctx.onRenderError?.(err, "MyComponent");
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## API Summary
|
|
265
|
+
|
|
266
|
+
### XMachines Layer
|
|
267
|
+
|
|
268
|
+
| Export | Kind | Description |
|
|
269
|
+
| ---------------------------------------- | -------- | --------------------------------------------------------------------------- |
|
|
270
|
+
| `createRenderer(catalog, components)` | function | One-call factory — returns `mount(actor, container, options?) → disconnect` |
|
|
271
|
+
| `createPlayUI(registryResult, options?)` | function | Batteries-included factory — returns `MountFn` |
|
|
272
|
+
| `PlayRenderer` | class | Class-based renderer with `connect()` / `disconnect()` lifecycle |
|
|
273
|
+
| `defineRegistry(catalog, options)` | function | Build a catalog-typed `DomRegistry` with typed handlers |
|
|
274
|
+
| `renderSpec(...)` | function | Pure Spec → DOM renderer (low-level) |
|
|
275
|
+
| `schema` | const | The `@xmachines/json-render-dom` schema — pass to `defineCatalog()` |
|
|
276
|
+
|
|
277
|
+
### Key Types
|
|
278
|
+
|
|
279
|
+
| Type | Description |
|
|
280
|
+
| ------------------------ | ------------------------------------------------------------------------------------------ |
|
|
281
|
+
| `ComponentFn<C, K>` | Catalog-typed component function — returns `HTMLElement \| Text \| null` |
|
|
282
|
+
| `ComponentContext<C, K>` | Context passed to each component: `props`, `children`, `emit`, `on`, `bindings`, `ctx` |
|
|
283
|
+
| `ActionFn<C, K>` | Catalog-typed action function — receives `(params, setState, state)` |
|
|
284
|
+
| `EventHandle` | Handle returned by `on(eventName)` — has `emit()`, `shouldPreventDefault`, `bound` |
|
|
285
|
+
| `SetState` | State updater: `(prev => next) => void` |
|
|
286
|
+
| `DefineRegistryResult` | Result from `defineRegistry` — has `registry`, `handlers`, `executeAction` |
|
|
287
|
+
| `PlayDomOptions` | Options for `PlayRenderer` — extends `UIProviderOptions` |
|
|
288
|
+
| `CreatePlayUIOptions` | Options for `createPlayUI` — extends `UIProviderOptions`, adds `fallback` |
|
|
289
|
+
| `MountOptions` | Per-mount options for `MountFn`: `store`, `loading` |
|
|
290
|
+
| `MountFn` | The mount function returned by `createPlayUI`: `(actor, container, options?) → disconnect` |
|
|
291
|
+
| `UIProviderOptions` | Shared options: `functions`, `validationFunctions`, `navigate`, `onRenderError` |
|
|
292
|
+
| `BaseComponentProps<P>` | Catalog-agnostic component props for shared component libraries |
|
|
293
|
+
| `DomRegistry` | Raw registry type: `Record<string, DomComponentRenderer>` |
|
|
294
|
+
| `DomSchema` | Type of the `schema` export |
|
|
295
|
+
| `ComputedFunction` | Type for named compute functions used with the `functions` option |
|
|
296
|
+
|
|
297
|
+
## Rendering Behaviour
|
|
298
|
+
|
|
299
|
+
- **Initial render is synchronous** — the container is populated before `connect()` returns.
|
|
300
|
+
- **Signal-driven re-renders are microtask-deferred** — `watchSignal` schedules updates on the next microtask queue tick.
|
|
301
|
+
- **Null view** clears the container. A `fallback` element can be shown on initial mount when the view is `null`; it is **not** re-appended if the view later transitions back to `null` after a non-null view.
|
|
302
|
+
- **Double `connect()` is safe** — calling `connect()` on an already-connected renderer auto-disconnects first.
|
|
303
|
+
- **`disconnect()` clears the container** and unsubscribes all signal and store watchers.
|
|
304
|
+
|
|
305
|
+
## Testing
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# Run all tests (jsdom environment)
|
|
309
|
+
pnpm test
|
|
310
|
+
|
|
311
|
+
# Run with coverage
|
|
312
|
+
pnpm run test:coverage
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Tests live in `test/` and use [Vitest](https://vitest.dev/) with a jsdom environment. Coverage thresholds: 80% lines, functions, branches, and statements.
|
|
316
|
+
|
|
317
|
+
@xmachines/play-dom — Vanilla DOM renderer for XMachines Play architecture.
|
|
318
|
+
|
|
319
|
+
Public API split into two layers:
|
|
320
|
+
|
|
321
|
+
**XMachines layer** (this package):
|
|
322
|
+
|
|
323
|
+
- `createRenderer()` — one-call factory: returns `mount(actor, container, options?) → disconnect`
|
|
324
|
+
- `createPlayUI()` — batteries-included factory with full options: returns `MountFn`
|
|
325
|
+
- `PlayRenderer` — class-based renderer with `connect()` / `disconnect()` lifecycle
|
|
326
|
+
- `PlayDomOptions`, `CreatePlayUIOptions`, `MountFn`, `MountOptions`
|
|
327
|
+
|
|
328
|
+
**json-render layer** (re-exported from @xmachines/json-render-dom):
|
|
329
|
+
|
|
330
|
+
- `defineRegistry` — build a catalog-typed DomRegistry
|
|
331
|
+
- `renderSpec` — pure Spec → DOM renderer (uses resolveElementProps from core)
|
|
332
|
+
- `ComponentFn` — catalog-typed component function type
|
|
333
|
+
- `ComponentContext` — catalog-typed render context (props, emit, on, children, bindings)
|
|
334
|
+
- `ComponentRegistry` — catalog-typed registry input type
|
|
335
|
+
- `DomComponentRenderer` — raw element-level renderer type
|
|
336
|
+
- `DomRegistry` — raw registry type
|
|
337
|
+
- `DomRenderContext` — raw render context
|
|
338
|
+
- `EventHandle` — event handle returned by on()
|
|
339
|
+
- `SetState` — state updater function passed to ActionFn
|
|
340
|
+
- `CatalogHasActions` — conditional type: true when catalog declares actions
|
|
341
|
+
- `BaseComponentProps` — base props type for catalog component definitions
|
|
342
|
+
|
|
343
|
+
## Classes
|
|
344
|
+
|
|
345
|
+
- [PlayRenderer](classes/PlayRenderer.md)
|
|
346
|
+
|
|
347
|
+
## Interfaces
|
|
348
|
+
|
|
349
|
+
- [ComponentContext](interfaces/ComponentContext.md)
|
|
350
|
+
- [CreatePlayUIOptions](interfaces/CreatePlayUIOptions.md)
|
|
351
|
+
- [DefineRegistryResult](interfaces/DefineRegistryResult.md)
|
|
352
|
+
- [DomRenderContext](interfaces/DomRenderContext.md)
|
|
353
|
+
- [EventHandle](interfaces/EventHandle.md)
|
|
354
|
+
- [MountOptions](interfaces/MountOptions.md)
|
|
355
|
+
- [PlayDomOptions](interfaces/PlayDomOptions.md)
|
|
356
|
+
- [RenderSpecOptions](interfaces/RenderSpecOptions.md)
|
|
357
|
+
- [UIProviderOptions](interfaces/UIProviderOptions.md)
|
|
358
|
+
|
|
359
|
+
## Type Aliases
|
|
360
|
+
|
|
361
|
+
- [ActionFn](type-aliases/ActionFn.md)
|
|
362
|
+
- [Actions](type-aliases/Actions.md)
|
|
363
|
+
- [BaseComponentProps](type-aliases/BaseComponentProps.md)
|
|
364
|
+
- [CatalogHasActions](type-aliases/CatalogHasActions.md)
|
|
365
|
+
- [ComponentFn](type-aliases/ComponentFn.md)
|
|
366
|
+
- [ComponentRegistry](type-aliases/ComponentRegistry.md)
|
|
367
|
+
- [ConfirmHandler](type-aliases/ConfirmHandler.md)
|
|
368
|
+
- [DefineRegistryOptions](type-aliases/DefineRegistryOptions.md)
|
|
369
|
+
- [DomComponentRenderer](type-aliases/DomComponentRenderer.md)
|
|
370
|
+
- [DomRegistry](type-aliases/DomRegistry.md)
|
|
371
|
+
- [DomSchema](type-aliases/DomSchema.md)
|
|
372
|
+
- [MountFn](type-aliases/MountFn.md)
|
|
373
|
+
- [RenderErrorHandler](type-aliases/RenderErrorHandler.md)
|
|
374
|
+
- [SetState](type-aliases/SetState.md)
|
|
375
|
+
|
|
376
|
+
## Variables
|
|
377
|
+
|
|
378
|
+
- [schema](variables/schema.md)
|
|
379
|
+
|
|
380
|
+
## Functions
|
|
381
|
+
|
|
382
|
+
- [createPlayUI](functions/createPlayUI.md)
|
|
383
|
+
- [createRenderer](functions/createRenderer.md)
|
|
384
|
+
- [defineRegistry](functions/defineRegistry.md)
|
|
385
|
+
- [renderSpec](functions/renderSpec.md)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
[API](../../../README.md) / [@xmachines/play-dom](../README.md) / PlayRenderer
|
|
2
|
+
|
|
3
|
+
# Class: PlayRenderer
|
|
4
|
+
|
|
5
|
+
Defined in: [packages/play-dom/src/PlayRenderer.ts:67](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/src/PlayRenderer.ts#L67)
|
|
6
|
+
|
|
7
|
+
PlayRenderer connects an actor's `currentView` signal to the DOM renderer.
|
|
8
|
+
|
|
9
|
+
Watches `actor.currentView` via TC39 Signals and renders `DomComponentRenderer`
|
|
10
|
+
functions into `container` on every view transition. Cleared on `disconnect()`.
|
|
11
|
+
|
|
12
|
+
Options from `PlayDomOptions` (which extends `UIProviderOptions`) are all forwarded
|
|
13
|
+
into `DomRenderContext` on every render pass:
|
|
14
|
+
|
|
15
|
+
- `functions` — named compute functions for `{ $computed: "name" }` prop expressions
|
|
16
|
+
- `directives` — custom `$`-prefixed dynamic values (from `defineDirective`), resolved during prop resolution
|
|
17
|
+
- `validationFunctions` — custom validation functions, available at `ctx.ctx.validationFunctions`
|
|
18
|
+
- `navigate` — navigation callback, invoked on `onSuccess: { navigate: "..." }` action bindings
|
|
19
|
+
- `onRenderError` — called with `(error, name)` for component render errors and action handler rejections
|
|
20
|
+
|
|
21
|
+
**Preferred usage — via `registryResult`:**
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { PlayRenderer, defineRegistry } from "@xmachines/play-dom";
|
|
25
|
+
|
|
26
|
+
const registryResult = defineRegistry(catalog, { components, actions });
|
|
27
|
+
const renderer = new PlayRenderer(container, actor, registryResult.registry, {
|
|
28
|
+
registryResult, // wires setState/getState from xstate store automatically
|
|
29
|
+
navigate: (path) => myRouter.push(path),
|
|
30
|
+
functions: { fullName: (args) => `${args.first} ${args.last}` },
|
|
31
|
+
});
|
|
32
|
+
renderer.connect();
|
|
33
|
+
// Later:
|
|
34
|
+
renderer.disconnect();
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Controlled store mode** — bring your own `StateStore`:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { createAtom } from "@xstate/store";
|
|
41
|
+
import { xstateStoreStateStore } from "@xmachines/json-render-xstate";
|
|
42
|
+
|
|
43
|
+
const atom = createAtom({ username: "" });
|
|
44
|
+
const store = xstateStoreStateStore({ atom });
|
|
45
|
+
const renderer = new PlayRenderer(container, actor, registry, { registryResult, store });
|
|
46
|
+
renderer.connect();
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Double `connect()` is safe — calling `connect()` while already connected
|
|
50
|
+
automatically disconnects first, preventing double-render subscriptions.
|
|
51
|
+
|
|
52
|
+
## Constructors
|
|
53
|
+
|
|
54
|
+
### Constructor
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
new PlayRenderer(
|
|
58
|
+
container,
|
|
59
|
+
actor,
|
|
60
|
+
registry,
|
|
61
|
+
options?): PlayRenderer;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Defined in: [packages/play-dom/src/PlayRenderer.ts:102](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/src/PlayRenderer.ts#L102)
|
|
65
|
+
|
|
66
|
+
#### Parameters
|
|
67
|
+
|
|
68
|
+
| Parameter | Type | Description |
|
|
69
|
+
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
70
|
+
| `container` | `HTMLElement` | `HTMLElement` to render into. Cleared and repopulated on every view transition. |
|
|
71
|
+
| `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`). |
|
|
72
|
+
| `registry` | [`DomRegistry`](../type-aliases/DomRegistry.md) | Component renderer map — typically `registryResult.registry` from `defineRegistry`. |
|
|
73
|
+
| `options` | [`PlayDomOptions`](../interfaces/PlayDomOptions.md) | Configuration (see [PlayDomOptions](../interfaces/PlayDomOptions.md)): - `registryResult` — auto-wires `setState`/`state` from the xstate store. - `store` — external `StateStore` (controlled mode; overrides `spec.state` seeding). - `loading` — streaming mode flag; suppresses missing-child warnings. - `functions` — named compute functions for `$computed` prop expressions. - `directives` — custom `$`-prefixed dynamic values resolved during prop resolution. - `validationFunctions` — custom validation functions; available at `ctx.ctx.validationFunctions`. - `navigate` — navigation callback; invoked on `onSuccess: { navigate: "..." }`. - `onRenderError` — `(error, name)` handler for component render errors and action handler rejections; suppresses `console.error` fallback. |
|
|
74
|
+
|
|
75
|
+
#### Returns
|
|
76
|
+
|
|
77
|
+
`PlayRenderer`
|
|
78
|
+
|
|
79
|
+
## Methods
|
|
80
|
+
|
|
81
|
+
### connect()
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
connect(): void;
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Defined in: [packages/play-dom/src/PlayRenderer.ts:118](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/src/PlayRenderer.ts#L118)
|
|
88
|
+
|
|
89
|
+
Start watching actor.currentView and render to container.
|
|
90
|
+
Renders the initial view synchronously, then subscribes to signal changes.
|
|
91
|
+
|
|
92
|
+
Calling `connect()` on an already-connected renderer (where a previous
|
|
93
|
+
`connect()` was never followed by `disconnect()`) would silently install a
|
|
94
|
+
second `watchSignal` subscription, causing double-renders on every view
|
|
95
|
+
change. Guard against this by auto-disconnecting first.
|
|
96
|
+
|
|
97
|
+
#### Returns
|
|
98
|
+
|
|
99
|
+
`void`
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### disconnect()
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
disconnect(): void;
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Defined in: [packages/play-dom/src/PlayRenderer.ts:127](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.1.0/packages/play-dom/src/PlayRenderer.ts#L127)
|
|
110
|
+
|
|
111
|
+
Stop watching and clear the container.
|
|
112
|
+
|
|
113
|
+
#### Returns
|
|
114
|
+
|
|
115
|
+
`void`
|