{
  "version": 3,
  "sources": ["../../src/handlers/tables.ts"],
  "sourcesContent": ["import type {\n  AppIdInternal,\n  BlockRecordInternal,\n  DXFTuple,\n  DimStyleInternal,\n  LTypeElement,\n  LTypeInternal,\n  LayerInternal,\n  StyleInternal,\n  UcsInternal,\n  VPortInternal,\n  ViewInternal,\n} from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n  let element: LTypeElement | undefined\n  let offset: { x: string | number; y: string | number } | undefined\n  return tuples.reduce(\n    (layer, tuple) => { // NOSONAR\n      const type = tuple[0]\n      const value = tuple[1]\n      // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n      switch (type) {\n        case 2:\n          layer.name = value\n          break\n        case 3:\n          layer.description = value\n          break\n        case 70:\n          // Standard flag values (bit-coded values):\n          //  16 = If set, table entry is externally dependent on an xref\n          //  32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n          //  64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files)\n          layer.flag = value\n          break\n        case 72:\n          // Alignment code (value is always 65, the ASCII code for A):\n          layer.alignment = value\n          break\n        case 73:\n          layer.elementCount = Number.parseInt(String(value))\n          break\n        case 40:\n          layer.patternLength = value\n          break\n        case 49:\n          element = { length: value }\n          layer.pattern.push(element)\n          break\n        case 74:\n          // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n          //  1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n          //  2 = Embedded element is a text string\n          //  4 = Embedded element is a shape\n          if (element) {\n            element.shape = value\n          }\n          break\n        case 75:\n          if (element) {\n            element.shapeNumber = value\n          }\n          break\n        case 340:\n          if (element) {\n            element.styleHandle = value\n          }\n          break\n        case 46:\n          if (element) {\n            element.scales ??= []\n            element.scales.push(value)\n          }\n          break\n        case 50:\n          if (element) {\n            element.rotation = value\n          }\n          break\n        case 44:\n          offset = { x: value, y: 0 }\n          if (element) {\n            element.offset ??= []\n            element.offset.push(offset)\n          }\n          break\n        case 45:\n          if (offset) {\n            offset.y = value\n          }\n          break\n        case 9:\n          if (element) {\n            element.text = value\n          }\n          break\n        default:\n      }\n      return layer\n    },\n    { type: 'LTYPE', pattern: [] } as LTypeInternal,\n  )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n  return tuples.reduce(\n    (layer, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n      // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n      switch (type) {\n        case 2:\n          layer.name = value\n          break\n        case 6:\n          layer.lineTypeName = value\n          break\n        case 62:\n          layer.colorNumber = value\n          break\n        case 70:\n          layer.flags = value\n          break\n        case 290:\n          layer.plot = Number.parseInt(String(value)) !== 0\n          break\n        case 370:\n          layer.lineWeightEnum = value\n          break\n        default:\n      }\n      return layer\n    },\n    { type: 'LAYER' } as LayerInternal,\n  )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n  return tuples.reduce(\n    (style, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n      switch (type) {\n        case 2:\n          style.name = value\n          break\n        case 6:\n          style.lineTypeName = value\n          break\n        case 40:\n          style.fixedTextHeight = value\n          break\n        case 41:\n          style.widthFactor = value\n          break\n        case 50:\n          style.obliqueAngle = value\n          break\n        case 71:\n          style.flags = value\n          break\n        case 42:\n          style.lastHeightUsed = value\n          break\n        case 3:\n          style.primaryFontFileName = value\n          break\n        case 4:\n          style.bigFontFileName = value\n          break\n        default:\n      }\n      return style\n    },\n    { type: 'STYLE' } as StyleInternal,\n  )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n  return tuples.reduce(\n    (vport, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n      switch (type) { // NOSONAR\n        case 2:\n          vport.name = value\n          break\n        case 5:\n          vport.handle = value\n          break\n        case 70:\n          vport.flags = value\n          break\n        case 10:\n          vport.lowerLeft.x = Number.parseFloat(String(value))\n          break\n        case 20:\n          vport.lowerLeft.y = Number.parseFloat(String(value))\n          break\n        case 11:\n          vport.upperRight.x = Number.parseFloat(String(value))\n          break\n        case 21:\n          vport.upperRight.y = Number.parseFloat(String(value))\n          break\n        case 12:\n          vport.center.x = Number.parseFloat(String(value))\n          break\n        case 22:\n          vport.center.y = Number.parseFloat(String(value))\n          break\n        case 14:\n          vport.snapSpacing.x = Number.parseFloat(String(value))\n          break\n        case 24:\n          vport.snapSpacing.y = Number.parseFloat(String(value))\n          break\n        case 15:\n          vport.gridSpacing.x = Number.parseFloat(String(value))\n          break\n        case 25:\n          vport.gridSpacing.y = Number.parseFloat(String(value))\n          break\n        case 16:\n          vport.direction.x = Number.parseFloat(String(value))\n          break\n        case 26:\n          vport.direction.y = Number.parseFloat(String(value))\n          break\n        case 36:\n          vport.direction.z = Number.parseFloat(String(value))\n          break\n        case 17:\n          vport.target.x = Number.parseFloat(String(value))\n          break\n        case 27:\n          vport.target.y = Number.parseFloat(String(value))\n          break\n        case 37:\n          vport.target.z = Number.parseFloat(String(value))\n          break\n        case 45:\n          vport.height = Number.parseFloat(String(value))\n          break\n        case 50:\n          vport.snapAngle = Number.parseFloat(String(value))\n          break\n        case 51:\n          vport.angle = Number.parseFloat(String(value))\n          break\n        case 110:\n          vport.x = Number.parseFloat(String(value))\n          break\n        case 120:\n          vport.y = Number.parseFloat(String(value))\n          break\n        case 130:\n          vport.z = Number.parseFloat(String(value))\n          break\n        case 111:\n          vport.xAxisX = Number.parseFloat(String(value))\n          break\n        case 121:\n          vport.xAxisY = Number.parseFloat(String(value))\n          break\n        case 131:\n          vport.xAxisZ = Number.parseFloat(String(value))\n          break\n        case 112:\n          vport.xAxisX = Number.parseFloat(String(value))\n          break\n        case 122:\n          vport.xAxisY = Number.parseFloat(String(value))\n          break\n        case 132:\n          vport.xAxisZ = Number.parseFloat(String(value))\n          break\n        case 146:\n          vport.elevation = Number.parseFloat(String(value))\n          break\n        default:\n      }\n      return vport\n    },\n    {\n      type: 'VPORT',\n      center: {},\n      lowerLeft: {},\n      upperRight: {},\n      snap: {},\n      snapSpacing: {},\n      gridSpacing: {},\n      direction: {},\n      target: {},\n    } as VPortInternal,\n  )\n}\n\nconst appIdHandler = (tuples: DXFTuple[]): AppIdInternal => {\n  return tuples.reduce(\n    (appId, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n\n      switch (type) {\n        case 2:\n          appId.name = value\n          break\n        case 70:\n          appId.flags = value\n          break\n        default:\n      }\n\n      return appId\n    },\n    { type: 'APPID' } as AppIdInternal,\n  )\n}\n\nconst blockRecordHandler = (tuples: DXFTuple[]): BlockRecordInternal => {\n  return tuples.reduce(\n    (blockRecord, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n\n      switch (type) {\n        case 2:\n          blockRecord.name = value\n          break\n        case 70:\n          blockRecord.flags = value\n          break\n        default:\n      }\n\n      return blockRecord\n    },\n    { type: 'BLOCK_RECORD' } as BlockRecordInternal,\n  )\n}\n\nconst ucsHandler = (tuples: DXFTuple[]): UcsInternal => {\n  return tuples.reduce(\n    (ucs, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n\n      switch (type) {\n        case 2:\n          ucs.name = value\n          break\n        case 70:\n          ucs.flags = value\n          break\n        default:\n      }\n\n      return ucs\n    },\n    { type: 'UCS' } as UcsInternal,\n  )\n}\n\nconst viewHandler = (tuples: DXFTuple[]): ViewInternal => {\n  return tuples.reduce(\n    (view, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n\n      switch (type) {\n        case 2:\n          view.name = value\n          break\n        case 70:\n          view.flags = value\n          break\n        default:\n      }\n\n      return view\n    },\n    { type: 'VIEW' } as ViewInternal,\n  )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n  return tuples.reduce(\n    (dimStyle, tuple) => {\n      const type = tuple[0]\n      const value = tuple[1]\n      switch (type) { // NOSONAR\n        case 2:\n          dimStyle.name = value\n          break\n        case 70:\n          dimStyle.flags = value\n          break\n        case 3:\n          dimStyle.dimPost = value\n          break\n        case 4:\n          dimStyle.dimAPost = value\n          break\n        case 40:\n          dimStyle.dimScale = Number.parseFloat(String(value))\n          break\n        case 41:\n          dimStyle.dimAsz = Number.parseFloat(String(value))\n          break\n        case 42:\n          dimStyle.dimExo = Number.parseFloat(String(value))\n          break\n        case 43:\n          dimStyle.dimDli = Number.parseFloat(String(value))\n          break\n        case 44:\n          dimStyle.dimExe = Number.parseFloat(String(value))\n          break\n        case 45:\n          dimStyle.dimRnd = Number.parseFloat(String(value))\n          break\n        case 46:\n          dimStyle.dimDle = Number.parseFloat(String(value))\n          break\n        case 47:\n          dimStyle.dimTp = Number.parseFloat(String(value))\n          break\n        case 48:\n          dimStyle.dimTm = Number.parseFloat(String(value))\n          break\n        case 140:\n          dimStyle.dimTxt = Number.parseFloat(String(value))\n          break\n        case 141:\n          dimStyle.dimCen = Number.parseFloat(String(value))\n          break\n        case 142:\n          dimStyle.dimTsz = Number.parseFloat(String(value))\n          break\n        case 143:\n          dimStyle.dimAltf = Number.parseFloat(String(value))\n          break\n        case 144:\n          dimStyle.dimLfac = Number.parseFloat(String(value))\n          break\n        case 145:\n          dimStyle.dimTvp = Number.parseFloat(String(value))\n          break\n        case 146:\n          dimStyle.dimTfac = Number.parseFloat(String(value))\n          break\n        case 147:\n          dimStyle.dimGap = Number.parseFloat(String(value))\n          break\n        case 148:\n          dimStyle.dimAltRnd = Number.parseFloat(String(value))\n          break\n        case 71:\n          dimStyle.dimTol = Number.parseInt(String(value))\n          break\n        case 72:\n          dimStyle.dimLim = Number.parseInt(String(value))\n          break\n        case 73:\n          dimStyle.dimTih = Number.parseInt(String(value))\n          break\n        case 74:\n          dimStyle.dimToh = Number.parseInt(String(value))\n          break\n        case 75:\n          dimStyle.dimSe1 = Number.parseInt(String(value))\n          break\n        case 76:\n          dimStyle.dimSe2 = Number.parseInt(String(value))\n          break\n        case 77:\n          dimStyle.dimTad = Number.parseInt(String(value))\n          break\n        case 78:\n          dimStyle.dimZin = Number.parseInt(String(value))\n          break\n        case 79:\n          dimStyle.dimAzin = Number.parseInt(String(value))\n          break\n        case 170:\n          dimStyle.dimAlt = Number.parseInt(String(value))\n          break\n        case 171:\n          dimStyle.dimAltd = Number.parseInt(String(value))\n          break\n        case 172:\n          dimStyle.dimTofl = Number.parseInt(String(value))\n          break\n        case 173:\n          dimStyle.dimSah = Number.parseInt(String(value))\n          break\n        case 174:\n          dimStyle.dimTix = Number.parseInt(String(value))\n          break\n        case 175:\n          dimStyle.dimSoxd = Number.parseInt(String(value))\n          break\n        case 176:\n          dimStyle.dimClrd = Number.parseInt(String(value))\n          break\n        case 177:\n          dimStyle.dimClre = Number.parseInt(String(value))\n          break\n        case 178:\n          dimStyle.dimClrt = Number.parseInt(String(value))\n          break\n        case 179:\n          dimStyle.dimAdec = Number.parseInt(String(value))\n          break\n        case 270:\n          dimStyle.dimUnit = Number.parseInt(String(value))\n          break\n        case 271:\n          dimStyle.dimDec = Number.parseInt(String(value))\n          break\n        case 272:\n          dimStyle.dimTdec = Number.parseInt(String(value))\n          break\n        case 273:\n          dimStyle.dimAltu = Number.parseInt(String(value))\n          break\n        case 274:\n          dimStyle.dimAlttd = Number.parseInt(String(value))\n          break\n        case 275:\n          dimStyle.dimAunit = Number.parseInt(String(value))\n          break\n        case 276:\n          dimStyle.dimFrac = Number.parseInt(String(value))\n          break\n        case 277:\n          dimStyle.dimLunit = Number.parseInt(String(value))\n          break\n        case 278:\n          dimStyle.dimDsep = Number.parseInt(String(value))\n          break\n        case 279:\n          dimStyle.dimTmove = Number.parseInt(String(value))\n          break\n        case 280:\n          dimStyle.dimJust = Number.parseInt(String(value))\n          break\n        case 281:\n          dimStyle.dimSd1 = Number.parseInt(String(value))\n          break\n        case 282:\n          dimStyle.dimSd2 = Number.parseInt(String(value))\n          break\n        case 283:\n          dimStyle.dimTolj = Number.parseInt(String(value))\n          break\n        case 284:\n          dimStyle.dimTzin = Number.parseInt(String(value))\n          break\n        case 285:\n          dimStyle.dimAltz = Number.parseInt(String(value))\n          break\n        case 286:\n          dimStyle.dimAlttz = Number.parseInt(String(value))\n          break\n        case 287:\n          dimStyle.dimFit = Number.parseInt(String(value))\n          break\n        case 288:\n          dimStyle.dimUpt = Number.parseInt(String(value))\n          break\n        case 289:\n          dimStyle.dimAtfit = Number.parseInt(String(value))\n          break\n        case 340:\n          dimStyle.dimTxsty = value\n          break\n        case 341:\n          dimStyle.dimLdrblk = value\n          break\n        case 342:\n          dimStyle.dimBlk = value\n          break\n        case 343:\n          dimStyle.dimBlk1 = value\n          break\n        case 344:\n          dimStyle.dimBlk2 = value\n          break\n        case 371:\n          dimStyle.dimLwd = Number.parseInt(String(value))\n          break\n        case 372:\n          dimStyle.dimLwe = Number.parseInt(String(value))\n          break\n        default:\n      }\n      return dimStyle\n    },\n    { type: 'DIMSTYLE' } as DimStyleInternal,\n  )\n}\n\nconst tableHandler = (\n  tuples: DXFTuple[],\n  tableType: string,\n  handler: (\n    tuples: DXFTuple[],\n  ) =>\n    | LTypeInternal\n    | LayerInternal\n    | StyleInternal\n    | VPortInternal\n    | DimStyleInternal\n    | AppIdInternal\n    | BlockRecordInternal\n    | UcsInternal\n    | ViewInternal,\n): Record<string, any> => {\n  const tableRowsTuples: DXFTuple[][] = []\n\n  let tableRowTuples: DXFTuple[] | undefined\n  for (const tuple of tuples) {\n    const type = tuple[0]\n    const value = tuple[1]\n    if ((type === 0 || type === 2) && value === tableType) {\n      tableRowTuples = []\n      tableRowsTuples.push(tableRowTuples)\n    } else if (tableRowTuples) {\n      tableRowTuples.push(tuple)\n    }\n  }\n\n  return tableRowsTuples.reduce((acc, rowTuples) => {\n    const tableRow = handler(rowTuples)\n    if (tableRow.name) {\n      acc[String(tableRow.name)] = tableRow\n    } else {\n      logger.warn('table row without name:', tableRow)\n    }\n    return acc\n  }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n  const tableGroups: DXFTuple[][] = []\n  let tableTuples: DXFTuple[] | undefined\n  for (const tuple of tuples) {\n    const value = tuple[1]\n    if (value === 'TABLE') {\n      tableTuples = []\n      tableGroups.push(tableTuples)\n    } else if (value === 'ENDTAB') {\n      if (tableTuples) {\n        tableGroups.push(tableTuples)\n      }\n    } else if (tableTuples) {\n      tableTuples.push(tuple)\n    }\n  }\n\n  const groupsByName: Record<string, DXFTuple[]> = {}\n  for (const group of tableGroups) {\n    const name = String(group[0]?.[1] ?? '')\n    if (!name) continue\n    groupsByName[name] = group\n  }\n\n  const stylesTuples = groupsByName.STYLE ?? []\n  const layersTuples = groupsByName.LAYER ?? []\n  const vPortTuples = groupsByName.VPORT ?? []\n  const ltypeTuples = groupsByName.LTYPE ?? []\n  const dimStyleTuples = groupsByName.DIMSTYLE ?? []\n  const appIdTuples = groupsByName.APPID ?? []\n  const blockRecordTuples = groupsByName.BLOCK_RECORD ?? []\n  const ucsTuples = groupsByName.UCS ?? []\n  const viewTuples = groupsByName.VIEW ?? []\n\n  return {\n    layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n    styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n    vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n    ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n    dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n    appids: tableHandler(appIdTuples, 'APPID', appIdHandler),\n    blockRecords: tableHandler(blockRecordTuples, 'BLOCK_RECORD', blockRecordHandler),\n    ucs: tableHandler(ucsTuples, 'UCS', ucsHandler),\n    views: tableHandler(viewTuples, 'VIEW', viewHandler),\n  }\n}\n"],
  "mappings": "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",
  "names": ["logger"]
}
