@inditextech/weave-sdk 5.1.3 → 5.1.5
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/sdk.js +83 -3
- package/dist/sdk.node.js +83 -3
- package/dist/sdk.node.stats.html +1 -1
- package/dist/sdk.stats.html +1 -1
- package/dist/types.d.ts +25 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +83 -3
- package/dist/types.js.map +1 -1
- package/dist/types.stats.html +1 -1
- package/package.json +2 -2
package/dist/sdk.js
CHANGED
|
@@ -4917,6 +4917,10 @@ function handleClickOrTap(ctx, e) {
|
|
|
4917
4917
|
if (canMove && e.evt) {
|
|
4918
4918
|
nodeTargeted.draggable(true);
|
|
4919
4919
|
ctx.armDrag(nodeTargeted, e.evt.pointerId);
|
|
4920
|
+
stage.container().tabIndex = 1;
|
|
4921
|
+
stage.container().focus();
|
|
4922
|
+
stage.container().style.cursor = (typeof nodeTargeted?.defineMousePointer === "function" ? nodeTargeted.defineMousePointer() : null) ?? "grab";
|
|
4923
|
+
ctx.triggerSelectedNodesEvent();
|
|
4920
4924
|
return;
|
|
4921
4925
|
}
|
|
4922
4926
|
}
|
|
@@ -9778,7 +9782,7 @@ var WeaveRegisterManager = class {
|
|
|
9778
9782
|
|
|
9779
9783
|
//#endregion
|
|
9780
9784
|
//#region package.json
|
|
9781
|
-
var version = "5.1.
|
|
9785
|
+
var version = "5.1.5";
|
|
9782
9786
|
|
|
9783
9787
|
//#endregion
|
|
9784
9788
|
//#region src/managers/setup.ts
|
|
@@ -12317,12 +12321,38 @@ var WeaveShapeLabelEditor = class {
|
|
|
12317
12321
|
editingTextBounds = null;
|
|
12318
12322
|
textArea = null;
|
|
12319
12323
|
onLiveResize = null;
|
|
12324
|
+
restoreUserSelect = null;
|
|
12320
12325
|
constructor(instance) {
|
|
12321
12326
|
this.instance = instance;
|
|
12322
12327
|
}
|
|
12323
12328
|
isEditing() {
|
|
12324
12329
|
return this.editing;
|
|
12325
12330
|
}
|
|
12331
|
+
enableStageTextSelection() {
|
|
12332
|
+
const stage = this.instance.getStage();
|
|
12333
|
+
const targets = [];
|
|
12334
|
+
const content = stage.content;
|
|
12335
|
+
if (content) targets.push(content);
|
|
12336
|
+
const container = stage.container();
|
|
12337
|
+
if (container && container !== content) targets.push(container);
|
|
12338
|
+
const previous = targets.map((el) => ({
|
|
12339
|
+
el,
|
|
12340
|
+
userSelect: el.style.userSelect,
|
|
12341
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
12342
|
+
}));
|
|
12343
|
+
for (const el of targets) {
|
|
12344
|
+
el.style.userSelect = "text";
|
|
12345
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
12346
|
+
}
|
|
12347
|
+
this.restoreUserSelect = () => {
|
|
12348
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
12349
|
+
el.style.userSelect = userSelect;
|
|
12350
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
12351
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
12352
|
+
}
|
|
12353
|
+
this.restoreUserSelect = null;
|
|
12354
|
+
};
|
|
12355
|
+
}
|
|
12326
12356
|
renderLabel(group, props, textBounds) {
|
|
12327
12357
|
const labelText = props.labelText ?? WEAVE_SHAPE_LABEL_DEFAULTS.labelText;
|
|
12328
12358
|
const labelNode = new Konva.Text({
|
|
@@ -12421,6 +12451,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12421
12451
|
this.instance.releaseMutexLock();
|
|
12422
12452
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
12423
12453
|
this.editing = false;
|
|
12454
|
+
this.restoreUserSelect?.();
|
|
12424
12455
|
const editedGroupId = this.editingGroup?.id() ?? null;
|
|
12425
12456
|
if (this.editingGroup) {
|
|
12426
12457
|
const liveGroup = this.instance.getStage().findOne(`#${this.editingGroup.id()}`);
|
|
@@ -12551,6 +12582,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12551
12582
|
const props = group.getAttrs();
|
|
12552
12583
|
const absScale = group.getAbsoluteScale();
|
|
12553
12584
|
const effectiveScale = absScale.x;
|
|
12585
|
+
this.enableStageTextSelection();
|
|
12554
12586
|
this.textArea = document.createElement("textarea");
|
|
12555
12587
|
this.textArea.id = `${group.id()}_label_textarea`;
|
|
12556
12588
|
this.textArea.rows = 1;
|
|
@@ -12624,6 +12656,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12624
12656
|
};
|
|
12625
12657
|
const commit = (text) => {
|
|
12626
12658
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
12659
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
12627
12660
|
this.exitEditMode();
|
|
12628
12661
|
const liveGroup = this.instance.getStage().findOne(`#${group.id()}`);
|
|
12629
12662
|
const labelNode = liveGroup?.findOne(`#${labelId(group.id())}`);
|
|
@@ -12647,9 +12680,17 @@ var WeaveShapeLabelEditor = class {
|
|
|
12647
12680
|
this.textArea.scrollLeft = 0;
|
|
12648
12681
|
}
|
|
12649
12682
|
}, { signal: this.instance.getEventsController().signal });
|
|
12683
|
+
let pointerDownInsideTextArea = false;
|
|
12684
|
+
const handlePointerDown$1 = (e) => {
|
|
12685
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
12686
|
+
};
|
|
12650
12687
|
const handleOutsideClick = (e) => {
|
|
12651
12688
|
e.stopPropagation();
|
|
12652
12689
|
if (!this.textArea) return;
|
|
12690
|
+
if (pointerDownInsideTextArea) {
|
|
12691
|
+
pointerDownInsideTextArea = false;
|
|
12692
|
+
return;
|
|
12693
|
+
}
|
|
12653
12694
|
const mouseX = e.clientX;
|
|
12654
12695
|
const mouseY = e.clientY;
|
|
12655
12696
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -12661,6 +12702,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12661
12702
|
if (clickedOutside) commit(this.textArea.value);
|
|
12662
12703
|
};
|
|
12663
12704
|
setTimeout(() => {
|
|
12705
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
12664
12706
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
12665
12707
|
}, 0);
|
|
12666
12708
|
this.textArea.tabIndex = 1;
|
|
@@ -13775,6 +13817,7 @@ const TEXT_LAYOUT = {
|
|
|
13775
13817
|
//#region src/nodes/text/text.ts
|
|
13776
13818
|
var WeaveTextNode = class extends WeaveNode {
|
|
13777
13819
|
nodeType = WEAVE_TEXT_NODE_TYPE;
|
|
13820
|
+
restoreUserSelect = null;
|
|
13778
13821
|
constructor(params) {
|
|
13779
13822
|
super();
|
|
13780
13823
|
const { config } = params ?? {};
|
|
@@ -14127,8 +14170,34 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14127
14170
|
this.textArea.style.webkitTextStroke = `${this.config.outline.width * this.instance.getStage().scaleX()}px ${this.config.outline.color}`;
|
|
14128
14171
|
}
|
|
14129
14172
|
}
|
|
14173
|
+
enableStageTextSelection() {
|
|
14174
|
+
const stage = this.instance.getStage();
|
|
14175
|
+
const targets = [];
|
|
14176
|
+
const content = stage.content;
|
|
14177
|
+
if (content) targets.push(content);
|
|
14178
|
+
const container = stage.container();
|
|
14179
|
+
if (container && container !== content) targets.push(container);
|
|
14180
|
+
const previous = targets.map((el) => ({
|
|
14181
|
+
el,
|
|
14182
|
+
userSelect: el.style.userSelect,
|
|
14183
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
14184
|
+
}));
|
|
14185
|
+
for (const el of targets) {
|
|
14186
|
+
el.style.userSelect = "text";
|
|
14187
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
14188
|
+
}
|
|
14189
|
+
this.restoreUserSelect = () => {
|
|
14190
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
14191
|
+
el.style.userSelect = userSelect;
|
|
14192
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
14193
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
14194
|
+
}
|
|
14195
|
+
this.restoreUserSelect = null;
|
|
14196
|
+
};
|
|
14197
|
+
}
|
|
14130
14198
|
createTextAreaDOM(textNode, position) {
|
|
14131
14199
|
const stage = this.instance.getStage();
|
|
14200
|
+
this.enableStageTextSelection();
|
|
14132
14201
|
this.textAreaSuperContainer = document.createElement("div");
|
|
14133
14202
|
this.textAreaSuperContainer.id = `${textNode.id()}_supercontainer`;
|
|
14134
14203
|
this.textAreaSuperContainer.style.position = "absolute";
|
|
@@ -14275,7 +14344,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14275
14344
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14276
14345
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14277
14346
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14278
|
-
window.removeEventListener("pointerdown",
|
|
14347
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14279
14348
|
return;
|
|
14280
14349
|
}
|
|
14281
14350
|
};
|
|
@@ -14285,7 +14354,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14285
14354
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14286
14355
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14287
14356
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14288
|
-
window.removeEventListener("pointerdown",
|
|
14357
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14289
14358
|
};
|
|
14290
14359
|
textNode.setAttr("cancelEditMode", cancelEditMode.bind(this));
|
|
14291
14360
|
const handleKeyUp = () => {
|
|
@@ -14305,9 +14374,17 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14305
14374
|
this.textArea.addEventListener("keyup", handleKeyUp, { signal: this.instance.getEventsController().signal });
|
|
14306
14375
|
this.textArea.tabIndex = 1;
|
|
14307
14376
|
this.textArea.focus();
|
|
14377
|
+
let pointerDownInsideTextArea = false;
|
|
14378
|
+
const handlePointerDown$1 = (e) => {
|
|
14379
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
14380
|
+
};
|
|
14308
14381
|
const handleOutsideClick = (e) => {
|
|
14309
14382
|
e.stopPropagation();
|
|
14310
14383
|
if (!this.textArea) return;
|
|
14384
|
+
if (pointerDownInsideTextArea) {
|
|
14385
|
+
pointerDownInsideTextArea = false;
|
|
14386
|
+
return;
|
|
14387
|
+
}
|
|
14311
14388
|
const mouseX = e.clientX;
|
|
14312
14389
|
const mouseY = e.clientY;
|
|
14313
14390
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -14324,10 +14401,12 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14324
14401
|
this.textArea.removeEventListener("keydown", handleKeyDown);
|
|
14325
14402
|
this.textArea.removeEventListener("keyup", handleKeyUp);
|
|
14326
14403
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14404
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14327
14405
|
return;
|
|
14328
14406
|
}
|
|
14329
14407
|
};
|
|
14330
14408
|
setTimeout(() => {
|
|
14409
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
14331
14410
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
14332
14411
|
}, 0);
|
|
14333
14412
|
this.instance.getStage().mode(WEAVE_STAGE_TEXT_EDITION_MODE);
|
|
@@ -14365,6 +14444,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14365
14444
|
else textNode.visible(true);
|
|
14366
14445
|
}
|
|
14367
14446
|
removeTextAreaDOM(textNode) {
|
|
14447
|
+
this.restoreUserSelect?.();
|
|
14368
14448
|
this.instance.releaseMutexLock();
|
|
14369
14449
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
14370
14450
|
this.editing = false;
|
package/dist/sdk.node.js
CHANGED
|
@@ -4916,6 +4916,10 @@ function handleClickOrTap(ctx, e) {
|
|
|
4916
4916
|
if (canMove && e.evt) {
|
|
4917
4917
|
nodeTargeted.draggable(true);
|
|
4918
4918
|
ctx.armDrag(nodeTargeted, e.evt.pointerId);
|
|
4919
|
+
stage.container().tabIndex = 1;
|
|
4920
|
+
stage.container().focus();
|
|
4921
|
+
stage.container().style.cursor = (typeof nodeTargeted?.defineMousePointer === "function" ? nodeTargeted.defineMousePointer() : null) ?? "grab";
|
|
4922
|
+
ctx.triggerSelectedNodesEvent();
|
|
4919
4923
|
return;
|
|
4920
4924
|
}
|
|
4921
4925
|
}
|
|
@@ -9777,7 +9781,7 @@ var WeaveRegisterManager = class {
|
|
|
9777
9781
|
|
|
9778
9782
|
//#endregion
|
|
9779
9783
|
//#region package.json
|
|
9780
|
-
var version = "5.1.
|
|
9784
|
+
var version = "5.1.5";
|
|
9781
9785
|
|
|
9782
9786
|
//#endregion
|
|
9783
9787
|
//#region src/managers/setup.ts
|
|
@@ -12316,12 +12320,38 @@ var WeaveShapeLabelEditor = class {
|
|
|
12316
12320
|
editingTextBounds = null;
|
|
12317
12321
|
textArea = null;
|
|
12318
12322
|
onLiveResize = null;
|
|
12323
|
+
restoreUserSelect = null;
|
|
12319
12324
|
constructor(instance) {
|
|
12320
12325
|
this.instance = instance;
|
|
12321
12326
|
}
|
|
12322
12327
|
isEditing() {
|
|
12323
12328
|
return this.editing;
|
|
12324
12329
|
}
|
|
12330
|
+
enableStageTextSelection() {
|
|
12331
|
+
const stage = this.instance.getStage();
|
|
12332
|
+
const targets = [];
|
|
12333
|
+
const content = stage.content;
|
|
12334
|
+
if (content) targets.push(content);
|
|
12335
|
+
const container = stage.container();
|
|
12336
|
+
if (container && container !== content) targets.push(container);
|
|
12337
|
+
const previous = targets.map((el) => ({
|
|
12338
|
+
el,
|
|
12339
|
+
userSelect: el.style.userSelect,
|
|
12340
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
12341
|
+
}));
|
|
12342
|
+
for (const el of targets) {
|
|
12343
|
+
el.style.userSelect = "text";
|
|
12344
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
12345
|
+
}
|
|
12346
|
+
this.restoreUserSelect = () => {
|
|
12347
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
12348
|
+
el.style.userSelect = userSelect;
|
|
12349
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
12350
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
12351
|
+
}
|
|
12352
|
+
this.restoreUserSelect = null;
|
|
12353
|
+
};
|
|
12354
|
+
}
|
|
12325
12355
|
renderLabel(group, props, textBounds) {
|
|
12326
12356
|
const labelText = props.labelText ?? WEAVE_SHAPE_LABEL_DEFAULTS.labelText;
|
|
12327
12357
|
const labelNode = new Konva.Text({
|
|
@@ -12420,6 +12450,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12420
12450
|
this.instance.releaseMutexLock();
|
|
12421
12451
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
12422
12452
|
this.editing = false;
|
|
12453
|
+
this.restoreUserSelect?.();
|
|
12423
12454
|
const editedGroupId = this.editingGroup?.id() ?? null;
|
|
12424
12455
|
if (this.editingGroup) {
|
|
12425
12456
|
const liveGroup = this.instance.getStage().findOne(`#${this.editingGroup.id()}`);
|
|
@@ -12550,6 +12581,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12550
12581
|
const props = group.getAttrs();
|
|
12551
12582
|
const absScale = group.getAbsoluteScale();
|
|
12552
12583
|
const effectiveScale = absScale.x;
|
|
12584
|
+
this.enableStageTextSelection();
|
|
12553
12585
|
this.textArea = document.createElement("textarea");
|
|
12554
12586
|
this.textArea.id = `${group.id()}_label_textarea`;
|
|
12555
12587
|
this.textArea.rows = 1;
|
|
@@ -12623,6 +12655,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12623
12655
|
};
|
|
12624
12656
|
const commit = (text) => {
|
|
12625
12657
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
12658
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
12626
12659
|
this.exitEditMode();
|
|
12627
12660
|
const liveGroup = this.instance.getStage().findOne(`#${group.id()}`);
|
|
12628
12661
|
const labelNode = liveGroup?.findOne(`#${labelId(group.id())}`);
|
|
@@ -12646,9 +12679,17 @@ var WeaveShapeLabelEditor = class {
|
|
|
12646
12679
|
this.textArea.scrollLeft = 0;
|
|
12647
12680
|
}
|
|
12648
12681
|
}, { signal: this.instance.getEventsController().signal });
|
|
12682
|
+
let pointerDownInsideTextArea = false;
|
|
12683
|
+
const handlePointerDown$1 = (e) => {
|
|
12684
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
12685
|
+
};
|
|
12649
12686
|
const handleOutsideClick = (e) => {
|
|
12650
12687
|
e.stopPropagation();
|
|
12651
12688
|
if (!this.textArea) return;
|
|
12689
|
+
if (pointerDownInsideTextArea) {
|
|
12690
|
+
pointerDownInsideTextArea = false;
|
|
12691
|
+
return;
|
|
12692
|
+
}
|
|
12652
12693
|
const mouseX = e.clientX;
|
|
12653
12694
|
const mouseY = e.clientY;
|
|
12654
12695
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -12660,6 +12701,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12660
12701
|
if (clickedOutside) commit(this.textArea.value);
|
|
12661
12702
|
};
|
|
12662
12703
|
setTimeout(() => {
|
|
12704
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
12663
12705
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
12664
12706
|
}, 0);
|
|
12665
12707
|
this.textArea.tabIndex = 1;
|
|
@@ -13774,6 +13816,7 @@ const TEXT_LAYOUT = {
|
|
|
13774
13816
|
//#region src/nodes/text/text.ts
|
|
13775
13817
|
var WeaveTextNode = class extends WeaveNode {
|
|
13776
13818
|
nodeType = WEAVE_TEXT_NODE_TYPE;
|
|
13819
|
+
restoreUserSelect = null;
|
|
13777
13820
|
constructor(params) {
|
|
13778
13821
|
super();
|
|
13779
13822
|
const { config } = params ?? {};
|
|
@@ -14126,8 +14169,34 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14126
14169
|
this.textArea.style.webkitTextStroke = `${this.config.outline.width * this.instance.getStage().scaleX()}px ${this.config.outline.color}`;
|
|
14127
14170
|
}
|
|
14128
14171
|
}
|
|
14172
|
+
enableStageTextSelection() {
|
|
14173
|
+
const stage = this.instance.getStage();
|
|
14174
|
+
const targets = [];
|
|
14175
|
+
const content = stage.content;
|
|
14176
|
+
if (content) targets.push(content);
|
|
14177
|
+
const container = stage.container();
|
|
14178
|
+
if (container && container !== content) targets.push(container);
|
|
14179
|
+
const previous = targets.map((el) => ({
|
|
14180
|
+
el,
|
|
14181
|
+
userSelect: el.style.userSelect,
|
|
14182
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
14183
|
+
}));
|
|
14184
|
+
for (const el of targets) {
|
|
14185
|
+
el.style.userSelect = "text";
|
|
14186
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
14187
|
+
}
|
|
14188
|
+
this.restoreUserSelect = () => {
|
|
14189
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
14190
|
+
el.style.userSelect = userSelect;
|
|
14191
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
14192
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
14193
|
+
}
|
|
14194
|
+
this.restoreUserSelect = null;
|
|
14195
|
+
};
|
|
14196
|
+
}
|
|
14129
14197
|
createTextAreaDOM(textNode, position) {
|
|
14130
14198
|
const stage = this.instance.getStage();
|
|
14199
|
+
this.enableStageTextSelection();
|
|
14131
14200
|
this.textAreaSuperContainer = document.createElement("div");
|
|
14132
14201
|
this.textAreaSuperContainer.id = `${textNode.id()}_supercontainer`;
|
|
14133
14202
|
this.textAreaSuperContainer.style.position = "absolute";
|
|
@@ -14274,7 +14343,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14274
14343
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14275
14344
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14276
14345
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14277
|
-
window.removeEventListener("pointerdown",
|
|
14346
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14278
14347
|
return;
|
|
14279
14348
|
}
|
|
14280
14349
|
};
|
|
@@ -14284,7 +14353,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14284
14353
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14285
14354
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14286
14355
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14287
|
-
window.removeEventListener("pointerdown",
|
|
14356
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14288
14357
|
};
|
|
14289
14358
|
textNode.setAttr("cancelEditMode", cancelEditMode.bind(this));
|
|
14290
14359
|
const handleKeyUp = () => {
|
|
@@ -14304,9 +14373,17 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14304
14373
|
this.textArea.addEventListener("keyup", handleKeyUp, { signal: this.instance.getEventsController().signal });
|
|
14305
14374
|
this.textArea.tabIndex = 1;
|
|
14306
14375
|
this.textArea.focus();
|
|
14376
|
+
let pointerDownInsideTextArea = false;
|
|
14377
|
+
const handlePointerDown$1 = (e) => {
|
|
14378
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
14379
|
+
};
|
|
14307
14380
|
const handleOutsideClick = (e) => {
|
|
14308
14381
|
e.stopPropagation();
|
|
14309
14382
|
if (!this.textArea) return;
|
|
14383
|
+
if (pointerDownInsideTextArea) {
|
|
14384
|
+
pointerDownInsideTextArea = false;
|
|
14385
|
+
return;
|
|
14386
|
+
}
|
|
14310
14387
|
const mouseX = e.clientX;
|
|
14311
14388
|
const mouseY = e.clientY;
|
|
14312
14389
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -14323,10 +14400,12 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14323
14400
|
this.textArea.removeEventListener("keydown", handleKeyDown);
|
|
14324
14401
|
this.textArea.removeEventListener("keyup", handleKeyUp);
|
|
14325
14402
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14403
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14326
14404
|
return;
|
|
14327
14405
|
}
|
|
14328
14406
|
};
|
|
14329
14407
|
setTimeout(() => {
|
|
14408
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
14330
14409
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
14331
14410
|
}, 0);
|
|
14332
14411
|
this.instance.getStage().mode(WEAVE_STAGE_TEXT_EDITION_MODE);
|
|
@@ -14364,6 +14443,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14364
14443
|
else textNode.visible(true);
|
|
14365
14444
|
}
|
|
14366
14445
|
removeTextAreaDOM(textNode) {
|
|
14446
|
+
this.restoreUserSelect?.();
|
|
14367
14447
|
this.instance.releaseMutexLock();
|
|
14368
14448
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
14369
14449
|
this.editing = false;
|