{"version":3,"file":"XShapeNotes.mjs","sources":["../../../../../src/shapes/canvasx/XShapeNotes/XShapeNotes.ts"],"sourcesContent":["import { classRegistry } from '../../../ClassRegistry';\nimport { getFabricDocument } from '../../../env';\nimport { TClassProperties, TFiller } from '../../../typedefs';\nimport { XTextbase } from '../XTextbase';\n\nimport { shapeList } from './types';\nimport { shapeType } from './types';\n\nimport { WidgetShapeNotesInterface, EntityKeys } from '../type/widget.entity.shapenote';\nimport { createShapeNotesDefaultControls } from '../../../controls/X_commonControls';\nimport { WidgetType } from '../type/widget.type';\n\n\n\nexport type shapeInfo = {\n  name: shapeType;\n  path: string;\n  offsetX: number;\n  offsetY: number;\n  verticalAlign: 'middle' | 'top' | 'bottom';\n  textAlign: 'center' | 'left' | 'right';\n  textMaxHeight?: number;\n  textMaxWidth?: number;\n};\n\nfunction getShapeInfo(shape: string): shapeInfo | null {\n  const shapeObj = shapeList.find((item) => item.name === shape);\n\n  if (!shapeObj) {\n    return shapeList[0] as shapeInfo;\n  } else {\n    return shapeObj as shapeInfo; // Update the type of shapeObj to shapeInfo\n  }\n}\n\nexport const XShapeNotesDefaultValues: Partial<TClassProperties<XShapeNotes>> =\n{\n\n};\n\n\nexport class XShapeNotes extends XTextbase implements WidgetShapeNotesInterface {\n  static type: WidgetType = 'XShapeNotes';\n  static objType: WidgetType = 'XShapeNotes';\n\n  bgShape: shapeInfo | null;\n  verticalAlign: string;\n\n  minHeight: number;\n  shapeName: shapeType;\n\n\n  constructor(text: string, options: Partial<WidgetShapeNotesInterface> & { type: string }) {\n\n\n    super(text, options);\n    this.bgShape = options.shapeName ? getShapeInfo(options.shapeName) : null;\n    // this.width = (options.width || 200) * (options.scaleX || 1);\n    // this.height = (options.height || 200) * (options.scaleY || 1);\n    this.scaleX = 1;\n    this.scaleY = 1;\n    this.id = options.id || '';\n    this.verticalAlign = this.bgShape?.verticalAlign || 'middle';\n    this.textAlign = this.bgShape?.textAlign || 'center';\n    this.shapeName = options.shapeName || 'rect';\n    this.fontSize = options.fontSize || 14;\n    this.fontFamily = options.fontFamily || 'Inter';\n    this.fontWeight = options.fontWeight || 'normal';\n    this.lineHeight = 1.2;\n    this.text = text;\n    this.minWidth = 20;\n    this.minHeight = 20;\n    this.dynamicMinWidth = 2;\n    this.lockScalingFlip = true;\n    this.noScaleCache = false;\n    this._wordJoiners = /[ \\t\\r]/;\n    this.splitByGrapheme = true;\n    this.objType = 'XShapeNotes';\n    this.textAlign = 'center';\n    this.centeredScaling = false;\n    this.cornerColor = 'white';\n    this.cornerStrokeColor = 'gray';\n    this.cornerSize = 10;\n    this.cornerStyle = 'circle';\n    this.transparentCorners = false;\n    this.verticalAlign = 'middle';\n\n\n\n    this.resetSplitByGrapheme();\n    Object.assign(this, {\n      controls: { ...createShapeNotesDefaultControls(this) },\n    });\n\n    this.on('scaling', this.handleScaling);\n    this.on('modified', this.handleModified);\n    this.on('changed', this.handleModified);\n  }\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\n\n  handleModified() {\n    this.canvas!.uniformScaling = false;\n    this.resetSplitByGrapheme();\n    this.canvas!.renderAll();\n  }\n\n  resetSplitByGrapheme() {\n    const chineseRegex = /[\\u4e00-\\u9fa5]/; // Regex to match Chinese characters\n    const text = this.text;\n    const includesChinese = chineseRegex.test(text);\n    this.splitByGrapheme = includesChinese;\n  }\n\n  static ownDefaults: Record<string, any> = XShapeNotesDefaultValues;\n\n  static getDefaults() {\n    return {\n      ...super.getDefaults(),\n      ...XShapeNotes.ownDefaults,\n    };\n  }\n\n  handleScaling(event: any) {\n    this.canvas!.uniformScaling = false;\n\n    const newScaleX = this.get('scaleX');\n    const newScaleY = this.get('scaleY');\n\n    this.width *= newScaleX;\n    this.height *= newScaleY;\n\n    if (this.width < this.minWidth) {\n      this.width = this.minWidth;\n    }\n    if (this.height < this.minHeight) {\n      this.height = this.minHeight;\n    }\n\n    this.set({\n      scaleX: 1,\n      scaleY: 1,\n    });\n\n    this.initDimensions();\n    this.setCoords();\n    this.dirty = true;\n    this.canvas?.renderAll();\n  }\n\n  _renderBackground(ctx: any) {\n    if (!this.backgroundColor) {\n      return;\n    }\n    const dim = this._getNonTransformedDimensions();\n    ctx.fillStyle = this.backgroundColor;\n\n    ctx.save();\n\n    const svgPath = new Path2D(this.bgShape?.path || '');\n    const m = getFabricDocument()\n      .createElementNS('http://www.w3.org/2000/svg', 'svg')\n      .createSVGMatrix();\n    m.a = this.width / 100;\n    m.b = 0;\n    m.c = 0;\n    m.d = this.height / 100;\n    m.e = 0;\n    m.f = 0;\n    const path = new Path2D();\n    path.addPath(svgPath, m);\n    ctx.strokeStyle = this.stroke;\n    ctx.stroke(path);\n    ctx.fillStyle = this.backgroundColor;\n    ctx.fill(path);\n    ctx.restore();\n  }\n\n  _getTopOffset() {\n    switch (this.verticalAlign) {\n      case 'middle':\n        return -this._getTotalLineHeight() / 2;\n      case 'bottom':\n        return this.height / 2 - this._getTotalLineHeight();\n      default:\n        return -this.height / 2;\n    }\n  }\n\n  _getTotalLineHeight() {\n    return this._textLines.reduce(\n      (total, _line, index) => total + this.getHeightOfLine(index),\n      0\n    );\n  }\n\n  _renderTextCommon(ctx: any, method: any) {\n    ctx.save();\n    let lineHeights = 0;\n    const left = this._getLeftOffset() + this.bgShape?.offsetX!;\n    const top = this._getTopOffset() + this.bgShape?.offsetY!;\n    const offsets = this._applyPatternGradientTransform(\n      ctx,\n      ((method === 'fillText' ? this.fill : this.stroke) as TFiller) ||\n      this.fill!\n    );\n\n    for (let i = 0, len = this._textLines.length; i < len; i++) {\n      const heightOfLine = this.getHeightOfLine(i);\n      const maxHeight = heightOfLine / this.lineHeight;\n      const leftOffset = this._getLineLeftOffset(i);\n      this._renderTextLine(\n        method,\n        ctx,\n        this._textLines[i],\n        left + leftOffset - offsets.offsetX,\n        top + lineHeights + maxHeight - offsets.offsetY,\n        i\n      );\n      lineHeights += heightOfLine;\n    }\n    ctx.restore();\n  }\n\n  initDimensions() {\n    if (!this.initialized) {\n      return;\n    }\n    this.isEditing && this.initDelayedCursor();\n    this._clearCache();\n    this.dynamicMinWidth = 0;\n    this._styleMap = this._generateStyleMap(this._splitText());\n    if (this.dynamicMinWidth > this.width) {\n      this.set('fontSize', this.fontSize - 2);\n      this._splitTextIntoLines(this.text);\n      return;\n    }\n    if (this.textAlign.indexOf('justify') !== -1) {\n      this.enlargeSpaces();\n    }\n    const height = this.calcTextHeight();\n    if (height > this.height && this.fontSize > 6) {\n      this.set('fontSize', this.fontSize - 2);\n      this._splitTextIntoLines(this.text);\n      return;\n    }\n\n    return this.height;\n  }\n\n  _getTotalLineHeights() {\n    return this._textLines.reduce(\n      (total, _line, index) => total + this.getHeightOfLine(index),\n      0\n    );\n  }\n\n  graphemeSplitForRectNotes(textstring: string): string[] {\n    const graphemes = [];\n    const words = textstring.split(/\\b/);\n    for (let i = 0; i < words.length; i++) {\n      if (/^[a-zA-Z]{1,16}$/.test(words[i])) {\n        graphemes.push(words[i]);\n      } else {\n        for (let j = 0; j < words[i].length; j++) {\n          graphemes.push(words[i][j]);\n        }\n      }\n    }\n    return graphemes;\n  }\n}\n\nclassRegistry.setClass(XShapeNotes);\n"],"names":["getShapeInfo","shape","shapeObj","shapeList","find","item","name","XShapeNotesDefaultValues","XShapeNotes","XTextbase","constructor","text","options","_this$bgShape","_this$bgShape2","_defineProperty","bgShape","shapeName","scaleX","scaleY","id","verticalAlign","textAlign","fontSize","fontFamily","fontWeight","lineHeight","minWidth","minHeight","dynamicMinWidth","lockScalingFlip","noScaleCache","_wordJoiners","splitByGrapheme","objType","centeredScaling","cornerColor","cornerStrokeColor","cornerSize","cornerStyle","transparentCorners","resetSplitByGrapheme","Object","assign","controls","_objectSpread","createShapeNotesDefaultControls","on","handleScaling","handleModified","getObject","entityKeys","EntityKeys","result","forEach","key","canvas","uniformScaling","renderAll","chineseRegex","includesChinese","test","getDefaults","ownDefaults","event","_this$canvas","newScaleX","get","newScaleY","width","height","set","initDimensions","setCoords","dirty","_renderBackground","ctx","_this$bgShape3","backgroundColor","_getNonTransformedDimensions","fillStyle","save","svgPath","Path2D","path","m","getFabricDocument","createElementNS","createSVGMatrix","a","b","c","d","e","f","addPath","strokeStyle","stroke","fill","restore","_getTopOffset","_getTotalLineHeight","_textLines","reduce","total","_line","index","getHeightOfLine","_renderTextCommon","method","_this$bgShape4","_this$bgShape5","lineHeights","left","_getLeftOffset","offsetX","top","offsetY","offsets","_applyPatternGradientTransform","i","len","length","heightOfLine","maxHeight","leftOffset","_getLineLeftOffset","_renderTextLine","initialized","isEditing","initDelayedCursor","_clearCache","_styleMap","_generateStyleMap","_splitText","_splitTextIntoLines","indexOf","enlargeSpaces","calcTextHeight","_getTotalLineHeights","graphemeSplitForRectNotes","textstring","graphemes","words","split","push","j","classRegistry","setClass"],"mappings":"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"}