@jsenv/navi 0.29.223 → 0.29.225
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 +191 -55
- package/dist/dev/jsenv_navi.js.map +13 -11
- package/dist/jsenv_navi.js +184 -55
- package/dist/jsenv_navi.js.map +13 -11
- package/docs/AI_INSTRUCTIONS.md +7 -0
- package/docs/css_architecture.md +7 -0
- package/docs/dynamic_import.md +189 -0
- package/docs/navigation.md +3 -1
- package/package.json +1 -1
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
|
});
|
|
@@ -17100,6 +17066,17 @@ const useAsyncData = (promiseOrAction, {
|
|
|
17100
17066
|
run,
|
|
17101
17067
|
onLoad
|
|
17102
17068
|
} = {}) => {
|
|
17069
|
+
// The request this component owns, as a function: one action per instance,
|
|
17070
|
+
// made on the first render and kept — the function's identity changes on
|
|
17071
|
+
// every render when it is written inline, the action's does not.
|
|
17072
|
+
const ownActionRef = useRef(null);
|
|
17073
|
+
if (typeof promiseOrAction === "function" && !promiseOrAction.isAction) {
|
|
17074
|
+
if (!ownActionRef.current) {
|
|
17075
|
+
ownActionRef.current = createAction(promiseOrAction);
|
|
17076
|
+
}
|
|
17077
|
+
promiseOrAction = ownActionRef.current;
|
|
17078
|
+
run = true;
|
|
17079
|
+
}
|
|
17103
17080
|
const isAction = Boolean(promiseOrAction && promiseOrAction.isAction);
|
|
17104
17081
|
if (loading === true) {
|
|
17105
17082
|
loading = "use";
|
|
@@ -24688,11 +24665,24 @@ const route = (
|
|
|
24688
24665
|
matchesParams: undefined,
|
|
24689
24666
|
navTo: undefined,
|
|
24690
24667
|
redirectTo: undefined,
|
|
24668
|
+
preload: undefined,
|
|
24691
24669
|
subscribeStatus,
|
|
24692
24670
|
toString: () => {
|
|
24693
24671
|
return `route "${cleanPattern}"`;
|
|
24694
24672
|
},
|
|
24695
24673
|
};
|
|
24674
|
+
// Asks ahead of the arrival for what this route's actions ask without the
|
|
24675
|
+
// address — a page's code, a read without params (see routeAction). An
|
|
24676
|
+
// action keyed by a param waits for the arrival: a prefetch has no address.
|
|
24677
|
+
route.preload = () => {
|
|
24678
|
+
const preloadSet = routePreloadMap.get(route);
|
|
24679
|
+
if (!preloadSet) {
|
|
24680
|
+
return;
|
|
24681
|
+
}
|
|
24682
|
+
for (const preload of preloadSet) {
|
|
24683
|
+
preload();
|
|
24684
|
+
}
|
|
24685
|
+
};
|
|
24696
24686
|
Object.preventExtensions(route);
|
|
24697
24687
|
|
|
24698
24688
|
// route private props
|
|
@@ -25151,6 +25141,34 @@ const paramsTargetCanPlace = (redirectRoute, urlParams) => {
|
|
|
25151
25141
|
};
|
|
25152
25142
|
|
|
25153
25143
|
let setupRoutesCalled = false;
|
|
25144
|
+
let activeRouteSet = null;
|
|
25145
|
+
|
|
25146
|
+
const routePreloadMap = new WeakMap();
|
|
25147
|
+
const registerRoutePreload = (route, preload) => {
|
|
25148
|
+
let preloadSet = routePreloadMap.get(route);
|
|
25149
|
+
if (!preloadSet) {
|
|
25150
|
+
preloadSet = new Set();
|
|
25151
|
+
routePreloadMap.set(route, preloadSet);
|
|
25152
|
+
}
|
|
25153
|
+
preloadSet.add(preload);
|
|
25154
|
+
};
|
|
25155
|
+
/**
|
|
25156
|
+
* Preloads every route the url leads to, a section and the page inside it
|
|
25157
|
+
* alike. What a link does when the pointer or the focus reaches it (see
|
|
25158
|
+
* use_preload_on_intent.js), available to anything else that knows where it
|
|
25159
|
+
* is about to go.
|
|
25160
|
+
*/
|
|
25161
|
+
const preloadUrl = (url) => {
|
|
25162
|
+
if (!activeRouteSet) {
|
|
25163
|
+
return;
|
|
25164
|
+
}
|
|
25165
|
+
for (const route of activeRouteSet) {
|
|
25166
|
+
const { routePattern } = getRoutePrivateProperties(route);
|
|
25167
|
+
if (routePattern.applyOn(url)) {
|
|
25168
|
+
route.preload();
|
|
25169
|
+
}
|
|
25170
|
+
}
|
|
25171
|
+
};
|
|
25154
25172
|
const setupRoutes = (routes) => {
|
|
25155
25173
|
if (setupRoutesCalled) {
|
|
25156
25174
|
throw new Error(
|
|
@@ -25162,6 +25180,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25162
25180
|
setupRoutesCalled = true;
|
|
25163
25181
|
|
|
25164
25182
|
const routeSet = new Set();
|
|
25183
|
+
activeRouteSet = routeSet;
|
|
25165
25184
|
let currentUrl = null;
|
|
25166
25185
|
const getUrl = () => currentUrl;
|
|
25167
25186
|
// PHASE 1: Setup patterns with unified objects (includes all relationships and signal connections)
|
|
@@ -25454,6 +25473,7 @@ This prevents cross-test pollution and ensures clean state.`,
|
|
|
25454
25473
|
routeSet.clear();
|
|
25455
25474
|
redirectingRouteSet = null;
|
|
25456
25475
|
setupRoutesCalled = false;
|
|
25476
|
+
activeRouteSet = null;
|
|
25457
25477
|
};
|
|
25458
25478
|
return {
|
|
25459
25479
|
updateRoutes,
|
|
@@ -30753,20 +30773,55 @@ const writeCover = (edge, element, size) => {
|
|
|
30753
30773
|
style.setProperty(property, value);
|
|
30754
30774
|
};
|
|
30755
30775
|
|
|
30776
|
+
/**
|
|
30777
|
+
* Binds an action to a route: it runs when the route matches, with the params
|
|
30778
|
+
* the effect reads off the address, and is aborted when the route is left.
|
|
30779
|
+
* Its data, its wait and its failure are read by the page through
|
|
30780
|
+
* `useAsyncData`.
|
|
30781
|
+
*
|
|
30782
|
+
* A page's CODE is declared the same way — the import is one more thing the
|
|
30783
|
+
* address asks for, started with the data rather than after it:
|
|
30784
|
+
*
|
|
30785
|
+
* ```js
|
|
30786
|
+
* const GAME_PAGE_CODE = routeAction(GAME_ROUTE, () =>
|
|
30787
|
+
* import("./game_page.jsx").then((m) => m.GamePage),
|
|
30788
|
+
* );
|
|
30789
|
+
* ```
|
|
30790
|
+
*
|
|
30791
|
+
* @param {object | object[]} routeOrRoutes - the route, or the routes, this
|
|
30792
|
+
* action belongs to.
|
|
30793
|
+
* @param {object | Function} action - an action, or a function made into one.
|
|
30794
|
+
* @param {() => any} [paramsEffect] - what the action runs with, read off
|
|
30795
|
+
* signals (the route's params, a search param): re-read when they change.
|
|
30796
|
+
* Return a falsy value to run nothing. Without it the action asks nothing of
|
|
30797
|
+
* the address, which is also what makes it worth fetching AHEAD of the
|
|
30798
|
+
* arrival: a link to the route preruns it when the pointer or the focus
|
|
30799
|
+
* reaches the link (see docs/dynamic_import.md). An action whose params
|
|
30800
|
+
* come from the address is never prefetched — a prefetch has no address.
|
|
30801
|
+
* @param {object} [options]
|
|
30802
|
+
* @param {boolean} [options.prefetch=true] - `false` keeps a param-less action
|
|
30803
|
+
* from being prerun on intent, when the read is not worth a hover.
|
|
30804
|
+
*/
|
|
30756
30805
|
const routeAction = (
|
|
30757
30806
|
routeOrRoutes,
|
|
30758
30807
|
action,
|
|
30759
|
-
paramsEffect
|
|
30760
|
-
options = {},
|
|
30808
|
+
paramsEffect,
|
|
30809
|
+
{ prefetch = true, ...options } = {},
|
|
30761
30810
|
) => {
|
|
30762
|
-
|
|
30763
|
-
|
|
30764
|
-
|
|
30811
|
+
if (typeof action === "function") {
|
|
30812
|
+
action = createAction(action);
|
|
30813
|
+
}
|
|
30814
|
+
const routes = Array.isArray(routeOrRoutes) ? routeOrRoutes : [routeOrRoutes];
|
|
30815
|
+
const routeMatchingSignal =
|
|
30816
|
+
routes.length === 1
|
|
30817
|
+
? routes[0].matchingSignal
|
|
30818
|
+
: anyMatchingRouteSignal(routes);
|
|
30819
|
+
const readParams = paramsEffect || (() => true);
|
|
30765
30820
|
const actionBoundToRoute = actionRunEffect(
|
|
30766
30821
|
action,
|
|
30767
30822
|
() => {
|
|
30768
30823
|
const matching = routeMatchingSignal.value;
|
|
30769
|
-
const params =
|
|
30824
|
+
const params = readParams();
|
|
30770
30825
|
if (!matching) {
|
|
30771
30826
|
return null;
|
|
30772
30827
|
}
|
|
@@ -30774,10 +30829,37 @@ const routeAction = (
|
|
|
30774
30829
|
},
|
|
30775
30830
|
options,
|
|
30776
30831
|
);
|
|
30777
|
-
|
|
30832
|
+
if (!paramsEffect && prefetch) {
|
|
30833
|
+
for (const route of routes) {
|
|
30834
|
+
registerRoutePreload(route, () => {
|
|
30835
|
+
prefetchParamless(action);
|
|
30836
|
+
});
|
|
30837
|
+
}
|
|
30838
|
+
}
|
|
30778
30839
|
return actionBoundToRoute;
|
|
30779
30840
|
};
|
|
30780
30841
|
|
|
30842
|
+
// The instance the effect above runs on the match is the one bound to `true`
|
|
30843
|
+
// (the default params), so a prerun here is what the arrival promotes to a
|
|
30844
|
+
// run. A prefetch that fails is forgotten rather than reported: nothing on
|
|
30845
|
+
// screen asked for it, and the arrival asks again and shows its own failure.
|
|
30846
|
+
const prefetchParamless = (action) => {
|
|
30847
|
+
const instance = action.bindParams(true);
|
|
30848
|
+
const forget = () => {
|
|
30849
|
+
instance.reset({ reason: "prefetch failed" });
|
|
30850
|
+
};
|
|
30851
|
+
let result;
|
|
30852
|
+
try {
|
|
30853
|
+
result = instance.prerun({ reason: "intent" });
|
|
30854
|
+
} catch {
|
|
30855
|
+
forget();
|
|
30856
|
+
return;
|
|
30857
|
+
}
|
|
30858
|
+
if (result && typeof result.catch === "function") {
|
|
30859
|
+
result.catch(forget);
|
|
30860
|
+
}
|
|
30861
|
+
};
|
|
30862
|
+
|
|
30781
30863
|
// I delibrately prefer the term "any" and avoid "some" so dev are not tempted to think
|
|
30782
30864
|
// "well I could just use array.some" and bypass this helper entirely, which would be incorrect:
|
|
30783
30865
|
// This helper does return if some/any route is matching but ensure all route matching signals are read (subscribed to)
|
|
@@ -40641,6 +40723,34 @@ const Icon = ({
|
|
|
40641
40723
|
});
|
|
40642
40724
|
};
|
|
40643
40725
|
|
|
40726
|
+
/**
|
|
40727
|
+
* Where a link leads, asked for when the pointer or the focus arrives on it:
|
|
40728
|
+
* the moment the user signals a destination, before the press. Only what the
|
|
40729
|
+
* route's actions ask without the address is fetched (see route.preload), so
|
|
40730
|
+
* a link whose address is not the final one — an id still to be chosen —
|
|
40731
|
+
* loses nothing by asking.
|
|
40732
|
+
*/
|
|
40733
|
+
const usePreloadOnIntent = (ref, href, prefetch = true) => {
|
|
40734
|
+
useEffect(() => {
|
|
40735
|
+
if (!prefetch || !href) {
|
|
40736
|
+
return undefined;
|
|
40737
|
+
}
|
|
40738
|
+
const element = ref.current;
|
|
40739
|
+
if (!element) {
|
|
40740
|
+
return undefined;
|
|
40741
|
+
}
|
|
40742
|
+
const preload = () => {
|
|
40743
|
+
preloadUrl(href);
|
|
40744
|
+
};
|
|
40745
|
+
element.addEventListener("pointerenter", preload);
|
|
40746
|
+
element.addEventListener("focusin", preload);
|
|
40747
|
+
return () => {
|
|
40748
|
+
element.removeEventListener("pointerenter", preload);
|
|
40749
|
+
element.removeEventListener("focusin", preload);
|
|
40750
|
+
};
|
|
40751
|
+
}, [ref, href, prefetch]);
|
|
40752
|
+
};
|
|
40753
|
+
|
|
40644
40754
|
/**
|
|
40645
40755
|
* Hook that reactively checks if a URL is visited.
|
|
40646
40756
|
* Re-renders when the visited URL set changes.
|
|
@@ -41150,6 +41260,12 @@ Object.assign(PSEUDO_CLASSES, {
|
|
|
41150
41260
|
* way there changes. What a row of tabs wants — the neighbour is a lateral
|
|
41151
41261
|
* move, not a step deeper, so the whole row weighs one entry and the back
|
|
41152
41262
|
* button leaves by where the reader came in.
|
|
41263
|
+
* @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
|
|
41264
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
41265
|
+
* docs/dynamic_import.md): the route actions that ask nothing of the
|
|
41266
|
+
* address — a page's code, a read without params — are prerun; one keyed by
|
|
41267
|
+
* a param waits for the arrival. `false` for a destination not worth
|
|
41268
|
+
* fetching on a hover.
|
|
41153
41269
|
* @param {string} [props.command] - What the press asks of a control around
|
|
41154
41270
|
* the link — `"--navi-close"` on a link that leaves the sheet it is in.
|
|
41155
41271
|
* Triggered on the press, before the navigation.
|
|
@@ -41246,11 +41362,13 @@ const LinkPlain = props => {
|
|
|
41246
41362
|
routeTransition,
|
|
41247
41363
|
pressableDuringRouteTransition,
|
|
41248
41364
|
replace,
|
|
41365
|
+
prefetch = true,
|
|
41249
41366
|
children
|
|
41250
41367
|
} = props;
|
|
41251
41368
|
if (anchor && !props.id) {
|
|
41252
41369
|
props.id = href.slice(1);
|
|
41253
41370
|
}
|
|
41371
|
+
usePreloadOnIntent(props.ref, href, prefetch);
|
|
41254
41372
|
const selectionContext = useContext(SelectionContext);
|
|
41255
41373
|
const nav = useContext(NavContext);
|
|
41256
41374
|
const visited = useIsVisited(href);
|
|
@@ -41418,6 +41536,7 @@ const LinkPlain = props => {
|
|
|
41418
41536
|
routeTransition: undefined,
|
|
41419
41537
|
pressableDuringRouteTransition: undefined,
|
|
41420
41538
|
replace: undefined,
|
|
41539
|
+
prefetch: undefined,
|
|
41421
41540
|
"data-navi-route-transition-request": routeTransitionRequest,
|
|
41422
41541
|
...(pressableDuringRouteTransition ? {
|
|
41423
41542
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
@@ -47285,6 +47404,7 @@ const ButtonUI = props => {
|
|
|
47285
47404
|
rel,
|
|
47286
47405
|
replace,
|
|
47287
47406
|
pressableDuringRouteTransition,
|
|
47407
|
+
prefetch = true,
|
|
47288
47408
|
// visual
|
|
47289
47409
|
variant,
|
|
47290
47410
|
pressEffect,
|
|
@@ -47343,6 +47463,7 @@ const ButtonUI = props => {
|
|
|
47343
47463
|
[PRESSABLE_ATTRIBUTE]: ""
|
|
47344
47464
|
} : null;
|
|
47345
47465
|
const visualSelector = ".navi_button_content";
|
|
47466
|
+
usePreloadOnIntent(ref, href, prefetch);
|
|
47346
47467
|
useAccentColorAttributes(ref, null, {
|
|
47347
47468
|
elementSelector: visualSelector
|
|
47348
47469
|
});
|
|
@@ -47372,8 +47493,10 @@ const ButtonUI = props => {
|
|
|
47372
47493
|
...replaceRequest,
|
|
47373
47494
|
pressableDuringRouteTransition: undefined,
|
|
47374
47495
|
...pressableRequest,
|
|
47496
|
+
prefetch: undefined
|
|
47375
47497
|
// Respond with the JS prop value directly so callers (e.g. resolveCommandValue)
|
|
47376
47498
|
// get the original type instead of the DOM-coerced string (e.g. "[object Object]").
|
|
47499
|
+
,
|
|
47377
47500
|
onnavi_get_value: e => {
|
|
47378
47501
|
e.detail.respondWith(props.value);
|
|
47379
47502
|
},
|
|
@@ -47602,6 +47725,12 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
|
|
|
47602
47725
|
* `--navi-nav-to` command — by TAKING THE PLACE of the current history entry
|
|
47603
47726
|
* rather than stacking on it: what `<Link replace>` says, for a press drawn
|
|
47604
47727
|
* as a button.
|
|
47728
|
+
* @param {boolean} [prefetch=true] Fetch the code of where this leads when the
|
|
47729
|
+
* pointer or the focus arrives, ahead of the press (see
|
|
47730
|
+
* docs/dynamic_import.md): the route actions that ask nothing of the
|
|
47731
|
+
* address — a page's code, a read without params — are prerun; one keyed by
|
|
47732
|
+
* a param waits for the arrival. `false` for a destination not worth
|
|
47733
|
+
* fetching on a hover.
|
|
47605
47734
|
* @param {boolean} [pressableDuringRouteTransition] Keep answering presses
|
|
47606
47735
|
* while a route transition plays: what a movement photographs goes deaf to
|
|
47607
47736
|
* the pointer for its whole length, and the door that opened the page — a
|
|
@@ -82525,5 +82654,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
82525
82654
|
})
|
|
82526
82655
|
});
|
|
82527
82656
|
|
|
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 };
|
|
82657
|
+
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, 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
82658
|
//# sourceMappingURL=jsenv_navi.js.map
|