@jsenv/navi 0.28.8 → 0.28.9
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 +26 -7
- package/dist/jsenv_navi.js.map +4 -4
- package/package.json +1 -1
package/dist/jsenv_navi.js
CHANGED
|
@@ -5353,10 +5353,12 @@ const stateSignal = (defaultValue, options = {}) => {
|
|
|
5353
5353
|
// Convert numeric IDs to strings for consistency
|
|
5354
5354
|
const signalIdString = String(signalId);
|
|
5355
5355
|
if (globalSignalRegistry.has(signalIdString)) {
|
|
5356
|
-
const
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5356
|
+
const existingEntry = globalSignalRegistry.get(signalIdString);
|
|
5357
|
+
{
|
|
5358
|
+
throw new Error(
|
|
5359
|
+
`Signal ID conflict: A signal with ID "${signalIdString}" already exists (existing default: ${existingEntry.options.getDefaultValue()})`,
|
|
5360
|
+
);
|
|
5361
|
+
}
|
|
5360
5362
|
}
|
|
5361
5363
|
|
|
5362
5364
|
// Determine localStorage key: use id if persists=true, or legacy localStorage option
|
|
@@ -5481,7 +5483,12 @@ const stateSignal = (defaultValue, options = {}) => {
|
|
|
5481
5483
|
// can reflect the current input state without silently correcting it.
|
|
5482
5484
|
return validity.value;
|
|
5483
5485
|
};
|
|
5484
|
-
const preactSignal = signal(
|
|
5486
|
+
const preactSignal = signal(
|
|
5487
|
+
processValue(
|
|
5488
|
+
getFallbackValue()
|
|
5489
|
+
,
|
|
5490
|
+
),
|
|
5491
|
+
);
|
|
5485
5492
|
|
|
5486
5493
|
// Override the value setter on the instance to intercept writes and apply processValue.
|
|
5487
5494
|
// We do this on the instance (not the prototype) so preactSignal remains a real Signal
|
|
@@ -48302,6 +48309,10 @@ const css$o = /* css */`
|
|
|
48302
48309
|
.navi_picker_spin {
|
|
48303
48310
|
/* What the loading outline is drawn around. */
|
|
48304
48311
|
position: relative;
|
|
48312
|
+
/* Written in the control font, like the picker it wraps: the day and its
|
|
48313
|
+
two chevrons are a control, not running text. */
|
|
48314
|
+
font-size: var(--navi-control-font-size);
|
|
48315
|
+
font-family: var(--navi-control-font-family);
|
|
48305
48316
|
/* Framed like every other control (see navi_css_vars.js): what one steps
|
|
48306
48317
|
through is a value one edits, and a box around it is what says so. Said
|
|
48307
48318
|
as CSS rather than as defaults on the Box, so borderWidth="0" or a radius
|
|
@@ -51015,7 +51026,11 @@ const useWheelInteractions = ({
|
|
|
51015
51026
|
if (vp.contains(documentWheelEvent.target)) {
|
|
51016
51027
|
return; // on the scroll surface → its own onWheel handles it
|
|
51017
51028
|
}
|
|
51018
|
-
documentWheelEvent.
|
|
51029
|
+
if (documentWheelEvent.cancelable) {
|
|
51030
|
+
// cancelable=false during an inertial scroll the browser already owns;
|
|
51031
|
+
// preventDefault would be ignored with an intervention warning.
|
|
51032
|
+
documentWheelEvent.preventDefault();
|
|
51033
|
+
}
|
|
51019
51034
|
keepClaimingGesture(); // the gesture continues elsewhere → keep swallowing it
|
|
51020
51035
|
};
|
|
51021
51036
|
const stopClaimingGesture = () => {
|
|
@@ -51315,7 +51330,11 @@ const useWheelInteractions = ({
|
|
|
51315
51330
|
// preventing touchstart has wider side effects. Requires a non-passive
|
|
51316
51331
|
// listener. See docs/MOBILE_TAP_SUPPRESSION_AFTER_DRAG.md.
|
|
51317
51332
|
const onTouchMove = e => {
|
|
51318
|
-
|
|
51333
|
+
// cancelable=false when the touch landed while a scroll was already in
|
|
51334
|
+
// progress (e.g. the page still coasting from a fling): the browser owns
|
|
51335
|
+
// that scroll, preventDefault would be a no-op and Chrome logs an
|
|
51336
|
+
// intervention warning for the attempt.
|
|
51337
|
+
if (drag && e.cancelable) {
|
|
51319
51338
|
e.preventDefault();
|
|
51320
51339
|
}
|
|
51321
51340
|
};
|