UNPKG

react-image-markup

Version:
139 lines (114 loc) 15.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _fabric = require("fabric"); var _canvasHistory = _interopRequireDefault(require("./canvasHistory.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var _default = function () { var activeObject = false; var drag, textColor, textFontFamily, textFontSize, customText, color; function Text(canvas) { var draggable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var params = arguments.length > 2 ? arguments[2] : undefined; this.canvas = canvas; this.className = "text"; this.isDrawing = false; this.origX = 0; this.origY = 0; this.selectedFont = 32; this.bindEvents(); drag = draggable; if (color && color !== params.fill) { color = params.fill; return Text; } if (params) { textColor = params.fill; textFontFamily = params.fontFamily; textFontSize = params.fontSize; customText = params.placeholder; } } ; Text.prototype.bindEvents = function () { var inst = this; inst.selectable = true; inst.canvas.on("mouse:down", function (o) { inst.onMouseDown(o); }); inst.canvas.on("mouse:move", function (o) { inst.onMouseMove(o); }); inst.canvas.on("mouse:up", function (o) { inst.onMouseUp(o); }); Text.prototype.onMouseUp = function () { return Text; }; Text.prototype.onMouseMove = function () { var inst = this; if (!inst.isEnable()) { return; } if (inst.canvas.getActiveObject()) { activeObject = true; } else { activeObject = false; } inst.canvas.renderAll(); }; Text.prototype.onMouseDown = function (o) { var inst = this; if (drag) { inst.enable(); if (inst.canvas.getActiveObject() && !inst.canvas.getActiveObject().text) { inst.canvas.getActiveObject().selectable = false; inst.canvas.getActiveObject().evented = false; } if (!inst.canvas.getActiveObject() && !activeObject || inst.canvas.getActiveObject() && !inst.canvas.getActiveObject().text) { var pointer = inst.canvas.getPointer(o.e); this.origX = pointer.x; this.origY = pointer.y; var text = new _fabric.fabric.IText(customText, { fill: textColor, fontFamily: textFontFamily, left: this.origX, top: this.origY, fontSize: textFontSize, hasBorders: false, hasControls: false }); text.selectionStart = 0; text.selectionEnd = text.text.length; inst.canvas.add(text).setActiveObject(text); text.enterEditing(); text.hiddenTextarea.focus(); inst.canvas.requestRenderAll(); new _canvasHistory["default"](inst.canvas); } if (inst.canvas.getActiveObject() && activeObject && inst.canvas.getActiveObject().hiddenTextarea) { inst.canvas.getActiveObject().hasControls = true; inst.canvas.getActiveObject().hasBorders = true; inst.canvas.getActiveObject().lockMovementX = true; inst.canvas.getActiveObject().lockMovementY = true; inst.canvas.getActiveObject().lockUniScaling = true; inst.canvas.renderAll(); } } }; }; Text.prototype.isEnable = function () { return this.isDrawing; }; Text.prototype.enable = function () { this.isDrawing = true; }; Text.prototype.disable = function () { this.isDrawing = false; }; return Text; }(); exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hc3NldHMvanMvdGV4dC5qcyJdLCJuYW1lcyI6WyJhY3RpdmVPYmplY3QiLCJkcmFnIiwidGV4dENvbG9yIiwidGV4dEZvbnRGYW1pbHkiLCJ0ZXh0Rm9udFNpemUiLCJjdXN0b21UZXh0IiwiY29sb3IiLCJUZXh0IiwiY2FudmFzIiwiZHJhZ2dhYmxlIiwicGFyYW1zIiwiY2xhc3NOYW1lIiwiaXNEcmF3aW5nIiwib3JpZ1giLCJvcmlnWSIsInNlbGVjdGVkRm9udCIsImJpbmRFdmVudHMiLCJmaWxsIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwicGxhY2Vob2xkZXIiLCJwcm90b3R5cGUiLCJpbnN0Iiwic2VsZWN0YWJsZSIsIm9uIiwibyIsIm9uTW91c2VEb3duIiwib25Nb3VzZU1vdmUiLCJvbk1vdXNlVXAiLCJpc0VuYWJsZSIsImdldEFjdGl2ZU9iamVjdCIsInJlbmRlckFsbCIsImVuYWJsZSIsInRleHQiLCJldmVudGVkIiwicG9pbnRlciIsImdldFBvaW50ZXIiLCJlIiwieCIsInkiLCJmYWJyaWMiLCJJVGV4dCIsImxlZnQiLCJ0b3AiLCJoYXNCb3JkZXJzIiwiaGFzQ29udHJvbHMiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImxlbmd0aCIsImFkZCIsInNldEFjdGl2ZU9iamVjdCIsImVudGVyRWRpdGluZyIsImhpZGRlblRleHRhcmVhIiwiZm9jdXMiLCJyZXF1ZXN0UmVuZGVyQWxsIiwiQ2FudmFzSGlzdG9yeSIsImxvY2tNb3ZlbWVudFgiLCJsb2NrTW92ZW1lbnRZIiwibG9ja1VuaVNjYWxpbmciLCJkaXNhYmxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7Ozs7ZUFDZ0IsWUFBWTtBQUN4QixNQUFJQSxZQUFZLEdBQUcsS0FBbkI7QUFDQSxNQUFJQyxJQUFKLEVBQVNDLFNBQVQsRUFBbUJDLGNBQW5CLEVBQWtDQyxZQUFsQyxFQUErQ0MsVUFBL0MsRUFBMERDLEtBQTFEOztBQUNB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Q0gsR0FGRDs7QUFHQSxTQUFPTCxJQUFQO0FBQ0gsQ0F2R2UsRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZmFicmljfSBmcm9tIFwiZmFicmljXCI7XHJcbmltcG9ydCBDYW52YXNIaXN0b3J5IGZyb20gXCIuL2NhbnZhc0hpc3RvcnkuanNcIjtcclxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcclxuICAgIGxldCBhY3RpdmVPYmplY3QgPSBmYWxzZTtcclxuICAgIGxldCBkcmFnLHRleHRDb2xvcix0ZXh0Rm9udEZhbWlseSx0ZXh0Rm9udFNpemUsY3VzdG9tVGV4dCxjb2xvcjtcclxuICAgIGZ1bmN0aW9uIFRleHQoY2FudmFzLGRyYWdnYWJsZSA9IGZhbHNlLHBhcmFtcykge1xyXG4gICAgICAgIHRoaXMuY2FudmFzID0gY2FudmFzO1xyXG4gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gXCJ0ZXh0XCI7XHJcbiAgICAgICAgdGhpcy5pc0RyYXdpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9yaWdYID0gMDtcclxuICAgICAgICB0aGlzLm9yaWdZID0gMDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9udCA9IDMyO1xyXG4gICAgICAgIHRoaXMuYmluZEV2ZW50cygpO1xyXG4gICAgICAgIGRyYWcgPSBkcmFnZ2FibGU7XHJcbiAgICAgICAgaWYoY29sb3IgJiYgY29sb3IgIT09IHBhcmFtcy5maWxsKXtcclxuICAgICAgICAgICAgY29sb3IgPSBwYXJhbXMuZmlsbDtcclxuICAgICAgICAgICAgcmV0dXJuIFRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHBhcmFtcyl7XHJcbiAgICAgICAgICAgIHRleHRDb2xvciA9IHBhcmFtcy5maWxsO1xyXG4gICAgICAgICAgICB0ZXh0Rm9udEZhbWlseSA9IHBhcmFtcy5mb250RmFtaWx5O1xyXG4gICAgICAgICAgICB0ZXh0Rm9udFNpemUgPSBwYXJhbXMuZm9udFNpemU7XHJcbiAgICAgICAgICAgIGN1c3RvbVRleHQgPSBwYXJhbXMucGxhY2Vob2xkZXI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFRleHQucHJvdG90eXBlLmJpbmRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGluc3QgPSB0aGlzO1xyXG4gICAgICAgIGluc3Quc2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgaW5zdC5jYW52YXMub24oXCJtb3VzZTpkb3duXCIsIGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgICAgIGluc3Qub25Nb3VzZURvd24obyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW5zdC5jYW52YXMub24oXCJtb3VzZTptb3ZlXCIsIGZ1bmN0aW9uIChvKSB7XHJcbiAgICAgICAgICAgIGluc3Qub25Nb3VzZU1vdmUobyk7XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGluc3QuY2FudmFzLm9uKFwibW91c2U6dXBcIiwgZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICAgICAgaW5zdC5vbk1vdXNlVXAobyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgVGV4dC5wcm90b3R5cGUub25Nb3VzZVVwID0gZnVuY3Rpb24gKCkgeyAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIFRleHQ7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBUZXh0LnByb3RvdHlwZS5vbk1vdXNlTW92ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgbGV0IGluc3QgPSB0aGlzO1xyXG4gICAgICAgICAgICBpZiAoIWluc3QuaXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpKXtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZU9iamVjdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZU9iamVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGluc3QuY2FudmFzLnJlbmRlckFsbCgpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgVGV4dC5wcm90b3R5cGUub25Nb3VzZURvd24gPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgICAgICBsZXQgaW5zdCA9IHRoaXM7ICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoZHJhZyl7ICAgXHJcbiAgICAgICAgICAgICAgICBpbnN0LmVuYWJsZSgpOyAgIFxyXG4gICAgICAgICAgICAgICAgaWYoaW5zdC5jYW52YXMuZ2V0QWN0aXZlT2JqZWN0KCkgJiYgIWluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpLnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpLnNlbGVjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS5ldmVudGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKCghaW5zdC5jYW52YXMuZ2V0QWN0aXZlT2JqZWN0KCkgJiYgIWFjdGl2ZU9iamVjdCkgfHwgKGluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpICYmICFpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS50ZXh0KSl7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRlciA9IGluc3QuY2FudmFzLmdldFBvaW50ZXIoby5lKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yaWdYID0gcG9pbnRlci54O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3JpZ1kgPSBwb2ludGVyLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPSBuZXcgZmFicmljLklUZXh0KGN1c3RvbVRleHQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDp0ZXh0Q29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHRleHRGb250RmFtaWx5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0aGlzLm9yaWdYLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHRoaXMub3JpZ1ksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiB0ZXh0Rm9udFNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0JvcmRlcnM6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NvbnRyb2xzOmZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQuc2VsZWN0aW9uU3RhcnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQuc2VsZWN0aW9uRW5kID0gdGV4dC50ZXh0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5hZGQodGV4dCkuc2V0QWN0aXZlT2JqZWN0KHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQuZW50ZXJFZGl0aW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5oaWRkZW5UZXh0YXJlYS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3QuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgQ2FudmFzSGlzdG9yeShpbnN0LmNhbnZhcylcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoaW5zdC5jYW52YXMuZ2V0QWN0aXZlT2JqZWN0KCkgJiYgYWN0aXZlT2JqZWN0ICYmIGluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpLmhpZGRlblRleHRhcmVhKXsgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGluc3QuY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpLmhhc0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS5oYXNCb3JkZXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS5sb2NrTW92ZW1lbnRYID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS5sb2NrTW92ZW1lbnRZID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0LmNhbnZhcy5nZXRBY3RpdmVPYmplY3QoKS5sb2NrVW5pU2NhbGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdC5jYW52YXMucmVuZGVyQWxsKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIFRleHQucHJvdG90eXBlLmlzRW5hYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRHJhd2luZztcclxuICAgIH07XHJcbiAgICBUZXh0LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5pc0RyYXdpbmcgPSB0cnVlO1xyXG4gICAgfTtcclxuICAgIFRleHQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5pc0RyYXdpbmcgPSBmYWxzZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gVGV4dDtcclxufSgpKTtcclxuIl19