fabric 4.6.0 → 5.0.0-browser
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/CHANGELOG.md +42 -0
- package/HEADER.js +1 -1
- package/README.md +1 -6
- package/SECURITY.md +5 -0
- package/dist/fabric.js +652 -393
- package/dist/fabric.min.js +1 -1
- package/lib/event.js +7 -3
- package/package.json +87 -88
- package/src/brushes/base_brush.class.js +2 -2
- package/src/brushes/pattern_brush.class.js +7 -5
- package/src/brushes/pencil_brush.class.js +33 -4
- package/src/canvas.class.js +9 -17
- package/src/mixins/animation.mixin.js +16 -21
- package/src/mixins/canvas_events.mixin.js +27 -56
- package/src/mixins/eraser_brush.mixin.js +354 -420
- package/src/mixins/itext_behavior.mixin.js +7 -1
- package/src/mixins/object_geometry.mixin.js +3 -34
- package/src/mixins/object_straightening.mixin.js +4 -9
- package/src/parser.js +13 -9
- package/src/shapes/circle.class.js +20 -17
- package/src/shapes/group.class.js +13 -25
- package/src/shapes/image.class.js +3 -3
- package/src/shapes/object.class.js +45 -19
- package/src/shapes/path.class.js +13 -9
- package/src/shapes/polygon.class.js +9 -1
- package/src/shapes/polyline.class.js +33 -9
- package/src/shapes/text.class.js +38 -21
- package/src/static_canvas.class.js +15 -7
- package/src/util/animate.js +146 -22
- package/src/util/misc.js +193 -45
- package/src/util/path.js +2 -56
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
this._onDragOver = this._onDragOver.bind(this);
|
|
107
107
|
this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');
|
|
108
108
|
this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');
|
|
109
|
-
this._onDrop = this.
|
|
109
|
+
this._onDrop = this._onDrop.bind(this);
|
|
110
110
|
this.eventsBound = true;
|
|
111
111
|
},
|
|
112
112
|
|
|
@@ -218,6 +218,18 @@
|
|
|
218
218
|
this._fireEnterLeaveEvents(target, e);
|
|
219
219
|
},
|
|
220
220
|
|
|
221
|
+
/**
|
|
222
|
+
* `drop:before` is a an event that allow you to schedule logic
|
|
223
|
+
* before the `drop` event. Prefer `drop` event always, but if you need
|
|
224
|
+
* to run some drop-disabling logic on an event, since there is no way
|
|
225
|
+
* to handle event handlers ordering, use `drop:before`
|
|
226
|
+
* @param {Event} e
|
|
227
|
+
*/
|
|
228
|
+
_onDrop: function (e) {
|
|
229
|
+
this._simpleEventHandler('drop:before', e);
|
|
230
|
+
return this._simpleEventHandler('drop', e);
|
|
231
|
+
},
|
|
232
|
+
|
|
221
233
|
/**
|
|
222
234
|
* @private
|
|
223
235
|
* @param {Event} e Event object fired on mousedown
|
|
@@ -450,25 +462,34 @@
|
|
|
450
462
|
);
|
|
451
463
|
}
|
|
452
464
|
}
|
|
465
|
+
var corner, pointer;
|
|
453
466
|
if (target) {
|
|
467
|
+
corner = target._findTargetCorner(
|
|
468
|
+
this.getPointer(e, true),
|
|
469
|
+
fabric.util.isTouchEvent(e)
|
|
470
|
+
);
|
|
454
471
|
if (target.selectable && target !== this._activeObject && target.activeOn === 'up') {
|
|
455
472
|
this.setActiveObject(target, e);
|
|
456
473
|
shouldRender = true;
|
|
457
474
|
}
|
|
458
475
|
else {
|
|
459
|
-
var corner = target._findTargetCorner(
|
|
460
|
-
this.getPointer(e, true),
|
|
461
|
-
fabric.util.isTouchEvent(e)
|
|
462
|
-
);
|
|
463
476
|
var control = target.controls[corner],
|
|
464
477
|
mouseUpHandler = control && control.getMouseUpHandler(e, target, control);
|
|
465
478
|
if (mouseUpHandler) {
|
|
466
|
-
|
|
479
|
+
pointer = this.getPointer(e);
|
|
467
480
|
mouseUpHandler(e, transform, pointer.x, pointer.y);
|
|
468
481
|
}
|
|
469
482
|
}
|
|
470
483
|
target.isMoving = false;
|
|
471
484
|
}
|
|
485
|
+
// if we are ending up a transform on a different control or a new object
|
|
486
|
+
// fire the original mouse up from the corner that started the transform
|
|
487
|
+
if (transform && (transform.target !== target || transform.corner !== corner)) {
|
|
488
|
+
var originalControl = transform.target && transform.target.controls[transform.corner],
|
|
489
|
+
originalMouseUpHandler = originalControl && originalControl.getMouseUpHandler(e, target, control);
|
|
490
|
+
pointer = pointer || this.getPointer(e);
|
|
491
|
+
originalMouseUpHandler && originalMouseUpHandler(e, transform, pointer.x, pointer.y);
|
|
492
|
+
}
|
|
472
493
|
this._setCursorFromEvent(e, target);
|
|
473
494
|
this._handleEvent(e, 'up', LEFT_CLICK, isClick);
|
|
474
495
|
this._groupSelector = null;
|
|
@@ -550,7 +571,6 @@
|
|
|
550
571
|
|
|
551
572
|
var transform = this._currentTransform,
|
|
552
573
|
target = transform.target,
|
|
553
|
-
eventName,
|
|
554
574
|
options = {
|
|
555
575
|
e: e,
|
|
556
576
|
target: target,
|
|
@@ -565,59 +585,10 @@
|
|
|
565
585
|
target.setCoords();
|
|
566
586
|
|
|
567
587
|
if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {
|
|
568
|
-
if (transform.actionPerformed) {
|
|
569
|
-
// this is not friendly to the new control api.
|
|
570
|
-
// is deprecated.
|
|
571
|
-
eventName = this._addEventOptions(options, transform);
|
|
572
|
-
this._fire(eventName, options);
|
|
573
|
-
}
|
|
574
588
|
this._fire('modified', options);
|
|
575
589
|
}
|
|
576
590
|
},
|
|
577
591
|
|
|
578
|
-
/**
|
|
579
|
-
* Mutate option object in order to add by property and give back the event name.
|
|
580
|
-
* @private
|
|
581
|
-
* @deprecated since 4.2.0
|
|
582
|
-
* @param {Object} options to mutate
|
|
583
|
-
* @param {Object} transform to inspect action from
|
|
584
|
-
*/
|
|
585
|
-
_addEventOptions: function(options, transform) {
|
|
586
|
-
// we can probably add more details at low cost
|
|
587
|
-
// scale change, rotation changes, translation changes
|
|
588
|
-
var eventName, by;
|
|
589
|
-
switch (transform.action) {
|
|
590
|
-
case 'scaleX':
|
|
591
|
-
eventName = 'scaled';
|
|
592
|
-
by = 'x';
|
|
593
|
-
break;
|
|
594
|
-
case 'scaleY':
|
|
595
|
-
eventName = 'scaled';
|
|
596
|
-
by = 'y';
|
|
597
|
-
break;
|
|
598
|
-
case 'skewX':
|
|
599
|
-
eventName = 'skewed';
|
|
600
|
-
by = 'x';
|
|
601
|
-
break;
|
|
602
|
-
case 'skewY':
|
|
603
|
-
eventName = 'skewed';
|
|
604
|
-
by = 'y';
|
|
605
|
-
break;
|
|
606
|
-
case 'scale':
|
|
607
|
-
eventName = 'scaled';
|
|
608
|
-
by = 'equally';
|
|
609
|
-
break;
|
|
610
|
-
case 'rotate':
|
|
611
|
-
eventName = 'rotated';
|
|
612
|
-
break;
|
|
613
|
-
case 'drag':
|
|
614
|
-
eventName = 'moved';
|
|
615
|
-
break;
|
|
616
|
-
}
|
|
617
|
-
options.by = by;
|
|
618
|
-
return eventName;
|
|
619
|
-
},
|
|
620
|
-
|
|
621
592
|
/**
|
|
622
593
|
* @private
|
|
623
594
|
* @param {Event} e Event object fired on mousedown
|