@jsenv/navi 0.29.146 → 0.29.147
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 +129 -112
- package/dist/jsenv_navi.js.map +18 -11
- package/docs/AI_INSTRUCTIONS.md +12 -7
- package/docs/actions.md +4 -0
- package/docs/autofocus.md +68 -2
- package/docs/control_value.md +32 -0
- package/docs/popup_open.md +18 -0
- package/docs/state_binding.md +34 -0
- package/package.json +1 -1
package/dist/jsenv_navi.js
CHANGED
|
@@ -17086,7 +17086,7 @@ const useActionAsyncData = (action, {
|
|
|
17086
17086
|
}) => {
|
|
17087
17087
|
const loadingRef = useContext(LoadingContext);
|
|
17088
17088
|
if (!loadingRef) {
|
|
17089
|
-
throw new Error(
|
|
17089
|
+
throw new Error(`Missing <Loading>: useAsyncData delegates the wait, so it needs a <Loading> boundary above it — or "loading: true" to draw that wait here.`);
|
|
17090
17090
|
}
|
|
17091
17091
|
useOnLoad(action, onLoad);
|
|
17092
17092
|
|
|
@@ -31606,8 +31606,44 @@ const retryWhenPlaceable = (
|
|
|
31606
31606
|
};
|
|
31607
31607
|
};
|
|
31608
31608
|
|
|
31609
|
+
/**
|
|
31610
|
+
* Focuses `element` the way navi focuses anything: without the browser's
|
|
31611
|
+
* scroll-into-view, and showing a ring only when the user is on the keyboard.
|
|
31612
|
+
*
|
|
31613
|
+
* Both are decisions, not details. The scroll reads geometry a layout effect
|
|
31614
|
+
* may still be deciding. And whether a ring shows belongs to the modality of
|
|
31615
|
+
* what asked for this — a press with a finger or a mouse must not leave an
|
|
31616
|
+
* outline nobody asked for, a movement asked for with a key must — never to
|
|
31617
|
+
* the fact that the call came from code, which is all the browser can see. An
|
|
31618
|
+
* editable target outranks the modality: someone about to type has to see
|
|
31619
|
+
* where.
|
|
31620
|
+
*
|
|
31621
|
+
* So a bare `element.focus()` is the thing to avoid, in navi and in an app
|
|
31622
|
+
* using it: it answers "who" and leaves "is this visible" to the browser.
|
|
31623
|
+
*
|
|
31624
|
+
* @param {HTMLElement} element
|
|
31625
|
+
* @param {object} [options]
|
|
31626
|
+
* @param {boolean} [options.focusVisible] Decides the ring instead of the
|
|
31627
|
+
* modality — for a caller that knows better than the last interaction does
|
|
31628
|
+
* (a transfer speaking for the gesture that opened a container, say).
|
|
31629
|
+
* @param {boolean} [options.preventScroll=true] Pass false to let the browser
|
|
31630
|
+
* scroll the element into view.
|
|
31631
|
+
*/
|
|
31632
|
+
const moveFocusTo = (
|
|
31633
|
+
element,
|
|
31634
|
+
{ focusVisible, preventScroll = true } = {},
|
|
31635
|
+
) => {
|
|
31636
|
+
element.focus({
|
|
31637
|
+
preventScroll,
|
|
31638
|
+
focusVisible:
|
|
31639
|
+
focusVisible === undefined
|
|
31640
|
+
? isKeyboardModality() || isEditableTarget(element)
|
|
31641
|
+
: focusVisible,
|
|
31642
|
+
});
|
|
31643
|
+
};
|
|
31644
|
+
|
|
31609
31645
|
const focusTransferTarget = (target, focusVisible) => {
|
|
31610
|
-
target
|
|
31646
|
+
moveFocusTo(target, { focusVisible });
|
|
31611
31647
|
if (target.hasAttribute("navi-autofocus-select")) {
|
|
31612
31648
|
target.select();
|
|
31613
31649
|
// Keep the beginning of the text visible instead of scrolling to the end
|
|
@@ -44562,40 +44598,41 @@ installImportMetaCssBuild(import.meta);/**
|
|
|
44562
44598
|
* a switch that moves when you flip it: the finger that opened the search has
|
|
44563
44599
|
* to travel to close it again. Out here, the same pixel does both.
|
|
44564
44600
|
*
|
|
44565
|
-
* Nothing is unmounted. Two elements that never
|
|
44566
|
-
* interpolate between, so both
|
|
44567
|
-
*
|
|
44568
|
-
*
|
|
44569
|
-
*
|
|
44570
|
-
*
|
|
44571
|
-
*
|
|
44572
|
-
*
|
|
44573
|
-
*
|
|
44574
|
-
*
|
|
44575
|
-
*
|
|
44576
|
-
*
|
|
44577
|
-
*
|
|
44578
|
-
*
|
|
44579
|
-
*
|
|
44580
|
-
*
|
|
44581
|
-
*
|
|
44582
|
-
*
|
|
44583
|
-
*
|
|
44584
|
-
* defaulting to the height of a navi control at its default padding; a row of
|
|
44585
|
-
* roomier controls says so once, there.
|
|
44601
|
+
* Nothing is unmounted, and nothing is resized. Two elements that never
|
|
44602
|
+
* coexist have nothing to interpolate between, so both controls stay mounted
|
|
44603
|
+
* and laid out at all times, side by side on a track twice the width of the
|
|
44604
|
+
* middle; the track slides, and one control pushes the other out under the cap
|
|
44605
|
+
* it belongs to. A share of the middle traded between two shrinking boxes
|
|
44606
|
+
* gives a wipe instead — each control squeezed live, text rewrapping under the
|
|
44607
|
+
* movement, and nothing that reads as one thing arriving over another.
|
|
44608
|
+
*
|
|
44609
|
+
* The control without the floor is off the middle rather than gone: `inert`,
|
|
44610
|
+
* so no finger and no Tab reaches it, and holding what was typed in it for the
|
|
44611
|
+
* round trip back.
|
|
44612
|
+
*
|
|
44613
|
+
* The row has ONE height, and everything in it is that tall: the caps are
|
|
44614
|
+
* squares of it, the controls are given it. Nothing is measured — a height
|
|
44615
|
+
* read off the controls could only come back through a resize observer, and a
|
|
44616
|
+
* cap made square with `aspect-ratio` never reads it anyway (on a flex item
|
|
44617
|
+
* stretched to its line, the main size is resolved from content first). It is
|
|
44618
|
+
* a length, `--navi-control-swap-size`, and it is the only thing to say to
|
|
44619
|
+
* make the row thinner or thicker.
|
|
44586
44620
|
*/
|
|
44587
44621
|
const css$O = /* css */`.navi_control_swap {
|
|
44588
|
-
--x-control-swap-size: var(--navi-control-swap-size, calc(var(--navi-control-line-height) + 2 *
|
|
44589
|
-
var(--navi-control-padding-y-default) + 2 *
|
|
44622
|
+
--x-control-swap-size: var(--navi-control-swap-size, calc(var(--navi-control-line-height) + 2 * var(--navi-s) + 2 *
|
|
44590
44623
|
var(--navi-control-border-width)));
|
|
44624
|
+
--x-control-swap-gap: var(--navi-control-swap-gap, var(--navi-xs));
|
|
44591
44625
|
height: var(--x-control-swap-size);
|
|
44592
44626
|
align-items: stretch;
|
|
44627
|
+
gap: var(--x-control-swap-gap);
|
|
44593
44628
|
|
|
44594
44629
|
& > .navi_control_swap_cap {
|
|
44595
|
-
|
|
44630
|
+
aspect-ratio: 1;
|
|
44631
|
+
flex: none;
|
|
44596
44632
|
justify-content: center;
|
|
44597
|
-
align-self: stretch;
|
|
44598
44633
|
align-items: center;
|
|
44634
|
+
min-width: 0;
|
|
44635
|
+
height: 100%;
|
|
44599
44636
|
position: relative;
|
|
44600
44637
|
|
|
44601
44638
|
& .navi_control_swap_badge {
|
|
@@ -44612,51 +44649,43 @@ const css$O = /* css */`.navi_control_swap {
|
|
|
44612
44649
|
}
|
|
44613
44650
|
|
|
44614
44651
|
& > .navi_control_swap_stage {
|
|
44615
|
-
|
|
44652
|
+
overflow-clip-margin: var(--navi-focus-outline-width);
|
|
44616
44653
|
flex: 1 1 0;
|
|
44617
44654
|
min-width: 0;
|
|
44618
44655
|
display: flex;
|
|
44656
|
+
overflow: clip;
|
|
44619
44657
|
container-type: inline-size;
|
|
44658
|
+
}
|
|
44659
|
+
|
|
44660
|
+
& > .navi_control_swap_stage > .navi_control_swap_track {
|
|
44661
|
+
gap: var(--x-control-swap-gap);
|
|
44662
|
+
flex-direction: row;
|
|
44663
|
+
flex: none;
|
|
44664
|
+
height: 100%;
|
|
44665
|
+
display: flex;
|
|
44620
44666
|
|
|
44621
44667
|
& > .navi_control_swap_slot {
|
|
44622
|
-
flex:
|
|
44623
|
-
min-width: 0;
|
|
44668
|
+
flex: 0 0 100cqw;
|
|
44624
44669
|
display: flex;
|
|
44625
|
-
overflow: hidden;
|
|
44626
|
-
|
|
44627
|
-
& > .navi_control_swap_control {
|
|
44628
|
-
flex-direction: column;
|
|
44629
|
-
flex: none;
|
|
44630
|
-
justify-content: center;
|
|
44631
|
-
width: 100cqw;
|
|
44632
|
-
display: flex;
|
|
44633
44670
|
|
|
44634
|
-
|
|
44635
|
-
|
|
44636
|
-
|
|
44637
|
-
}
|
|
44638
|
-
|
|
44639
|
-
&[data-collapsed] {
|
|
44640
|
-
flex-grow: 0;
|
|
44641
|
-
}
|
|
44642
|
-
|
|
44643
|
-
&[data-pinned="end"] {
|
|
44644
|
-
justify-content: flex-end;
|
|
44671
|
+
& > * {
|
|
44672
|
+
width: 100%;
|
|
44673
|
+
height: 100%;
|
|
44645
44674
|
}
|
|
44646
44675
|
}
|
|
44647
44676
|
}
|
|
44648
44677
|
|
|
44649
|
-
&[data-
|
|
44650
|
-
|
|
44678
|
+
&[data-active-index="1"] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
44679
|
+
transform: translateX(calc(-100cqw - var(--x-control-swap-gap)));
|
|
44651
44680
|
}
|
|
44652
44681
|
|
|
44653
|
-
&[data-animation] > .navi_control_swap_stage > .
|
|
44654
|
-
transition:
|
|
44682
|
+
&[data-animation] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
44683
|
+
transition: transform var(--navi-control-swap-animation-duration, .22s)
|
|
44655
44684
|
ease;
|
|
44656
44685
|
}
|
|
44657
44686
|
|
|
44658
44687
|
@media (prefers-reduced-motion: reduce) {
|
|
44659
|
-
&[data-animation] > .navi_control_swap_stage > .
|
|
44688
|
+
&[data-animation] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
44660
44689
|
transition: none;
|
|
44661
44690
|
}
|
|
44662
44691
|
}
|
|
@@ -44681,13 +44710,14 @@ const css$O = /* css */`.navi_control_swap {
|
|
|
44681
44710
|
* side's name back into it whenever a press swaps it. Excludes `value`.
|
|
44682
44711
|
* @param onChange - Called with the name of the side taking the floor, and the
|
|
44683
44712
|
* press that gave it.
|
|
44684
|
-
* @param animation - On by default: the
|
|
44685
|
-
*
|
|
44686
|
-
*
|
|
44687
|
-
*
|
|
44688
|
-
* The row is one length tall — `--navi-control-swap-size`,
|
|
44689
|
-
*
|
|
44690
|
-
*
|
|
44713
|
+
* @param animation - On by default: the track slides from one control to the
|
|
44714
|
+
* other over `--navi-control-swap-animation-duration` (0.22s). `false` puts
|
|
44715
|
+
* it there in one frame; `prefers-reduced-motion` does too.
|
|
44716
|
+
*
|
|
44717
|
+
* The row is one length tall — `--navi-control-swap-size`, a line of text
|
|
44718
|
+
* between two `s` paddings — and everything in it is that tall: the caps are
|
|
44719
|
+
* squares of it, the control holding the floor fills it. `--navi-control-swap-gap`
|
|
44720
|
+
* is the space between the boxes.
|
|
44691
44721
|
*/
|
|
44692
44722
|
const ControlSwap = props => {
|
|
44693
44723
|
import.meta.css = [css$O, "@jsenv/navi/src/control/control_swap/control_swap.jsx"];
|
|
@@ -44718,16 +44748,12 @@ const ControlSwap = props => {
|
|
|
44718
44748
|
const slotIdPrefix = useId();
|
|
44719
44749
|
const activeNameRef = useRef(activeName);
|
|
44720
44750
|
activeNameRef.current = activeSide.name;
|
|
44721
|
-
|
|
44722
|
-
// The movement is over and the slots are where they belong (see the CSS).
|
|
44723
|
-
const [settled, setSettled] = useState(true);
|
|
44724
44751
|
const swapTo = (name, event) => {
|
|
44725
44752
|
if (name === activeNameRef.current) {
|
|
44726
44753
|
return;
|
|
44727
44754
|
}
|
|
44728
44755
|
activeNameRef.current = name;
|
|
44729
44756
|
setActiveName(name);
|
|
44730
|
-
setSettled(!animation);
|
|
44731
44757
|
if (signal) {
|
|
44732
44758
|
signal.value = name;
|
|
44733
44759
|
}
|
|
@@ -44758,16 +44784,9 @@ const ControlSwap = props => {
|
|
|
44758
44784
|
useLayoutEffect(() => {
|
|
44759
44785
|
if (isFirstActiveRunRef.current) {
|
|
44760
44786
|
isFirstActiveRunRef.current = false;
|
|
44761
|
-
return
|
|
44762
|
-
}
|
|
44763
|
-
const activeSlot = slotRefs[activeIndex].current;
|
|
44764
|
-
focusWithTheFloor(activeSlot, activeSide, capRefs[activeIndex].current);
|
|
44765
|
-
if (!animation) {
|
|
44766
|
-
return undefined;
|
|
44787
|
+
return;
|
|
44767
44788
|
}
|
|
44768
|
-
|
|
44769
|
-
setSettled(true);
|
|
44770
|
-
});
|
|
44789
|
+
focusWithTheFloor(slotRefs[activeIndex].current, activeSide, capRefs[activeIndex].current);
|
|
44771
44790
|
}, [activeSide.name]);
|
|
44772
44791
|
|
|
44773
44792
|
// Both caps do the same thing, and it is the reason they sit outside the
|
|
@@ -44781,7 +44800,7 @@ const ControlSwap = props => {
|
|
|
44781
44800
|
baseClassName: "navi_control_swap",
|
|
44782
44801
|
role: "group",
|
|
44783
44802
|
"data-animation": animation ? "" : undefined,
|
|
44784
|
-
"data-
|
|
44803
|
+
"data-active-index": activeIndex,
|
|
44785
44804
|
...rest,
|
|
44786
44805
|
children: [jsx(ControlSwapCap, {
|
|
44787
44806
|
ref: capRefs[0],
|
|
@@ -44791,18 +44810,16 @@ const ControlSwap = props => {
|
|
|
44791
44810
|
onPress: swapOnPress
|
|
44792
44811
|
}), jsx("div", {
|
|
44793
44812
|
className: "navi_control_swap_stage",
|
|
44794
|
-
children:
|
|
44795
|
-
|
|
44796
|
-
|
|
44797
|
-
|
|
44798
|
-
|
|
44799
|
-
|
|
44800
|
-
|
|
44801
|
-
children: jsx("div", {
|
|
44802
|
-
className: "navi_control_swap_control",
|
|
44813
|
+
children: jsx("div", {
|
|
44814
|
+
className: "navi_control_swap_track",
|
|
44815
|
+
children: sides.map((side, index) => jsx("div", {
|
|
44816
|
+
ref: slotRefs[index],
|
|
44817
|
+
id: `${slotIdPrefix}_${index}`,
|
|
44818
|
+
className: "navi_control_swap_slot",
|
|
44819
|
+
inert: index === activeIndex ? undefined : true,
|
|
44803
44820
|
children: side.children
|
|
44804
|
-
})
|
|
44805
|
-
}
|
|
44821
|
+
}, side.name))
|
|
44822
|
+
})
|
|
44806
44823
|
}), jsx(ControlSwapCap, {
|
|
44807
44824
|
ref: capRefs[1],
|
|
44808
44825
|
side: sides[1],
|
|
@@ -44835,10 +44852,11 @@ const ControlSwap = props => {
|
|
|
44835
44852
|
* doing something (a filter set, a search typed). `true` draws a dot;
|
|
44836
44853
|
* anything else is drawn as given (a `<BadgeCount>`, say).
|
|
44837
44854
|
* @param autoFocus - On by default: the focus goes into this control when it
|
|
44838
|
-
* takes the floor
|
|
44839
|
-
* `false` leaves it on the cap
|
|
44840
|
-
*
|
|
44841
|
-
* on mount, whatever the
|
|
44855
|
+
* takes the floor, where navi's ladder puts it — an `autoFocus` inside the
|
|
44856
|
+
* control first, its first focusable otherwise. `false` leaves it on the cap
|
|
44857
|
+
* that was pressed, for a control one reads before writing in (and, on a
|
|
44858
|
+
* phone, for a keyboard that must not rise). Never on mount, whatever the
|
|
44859
|
+
* setting.
|
|
44842
44860
|
*/
|
|
44843
44861
|
const ControlSwapSide = () => null;
|
|
44844
44862
|
const ControlSwapCap = ({
|
|
@@ -44856,14 +44874,14 @@ const ControlSwapCap = ({
|
|
|
44856
44874
|
return jsxs(Button, {
|
|
44857
44875
|
ref: ref,
|
|
44858
44876
|
className: "navi_control_swap_cap",
|
|
44859
|
-
variant: "discrete",
|
|
44860
44877
|
icon: true,
|
|
44878
|
+
pressEffect: "none",
|
|
44861
44879
|
"aria-label": label,
|
|
44862
44880
|
"aria-expanded": active,
|
|
44863
44881
|
"aria-controls": slotId,
|
|
44864
44882
|
onClick: onPress,
|
|
44865
44883
|
children: [jsx(Icon, {
|
|
44866
|
-
width: "
|
|
44884
|
+
width: "50%",
|
|
44867
44885
|
square: true,
|
|
44868
44886
|
children: icon
|
|
44869
44887
|
}), badge ? jsx("span", {
|
|
@@ -44894,34 +44912,33 @@ const readSides = children => {
|
|
|
44894
44912
|
|
|
44895
44913
|
// The floor moved: the press that gave it landed on a cap, and what one wants
|
|
44896
44914
|
// next is the control that just arrived — typing into the search field one just
|
|
44897
|
-
// opened, not pressing its icon again.
|
|
44898
|
-
//
|
|
44899
|
-
//
|
|
44900
|
-
//
|
|
44901
|
-
|
|
44902
|
-
|
|
44903
|
-
|
|
44904
|
-
|
|
44905
|
-
|
|
44915
|
+
// opened, not pressing its icon again.
|
|
44916
|
+
//
|
|
44917
|
+
// WHERE inside is navi's own ladder (findFocusTarget): an `autoFocus` in the
|
|
44918
|
+
// control's own content first, the first focusable otherwise, a last resort
|
|
44919
|
+
// after that. Unlike an arriving popup it keeps the first focusable even where
|
|
44920
|
+
// the pointer is coarse (see docs/autofocus.md): a cap is pressed to reach the
|
|
44921
|
+
// control it names, so a keyboard rising is the answer to that gesture rather
|
|
44922
|
+
// than a cost imposed on a screen that merely appeared. A side one reads before
|
|
44923
|
+
// writing in says `autoFocus={false}`.
|
|
44924
|
+
const focusWithTheFloor = (arrivingSlot, arrivingSide, arrivingCap) => {
|
|
44925
|
+
if (arrivingSide.autoFocus !== false) {
|
|
44926
|
+
const found = findFocusTarget(arrivingSlot);
|
|
44927
|
+
if (found) {
|
|
44928
|
+
moveFocusTo(found.target);
|
|
44906
44929
|
return;
|
|
44907
44930
|
}
|
|
44908
44931
|
}
|
|
44932
|
+
// Whatever the leaving slot held is inert and off the window now, so the
|
|
44933
|
+
// browser dropped its focus to the document body: it has to land somewhere,
|
|
44934
|
+
// and the cap of the side taking over is where the gesture was.
|
|
44909
44935
|
const {
|
|
44910
44936
|
activeElement
|
|
44911
44937
|
} = document;
|
|
44912
44938
|
if (!activeElement || activeElement === document.body) {
|
|
44913
|
-
|
|
44939
|
+
moveFocusTo(arrivingCap);
|
|
44914
44940
|
}
|
|
44915
44941
|
};
|
|
44916
|
-
const findElementToFocus = slot => {
|
|
44917
|
-
const autofocusElement = slot.querySelector("[autofocus]");
|
|
44918
|
-
if (autofocusElement) {
|
|
44919
|
-
return autofocusElement;
|
|
44920
|
-
}
|
|
44921
|
-
return findAfter(slot, elementIsFocusable, {
|
|
44922
|
-
root: slot
|
|
44923
|
-
});
|
|
44924
|
-
};
|
|
44925
44942
|
|
|
44926
44943
|
const DEFAULT_VALIDITY_STATE = { valid: true, reported: null };
|
|
44927
44944
|
|
|
@@ -79532,5 +79549,5 @@ const UserSvg = () => jsx("svg", {
|
|
|
79532
79549
|
})
|
|
79533
79550
|
});
|
|
79534
79551
|
|
|
79535
|
-
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, createI18n, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, formatDatetime, formatDay, formatDayRelative, formatMonth, formatNumber, formatTime, formatTimeRelative, getNowHours, getNowHoursRoundedToStep, interpolateText, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, markErrorAsDisplayedBy, moveArrayItemByIndex, 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, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
79552
|
+
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, createI18n, createRequestCanceller, createSearch, createSelectionKeyboardShortcuts, createSlot, defineInteractionDetector, defineRouteDefaultTransition, defineRouteTransition, detectHorizontalOverflow, enableDebugActions, enableDebugOnDocumentLoading, ensureDocumentStartViewTransition, errorIsDisplayed, filterTableSelection, formatDatetime, formatDay, formatDayRelative, formatMonth, formatNumber, formatTime, formatTimeRelative, getNowHours, getNowHoursRoundedToStep, interpolateText, isCellSelected, isColumnSelected, isOfflineError, isRowSelected, isScrolling, isToday, languagesSignal, localStorageSignal, 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, useUrlSearchParam, useUrlTargetId, valueInLocalStorage, windowWidthSignal };
|
|
79536
79553
|
//# sourceMappingURL=jsenv_navi.js.map
|