@jsenv/navi 0.29.222 → 0.29.224
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/dev/jsenv_navi.js +204 -49
- package/dist/dev/jsenv_navi.js.map +15 -11
- package/dist/jsenv_navi.js +197 -49
- package/dist/jsenv_navi.js.map +15 -11
- package/docs/AI_INSTRUCTIONS.md +5 -0
- package/docs/css_architecture.md +7 -0
- package/docs/dynamic_import.md +146 -0
- package/docs/navigation.md +3 -1
- package/package.json +2 -2
package/dist/dev/jsenv_navi.js
CHANGED
|
@@ -1632,18 +1632,6 @@ const reportErrorIfNobodyDisplaysIt = (error, { action } = {}) => {
|
|
|
1632
1632
|
});
|
|
1633
1633
|
};
|
|
1634
1634
|
|
|
1635
|
-
const actionPrivatePropertiesWeakMap = new WeakMap();
|
|
1636
|
-
const getActionPrivateProperties = (action) => {
|
|
1637
|
-
const actionPrivateProperties = actionPrivatePropertiesWeakMap.get(action);
|
|
1638
|
-
if (!actionPrivateProperties) {
|
|
1639
|
-
throw new Error(`Cannot find action private properties for "${action}"`);
|
|
1640
|
-
}
|
|
1641
|
-
return actionPrivateProperties;
|
|
1642
|
-
};
|
|
1643
|
-
const setActionPrivateProperties = (action, properties) => {
|
|
1644
|
-
actionPrivatePropertiesWeakMap.set(action, properties);
|
|
1645
|
-
};
|
|
1646
|
-
|
|
1647
1635
|
const IDLE = { id: "idle" };
|
|
1648
1636
|
const RUNNING = { id: "running" };
|
|
1649
1637
|
const ABORTED = { id: "aborted" };
|
|
@@ -1791,19 +1779,7 @@ const ActionRenderer = ({
|
|
|
1791
1779
|
if (aborted) {
|
|
1792
1780
|
return renderAborted(action);
|
|
1793
1781
|
}
|
|
1794
|
-
|
|
1795
|
-
if (renderCompleted) {
|
|
1796
|
-
renderCompletedSafe = renderCompleted;
|
|
1797
|
-
} else {
|
|
1798
|
-
const {
|
|
1799
|
-
ui
|
|
1800
|
-
} = getActionPrivateProperties(action);
|
|
1801
|
-
if (ui.renderCompleted) {
|
|
1802
|
-
renderCompletedSafe = ui.renderCompleted;
|
|
1803
|
-
} else {
|
|
1804
|
-
renderCompletedSafe = renderCompletedDefault;
|
|
1805
|
-
}
|
|
1806
|
-
}
|
|
1782
|
+
const renderCompletedSafe = renderCompleted || renderCompletedDefault;
|
|
1807
1783
|
if (loading) {
|
|
1808
1784
|
if (action.canDisplayOldData && data !== undefined) {
|
|
1809
1785
|
return renderCompletedSafe(data, action);
|
|
@@ -2552,6 +2528,18 @@ const weakEffect = (values, callback) => {
|
|
|
2552
2528
|
return dispose;
|
|
2553
2529
|
};
|
|
2554
2530
|
|
|
2531
|
+
const actionPrivatePropertiesWeakMap = new WeakMap();
|
|
2532
|
+
const getActionPrivateProperties = (action) => {
|
|
2533
|
+
const actionPrivateProperties = actionPrivatePropertiesWeakMap.get(action);
|
|
2534
|
+
if (!actionPrivateProperties) {
|
|
2535
|
+
throw new Error(`Cannot find action private properties for "${action}"`);
|
|
2536
|
+
}
|
|
2537
|
+
return actionPrivateProperties;
|
|
2538
|
+
};
|
|
2539
|
+
const setActionPrivateProperties = (action, properties) => {
|
|
2540
|
+
actionPrivatePropertiesWeakMap.set(action, properties);
|
|
2541
|
+
};
|
|
2542
|
+
|
|
2555
2543
|
const SYMBOL_OBJECT_SIGNAL = Symbol.for("navi_object_signal");
|
|
2556
2544
|
|
|
2557
2545
|
/*
|
|
@@ -3264,7 +3252,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3264
3252
|
data = dataDefault,
|
|
3265
3253
|
|
|
3266
3254
|
completed = false,
|
|
3267
|
-
renderLoadedAsync,
|
|
3268
3255
|
sideEffect = () => {},
|
|
3269
3256
|
meta = {},
|
|
3270
3257
|
|
|
@@ -3669,10 +3656,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3669
3656
|
}
|
|
3670
3657
|
|
|
3671
3658
|
{
|
|
3672
|
-
const ui = {
|
|
3673
|
-
renderLoaded: null,
|
|
3674
|
-
renderLoadedAsync,
|
|
3675
|
-
};
|
|
3676
3659
|
let sideEffectCleanup;
|
|
3677
3660
|
let completeSideEffectCleanup;
|
|
3678
3661
|
|
|
@@ -3869,20 +3852,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3869
3852
|
} else {
|
|
3870
3853
|
runResult = callbackResult;
|
|
3871
3854
|
}
|
|
3872
|
-
if (ui.renderLoadedAsync && !ui.renderLoaded) {
|
|
3873
|
-
const renderLoadedPromise = ui.renderLoadedAsync(...args).then(
|
|
3874
|
-
(renderLoaded) => {
|
|
3875
|
-
ui.renderLoaded = renderLoaded;
|
|
3876
|
-
},
|
|
3877
|
-
(e) => {
|
|
3878
|
-
if (!rejected) {
|
|
3879
|
-
rejected = true;
|
|
3880
|
-
rejectedValue = e;
|
|
3881
|
-
}
|
|
3882
|
-
},
|
|
3883
|
-
);
|
|
3884
|
-
thenableArray.push(renderLoadedPromise);
|
|
3885
|
-
}
|
|
3886
3855
|
if (thenableArray.length === 0) {
|
|
3887
3856
|
return onRunEnd();
|
|
3888
3857
|
}
|
|
@@ -3936,7 +3905,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3936
3905
|
|
|
3937
3906
|
performRun,
|
|
3938
3907
|
performReset,
|
|
3939
|
-
ui,
|
|
3940
3908
|
|
|
3941
3909
|
nameSignal: actionNameSignal,
|
|
3942
3910
|
callSourceSignal: actionCallSourceSignal,
|
|
@@ -4211,10 +4179,8 @@ const createActionProxyFromSignal = (
|
|
|
4211
4179
|
|
|
4212
4180
|
performRun: proxyPrivateMethod("performRun"),
|
|
4213
4181
|
performReset: proxyPrivateMethod("performReset"),
|
|
4214
|
-
ui: currentActionPrivateProperties.ui,
|
|
4215
4182
|
};
|
|
4216
4183
|
onActionTargetChange(() => {
|
|
4217
|
-
proxyPrivateProperties.ui = currentActionPrivateProperties.ui;
|
|
4218
4184
|
proxyPrivateProperties.childActionWeakSet =
|
|
4219
4185
|
currentActionPrivateProperties.childActionWeakSet;
|
|
4220
4186
|
});
|
|
@@ -17690,6 +17656,13 @@ const LoadingFallback = ({
|
|
|
17690
17656
|
useLayoutEffect(() => {
|
|
17691
17657
|
publishRouteRender();
|
|
17692
17658
|
});
|
|
17659
|
+
// A suspension nobody here wrote — preact/compat's lazy(), a promise thrown
|
|
17660
|
+
// by hand: the boundary holds the subtree and has nothing to say about it,
|
|
17661
|
+
// so the fallback is not drawn. Said out loud in dev rather than found by
|
|
17662
|
+
// reading this file; navi's own lazy() is an action and never lands here.
|
|
17663
|
+
if (!action) {
|
|
17664
|
+
console.warn(`<Loading> caught a suspension it cannot attribute to an action, so its fallback is not drawn. For code loaded on demand use lazy() from @jsenv/navi (see docs/dynamic_import.md).`);
|
|
17665
|
+
}
|
|
17693
17666
|
if (loadingRef.current.reason !== "loading") {
|
|
17694
17667
|
return null;
|
|
17695
17668
|
}
|
|
@@ -17806,6 +17779,86 @@ const ErrorBoundary = ({
|
|
|
17806
17779
|
return children;
|
|
17807
17780
|
};
|
|
17808
17781
|
|
|
17782
|
+
/**
|
|
17783
|
+
* A component whose code is fetched on demand, the way its data is.
|
|
17784
|
+
*
|
|
17785
|
+
* The import is an action: it starts from the first render that needs it (or
|
|
17786
|
+
* from `preload()`), waits in the nearest `<Loading>`, fails in the nearest
|
|
17787
|
+
* `<ErrorBoundary>` with a `rerun` as the way back, and is counted by the
|
|
17788
|
+
* document busy signal like any other run. A page under `<Route>` therefore
|
|
17789
|
+
* fetches its code and its route action's data side by side, and shows one
|
|
17790
|
+
* wait for the two. See docs/dynamic_import.md.
|
|
17791
|
+
*/
|
|
17792
|
+
|
|
17793
|
+
|
|
17794
|
+
/**
|
|
17795
|
+
* @param {() => Promise<Function | object>} load - what fetches the code,
|
|
17796
|
+
* typically `() => import("./page.jsx")`. May resolve to the component
|
|
17797
|
+
* itself or to the module: its `default` export, or its only exported
|
|
17798
|
+
* function.
|
|
17799
|
+
* @returns {Function & { preload: () => void, action: object }} the component,
|
|
17800
|
+
* rendering the loaded one with its props. `preload()` starts the fetch ahead
|
|
17801
|
+
* of the render — on a link hovered, on an idle moment; a prefetch that fails
|
|
17802
|
+
* is forgotten, the visit asks again.
|
|
17803
|
+
*/
|
|
17804
|
+
const lazy = load => {
|
|
17805
|
+
const loadAction = createAction(async () => {
|
|
17806
|
+
const loaded = await load();
|
|
17807
|
+
return resolveComponent(loaded);
|
|
17808
|
+
}, {
|
|
17809
|
+
name: nameFromLoader(load)
|
|
17810
|
+
});
|
|
17811
|
+
const Lazy = props => {
|
|
17812
|
+
const [Component] = useAsyncData(loadAction, {
|
|
17813
|
+
run: true
|
|
17814
|
+
});
|
|
17815
|
+
return h(Component, props);
|
|
17816
|
+
};
|
|
17817
|
+
Lazy.displayName = `Lazy(${loadAction.name})`;
|
|
17818
|
+
Lazy.action = loadAction;
|
|
17819
|
+
// A prefetch is a prerun: nothing on screen asked for it. One that fails is
|
|
17820
|
+
// forgotten rather than reported — the visit that needs the code asks again
|
|
17821
|
+
// and shows its own failure; a boundary already showing this one keeps it
|
|
17822
|
+
// until the retry runs.
|
|
17823
|
+
Lazy.preload = () => {
|
|
17824
|
+
const prerunResult = loadAction.prerun({
|
|
17825
|
+
reason: "preload"
|
|
17826
|
+
});
|
|
17827
|
+
// A run already in flight or done answers with nothing to wait for.
|
|
17828
|
+
if (prerunResult && typeof prerunResult.catch === "function") {
|
|
17829
|
+
prerunResult.catch(() => {
|
|
17830
|
+
loadAction.reset({
|
|
17831
|
+
reason: "preload failed"
|
|
17832
|
+
});
|
|
17833
|
+
});
|
|
17834
|
+
}
|
|
17835
|
+
};
|
|
17836
|
+
return Lazy;
|
|
17837
|
+
};
|
|
17838
|
+
const resolveComponent = loaded => {
|
|
17839
|
+
if (typeof loaded === "function") {
|
|
17840
|
+
return loaded;
|
|
17841
|
+
}
|
|
17842
|
+
if (loaded && typeof loaded === "object") {
|
|
17843
|
+
if (typeof loaded.default === "function") {
|
|
17844
|
+
return loaded.default;
|
|
17845
|
+
}
|
|
17846
|
+
const functionExportNames = Object.keys(loaded).filter(key => typeof loaded[key] === "function");
|
|
17847
|
+
if (functionExportNames.length === 1) {
|
|
17848
|
+
return loaded[functionExportNames[0]];
|
|
17849
|
+
}
|
|
17850
|
+
throw new Error(`lazy(): the module must export one component, found ${functionExportNames.length} (${functionExportNames.join(", ") || "none"}). Return the component from the loader to say which.`);
|
|
17851
|
+
}
|
|
17852
|
+
throw new Error(`lazy(): expected a component or a module, got ${loaded}`);
|
|
17853
|
+
};
|
|
17854
|
+
|
|
17855
|
+
// The specifier read off the loader's source, so the action (and the busy
|
|
17856
|
+
// signal, and the debug output) says which page is being fetched.
|
|
17857
|
+
const nameFromLoader = load => {
|
|
17858
|
+
const match = /import\(\s*["']([^"']+)["']/.exec(String(load));
|
|
17859
|
+
return match ? `import ${match[1]}` : "lazy";
|
|
17860
|
+
};
|
|
17861
|
+
|
|
17809
17862
|
/**
|
|
17810
17863
|
* Creates a function that generates abort signals, automatically cancelling previous requests.
|
|
17811
17864
|
*
|
|
@@ -25014,11 +25067,26 @@ const route = (
|
|
|
25014
25067
|
matchesParams: undefined,
|
|
25015
25068
|
navTo: undefined,
|
|
25016
25069
|
redirectTo: undefined,
|
|
25070
|
+
preload: undefined,
|
|
25017
25071
|
subscribeStatus,
|
|
25018
25072
|
toString: () => {
|
|
25019
25073
|
return `route "${cleanPattern}"`;
|
|
25020
25074
|
},
|
|
25021
25075
|
};
|
|
25076
|
+
// What fetches the code of this route ahead of the render — the lazy
|
|
25077
|
+
// elements the routers on screen have registered for it (see
|
|
25078
|
+
// registerRoutePreload). Code only: the data is the route action's, asked
|
|
25079
|
+
// for on arrival with the params the address holds, and a prefetch has no
|
|
25080
|
+
// address yet.
|
|
25081
|
+
route.preload = () => {
|
|
25082
|
+
const preloadSet = routePreloadMap.get(route);
|
|
25083
|
+
if (!preloadSet) {
|
|
25084
|
+
return;
|
|
25085
|
+
}
|
|
25086
|
+
for (const preload of preloadSet) {
|
|
25087
|
+
preload();
|
|
25088
|
+
}
|
|
25089
|
+
};
|
|
25022
25090
|
Object.preventExtensions(route);
|
|
25023
25091
|
|
|
25024
25092
|
// route private props
|
|
@@ -25490,6 +25558,34 @@ const paramsTargetCanPlace = (redirectRoute, urlParams) => {
|
|
|
25490
25558
|
};
|
|
25491
25559
|
|
|
25492
25560
|
let setupRoutesCalled = false;
|
|
25561
|
+
let activeRouteSet = null;
|
|
25562
|
+
|
|
25563
|
+
const routePreloadMap = new WeakMap();
|
|
25564
|
+
const registerRoutePreload = (route, preload) => {
|
|
25565
|
+
let preloadSet = routePreloadMap.get(route);
|
|
25566
|
+
if (!preloadSet) {
|
|
25567
|
+
preloadSet = new Set();
|
|
25568
|
+
routePreloadMap.set(route, preloadSet);
|
|
25569
|
+
}
|
|
25570
|
+
preloadSet.add(preload);
|
|
25571
|
+
};
|
|
25572
|
+
/**
|
|
25573
|
+
* Fetches the code of every route the url leads to, a section and the page
|
|
25574
|
+
* inside it alike. What a link does when the pointer or the focus reaches it
|
|
25575
|
+
* (see use_preload_on_intent.js), available to anything else that knows where
|
|
25576
|
+
* it is about to go.
|
|
25577
|
+
*/
|
|
25578
|
+
const preloadUrl = (url) => {
|
|
25579
|
+
if (!activeRouteSet) {
|
|
25580
|
+
return;
|
|
25581
|
+
}
|
|
25582
|
+
for (const route of activeRouteSet) {
|
|
25583
|
+
const { routePattern } = getRoutePrivateProperties(route);
|
|
25584
|
+
if (routePattern.applyOn(url)) {
|
|
25585
|
+
route.preload();
|
|
25586
|
+
}
|
|
25587
|
+
}
|
|
25588
|
+
};
|
|
25493
25589
|
const setupRoutes = (routes) => {
|
|
25494
25590
|
if (setupRoutesCalled) {
|
|
25495
25591
|
throw new Error(
|
|
@@ -25501,6 +25597,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25501
25597
|
setupRoutesCalled = true;
|
|
25502
25598
|
|
|
25503
25599
|
const routeSet = new Set();
|
|
25600
|
+
activeRouteSet = routeSet;
|
|
25504
25601
|
let currentUrl = null;
|
|
25505
25602
|
const getUrl = () => currentUrl;
|
|
25506
25603
|
// PHASE 1: Setup patterns with unified objects (includes all relationships and signal connections)
|
|
@@ -25793,6 +25890,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25793
25890
|
routeSet.clear();
|
|
25794
25891
|
redirectingRouteSet = null;
|
|
25795
25892
|
setupRoutesCalled = false;
|
|
25893
|
+
activeRouteSet = null;
|
|
25796
25894
|
};
|
|
25797
25895
|
return {
|
|
25798
25896
|
updateRoutes,
|
|
@@ -27514,8 +27612,12 @@ const collectBranches = children => {
|
|
|
27514
27612
|
children: nodeChildren,
|
|
27515
27613
|
fallback,
|
|
27516
27614
|
route,
|
|
27517
|
-
routeParams
|
|
27615
|
+
routeParams,
|
|
27616
|
+
element
|
|
27518
27617
|
} = child.props;
|
|
27618
|
+
if (route) {
|
|
27619
|
+
registerElementPreload(route, element);
|
|
27620
|
+
}
|
|
27519
27621
|
if (nodeChildren) {
|
|
27520
27622
|
const {
|
|
27521
27623
|
matchingBranch: matchingChild
|
|
@@ -27565,6 +27667,17 @@ const collectBranches = children => {
|
|
|
27565
27667
|
activeBranch
|
|
27566
27668
|
};
|
|
27567
27669
|
};
|
|
27670
|
+
// A branch whose element fetches its code on demand (see lazy.jsx) tells its
|
|
27671
|
+
// route, so that intent on a link to that route — or `route.preload()` — can
|
|
27672
|
+
// fetch it ahead of the render. Read off the vnode the container walks, which
|
|
27673
|
+
// is why a router on screen is what knows: a section's sub-pages register when
|
|
27674
|
+
// the section renders its own router.
|
|
27675
|
+
const registerElementPreload = (route, element) => {
|
|
27676
|
+
const type = element && element.type ? element.type : element;
|
|
27677
|
+
if (type && typeof type.preload === "function") {
|
|
27678
|
+
registerRoutePreload(route, type.preload);
|
|
27679
|
+
}
|
|
27680
|
+
};
|
|
27568
27681
|
const wrapBranch = (branch, wrapper) => {
|
|
27569
27682
|
return {
|
|
27570
27683
|
...branch,
|
|
@@ -41199,6 +41312,33 @@ const Icon = ({
|
|
|
41199
41312
|
});
|
|
41200
41313
|
};
|
|
41201
41314
|
|
|
41315
|
+
/**
|
|
41316
|
+
* The code of where a link leads, fetched when the pointer or the focus
|
|
41317
|
+
* arrives on it: the moment the user signals a destination, before the press.
|
|
41318
|
+
* Only code is fetched (see route.preload), so a link whose address is not the
|
|
41319
|
+
* final one — an id still to be chosen — loses nothing by asking.
|
|
41320
|
+
*/
|
|
41321
|
+
const usePreloadOnIntent = (ref, href, prefetch = true) => {
|
|
41322
|
+
useEffect(() => {
|
|
41323
|
+
if (!prefetch || !href) {
|
|
41324
|
+
return undefined;
|
|
41325
|
+
}
|
|
41326
|
+
const element = ref.current;
|
|
41327
|
+
if (!element) {
|
|
41328
|
+
return undefined;
|
|
41329
|
+
}
|
|
41330
|
+
const preload = () => {
|
|
41331
|
+
preloadUrl(href);
|
|
41332
|
+
};
|
|
41333
|
+
element.addEventListener("pointerenter", preload);
|
|
41334
|
+
element.addEventListener("focusin", preload);
|
|
41335
|
+
return () => {
|
|
41336
|
+
element.removeEventListener("pointerenter", preload);
|
|
41337
|
+
element.removeEventListener("focusin", preload);
|
|
41338
|
+
};
|
|
41339
|
+
}, [ref, href, prefetch]);
|
|
41340
|
+
};
|
|
41341
|
+
|
|
41202
41342
|
/**
|
|
41203
41343
|
* Hook that reactively checks if a URL is visited.
|
|
41204
41344
|
* Re-renders when the visited URL set changes.
|
|
@@ -41708,6 +41848,10 @@ Object.assign(PSEUDO_CLASSES, {
|
|
|
41708
41848
|
* way there changes. What a row of tabs wants — the neighbour is a lateral
|
|
41709
41849
|
* move, not a step deeper, so the whole row weighs one entry and the back
|
|
41710
41850
|
* button leaves by where the reader came in.
|
|
41851
|
+
* @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
|
|
41852
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
41853
|
+
* docs/dynamic_import.md). Code only: the data stays the route action's.
|
|
41854
|
+
* `false` for a destination not worth fetching on a hover.
|
|
41711
41855
|
* @param {string} [props.command] - What the press asks of a control around
|
|
41712
41856
|
* the link — `"--navi-close"` on a link that leaves the sheet it is in.
|
|
41713
41857
|
* Triggered on the press, before the navigation.
|
|
@@ -41813,11 +41957,13 @@ const LinkPlain = props => {
|
|
|
41813
41957
|
routeTransition,
|
|
41814
41958
|
pressableDuringRouteTransition,
|
|
41815
41959
|
replace,
|
|
41960
|
+
prefetch = true,
|
|
41816
41961
|
children
|
|
41817
41962
|
} = props;
|
|
41818
41963
|
if (anchor && !props.id) {
|
|
41819
41964
|
props.id = href.slice(1);
|
|
41820
41965
|
}
|
|
41966
|
+
usePreloadOnIntent(props.ref, href, prefetch);
|
|
41821
41967
|
const selectionContext = useContext(SelectionContext);
|
|
41822
41968
|
const nav = useContext(NavContext);
|
|
41823
41969
|
const visited = useIsVisited(href);
|
|
@@ -41985,6 +42131,7 @@ const LinkPlain = props => {
|
|
|
41985
42131
|
routeTransition: undefined,
|
|
41986
42132
|
pressableDuringRouteTransition: undefined,
|
|
41987
42133
|
replace: undefined,
|
|
42134
|
+
prefetch: undefined,
|
|
41988
42135
|
"data-navi-route-transition-request": routeTransitionRequest,
|
|
41989
42136
|
...(pressableDuringRouteTransition ? {
|
|
41990
42137
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
@@ -47910,6 +48057,7 @@ const ButtonUI = props => {
|
|
|
47910
48057
|
rel,
|
|
47911
48058
|
replace,
|
|
47912
48059
|
pressableDuringRouteTransition,
|
|
48060
|
+
prefetch = true,
|
|
47913
48061
|
// visual
|
|
47914
48062
|
variant,
|
|
47915
48063
|
pressEffect,
|
|
@@ -47968,6 +48116,7 @@ const ButtonUI = props => {
|
|
|
47968
48116
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
47969
48117
|
} : null;
|
|
47970
48118
|
const visualSelector = ".navi_button_content";
|
|
48119
|
+
usePreloadOnIntent(ref, href, prefetch);
|
|
47971
48120
|
useAccentColorAttributes(ref, null, {
|
|
47972
48121
|
elementSelector: visualSelector
|
|
47973
48122
|
});
|
|
@@ -47997,8 +48146,10 @@ const ButtonUI = props => {
|
|
|
47997
48146
|
...replaceRequest,
|
|
47998
48147
|
pressableDuringRouteTransition: undefined,
|
|
47999
48148
|
...pressableRequest,
|
|
48149
|
+
prefetch: undefined
|
|
48000
48150
|
// Respond with the JS prop value directly so callers (e.g. resolveCommandValue)
|
|
48001
48151
|
// get the original type instead of the DOM-coerced string (e.g. "[object Object]").
|
|
48152
|
+
,
|
|
48002
48153
|
onnavi_get_value: e => {
|
|
48003
48154
|
e.detail.respondWith(props.value);
|
|
48004
48155
|
},
|
|
@@ -48227,6 +48378,10 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
|
|
|
48227
48378
|
* `--navi-nav-to` command — by TAKING THE PLACE of the current history entry
|
|
48228
48379
|
* rather than stacking on it: what `<Link replace>` says, for a press drawn
|
|
48229
48380
|
* as a button.
|
|
48381
|
+
* @param {boolean} [prefetch=true] Fetch the code of where this leads when the
|
|
48382
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
48383
|
+
* docs/dynamic_import.md). Code only: the data stays the route action's.
|
|
48384
|
+
* `false` for a destination not worth fetching on a hover.
|
|
48230
48385
|
* @param {boolean} [pressableDuringRouteTransition] Keep answering presses
|
|
48231
48386
|
* while a route transition plays: what a movement photographs goes deaf to
|
|
48232
48387
|
* the pointer for its whole length, and the door that opened the page — a
|
|
@@ -83743,5 +83898,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
83743
83898
|
})
|
|
83744
83899
|
});
|
|
83745
83900
|
|
|
83746
|
-
export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, CalloutStatusIcon, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, ControlSwap, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, Expandable, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, InfoSvg, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, OfflineError, Paragraph, Picker, Popover, Popup, Quantity, RadioGroup, Route, RouteTransitionArea, RouteTravel, RowNumberCol, RowNumberTableCell, SVGMaskOverlay, SearchSvg, Select, SelectableInput, SelectionContext, Separator, SettingsSvg, SidePanel, Slide, SlideContainer, Spin, SpinGroup, SplitButton, StarSvg, Step, StepList, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRange, TimeRangeSpin, TimeRangeWheel, TimeSpin, TimeWheel, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, canNavBackSignal, canNavForwardSignal, coarsePointerSignal, compareTwoJsValues, constraintFromValidityRule, createAction, createAvailableConstraint, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, dispatchRequestSetUIState, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, getNowHours, getNowHoursRoundedToStep, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markAsOutsideTextFlow, markErrorAsDisplayedBy, moveArrayItemByIndex, moveFocusTo, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setNetworkPolicy, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutElement, useCalloutRequestClose, useCanNavBack, useCanNavForward, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useNetworkPolicyReason, useOrderedColumns, usePopupMode, useRouteStatus, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideContainer, useSlideValue, useStateArray, useTitleLevel, useTransitionCover, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
83901
|
+
export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, CalloutStatusIcon, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, ControlSwap, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, Expandable, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, InfoSvg, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, OfflineError, Paragraph, Picker, Popover, Popup, Quantity, RadioGroup, Route, RouteTransitionArea, RouteTravel, RowNumberCol, RowNumberTableCell, SVGMaskOverlay, SearchSvg, Select, SelectableInput, SelectionContext, Separator, SettingsSvg, SidePanel, Slide, SlideContainer, Spin, SpinGroup, SplitButton, StarSvg, Step, StepList, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRange, TimeRangeSpin, TimeRangeWheel, TimeSpin, TimeWheel, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, canNavBackSignal, canNavForwardSignal, coarsePointerSignal, compareTwoJsValues, constraintFromValidityRule, createAction, createAvailableConstraint, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, dispatchRequestSetUIState, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, getNowHours, getNowHoursRoundedToStep, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, lazy, localStorageSignal, markAsOutsideTextFlow, markErrorAsDisplayedBy, moveArrayItemByIndex, moveFocusTo, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, preloadUrl, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setNetworkPolicy, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutElement, useCalloutRequestClose, useCanNavBack, useCanNavForward, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useNetworkPolicyReason, useOrderedColumns, usePopupMode, useRouteStatus, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideContainer, useSlideValue, useStateArray, useTitleLevel, useTransitionCover, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
83747
83902
|
//# sourceMappingURL=jsenv_navi.js.map
|