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.
- package/.dist/core/_index.d.ts +1 -0
- package/.dist/core/_index.d.ts.map +1 -1
- package/.dist/core/_index.js +6 -0
- package/.dist/core/_index.js.map +1 -1
- package/.dist/core/vorma_client_wasm_bg.wasm +0 -0
- package/.dist/ui/solid/solid.js +29 -39
- package/.dist/ui/solid/solid.js.map +1 -1
- package/core/client_wasm/vorma_client_wasm_bg.wasm +0 -0
- package/core/create_client_core.ts +9 -1
- package/package.json +1 -16
- package/ui/solid/solid.tsx +29 -10
- package/.dist/kit/lab/design/components/remix/remix.d.ts +0 -2309
- package/.dist/kit/lab/design/components/remix/remix.d.ts.map +0 -1
- package/.dist/kit/lab/design/components/remix/remix.js +0 -7022
- package/.dist/kit/lab/design/components/remix/remix.js.map +0 -1
- package/.dist/kit/lab/design/core/core.d.ts +0 -527
- package/.dist/kit/lab/design/core/core.d.ts.map +0 -1
- package/.dist/kit/lab/design/core/core.js +0 -668
- package/.dist/kit/lab/design/core/core.js.map +0 -1
- package/.dist/kit/matcher/matcher.d.ts +0 -78
- package/.dist/kit/matcher/matcher.d.ts.map +0 -1
- package/.dist/kit/matcher/matcher.js +0 -517
- package/.dist/kit/matcher/matcher.js.map +0 -1
- package/.dist/ui/remix/remix.d.ts +0 -73
- package/.dist/ui/remix/remix.d.ts.map +0 -1
- package/.dist/ui/remix/remix.js +0 -409
- package/.dist/ui/remix/remix.js.map +0 -1
- package/kit/lab/design/components/remix/accordion.ts +0 -474
- package/kit/lab/design/components/remix/alert-dialog.ts +0 -512
- package/kit/lab/design/components/remix/alert.ts +0 -213
- package/kit/lab/design/components/remix/aspect-ratio.ts +0 -111
- package/kit/lab/design/components/remix/badge.ts +0 -59
- package/kit/lab/design/components/remix/box.ts +0 -49
- package/kit/lab/design/components/remix/button.ts +0 -314
- package/kit/lab/design/components/remix/callout.ts +0 -127
- package/kit/lab/design/components/remix/checkable-state.ts +0 -187
- package/kit/lab/design/components/remix/checkbox-group.ts +0 -443
- package/kit/lab/design/components/remix/checkbox.ts +0 -215
- package/kit/lab/design/components/remix/chip.ts +0 -165
- package/kit/lab/design/components/remix/code-block.ts +0 -181
- package/kit/lab/design/components/remix/collapsible.ts +0 -325
- package/kit/lab/design/components/remix/component-state.ts +0 -55
- package/kit/lab/design/components/remix/component-style.ts +0 -364
- package/kit/lab/design/components/remix/composite-navigation.ts +0 -71
- package/kit/lab/design/components/remix/conditions.ts +0 -25
- package/kit/lab/design/components/remix/controllable-state.ts +0 -58
- package/kit/lab/design/components/remix/description-list.ts +0 -275
- package/kit/lab/design/components/remix/dialog.ts +0 -653
- package/kit/lab/design/components/remix/empty-state.ts +0 -146
- package/kit/lab/design/components/remix/field.ts +0 -418
- package/kit/lab/design/components/remix/fieldset.ts +0 -153
- package/kit/lab/design/components/remix/form-mirror.ts +0 -94
- package/kit/lab/design/components/remix/form-reset.ts +0 -85
- package/kit/lab/design/components/remix/form.ts +0 -109
- package/kit/lab/design/components/remix/grid.ts +0 -187
- package/kit/lab/design/components/remix/group-label.ts +0 -47
- package/kit/lab/design/components/remix/icon.ts +0 -176
- package/kit/lab/design/components/remix/input.ts +0 -163
- package/kit/lab/design/components/remix/kbd.ts +0 -58
- package/kit/lab/design/components/remix/list.ts +0 -120
- package/kit/lab/design/components/remix/listbox.ts +0 -1116
- package/kit/lab/design/components/remix/menu.ts +0 -1477
- package/kit/lab/design/components/remix/ordered-collection.ts +0 -95
- package/kit/lab/design/components/remix/popover-scroll-lock.ts +0 -89
- package/kit/lab/design/components/remix/popover.ts +0 -576
- package/kit/lab/design/components/remix/popup-behavior.ts +0 -96
- package/kit/lab/design/components/remix/progress.ts +0 -185
- package/kit/lab/design/components/remix/radio-group.ts +0 -420
- package/kit/lab/design/components/remix/recipe.ts +0 -70
- package/kit/lab/design/components/remix/remix.ts +0 -683
- package/kit/lab/design/components/remix/responsive.ts +0 -106
- package/kit/lab/design/components/remix/root.ts +0 -137
- package/kit/lab/design/components/remix/select.ts +0 -1546
- package/kit/lab/design/components/remix/separator.ts +0 -108
- package/kit/lab/design/components/remix/slider.ts +0 -308
- package/kit/lab/design/components/remix/spinner.ts +0 -114
- package/kit/lab/design/components/remix/stack.ts +0 -205
- package/kit/lab/design/components/remix/stat.ts +0 -127
- package/kit/lab/design/components/remix/surface.ts +0 -71
- package/kit/lab/design/components/remix/switch.ts +0 -219
- package/kit/lab/design/components/remix/table.ts +0 -395
- package/kit/lab/design/components/remix/tabs.ts +0 -404
- package/kit/lab/design/components/remix/text.ts +0 -169
- package/kit/lab/design/components/remix/textarea.ts +0 -164
- package/kit/lab/design/components/remix/toast.ts +0 -299
- package/kit/lab/design/components/remix/tooltip.ts +0 -330
- package/kit/lab/design/components/remix/typeahead.ts +0 -81
- package/kit/lab/design/components/remix/types.ts +0 -19
- package/kit/lab/design/components/remix/visually-hidden.ts +0 -100
- package/kit/lab/design/core/color.ts +0 -46
- package/kit/lab/design/core/core.ts +0 -111
- package/kit/lab/design/core/create_primitive.ts +0 -455
- package/kit/lab/design/core/create_system.ts +0 -303
- package/kit/lab/design/core/css.ts +0 -127
- package/kit/lab/design/core/define_system.ts +0 -508
- package/kit/lab/design/core/math.ts +0 -12
- package/kit/lab/design/core/object.ts +0 -31
- package/kit/lab/design/core/recipe/create_recipe.ts +0 -185
- package/kit/lab/design/core/recipe/recipe.ts +0 -26
- package/kit/lab/design/core/recipe/style.ts +0 -62
- package/kit/lab/design/core/recipe/types.ts +0 -160
- package/kit/lab/design/core/resolve_token.ts +0 -118
- package/kit/lab/design/core/types.ts +0 -636
- package/ui/remix/remix.tsx +0 -901
|
Binary file
|
package/.dist/ui/solid/solid.js
CHANGED
|
@@ -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
|
-
|
|
139
|
+
if (idx >= e.length) return "";
|
|
140
|
+
const entry = e[idx];
|
|
141
|
+
return get_entry_key(entry);
|
|
140
142
|
});
|
|
141
|
-
const
|
|
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
|
|
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
|
|
186
|
+
return component_render();
|
|
176
187
|
},
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
188
|
+
keyed: true,
|
|
189
|
+
children: (render) => {
|
|
190
|
+
return createComponent(Dynamic, {
|
|
191
|
+
get component() {
|
|
192
|
+
return render.component;
|
|
181
193
|
},
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
|
208
|
-
return
|
|
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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"}
|
|
Binary file
|
|
@@ -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.
|
|
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/",
|
package/ui/solid/solid.tsx
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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={
|
|
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={
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
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
|
-
|
|
403
|
+
{is_pass_through() ? Outlet() : null}
|
|
385
404
|
|
|
386
|
-
|
|
405
|
+
{error_boundary() ? (
|
|
387
406
|
<Dynamic component={error_boundary()!} error={error_value()} />
|
|
388
|
-
|
|
407
|
+
) : null}
|
|
389
408
|
</>
|
|
390
409
|
);
|
|
391
410
|
}
|