@inditextech/weave-sdk 5.3.0 → 5.4.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/sdk.js +151 -6
- package/dist/sdk.node.js +151 -6
- package/dist/sdk.node.stats.html +1 -1
- package/dist/sdk.stats.html +1 -1
- package/dist/types.d.ts +36 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +151 -6
- package/dist/types.js.map +1 -1
- package/dist/types.stats.html +1 -1
- package/package.json +2 -2
package/dist/sdk.js
CHANGED
|
@@ -4676,7 +4676,15 @@ function handleClickOrTap(ctx, e) {
|
|
|
4676
4676
|
nodeTargeted.dblClick();
|
|
4677
4677
|
return;
|
|
4678
4678
|
}
|
|
4679
|
-
|
|
4679
|
+
const isCtrlOrCmdPressed = e.evt.ctrlKey || e.evt.metaKey;
|
|
4680
|
+
if (!e.evt.shiftKey) {
|
|
4681
|
+
const wasSelectedBeforeThisClick = tr.nodes().findIndex((node) => node.getAttrs().id === nodeTargeted.getAttrs().id) !== -1;
|
|
4682
|
+
nodeTargeted.click({
|
|
4683
|
+
wasSelected: wasSelectedBeforeThisClick,
|
|
4684
|
+
ctrlOrMetaPressed: isCtrlOrCmdPressed
|
|
4685
|
+
});
|
|
4686
|
+
}
|
|
4687
|
+
if (isCtrlOrCmdPressed) return;
|
|
4680
4688
|
if (!metaPressed) {
|
|
4681
4689
|
tr.nodes([nodeTargeted]);
|
|
4682
4690
|
tr.show();
|
|
@@ -5945,6 +5953,7 @@ const augmentKonvaNodeClass = (config) => {
|
|
|
5945
5953
|
Konva.Node.prototype.closeCrop = function() {};
|
|
5946
5954
|
Konva.Node.prototype.resetCrop = function() {};
|
|
5947
5955
|
Konva.Node.prototype.dblClick = function() {};
|
|
5956
|
+
Konva.Node.prototype.click = function() {};
|
|
5948
5957
|
Konva.Node.prototype.allowedAnchors = function() {
|
|
5949
5958
|
return [];
|
|
5950
5959
|
};
|
|
@@ -9457,7 +9466,7 @@ var WeaveRegisterManager = class {
|
|
|
9457
9466
|
};
|
|
9458
9467
|
//#endregion
|
|
9459
9468
|
//#region package.json
|
|
9460
|
-
var version = "5.
|
|
9469
|
+
var version = "5.4.0";
|
|
9461
9470
|
//#endregion
|
|
9462
9471
|
//#region src/managers/setup.ts
|
|
9463
9472
|
var WeaveSetupManager = class {
|
|
@@ -13387,8 +13396,13 @@ const WEAVE_TEXT_NODE_DEFAULT_CONFIG = {
|
|
|
13387
13396
|
transform: { ...WEAVE_NODES_SELECTION_DEFAULT_CONFIG.selection },
|
|
13388
13397
|
outline: { enabled: false },
|
|
13389
13398
|
cursor: { color: "#000000" },
|
|
13390
|
-
edition: { borderSize: 2 }
|
|
13399
|
+
edition: { borderSize: 2 },
|
|
13400
|
+
link: {
|
|
13401
|
+
defaultColor: "#1155ccff",
|
|
13402
|
+
hoverColor: "#3d7be0ff"
|
|
13403
|
+
}
|
|
13391
13404
|
};
|
|
13405
|
+
const WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS = ["http:", "https:"];
|
|
13392
13406
|
const TEXT_LAYOUT = {
|
|
13393
13407
|
["SMART"]: "smart",
|
|
13394
13408
|
["AUTO_ALL"]: "auto-all",
|
|
@@ -13397,6 +13411,21 @@ const TEXT_LAYOUT = {
|
|
|
13397
13411
|
};
|
|
13398
13412
|
//#endregion
|
|
13399
13413
|
//#region src/nodes/text/text.ts
|
|
13414
|
+
/**
|
|
13415
|
+
* Validates that a link is an absolute http(s) URL. Used both by the zod
|
|
13416
|
+
* schema (getSchema()) and defensively again at click-time (setLink() and
|
|
13417
|
+
* the pointerclick handler), since the value is user-authored content
|
|
13418
|
+
* rendered and clicked on by other collaborators — schemes like
|
|
13419
|
+
* `javascript:` or `data:` must never reach `window.open`.
|
|
13420
|
+
*/
|
|
13421
|
+
function isValidTextLink(value) {
|
|
13422
|
+
try {
|
|
13423
|
+
const url = new URL(value);
|
|
13424
|
+
return WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS.includes(url.protocol);
|
|
13425
|
+
} catch {
|
|
13426
|
+
return false;
|
|
13427
|
+
}
|
|
13428
|
+
}
|
|
13400
13429
|
var WeaveTextNode = class extends WeaveNode {
|
|
13401
13430
|
config;
|
|
13402
13431
|
nodeType = WEAVE_TEXT_NODE_TYPE;
|
|
@@ -13460,6 +13489,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13460
13489
|
}
|
|
13461
13490
|
}
|
|
13462
13491
|
onRender(props) {
|
|
13492
|
+
const linkPreviousFill = props.link ? props.linkPreviousFill ?? props.fill : props.linkPreviousFill;
|
|
13493
|
+
const linkPreviousTextDecoration = props.link ? props.linkPreviousTextDecoration ?? props.textDecoration : props.linkPreviousTextDecoration;
|
|
13463
13494
|
const text = new Konva.Text({
|
|
13464
13495
|
...props,
|
|
13465
13496
|
name: "node",
|
|
@@ -13469,6 +13500,12 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13469
13500
|
stroke: this.config.outline.color,
|
|
13470
13501
|
strokeWidth: this.config.outline.width,
|
|
13471
13502
|
fillAfterStrokeEnabled: true
|
|
13503
|
+
},
|
|
13504
|
+
...props.link && {
|
|
13505
|
+
textDecoration: "underline",
|
|
13506
|
+
fill: this.config.link.defaultColor,
|
|
13507
|
+
linkPreviousFill,
|
|
13508
|
+
linkPreviousTextDecoration
|
|
13472
13509
|
}
|
|
13473
13510
|
});
|
|
13474
13511
|
this.setupDefaultNodeAugmentation(text);
|
|
@@ -13527,6 +13564,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13527
13564
|
this.triggerEditMode(text);
|
|
13528
13565
|
};
|
|
13529
13566
|
text.setAttr("triggerEditMode", this.triggerEditMode.bind(this));
|
|
13567
|
+
this.setupLinkBehavior(text);
|
|
13530
13568
|
let actualAnchor = void 0;
|
|
13531
13569
|
text.on("transformstart", (e) => {
|
|
13532
13570
|
const isCtrlOrMetaPressed = e.evt.ctrlKey || e.evt.metaKey;
|
|
@@ -13623,6 +13661,9 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13623
13661
|
return text;
|
|
13624
13662
|
}
|
|
13625
13663
|
onUpdate(nodeInstance, nextProps) {
|
|
13664
|
+
const isLinked = Boolean(nextProps.link);
|
|
13665
|
+
const linkPreviousFill = nextProps.link ? nextProps.linkPreviousFill ?? nextProps.fill : nextProps.linkPreviousFill;
|
|
13666
|
+
const linkPreviousTextDecoration = nextProps.link ? nextProps.linkPreviousTextDecoration ?? nextProps.textDecoration : nextProps.linkPreviousTextDecoration;
|
|
13626
13667
|
nodeInstance.setAttrs({
|
|
13627
13668
|
...nextProps,
|
|
13628
13669
|
...!this.config.outline.enabled && { strokeEnabled: false },
|
|
@@ -13631,6 +13672,13 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13631
13672
|
stroke: this.config.outline.color,
|
|
13632
13673
|
strokeWidth: this.config.outline.width,
|
|
13633
13674
|
fillAfterStrokeEnabled: true
|
|
13675
|
+
},
|
|
13676
|
+
link: nextProps.link,
|
|
13677
|
+
linkPreviousFill: isLinked ? linkPreviousFill : void 0,
|
|
13678
|
+
linkPreviousTextDecoration: isLinked ? linkPreviousTextDecoration : void 0,
|
|
13679
|
+
...isLinked && {
|
|
13680
|
+
textDecoration: "underline",
|
|
13681
|
+
fill: this.config.link.defaultColor
|
|
13634
13682
|
}
|
|
13635
13683
|
});
|
|
13636
13684
|
let width = nextProps.width;
|
|
@@ -13672,6 +13720,10 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13672
13720
|
delete cleanedAttrs.overridesMouseControl;
|
|
13673
13721
|
delete cleanedAttrs.shouldUpdateOnTransform;
|
|
13674
13722
|
delete cleanedAttrs.dragBoundFunc;
|
|
13723
|
+
if (cleanedAttrs.link) {
|
|
13724
|
+
if (typeof cleanedAttrs.linkPreviousFill === "string") cleanedAttrs.fill = cleanedAttrs.linkPreviousFill;
|
|
13725
|
+
if (typeof cleanedAttrs.linkPreviousTextDecoration === "string") cleanedAttrs.textDecoration = cleanedAttrs.linkPreviousTextDecoration;
|
|
13726
|
+
}
|
|
13675
13727
|
return {
|
|
13676
13728
|
key: attrs.id ?? "",
|
|
13677
13729
|
type: attrs.nodeType,
|
|
@@ -14077,6 +14129,94 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14077
14129
|
this.createTextAreaDOM(textNode, areaPosition);
|
|
14078
14130
|
this.instance.emitEvent("onEnterTextNodeEditMode", { node: textNode });
|
|
14079
14131
|
}
|
|
14132
|
+
/**
|
|
14133
|
+
* Wires the hover colour swap, link cursor and click-to-open behaviour for
|
|
14134
|
+
* a rendered text node. Runs on top of (not instead of) the generic
|
|
14135
|
+
* selection-hover-halo handling in setupDefaultNodeEvents()/node.ts, the
|
|
14136
|
+
* same way connector.ts layers its own handleMouseover/handleMouseout.
|
|
14137
|
+
*/
|
|
14138
|
+
setupLinkBehavior(text) {
|
|
14139
|
+
text.handleMouseover = () => {
|
|
14140
|
+
if (!text.getAttrs().link) return;
|
|
14141
|
+
text.fill(this.config.link.hoverColor);
|
|
14142
|
+
text.getLayer()?.batchDraw();
|
|
14143
|
+
};
|
|
14144
|
+
text.handleMouseout = () => {
|
|
14145
|
+
if (!text.getAttrs().link) return;
|
|
14146
|
+
text.fill(this.config.link.defaultColor);
|
|
14147
|
+
text.getLayer()?.batchDraw();
|
|
14148
|
+
};
|
|
14149
|
+
text.defineMousePointer = () => {
|
|
14150
|
+
return text.getAttrs().link ? "pointer" : "default";
|
|
14151
|
+
};
|
|
14152
|
+
let linkClickTimeout;
|
|
14153
|
+
const clearLinkClickTimeout = () => {
|
|
14154
|
+
if (linkClickTimeout) {
|
|
14155
|
+
clearTimeout(linkClickTimeout);
|
|
14156
|
+
linkClickTimeout = void 0;
|
|
14157
|
+
}
|
|
14158
|
+
};
|
|
14159
|
+
const previousDblClick = text.dblClick.bind(text);
|
|
14160
|
+
text.dblClick = () => {
|
|
14161
|
+
clearLinkClickTimeout();
|
|
14162
|
+
previousDblClick();
|
|
14163
|
+
};
|
|
14164
|
+
text.click = ({ wasSelected, ctrlOrMetaPressed }) => {
|
|
14165
|
+
if (!text.getAttrs().link) return;
|
|
14166
|
+
if (ctrlOrMetaPressed) {
|
|
14167
|
+
clearLinkClickTimeout();
|
|
14168
|
+
this.openTextLink(text);
|
|
14169
|
+
return;
|
|
14170
|
+
}
|
|
14171
|
+
if (wasSelected) {
|
|
14172
|
+
clearLinkClickTimeout();
|
|
14173
|
+
linkClickTimeout = setTimeout(() => {
|
|
14174
|
+
linkClickTimeout = void 0;
|
|
14175
|
+
if (!this.editing) this.openTextLink(text);
|
|
14176
|
+
}, Konva.dblClickWindow);
|
|
14177
|
+
}
|
|
14178
|
+
};
|
|
14179
|
+
}
|
|
14180
|
+
openTextLink(textNode) {
|
|
14181
|
+
if (this.instance.isServerSide()) return;
|
|
14182
|
+
const link = textNode.getAttrs().link;
|
|
14183
|
+
if (typeof link !== "string" || !isValidTextLink(link)) return;
|
|
14184
|
+
window.open(link, "_blank", "noopener,noreferrer");
|
|
14185
|
+
}
|
|
14186
|
+
/**
|
|
14187
|
+
* Public API to read/set/remove the URL a text node links to. Setting an
|
|
14188
|
+
* invalid or non-http(s) URL is a no-op (see isValidTextLink()).
|
|
14189
|
+
*
|
|
14190
|
+
* The node's real fill/textDecoration are captured once into
|
|
14191
|
+
* `linkPreviousFill`/`linkPreviousTextDecoration` the first time a link is
|
|
14192
|
+
* rendered (see onRender()/onUpdate()) and restored by serialize()
|
|
14193
|
+
* whenever the node is re-serialized while linked — so they survive any
|
|
14194
|
+
* number of resizes/drags/edits while the link is active. removeLink()
|
|
14195
|
+
* relies on that: it omits `link` *and* those two bookkeeping props from
|
|
14196
|
+
* the serialized props entirely, so all three are deleted from shared
|
|
14197
|
+
* state (see updateYjsMapFromObject in managers/state.ts) rather than
|
|
14198
|
+
* persisted as `undefined`, and the node's original fill/text decoration
|
|
14199
|
+
* reappear immediately.
|
|
14200
|
+
*/
|
|
14201
|
+
getLink(nodeInstance) {
|
|
14202
|
+
const link = nodeInstance.getAttrs().link;
|
|
14203
|
+
return typeof link === "string" ? link : void 0;
|
|
14204
|
+
}
|
|
14205
|
+
setLink(nodeInstance, url) {
|
|
14206
|
+
if (!isValidTextLink(url)) return;
|
|
14207
|
+
const serialized = this.serialize(nodeInstance);
|
|
14208
|
+
serialized.props.linkPreviousFill = serialized.props.fill;
|
|
14209
|
+
serialized.props.linkPreviousTextDecoration = serialized.props.textDecoration;
|
|
14210
|
+
serialized.props.link = url;
|
|
14211
|
+
this.instance.updateNode(serialized);
|
|
14212
|
+
}
|
|
14213
|
+
removeLink(nodeInstance) {
|
|
14214
|
+
const serialized = this.serialize(nodeInstance);
|
|
14215
|
+
delete serialized.props.link;
|
|
14216
|
+
delete serialized.props.linkPreviousFill;
|
|
14217
|
+
delete serialized.props.linkPreviousTextDecoration;
|
|
14218
|
+
this.instance.updateNode(serialized);
|
|
14219
|
+
}
|
|
14080
14220
|
onDestroyInstance() {
|
|
14081
14221
|
super.onDestroyInstance();
|
|
14082
14222
|
if (!this.instance.isServerSide() && this.keyPressHandler) {
|
|
@@ -14142,7 +14282,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14142
14282
|
...props.strokeEnabled && { strokeEnabled: props.strokeEnabled },
|
|
14143
14283
|
...props.stroke && { stroke: props.stroke },
|
|
14144
14284
|
...props.strokeWidth && { strokeWidth: props.strokeWidth },
|
|
14145
|
-
...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled }
|
|
14285
|
+
...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled },
|
|
14286
|
+
...props.link && { link: props.link }
|
|
14146
14287
|
} });
|
|
14147
14288
|
}
|
|
14148
14289
|
static updateNodeState(prevNodeState, nextProps) {
|
|
@@ -14167,7 +14308,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14167
14308
|
...nextProps.strokeEnabled && { strokeEnabled: nextProps.strokeEnabled },
|
|
14168
14309
|
...nextProps.stroke && { stroke: nextProps.stroke },
|
|
14169
14310
|
...nextProps.strokeWidth && { strokeWidth: nextProps.strokeWidth },
|
|
14170
|
-
...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled }
|
|
14311
|
+
...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled },
|
|
14312
|
+
...nextProps.link && { link: nextProps.link }
|
|
14171
14313
|
} });
|
|
14172
14314
|
}
|
|
14173
14315
|
static getSchema() {
|
|
@@ -14201,6 +14343,9 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14201
14343
|
]).default("top").describe("Vertical alignment of the text, can be 'top', 'middle' or 'bottom'."),
|
|
14202
14344
|
fill: z.string().default("#000000ff").describe("Fill color of the text in hex format with alpha channel (e.g. #RRGGBBAA)."),
|
|
14203
14345
|
text: z.string().default("text").describe("The actual text content of the node."),
|
|
14346
|
+
link: z.string().url().refine((value) => isValidTextLink(value), { message: "Link must be an absolute http:// or https:// URL." }).optional().describe("External URL the whole text of the node links to. When set, the text is forced underlined and coloured with the configured link colours regardless of fill/textDecoration, is clickable, and opens the URL in a new tab. Only http(s) URLs are accepted. Omit/remove to make the node plain text again."),
|
|
14347
|
+
linkPreviousFill: z.string().optional().describe("Internal bookkeeping: the fill colour the node had right before a link was set, captured automatically so it can be restored when the link is removed. Managed automatically — do not set directly."),
|
|
14348
|
+
linkPreviousTextDecoration: z.string().optional().describe("Internal bookkeeping: the textDecoration the node had right before a link was set, captured automatically so it can be restored when the link is removed. Managed automatically — do not set directly."),
|
|
14204
14349
|
strokeEnabled: z.boolean().default(false).describe("Whether the text outline is enabled."),
|
|
14205
14350
|
stroke: z.string().optional().default("#d6d6d6").describe("Color of the text outline in hex format with alpha channel (e.g. #RRGGBBAA)."),
|
|
14206
14351
|
strokeWidth: z.number().optional().default(2).describe("Width of the text outline in pixels."),
|
|
@@ -32944,4 +33089,4 @@ function getJSONFromYjsBinary(actualState) {
|
|
|
32944
33089
|
return JSON.parse(actualStateString);
|
|
32945
33090
|
}
|
|
32946
33091
|
//#endregion
|
|
32947
|
-
export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DEFAULT_GUIDE_TOOL_ACTION_CONFIG, DEFAULT_SNAPPING_MANAGER_CONFIG, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_NAME, GUIDE_DISTANCE_ORIGIN, GUIDE_KIND, GUIDE_NAME, GUIDE_ORIENTATION, GUIDE_STATE, GUIDE_TOOL_ACTION_NAME, GUIDE_TOOL_STATE, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_ORIENTATION, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, POLYGON_TOOL_ACTION_NAME, POLYGON_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_PLUGIN_KEY, WEAVE_POLYGON_NODE_TYPE, WEAVE_POLYGON_PRESETS, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_SHAPE_LABEL_DEFAULTS, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_SHAPE_LABEL_EDITION_MODE, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveGuideToolAction, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeavePolygonNode, WeavePolygonToolAction, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStateManipulation, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, buildAncestorGroupIds, canComposite, clearContainerTargets, computeEllipseLabelMinSize, computePolygonLabelMinSize, computeRectangleLabelMinSize, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getSelectedNodesMetadata, getShapeLabelSchemaFields, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, instantiatePreset, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isNumber, isObject, isServer, labelId, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, sleep, spreadLabelProps, weavejsToYjsBinary };
|
|
33092
|
+
export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DEFAULT_GUIDE_TOOL_ACTION_CONFIG, DEFAULT_SNAPPING_MANAGER_CONFIG, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_NAME, GUIDE_DISTANCE_ORIGIN, GUIDE_KIND, GUIDE_NAME, GUIDE_ORIENTATION, GUIDE_STATE, GUIDE_TOOL_ACTION_NAME, GUIDE_TOOL_STATE, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_ORIENTATION, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, POLYGON_TOOL_ACTION_NAME, POLYGON_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_PLUGIN_KEY, WEAVE_POLYGON_NODE_TYPE, WEAVE_POLYGON_PRESETS, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_SHAPE_LABEL_DEFAULTS, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_SHAPE_LABEL_EDITION_MODE, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveGuideToolAction, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeavePolygonNode, WeavePolygonToolAction, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStateManipulation, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, buildAncestorGroupIds, canComposite, clearContainerTargets, computeEllipseLabelMinSize, computePolygonLabelMinSize, computeRectangleLabelMinSize, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getSelectedNodesMetadata, getShapeLabelSchemaFields, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, instantiatePreset, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isNumber, isObject, isServer, labelId, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, sleep, spreadLabelProps, weavejsToYjsBinary };
|
package/dist/sdk.node.js
CHANGED
|
@@ -4679,7 +4679,15 @@ function handleClickOrTap(ctx, e) {
|
|
|
4679
4679
|
nodeTargeted.dblClick();
|
|
4680
4680
|
return;
|
|
4681
4681
|
}
|
|
4682
|
-
|
|
4682
|
+
const isCtrlOrCmdPressed = e.evt.ctrlKey || e.evt.metaKey;
|
|
4683
|
+
if (!e.evt.shiftKey) {
|
|
4684
|
+
const wasSelectedBeforeThisClick = tr.nodes().findIndex((node) => node.getAttrs().id === nodeTargeted.getAttrs().id) !== -1;
|
|
4685
|
+
nodeTargeted.click({
|
|
4686
|
+
wasSelected: wasSelectedBeforeThisClick,
|
|
4687
|
+
ctrlOrMetaPressed: isCtrlOrCmdPressed
|
|
4688
|
+
});
|
|
4689
|
+
}
|
|
4690
|
+
if (isCtrlOrCmdPressed) return;
|
|
4683
4691
|
if (!metaPressed) {
|
|
4684
4692
|
tr.nodes([nodeTargeted]);
|
|
4685
4693
|
tr.show();
|
|
@@ -5948,6 +5956,7 @@ const augmentKonvaNodeClass = (config) => {
|
|
|
5948
5956
|
Konva.Node.prototype.closeCrop = function() {};
|
|
5949
5957
|
Konva.Node.prototype.resetCrop = function() {};
|
|
5950
5958
|
Konva.Node.prototype.dblClick = function() {};
|
|
5959
|
+
Konva.Node.prototype.click = function() {};
|
|
5951
5960
|
Konva.Node.prototype.allowedAnchors = function() {
|
|
5952
5961
|
return [];
|
|
5953
5962
|
};
|
|
@@ -9460,7 +9469,7 @@ var WeaveRegisterManager = class {
|
|
|
9460
9469
|
};
|
|
9461
9470
|
//#endregion
|
|
9462
9471
|
//#region package.json
|
|
9463
|
-
var version = "5.
|
|
9472
|
+
var version = "5.4.0";
|
|
9464
9473
|
//#endregion
|
|
9465
9474
|
//#region src/managers/setup.ts
|
|
9466
9475
|
var WeaveSetupManager = class {
|
|
@@ -13390,8 +13399,13 @@ const WEAVE_TEXT_NODE_DEFAULT_CONFIG = {
|
|
|
13390
13399
|
transform: { ...WEAVE_NODES_SELECTION_DEFAULT_CONFIG.selection },
|
|
13391
13400
|
outline: { enabled: false },
|
|
13392
13401
|
cursor: { color: "#000000" },
|
|
13393
|
-
edition: { borderSize: 2 }
|
|
13402
|
+
edition: { borderSize: 2 },
|
|
13403
|
+
link: {
|
|
13404
|
+
defaultColor: "#1155ccff",
|
|
13405
|
+
hoverColor: "#3d7be0ff"
|
|
13406
|
+
}
|
|
13394
13407
|
};
|
|
13408
|
+
const WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS = ["http:", "https:"];
|
|
13395
13409
|
const TEXT_LAYOUT = {
|
|
13396
13410
|
["SMART"]: "smart",
|
|
13397
13411
|
["AUTO_ALL"]: "auto-all",
|
|
@@ -13400,6 +13414,21 @@ const TEXT_LAYOUT = {
|
|
|
13400
13414
|
};
|
|
13401
13415
|
//#endregion
|
|
13402
13416
|
//#region src/nodes/text/text.ts
|
|
13417
|
+
/**
|
|
13418
|
+
* Validates that a link is an absolute http(s) URL. Used both by the zod
|
|
13419
|
+
* schema (getSchema()) and defensively again at click-time (setLink() and
|
|
13420
|
+
* the pointerclick handler), since the value is user-authored content
|
|
13421
|
+
* rendered and clicked on by other collaborators — schemes like
|
|
13422
|
+
* `javascript:` or `data:` must never reach `window.open`.
|
|
13423
|
+
*/
|
|
13424
|
+
function isValidTextLink(value) {
|
|
13425
|
+
try {
|
|
13426
|
+
const url = new URL(value);
|
|
13427
|
+
return WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS.includes(url.protocol);
|
|
13428
|
+
} catch {
|
|
13429
|
+
return false;
|
|
13430
|
+
}
|
|
13431
|
+
}
|
|
13403
13432
|
var WeaveTextNode = class extends WeaveNode {
|
|
13404
13433
|
config;
|
|
13405
13434
|
nodeType = WEAVE_TEXT_NODE_TYPE;
|
|
@@ -13463,6 +13492,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13463
13492
|
}
|
|
13464
13493
|
}
|
|
13465
13494
|
onRender(props) {
|
|
13495
|
+
const linkPreviousFill = props.link ? props.linkPreviousFill ?? props.fill : props.linkPreviousFill;
|
|
13496
|
+
const linkPreviousTextDecoration = props.link ? props.linkPreviousTextDecoration ?? props.textDecoration : props.linkPreviousTextDecoration;
|
|
13466
13497
|
const text = new Konva.Text({
|
|
13467
13498
|
...props,
|
|
13468
13499
|
name: "node",
|
|
@@ -13472,6 +13503,12 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13472
13503
|
stroke: this.config.outline.color,
|
|
13473
13504
|
strokeWidth: this.config.outline.width,
|
|
13474
13505
|
fillAfterStrokeEnabled: true
|
|
13506
|
+
},
|
|
13507
|
+
...props.link && {
|
|
13508
|
+
textDecoration: "underline",
|
|
13509
|
+
fill: this.config.link.defaultColor,
|
|
13510
|
+
linkPreviousFill,
|
|
13511
|
+
linkPreviousTextDecoration
|
|
13475
13512
|
}
|
|
13476
13513
|
});
|
|
13477
13514
|
this.setupDefaultNodeAugmentation(text);
|
|
@@ -13530,6 +13567,7 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13530
13567
|
this.triggerEditMode(text);
|
|
13531
13568
|
};
|
|
13532
13569
|
text.setAttr("triggerEditMode", this.triggerEditMode.bind(this));
|
|
13570
|
+
this.setupLinkBehavior(text);
|
|
13533
13571
|
let actualAnchor = void 0;
|
|
13534
13572
|
text.on("transformstart", (e) => {
|
|
13535
13573
|
const isCtrlOrMetaPressed = e.evt.ctrlKey || e.evt.metaKey;
|
|
@@ -13626,6 +13664,9 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13626
13664
|
return text;
|
|
13627
13665
|
}
|
|
13628
13666
|
onUpdate(nodeInstance, nextProps) {
|
|
13667
|
+
const isLinked = Boolean(nextProps.link);
|
|
13668
|
+
const linkPreviousFill = nextProps.link ? nextProps.linkPreviousFill ?? nextProps.fill : nextProps.linkPreviousFill;
|
|
13669
|
+
const linkPreviousTextDecoration = nextProps.link ? nextProps.linkPreviousTextDecoration ?? nextProps.textDecoration : nextProps.linkPreviousTextDecoration;
|
|
13629
13670
|
nodeInstance.setAttrs({
|
|
13630
13671
|
...nextProps,
|
|
13631
13672
|
...!this.config.outline.enabled && { strokeEnabled: false },
|
|
@@ -13634,6 +13675,13 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13634
13675
|
stroke: this.config.outline.color,
|
|
13635
13676
|
strokeWidth: this.config.outline.width,
|
|
13636
13677
|
fillAfterStrokeEnabled: true
|
|
13678
|
+
},
|
|
13679
|
+
link: nextProps.link,
|
|
13680
|
+
linkPreviousFill: isLinked ? linkPreviousFill : void 0,
|
|
13681
|
+
linkPreviousTextDecoration: isLinked ? linkPreviousTextDecoration : void 0,
|
|
13682
|
+
...isLinked && {
|
|
13683
|
+
textDecoration: "underline",
|
|
13684
|
+
fill: this.config.link.defaultColor
|
|
13637
13685
|
}
|
|
13638
13686
|
});
|
|
13639
13687
|
let width = nextProps.width;
|
|
@@ -13675,6 +13723,10 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
13675
13723
|
delete cleanedAttrs.overridesMouseControl;
|
|
13676
13724
|
delete cleanedAttrs.shouldUpdateOnTransform;
|
|
13677
13725
|
delete cleanedAttrs.dragBoundFunc;
|
|
13726
|
+
if (cleanedAttrs.link) {
|
|
13727
|
+
if (typeof cleanedAttrs.linkPreviousFill === "string") cleanedAttrs.fill = cleanedAttrs.linkPreviousFill;
|
|
13728
|
+
if (typeof cleanedAttrs.linkPreviousTextDecoration === "string") cleanedAttrs.textDecoration = cleanedAttrs.linkPreviousTextDecoration;
|
|
13729
|
+
}
|
|
13678
13730
|
return {
|
|
13679
13731
|
key: attrs.id ?? "",
|
|
13680
13732
|
type: attrs.nodeType,
|
|
@@ -14080,6 +14132,94 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14080
14132
|
this.createTextAreaDOM(textNode, areaPosition);
|
|
14081
14133
|
this.instance.emitEvent("onEnterTextNodeEditMode", { node: textNode });
|
|
14082
14134
|
}
|
|
14135
|
+
/**
|
|
14136
|
+
* Wires the hover colour swap, link cursor and click-to-open behaviour for
|
|
14137
|
+
* a rendered text node. Runs on top of (not instead of) the generic
|
|
14138
|
+
* selection-hover-halo handling in setupDefaultNodeEvents()/node.ts, the
|
|
14139
|
+
* same way connector.ts layers its own handleMouseover/handleMouseout.
|
|
14140
|
+
*/
|
|
14141
|
+
setupLinkBehavior(text) {
|
|
14142
|
+
text.handleMouseover = () => {
|
|
14143
|
+
if (!text.getAttrs().link) return;
|
|
14144
|
+
text.fill(this.config.link.hoverColor);
|
|
14145
|
+
text.getLayer()?.batchDraw();
|
|
14146
|
+
};
|
|
14147
|
+
text.handleMouseout = () => {
|
|
14148
|
+
if (!text.getAttrs().link) return;
|
|
14149
|
+
text.fill(this.config.link.defaultColor);
|
|
14150
|
+
text.getLayer()?.batchDraw();
|
|
14151
|
+
};
|
|
14152
|
+
text.defineMousePointer = () => {
|
|
14153
|
+
return text.getAttrs().link ? "pointer" : "default";
|
|
14154
|
+
};
|
|
14155
|
+
let linkClickTimeout;
|
|
14156
|
+
const clearLinkClickTimeout = () => {
|
|
14157
|
+
if (linkClickTimeout) {
|
|
14158
|
+
clearTimeout(linkClickTimeout);
|
|
14159
|
+
linkClickTimeout = void 0;
|
|
14160
|
+
}
|
|
14161
|
+
};
|
|
14162
|
+
const previousDblClick = text.dblClick.bind(text);
|
|
14163
|
+
text.dblClick = () => {
|
|
14164
|
+
clearLinkClickTimeout();
|
|
14165
|
+
previousDblClick();
|
|
14166
|
+
};
|
|
14167
|
+
text.click = ({ wasSelected, ctrlOrMetaPressed }) => {
|
|
14168
|
+
if (!text.getAttrs().link) return;
|
|
14169
|
+
if (ctrlOrMetaPressed) {
|
|
14170
|
+
clearLinkClickTimeout();
|
|
14171
|
+
this.openTextLink(text);
|
|
14172
|
+
return;
|
|
14173
|
+
}
|
|
14174
|
+
if (wasSelected) {
|
|
14175
|
+
clearLinkClickTimeout();
|
|
14176
|
+
linkClickTimeout = setTimeout(() => {
|
|
14177
|
+
linkClickTimeout = void 0;
|
|
14178
|
+
if (!this.editing) this.openTextLink(text);
|
|
14179
|
+
}, Konva.dblClickWindow);
|
|
14180
|
+
}
|
|
14181
|
+
};
|
|
14182
|
+
}
|
|
14183
|
+
openTextLink(textNode) {
|
|
14184
|
+
if (this.instance.isServerSide()) return;
|
|
14185
|
+
const link = textNode.getAttrs().link;
|
|
14186
|
+
if (typeof link !== "string" || !isValidTextLink(link)) return;
|
|
14187
|
+
window.open(link, "_blank", "noopener,noreferrer");
|
|
14188
|
+
}
|
|
14189
|
+
/**
|
|
14190
|
+
* Public API to read/set/remove the URL a text node links to. Setting an
|
|
14191
|
+
* invalid or non-http(s) URL is a no-op (see isValidTextLink()).
|
|
14192
|
+
*
|
|
14193
|
+
* The node's real fill/textDecoration are captured once into
|
|
14194
|
+
* `linkPreviousFill`/`linkPreviousTextDecoration` the first time a link is
|
|
14195
|
+
* rendered (see onRender()/onUpdate()) and restored by serialize()
|
|
14196
|
+
* whenever the node is re-serialized while linked — so they survive any
|
|
14197
|
+
* number of resizes/drags/edits while the link is active. removeLink()
|
|
14198
|
+
* relies on that: it omits `link` *and* those two bookkeeping props from
|
|
14199
|
+
* the serialized props entirely, so all three are deleted from shared
|
|
14200
|
+
* state (see updateYjsMapFromObject in managers/state.ts) rather than
|
|
14201
|
+
* persisted as `undefined`, and the node's original fill/text decoration
|
|
14202
|
+
* reappear immediately.
|
|
14203
|
+
*/
|
|
14204
|
+
getLink(nodeInstance) {
|
|
14205
|
+
const link = nodeInstance.getAttrs().link;
|
|
14206
|
+
return typeof link === "string" ? link : void 0;
|
|
14207
|
+
}
|
|
14208
|
+
setLink(nodeInstance, url) {
|
|
14209
|
+
if (!isValidTextLink(url)) return;
|
|
14210
|
+
const serialized = this.serialize(nodeInstance);
|
|
14211
|
+
serialized.props.linkPreviousFill = serialized.props.fill;
|
|
14212
|
+
serialized.props.linkPreviousTextDecoration = serialized.props.textDecoration;
|
|
14213
|
+
serialized.props.link = url;
|
|
14214
|
+
this.instance.updateNode(serialized);
|
|
14215
|
+
}
|
|
14216
|
+
removeLink(nodeInstance) {
|
|
14217
|
+
const serialized = this.serialize(nodeInstance);
|
|
14218
|
+
delete serialized.props.link;
|
|
14219
|
+
delete serialized.props.linkPreviousFill;
|
|
14220
|
+
delete serialized.props.linkPreviousTextDecoration;
|
|
14221
|
+
this.instance.updateNode(serialized);
|
|
14222
|
+
}
|
|
14083
14223
|
onDestroyInstance() {
|
|
14084
14224
|
super.onDestroyInstance();
|
|
14085
14225
|
if (!this.instance.isServerSide() && this.keyPressHandler) {
|
|
@@ -14145,7 +14285,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14145
14285
|
...props.strokeEnabled && { strokeEnabled: props.strokeEnabled },
|
|
14146
14286
|
...props.stroke && { stroke: props.stroke },
|
|
14147
14287
|
...props.strokeWidth && { strokeWidth: props.strokeWidth },
|
|
14148
|
-
...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled }
|
|
14288
|
+
...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled },
|
|
14289
|
+
...props.link && { link: props.link }
|
|
14149
14290
|
} });
|
|
14150
14291
|
}
|
|
14151
14292
|
static updateNodeState(prevNodeState, nextProps) {
|
|
@@ -14170,7 +14311,8 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14170
14311
|
...nextProps.strokeEnabled && { strokeEnabled: nextProps.strokeEnabled },
|
|
14171
14312
|
...nextProps.stroke && { stroke: nextProps.stroke },
|
|
14172
14313
|
...nextProps.strokeWidth && { strokeWidth: nextProps.strokeWidth },
|
|
14173
|
-
...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled }
|
|
14314
|
+
...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled },
|
|
14315
|
+
...nextProps.link && { link: nextProps.link }
|
|
14174
14316
|
} });
|
|
14175
14317
|
}
|
|
14176
14318
|
static getSchema() {
|
|
@@ -14204,6 +14346,9 @@ var WeaveTextNode = class extends WeaveNode {
|
|
|
14204
14346
|
]).default("top").describe("Vertical alignment of the text, can be 'top', 'middle' or 'bottom'."),
|
|
14205
14347
|
fill: z.string().default("#000000ff").describe("Fill color of the text in hex format with alpha channel (e.g. #RRGGBBAA)."),
|
|
14206
14348
|
text: z.string().default("text").describe("The actual text content of the node."),
|
|
14349
|
+
link: z.string().url().refine((value) => isValidTextLink(value), { message: "Link must be an absolute http:// or https:// URL." }).optional().describe("External URL the whole text of the node links to. When set, the text is forced underlined and coloured with the configured link colours regardless of fill/textDecoration, is clickable, and opens the URL in a new tab. Only http(s) URLs are accepted. Omit/remove to make the node plain text again."),
|
|
14350
|
+
linkPreviousFill: z.string().optional().describe("Internal bookkeeping: the fill colour the node had right before a link was set, captured automatically so it can be restored when the link is removed. Managed automatically — do not set directly."),
|
|
14351
|
+
linkPreviousTextDecoration: z.string().optional().describe("Internal bookkeeping: the textDecoration the node had right before a link was set, captured automatically so it can be restored when the link is removed. Managed automatically — do not set directly."),
|
|
14207
14352
|
strokeEnabled: z.boolean().default(false).describe("Whether the text outline is enabled."),
|
|
14208
14353
|
stroke: z.string().optional().default("#d6d6d6").describe("Color of the text outline in hex format with alpha channel (e.g. #RRGGBBAA)."),
|
|
14209
14354
|
strokeWidth: z.number().optional().default(2).describe("Width of the text outline in pixels."),
|
|
@@ -32935,4 +33080,4 @@ const setupCanvasBackend = async () => {
|
|
|
32935
33080
|
await import("konva/canvas-backend");
|
|
32936
33081
|
};
|
|
32937
33082
|
//#endregion
|
|
32938
|
-
export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DEFAULT_GUIDE_TOOL_ACTION_CONFIG, DEFAULT_SNAPPING_MANAGER_CONFIG, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_NAME, GUIDE_DISTANCE_ORIGIN, GUIDE_KIND, GUIDE_NAME, GUIDE_ORIENTATION, GUIDE_STATE, GUIDE_TOOL_ACTION_NAME, GUIDE_TOOL_STATE, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_ORIENTATION, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, POLYGON_TOOL_ACTION_NAME, POLYGON_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_PLUGIN_KEY, WEAVE_POLYGON_NODE_TYPE, WEAVE_POLYGON_PRESETS, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_SHAPE_LABEL_DEFAULTS, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_SHAPE_LABEL_EDITION_MODE, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveGuideToolAction, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeavePolygonNode, WeavePolygonToolAction, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStateManipulation, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, buildAncestorGroupIds, canComposite, clearContainerTargets, computeEllipseLabelMinSize, computePolygonLabelMinSize, computeRectangleLabelMinSize, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getSelectedNodesMetadata, getShapeLabelSchemaFields, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, instantiatePreset, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, isNumber, isServer, labelId, loadImageSource, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, setupCanvasBackend, setupSkiaBackend, sleep, spreadLabelProps };
|
|
33083
|
+
export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DEFAULT_GUIDE_TOOL_ACTION_CONFIG, DEFAULT_SNAPPING_MANAGER_CONFIG, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_NAME, GUIDE_DISTANCE_ORIGIN, GUIDE_KIND, GUIDE_NAME, GUIDE_ORIENTATION, GUIDE_STATE, GUIDE_TOOL_ACTION_NAME, GUIDE_TOOL_STATE, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_ORIENTATION, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, POLYGON_TOOL_ACTION_NAME, POLYGON_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_PLUGIN_KEY, WEAVE_POLYGON_NODE_TYPE, WEAVE_POLYGON_PRESETS, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_SHAPE_LABEL_DEFAULTS, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_SHAPE_LABEL_EDITION_MODE, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveGuideToolAction, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeavePolygonNode, WeavePolygonToolAction, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStateManipulation, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, buildAncestorGroupIds, canComposite, clearContainerTargets, computeEllipseLabelMinSize, computePolygonLabelMinSize, computeRectangleLabelMinSize, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getSelectedNodesMetadata, getShapeLabelSchemaFields, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, instantiatePreset, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, isNumber, isServer, labelId, loadImageSource, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, setupCanvasBackend, setupSkiaBackend, sleep, spreadLabelProps };
|