@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
  /*
@@ -3204,7 +3192,6 @@ const createAction = (callback, rootOptions = {}) => {
3204
3192
  data = dataDefault,
3205
3193
 
3206
3194
  completed = false,
3207
- renderLoadedAsync,
3208
3195
  sideEffect = () => {},
3209
3196
  meta = {},
3210
3197
 
@@ -3609,10 +3596,6 @@ const createAction = (callback, rootOptions = {}) => {
3609
3596
  }
3610
3597
 
3611
3598
  {
3612
- const ui = {
3613
- renderLoaded: null,
3614
- renderLoadedAsync,
3615
- };
3616
3599
  let sideEffectCleanup;
3617
3600
  let completeSideEffectCleanup;
3618
3601
 
@@ -3809,20 +3792,6 @@ const createAction = (callback, rootOptions = {}) => {
3809
3792
  } else {
3810
3793
  runResult = callbackResult;
3811
3794
  }
3812
- if (ui.renderLoadedAsync && !ui.renderLoaded) {
3813
- const renderLoadedPromise = ui.renderLoadedAsync(...args).then(
3814
- (renderLoaded) => {
3815
- ui.renderLoaded = renderLoaded;
3816
- },
3817
- (e) => {
3818
- if (!rejected) {
3819
- rejected = true;
3820
- rejectedValue = e;
3821
- }
3822
- },
3823
- );
3824
- thenableArray.push(renderLoadedPromise);
3825
- }
3826
3795
  if (thenableArray.length === 0) {
3827
3796
  return onRunEnd();
3828
3797
  }
@@ -3876,7 +3845,6 @@ const createAction = (callback, rootOptions = {}) => {
3876
3845
 
3877
3846
  performRun,
3878
3847
  performReset,
3879
- ui,
3880
3848
 
3881
3849
  nameSignal: actionNameSignal,
3882
3850
  callSourceSignal: actionCallSourceSignal,
@@ -4151,10 +4119,8 @@ const createActionProxyFromSignal = (
4151
4119
 
4152
4120
  performRun: proxyPrivateMethod("performRun"),
4153
4121
  performReset: proxyPrivateMethod("performReset"),
4154
- ui: currentActionPrivateProperties.ui,
4155
4122
  };
4156
4123
  onActionTargetChange(() => {
4157
- proxyPrivateProperties.ui = currentActionPrivateProperties.ui;
4158
4124
  proxyPrivateProperties.childActionWeakSet =
4159
4125
  currentActionPrivateProperties.childActionWeakSet;
4160
4126
  });
@@ -17100,6 +17066,17 @@ const useAsyncData = (promiseOrAction, {
17100
17066
  run,
17101
17067
  onLoad
17102
17068
  } = {}) => {
17069
+ // The request this component owns, as a function: one action per instance,
17070
+ // made on the first render and kept — the function's identity changes on
17071
+ // every render when it is written inline, the action's does not.
17072
+ const ownActionRef = useRef(null);
17073
+ if (typeof promiseOrAction === "function" && !promiseOrAction.isAction) {
17074
+ if (!ownActionRef.current) {
17075
+ ownActionRef.current = createAction(promiseOrAction);
17076
+ }
17077
+ promiseOrAction = ownActionRef.current;
17078
+ run = true;
17079
+ }
17103
17080
  const isAction = Boolean(promiseOrAction && promiseOrAction.isAction);
17104
17081
  if (loading === true) {
17105
17082
  loading = "use";
@@ -24688,11 +24665,24 @@ const route = (
24688
24665
  matchesParams: undefined,
24689
24666
  navTo: undefined,
24690
24667
  redirectTo: undefined,
24668
+ preload: undefined,
24691
24669
  subscribeStatus,
24692
24670
  toString: () => {
24693
24671
  return `route "${cleanPattern}"`;
24694
24672
  },
24695
24673
  };
24674
+ // Asks ahead of the arrival for what this route's actions ask without the
24675
+ // address — a page's code, a read without params (see routeAction). An
24676
+ // action keyed by a param waits for the arrival: a prefetch has no address.
24677
+ route.preload = () => {
24678
+ const preloadSet = routePreloadMap.get(route);
24679
+ if (!preloadSet) {
24680
+ return;
24681
+ }
24682
+ for (const preload of preloadSet) {
24683
+ preload();
24684
+ }
24685
+ };
24696
24686
  Object.preventExtensions(route);
24697
24687
 
24698
24688
  // route private props
@@ -25151,6 +25141,34 @@ const paramsTargetCanPlace = (redirectRoute, urlParams) => {
25151
25141
  };
25152
25142
 
25153
25143
  let setupRoutesCalled = false;
25144
+ let activeRouteSet = null;
25145
+
25146
+ const routePreloadMap = new WeakMap();
25147
+ const registerRoutePreload = (route, preload) => {
25148
+ let preloadSet = routePreloadMap.get(route);
25149
+ if (!preloadSet) {
25150
+ preloadSet = new Set();
25151
+ routePreloadMap.set(route, preloadSet);
25152
+ }
25153
+ preloadSet.add(preload);
25154
+ };
25155
+ /**
25156
+ * Preloads every route the url leads to, a section and the page inside it
25157
+ * alike. What a link does when the pointer or the focus reaches it (see
25158
+ * use_preload_on_intent.js), available to anything else that knows where it
25159
+ * is about to go.
25160
+ */
25161
+ const preloadUrl = (url) => {
25162
+ if (!activeRouteSet) {
25163
+ return;
25164
+ }
25165
+ for (const route of activeRouteSet) {
25166
+ const { routePattern } = getRoutePrivateProperties(route);
25167
+ if (routePattern.applyOn(url)) {
25168
+ route.preload();
25169
+ }
25170
+ }
25171
+ };
25154
25172
  const setupRoutes = (routes) => {
25155
25173
  if (setupRoutesCalled) {
25156
25174
  throw new Error(
@@ -25162,6 +25180,7 @@ This prevents cross-test pollution and ensures clean state.`,
25162
25180
  setupRoutesCalled = true;
25163
25181
 
25164
25182
  const routeSet = new Set();
25183
+ activeRouteSet = routeSet;
25165
25184
  let currentUrl = null;
25166
25185
  const getUrl = () => currentUrl;
25167
25186
  // PHASE 1: Setup patterns with unified objects (includes all relationships and signal connections)
@@ -25454,6 +25473,7 @@ This prevents cross-test pollution and ensures clean state.`,
25454
25473
  routeSet.clear();
25455
25474
  redirectingRouteSet = null;
25456
25475
  setupRoutesCalled = false;
25476
+ activeRouteSet = null;
25457
25477
  };
25458
25478
  return {
25459
25479
  updateRoutes,
@@ -30753,20 +30773,55 @@ const writeCover = (edge, element, size) => {
30753
30773
  style.setProperty(property, value);
30754
30774
  };
30755
30775
 
30776
+ /**
30777
+ * Binds an action to a route: it runs when the route matches, with the params
30778
+ * the effect reads off the address, and is aborted when the route is left.
30779
+ * Its data, its wait and its failure are read by the page through
30780
+ * `useAsyncData`.
30781
+ *
30782
+ * A page's CODE is declared the same way — the import is one more thing the
30783
+ * address asks for, started with the data rather than after it:
30784
+ *
30785
+ * ```js
30786
+ * const GAME_PAGE_CODE = routeAction(GAME_ROUTE, () =>
30787
+ * import("./game_page.jsx").then((m) => m.GamePage),
30788
+ * );
30789
+ * ```
30790
+ *
30791
+ * @param {object | object[]} routeOrRoutes - the route, or the routes, this
30792
+ * action belongs to.
30793
+ * @param {object | Function} action - an action, or a function made into one.
30794
+ * @param {() => any} [paramsEffect] - what the action runs with, read off
30795
+ * signals (the route's params, a search param): re-read when they change.
30796
+ * Return a falsy value to run nothing. Without it the action asks nothing of
30797
+ * the address, which is also what makes it worth fetching AHEAD of the
30798
+ * arrival: a link to the route preruns it when the pointer or the focus
30799
+ * reaches the link (see docs/dynamic_import.md). An action whose params
30800
+ * come from the address is never prefetched — a prefetch has no address.
30801
+ * @param {object} [options]
30802
+ * @param {boolean} [options.prefetch=true] - `false` keeps a param-less action
30803
+ * from being prerun on intent, when the read is not worth a hover.
30804
+ */
30756
30805
  const routeAction = (
30757
30806
  routeOrRoutes,
30758
30807
  action,
30759
- paramsEffect = () => true,
30760
- options = {},
30808
+ paramsEffect,
30809
+ { prefetch = true, ...options } = {},
30761
30810
  ) => {
30762
- const routeMatchingSignal = Array.isArray(routeOrRoutes)
30763
- ? anyMatchingRouteSignal(routeOrRoutes)
30764
- : routeOrRoutes.matchingSignal;
30811
+ if (typeof action === "function") {
30812
+ action = createAction(action);
30813
+ }
30814
+ const routes = Array.isArray(routeOrRoutes) ? routeOrRoutes : [routeOrRoutes];
30815
+ const routeMatchingSignal =
30816
+ routes.length === 1
30817
+ ? routes[0].matchingSignal
30818
+ : anyMatchingRouteSignal(routes);
30819
+ const readParams = paramsEffect || (() => true);
30765
30820
  const actionBoundToRoute = actionRunEffect(
30766
30821
  action,
30767
30822
  () => {
30768
30823
  const matching = routeMatchingSignal.value;
30769
- const params = paramsEffect();
30824
+ const params = readParams();
30770
30825
  if (!matching) {
30771
30826
  return null;
30772
30827
  }
@@ -30774,10 +30829,37 @@ const routeAction = (
30774
30829
  },
30775
30830
  options,
30776
30831
  );
30777
-
30832
+ if (!paramsEffect && prefetch) {
30833
+ for (const route of routes) {
30834
+ registerRoutePreload(route, () => {
30835
+ prefetchParamless(action);
30836
+ });
30837
+ }
30838
+ }
30778
30839
  return actionBoundToRoute;
30779
30840
  };
30780
30841
 
30842
+ // The instance the effect above runs on the match is the one bound to `true`
30843
+ // (the default params), so a prerun here is what the arrival promotes to a
30844
+ // run. A prefetch that fails is forgotten rather than reported: nothing on
30845
+ // screen asked for it, and the arrival asks again and shows its own failure.
30846
+ const prefetchParamless = (action) => {
30847
+ const instance = action.bindParams(true);
30848
+ const forget = () => {
30849
+ instance.reset({ reason: "prefetch failed" });
30850
+ };
30851
+ let result;
30852
+ try {
30853
+ result = instance.prerun({ reason: "intent" });
30854
+ } catch {
30855
+ forget();
30856
+ return;
30857
+ }
30858
+ if (result && typeof result.catch === "function") {
30859
+ result.catch(forget);
30860
+ }
30861
+ };
30862
+
30781
30863
  // I delibrately prefer the term "any" and avoid "some" so dev are not tempted to think
30782
30864
  // "well I could just use array.some" and bypass this helper entirely, which would be incorrect:
30783
30865
  // This helper does return if some/any route is matching but ensure all route matching signals are read (subscribed to)
@@ -40641,6 +40723,34 @@ const Icon = ({
40641
40723
  });
40642
40724
  };
40643
40725
 
40726
+ /**
40727
+ * Where a link leads, asked for when the pointer or the focus arrives on it:
40728
+ * the moment the user signals a destination, before the press. Only what the
40729
+ * route's actions ask without the address is fetched (see route.preload), so
40730
+ * a link whose address is not the final one — an id still to be chosen —
40731
+ * loses nothing by asking.
40732
+ */
40733
+ const usePreloadOnIntent = (ref, href, prefetch = true) => {
40734
+ useEffect(() => {
40735
+ if (!prefetch || !href) {
40736
+ return undefined;
40737
+ }
40738
+ const element = ref.current;
40739
+ if (!element) {
40740
+ return undefined;
40741
+ }
40742
+ const preload = () => {
40743
+ preloadUrl(href);
40744
+ };
40745
+ element.addEventListener("pointerenter", preload);
40746
+ element.addEventListener("focusin", preload);
40747
+ return () => {
40748
+ element.removeEventListener("pointerenter", preload);
40749
+ element.removeEventListener("focusin", preload);
40750
+ };
40751
+ }, [ref, href, prefetch]);
40752
+ };
40753
+
40644
40754
  /**
40645
40755
  * Hook that reactively checks if a URL is visited.
40646
40756
  * Re-renders when the visited URL set changes.
@@ -41150,6 +41260,12 @@ Object.assign(PSEUDO_CLASSES, {
41150
41260
  * way there changes. What a row of tabs wants — the neighbour is a lateral
41151
41261
  * move, not a step deeper, so the whole row weighs one entry and the back
41152
41262
  * button leaves by where the reader came in.
41263
+ * @param {boolean} [props.prefetch=true] Fetch the code of where this leads when the
41264
+ * pointer or the focus arrives, ahead of the press (see
41265
+ * docs/dynamic_import.md): the route actions that ask nothing of the
41266
+ * address — a page's code, a read without params — are prerun; one keyed by
41267
+ * a param waits for the arrival. `false` for a destination not worth
41268
+ * fetching on a hover.
41153
41269
  * @param {string} [props.command] - What the press asks of a control around
41154
41270
  * the link — `"--navi-close"` on a link that leaves the sheet it is in.
41155
41271
  * Triggered on the press, before the navigation.
@@ -41246,11 +41362,13 @@ const LinkPlain = props => {
41246
41362
  routeTransition,
41247
41363
  pressableDuringRouteTransition,
41248
41364
  replace,
41365
+ prefetch = true,
41249
41366
  children
41250
41367
  } = props;
41251
41368
  if (anchor && !props.id) {
41252
41369
  props.id = href.slice(1);
41253
41370
  }
41371
+ usePreloadOnIntent(props.ref, href, prefetch);
41254
41372
  const selectionContext = useContext(SelectionContext);
41255
41373
  const nav = useContext(NavContext);
41256
41374
  const visited = useIsVisited(href);
@@ -41418,6 +41536,7 @@ const LinkPlain = props => {
41418
41536
  routeTransition: undefined,
41419
41537
  pressableDuringRouteTransition: undefined,
41420
41538
  replace: undefined,
41539
+ prefetch: undefined,
41421
41540
  "data-navi-route-transition-request": routeTransitionRequest,
41422
41541
  ...(pressableDuringRouteTransition ? {
41423
41542
  [PRESSABLE_ATTRIBUTE]: ""
@@ -47285,6 +47404,7 @@ const ButtonUI = props => {
47285
47404
  rel,
47286
47405
  replace,
47287
47406
  pressableDuringRouteTransition,
47407
+ prefetch = true,
47288
47408
  // visual
47289
47409
  variant,
47290
47410
  pressEffect,
@@ -47343,6 +47463,7 @@ const ButtonUI = props => {
47343
47463
  [PRESSABLE_ATTRIBUTE]: ""
47344
47464
  } : null;
47345
47465
  const visualSelector = ".navi_button_content";
47466
+ usePreloadOnIntent(ref, href, prefetch);
47346
47467
  useAccentColorAttributes(ref, null, {
47347
47468
  elementSelector: visualSelector
47348
47469
  });
@@ -47372,8 +47493,10 @@ const ButtonUI = props => {
47372
47493
  ...replaceRequest,
47373
47494
  pressableDuringRouteTransition: undefined,
47374
47495
  ...pressableRequest,
47496
+ prefetch: undefined
47375
47497
  // Respond with the JS prop value directly so callers (e.g. resolveCommandValue)
47376
47498
  // get the original type instead of the DOM-coerced string (e.g. "[object Object]").
47499
+ ,
47377
47500
  onnavi_get_value: e => {
47378
47501
  e.detail.respondWith(props.value);
47379
47502
  },
@@ -47602,6 +47725,12 @@ const COMMAND_DEFAULT_PROPS_FACTORIES = {
47602
47725
  * `--navi-nav-to` command — by TAKING THE PLACE of the current history entry
47603
47726
  * rather than stacking on it: what `<Link replace>` says, for a press drawn
47604
47727
  * as a button.
47728
+ * @param {boolean} [prefetch=true] Fetch the code of where this leads when the
47729
+ * pointer or the focus arrives, ahead of the press (see
47730
+ * docs/dynamic_import.md): the route actions that ask nothing of the
47731
+ * address — a page's code, a read without params — are prerun; one keyed by
47732
+ * a param waits for the arrival. `false` for a destination not worth
47733
+ * fetching on a hover.
47605
47734
  * @param {boolean} [pressableDuringRouteTransition] Keep answering presses
47606
47735
  * while a route transition plays: what a movement photographs goes deaf to
47607
47736
  * the pointer for its whole length, and the door that opened the page — a
@@ -82525,5 +82654,5 @@ const UserSvg = () => jsx("svg", {
82525
82654
  })
82526
82655
  });
82527
82656
 
82528
- export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, CalloutStatusIcon, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, ControlSwap, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, Expandable, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, InfoSvg, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, OfflineError, Paragraph, Picker, Popover, Popup, Quantity, RadioGroup, Route, RouteTransitionArea, RouteTravel, RowNumberCol, RowNumberTableCell, SVGMaskOverlay, SearchSvg, Select, SelectableInput, SelectionContext, Separator, SettingsSvg, SidePanel, Slide, SlideContainer, Spin, SpinGroup, SplitButton, StarSvg, Step, StepList, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRange, TimeRangeSpin, TimeRangeWheel, TimeSpin, TimeWheel, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, canNavBackSignal, canNavForwardSignal, coarsePointerSignal, compareTwoJsValues, constraintFromValidityRule, createAction, createAvailableConstraint, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, dispatchRequestSetUIState, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, getNowHours, getNowHoursRoundedToStep, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markAsOutsideTextFlow, markErrorAsDisplayedBy, moveArrayItemByIndex, moveFocusTo, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setNetworkPolicy, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutElement, useCalloutRequestClose, useCanNavBack, useCanNavForward, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useNetworkPolicyReason, useOrderedColumns, usePopupMode, useRouteStatus, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideContainer, useSlideValue, useStateArray, useTitleLevel, useTransitionCover, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
82657
+ export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, CalloutStatusIcon, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, ControlSwap, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, Expandable, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, InfoSvg, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, OfflineError, Paragraph, Picker, Popover, Popup, Quantity, RadioGroup, Route, RouteTransitionArea, RouteTravel, RowNumberCol, RowNumberTableCell, SVGMaskOverlay, SearchSvg, Select, SelectableInput, SelectionContext, Separator, SettingsSvg, SidePanel, Slide, SlideContainer, Spin, SpinGroup, SplitButton, StarSvg, Step, StepList, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRange, TimeRangeSpin, TimeRangeWheel, TimeSpin, TimeWheel, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, canNavBackSignal, canNavForwardSignal, coarsePointerSignal, compareTwoJsValues, constraintFromValidityRule, createAction, createAvailableConstraint, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, dispatchRequestSetUIState, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, getNowHours, getNowHoursRoundedToStep, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markAsOutsideTextFlow, markErrorAsDisplayedBy, moveArrayItemByIndex, moveFocusTo, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, preloadUrl, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setNetworkPolicy, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutElement, useCalloutRequestClose, useCanNavBack, useCanNavForward, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useNetworkPolicyReason, useOrderedColumns, usePopupMode, useRouteStatus, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideContainer, useSlideValue, useStateArray, useTitleLevel, useTransitionCover, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
82529
82658
  //# sourceMappingURL=jsenv_navi.js.map