{"version":3,"file":"Table.mjs","sources":["../../../src/shapes/Table.ts"],"sourcesContent":["//*PMW* class addded for tables\nimport { Group, type GroupProps } from './Group';\nimport { classRegistry } from '../ClassRegistry';\nimport type { FabricObject, IText } from 'fabric';\n\nexport interface TableProps extends GroupProps {\n  rows: number;\n  columns: number;\n  layoutType: string;\n  alternateBackgroundColor1: string;\n  alternateBackgroundColor2: string;\n  highlightedRowsBackgroundColor: string;\n  highlightedRows: Array<number>;\n  tableArray: Array<Array<IText>>;\n  ySpacing: number;\n  xSpacing: number;\n  fontSize: number;\n  hasButton: boolean;\n}\n\nexport class Table extends Group {\n  /**\n   * Type of an object\n   * @type String\n   * @default\n   */\n  static type = 'table';\n\n  /**\n   * Number of table rows\n   */\n  rows = 0;\n  /**\n   * Number of table columns\n   */\n  columns = 0;\n  /**\n   * Layout style\n   */\n  layoutType = '';\n  /**\n   * Background color 1 for alternate table background\n   */\n  alternateBackgroundColor1 = null;\n  /**\n   * Background color 2 for alternate table background\n   */\n  alternateBackgroundColor2 = null;\n  /**\n   * Background color for highlighted rows\n   */\n  highlightedRowsBackgroundColor = null;\n  /**\n   * Array containing indices of highlighted rows\n   */\n  highlightedRows: Array<number> = [];\n  /**\n   * 2D array containing table data\n   */\n  tableArray: Array<Array<IText>> = [[]];\n  /**\n   * Spacing Between rows of table\n   */\n  ySpacing = 0;\n  /**\n   * Spacing Between column of table\n   */\n  xSpacing = 0;\n\n  fontSize = 0;\n  /**\n   * Property used for showing the 'edit content' button\n   */\n  hasButton = true;\n\n  constructor(objects: FabricObject[] = [], options: Partial<TableProps> = {}) {\n    super(objects,options);\n  }\n\n\n  render(ctx: CanvasRenderingContext2D) {\n    this._transformDone = true;\n    super.render(ctx);\n    ctx.save();\n    this.transform(ctx);\n    this.renderTableBorders(ctx);\n    ctx.restore();\n    this._transformDone = false;\n  }\n\n\n  /**\n   * Draws the table/schedule border\n   * @param {CanvasRenderingContext2D} ctx context to draw on\n   */\n  renderTableBorders(ctx: CanvasRenderingContext2D) {\n    if (!this.stroke || this.strokeWidth === 0) {\n      return;\n    }\n    ctx.save();\n    this._setStrokeStyles(ctx, this);\n    ctx.strokeRect(\n      -(this.width / 2),\n      -(this.height / 2),\n      this.width,\n      this.height\n    );\n\n    // if custom table layout them draw rows and column border too\n    if (this.isTableLayout()) {\n      this.drawColumnBorders(ctx);\n      this.drawRowBorders(ctx);\n    }\n    ctx.restore();\n  }\n\n  public isTable(): this is Table{\n    return true;\n  }\n\n  /**\n   * This function is responsible for rendering the background of table.\n   * It loops over all the rows in the table and draws the appropriate color rectangle for each row.\n   * If more then one consecutive rows have background of same color then it draws a one big rectangle of that color.\n   * @param {CanvasRenderingContext2D} ctx context to render on\n   */\n  _renderBackground(ctx: CanvasRenderingContext2D) {\n    if (\n      (this.highlightedRows.length == 0 &&\n        !(this.alternateBackgroundColor1 && this.alternateBackgroundColor2)) ||\n      !this.isTableLayout()\n    ) {\n      super._renderBackground(ctx);\n      return;\n    }\n\n    const backgroundData = this.getTableBackGroundData();\n    ctx.save();\n    const objects = this.getObjects();\n    let top = null;\n    let height = null;\n    let renderBackground = false;\n\n    for (let i = 0; i < backgroundData.length; i++) {\n      renderBackground = false;\n      if (backgroundData[i] != 'none') {\n        if (top == null) {\n          if (i == 0) {\n            top = -this.height / 2;\n          } else {\n            top = objects[i].top - this.ySpacing / 2;\n          }\n        }\n\n        if (backgroundData[i] != backgroundData[i + 1]) {\n          // set height of rectangle to render\n          height =\n            Math.abs(top - objects[i].top) +\n            this.getHeightOfRow(i) +\n            this.ySpacing / 2;\n          renderBackground = true;\n\n          switch (backgroundData[i]) {\n            case 'highlight':\n              // @ts-ignore\n              ctx.fillStyle = this.highlightedRowsBackgroundColor;\n              break;\n            case 'color':\n              ctx.fillStyle = this.backgroundColor;\n              break;\n            case 'alternate1':\n              // @ts-ignore\n              ctx.fillStyle = this.alternateBackgroundColor1;\n              break;\n            case 'alternate2':\n              // @ts-ignore\n              ctx.fillStyle = this.alternateBackgroundColor2;\n              break;\n          }\n        } else {\n          renderBackground = false;\n        }\n\n        if (renderBackground) {\n          ctx.fillRect(-this.width / 2, top, this.width, height ?? 0);\n          top = null;\n          height = null;\n        }\n      }\n    }\n    ctx.restore();\n  }\n\n  /**\n   * Returns an array containing string values corresponding to rows background color.\n   * 'highlight' for selected rows\n   * 'color' for when colored background is selected by user\n   * 'alternate1' for even rows when alternate background is selected\n   * 'alternate2' for odd rows when alternate background is selected\n   * 'none' for transparent background\n   * @returns {Array}\n   */\n  getTableBackGroundData() {\n    const data = [];\n    for (let i = 0; i < this.rows; i++) {\n      if (this.highlightedRows.indexOf(i) != -1) {\n        data.push('highlight');\n      } else if (this.backgroundColor != null) {\n        data.push('color');\n      } else if (\n        this.alternateBackgroundColor1 &&\n        this.alternateBackgroundColor2\n      ) {\n        if (i % 2 == 0) {\n          data.push('alternate1');\n        } else {\n          data.push('alternate2');\n        }\n      } else {\n        data.push('none');\n      }\n    }\n    return data;\n  }\n\n  /**\n   * Returns the height of an item in a given row with max height,\n   * this value is basically the minimum space in y-axis needed by this row in a table.\n   * @param {Number} row\n   * @returns {Number}\n   */\n  getHeightOfRow(row: number) {\n    let height = 0,\n      h;\n    for (let i = 0; i < this.columns; i++) {\n      h = this.tableArray[i][row].calcTextHeight();\n      if (h > height) {\n        height = h;\n      }\n    }\n    return height;\n  }\n\n  /**\n   * Returns the width of an item in a given column with max width,\n   * this value is basically the minimum space in x-axis needed by this column in a table.\n   * @param {Number} column column index\n   * @returns {Number} minimum width required by this column\n   */\n  getWidthOfColumn(column: number) {\n    let width = 0,\n      w;\n    for (let i = 0; i < this.rows; i++) {\n      w = this.tableArray[column][i].calcTextWidth();\n      if (w > width) {\n        width = w;\n      }\n    }\n    return width;\n  }\n\n  /**\n   * renders border for table columns\n   * @param {CanvasRenderingContext2D} ctx context to render on\n   */\n  drawColumnBorders(ctx: CanvasRenderingContext2D) {\n    const objects = this.getObjects() as Array<IText>;\n    let x = this.rows,\n      maxWidth,\n      w,\n      itemIndex;\n    for (let i = 2; i <= this.columns; i++) {\n      maxWidth = 0;\n      while (objects[x] && objects[x].column == i) {\n        w = objects[x].width;\n        if (w > maxWidth) {\n          maxWidth = w;\n          itemIndex = x;\n        }\n        x++;\n      }\n      if(itemIndex) {\n        ctx.beginPath();\n        ctx.moveTo(\n          objects[itemIndex].left - this.xSpacing / 2,\n          -(this.height / 2)\n        );\n        ctx.lineTo(\n          objects[itemIndex].left - this.xSpacing / 2,\n          -(this.height / 2) + this.height\n        );\n        ctx.stroke();\n      }\n    }\n  }\n\n  /**\n   * renders border for table rows\n   * @param {CanvasRenderingContext2D} ctx context to render on\n   */\n  drawRowBorders(ctx: CanvasRenderingContext2D) {\n    const objects = this.getObjects();\n    for (let i = 1; i < this.rows; i++) {\n      const startX = -this.width / 2,\n        startY = objects[i].top - this.ySpacing / 2,\n        endX = startX + this.width,\n        endY = startY;\n      ctx.beginPath();\n      ctx.moveTo(startX, startY);\n      ctx.lineTo(endX, endY);\n      ctx.stroke();\n    }\n  }\n\n  /**\n   * Returns true if design is simple table structure('custom-table' or 'layout-1'), false otherwise\n   * @returns {boolean}\n   */\n  isTableLayout() {\n    return this.layoutType == 'layout-1' || this.layoutType == 'custom-table';\n  }\n}\n\nclassRegistry.setClass(Table);\nclassRegistry.setClass(Table, 'table');\n"],"names":["Table","Group","constructor","objects","arguments","length","undefined","options","_defineProperty","render","ctx","_transformDone","save","transform","renderTableBorders","restore","stroke","strokeWidth","_setStrokeStyles","strokeRect","width","height","isTableLayout","drawColumnBorders","drawRowBorders","isTable","_renderBackground","highlightedRows","alternateBackgroundColor1","alternateBackgroundColor2","backgroundData","getTableBackGroundData","getObjects","top","renderBackground","i","ySpacing","Math","abs","getHeightOfRow","fillStyle","highlightedRowsBackgroundColor","backgroundColor","fillRect","data","rows","indexOf","push","row","h","columns","tableArray","calcTextHeight","getWidthOfColumn","column","w","calcTextWidth","x","maxWidth","itemIndex","beginPath","moveTo","left","xSpacing","lineTo","startX","startY","endX","endY","layoutType","classRegistry","setClass"],"mappings":"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"}