@inditextech/weave-sdk 5.1.4 → 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 +39 -37
- 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/types.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
|
|
@@ -12363,12 +12367,38 @@ var WeaveShapeLabelEditor = class {
|
|
|
12363
12367
|
editingTextBounds = null;
|
|
12364
12368
|
textArea = null;
|
|
12365
12369
|
onLiveResize = null;
|
|
12370
|
+
restoreUserSelect = null;
|
|
12366
12371
|
constructor(instance) {
|
|
12367
12372
|
this.instance = instance;
|
|
12368
12373
|
}
|
|
12369
12374
|
isEditing() {
|
|
12370
12375
|
return this.editing;
|
|
12371
12376
|
}
|
|
12377
|
+
enableStageTextSelection() {
|
|
12378
|
+
const stage = this.instance.getStage();
|
|
12379
|
+
const targets = [];
|
|
12380
|
+
const content = stage.content;
|
|
12381
|
+
if (content) targets.push(content);
|
|
12382
|
+
const container = stage.container();
|
|
12383
|
+
if (container && container !== content) targets.push(container);
|
|
12384
|
+
const previous = targets.map((el) => ({
|
|
12385
|
+
el,
|
|
12386
|
+
userSelect: el.style.userSelect,
|
|
12387
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
12388
|
+
}));
|
|
12389
|
+
for (const el of targets) {
|
|
12390
|
+
el.style.userSelect = "text";
|
|
12391
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
12392
|
+
}
|
|
12393
|
+
this.restoreUserSelect = () => {
|
|
12394
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
12395
|
+
el.style.userSelect = userSelect;
|
|
12396
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
12397
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
12398
|
+
}
|
|
12399
|
+
this.restoreUserSelect = null;
|
|
12400
|
+
};
|
|
12401
|
+
}
|
|
12372
12402
|
renderLabel(group, props, textBounds) {
|
|
12373
12403
|
const labelText = props.labelText ?? WEAVE_SHAPE_LABEL_DEFAULTS.labelText;
|
|
12374
12404
|
const labelNode = new Konva.Text({
|
|
@@ -12467,6 +12497,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12467
12497
|
this.instance.releaseMutexLock();
|
|
12468
12498
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
12469
12499
|
this.editing = false;
|
|
12500
|
+
this.restoreUserSelect?.();
|
|
12470
12501
|
const editedGroupId = this.editingGroup?.id() ?? null;
|
|
12471
12502
|
if (this.editingGroup) {
|
|
12472
12503
|
const liveGroup = this.instance.getStage().findOne(`#${this.editingGroup.id()}`);
|
|
@@ -12597,6 +12628,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12597
12628
|
const props = group.getAttrs();
|
|
12598
12629
|
const absScale = group.getAbsoluteScale();
|
|
12599
12630
|
const effectiveScale = absScale.x;
|
|
12631
|
+
this.enableStageTextSelection();
|
|
12600
12632
|
this.textArea = document.createElement("textarea");
|
|
12601
12633
|
this.textArea.id = `${group.id()}_label_textarea`;
|
|
12602
12634
|
this.textArea.rows = 1;
|
|
@@ -12670,6 +12702,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12670
12702
|
};
|
|
12671
12703
|
const commit = (text) => {
|
|
12672
12704
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
12705
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
12673
12706
|
this.exitEditMode();
|
|
12674
12707
|
const liveGroup = this.instance.getStage().findOne(`#${group.id()}`);
|
|
12675
12708
|
const labelNode = liveGroup?.findOne(`#${labelId(group.id())}`);
|
|
@@ -12693,9 +12726,17 @@ var WeaveShapeLabelEditor = class {
|
|
|
12693
12726
|
this.textArea.scrollLeft = 0;
|
|
12694
12727
|
}
|
|
12695
12728
|
}, { signal: this.instance.getEventsController().signal });
|
|
12729
|
+
let pointerDownInsideTextArea = false;
|
|
12730
|
+
const handlePointerDown$1 = (e) => {
|
|
12731
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
12732
|
+
};
|
|
12696
12733
|
const handleOutsideClick = (e) => {
|
|
12697
12734
|
e.stopPropagation();
|
|
12698
12735
|
if (!this.textArea) return;
|
|
12736
|
+
if (pointerDownInsideTextArea) {
|
|
12737
|
+
pointerDownInsideTextArea = false;
|
|
12738
|
+
return;
|
|
12739
|
+
}
|
|
12699
12740
|
const mouseX = e.clientX;
|
|
12700
12741
|
const mouseY = e.clientY;
|
|
12701
12742
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -12707,6 +12748,7 @@ var WeaveShapeLabelEditor = class {
|
|
|
12707
12748
|
if (clickedOutside) commit(this.textArea.value);
|
|
12708
12749
|
};
|
|
12709
12750
|
setTimeout(() => {
|
|
12751
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
12710
12752
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
12711
12753
|
}, 0);
|
|
12712
12754
|
this.textArea.tabIndex = 1;
|
|
@@ -13821,6 +13863,7 @@ const TEXT_LAYOUT = {
|
|
|
13821
13863
|
//#region src/nodes/text/text.ts
|
|
13822
13864
|
var WeaveTextNode = class extends WeaveNode {
|
|
13823
13865
|
nodeType = WEAVE_TEXT_NODE_TYPE;
|
|
13866
|
+
restoreUserSelect = null;
|
|
13824
13867
|
constructor(params) {
|
|
13825
13868
|
super();
|
|
13826
13869
|
const { config } = params ?? {};
|
|
@@ -14173,8 +14216,34 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14173
14216
|
this.textArea.style.webkitTextStroke = `${this.config.outline.width * this.instance.getStage().scaleX()}px ${this.config.outline.color}`;
|
|
14174
14217
|
}
|
|
14175
14218
|
}
|
|
14219
|
+
enableStageTextSelection() {
|
|
14220
|
+
const stage = this.instance.getStage();
|
|
14221
|
+
const targets = [];
|
|
14222
|
+
const content = stage.content;
|
|
14223
|
+
if (content) targets.push(content);
|
|
14224
|
+
const container = stage.container();
|
|
14225
|
+
if (container && container !== content) targets.push(container);
|
|
14226
|
+
const previous = targets.map((el) => ({
|
|
14227
|
+
el,
|
|
14228
|
+
userSelect: el.style.userSelect,
|
|
14229
|
+
webkitUserSelect: el.style.getPropertyValue("-webkit-user-select")
|
|
14230
|
+
}));
|
|
14231
|
+
for (const el of targets) {
|
|
14232
|
+
el.style.userSelect = "text";
|
|
14233
|
+
el.style.setProperty("-webkit-user-select", "text");
|
|
14234
|
+
}
|
|
14235
|
+
this.restoreUserSelect = () => {
|
|
14236
|
+
for (const { el, userSelect, webkitUserSelect } of previous) {
|
|
14237
|
+
el.style.userSelect = userSelect;
|
|
14238
|
+
if (webkitUserSelect) el.style.setProperty("-webkit-user-select", webkitUserSelect);
|
|
14239
|
+
else el.style.removeProperty("-webkit-user-select");
|
|
14240
|
+
}
|
|
14241
|
+
this.restoreUserSelect = null;
|
|
14242
|
+
};
|
|
14243
|
+
}
|
|
14176
14244
|
createTextAreaDOM(textNode, position) {
|
|
14177
14245
|
const stage = this.instance.getStage();
|
|
14246
|
+
this.enableStageTextSelection();
|
|
14178
14247
|
this.textAreaSuperContainer = document.createElement("div");
|
|
14179
14248
|
this.textAreaSuperContainer.id = `${textNode.id()}_supercontainer`;
|
|
14180
14249
|
this.textAreaSuperContainer.style.position = "absolute";
|
|
@@ -14321,7 +14390,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14321
14390
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14322
14391
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14323
14392
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14324
|
-
window.removeEventListener("pointerdown",
|
|
14393
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14325
14394
|
return;
|
|
14326
14395
|
}
|
|
14327
14396
|
};
|
|
@@ -14331,7 +14400,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14331
14400
|
this.instance.removeEventListener("onZoomChange", this.onZoomChangeHandler(textNode).bind(this));
|
|
14332
14401
|
this.instance.removeEventListener("onStageMove", this.onStageMoveHandler(textNode).bind(this));
|
|
14333
14402
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14334
|
-
window.removeEventListener("pointerdown",
|
|
14403
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14335
14404
|
};
|
|
14336
14405
|
textNode.setAttr("cancelEditMode", cancelEditMode.bind(this));
|
|
14337
14406
|
const handleKeyUp = () => {
|
|
@@ -14351,9 +14420,17 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14351
14420
|
this.textArea.addEventListener("keyup", handleKeyUp, { signal: this.instance.getEventsController().signal });
|
|
14352
14421
|
this.textArea.tabIndex = 1;
|
|
14353
14422
|
this.textArea.focus();
|
|
14423
|
+
let pointerDownInsideTextArea = false;
|
|
14424
|
+
const handlePointerDown$1 = (e) => {
|
|
14425
|
+
pointerDownInsideTextArea = !!this.textArea && this.textArea.contains(e.target);
|
|
14426
|
+
};
|
|
14354
14427
|
const handleOutsideClick = (e) => {
|
|
14355
14428
|
e.stopPropagation();
|
|
14356
14429
|
if (!this.textArea) return;
|
|
14430
|
+
if (pointerDownInsideTextArea) {
|
|
14431
|
+
pointerDownInsideTextArea = false;
|
|
14432
|
+
return;
|
|
14433
|
+
}
|
|
14357
14434
|
const mouseX = e.clientX;
|
|
14358
14435
|
const mouseY = e.clientY;
|
|
14359
14436
|
let elementUnderMouse = document.elementFromPoint(mouseX, mouseY);
|
|
@@ -14370,10 +14447,12 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14370
14447
|
this.textArea.removeEventListener("keydown", handleKeyDown);
|
|
14371
14448
|
this.textArea.removeEventListener("keyup", handleKeyUp);
|
|
14372
14449
|
window.removeEventListener("pointerup", handleOutsideClick);
|
|
14450
|
+
window.removeEventListener("pointerdown", handlePointerDown$1);
|
|
14373
14451
|
return;
|
|
14374
14452
|
}
|
|
14375
14453
|
};
|
|
14376
14454
|
setTimeout(() => {
|
|
14455
|
+
window.addEventListener("pointerdown", handlePointerDown$1, { signal: this.instance.getEventsController().signal });
|
|
14377
14456
|
window.addEventListener("pointerup", handleOutsideClick, { signal: this.instance.getEventsController().signal });
|
|
14378
14457
|
}, 0);
|
|
14379
14458
|
this.instance.getStage().mode(WEAVE_STAGE_TEXT_EDITION_MODE);
|
|
@@ -14411,6 +14490,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14411
14490
|
else textNode.visible(true);
|
|
14412
14491
|
}
|
|
14413
14492
|
removeTextAreaDOM(textNode) {
|
|
14493
|
+
this.restoreUserSelect?.();
|
|
14414
14494
|
this.instance.releaseMutexLock();
|
|
14415
14495
|
this.instance.getStage().mode(WEAVE_STAGE_DEFAULT_MODE);
|
|
14416
14496
|
this.editing = false;
|