@weasel-js/routing 1.12.0 → 1.13.0
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/{chunk-ARDHI47M.js → chunk-XVWEZTUX.js} +135 -129
- package/dist/chunk-XVWEZTUX.js.map +1 -0
- package/dist/{index-CyBCsdie.d.ts → index-UFm_a202.d.ts} +37 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/{internal-DejHXi0a.d.ts → internal-DQJ3fv86.d.ts} +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/react.d.ts +4 -4
- package/dist/react.js +1 -1
- package/package.json +13 -13
- package/dist/chunk-ARDHI47M.js.map +0 -1
|
@@ -4,7 +4,7 @@ import { RESERVED_ID_PREFIXES, RESERVED_ID_NAMES, isApplePlatform, bindingSpec,
|
|
|
4
4
|
export { GESTURE_DESCRIPTORS, LONG_PRESS_MS, RESERVED_ID_NAMES, RESERVED_ID_PREFIXES, ROUTE_FIELD_DEFINITIONS, ROUTE_TERMS, activatesFocusedControl, canonicalModifiers, collapseShiftPairs, describeRoute, describeRouteParts, focusedControlOwnsKey, formatPhaseAtom, formatRoute, getGestureDescriptor, isEditableTarget, isKnownGestureName, matchKey, matchModifiers, matchPhase, matchSpec, matchTarget, parseRoute, routeGestureForSpecKind, specKindForRouteGesture, specificity } from '@weasel-js/gestures';
|
|
5
5
|
import { activeModeOf, NORMAL, DEFAULT_MODES, capabilitiesAllowed } from '@weasel-js/modes';
|
|
6
6
|
import { resolveCursor } from '@weasel-js/cursor';
|
|
7
|
-
import {
|
|
7
|
+
import { isPrefLeaf, prefScopeIn, prefScopeUnder, prefConditionHolds, prefAliasTarget, prefLeafAt, prefAliasedLeaf, prefNumberAt, resolvePrefUnit, prefDisplayBounds, prefUnitAccepts, PREF_SCOPE, prefValueAtPath } from '@weasel-js/prefs';
|
|
8
8
|
import { endlessAllows } from '@weasel-js/quantity';
|
|
9
9
|
|
|
10
10
|
// src/interactions/actions/actionItems.ts
|
|
@@ -510,6 +510,122 @@ function overrideActionBindings(action, overrides) {
|
|
|
510
510
|
return { ...action, defaultBinding: kept };
|
|
511
511
|
}
|
|
512
512
|
|
|
513
|
+
// src/interactions/dispatcher/inputFacts.ts
|
|
514
|
+
function modifierStateOf(e) {
|
|
515
|
+
return { alt: e.altKey, ctrl: e.ctrlKey, meta: e.metaKey, shift: e.shiftKey };
|
|
516
|
+
}
|
|
517
|
+
function worldPointOf(event) {
|
|
518
|
+
switch (event.kind) {
|
|
519
|
+
case "pointerdown":
|
|
520
|
+
case "hover":
|
|
521
|
+
case "longpress":
|
|
522
|
+
case "click":
|
|
523
|
+
case "doubleclick":
|
|
524
|
+
case "contextmenu":
|
|
525
|
+
return event.x !== void 0 && event.y !== void 0 ? { x: event.x, y: event.y } : void 0;
|
|
526
|
+
case "carry":
|
|
527
|
+
return { x: event.x, y: event.y };
|
|
528
|
+
default:
|
|
529
|
+
return void 0;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
function carriedBy(event) {
|
|
533
|
+
if (event.kind === "carry") return { items: [], carry: { type: event.type, value: event.value } };
|
|
534
|
+
return event.kind === "drop" || event.kind === "paste" ? { items: event.items } : void 0;
|
|
535
|
+
}
|
|
536
|
+
function immediateParams(event, resolved) {
|
|
537
|
+
switch (event.kind) {
|
|
538
|
+
case "wheel":
|
|
539
|
+
return {
|
|
540
|
+
deltaX: event.deltaX,
|
|
541
|
+
deltaY: event.deltaY,
|
|
542
|
+
clientX: event.clientX,
|
|
543
|
+
clientY: event.clientY,
|
|
544
|
+
affordance: event.affordance,
|
|
545
|
+
...resolved
|
|
546
|
+
};
|
|
547
|
+
case "pinch":
|
|
548
|
+
return {
|
|
549
|
+
scale: event.scale,
|
|
550
|
+
rotation: event.rotation,
|
|
551
|
+
clientX: event.clientX,
|
|
552
|
+
clientY: event.clientY,
|
|
553
|
+
affordance: event.affordance,
|
|
554
|
+
...resolved
|
|
555
|
+
};
|
|
556
|
+
case "click":
|
|
557
|
+
case "doubleclick":
|
|
558
|
+
return {
|
|
559
|
+
worldX: event.x,
|
|
560
|
+
worldY: event.y,
|
|
561
|
+
affordance: event.affordance,
|
|
562
|
+
// The press point too: an action that places geometry at the click wants it.
|
|
563
|
+
...event.kind === "click" ? { pressX: event.pressX, pressY: event.pressY } : {},
|
|
564
|
+
mods: modifierStateOf(event),
|
|
565
|
+
...resolved
|
|
566
|
+
};
|
|
567
|
+
// Only a `stage: 'press'` pointerdown reaches an immediate invoker: the
|
|
568
|
+
// buffered copy matches `drag` specs, which are ongoing.
|
|
569
|
+
case "contextmenu":
|
|
570
|
+
return {
|
|
571
|
+
worldX: event.x,
|
|
572
|
+
worldY: event.y,
|
|
573
|
+
clientX: event.clientX,
|
|
574
|
+
clientY: event.clientY,
|
|
575
|
+
affordance: event.affordance,
|
|
576
|
+
bodyTarget: event.bodyTarget,
|
|
577
|
+
bodyKind: event.bodyKind,
|
|
578
|
+
mods: modifierStateOf(event),
|
|
579
|
+
...resolved
|
|
580
|
+
};
|
|
581
|
+
case "pointerdown":
|
|
582
|
+
case "longpress":
|
|
583
|
+
return {
|
|
584
|
+
worldX: event.x,
|
|
585
|
+
worldY: event.y,
|
|
586
|
+
affordance: event.affordance,
|
|
587
|
+
bodyTarget: event.bodyTarget,
|
|
588
|
+
mods: modifierStateOf(event),
|
|
589
|
+
...resolved
|
|
590
|
+
};
|
|
591
|
+
case "hover":
|
|
592
|
+
return {
|
|
593
|
+
worldX: event.x,
|
|
594
|
+
worldY: event.y,
|
|
595
|
+
clientX: event.clientX,
|
|
596
|
+
clientY: event.clientY,
|
|
597
|
+
affordance: event.affordance,
|
|
598
|
+
bodyTarget: event.bodyTarget,
|
|
599
|
+
mods: modifierStateOf(event),
|
|
600
|
+
held: event.held === true,
|
|
601
|
+
...resolved
|
|
602
|
+
};
|
|
603
|
+
case "carry":
|
|
604
|
+
return {
|
|
605
|
+
worldX: event.x,
|
|
606
|
+
worldY: event.y,
|
|
607
|
+
clientX: event.clientX,
|
|
608
|
+
clientY: event.clientY,
|
|
609
|
+
carry: { type: event.type, value: event.value },
|
|
610
|
+
affordance: event.affordance,
|
|
611
|
+
bodyTarget: event.bodyTarget,
|
|
612
|
+
bodyKind: event.bodyKind,
|
|
613
|
+
mods: modifierStateOf(event),
|
|
614
|
+
...resolved
|
|
615
|
+
};
|
|
616
|
+
case "drop":
|
|
617
|
+
case "paste":
|
|
618
|
+
return {
|
|
619
|
+
items: event.items,
|
|
620
|
+
via: event.kind,
|
|
621
|
+
...event.kind === "drop" && event.x !== void 0 ? { worldX: event.x, worldY: event.y } : {},
|
|
622
|
+
...resolved
|
|
623
|
+
};
|
|
624
|
+
default:
|
|
625
|
+
return resolved;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
513
629
|
// src/interactions/actions/toolOffhand.ts
|
|
514
630
|
var TOOL_OFFHAND_ID = "tool.offhand";
|
|
515
631
|
function offhandKeyFor(trigger) {
|
|
@@ -1123,122 +1239,6 @@ function createDispatchTrace(limit, dev) {
|
|
|
1123
1239
|
};
|
|
1124
1240
|
}
|
|
1125
1241
|
|
|
1126
|
-
// src/interactions/dispatcher/inputFacts.ts
|
|
1127
|
-
function modifiersOf(e) {
|
|
1128
|
-
return { alt: e.altKey, ctrl: e.ctrlKey, meta: e.metaKey, shift: e.shiftKey };
|
|
1129
|
-
}
|
|
1130
|
-
function worldPointOf(event) {
|
|
1131
|
-
switch (event.kind) {
|
|
1132
|
-
case "pointerdown":
|
|
1133
|
-
case "hover":
|
|
1134
|
-
case "longpress":
|
|
1135
|
-
case "click":
|
|
1136
|
-
case "doubleclick":
|
|
1137
|
-
case "contextmenu":
|
|
1138
|
-
return event.x !== void 0 && event.y !== void 0 ? { x: event.x, y: event.y } : void 0;
|
|
1139
|
-
case "carry":
|
|
1140
|
-
return { x: event.x, y: event.y };
|
|
1141
|
-
default:
|
|
1142
|
-
return void 0;
|
|
1143
|
-
}
|
|
1144
|
-
}
|
|
1145
|
-
function carriedBy(event) {
|
|
1146
|
-
if (event.kind === "carry") return { items: [], carry: { type: event.type, value: event.value } };
|
|
1147
|
-
return event.kind === "drop" || event.kind === "paste" ? { items: event.items } : void 0;
|
|
1148
|
-
}
|
|
1149
|
-
function immediateParams(event, resolved) {
|
|
1150
|
-
switch (event.kind) {
|
|
1151
|
-
case "wheel":
|
|
1152
|
-
return {
|
|
1153
|
-
deltaX: event.deltaX,
|
|
1154
|
-
deltaY: event.deltaY,
|
|
1155
|
-
clientX: event.clientX,
|
|
1156
|
-
clientY: event.clientY,
|
|
1157
|
-
affordance: event.affordance,
|
|
1158
|
-
...resolved
|
|
1159
|
-
};
|
|
1160
|
-
case "pinch":
|
|
1161
|
-
return {
|
|
1162
|
-
scale: event.scale,
|
|
1163
|
-
rotation: event.rotation,
|
|
1164
|
-
clientX: event.clientX,
|
|
1165
|
-
clientY: event.clientY,
|
|
1166
|
-
affordance: event.affordance,
|
|
1167
|
-
...resolved
|
|
1168
|
-
};
|
|
1169
|
-
case "click":
|
|
1170
|
-
case "doubleclick":
|
|
1171
|
-
return {
|
|
1172
|
-
worldX: event.x,
|
|
1173
|
-
worldY: event.y,
|
|
1174
|
-
affordance: event.affordance,
|
|
1175
|
-
// The press point too: an action that places geometry at the click wants it.
|
|
1176
|
-
...event.kind === "click" ? { pressX: event.pressX, pressY: event.pressY } : {},
|
|
1177
|
-
mods: modifiersOf(event),
|
|
1178
|
-
...resolved
|
|
1179
|
-
};
|
|
1180
|
-
// Only a `stage: 'press'` pointerdown reaches an immediate invoker: the
|
|
1181
|
-
// buffered copy matches `drag` specs, which are ongoing.
|
|
1182
|
-
case "contextmenu":
|
|
1183
|
-
return {
|
|
1184
|
-
worldX: event.x,
|
|
1185
|
-
worldY: event.y,
|
|
1186
|
-
clientX: event.clientX,
|
|
1187
|
-
clientY: event.clientY,
|
|
1188
|
-
affordance: event.affordance,
|
|
1189
|
-
bodyTarget: event.bodyTarget,
|
|
1190
|
-
bodyKind: event.bodyKind,
|
|
1191
|
-
mods: modifiersOf(event),
|
|
1192
|
-
...resolved
|
|
1193
|
-
};
|
|
1194
|
-
case "pointerdown":
|
|
1195
|
-
case "longpress":
|
|
1196
|
-
return {
|
|
1197
|
-
worldX: event.x,
|
|
1198
|
-
worldY: event.y,
|
|
1199
|
-
affordance: event.affordance,
|
|
1200
|
-
bodyTarget: event.bodyTarget,
|
|
1201
|
-
mods: modifiersOf(event),
|
|
1202
|
-
...resolved
|
|
1203
|
-
};
|
|
1204
|
-
case "hover":
|
|
1205
|
-
return {
|
|
1206
|
-
worldX: event.x,
|
|
1207
|
-
worldY: event.y,
|
|
1208
|
-
clientX: event.clientX,
|
|
1209
|
-
clientY: event.clientY,
|
|
1210
|
-
affordance: event.affordance,
|
|
1211
|
-
bodyTarget: event.bodyTarget,
|
|
1212
|
-
mods: modifiersOf(event),
|
|
1213
|
-
held: event.held === true,
|
|
1214
|
-
...resolved
|
|
1215
|
-
};
|
|
1216
|
-
case "carry":
|
|
1217
|
-
return {
|
|
1218
|
-
worldX: event.x,
|
|
1219
|
-
worldY: event.y,
|
|
1220
|
-
clientX: event.clientX,
|
|
1221
|
-
clientY: event.clientY,
|
|
1222
|
-
carry: { type: event.type, value: event.value },
|
|
1223
|
-
affordance: event.affordance,
|
|
1224
|
-
bodyTarget: event.bodyTarget,
|
|
1225
|
-
bodyKind: event.bodyKind,
|
|
1226
|
-
mods: modifiersOf(event),
|
|
1227
|
-
...resolved
|
|
1228
|
-
};
|
|
1229
|
-
case "drop":
|
|
1230
|
-
case "paste":
|
|
1231
|
-
return {
|
|
1232
|
-
items: event.items,
|
|
1233
|
-
via: event.kind,
|
|
1234
|
-
...event.kind === "drop" && event.x !== void 0 ? { worldX: event.x, worldY: event.y } : {},
|
|
1235
|
-
...resolved
|
|
1236
|
-
};
|
|
1237
|
-
default:
|
|
1238
|
-
return resolved;
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
|
|
1242
1242
|
// src/interactions/dispatcher/ranking.ts
|
|
1243
1243
|
function liveInView(binding, view) {
|
|
1244
1244
|
const views = binding.opts?.views;
|
|
@@ -1358,7 +1358,7 @@ function buildDispatchRecord(r, walked, event, ctx, predicted, outcome) {
|
|
|
1358
1358
|
input: {
|
|
1359
1359
|
eventKind: event.kind,
|
|
1360
1360
|
...eventKey !== void 0 ? { key: eventKey } : {},
|
|
1361
|
-
modifiers:
|
|
1361
|
+
modifiers: modifierStateOf(event),
|
|
1362
1362
|
viewId: view,
|
|
1363
1363
|
...world !== void 0 ? { world } : {},
|
|
1364
1364
|
...r.ruleCtx !== void 0 ? { mode: r.ruleCtx.mode } : {}
|
|
@@ -2930,7 +2930,7 @@ function settingsOf(ctx, it, key, label, off, access) {
|
|
|
2930
2930
|
root: settings.schema,
|
|
2931
2931
|
read: (path, from) => from === "item" ? void 0 : values(path)
|
|
2932
2932
|
};
|
|
2933
|
-
const entries = state ? tidy(groupRows(form, settings.schema, "",
|
|
2933
|
+
const entries = state ? tidy(groupRows(form, settings.schema, "", ROOT)) : [];
|
|
2934
2934
|
return {
|
|
2935
2935
|
kind: "submenu",
|
|
2936
2936
|
key,
|
|
@@ -3087,21 +3087,27 @@ function leafRows(ctx, leaf, key, path, off) {
|
|
|
3087
3087
|
return [];
|
|
3088
3088
|
}
|
|
3089
3089
|
}
|
|
3090
|
-
|
|
3090
|
+
var ROOT = { node: {}, scope: PREF_SCOPE, above: PREF_SCOPE };
|
|
3091
|
+
function groupRows(ctx, group, prefix, owner) {
|
|
3092
|
+
const { read: read2 } = ctx;
|
|
3093
|
+
const holds = (condition) => read2 === void 0 || prefConditionHolds(condition, read2);
|
|
3091
3094
|
const out = [];
|
|
3092
3095
|
for (const [k, node] of Object.entries(group.children)) {
|
|
3093
3096
|
const path = prefix ? `${prefix}.${k}` : k;
|
|
3094
|
-
|
|
3095
|
-
const
|
|
3097
|
+
const sits = isPrefLeaf(node) ? prefScopeIn(owner, path, holds) : owner.scope;
|
|
3098
|
+
const scope = prefScopeUnder(sits, node, holds);
|
|
3099
|
+
if (!scope.shown) continue;
|
|
3100
|
+
const disabled = !scope.enabled;
|
|
3101
|
+
const inner = { node, scope, above: sits };
|
|
3096
3102
|
if (isPrefLeaf(node)) {
|
|
3097
3103
|
out.push(...leafRows(ctx, node, path, path, disabled));
|
|
3098
3104
|
} else if (node.as !== void 0 && SUBMENU_AS.has(node.as)) {
|
|
3099
|
-
const entries = tidy(groupRows(ctx, node, path,
|
|
3105
|
+
const entries = tidy(groupRows(ctx, node, path, inner));
|
|
3100
3106
|
if (entries.length) {
|
|
3101
3107
|
out.push({ kind: "submenu", key: path, label: node.name, ...node.icon ? { icon: node.icon } : {}, ...withAccess(node.access), entries });
|
|
3102
3108
|
}
|
|
3103
3109
|
} else {
|
|
3104
|
-
out.push(sep(`${path}/<`), ...groupRows(ctx, node, path,
|
|
3110
|
+
out.push(sep(`${path}/<`), ...groupRows(ctx, node, path, inner), sep(`${path}/>`));
|
|
3105
3111
|
}
|
|
3106
3112
|
}
|
|
3107
3113
|
return out;
|
|
@@ -3125,7 +3131,7 @@ function resolveSchemaMenu(schema, src, at, params) {
|
|
|
3125
3131
|
at,
|
|
3126
3132
|
params
|
|
3127
3133
|
};
|
|
3128
|
-
return tidy(groupRows(ctx, schema, "",
|
|
3134
|
+
return tidy(groupRows(ctx, schema, "", ROOT));
|
|
3129
3135
|
}
|
|
3130
3136
|
function resolveMenu(def, src, at, params) {
|
|
3131
3137
|
return resolveSchemaMenu(def.menu, src, at, params);
|
|
@@ -3171,7 +3177,7 @@ function createMenuHost(src) {
|
|
|
3171
3177
|
client: req.client,
|
|
3172
3178
|
world: req.world,
|
|
3173
3179
|
...req.under ? { under: req.under } : {},
|
|
3174
|
-
...req.
|
|
3180
|
+
...req.side ? { side: req.side } : {},
|
|
3175
3181
|
source: req.source ?? "pointer"
|
|
3176
3182
|
};
|
|
3177
3183
|
emit();
|
|
@@ -3189,6 +3195,6 @@ function createMenuHost(src) {
|
|
|
3189
3195
|
};
|
|
3190
3196
|
}
|
|
3191
3197
|
|
|
3192
|
-
export { ALWAYS, ActionDisabledReason, COARSE_TARGET_SCALE, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DepNode, INGEST_STRING_MIMES, KEYMAP_HOLD, LONG_PRESS_HAPTIC_MS, NEVER, NO_OVERRIDES, PREDICATE_TARGET, ScopeNode, TOOL_OFFHAND_ID, actionBindings, actionCursor, actionItemTitle, actionItems, actionSettingsParams, actionShortcuts, addCarrySurface, admitIngestMime, anyBinding, assembleEntries, bindingId, buildDepsFromRequires, buildRouteRegistry, buildRuleCtx, buildToolOffhandBindings, carryGestureId, clientToCanvas, clientToCanvasRect, createDepRegistry, createDispatchTrace, createDispatcher, createKeymapStack, createLongPressStore, createMenuHost, createTraceRing, depNodeOf, describeKeymap, describeRule, dlog, dwarn, evaluate, evaluateActive, evaluateEnabled, findConflicts, heldKeySpec, historyKey, isDebugEnabled, isTool, itemTypesFromDataTransfer, itemsFromClipboardData, itemsFromDataTransfer, itemsFromFiles, keySpecShortcut, keymapContribution, keymapLeaderBindingId, keymapLeaderId, keymapShortcuts, keysHeld, liveScope, makeToolOffhandAction, matchBest, matchSorted, matchSortedWithBarred, matchesKeyBinding, mergeMenuDefs, multiTouchGestureId, offhandKeyFor, openPointerSession, overriddenBindings, overrideActionBindings, pickMenu, pointerGestureId, pushOwner, readActionSettings, reportRouteConflicts, resolveBindingOverrides, resolveDeviceProfile, resolveMenu, resolveParams, resolveSchemaMenu, roleReader, routesForSpec, ruleCanHoldIn, rulesExclusive, scopeBindings, startCarry, targetConsultsAffordance, tuneAction, tunedParams, validateActionDefaultBinding, validateActionId };
|
|
3193
|
-
//# sourceMappingURL=chunk-
|
|
3194
|
-
//# sourceMappingURL=chunk-
|
|
3198
|
+
export { ALWAYS, ActionDisabledReason, COARSE_TARGET_SCALE, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DepNode, INGEST_STRING_MIMES, KEYMAP_HOLD, LONG_PRESS_HAPTIC_MS, NEVER, NO_OVERRIDES, PREDICATE_TARGET, ScopeNode, TOOL_OFFHAND_ID, actionBindings, actionCursor, actionItemTitle, actionItems, actionSettingsParams, actionShortcuts, addCarrySurface, admitIngestMime, anyBinding, assembleEntries, bindingId, buildDepsFromRequires, buildRouteRegistry, buildRuleCtx, buildToolOffhandBindings, carryGestureId, clientToCanvas, clientToCanvasRect, createDepRegistry, createDispatchTrace, createDispatcher, createKeymapStack, createLongPressStore, createMenuHost, createTraceRing, depNodeOf, describeKeymap, describeRule, dlog, dwarn, evaluate, evaluateActive, evaluateEnabled, findConflicts, heldKeySpec, historyKey, isDebugEnabled, isTool, itemTypesFromDataTransfer, itemsFromClipboardData, itemsFromDataTransfer, itemsFromFiles, keySpecShortcut, keymapContribution, keymapLeaderBindingId, keymapLeaderId, keymapShortcuts, keysHeld, liveScope, makeToolOffhandAction, matchBest, matchSorted, matchSortedWithBarred, matchesKeyBinding, mergeMenuDefs, modifierStateOf, multiTouchGestureId, offhandKeyFor, openPointerSession, overriddenBindings, overrideActionBindings, pickMenu, pointerGestureId, pushOwner, readActionSettings, reportRouteConflicts, resolveBindingOverrides, resolveDeviceProfile, resolveMenu, resolveParams, resolveSchemaMenu, roleReader, routesForSpec, ruleCanHoldIn, rulesExclusive, scopeBindings, startCarry, targetConsultsAffordance, tuneAction, tunedParams, validateActionDefaultBinding, validateActionId };
|
|
3199
|
+
//# sourceMappingURL=chunk-XVWEZTUX.js.map
|
|
3200
|
+
//# sourceMappingURL=chunk-XVWEZTUX.js.map
|