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