fabric-vectr 6.6.2 → 6.6.4

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 +83 -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 +83 -7
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/index.node.cjs +83 -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 +83 -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 +36 -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 +72 -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 +36 -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 +88 -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.4";
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,23 @@
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);
13632
+ /**
13633
+ * 指定的搜索对象
13634
+ * @type Boolean
13635
+ * @default null
13636
+ */
13637
+ _defineProperty(this, "_searchTargets", void 0);
13622
13638
  /**
13623
13639
  * Keep track of the subTargets for Mouse Events, ordered bottom up from innermost nested subTarget
13624
13640
  * @type FabricObject[]
@@ -14023,6 +14039,56 @@
14023
14039
  ctx.strokeRect(minX, minY, maxX - minX, maxY - minY);
14024
14040
  }
14025
14041
 
14042
+ /**
14043
+ * 双击选择
14044
+ * @param e
14045
+ * @returns
14046
+ */
14047
+ dblClickLock(e) {
14048
+ if (this.dblClickIsolateObject) {
14049
+ const pointer = this.getViewportPoint(e);
14050
+ const objects = this.isolatedObject ? this.isolatedObject.getObjects() : this.getObjects();
14051
+ const obj = this.searchPossibleTargets(objects, pointer);
14052
+ if (obj) {
14053
+ if (obj instanceof Group) {
14054
+ // 组才修改锁定
14055
+ this.isolatedObject = obj;
14056
+ this.discardActiveObject();
14057
+ // 新创建的组对象,子节点coords初始化,否则无法选中
14058
+ obj._objects.forEach(o => {
14059
+ o.setCoords();
14060
+ });
14061
+ } else {
14062
+ // 非组对象不处理锁定,返回false继续对象自己的双击事件
14063
+ return false;
14064
+ }
14065
+ } else {
14066
+ // 取消锁定
14067
+ this.isolatedObject = null;
14068
+ this.discardActiveObject();
14069
+ }
14070
+ return true;
14071
+ }
14072
+ return false;
14073
+ }
14074
+
14075
+ /**
14076
+ * 设置搜索对象
14077
+ * 如当编辑path时,设置点为可搜索对象
14078
+ * @param objects
14079
+ */
14080
+ setSearchTargets(objects) {
14081
+ this._searchTargets = objects;
14082
+ }
14083
+
14084
+ /**
14085
+ * 返回搜索对象
14086
+ * @returns
14087
+ */
14088
+ getSearchTargets() {
14089
+ return this._searchTargets || (this.isolatedObject ? this.isolatedObject._objects : this._objects);
14090
+ }
14091
+
14026
14092
  /**
14027
14093
  * Method that determines what object we are clicking on
14028
14094
  * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target
@@ -14054,7 +14120,7 @@
14054
14120
  } else {
14055
14121
  const subTargets = this.targets;
14056
14122
  this.targets = [];
14057
- const target = this.searchPossibleTargets(this._objects, pointer);
14123
+ const target = this.searchPossibleTargets(this.getSearchTargets(), pointer);
14058
14124
  if (e[this.altSelectionKey] && target && target !== activeObject) {
14059
14125
  // alt selection: select active object even though it is not the top most target
14060
14126
  // restore targets
@@ -14065,7 +14131,7 @@
14065
14131
  }
14066
14132
  }
14067
14133
  }
14068
- return this.searchPossibleTargets(this._objects, pointer);
14134
+ return this.searchPossibleTargets(this.getSearchTargets(), pointer);
14069
14135
  }
14070
14136
 
14071
14137
  /**
@@ -14139,7 +14205,8 @@
14139
14205
  while (i--) {
14140
14206
  const target = objects[i];
14141
14207
  if (this._checkTarget(target, pointer)) {
14142
- if (isCollection(target) && target.subTargetCheck) {
14208
+ // 没有开启双击锁定节点才搜索子节点
14209
+ if (!this.dblClickIsolateObject && isCollection(target) && target.subTargetCheck) {
14143
14210
  const subTarget = this._searchPossibleTargets(target._objects, pointer);
14144
14211
  subTarget && this.targets.push(subTarget);
14145
14212
  }
@@ -15156,11 +15223,20 @@
15156
15223
  const clicks = e.detail;
15157
15224
  if (clicks > 3 || clicks < 2) return;
15158
15225
  this._cacheTransformEventData(e);
15159
- clicks == 2 && e.type === 'dblclick' && this._handleEvent(e, 'dblclick');
15226
+ clicks == 2 && e.type === 'dblclick' && this._onDblClick(e);
15160
15227
  clicks == 3 && this._handleEvent(e, 'tripleclick');
15161
15228
  this._resetTransformEventData();
15162
15229
  }
15163
15230
 
15231
+ /**
15232
+ * 双击选择锁定组的子节点
15233
+ * @param e
15234
+ */
15235
+ _onDblClick(e) {
15236
+ if (this.dblClickLock(e)) return;
15237
+ this._handleEvent(e, 'dblclick');
15238
+ }
15239
+
15164
15240
  /**
15165
15241
  * Return a the id of an event.
15166
15242
  * returns either the pointerId or the identifier or 0 for the mouse event