@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/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
|
/*
|
|
@@ -3204,7 +3192,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3204
3192
|
data = dataDefault,
|
|
3205
3193
|
|
|
3206
3194
|
completed = false,
|
|
3207
|
-
renderLoadedAsync,
|
|
3208
3195
|
sideEffect = () => {},
|
|
3209
3196
|
meta = {},
|
|
3210
3197
|
|
|
@@ -3609,10 +3596,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3609
3596
|
}
|
|
3610
3597
|
|
|
3611
3598
|
{
|
|
3612
|
-
const ui = {
|
|
3613
|
-
renderLoaded: null,
|
|
3614
|
-
renderLoadedAsync,
|
|
3615
|
-
};
|
|
3616
3599
|
let sideEffectCleanup;
|
|
3617
3600
|
let completeSideEffectCleanup;
|
|
3618
3601
|
|
|
@@ -3809,20 +3792,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3809
3792
|
} else {
|
|
3810
3793
|
runResult = callbackResult;
|
|
3811
3794
|
}
|
|
3812
|
-
if (ui.renderLoadedAsync && !ui.renderLoaded) {
|
|
3813
|
-
const renderLoadedPromise = ui.renderLoadedAsync(...args).then(
|
|
3814
|
-
(renderLoaded) => {
|
|
3815
|
-
ui.renderLoaded = renderLoaded;
|
|
3816
|
-
},
|
|
3817
|
-
(e) => {
|
|
3818
|
-
if (!rejected) {
|
|
3819
|
-
rejected = true;
|
|
3820
|
-
rejectedValue = e;
|
|
3821
|
-
}
|
|
3822
|
-
},
|
|
3823
|
-
);
|
|
3824
|
-
thenableArray.push(renderLoadedPromise);
|
|
3825
|
-
}
|
|
3826
3795
|
if (thenableArray.length === 0) {
|
|
3827
3796
|
return onRunEnd();
|
|
3828
3797
|
}
|
|
@@ -3876,7 +3845,6 @@ const createAction = (callback, rootOptions = {}) => {
|
|
|
3876
3845
|
|
|
3877
3846
|
performRun,
|
|
3878
3847
|
performReset,
|
|
3879
|
-
ui,
|
|
3880
3848
|
|
|
3881
3849
|
nameSignal: actionNameSignal,
|
|
3882
3850
|
callSourceSignal: actionCallSourceSignal,
|
|
@@ -4151,10 +4119,8 @@ const createActionProxyFromSignal = (
|
|
|
4151
4119
|
|
|
4152
4120
|
performRun: proxyPrivateMethod("performRun"),
|
|
4153
4121
|
performReset: proxyPrivateMethod("performReset"),
|
|
4154
|
-
ui: currentActionPrivateProperties.ui,
|
|
4155
4122
|
};
|
|
4156
4123
|
onActionTargetChange(() => {
|
|
4157
|
-
proxyPrivateProperties.ui = currentActionPrivateProperties.ui;
|
|
4158
4124
|
proxyPrivateProperties.childActionWeakSet =
|
|
4159
4125
|
currentActionPrivateProperties.childActionWeakSet;
|
|
4160
4126
|
});
|
|
@@ -17536,6 +17502,86 @@ const ErrorBoundary = ({
|
|
|
17536
17502
|
return children;
|
|
17537
17503
|
};
|
|
17538
17504
|
|
|
17505
|
+
/**
|
|
17506
|
+
* A component whose code is fetched on demand, the way its data is.
|
|
17507
|
+
*
|
|
17508
|
+
* The import is an action: it starts from the first render that needs it (or
|
|
17509
|
+
* from `preload()`), waits in the nearest `<Loading>`, fails in the nearest
|
|
17510
|
+
* `<ErrorBoundary>` with a `rerun` as the way back, and is counted by the
|
|
17511
|
+
* document busy signal like any other run. A page under `<Route>` therefore
|
|
17512
|
+
* fetches its code and its route action's data side by side, and shows one
|
|
17513
|
+
* wait for the two. See docs/dynamic_import.md.
|
|
17514
|
+
*/
|
|
17515
|
+
|
|
17516
|
+
|
|
17517
|
+
/**
|
|
17518
|
+
* @param {() => Promise<Function | object>} load - what fetches the code,
|
|
17519
|
+
* typically `() => import("./page.jsx")`. May resolve to the component
|
|
17520
|
+
* itself or to the module: its `default` export, or its only exported
|
|
17521
|
+
* function.
|
|
17522
|
+
* @returns {Function & { preload: () => void, action: object }} the component,
|
|
17523
|
+
* rendering the loaded one with its props. `preload()` starts the fetch ahead
|
|
17524
|
+
* of the render — on a link hovered, on an idle moment; a prefetch that fails
|
|
17525
|
+
* is forgotten, the visit asks again.
|
|
17526
|
+
*/
|
|
17527
|
+
const lazy = load => {
|
|
17528
|
+
const loadAction = createAction(async () => {
|
|
17529
|
+
const loaded = await load();
|
|
17530
|
+
return resolveComponent(loaded);
|
|
17531
|
+
}, {
|
|
17532
|
+
name: nameFromLoader(load)
|
|
17533
|
+
});
|
|
17534
|
+
const Lazy = props => {
|
|
17535
|
+
const [Component] = useAsyncData(loadAction, {
|
|
17536
|
+
run: true
|
|
17537
|
+
});
|
|
17538
|
+
return h(Component, props);
|
|
17539
|
+
};
|
|
17540
|
+
Lazy.displayName = `Lazy(${loadAction.name})`;
|
|
17541
|
+
Lazy.action = loadAction;
|
|
17542
|
+
// A prefetch is a prerun: nothing on screen asked for it. One that fails is
|
|
17543
|
+
// forgotten rather than reported — the visit that needs the code asks again
|
|
17544
|
+
// and shows its own failure; a boundary already showing this one keeps it
|
|
17545
|
+
// until the retry runs.
|
|
17546
|
+
Lazy.preload = () => {
|
|
17547
|
+
const prerunResult = loadAction.prerun({
|
|
17548
|
+
reason: "preload"
|
|
17549
|
+
});
|
|
17550
|
+
// A run already in flight or done answers with nothing to wait for.
|
|
17551
|
+
if (prerunResult && typeof prerunResult.catch === "function") {
|
|
17552
|
+
prerunResult.catch(() => {
|
|
17553
|
+
loadAction.reset({
|
|
17554
|
+
reason: "preload failed"
|
|
17555
|
+
});
|
|
17556
|
+
});
|
|
17557
|
+
}
|
|
17558
|
+
};
|
|
17559
|
+
return Lazy;
|
|
17560
|
+
};
|
|
17561
|
+
const resolveComponent = loaded => {
|
|
17562
|
+
if (typeof loaded === "function") {
|
|
17563
|
+
return loaded;
|
|
17564
|
+
}
|
|
17565
|
+
if (loaded && typeof loaded === "object") {
|
|
17566
|
+
if (typeof loaded.default === "function") {
|
|
17567
|
+
return loaded.default;
|
|
17568
|
+
}
|
|
17569
|
+
const functionExportNames = Object.keys(loaded).filter(key => typeof loaded[key] === "function");
|
|
17570
|
+
if (functionExportNames.length === 1) {
|
|
17571
|
+
return loaded[functionExportNames[0]];
|
|
17572
|
+
}
|
|
17573
|
+
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.`);
|
|
17574
|
+
}
|
|
17575
|
+
throw new Error(`lazy(): expected a component or a module, got ${loaded}`);
|
|
17576
|
+
};
|
|
17577
|
+
|
|
17578
|
+
// The specifier read off the loader's source, so the action (and the busy
|
|
17579
|
+
// signal, and the debug output) says which page is being fetched.
|
|
17580
|
+
const nameFromLoader = load => {
|
|
17581
|
+
const match = /import\(\s*["']([^"']+)["']/.exec(String(load));
|
|
17582
|
+
return match ? `import ${match[1]}` : "lazy";
|
|
17583
|
+
};
|
|
17584
|
+
|
|
17539
17585
|
/**
|
|
17540
17586
|
* Creates a function that generates abort signals, automatically cancelling previous requests.
|
|
17541
17587
|
*
|
|
@@ -24688,11 +24734,26 @@ const route = (
|
|
|
24688
24734
|
matchesParams: undefined,
|
|
24689
24735
|
navTo: undefined,
|
|
24690
24736
|
redirectTo: undefined,
|
|
24737
|
+
preload: undefined,
|
|
24691
24738
|
subscribeStatus,
|
|
24692
24739
|
toString: () => {
|
|
24693
24740
|
return `route "${cleanPattern}"`;
|
|
24694
24741
|
},
|
|
24695
24742
|
};
|
|
24743
|
+
// What fetches the code of this route ahead of the render — the lazy
|
|
24744
|
+
// elements the routers on screen have registered for it (see
|
|
24745
|
+
// registerRoutePreload). Code only: the data is the route action's, asked
|
|
24746
|
+
// for on arrival with the params the address holds, and a prefetch has no
|
|
24747
|
+
// address yet.
|
|
24748
|
+
route.preload = () => {
|
|
24749
|
+
const preloadSet = routePreloadMap.get(route);
|
|
24750
|
+
if (!preloadSet) {
|
|
24751
|
+
return;
|
|
24752
|
+
}
|
|
24753
|
+
for (const preload of preloadSet) {
|
|
24754
|
+
preload();
|
|
24755
|
+
}
|
|
24756
|
+
};
|
|
24696
24757
|
Object.preventExtensions(route);
|
|
24697
24758
|
|
|
24698
24759
|
// route private props
|
|
@@ -25151,6 +25212,34 @@ const paramsTargetCanPlace = (redirectRoute, urlParams) => {
|
|
|
25151
25212
|
};
|
|
25152
25213
|
|
|
25153
25214
|
let setupRoutesCalled = false;
|
|
25215
|
+
let activeRouteSet = null;
|
|
25216
|
+
|
|
25217
|
+
const routePreloadMap = new WeakMap();
|
|
25218
|
+
const registerRoutePreload = (route, preload) => {
|
|
25219
|
+
let preloadSet = routePreloadMap.get(route);
|
|
25220
|
+
if (!preloadSet) {
|
|
25221
|
+
preloadSet = new Set();
|
|
25222
|
+
routePreloadMap.set(route, preloadSet);
|
|
25223
|
+
}
|
|
25224
|
+
preloadSet.add(preload);
|
|
25225
|
+
};
|
|
25226
|
+
/**
|
|
25227
|
+
* Fetches the code of every route the url leads to, a section and the page
|
|
25228
|
+
* inside it alike. What a link does when the pointer or the focus reaches it
|
|
25229
|
+
* (see use_preload_on_intent.js), available to anything else that knows where
|
|
25230
|
+
* it is about to go.
|
|
25231
|
+
*/
|
|
25232
|
+
const preloadUrl = (url) => {
|
|
25233
|
+
if (!activeRouteSet) {
|
|
25234
|
+
return;
|
|
25235
|
+
}
|
|
25236
|
+
for (const route of activeRouteSet) {
|
|
25237
|
+
const { routePattern } = getRoutePrivateProperties(route);
|
|
25238
|
+
if (routePattern.applyOn(url)) {
|
|
25239
|
+
route.preload();
|
|
25240
|
+
}
|
|
25241
|
+
}
|
|
25242
|
+
};
|
|
25154
25243
|
const setupRoutes = (routes) => {
|
|
25155
25244
|
if (setupRoutesCalled) {
|
|
25156
25245
|
throw new Error(
|
|
@@ -25162,6 +25251,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25162
25251
|
setupRoutesCalled = true;
|
|
25163
25252
|
|
|
25164
25253
|
const routeSet = new Set();
|
|
25254
|
+
activeRouteSet = routeSet;
|
|
25165
25255
|
let currentUrl = null;
|
|
25166
25256
|
const getUrl = () => currentUrl;
|
|
25167
25257
|
// PHASE 1: Setup patterns with unified objects (includes all relationships and signal connections)
|
|
@@ -25454,6 +25544,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25454
25544
|
routeSet.clear();
|
|
25455
25545
|
redirectingRouteSet = null;
|
|
25456
25546
|
setupRoutesCalled = false;
|
|
25547
|
+
activeRouteSet = null;
|
|
25457
25548
|
};
|
|
25458
25549
|
return {
|
|
25459
25550
|
updateRoutes,
|
|
@@ -27118,8 +27209,12 @@ const collectBranches = children => {
|
|
|
27118
27209
|
children: nodeChildren,
|
|
27119
27210
|
fallback,
|
|
27120
27211
|
route,
|
|
27121
|
-
routeParams
|
|
27212
|
+
routeParams,
|
|
27213
|
+
element
|
|
27122
27214
|
} = child.props;
|
|
27215
|
+
if (route) {
|
|
27216
|
+
registerElementPreload(route, element);
|
|
27217
|
+
}
|
|
27123
27218
|
if (nodeChildren) {
|
|
27124
27219
|
const {
|
|
27125
27220
|
matchingBranch: matchingChild
|
|
@@ -27169,6 +27264,17 @@ const collectBranches = children => {
|
|
|
27169
27264
|
activeBranch
|
|
27170
27265
|
};
|
|
27171
27266
|
};
|
|
27267
|
+
// A branch whose element fetches its code on demand (see lazy.jsx) tells its
|
|
27268
|
+
// route, so that intent on a link to that route — or `route.preload()` — can
|
|
27269
|
+
// fetch it ahead of the render. Read off the vnode the container walks, which
|
|
27270
|
+
// is why a router on screen is what knows: a section's sub-pages register when
|
|
27271
|
+
// the section renders its own router.
|
|
27272
|
+
const registerElementPreload = (route, element) => {
|
|
27273
|
+
const type = element && element.type ? element.type : element;
|
|
27274
|
+
if (type && typeof type.preload === "function") {
|
|
27275
|
+
registerRoutePreload(route, type.preload);
|
|
27276
|
+
}
|
|
27277
|
+
};
|
|
27172
27278
|
const wrapBranch = (branch, wrapper) => {
|
|
27173
27279
|
return {
|
|
27174
27280
|
...branch,
|
|
@@ -40641,6 +40747,33 @@ const Icon = ({
|
|
|
40641
40747
|
});
|
|
40642
40748
|
};
|
|
40643
40749
|
|
|
40750
|
+
/**
|
|
40751
|
+
* The code of where a link leads, fetched when the pointer or the focus
|
|
40752
|
+
* arrives on it: the moment the user signals a destination, before the press.
|
|
40753
|
+
* Only code is fetched (see route.preload), so a link whose address is not the
|
|
40754
|
+
* final one — an id still to be chosen — loses nothing by asking.
|
|
40755
|
+
*/
|
|
40756
|
+
const usePreloadOnIntent = (ref, href, prefetch = true) => {
|
|
40757
|
+
useEffect(() => {
|
|
40758
|
+
if (!prefetch || !href) {
|
|
40759
|
+
return undefined;
|
|
40760
|
+
}
|
|
40761
|
+
const element = ref.current;
|
|
40762
|
+
if (!element) {
|
|
40763
|
+
return undefined;
|
|
40764
|
+
}
|
|
40765
|
+
const preload = () => {
|
|
40766
|
+
preloadUrl(href);
|
|
40767
|
+
};
|
|
40768
|
+
element.addEventListener("pointerenter", preload);
|
|
40769
|
+
element.addEventListener("focusin", preload);
|
|
40770
|
+
return () => {
|
|
40771
|
+
element.removeEventListener("pointerenter", preload);
|
|
40772
|
+
element.removeEventListener("focusin", preload);
|
|
40773
|
+
};
|
|
40774
|
+
}, [ref, href, prefetch]);
|
|
40775
|
+
};
|
|
40776
|
+
|
|
40644
40777
|
/**
|
|
40645
40778
|
* Hook that reactively checks if a URL is visited.
|
|
40646
40779
|
* Re-renders when the visited URL set changes.
|
|
@@ -41150,6 +41283,10 @@ Object.assign(PSEUDO_CLASSES, {
|
|
|
41150
41283
|
* way there changes. What a row of tabs wants — the neighbour is a lateral
|
|
41151
41284
|
* move, not a step deeper, so the whole row weighs one entry and the back
|
|
41152
41285
|
* button leaves by where the reader came in.
|
|
41286
|
+
* @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
|
|
41287
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
41288
|
+
* docs/dynamic_import.md). Code only: the data stays the route action's.
|
|
41289
|
+
* `false` for a destination not worth fetching on a hover.
|
|
41153
41290
|
* @param {string} [props.command] - What the press asks of a control around
|
|
41154
41291
|
* the link — `"--navi-close"` on a link that leaves the sheet it is in.
|
|
41155
41292
|
* Triggered on the press, before the navigation.
|
|
@@ -41246,11 +41383,13 @@ const LinkPlain = props => {
|
|
|
41246
41383
|
routeTransition,
|
|
41247
41384
|
pressableDuringRouteTransition,
|
|
41248
41385
|
replace,
|
|
41386
|
+
prefetch = true,
|
|
41249
41387
|
children
|
|
41250
41388
|
} = props;
|
|
41251
41389
|
if (anchor && !props.id) {
|
|
41252
41390
|
props.id = href.slice(1);
|
|
41253
41391
|
}
|
|
41392
|
+
usePreloadOnIntent(props.ref, href, prefetch);
|
|
41254
41393
|
const selectionContext = useContext(SelectionContext);
|
|
41255
41394
|
const nav = useContext(NavContext);
|
|
41256
41395
|
const visited = useIsVisited(href);
|
|
@@ -41418,6 +41557,7 @@ const LinkPlain = props => {
|
|
|
41418
41557
|
routeTransition: undefined,
|
|
41419
41558
|
pressableDuringRouteTransition: undefined,
|
|
41420
41559
|
replace: undefined,
|
|
41560
|
+
prefetch: undefined,
|
|
41421
41561
|
"data-navi-route-transition-request": routeTransitionRequest,
|
|
41422
41562
|
...(pressableDuringRouteTransition ? {
|
|
41423
41563
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
@@ -47285,6 +47425,7 @@ const ButtonUI = props => {
|
|
|
47285
47425
|
rel,
|
|
47286
47426
|
replace,
|
|
47287
47427
|
pressableDuringRouteTransition,
|
|
47428
|
+
prefetch = true,
|
|
47288
47429
|
// visual
|
|
47289
47430
|
variant,
|
|
47290
47431
|
pressEffect,
|
|
@@ -47343,6 +47484,7 @@ const ButtonUI = props => {
|
|
|
47343
47484
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
47344
47485
|
} : null;
|
|
47345
47486
|
const visualSelector = ".navi_button_content";
|
|
47487
|
+
usePreloadOnIntent(ref, href, prefetch);
|
|
47346
47488
|
useAccentColorAttributes(ref, null, {
|
|
47347
47489
|
elementSelector: visualSelector
|
|
47348
47490
|
});
|
|
@@ -47372,8 +47514,10 @@ const ButtonUI = props => {
|
|
|
47372
47514
|
...replaceRequest,
|
|
47373
47515
|
pressableDuringRouteTransition: undefined,
|
|
47374
47516
|
...pressableRequest,
|
|
47517
|
+
prefetch: undefined
|
|
47375
47518
|
// Respond with the JS prop value directly so callers (e.g. resolveCommandValue)
|
|
47376
47519
|
// get the original type instead of the DOM-coerced string (e.g. "[object Object]").
|
|
47520
|
+
,
|
|
47377
47521
|
onnavi_get_value: e => {
|
|
47378
47522
|
e.detail.respondWith(props.value);
|
|
47379
47523
|
},
|
|
@@ -47602,6 +47746,10 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
|
|
|
47602
47746
|
* `--navi-nav-to` command — by TAKING THE PLACE of the current history entry
|
|
47603
47747
|
* rather than stacking on it: what `<Link replace>` says, for a press drawn
|
|
47604
47748
|
* as a button.
|
|
47749
|
+
* @param {boolean} [prefetch=true] Fetch the code of where this leads when the
|
|
47750
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
47751
|
+
* docs/dynamic_import.md). Code only: the data stays the route action's.
|
|
47752
|
+
* `false` for a destination not worth fetching on a hover.
|
|
47605
47753
|
* @param {boolean} [pressableDuringRouteTransition] Keep answering presses
|
|
47606
47754
|
* while a route transition plays: what a movement photographs goes deaf to
|
|
47607
47755
|
* the pointer for its whole length, and the door that opened the page — a
|
|
@@ -82525,5 +82673,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
82525
82673
|
})
|
|
82526
82674
|
});
|
|
82527
82675
|
|
|
82528
|
-
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 };
|
|
82676
|
+
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 };
|
|
82529
82677
|
//# sourceMappingURL=jsenv_navi.js.map
|