tav-ui
Version:
1 lines • 13.9 kB
Source Map (JSON)
{"version":3,"file":"hooks2.mjs","sources":["../../../../../../../packages/components/upload/src/hooks.ts"],"sourcesContent":["import { computed } from 'vue'\n// import { clone } from 'xe-utils'\nimport type { Handler } from './main'\nimport type { FileItemType, LabelValueOptions, Recordable } from './types'\n\n/**\n * ***begin***\n * ```javascript\n * <TaUpload @register=\"register\" />\n *\n * const { register, getHandler } = useHandlerInOuter();\n *\n * getHandler().backfill()\n *\n * return {\n * register\n * }\n * ```\n * ***end***\n * @returns hooks\n */\nexport const useHandlerInOuter = () => {\n let outerHandler: Handler\n\n const register = (handler: Handler) => {\n outerHandler = handler\n }\n\n const getHandler = () => {\n if (!outerHandler) {\n console.error(\"no register, handler it's undefined\\ntry onMounted & nextTick\")\n }\n return outerHandler\n }\n\n const backfill = () => getHandler()?.backfill()\n\n const clearResponse = () => getHandler()?.clearResponse()\n\n return { register, backfill, getHandler, clearResponse }\n}\n\nexport const useFileTypeCode = (fileTypeCode: Recordable<LabelValueOptions<string, any>>) => {\n /**\n * **用typeCode数组,匹配文件类型的选项**\n * @param {string[]} typeCodeArray\n * @returns {LabelValueOptions} LabelValueOptions\n */\n const getOptionsByTypeCodes = (typeCodeArray: string[]) =>\n computed(() => {\n const options: LabelValueOptions<string> = []\n const typeCodeArraySet = [...new Set(typeCodeArray)]\n for (const key in fileTypeCode) {\n options.push(...fileTypeCode[key].filter((el) => typeCodeArraySet.includes(el.value)))\n }\n return options\n })\n\n /**\n * **用前缀匹配module下的typeCodeArray**\n * @param prefix string\n * @returns {LabelValueOptions} LabelValueOptions\n */\n const getOptionsByModuleCodePrefix = (prefix: string | string[]) => {\n if (!Array.isArray(prefix)) {\n prefix = [prefix]\n }\n const onlyPrefix = [...new Set(prefix)]\n const moduleCodes: string[] = []\n onlyPrefix.forEach((prefix) => {\n moduleCodes.push(...Object.keys(fileTypeCode).filter((el) => el.startsWith(prefix)))\n })\n return getOptionsByModuleCode(moduleCodes as string[])\n }\n\n /**\n * @param moduleCode\n * @returns {LabelValueOptions} LabelValueOptions\n */\n const getOptionsByModuleCode = (moduleCode: string | string[]) =>\n Array.isArray(moduleCode)\n ? [...new Set(moduleCode)].map((el) => fileTypeCode[el]).reduce((x, y) => x.concat(y), [])\n : fileTypeCode[moduleCode]\n\n /**\n * @param moduleCode\n * @param typeCodeArray\n * @param moduleCodePrefix\n * @returns {LabelValueOptions} LabelValueOptions\n */\n const mergeOptions = (\n moduleCode?: string | string[],\n typeCodeArray?: string[],\n moduleCodePrefix?: string | string[]\n ) => {\n const options = ((moduleCode && getOptionsByModuleCode(moduleCode)) || ([] as any[]))\n .concat(undefined !== typeCodeArray ? getOptionsByTypeCodes(typeCodeArray).value : [])\n .concat(undefined !== moduleCodePrefix ? getOptionsByModuleCodePrefix(moduleCodePrefix) : [])\n if (!(options && options.length)) {\n return []\n }\n const result: LabelValueOptions<string> = []\n options.forEach((el) => {\n if (\n el &&\n !result.some((resItem) => resItem.value === el.value && resItem.label === el.label)\n ) {\n result.push(el)\n }\n })\n\n return result\n }\n\n return {\n mergeOptions,\n getOptionsByTypeCodes,\n getOptionsByModuleCode,\n getOptionsByModuleCodePrefix,\n }\n}\n\n/**\n * 操作列按钮所需要的最大列宽度\n * @param arr ${string[]}\n * @param param1 config { margin=40, fontSize=12, appendWidth=10 }\n * @returns maxWidth ${number}\n */\nexport function getActionColumnMaxWidth(\n arr: string[],\n {\n margin = 17,\n fontSize = 12,\n appendWidth = 10,\n }: {\n margin?: number\n fontSize?: number\n appendWidth?: number\n } = {}\n) {\n // TableAction 组件最多展示3个按钮, 间距为 20+20\n let l = 0\n arr.sort((x, y) => y.length - x.length)\n const _arr = arr.splice(0, 3)\n for (const str of _arr) {\n const [text, dots] = str.split('..')\n l += text.length * fontSize\n if (dots) {\n l += 2 * 4\n }\n l += margin\n }\n l += appendWidth * 2\n return l\n}\n\nexport type UseFileFormatterParamsType = {\n /**\n * 更新时保存多少文件历史版本\n *\n * `\"newest\"` 仅保留最后一次更新\n *\n * `\"all\"` 保留当前版本往后所有更新\n * @default \"newest\"\n */\n fileVersionCount?: 'newest' | 'all'\n}\n\nexport function useFileFormatter({ fileVersionCount = 'newest' }: UseFileFormatterParamsType = {}) {\n const versionRecord: Partial<Recordable<FileItemType[]>> = {}\n\n function upadteVersion(file: FileItemType) {\n const existFile = versionRecord[file.actualId!]?.find((el) => el.id === file.id)\n\n if (existFile) {\n /**\n * 文件名更新 || 超链接更新\n */\n if (existFile.name !== file.name || existFile.address !== file.address) {\n /**\n * ```ts\n * [v1File, v2File] as const\n * ```\n */\n const fileArr = versionRecord[existFile.actualId!]\n\n if (fileArr) {\n const lastIndex = fileArr.length - 1\n\n fileArr[lastIndex] = file\n }\n }\n return\n }\n\n if (fileVersionCount === 'newest') {\n if (versionRecord[file.actualId!]) {\n if (\n file.version === 0 &&\n getBasicFileByActualId(file.actualId!)!.version === 1 &&\n !(\n getBasicFileByActualId(file.actualId!)!.businessId ||\n getBasicFileByActualId(file.actualId!)!.businessKey\n )\n ) {\n file.version = 1\n } else {\n file.version = versionRecord[file.actualId!]![0].version + 1\n }\n versionRecord[file.actualId!]![1] = file\n } else {\n versionRecord[file.actualId!] = [file]\n }\n\n return\n }\n\n if (versionRecord[file.actualId!]) {\n // 维护文件唯一性\n if (versionRecord[file.actualId!]?.some((el) => file.id === el.id)) return\n\n versionRecord[file.actualId!]!.push(file)\n } else {\n versionRecord[file.actualId!] = [file]\n }\n }\n\n function formatToApi(files: FileItemType[]) {\n const currentFileActualIdsSet = new Set<string>()\n\n for (const file of files) {\n upadteVersion(file)\n\n currentFileActualIdsSet.add(file.actualId!)\n }\n\n for (const actualId in versionRecord) {\n // 有删除操作时\n currentFileActualIdsSet.has(actualId) || Reflect.deleteProperty(versionRecord, actualId)\n }\n\n // const cloneVersionRecord = clone(versionRecord, true)\n // versionRecord = {}\n\n return Object.keys(versionRecord).map((k) => ({\n actualId: k,\n moduleCode: versionRecord[k]![0].moduleCode,\n versionList: [versionRecord[k]![1] || versionRecord[k]![0]],\n }))\n }\n\n /**\n * @param actualId\n * @returns\n */\n function getFilesByActualId(actualId: string) {\n return versionRecord[actualId]\n }\n\n /**\n * 初始化时的文件\n * @param actualId\n * @returns\n */\n function getBasicFileByActualId(actualId: string) {\n return getFilesByActualId(actualId)?.[0]\n }\n\n /**\n * 最后一次点击更新后的文件\n * @param actualId\n * @returns\n */\n function getNewestFileByActualId(actualId: string) {\n return getFilesByActualId(actualId)?.[1]\n }\n\n return {\n formatToApi,\n upadteVersion,\n getFilesByActualId,\n getBasicFileByActualId,\n getNewestFileByActualId,\n }\n}\n"],"names":[],"mappings":"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"}