vorma 0.86.0-pre.2 → 0.86.0-pre.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.dist/core/_index.d.ts +1 -0
  2. package/.dist/core/_index.d.ts.map +1 -1
  3. package/.dist/core/_index.js +6 -0
  4. package/.dist/core/_index.js.map +1 -1
  5. package/.dist/core/vorma_client_wasm_bg.wasm +0 -0
  6. package/.dist/ui/solid/solid.js +29 -39
  7. package/.dist/ui/solid/solid.js.map +1 -1
  8. package/core/client_wasm/vorma_client_wasm_bg.wasm +0 -0
  9. package/core/create_client_core.ts +9 -1
  10. package/package.json +1 -16
  11. package/ui/solid/solid.tsx +29 -10
  12. package/.dist/kit/lab/design/components/remix/remix.d.ts +0 -2309
  13. package/.dist/kit/lab/design/components/remix/remix.d.ts.map +0 -1
  14. package/.dist/kit/lab/design/components/remix/remix.js +0 -7022
  15. package/.dist/kit/lab/design/components/remix/remix.js.map +0 -1
  16. package/.dist/kit/lab/design/core/core.d.ts +0 -527
  17. package/.dist/kit/lab/design/core/core.d.ts.map +0 -1
  18. package/.dist/kit/lab/design/core/core.js +0 -668
  19. package/.dist/kit/lab/design/core/core.js.map +0 -1
  20. package/.dist/kit/matcher/matcher.d.ts +0 -78
  21. package/.dist/kit/matcher/matcher.d.ts.map +0 -1
  22. package/.dist/kit/matcher/matcher.js +0 -517
  23. package/.dist/kit/matcher/matcher.js.map +0 -1
  24. package/.dist/ui/remix/remix.d.ts +0 -73
  25. package/.dist/ui/remix/remix.d.ts.map +0 -1
  26. package/.dist/ui/remix/remix.js +0 -409
  27. package/.dist/ui/remix/remix.js.map +0 -1
  28. package/kit/lab/design/components/remix/accordion.ts +0 -474
  29. package/kit/lab/design/components/remix/alert-dialog.ts +0 -512
  30. package/kit/lab/design/components/remix/alert.ts +0 -213
  31. package/kit/lab/design/components/remix/aspect-ratio.ts +0 -111
  32. package/kit/lab/design/components/remix/badge.ts +0 -59
  33. package/kit/lab/design/components/remix/box.ts +0 -49
  34. package/kit/lab/design/components/remix/button.ts +0 -314
  35. package/kit/lab/design/components/remix/callout.ts +0 -127
  36. package/kit/lab/design/components/remix/checkable-state.ts +0 -187
  37. package/kit/lab/design/components/remix/checkbox-group.ts +0 -443
  38. package/kit/lab/design/components/remix/checkbox.ts +0 -215
  39. package/kit/lab/design/components/remix/chip.ts +0 -165
  40. package/kit/lab/design/components/remix/code-block.ts +0 -181
  41. package/kit/lab/design/components/remix/collapsible.ts +0 -325
  42. package/kit/lab/design/components/remix/component-state.ts +0 -55
  43. package/kit/lab/design/components/remix/component-style.ts +0 -364
  44. package/kit/lab/design/components/remix/composite-navigation.ts +0 -71
  45. package/kit/lab/design/components/remix/conditions.ts +0 -25
  46. package/kit/lab/design/components/remix/controllable-state.ts +0 -58
  47. package/kit/lab/design/components/remix/description-list.ts +0 -275
  48. package/kit/lab/design/components/remix/dialog.ts +0 -653
  49. package/kit/lab/design/components/remix/empty-state.ts +0 -146
  50. package/kit/lab/design/components/remix/field.ts +0 -418
  51. package/kit/lab/design/components/remix/fieldset.ts +0 -153
  52. package/kit/lab/design/components/remix/form-mirror.ts +0 -94
  53. package/kit/lab/design/components/remix/form-reset.ts +0 -85
  54. package/kit/lab/design/components/remix/form.ts +0 -109
  55. package/kit/lab/design/components/remix/grid.ts +0 -187
  56. package/kit/lab/design/components/remix/group-label.ts +0 -47
  57. package/kit/lab/design/components/remix/icon.ts +0 -176
  58. package/kit/lab/design/components/remix/input.ts +0 -163
  59. package/kit/lab/design/components/remix/kbd.ts +0 -58
  60. package/kit/lab/design/components/remix/list.ts +0 -120
  61. package/kit/lab/design/components/remix/listbox.ts +0 -1116
  62. package/kit/lab/design/components/remix/menu.ts +0 -1477
  63. package/kit/lab/design/components/remix/ordered-collection.ts +0 -95
  64. package/kit/lab/design/components/remix/popover-scroll-lock.ts +0 -89
  65. package/kit/lab/design/components/remix/popover.ts +0 -576
  66. package/kit/lab/design/components/remix/popup-behavior.ts +0 -96
  67. package/kit/lab/design/components/remix/progress.ts +0 -185
  68. package/kit/lab/design/components/remix/radio-group.ts +0 -420
  69. package/kit/lab/design/components/remix/recipe.ts +0 -70
  70. package/kit/lab/design/components/remix/remix.ts +0 -683
  71. package/kit/lab/design/components/remix/responsive.ts +0 -106
  72. package/kit/lab/design/components/remix/root.ts +0 -137
  73. package/kit/lab/design/components/remix/select.ts +0 -1546
  74. package/kit/lab/design/components/remix/separator.ts +0 -108
  75. package/kit/lab/design/components/remix/slider.ts +0 -308
  76. package/kit/lab/design/components/remix/spinner.ts +0 -114
  77. package/kit/lab/design/components/remix/stack.ts +0 -205
  78. package/kit/lab/design/components/remix/stat.ts +0 -127
  79. package/kit/lab/design/components/remix/surface.ts +0 -71
  80. package/kit/lab/design/components/remix/switch.ts +0 -219
  81. package/kit/lab/design/components/remix/table.ts +0 -395
  82. package/kit/lab/design/components/remix/tabs.ts +0 -404
  83. package/kit/lab/design/components/remix/text.ts +0 -169
  84. package/kit/lab/design/components/remix/textarea.ts +0 -164
  85. package/kit/lab/design/components/remix/toast.ts +0 -299
  86. package/kit/lab/design/components/remix/tooltip.ts +0 -330
  87. package/kit/lab/design/components/remix/typeahead.ts +0 -81
  88. package/kit/lab/design/components/remix/types.ts +0 -19
  89. package/kit/lab/design/components/remix/visually-hidden.ts +0 -100
  90. package/kit/lab/design/core/color.ts +0 -46
  91. package/kit/lab/design/core/core.ts +0 -111
  92. package/kit/lab/design/core/create_primitive.ts +0 -455
  93. package/kit/lab/design/core/create_system.ts +0 -303
  94. package/kit/lab/design/core/css.ts +0 -127
  95. package/kit/lab/design/core/define_system.ts +0 -508
  96. package/kit/lab/design/core/math.ts +0 -12
  97. package/kit/lab/design/core/object.ts +0 -31
  98. package/kit/lab/design/core/recipe/create_recipe.ts +0 -185
  99. package/kit/lab/design/core/recipe/recipe.ts +0 -26
  100. package/kit/lab/design/core/recipe/style.ts +0 -62
  101. package/kit/lab/design/core/recipe/types.ts +0 -160
  102. package/kit/lab/design/core/resolve_token.ts +0 -118
  103. package/kit/lab/design/core/types.ts +0 -636
  104. package/ui/remix/remix.tsx +0 -901
@@ -1,4 +1,4 @@
1
- import { Dynamic, createComponent, insert, mergeProps, spread, template } from "solid-js/web";
1
+ import { Dynamic, createComponent, insert, memo, mergeProps, spread, template } from "solid-js/web";
2
2
  import { Show, batch, createEffect, createMemo, createSignal, onCleanup } from "solid-js";
3
3
  import { MutationError, QueryError, apply_scroll, create_adapter_base, get_entry_key, make_entry_id, make_link_props, resolve_outlet_slot, select_link_route_state, select_link_work_state } from "vorma/__internal";
4
4
  import { jsonDeepEquals } from "vorma/kit/json";
@@ -136,9 +136,11 @@ function createVormaClient(app_config, options) {
136
136
  });
137
137
  const entry_key_at_idx = createMemo(() => {
138
138
  const e = entries();
139
- return idx < e.length ? get_entry_key(e[idx]) : "";
139
+ if (idx >= e.length) return "";
140
+ const entry = e[idx];
141
+ return get_entry_key(entry);
140
142
  });
141
- const remount_key_next = createMemo(() => {
143
+ const outlet_key_next = createMemo(() => {
142
144
  const urls = import_urls();
143
145
  const keys = entry_keys();
144
146
  return `${urls[idx + 1]}|${keys[idx + 1]}`;
@@ -147,6 +149,15 @@ function createVormaClient(app_config, options) {
147
149
  const s = slot();
148
150
  return s.kind === "component" ? s.component : void 0;
149
151
  });
152
+ const component_render = createMemo(() => {
153
+ const Comp = component();
154
+ const key = entry_key_at_idx();
155
+ if (!Comp || !key) return;
156
+ return {
157
+ component: Comp,
158
+ key
159
+ };
160
+ });
150
161
  const error_boundary = createMemo(() => {
151
162
  const s = slot();
152
163
  return s.kind === "error" ? s.boundary : void 0;
@@ -161,7 +172,7 @@ function createVormaClient(app_config, options) {
161
172
  const Outlet = (local) => {
162
173
  return createComponent(Show, {
163
174
  get when() {
164
- return remount_key_next();
175
+ return outlet_key_next();
165
176
  },
166
177
  keyed: true,
167
178
  get children() {
@@ -172,49 +183,28 @@ function createVormaClient(app_config, options) {
172
183
  return [
173
184
  createComponent(Show, {
174
185
  get when() {
175
- return component();
186
+ return component_render();
176
187
  },
177
- get children() {
178
- return createComponent(Show, {
179
- get when() {
180
- return entry_key_at_idx();
188
+ keyed: true,
189
+ children: (render) => {
190
+ return createComponent(Dynamic, {
191
+ get component() {
192
+ return render.component;
181
193
  },
182
- keyed: true,
183
- get children() {
184
- return createComponent(Dynamic, {
185
- get component() {
186
- return component();
187
- },
188
- idx,
189
- Outlet
190
- });
191
- }
194
+ idx,
195
+ Outlet
192
196
  });
193
197
  }
194
198
  }),
195
- createComponent(Show, {
196
- get when() {
197
- return is_pass_through();
198
- },
199
- get children() {
200
- return Outlet();
201
- }
202
- }),
203
- createComponent(Show, {
204
- get when() {
199
+ memo(() => memo(() => !!is_pass_through())() ? Outlet() : null),
200
+ memo(() => memo(() => !!error_boundary())() ? createComponent(Dynamic, {
201
+ get component() {
205
202
  return error_boundary();
206
203
  },
207
- get children() {
208
- return createComponent(Dynamic, {
209
- get component() {
210
- return error_boundary();
211
- },
212
- get error() {
213
- return error_value();
214
- }
215
- });
204
+ get error() {
205
+ return error_value();
216
206
  }
217
- })
207
+ }) : null)
218
208
  ];
219
209
  }
220
210
  const RootOutletApp = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"solid.js","names":["batch","createEffect","createMemo","createSignal","onCleanup","Show","Accessor","Component","JSX","ValidComponent","Dynamic","apply_scroll","create_adapter_base","get_entry_key","make_entry_id","make_link_props","resolve_outlet_slot","select_link_route_state","select_link_work_state","AdapterClientOptions","AppConfig","DecomposedCommit","DecomposedState","RouteState","ScrollIntent","ToApiDecorator","ToDefineViewArgs","ToLinkProps","ToRouteSyncArgs","ToViewComponentProps","ToViewOutput","ToViewPattern","ViewDefinition","VormaClient","WorkState","jsonDeepEquals","LinkPropsBase","MutationError","QueryError","BeforeRouteCommitFn","BeforeRouteTransitionArgs","BeforeRouteYieldFn","BuildSkewDetectedEvent","MutationResult","QueryResult","RevalidationReason","RevalidationResult","RouteErrorState","RouteUpdateReason","ToApiClient","ToApiDecoratorContext","ToClientLoaderArgs","ToMutationArgs","ToMutationError","ToMutationInput","ToMutationMethod","ToMutationOutput","ToMutationPattern","ToNavigateArgs","ToNavigationTarget","ToQueryArgs","ToQueryError","ToQueryInput","ToQueryMethod","ToQueryOutput","ToQueryPattern","ToRouteDestination","ToViewInput","VormaClientSeed","WorkIndicator","WorkIndicatorOptions","CreateVormaClientOptions","linkDefaultProps","Partial","Omit","AnchorHTMLAttributes","HTMLAnchorElement","apiDecorator","A","createVormaClient","app_config","options","Element","entries","set_entries","route_error","set_route_error","views_data","set_views_data","client_loaders_data","set_client_loaders_data","matched_patterns","set_matched_patterns","import_urls","set_import_urls","entry_keys","set_entry_keys","route_state","set_route_state","equals","link_state_version","set_link_state_version","work_state","set_work_state","navigation","revalidation","prefetch","apiRequests","pending_scroll_intent","nav_counter","set_nav_counter","adapter_base_res","adapter_commit","scroll_intent","state","error","route","undefined","work","c","ok","Error","err","core","nav_fns","passthrough","val","useRouteState","selector","T","useWorkState","useRouteSync","args","P","debounceMs","enabled","replace","scrollToTop","target","canonical_href","toHref","href","route_href","pending_href","timeout_id","window","setTimeout","navigate","clearTimeout","useViewData","idx","usePatternViewData","pattern","patterns","indexOf","useClientLoaderData","usePatternClientLoaderData","defineView","input","RootOutlet","props","Record","_counter","current_entries","entry","target_entry_id","scroll","requestAnimationFrame","slot","get_default_error_boundary","entry_key_at_idx","e","length","remount_key_next","urls","keys","component","s","kind","error_boundary","boundary","error_value","is_pass_through","Outlet","local","_$createComponent","when","keyed","children","_$mergeProps","RootOutletApp","boot","ReturnType","render","render_root","_linkDefaultProps","_apiDecorator","core_options","rootEl","getRootEl","BaseLink","link_route_state","link_work_state","r","anchor_props","_el$","_tmpl$","_$spread","data-external","is_external","onClick","onPointerDown","onPointerEnter","onFocus","onPointerLeave","onBlur","onTouchCancel","_$insert","Link","raw","merged","params","splatValues","search","hash","link_href"],"sources":["../../../ui/solid/solid.tsx"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport {\n\tbatch,\n\tcreateEffect,\n\tcreateMemo,\n\tcreateSignal,\n\tonCleanup,\n\tShow,\n\ttype Accessor,\n\ttype Component,\n\ttype JSX,\n\ttype ValidComponent,\n} from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n\tapply_scroll,\n\tcreate_adapter_base,\n\tget_entry_key,\n\tmake_entry_id,\n\tmake_link_props,\n\tresolve_outlet_slot,\n\tselect_link_route_state,\n\tselect_link_work_state,\n\ttype AdapterClientOptions,\n\ttype AppConfig,\n\ttype DecomposedCommit,\n\ttype DecomposedState,\n\ttype RouteState,\n\ttype ScrollIntent,\n\ttype ToApiDecorator,\n\ttype ToDefineViewArgs,\n\ttype ToLinkProps,\n\ttype ToRouteSyncArgs,\n\ttype ToViewComponentProps,\n\ttype ToViewOutput,\n\ttype ToViewPattern,\n\ttype ViewDefinition,\n\ttype VormaClient,\n\ttype WorkState,\n} from \"vorma/__internal\";\nimport { jsonDeepEquals } from \"vorma/kit/json\";\nimport type { LinkPropsBase } from \"../../core/types.ts\";\n\nexport { MutationError, QueryError } from \"vorma/__internal\";\nexport type {\n\tBeforeRouteCommitFn,\n\tBeforeRouteTransitionArgs,\n\tBeforeRouteYieldFn,\n\tBuildSkewDetectedEvent,\n\tMutationResult,\n\tQueryResult,\n\tRevalidationReason,\n\tRevalidationResult,\n\tRouteErrorState,\n\tRouteState,\n\tRouteUpdateReason,\n\tToApiClient,\n\tToApiDecorator,\n\tToApiDecoratorContext,\n\tToClientLoaderArgs,\n\tToLinkProps,\n\tToMutationArgs,\n\tToMutationError,\n\tToMutationInput,\n\tToMutationMethod,\n\tToMutationOutput,\n\tToMutationPattern,\n\tToNavigateArgs,\n\tToNavigationTarget,\n\tToQueryArgs,\n\tToQueryError,\n\tToQueryInput,\n\tToQueryMethod,\n\tToQueryOutput,\n\tToQueryPattern,\n\tToRouteDestination,\n\tToRouteSyncArgs,\n\tToViewComponentProps,\n\tToViewInput,\n\tToViewOutput,\n\tToViewPattern,\n\tAppConfig as VormaClientSeed,\n\tWorkIndicator,\n\tWorkIndicatorOptions,\n\tWorkState,\n} from \"vorma/__internal\";\n\ntype CreateVormaClientOptions<A extends AppConfig> = AdapterClientOptions<Component> & {\n\tlinkDefaultProps?: Partial<\n\t\tOmit<JSX.AnchorHTMLAttributes<HTMLAnchorElement> & LinkPropsBase, \"href\">\n\t>;\n\tapiDecorator?: ToApiDecorator<A>;\n};\n\nexport function createVormaClient<A extends AppConfig>(\n\tapp_config: A,\n\toptions?: CreateVormaClientOptions<A>,\n): VormaClient<A, JSX.Element, JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"accessor\"> {\n\tconst [entries, set_entries] = createSignal<DecomposedState[\"entries\"]>([]);\n\tconst [route_error, set_route_error] = createSignal<DecomposedState[\"error\"]>(null);\n\tconst [views_data, set_views_data] = createSignal<unknown[]>([]);\n\tconst [client_loaders_data, set_client_loaders_data] = createSignal<unknown[]>([]);\n\tconst [matched_patterns, set_matched_patterns] = createSignal<string[]>([]);\n\tconst [import_urls, set_import_urls] = createSignal<string[]>([]);\n\tconst [entry_keys, set_entry_keys] = createSignal<string[]>([]);\n\tconst [route_state, set_route_state] = createSignal<RouteState | null>(null, {\n\t\tequals: jsonDeepEquals,\n\t});\n\tconst [link_state_version, set_link_state_version] = createSignal(0);\n\tconst [work_state, set_work_state] = createSignal<WorkState>(\n\t\t{\n\t\t\tnavigation: null,\n\t\t\trevalidation: null,\n\t\t\tprefetch: null,\n\t\t\tapiRequests: [],\n\t\t},\n\t\t{ equals: jsonDeepEquals },\n\t);\n\n\tlet pending_scroll_intent: ScrollIntent | undefined;\n\n\t// Used to trigger the scroll effect.\n\tconst [nav_counter, set_nav_counter] = createSignal(0);\n\n\tconst adapter_base_res = create_adapter_base(\n\t\tapp_config,\n\t\t(adapter_commit: DecomposedCommit) => {\n\t\t\tif (adapter_commit.scroll_intent) {\n\t\t\t\tpending_scroll_intent = adapter_commit.scroll_intent;\n\t\t\t}\n\n\t\t\tbatch(() => {\n\t\t\t\tif (adapter_commit.state) {\n\t\t\t\t\tset_entries(adapter_commit.state.entries);\n\t\t\t\t\tset_route_error(adapter_commit.state.error);\n\t\t\t\t\tset_views_data(adapter_commit.state.views_data);\n\t\t\t\t\tset_client_loaders_data(adapter_commit.state.client_loaders_data);\n\t\t\t\t\tset_matched_patterns(adapter_commit.state.matched_patterns);\n\t\t\t\t\tset_import_urls(adapter_commit.state.import_urls);\n\t\t\t\t\tset_entry_keys(adapter_commit.state.entry_keys);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.route) {\n\t\t\t\t\tset_route_state(adapter_commit.route);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.link_state_version !== undefined) {\n\t\t\t\t\tset_link_state_version(adapter_commit.link_state_version);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.work) {\n\t\t\t\t\tset_work_state(adapter_commit.work);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.scroll_intent) {\n\t\t\t\t\tset_nav_counter((c) => {\n\t\t\t\t\t\treturn c + 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\toptions?.apiDecorator,\n\t);\n\tif (!adapter_base_res.ok) {\n\t\tthrow new Error(`Failed to create Vorma client: ${adapter_base_res.err}`);\n\t}\n\n\tconst { core, nav_fns, passthrough } = adapter_base_res.val;\n\n\tfunction useRouteState(): Accessor<RouteState>;\n\tfunction useRouteState<T>(selector: (route: RouteState) => T): Accessor<T>;\n\tfunction useRouteState<T>(\n\t\tselector?: (route: RouteState) => T,\n\t): Accessor<RouteState | T> {\n\t\treturn createMemo(\n\t\t\t() => {\n\t\t\t\tconst route = route_state();\n\t\t\t\tif (!route) {\n\t\t\t\t\tthrow new Error(\"Vorma not booted\");\n\t\t\t\t}\n\t\t\t\tif (selector) {\n\t\t\t\t\treturn selector(route);\n\t\t\t\t}\n\t\t\t\treturn route;\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ equals: jsonDeepEquals },\n\t\t);\n\t}\n\n\tfunction useWorkState(): Accessor<WorkState>;\n\tfunction useWorkState<T>(selector: (work: WorkState) => T): Accessor<T>;\n\tfunction useWorkState<T>(selector?: (work: WorkState) => T): Accessor<WorkState | T> {\n\t\treturn createMemo(\n\t\t\t() => {\n\t\t\t\tconst work = work_state();\n\t\t\t\tif (selector) {\n\t\t\t\t\treturn selector(work);\n\t\t\t\t}\n\t\t\t\treturn work;\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ equals: jsonDeepEquals },\n\t\t);\n\t}\n\n\tfunction useRouteSync<P extends ToViewPattern<A>>(args: ToRouteSyncArgs<A, P>): void {\n\t\tconst {\n\t\t\tdebounceMs = 0,\n\t\t\tenabled = true,\n\t\t\treplace = true,\n\t\t\tscrollToTop = false,\n\t\t\t...target\n\t\t} = args;\n\t\tconst canonical_href = createMemo(() => {\n\t\t\treturn passthrough.toHref(target as any);\n\t\t});\n\n\t\tcreateEffect(() => {\n\t\t\tif (!enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst href = canonical_href();\n\t\t\tconst route_href = route_state()?.href;\n\t\t\tconst pending_href = work_state().navigation?.href;\n\t\t\tif (href === route_href || href === pending_href) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (debounceMs > 0) {\n\t\t\t\tconst timeout_id = window.setTimeout(() => {\n\t\t\t\t\tvoid passthrough.navigate({\n\t\t\t\t\t\thref,\n\t\t\t\t\t\treplace,\n\t\t\t\t\t\tscrollToTop,\n\t\t\t\t\t});\n\t\t\t\t}, debounceMs);\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\twindow.clearTimeout(timeout_id);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid passthrough.navigate({\n\t\t\t\thref,\n\t\t\t\treplace,\n\t\t\t\tscrollToTop,\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction useViewData<P extends ToViewPattern<A>>(\n\t\targs: ToViewComponentProps<A, P>,\n\t): Accessor<ToViewOutput<A, P>> {\n\t\treturn createMemo(() => {\n\t\t\treturn views_data()[args.idx] as ToViewOutput<A, P>;\n\t\t});\n\t}\n\n\tfunction usePatternViewData<P extends ToViewPattern<A>>(\n\t\tpattern: P,\n\t): Accessor<ToViewOutput<A, P> | undefined> {\n\t\treturn createMemo(() => {\n\t\t\tconst patterns = matched_patterns();\n\t\t\tconst idx = patterns.indexOf(pattern);\n\t\t\tif (idx < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn views_data()[idx] as ToViewOutput<A, P>;\n\t\t});\n\t}\n\n\tfunction useClientLoaderData<P extends ToViewPattern<A>, T>(\n\t\targs: ToViewComponentProps<A, P, T>,\n\t): Accessor<T> {\n\t\treturn createMemo(() => {\n\t\t\treturn client_loaders_data()[args.idx] as T;\n\t\t});\n\t}\n\n\tfunction usePatternClientLoaderData<T>(\n\t\tpattern: ToViewPattern<A>,\n\t): Accessor<T | undefined> {\n\t\treturn createMemo(() => {\n\t\t\tconst patterns = matched_patterns();\n\t\t\tconst idx = patterns.indexOf(pattern);\n\t\t\tif (idx < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn client_loaders_data()[idx] as T;\n\t\t});\n\t}\n\n\tfunction defineView<P extends ToViewPattern<A>, T = any>(\n\t\tinput: ToDefineViewArgs<A, P, T, JSX.Element>,\n\t): ViewDefinition {\n\t\treturn core.defineView(input as any);\n\t}\n\n\tfunction RootOutlet(props: { idx?: number } & Record<string, unknown>): JSX.Element {\n\t\tconst idx = props.idx ?? 0;\n\n\t\tcreateEffect(() => {\n\t\t\tconst _counter = nav_counter();\n\n\t\t\tif (!pending_scroll_intent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst current_entries = entries();\n\t\t\tconst entry = current_entries[idx];\n\t\t\tif (!entry) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmake_entry_id(idx, entry.pattern) !==\n\t\t\t\tpending_scroll_intent.target_entry_id\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst scroll = pending_scroll_intent.scroll;\n\t\t\tpending_scroll_intent = undefined;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tapply_scroll(scroll);\n\t\t\t});\n\t\t});\n\n\t\tconst slot = createMemo(() => {\n\t\t\treturn resolve_outlet_slot(\n\t\t\t\tentries(),\n\t\t\t\troute_error(),\n\t\t\t\tidx,\n\t\t\t\tcore.get_default_error_boundary(),\n\t\t\t);\n\t\t});\n\n\t\tconst entry_key_at_idx = createMemo(() => {\n\t\t\tconst e = entries();\n\t\t\treturn idx < e.length ? get_entry_key(e[idx]!) : \"\";\n\t\t});\n\n\t\tconst remount_key_next = createMemo(() => {\n\t\t\tconst urls = import_urls();\n\t\t\tconst keys = entry_keys();\n\t\t\treturn `${urls[idx + 1]}|${keys[idx + 1]}`;\n\t\t});\n\n\t\tconst component = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"component\" ? (s.component as ValidComponent) : undefined;\n\t\t});\n\n\t\tconst error_boundary = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"error\" ? (s.boundary as ValidComponent) : undefined;\n\t\t});\n\n\t\tconst error_value = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"error\" ? s.error : undefined;\n\t\t});\n\n\t\tconst is_pass_through = createMemo(() => {\n\t\t\treturn slot().kind === \"pass_through\";\n\t\t});\n\n\t\tconst Outlet = (local?: Record<string, unknown>): JSX.Element => {\n\t\t\treturn (\n\t\t\t\t<Show when={remount_key_next()} keyed>\n\t\t\t\t\t<RootOutlet {...props} {...local} idx={idx + 1} />\n\t\t\t\t</Show>\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Show when={component()}>\n\t\t\t\t\t<Show when={entry_key_at_idx()} keyed>\n\t\t\t\t\t\t<Dynamic component={component()!} idx={idx} Outlet={Outlet} />\n\t\t\t\t\t</Show>\n\t\t\t\t</Show>\n\n\t\t\t\t<Show when={is_pass_through()}>{Outlet()}</Show>\n\n\t\t\t\t<Show when={error_boundary()}>\n\t\t\t\t\t<Dynamic component={error_boundary()!} error={error_value()} />\n\t\t\t\t</Show>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst RootOutletApp: Component = () => {\n\t\treturn <RootOutlet />;\n\t};\n\n\tfunction boot(): ReturnType<typeof core.boot> {\n\t\tconst {\n\t\t\trender: render_root,\n\t\t\tlinkDefaultProps: _linkDefaultProps,\n\t\t\tapiDecorator: _apiDecorator,\n\t\t\t...core_options\n\t\t} = options ?? {};\n\t\treturn core.boot({\n\t\t\t...core_options,\n\t\t\trender: render_root\n\t\t\t\t? () => {\n\t\t\t\t\t\treturn render_root({\n\t\t\t\t\t\t\tRootOutlet: RootOutletApp,\n\t\t\t\t\t\t\trootEl: core.getRootEl(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t});\n\t}\n\n\tfunction BaseLink(\n\t\tprops: JSX.AnchorHTMLAttributes<HTMLAnchorElement> &\n\t\t\tLinkPropsBase & { pattern?: string },\n\t): JSX.Element {\n\t\tconst link_route_state = useRouteState(select_link_route_state);\n\t\tconst link_work_state = useWorkState(select_link_work_state);\n\t\tconst r = createMemo(() => {\n\t\t\tvoid link_state_version();\n\t\t\treturn make_link_props(\n\t\t\t\tprops as Record<string, unknown>,\n\t\t\t\tnav_fns,\n\t\t\t\tlink_route_state(),\n\t\t\t\tlink_work_state(),\n\t\t\t);\n\t\t});\n\t\tconst anchor_props = createMemo(() => {\n\t\t\treturn r().anchor_props as JSX.AnchorHTMLAttributes<HTMLAnchorElement>;\n\t\t});\n\t\treturn (\n\t\t\t<a\n\t\t\t\tdata-external={r().is_external || undefined}\n\t\t\t\t{...anchor_props()}\n\t\t\t\tonClick={r().onClick}\n\t\t\t\tonPointerDown={r().onPointerDown}\n\t\t\t\tonPointerEnter={r().onPointerEnter}\n\t\t\t\tonFocus={r().onFocus}\n\t\t\t\tonPointerLeave={r().onPointerLeave}\n\t\t\t\tonBlur={r().onBlur}\n\t\t\t\tonTouchCancel={r().onTouchCancel}\n\t\t\t>\n\t\t\t\t{props.children}\n\t\t\t</a>\n\t\t);\n\t}\n\n\tconst Link = (<P extends ToViewPattern<A>>(\n\t\traw: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> &\n\t\t\tToLinkProps<A, P>,\n\t): JSX.Element => {\n\t\tconst merged = { ...options?.linkDefaultProps, ...raw } as any;\n\t\tconst { href, pattern, params, splatValues, search, hash, ...props } = merged;\n\t\tconst link_href = createMemo(() => {\n\t\t\treturn (\n\t\t\t\thref ??\n\t\t\t\tpassthrough.toHref({\n\t\t\t\t\tpattern,\n\t\t\t\t\tparams,\n\t\t\t\t\tsplatValues,\n\t\t\t\t\tsearch,\n\t\t\t\t\thash,\n\t\t\t\t} as any)\n\t\t\t);\n\t\t});\n\t\treturn <BaseLink {...props} pattern={pattern} href={link_href()} />;\n\t}) as <P extends ToViewPattern<A>>(\n\t\tprops: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> &\n\t\t\tToLinkProps<A, P>,\n\t) => JSX.Element;\n\n\treturn {\n\t\t...passthrough,\n\t\tboot,\n\t\tdefineView,\n\t\tRootOutlet,\n\t\tLink,\n\t\tuseRouteSync,\n\t\tuseRouteState,\n\t\tuseWorkState,\n\t\tuseViewData,\n\t\tusePatternViewData,\n\t\tuseClientLoaderData,\n\t\tusePatternClientLoaderData,\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"solid.js","names":["batch","createEffect","createMemo","createSignal","onCleanup","Show","Accessor","Component","JSX","ValidComponent","Dynamic","apply_scroll","create_adapter_base","get_entry_key","make_entry_id","make_link_props","resolve_outlet_slot","select_link_route_state","select_link_work_state","AdapterClientOptions","AppConfig","DecomposedCommit","DecomposedState","RouteState","ScrollIntent","ToApiDecorator","ToDefineViewArgs","ToLinkProps","ToRouteSyncArgs","ToViewComponentProps","ToViewOutput","ToViewPattern","ViewDefinition","VormaClient","WorkState","jsonDeepEquals","LinkPropsBase","MutationError","QueryError","BeforeRouteCommitFn","BeforeRouteTransitionArgs","BeforeRouteYieldFn","BuildSkewDetectedEvent","MutationResult","QueryResult","RevalidationReason","RevalidationResult","RouteErrorState","RouteUpdateReason","ToApiClient","ToApiDecoratorContext","ToClientLoaderArgs","ToMutationArgs","ToMutationError","ToMutationInput","ToMutationMethod","ToMutationOutput","ToMutationPattern","ToNavigateArgs","ToNavigationTarget","ToQueryArgs","ToQueryError","ToQueryInput","ToQueryMethod","ToQueryOutput","ToQueryPattern","ToRouteDestination","ToViewInput","VormaClientSeed","WorkIndicator","WorkIndicatorOptions","CreateVormaClientOptions","linkDefaultProps","Partial","Omit","AnchorHTMLAttributes","HTMLAnchorElement","apiDecorator","A","createVormaClient","app_config","options","Element","entries","set_entries","route_error","set_route_error","views_data","set_views_data","client_loaders_data","set_client_loaders_data","matched_patterns","set_matched_patterns","import_urls","set_import_urls","entry_keys","set_entry_keys","route_state","set_route_state","equals","link_state_version","set_link_state_version","work_state","set_work_state","navigation","revalidation","prefetch","apiRequests","pending_scroll_intent","nav_counter","set_nav_counter","adapter_base_res","adapter_commit","scroll_intent","state","error","route","undefined","work","c","ok","Error","err","core","nav_fns","passthrough","val","useRouteState","selector","T","useWorkState","useRouteSync","args","P","debounceMs","enabled","replace","scrollToTop","target","canonical_href","toHref","href","route_href","pending_href","timeout_id","window","setTimeout","navigate","clearTimeout","useViewData","idx","usePatternViewData","pattern","patterns","indexOf","useClientLoaderData","usePatternClientLoaderData","defineView","input","RootOutlet","props","Record","_counter","current_entries","entry","target_entry_id","scroll","requestAnimationFrame","slot","get_default_error_boundary","entry_key_at_idx","e","length","outlet_key_next","urls","keys","component","s","kind","component_render","Comp","key","error_boundary","boundary","error_value","is_pass_through","Outlet","local","_$createComponent","when","keyed","children","_$mergeProps","render","_$memo","RootOutletApp","boot","ReturnType","render_root","_linkDefaultProps","_apiDecorator","core_options","rootEl","getRootEl","BaseLink","link_route_state","link_work_state","r","anchor_props","_el$","_tmpl$","_$spread","data-external","is_external","onClick","onPointerDown","onPointerEnter","onFocus","onPointerLeave","onBlur","onTouchCancel","_$insert","Link","raw","merged","params","splatValues","search","hash","link_href"],"sources":["../../../ui/solid/solid.tsx"],"sourcesContent":["/// <reference types=\"vite/client\" />\n\nimport {\n\tbatch,\n\tcreateEffect,\n\tcreateMemo,\n\tcreateSignal,\n\tonCleanup,\n\tShow,\n\ttype Accessor,\n\ttype Component,\n\ttype JSX,\n\ttype ValidComponent,\n} from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n\tapply_scroll,\n\tcreate_adapter_base,\n\tget_entry_key,\n\tmake_entry_id,\n\tmake_link_props,\n\tresolve_outlet_slot,\n\tselect_link_route_state,\n\tselect_link_work_state,\n\ttype AdapterClientOptions,\n\ttype AppConfig,\n\ttype DecomposedCommit,\n\ttype DecomposedState,\n\ttype RouteState,\n\ttype ScrollIntent,\n\ttype ToApiDecorator,\n\ttype ToDefineViewArgs,\n\ttype ToLinkProps,\n\ttype ToRouteSyncArgs,\n\ttype ToViewComponentProps,\n\ttype ToViewOutput,\n\ttype ToViewPattern,\n\ttype ViewDefinition,\n\ttype VormaClient,\n\ttype WorkState,\n} from \"vorma/__internal\";\nimport { jsonDeepEquals } from \"vorma/kit/json\";\nimport type { LinkPropsBase } from \"../../core/types.ts\";\n\nexport { MutationError, QueryError } from \"vorma/__internal\";\nexport type {\n\tBeforeRouteCommitFn,\n\tBeforeRouteTransitionArgs,\n\tBeforeRouteYieldFn,\n\tBuildSkewDetectedEvent,\n\tMutationResult,\n\tQueryResult,\n\tRevalidationReason,\n\tRevalidationResult,\n\tRouteErrorState,\n\tRouteState,\n\tRouteUpdateReason,\n\tToApiClient,\n\tToApiDecorator,\n\tToApiDecoratorContext,\n\tToClientLoaderArgs,\n\tToLinkProps,\n\tToMutationArgs,\n\tToMutationError,\n\tToMutationInput,\n\tToMutationMethod,\n\tToMutationOutput,\n\tToMutationPattern,\n\tToNavigateArgs,\n\tToNavigationTarget,\n\tToQueryArgs,\n\tToQueryError,\n\tToQueryInput,\n\tToQueryMethod,\n\tToQueryOutput,\n\tToQueryPattern,\n\tToRouteDestination,\n\tToRouteSyncArgs,\n\tToViewComponentProps,\n\tToViewInput,\n\tToViewOutput,\n\tToViewPattern,\n\tAppConfig as VormaClientSeed,\n\tWorkIndicator,\n\tWorkIndicatorOptions,\n\tWorkState,\n} from \"vorma/__internal\";\n\ntype CreateVormaClientOptions<A extends AppConfig> = AdapterClientOptions<Component> & {\n\tlinkDefaultProps?: Partial<\n\t\tOmit<JSX.AnchorHTMLAttributes<HTMLAnchorElement> & LinkPropsBase, \"href\">\n\t>;\n\tapiDecorator?: ToApiDecorator<A>;\n};\n\nexport function createVormaClient<A extends AppConfig>(\n\tapp_config: A,\n\toptions?: CreateVormaClientOptions<A>,\n): VormaClient<A, JSX.Element, JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"accessor\"> {\n\tconst [entries, set_entries] = createSignal<DecomposedState[\"entries\"]>([]);\n\tconst [route_error, set_route_error] = createSignal<DecomposedState[\"error\"]>(null);\n\tconst [views_data, set_views_data] = createSignal<unknown[]>([]);\n\tconst [client_loaders_data, set_client_loaders_data] = createSignal<unknown[]>([]);\n\tconst [matched_patterns, set_matched_patterns] = createSignal<string[]>([]);\n\tconst [import_urls, set_import_urls] = createSignal<string[]>([]);\n\tconst [entry_keys, set_entry_keys] = createSignal<string[]>([]);\n\tconst [route_state, set_route_state] = createSignal<RouteState | null>(null, {\n\t\tequals: jsonDeepEquals,\n\t});\n\tconst [link_state_version, set_link_state_version] = createSignal(0);\n\tconst [work_state, set_work_state] = createSignal<WorkState>(\n\t\t{\n\t\t\tnavigation: null,\n\t\t\trevalidation: null,\n\t\t\tprefetch: null,\n\t\t\tapiRequests: [],\n\t\t},\n\t\t{ equals: jsonDeepEquals },\n\t);\n\n\tlet pending_scroll_intent: ScrollIntent | undefined;\n\n\t// Used to trigger the scroll effect.\n\tconst [nav_counter, set_nav_counter] = createSignal(0);\n\n\tconst adapter_base_res = create_adapter_base(\n\t\tapp_config,\n\t\t(adapter_commit: DecomposedCommit) => {\n\t\t\tif (adapter_commit.scroll_intent) {\n\t\t\t\tpending_scroll_intent = adapter_commit.scroll_intent;\n\t\t\t}\n\n\t\t\tbatch(() => {\n\t\t\t\tif (adapter_commit.state) {\n\t\t\t\t\tset_entries(adapter_commit.state.entries);\n\t\t\t\t\tset_route_error(adapter_commit.state.error);\n\t\t\t\t\tset_views_data(adapter_commit.state.views_data);\n\t\t\t\t\tset_client_loaders_data(adapter_commit.state.client_loaders_data);\n\t\t\t\t\tset_matched_patterns(adapter_commit.state.matched_patterns);\n\t\t\t\t\tset_import_urls(adapter_commit.state.import_urls);\n\t\t\t\t\tset_entry_keys(adapter_commit.state.entry_keys);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.route) {\n\t\t\t\t\tset_route_state(adapter_commit.route);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.link_state_version !== undefined) {\n\t\t\t\t\tset_link_state_version(adapter_commit.link_state_version);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.work) {\n\t\t\t\t\tset_work_state(adapter_commit.work);\n\t\t\t\t}\n\t\t\t\tif (adapter_commit.scroll_intent) {\n\t\t\t\t\tset_nav_counter((c) => {\n\t\t\t\t\t\treturn c + 1;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\toptions?.apiDecorator,\n\t);\n\tif (!adapter_base_res.ok) {\n\t\tthrow new Error(`Failed to create Vorma client: ${adapter_base_res.err}`);\n\t}\n\n\tconst { core, nav_fns, passthrough } = adapter_base_res.val;\n\n\tfunction useRouteState(): Accessor<RouteState>;\n\tfunction useRouteState<T>(selector: (route: RouteState) => T): Accessor<T>;\n\tfunction useRouteState<T>(\n\t\tselector?: (route: RouteState) => T,\n\t): Accessor<RouteState | T> {\n\t\treturn createMemo(\n\t\t\t() => {\n\t\t\t\tconst route = route_state();\n\t\t\t\tif (!route) {\n\t\t\t\t\tthrow new Error(\"Vorma not booted\");\n\t\t\t\t}\n\t\t\t\tif (selector) {\n\t\t\t\t\treturn selector(route);\n\t\t\t\t}\n\t\t\t\treturn route;\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ equals: jsonDeepEquals },\n\t\t);\n\t}\n\n\tfunction useWorkState(): Accessor<WorkState>;\n\tfunction useWorkState<T>(selector: (work: WorkState) => T): Accessor<T>;\n\tfunction useWorkState<T>(selector?: (work: WorkState) => T): Accessor<WorkState | T> {\n\t\treturn createMemo(\n\t\t\t() => {\n\t\t\t\tconst work = work_state();\n\t\t\t\tif (selector) {\n\t\t\t\t\treturn selector(work);\n\t\t\t\t}\n\t\t\t\treturn work;\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ equals: jsonDeepEquals },\n\t\t);\n\t}\n\n\tfunction useRouteSync<P extends ToViewPattern<A>>(args: ToRouteSyncArgs<A, P>): void {\n\t\tconst {\n\t\t\tdebounceMs = 0,\n\t\t\tenabled = true,\n\t\t\treplace = true,\n\t\t\tscrollToTop = false,\n\t\t\t...target\n\t\t} = args;\n\t\tconst canonical_href = createMemo(() => {\n\t\t\treturn passthrough.toHref(target as any);\n\t\t});\n\n\t\tcreateEffect(() => {\n\t\t\tif (!enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst href = canonical_href();\n\t\t\tconst route_href = route_state()?.href;\n\t\t\tconst pending_href = work_state().navigation?.href;\n\t\t\tif (href === route_href || href === pending_href) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (debounceMs > 0) {\n\t\t\t\tconst timeout_id = window.setTimeout(() => {\n\t\t\t\t\tvoid passthrough.navigate({\n\t\t\t\t\t\thref,\n\t\t\t\t\t\treplace,\n\t\t\t\t\t\tscrollToTop,\n\t\t\t\t\t});\n\t\t\t\t}, debounceMs);\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\twindow.clearTimeout(timeout_id);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid passthrough.navigate({\n\t\t\t\thref,\n\t\t\t\treplace,\n\t\t\t\tscrollToTop,\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction useViewData<P extends ToViewPattern<A>>(\n\t\targs: ToViewComponentProps<A, P>,\n\t): Accessor<ToViewOutput<A, P>> {\n\t\treturn createMemo(() => {\n\t\t\treturn views_data()[args.idx] as ToViewOutput<A, P>;\n\t\t});\n\t}\n\n\tfunction usePatternViewData<P extends ToViewPattern<A>>(\n\t\tpattern: P,\n\t): Accessor<ToViewOutput<A, P> | undefined> {\n\t\treturn createMemo(() => {\n\t\t\tconst patterns = matched_patterns();\n\t\t\tconst idx = patterns.indexOf(pattern);\n\t\t\tif (idx < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn views_data()[idx] as ToViewOutput<A, P>;\n\t\t});\n\t}\n\n\tfunction useClientLoaderData<P extends ToViewPattern<A>, T>(\n\t\targs: ToViewComponentProps<A, P, T>,\n\t): Accessor<T> {\n\t\treturn createMemo(() => {\n\t\t\treturn client_loaders_data()[args.idx] as T;\n\t\t});\n\t}\n\n\tfunction usePatternClientLoaderData<T>(\n\t\tpattern: ToViewPattern<A>,\n\t): Accessor<T | undefined> {\n\t\treturn createMemo(() => {\n\t\t\tconst patterns = matched_patterns();\n\t\t\tconst idx = patterns.indexOf(pattern);\n\t\t\tif (idx < 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn client_loaders_data()[idx] as T;\n\t\t});\n\t}\n\n\tfunction defineView<P extends ToViewPattern<A>, T = any>(\n\t\tinput: ToDefineViewArgs<A, P, T, JSX.Element>,\n\t): ViewDefinition {\n\t\treturn core.defineView(input as any);\n\t}\n\n\tfunction RootOutlet(props: { idx?: number } & Record<string, unknown>): JSX.Element {\n\t\tconst idx = props.idx ?? 0;\n\n\t\tcreateEffect(() => {\n\t\t\tconst _counter = nav_counter();\n\n\t\t\tif (!pending_scroll_intent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst current_entries = entries();\n\t\t\tconst entry = current_entries[idx];\n\t\t\tif (!entry) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmake_entry_id(idx, entry.pattern) !==\n\t\t\t\tpending_scroll_intent.target_entry_id\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst scroll = pending_scroll_intent.scroll;\n\t\t\tpending_scroll_intent = undefined;\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tapply_scroll(scroll);\n\t\t\t});\n\t\t});\n\n\t\tconst slot = createMemo(() => {\n\t\t\treturn resolve_outlet_slot(\n\t\t\t\tentries(),\n\t\t\t\troute_error(),\n\t\t\t\tidx,\n\t\t\t\tcore.get_default_error_boundary(),\n\t\t\t);\n\t\t});\n\n\t\tconst entry_key_at_idx = createMemo(() => {\n\t\t\tconst e = entries();\n\t\t\tif (idx >= e.length) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tconst entry = e[idx]!;\n\t\t\treturn get_entry_key(entry);\n\t\t});\n\n\t\tconst outlet_key_next = createMemo(() => {\n\t\t\tconst urls = import_urls();\n\t\t\tconst keys = entry_keys();\n\t\t\treturn `${urls[idx + 1]}|${keys[idx + 1]}`;\n\t\t});\n\n\t\tconst component = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"component\" ? (s.component as ValidComponent) : undefined;\n\t\t});\n\n\t\tconst component_render = createMemo(() => {\n\t\t\tconst Comp = component();\n\t\t\tconst key = entry_key_at_idx();\n\t\t\tif (!Comp || !key) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn { component: Comp, key };\n\t\t});\n\n\t\tconst error_boundary = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"error\" ? (s.boundary as ValidComponent) : undefined;\n\t\t});\n\n\t\tconst error_value = createMemo(() => {\n\t\t\tconst s = slot();\n\t\t\treturn s.kind === \"error\" ? s.error : undefined;\n\t\t});\n\n\t\tconst is_pass_through = createMemo(() => {\n\t\t\treturn slot().kind === \"pass_through\";\n\t\t});\n\n\t\tconst Outlet = (local?: Record<string, unknown>): JSX.Element => {\n\t\t\treturn (\n\t\t\t\t<Show when={outlet_key_next()} keyed>\n\t\t\t\t\t<RootOutlet {...props} {...local} idx={idx + 1} />\n\t\t\t\t</Show>\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Show when={component_render()} keyed>\n\t\t\t\t\t{(render) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Dynamic\n\t\t\t\t\t\t\t\tcomponent={render.component}\n\t\t\t\t\t\t\t\tidx={idx}\n\t\t\t\t\t\t\t\tOutlet={Outlet}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t}}\n\t\t\t\t</Show>\n\n\t\t\t\t{is_pass_through() ? Outlet() : null}\n\n\t\t\t\t{error_boundary() ? (\n\t\t\t\t\t<Dynamic component={error_boundary()!} error={error_value()} />\n\t\t\t\t) : null}\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst RootOutletApp: Component = () => {\n\t\treturn <RootOutlet />;\n\t};\n\n\tfunction boot(): ReturnType<typeof core.boot> {\n\t\tconst {\n\t\t\trender: render_root,\n\t\t\tlinkDefaultProps: _linkDefaultProps,\n\t\t\tapiDecorator: _apiDecorator,\n\t\t\t...core_options\n\t\t} = options ?? {};\n\t\treturn core.boot({\n\t\t\t...core_options,\n\t\t\trender: render_root\n\t\t\t\t? () => {\n\t\t\t\t\t\treturn render_root({\n\t\t\t\t\t\t\tRootOutlet: RootOutletApp,\n\t\t\t\t\t\t\trootEl: core.getRootEl(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t});\n\t}\n\n\tfunction BaseLink(\n\t\tprops: JSX.AnchorHTMLAttributes<HTMLAnchorElement> &\n\t\t\tLinkPropsBase & { pattern?: string },\n\t): JSX.Element {\n\t\tconst link_route_state = useRouteState(select_link_route_state);\n\t\tconst link_work_state = useWorkState(select_link_work_state);\n\t\tconst r = createMemo(() => {\n\t\t\tvoid link_state_version();\n\t\t\treturn make_link_props(\n\t\t\t\tprops as Record<string, unknown>,\n\t\t\t\tnav_fns,\n\t\t\t\tlink_route_state(),\n\t\t\t\tlink_work_state(),\n\t\t\t);\n\t\t});\n\t\tconst anchor_props = createMemo(() => {\n\t\t\treturn r().anchor_props as JSX.AnchorHTMLAttributes<HTMLAnchorElement>;\n\t\t});\n\t\treturn (\n\t\t\t<a\n\t\t\t\tdata-external={r().is_external || undefined}\n\t\t\t\t{...anchor_props()}\n\t\t\t\tonClick={r().onClick}\n\t\t\t\tonPointerDown={r().onPointerDown}\n\t\t\t\tonPointerEnter={r().onPointerEnter}\n\t\t\t\tonFocus={r().onFocus}\n\t\t\t\tonPointerLeave={r().onPointerLeave}\n\t\t\t\tonBlur={r().onBlur}\n\t\t\t\tonTouchCancel={r().onTouchCancel}\n\t\t\t>\n\t\t\t\t{props.children}\n\t\t\t</a>\n\t\t);\n\t}\n\n\tconst Link = (<P extends ToViewPattern<A>>(\n\t\traw: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> &\n\t\t\tToLinkProps<A, P>,\n\t): JSX.Element => {\n\t\tconst merged = { ...options?.linkDefaultProps, ...raw } as any;\n\t\tconst { href, pattern, params, splatValues, search, hash, ...props } = merged;\n\t\tconst link_href = createMemo(() => {\n\t\t\treturn (\n\t\t\t\thref ??\n\t\t\t\tpassthrough.toHref({\n\t\t\t\t\tpattern,\n\t\t\t\t\tparams,\n\t\t\t\t\tsplatValues,\n\t\t\t\t\tsearch,\n\t\t\t\t\thash,\n\t\t\t\t} as any)\n\t\t\t);\n\t\t});\n\t\treturn <BaseLink {...props} pattern={pattern} href={link_href()} />;\n\t}) as <P extends ToViewPattern<A>>(\n\t\tprops: Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> &\n\t\t\tToLinkProps<A, P>,\n\t) => JSX.Element;\n\n\treturn {\n\t\t...passthrough,\n\t\tboot,\n\t\tdefineView,\n\t\tRootOutlet,\n\t\tLink,\n\t\tuseRouteSync,\n\t\tuseRouteState,\n\t\tuseWorkState,\n\t\tuseViewData,\n\t\tusePatternViewData,\n\t\tuseClientLoaderData,\n\t\tusePatternClientLoaderData,\n\t};\n}\n"],"mappings":"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"}
@@ -52,6 +52,7 @@ export type RouteRenderEntry = {
52
52
  pattern: string;
53
53
  input: unknown;
54
54
  module_url: string;
55
+ hmr_version: number;
55
56
  module: Record<string, unknown>;
56
57
  view_data: unknown;
57
58
  client_loader_data: unknown;
@@ -521,6 +522,7 @@ export function create_client_core(
521
522
  pattern: string;
522
523
  input: unknown;
523
524
  module_url: string;
525
+ hmr_version: number;
524
526
  module: Record<string, unknown>;
525
527
  view_data: unknown;
526
528
  client_loader_data: unknown;
@@ -760,6 +762,7 @@ export function create_client_core(
760
762
  const search_schema_map: Record<string, unknown> = {};
761
763
  const hmr_rerun_patterns = new Set<string>();
762
764
  const module_cache = new Map<string, Record<string, unknown>>();
765
+ const hmr_version_map = new Map<string, number>();
763
766
 
764
767
  const reload_page =
765
768
  test_options?.reload ??
@@ -1279,6 +1282,8 @@ export function create_client_core(
1279
1282
  pattern: route.pattern,
1280
1283
  input: route.input,
1281
1284
  module_url: route.module_url,
1285
+ hmr_version:
1286
+ hmr_version_map.get(normalize_module_url(route.module_url)) ?? 0,
1282
1287
  module: modules.get(route.module_url) ?? {},
1283
1288
  view_data: route.view_data,
1284
1289
  client_loader_data: cl_res && "data" in cl_res ? cl_res.data : undefined,
@@ -1823,6 +1828,7 @@ export function create_client_core(
1823
1828
  pattern: m.pattern,
1824
1829
  input: m.input,
1825
1830
  module_url: m.module_url,
1831
+ hmr_version: m.hmr_version,
1826
1832
  module: m.module,
1827
1833
  view_data: m.view_data,
1828
1834
  client_loader_data: m.client_loader_data,
@@ -2986,6 +2992,8 @@ export function create_client_core(
2986
2992
  }
2987
2993
  const url = normalize_module_url(raw_url);
2988
2994
  module_cache.set(url, mod);
2995
+ const hmr_version = (hmr_version_map.get(url) ?? 0) + 1;
2996
+ hmr_version_map.set(url, hmr_version);
2989
2997
  const idx = route_snapshot.route.matches.findIndex(
2990
2998
  (m) => normalize_module_url(m.module_url) === url,
2991
2999
  );
@@ -3046,7 +3054,7 @@ export function create_client_core(
3046
3054
 
3047
3055
  const prev = route_snapshot;
3048
3056
  const matches = route_snapshot.route.matches.map((m, i) =>
3049
- i === idx ? { ...m, module: mod, client_loader_data } : m,
3057
+ i === idx ? { ...m, hmr_version, module: mod, client_loader_data } : m,
3050
3058
  );
3051
3059
  route_snapshot = {
3052
3060
  position: route_snapshot.position,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vorma",
3
- "version": "0.86.0-pre.2",
3
+ "version": "0.86.0-pre.3",
4
4
  "description": "Vorma is a full-featured metaframework for building highly dynamic and flexible web applications with Rust and Vite.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -22,7 +22,6 @@
22
22
  "react",
23
23
  "preact",
24
24
  "solid",
25
- "remix",
26
25
  "framework",
27
26
  "metaframework",
28
27
  "meta-framework"
@@ -44,10 +43,6 @@
44
43
  "import": "./.dist/ui/solid/solid.js",
45
44
  "types": "./.dist/ui/solid/solid.d.ts"
46
45
  },
47
- "./remix": {
48
- "import": "./.dist/ui/remix/remix.js",
49
- "types": "./.dist/ui/remix/remix.d.ts"
50
- },
51
46
  "./vite": {
52
47
  "import": "./.dist/vite/vite.mjs",
53
48
  "types": "./.dist/vite/vite.d.mts"
@@ -76,14 +71,6 @@
76
71
  "import": "./.dist/kit/json/json.js",
77
72
  "types": "./.dist/kit/json/json.d.ts"
78
73
  },
79
- "./kit/lab/design/core": {
80
- "import": "./.dist/kit/lab/design/core/core.js",
81
- "types": "./.dist/kit/lab/design/core/core.d.ts"
82
- },
83
- "./kit/lab/design/components/remix": {
84
- "import": "./.dist/kit/lab/design/components/remix/remix.js",
85
- "types": "./.dist/kit/lab/design/components/remix/remix.d.ts"
86
- },
87
74
  "./kit/listeners": {
88
75
  "import": "./.dist/kit/listeners/listeners.js",
89
76
  "types": "./.dist/kit/listeners/listeners.d.ts"
@@ -105,7 +92,6 @@
105
92
  "preact": "^10.29.1",
106
93
  "react": "^19.2.4",
107
94
  "react-dom": "^19.2.4",
108
- "remix": "3.0.0-beta.0",
109
95
  "solid-js": "^1.9.12"
110
96
  },
111
97
  "files": [
@@ -124,7 +110,6 @@
124
110
  "!**/AGENTS.md",
125
111
  "!**/*.notes.md",
126
112
  "!**/*PLAN.md",
127
- "!**/COMPONENT_MATRIX.md",
128
113
  "!**/test-setup.ts",
129
114
  "!.dist/kit/url/**",
130
115
  "!tests/",
@@ -337,10 +337,14 @@ export function createVormaClient<A extends AppConfig>(
337
337
 
338
338
  const entry_key_at_idx = createMemo(() => {
339
339
  const e = entries();
340
- return idx < e.length ? get_entry_key(e[idx]!) : "";
340
+ if (idx >= e.length) {
341
+ return "";
342
+ }
343
+ const entry = e[idx]!;
344
+ return get_entry_key(entry);
341
345
  });
342
346
 
343
- const remount_key_next = createMemo(() => {
347
+ const outlet_key_next = createMemo(() => {
344
348
  const urls = import_urls();
345
349
  const keys = entry_keys();
346
350
  return `${urls[idx + 1]}|${keys[idx + 1]}`;
@@ -351,6 +355,15 @@ export function createVormaClient<A extends AppConfig>(
351
355
  return s.kind === "component" ? (s.component as ValidComponent) : undefined;
352
356
  });
353
357
 
358
+ const component_render = createMemo(() => {
359
+ const Comp = component();
360
+ const key = entry_key_at_idx();
361
+ if (!Comp || !key) {
362
+ return undefined;
363
+ }
364
+ return { component: Comp, key };
365
+ });
366
+
354
367
  const error_boundary = createMemo(() => {
355
368
  const s = slot();
356
369
  return s.kind === "error" ? (s.boundary as ValidComponent) : undefined;
@@ -367,7 +380,7 @@ export function createVormaClient<A extends AppConfig>(
367
380
 
368
381
  const Outlet = (local?: Record<string, unknown>): JSX.Element => {
369
382
  return (
370
- <Show when={remount_key_next()} keyed>
383
+ <Show when={outlet_key_next()} keyed>
371
384
  <RootOutlet {...props} {...local} idx={idx + 1} />
372
385
  </Show>
373
386
  );
@@ -375,17 +388,23 @@ export function createVormaClient<A extends AppConfig>(
375
388
 
376
389
  return (
377
390
  <>
378
- <Show when={component()}>
379
- <Show when={entry_key_at_idx()} keyed>
380
- <Dynamic component={component()!} idx={idx} Outlet={Outlet} />
381
- </Show>
391
+ <Show when={component_render()} keyed>
392
+ {(render) => {
393
+ return (
394
+ <Dynamic
395
+ component={render.component}
396
+ idx={idx}
397
+ Outlet={Outlet}
398
+ />
399
+ );
400
+ }}
382
401
  </Show>
383
402
 
384
- <Show when={is_pass_through()}>{Outlet()}</Show>
403
+ {is_pass_through() ? Outlet() : null}
385
404
 
386
- <Show when={error_boundary()}>
405
+ {error_boundary() ? (
387
406
  <Dynamic component={error_boundary()!} error={error_value()} />
388
- </Show>
407
+ ) : null}
389
408
  </>
390
409
  );
391
410
  }