@jsenv/navi 0.30.21 → 0.30.23
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/dev/jsenv_navi.js +79 -14
- package/dist/dev/jsenv_navi.js.map +4 -4
- package/dist/jsenv_navi.js +79 -14
- package/dist/jsenv_navi.js.map +4 -4
- package/package.json +1 -1
package/dist/dev/jsenv_navi.js
CHANGED
|
@@ -29228,7 +29228,7 @@ const createResourceLifecycleManager = () => {
|
|
|
29228
29228
|
|
|
29229
29229
|
for (const restAction of config.restActionSet) {
|
|
29230
29230
|
const actionCandidateArray = restAction.matchAllSelfOrDescendant(
|
|
29231
|
-
(action) =>
|
|
29231
|
+
(action) => shouldAskAgain(action, triggeringAction),
|
|
29232
29232
|
);
|
|
29233
29233
|
|
|
29234
29234
|
for (const actionCandidate of actionCandidateArray) {
|
|
@@ -29268,7 +29268,7 @@ const createResourceLifecycleManager = () => {
|
|
|
29268
29268
|
break delete_effect;
|
|
29269
29269
|
}
|
|
29270
29270
|
if (candidateIsPlural) {
|
|
29271
|
-
if (!shouldRerunGetMany) {
|
|
29271
|
+
if (candidateVerb !== "GET" || !shouldRerunGetMany) {
|
|
29272
29272
|
break delete_effect;
|
|
29273
29273
|
}
|
|
29274
29274
|
actionsToRerun.add(actionCandidate);
|
|
@@ -29410,7 +29410,7 @@ const createResourceLifecycleManager = () => {
|
|
|
29410
29410
|
continue;
|
|
29411
29411
|
}
|
|
29412
29412
|
const instanceArray = dependentAction.matchAllSelfOrDescendant(
|
|
29413
|
-
(action) =>
|
|
29413
|
+
(action) => shouldAskAgain(action, triggeringAction),
|
|
29414
29414
|
);
|
|
29415
29415
|
for (const instance of instanceArray) {
|
|
29416
29416
|
actionsToRerun.add(instance);
|
|
@@ -29513,12 +29513,16 @@ const createResourceLifecycleManager = () => {
|
|
|
29513
29513
|
};
|
|
29514
29514
|
};
|
|
29515
29515
|
|
|
29516
|
-
// A read to ask again after a write: answered before it landed,
|
|
29517
|
-
//
|
|
29518
|
-
// would replace what the write put in the store (a rerun aborts it and asks
|
|
29519
|
-
// again). A
|
|
29520
|
-
|
|
29521
|
-
|
|
29516
|
+
// A read to ask again after a write: answered before it landed, still out, or
|
|
29517
|
+
// failed. An answer that left before the write is as stale as a completed one,
|
|
29518
|
+
// and would replace what the write put in the store (a rerun aborts it and asks
|
|
29519
|
+
// again). A failed read has no other way back: only a write asks it again.
|
|
29520
|
+
// A head start is its owner's to ask: findEffectOnActions resets one holding an
|
|
29521
|
+
// answer, and one that failed stays FAILED (see prerunAhead in route_action.js).
|
|
29522
|
+
const shouldAskAgain = (action, triggeringAction) =>
|
|
29523
|
+
(action.completed ||
|
|
29524
|
+
action.runningState === RUNNING ||
|
|
29525
|
+
(action.runningState === FAILED && !action.isPrerunSignal.peek())) &&
|
|
29522
29526
|
action !== triggeringAction;
|
|
29523
29527
|
// A write named in `writes` says for itself which reads of its own resource it
|
|
29524
29528
|
// reruns (`rerunOn: { GET_RANGE: true }`); a read it leaves out, and every read
|
|
@@ -64626,6 +64630,7 @@ const css$R = /* css */`.navi_control_swap {
|
|
|
64626
64630
|
--x-control-swap-size: var(--navi-control-swap-size, calc(var(--navi-control-line-height) + 2 * var(--navi-s) + 2 *
|
|
64627
64631
|
var(--navi-control-border-width)));
|
|
64628
64632
|
--x-control-swap-gap: var(--navi-control-swap-gap, var(--navi-xs));
|
|
64633
|
+
--x-control-swap-seam-travel: calc(var(--x-control-swap-gap) + var(--navi-control-border-width));
|
|
64629
64634
|
height: var(--x-control-swap-size);
|
|
64630
64635
|
align-items: stretch;
|
|
64631
64636
|
gap: var(--x-control-swap-gap);
|
|
@@ -64639,15 +64644,45 @@ const css$R = /* css */`.navi_control_swap {
|
|
|
64639
64644
|
min-width: 0;
|
|
64640
64645
|
height: 100%;
|
|
64641
64646
|
position: relative;
|
|
64647
|
+
|
|
64648
|
+
&:has( ~ .navi_control_swap_stage)[aria-expanded="true"] {
|
|
64649
|
+
--x-corner-top-right-radius: 0;
|
|
64650
|
+
--x-corner-bottom-right-radius: 0;
|
|
64651
|
+
}
|
|
64652
|
+
|
|
64653
|
+
.navi_control_swap_stage ~ &[aria-expanded="true"] {
|
|
64654
|
+
--x-corner-top-left-radius: 0;
|
|
64655
|
+
--x-corner-bottom-left-radius: 0;
|
|
64656
|
+
}
|
|
64657
|
+
|
|
64658
|
+
&:focus-visible, &[data-focus-visible] {
|
|
64659
|
+
z-index: var(--navi-z-index-control-focused);
|
|
64660
|
+
}
|
|
64642
64661
|
}
|
|
64643
64662
|
|
|
64644
64663
|
& > .navi_control_swap_stage {
|
|
64664
|
+
min-width: 0;
|
|
64665
|
+
margin-left: calc(-1 * var(--x-control-swap-seam-travel));
|
|
64645
64666
|
overflow-clip-margin: var(--navi-focus-outline-width);
|
|
64646
64667
|
flex: 1 1 0;
|
|
64647
|
-
min-width: 0;
|
|
64648
64668
|
display: flex;
|
|
64649
64669
|
overflow: clip;
|
|
64650
64670
|
container-type: inline-size;
|
|
64671
|
+
|
|
64672
|
+
&:hover {
|
|
64673
|
+
z-index: var(--navi-z-index-control-hovered);
|
|
64674
|
+
position: relative;
|
|
64675
|
+
}
|
|
64676
|
+
|
|
64677
|
+
&:has(:focus-visible, [data-focus-visible]) {
|
|
64678
|
+
z-index: var(--navi-z-index-control-focused);
|
|
64679
|
+
position: relative;
|
|
64680
|
+
}
|
|
64681
|
+
|
|
64682
|
+
&:has([aria-expanded="true"]) {
|
|
64683
|
+
z-index: var(--navi-z-index-control-expanded);
|
|
64684
|
+
position: relative;
|
|
64685
|
+
}
|
|
64651
64686
|
}
|
|
64652
64687
|
|
|
64653
64688
|
& > .navi_control_swap_stage > .navi_control_swap_track {
|
|
@@ -64666,20 +64701,43 @@ const css$R = /* css */`.navi_control_swap {
|
|
|
64666
64701
|
width: 100%;
|
|
64667
64702
|
height: 100%;
|
|
64668
64703
|
}
|
|
64704
|
+
|
|
64705
|
+
&:first-child > :not([navi-out-of-flow]) {
|
|
64706
|
+
--x-corner-top-left-radius: 0;
|
|
64707
|
+
--x-corner-bottom-left-radius: 0;
|
|
64708
|
+
border-top-left-radius: 0 !important;
|
|
64709
|
+
border-bottom-left-radius: 0 !important;
|
|
64710
|
+
}
|
|
64711
|
+
|
|
64712
|
+
&:last-child > :not([navi-out-of-flow]) {
|
|
64713
|
+
--x-corner-top-right-radius: 0;
|
|
64714
|
+
--x-corner-bottom-right-radius: 0;
|
|
64715
|
+
border-top-right-radius: 0 !important;
|
|
64716
|
+
border-bottom-right-radius: 0 !important;
|
|
64717
|
+
}
|
|
64669
64718
|
}
|
|
64670
64719
|
}
|
|
64671
64720
|
|
|
64721
|
+
&[data-active-index="1"] > .navi_control_swap_stage {
|
|
64722
|
+
transform: translateX(var(--x-control-swap-seam-travel));
|
|
64723
|
+
}
|
|
64724
|
+
|
|
64672
64725
|
&[data-active-index="1"] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
64673
64726
|
transform: translateX(calc(-100cqw - var(--x-control-swap-gap)));
|
|
64674
64727
|
}
|
|
64675
64728
|
|
|
64676
|
-
&[data-animation] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
64729
|
+
&[data-animation] > .navi_control_swap_stage, &[data-animation] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
64677
64730
|
transition: transform var(--navi-control-swap-animation-duration, .22s)
|
|
64678
64731
|
ease;
|
|
64679
64732
|
}
|
|
64680
64733
|
|
|
64734
|
+
&[data-animation] > .navi_control_swap_cap {
|
|
64735
|
+
transition: border-radius
|
|
64736
|
+
var(--navi-control-swap-animation-duration, .22s) ease;
|
|
64737
|
+
}
|
|
64738
|
+
|
|
64681
64739
|
@media (prefers-reduced-motion: reduce) {
|
|
64682
|
-
&[data-animation] > .navi_control_swap_stage > .navi_control_swap_track {
|
|
64740
|
+
&[data-animation] > .navi_control_swap_stage, &[data-animation] > .navi_control_swap_stage > .navi_control_swap_track, &[data-animation] > .navi_control_swap_cap {
|
|
64683
64741
|
transition: none;
|
|
64684
64742
|
}
|
|
64685
64743
|
}
|
|
@@ -64710,8 +64768,9 @@ const css$R = /* css */`.navi_control_swap {
|
|
|
64710
64768
|
*
|
|
64711
64769
|
* The row is one length tall — `--navi-control-swap-size`, a line of text
|
|
64712
64770
|
* between two `s` paddings — and everything in it is that tall: the caps are
|
|
64713
|
-
* squares of it, the control holding the floor fills it.
|
|
64714
|
-
* is the space between
|
|
64771
|
+
* squares of it, the control holding the floor fills it. The control is joined
|
|
64772
|
+
* to its cap by a shared border; `--navi-control-swap-gap` is the space between
|
|
64773
|
+
* it and the other cap.
|
|
64715
64774
|
*/
|
|
64716
64775
|
const ControlSwap = props => {
|
|
64717
64776
|
import.meta.css = [css$R, "@jsenv/navi/src/control/control_swap/control_swap.jsx"];
|
|
@@ -71852,6 +71911,12 @@ const SlideContainer = ({
|
|
|
71852
71911
|
// names a slide, and the container standing on its first one is a fact only
|
|
71853
71912
|
// the map knows (see the layout effect that paints it).
|
|
71854
71913
|
const areaOnScreen = containerRef.current.getAttribute(SLIDE_CURRENT_ATTRIBUTE);
|
|
71914
|
+
// Standing on the first slide by default holds a rank, and the slide at
|
|
71915
|
+
// that rank changes with their order. Someone outside is naming slides, so
|
|
71916
|
+
// the one on screen is held by its name from this answer on.
|
|
71917
|
+
if (current !== areaOnScreen) {
|
|
71918
|
+
setCurrentAreaState(areaOnScreen);
|
|
71919
|
+
}
|
|
71855
71920
|
if (areaAsked === areaOnScreen) {
|
|
71856
71921
|
return;
|
|
71857
71922
|
}
|