{"version":3,"file":"XFrame.mjs","sources":["../../../../src/shapes/canvasx/XFrame.ts"],"sourcesContent":["import { FabricObject } from '../Object/FabricObject';\nimport { Textbox } from '../Textbox';\nimport { Rect } from '../Rect';\nimport { Group } from '../Group';\nimport { LayoutManager } from '../../LayoutManager';\nimport { FitContentLayout } from '../../LayoutManager/LayoutStrategies/FitContentLayout';\nimport { classRegistry } from '../../ClassRegistry';\nimport { EntityKeys, WidgetFrameInterface } from './type/widget.entity.frame';\nimport { WidgetType } from './type/widget.type';\n\nclass XFrame extends FabricObject implements WidgetFrameInterface {\n  title: Textbox;\n  titleText: string;\n  body: Rect;\n  objects: Group;\n  layoutManager: LayoutManager;\n  static type: WidgetType = 'XFrame';\n  static objType: WidgetType = 'XFrame';\n\n  constructor(options: Partial<WidgetFrameInterface> = {}) {\n\n    super(options);\n    Object.assign(this, options);\n    this.titleText = 'Frame Title',\n      this.left = 100,\n      this.top = 100,\n      this.width = 400,\n      this.height = 300\n    this.title = new Textbox(this.titleText, {\n      left: this.left,\n      top: this.top,\n      fontSize: 18,\n      fontWeight: 'bold',\n      selectable: true,\n      editable: true,\n    });\n    this.titleText = this.titleText;\n    this.objType = 'XFrame';\n    this.body = new Rect({\n      left: this.left,\n      top: this.top + 30,\n      width: this.width,\n      height: this.height,\n      fill: 'rgba(0,0,0,0.1)',\n      selectable: false,\n      evented: false,\n    });\n\n    this.objects = new Group([this.body, this.title], {\n      left: this.left,\n      top: this.top,\n      selectable: true,\n    });\n\n    // Create a layout manager for the frame\n    this.layoutManager = new LayoutManager(new FitContentLayout());\n\n    this.canvas!.add(this.objects);\n\n    this.title.on('mousedblclick', () => {\n      this.title.enterEditing();\n    });\n\n    this.objects.on('scaling', (event) => {\n      const scaleX = this.objects.scaleX;\n      const scaleY = this.objects.scaleY;\n\n      this.objects.getObjects().forEach((obj) => {\n        if (obj !== this.title) {\n          obj.scaleX = scaleX;\n          obj.scaleY = scaleY;\n          obj.setCoords();\n        }\n      });\n\n      this.objects.scaleX = 1;\n      this.objects.scaleY = 1;\n      this.objects.setCoords();\n\n      this.canvas!.renderAll();\n    });\n\n    this.objects.on('mousedown', (event) => {\n      if (event.target === this.title) {\n        this.objects.set('selectable', true);\n        this.canvas!.setActiveObject(this.objects);\n      }\n    });\n\n    this.objects.on('moving', (event) => {\n      //@ts-ignore\n      const deltaX = event.movementX;\n      //@ts-ignore\n      const deltaY = event.movementY;\n\n      this.objects.getObjects().forEach((obj) => {\n        if (obj !== this.body && obj !== this.title) {\n          obj.set('left', obj.left + deltaX);\n          obj.set('top', obj.top + deltaY);\n        }\n      });\n\n      this.canvas!.renderAll();\n    });\n\n    this.canvas!.on('object:moving', (e) => {\n      if (e.target !== this.objects && !this.objects.contains(e.target)) {\n        this.checkObjectInFrame(e.target);\n      }\n    });\n\n    this.canvas!.on('mouse:up', (e) => {\n      if (e.target && this.objects.contains(e.target)) {\n        this.addObject(e.target);\n      } else if (e.target && !this.objects.contains(e.target)) {\n        this.removeObject(e.target);\n      }\n    });\n\n    this.canvas!.renderAll();\n  }\n  updatedBy: string;\n  updatedByName: string;\n\n  createdByName: string;\n  boardId: string;\n  objType: WidgetType;\n  userId: string;\n  zIndex: number;\n  version: string;\n  updatedAt: number;\n\n  createdAt: number;\n  createdBy: string;\n\n  checkObjectInFrame(obj: any) {\n    const objBound = obj.getBoundingRect();\n    const frameBound = this.body.getBoundingRect();\n\n    if (\n      objBound.left >= frameBound.left &&\n      objBound.top >= frameBound.top &&\n      objBound.left + objBound.width <= frameBound.left + frameBound.width &&\n      objBound.top + objBound.height <= frameBound.top + frameBound.height\n    ) {\n      this.addObject(obj);\n    } else {\n      this.removeObject(obj);\n    }\n  }\n\n  getObject() {\n    const entityKeys: string[] = EntityKeys;\n    const result: Record<string, any> = {};\n\n    entityKeys.forEach((key) => {\n      if (key in this) {\n        result[key] = (this as any)[key];\n      }\n    });\n\n    return result;\n  }\n  addObject(obj: any) {\n    if (!this.objects.contains(obj)) {\n      this.objects.add(obj);\n      obj.set({\n        left: obj.left - this.objects.left,\n        top: obj.top - this.objects.top,\n        selectable: true,\n      });\n      this.canvas!.remove(obj);\n      this.canvas!.renderAll();\n    }\n  }\n\n  removeObject(obj: any) {\n    if (this.objects.contains(obj)) {\n      this.objects.remove(obj);\n      obj.set({\n        left: obj.left + this.objects.left,\n        top: obj.top + this.objects.top,\n        selectable: true,\n      });\n      this.canvas!.add(obj);\n      this.canvas!.renderAll();\n    }\n  }\n}\n\nclassRegistry.setClass(XFrame);\n\nexport { XFrame };\n"],"names":["XFrame","FabricObject","constructor","options","arguments","length","undefined","_defineProperty","Object","assign","titleText","left","top","width","height","title","Textbox","fontSize","fontWeight","selectable","editable","objType","body","Rect","fill","evented","objects","Group","layoutManager","LayoutManager","FitContentLayout","canvas","add","on","enterEditing","event","scaleX","scaleY","getObjects","forEach","obj","setCoords","renderAll","target","set","setActiveObject","deltaX","movementX","deltaY","movementY","e","contains","checkObjectInFrame","addObject","removeObject","objBound","getBoundingRect","frameBound","getObject","entityKeys","EntityKeys","result","key","remove","classRegistry","setClass"],"mappings":"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"}