@woven-canvas/core 1.0.12 → 1.0.14
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/build/_tsup-dts-rollup.d.cts +2 -0
- package/build/_tsup-dts-rollup.d.ts +2 -0
- package/build/index.cjs +44 -4
- package/build/index.cjs.map +1 -1
- package/build/index.js +44 -4
- package/build/index.js.map +1 -1
- package/package.json +2 -2
package/build/index.js
CHANGED
|
@@ -2676,6 +2676,12 @@ var MouseSchema = {
|
|
|
2676
2676
|
moveTrigger: field30.boolean().default(false),
|
|
2677
2677
|
/** True for 1 frame when wheel is scrolled */
|
|
2678
2678
|
wheelTrigger: field30.boolean().default(false),
|
|
2679
|
+
/**
|
|
2680
|
+
* Modifier key (Ctrl/Cmd) was held during this frame's wheel event.
|
|
2681
|
+
* Also true for trackpad pinch gestures, which browsers report as
|
|
2682
|
+
* wheel events with ctrlKey set.
|
|
2683
|
+
*/
|
|
2684
|
+
wheelModKey: field30.boolean().default(false),
|
|
2679
2685
|
/** True for 1 frame when mouse enters the editor element */
|
|
2680
2686
|
enterTrigger: field30.boolean().default(false),
|
|
2681
2687
|
/** True for 1 frame when mouse leaves the editor element */
|
|
@@ -2895,7 +2901,8 @@ function getMouseInput(ctx) {
|
|
|
2895
2901
|
screenPosition: screenPos,
|
|
2896
2902
|
worldPosition: worldPos,
|
|
2897
2903
|
wheelDeltaX: mouse.wheelDeltaX,
|
|
2898
|
-
wheelDeltaY: mouse.wheelDeltaY
|
|
2904
|
+
wheelDeltaY: mouse.wheelDeltaY,
|
|
2905
|
+
wheelModKey: mouse.wheelModKey
|
|
2899
2906
|
});
|
|
2900
2907
|
}
|
|
2901
2908
|
if (mouse.moveTrigger) {
|
|
@@ -2905,7 +2912,8 @@ function getMouseInput(ctx) {
|
|
|
2905
2912
|
screenPosition: screenPos,
|
|
2906
2913
|
worldPosition: worldPos,
|
|
2907
2914
|
wheelDeltaX: 0,
|
|
2908
|
-
wheelDeltaY: 0
|
|
2915
|
+
wheelDeltaY: 0,
|
|
2916
|
+
wheelModKey: false
|
|
2909
2917
|
});
|
|
2910
2918
|
}
|
|
2911
2919
|
return events;
|
|
@@ -4230,13 +4238,16 @@ var keyboardSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4230
4238
|
if (keyIndex === void 0) continue;
|
|
4231
4239
|
if (event.type === "keydown") {
|
|
4232
4240
|
const wasDown = getBit2(keyboard.keysDown, keyIndex);
|
|
4233
|
-
if (!wasDown) {
|
|
4241
|
+
if (!wasDown || !event.repeat) {
|
|
4234
4242
|
setBit(keyboard.keysDownTrigger, keyIndex, true);
|
|
4235
4243
|
}
|
|
4236
4244
|
setBit(keyboard.keysDown, keyIndex, true);
|
|
4237
4245
|
} else if (event.type === "keyup") {
|
|
4238
4246
|
setBit(keyboard.keysDown, keyIndex, false);
|
|
4239
4247
|
setBit(keyboard.keysUpTrigger, keyIndex, true);
|
|
4248
|
+
if (event.code === "MetaLeft" || event.code === "MetaRight") {
|
|
4249
|
+
releaseNonModifierKeys(keyboard);
|
|
4250
|
+
}
|
|
4240
4251
|
}
|
|
4241
4252
|
keyboard.shiftDown = event.shiftKey;
|
|
4242
4253
|
keyboard.altDown = event.altKey;
|
|
@@ -4244,6 +4255,25 @@ var keyboardSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4244
4255
|
}
|
|
4245
4256
|
state.eventsBuffer.length = 0;
|
|
4246
4257
|
});
|
|
4258
|
+
var MODIFIER_KEY_INDICES = /* @__PURE__ */ new Set([
|
|
4259
|
+
codeToIndex.ShiftLeft,
|
|
4260
|
+
codeToIndex.ShiftRight,
|
|
4261
|
+
codeToIndex.ControlLeft,
|
|
4262
|
+
codeToIndex.ControlRight,
|
|
4263
|
+
codeToIndex.AltLeft,
|
|
4264
|
+
codeToIndex.AltRight,
|
|
4265
|
+
codeToIndex.MetaLeft,
|
|
4266
|
+
codeToIndex.MetaRight
|
|
4267
|
+
]);
|
|
4268
|
+
function releaseNonModifierKeys(keyboard) {
|
|
4269
|
+
const bitCount = keyboard.keysDown.length * 8;
|
|
4270
|
+
for (let i = 0; i < bitCount; i++) {
|
|
4271
|
+
if (MODIFIER_KEY_INDICES.has(i)) continue;
|
|
4272
|
+
if (!getBit2(keyboard.keysDown, i)) continue;
|
|
4273
|
+
setBit(keyboard.keysDown, i, false);
|
|
4274
|
+
setBit(keyboard.keysUpTrigger, i, true);
|
|
4275
|
+
}
|
|
4276
|
+
}
|
|
4247
4277
|
function getBit2(buffer, bitIndex) {
|
|
4248
4278
|
if (bitIndex < 0 || bitIndex >= buffer.length * 8) return false;
|
|
4249
4279
|
const byteIndex = Math.floor(bitIndex / 8);
|
|
@@ -4280,7 +4310,10 @@ function attachMouseListeners(domElement) {
|
|
|
4280
4310
|
clientY: e.clientY,
|
|
4281
4311
|
deltaX: e.deltaX,
|
|
4282
4312
|
deltaY: e.deltaY,
|
|
4283
|
-
deltaMode: e.deltaMode
|
|
4313
|
+
deltaMode: e.deltaMode,
|
|
4314
|
+
// Trackpad pinch gestures arrive as wheel events with ctrlKey set,
|
|
4315
|
+
// without any keydown — capture the flags from the event itself.
|
|
4316
|
+
modKey: e.ctrlKey || e.metaKey
|
|
4284
4317
|
});
|
|
4285
4318
|
},
|
|
4286
4319
|
onMouseEnter: () => {
|
|
@@ -4322,6 +4355,7 @@ var mouseSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4322
4355
|
mouse.leaveTrigger = false;
|
|
4323
4356
|
mouse.wheelDeltaX = 0;
|
|
4324
4357
|
mouse.wheelDeltaY = 0;
|
|
4358
|
+
mouse.wheelModKey = false;
|
|
4325
4359
|
for (const event of state.eventsBuffer) {
|
|
4326
4360
|
switch (event.type) {
|
|
4327
4361
|
case "mousemove":
|
|
@@ -4333,6 +4367,7 @@ var mouseSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4333
4367
|
mouse.wheelDeltaX = event.deltaX;
|
|
4334
4368
|
mouse.wheelDeltaY = normalizeWheelDelta(event.deltaY, event.deltaMode);
|
|
4335
4369
|
mouse.wheelTrigger = true;
|
|
4370
|
+
mouse.wheelModKey = event.modKey === true;
|
|
4336
4371
|
break;
|
|
4337
4372
|
case "mouseenter":
|
|
4338
4373
|
mouse.enterTrigger = true;
|
|
@@ -6473,6 +6508,11 @@ function createCorePlugin(options = {}) {
|
|
|
6473
6508
|
command: RemoveSelected.name,
|
|
6474
6509
|
key: Key.Delete
|
|
6475
6510
|
},
|
|
6511
|
+
{
|
|
6512
|
+
// Mac keyboards' delete key reports code "Backspace"
|
|
6513
|
+
command: RemoveSelected.name,
|
|
6514
|
+
key: Key.Backspace
|
|
6515
|
+
},
|
|
6476
6516
|
{
|
|
6477
6517
|
command: SelectAll.name,
|
|
6478
6518
|
key: Key.A,
|