@xmachines/docs 1.0.0-beta.34 → 1.0.0-beta.36
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/api/@xmachines/play/classes/NonNullableError.md +4 -4
- package/api/@xmachines/play/classes/PlayError.md +4 -4
- package/api/@xmachines/play/functions/assertNonNullable.md +1 -1
- package/api/@xmachines/play/type-aliases/PlayEvent.md +2 -2
- package/api/@xmachines/play-actor/README.md +9 -9
- package/api/@xmachines/play-actor/classes/AbstractActor.md +3 -3
- package/api/@xmachines/play-actor/functions/typedSpec.md +1 -1
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +5 -5
- package/api/@xmachines/play-actor/interfaces/BaseViewContextValue.md +5 -5
- package/api/@xmachines/play-actor/interfaces/PlaySpec.md +2 -2
- package/api/@xmachines/play-actor/interfaces/Routable.md +3 -3
- package/api/@xmachines/play-actor/interfaces/Viewable.md +2 -2
- package/api/@xmachines/play-dom/README.md +4 -3
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +4 -4
- package/api/@xmachines/play-dom/functions/connectRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/createPlayUI.md +1 -1
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/functions/defineRegistry.md +1 -23
- package/api/@xmachines/play-dom/functions/renderSpec.md +1 -1
- package/api/@xmachines/play-dom/interfaces/ComponentContext.md +7 -7
- package/api/@xmachines/play-dom/interfaces/ConnectRendererOptions.md +13 -13
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +8 -8
- package/api/@xmachines/play-dom/interfaces/DefineRegistryResult.md +4 -4
- package/api/@xmachines/play-dom/interfaces/DomRenderContext.md +12 -12
- package/api/@xmachines/play-dom/interfaces/EventHandle.md +4 -4
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +5 -5
- package/api/@xmachines/play-dom/interfaces/UIProviderOptions.md +5 -5
- package/api/@xmachines/play-dom/type-aliases/ActionFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/Actions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/BaseComponentProps.md +7 -7
- package/api/@xmachines/play-dom/type-aliases/CatalogHasActions.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/ComponentRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-dom/type-aliases/DomComponentRenderer.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomRegistry.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/DomSchema.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +1 -1
- package/api/@xmachines/play-dom/type-aliases/SetState.md +1 -1
- package/api/@xmachines/play-dom/variables/schema.md +1 -1
- package/api/@xmachines/play-dom-router/README.md +3 -3
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +1 -1
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +1 -1
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-dom-router/interfaces/{RouteMapLike.md → RouteLookupContract.md} +7 -7
- package/api/@xmachines/play-dom-router/interfaces/RouteMap.md +6 -11
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +4 -4
- package/api/@xmachines/play-dom-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +5 -5
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/functions/useSignalEffect.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +3 -3
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-react/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-react/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-react/variables/PlayRenderer.md +2 -2
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react-router/README.md +1 -0
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +24 -24
- package/api/@xmachines/play-react-router/classes/RouteMap.md +38 -22
- package/api/@xmachines/play-react-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +21 -0
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/README.md +6 -6
- package/api/@xmachines/play-router/classes/{BaseRouteMap.md → RouteMap.md} +11 -11
- package/api/@xmachines/play-router/classes/RouterBridgeBase.md +24 -24
- package/api/@xmachines/play-router/functions/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/functions/buildRouteTree.md +1 -1
- package/api/@xmachines/play-router/functions/createRouteMap.md +6 -6
- package/api/@xmachines/play-router/functions/createRouteMapFromMachine.md +5 -5
- package/api/@xmachines/play-router/functions/createRouteMapFromTree.md +6 -6
- package/api/@xmachines/play-router/functions/detectDuplicateRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/extractQuery.md +1 -1
- package/api/@xmachines/play-router/functions/extractRouteParams.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteById.md +1 -1
- package/api/@xmachines/play-router/functions/findRouteByPath.md +1 -1
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getRoutableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/getTransitionReachableRoutes.md +1 -1
- package/api/@xmachines/play-router/functions/isRouteReachable.md +1 -1
- package/api/@xmachines/play-router/functions/machineToGraph.md +1 -1
- package/api/@xmachines/play-router/functions/routeExists.md +1 -1
- package/api/@xmachines/play-router/functions/sanitizePathname.md +1 -1
- package/api/@xmachines/play-router/functions/validateRouteFormat.md +1 -1
- package/api/@xmachines/play-router/functions/validateStateExists.md +1 -1
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +4 -4
- package/api/@xmachines/play-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +3 -3
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +5 -5
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-router/interfaces/RouteInfo.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +3 -3
- package/api/@xmachines/play-router/interfaces/{RouteMap.md → RouteMatcher.md} +13 -13
- package/api/@xmachines/play-router/interfaces/RouteNode.md +10 -10
- package/api/@xmachines/play-router/interfaces/RouteObject.md +2 -2
- package/api/@xmachines/play-router/interfaces/RouteTree.md +5 -5
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +3 -3
- package/api/@xmachines/play-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-router/type-aliases/MachineGraph.md +1 -1
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +1 -1
- package/api/@xmachines/play-signals/functions/watchSignal.md +1 -1
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +2 -2
- package/api/@xmachines/play-signals/interfaces/SignalState.md +3 -3
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +4 -4
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +1 -1
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-solid/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid-router/README.md +2 -2
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +25 -25
- package/api/@xmachines/play-solid-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +3 -3
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +8 -8
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-svelte/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +1 -1
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +4 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +38 -22
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +24 -24
- package/api/@xmachines/play-tanstack-react-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +7 -39
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +4 -4
- package/api/@xmachines/play-tanstack-solid-router/README.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +9 -9
- package/api/@xmachines/play-tanstack-solid-router/classes/SolidRouterBridge.md +25 -25
- package/api/@xmachines/play-tanstack-solid-router/functions/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +3 -3
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +5 -5
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +8 -8
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +5 -5
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/type-aliases/PlayActor.md +1 -1
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue-router/README.md +9 -4
- package/api/@xmachines/play-vue-router/classes/RouteMap.md +38 -20
- package/api/@xmachines/play-vue-router/classes/VueRouterBridge.md +25 -25
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +1 -1
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +6 -6
- package/api/@xmachines/play-vue-router/interfaces/RouteMapping.md +8 -8
- package/api/@xmachines/play-vue-router/interfaces/RouterBridge.md +3 -3
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +1 -1
- package/api/@xmachines/play-vue-router/variables/PlayRouterProvider.md +1 -1
- package/api/@xmachines/play-xstate/README.md +1 -1
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +14 -14
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuards.md +1 -1
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +1 -1
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/definePlayer.md +1 -1
- package/api/@xmachines/play-xstate/functions/deriveRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/eventMatches.md +1 -1
- package/api/@xmachines/play-xstate/functions/formatPlayRouteTransitions.md +1 -1
- package/api/@xmachines/play-xstate/functions/hasContext.md +1 -1
- package/api/@xmachines/play-xstate/functions/isAbsoluteRoute.md +1 -1
- package/api/@xmachines/play-xstate/functions/negateGuard.md +1 -1
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +3 -3
- package/api/@xmachines/play-xstate/interfaces/PlayerFactoryResumeOptions.md +2 -2
- package/api/@xmachines/play-xstate/interfaces/PlayerOptions.md +6 -6
- package/api/@xmachines/play-xstate/interfaces/RouteContext.md +5 -5
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +1 -1
- package/api/@xmachines/play-xstate/type-aliases/RouteMachineConfig.md +4 -4
- package/api/@xmachines/play-xstate/type-aliases/RouteStateNode.md +4 -4
- package/api/@xmachines/shared/README.md +50 -50
- package/api/@xmachines/shared/vite-aliases/README.md +10 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +34 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +27 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +30 -0
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +41 -0
- package/api/@xmachines/shared/vitest/README.md +7 -0
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +34 -0
- package/api/llms.txt +4 -2
- package/examples/@xmachines/play-dom-demo/README.md +2 -2
- package/examples/@xmachines/play-dom-demo/functions/createNavBar.md +4 -3
- package/examples/@xmachines/play-dom-demo/functions/initShell.md +5 -1
- package/examples/@xmachines/play-dom-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-dom-demo/variables/About.md +4 -1
- package/examples/@xmachines/play-dom-demo/variables/Contact.md +4 -1
- package/examples/@xmachines/play-dom-demo/variables/Dashboard.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Home.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Login.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/NavBarView.md +8 -1
- package/examples/@xmachines/play-dom-demo/variables/Navigation.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Overview.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Profile.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Settings.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/Stats.md +5 -1
- package/examples/@xmachines/play-dom-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-dom-router-demo/README.md +26 -22
- package/examples/@xmachines/play-react-demo/README.md +2 -2
- package/examples/@xmachines/play-react-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-react-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-react-demo/variables/About.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Contact.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Dashboard.md +7 -1
- package/examples/@xmachines/play-react-demo/variables/DebugPanel.md +5 -1
- package/examples/@xmachines/play-react-demo/variables/Home.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Login.md +8 -1
- package/examples/@xmachines/play-react-demo/variables/NavBar.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/NavBarView.md +7 -1
- package/examples/@xmachines/play-react-demo/variables/Navigation.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Overview.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Profile.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Settings.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Shell.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/Stats.md +6 -1
- package/examples/@xmachines/play-react-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-react-router-demo/README.md +5 -3
- package/examples/@xmachines/play-solid-demo/README.md +2 -2
- package/examples/@xmachines/play-solid-demo/functions/App.md +1 -1
- package/examples/@xmachines/play-solid-demo/type-aliases/AuthCatalog.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/About.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Contact.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Dashboard.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/DebugPanel.md +5 -1
- package/examples/@xmachines/play-solid-demo/variables/Home.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Login.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBar.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/NavBarView.md +6 -3
- package/examples/@xmachines/play-solid-demo/variables/Navigation.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Overview.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Profile.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Settings.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/Shell.md +5 -1
- package/examples/@xmachines/play-solid-demo/variables/Stats.md +1 -1
- package/examples/@xmachines/play-solid-demo/variables/authCatalog.md +1 -1
- package/examples/@xmachines/play-solid-router-demo/README.md +6 -4
- package/examples/@xmachines/play-svelte-demo/README.md +11 -1
- 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 +2 -2
- package/examples/@xmachines/play-sveltekit-router-demo/README.md +2 -2
- package/examples/@xmachines/play-tanstack-react-router-demo/README.md +3 -3
- package/examples/@xmachines/play-tanstack-solid-router-demo/README.md +4 -4
- package/examples/@xmachines/play-vue-demo/README.md +11 -2
- 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 +21 -24
- package/examples/README.md +2 -0
- package/package.json +2 -2
- package/rfc/play.md +19 -19
- package/api/@xmachines/play-vue-router/classes/VueBaseRouteMap.md +0 -141
- package/api/@xmachines/shared/functions/defineXmVitestConfig.md +0 -25
- package/api/@xmachines/shared/functions/xmAliases.md +0 -24
- package/api/_media/README.md +0 -404
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/play-vue-router](../README.md) / VueBaseRouteMap
|
|
2
|
-
|
|
3
|
-
# Class: VueBaseRouteMap
|
|
4
|
-
|
|
5
|
-
Defined in: [play-router/src/base-route-map.ts:100](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-router/src/base-route-map.ts#L100)
|
|
6
|
-
|
|
7
|
-
Shared bidirectional route map base class.
|
|
8
|
-
|
|
9
|
-
All framework adapter `RouteMap` classes extend this — they add no logic of their
|
|
10
|
-
own and inherit the full public API from here.
|
|
11
|
-
|
|
12
|
-
**Lookup strategy:**
|
|
13
|
-
|
|
14
|
-
- Static paths (no `:param`) → O(1) `Map` lookup
|
|
15
|
-
- Dynamic paths → O(k) bucket-indexed scan using `URLPattern`, where `k` is the number
|
|
16
|
-
of routes sharing the same first path segment
|
|
17
|
-
- Results are cached after the first match in an LRU cache (default 500 entries,
|
|
18
|
-
configurable via the `cacheSize` constructor option)
|
|
19
|
-
|
|
20
|
-
**Pattern syntax** (`:param` / `:param?`):
|
|
21
|
-
|
|
22
|
-
- `:param` — required segment, matches exactly one non-`/` segment
|
|
23
|
-
- `:param?` — optional segment, matches zero or one non-`/` segment
|
|
24
|
-
|
|
25
|
-
## Example
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import { BaseRouteMap } from "@xmachines/play-router";
|
|
29
|
-
|
|
30
|
-
const map = new BaseRouteMap([
|
|
31
|
-
{ stateId: "home", path: "/" },
|
|
32
|
-
{ stateId: "profile", path: "/profile/:userId" },
|
|
33
|
-
{ stateId: "settings", path: "/settings/:section?" },
|
|
34
|
-
]);
|
|
35
|
-
|
|
36
|
-
map.getStateIdByPath("/"); // "home"
|
|
37
|
-
map.getStateIdByPath("/profile/123"); // "profile"
|
|
38
|
-
map.getStateIdByPath("/settings"); // "settings"
|
|
39
|
-
map.getStateIdByPath("/unknown"); // null
|
|
40
|
-
|
|
41
|
-
map.getPathByStateId("profile"); // "/profile/:userId"
|
|
42
|
-
map.getPathByStateId("missing"); // null
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Extended by
|
|
46
|
-
|
|
47
|
-
- [`RouteMap`](RouteMap.md)
|
|
48
|
-
|
|
49
|
-
## Constructors
|
|
50
|
-
|
|
51
|
-
### Constructor
|
|
52
|
-
|
|
53
|
-
```ts
|
|
54
|
-
new VueBaseRouteMap(mappings, options?): BaseRouteMap;
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Defined in: [play-router/src/base-route-map.ts:125](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-router/src/base-route-map.ts#L125)
|
|
58
|
-
|
|
59
|
-
Build a route map from an array of state ID ↔ path mappings.
|
|
60
|
-
|
|
61
|
-
Static paths (no `:param`) are indexed in an O(1) `Map`.
|
|
62
|
-
Parameterized paths are compiled to `URLPattern` and grouped into first-segment
|
|
63
|
-
buckets for efficient candidate selection.
|
|
64
|
-
|
|
65
|
-
#### Parameters
|
|
66
|
-
|
|
67
|
-
| Parameter | Type | Description |
|
|
68
|
-
| -------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
69
|
-
| `mappings` | [`RouteMapping`](../interfaces/RouteMapping.md)[] | Array of `{ stateId, path }` entries. Order determines priority when multiple patterns could match the same path. |
|
|
70
|
-
| `options` | \{ `cacheSize?`: `number`; \} | Optional configuration. `options.cacheSize`: Maximum number of resolved parameterized path lookups to cache. Defaults to `500`. Increase for applications with many unique parameterized URL values (e.g. user profile pages with thousands of distinct IDs). After eviction the path falls back to the O(k) bucket pattern scan — correct but slower. Minimum effective value is `1` (QuickLRU constraint). |
|
|
71
|
-
| `options.cacheSize?` | `number` | - |
|
|
72
|
-
|
|
73
|
-
#### Returns
|
|
74
|
-
|
|
75
|
-
`BaseRouteMap`
|
|
76
|
-
|
|
77
|
-
## Methods
|
|
78
|
-
|
|
79
|
-
### getPathByStateId()
|
|
80
|
-
|
|
81
|
-
```ts
|
|
82
|
-
getPathByStateId(stateId): string | null;
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Defined in: [play-router/src/base-route-map.ts:209](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-router/src/base-route-map.ts#L209)
|
|
86
|
-
|
|
87
|
-
Look up the path pattern registered for a state ID.
|
|
88
|
-
|
|
89
|
-
#### Parameters
|
|
90
|
-
|
|
91
|
-
| Parameter | Type | Description |
|
|
92
|
-
| --------- | -------- | --------------------------------------------------------- |
|
|
93
|
-
| `stateId` | `string` | State machine state ID (e.g., `"profile"`, `"#settings"`) |
|
|
94
|
-
|
|
95
|
-
#### Returns
|
|
96
|
-
|
|
97
|
-
`string` \| `null`
|
|
98
|
-
|
|
99
|
-
The registered path pattern, or `null` if the state ID is unknown
|
|
100
|
-
|
|
101
|
-
#### Example
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
map.getPathByStateId("profile"); // "/profile/:userId"
|
|
105
|
-
map.getPathByStateId("missing"); // null
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
### getStateIdByPath()
|
|
111
|
-
|
|
112
|
-
```ts
|
|
113
|
-
getStateIdByPath(path): string | null;
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Defined in: [play-router/src/base-route-map.ts:174](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/play-router/src/base-route-map.ts#L174)
|
|
117
|
-
|
|
118
|
-
Resolve a URL path to its mapped state ID.
|
|
119
|
-
|
|
120
|
-
Strips query strings and hash fragments before matching. Tries an O(1) exact
|
|
121
|
-
lookup first, then falls back to bucket-indexed pattern matching. Results are
|
|
122
|
-
cached after the first pattern match.
|
|
123
|
-
|
|
124
|
-
#### Parameters
|
|
125
|
-
|
|
126
|
-
| Parameter | Type | Description |
|
|
127
|
-
| --------- | -------- | ------------------------------------------------------------------------------ |
|
|
128
|
-
| `path` | `string` | URL pathname, optionally including query/hash (e.g., `"/profile/123?ref=nav"`) |
|
|
129
|
-
|
|
130
|
-
#### Returns
|
|
131
|
-
|
|
132
|
-
`string` \| `null`
|
|
133
|
-
|
|
134
|
-
The mapped state ID, or `null` if no route matches
|
|
135
|
-
|
|
136
|
-
#### Example
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
map.getStateIdByPath("/profile/123"); // "profile"
|
|
140
|
-
map.getStateIdByPath("/unknown"); // null
|
|
141
|
-
```
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/shared](../README.md) / defineXmVitestConfig
|
|
2
|
-
|
|
3
|
-
# Function: defineXmVitestConfig()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function defineXmVitestConfig(importMetaUrl, overrides): UserConfig;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [index.ts:10](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/shared/src/index.ts#L10)
|
|
10
|
-
|
|
11
|
-
Create a Vitest config with XMachines workspace defaults.
|
|
12
|
-
|
|
13
|
-
This wrapper exposes the helper at the package top-level so API docs
|
|
14
|
-
render it under `@xmachines/shared` instead of nested module pages.
|
|
15
|
-
|
|
16
|
-
## Parameters
|
|
17
|
-
|
|
18
|
-
| Parameter | Type |
|
|
19
|
-
| --------------- | ------------------------------- |
|
|
20
|
-
| `importMetaUrl` | `string` |
|
|
21
|
-
| `overrides` | `Record`\<`string`, `unknown`\> |
|
|
22
|
-
|
|
23
|
-
## Returns
|
|
24
|
-
|
|
25
|
-
`UserConfig`
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
[Documentation](../../../README.md) / [@xmachines/shared](../README.md) / xmAliases
|
|
2
|
-
|
|
3
|
-
# Function: xmAliases()
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
function xmAliases(importMetaUrl): Record<string, string>;
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Defined in: [index.ts:20](https://gitlab.com/xmachin-es/xmachines-js/-/blob/v1.0.0-beta.34/packages/shared/src/index.ts#L20)
|
|
10
|
-
|
|
11
|
-
Build Vite/Vitest alias entries for all `@xmachines/*` workspace packages.
|
|
12
|
-
|
|
13
|
-
This wrapper exposes the helper at the package top-level so API docs
|
|
14
|
-
render it under `@xmachines/shared` instead of nested module pages.
|
|
15
|
-
|
|
16
|
-
## Parameters
|
|
17
|
-
|
|
18
|
-
| Parameter | Type |
|
|
19
|
-
| --------------- | -------- |
|
|
20
|
-
| `importMetaUrl` | `string` |
|
|
21
|
-
|
|
22
|
-
## Returns
|
|
23
|
-
|
|
24
|
-
`Record`\<`string`, `string`\>
|
package/api/_media/README.md
DELETED
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
[Documentation](../../README.md) / @xmachines/play-dom
|
|
2
|
-
|
|
3
|
-
# @xmachines/play-dom
|
|
4
|
-
|
|
5
|
-
**Vanilla DOM renderer for XMachines**
|
|
6
|
-
|
|
7
|
-
Framework-free view rendering driven by an XState v5 actor's `currentView` TC39 Signal. Implements the same catalog-typed `defineRegistry` / `ComponentFn` / `ActionFn` API surface as `@json-render/react`, `/solid`, `/vue`, and `/svelte`.
|
|
8
|
-
|
|
9
|
-
## Installation
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install @xmachines/play-dom @json-render/core zod
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Key Exports
|
|
16
|
-
|
|
17
|
-
| Export | Description |
|
|
18
|
-
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
-
| `createPlayUI(registryResult, options?)` | Batteries-included factory: returns `mount(actor, container) → disconnect` — parallel to `PlayUIProvider` in framework packages |
|
|
20
|
-
| `createRenderer(catalog, componentMap)` | One-call factory: returns `mount(actor, container, options?) → disconnect` |
|
|
21
|
-
| `connectRenderer(options)` | Functional API: connect actor → DOM with full options |
|
|
22
|
-
| `defineRegistry(catalog, { components, actions })` | Build a catalog-typed `DomRegistry` with typed action handlers |
|
|
23
|
-
| `UIProviderOptions` | Standard options interface: `validationFunctions`, `navigate`, `functions`, `onRenderError`, `fallback` |
|
|
24
|
-
| `PlayRenderer` | Class-based renderer — `connect()` / `disconnect()` lifecycle |
|
|
25
|
-
| `schema` | DOM schema for `defineCatalog` (mirrors `@json-render/react/schema`) |
|
|
26
|
-
| `ComponentFn<C, K>` | Catalog-typed DOM component function type |
|
|
27
|
-
| `ComponentContext<C, K>` | Context passed to each `ComponentFn` — `props`, `on`, `emit`, `children`, `bindings`, `ctx` |
|
|
28
|
-
| `ActionFn<C, K>` | `(params, setState, state) => Promise<void>` — catalog-typed action handler |
|
|
29
|
-
| `SetState` | `(updater: prev => next) => void` — write to the local state store |
|
|
30
|
-
| `BaseComponentProps<P>` | Base type for catalog component prop definitions |
|
|
31
|
-
| `CatalogHasActions<C>` | Conditional type: `true` when catalog declares actions |
|
|
32
|
-
| `renderSpec(spec, store, registry, send, handlers)` | Pure Spec → DOM renderer (advanced use) |
|
|
33
|
-
|
|
34
|
-
## Quick Start — `createPlayUI`
|
|
35
|
-
|
|
36
|
-
The standard entry point — mirrors `PlayUIProvider` in framework packages. Pass a `registryResult` (from `defineRegistry`) plus optional `UIProviderOptions`, and get back a `mount` function:
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
import { defineRegistry, createPlayUI, schema } from "@xmachines/play-dom";
|
|
40
|
-
import { defineCatalog } from "@json-render/core";
|
|
41
|
-
import { z } from "zod";
|
|
42
|
-
import type { ComponentFn } from "@xmachines/play-dom";
|
|
43
|
-
|
|
44
|
-
// 1. Define catalog
|
|
45
|
-
const catalog = defineCatalog(schema, {
|
|
46
|
-
components: {
|
|
47
|
-
Home: { props: z.object({ title: z.string() }) },
|
|
48
|
-
Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
|
|
49
|
-
},
|
|
50
|
-
actions: {
|
|
51
|
-
login: { params: z.object({ username: z.string() }) },
|
|
52
|
-
logout: {},
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
// 2. Build registry with typed action handlers
|
|
57
|
-
const registryResult = defineRegistry(catalog, {
|
|
58
|
-
components: {
|
|
59
|
-
Home: ({ props }) => {
|
|
60
|
-
const el = document.createElement("section");
|
|
61
|
-
el.textContent = props.title;
|
|
62
|
-
return el;
|
|
63
|
-
},
|
|
64
|
-
Login: ({ props, on }) => {
|
|
65
|
-
const section = document.createElement("section");
|
|
66
|
-
const button = document.createElement("button");
|
|
67
|
-
button.textContent = "Log In";
|
|
68
|
-
const submit = on("submit");
|
|
69
|
-
button.addEventListener("click", () => submit.emit());
|
|
70
|
-
section.append(button);
|
|
71
|
-
return section;
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
actions: {
|
|
75
|
-
login: async (params) => {
|
|
76
|
-
if (!params) return;
|
|
77
|
-
actor.send({ type: "auth.login", username: params.username });
|
|
78
|
-
},
|
|
79
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
// 3. Create the UI factory (once, at module level)
|
|
84
|
-
const ui = createPlayUI(registryResult, {
|
|
85
|
-
onRenderError: (error, elementType) => console.warn(`<${elementType}> crashed:`, error),
|
|
86
|
-
fallback: (() => {
|
|
87
|
-
const el = document.createElement("p");
|
|
88
|
-
el.textContent = "Loading…";
|
|
89
|
-
return el;
|
|
90
|
-
})(),
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
// 4. Mount when actor and container are ready
|
|
94
|
-
const actor = createPlayer()();
|
|
95
|
-
actor.start();
|
|
96
|
-
|
|
97
|
-
const disconnect = ui.mount(actor, document.getElementById("app")!);
|
|
98
|
-
|
|
99
|
-
// Cleanup:
|
|
100
|
-
disconnect();
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Quick Start — `createRenderer`
|
|
104
|
-
|
|
105
|
-
The lower-level one-call pattern — takes a catalog and component map directly:
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
import { createRenderer, schema } from "@xmachines/play-dom";
|
|
109
|
-
import { defineCatalog } from "@json-render/core";
|
|
110
|
-
import { z } from "zod";
|
|
111
|
-
import type { ComponentFn } from "@xmachines/play-dom";
|
|
112
|
-
|
|
113
|
-
// 1. Define catalog
|
|
114
|
-
const catalog = defineCatalog(schema, {
|
|
115
|
-
components: {
|
|
116
|
-
Home: { props: z.object({ title: z.string() }) },
|
|
117
|
-
Login: { props: z.object({ title: z.string(), username: z.string().optional() }) },
|
|
118
|
-
},
|
|
119
|
-
actions: {
|
|
120
|
-
login: { params: z.object({ username: z.string() }) },
|
|
121
|
-
logout: {},
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
type AppCatalog = typeof catalog;
|
|
125
|
-
|
|
126
|
-
// 2. Implement components
|
|
127
|
-
const Home: ComponentFn<AppCatalog, "Home"> = ({ props }) => {
|
|
128
|
-
const el = document.createElement("section");
|
|
129
|
-
el.textContent = props.title;
|
|
130
|
-
return el;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
const Login: ComponentFn<AppCatalog, "Login"> = ({ props, on }) => {
|
|
134
|
-
const section = document.createElement("section");
|
|
135
|
-
const input = document.createElement("input");
|
|
136
|
-
input.value = props.username ?? "";
|
|
137
|
-
input.addEventListener("input", () => ctx.store.update((s) => ({ ...s, username: input.value })));
|
|
138
|
-
|
|
139
|
-
const button = document.createElement("button");
|
|
140
|
-
button.textContent = "Log In";
|
|
141
|
-
const submit = on("submit");
|
|
142
|
-
button.addEventListener("click", () => submit.emit());
|
|
143
|
-
|
|
144
|
-
section.append(input, button);
|
|
145
|
-
return section;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
// 3. Create the renderer factory (once, at module level)
|
|
149
|
-
const mount = createRenderer(catalog, { Home, Login });
|
|
150
|
-
|
|
151
|
-
// 4. Mount when actor and container are ready
|
|
152
|
-
const actor = createPlayer()();
|
|
153
|
-
actor.start();
|
|
154
|
-
|
|
155
|
-
const disconnect = mount(actor, document.getElementById("app")!);
|
|
156
|
-
|
|
157
|
-
// Cleanup:
|
|
158
|
-
disconnect();
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## `defineRegistry` — Full Control
|
|
162
|
-
|
|
163
|
-
When you need `registryResult.executeAction()` or want to share the registry with `connectRenderer`:
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
import { defineRegistry, connectRenderer, schema } from "@xmachines/play-dom";
|
|
167
|
-
import { defineCatalog } from "@json-render/core";
|
|
168
|
-
import { z } from "zod";
|
|
169
|
-
|
|
170
|
-
const catalog = defineCatalog(schema, {
|
|
171
|
-
components: {
|
|
172
|
-
Home: { props: z.object({ title: z.string() }) },
|
|
173
|
-
},
|
|
174
|
-
actions: {
|
|
175
|
-
login: { params: z.object({ username: z.string() }) },
|
|
176
|
-
logout: {},
|
|
177
|
-
},
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
// Action handlers receive (params, setState, state)
|
|
181
|
-
// - params: resolved from the spec's on.submit.params (e.g. { $state: "/username" })
|
|
182
|
-
// - setState: write to the local state store (e.g. to clear a form)
|
|
183
|
-
// - state: current local state store snapshot
|
|
184
|
-
const registryResult = defineRegistry(catalog, {
|
|
185
|
-
components: {
|
|
186
|
-
Home: ({ props }) => {
|
|
187
|
-
const el = document.createElement("section");
|
|
188
|
-
el.textContent = props.title;
|
|
189
|
-
return el;
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
actions: {
|
|
193
|
-
login: async (params, setState) => {
|
|
194
|
-
if (!params) return;
|
|
195
|
-
actor.send({ type: "auth.login", username: params.username });
|
|
196
|
-
setState((prev) => ({ ...prev, username: "" })); // clear the form
|
|
197
|
-
},
|
|
198
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
199
|
-
},
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
const disconnect = connectRenderer({
|
|
203
|
-
actor,
|
|
204
|
-
registry: registryResult.registry,
|
|
205
|
-
registryResult, // wires setState/state from xstate store automatically
|
|
206
|
-
container: document.getElementById("app")!,
|
|
207
|
-
});
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
## Component API
|
|
211
|
-
|
|
212
|
-
### `ComponentFn<C, K>` — component function signature
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
const MyCard: ComponentFn<AppCatalog, "Card"> = ({
|
|
216
|
-
props, // catalog-typed props for this component
|
|
217
|
-
children, // Node[] — rendered child nodes
|
|
218
|
-
on, // (eventName) => EventHandle — get emit() for catalog-declared events
|
|
219
|
-
emit, // (eventName) => void — fire an event directly
|
|
220
|
-
bindings, // Record<string, string> — $bindState paths for two-way bindings
|
|
221
|
-
ctx, // DomRenderContext — store, send, handlers, loading, functions
|
|
222
|
-
}) => {
|
|
223
|
-
const el = document.createElement("div");
|
|
224
|
-
el.append(...children);
|
|
225
|
-
return el;
|
|
226
|
-
};
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### Two-way binding with `$bindState`
|
|
230
|
-
|
|
231
|
-
In the view spec:
|
|
232
|
-
|
|
233
|
-
```json
|
|
234
|
-
{ "username": { "$bindState": "/username" } }
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
In the component:
|
|
238
|
-
|
|
239
|
-
```typescript
|
|
240
|
-
const Login: ComponentFn<AppCatalog, "Login"> = ({ props, ctx }) => {
|
|
241
|
-
const input = document.createElement("input");
|
|
242
|
-
input.value = props.username ?? "";
|
|
243
|
-
// Write back to the store on user input
|
|
244
|
-
input.addEventListener("input", () => {
|
|
245
|
-
ctx.store.update((s) => ({ ...s, username: input.value }));
|
|
246
|
-
});
|
|
247
|
-
return input;
|
|
248
|
-
};
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### `on()` — event handle
|
|
252
|
-
|
|
253
|
-
```typescript
|
|
254
|
-
const submit = on("submit"); // EventHandle
|
|
255
|
-
if (submit.bound) {
|
|
256
|
-
button.addEventListener("click", (e) => {
|
|
257
|
-
if (submit.shouldPreventDefault) e.preventDefault();
|
|
258
|
-
submit.emit(); // resolves params from store, calls action handler
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### `ActionFn` — action handler signature
|
|
264
|
-
|
|
265
|
-
```typescript
|
|
266
|
-
// Full signature — all three params are available
|
|
267
|
-
login: async (params, setState, state) => {
|
|
268
|
-
actor.send({ type: "auth.login", username: params!.username });
|
|
269
|
-
setState(prev => ({ ...prev, username: "" }));
|
|
270
|
-
console.log("previous state was:", state);
|
|
271
|
-
},
|
|
272
|
-
|
|
273
|
-
// Params-only — setState/state can be omitted if unused
|
|
274
|
-
logout: async () => actor.send({ type: "auth.logout" }),
|
|
275
|
-
route: async (params) => actor.send({ type: "play.route", to: params!.to }),
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
## Spec Features
|
|
279
|
-
|
|
280
|
-
`renderSpec` / `renderElement` supports these spec directives:
|
|
281
|
-
|
|
282
|
-
| Directive | Description |
|
|
283
|
-
| ------------------------------------------------------ | ------------------------------------------------------------------------------------- |
|
|
284
|
-
| `visible` | Boolean or `{ $state: "/path" }` — hide element when false |
|
|
285
|
-
| `on.submit` / `on.click` | Action binding — `{ action: "login", params: { username: { $state: "/username" } } }` |
|
|
286
|
-
| `repeat: { statePath, key? }` | Render children once per item in the state array at `statePath` |
|
|
287
|
-
| `watch: { "/path": actionBinding }` | Fire action when store path changes after mount |
|
|
288
|
-
| `props.username: { $bindState: "/username" }` | Two-way binding — read from store, write back via `ctx.store.update()` |
|
|
289
|
-
| `props.value: { $state: "/value" }` | Read-only store reference |
|
|
290
|
-
| `props.label: { $computed: "computeFn", args: [...] }` | Computed prop via `functions` map |
|
|
291
|
-
|
|
292
|
-
## `PlayRenderer` — class API
|
|
293
|
-
|
|
294
|
-
```typescript
|
|
295
|
-
import { PlayRenderer, defineRegistry } from "@xmachines/play-dom";
|
|
296
|
-
|
|
297
|
-
const { registry, registryResult } = defineRegistry(catalog, { components, actions });
|
|
298
|
-
|
|
299
|
-
const renderer = new PlayRenderer(document.getElementById("app")!, actor, registry, {
|
|
300
|
-
registryResult,
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
renderer.connect(); // starts watching actor.currentView
|
|
304
|
-
renderer.disconnect(); // stops watching, clears container
|
|
305
|
-
|
|
306
|
-
// double-connect is safe — connect() calls disconnect() internally if already connected
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
## Options Reference
|
|
310
|
-
|
|
311
|
-
### `ConnectRendererOptions` / `PlayDomOptions`
|
|
312
|
-
|
|
313
|
-
| Option | Type | Description |
|
|
314
|
-
| ---------------- | ------------------------------- | ----------------------------------------------------------------------------- |
|
|
315
|
-
| `actor` | `AbstractActor & Viewable` | Actor providing `currentView` signal |
|
|
316
|
-
| `registry` | `DomRegistry` | Component renderer map from `defineRegistry` |
|
|
317
|
-
| `registryResult` | `DefineRegistryResult` | Preferred — auto-wires `setState`/`state` from xstate store |
|
|
318
|
-
| `handlers` | `Record<string, ActionHandler>` | Pre-resolved handlers (legacy / advanced) |
|
|
319
|
-
| `container` | `HTMLElement` | DOM element to render into |
|
|
320
|
-
| `fallback` | `HTMLElement \| null` | Shown on initial mount when view is `null` (initial mount only) |
|
|
321
|
-
| `store` | `StateStore` | External store — controlled mode, overrides `spec.state` |
|
|
322
|
-
| `loading` | `boolean` | Streaming mode — suppresses missing-child warnings, exposes `ctx.ctx.loading` |
|
|
323
|
-
|
|
324
|
-
## Learn More
|
|
325
|
-
|
|
326
|
-
- [DOM Router adapter `@xmachines/play-dom-router`](../play-dom-router/README.md)
|
|
327
|
-
- [API reference](../../_media/README.md)
|
|
328
|
-
- [Play RFC](../../packages/docs/rfc/play.md)
|
|
329
|
-
|
|
330
|
-
@xmachines/play-dom — Vanilla DOM renderer for XMachines Play architecture.
|
|
331
|
-
|
|
332
|
-
Public API split into two layers:
|
|
333
|
-
|
|
334
|
-
**XMachines layer** (this package):
|
|
335
|
-
|
|
336
|
-
- `createRenderer()` — one-call factory: returns `mount(actor, container, options?) → disconnect`
|
|
337
|
-
- `PlayRenderer` — class-based renderer with `connect()` / `disconnect()` lifecycle
|
|
338
|
-
- `connectRenderer()` — functional API (backward-compat alternative to `PlayRenderer`)
|
|
339
|
-
- `ConnectRendererOptions`, `PlayDomOptions`
|
|
340
|
-
|
|
341
|
-
**json-render layer** (upstreamable to @json-render/dom):
|
|
342
|
-
|
|
343
|
-
- `defineRegistry` — build a catalog-typed DomRegistry
|
|
344
|
-
- `renderSpec` — pure Spec → DOM renderer (uses resolveElementProps from core)
|
|
345
|
-
- `ComponentFn` — catalog-typed component function type
|
|
346
|
-
- `ComponentContext` — catalog-typed render context (props, emit, on, children, bindings)
|
|
347
|
-
- `ComponentRegistry` — catalog-typed registry input type
|
|
348
|
-
- `DomComponentRenderer` — raw element-level renderer type
|
|
349
|
-
- `DomRegistry` — raw registry type
|
|
350
|
-
- `DomRenderContext` — raw render context
|
|
351
|
-
- `EventHandle` — event handle returned by on()
|
|
352
|
-
- `SetState` — state updater function passed to ActionFn
|
|
353
|
-
- `CatalogHasActions` — conditional type: true when catalog declares actions
|
|
354
|
-
- `BaseComponentProps` — base props type for catalog component definitions
|
|
355
|
-
|
|
356
|
-
## Classes
|
|
357
|
-
|
|
358
|
-
- [PlayRenderer](classes/PlayRenderer.md)
|
|
359
|
-
|
|
360
|
-
## Interfaces
|
|
361
|
-
|
|
362
|
-
- [ComponentContext](interfaces/ComponentContext.md)
|
|
363
|
-
- [ConnectRendererOptions](interfaces/ConnectRendererOptions.md)
|
|
364
|
-
- [CreatePlayUIOptions](interfaces/CreatePlayUIOptions.md)
|
|
365
|
-
- [DefineRegistryResult](interfaces/DefineRegistryResult.md)
|
|
366
|
-
- [DomRenderContext](interfaces/DomRenderContext.md)
|
|
367
|
-
- [EventHandle](interfaces/EventHandle.md)
|
|
368
|
-
- [MountOptions](interfaces/MountOptions.md)
|
|
369
|
-
- [PlayDomOptions](interfaces/PlayDomOptions.md)
|
|
370
|
-
- [UIProviderOptions](interfaces/UIProviderOptions.md)
|
|
371
|
-
|
|
372
|
-
## Type Aliases
|
|
373
|
-
|
|
374
|
-
- [ActionFn](type-aliases/ActionFn.md)
|
|
375
|
-
- [Actions](type-aliases/Actions.md)
|
|
376
|
-
- [BaseComponentProps](type-aliases/BaseComponentProps.md)
|
|
377
|
-
- [CatalogHasActions](type-aliases/CatalogHasActions.md)
|
|
378
|
-
- [ComponentFn](type-aliases/ComponentFn.md)
|
|
379
|
-
- [ComponentRegistry](type-aliases/ComponentRegistry.md)
|
|
380
|
-
- [DefineRegistryOptions](type-aliases/DefineRegistryOptions.md)
|
|
381
|
-
- [DomComponentRenderer](type-aliases/DomComponentRenderer.md)
|
|
382
|
-
- [DomRegistry](type-aliases/DomRegistry.md)
|
|
383
|
-
- [DomSchema](type-aliases/DomSchema.md)
|
|
384
|
-
- [MountFn](type-aliases/MountFn.md)
|
|
385
|
-
- [RenderErrorHandler](type-aliases/RenderErrorHandler.md)
|
|
386
|
-
- [SetState](type-aliases/SetState.md)
|
|
387
|
-
|
|
388
|
-
## Variables
|
|
389
|
-
|
|
390
|
-
- [schema](variables/schema.md)
|
|
391
|
-
|
|
392
|
-
## Functions
|
|
393
|
-
|
|
394
|
-
- [connectRenderer](functions/connectRenderer.md)
|
|
395
|
-
- [createPlayUI](functions/createPlayUI.md)
|
|
396
|
-
- [createRenderer](functions/createRenderer.md)
|
|
397
|
-
- [defineRegistry](functions/defineRegistry.md)
|
|
398
|
-
- [renderSpec](functions/renderSpec.md)
|
|
399
|
-
|
|
400
|
-
## References
|
|
401
|
-
|
|
402
|
-
### RenderErrorHandler
|
|
403
|
-
|
|
404
|
-
Re-exports [RenderErrorHandler](type-aliases/RenderErrorHandler.md)
|