fabric-vectr 6.6.2 → 6.6.3

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.
Files changed (47) hide show
  1. package/dist/index.js +64 -7
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.min.js.map +1 -1
  5. package/dist/index.min.mjs +1 -1
  6. package/dist/index.min.mjs.map +1 -1
  7. package/dist/index.mjs +64 -7
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/index.node.cjs +64 -7
  10. package/dist/index.node.cjs.map +1 -1
  11. package/dist/index.node.min.mjs +1 -1
  12. package/dist/index.node.min.mjs.map +1 -1
  13. package/dist/index.node.mjs +64 -7
  14. package/dist/index.node.mjs.map +1 -1
  15. package/dist/package.json.min.mjs +1 -1
  16. package/dist/package.json.mjs +1 -1
  17. package/dist/src/canvas/Canvas.d.ts +5 -0
  18. package/dist/src/canvas/Canvas.d.ts.map +1 -1
  19. package/dist/src/canvas/Canvas.min.mjs +1 -1
  20. package/dist/src/canvas/Canvas.min.mjs.map +1 -1
  21. package/dist/src/canvas/Canvas.mjs +10 -1
  22. package/dist/src/canvas/Canvas.mjs.map +1 -1
  23. package/dist/src/canvas/CanvasOptions.d.ts +6 -0
  24. package/dist/src/canvas/CanvasOptions.d.ts.map +1 -1
  25. package/dist/src/canvas/CanvasOptions.min.mjs.map +1 -1
  26. package/dist/src/canvas/CanvasOptions.mjs.map +1 -1
  27. package/dist/src/canvas/SelectableCanvas.d.ts +24 -0
  28. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  29. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  30. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  31. package/dist/src/canvas/SelectableCanvas.mjs +53 -5
  32. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  33. package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
  34. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  35. package/dist/src/shapes/Object/InteractiveObject.mjs +1 -1
  36. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  37. package/dist-extensions/src/canvas/Canvas.d.ts +5 -0
  38. package/dist-extensions/src/canvas/Canvas.d.ts.map +1 -1
  39. package/dist-extensions/src/canvas/CanvasOptions.d.ts +6 -0
  40. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -1
  41. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +24 -0
  42. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -1
  43. package/package.json +3 -3
  44. package/src/canvas/Canvas.ts +10 -1
  45. package/src/canvas/CanvasOptions.ts +7 -0
  46. package/src/canvas/SelectableCanvas.ts +65 -3
  47. package/src/shapes/Object/InteractiveObject.ts +1 -1
package/dist/index.js CHANGED
@@ -366,7 +366,7 @@
366
366
  }
367
367
  const cache = new Cache();
368
368
 
369
- var version = "6.6.2";
369
+ var version = "6.6.3";
370
370
 
371
371
  // use this syntax so babel plugin see this import here
372
372
  const VERSION = version;
@@ -9537,7 +9537,7 @@
9537
9537
  */
9538
9538
  findControl(pointer) {
9539
9539
  let forTouch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9540
- if (!this.hasControls || !this.canvas) {
9540
+ if (!this.hasControls || !this.canvas || !this.oCoords) {
9541
9541
  return undefined;
9542
9542
  }
9543
9543
  this.__corner = undefined;
@@ -13618,7 +13618,17 @@
13618
13618
  * @type Boolean
13619
13619
  * @default
13620
13620
  */
13621
- // event config
13621
+ /**
13622
+ * 启用双击锁定组对象,锁定后只能选择对象的子节点,无论group中interative和subTargetCheck是否启用
13623
+ * @type Boolean
13624
+ * @default
13625
+ */
13626
+ /**
13627
+ * 双击锁定的节点, 目前只支持组节点
13628
+ * @type Group | null
13629
+ * @default
13630
+ */
13631
+ _defineProperty(this, "isolatedObject", void 0);
13622
13632
  /**
13623
13633
  * Keep track of the subTargets for Mouse Events, ordered bottom up from innermost nested subTarget
13624
13634
  * @type FabricObject[]
@@ -14023,6 +14033,43 @@
14023
14033
  ctx.strokeRect(minX, minY, maxX - minX, maxY - minY);
14024
14034
  }
14025
14035
 
14036
+ /**
14037
+ * 双击选择
14038
+ * @param e
14039
+ * @returns
14040
+ */
14041
+ dblClickLock(e) {
14042
+ if (this.dblClickIsolateObject) {
14043
+ const pointer = this.getViewportPoint(e);
14044
+ const objects = this.isolatedObject ? this.isolatedObject.getObjects() : this.getObjects();
14045
+ const obj = this.searchPossibleTargets(objects, pointer);
14046
+ if (obj) {
14047
+ if (obj instanceof Group) {
14048
+ // 组才修改锁定
14049
+ this.isolatedObject = obj;
14050
+ this.discardActiveObject();
14051
+ } else {
14052
+ // 非组对象不处理锁定,返回false继续对象自己的双击事件
14053
+ return false;
14054
+ }
14055
+ } else {
14056
+ // 取消锁定
14057
+ this.isolatedObject = null;
14058
+ this.discardActiveObject();
14059
+ }
14060
+ return true;
14061
+ }
14062
+ return false;
14063
+ }
14064
+
14065
+ /**
14066
+ * 返回搜索对象
14067
+ * @returns
14068
+ */
14069
+ getSearchTargets() {
14070
+ return this.isolatedObject ? this.isolatedObject._objects : this._objects;
14071
+ }
14072
+
14026
14073
  /**
14027
14074
  * Method that determines what object we are clicking on
14028
14075
  * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target
@@ -14054,7 +14101,7 @@
14054
14101
  } else {
14055
14102
  const subTargets = this.targets;
14056
14103
  this.targets = [];
14057
- const target = this.searchPossibleTargets(this._objects, pointer);
14104
+ const target = this.searchPossibleTargets(this.getSearchTargets(), pointer);
14058
14105
  if (e[this.altSelectionKey] && target && target !== activeObject) {
14059
14106
  // alt selection: select active object even though it is not the top most target
14060
14107
  // restore targets
@@ -14065,7 +14112,7 @@
14065
14112
  }
14066
14113
  }
14067
14114
  }
14068
- return this.searchPossibleTargets(this._objects, pointer);
14115
+ return this.searchPossibleTargets(this.getSearchTargets(), pointer);
14069
14116
  }
14070
14117
 
14071
14118
  /**
@@ -14139,7 +14186,8 @@
14139
14186
  while (i--) {
14140
14187
  const target = objects[i];
14141
14188
  if (this._checkTarget(target, pointer)) {
14142
- if (isCollection(target) && target.subTargetCheck) {
14189
+ // 没有开启双击锁定节点才搜索子节点
14190
+ if (!this.dblClickIsolateObject && isCollection(target) && target.subTargetCheck) {
14143
14191
  const subTarget = this._searchPossibleTargets(target._objects, pointer);
14144
14192
  subTarget && this.targets.push(subTarget);
14145
14193
  }
@@ -15156,11 +15204,20 @@
15156
15204
  const clicks = e.detail;
15157
15205
  if (clicks > 3 || clicks < 2) return;
15158
15206
  this._cacheTransformEventData(e);
15159
- clicks == 2 && e.type === 'dblclick' && this._handleEvent(e, 'dblclick');
15207
+ clicks == 2 && e.type === 'dblclick' && this._onDblClick(e);
15160
15208
  clicks == 3 && this._handleEvent(e, 'tripleclick');
15161
15209
  this._resetTransformEventData();
15162
15210
  }
15163
15211
 
15212
+ /**
15213
+ * 双击选择锁定组的子节点
15214
+ * @param e
15215
+ */
15216
+ _onDblClick(e) {
15217
+ if (this.dblClickLock(e)) return;
15218
+ this._handleEvent(e, 'dblclick');
15219
+ }
15220
+
15164
15221
  /**
15165
15222
  * Return a the id of an event.
15166
15223
  * returns either the pointerId or the identifier or 0 for the mouse event