{"version":3,"file":"X_ActiveSelection.min.mjs","sources":["../../../../src/shapes/canvasx/X_ActiveSelection.ts"],"sourcesContent":["//@ts-nocheck\nimport { ActiveSelection } from '../ActiveSelection';\n\n// import { cursorLock as cursorLockSvg } from './svg/cursorLock';\n\nActiveSelection.prototype.cornerStyle = 'circle';\n\nActiveSelection.prototype.initialize = function (objects, options = {}) {\n  const refinedObjs = [];\n\n  objects.forEach((obj) => {\n    if (obj.objType !== 'common' && !obj.locked) refinedObjs.push(obj);\n  });\n\n  this._objects = refinedObjs || [];\n\n  for (let i = this._objects.length; i--; ) {\n    this._objects[i].group = this;\n  }\n\n  this.lockUniScaling = this._objects.length > 1;\n\n  if (options.originX) {\n    this.originX = options.originX;\n  }\n\n  if (options.originY) {\n    this.originY = options.originY;\n  }\n\n  this._updateObjectsCoords();\n\n  fabric.Object.prototype.initialize.call(this, options);\n\n  this.setCoords();\n\n  this.on('modified', (e) => {});\n\n  this.resetBorderAndControls();\n};\n\nActiveSelection.prototype.getContextMenuList = function () {\n  let menuList;\n\n  const activeSelection = this;\n\n  if (activeSelection.locked) {\n    menuList = ['Group'];\n  } else {\n    menuList = [\n      'Bring to front',\n      'Send to back',\n      'Group',\n      'Duplicate',\n      'Copy',\n      'Paste',\n      'Cut',\n      'Delete',\n    ];\n  }\n\n  if (activeSelection._objects.length > 1) {\n    if (activeSelection.locked) {\n      menuList.push('Unlock All');\n    } else {\n      menuList.push('Lock All');\n    }\n  } else if (activeSelection.locked) {\n    menuList.push('Unlock');\n  } else {\n    menuList.push('Lock');\n  }\n\n  return menuList;\n};\n\nActiveSelection.prototype.resetGroupLockedStatus = function () {\n  const activeSelection = this;\n\n  // const cursorLock = cursorLockSvg;\n};\n\nActiveSelection.prototype.resetBorderAndControls = function () {\n  const activeSelection = this;\n\n  if (activeSelection && activeSelection._objects) {\n    activeSelection.setControlVisible('mtr', false);\n\n    activeSelection.setControlVisible('mtr2', false);\n\n    if (activeSelection._objects.length > 0) {\n      activeSelection.setControlVisible('tl', true);\n      activeSelection.setControlVisible('tr', true);\n      activeSelection.setControlVisible('br', true);\n      activeSelection.setControlVisible('bl', true);\n      activeSelection.hasBorders = true;\n    } else {\n      activeSelection.setControlVisible('tl', false);\n      activeSelection.setControlVisible('tr', false);\n      activeSelection.setControlVisible('br', false);\n      activeSelection.setControlVisible('bl', false);\n      activeSelection.hasBorders = false;\n    }\n\n    activeSelection.setControlVisible('ml', false);\n    activeSelection.setControlVisible('mr', false);\n    activeSelection.setControlVisible('mt', false);\n    activeSelection.setControlVisible('mb', false);\n    activeSelection.setControlVisible('mla', false);\n    activeSelection.setControlVisible('mra', false);\n    activeSelection.setControlVisible('mta', false);\n    activeSelection.setControlVisible('mba', false);\n  }\n};\n\nActiveSelection.prototype._updateObjectsCoords = function (center) {\n  const _center = center || this.getCenterPoint();\n\n  for (let i = this._objects.length; i--; ) {\n    this._updateObjectCoords(this._objects[i], _center);\n  }\n};\n\n/**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\nActiveSelection.prototype._updateObjectCoords = function (object, center) {\n  let objectLeft = object.left - center.x;\n\n  let objectTop = object.top - center.y;\n\n  const skipControls = true;\n\n  if (Math.abs(objectLeft) < 0.1) objectLeft = 0.1;\n\n  if (Math.abs(objectTop) < 0.1) objectTop = 0.1;\n\n  object.set({\n    left: objectLeft,\n    top: objectTop,\n  });\n\n  object.group = this;\n\n  object.setCoords(skipControls);\n};\n\nActiveSelection.prototype.getCloneWidget = function () {\n  return null;\n};\n\nActiveSelection.prototype.bringObjToFront = function () {\n  const obj = this;\n\n  const ASObjects = obj.sortActiveSelectionObjs();\n\n  const newIndex = canvas.createTopZIndex();\n\n  const newZindexArr = canvas.zindexArrBetween(\n    newIndex,\n    newIndex + 99,\n    ASObjects.length\n  );\n\n  obj.saveUpdatedzIndex(ASObjects, newZindexArr, true);\n};\n\nActiveSelection.prototype.sendObjToBack = function () {\n  const obj = this;\n\n  const ASObjects = obj.sortActiveSelectionObjs();\n\n  const newIndex = canvas._objects[0].zIndex;\n\n  const newZindexArr = canvas.zindexArrBetween(\n    newIndex - 200,\n    newIndex - 100,\n    ASObjects.length\n  );\n\n  obj.saveUpdatedzIndex(ASObjects, newZindexArr, false);\n};\n\nActiveSelection.prototype.sortActiveSelectionObjs = function () {\n  const obj = this;\n\n  const ASObjects = [];\n\n  for (let i = 0; i < obj._objects.length; i++) {\n    if (obj._objects[i]._id) ASObjects.push(obj._objects[i]);\n  }\n\n  ASObjects.sort((a, b) => b.zIndex - a.zIndex);\n\n  return ASObjects;\n};\n\nActiveSelection.prototype.saveUpdatedzIndex = function (\n  ASObjects,\n  newZindexArr,\n  toFront\n) {\n  const obj = this;\n\n  for (let i = 0; i < ASObjects.length; i++) {\n    const asobj = ASObjects[i];\n\n    if (asobj.panelObj) {\n      /* overlap with frame */\n      const parentPanel = canvas.findById(asobj.panelObj);\n\n      if (parentPanel) {\n        /* bring front on a frame is to the top on the frame */\n        if (toFront) canvas.toFrameTop(parentPanel, asobj);\n        /* send back on a frame is to the bottom on the frame */\n        if (!toFront) canvas.toFrameBottom(parentPanel, asobj);\n      }\n    } else {\n      asobj.zIndex = newZindexArr[i];\n    }\n\n    asobj.dirty = true;\n  }\n\n  canvas.requestRenderAll();\n\n  canvas.sortByZIndex();\n\n  obj.saveData('MODIFIED', ['zIndex']);\n};\n\nActiveSelection.prototype.getText = function () {\n  if (this.getObjects().length > 1) {\n    const textsArray = canvas.getActiveObjects().map((item) => item.getText());\n    return textsArray.join('/n').trim();\n  }\n};\n"],"names":["ActiveSelection","prototype","cornerStyle","initialize","objects","options","arguments","length","undefined","refinedObjs","forEach","obj","objType","locked","push","this","_objects","i","group","lockUniScaling","originX","originY","_updateObjectsCoords","fabric","Object","call","setCoords","on","e","resetBorderAndControls","getContextMenuList","menuList","activeSelection","resetGroupLockedStatus","setControlVisible","hasBorders","center","_center","getCenterPoint","_updateObjectCoords","object","objectLeft","left","x","objectTop","top","y","Math","abs","set","getCloneWidget","bringObjToFront","ASObjects","sortActiveSelectionObjs","newIndex","canvas","createTopZIndex","newZindexArr","zindexArrBetween","saveUpdatedzIndex","sendObjToBack","zIndex","_id","sort","a","b","toFront","asobj","panelObj","parentPanel","findById","toFrameTop","toFrameBottom","dirty","requestRenderAll","sortByZIndex","saveData","getText","getObjects","getActiveObjects","map","item","join","trim"],"mappings":"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"}