@woven-canvas/core 1.0.13 → 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 +1 -1
|
@@ -1494,6 +1494,7 @@ declare interface MouseInput {
|
|
|
1494
1494
|
worldPosition: Vec2;
|
|
1495
1495
|
wheelDeltaX: number;
|
|
1496
1496
|
wheelDeltaY: number;
|
|
1497
|
+
wheelModKey: boolean;
|
|
1497
1498
|
}
|
|
1498
1499
|
export { MouseInput }
|
|
1499
1500
|
export { MouseInput as MouseInput_alias_1 }
|
|
@@ -1510,6 +1511,7 @@ declare const MouseSchema: {
|
|
|
1510
1511
|
wheelDeltaY: NumberFieldBuilder<"float32">;
|
|
1511
1512
|
moveTrigger: BooleanFieldBuilder;
|
|
1512
1513
|
wheelTrigger: BooleanFieldBuilder;
|
|
1514
|
+
wheelModKey: BooleanFieldBuilder;
|
|
1513
1515
|
enterTrigger: BooleanFieldBuilder;
|
|
1514
1516
|
leaveTrigger: BooleanFieldBuilder;
|
|
1515
1517
|
obscured: BooleanFieldBuilder;
|
|
@@ -1494,6 +1494,7 @@ declare interface MouseInput {
|
|
|
1494
1494
|
worldPosition: Vec2;
|
|
1495
1495
|
wheelDeltaX: number;
|
|
1496
1496
|
wheelDeltaY: number;
|
|
1497
|
+
wheelModKey: boolean;
|
|
1497
1498
|
}
|
|
1498
1499
|
export { MouseInput }
|
|
1499
1500
|
export { MouseInput as MouseInput_alias_1 }
|
|
@@ -1510,6 +1511,7 @@ declare const MouseSchema: {
|
|
|
1510
1511
|
wheelDeltaY: NumberFieldBuilder<"float32">;
|
|
1511
1512
|
moveTrigger: BooleanFieldBuilder;
|
|
1512
1513
|
wheelTrigger: BooleanFieldBuilder;
|
|
1514
|
+
wheelModKey: BooleanFieldBuilder;
|
|
1513
1515
|
enterTrigger: BooleanFieldBuilder;
|
|
1514
1516
|
leaveTrigger: BooleanFieldBuilder;
|
|
1515
1517
|
obscured: BooleanFieldBuilder;
|
package/build/index.cjs
CHANGED
|
@@ -2834,6 +2834,12 @@ var MouseSchema = {
|
|
|
2834
2834
|
moveTrigger: import_core30.field.boolean().default(false),
|
|
2835
2835
|
/** True for 1 frame when wheel is scrolled */
|
|
2836
2836
|
wheelTrigger: import_core30.field.boolean().default(false),
|
|
2837
|
+
/**
|
|
2838
|
+
* Modifier key (Ctrl/Cmd) was held during this frame's wheel event.
|
|
2839
|
+
* Also true for trackpad pinch gestures, which browsers report as
|
|
2840
|
+
* wheel events with ctrlKey set.
|
|
2841
|
+
*/
|
|
2842
|
+
wheelModKey: import_core30.field.boolean().default(false),
|
|
2837
2843
|
/** True for 1 frame when mouse enters the editor element */
|
|
2838
2844
|
enterTrigger: import_core30.field.boolean().default(false),
|
|
2839
2845
|
/** True for 1 frame when mouse leaves the editor element */
|
|
@@ -3053,7 +3059,8 @@ function getMouseInput(ctx) {
|
|
|
3053
3059
|
screenPosition: screenPos,
|
|
3054
3060
|
worldPosition: worldPos,
|
|
3055
3061
|
wheelDeltaX: mouse.wheelDeltaX,
|
|
3056
|
-
wheelDeltaY: mouse.wheelDeltaY
|
|
3062
|
+
wheelDeltaY: mouse.wheelDeltaY,
|
|
3063
|
+
wheelModKey: mouse.wheelModKey
|
|
3057
3064
|
});
|
|
3058
3065
|
}
|
|
3059
3066
|
if (mouse.moveTrigger) {
|
|
@@ -3063,7 +3070,8 @@ function getMouseInput(ctx) {
|
|
|
3063
3070
|
screenPosition: screenPos,
|
|
3064
3071
|
worldPosition: worldPos,
|
|
3065
3072
|
wheelDeltaX: 0,
|
|
3066
|
-
wheelDeltaY: 0
|
|
3073
|
+
wheelDeltaY: 0,
|
|
3074
|
+
wheelModKey: false
|
|
3067
3075
|
});
|
|
3068
3076
|
}
|
|
3069
3077
|
return events;
|
|
@@ -4382,13 +4390,16 @@ var keyboardSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4382
4390
|
if (keyIndex === void 0) continue;
|
|
4383
4391
|
if (event.type === "keydown") {
|
|
4384
4392
|
const wasDown = getBit2(keyboard.keysDown, keyIndex);
|
|
4385
|
-
if (!wasDown) {
|
|
4393
|
+
if (!wasDown || !event.repeat) {
|
|
4386
4394
|
setBit(keyboard.keysDownTrigger, keyIndex, true);
|
|
4387
4395
|
}
|
|
4388
4396
|
setBit(keyboard.keysDown, keyIndex, true);
|
|
4389
4397
|
} else if (event.type === "keyup") {
|
|
4390
4398
|
setBit(keyboard.keysDown, keyIndex, false);
|
|
4391
4399
|
setBit(keyboard.keysUpTrigger, keyIndex, true);
|
|
4400
|
+
if (event.code === "MetaLeft" || event.code === "MetaRight") {
|
|
4401
|
+
releaseNonModifierKeys(keyboard);
|
|
4402
|
+
}
|
|
4392
4403
|
}
|
|
4393
4404
|
keyboard.shiftDown = event.shiftKey;
|
|
4394
4405
|
keyboard.altDown = event.altKey;
|
|
@@ -4396,6 +4407,25 @@ var keyboardSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4396
4407
|
}
|
|
4397
4408
|
state.eventsBuffer.length = 0;
|
|
4398
4409
|
});
|
|
4410
|
+
var MODIFIER_KEY_INDICES = /* @__PURE__ */ new Set([
|
|
4411
|
+
codeToIndex.ShiftLeft,
|
|
4412
|
+
codeToIndex.ShiftRight,
|
|
4413
|
+
codeToIndex.ControlLeft,
|
|
4414
|
+
codeToIndex.ControlRight,
|
|
4415
|
+
codeToIndex.AltLeft,
|
|
4416
|
+
codeToIndex.AltRight,
|
|
4417
|
+
codeToIndex.MetaLeft,
|
|
4418
|
+
codeToIndex.MetaRight
|
|
4419
|
+
]);
|
|
4420
|
+
function releaseNonModifierKeys(keyboard) {
|
|
4421
|
+
const bitCount = keyboard.keysDown.length * 8;
|
|
4422
|
+
for (let i = 0; i < bitCount; i++) {
|
|
4423
|
+
if (MODIFIER_KEY_INDICES.has(i)) continue;
|
|
4424
|
+
if (!getBit2(keyboard.keysDown, i)) continue;
|
|
4425
|
+
setBit(keyboard.keysDown, i, false);
|
|
4426
|
+
setBit(keyboard.keysUpTrigger, i, true);
|
|
4427
|
+
}
|
|
4428
|
+
}
|
|
4399
4429
|
function getBit2(buffer, bitIndex) {
|
|
4400
4430
|
if (bitIndex < 0 || bitIndex >= buffer.length * 8) return false;
|
|
4401
4431
|
const byteIndex = Math.floor(bitIndex / 8);
|
|
@@ -4432,7 +4462,10 @@ function attachMouseListeners(domElement) {
|
|
|
4432
4462
|
clientY: e.clientY,
|
|
4433
4463
|
deltaX: e.deltaX,
|
|
4434
4464
|
deltaY: e.deltaY,
|
|
4435
|
-
deltaMode: e.deltaMode
|
|
4465
|
+
deltaMode: e.deltaMode,
|
|
4466
|
+
// Trackpad pinch gestures arrive as wheel events with ctrlKey set,
|
|
4467
|
+
// without any keydown — capture the flags from the event itself.
|
|
4468
|
+
modKey: e.ctrlKey || e.metaKey
|
|
4436
4469
|
});
|
|
4437
4470
|
},
|
|
4438
4471
|
onMouseEnter: () => {
|
|
@@ -4474,6 +4507,7 @@ var mouseSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4474
4507
|
mouse.leaveTrigger = false;
|
|
4475
4508
|
mouse.wheelDeltaX = 0;
|
|
4476
4509
|
mouse.wheelDeltaY = 0;
|
|
4510
|
+
mouse.wheelModKey = false;
|
|
4477
4511
|
for (const event of state.eventsBuffer) {
|
|
4478
4512
|
switch (event.type) {
|
|
4479
4513
|
case "mousemove":
|
|
@@ -4485,6 +4519,7 @@ var mouseSystem = defineEditorSystem({ phase: "input" }, (ctx) => {
|
|
|
4485
4519
|
mouse.wheelDeltaX = event.deltaX;
|
|
4486
4520
|
mouse.wheelDeltaY = normalizeWheelDelta(event.deltaY, event.deltaMode);
|
|
4487
4521
|
mouse.wheelTrigger = true;
|
|
4522
|
+
mouse.wheelModKey = event.modKey === true;
|
|
4488
4523
|
break;
|
|
4489
4524
|
case "mouseenter":
|
|
4490
4525
|
mouse.enterTrigger = true;
|
|
@@ -6599,6 +6634,11 @@ function createCorePlugin(options = {}) {
|
|
|
6599
6634
|
command: RemoveSelected.name,
|
|
6600
6635
|
key: Key.Delete
|
|
6601
6636
|
},
|
|
6637
|
+
{
|
|
6638
|
+
// Mac keyboards' delete key reports code "Backspace"
|
|
6639
|
+
command: RemoveSelected.name,
|
|
6640
|
+
key: Key.Backspace
|
|
6641
|
+
},
|
|
6602
6642
|
{
|
|
6603
6643
|
command: SelectAll.name,
|
|
6604
6644
|
key: Key.A,
|