@jsenv/navi 0.29.222 → 0.29.224

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