{"version":3,"file":"use-card-actions2.mjs","sources":["../../../../../../../../../packages/components/file/src/FileCard/hooks/use-card-actions.ts"],"sourcesContent":["import { type ComputedRef, type WritableComputedRef, toRaw } from 'vue'\nimport { type FileActionUploadApiResponseRecord, type GlobalConfigFileProps } from '../../typings'\nimport { type FileCardProps } from '../types'\nimport { type ReturnOf, sleep } from './../../utils'\n\nexport interface CardCreateRowsOptions {\n  /** 要新增的行数据 */\n  rows: FileActionUploadApiResponseRecord[]\n  /** 插入行的位置 */\n  position?: FileActionUploadApiResponseRecord[] | FileActionUploadApiResponseRecord | null | -1\n  /** 使用组件内部 loading 状态 */\n  useLoading?: boolean\n}\n\nexport interface CardReadRowsOptions {\n  /** 使用组件内部 loading 状态 */\n  useLoading?: boolean\n}\n\nexport interface CardUpdateRowsOptions {\n  /** 要新增的行数据 */\n  rows: FileActionUploadApiResponseRecord[]\n  /** 要删除的行数据 */\n  deleteRows: FileActionUploadApiResponseRecord[]\n  /** 使用组件内部 loading 状态 */\n  useLoading?: boolean\n}\n\nexport interface CardDeleteRowsOptions {\n  /** 要删除的行数据，不传的话默认删除全部 */\n  rows?: FileActionUploadApiResponseRecord[]\n  /** 使用组件内部 loading 状态 */\n  useLoading?: boolean\n}\n\n/**\n * 封装 card 操作数据的方法\n * @param options\n * @returns\n */\nexport function useCardActions(options: {\n  mergedProps: ComputedRef<GlobalConfigFileProps & FileCardProps>\n  dataSource: ComputedRef<FileActionUploadApiResponseRecord[]>\n  setDataSource: (data: FileActionUploadApiResponseRecord[]) => void\n  loading: WritableComputedRef<any>\n}) {\n  const { dataSource: _dataSource, setDataSource, loading } = options\n\n  async function cardCreateRows(_options: CardCreateRowsOptions) {\n    const { rows, position = null, useLoading } = _options\n    const dataSource = JSON.parse(\n      JSON.stringify(_dataSource.value)\n    ) as FileActionUploadApiResponseRecord[]\n\n    if (useLoading !== undefined && useLoading) loading.value.value = true\n    let promiseAll\n    if (Array.isArray(position)) {\n      promiseAll = toRaw(rows).map(async (row, idx) => {\n        // 根据 id 查询要插入 row 的位置\n        const _idx = dataSource.findIndex((d) => d.id === position[idx].id)\n        dataSource.splice(_idx, 0, row)\n        return Promise.resolve()\n      })\n    } else {\n      promiseAll = toRaw(rows).map(async (row) => {\n        if (position === null) {\n          // 顶部\n          dataSource.splice(0, 0, row)\n        } else if (position === -1) {\n          // 底部\n          dataSource.splice(dataSource.length, 0, row)\n        } else {\n          // 根据 id 查询要插入 row 的位置\n          const idx = dataSource.findIndex((d) => d.id === position.id)\n          dataSource.splice(idx, 0, row)\n        }\n        return Promise.resolve()\n      })\n    }\n    await Promise.all(promiseAll)\n    setDataSource(dataSource)\n    if (useLoading !== undefined && useLoading) loading.value.value = false\n  }\n\n  async function cardReadRows(_options: CardReadRowsOptions = {}) {\n    const { useLoading } = _options\n    const dataSource = JSON.parse(\n      JSON.stringify(_dataSource.value)\n    ) as FileActionUploadApiResponseRecord[]\n\n    if (useLoading !== undefined && useLoading) loading.value.value = true\n    await sleep(150)\n    if (useLoading !== undefined && useLoading) loading.value.value = false\n    return dataSource\n  }\n\n  async function cardUpdateRows(_options: CardUpdateRowsOptions) {\n    const { rows, deleteRows, useLoading } = _options\n    const dataSource = JSON.parse(\n      JSON.stringify(_dataSource.value)\n    ) as FileActionUploadApiResponseRecord[]\n\n    if (useLoading !== undefined && useLoading) loading.value.value = true\n    const promiseAll = toRaw(rows).map((row, idx) => {\n      // 根据 id 查询要插入 row 的位置\n      const _idx = dataSource.findIndex((d) => d.id === deleteRows[idx].id)\n      dataSource.splice(_idx, 1, row)\n      return Promise.resolve()\n    })\n    await Promise.all(promiseAll)\n    setDataSource(dataSource)\n    if (useLoading !== undefined && useLoading) loading.value.value = false\n  }\n\n  async function cardDeleteRows(_options: CardDeleteRowsOptions) {\n    const { rows, useLoading } = _options\n    let dataSource = JSON.parse(\n      JSON.stringify(_dataSource.value)\n    ) as FileActionUploadApiResponseRecord[]\n\n    if (useLoading !== undefined && useLoading) loading.value.value = true\n    // 指定 row 或 [row, ...] 删除多条数据，如果为空则删除所有数据\n    if (rows === undefined) {\n      dataSource = []\n    } else {\n      toRaw(rows).forEach((row) => {\n        // 根据 id 查询要插入 row 的位置\n        const idx = dataSource.findIndex((d) => d.id === row.id)\n        dataSource.splice(idx, 1)\n      })\n    }\n    setDataSource(dataSource)\n    if (useLoading !== undefined && useLoading) loading.value.value = false\n  }\n\n  return {\n    cardCreateRows,\n    cardReadRows,\n    cardUpdateRows,\n    cardDeleteRows,\n  }\n}\n\nexport type UseCardActionsReturn = ReturnOf<typeof useCardActions>\n"],"names":[],"mappings":"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"}