@jsenv/navi 0.29.83 → 0.29.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jsenv_navi.js +202 -32
- package/dist/jsenv_navi.js.map +12 -7
- package/docs/AI_INSTRUCTIONS.md +3 -1
- package/docs/control_object.md +83 -0
- package/docs/control_value.md +13 -0
- package/docs/navigation.md +39 -3
- package/package.json +1 -1
package/dist/jsenv_navi.js
CHANGED
|
@@ -22656,6 +22656,69 @@ const scrollTo = ({ x, y }) => {
|
|
|
22656
22656
|
const [publishBeforeRouting, observeBeforeRouting] = createPubSub();
|
|
22657
22657
|
const [publishAfterRouting, observeAfterRouting] = createPubSub();
|
|
22658
22658
|
|
|
22659
|
+
/**
|
|
22660
|
+
* Is there an entry of THIS document behind the current one? And ahead of it?
|
|
22661
|
+
*
|
|
22662
|
+
* A back arrow drawn inside an app promises to give back the screen it came
|
|
22663
|
+
* from — never the page the reader was on before the app. A url opened cold
|
|
22664
|
+
* (a shared link, a bookmark, a notification) has someone else's page under
|
|
22665
|
+
* it, and `window.history.length` cannot tell the two apart: it counts the
|
|
22666
|
+
* whole tab.
|
|
22667
|
+
*
|
|
22668
|
+
* So the count is kept here, and written into the state of each entry as it is
|
|
22669
|
+
* created, so it survives a reload in the middle of the stack. It cannot be
|
|
22670
|
+
* read back from an entry alone: a replaced entry inherits the state of the
|
|
22671
|
+
* one it takes the place of, so an entry's state does not say how it arrived.
|
|
22672
|
+
* Only the navigation being applied says that, which is why the integrations
|
|
22673
|
+
* (via_history.js, via_navigation.js) hand each navigation over here as they
|
|
22674
|
+
* apply it — the one place no push and no replace can escape.
|
|
22675
|
+
*/
|
|
22676
|
+
|
|
22677
|
+
|
|
22678
|
+
const NAV_DEPTH_STATE_KEY = "jsenv_nav_depth";
|
|
22679
|
+
|
|
22680
|
+
const canNavBackSignal = signal(false);
|
|
22681
|
+
const useCanNavBack = () => {
|
|
22682
|
+
return canNavBackSignal.value;
|
|
22683
|
+
};
|
|
22684
|
+
|
|
22685
|
+
const canNavForwardSignal = signal(false);
|
|
22686
|
+
const useCanNavForward = () => {
|
|
22687
|
+
return canNavForwardSignal.value;
|
|
22688
|
+
};
|
|
22689
|
+
|
|
22690
|
+
// How many entries of this document stand under the current one, and how high
|
|
22691
|
+
// the stack goes above it. Both are unknown for entries this document never
|
|
22692
|
+
// created (a fragment navigation makes its own, and the browser stores no
|
|
22693
|
+
// state on it): those leave the count as it is, which under-reports rather
|
|
22694
|
+
// than promising a screen that is not there.
|
|
22695
|
+
let navDepth = 0;
|
|
22696
|
+
let navDepthMax = 0;
|
|
22697
|
+
|
|
22698
|
+
const getNavDepth = () => navDepth;
|
|
22699
|
+
|
|
22700
|
+
const applyNavigationToNavDepth = (navigationType, state) => {
|
|
22701
|
+
if (navigationType === "push") {
|
|
22702
|
+
navDepth++;
|
|
22703
|
+
// A push cuts whatever stood ahead.
|
|
22704
|
+
navDepthMax = navDepth;
|
|
22705
|
+
} else if (navigationType === "replace") ; else {
|
|
22706
|
+
// load, reload, traverse: the entry itself says where it stands.
|
|
22707
|
+
const depthInState =
|
|
22708
|
+
state && typeof state[NAV_DEPTH_STATE_KEY] === "number"
|
|
22709
|
+
? state[NAV_DEPTH_STATE_KEY]
|
|
22710
|
+
: undefined;
|
|
22711
|
+
if (depthInState !== undefined) {
|
|
22712
|
+
navDepth = depthInState;
|
|
22713
|
+
if (navDepth > navDepthMax) {
|
|
22714
|
+
navDepthMax = navDepth;
|
|
22715
|
+
}
|
|
22716
|
+
}
|
|
22717
|
+
}
|
|
22718
|
+
canNavBackSignal.value = navDepth > 0;
|
|
22719
|
+
canNavForwardSignal.value = navDepth < navDepthMax;
|
|
22720
|
+
};
|
|
22721
|
+
|
|
22659
22722
|
/*
|
|
22660
22723
|
* A press aims at a place; it does not always go one step deeper. A row of tabs
|
|
22661
22724
|
* is a lateral move — the neighbour is one finger away — so the whole row should
|
|
@@ -22764,7 +22827,15 @@ const setupBrowserIntegrationViaHistory = ({
|
|
|
22764
22827
|
};
|
|
22765
22828
|
|
|
22766
22829
|
let abortController = null;
|
|
22767
|
-
const handleRoutingTask = (
|
|
22830
|
+
const handleRoutingTask = (target, options) => {
|
|
22831
|
+
// Everything below this line reasons on the URL as a whole: it is compared
|
|
22832
|
+
// to window.location.href, looked up in the history stack, written into the
|
|
22833
|
+
// document url signal and parsed there. A relative target ("/", "../x")
|
|
22834
|
+
// would silently lose every one of those — the browser would still resolve
|
|
22835
|
+
// it in pushState, but nothing else here would. So it is resolved once, at
|
|
22836
|
+
// the single door every navigation goes through, rather than by each caller
|
|
22837
|
+
// (navBack's fallback in particular arrives here raw).
|
|
22838
|
+
const url = new URL(target, window.location.href).href;
|
|
22768
22839
|
// Decided before anything is announced: an elided push IS the traversal it
|
|
22769
22840
|
// becomes, and the traversal will make its own announcements when the
|
|
22770
22841
|
// browser answers — a before/after cycle here would be about a navigation
|
|
@@ -22815,6 +22886,11 @@ const setupBrowserIntegrationViaHistory = ({
|
|
|
22815
22886
|
state,
|
|
22816
22887
|
} = options;
|
|
22817
22888
|
|
|
22889
|
+
// Where the entry being reached stands in this document's own stack —
|
|
22890
|
+
// decided before the state that carries it is built (see
|
|
22891
|
+
// document_back_and_forward.js).
|
|
22892
|
+
applyNavigationToNavDepth(navigationType, state);
|
|
22893
|
+
|
|
22818
22894
|
if (navigationType === "push" || navigationType === "replace") {
|
|
22819
22895
|
markUrlAsVisited(url);
|
|
22820
22896
|
// undefined → inherit current state (link click, neutral navigation)
|
|
@@ -22824,6 +22900,7 @@ const setupBrowserIntegrationViaHistory = ({
|
|
|
22824
22900
|
let effectiveState;
|
|
22825
22901
|
const sharedState = {
|
|
22826
22902
|
jsenv_visited_urls: Array.from(visitedUrlSet),
|
|
22903
|
+
[NAV_DEPTH_STATE_KEY]: getNavDepth(),
|
|
22827
22904
|
};
|
|
22828
22905
|
if (state === undefined) {
|
|
22829
22906
|
effectiveState = {
|
|
@@ -23026,8 +23103,18 @@ const setupBrowserIntegrationViaHistory = ({
|
|
|
23026
23103
|
});
|
|
23027
23104
|
};
|
|
23028
23105
|
|
|
23029
|
-
const navBack = () => {
|
|
23030
|
-
|
|
23106
|
+
const navBack = ({ fallback } = {}) => {
|
|
23107
|
+
if (canNavBackSignal.peek()) {
|
|
23108
|
+
window.history.back();
|
|
23109
|
+
return;
|
|
23110
|
+
}
|
|
23111
|
+
if (fallback === undefined) {
|
|
23112
|
+
return;
|
|
23113
|
+
}
|
|
23114
|
+
// Replace, not push: pushing the fallback would put the screen just left
|
|
23115
|
+
// one press ahead, and the device's own back button would walk straight
|
|
23116
|
+
// back into it — a loop with no way out of the app.
|
|
23117
|
+
navTo(fallback, { replace: true });
|
|
23031
23118
|
};
|
|
23032
23119
|
|
|
23033
23120
|
const navForward = () => {
|
|
@@ -23238,6 +23325,21 @@ const stopLoad = (reason = "stopLoad() called") => {
|
|
|
23238
23325
|
}
|
|
23239
23326
|
};
|
|
23240
23327
|
const reload = browserIntegration.reload;
|
|
23328
|
+
/**
|
|
23329
|
+
* Go back to the screen this document came from.
|
|
23330
|
+
*
|
|
23331
|
+
* Only ever within this document: at the bottom of the stack (a url opened
|
|
23332
|
+
* cold — a shared link, a bookmark, a notification), the entry underneath
|
|
23333
|
+
* belongs to whoever sent the reader here, and going back there would take
|
|
23334
|
+
* them out of the app. Ask `canNavBackSignal`/`useCanNavBack()` to know which
|
|
23335
|
+
* of the two cases the arrow is in.
|
|
23336
|
+
*
|
|
23337
|
+
* @param {object} [options]
|
|
23338
|
+
* @param {string} [options.fallback]
|
|
23339
|
+
* Where to land when there is nothing of this document behind. It takes the
|
|
23340
|
+
* place of the current entry rather than stacking on it. Without it, a
|
|
23341
|
+
* navBack() with nowhere to go does nothing.
|
|
23342
|
+
*/
|
|
23241
23343
|
const navBack = browserIntegration.navBack;
|
|
23242
23344
|
const navForward = browserIntegration.navForward;
|
|
23243
23345
|
const isVisited = browserIntegration.isVisited;
|
|
@@ -24928,6 +25030,20 @@ const useUIStateController = (
|
|
|
24928
25030
|
})
|
|
24929
25031
|
: ownUIStateSignal;
|
|
24930
25032
|
|
|
25033
|
+
// The two-way half of a bound `signal` prop: setting it re-renders and
|
|
25034
|
+
// re-syncs via state_prop_change, but with the same value → guarded as a
|
|
25035
|
+
// no-op, so no loop. For a checkbox/radio the signal holds the boolean
|
|
25036
|
+
// checked state.
|
|
25037
|
+
const writeBoundSignal = (uiState) => {
|
|
25038
|
+
const boundSignal = s.controlInfo?.signal;
|
|
25039
|
+
if (!boundSignal) {
|
|
25040
|
+
return;
|
|
25041
|
+
}
|
|
25042
|
+
boundSignal.value = s.controlInfo.signalHoldsChecked
|
|
25043
|
+
? uiState !== undefined
|
|
25044
|
+
: uiState;
|
|
25045
|
+
};
|
|
25046
|
+
|
|
24931
25047
|
const controller = {
|
|
24932
25048
|
controlType,
|
|
24933
25049
|
parentUIStateController,
|
|
@@ -24998,16 +25114,7 @@ const useUIStateController = (
|
|
|
24998
25114
|
}
|
|
24999
25115
|
// Trigger uiAction/command side effects without changing UI state.
|
|
25000
25116
|
const currentUIState = controller.uiState;
|
|
25001
|
-
|
|
25002
|
-
// prop). Setting it re-renders and re-syncs via state_prop_change, but
|
|
25003
|
-
// with the same value → guarded as a no-op, so no loop. For a
|
|
25004
|
-
// checkbox/radio the signal holds the boolean checked state.
|
|
25005
|
-
const boundSignal = s.controlInfo?.signal;
|
|
25006
|
-
if (boundSignal) {
|
|
25007
|
-
boundSignal.value = s.controlInfo.signalHoldsChecked
|
|
25008
|
-
? currentUIState !== undefined
|
|
25009
|
-
: currentUIState;
|
|
25010
|
-
}
|
|
25117
|
+
writeBoundSignal(currentUIState);
|
|
25011
25118
|
s.uiActionInternal?.(currentUIState, e);
|
|
25012
25119
|
if (s.uiAction) {
|
|
25013
25120
|
debugUIState(`calling uiAction for ${controlType}`, currentUIState);
|
|
@@ -25167,6 +25274,11 @@ const useUIStateController = (
|
|
|
25167
25274
|
}
|
|
25168
25275
|
}
|
|
25169
25276
|
if (isInternalEvent(e)) {
|
|
25277
|
+
if (isPropagateDownEvent(e)) {
|
|
25278
|
+
// A bound signal mirrors what the control holds, and what it
|
|
25279
|
+
// holds just changed — see isPropagateDownEvent.
|
|
25280
|
+
writeBoundSignal(newUIState);
|
|
25281
|
+
}
|
|
25170
25282
|
if (e.type === "facade_child_mount_sync") {
|
|
25171
25283
|
const wasEmptyString =
|
|
25172
25284
|
currentUIState === "" && newUIState === undefined;
|
|
@@ -25827,12 +25939,12 @@ const useUIGroupStateController = (
|
|
|
25827
25939
|
// makes from its own setUIState (see useUIStateController's boundSignal),
|
|
25828
25940
|
// for a group whose value is its children's put together.
|
|
25829
25941
|
//
|
|
25830
|
-
// Called from
|
|
25831
|
-
// the change is notified outward, syncInternalState when
|
|
25832
|
-
// brings itself up to date
|
|
25833
|
-
//
|
|
25834
|
-
//
|
|
25835
|
-
//
|
|
25942
|
+
// Called from every path where what the group holds really moves:
|
|
25943
|
+
// applyState when the change is notified outward, syncInternalState when
|
|
25944
|
+
// the group only brings itself up to date, and the value arriving from
|
|
25945
|
+
// above (see isPropagateDownEvent). Which one it is gets decided at each
|
|
25946
|
+
// call site rather than guessed at here — the initial push and the
|
|
25947
|
+
// mount/unmount syncs leave the signal alone.
|
|
25836
25948
|
const writeBoundSignal = (newUIState) => {
|
|
25837
25949
|
const boundSignal = s.props?.signal;
|
|
25838
25950
|
if (boundSignal) {
|
|
@@ -25935,6 +26047,9 @@ const useUIGroupStateController = (
|
|
|
25935
26047
|
return;
|
|
25936
26048
|
}
|
|
25937
26049
|
applyState(groupUIState, e, { internalBehavior: true });
|
|
26050
|
+
if (isPropagateDownEvent(e)) {
|
|
26051
|
+
writeBoundSignal(groupUIState);
|
|
26052
|
+
}
|
|
25938
26053
|
},
|
|
25939
26054
|
syncInternalState: (newUIState) => {
|
|
25940
26055
|
const currentUIState = controller.uiState;
|
|
@@ -26537,6 +26652,27 @@ const isInternalEvent = (e) => {
|
|
|
26537
26652
|
return INTERNAL_EVENT_SET.has(e.type);
|
|
26538
26653
|
};
|
|
26539
26654
|
|
|
26655
|
+
/**
|
|
26656
|
+
* A value handed DOWN to a control by whoever owns it: a picker filling its
|
|
26657
|
+
* popup (on open, and again when Escape puts back what it held), a group
|
|
26658
|
+
* placing its children, a reset cascading through them.
|
|
26659
|
+
*
|
|
26660
|
+
* Internal, so no reaction fires — nobody acted. But the control's state really
|
|
26661
|
+
* did move, and a bound `signal` is that state's mirror rather than a reaction
|
|
26662
|
+
* to it: leaving it behind makes the app and the control disagree about what is
|
|
26663
|
+
* on screen, which is how a popup reopens on the tab the user cancelled out of.
|
|
26664
|
+
* The way UP is deliberately not part of this: a picker's own signal is written
|
|
26665
|
+
* when the picker commits, not while its popup is being played with.
|
|
26666
|
+
*/
|
|
26667
|
+
const PROPAGATE_DOWN_EVENT_SET = new Set([
|
|
26668
|
+
"propagate_down_set_ui_state",
|
|
26669
|
+
"propagate_down_reset_ui_state",
|
|
26670
|
+
"propagate_down_clear_ui_state",
|
|
26671
|
+
]);
|
|
26672
|
+
const isPropagateDownEvent = (e) => {
|
|
26673
|
+
return PROPAGATE_DOWN_EVENT_SET.has(e.type);
|
|
26674
|
+
};
|
|
26675
|
+
|
|
26540
26676
|
/**
|
|
26541
26677
|
* The synthetic "input" event is how the new state reaches the outside world
|
|
26542
26678
|
* (`uiAction` is called from the input handler it triggers). It carries what
|
|
@@ -52100,8 +52236,8 @@ const causeOfEvent = event => {
|
|
|
52100
52236
|
const readArea = slideElement => slideElement.getAttribute("data-slide-area") || slideElement.id || "";
|
|
52101
52237
|
|
|
52102
52238
|
/**
|
|
52103
|
-
* The slide shown can be driven from outside (`
|
|
52104
|
-
* left to the container, which then answers the
|
|
52239
|
+
* The slide shown can be driven from outside (a `signal`, or `current` +
|
|
52240
|
+
* `onCurrentChange`) or left to the container, which then answers the
|
|
52105
52241
|
* --navi-left/--navi-right/--navi-up/--navi-down commands sent from anything
|
|
52106
52242
|
* inside it.
|
|
52107
52243
|
*
|
|
@@ -52134,6 +52270,15 @@ const readArea = slideElement => slideElement.getAttribute("data-slide-area") ||
|
|
|
52134
52270
|
* written is simply not there.
|
|
52135
52271
|
* @param {string} [props.current] - area (or id) of the slide being shown; omit
|
|
52136
52272
|
* to keep it here and drive it by command.
|
|
52273
|
+
* @param {import("@preact/signals").Signal<string>} [props.signal] - the same
|
|
52274
|
+
* thing said the way every navi control says it: the container shows the area
|
|
52275
|
+
* the signal holds, and writes into it the area it travels to. One binding
|
|
52276
|
+
* instead of `current` + `onCurrentChange`, and the state stays where the app
|
|
52277
|
+
* put it — which is what lets something else read where the slides are (a
|
|
52278
|
+
* field carrying the current tab into a form, see
|
|
52279
|
+
* docs/control_object.md#a-settings-sheet) or move them by writing it.
|
|
52280
|
+
* Excludes `current`; `onCurrentChange` still fires, for the `cause` and for
|
|
52281
|
+
* the right to refuse.
|
|
52137
52282
|
* @param {string} [props.defaultCurrent] - which slide to open on, when the
|
|
52138
52283
|
* travel is left to the container. Mount-only, like every other `default*`:
|
|
52139
52284
|
* it says where one starts, not where one is — say `current` for that.
|
|
@@ -52205,6 +52350,7 @@ const readArea = slideElement => slideElement.getAttribute("data-slide-area") ||
|
|
|
52205
52350
|
const SlideContainer = ({
|
|
52206
52351
|
layout = "row",
|
|
52207
52352
|
current: currentProp,
|
|
52353
|
+
signal: currentSignal,
|
|
52208
52354
|
defaultCurrent,
|
|
52209
52355
|
onCurrentChange,
|
|
52210
52356
|
commit = "now",
|
|
@@ -52303,7 +52449,8 @@ const SlideContainer = ({
|
|
|
52303
52449
|
// draw in CSS alone, at the pace of the travel and under the finger, with
|
|
52304
52450
|
// nothing measured per frame.
|
|
52305
52451
|
const followerElementsRef = useRef([]);
|
|
52306
|
-
const
|
|
52452
|
+
const currentFromCaller = currentSignal ? currentSignal.value : currentProp;
|
|
52453
|
+
const current = rollingArea ?? provisionalArea ?? currentFromCaller ?? currentAreaState;
|
|
52307
52454
|
const vertical = layout === "column";
|
|
52308
52455
|
// What the map has, and what each way of asking is allowed to use of it.
|
|
52309
52456
|
const mapAxes = travelAxesOf(layout);
|
|
@@ -52338,11 +52485,11 @@ const SlideContainer = ({
|
|
|
52338
52485
|
if (provisionalArea === null) {
|
|
52339
52486
|
return;
|
|
52340
52487
|
}
|
|
52341
|
-
const heldOutside =
|
|
52488
|
+
const heldOutside = currentFromCaller ?? currentAreaState;
|
|
52342
52489
|
if (heldOutside === provisionalArea) {
|
|
52343
52490
|
setProvisionalArea(null);
|
|
52344
52491
|
}
|
|
52345
|
-
}, [provisionalArea,
|
|
52492
|
+
}, [provisionalArea, currentFromCaller, currentAreaState]);
|
|
52346
52493
|
|
|
52347
52494
|
// The travel is given back as soon as the picture it must not animate has
|
|
52348
52495
|
// been painted: one frame with it off is all it takes.
|
|
@@ -52519,10 +52666,10 @@ const SlideContainer = ({
|
|
|
52519
52666
|
const commitAtRest = commitAtRestRef.current;
|
|
52520
52667
|
if (commitAtRest && commitAtRest.area === currentArea) {
|
|
52521
52668
|
commitAtRestRef.current = null;
|
|
52522
|
-
|
|
52669
|
+
tellCurrentChange(commitAtRest.area, {
|
|
52523
52670
|
cause: commitAtRest.cause,
|
|
52524
52671
|
event: commitAtRest.event
|
|
52525
|
-
}
|
|
52672
|
+
}, commitAtRest.leftArea);
|
|
52526
52673
|
}
|
|
52527
52674
|
};
|
|
52528
52675
|
|
|
@@ -52896,7 +53043,7 @@ const SlideContainer = ({
|
|
|
52896
53043
|
}
|
|
52897
53044
|
const leftArea = readArea(currentElement);
|
|
52898
53045
|
setCurrentAreaState(area);
|
|
52899
|
-
if (!onCurrentChange) {
|
|
53046
|
+
if (!onCurrentChange && !currentSignal) {
|
|
52900
53047
|
return true;
|
|
52901
53048
|
}
|
|
52902
53049
|
// What asked for this, read off the interaction rather than carried down
|
|
@@ -52920,13 +53067,26 @@ const SlideContainer = ({
|
|
|
52920
53067
|
};
|
|
52921
53068
|
return true;
|
|
52922
53069
|
}
|
|
52923
|
-
|
|
53070
|
+
tellCurrentChange(area, {
|
|
52924
53071
|
cause,
|
|
52925
53072
|
event
|
|
52926
|
-
}
|
|
53073
|
+
}, leftArea);
|
|
52927
53074
|
return true;
|
|
52928
53075
|
};
|
|
52929
53076
|
|
|
53077
|
+
// The caller learns where the container went: the bound signal is written and
|
|
53078
|
+
// `onCurrentChange` is called, in that order, so a caller reading the signal
|
|
53079
|
+
// from inside its own handler reads where it now is.
|
|
53080
|
+
const tellCurrentChange = (area, detail, leftArea) => {
|
|
53081
|
+
if (currentSignal) {
|
|
53082
|
+
currentSignal.value = area;
|
|
53083
|
+
}
|
|
53084
|
+
if (!onCurrentChange) {
|
|
53085
|
+
return;
|
|
53086
|
+
}
|
|
53087
|
+
answerCurrentChange(onCurrentChange(area, detail), leftArea);
|
|
53088
|
+
};
|
|
53089
|
+
|
|
52930
53090
|
// What a caller says back about a change it was told about: nothing, or a
|
|
52931
53091
|
// refusal. `false` refuses it — a guard that says no, a session that is gone —
|
|
52932
53092
|
// and a promise refuses it late, once whatever it had to ask has answered. A
|
|
@@ -52948,6 +53108,9 @@ const SlideContainer = ({
|
|
|
52948
53108
|
const goBackToRefusedArea = leftArea => {
|
|
52949
53109
|
setProvisionalArea(null);
|
|
52950
53110
|
setCurrentAreaState(leftArea);
|
|
53111
|
+
if (currentSignal) {
|
|
53112
|
+
currentSignal.value = leftArea;
|
|
53113
|
+
}
|
|
52951
53114
|
};
|
|
52952
53115
|
|
|
52953
53116
|
// The press kept during a roll, taken once the window rests and the travel is
|
|
@@ -55253,7 +55416,12 @@ installImportMetaCssBuild(import.meta);const css$z = /* css */`
|
|
|
55253
55416
|
/* The list scrolls inside the popover */
|
|
55254
55417
|
.navi_list_container {
|
|
55255
55418
|
width: 100%;
|
|
55256
|
-
border-radius:
|
|
55419
|
+
/* The list's radius var, not border-radius itself: the longhands it
|
|
55420
|
+
feeds are what read the --x-corner-*-radius claims coming from
|
|
55421
|
+
outside (a header/footer covering a corner, a flush body — see
|
|
55422
|
+
box.jsx). Writing the shorthand here would flatten those four
|
|
55423
|
+
longhands back to one curve and square nothing. */
|
|
55424
|
+
--list-border-radius: max(
|
|
55257
55425
|
0px,
|
|
55258
55426
|
var(--picker-border-radius) - var(--picker-border-width)
|
|
55259
55427
|
);
|
|
@@ -55319,7 +55487,9 @@ installImportMetaCssBuild(import.meta);const css$z = /* css */`
|
|
|
55319
55487
|
|
|
55320
55488
|
.navi_list_container {
|
|
55321
55489
|
width: 100%;
|
|
55322
|
-
|
|
55490
|
+
/* See the popover block above: the var, not the shorthand, so the
|
|
55491
|
+
corner claims survive. */
|
|
55492
|
+
--list-border-radius: max(
|
|
55323
55493
|
0px,
|
|
55324
55494
|
var(--picker-border-radius) - var(--picker-border-width)
|
|
55325
55495
|
);
|
|
@@ -75208,5 +75378,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
75208
75378
|
})
|
|
75209
75379
|
});
|
|
75210
75380
|
|
|
75211
|
-
export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, 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, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRangeSpin, TimeSpin, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, coarsePointerSignal, compareTwoJsValues, createAction, createAvailableConstraint, createI18n, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineNaviConfirmPopupOptions, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, formatDatetime, formatDay, formatDayRelative, formatMonth, formatNumber, formatTime, formatTimeRelative, getNowHours, getNowHoursRoundedToStep, interpolateText, isCellSelected, isColumnSelected, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markErrorAsDisplayedBy, moveArrayItemByIndex, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutRequestClose, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useOrderedColumns, usePopupMode, useRouteStatus, useRunOnMount, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideValue, useStateArray, useTitleLevel, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
75381
|
+
export { ActionRenderer, ActiveKeyboardShortcuts, Address, Badge, BadgeCount, BadgeList, Binder, Box, Button, ButtonCopyToClipboard, Caption, CardLayout, CheckSvg, CheckboxGroup, CloseSvg, Code, Col, Colgroup, Color, ConstructionSvg, ControlGroup, DaySpin, Details, Dialog, Editable, ErrorBoundary, ErrorBoundaryContext, ExclamationSvg, EyeClosedSvg, EyeSvg, Field, FixedBar, Form, Group, Head, HeartSvg, HomeSvg, Icon, Image, Input, InputDuration, Interpolate, Label, Link, LinkAnchorSvg, LinkBlankTargetSvg, LinkCurrentSvg, List, ListItem, ListItemGroup, ListItems, Loading, LoadingDotsSvg, LoadingIndicator, LoadingIndicatorFluid, LoadingOutline, MessageBox, Meter, Nav, NaviDebug, NumberSpin, 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, SummaryMarker, Svg, Table, TableCell, Tbody, Text, TextBox, Textarea, TextareaCharCount, Thead, Time, TimeRangeSpin, TimeSpin, Title, Tr, UITransition, Unit, UserSvg, ViewportLayout, Wheel, WheelGroup, WheelItem, actionRunEffect, anyMatchingRouteSignal, applySearch, arraySignalMembership, canNavBackSignal, canNavForwardSignal, coarsePointerSignal, compareTwoJsValues, createAction, createAvailableConstraint, createI18n, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineNaviConfirmPopupOptions, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, formatDatetime, formatDay, formatDayRelative, formatMonth, formatNumber, formatTime, formatTimeRelative, getNowHours, getNowHoursRoundedToStep, interpolateText, isCellSelected, isColumnSelected, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markErrorAsDisplayedBy, moveArrayItemByIndex, navBack, navForward, navIntegratedVia, navTo, naviI18n, openCallout, rawUrlPart, registerGlobalConstraint, reload, rerunActions, resource, route, routeAction, scrollActivitySignal, setBaseUrl, setPreferredLanguage, setSupportedLanguages, setUrlTargetOptions, setupRoutes, smallTouchScreenSignal, stateSignal, stopLoad, stringifyTableSelectionValue, swapArrayItemByIndex, syncOwnedResourceToSignals, syncResourceToSignals, triggerNaviCommand, updateActions, useActionStatus, useArraySignalMembership, useAsyncData, useCalloutRequestClose, useCanNavBack, useCanNavForward, useCancelPrevious, useCellGridFromRows, useConstraintValidityState, useDependenciesDiff, useDisplayedLayoutEffect, useDocumentResource, useDocumentState, useDocumentUrl, useEditionController, useFocusGroup, useInputGroup, useKeyboardShortcuts, useNavState, useOrderedColumns, usePopupMode, useRouteStatus, useRunOnMount, useSearchText, useSelectableElement, useSelectionController, useSignalSync, useSlideValue, useStateArray, useTitleLevel, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
75212
75382
|
//# sourceMappingURL=jsenv_navi.js.map
|