@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.
@@ -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
- let renderCompletedSafe;
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
  });
@@ -17370,6 +17336,17 @@ const useAsyncData = (promiseOrAction, {
17370
17336
  run,
17371
17337
  onLoad
17372
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
+ }
17373
17350
  const isAction = Boolean(promiseOrAction && promiseOrAction.isAction);
17374
17351
  if (loading === true) {
17375
17352
  loading = "use";
@@ -17690,6 +17667,13 @@ const LoadingFallback = ({
17690
17667
  useLayoutEffect(() => {
17691
17668
  publishRouteRender();
17692
17669
  });
17670
+ // A suspension nobody here wrote — preact/compat's lazy(), a promise thrown
17671
+ // by hand: the boundary holds the subtree and has nothing to say about it,
17672
+ // so the fallback is not drawn. Said out loud in dev rather than found by
17673
+ // reading this file; an import read through an action never lands here.
17674
+ if (!action) {
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.`);
17676
+ }
17693
17677
  if (loadingRef.current.reason !== "loading") {
17694
17678
  return null;
17695
17679
  }
@@ -25014,11 +24998,24 @@ const route = (
25014
24998
  matchesParams: undefined,
25015
24999
  navTo: undefined,
25016
25000
  redirectTo: undefined,
25001
+ preload: undefined,
25017
25002
  subscribeStatus,
25018
25003
  toString: () => {
25019
25004
  return `route "${cleanPattern}"`;
25020
25005
  },
25021
25006
  };
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.
25010
+ route.preload = () => {
25011
+ const preloadSet = routePreloadMap.get(route);
25012
+ if (!preloadSet) {
25013
+ return;
25014
+ }
25015
+ for (const preload of preloadSet) {
25016
+ preload();
25017
+ }
25018
+ };
25022
25019
  Object.preventExtensions(route);
25023
25020
 
25024
25021
  // route private props
@@ -25490,6 +25487,34 @@ const paramsTargetCanPlace = (redirectRoute, urlParams) => {
25490
25487
  };
25491
25488
 
25492
25489
  let setupRoutesCalled = false;
25490
+ let activeRouteSet = null;
25491
+
25492
+ const routePreloadMap = new WeakMap();
25493
+ const registerRoutePreload = (route, preload) => {
25494
+ let preloadSet = routePreloadMap.get(route);
25495
+ if (!preloadSet) {
25496
+ preloadSet = new Set();
25497
+ routePreloadMap.set(route, preloadSet);
25498
+ }
25499
+ preloadSet.add(preload);
25500
+ };
25501
+ /**
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.
25506
+ */
25507
+ const preloadUrl = (url) => {
25508
+ if (!activeRouteSet) {
25509
+ return;
25510
+ }
25511
+ for (const route of activeRouteSet) {
25512
+ const { routePattern } = getRoutePrivateProperties(route);
25513
+ if (routePattern.applyOn(url)) {
25514
+ route.preload();
25515
+ }
25516
+ }
25517
+ };
25493
25518
  const setupRoutes = (routes) => {
25494
25519
  if (setupRoutesCalled) {
25495
25520
  throw new Error(
@@ -25501,6 +25526,7 @@ This prevents cross-test pollution and ensures clean state.`,
25501
25526
  setupRoutesCalled = true;
25502
25527
 
25503
25528
  const routeSet = new Set();
25529
+ activeRouteSet = routeSet;
25504
25530
  let currentUrl = null;
25505
25531
  const getUrl = () => currentUrl;
25506
25532
  // PHASE 1: Setup patterns with unified objects (includes all relationships and signal connections)
@@ -25793,6 +25819,7 @@ This prevents cross-test pollution and ensures clean state.`,
25793
25819
  routeSet.clear();
25794
25820
  redirectingRouteSet = null;
25795
25821
  setupRoutesCalled = false;
25822
+ activeRouteSet = null;
25796
25823
  };
25797
25824
  return {
25798
25825
  updateRoutes,
@@ -31189,20 +31216,55 @@ const writeCover = (edge, element, size) => {
31189
31216
  style.setProperty(property, value);
31190
31217
  };
31191
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
+ */
31192
31248
  const routeAction = (
31193
31249
  routeOrRoutes,
31194
31250
  action,
31195
- paramsEffect = () => true,
31196
- options = {},
31251
+ paramsEffect,
31252
+ { prefetch = true, ...options } = {},
31197
31253
  ) => {
31198
- const routeMatchingSignal = Array.isArray(routeOrRoutes)
31199
- ? anyMatchingRouteSignal(routeOrRoutes)
31200
- : routeOrRoutes.matchingSignal;
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);
31201
31263
  const actionBoundToRoute = actionRunEffect(
31202
31264
  action,
31203
31265
  () => {
31204
31266
  const matching = routeMatchingSignal.value;
31205
- const params = paramsEffect();
31267
+ const params = readParams();
31206
31268
  if (!matching) {
31207
31269
  return null;
31208
31270
  }
@@ -31210,10 +31272,37 @@ const routeAction = (
31210
31272
  },
31211
31273
  options,
31212
31274
  );
31213
-
31275
+ if (!paramsEffect && prefetch) {
31276
+ for (const route of routes) {
31277
+ registerRoutePreload(route, () => {
31278
+ prefetchParamless(action);
31279
+ });
31280
+ }
31281
+ }
31214
31282
  return actionBoundToRoute;
31215
31283
  };
31216
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 forgotten rather than reported: nothing on
31288
+ // screen asked for it, and the arrival asks again and shows its own failure.
31289
+ const prefetchParamless = (action) => {
31290
+ const instance = action.bindParams(true);
31291
+ const forget = () => {
31292
+ instance.reset({ reason: "prefetch failed" });
31293
+ };
31294
+ let result;
31295
+ try {
31296
+ result = instance.prerun({ reason: "intent" });
31297
+ } catch {
31298
+ forget();
31299
+ return;
31300
+ }
31301
+ if (result && typeof result.catch === "function") {
31302
+ result.catch(forget);
31303
+ }
31304
+ };
31305
+
31217
31306
  // I delibrately prefer the term "any" and avoid "some" so dev are not tempted to think
31218
31307
  // "well I could just use array.some" and bypass this helper entirely, which would be incorrect:
31219
31308
  // This helper does return if some/any route is matching but ensure all route matching signals are read (subscribed to)
@@ -41199,6 +41288,34 @@ const Icon = ({
41199
41288
  });
41200
41289
  };
41201
41290
 
41291
+ /**
41292
+ * Where a link leads, asked for when the pointer or the focus arrives on it:
41293
+ * the moment the user signals a destination, before the press. Only what the
41294
+ * route's actions ask without the address is fetched (see route.preload), so
41295
+ * a link whose address is not the final one — an id still to be chosen —
41296
+ * loses nothing by asking.
41297
+ */
41298
+ const usePreloadOnIntent = (ref, href, prefetch = true) => {
41299
+ useEffect(() => {
41300
+ if (!prefetch || !href) {
41301
+ return undefined;
41302
+ }
41303
+ const element = ref.current;
41304
+ if (!element) {
41305
+ return undefined;
41306
+ }
41307
+ const preload = () => {
41308
+ preloadUrl(href);
41309
+ };
41310
+ element.addEventListener("pointerenter", preload);
41311
+ element.addEventListener("focusin", preload);
41312
+ return () => {
41313
+ element.removeEventListener("pointerenter", preload);
41314
+ element.removeEventListener("focusin", preload);
41315
+ };
41316
+ }, [ref, href, prefetch]);
41317
+ };
41318
+
41202
41319
  /**
41203
41320
  * Hook that reactively checks if a URL is visited.
41204
41321
  * Re-renders when the visited URL set changes.
@@ -41708,6 +41825,12 @@ Object.assign(PSEUDO_CLASSES, {
41708
41825
  * way there changes. What a row of tabs wants — the neighbour is a lateral
41709
41826
  * move, not a step deeper, so the whole row weighs one entry and the back
41710
41827
  * button leaves by where the reader came in.
41828
+ * @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
41829
+ * pointer or the focus arrives, ahead of the press (see
41830
+ * docs/dynamic_import.md): the route actions that ask nothing of the
41831
+ * address — a page's code, a read without params — are prerun; one keyed by
41832
+ * a param waits for the arrival. `false` for a destination not worth
41833
+ * fetching on a hover.
41711
41834
  * @param {string} [props.command] - What the press asks of a control around
41712
41835
  * the link — `"--navi-close"` on a link that leaves the sheet it is in.
41713
41836
  * Triggered on the press, before the navigation.
@@ -41813,11 +41936,13 @@ const LinkPlain = props => {
41813
41936
  routeTransition,
41814
41937
  pressableDuringRouteTransition,
41815
41938
  replace,
41939
+ prefetch = true,
41816
41940
  children
41817
41941
  } = props;
41818
41942
  if (anchor && !props.id) {
41819
41943
  props.id = href.slice(1);
41820
41944
  }
41945
+ usePreloadOnIntent(props.ref, href, prefetch);
41821
41946
  const selectionContext = useContext(SelectionContext);
41822
41947
  const nav = useContext(NavContext);
41823
41948
  const visited = useIsVisited(href);
@@ -41985,6 +42110,7 @@ const LinkPlain = props => {
41985
42110
  routeTransition: undefined,
41986
42111
  pressableDuringRouteTransition: undefined,
41987
42112
  replace: undefined,
42113
+ prefetch: undefined,
41988
42114
  "data-navi-route-transition-request": routeTransitionRequest,
41989
42115
  ...(pressableDuringRouteTransition ? {
41990
42116
  [PRESSABLE_ATTRIBUTE]: ""
@@ -47910,6 +48036,7 @@ const ButtonUI = props => {
47910
48036
  rel,
47911
48037
  replace,
47912
48038
  pressableDuringRouteTransition,
48039
+ prefetch = true,
47913
48040
  // visual
47914
48041
  variant,
47915
48042
  pressEffect,
@@ -47968,6 +48095,7 @@ const ButtonUI = props => {
47968
48095
  [PRESSABLE_ATTRIBUTE]: ""
47969
48096
  } : null;
47970
48097
  const visualSelector = ".navi_button_content";
48098
+ usePreloadOnIntent(ref, href, prefetch);
47971
48099
  useAccentColorAttributes(ref, null, {
47972
48100
  elementSelector: visualSelector
47973
48101
  });
@@ -47997,8 +48125,10 @@ const ButtonUI = props => {
47997
48125
  ...replaceRequest,
47998
48126
  pressableDuringRouteTransition: undefined,
47999
48127
  ...pressableRequest,
48128
+ prefetch: undefined
48000
48129
  // Respond with the JS prop value directly so callers (e.g. resolveCommandValue)
48001
48130
  // get the original type instead of the DOM-coerced string (e.g. "[object Object]").
48131
+ ,
48002
48132
  onnavi_get_value: e => {
48003
48133
  e.detail.respondWith(props.value);
48004
48134
  },
@@ -48227,6 +48357,12 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
48227
48357
  * `--navi-nav-to` command — by TAKING THE PLACE of the current history entry
48228
48358
  * rather than stacking on it: what `<Link replace>` says, for a press drawn
48229
48359
  * as a button.
48360
+ * @param {boolean} [prefetch=true] Fetch the code of where this leads when the
48361
+ * pointer or the focus arrives, ahead of the press (see
48362
+ * docs/dynamic_import.md): the route actions that ask nothing of the
48363
+ * address — a page's code, a read without params — are prerun; one keyed by
48364
+ * a param waits for the arrival. `false` for a destination not worth
48365
+ * fetching on a hover.
48230
48366
  * @param {boolean} [pressableDuringRouteTransition] Keep answering presses
48231
48367
  * while a route transition plays: what a movement photographs goes deaf to
48232
48368
  * the pointer for its whole length, and the door that opened the page — a
@@ -83743,5 +83879,5 @@ const UserSvg = () => jsx("svg", {
83743
83879
  })
83744
83880
  });
83745
83881
 
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 };
83882
+ 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 };
83747
83883
  //# sourceMappingURL=jsenv_navi.js.map