{"version":3,"file":"XURL.mjs","sources":["../../../../../src/shapes/canvasx/XURL/XURL.ts"],"sourcesContent":["import { classRegistry } from '../../../ClassRegistry';\nimport { Shadow } from '../../../Shadow';\nimport { getFabricWindow } from '../../../env';\nimport { loadImage } from '../../../util/misc/objectEnlive';\n\nimport { ImageProps } from '../../Image';\nimport { FabricObject } from '../../Object/FabricObject';\nimport { Rect } from '../../Rect';\nimport { FileObject } from '../type/file';\n\nimport { WidgetURLInterface, EntityKeys } from '../type/widget.entity.url';\nimport { WidgetType } from '../type/widget.type';\n\nexport type XURLProps = ImageProps & WidgetURLInterface;\n\nexport const XURLDefaultValues: Partial<XURLProps> = {\n  originX: 'center',\n  originY: 'center',\n  cornerColor: 'white',\n  cornerStrokeColor: 'gray',\n  cornerSize: 10,\n  cornerStyle: 'circle',\n  transparentCorners: false,\n};\n\nexport class XURL extends FabricObject implements WidgetURLInterface {\n  static objType = 'XURL';\n  static type = 'XURL';\n  transcription: string;\n\n  _previewImage: HTMLImageElement | null = null;\n\n  public extendedProperties = [\n    'id',\n    'objType',\n    'fileName',\n    'transcription',\n    'vectorSrc',\n    'fileSrc',\n    'previewImage',\n    'description',\n    'userId',\n    'clientId',\n    'zIndex',\n    'locked',\n    'boardId',\n  ];\n  constructor(url: any, options: Partial<XURLProps>) {\n    super(options);\n\n    const previewImageURL = options.previewImage?.tmpPath\n      ? options.previewImage?.tmpPath\n      : '/boardxstatic/fileIcons/weblink.png';\n\n    Object.assign(this, options);\n\n    this.on('mousedblclick', this.onDoubleClick.bind(this));\n    this.objType = 'XURL';\n\n    (this.cornerColor = 'white'),\n      (this.cornerStrokeColor = 'gray'),\n      (this.cornerSize = 15),\n      (this.cornerStyle = 'circle'),\n      (this.transparentCorners = false),\n      (this.shadow = new Shadow({\n        color: 'rgba(217, 161, 177, 0.54)',\n        offsetX: 1,\n        offsetY: 2,\n        blur: 4,\n        id: 310,\n      }));\n    this.clipPath = new Rect({\n      left: 0,\n      top: 0,\n      rx: 8,\n      ry: 8,\n      width: 230,\n      height: 248,\n      fill: '#000000',\n    });\n    this.width = 230;\n    this.height = 248;\n    this.loadPreviewImage(previewImageURL!);\n  }\n  url: string;\n  updatedBy: string;\n  updatedByName: string;\n\n  createdByName: string;\n  vectorSrc: FileObject;\n  fileSrc: FileObject;\n  fileName: string;\n  previewImage: FileObject;\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  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\n  toObject(propertiesToInclude: Array<any>): any {\n    return super.toObject([...this.extendedProperties, ...propertiesToInclude]);\n  }\n  onDoubleClick() {\n    getFabricWindow().open(this.url, '_blank');\n  }\n\n  drawObject(ctx: CanvasRenderingContext2D) {\n    // Draw solid background to eliminate transparency\n    ctx.beginPath();\n    ctx.fillStyle = '#FFFFFF'; // Set to white or any preferred color\n    ctx.fillRect(-this.width / 2, -this.height / 2, this.width, this.height);\n    ctx.lineWidth = 0;\n    ctx.strokeStyle = '#ffffff';\n    ctx.moveTo(-this.width / 2, -this.height / 2);\n    ctx.stroke();\n\n    const imgWidth = 230;\n    const imgHeight = 160;\n\n    if (this._previewImage) {\n      this.drawPreviewImage(ctx, imgWidth, imgHeight);\n    }\n\n    this.renderTitle(ctx, this.fileName);\n    this._renderStroke(ctx);\n  }\n\n  private drawPreviewImage(\n    ctx: CanvasRenderingContext2D,\n    imgWidth: number,\n    imgHeight: number\n  ) {\n    const previewImage = this._previewImage!;\n    const imageWidth = previewImage.width;\n    const imageHeight = previewImage.height;\n\n    // Calculate aspect ratios\n    const imageAspect = imageWidth / imageHeight;\n    const canvasAspect = imgWidth / imgHeight;\n\n    let drawWidth, drawHeight, offsetX, offsetY;\n\n    if (imageAspect > canvasAspect) {\n      // Image is wider than canvas aspect ratio\n      drawHeight = imgHeight;\n      drawWidth = imageAspect * imgHeight;\n      offsetX = (imgWidth - drawWidth) / 2;\n      offsetY = 0;\n    } else {\n      // Image is taller than canvas aspect ratio\n      drawWidth = imgWidth;\n      drawHeight = imgWidth / imageAspect;\n      offsetX = 0;\n      offsetY = (imgHeight - drawHeight) / 2;\n    }\n\n    ctx.save();\n\n    // Set clipping region to the image area\n    ctx.beginPath();\n    ctx.rect(-this.width / 2, -this.height / 2, imgWidth, imgHeight);\n    ctx.clip();\n\n    // Draw the image within the clipping region\n    ctx.drawImage(\n      previewImage,\n      -this.width / 2 + offsetX,\n      -this.height / 2 + offsetY,\n      drawWidth,\n      drawHeight\n    );\n\n    ctx.restore();\n  }\n\n  renderTitle(ctx: any, title: string) {\n    const maxWidth = this.width;\n    const x = -this.width / 2;\n    const y = this.height / 2 - 60;\n\n    // Set font styles\n    ctx.font = '16px Arial';\n    ctx.fillStyle = 'rgba(255, 255, 255, 1)';\n\n    // White background behind the title\n    ctx.fillRect(x, y - 29, maxWidth, 90);\n    ctx.fillStyle = '#190FA1';\n\n    // Handle null or empty title\n    if (!title && this.fileSrc?.tmpPath) {\n      const firstChar = this.fileSrc?.tmpPath.indexOf('.');\n      const lastChar = this.fileSrc?.tmpPath.indexOf('.', firstChar + 1);\n      title = this.fileSrc?.tmpPath.substring(firstChar + 1, lastChar);\n    }\n\n    // Title rendering\n    this.wrapText(ctx, title, x + 15, y - 5, maxWidth - 20, 23);\n\n    // URL rendering\n    const newurl = this.fileSrc && this.fileSrc?.tmpPath\n      ? `${this.fileSrc?.tmpPath.split('/')[0]}/${this.fileSrc.tmpPath.split('/')[1]\n      }/${this.fileSrc?.tmpPath.split('/')[2]}`\n      : '';\n    ctx.font = '12px Inter';\n    ctx.fillStyle = 'rgba(35, 41, 48, 0.65)';\n    this.wrapText(ctx, newurl, x + 15, y + 45, maxWidth - 20, 25);\n  }\n\n  wrapText(\n    context: any,\n    text: string,\n    x: number,\n    y: number,\n    maxWidth: number,\n    lineHeight: number\n  ) {\n    let line = '';\n    let lineCount = 0;\n    const chars = text.split('');\n    for (let n = 0; n < chars.length; n++) {\n      const testLine = line + chars[n];\n      const metrics = context.measureText(testLine);\n      const testWidth = metrics.width;\n\n      if (testWidth > maxWidth && n > 0) {\n        if (lineCount === 2) {\n          line = line.substring(0, line.length - 3) + '...';\n          context.fillText(line, x, y);\n          return;\n        }\n        context.fillText(line, x, y);\n        line = chars[n];\n        y += lineHeight;\n        lineCount++;\n      } else {\n        line = testLine;\n      }\n    }\n    context.fillText(line, x, y);\n  }\n\n  async loadPreviewImage(previewImage: string) {\n    const url = previewImage;\n\n    const loadedImg = await loadImage(url, {\n      crossOrigin: 'anonymous',\n    });\n    this._previewImage = loadedImg;\n    this.dirty = true;\n    this.canvas?.requestRenderAll();\n  }\n}\n\nclassRegistry.setClass(XURL);\n"],"names":["XURL","FabricObject","constructor","url","options","_options$previewImage","_options$previewImage2","_defineProperty","previewImageURL","previewImage","tmpPath","Object","assign","on","onDoubleClick","bind","objType","cornerColor","cornerStrokeColor","cornerSize","cornerStyle","transparentCorners","shadow","Shadow","color","offsetX","offsetY","blur","id","clipPath","Rect","left","top","rx","ry","width","height","fill","loadPreviewImage","getObject","entityKeys","EntityKeys","result","forEach","key","toObject","propertiesToInclude","extendedProperties","getFabricWindow","open","drawObject","ctx","beginPath","fillStyle","fillRect","lineWidth","strokeStyle","moveTo","stroke","imgWidth","imgHeight","_previewImage","drawPreviewImage","renderTitle","fileName","_renderStroke","imageWidth","imageHeight","imageAspect","canvasAspect","drawWidth","drawHeight","save","rect","clip","drawImage","restore","title","_this$fileSrc","_this$fileSrc5","_this$fileSrc6","_this$fileSrc7","maxWidth","x","y","font","fileSrc","_this$fileSrc2","_this$fileSrc3","_this$fileSrc4","firstChar","indexOf","lastChar","substring","wrapText","newurl","concat","split","context","text","lineHeight","line","lineCount","chars","n","length","testLine","metrics","measureText","testWidth","fillText","_this$canvas","loadedImg","loadImage","crossOrigin","dirty","canvas","requestRenderAll","classRegistry","setClass"],"mappings":"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"}