{"version":3,"file":"use-columns-config.mjs","sources":["../../../../../packages/components/pro-table/src/use-columns-config.ts"],"sourcesContent":["import { ProTableColumn } from './pro-table'\nimport { shallowReactive, isReactive, watch, shallowRef, provide } from 'vue'\nimport type { ProTableProps } from './pro-table'\nimport { useRoute } from 'vue-router'\nimport { proTableColumnsKey } from './token'\nimport { dfs } from '@element-ultra/utils'\n\nexport function useColumnsConfig(props: ProTableProps) {\n  const route = useRoute()\n\n  const localKey = `pro-table-columns:${route.path}`\n\n  const cachedColumnsVal = localStorage.getItem(localKey)\n  const cachedColumns = cachedColumnsVal ? JSON.parse(cachedColumnsVal) : null\n\n  /** 原始列 */\n  let originalColumns: Record<string, ProTableColumn> = {}\n\n  const keys = ['fixed', 'align', 'width', 'visible']\n\n  function mergeColumn(column: ProTableColumn, columnToMerge: ProTableColumn) {\n    if (!columnToMerge) return\n\n    keys.forEach(key => {\n      // @ts-ignore\n      column[key] = columnToMerge[key]\n    })\n  }\n\n  /** 响应式列 */\n  const columns = shallowRef<ProTableColumn[]>([])\n\n  function recursive(columns: ProTableColumn[]) {\n    return columns?.map(column => {\n      // 响应式处理\n      if (!isReactive(column)) {\n        column = shallowReactive(column)\n      }\n\n      if (cachedColumns) {\n        const cachedColumn = cachedColumns[column.key]\n\n        if (cachedColumn) {\n          mergeColumn(column, cachedColumn)\n        }\n      }\n\n      if (column.children) {\n        column.children = recursive(column.children)\n      }\n\n      return column\n    })\n  }\n\n  watch(\n    () => props.columns,\n    c => {\n      originalColumns = {}\n      c &&\n        dfs(c, column => {\n          originalColumns[column.key] = JSON.parse(JSON.stringify(column))\n        })\n      columns.value = c ? recursive(c) : []\n    },\n    { immediate: true }\n  )\n\n  // 扁平化列\n  const flattedColumns = shallowRef<ProTableColumn[]>([])\n  const getFlattedColumns = (\n    columns: ProTableColumn[],\n    result: ProTableColumn[],\n    depth = 0\n  ) => {\n    columns.forEach(column => {\n      column.depth = depth\n      result.push(column)\n      column.children?.length &&\n        getFlattedColumns(column.children, result, depth + 1)\n    })\n\n    return result\n  }\n  watch(\n    columns,\n    columns => {\n      flattedColumns.value = getFlattedColumns(columns, [])\n    },\n    { immediate: true }\n  )\n\n  // 事件\n  const handleSave = () => {\n    localStorage.setItem(\n      localKey,\n      JSON.stringify(\n        flattedColumns.value.reduce((acc, item) => {\n          const { width, fixed, align, visible } = item\n          acc[item.key] = { width, fixed, align, visible }\n          return acc\n        }, {} as Record<string, any>)\n      )\n    )\n  }\n\n  const handleReset = () => {\n    localStorage.removeItem(localKey)\n    flattedColumns.value.forEach(item => {\n      mergeColumn(item, originalColumns[item.key])\n    })\n  }\n\n  provide(proTableColumnsKey, {\n    columns,\n    handleSave,\n    handleReset,\n    flattedColumns\n  })\n\n  return {\n    columns\n  }\n}\n"],"names":["columns"],"mappings":";;;;;;AAOO,SAAS,iBAAiB,KAAsB,EAAA;AACrD,EAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,EAAM,MAAA,QAAA,GAAW,qBAAqB,KAAM,CAAA,IAAA,CAAA,CAAA,CAAA;AAE5C,EAAM,MAAA,gBAAA,GAAmB,YAAa,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AACtD,EAAA,MAAM,aAAgB,GAAA,gBAAA,GAAmB,IAAK,CAAA,KAAA,CAAM,gBAAgB,CAAI,GAAA,IAAA,CAAA;AAGxE,EAAA,IAAI,kBAAkD,EAAC,CAAA;AAEvD,EAAA,MAAM,IAAO,GAAA,CAAC,OAAS,EAAA,OAAA,EAAS,SAAS,SAAS,CAAA,CAAA;AAElD,EAAS,SAAA,WAAA,CAAY,QAAwB,aAA+B,EAAA;AAC1E,IAAA,IAAI,CAAC,aAAA;AAAe,MAAA,OAAA;AAEpB,IAAA,IAAA,CAAK,QAAQ,CAAO,GAAA,KAAA;AAElB,MAAO,MAAA,CAAA,GAAG,CAAI,GAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAAA,KAChC,CAAA,CAAA;AAAA,GACH;AAGA,EAAM,MAAA,OAAA,GAAU,UAA6B,CAAA,EAAE,CAAA,CAAA;AAE/C,EAAA,SAAS,UAAUA,QAA2B,EAAA;AAC5C,IAAA,OAAOA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,QAAS,CAAA,GAAA,CAAI,CAAU,MAAA,KAAA;AAE5B,MAAI,IAAA,CAAC,UAAW,CAAA,MAAM,CAAG,EAAA;AACvB,QAAA,MAAA,GAAS,gBAAgB,MAAM,CAAA,CAAA;AAAA,OACjC;AAEA,MAAA,IAAI,aAAe,EAAA;AACjB,QAAM,MAAA,YAAA,GAAe,aAAc,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAE7C,QAAA,IAAI,YAAc,EAAA;AAChB,UAAA,WAAA,CAAY,QAAQ,YAAY,CAAA,CAAA;AAAA,SAClC;AAAA,OACF;AAEA,MAAA,IAAI,OAAO,QAAU,EAAA;AACnB,QAAO,MAAA,CAAA,QAAA,GAAW,SAAU,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,OAC7C;AAEA,MAAO,OAAA,MAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAAA,GACF;AAEA,EAAA,KAAA;AAAA,IACE,MAAM,KAAM,CAAA,OAAA;AAAA,IACZ,CAAK,CAAA,KAAA;AACH,MAAA,eAAA,GAAkB,EAAC,CAAA;AACnB,MACE,CAAA,IAAA,GAAA,CAAI,GAAG,CAAU,MAAA,KAAA;AACf,QAAgB,eAAA,CAAA,MAAA,CAAO,GAAG,CAAI,GAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,MAAM,CAAC,CAAA,CAAA;AAAA,OAChE,CAAA,CAAA;AACH,MAAA,OAAA,CAAQ,KAAQ,GAAA,CAAA,GAAI,SAAU,CAAA,CAAC,IAAI,EAAC,CAAA;AAAA,KACtC;AAAA,IACA,EAAE,WAAW,IAAK,EAAA;AAAA,GACpB,CAAA;AAGA,EAAM,MAAA,cAAA,GAAiB,UAA6B,CAAA,EAAE,CAAA,CAAA;AACtD,EAAA,MAAM,iBAAoB,GAAA,CACxBA,QACA,EAAA,MAAA,EACA,QAAQ,CACL,KAAA;AACH,IAAAA,QAAAA,CAAQ,QAAQ,CAAU,MAAA,KAAA;AA3E9B,MAAA,IAAA,EAAA,CAAA;AA4EM,MAAA,MAAA,CAAO,KAAQ,GAAA,KAAA,CAAA;AACf,MAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAClB,MAAO,CAAA,CAAA,EAAA,GAAA,MAAA,CAAA,QAAA,KAAP,mBAAiB,MACf,KAAA,iBAAA,CAAkB,OAAO,QAAU,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA,CAAA;AAAA,KACvD,CAAA,CAAA;AAED,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,CAAAA,QAAW,KAAA;AACT,MAAA,cAAA,CAAe,KAAQ,GAAA,iBAAA,CAAkBA,QAAS,EAAA,EAAE,CAAA,CAAA;AAAA,KACtD;AAAA,IACA,EAAE,WAAW,IAAK,EAAA;AAAA,GACpB,CAAA;AAGA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAa,YAAA,CAAA,OAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAK,CAAA,SAAA;AAAA,QACH,cAAe,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,KAAK,IAAS,KAAA;AACzC,UAAA,MAAM,EAAE,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,SAAY,GAAA,IAAA,CAAA;AACzC,UAAA,GAAA,CAAI,KAAK,GAAG,CAAA,GAAI,EAAE,KAAO,EAAA,KAAA,EAAO,OAAO,OAAQ,EAAA,CAAA;AAC/C,UAAO,OAAA,GAAA,CAAA;AAAA,SACT,EAAG,EAAyB,CAAA;AAAA,OAC9B;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,YAAA,CAAa,WAAW,QAAQ,CAAA,CAAA;AAChC,IAAe,cAAA,CAAA,KAAA,CAAM,QAAQ,CAAQ,IAAA,KAAA;AACnC,MAAA,WAAA,CAAY,IAAM,EAAA,eAAA,CAAgB,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,KAC5C,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,OAAA,CAAQ,kBAAoB,EAAA;AAAA,IAC1B,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,GACF,CAAA;AACF;;;;"}