{"version":3,"file":"js/6086-3cd8fc72d16f82b69488.js","mappings":"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","sources":["webpack:///./applications/api/shutterstock.js","webpack:///./applications/components/EditorApp/constants/api.js","webpack:///./applications/components/EditorApp/constants/event-types.js","webpack:///./applications/components/EditorApp/constants/index.js","webpack:///./applications/components/EditorApp/services/Canvas.js","webpack:///./applications/components/EditorApp/services/Mediator.js","webpack:///./applications/components/EditorApp/services/lib/aligning-guidlines.js","webpack:///./applications/components/EditorApp/services/lib/centering-guidlines.js","webpack:///./applications/components/EditorApp/services/lib/drown-guidlines.js","webpack:///./applications/components/EditorApp/services/lib/fabric-extensions.js","webpack:///./applications/components/EditorApp/services/lib/filters.js","webpack:///./applications/components/EditorApp/services/lib/get-effect-by-name.js","webpack:///./applications/components/EditorApp/services/lib/is-transparent.js","webpack:///./applications/components/EditorApp/services/lib/object-resizer.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/add-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/clear-selection.command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/command-history.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/create-selection-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/create-tiling-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/destroy-tiling-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/remove-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/set-bg-command.js","webpack:///./applications/components/EditorApp/services/lib/undo-redo/transform-command.js","webpack:///./applications/components/EditorApp/services/product-settings/calendar-a3.js","webpack:///./applications/components/EditorApp/services/product-settings/calendar-single-a2.js","webpack:///./applications/components/EditorApp/services/product-settings/full-print-mug.js","webpack:///./applications/components/EditorApp/services/product-settings/index.js","webpack:///./applications/components/EditorApp/services/product-settings/playing-card.js","webpack:///./applications/components/EditorApp/services/product-settings/round-plastic-clock.js","webpack:///./applications/components/EditorApp/services/product-settings/square-wood-clock.js","webpack:///./applications/components/EditorApp/services/product-settings/templates.js","webpack:///./applications/components/EditorApp/services/product-settings/umbrella-bilateral.js","webpack:///./applications/components/EditorApp/services/product-settings/variants.js","webpack:///./applications/components/common/Error.js","webpack:///./applications/components/common/Loader.js","webpack:///./applications/components/common/Router/index.js","webpack:///./applications/constants/index.js","webpack:///./applications/utils/delay.js","webpack:///./applications/utils/threejs/SceneSubject.js","webpack:///./applications/utils/threejs/GeneralLights.js","webpack:///./applications/utils/threejs/SceneManager.js","webpack:///./applications/utils/threejs/ThreeJSMediator.js","webpack:///./applications/utils/threejs/three-d-settings.js","webpack:///./applications/components/common/loader.module.scss?e435","webpack:///./applications/components/common/Router/history.ts","webpack:///./applications/middlewares/api.ts"],"sourcesContent":["import sstk, {ImagesApi, ContributorsApi} from \"shutterstock-api\";\n\nconst accessToken = `v2/Wno1VFVheXVaTWZGR2hXQWI0R0NKZnlKVUxVVjUwcEUvMjg0MTI1MTc1L2N1c3RvbWVyLzMvYkliUmFkQWZKeGM3YzExQ2RVYnpJZ2J6YXhrUnhlTGFseTQwa1NxbzR2dHcwRE5mNFQ5MHB1VjF1YzdURkU2a2ZjTkRMRXNKYlN3M2VIX2stbHZ5YktkTzJwV3B3d0JNY00xMlh6QnBUM1h3azRld1ptUUFfWXUyblNqb0NEejZub3VieXRjRC0wcHY5emt4WGpaZWRILUVNUHRDd1cxUmlXLW5RZGx5NGVVOFpMZ1pBNGtYd3JGVmx5cF91Q2xPYUZUbVE5T1F0dURadTZyTi1wVFQxUQ`;\nsstk.setAccessToken(accessToken);\n\nexport const imagesApi = new ImagesApi();\nexport const contributorsApi = new ContributorsApi();\n","import {imagesApi, contributorsApi} from \"../../../api/shutterstock\";\n\nconst API_PREFIX = `api/editor`;\nexport const API_BACKGROUNDS = `/${API_PREFIX}/background_urls`;\nexport const API_PRODUCT_INFO = `/${API_PREFIX}`;\nexport const API_REALISM = `/${API_PREFIX}/product_renders`;\nexport const API_IMAGES = `/${API_PREFIX}/images`;\nexport const API_IMAGE_FILTERS = `/${API_PREFIX}/image_filters`;\n\nexport const apiGoogleSearchTemplate = ({\n imgSize = `xlarge`,\n start = 1,\n value = ``,\n type = ``,\n color = ``\n}) => {\n return [\n `https://www.googleapis.com/customsearch/v1?`,\n `key=AIzaSyAn2wqF7Lwa58X_RJbHXqtITzebbXWgcWI&cx=001658083293066718026:58fitlgbutk&`,\n `searchType=image&imgSize=${imgSize}&start=${start}&q=${value}${type}${color}`\n ].join(``);\n};\n\nexport const shutterStockSearch = (query) => imagesApi.searchImages(query);\nexport const shutterStockRetrieveContributor = (id) =>\n contributorsApi.getContributor(id);\n","export const AFTER = `AFTER`;\nexport const BEFORE = `BEFORE`;\nexport const APPLY_BACKGROUND = `APPLY_BACKGROUND`;\nexport const OBJECT_MODIFIED = `OBJECT_MODIFIED`;\nexport const CANVAS_MODIFIED = `CANVAS_MODIFIED`;\nexport const OBJECT_MOVING = `OBJECT_MOVING`;\nexport const OBJECT_SCALING = `OBJECT_SCALING`;\nexport const OBJECT_ROTATING = `OBJECT_ROTATING`;\nexport const OBJECT_ADDED = `OBJECT_ADDED`;\nexport const OBJECT_REMOVED = `OBJECT_REMOVED`;\nexport const BACKGROUND_COLOR_CHANGED = `BACKGROUND_COLOR_CHANGED`;\nexport const SELECTION_CREATED = `SELECTION_CREATED`;\nexport const SELECTION_CLEARED = `SELECTION_CLEARED`;\nexport const SELECTION_UPDATED = `SELECTION_UPDATED`;\nexport const SCALLED_UP_IMAGES = `SCALLED_UP_IMAGES`;\nexport const HISTORY_CHANGED = `HISTORY_CHANGED`;\nexport const HISTORY_ADD = `HISTORY_ADD`;\nexport const HAS_COPIED_OBJECT = `HAS_COPIED_OBJECT`;\nexport const TEXT_CHANGED = `TEXT_CHANGED`;\nexport const TOUCH_MOVE = `TOUCH_MOVE`;\nexport const MOUSE_DOWN = `MOUSE_DOWN`;\nexport const FILTER_CHANGED = `FILTER_CHANGED`;\nexport const OPACITY_CHANGED = `OPACITY_CHANGED`;\nexport const FILL_CHANGED = `FILL_CHANGED`;\nexport const TEXT_ADDED = `TEXT_ADDED`;\nexport const CROP_APPLYIED = `CROP_APPLYIED`;\nexport const STROKE_CHANGED = `STROKE_CHANGED`;\nexport const STATIC_OBJECT_FILL_CHANGED = `STATIC_OBJECT_FILL_CHANGED`;\nexport const TILING_DESTROYED = `TILING_DESTROYED`;\nexport const TILING_CREATED = `TILING_CREATED`;\n","export const CANVAS = {\n ID: `c`,\n WIDTH: 600,\n HEIGHT: 600\n};\n\nexport const REALISM_POLL_TIME = 2000;\nexport const PICTURE_POLL_TIME = 1000;\n\nexport const DEFAULT_DESIGN = `{\"objects\":[],\"background\":\"transparent\"}`;\n","import ObjectResizer from \"./lib/object-resizer\";\nimport extendFabric from \"./lib/fabric-extensions\";\nimport extendFabricFilters from \"./lib/filters\";\nimport drawGuideLines from \"./lib/drown-guidlines\";\n\nclass Canvas {\n init({id, ...options} = {id: `c`, options: {}}) {\n this._initDefaultValues(options);\n this.canvas = new window.fabric.Canvas(id, {\n ...options,\n hoverCursor: `pointer`,\n controlsAboveOverlay: true,\n allowTouchScrolling: true,\n fireRightClick: true,\n preserveObjectStacking: true,\n selection: !options.isMobile\n });\n this.dimensions = [0, 0, 600, 600];\n this.prevDimensions = [];\n return this.canvas;\n }\n addObject(object, {offsetX, offsetY} = {offsetX: 0, offsetY: 0}) {\n if (object.isType(`activeSelection`)) {\n const objects = [];\n object.getObjects().forEach((obj) => {\n const {group = {left: 0, top: 0}} = obj;\n const {left: ownLeft, top: ownTop} = obj;\n delete obj.group;\n obj.set({\n top: group.top + ownTop + offsetX,\n left: group.left + ownLeft + offsetY\n });\n objects.push(obj);\n this.canvas.add(obj);\n });\n return objects;\n } else {\n const {top, left} = object;\n object.set({\n top: top + offsetY,\n left: left + offsetX\n });\n this.canvas.add(object);\n return object;\n }\n }\n removeObject(object) {\n if (object.isType(`activeSelection`)) {\n const objects = [];\n object.getObjects().forEach((obj) => {\n this.canvas.remove(obj);\n objects.push(obj);\n });\n return objects;\n } else {\n this.canvas.remove(object);\n return object;\n }\n }\n cloneObject(object) {\n return new Promise((resolve, reject) => {\n try {\n object.clone((cloneObj) => {\n if (object.clipPath) {\n cloneObj.clipPath.id = object.clipPath.id;\n }\n resolve(cloneObj);\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n getObjects() {\n return this.canvas.getObjects();\n }\n unSelectObjects() {\n this.discardActiveObject();\n }\n selectObjects(selection) {\n if (Array.isArray(selection)) {\n if (selection.length > 1) {\n const activeSelection = new window.fabric.ActiveSelection(selection, {\n canvas: this.canvas\n });\n activeSelection.canvas = this.canvas;\n this.discardActiveObject();\n this.setActiveObject(activeSelection);\n this.canvas.renderAll();\n return activeSelection;\n } else if (selection.length === 1) {\n this.discardActiveObject();\n this.setActiveObject(selection[0]);\n this.canvas.renderAll();\n return selection[0];\n } else if (selection.length && selection.isType(`activeSelection`)) {\n const temp = [];\n for (let objects = selection.getObjects(), i = objects.length; i--; ) {\n temp[i] = objects[i];\n }\n selection._objects.length = 0;\n for (let j = temp.length; j--; ) {\n selection.addWithUpdate(temp[j]);\n }\n selection.saveState();\n selection.getObjects().forEach((obj) => {\n obj.saveState();\n });\n this.discardActiveObject();\n this.setActiveObject(selection);\n this.canvas.renderAll();\n return selection;\n } else {\n return void 0;\n }\n } else {\n this.discardActiveObject();\n this.setActiveObject(selection);\n this.canvas.renderAll();\n return selection;\n }\n }\n selectAllObjects() {\n this.discardActiveObject();\n this.selectObjects(this.canvas.getObjects());\n }\n discardActiveObject() {\n this.canvas._discardActiveObject(); // for silent\n }\n setActiveObject(object) {\n this.canvas._setActiveObject(object); // for silent\n }\n setBackgroundImage(url) {\n return new Promise((resolve, reject) => {\n try {\n this.canvas.setBackgroundImage(\n url,\n () => {\n this.canvas.renderAll();\n resolve();\n },\n {\n originX: `left`,\n originY: `top`\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n }\n setOverlayImage(url) {\n if (url) {\n return new Promise((resolve, reject) => {\n try {\n this.canvas.setOverlayImage(\n url,\n () => {\n resolve();\n },\n {\n originX: `left`,\n originY: `top`\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n }\n this.canvas.set({\n overlayImage: null\n });\n return void 0;\n }\n setBackgroundColor(color) {\n this.canvas.setBackgroundColor(color, this.renderAll.bind(this));\n }\n applyDesign(json, canvas) {\n return new Promise((resolve, reject) => {\n try {\n canvas.loadFromJSON(json, () => {\n canvas.forEachObject((obj) => {\n if (obj.type === `image` && obj.filters.length) {\n obj.applyFilters();\n canvas.renderAll();\n }\n // fallback for old editor\n if (obj.fontFamily === `Times New Roman`) {\n obj.fontFamily = `Helvetica`;\n }\n obj.saveState();\n });\n resolve();\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n applyClipping(guideLineOffset) {\n const [top, left, width, height] = this.dimensions;\n const right = left + width;\n const bottom = top + height;\n\n const withGuidLines = guideLineOffset === 0;\n\n const clipToWithGuideLines = (ctx) => {\n ctx.strokeStyle = `rgb(190,190,190)`;\n ctx.beginPath();\n ctx.setLineDash([5, 5]);\n ctx.moveTo(left, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bottom);\n ctx.lineTo(left, bottom);\n ctx.lineTo(left, top);\n ctx.stroke();\n };\n\n const clipToWithOutGuideLines = (ctx) => {\n ctx.beginPath();\n ctx.moveTo(left, top);\n ctx.lineTo(right, top);\n ctx.lineTo(right, bottom);\n ctx.lineTo(left, bottom);\n ctx.lineTo(left, top);\n ctx.closePath();\n };\n\n const drawIndentedGuideLines = () =>\n drawGuideLines(this.canvas, this.dimensions, guideLineOffset);\n\n if (\n !withGuidLines &&\n JSON.stringify(this.dimensions) !== JSON.stringify(this.prevDimensions)\n ) {\n this.canvas.on(`before:render`, drawIndentedGuideLines);\n this.prevDimensions = [...this.dimensions];\n }\n\n this.canvas.clipTo = withGuidLines\n ? clipToWithGuideLines\n : clipToWithOutGuideLines;\n this.canvas.renderAll();\n }\n toJSON() {\n const data = this.canvas.toJSON([\n `id`,\n `imageType`,\n `originalSrc`,\n `originalHeight`,\n `originalWidth`,\n `selectable`,\n `hasControls`,\n `hasBorders`,\n `static`,\n `evented`,\n `fields`\n ]);\n delete data.overlayImage;\n delete data.width;\n delete data.height;\n return data;\n }\n add(object) {\n this.canvas.add(object);\n }\n renderAll() {\n this.canvas.renderAll();\n }\n getActive() {\n return this.canvas.getActiveObject();\n }\n removeAllExceptObject(object, cb) {\n const stringifyActiveObject = JSON.stringify(object);\n this.canvas.getObjects().forEach((obj) => {\n if (stringifyActiveObject !== JSON.stringify(obj)) {\n this.canvas.remove(obj);\n if (cb) {\n cb(obj);\n }\n }\n });\n }\n flipHorizontally(object) {\n object.saveState().toggle(`flipX`);\n this.renderAll();\n }\n flipVertically(object) {\n object.saveState().toggle(`flipY`);\n this.renderAll();\n }\n straightenObject(object) {\n this.canvas.straightenObject(object);\n }\n sendObjectToBack(object) {\n this.canvas.sendToBack(object);\n this.renderAll();\n }\n sendObjectToBackwards(object) {\n this.canvas.sendBackwards(object);\n this.renderAll();\n }\n bringObjectToFront(object) {\n this.canvas.bringToFront(object);\n this.renderAll();\n }\n bringObjectToForward(object) {\n this.canvas.bringForward(object);\n this.renderAll();\n }\n centerObjectVertically(object) {\n const [top, , , height] = this.dimensions;\n object\n .set({\n top:\n object.originY === `center`\n ? height / 2 + top\n : height / 2 + top - object.height / 2\n })\n .setCoords();\n this.renderAll();\n }\n centerObjectHorizontally(object) {\n const [, left, width] = this.dimensions;\n object\n .set({\n left:\n object.originX === `center`\n ? width / 2 + left\n : width / 2 + left - object.width / 2\n })\n .setCoords();\n this.renderAll();\n }\n resizeObjectToFill(object) {\n ObjectResizer.resizeToFill(object);\n this.centerObjectVertically(object);\n this.centerObjectHorizontally(object);\n this.renderAll();\n }\n restoreRatioOfObject(object) {\n const {scaleX, scaleY} = object;\n const scale = scaleX > scaleY ? scaleY : scaleX;\n\n object.scale(scale);\n this.renderAll();\n }\n loadImageFromURL(url, options) {\n return new Promise((resolve, reject) => {\n try {\n window.fabric.Image.fromURL(url, (img) => resolve(img.set(options)), {\n crossOrigin: `anonymous`\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n loadSVGFromURL(url, options = {}) {\n return new Promise((resolve, reject) => {\n try {\n window.fabric.loadSVGFromURL(url, (elements) => {\n resolve(window.fabric.util.groupSVGElements(elements).set(options));\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n createText(text, options) {\n return new Promise((resolve, reject) => {\n try {\n resolve(new window.fabric.IText(text, options));\n } catch (e) {\n reject(e);\n }\n });\n }\n clear() {\n // method canvas.clear() removes overlayImage\n const canvas = this.canvas;\n canvas._objects.length = 0;\n canvas.backgroundColor = ``;\n canvas.overlayColor = ``;\n if (canvas._hasITextHandlers) {\n canvas.off(`mouse:up`, canvas._mouseUpITextHandler);\n canvas._iTextInstances = null;\n canvas._hasITextHandlers = false;\n }\n canvas.clearContext(canvas.contextContainer);\n canvas.fire(`canvas:cleared`);\n if (canvas.renderOnAddRemove) {\n canvas.requestRenderAll();\n }\n this.renderAll();\n return canvas;\n }\n setDimensions(dimensions) {\n this.dimensions = dimensions;\n }\n saveState() {\n this.canvas._state = {\n backgroundColor: this.canvas.backgroundColor || `transparent`\n };\n }\n moveObjectTo(object, direction, delta) {\n switch (direction) {\n case `left`:\n return object.set(`left`, object.get(`left`) - delta).setCoords();\n case `right`:\n return object.set(`left`, object.get(`left`) + delta).setCoords();\n case `top`:\n return object.set(`top`, object.get(`top`) - delta).setCoords();\n case `down`:\n return object.set(`top`, object.get(`top`) + delta).setCoords();\n default:\n return void 0;\n }\n }\n addClipPathToObject(object, clipPath) {\n object.clipPath = clipPath;\n }\n addFilterToObject(object, {id, filter}) {\n object.filters[id] = filter;\n object.applyFilters();\n }\n isFilter(object) {\n return object && object.applyTo2d;\n }\n setOpacityToObject(object, value) {\n object.set(`opacity`, value);\n }\n setStrokeToObject(object, {stroke, strokeWidth}) {\n object.set({\n stroke,\n strokeWidth,\n strokeDashArray: [0, 0]\n });\n }\n setFillForPath(object, value) {\n object.set(`fill`, value);\n if (object.getObjects) {\n object.getObjects().forEach((obj) => obj.set(`fill`, value));\n }\n }\n markHiddenObjects() {\n this.canvas.getObjects().forEach((obj) => {\n // do not mark free drawn paths\n if (obj.freeDrawn) {\n return;\n }\n\n obj.__hidden = this.isObjectHidden(obj);\n });\n }\n renderHiddenObjects() {\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.getObjects().forEach((obj) => {\n const ctx = this.canvas.contextTop;\n\n ctx.save();\n if (obj && window) {\n window.fabric.Object.prototype.transform.call(obj, ctx);\n obj.renderHidden(ctx);\n }\n ctx.restore();\n }, this);\n }\n\n isObjectHidden(obj) {\n const {\n width: boundingRectWidth,\n height: boundingRectHeight\n } = obj.getBoundingRect();\n let {left, top} = obj;\n if (obj.group) {\n left += obj.group.left;\n top += obj.group.top;\n }\n const [\n canvasDimensionsTop,\n canvasDimensionsLeft,\n canvasDimensionsWidth,\n canvasDimensionsHeight\n ] = this.dimensions;\n const isBehindRightEdge =\n left - boundingRectWidth / 2 >\n canvasDimensionsLeft + canvasDimensionsWidth;\n const isBehindLeftEdge =\n left + boundingRectWidth / 2 < canvasDimensionsLeft;\n const isBehindTopEdge = top + boundingRectHeight / 2 < canvasDimensionsTop;\n const isBehindBottomEdge =\n top - boundingRectHeight / 2 >\n canvasDimensionsTop + canvasDimensionsHeight;\n\n return (\n isBehindLeftEdge ||\n isBehindRightEdge ||\n isBehindTopEdge ||\n isBehindBottomEdge\n );\n }\n destroyTiling(tiling) {\n const originalObject = tiling.getOriginalObject();\n this.removeObject(tiling);\n this.addObject(originalObject);\n this.discardActiveObject();\n this.setActiveObject(originalObject);\n return originalObject;\n }\n async createTilingFromObject(object, type) {\n let originalObject = object;\n if (object.isType(`tiling`)) {\n if (object.tile.type === type) {\n return object;\n }\n originalObject = object.tile.originalObject;\n }\n const tile = await this._createObjectsForTiling(originalObject, type);\n const tiling = await this.createTiling(tile);\n\n originalObject.tiling = tiling;\n\n if (object.isType(`tiling`)) {\n this.setTilePadding(tiling, object.tilePadding);\n }\n\n this.removeObject(object);\n this.addObject(tiling);\n this.discardActiveObject();\n this.setActiveObject(tiling);\n return tiling;\n }\n async createTiling(tile) {\n return new window.fabric.Tiling({\n width: 550,\n height: 550,\n padding: 0,\n left: 300,\n top: 300,\n tile\n });\n }\n setTilePadding(object, value) {\n const {type, objects} = object.tile;\n if (type === `basic`) {\n const {\n width: scaledWidth,\n height: scaledHeight\n } = objects[0].getBoundingRect();\n\n objects[0].left = scaledWidth / 2 + value;\n objects[0].top = scaledHeight / 2 + value;\n\n object.tile.width = scaledWidth + value;\n object.tile.height = scaledHeight + value;\n\n object.tilePadding = value;\n\n object.updateTiling();\n } else if (type === `half-brick`) {\n const {\n width: scaledWidth,\n height: scaledHeight\n } = objects[0].getBoundingRect();\n objects[0].set({\n left: scaledWidth / 2 + value / 2,\n top: scaledHeight / 2 + value / 2\n });\n objects[1].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: scaledHeight / 2 + value / 2\n });\n objects[2].set({\n top: (3 / 2) * scaledHeight + (3 / 2) * value\n });\n objects[3].set({\n left: scaledWidth + value,\n top: (3 / 2) * scaledHeight + (3 / 2) * value\n });\n objects[4].set({\n left: scaledWidth * 2 + 2 * value,\n top: (3 / 2) * scaledHeight + (3 / 2) * value\n });\n\n object.tile.width = 2 * (scaledWidth + value);\n object.tile.height = 2 * (scaledHeight + value);\n\n object.tilePadding = value;\n\n object.updateTiling();\n } else if (type === `centered`) {\n const {\n width: scaledWidth,\n height: scaledHeight\n } = objects[0].getBoundingRect();\n objects[0].set({\n left: 0,\n top: 0\n });\n objects[1].set({\n left: 2 * scaledWidth + 2 * value,\n top: 0\n });\n objects[2].set({\n left: scaledWidth + value,\n top: scaledHeight + value\n });\n objects[3].set({\n left: 0,\n top: 2 * scaledHeight + 2 * value\n });\n objects[4].set({\n left: 2 * scaledWidth + 2 * value,\n top: 2 * scaledHeight + 2 * value\n });\n\n object.tile.width = 2 * (scaledWidth + value);\n object.tile.height = 2 * (scaledHeight + value);\n\n object.tilePadding = value;\n\n object.updateTiling();\n } else if (type === `half-drop`) {\n const {\n width: scaledWidth,\n height: scaledHeight\n } = objects[0].getBoundingRect();\n objects[0].set({\n left: scaledWidth / 2 + value / 2,\n top: scaledHeight / 2 + value / 2\n });\n objects[1].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: 0\n });\n objects[2].set({\n left: scaledWidth / 2 + value / 2,\n top: (3 / 2) * scaledHeight + (3 / 2) * value\n });\n objects[3].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: scaledHeight + value\n });\n objects[4].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: 2 * scaledHeight + 2 * value\n });\n\n object.tile.width = 2 * (scaledWidth + value);\n object.tile.height = 2 * (scaledHeight + value);\n\n object.tilePadding = value;\n\n object.updateTiling();\n } else if (type === `mirror`) {\n const {\n width: scaledWidth,\n height: scaledHeight\n } = objects[0].getBoundingRect();\n objects[0].set({\n left: scaledWidth / 2 + value / 2,\n top: scaledHeight / 2 + value / 2\n });\n objects[1].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: scaledHeight / 2 + value / 2\n });\n objects[2].set({\n left: scaledWidth / 2 + value / 2,\n top: (3 / 2) * scaledHeight + (3 / 2) * value,\n angle: objects[0].angle + 180\n });\n objects[3].set({\n left: (3 / 2) * scaledWidth + (3 / 2) * value,\n top: (3 / 2) * scaledHeight + (3 / 2) * value,\n angle: objects[0].angle + 180\n });\n\n object.tile.width = 2 * (scaledWidth + value);\n object.tile.height = 2 * (scaledHeight + value);\n\n object.tilePadding = value;\n\n object.updateTiling();\n }\n this.renderAll();\n }\n enlivenObjects(objects) {\n return new Promise((resolve, reject) => {\n try {\n window.fabric.util.enlivenObjects(objects, (enlivenedObjects) => {\n resolve(enlivenedObjects);\n });\n } catch (error) {\n reject(error);\n }\n });\n }\n // private\n _initDefaultValues({isMobile}) {\n extendFabric();\n extendFabricFilters();\n\n window.fabric.Text.prototype.originY = `top`;\n window.fabric.Text.prototype.centeredRotation = true;\n window.fabric.Text.prototype.lockUniScaling = true;\n window.fabric.Object.prototype.originX = `center`;\n window.fabric.Object.prototype.originY = `center`;\n window.fabric.Object.prototype.rotatingPointOffset = 0;\n\n window.fabric.Object.prototype.snapAngle = 45;\n window.fabric.Object.prototype.snapThreshold = 10;\n\n window.fabric.Object.prototype._controlsVisibility = {\n tl: true,\n tr: true,\n br: true,\n bl: true,\n ml: false,\n mt: false,\n mr: false,\n mb: false,\n mtr: true\n };\n\n // remove clipPath from saveState\n const stateProperties = [...window.fabric.Object.prototype.stateProperties];\n const indexOfClipPath = stateProperties.indexOf(`clipPath`);\n stateProperties.splice(indexOfClipPath, 1);\n window.fabric.Object.prototype.stateProperties = stateProperties;\n window.fabric.Image.prototype.stateProperties = stateProperties;\n\n // controls\n window.fabric.Object.prototype.transparentCorners = false;\n window.fabric.Object.prototype.cornerStyle = `circle`;\n window.fabric.Object.prototype.borderColor = `#04a3ff`;\n window.fabric.Object.prototype.cornerColor = `#04a3ff`;\n window.fabric.Object.prototype.cornerStrokeColor = `#04a3ff`;\n if (isMobile) {\n window.fabric.Object.prototype.cornerSize = 25;\n window.fabric.IText.prototype.editable = false;\n }\n }\n _addDimensionsToData(data) {\n const [top, left] = this.dimensions;\n const cloneData = {...data};\n delete cloneData.width;\n delete cloneData.height;\n if (cloneData.objects) {\n return {\n ...cloneData,\n objects: cloneData.objects.map((obj) => {\n return {\n ...obj,\n left: obj.left + left,\n top: obj.top + top\n };\n })\n };\n }\n return cloneData;\n }\n _getBoundingRect(object) {\n const angleOfRadian = (Math.PI / 180) * (object.angle % 180);\n const width =\n Math.cos(angleOfRadian) * object.getScaledWidth() +\n Math.sin(angleOfRadian) * object.getScaledHeight();\n const height =\n Math.sin(angleOfRadian) * object.getScaledWidth() +\n Math.cos(angleOfRadian) * object.getScaledHeight();\n\n return {\n width,\n height\n };\n }\n async _createObjectsForTiling(object, type) {\n if (type === `basic`) {\n const cloneObject = await this.cloneObject(object);\n cloneObject.set({\n originX: `center`,\n originY: `center`,\n objectCaching: false\n });\n cloneObject.scaleToWidth(Math.round(cloneObject.getBoundingRect().width));\n\n const {\n width: scaledWidth,\n height: scaledHeight\n } = cloneObject.getBoundingRect();\n\n cloneObject.set({\n left: scaledWidth / 2,\n top: scaledHeight / 2\n });\n return {\n type: `basic`,\n objects: [cloneObject],\n originalObject: object,\n tilePadding: 0,\n width: scaledWidth,\n height: scaledHeight\n };\n } else if (type === `half-brick`) {\n const arrayOfObjects = [\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object)\n ];\n arrayOfObjects.forEach((obj) => {\n obj.set({\n originX: `center`,\n originY: `center`,\n objectCaching: false\n });\n obj.scaleToWidth(Math.round(obj.getBoundingRect().width));\n });\n const {\n width: scaledWidth,\n height: scaledHeight\n } = arrayOfObjects[0].getBoundingRect();\n arrayOfObjects[0].set({\n left: scaledWidth / 2,\n top: scaledHeight / 2\n });\n arrayOfObjects[1].set({\n left: (3 / 2) * scaledWidth,\n top: scaledHeight / 2\n });\n arrayOfObjects[2].set({\n left: 0,\n top: (3 / 2) * scaledHeight\n });\n arrayOfObjects[3].set({\n left: scaledWidth,\n top: (3 / 2) * scaledHeight\n });\n arrayOfObjects[4].set({\n left: scaledWidth * 2,\n top: (3 / 2) * scaledHeight\n });\n\n return {\n type: `half-brick`,\n objects: arrayOfObjects,\n originalObject: object,\n tilePadding: 0,\n width: scaledWidth * 2,\n height: scaledHeight * 2\n };\n } else if (type === `centered`) {\n const arrayOfObjects = [\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object)\n ];\n arrayOfObjects.forEach((obj) => {\n obj.set({\n originX: `center`,\n originY: `center`,\n objectCaching: false\n });\n obj.scaleToWidth(Math.round(obj.getBoundingRect().width));\n });\n const {\n width: scaledWidth,\n height: scaledHeight\n } = arrayOfObjects[0].getBoundingRect();\n\n arrayOfObjects[0].set({\n left: 0,\n top: 0\n });\n arrayOfObjects[1].set({\n left: 2 * scaledWidth,\n top: 0\n });\n arrayOfObjects[2].set({\n left: scaledWidth,\n top: scaledHeight\n });\n arrayOfObjects[3].set({\n left: 0,\n top: 2 * scaledHeight\n });\n arrayOfObjects[4].set({\n left: 2 * scaledWidth,\n top: 2 * scaledHeight\n });\n return {\n type: `centered`,\n objects: arrayOfObjects,\n originalObject: object,\n tilePadding: 0,\n width: scaledWidth * 2,\n height: scaledHeight * 2\n };\n } else if (type === `half-drop`) {\n const arrayOfObjects = [\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object)\n ];\n arrayOfObjects.forEach((obj) => {\n obj.set({\n originX: `center`,\n originY: `center`,\n objectCaching: false\n });\n obj.scaleToWidth(Math.round(obj.getBoundingRect().width));\n });\n const {\n width: scaledWidth,\n height: scaledHeight\n } = arrayOfObjects[0].getBoundingRect();\n\n arrayOfObjects[0].set({\n left: scaledWidth / 2,\n top: scaledHeight / 2\n });\n arrayOfObjects[1].set({\n left: (3 / 2) * scaledWidth,\n top: 0\n });\n arrayOfObjects[2].set({\n left: scaledWidth / 2,\n top: (3 / 2) * scaledHeight\n });\n arrayOfObjects[3].set({\n left: (3 / 2) * scaledWidth,\n top: scaledHeight\n });\n arrayOfObjects[4].set({\n left: (3 / 2) * scaledWidth,\n top: 2 * scaledHeight\n });\n return {\n type: `half-drop`,\n objects: arrayOfObjects,\n originalObject: object,\n tilePadding: 0,\n width: scaledWidth * 2,\n height: scaledHeight * 2\n };\n } else if (type === `mirror`) {\n const arrayOfObjects = [\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object),\n await this.cloneObject(object)\n ];\n arrayOfObjects.forEach((obj) => {\n obj.set({\n originX: `center`,\n originY: `center`,\n objectCaching: false\n });\n obj.scaleToWidth(Math.round(obj.getBoundingRect().width));\n });\n const {\n width: scaledWidth,\n height: scaledHeight\n } = arrayOfObjects[0].getBoundingRect();\n\n arrayOfObjects[0].set({\n left: scaledWidth / 2,\n top: scaledHeight / 2\n });\n arrayOfObjects[1].set({\n left: (3 / 2) * scaledWidth,\n top: scaledHeight / 2\n });\n arrayOfObjects[2].set({\n left: scaledWidth / 2,\n top: (3 / 2) * scaledHeight,\n angle: arrayOfObjects[0].angle + 180\n });\n arrayOfObjects[3].set({\n left: (3 / 2) * scaledWidth,\n top: (3 / 2) * scaledHeight,\n angle: arrayOfObjects[0].angle + 180\n });\n return {\n type: `mirror`,\n objects: arrayOfObjects,\n originalObject: object,\n tilePadding: 0,\n width: scaledWidth * 2,\n height: scaledHeight * 2\n };\n }\n return void 0;\n }\n}\n\nexport default new Canvas();\n","import Provider from \"pubsub-js\";\nimport FontFaceObserver from \"fontfaceobserver\";\nimport {\n APPLY_BACKGROUND,\n BACKGROUND_COLOR_CHANGED,\n BEFORE,\n CANVAS_MODIFIED,\n CROP_APPLYIED,\n FILTER_CHANGED,\n HAS_COPIED_OBJECT,\n MOUSE_DOWN,\n OBJECT_ADDED,\n OBJECT_MODIFIED,\n OBJECT_MOVING,\n OBJECT_REMOVED,\n OBJECT_ROTATING,\n OBJECT_SCALING,\n OPACITY_CHANGED,\n SCALLED_UP_IMAGES,\n SELECTION_CLEARED,\n SELECTION_CREATED,\n SELECTION_UPDATED,\n STATIC_OBJECT_FILL_CHANGED,\n STROKE_CHANGED,\n TEXT_ADDED,\n TEXT_CHANGED,\n TOUCH_MOVE\n} from \"../constants/event-types\";\nimport Canvas from \"./Canvas\";\nimport productSettings from \"./product-settings\";\nimport ObjectResizer from \"./lib/object-resizer\";\nimport initAligningGuidelines from \"./lib/aligning-guidlines\";\nimport initCenteringGuidelines from \"./lib/centering-guidlines\";\nimport {API_BACKGROUNDS} from \"../constants/api\";\nimport CommandHistory from \"./lib/undo-redo/command-history\";\nimport TransformCommand from \"./lib/undo-redo/transform-command\";\nimport AddCommand from \"./lib/undo-redo/add-command\";\nimport RemoveCommand from \"./lib/undo-redo/remove-command\";\nimport SetBgCommand from \"./lib/undo-redo/set-bg-command\";\nimport CreateSelectionCommand from \"./lib/undo-redo/create-selection-command\";\nimport ClearSelectionCommand from \"./lib/undo-redo/clear-selection.command\";\nimport getEffectByName from \"./lib/get-effect-by-name\";\nimport trackEvent from \"../../../utils/track-event\";\nimport isTransparent from \"./lib/is-transparent\";\nimport CreateTilingCommand from \"./lib/undo-redo/create-tiling-command\";\nimport DestroyTilingCommand from \"./lib/undo-redo/destroy-tiling-command\";\n\nconst excludedFromLoadingFonts = [`Arial`];\n\nclass Mediator {\n _assetsMemory = {};\n isDesignSaved = true;\n offsetOfPastedObject = 10;\n initCanvas(options) {\n const canvas = Canvas.init(options);\n initAligningGuidelines(canvas);\n initCenteringGuidelines(canvas);\n this._initCommandHistory();\n this._addSelectionObjectByRightClick();\n this._initPublisherForCanvas();\n this._initOnBeforeUnloadWarning();\n\n // only for dev\n window.__canvas = canvas;\n window.__mediator = this;\n }\n getCanvas() {\n return Canvas.canvas;\n }\n addToCanvas(obj) {\n this.getCanvas().add(obj);\n return this;\n }\n getProductAssets(options) {\n const url = this._getBgURL(options);\n if (this._assetsMemory[url]) {\n return this._assetsMemory[url];\n }\n return fetch(url)\n .then((res) => {\n if (res.status >= 400) {\n throw new Error(`Error`);\n }\n const json = res.json();\n this._assetsMemory[url] = json;\n return json;\n })\n .catch((error) => {\n return error;\n });\n }\n async applyAssetsToCanvas({background, ...rest}) {\n try {\n // TODO: need to come only overlay\n const {overlay, lamination, corner_radius: cornerRadius} = rest;\n const hasOverlayImage = overlay || lamination || cornerRadius;\n if (background) {\n Provider.publish(APPLY_BACKGROUND, background);\n }\n if (hasOverlayImage) {\n if (overlay) {\n await Canvas.setOverlayImage(overlay);\n }\n if (lamination) {\n await Canvas.setOverlayImage(lamination);\n }\n if (cornerRadius) {\n await Canvas.setOverlayImage(cornerRadius);\n }\n } else {\n await Canvas.setOverlayImage(null);\n }\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n } catch (e) {\n throw new Error(e);\n }\n }\n async applyDesignToCanvas(json, canvas) {\n try {\n if (json) {\n if (!json.version) {\n json = this._transformOldJSON(json);\n }\n this.exitTextEditing(json);\n await this.loadUsedFonts(json);\n await Canvas.applyDesign(json, canvas);\n }\n } catch (e) {\n throw new Error(e);\n }\n }\n async applyClippingToCanvas(settings) {\n if (settings && settings.guideLines) {\n const guideLineOffset =\n settings.guideLines === true ? 0 : settings.guideLines;\n Canvas.applyClipping(guideLineOffset);\n } else {\n Canvas.applyClipping();\n }\n }\n applyObjectResizer(dimensions, dpi) {\n ObjectResizer.setOptions({dimensions, dpi});\n }\n async applyConditionToCanvas(\n {product, side, variants, design, dimensions, dpi},\n prevCondition = {}\n ) {\n try {\n this.condition = {product, side, variants, design, dimensions, dpi};\n const {design: prevDesign} = prevCondition;\n if (JSON.stringify(design) !== JSON.stringify(prevDesign)) {\n await this.applyDesignToCanvas(design, this.getCanvas());\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n this.clearHistory();\n this.offsetOfPastedObject = 0;\n }\n this.applyObjectResizer(dimensions, dpi);\n Canvas.setDimensions(dimensions);\n const assets = await this.getProductAssets({\n product,\n style: `large`,\n side,\n variants\n });\n if (assets) {\n await this.applyAssetsToCanvas(assets);\n await this.applyClippingToCanvas(productSettings[product]);\n }\n Canvas.markHiddenObjects();\n Canvas.renderAll();\n this.checkScaledUpImages();\n } catch (e) {\n throw e;\n }\n }\n undo() {\n this.history.back();\n Canvas.renderAll();\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Undo`\n });\n return this.getStateOfHistory();\n }\n redo() {\n this.history.forward();\n Canvas.renderAll();\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Redo`\n });\n return this.getStateOfHistory();\n }\n selectObjects(objects) {\n const selection = Canvas.selectObjects(objects);\n Provider.publish(SELECTION_CREATED, selection);\n return selection;\n }\n unSelectObjects() {\n Canvas.unSelectObjects();\n Provider.publish(SELECTION_CLEARED);\n }\n getStateOfHistory() {\n const {index, commands} = this.history;\n return {\n index,\n lengthOfCommands: commands.length\n };\n }\n clearHistory() {\n this.history.clear();\n }\n getActive() {\n return Canvas.getActive();\n }\n removeActive() {\n const activeObject = this.getActive();\n if (activeObject) {\n this.removeObject(activeObject);\n this.addToHistory(`clearSelection`, activeObject);\n this.addToHistory(`remove`, activeObject);\n Canvas.discardActiveObject();\n this.checkScaledUpImages();\n Provider.publish(OBJECT_REMOVED);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Remove object`\n });\n }\n }\n removeAllExceptActive() {\n Canvas.removeAllExceptObject(Canvas.getActive(), (object) => {\n this.addToHistory(`remove`, object);\n this.checkScaledUpImages();\n });\n }\n hasCopiedObject() {\n return !!this.objectToCopy;\n }\n async pasteCopiedObject() {\n const {product, side} = this.condition;\n const settings = productSettings[product];\n const onlyBg =\n settings &&\n settings.permissions &&\n settings.permissions[side] &&\n !settings.permissions[side].image &&\n !settings.permissions[side].text;\n\n if (this.hasCopiedObject() && !onlyBg) {\n const object = await Canvas.cloneObject(this.objectToCopy);\n if (Canvas.getActive()) {\n this.addToHistory(`clearSelection`, Canvas.getActive());\n }\n const addedObject = Canvas.addObject(object, {\n offsetX: this.offsetOfPastedObject,\n offsetY: this.offsetOfPastedObject\n });\n const selection = Canvas.selectObjects(addedObject);\n this.addToHistory(`add`, selection);\n this.addToHistory(`createSelection`, selection);\n Provider.publish(SELECTION_CREATED, Canvas.getActive());\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n }\n async copyActiveObject() {\n this.objectToCopy = await Canvas.cloneObject(Canvas.getActive());\n Provider.publish(HAS_COPIED_OBJECT);\n this.offsetOfPastedObject = 10;\n }\n selectAllObjects() {\n if (Canvas.getActive()) {\n this.addToHistory(`clearSelection`, Canvas.getActive());\n }\n Canvas.selectAllObjects();\n this.addToHistory(`createSelection`, Canvas.getActive());\n Provider.publish(SELECTION_CREATED, Canvas.getActive());\n }\n async cloneActiveObject() {\n await this.copyActiveObject();\n this.pasteCopiedObject();\n }\n flipHorizontally() {\n const active = this.getActive();\n Canvas.flipHorizontally(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Flip horizontally`\n });\n }\n flipVertically() {\n const active = this.getActive();\n Canvas.flipVertically(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Flip vertically`\n });\n }\n straightenActive() {\n const active = this.getActive();\n Canvas.straightenObject(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Straighten`\n });\n }\n sendActiveToBack() {\n const active = this.getActive();\n Canvas.sendObjectToBack(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Send to back`\n });\n }\n sendActiveToBackwards() {\n const active = this.getActive();\n Canvas.sendObjectToBackwards(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Send backwards`\n });\n }\n bringActiveToFront() {\n const active = this.getActive();\n Canvas.bringObjectToFront(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Bring to front`\n });\n }\n bringActiveToForward() {\n const active = this.getActive();\n Canvas.bringObjectToForward(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Bring forward`\n });\n }\n centerActiveVertically() {\n const active = this.getActive();\n Canvas.centerObjectVertically(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n centerActiveHorizontally() {\n const active = this.getActive();\n Canvas.centerObjectHorizontally(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n resizeActiveObjectToFill() {\n const active = this.getActive();\n Canvas.resizeObjectToFill(active);\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n this.checkScaledUpImages();\n trackEvent({\n category: `Editor`,\n action: `Resize to fill`\n });\n }\n restoreRatioOfActiveObject() {\n const active = this.getActive();\n Canvas.restoreRatioOfObject(active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n this.addToHistory(`transform`, active);\n trackEvent({\n category: `Editor`,\n action: `Restore ratio`\n });\n }\n setBackgroundColor(color, silent) {\n if (!silent) {\n Canvas.saveState();\n }\n Canvas.setBackgroundColor(color);\n if (!silent) {\n this.addToHistory(`setBg`, this.getCanvas());\n }\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n Provider.publish(BACKGROUND_COLOR_CHANGED, color);\n if (isTransparent(color)) {\n trackEvent({\n category: `Editor`,\n action: `Remove background`\n });\n } else {\n trackEvent({\n category: `Editor`,\n action: `Add background`\n });\n }\n }\n async addPictureToCanvas(\n {id, type, original, canvasUrl, originalWidth, originalHeight},\n options,\n fields = {}\n ) {\n const urlToPicture = canvasUrl || original;\n const pictureOptions = canvasUrl\n ? {\n imageType: type,\n originalSrc: original\n }\n : {\n imageType: type\n };\n const picture =\n type === `image/svg+xml`\n ? await Canvas.loadSVGFromURL(urlToPicture, options)\n : await Canvas.loadImageFromURL(urlToPicture, pictureOptions);\n\n picture.remoteId = id;\n picture.fields = fields;\n\n if (options.isTexture) {\n ObjectResizer.resizeToFill(picture);\n trackEvent({\n category: `Editor`,\n action: `Add texture`,\n label: original\n });\n } else if (options.isClipart) {\n trackEvent({\n category: `Editor`,\n action: `Add clipart`,\n label: original\n });\n\n ObjectResizer.resizeToFit(picture, originalWidth, originalHeight);\n } else if (options.isEmoji) {\n picture.scaleToWidth(options.scaleWidth);\n trackEvent({\n category: `Editor`,\n action: `Add emoji`,\n label: original\n });\n } else if (options.isFigure) {\n picture.scaleToWidth(options.scaleWidth);\n trackEvent({\n category: `Editor`,\n action: `Add figure`,\n label: original\n });\n } else {\n trackEvent({\n category: `Editor`,\n action: `Add own image`,\n label: original\n });\n ObjectResizer.resizeToFit(picture, originalWidth, originalHeight);\n }\n Canvas.centerObjectHorizontally(picture);\n Canvas.centerObjectVertically(picture);\n if (options.fill && this.isOneColorPath(picture)) {\n Canvas.setFillForPath(picture, options.fill);\n }\n if (Canvas.getActive()) {\n this.addToHistory(`clearSelection`, Canvas.getActive());\n }\n this.addToHistory(`add`, picture);\n Canvas.add(picture);\n this.addToHistory(`createSelection`, picture);\n this.selectObjects(picture);\n this.checkScaledUpImages();\n }\n async addObjectsToCanvas({original}) {\n const design = await fetch(original).then((response) => response.json());\n await this.loadUsedFonts(design);\n const enlivenedObjects = await Canvas.enlivenObjects(design.objects);\n\n enlivenedObjects.map((obj) => {\n Canvas.addObject(obj);\n this.addToHistory(`add`, obj);\n });\n\n Canvas.renderAll();\n\n const selection = this.selectObjects(enlivenedObjects);\n this.addToHistory(`createSelection`, selection);\n\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n\n trackEvent({\n category: `Editor`,\n action: `Add lettering`,\n label: original\n });\n }\n async addTextToCanvas(text, options) {\n await this.loadFont(`AA Magnum`);\n const oText = await Canvas.createText(text, {\n fontFamily: `AA Magnum`,\n textAlign: `center`,\n fontSize: 30,\n lineHeight: 1.1,\n ...options\n });\n Canvas.centerObjectHorizontally(oText);\n Canvas.centerObjectVertically(oText);\n if (Canvas.getActive()) {\n this.addToHistory(`clearSelection`, Canvas.getActive());\n }\n this.addToHistory(`add`, oText);\n Canvas.add(oText);\n this.addToHistory(`createSelection`, oText);\n this.selectObjects(oText);\n if (oText.editable) {\n oText.enterEditing();\n } else {\n Provider.publish(TEXT_ADDED);\n }\n }\n loadFont(fontName) {\n if (excludedFromLoadingFonts.includes(fontName)) {\n return;\n }\n const font = new FontFaceObserver(fontName);\n return font.load(null, 5000).catch((err) => {\n // eslint-disable-next-line no-console\n console.log(`${fontName} is not available: ${err}`);\n });\n }\n async loadUsedFonts(design) {\n const fontsUsedInDesign = [`Helvetica`];\n design.objects.forEach((obj) => {\n if (obj.fontFamily && fontsUsedInDesign.indexOf(obj.fontFamily) === -1) {\n fontsUsedInDesign.push(obj.fontFamily);\n }\n if (obj.tile) {\n obj.tile.objects.forEach((o) => {\n if (o.fontFamily && fontsUsedInDesign.indexOf(o.fontFamily) === -1) {\n fontsUsedInDesign.push(o.fontFamily);\n }\n });\n }\n });\n return Promise.all(fontsUsedInDesign.map(this.loadFont));\n }\n checkScaledUpImages() {\n Provider.publish(SCALLED_UP_IMAGES, this._hasScaledUpImages());\n }\n clearDesign() {\n this.setBackgroundColor(`transparent`);\n this.selectAllObjects();\n this.removeActive();\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n getVariantsFromURL() {\n if (window && window.location.search.length) {\n return window.location.search.split(`&`).reduce((acc, item, i) => {\n const [key, value] =\n i === 0 ? item.slice(1).split(`=`) : item.split(`=`);\n if (value === ``) {\n return {...acc};\n }\n return {...acc, [key.replace(`default_`, ``)]: value};\n }, {});\n }\n return void 0;\n }\n addObject(object) {\n Canvas.addObject(object);\n Canvas.renderAll();\n }\n removeObject(object) {\n Canvas.discardActiveObject();\n Canvas.removeObject(object);\n Canvas.renderAll();\n }\n saveObjectState(object) {\n object.saveState();\n if (object.isType(`activeSelection`) || object.isType(`group`)) {\n object.getObjects().forEach((obj) => {\n obj.saveState();\n });\n }\n }\n addToHistory(command, object) {\n switch (command) {\n case `transform`:\n this.history.add(new TransformCommand(object));\n this.saveObjectState(object);\n break;\n case `remove`:\n this.saveObjectState(object);\n this.history.add(new RemoveCommand(object, this));\n break;\n case `add`:\n this.saveObjectState(object);\n this.history.add(new AddCommand(object, this));\n break;\n case `setBg`:\n this.history.add(new SetBgCommand(object, this));\n break;\n case `createSelection`:\n this.history.add(new CreateSelectionCommand(object, this));\n break;\n case `clearSelection`:\n this.history.add(new ClearSelectionCommand(object, this));\n break;\n case `createTiling`:\n this.history.add(new CreateTilingCommand(object, this));\n break;\n case `destroyTiling`:\n this.history.add(new DestroyTilingCommand(object, this));\n }\n }\n moveActiveObjectTo(direction, delta) {\n const activeObject = Canvas.getActive();\n if (activeObject) {\n Canvas.moveObjectTo(activeObject, direction, delta);\n Canvas.renderAll();\n this.history.add(new TransformCommand(activeObject));\n Provider.publish(OBJECT_MOVING, activeObject);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n }\n setActiveTextProperty(property, value) {\n const active = this.getActive();\n\n if (this.isText(active)) {\n this.addToHistory(`transform`, active);\n active.set(property, value);\n Canvas.renderAll();\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n if (property === `fontFamily`) {\n trackEvent({\n category: `Editor`,\n action: `Font change`,\n label: value\n });\n }\n if (property === `fill`) {\n trackEvent({\n category: `Editor`,\n action: `Font color change`\n });\n }\n }\n }\n isText(object) {\n return (\n object.isType(`textbox`) ||\n object.isType(`i-text`) ||\n object.isType(`text`)\n );\n }\n isImage(object) {\n return object.isType(`image`) && object.imageType !== `application/svg`;\n }\n isPath(object) {\n return (\n object.isType(`path`) ||\n object.isType(`circle`) ||\n object.isType(`rect`) ||\n object.isType(`ellipse`) ||\n object.isType(`polygon`) ||\n object.isType(`line`) ||\n object.isType(`polyline`)\n );\n }\n isPathGroup(object) {\n return (\n object.isType(`group`) &&\n object\n .getObjects()\n .every(\n (obj) =>\n obj.type === `path` ||\n obj.type === `circle` ||\n obj.type === `rect` ||\n obj.type === `ellipse` ||\n obj.type === `polygon` ||\n obj.type === `line` ||\n obj.type === `polyline`\n )\n );\n }\n isOneColorPath(object) {\n if (this.isPathGroup(object)) {\n const objects = object.getObjects();\n const colorOfFirtPath = objects[0].fill;\n return objects.every((obj) => obj.fill === colorOfFirtPath);\n } else if (this.isPath(object)) {\n return true;\n }\n return false;\n }\n setFillForActivePath(value) {\n const active = this.getActive();\n if (\n this.isOneColorPath(active) &&\n (this.isPathGroup(active) || this.isPath(active))\n ) {\n Canvas.setFillForPath(active, value);\n Canvas.renderAll();\n this.addToHistory(`transform`, active);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Clipart color change`\n });\n }\n }\n toggleEffect(effectName) {\n const effect = getEffectByName(effectName);\n const {id, value, undoTitle, makeTitle} = effect;\n const activeObject = this.getActive();\n if (Canvas.isFilter(effect.value)) {\n Canvas.addFilterToObject(activeObject, {\n id,\n filter: activeObject.filters[id] ? null : value\n });\n trackEvent({\n category: `Editor`,\n action: activeObject.filters[id] ? makeTitle : undoTitle\n });\n } else {\n const clipPath = value(activeObject);\n if (this.isActiveClipPath(activeObject.clipPath, id)) {\n this.getActive().clipPath = null;\n Canvas.renderAll();\n } else {\n this.getActive().clipPath = null;\n Canvas.renderAll();\n Canvas.addClipPathToObject(this.getActive(), clipPath);\n }\n }\n Canvas.renderAll();\n\n Provider.publish(FILTER_CHANGED, activeObject);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n isActiveClipPath(clipPath, id) {\n return clipPath && String(clipPath).indexOf(id) > -1;\n }\n setOpacityToActive(value) {\n Canvas.setOpacityToObject(this.getActive(), value);\n Canvas.renderAll();\n this.addToHistory(`transform`, this.getActive());\n Provider.publish(OPACITY_CHANGED, this.getActive());\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n setStrokeToActive(value) {\n Canvas.setStrokeToObject(this.getActive(), value);\n Canvas.renderAll();\n this.addToHistory(`transform`, this.getActive());\n Provider.publish(STROKE_CHANGED, this.getActive());\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Stroke`\n });\n }\n async applyCropToActiveObject(cropUrl) {\n const active = this.getActive();\n const clipPath = cropUrl ? await Canvas.loadSVGFromURL(cropUrl) : null;\n const {width, height} = active;\n\n if (clipPath) {\n clipPath.id = cropUrl;\n clipPath.top = 0;\n clipPath.left = 0;\n\n const angleOfRadian = (Math.PI / 180) * (clipPath.angle % 180);\n\n const clipPathWidth =\n Math.cos(angleOfRadian) * clipPath.width +\n Math.sin(angleOfRadian) * clipPath.height;\n\n const clipPathHeight =\n Math.sin(angleOfRadian) * clipPath.width +\n Math.cos(angleOfRadian) * clipPath.height;\n\n const scaleFactor = Math.min(\n width / clipPathWidth,\n height / clipPathHeight\n );\n\n clipPath.scale(scaleFactor);\n trackEvent({\n category: `Editor`,\n action: `Add crop`\n });\n } else {\n trackEvent({\n category: `Editor`,\n action: `Remove crop`\n });\n }\n active.clipPath = null;\n Canvas.renderAll();\n Canvas.addClipPathToObject(active, clipPath);\n Canvas.renderAll();\n this.addToHistory(`transform`, active);\n Provider.publish(CROP_APPLYIED, this.getActive());\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n }\n setFillForPathOfStaticObject(fillColor, pathNumber) {\n const staticObject = Canvas.getObjects().filter((o) => o.static)[0];\n staticObject.set(`fill`, fillColor);\n if (staticObject.isType(`group`)) {\n staticObject.getObjects()[pathNumber].set(`fill`, fillColor);\n }\n this.addToHistory(`transform`, staticObject);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n Provider.publish(STATIC_OBJECT_FILL_CHANGED, staticObject);\n trackEvent({\n category: `Editor`,\n action: `Static object color change`\n });\n Canvas.renderAll();\n }\n loadSVGFromURL(...rest) {\n return Canvas.loadSVGFromURL(...rest);\n }\n destroyTilingFromActiveObject() {\n const activeObject = this.getActive();\n const originalObject = this.destroyTiling(activeObject);\n Provider.publish(SELECTION_UPDATED, {\n selected: [originalObject],\n deselected: [activeObject]\n });\n this.addToHistory(`destroyTiling`, activeObject);\n if (!activeObject.isType(`tiling`)) {\n this.addToHistory(`destroyTiling`, originalObject.tiling);\n }\n trackEvent({\n category: `Editor`,\n action: `Destroy tiling`\n });\n }\n destroyTiling(object) {\n return Canvas.destroyTiling(object);\n }\n async createTilingFromActiveObject(typeOfPattern) {\n const activeObject = this.getActive();\n const tiling = await this.createTilingFromObject(\n activeObject,\n typeOfPattern\n );\n if (!activeObject.isType(`tiling`)) {\n this.addToHistory(`createTiling`, activeObject);\n }\n Provider.publish(SELECTION_UPDATED, {\n selected: [tiling],\n deselected: [activeObject]\n });\n Canvas.renderAll();\n trackEvent({\n category: `Editor`,\n action: `Create tiling`,\n label: typeOfPattern\n });\n }\n async createTilingFromObject(object, typeOfPattern = `basic`) {\n return await Canvas.createTilingFromObject(object, typeOfPattern);\n }\n isTiling(object) {\n return object.isType(`tiling`);\n }\n setTilePaddingToActive(value) {\n const activeObject = this.getActive();\n Canvas.setTilePadding(activeObject, value);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n trackEvent({\n category: `Editor`,\n action: `Change tile padding`\n });\n }\n exitTextEditing(design) {\n design.objects\n .filter((object) => object.type === `i-text` || object.type === `textbox`)\n .map((oText) => {\n oText.selectable = true;\n oText.selected = false;\n oText.isEditing = false;\n });\n Canvas.renderAll();\n }\n setSelectionMode(modeValue) {\n this.getCanvas().selection = modeValue\n }\n // private\n _initCommandHistory() {\n this.history = window.__history = new CommandHistory();\n }\n _initPublisherForCanvas() {\n const canvas = this.getCanvas();\n\n canvas.on(`object:modified`, ({target}) => {\n this.addToHistory(`transform`, target);\n if (this.isText(target)) {\n const {\n __lineHeights: [heightFirstLine],\n _fontSizeMult: mult,\n lineHeight,\n scaleY\n } = target;\n const fontSize = Math.round(\n ((heightFirstLine / lineHeight) * scaleY) / mult\n );\n target.set({\n scaleX: 1,\n scaleY: 1,\n fontSize\n });\n Canvas.renderAll();\n Provider.publish(TEXT_CHANGED, target);\n }\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n Provider.publish(OBJECT_MODIFIED, Canvas.toJSON());\n Canvas.markHiddenObjects();\n });\n canvas.on(`object:added`, () => {\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n Provider.publish(OBJECT_ADDED);\n });\n canvas.on(`object:removed`, () => {\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n Provider.publish(OBJECT_REMOVED);\n });\n canvas.on(`object:moving`, (e) => {\n Provider.publish(OBJECT_MOVING, e.target);\n });\n canvas.on(`object:rotating`, (e) => {\n Provider.publish(OBJECT_ROTATING, e);\n });\n canvas.on(`object:scaling`, ({target}) => {\n Provider.publish(OBJECT_SCALING, target);\n this.checkScaledUpImages();\n });\n canvas.on(`selection:created`, ({target}) => {\n this.addToHistory(`createSelection`, target);\n if (target.isType(`activeSelection`)) {\n this.saveObjectState(target);\n }\n Provider.publish(SELECTION_CREATED, target);\n });\n canvas.on(`before:selection:cleared`, ({target}) => {\n this.addToHistory(`clearSelection`, target);\n });\n canvas.on(`selection:cleared`, () => {\n Provider.publish(SELECTION_CLEARED);\n this.getCanvas().upperCanvasEl.removeEventListener(\n `touchmove`,\n this._preventDefault\n );\n });\n canvas.on(`mouse:over`, ({target}) => {\n const active = this.getActive();\n if (target && target !== active) {\n target.hasControls = false;\n target._renderControls(this.getCanvas().contextContainer);\n }\n });\n canvas.on(`mouse:out`, () => {\n Canvas.renderAll(); // for removing controls\n });\n canvas.on(`mouse:down`, ({target}) => {\n Provider.publish(MOUSE_DOWN, target);\n if (target) {\n if (!target.isEditing) {\n target.hasControls = true;\n }\n // fix scroll\n this.getCanvas().upperCanvasEl.addEventListener(\n `touchmove`,\n this._preventDefault\n );\n } else {\n this.getCanvas().upperCanvasEl.removeEventListener(\n `touchmove`,\n this._preventDefault\n );\n this.getCanvas().upperCanvasEl.addEventListener(\n `touchmove`,\n this._touchMove\n );\n }\n });\n canvas.on(`selection:updated`, ({selected, deselected}) => {\n this.addToHistory(`clearSelection`, deselected[0]);\n this.addToHistory(`createSelection`, selected[0]);\n Provider.publish(SELECTION_UPDATED, {selected, deselected});\n });\n canvas.on(`text:changed`, ({target}) => {\n Provider.publish(TEXT_CHANGED, target);\n Provider.publish(CANVAS_MODIFIED, Canvas.toJSON());\n });\n canvas.on(`text:editing:entered`, ({target}) => {\n target.hiddenTextarea.addEventListener(`keypress`, this._stopPropagation);\n target.hiddenTextarea.addEventListener(`keydown`, this._stopPropagation);\n });\n canvas.on(`before:render`, () => {\n Canvas.renderHiddenObjects();\n });\n Provider.subscribe(CANVAS_MODIFIED, () => {\n this.isDesignSaved = false;\n });\n }\n _touchMove() {\n Provider.publish(TOUCH_MOVE);\n }\n _stopPropagation(e) {\n e.stopPropagation();\n }\n _preventDefault(e) {\n e.preventDefault();\n }\n _getBgURL({product, style, side, variants}) {\n let url = `${API_BACKGROUNDS}?id=${product}&style=${style}&side=${side}`;\n for (let prop in variants) {\n if ({}.hasOwnProperty.call(variants, prop)) {\n url += `&variant[${prop}]=${variants[prop]}`;\n }\n }\n return url;\n }\n _hasScaledUpImages() {\n const canvas = this.getCanvas();\n const list = [];\n let result = 0;\n canvas.forEachObject((obj) => {\n const isBelowMinDPI = ObjectResizer.isBelowMinDPI(obj);\n result += isBelowMinDPI;\n if (isBelowMinDPI) {\n list.push(obj);\n }\n });\n return {result: !!result, list};\n }\n _addSelectionObjectByRightClick() {\n const canvas = this.getCanvas();\n canvas.on(`mouse:down`, (e) => {\n if (e.button === 3) {\n if (e.target) {\n Provider.publishSync(SELECTION_CREATED + BEFORE, e);\n canvas.setActiveObject(e.target);\n canvas.renderAll();\n } else {\n Provider.publishSync(SELECTION_CLEARED + BEFORE, e);\n canvas.discardActiveObject();\n }\n }\n });\n }\n _transformOldJSON(\n {objects = [], background = `transparent`, left = 0, top = 0} = {\n objects: [],\n background: `transparent`,\n left: 0,\n top: 0\n }\n ) {\n return {\n objects: objects.map((object) => {\n if (object.type === `text`) {\n object.type = `i-text`;\n }\n return {\n ...object,\n left: object.left + left,\n top: object.top + top\n };\n }),\n background\n };\n }\n _initOnBeforeUnloadWarning() {\n if (window) {\n window.onbeforeunload = () => {\n if (!this.isDesignSaved) {\n return `Покидая эту страницу, вы потеряете несохранённые изменения`;\n }\n return void 0;\n };\n }\n }\n _hasStaticObject() {\n return Canvas.getObjects().some((o) => o.static);\n }\n}\n\nexport default new Mediator();\n","function initAligningGuidelines(canvas) {\n const fabric = window && window.fabric;\n const ctx = canvas.contextContainer;\n const aligningLineOffset = 5;\n const aligningLineMargin = 4;\n const aligningLineWidth = 1;\n const aligningLineColor = `rgb(33, 150, 243)`;\n let viewportTransform;\n let zoom = 1;\n\n function drawVerticalLine(coords) {\n drawLine(\n coords.x + 0.5,\n coords.y1 > coords.y2 ? coords.y2 : coords.y1,\n coords.x + 0.5,\n coords.y2 > coords.y1 ? coords.y2 : coords.y1\n );\n }\n\n function drawHorizontalLine(coords) {\n drawLine(\n coords.x1 > coords.x2 ? coords.x2 : coords.x1,\n coords.y + 0.5,\n coords.x2 > coords.x1 ? coords.x2 : coords.x1,\n coords.y + 0.5\n );\n }\n\n function drawLine(x1, y1, x2, y2) {\n ctx.save();\n ctx.lineWidth = aligningLineWidth;\n ctx.strokeStyle = aligningLineColor;\n ctx.beginPath();\n ctx.moveTo(\n (x1 + viewportTransform[4]) * zoom,\n (y1 + viewportTransform[5]) * zoom\n );\n ctx.lineTo(\n (x2 + viewportTransform[4]) * zoom,\n (y2 + viewportTransform[5]) * zoom\n );\n ctx.stroke();\n ctx.restore();\n }\n\n function isInRange(value1, value2) {\n value1 = Math.round(value1);\n value2 = Math.round(value2);\n for (\n let i = value1 - aligningLineMargin, len = value1 + aligningLineMargin;\n i <= len;\n i++\n ) {\n if (i === value2) {\n return true;\n }\n }\n return false;\n }\n\n const verticalLines = [];\n const horizontalLines = [];\n\n canvas.on(`mouse:down`, function () {\n viewportTransform = canvas.viewportTransform;\n zoom = canvas.getZoom();\n });\n\n canvas.on(`object:moving`, function (e) {\n const activeObject = e.target;\n const canvasObjects = canvas.getObjects();\n const activeObjectCenter = activeObject.getCenterPoint();\n const activeObjectLeft = activeObjectCenter.x;\n const activeObjectTop = activeObjectCenter.y;\n const activeObjectBoundingRect = activeObject.getBoundingRect();\n const activeObjectHeight =\n activeObjectBoundingRect.height / viewportTransform[3];\n const activeObjectWidth =\n activeObjectBoundingRect.width / viewportTransform[0];\n const transform = canvas._currentTransform;\n let horizontalInTheRange = false;\n let verticalInTheRange = false;\n\n if (!transform) {\n return;\n }\n\n // It should be trivial to DRY this up by encapsulating (repeating) creation of x1, x2, y1, and y2 into functions,\n // but we're not doing it here for perf. reasons -- as this a function that's invoked on every mouse move\n\n for (let i = canvasObjects.length; i--; ) {\n if (canvasObjects[i] === activeObject) {\n continue;\n }\n\n let objectCenter = canvasObjects[i].getCenterPoint();\n\n let objectLeft = objectCenter.x;\n\n let objectTop = objectCenter.y;\n\n let objectBoundingRect = canvasObjects[i].getBoundingRect();\n\n let objectHeight = objectBoundingRect.height / viewportTransform[3];\n\n let objectWidth = objectBoundingRect.width / viewportTransform[0];\n\n // snap by the horizontal center line\n if (isInRange(objectLeft, activeObjectLeft)) {\n verticalInTheRange = true;\n verticalLines.push({\n x: objectLeft,\n y1:\n objectTop < activeObjectTop\n ? objectTop - objectHeight / 2 - aligningLineOffset\n : objectTop + objectHeight / 2 + aligningLineOffset,\n y2:\n activeObjectTop > objectTop\n ? activeObjectTop + activeObjectHeight / 2 + aligningLineOffset\n : activeObjectTop - activeObjectHeight / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(objectLeft, activeObjectTop),\n `center`,\n `center`\n );\n }\n\n // snap by the left edge\n if (\n isInRange(\n objectLeft - objectWidth / 2,\n activeObjectLeft - activeObjectWidth / 2\n )\n ) {\n verticalInTheRange = true;\n verticalLines.push({\n x: objectLeft - objectWidth / 2,\n y1:\n objectTop < activeObjectTop\n ? objectTop - objectHeight / 2 - aligningLineOffset\n : objectTop + objectHeight / 2 + aligningLineOffset,\n y2:\n activeObjectTop > objectTop\n ? activeObjectTop + activeObjectHeight / 2 + aligningLineOffset\n : activeObjectTop - activeObjectHeight / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(\n objectLeft - objectWidth / 2 + activeObjectWidth / 2,\n activeObjectTop\n ),\n `center`,\n `center`\n );\n }\n\n // snap by the right edge\n if (\n isInRange(\n objectLeft + objectWidth / 2,\n activeObjectLeft + activeObjectWidth / 2\n )\n ) {\n verticalInTheRange = true;\n verticalLines.push({\n x: objectLeft + objectWidth / 2,\n y1:\n objectTop < activeObjectTop\n ? objectTop - objectHeight / 2 - aligningLineOffset\n : objectTop + objectHeight / 2 + aligningLineOffset,\n y2:\n activeObjectTop > objectTop\n ? activeObjectTop + activeObjectHeight / 2 + aligningLineOffset\n : activeObjectTop - activeObjectHeight / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(\n objectLeft + objectWidth / 2 - activeObjectWidth / 2,\n activeObjectTop\n ),\n `center`,\n `center`\n );\n }\n\n // snap by the vertical center line\n if (isInRange(objectTop, activeObjectTop)) {\n horizontalInTheRange = true;\n horizontalLines.push({\n y: objectTop,\n x1:\n objectLeft < activeObjectLeft\n ? objectLeft - objectWidth / 2 - aligningLineOffset\n : objectLeft + objectWidth / 2 + aligningLineOffset,\n x2:\n activeObjectLeft > objectLeft\n ? activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset\n : activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(activeObjectLeft, objectTop),\n `center`,\n `center`\n );\n }\n\n // snap by the top edge\n if (\n isInRange(\n objectTop - objectHeight / 2,\n activeObjectTop - activeObjectHeight / 2\n )\n ) {\n horizontalInTheRange = true;\n horizontalLines.push({\n y: objectTop - objectHeight / 2,\n x1:\n objectLeft < activeObjectLeft\n ? objectLeft - objectWidth / 2 - aligningLineOffset\n : objectLeft + objectWidth / 2 + aligningLineOffset,\n x2:\n activeObjectLeft > objectLeft\n ? activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset\n : activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(\n activeObjectLeft,\n objectTop - objectHeight / 2 + activeObjectHeight / 2\n ),\n `center`,\n `center`\n );\n }\n\n // snap by the bottom edge\n if (\n isInRange(\n objectTop + objectHeight / 2,\n activeObjectTop + activeObjectHeight / 2\n )\n ) {\n horizontalInTheRange = true;\n horizontalLines.push({\n y: objectTop + objectHeight / 2,\n x1:\n objectLeft < activeObjectLeft\n ? objectLeft - objectWidth / 2 - aligningLineOffset\n : objectLeft + objectWidth / 2 + aligningLineOffset,\n x2:\n activeObjectLeft > objectLeft\n ? activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset\n : activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset\n });\n activeObject.setPositionByOrigin(\n new fabric.Point(\n activeObjectLeft,\n objectTop + objectHeight / 2 - activeObjectHeight / 2\n ),\n `center`,\n `center`\n );\n }\n }\n\n if (!horizontalInTheRange) {\n horizontalLines.length = 0;\n }\n\n if (!verticalInTheRange) {\n verticalLines.length = 0;\n }\n });\n\n canvas.on(`before:render`, function () {\n canvas.clearContext(canvas.contextContainer);\n });\n\n canvas.on(`after:render`, function () {\n for (let i = verticalLines.length; i--; ) {\n drawVerticalLine(verticalLines[i]);\n }\n for (let i = horizontalLines.length; i--; ) {\n drawHorizontalLine(horizontalLines[i]);\n }\n\n verticalLines.length = horizontalLines.length = 0;\n });\n\n canvas.on(`mouse:up`, function () {\n verticalLines.length = horizontalLines.length = 0;\n canvas.renderAll();\n });\n}\n\nexport default initAligningGuidelines;\n","function initCenteringGuidelines(canvas) {\n const fabric = window && window.fabric;\n const canvasWidth = canvas.getWidth();\n const canvasHeight = canvas.getHeight();\n const canvasWidthCenter = canvasWidth / 2;\n const canvasHeightCenter = canvasHeight / 2;\n const canvasWidthCenterMap = {};\n const canvasHeightCenterMap = {};\n const centerLineMargin = 4;\n const centerLineColor = `rgb(33, 150, 243)`;\n const centerLineWidth = 1;\n const ctx = canvas.contextContainer;\n let viewportTransform;\n\n for (\n let i = canvasWidthCenter - centerLineMargin,\n len = canvasWidthCenter + centerLineMargin;\n i <= len;\n i++\n ) {\n canvasWidthCenterMap[Math.round(i)] = true;\n }\n for (\n let i = canvasHeightCenter - centerLineMargin,\n len = canvasHeightCenter + centerLineMargin;\n i <= len;\n i++\n ) {\n canvasHeightCenterMap[Math.round(i)] = true;\n }\n\n function showVerticalCenterLine() {\n showCenterLine(\n canvasWidthCenter + 0.5,\n 0,\n canvasWidthCenter + 0.5,\n canvasHeight\n );\n }\n\n function showHorizontalCenterLine() {\n showCenterLine(\n 0,\n canvasHeightCenter + 0.5,\n canvasWidth,\n canvasHeightCenter + 0.5\n );\n }\n\n function showCenterLine(x1, y1, x2, y2) {\n ctx.save();\n ctx.strokeStyle = centerLineColor;\n ctx.lineWidth = centerLineWidth;\n ctx.beginPath();\n ctx.moveTo(x1 * viewportTransform[0], y1 * viewportTransform[3]);\n ctx.lineTo(x2 * viewportTransform[0], y2 * viewportTransform[3]);\n ctx.stroke();\n ctx.restore();\n }\n\n let isInVerticalCenter;\n let isInHorizontalCenter;\n\n canvas.on(`mouse:down`, function () {\n viewportTransform = canvas.viewportTransform;\n });\n\n canvas.on(`object:moving`, function (e) {\n const object = e.target;\n const objectCenter = object.getCenterPoint();\n let transform = canvas._currentTransform;\n\n if (!transform) {\n return;\n }\n\n isInVerticalCenter = Math.round(objectCenter.x) in canvasWidthCenterMap;\n isInHorizontalCenter = Math.round(objectCenter.y) in canvasHeightCenterMap;\n\n if (isInHorizontalCenter || isInVerticalCenter) {\n object.setPositionByOrigin(\n new fabric.Point(\n isInVerticalCenter ? canvasWidthCenter : objectCenter.x,\n isInHorizontalCenter ? canvasHeightCenter : objectCenter.y\n ),\n `center`,\n `center`\n );\n }\n });\n\n canvas.on(`before:render`, function () {\n canvas.clearContext(canvas.contextContainer);\n });\n\n canvas.on(`after:render`, function () {\n if (isInVerticalCenter) {\n showVerticalCenterLine();\n }\n if (isInHorizontalCenter) {\n showHorizontalCenterLine();\n }\n });\n\n canvas.on(`mouse:up`, function () {\n // clear these values, to stop drawing guidelines once mouse is up\n isInVerticalCenter = isInHorizontalCenter = null;\n canvas.renderAll();\n });\n}\n\nexport default initCenteringGuidelines;\n","function drawGuideLines(canvas, coords, offset = 0) {\n const ctx = canvas.contextTop;\n ctx.strokeStyle = `rgb(190,190,190)`;\n ctx.beginPath();\n _drawLines(ctx, coords, offset);\n ctx.stroke();\n}\n\nfunction _drawLines(ctx, [top, left, width, height], edgeOffset) {\n const fabric = window && window.fabric;\n fabric.util.drawDashedLine(\n ctx,\n left + parseInt(edgeOffset, 10),\n top + parseInt(edgeOffset, 10),\n left + parseInt(edgeOffset, 10),\n top + height - parseInt(edgeOffset, 10),\n [5, 5]\n );\n fabric.util.drawDashedLine(\n ctx,\n left + parseInt(edgeOffset, 10),\n top + height - parseInt(edgeOffset, 10),\n left + width - parseInt(edgeOffset, 10),\n top + height - parseInt(edgeOffset, 10),\n [5, 5]\n );\n fabric.util.drawDashedLine(\n ctx,\n left + width - parseInt(edgeOffset, 10),\n top + height - parseInt(edgeOffset, 10),\n left + width - parseInt(edgeOffset, 10),\n top + parseInt(edgeOffset, 10),\n [5, 5]\n );\n fabric.util.drawDashedLine(\n ctx,\n left + width - parseInt(edgeOffset, 10),\n top + parseInt(edgeOffset, 10),\n left + parseInt(edgeOffset, 10),\n top + parseInt(edgeOffset, 10),\n [5, 5]\n );\n}\n\nexport default drawGuideLines;\n","const extendFabric = () => {\n function checkClick(e, value) {\n return `which` in e ? e.which === value : e.button === value - 1;\n }\n const RIGHT_CLICK = 3;\n const MIDDLE_CLICK = 2;\n const LEFT_CLICK = 1;\n const addEventOptions = {passive: false};\n const fabric = window && window.fabric;\n fabric.PathGroup = {};\n fabric.PathGroup.fromObject = function (object, callback) {\n if (typeof object.paths === `string`) {\n fabric.loadSVGFromURL(object.paths, function (elements) {\n const pathUrl = object.paths;\n delete object.paths;\n\n // hack for grouping\n if (elements.length === 1) {\n elements.push(new fabric.Path(`MD`));\n }\n\n const pathGroup = fabric.util.groupSVGElements(\n elements,\n object,\n pathUrl\n );\n if (pathGroup.hasOwnProperty(`fill`)) {\n if (pathGroup._objects) {\n let i = pathGroup._objects.length;\n while (i--) {\n pathGroup._objects[i][`fill`] = pathGroup.fill;\n }\n }\n }\n\n pathGroup.type = `group`;\n\n callback(pathGroup);\n });\n } else {\n fabric.util.enlivenObjects(object.paths, function (enlivenedObjects) {\n delete object.paths;\n callback(new fabric.Group(enlivenedObjects, object));\n });\n }\n };\n\n // don't fire selection event when object removed\n fabric.Canvas.prototype._onObjectRemoved = function (obj) {\n if (this._hoveredTarget === obj) {\n this._hoveredTarget = null;\n }\n // this.callSuper(`_onObjectRemoved`, obj);\n };\n fabric.Canvas.prototype.discardActiveObject = function (e) {\n const currentActives = this.getActiveObjects();\n const currentActive = this.getActiveObject();\n if (currentActive) {\n this.fire(`before:selection:cleared`, {target: currentActive, e});\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n };\n\n let touchDidMoved = false;\n\n fabric.Canvas.prototype.__onMouseMove = function (e) {\n touchDidMoved = true;\n this._handleEvent(e, `move:before`);\n this._cacheTransformEventData(e);\n let target;\n let pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n if (typeof e.touches !== `undefined` && e.touches.length > 1) {\n return;\n }\n\n let groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._pointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n } else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n } else {\n this._transformObject(e);\n }\n this._handleEvent(e, `move`);\n this._resetTransformEventData();\n };\n\n fabric.Canvas.prototype.__onMouseUp = function (e) {\n let target;\n\n let transform = this._currentTransform;\n\n let groupSelector = this._groupSelector;\n\n let shouldRender = false;\n\n let isClick =\n !groupSelector || (groupSelector.left === 0 && groupSelector.top === 0);\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, `up:before`);\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, `up`, RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, `up`, MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n if (\n this._shouldClearSelection(e, target) &&\n !this.selection &&\n !touchDidMoved\n ) {\n this.discardActiveObject(e);\n }\n\n if (!isClick) {\n this._maybeGroupObjects(e);\n if (!shouldRender) {\n shouldRender = this._shouldRender(target);\n }\n }\n if (target) {\n target.isMoving = false;\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, `up`, LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n if (target) {\n target.__corner = 0;\n }\n if (shouldRender) {\n this.requestRenderAll();\n } else if (!isClick) {\n this.renderTop();\n }\n };\n\n fabric.Canvas.prototype.__onMouseDown = function (e) {\n touchDidMoved = false;\n this._cacheTransformEventData(e);\n this._handleEvent(e, `down:before`);\n let target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, `down`, RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, `down`, MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n let pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n let shouldRender = this._shouldRender(target);\n\n let shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target) && this.selection) {\n this.discardActiveObject(e);\n } else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n if (\n this.selection &&\n (!target ||\n (!target.selectable &&\n !target.isEditing &&\n target !== this._activeObject))\n ) {\n this._groupSelector = {\n ex: pointer.x,\n ey: pointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n let alreadySelected = target === this._activeObject;\n if (target.selectable) {\n this.setActiveObject(target, e);\n }\n if (target === this._activeObject && (target.__corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n }\n }\n this._handleEvent(e, `down`);\n // we must renderAll so that we update the visuals\n if (shouldRender || shouldGroup) {\n this.requestRenderAll();\n }\n };\n\n fabric.Canvas.prototype._onTouchStart = function (e) {\n if (!this.allowTouchScrolling && e.preventDefault) {\n e.preventDefault();\n }\n if (this.mainTouchId === null) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n let canvasElement = this.upperCanvasEl;\n let eventTypePrefix = this._getEventPrefix();\n fabric.util.addListener(\n fabric.document,\n `touchend`,\n this._onTouchEnd,\n addEventOptions\n );\n fabric.util.addListener(\n fabric.document,\n `touchmove`,\n this._onMouseMove,\n addEventOptions\n );\n // Unbind mousedown to prevent double triggers from touch devices\n fabric.util.removeListener(\n canvasElement,\n eventTypePrefix + `down`,\n this._onMouseDown\n );\n };\n\n // custom rotate\n\n const rotateIcon = new Image();\n rotateIcon.src = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMi42NDU4OSAyLjY0NTg1QzMuMjUwMDYgMi4wNDE2OSA0LjA3OTIyIDEuNjY2NjkgNS4wMDAwNiAxLjY2NjY5QzYuODQxNzIgMS42NjY2OSA4LjMyOTIyIDMuMTU4MzUgOC4zMjkyMiA1LjAwMDAyQzguMzI5MjIgNi44NDE2OSA2Ljg0MTcyIDguMzMzMzYgNS4wMDAwNiA4LjMzMzM2QzMuNDQ1ODkgOC4zMzMzNSAyLjE1MDA2IDcuMjcwODUgMS43NzkyMiA1LjgzMzM1TDIuNjQ1ODkgNS44MzMzNUMyLjk4NzU2IDYuODA0MTkgMy45MTI1NiA3LjUwMDAyIDUuMDAwMDYgNy41MDAwMkM2LjM3OTIyIDcuNTAwMDIgNy41MDAwNiA2LjM3OTE5IDcuNTAwMDYgNS4wMDAwMkM3LjUwMDA2IDMuNjIwODUgNi4zNzkyMiAyLjUwMDAyIDUuMDAwMDYgMi41MDAwMkM0LjMwODM5IDIuNTAwMDIgMy42OTE3MiAyLjc4NzUyIDMuMjQxNzIgMy4yNDE2OUw0LjU4MzM5IDQuNTgzMzVMMS42NjY3MiA0LjU4MzM1TDEuNjY2NzIgMS42NjY2OUwyLjY0NTg5IDIuNjQ1ODVaIiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPg==`;\n\n fabric.Object.prototype.drawControls = function (ctx, styleOverride) {\n styleOverride = styleOverride || {};\n const wh = this._calculateCurrentDimensions();\n const width = wh.x;\n const height = wh.y;\n const scaleOffset = styleOverride.cornerSize || this.cornerSize;\n const left = -(width + scaleOffset) / 2;\n const top = -(height + scaleOffset) / 2;\n const transparentCorners =\n typeof styleOverride.transparentCorners !== `undefined`\n ? styleOverride.transparentCorners\n : this.transparentCorners;\n const hasRotatingPoint =\n typeof styleOverride.hasRotatingPoint !== `undefined`\n ? styleOverride.hasRotatingPoint\n : this.hasRotatingPoint;\n const methodName = transparentCorners ? `stroke` : `fill`;\n\n ctx.save();\n ctx.strokeStyle = ctx.fillStyle =\n styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle =\n styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(\n ctx,\n styleOverride.cornerDashArray || this.cornerDashArray,\n null\n );\n // top-left\n this._drawControl(`tl`, ctx, methodName, left, top, styleOverride);\n // top-right\n this._drawControl(`tr`, ctx, methodName, left + width, top, styleOverride);\n // bottom-left\n this._drawControl(`bl`, ctx, methodName, left, top + height, styleOverride);\n // bottom-right\n this._drawControl(\n `br`,\n ctx,\n methodName,\n left + width,\n top + height,\n styleOverride\n );\n if (!this.get(`lockUniScaling`)) {\n // middle-top\n this._drawControl(\n `mt`,\n ctx,\n methodName,\n left + width / 2,\n top,\n styleOverride\n );\n // middle-bottom\n this._drawControl(\n `mb`,\n ctx,\n methodName,\n left + width / 2,\n top + height,\n styleOverride\n );\n // middle-right\n this._drawControl(\n `mr`,\n ctx,\n methodName,\n left + width,\n top + height / 2,\n styleOverride\n );\n // middle-left\n this._drawControl(\n `ml`,\n ctx,\n methodName,\n left,\n top + height / 2,\n styleOverride\n );\n }\n // middle-top-rotate\n if (hasRotatingPoint) {\n this._drawControl(\n `mtr`,\n ctx,\n methodName,\n left + width / 2,\n top - this.rotatingPointOffset,\n styleOverride\n );\n\n const rotateLeft = left + width / 2;\n const rotateTop = top - this.rotatingPointOffset;\n if (!this.canvas.isMobile) {\n ctx.drawImage(rotateIcon, rotateLeft, rotateTop, 13, 13);\n } else {\n ctx.drawImage(rotateIcon, rotateLeft + 2, rotateTop + 3, 20, 20);\n }\n }\n ctx.restore();\n return this;\n };\n\n fabric.Object.prototype.renderHidden = function (ctx) {\n if (!this.__hidden) {\n return;\n }\n const {width, height} = this;\n ctx.save();\n ctx.fillStyle = `rgba(255,0,0,0.2)`;\n ctx.fillRect(-width / 2, -height / 2, width, height);\n ctx.restore();\n };\n\n // pattern to object doesn't have custom properties\n fabric.Object.prototype.toObject = function (propertiesToInclude) {\n let NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n let object = {\n id: this.id,\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: fabric.util.toFixed(this.left, NUM_FRACTION_DIGITS),\n top: fabric.util.toFixed(this.top, NUM_FRACTION_DIGITS),\n width: fabric.util.toFixed(this.width, NUM_FRACTION_DIGITS),\n height: fabric.util.toFixed(this.height, NUM_FRACTION_DIGITS),\n fill:\n this.fill && this.fill.toObject\n ? this.fill.toObject(propertiesToInclude)\n : this.fill,\n stroke:\n this.stroke && this.stroke.toObject\n ? this.stroke.toObject()\n : this.stroke,\n strokeWidth: fabric.util.toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray\n ? this.strokeDashArray.concat()\n : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeDashOffset: this.strokeDashOffset,\n strokeLineJoin: this.strokeLineJoin,\n strokeMiterLimit: fabric.util.toFixed(\n this.strokeMiterLimit,\n NUM_FRACTION_DIGITS\n ),\n scaleX: fabric.util.toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: fabric.util.toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: fabric.util.toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: fabric.util.toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow:\n this.shadow && this.shadow.toObject\n ? this.shadow.toObject()\n : this.shadow,\n visible: this.visible,\n clipTo: this.clipTo && String(this.clipTo),\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n transformMatrix: this.transformMatrix\n ? this.transformMatrix.concat()\n : null,\n skewX: fabric.util.toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: fabric.util.toFixed(this.skewY, NUM_FRACTION_DIGITS)\n };\n\n if (this.clipPath) {\n object.clipPath = this.clipPath.toObject(propertiesToInclude);\n object.clipPath.inverted = this.clipPath.inverted;\n object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n }\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n };\n\n fabric.Tiling = fabric.util.createClass(fabric.Rect, {\n type: `tiling`,\n tile: {\n type: `basic`,\n objects: [],\n width: 0,\n height: 0,\n originalObject: null\n },\n tilePadding: 0,\n tileScale: 1,\n objectCaching: false,\n multiplier: 1,\n initialize(options = {}) {\n this.callSuper(`initialize`, options);\n this.setOptions(options);\n this._setFill();\n },\n setOptions(options) {\n for (const prop in options) {\n if (options.hasOwnProperty(prop)) {\n this[prop] = options[prop];\n }\n }\n },\n _setFill() {\n this.fill = this._createPattern();\n },\n _createPattern() {\n const patternSourceCanvas = new fabric.StaticCanvas();\n patternSourceCanvas.enableRetinaScaling = false;\n patternSourceCanvas.setDimensions({\n width: this.multiplier * this.tile.width,\n height: this.multiplier * this.tile.height\n });\n\n patternSourceCanvas.add(...this.tile.objects);\n patternSourceCanvas.contextContainer.scale(\n this.multiplier,\n this.multiplier\n );\n patternSourceCanvas.renderAll();\n return new fabric.Pattern({\n source: patternSourceCanvas.getElement(),\n patternTransform: [\n this.tileScale / this.multiplier,\n 0,\n 0,\n this.tileScale / this.multiplier,\n 0,\n 0\n ]\n });\n },\n updateTiling() {\n this._setFill();\n },\n getOriginalObject() {\n return this.tile.originalObject;\n },\n toObject(propertiesToInclude) {\n return this.callSuper(\n `toObject`,\n [`tile`, `tilePadding`, `tileScale`].concat(propertiesToInclude)\n );\n }\n });\n\n fabric.Tiling.fromObject = function (object, callback) {\n if (object.tile.objects[0].isType) {\n callback(new fabric.Tiling(object));\n } else {\n fabric.util.enlivenObjects(object.tile.objects, function (\n enlivenObjects\n ) {\n object.tile.objects = enlivenObjects;\n fabric.util.enlivenObjects([object.tile.originalObject], function (\n enlivenObj\n ) {\n object.tile.originalObject = enlivenObj[0];\n callback(new fabric.Tiling(object));\n });\n });\n }\n };\n\n // gestures\n (function () {\n let degreesToRadians = fabric.util.degreesToRadians;\n let radiansToDegrees = fabric.util.radiansToDegrees;\n\n fabric.util.object.extend(\n fabric.Canvas.prototype,\n /** @lends fabric.Canvas.prototype */ {\n /**\n * Method that defines actions when an Event.js gesture is detected on an object. Currently only supports\n * 2 finger gestures.\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onTransformGesture(e, self) {\n if (\n this.isDrawingMode ||\n !e.touches ||\n e.touches.length !== 2 ||\n `gesture` !== self.gesture\n ) {\n return;\n }\n\n let target = this.findTarget(e);\n if (`undefined` !== typeof target) {\n this.__gesturesParams = {\n e,\n self,\n target\n };\n\n this.__gesturesRenderer();\n }\n\n this.fire(`touch:gesture`, {\n target,\n e,\n self\n });\n },\n __gesturesParams: null,\n __gesturesRenderer() {\n if (\n this.__gesturesParams === null ||\n this._currentTransform === null\n ) {\n return;\n }\n\n let self = this.__gesturesParams.self;\n let t = this._currentTransform;\n let e = this.__gesturesParams.e;\n\n t.action = `scale`;\n t.originX = t.originY = `center`;\n\n this._scaleObjectBy(self.scale, e);\n\n if (self.rotation !== 0) {\n t.action = `rotate`;\n this._rotateObjectByAngle(self.rotation, e);\n }\n\n this.requestRenderAll();\n t.action = `drag`;\n },\n\n /**\n * Method that defines actions when an Event.js drag is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onDrag(e, self) {\n this.fire(`touch:drag`, {\n e,\n self\n });\n },\n\n /**\n * Method that defines actions when an Event.js orientation event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onOrientationChange(e, self) {\n this.fire(`touch:orientation`, {\n e,\n self\n });\n },\n\n /**\n * Method that defines actions when an Event.js shake event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onShake(e, self) {\n this.fire(`touch:shake`, {\n e,\n self\n });\n },\n\n /**\n * Method that defines actions when an Event.js longpress event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onLongPress(e, self) {\n this.fire(`touch:longpress`, {\n e,\n self\n });\n },\n\n /**\n * Scales an object by a factor\n * @param {Number} s The scale factor to apply to the current scale level\n * @param {Event} e Event object by Event.js\n */\n _scaleObjectBy(s, e) {\n let t = this._currentTransform;\n let target = t.target;\n let lockScalingX = target.get(`lockScalingX`);\n let lockScalingY = target.get(`lockScalingY`);\n\n if (lockScalingX && lockScalingY) {\n return;\n }\n\n target._scaling = true;\n\n let constraintPosition = target.translateToOriginPoint(\n target.getCenterPoint(),\n t.originX,\n t.originY\n );\n let dim = target._getTransformedDimensions();\n\n this._setObjectScale(\n new fabric.Point(\n (t.scaleX * dim.x * s) / target.scaleX,\n (t.scaleY * dim.y * s) / target.scaleY\n ),\n t,\n lockScalingX,\n lockScalingY,\n null,\n target.get(`lockScalingFlip`),\n dim\n );\n\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n\n this._fire(`scaling`, {\n target,\n e,\n transform: t\n });\n },\n\n /**\n * Rotates object by an angle\n * @param {Number} curAngle The angle of rotation in degrees\n * @param {Event} e Event object by Event.js\n */\n _rotateObjectByAngle(curAngle, e) {\n let t = this._currentTransform;\n\n if (t.target.get(`lockRotation`)) {\n return;\n }\n t.target.rotate(\n radiansToDegrees(degreesToRadians(curAngle) + t.theta)\n );\n this._fire(`rotating`, {\n target: t.target,\n e,\n transform: t\n });\n }\n }\n );\n })();\n\n // snap angle\n fabric.util.object.extend(fabric.Canvas.prototype, {\n _rotateObjectWithOutSnappig: fabric.Canvas.prototype._rotateObject,\n _rotateObject(x, y) {\n this._rotateObjectWithOutSnappig(x, y);\n let t = this._currentTransform;\n\n if (typeof t.target.snapAngle !== `number`) {\n return void 0;\n }\n\n let angle = t.target.angle;\n let snapAngle = t.target.snapAngle;\n let snapThreshold = t.target.snapThreshold || snapAngle;\n let rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle;\n let leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n t.target.angle = leftAngleLocked;\n } else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n t.target.angle = rightAngleLocked;\n }\n\n return this;\n }\n });\n};\n\nexport default extendFabric;\n","const extendFabricFilters = () => {\n const fabric = window && window.fabric;\n fabric.Image.filters.Waterize = fabric.util.createClass(\n fabric.Image.filters.BaseFilter,\n {\n type: `Waterize`,\n initialize(options = {}) {\n this.amplitude = options.amplitude || 14;\n this.frequency = options.frequency || 0.6;\n this.frames = options.frames || 0;\n },\n applyTo2d(options) {\n const imageData = options.imageData;\n const data = imageData.data;\n const height = imageData.height;\n const width = imageData.width;\n const amplitude = this.amplitude;\n const T = this.frames * this.frequency * 0.016;\n const stride = width * 4;\n const twoPI = 2 * Math.PI;\n const maxY = height - amplitude;\n const maxX = width - amplitude;\n let len = 4 * height * width;\n let x;\n let y;\n let xs;\n let ys;\n let dest;\n let src;\n\n const pixels = new Array(len);\n while (len--) {\n pixels[len] = data[len];\n }\n\n for (x = amplitude; x < maxX; ++x) {\n ys = Math.round(amplitude * Math.cos(twoPI * ((3 * x) / width + T)));\n\n for (y = amplitude; y < maxY; ++y) {\n xs = Math.round(\n amplitude * Math.sin(twoPI * ((3 * y) / height + T))\n );\n\n dest = y * stride + x * 4;\n src = (y + ys) * stride + (x + xs) * 4;\n\n data[dest] = pixels[src] || 0;\n data[dest + 1] = pixels[src + 1] || 0;\n data[dest + 2] = pixels[src + 2] || 0;\n }\n }\n },\n\n toObject() {\n return fabric.util.object.extend(this.callSuper(`toObject`), {\n amplitude: this.amplitude,\n frequency: this.frequency\n });\n }\n }\n );\n\n fabric.Image.filters.Waterize.fromObject =\n fabric.Image.filters.BaseFilter.fromObject;\n\n fabric.Image.filters.RemoveBlack = fabric.util.createClass(\n fabric.Image.filters.BaseFilter,\n {\n type: `RemoveBlack`,\n initialize(options = {}) {\n this.threshold = options.threshold || 30;\n this.distance = options.distance || 20;\n },\n applyTo2d(options) {\n const imageData = options.imageData;\n const data = imageData.data;\n const threshold = this.threshold;\n const distance = this.distance;\n const abs = Math.abs;\n let r;\n let g;\n let b;\n\n for (let i = 0, len = data.length; i < len; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (\n r < threshold &&\n g < threshold &&\n b < threshold &&\n abs(r - g) < distance &&\n abs(r - b) < distance &&\n abs(g - b) < distance\n ) {\n data[i + 3] = 1;\n }\n }\n },\n toObject() {\n return fabric.util.object.extend(this.callSuper(`toObject`), {\n threshold: this.threshold,\n distance: this.distance\n });\n }\n }\n );\n\n fabric.Image.filters.RemoveBlack.fromObject =\n fabric.Image.filters.BaseFilter.fromObject;\n\n fabric.Image.filters.RemoveWhite = fabric.util.createClass(\n fabric.Image.filters.BaseFilter,\n {\n type: `RemoveWhite`,\n initialize(options) {\n options = options || {};\n this.threshold = options.threshold || 30;\n this.distance = options.distance || 20;\n },\n applyTo2d(options) {\n const imageData = options.imageData;\n const data = imageData.data;\n const threshold = this.threshold;\n const distance = this.distance;\n const limit = 255 - threshold;\n const abs = Math.abs;\n let r;\n let g;\n let b;\n\n for (let i = 0, len = data.length; i < len; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (\n r > limit &&\n g > limit &&\n b > limit &&\n abs(r - g) < distance &&\n abs(r - b) < distance &&\n abs(g - b) < distance\n ) {\n data[i + 3] = 1;\n }\n }\n },\n toObject() {\n return fabric.util.object.extend(this.callSuper(`toObject`), {\n threshold: this.threshold,\n distance: this.distance\n });\n }\n }\n );\n\n fabric.Image.filters.RemoveWhite.fromObject =\n fabric.Image.filters.BaseFilter.fromObject;\n\n fabric.Image.filters.Sepia2 = fabric.util.createClass(\n fabric.Image.filters.BaseFilter,\n {\n type: `Sepia2`,\n applyTo2d(options) {\n const imageData = options.imageData;\n const data = imageData.data;\n const iLen = data.length;\n let r;\n let g;\n let b;\n\n for (let i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n data[i] = (r * 0.393 + g * 0.769 + b * 0.189) / 1.351;\n data[i + 1] = (r * 0.349 + g * 0.686 + b * 0.168) / 1.203;\n data[i + 2] = (r * 0.272 + g * 0.534 + b * 0.131) / 2.14;\n }\n }\n }\n );\n\n fabric.Image.filters.Sepia2.fromObject =\n fabric.Image.filters.BaseFilter.fromObject;\n};\n\nexport default extendFabricFilters;\n","export default (effectName) => {\n switch (effectName) {\n case `removeWhite`:\n return {\n id: 0,\n makeTitle: `Remove white`,\n undoTitle: `Restore white`,\n value: new window.fabric.Image.filters.RemoveColor({\n distance: 0.15\n })\n };\n case `removeBlack`:\n return {\n id: 9,\n makeTitle: `Remove black`,\n undoTitle: `Restore black`,\n value: new window.fabric.Image.filters.RemoveColor({\n color: `#000`,\n distance: 0.15\n })\n };\n case `grayscale`:\n return {\n id: 1,\n makeTitle: `Make grayscale`,\n undoTitle: `Undo grayscale`,\n value: new window.fabric.Image.filters.Grayscale()\n };\n case `invert`:\n return {\n id: 2,\n makeTitle: `Make inverted`,\n undoTitle: `Undo inverted`,\n value: new window.fabric.Image.filters.Invert()\n };\n case `sepia`:\n return {\n id: 3,\n makeTitle: `Add sepia`,\n undoTitle: `Undo sepia`,\n value: new window.fabric.Image.filters.Sepia()\n };\n case `brightness`:\n return {\n id: 4,\n makeTitle: `Add brightness`,\n undoTitle: `Remove brightenss`,\n value: new window.fabric.Image.filters.Brightness({brightness: 0.2})\n };\n case `blur`:\n return {\n id: 5,\n makeTitle: `Add blur`,\n undoTitle: `Remove blur`,\n value: new window.fabric.Image.filters.Convolute({\n matrix: [\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9\n ]\n })\n };\n case `sharpen`:\n return {\n id: 6,\n makeTitle: `Add sharpen`,\n undoTitle: `Remove sharpen`,\n value: new window.fabric.Image.filters.Convolute({\n matrix: [0, -1, 0, -1, 5, -1, 0, -1, 0]\n })\n };\n case `emboss`:\n return {\n id: 7,\n makeTitle: `Undo emboss`,\n undoTitle: `Remove sharpen`,\n value: new window.fabric.Image.filters.Convolute({\n matrix: [1, 1, 1, 1, 0.7, -1, -1, -1, -1]\n })\n };\n case `noise`:\n return {\n id: 8,\n makeTitle: `Add noise`,\n undoTitle: `Undo noise`,\n value: new window.fabric.Image.filters.Noise({noise: 75})\n };\n case `pixelate`:\n return {\n id: 10,\n makeTitle: `Pixelate`,\n undoTitle: `Undo pixelate`,\n value: new window.fabric.Image.filters.Pixelate({blocksize: 10})\n };\n case `waterize`:\n return {\n id: 11,\n makeTitle: `Waterize`,\n undoTitle: `Undo waterize`,\n value: new window.fabric.Image.filters.Waterize()\n };\n case `round`:\n return {\n id: `Circle`,\n value(object) {\n const {width, height} = object;\n const widthOrHeight = width < height ? width : height;\n\n return new window.fabric.Circle({\n radius: widthOrHeight / 2,\n top: 0,\n left: 0\n });\n }\n };\n case `corner`:\n return {\n id: `Rect`,\n value(object) {\n const {width, height} = object;\n const radius = (width > height ? width : height) / 12;\n\n return new window.fabric.Rect({\n rx: radius,\n ry: radius,\n left: 0,\n top: 0,\n width,\n height\n });\n }\n };\n }\n return void 0;\n};\n","export default (color) => {\n return color && /(transparent)|(rgba\\(\\d+,\\s*\\d+,\\s*\\d+,\\s*0\\))/g.test(color);\n};\n","class ObjectResizer {\n VECTOR_TYPES = [\n `application/pdf`,\n `application/svg`,\n `image/svg+xml`,\n `application/postscript`,\n `application/octet-stream`\n ];\n SCALE_MARGIN = 0;\n setOptions(options) {\n const [top, left, width, height] = options.dimensions;\n this.dimensions = {top, left, width, height};\n this.dpi = options.dpi;\n }\n centerObject(object) {\n const dim = this.dimensions;\n const offset = object.originY === `top` ? -object.getScaledHeight() / 2 : 0;\n\n object.set({\n left: dim.width / 2 + dim.left,\n top: dim.height / 2 + dim.top + offset\n });\n }\n resizeToFill(object) {\n this.centerObject(object);\n if (object.width) {\n object.scaleToWidth(this.getCurrentSideWidth() - this.SCALE_MARGIN);\n }\n if (\n object.getScaledHeight() < this.getCurrentSideHeight() &&\n object.height\n ) {\n object.scaleToHeight(this.getCurrentSideHeight() - this.SCALE_MARGIN);\n }\n return this;\n }\n isPath(object) {\n return (\n object.isType(`path`) ||\n object.isType(`circle`) ||\n object.isType(`rect`) ||\n object.isType(`ellipse`) ||\n object.isType(`polygon`) ||\n object.isType(`line`) ||\n object.isType(`polyline`)\n );\n }\n isPathGroup(object) {\n return (\n object.getObjects &&\n object\n .getObjects()\n .every(\n (obj) =>\n obj.type === `path` ||\n obj.type === `circle` ||\n obj.type === `rect` ||\n obj.type === `ellipse` ||\n obj.type === `polygon` ||\n obj.type === `line` ||\n obj.type === `polyline`\n )\n );\n }\n isVector(object) {\n return (\n this.VECTOR_TYPES.indexOf(object.imageType) > -1 ||\n this.isPathGroup(object) ||\n this.isPath(object)\n );\n }\n resizeToFit(object, originalWidth, originalHeight) {\n // console.table([\n // ['originalWidth', originalWidth],\n // ['originalHeight', originalHeight],\n // ['dpi', this.dpi],\n // ['dimensions', JSON.stringify(this.dimensions)]\n // ]);\n this.centerObject(object);\n if (object.isType(`image`) && !this.isVector(object)) {\n this.resizeObjectPerDPI(object, originalWidth, originalHeight);\n // only resize group per DPI if it has any objects with originalWidth (i.e. images)\n this.resizeObjectPerDPI(object);\n } else if (this.isVector(object)) {\n if (object.width) {\n object.scaleToWidth(this.getCurrentSideWidth());\n }\n if (\n object.height &&\n object.getScaledHeight() > this.getCurrentSideHeight()\n ) {\n object.scaleToHeight(this.getCurrentSideHeight());\n }\n const printingAreaWidth = this.getCurrentSideWidth();\n const printingAreaHeight = this.getCurrentSideHeight();\n const printingAreaRatio = printingAreaWidth / printingAreaHeight;\n const designRatio = object.getScaledWidth() / object.getScaledHeight();\n\n if (printingAreaRatio < designRatio) {\n object.scaleToWidth(printingAreaWidth);\n } else {\n object.scaleToHeight(printingAreaHeight);\n }\n }\n // if (typeof __canvas !== `undefined`) {\n // __canvas.setActiveObject(object.setCoords());\n // }\n return this;\n }\n getHeightForCurrentSideDPI(object, requestedDPI, currentSideDPI) {\n const originalHeight = object.isType(`group`)\n ? object.getMinOriginalHeight()\n : object.originalHeight;\n\n return (originalHeight / requestedDPI) * currentSideDPI;\n }\n getWidthForCurrentSideDPI(object, requestedDPI, currentSideDPI) {\n const originalWidth = object.isType(`group`)\n ? object.getMinOriginalWidth()\n : object.originalWidth;\n\n return (originalWidth / requestedDPI) * currentSideDPI;\n }\n getCurrentSideWidth() {\n return this.dimensions.width;\n }\n getCurrentSideHeight() {\n return this.dimensions.height;\n }\n findBestUsableHeight(object) {\n return this._findBestUsable(`Height`, object);\n }\n findBestUsableWidth(object) {\n return this._findBestUsable(`Width`, object);\n }\n _findBestUsable(side, object) {\n const maxDPI = 200;\n const minDPI = 100;\n const DPIInterval = 50;\n const minAllowed = 20;\n const currentSideDPI = this.dpi;\n const methodName = `get` + side + `ForCurrentSideDPI`;\n\n for (let i = maxDPI; i >= minDPI; i -= DPIInterval) {\n const value = this[methodName](object, i, currentSideDPI);\n if (value > minAllowed) {\n return value;\n }\n }\n return this[methodName](object, minDPI, currentSideDPI);\n }\n findSideToScaleBy() {\n return this.getCurrentSideWidth() > this.getCurrentSideHeight()\n ? `Height`\n : `Width`;\n }\n resizeObjectPerDPI(object, originalWidth, originalHeight) {\n if (originalWidth && originalHeight) {\n object.set({\n originalWidth: parseInt(originalWidth, 10),\n originalHeight: parseInt(originalHeight, 10)\n });\n } else {\n originalWidth = object.originalWidth;\n originalHeight = object.originalHeight;\n }\n if (object.isType(`group`)) {\n originalWidth = object.getMinOriginalWidth();\n originalHeight = object.getMinOriginalHeight();\n }\n const sideToScaleBy = this.findSideToScaleBy(object);\n let bestUsableConstraint = this[`findBestUsable` + sideToScaleBy](object);\n let canvasConstraint = this[`getCurrentSide` + sideToScaleBy]();\n\n object[`scaleTo` + sideToScaleBy](\n Math.min(bestUsableConstraint, canvasConstraint)\n );\n\n if (object.getScaledHeight() > this.getCurrentSideHeight()) {\n bestUsableConstraint = this.findBestUsableHeight(object);\n canvasConstraint = this.getCurrentSideHeight();\n\n object.scaleToHeight(Math.min(bestUsableConstraint, canvasConstraint));\n }\n if (object.getScaledWidth() > this.getCurrentSideWidth()) {\n bestUsableConstraint = this.findBestUsableWidth(object);\n canvasConstraint = this.getCurrentSideWidth();\n\n object.scaleToWidth(Math.min(bestUsableConstraint, canvasConstraint));\n }\n if (object.canvas) {\n object.canvas.renderAll();\n }\n }\n isBelowMinDPI(object) {\n if (this.isVector(object)) {\n return false;\n }\n const minDPI = 100;\n const currentSideDPI = this.dpi;\n const maxAllowedHeight = this.getHeightForCurrentSideDPI(\n object,\n minDPI,\n currentSideDPI\n );\n const maxAllowedWidth = this.getWidthForCurrentSideDPI(\n object,\n minDPI,\n currentSideDPI\n );\n return (\n object.getScaledHeight() > maxAllowedHeight ||\n object.getScaledWidth() > maxAllowedWidth\n );\n }\n}\n\nexport default new ObjectResizer();\n","class AddCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.addObject(this.receiver);\n }\n undo() {\n this.controller.removeObject(this.receiver);\n }\n}\n\nexport default AddCommand;\n","class ClearSelectionCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.unSelectObjects();\n }\n undo() {\n this.controller.selectObjects(this.receiver);\n }\n}\n\nexport default ClearSelectionCommand;\n","import Provider from \"pubsub-js\";\nimport {HISTORY_CHANGED, HISTORY_ADD} from \"../../../constants/event-types\";\n\nclass CommandHistory {\n commands = [];\n index = 0;\n getIndex() {\n return this.index;\n }\n back() {\n if (this.index > 0) {\n let command = this.commands[--this.index];\n if (command.async) {\n command.onComplete = function () {\n Provider.publish(HISTORY_CHANGED);\n };\n command.undo();\n } else {\n command.undo();\n Provider.publish(HISTORY_CHANGED);\n }\n }\n return this;\n }\n forward() {\n if (this.index < this.commands.length) {\n let command = this.commands[this.index++];\n if (command.async) {\n command.onComplete = function () {\n Provider.publish(HISTORY_CHANGED);\n };\n command.execute();\n } else {\n command.execute();\n Provider.publish(HISTORY_CHANGED);\n }\n }\n return this;\n }\n add(command, silent) {\n // Remove commands items >= current index\n // Opera throws Error when trying to splice empty array,\n // so we guard against it by checking length;\n if (this.commands.length) {\n this.commands.splice(this.index, this.commands.length - this.index);\n }\n this.commands.push(command);\n this.index++;\n if (!silent) {\n Provider.publish(HISTORY_ADD);\n }\n return this;\n }\n clear() {\n this.commands.length = 0;\n this.index = 0;\n Provider.publish(HISTORY_CHANGED);\n return this;\n }\n}\n\nexport default CommandHistory;\n","class CreateSelectionCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.selectObjects(this.receiver);\n }\n undo() {\n this.controller.unSelectObjects(this.receiver);\n }\n}\n\nexport default CreateSelectionCommand;\n","class CreateTilingCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.createTilingFromObject(\n this.receiver,\n this.receiver.tiling.tile.type\n );\n }\n undo() {\n this.controller.destroyTiling(this.receiver.tiling);\n }\n}\n\nexport default CreateTilingCommand;\n","class DestroyTilingCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.destroyTiling(this.receiver);\n }\n undo() {\n this.controller.createTilingFromObject(this.receiver.getOriginalObject());\n }\n}\n\nexport default DestroyTilingCommand;\n","class RemoveCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n }\n execute() {\n this.controller.removeObject(this.receiver);\n }\n undo() {\n this.controller.addObject(this.receiver);\n }\n}\n\nexport default RemoveCommand;\n","class SetBgCommand {\n constructor(receiver, controller) {\n this.receiver = receiver;\n this.controller = controller;\n\n this.currentColor = receiver.backgroundColor;\n this.prevColor = receiver._state.backgroundColor;\n }\n execute() {\n this.controller.setBackgroundColor(this.currentColor, true /* silent */);\n }\n undo() {\n this.controller.setBackgroundColor(this.prevColor, true /* silent */);\n }\n}\n\nexport default SetBgCommand;\n","class TransformCommand {\n constructor(receiver, options = {}) {\n this._initCallbacks(options);\n this.receiver = receiver;\n this._initStateProperties(options);\n\n this.state = {};\n this.prevState = {};\n\n if (this._isGroup(this.receiver)) {\n this.state.group = [];\n this.prevState.group = [];\n this.receiver.getObjects().forEach((_, i) => {\n this.state.group[i] = {};\n this.prevState.group[i] = {};\n });\n }\n\n this._saveState();\n this._savePrevState();\n }\n execute() {\n this._restoreState();\n this.receiver.setCoords();\n }\n undo() {\n this._restorePrevState();\n this.receiver.setCoords();\n }\n // private\n _initStateProperties(options) {\n this.stateProperties = this.receiver.stateProperties;\n if (options.stateProperties && options.stateProperties.length) {\n this.stateProperties.push(...options.stateProperties);\n }\n }\n _restoreState() {\n this._restore(this.state);\n }\n _restorePrevState() {\n this._restore(this.prevState);\n }\n _restore(state) {\n this.stateProperties.forEach((prop) => {\n this.receiver.set(prop, state[prop]);\n if (this._isGroup(this.receiver)) {\n this.receiver.getObjects().forEach((object, i) => {\n object.set(prop, state.group[i][prop]);\n });\n }\n });\n if (this._isGroup(this.receiver)) {\n this.receiver.getObjects().forEach((object) => {\n object.set(`group`, this.receiver);\n });\n }\n }\n _initCallbacks(options) {\n if (typeof options.onBeforeUndo === `function`) {\n this.onBeforeUndo = options.onBeforeUndo;\n }\n if (typeof options.onAfterUndo === `function`) {\n this.onAfterUndo = options.onAfterUndo;\n }\n }\n _saveState() {\n this.stateProperties.forEach((prop) => {\n this.state[prop] = this.receiver.get(prop);\n if (this._isGroup(this.receiver)) {\n this.receiver.getObjects().forEach((object, i) => {\n if (object && object.get(prop)) {\n this.state.group[i][prop] = object.get(prop);\n }\n });\n }\n });\n }\n _savePrevState() {\n if (this.receiver._stateProperties) {\n this.stateProperties.forEach((prop) => {\n this.prevState[prop] = this.receiver._stateProperties[prop];\n if (this._isGroup(this.receiver)) {\n this.receiver.getObjects().forEach((object, i) => {\n if (object._stateProperties && object._stateProperties[prop]) {\n this.prevState.group[i][prop] = object._stateProperties[prop];\n }\n });\n }\n });\n }\n }\n _isGroup(object) {\n return object.isType(`activeSelection`) || object.isType(`group`);\n }\n}\n\nexport default TransformCommand;\n","const months = [\n `january`,\n `february`,\n `march`,\n `april`,\n `may`,\n `june`,\n `july`,\n `august`,\n `september`,\n `october`,\n `november`,\n `december`\n];\n\nconst objectToLoad = months.reduce((acc, month) => {\n return {\n ...acc,\n [month]: {\n path: `/shapes/svg/${month}.svg`,\n left: 305,\n top: 450,\n scaleX: 0.48,\n scaleY: 0.48\n }\n };\n}, {});\n\nexport default {\n objectToLoad,\n loadedObjectSettings: {\n title: `Цвета календарной сетки`,\n colorPickers: [\n {\n label: `Будни`,\n pathNumber: 0\n },\n {\n label: `Выходные`,\n pathNumber: 1\n },\n {\n label: `Фон месяца`,\n pathNumber: 2\n },\n {\n label: `Название месяца`,\n pathNumber: 3\n }\n ]\n }\n};\n","export default {\n objectToLoad: {\n front: {\n path: `/shapes/svg/single_calendar_2024.svg`,\n left: 300,\n top: 500,\n scaleX: 0.33,\n scaleY: 0.33\n }\n },\n loadedObjectSettings: {\n title: `Цвета календарной сетки`,\n colorPickers: [\n {\n label: `Будни`,\n pathNumber: 0\n },\n {\n label: `Выходные`,\n pathNumber: 1\n }\n ]\n }\n};\n","export default {\n variants: [\n {\n name: `mug_color`,\n keyInProductMeta: `mug_colors`,\n filterOfItemsBy: /(white)|(-handle)/,\n title: `Цвет изделия`,\n subTitle: `Цветная ручка и ободок`,\n template: `Line`,\n description: false\n },\n {\n name: `mug_color`,\n keyInProductMeta: `mug_colors`,\n filterOfItemsBy: /(white)|(-inside)/,\n title: `Цветная внутри`,\n template: `Line`,\n description: false\n }\n ]\n};\n","/* eslint-disable camelcase */\nimport {\n colorOfMaterial,\n material,\n canvas,\n cards,\n guideLines,\n chocolate,\n poster,\n fullPrint,\n mousePad\n} from \"./templates\";\nimport full_print_mug from \"./full-print-mug\";\nimport calendar_single_a2 from \"./calendar-single-a2\";\nimport calendar_a3 from \"./calendar-a3\";\nimport round_plastic_clock from \"./round-plastic-clock\";\nimport round_wood_clock from \"./round-plastic-clock\";\nimport square_wood_clock from \"./square-wood-clock\";\nimport umbrella_bilateral from \"./umbrella-bilateral\";\nimport playing_card from \"./playing-card\";\n\nexport default {\n apron: guideLines,\n backpack: fullPrint,\n badge: fullPrint,\n bag: colorOfMaterial,\n bandana: fullPrint,\n basketball_uniform: fullPrint,\n beanie: colorOfMaterial,\n beer_mug: guideLines,\n bib: colorOfMaterial,\n bodysuit: colorOfMaterial,\n bottle_sticker: fullPrint,\n buff: fullPrint,\n business_card: cards,\n calendar_a2: {...calendar_a3, ...fullPrint},\n calendar_a3: {...calendar_a3, ...fullPrint},\n calendar_single_a2: {...calendar_single_a2, ...fullPrint},\n can: guideLines,\n candle: colorOfMaterial,\n canvas20x30: canvas,\n canvas30x30: canvas,\n canvas30x40: canvas,\n canvas30x60: canvas,\n canvas40x55: canvas,\n canvas50x50: canvas,\n canvas50x75: canvas,\n canvas60x90: canvas,\n cap_trucker: colorOfMaterial,\n cardholder: colorOfMaterial,\n chocolate,\n chocolate35x35: chocolate,\n chocolate_set12: fullPrint,\n chocolate_set16: fullPrint,\n chocolate_set4: fullPrint,\n chocolate_set_souffle: fullPrint,\n chocolate_set_shell: fullPrint,\n chistmas_ball: fullPrint,\n chistmas_tree_toy: fullPrint,\n city_backpack: guideLines,\n classic_polo_shirt: colorOfMaterial,\n classic_tee: colorOfMaterial,\n classic_woman_polo: colorOfMaterial,\n classic_woman_tee: colorOfMaterial,\n colored_handle_mug: colorOfMaterial,\n colored_hood_and_sleeves_hoodie: colorOfMaterial,\n colored_inside_mug: colorOfMaterial,\n colored_pocket_hoodie: colorOfMaterial,\n cotton_backpack: colorOfMaterial,\n cube: fullPrint,\n cutting_board: guideLines,\n dog_tee: guideLines,\n euro_business_card: cards,\n flag22x15: fullPrint,\n flag135x90: fullPrint,\n flag150x100: fullPrint,\n flash_driver: colorOfMaterial,\n football_uniform: fullPrint,\n free_form_sticker: material,\n full_print_apron: fullPrint,\n full_print_bag: fullPrint,\n full_print_backpack: fullPrint,\n full_print_beanie: fullPrint,\n full_print_boy_tee: fullPrint,\n full_print_gloves: fullPrint,\n full_print_girl_tee: fullPrint,\n full_print_hoodie: fullPrint,\n full_print_kids_sweatshirt: fullPrint,\n full_print_mug,\n full_print_man_polo: fullPrint,\n full_print_neck_pillow: fullPrint,\n full_print_pencil_case: fullPrint,\n full_print_sport_tee: fullPrint,\n full_print_sweatshirt: fullPrint,\n full_print_tanktop: fullPrint,\n full_print_tee: fullPrint,\n full_print_waist_bag: fullPrint,\n full_print_woman_hoodie: fullPrint,\n full_print_woman_polo: fullPrint,\n full_print_woman_sweatshirt: fullPrint,\n full_print_woman_tanktop: fullPrint,\n full_print_woman_tee: fullPrint,\n galaxy_s6_case: material,\n galaxy_s6_edge_case: material,\n galaxy_s7_case: material,\n galaxy_s7_edge_case: material,\n galaxy_s8_case: material,\n galaxy_s8_plus_case: material,\n gift_bag8x12: fullPrint,\n gift_bag15x22: fullPrint,\n gift_bag20x30: fullPrint,\n hat: colorOfMaterial,\n heart_magnet75x97: fullPrint,\n heart_mouse_pad: fullPrint,\n heart_sticker50x65: material,\n heart_sticker75x97: material,\n hockey_uniform: fullPrint,\n hoodie: colorOfMaterial,\n iphone_x_case: material,\n iphone14_pro_max_case: material,\n iphone14_pro_case: material,\n iphone14_case: material,\n iphone13_case: material,\n iphone13_pro_case: material,\n iphone13_pro_max_case: material,\n iphone12_case: material,\n iphone12_pro_case: material,\n iphone12_mini_case: material,\n iphone11_case: material,\n iphone11_pro_case: material,\n iphone11_pro_max_case: material,\n iphone5_case: material,\n iphone5_volumetric_case: material,\n iphone6_case: material,\n iphone6_volumetric_case: material,\n iphone6_plus_case: material,\n iphone7_case: material,\n iphone7_plus_case: material,\n iphone8_case: material,\n iphone8_plus_case: material,\n kids_football_uniform: fullPrint,\n kids_hoodie: colorOfMaterial,\n kids_panama: fullPrint,\n kids_sweatshirt: colorOfMaterial,\n kids_tee: colorOfMaterial,\n kids_zip_hoodie: colorOfMaterial,\n kitchen_scale: guideLines,\n knitted_hat: colorOfMaterial,\n large_classic_tee: colorOfMaterial,\n large_envelope: guideLines,\n large_full_print_tee: fullPrint,\n large_pencil_case: fullPrint,\n leggings: fullPrint,\n leather_passport_cover: colorOfMaterial,\n lighter: fullPrint,\n long_socks: fullPrint,\n longsleeve: colorOfMaterial,\n man_bomber: colorOfMaterial,\n man_pants: colorOfMaterial,\n man_pajama_pants: fullPrint,\n man_stretch_tee: colorOfMaterial,\n man_underpants: fullPrint,\n mask: fullPrint,\n mask_scarf: fullPrint,\n medium_envelope: guideLines,\n metal_bottle: guideLines,\n moneybox: guideLines,\n mouse_pad: mousePad,\n mug: guideLines,\n nametag: guideLines,\n notepad: fullPrint,\n notepad_a4: fullPrint,\n notebook_glued: fullPrint,\n notebook_spring: fullPrint,\n notebook_stapled: fullPrint,\n oval_sticker150x90: material,\n oval_sticker98x70: material,\n oversize_hoodie: colorOfMaterial,\n oversize_tee: colorOfMaterial,\n oversize_pocket_tee: colorOfMaterial,\n package155x220x50: fullPrint,\n package220x155x50: fullPrint,\n package250x350x80: fullPrint,\n paired_tee: colorOfMaterial,\n paired_wineglass: guideLines,\n panama: fullPrint,\n passport_cover: material,\n pen: colorOfMaterial,\n pencil: colorOfMaterial,\n phone_cardholder: colorOfMaterial,\n photo_tile: canvas,\n pillow: colorOfMaterial,\n pillow40x40: fullPrint,\n pillow60x40: fullPrint,\n pillow150x50: fullPrint,\n plaid_fleece130x170: fullPrint,\n planner: colorOfMaterial,\n plastic_bottle: guideLines,\n plastic_pen: guideLines,\n plate: guideLines,\n playing_card,\n polo_shirt: colorOfMaterial,\n postcard: fullPrint,\n postcard15x10: fullPrint,\n postcard21x10: fullPrint,\n poster_a2: poster,\n poster,\n powerbank: colorOfMaterial,\n rectangle_keychain35x25: fullPrint,\n rectangle_keychain50x35: fullPrint,\n rectangle_magnet150x45: fullPrint,\n rectangle_magnet90x50: fullPrint,\n rectangle_sticker150x45: material,\n rectangle_sticker90x50: material,\n puzzle_a3: fullPrint,\n puzzle_a4: fullPrint,\n puzzle_photo_frame: colorOfMaterial,\n puzzle1000: fullPrint,\n puzzle408: fullPrint,\n rashguard: fullPrint,\n rolled_rectangle_sticker105x74: fullPrint,\n rolled_rectangle_sticker74x52: fullPrint,\n rolled_round_sticker50: fullPrint,\n rolled_square_sticker50x50: fullPrint,\n round_magnet50x50: fullPrint,\n round_mouse_pad: fullPrint,\n round_plastic_clock: {...round_plastic_clock, ...fullPrint},\n round_sticker50x50: material,\n round_sticker95x95: material,\n round_wood_clock: {...round_wood_clock, ...fullPrint},\n shopping_bag: guideLines,\n short_socks: fullPrint,\n shot: guideLines,\n shower_curtain: fullPrint,\n sleep_mask: fullPrint,\n sleeveless_dress: fullPrint,\n small_envelope: guideLines,\n small_pencil_case: fullPrint,\n snapback: guideLines,\n speaker: guideLines,\n sport_bottle: colorOfMaterial,\n square_keychain: fullPrint,\n square_magnet50x50: fullPrint,\n square_magnet95x95: fullPrint,\n square_pillow: colorOfMaterial,\n square_sticker50x50: material,\n square_sticker95x95: material,\n square_tablecloth: fullPrint,\n square_wood_clock: {...square_wood_clock, ...fullPrint},\n standard_pen: guideLines,\n star_magnet75x75: fullPrint,\n star_sticker75x75: material,\n star_sticker145x145: material,\n stone_photo_frame: fullPrint,\n stretch_tee: colorOfMaterial,\n suction_thermo_mug: colorOfMaterial,\n sweatshirt: colorOfMaterial,\n tanktop: colorOfMaterial,\n tapestry180x145: fullPrint,\n tee: colorOfMaterial,\n thermos: colorOfMaterial,\n thermo_mug: fullPrint,\n toothbrush: guideLines,\n towel30x30: guideLines,\n towel35x75: guideLines,\n towel50x90: guideLines,\n umbrella_unilateral: fullPrint,\n umbrella_bilateral: {...umbrella_bilateral, ...fullPrint},\n universal_hoodie: guideLines,\n universal_product: guideLines,\n windbreaker: colorOfMaterial,\n wineglass: guideLines,\n woman_bomber: colorOfMaterial,\n woman_hoodie: colorOfMaterial,\n woman_pajama_pants: fullPrint,\n woman_pants: colorOfMaterial,\n woman_sneakers: fullPrint,\n woman_tanktop: colorOfMaterial,\n woman_tee: colorOfMaterial,\n woman_underpants: fullPrint,\n women_cotton_sweatshirt: colorOfMaterial,\n};\n/* eslint-enable camelcase */\n","export default {\n objectToLoad: {\n // eslint-disable-next-line camelcase\n black_joker: {\n path: `/shapes/svg/joker-black.svg`,\n left: 300,\n top: 300,\n scaleX: 1.5,\n scaleY: 1.5\n },\n // eslint-disable-next-line camelcase\n red_joker: {\n path: `/shapes/svg/joker-red.svg`,\n left: 300,\n top: 300,\n scaleX: 1.5,\n scaleY: 1.5\n }\n }\n};\n","export default {\n objectToLoad: {\n front: {\n path: `/shapes/svg/round_plastic_clock.svg`,\n left: 300,\n top: 300,\n scaleX: 0.55,\n scaleY: 0.55\n }\n },\n loadedObjectSettings: {\n title: `Цвет циферблата`,\n colorPickers: [\n {\n label: ``,\n pathNumber: 0\n }\n ]\n }\n};\n","export default {\n objectToLoad: {\n front: {\n path: `/shapes/svg/square_wood_clock.svg`,\n left: 300,\n top: 300,\n scaleX: 0.55,\n scaleY: 0.55\n }\n },\n loadedObjectSettings: {\n title: `Цвет циферблата`,\n colorPickers: [\n {\n label: ``,\n pathNumber: 0\n }\n ]\n }\n};\n","import {\n color,\n materialType,\n foilType,\n frameType,\n paperType,\n lamination,\n cornerRadius,\n background\n} from \"./variants\";\n\nexport const guideLines = {\n guideLines: true\n};\n\nexport const chocolate = {\n variants: [foilType],\n guideLines: true\n};\n\nexport const colorOfMaterial = {\n variants: [color],\n guideLines: true\n};\n\nexport const material = {\n variants: [materialType]\n};\n\nexport const canvas = {\n variants: [frameType]\n};\n\nexport const cards = {\n variants: [paperType, lamination, cornerRadius],\n guideLines: 22.1\n};\n\nexport const poster = {\n variants: [background],\n fullPrint: true,\n guideLines: 22.5\n};\n\nexport const fullPrint = {\n variants: [background],\n fullPrint: true\n};\n\nexport const mousePad = {\n variants: [background],\n fullPrint: true,\n guideLines: 22.1\n};\n","export default {\n permissions: {\n outside: {\n text: false,\n image: false,\n background: true\n }\n }\n};\n","export const example = {\n name: `color`, // for get image\n keyInProductMeta: `colors`, // for get value of variant from meta\n title: `Цвет изделия`,\n template: `Line`, // Column, Select, Checkbox, ColorPicker\n description: false,\n handleClick() {} // if you need custom handle\n};\n\nexport const color = {\n name: `color`,\n keyInProductMeta: `colors`,\n title: `Цвет изделия`,\n template: `Line`,\n description: false\n};\n\nexport const background = {\n name: `background`,\n title: `Цвет изделия`,\n template: `LineWithColorPicker`,\n description: false,\n colors: [\n `transparent`,\n `#000000`,\n `#ffffff`,\n `#9e9e9e`,\n `#ff0000`,\n `#ff6600`,\n `#ffff00`,\n `#00ff00`,\n `#00ffff`,\n `#0000ff`,\n `#8033ff`\n ]\n};\n\nexport const foilType = {\n name: `color`,\n keyInProductMeta: `colors`,\n title: `Цвет фольги`,\n template: `Line`,\n description: false\n};\n\nexport const materialType = {\n name: `material`,\n keyInProductMeta: `materials`,\n title: `Материал изделия`,\n template: `Line`,\n description: true\n};\n\nexport const frameType = {\n name: `frame_type`,\n keyInProductMeta: `frame_types`,\n title: `Выбор рамки`,\n template: `Line`,\n description: true\n};\n\nexport const lamination = {\n name: `lamination`,\n keyInProductMeta: `laminations`,\n title: `Ламинирование (цены за 100 шт.)`,\n template: `Select`,\n withPrice: true // need create price map for this variant\n};\n\nexport const paperType = {\n name: `paper_type`,\n keyInProductMeta: `paper_types`,\n title: `Тип бумаги`,\n subTitle: `Цены за 100 шт. 1 сторона/2 стороны`,\n template: `Line`,\n description: true,\n withPrice: true\n};\n\nexport const cornerRadius = {\n name: `corner_radius`,\n keyInProductMeta: `corner_radiuses`,\n title: `Закругленные края (4мм)`,\n template: `Checkbox`,\n withPrice: true\n};\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nexport default class Error extends Component {\n static propTypes = {\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n }\n static defaultProps = {\n message: `Попробуйте перезагрузить страницу`,\n }\n render() {\n const { message } = this.props\n return (\n
\n
Произошла ошибка
\n
\n {Array.isArray(message)\n ? message.map((text, i) =>
{text}
)\n : message}\n
\n
\n )\n }\n}\n","import React from 'react'\nimport cn from 'classnames'\n\nimport styles from './loader.module.scss'\n\nexport default function Loader(props) {\n return (\n \n
\n
\n )\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {ConnectedRouter} from \"connected-react-router\";\nimport {StaticRouter} from \"react-router\";\nimport history from \"./history\";\n\nclass Router extends React.Component {\n static propTypes = {\n children: PropTypes.element,\n path: PropTypes.string\n };\n\n renderRouter = () => {\n if (typeof window === `object`) {\n return (\n \n {this.props.children}\n \n );\n } else {\n return (\n \n {this.props.children}\n \n );\n }\n };\n\n render() {\n return this.renderRouter();\n }\n}\n\nexport default Router;\n","export const CHANGE_LOCATION = '@@router/LOCATION_CHANGE'\nexport const LOAD_DATA = 'LOAD_DATA'\n\nexport const START = '_START'\nexport const SUCCESS = '_SUCCESS'\nexport const FAIL = '_FAIL'\n\nexport const STORE = 'STORE_'\nexport const ITEM = 'ITEM_'\n\nexport const SMALL = 'small'\nexport const TILE = 'tile'\nexport const TEASER = 'teaser'\n\nexport const STORE_LOAD_DATA_SUCCESS = STORE + LOAD_DATA + SUCCESS\n","export default (ms) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, ms);\n });\n};\n","import * as THREE from \"three\";\nimport Mediator from \"../../components/EditorApp/services/Mediator\";\nimport {CANVAS} from \"../../components/EditorApp/constants\";\n\n// The SceneSubject is responsible for:\n\n// Creating the subject with material and textures\n\nexport default class SceneSubject {\n constructor(scene, settings) {\n this.scene = scene;\n this.settings = settings;\n }\n\n async applySettings(settings) {\n this.settings = settings;\n try {\n const withDesign = true;\n await this._addModelToScene(this.settings, withDesign);\n if (this.settings.additional) {\n const withoutDesign = false;\n await this._addModelToScene(this.settings.additional, withoutDesign);\n }\n } catch (err) {\n throw err;\n }\n }\n // private methods\n async _addModelToScene({object, texture, ...settings}, withDesign) {\n const modelTexture = await this._getTexture(texture, withDesign);\n const model = await this._getModel(object);\n if (modelTexture) {\n const material = new THREE.MeshPhongMaterial({\n map: modelTexture,\n shininess: 0,\n ambient: 0xffffff,\n color: 0xffffff,\n specular: 0xffffff\n });\n this._applyMaterialToModel(model, material);\n }\n this._applyModelSettings(model, settings);\n this.scene.add(model);\n }\n _getModel(object) {\n const objectLoader = new THREE.ObjectLoader();\n return new Promise((resolve, reject) => {\n const onLoad = (obj) => {\n resolve(obj);\n };\n // const onProgress = (xhr) => {\n // console.log(`model ${(xhr.loaded / xhr.total) * 100}% loaded`);\n // };\n const onError = (err) => {\n reject(err);\n };\n objectLoader.load(object, onLoad, null, onError);\n });\n }\n async _getTexture(texture, withDesign) {\n const originalTexture = await this._getOriginalTexture(texture);\n if (withDesign) {\n const imagesOfDesign = this.settings.designs\n ? await this._getImagesOfDesignFromData()\n : await this._getImagesOfDesignFromUrl();\n const combineImage = await this._addDesignsToOriginalTexture(\n imagesOfDesign,\n originalTexture\n );\n return await this._getTextureFromUrl(combineImage.src);\n }\n if (originalTexture) {\n return await this._getTextureFromUrl(originalTexture.src);\n }\n return null;\n }\n async _addDesignsToOriginalTexture(designImages, textureImage) {\n const tmpCanvas = new window.fabric.Canvas();\n const {width, height} = textureImage;\n tmpCanvas.setDimensions({\n width,\n height\n });\n\n const fabricImages = [\n new window.fabric.Image(textureImage, {\n originX: `left`,\n originY: `top`,\n top: 0,\n left: 0\n }),\n ...designImages.map(({image}, i) => {\n const [left, top] =\n this.settings.textureOffset[i] &&\n this.settings.textureOffset[i] !== 0 &&\n Array.isArray(this.settings.textureOffset[i])\n ? this.settings.textureOffset[i]\n : this.settings.textureOffset;\n\n return new window.fabric.Image(image, {\n originX: `left`,\n originY: `top`,\n top,\n left,\n scaleX: this.settings.designs ? 1 : this.settings.textureScale,\n scaleY: this.settings.designs ? 1 : this.settings.textureScale\n });\n })\n ];\n\n fabricImages.forEach((image) => {\n tmpCanvas.add(image);\n });\n\n return this._createImageFromUrl(\n tmpCanvas.toDataURL({\n format: `png`,\n multiplier: 1,\n width,\n height\n })\n );\n }\n async _getImagesOfDesignFromData() {\n const designs = Object.values(this.settings.designs).map((item) => ({\n side: item.side,\n data: item.design,\n dimensions: item.dimensions\n }));\n\n const promises = designs.map(\n ({side, data, dimensions}) =>\n new Promise(async (resolve) => {\n resolve({\n side,\n image: await this._transformDesignDataToImage(\n {data, dimensions},\n this.settings.textureScale\n )\n });\n })\n );\n\n return await Promise.all(promises);\n }\n async _transformDesignDataToImage({data, dimensions}, scale) {\n const [top, left, width, height] = dimensions;\n const tmpCanvas = new window.fabric.Canvas();\n tmpCanvas.setDimensions({\n width: CANVAS.WIDTH * scale,\n height: CANVAS.HEIGHT * scale\n });\n await Mediator.applyDesignToCanvas(data, tmpCanvas);\n\n return await this._createImageFromUrl(\n tmpCanvas.toDataURL({\n format: `png`,\n multiplier: scale,\n top,\n left,\n width,\n height\n })\n );\n }\n async _getImagesOfDesignFromUrl() {\n const {arts} = this.settings;\n const promises = Object.keys(arts).map(\n (side) =>\n new Promise(async (resolve) => {\n resolve({\n side,\n image: await this._createImageFromUrl(arts[side])\n });\n })\n );\n\n return await Promise.all(promises);\n }\n async _getOriginalTexture(texture) {\n if (!texture) {\n return null;\n }\n const {\n condition: {variants}\n } = this.settings;\n if (typeof texture === `string`) {\n return await this._createImageFromUrl(texture);\n }\n const variant =\n variants[`color`] || variants[`frame_type`] || variants[`paper_type`];\n if (texture[variant]) {\n return await this._createImageFromUrl(texture[variant]);\n }\n return null;\n }\n _createImageFromUrl(url) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.crossOrigin = `anonymous`;\n image.src = url;\n\n image.onload = () => {\n resolve(image);\n image.onload = null;\n };\n image.onerror = reject;\n });\n }\n _getTextureFromUrl(url) {\n return new Promise((resolve, reject) => {\n const onLoad = (obj) => {\n resolve(obj);\n };\n // const onProgress = (xhr) => {\n // console.log(`texture ${(xhr.loaded / xhr.total) * 100}% loaded`);\n // };\n const onError = (err) => {\n reject(err);\n };\n new THREE.TextureLoader().load(url, onLoad, null, onError);\n });\n }\n _applyModelSettings(model, settings) {\n if (settings) {\n const {rotation = [0, 0, 0], position = [0, 0, 0]} = settings;\n model.rotation.set(...rotation);\n model.position.set(...position);\n }\n }\n _applyMaterialToModel(model, material) {\n model.children[0].material = material;\n }\n}\n","import * as THREE from \"three\";\n\nexport default (scene) => {\n const directionalLight = new THREE.DirectionalLight(0x555555);\n const ambient = new THREE.AmbientLight(0xaaaaaa);\n\n directionalLight.position.set(1, 1, 1);\n scene.add(directionalLight);\n scene.add(ambient);\n};\n","import * as THREE from \"three\";\nimport {OrbitControls} from \"three/examples/jsm/controls/OrbitControls\";\nimport SceneSubject from \"./SceneSubject\";\nimport GeneralLights from \"./GeneralLights\";\n\n// The SceneManager is responsible for:\n\n// Creating the scene\n// Creating the renderer\n// Creating the camera\n// Creating the controls\n// Creating the scene subjects\n// Create handler events\n// Starting the rotate loop\n\nexport default class SceneManager {\n constructor(canvas) {\n const {width, height} = canvas;\n this.canvas = canvas;\n this.screenDimensions = {\n width,\n height\n };\n this.mousePosition = {\n x: 0,\n y: 0\n };\n this.scene = this._buildScene();\n this.renderer = this._buildRenderer(canvas, this.screenDimensions);\n this.camera = this._buildCamera(this.screenDimensions);\n this.controls = this._buildControls(this.camera, canvas);\n this.lights = this._addSceneLights(this.scene);\n this.subject = this._createSceneSubject(this.scene);\n }\n\n async applySettings(settings) {\n await this.subject.applySettings(settings);\n this._updateCameraPosition(settings);\n }\n\n update() {\n this.controls.update();\n this.renderer.render(this.scene, this.camera);\n }\n\n onWindowResize() {\n const {width, height} = this.canvas;\n\n this.screenDimensions.width = width;\n this.screenDimensions.height = height;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n this.renderer.setSize(width, height);\n }\n\n onMouseMove(x, y) {\n this.mousePosition.x = x;\n this.mousePosition.y = y;\n }\n\n // private methods\n _buildScene() {\n const scene = new THREE.Scene();\n scene.background = new THREE.Color(`#FFF`);\n\n return scene;\n }\n _buildRenderer(canvas, {width, height}) {\n const renderer = new THREE.WebGLRenderer({\n canvas,\n antialias: true,\n alpha: true\n });\n const DPR = window && window.devicePixelRatio ? window.devicePixelRatio : 1;\n renderer.setPixelRatio(DPR);\n renderer.setSize(width, height);\n\n renderer.gammaInput = true;\n renderer.gammaOutput = true;\n\n return renderer;\n }\n _buildControls(cam, el) {\n return new OrbitControls(cam, el);\n }\n _buildCamera({width, height}) {\n const aspectRatio = width / height;\n const fieldOfView = 60;\n const nearPlane = 1;\n const farPlane = 10000;\n const camera = new THREE.PerspectiveCamera(\n fieldOfView,\n aspectRatio,\n nearPlane,\n farPlane\n );\n\n camera.position.z = 300;\n\n return camera;\n }\n _createSceneSubject(scene, settings) {\n return new SceneSubject(scene, settings);\n }\n _addSceneLights(scene) {\n return new GeneralLights(scene);\n }\n _updateCameraPosition(settings) {\n if (settings && settings.camera) {\n this.camera.position.set(...settings.camera);\n } else {\n this.camera.position.set(-70, 100, 100);\n }\n this.camera.rotation.set(-1.53, -0.87, -1.52);\n }\n}\n","import SceneManager from \"./SceneManager\";\n\n// The singlton ThreeJSMediator is responsible for:\n\n// Creating the canvas\n// Binding events\n// Creating Three.js objects\n// Starting the render loop\n// Managing all entities\n\nclass ThreeJSMediator {\n enable(containerElement) {\n this.canvas = this.createCanvas(document, containerElement);\n this.sceneManager = new SceneManager(this.canvas);\n this.bindEventListeners();\n this.render();\n }\n disable() {\n cancelAnimationFrame(this.rafId);\n this.unBindEventListeners();\n }\n async applySettings(settings) {\n await this.sceneManager.applySettings(settings);\n }\n createCanvas(document, containerElement) {\n const canvas = document.createElement(`canvas`);\n containerElement.appendChild(canvas);\n return canvas;\n }\n unBindEventListeners() {\n window.removeEventListener(`onresize`, this.resizeCanvas.bind(this));\n }\n bindEventListeners() {\n window.onresize = this.resizeCanvas.bind(this);\n this.resizeCanvas();\n }\n resizeCanvas() {\n this.canvas.style.width = `100%`;\n this.canvas.style.height = `100%`;\n this.canvas.width = this.canvas.offsetWidth;\n this.canvas.height = this.canvas.offsetHeight;\n this.sceneManager.onWindowResize();\n }\n render() {\n this.rafId = requestAnimationFrame(this.render.bind(this));\n this.sceneManager.update();\n }\n}\n\nexport default new ThreeJSMediator();\n","export default typeof window === `object` ? window.__threeDSettings : null;\n","// extracted by mini-css-extract-plugin\nexport default {\"ldsRolling\":\"applications-components-common-loader-module__ldsRolling\",\"lds-rolling\":\"applications-components-common-loader-module__lds-rolling\",\"ldsRollingSmall\":\"applications-components-common-loader-module__ldsRollingSmall\"};\n if(module.hot) {\n // 1715063933607\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n ","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createBrowserHistory_1 = __importDefault(require(\"history/createBrowserHistory\"));\nvar history = {};\nif (typeof window === \"object\") {\n history = (0, createBrowserHistory_1.default)();\n}\nexports.default = history;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"../constants\");\nvar store_1 = __importStar(require(\"../components/HeaderApp/store\"));\nvar cache = {};\nvar apiMiddleware = function (store) { return function (next) { return function (action) {\n next(action);\n var callAPI = action.callAPI, payload = action.payload, type = action.type, rest = __rest(action, [\"callAPI\", \"payload\", \"type\"]);\n if (type !== constants_1.CHANGE_LOCATION)\n return;\n var url = payload.location.pathname + payload.location.search + payload.location.hash;\n var scope;\n if (/edit_v2|new_v2/.test(url))\n return;\n store_1.default.dispatch((0, store_1.showBannerAction)(true));\n if (/store/.test(url))\n scope = constants_1.STORE;\n if (/\\/\\w+\\/\\d+/.test(url)) {\n store_1.default.dispatch((0, store_1.showBannerAction)(false));\n scope = constants_1.ITEM;\n }\n else\n scope = constants_1.STORE;\n store.dispatch(__assign({ type: scope + constants_1.LOAD_DATA + constants_1.START, payload: payload }, rest));\n if (cache[url]) {\n store.dispatch(__assign(__assign({}, rest), { payload: payload, response: __assign({}, (cache[url].state || cache[url])), type: scope + constants_1.LOAD_DATA + constants_1.SUCCESS }));\n }\n else {\n fetch(url, {\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n credentials: 'same-origin',\n })\n .then(function (res) {\n if (res.status >= 400) {\n throw new Error('Error');\n }\n return res.json();\n })\n .then(function (response) {\n cache[url] = __assign({}, response); // add to local cache\n store.dispatch(__assign(__assign({}, rest), { payload: payload, response: response.state || response, type: scope + constants_1.LOAD_DATA + constants_1.SUCCESS }));\n })\n .catch(function (error) {\n return store.dispatch(__assign(__assign({}, rest), { payload: payload, error: error, type: scope + constants_1.LOAD_DATA + constants_1.FAIL }));\n });\n }\n return void 0;\n}; }; };\nexports.default = apiMiddleware;\n"],"names":["sstk","imagesApi","ImagesApi","contributorsApi","ContributorsApi","API_PREFIX","API_BACKGROUNDS","API_PRODUCT_INFO","API_REALISM","API_IMAGES","API_IMAGE_FILTERS","apiGoogleSearchTemplate","imgSize","start","value","type","color","join","shutterStockSearch","query","searchImages","shutterStockRetrieveContributor","id","getContributor","BEFORE","APPLY_BACKGROUND","OBJECT_MODIFIED","CANVAS_MODIFIED","OBJECT_MOVING","OBJECT_SCALING","OBJECT_ROTATING","OBJECT_ADDED","OBJECT_REMOVED","BACKGROUND_COLOR_CHANGED","SELECTION_CREATED","SELECTION_CLEARED","SELECTION_UPDATED","SCALLED_UP_IMAGES","HISTORY_CHANGED","HISTORY_ADD","HAS_COPIED_OBJECT","TEXT_CHANGED","TOUCH_MOVE","MOUSE_DOWN","FILTER_CHANGED","OPACITY_CHANGED","FILL_CHANGED","TEXT_ADDED","CROP_APPLYIED","STROKE_CHANGED","STATIC_OBJECT_FILL_CHANGED","TILING_DESTROYED","TILING_CREATED","CANVAS","ID","WIDTH","HEIGHT","REALISM_POLL_TIME","PICTURE_POLL_TIME","i","Canvas","options","this","_initDefaultValues","canvas","window","fabric","hoverCursor","controlsAboveOverlay","allowTouchScrolling","fireRightClick","preserveObjectStacking","selection","isMobile","dimensions","prevDimensions","object","offsetX","offsetY","isType","objects","getObjects","forEach","obj","group","left","top","ownLeft","ownTop","set","push","add","remove","Promise","resolve","reject","clone","cloneObj","clipPath","e","discardActiveObject","Array","isArray","setActiveObject","renderAll","length","activeSelection","ActiveSelection","temp","_objects","j","addWithUpdate","saveState","selectObjects","_discardActiveObject","_setActiveObject","url","setBackgroundImage","originX","originY","setOverlayImage","overlayImage","setBackgroundColor","bind","json","loadFromJSON","forEachObject","filters","applyFilters","fontFamily","guideLineOffset","width","height","right","bottom","withGuidLines","JSON","stringify","on","drawGuideLines","clipTo","ctx","strokeStyle","beginPath","setLineDash","moveTo","lineTo","stroke","closePath","data","toJSON","getActiveObject","cb","stringifyActiveObject","toggle","straightenObject","sendToBack","sendBackwards","bringToFront","bringForward","setCoords","ObjectResizer","centerObjectVertically","centerObjectHorizontally","scaleX","scaleY","scale","Image","fromURL","img","crossOrigin","loadSVGFromURL","elements","util","groupSVGElements","text","IText","backgroundColor","overlayColor","_hasITextHandlers","off","_mouseUpITextHandler","_iTextInstances","clearContext","contextContainer","fire","renderOnAddRemove","requestRenderAll","_state","direction","delta","get","filter","applyTo2d","strokeWidth","strokeDashArray","freeDrawn","__hidden","isObjectHidden","contextTop","save","Object","prototype","transform","call","renderHidden","restore","getBoundingRect","boundingRectWidth","boundingRectHeight","canvasDimensionsTop","canvasDimensionsLeft","canvasDimensionsWidth","canvasDimensionsHeight","tiling","originalObject","getOriginalObject","removeObject","addObject","tile","_createObjectsForTiling","createTiling","setTilePadding","tilePadding","Tiling","padding","scaledWidth","scaledHeight","updateTiling","angle","enlivenObjects","enlivenedObjects","error","extendFabric","extendFabricFilters","Text","centeredRotation","lockUniScaling","rotatingPointOffset","snapAngle","snapThreshold","_controlsVisibility","tl","tr","br","bl","ml","mt","mr","mb","mtr","stateProperties","indexOfClipPath","indexOf","splice","transparentCorners","cornerStyle","borderColor","cornerColor","cornerStrokeColor","cornerSize","editable","cloneData","map","angleOfRadian","Math","PI","cos","getScaledWidth","sin","getScaledHeight","cloneObject","objectCaching","scaleToWidth","round","arrayOfObjects","excludedFromLoadingFonts","Mediator","initAligningGuidelines","initCenteringGuidelines","_initCommandHistory","_addSelectionObjectByRightClick","_initPublisherForCanvas","_initOnBeforeUnloadWarning","__canvas","__mediator","getCanvas","_getBgURL","_assetsMemory","fetch","then","res","status","Error","background","rest","overlay","lamination","cornerRadius","corner_radius","hasOverlayImage","Provider","version","_transformOldJSON","exitTextEditing","loadUsedFonts","settings","guideLines","dpi","product","side","variants","design","prevCondition","condition","prevDesign","applyDesignToCanvas","clearHistory","offsetOfPastedObject","applyObjectResizer","getProductAssets","style","assets","applyAssetsToCanvas","applyClippingToCanvas","productSettings","checkScaledUpImages","history","back","trackEvent","category","action","getStateOfHistory","forward","index","lengthOfCommands","commands","clear","activeObject","getActive","addToHistory","objectToCopy","onlyBg","permissions","image","hasCopiedObject","addedObject","copyActiveObject","pasteCopiedObject","active","silent","isTransparent","original","canvasUrl","originalWidth","originalHeight","fields","urlToPicture","pictureOptions","imageType","originalSrc","picture","remoteId","isTexture","label","isClipart","isEmoji","scaleWidth","isFigure","fill","isOneColorPath","response","loadFont","textAlign","fontSize","lineHeight","oText","enterEditing","fontName","includes","FontFaceObserver","load","err","console","log","fontsUsedInDesign","o","all","_hasScaledUpImages","selectAllObjects","removeActive","location","search","split","reduce","acc","item","slice","key","replace","command","TransformCommand","saveObjectState","RemoveCommand","AddCommand","SetBgCommand","CreateSelectionCommand","ClearSelectionCommand","CreateTilingCommand","DestroyTilingCommand","property","isText","every","isPathGroup","colorOfFirtPath","isPath","effectName","effect","getEffectByName","undoTitle","makeTitle","isActiveClipPath","String","cropUrl","clipPathWidth","clipPathHeight","scaleFactor","min","fillColor","pathNumber","staticObject","destroyTiling","selected","deselected","typeOfPattern","createTilingFromObject","selectable","isEditing","modeValue","__history","CommandHistory","target","heightFirstLine","__lineHeights","mult","_fontSizeMult","upperCanvasEl","removeEventListener","_preventDefault","hasControls","_renderControls","addEventListener","_touchMove","hiddenTextarea","_stopPropagation","isDesignSaved","stopPropagation","preventDefault","prop","hasOwnProperty","list","result","isBelowMinDPI","button","onbeforeunload","some","viewportTransform","zoom","drawHorizontalLine","coords","drawLine","x1","x2","y","y1","y2","lineWidth","isInRange","value1","value2","len","verticalLines","horizontalLines","getZoom","canvasObjects","activeObjectCenter","getCenterPoint","activeObjectLeft","x","activeObjectTop","activeObjectBoundingRect","activeObjectHeight","activeObjectWidth","horizontalInTheRange","verticalInTheRange","_currentTransform","objectCenter","objectLeft","objectTop","objectBoundingRect","objectHeight","objectWidth","setPositionByOrigin","Point","isInVerticalCenter","isInHorizontalCenter","canvasWidth","getWidth","canvasHeight","getHeight","canvasWidthCenter","canvasHeightCenter","canvasWidthCenterMap","canvasHeightCenterMap","showCenterLine","_drawLines","edgeOffset","drawDashedLine","parseInt","offset","checkClick","which","addEventOptions","passive","PathGroup","fromObject","callback","paths","pathUrl","Path","pathGroup","Group","_onObjectRemoved","_hoveredTarget","currentActives","getActiveObjects","currentActive","_fireSelectionEvents","touchDidMoved","__onMouseMove","pointer","_handleEvent","_cacheTransformEventData","isDrawingMode","_onMouseMoveInDrawingMode","touches","groupSelector","_groupSelector","_pointer","ex","ey","renderTop","_transformObject","findTarget","_setCursorFromEvent","_fireOverOutEvents","_resetTransformEventData","__onMouseUp","shouldRender","isClick","_target","fireMiddleClick","_isCurrentlyDrawing","_onMouseUpInDrawingMode","_finalizeCurrentTransform","actionPerformed","_shouldClearSelection","_maybeGroupObjects","_shouldRender","isMoving","__corner","__onMouseDown","_onMouseDownInDrawingMode","_previousPointer","shouldGroup","_shouldGroup","_handleGrouping","_activeObject","alreadySelected","_setupCurrentTransform","_onTouchStart","mainTouchId","getPointerId","canvasElement","eventTypePrefix","_getEventPrefix","addListener","document","_onTouchEnd","_onMouseMove","removeListener","_onMouseDown","degreesToRadians","radiansToDegrees","rotateIcon","src","drawControls","styleOverride","wh","_calculateCurrentDimensions","scaleOffset","hasRotatingPoint","methodName","fillStyle","_setLineDash","cornerDashArray","_drawControl","rotateLeft","rotateTop","drawImage","fillRect","toObject","propertiesToInclude","NUM_FRACTION_DIGITS","toFixed","concat","strokeLineCap","strokeDashOffset","strokeLineJoin","strokeMiterLimit","flipX","flipY","opacity","shadow","visible","fillRule","paintFirst","globalCompositeOperation","transformMatrix","skewX","skewY","inverted","absolutePositioned","populateWithProperties","includeDefaultValues","_removeDefaultValues","createClass","Rect","tileScale","multiplier","initialize","callSuper","setOptions","_setFill","_createPattern","patternSourceCanvas","StaticCanvas","enableRetinaScaling","setDimensions","Pattern","source","getElement","patternTransform","enlivenObj","extend","__onTransformGesture","self","gesture","__gesturesParams","__gesturesRenderer","t","_scaleObjectBy","rotation","_rotateObjectByAngle","__onDrag","__onOrientationChange","__onShake","__onLongPress","s","lockScalingX","lockScalingY","_scaling","constraintPosition","translateToOriginPoint","dim","_getTransformedDimensions","_setObjectScale","_fire","curAngle","rotate","theta","_rotateObjectWithOutSnappig","_rotateObject","rightAngleLocked","ceil","leftAngleLocked","floor","abs","Waterize","BaseFilter","amplitude","frequency","frames","ys","dest","imageData","T","stride","twoPI","maxY","maxX","pixels","RemoveBlack","threshold","distance","r","g","b","RemoveWhite","limit","Sepia2","iLen","RemoveColor","Grayscale","Invert","Sepia","Brightness","brightness","Convolute","matrix","Noise","noise","Pixelate","blocksize","widthOrHeight","Circle","radius","rx","ry","test","centerObject","getCurrentSideWidth","SCALE_MARGIN","getCurrentSideHeight","scaleToHeight","VECTOR_TYPES","isVector","resizeObjectPerDPI","printingAreaWidth","printingAreaHeight","requestedDPI","currentSideDPI","getMinOriginalHeight","getMinOriginalWidth","_findBestUsable","sideToScaleBy","findSideToScaleBy","bestUsableConstraint","canvasConstraint","findBestUsableHeight","findBestUsableWidth","maxAllowedHeight","getHeightForCurrentSideDPI","maxAllowedWidth","getWidthForCurrentSideDPI","receiver","controller","unSelectObjects","async","onComplete","undo","execute","currentColor","prevColor","_initCallbacks","_initStateProperties","state","prevState","_isGroup","_","_saveState","_savePrevState","_restoreState","_restorePrevState","_restore","onBeforeUndo","onAfterUndo","_stateProperties","objectToLoad","month","path","loadedObjectSettings","title","colorPickers","front","name","keyInProductMeta","filterOfItemsBy","subTitle","template","description","apron","backpack","fullPrint","badge","bag","colorOfMaterial","bandana","basketball_uniform","beanie","beer_mug","bib","bodysuit","bottle_sticker","buff","business_card","cards","calendar_a2","calendar_a3","calendar_single_a2","can","candle","canvas20x30","canvas30x30","canvas30x40","canvas30x60","canvas40x55","canvas50x50","canvas50x75","canvas60x90","cap_trucker","cardholder","chocolate","chocolate35x35","chocolate_set12","chocolate_set16","chocolate_set4","chocolate_set_souffle","chocolate_set_shell","chistmas_ball","chistmas_tree_toy","city_backpack","classic_polo_shirt","classic_tee","classic_woman_polo","classic_woman_tee","colored_handle_mug","colored_hood_and_sleeves_hoodie","colored_inside_mug","colored_pocket_hoodie","cotton_backpack","cube","cutting_board","dog_tee","euro_business_card","flag22x15","flag135x90","flag150x100","flash_driver","football_uniform","free_form_sticker","material","full_print_apron","full_print_bag","full_print_backpack","full_print_beanie","full_print_boy_tee","full_print_gloves","full_print_girl_tee","full_print_hoodie","full_print_kids_sweatshirt","full_print_mug","full_print_man_polo","full_print_neck_pillow","full_print_pencil_case","full_print_sport_tee","full_print_sweatshirt","full_print_tanktop","full_print_tee","full_print_waist_bag","full_print_woman_hoodie","full_print_woman_polo","full_print_woman_sweatshirt","full_print_woman_tanktop","full_print_woman_tee","galaxy_s6_case","galaxy_s6_edge_case","galaxy_s7_case","galaxy_s7_edge_case","galaxy_s8_case","galaxy_s8_plus_case","gift_bag8x12","gift_bag15x22","gift_bag20x30","hat","heart_magnet75x97","heart_mouse_pad","heart_sticker50x65","heart_sticker75x97","hockey_uniform","hoodie","iphone_x_case","iphone14_pro_max_case","iphone14_pro_case","iphone14_case","iphone13_case","iphone13_pro_case","iphone13_pro_max_case","iphone12_case","iphone12_pro_case","iphone12_mini_case","iphone11_case","iphone11_pro_case","iphone11_pro_max_case","iphone5_case","iphone5_volumetric_case","iphone6_case","iphone6_volumetric_case","iphone6_plus_case","iphone7_case","iphone7_plus_case","iphone8_case","iphone8_plus_case","kids_football_uniform","kids_hoodie","kids_panama","kids_sweatshirt","kids_tee","kids_zip_hoodie","kitchen_scale","knitted_hat","large_classic_tee","large_envelope","large_full_print_tee","large_pencil_case","leggings","leather_passport_cover","lighter","long_socks","longsleeve","man_bomber","man_pants","man_pajama_pants","man_stretch_tee","man_underpants","mask","mask_scarf","medium_envelope","metal_bottle","moneybox","mouse_pad","mousePad","mug","nametag","notepad","notepad_a4","notebook_glued","notebook_spring","notebook_stapled","oval_sticker150x90","oval_sticker98x70","oversize_hoodie","oversize_tee","oversize_pocket_tee","package155x220x50","package220x155x50","package250x350x80","paired_tee","paired_wineglass","panama","passport_cover","pen","pencil","phone_cardholder","photo_tile","pillow","pillow40x40","pillow60x40","pillow150x50","plaid_fleece130x170","planner","plastic_bottle","plastic_pen","plate","playing_card","polo_shirt","postcard","postcard15x10","postcard21x10","poster_a2","poster","powerbank","rectangle_keychain35x25","rectangle_keychain50x35","rectangle_magnet150x45","rectangle_magnet90x50","rectangle_sticker150x45","rectangle_sticker90x50","puzzle_a3","puzzle_a4","puzzle_photo_frame","puzzle1000","puzzle408","rashguard","rolled_rectangle_sticker105x74","rolled_rectangle_sticker74x52","rolled_round_sticker50","rolled_square_sticker50x50","round_magnet50x50","round_mouse_pad","round_plastic_clock","round_sticker50x50","round_sticker95x95","round_wood_clock","shopping_bag","short_socks","shot","shower_curtain","sleep_mask","sleeveless_dress","small_envelope","small_pencil_case","snapback","speaker","sport_bottle","square_keychain","square_magnet50x50","square_magnet95x95","square_pillow","square_sticker50x50","square_sticker95x95","square_tablecloth","square_wood_clock","standard_pen","star_magnet75x75","star_sticker75x75","star_sticker145x145","stone_photo_frame","stretch_tee","suction_thermo_mug","sweatshirt","tanktop","tapestry180x145","tee","thermos","thermo_mug","toothbrush","towel30x30","towel35x75","towel50x90","umbrella_unilateral","umbrella_bilateral","universal_hoodie","universal_product","windbreaker","wineglass","woman_bomber","woman_hoodie","woman_pajama_pants","woman_pants","woman_sneakers","woman_tanktop","woman_tee","woman_underpants","women_cotton_sweatshirt","black_joker","red_joker","foilType","materialType","frameType","paperType","outside","colors","withPrice","message","props","className","Component","PropTypes","Loader","cn","styles","mod","Router","ConnectedRouter","noInitialPop","children","context","renderRouter","React","CHANGE_LOCATION","LOAD_DATA","START","SUCCESS","FAIL","STORE","ITEM","SMALL","TILE","TEASER","STORE_LOAD_DATA_SUCCESS","ms","setTimeout","SceneSubject","scene","_addModelToScene","additional","withDesign","texture","_getTexture","modelTexture","_getModel","model","THREE","shininess","ambient","specular","_applyMaterialToModel","_applyModelSettings","objectLoader","_getOriginalTexture","originalTexture","designs","_getImagesOfDesignFromData","_getImagesOfDesignFromUrl","imagesOfDesign","_addDesignsToOriginalTexture","combineImage","_getTextureFromUrl","designImages","textureImage","tmpCanvas","textureOffset","textureScale","_createImageFromUrl","toDataURL","format","values","promises","_transformDesignDataToImage","arts","keys","variant","onload","onerror","position","directionalLight","SceneManager","screenDimensions","mousePosition","_buildScene","renderer","_buildRenderer","camera","_buildCamera","controls","_buildControls","lights","_addSceneLights","subject","_createSceneSubject","applySettings","_updateCameraPosition","update","render","aspect","updateProjectionMatrix","setSize","antialias","alpha","DPR","devicePixelRatio","setPixelRatio","gammaInput","gammaOutput","cam","el","OrbitControls","aspectRatio","z","GeneralLights","ThreeJSMediator","containerElement","createCanvas","sceneManager","bindEventListeners","cancelAnimationFrame","rafId","unBindEventListeners","createElement","appendChild","resizeCanvas","onresize","offsetWidth","offsetHeight","onWindowResize","requestAnimationFrame","__threeDSettings","cssReload","module","hot","dispose","__importDefault","__esModule","defineProperty","exports","createBrowserHistory_1","default","__assign","assign","n","arguments","p","apply","__createBinding","create","m","k","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","enumerable","__setModuleDefault","v","__importStar","__rest","getOwnPropertySymbols","propertyIsEnumerable","constants_1","store_1","cache","store","next","callAPI","payload","scope","pathname","hash","dispatch","showBannerAction","headers","credentials","catch"],"sourceRoot":""}