@jsenv/navi 0.29.224 → 0.29.226
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/README.md +2 -0
- package/dist/dev/jsenv_navi.js +105 -123
- package/dist/dev/jsenv_navi.js.map +8 -10
- package/dist/jsenv_navi.js +103 -121
- package/dist/jsenv_navi.js.map +8 -10
- package/docs/AI_INSTRUCTIONS.md +8 -5
- package/docs/css_architecture.md +2 -2
- package/docs/dynamic_import.md +150 -83
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@ How to declare routes, render them, and turn them into tabs — including `Route
|
|
|
14
14
|
|
|
15
15
|
Actions are async operations with lifecycle management — pending, success, error. You can declare actions that run when navigating to a route, and any component can subscribe to them via `useAsyncData` to reflect what is happening: loading states, results, errors. No manual wiring.
|
|
16
16
|
|
|
17
|
+
Code loaded on demand is the same thing: a page's `import()` is a route action, started with the page's data on the url change and prefetched when a link to it is hovered or focused; a component inside a page that stays reads its own with `useAsyncData(() => import(…))`. One wait, one failure, no lazy-shaped API. See [docs/dynamic_import.md](./docs/dynamic_import.md).
|
|
18
|
+
|
|
17
19
|
## REST state
|
|
18
20
|
|
|
19
21
|
`resource()` turns a REST endpoint into a reactive store: one action per verb, a
|
package/dist/dev/jsenv_navi.js
CHANGED
|
@@ -17336,6 +17336,17 @@ const useAsyncData = (promiseOrAction, {
|
|
|
17336
17336
|
run,
|
|
17337
17337
|
onLoad
|
|
17338
17338
|
} = {}) => {
|
|
17339
|
+
// The request this component owns, as a function: one action per instance,
|
|
17340
|
+
// made on the first render and kept — the function's identity changes on
|
|
17341
|
+
// every render when it is written inline, the action's does not.
|
|
17342
|
+
const ownActionRef = useRef(null);
|
|
17343
|
+
if (typeof promiseOrAction === "function" && !promiseOrAction.isAction) {
|
|
17344
|
+
if (!ownActionRef.current) {
|
|
17345
|
+
ownActionRef.current = createAction(promiseOrAction);
|
|
17346
|
+
}
|
|
17347
|
+
promiseOrAction = ownActionRef.current;
|
|
17348
|
+
run = true;
|
|
17349
|
+
}
|
|
17339
17350
|
const isAction = Boolean(promiseOrAction && promiseOrAction.isAction);
|
|
17340
17351
|
if (loading === true) {
|
|
17341
17352
|
loading = "use";
|
|
@@ -17659,9 +17670,9 @@ const LoadingFallback = ({
|
|
|
17659
17670
|
// A suspension nobody here wrote — preact/compat's lazy(), a promise thrown
|
|
17660
17671
|
// by hand: the boundary holds the subtree and has nothing to say about it,
|
|
17661
17672
|
// so the fallback is not drawn. Said out loud in dev rather than found by
|
|
17662
|
-
// reading this file;
|
|
17673
|
+
// reading this file; an import read through an action never lands here.
|
|
17663
17674
|
if (!action) {
|
|
17664
|
-
console.warn(`<Loading> caught a suspension it cannot attribute to an action, so its fallback is not drawn.
|
|
17675
|
+
console.warn(`<Loading> caught a suspension it cannot attribute to an action, so its fallback is not drawn. Read code loaded on demand through an action — a routeAction or useAsyncData(() => import(...)) — see docs/dynamic_import.md.`);
|
|
17665
17676
|
}
|
|
17666
17677
|
if (loadingRef.current.reason !== "loading") {
|
|
17667
17678
|
return null;
|
|
@@ -17779,86 +17790,6 @@ const ErrorBoundary = ({
|
|
|
17779
17790
|
return children;
|
|
17780
17791
|
};
|
|
17781
17792
|
|
|
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
|
-
|
|
17862
17793
|
/**
|
|
17863
17794
|
* Creates a function that generates abort signals, automatically cancelling previous requests.
|
|
17864
17795
|
*
|
|
@@ -25073,11 +25004,9 @@ const route = (
|
|
|
25073
25004
|
return `route "${cleanPattern}"`;
|
|
25074
25005
|
},
|
|
25075
25006
|
};
|
|
25076
|
-
//
|
|
25077
|
-
//
|
|
25078
|
-
//
|
|
25079
|
-
// for on arrival with the params the address holds, and a prefetch has no
|
|
25080
|
-
// address yet.
|
|
25007
|
+
// Asks ahead of the arrival for what this route's actions ask without the
|
|
25008
|
+
// address — a page's code, a read without params (see routeAction). An
|
|
25009
|
+
// action keyed by a param waits for the arrival: a prefetch has no address.
|
|
25081
25010
|
route.preload = () => {
|
|
25082
25011
|
const preloadSet = routePreloadMap.get(route);
|
|
25083
25012
|
if (!preloadSet) {
|
|
@@ -25570,10 +25499,10 @@ const registerRoutePreload = (route, preload) => {
|
|
|
25570
25499
|
preloadSet.add(preload);
|
|
25571
25500
|
};
|
|
25572
25501
|
/**
|
|
25573
|
-
*
|
|
25574
|
-
*
|
|
25575
|
-
*
|
|
25576
|
-
*
|
|
25502
|
+
* Preloads every route the url leads to, a section and the page inside it
|
|
25503
|
+
* alike. What a link does when the pointer or the focus reaches it (see
|
|
25504
|
+
* use_preload_on_intent.js), available to anything else that knows where it
|
|
25505
|
+
* is about to go.
|
|
25577
25506
|
*/
|
|
25578
25507
|
const preloadUrl = (url) => {
|
|
25579
25508
|
if (!activeRouteSet) {
|
|
@@ -27612,12 +27541,8 @@ const collectBranches = children => {
|
|
|
27612
27541
|
children: nodeChildren,
|
|
27613
27542
|
fallback,
|
|
27614
27543
|
route,
|
|
27615
|
-
routeParams
|
|
27616
|
-
element
|
|
27544
|
+
routeParams
|
|
27617
27545
|
} = child.props;
|
|
27618
|
-
if (route) {
|
|
27619
|
-
registerElementPreload(route, element);
|
|
27620
|
-
}
|
|
27621
27546
|
if (nodeChildren) {
|
|
27622
27547
|
const {
|
|
27623
27548
|
matchingBranch: matchingChild
|
|
@@ -27667,17 +27592,6 @@ const collectBranches = children => {
|
|
|
27667
27592
|
activeBranch
|
|
27668
27593
|
};
|
|
27669
27594
|
};
|
|
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
|
-
};
|
|
27681
27595
|
const wrapBranch = (branch, wrapper) => {
|
|
27682
27596
|
return {
|
|
27683
27597
|
...branch,
|
|
@@ -31302,20 +31216,55 @@ const writeCover = (edge, element, size) => {
|
|
|
31302
31216
|
style.setProperty(property, value);
|
|
31303
31217
|
};
|
|
31304
31218
|
|
|
31219
|
+
/**
|
|
31220
|
+
* Binds an action to a route: it runs when the route matches, with the params
|
|
31221
|
+
* the effect reads off the address, and is aborted when the route is left.
|
|
31222
|
+
* Its data, its wait and its failure are read by the page through
|
|
31223
|
+
* `useAsyncData`.
|
|
31224
|
+
*
|
|
31225
|
+
* A page's CODE is declared the same way — the import is one more thing the
|
|
31226
|
+
* address asks for, started with the data rather than after it:
|
|
31227
|
+
*
|
|
31228
|
+
* ```js
|
|
31229
|
+
* const GAME_PAGE_CODE = routeAction(GAME_ROUTE, () =>
|
|
31230
|
+
* import("./game_page.jsx").then((m) => m.GamePage),
|
|
31231
|
+
* );
|
|
31232
|
+
* ```
|
|
31233
|
+
*
|
|
31234
|
+
* @param {object | object[]} routeOrRoutes - the route, or the routes, this
|
|
31235
|
+
* action belongs to.
|
|
31236
|
+
* @param {object | Function} action - an action, or a function made into one.
|
|
31237
|
+
* @param {() => any} [paramsEffect] - what the action runs with, read off
|
|
31238
|
+
* signals (the route's params, a search param): re-read when they change.
|
|
31239
|
+
* Return a falsy value to run nothing. Without it the action asks nothing of
|
|
31240
|
+
* the address, which is also what makes it worth fetching AHEAD of the
|
|
31241
|
+
* arrival: a link to the route preruns it when the pointer or the focus
|
|
31242
|
+
* reaches the link (see docs/dynamic_import.md). An action whose params
|
|
31243
|
+
* come from the address is never prefetched — a prefetch has no address.
|
|
31244
|
+
* @param {object} [options]
|
|
31245
|
+
* @param {boolean} [options.prefetch=true] - `false` keeps a param-less action
|
|
31246
|
+
* from being prerun on intent, when the read is not worth a hover.
|
|
31247
|
+
*/
|
|
31305
31248
|
const routeAction = (
|
|
31306
31249
|
routeOrRoutes,
|
|
31307
31250
|
action,
|
|
31308
|
-
paramsEffect
|
|
31309
|
-
options = {},
|
|
31251
|
+
paramsEffect,
|
|
31252
|
+
{ prefetch = true, ...options } = {},
|
|
31310
31253
|
) => {
|
|
31311
|
-
|
|
31312
|
-
|
|
31313
|
-
|
|
31254
|
+
if (typeof action === "function") {
|
|
31255
|
+
action = createAction(action);
|
|
31256
|
+
}
|
|
31257
|
+
const routes = Array.isArray(routeOrRoutes) ? routeOrRoutes : [routeOrRoutes];
|
|
31258
|
+
const routeMatchingSignal =
|
|
31259
|
+
routes.length === 1
|
|
31260
|
+
? routes[0].matchingSignal
|
|
31261
|
+
: anyMatchingRouteSignal(routes);
|
|
31262
|
+
const readParams = paramsEffect || (() => true);
|
|
31314
31263
|
const actionBoundToRoute = actionRunEffect(
|
|
31315
31264
|
action,
|
|
31316
31265
|
() => {
|
|
31317
31266
|
const matching = routeMatchingSignal.value;
|
|
31318
|
-
const params =
|
|
31267
|
+
const params = readParams();
|
|
31319
31268
|
if (!matching) {
|
|
31320
31269
|
return null;
|
|
31321
31270
|
}
|
|
@@ -31323,10 +31272,38 @@ const routeAction = (
|
|
|
31323
31272
|
},
|
|
31324
31273
|
options,
|
|
31325
31274
|
);
|
|
31326
|
-
|
|
31275
|
+
if (!paramsEffect && prefetch) {
|
|
31276
|
+
for (const route of routes) {
|
|
31277
|
+
registerRoutePreload(route, () => {
|
|
31278
|
+
prefetchParamless(action);
|
|
31279
|
+
});
|
|
31280
|
+
}
|
|
31281
|
+
}
|
|
31327
31282
|
return actionBoundToRoute;
|
|
31328
31283
|
};
|
|
31329
31284
|
|
|
31285
|
+
// The instance the effect above runs on the match is the one bound to `true`
|
|
31286
|
+
// (the default params), so a prerun here is what the arrival promotes to a
|
|
31287
|
+
// run. A prefetch that fails is not reported: nothing on screen asked for it,
|
|
31288
|
+
// and the failure stays on the instance, where a run asks again — a FAILED
|
|
31289
|
+
// action is run, only RUNNING and COMPLETED are left alone — and the arrival
|
|
31290
|
+
// shows its own. It is left FAILED on purpose, not reset: the press that
|
|
31291
|
+
// brings the arrival also focuses the link, so a prerun can be in flight when
|
|
31292
|
+
// the arrival promotes it, and a reset landing after that would pull the
|
|
31293
|
+
// answer from under the page that is reading it.
|
|
31294
|
+
const prefetchParamless = (action) => {
|
|
31295
|
+
const instance = action.bindParams(true);
|
|
31296
|
+
let result;
|
|
31297
|
+
try {
|
|
31298
|
+
result = instance.prerun({ reason: "intent" });
|
|
31299
|
+
} catch {
|
|
31300
|
+
return;
|
|
31301
|
+
}
|
|
31302
|
+
if (result && typeof result.catch === "function") {
|
|
31303
|
+
result.catch(() => {});
|
|
31304
|
+
}
|
|
31305
|
+
};
|
|
31306
|
+
|
|
31330
31307
|
// I delibrately prefer the term "any" and avoid "some" so dev are not tempted to think
|
|
31331
31308
|
// "well I could just use array.some" and bypass this helper entirely, which would be incorrect:
|
|
31332
31309
|
// This helper does return if some/any route is matching but ensure all route matching signals are read (subscribed to)
|
|
@@ -41313,10 +41290,11 @@ const Icon = ({
|
|
|
41313
41290
|
};
|
|
41314
41291
|
|
|
41315
41292
|
/**
|
|
41316
|
-
*
|
|
41317
|
-
*
|
|
41318
|
-
*
|
|
41319
|
-
* final one — an id still to be chosen —
|
|
41293
|
+
* Where a link leads, asked for when the pointer or the focus arrives on it:
|
|
41294
|
+
* the moment the user signals a destination, before the press. Only what the
|
|
41295
|
+
* route's actions ask without the address is fetched (see route.preload), so
|
|
41296
|
+
* a link whose address is not the final one — an id still to be chosen —
|
|
41297
|
+
* loses nothing by asking.
|
|
41320
41298
|
*/
|
|
41321
41299
|
const usePreloadOnIntent = (ref, href, prefetch = true) => {
|
|
41322
41300
|
useEffect(() => {
|
|
@@ -41850,8 +41828,10 @@ Object.assign(PSEUDO_CLASSES, {
|
|
|
41850
41828
|
* button leaves by where the reader came in.
|
|
41851
41829
|
* @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
|
|
41852
41830
|
* pointer or the focus arrives, ahead of the press (see
|
|
41853
|
-
* docs/dynamic_import.md)
|
|
41854
|
-
*
|
|
41831
|
+
* docs/dynamic_import.md): the route actions that ask nothing of the
|
|
41832
|
+
* address — a page's code, a read without params — are prerun; one keyed by
|
|
41833
|
+
* a param waits for the arrival. `false` for a destination not worth
|
|
41834
|
+
* fetching on a hover.
|
|
41855
41835
|
* @param {string} [props.command] - What the press asks of a control around
|
|
41856
41836
|
* the link — `"--navi-close"` on a link that leaves the sheet it is in.
|
|
41857
41837
|
* Triggered on the press, before the navigation.
|
|
@@ -48380,8 +48360,10 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
|
|
|
48380
48360
|
* as a button.
|
|
48381
48361
|
* @param {boolean} [prefetch=true] Fetch the code of where this leads when the
|
|
48382
48362
|
* pointer or the focus arrives, ahead of the press (see
|
|
48383
|
-
* docs/dynamic_import.md)
|
|
48384
|
-
*
|
|
48363
|
+
* docs/dynamic_import.md): the route actions that ask nothing of the
|
|
48364
|
+
* address — a page's code, a read without params — are prerun; one keyed by
|
|
48365
|
+
* a param waits for the arrival. `false` for a destination not worth
|
|
48366
|
+
* fetching on a hover.
|
|
48385
48367
|
* @param {boolean} [pressableDuringRouteTransition] Keep answering presses
|
|
48386
48368
|
* while a route transition plays: what a movement photographs goes deaf to
|
|
48387
48369
|
* the pointer for its whole length, and the door that opened the page — a
|
|
@@ -83898,5 +83880,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
83898
83880
|
})
|
|
83899
83881
|
});
|
|
83900
83882
|
|
|
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,
|
|
83883
|
+
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 };
|
|
83902
83884
|
//# sourceMappingURL=jsenv_navi.js.map
|