@inditextech/weave-sdk 5.2.2 → 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 CHANGED
@@ -1659,7 +1659,8 @@ const WEAVE_NODES_SELECTION_DEFAULT_CONFIG = {
1659
1659
  };
1660
1660
  }
1661
1661
  },
1662
- style: { dragOpacity: .75 }
1662
+ style: { dragOpacity: .75 },
1663
+ selectionMode: "intersects"
1663
1664
  };
1664
1665
  //#endregion
1665
1666
  //#region ../../node_modules/lodash/_listCacheClear.js
@@ -4675,7 +4676,15 @@ function handleClickOrTap(ctx, e) {
4675
4676
  nodeTargeted.dblClick();
4676
4677
  return;
4677
4678
  }
4678
- if (e.evt.ctrlKey || e.evt.metaKey) return;
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;
4679
4688
  if (!metaPressed) {
4680
4689
  tr.nodes([nodeTargeted]);
4681
4690
  tr.show();
@@ -4873,6 +4882,13 @@ function handlePointerMove(ctx, e) {
4873
4882
  //#endregion
4874
4883
  //#region src/plugins/nodes-selection/events/pointer-up.ts
4875
4884
  /**
4885
+ * Returns true when `inner` is fully enclosed within `outer` (an AABB
4886
+ * containment test, as opposed to mere overlap/intersection).
4887
+ */
4888
+ function isBoxContained(outer, inner) {
4889
+ return inner.x >= outer.x && inner.y >= outer.y && inner.x + inner.width <= outer.x + outer.width && inner.y + inner.height <= outer.y + outer.height;
4890
+ }
4891
+ /**
4876
4892
  * Handles the stage `pointerup` event: ends any in-progress area-selection
4877
4893
  * (including the node-filtering/commit step), or delegates to the click/tap
4878
4894
  * handler for point interactions.
@@ -4937,17 +4953,17 @@ function handlePointerUp(ctx, e) {
4937
4953
  });
4938
4954
  const box = ctx.getAreaSelector().getBox();
4939
4955
  ctx.getAreaSelector().getRect().visible(false);
4956
+ const selectionMode = ctx.getConfiguration().selectionMode ?? "intersects";
4940
4957
  const selected = shapes.filter((shape) => {
4941
4958
  const shapeMutex = weave.getNodeMutexLock(shape.id());
4942
4959
  if (shapeMutex && shapeMutex.user.id !== actUser.id) return false;
4943
4960
  let parent = weave.getInstanceRecursive(shape.getParent());
4944
4961
  if (parent.getAttrs().nodeId) parent = stage.findOne(`#${parent.getAttrs().nodeId}`);
4945
- if (shape.getAttrs().nodeType && shape.getAttrs().nodeType === "frame") {
4946
- const frameBox = shape.getClientRect();
4947
- return frameBox.x >= box.x && frameBox.y >= box.y && frameBox.x + frameBox.width <= box.x + box.width && frameBox.y + frameBox.height <= box.y + box.height;
4962
+ if (shape.getAttrs().nodeType && shape.getAttrs().nodeType === "frame") return isBoxContained(box, shape.getClientRect());
4963
+ if (shape.getAttrs().nodeType && ["layer", "frame"].includes(parent?.getAttrs().nodeType)) {
4964
+ const shapeBox = shape.getClientRect();
4965
+ return selectionMode === "contains" ? isBoxContained(box, shapeBox) : Konva.Util.haveIntersection(box, shapeBox);
4948
4966
  }
4949
- if (shape.getAttrs().nodeType && shape?.getAttrs().nodeType === "group" && ["layer", "frame"].includes(parent?.getAttrs().nodeType)) return shape.getAttrs().nodeType && Konva.Util.haveIntersection(box, shape.getClientRect());
4950
- if (shape.getAttrs().nodeType && shape.getAttrs().nodeType !== "group" && ["layer", "frame"].includes(parent?.getAttrs().nodeType)) return shape.getAttrs().nodeType && Konva.Util.haveIntersection(box, shape.getClientRect());
4951
4967
  return false;
4952
4968
  });
4953
4969
  const selectedNodes = /* @__PURE__ */ new Set();
@@ -5937,6 +5953,7 @@ const augmentKonvaNodeClass = (config) => {
5937
5953
  Konva.Node.prototype.closeCrop = function() {};
5938
5954
  Konva.Node.prototype.resetCrop = function() {};
5939
5955
  Konva.Node.prototype.dblClick = function() {};
5956
+ Konva.Node.prototype.click = function() {};
5940
5957
  Konva.Node.prototype.allowedAnchors = function() {
5941
5958
  return [];
5942
5959
  };
@@ -9449,7 +9466,7 @@ var WeaveRegisterManager = class {
9449
9466
  };
9450
9467
  //#endregion
9451
9468
  //#region package.json
9452
- var version = "5.2.2";
9469
+ var version = "5.4.0";
9453
9470
  //#endregion
9454
9471
  //#region src/managers/setup.ts
9455
9472
  var WeaveSetupManager = class {
@@ -13379,8 +13396,13 @@ const WEAVE_TEXT_NODE_DEFAULT_CONFIG = {
13379
13396
  transform: { ...WEAVE_NODES_SELECTION_DEFAULT_CONFIG.selection },
13380
13397
  outline: { enabled: false },
13381
13398
  cursor: { color: "#000000" },
13382
- edition: { borderSize: 2 }
13399
+ edition: { borderSize: 2 },
13400
+ link: {
13401
+ defaultColor: "#1155ccff",
13402
+ hoverColor: "#3d7be0ff"
13403
+ }
13383
13404
  };
13405
+ const WEAVE_TEXT_LINK_ALLOWED_PROTOCOLS = ["http:", "https:"];
13384
13406
  const TEXT_LAYOUT = {
13385
13407
  ["SMART"]: "smart",
13386
13408
  ["AUTO_ALL"]: "auto-all",
@@ -13389,6 +13411,21 @@ const TEXT_LAYOUT = {
13389
13411
  };
13390
13412
  //#endregion
13391
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
+ }
13392
13429
  var WeaveTextNode = class extends WeaveNode {
13393
13430
  config;
13394
13431
  nodeType = WEAVE_TEXT_NODE_TYPE;
@@ -13452,6 +13489,8 @@ var WeaveTextNode = class extends WeaveNode {
13452
13489
  }
13453
13490
  }
13454
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;
13455
13494
  const text = new Konva.Text({
13456
13495
  ...props,
13457
13496
  name: "node",
@@ -13461,6 +13500,12 @@ var WeaveTextNode = class extends WeaveNode {
13461
13500
  stroke: this.config.outline.color,
13462
13501
  strokeWidth: this.config.outline.width,
13463
13502
  fillAfterStrokeEnabled: true
13503
+ },
13504
+ ...props.link && {
13505
+ textDecoration: "underline",
13506
+ fill: this.config.link.defaultColor,
13507
+ linkPreviousFill,
13508
+ linkPreviousTextDecoration
13464
13509
  }
13465
13510
  });
13466
13511
  this.setupDefaultNodeAugmentation(text);
@@ -13519,6 +13564,7 @@ var WeaveTextNode = class extends WeaveNode {
13519
13564
  this.triggerEditMode(text);
13520
13565
  };
13521
13566
  text.setAttr("triggerEditMode", this.triggerEditMode.bind(this));
13567
+ this.setupLinkBehavior(text);
13522
13568
  let actualAnchor = void 0;
13523
13569
  text.on("transformstart", (e) => {
13524
13570
  const isCtrlOrMetaPressed = e.evt.ctrlKey || e.evt.metaKey;
@@ -13615,6 +13661,9 @@ var WeaveTextNode = class extends WeaveNode {
13615
13661
  return text;
13616
13662
  }
13617
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;
13618
13667
  nodeInstance.setAttrs({
13619
13668
  ...nextProps,
13620
13669
  ...!this.config.outline.enabled && { strokeEnabled: false },
@@ -13623,6 +13672,13 @@ var WeaveTextNode = class extends WeaveNode {
13623
13672
  stroke: this.config.outline.color,
13624
13673
  strokeWidth: this.config.outline.width,
13625
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
13626
13682
  }
13627
13683
  });
13628
13684
  let width = nextProps.width;
@@ -13664,6 +13720,10 @@ var WeaveTextNode = class extends WeaveNode {
13664
13720
  delete cleanedAttrs.overridesMouseControl;
13665
13721
  delete cleanedAttrs.shouldUpdateOnTransform;
13666
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
+ }
13667
13727
  return {
13668
13728
  key: attrs.id ?? "",
13669
13729
  type: attrs.nodeType,
@@ -14069,6 +14129,94 @@ var WeaveTextNode = class extends WeaveNode {
14069
14129
  this.createTextAreaDOM(textNode, areaPosition);
14070
14130
  this.instance.emitEvent("onEnterTextNodeEditMode", { node: textNode });
14071
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
+ }
14072
14220
  onDestroyInstance() {
14073
14221
  super.onDestroyInstance();
14074
14222
  if (!this.instance.isServerSide() && this.keyPressHandler) {
@@ -14134,7 +14282,8 @@ var WeaveTextNode = class extends WeaveNode {
14134
14282
  ...props.strokeEnabled && { strokeEnabled: props.strokeEnabled },
14135
14283
  ...props.stroke && { stroke: props.stroke },
14136
14284
  ...props.strokeWidth && { strokeWidth: props.strokeWidth },
14137
- ...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled }
14285
+ ...props.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: props.fillAfterStrokeEnabled },
14286
+ ...props.link && { link: props.link }
14138
14287
  } });
14139
14288
  }
14140
14289
  static updateNodeState(prevNodeState, nextProps) {
@@ -14159,7 +14308,8 @@ var WeaveTextNode = class extends WeaveNode {
14159
14308
  ...nextProps.strokeEnabled && { strokeEnabled: nextProps.strokeEnabled },
14160
14309
  ...nextProps.stroke && { stroke: nextProps.stroke },
14161
14310
  ...nextProps.strokeWidth && { strokeWidth: nextProps.strokeWidth },
14162
- ...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled }
14311
+ ...nextProps.fillAfterStrokeEnabled && { fillAfterStrokeEnabled: nextProps.fillAfterStrokeEnabled },
14312
+ ...nextProps.link && { link: nextProps.link }
14163
14313
  } });
14164
14314
  }
14165
14315
  static getSchema() {
@@ -14193,6 +14343,9 @@ var WeaveTextNode = class extends WeaveNode {
14193
14343
  ]).default("top").describe("Vertical alignment of the text, can be 'top', 'middle' or 'bottom'."),
14194
14344
  fill: z.string().default("#000000ff").describe("Fill color of the text in hex format with alpha channel (e.g. #RRGGBBAA)."),
14195
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."),
14196
14349
  strokeEnabled: z.boolean().default(false).describe("Whether the text outline is enabled."),
14197
14350
  stroke: z.string().optional().default("#d6d6d6").describe("Color of the text outline in hex format with alpha channel (e.g. #RRGGBBAA)."),
14198
14351
  strokeWidth: z.number().optional().default(2).describe("Width of the text outline in pixels."),
@@ -32936,4 +33089,4 @@ function getJSONFromYjsBinary(actualState) {
32936
33089
  return JSON.parse(actualStateString);
32937
33090
  }
32938
33091
  //#endregion
32939
- 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 };