{"version":3,"file":"useProps2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useProps.ts"],"sourcesContent":["// import { deepMerge } from '@tav-ui/utils/basic'\n// import { cloneDeep, pick } from 'lodash-es'\nimport { computed, unref } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport { isFunction, isObject } from '@tav-ui/utils/is'\nimport { PAGE_SIZE } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { TableProGridEmit, TableProInstance, TableProProps } from '../types'\nimport type { TableProApiParams, VxeQueryParams } from '../typings'\nimport type { Emitter } from '@tav-ui/utils/mitt'\n\nconst DEF = {\n  data: {\n    result: [],\n  },\n}\n\nfunction getPropByPath(obj: Record<string, any>, path: string, strict = false) {\n  let tempObj = obj\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1')\n  path = path.replace(/^\\./, '')\n\n  const keyArr = path.split('.')\n  let i = 0\n  for (let len = keyArr.length; i < len - 1; ++i) {\n    if (!tempObj && !strict) break\n    const key = keyArr[i]\n    if (key in tempObj) {\n      tempObj = tempObj[key]\n    } else {\n      if (strict) {\n        console.log(`please transfer a valid prop path to form item!`)\n      }\n      break\n    }\n  }\n  return {\n    o: tempObj,\n    k: keyArr[i],\n    v: tempObj ? tempObj[keyArr[i]] : null,\n  }\n}\n\nfunction deepSet(obj: any, path: string, val: any) {\n  //@ts-ignore\n  path = path.replaceAll('[', '.[')\n  const keys = path.split('.')\n\n  for (let i = 0; i < keys.length; i++) {\n    let currentKey = keys[i] as any\n    let nextKey = keys[i + 1] as any\n    if (currentKey.includes('[')) {\n      currentKey = parseInt(currentKey.substring(1, currentKey.length - 1))\n    }\n    if (nextKey && nextKey.includes('[')) {\n      nextKey = parseInt(nextKey.substring(1, nextKey.length - 1))\n    }\n\n    if (typeof nextKey !== 'undefined') {\n      obj[currentKey] = obj[currentKey] ? obj[currentKey] : isNaN(nextKey) ? {} : []\n    } else {\n      obj[currentKey] = val\n    }\n\n    obj = obj[currentKey]\n  }\n}\n\n/**\n * 根据 props api 扩展 proxyconfig\n * @param tablePropsRef\n * @returns\n */\nfunction handleExtendProxyConfig(tablePropsRef: ComputedRef<TableProProps>) {\n  const { apiSetting, proxyConfig, api } = unref(tablePropsRef)\n  const hasApi = api && isFunction(api)\n  if (hasApi) {\n    const hasApiSetting = Object.keys(apiSetting).length > 0\n    const hasProxyConfigProps = proxyConfig?.props && Object.keys(proxyConfig?.props).length > 0\n    if (hasApiSetting) {\n      const props = {\n        list: apiSetting.listField ? `data.${apiSetting.listField}` : 'data',\n        result: apiSetting.listField ? `data.${apiSetting.listField}` : 'data',\n        total: apiSetting.totalField ? `data.${apiSetting.totalField}` : 'data',\n      }\n      if (!hasProxyConfigProps) {\n        unref(tablePropsRef).proxyConfig = { props }\n      }\n    }\n  }\n\n  return tablePropsRef\n}\n\n/**\n * 根据 props api/beforeapi/afterapi 扩展 proxyconfig\n * @param tablePropsRef\n * @param emit\n * @returns\n */\nfunction handleExtendApi(\n  tablePropsRef: ComputedRef<TableProProps>,\n  tableRef: Ref<TableProInstance | null>,\n  emit: TableProGridEmit,\n  tableEmitter: Emitter\n) {\n  const { api, beforeApi, afterApi, customActionConfig, apiSetting, permission, apiType } =\n    unref(tablePropsRef)\n  const permissionApi = (permission as any)?.apiPermissionData ?? undefined\n  const permissionApiParams = (permission as any)?.apiParams ?? undefined\n  const hasApi = (permissionApi && isFunction(permissionApi)) || (api && isFunction(api))\n  const hasExportAllApi =\n    customActionConfig && customActionConfig.export && isObject(customActionConfig.export)\n\n  /**  处理 vxetable proxy */\n  if (hasApi) {\n    // 要使用beforequery则query必须存在\n    unref(tablePropsRef).proxyConfig!['ajax'] = {\n      query: () => Promise.resolve({}),\n    }\n\n    // 缓存api option\n    let params: TableProApiParams & { [key: string]: any } = {\n      filter: permissionApiParams?.body?.filter ?? {},\n      model: permissionApiParams?.body?.model ?? {},\n    }\n    let result: Record<string, any> = {}\n\n    // 挂载vxetable 导出全部接口\n    if (hasExportAllApi) {\n      unref(tablePropsRef).proxyConfig!['ajax']!['queryAll'] = async (refParam) => {\n        const keepedApiParamKeys = (customActionConfig.export as any).keepedApiParamKeys ?? []\n        const isPermissionApi = permissionApi && permissionApiParams\n        let _api = api\n        if (isPermissionApi) {\n          _api = permissionApi\n          params = {\n            ...permissionApiParams,\n            ...((params.body?.filter ?? params.filter) && (params.body?.model ?? params.model)\n              ? {\n                  body:\n                    apiType === 'list'\n                      ? {\n                          ...(params.body?.filter ?? params.filter ?? {}),\n                          ...{\n                            ...(params.body?.model ?? params.model ?? {}),\n                            viewAll: true,\n                            modeType: refParam?.options?.modeType,\n                          },\n                        }\n                      : {\n                          filter: params.body?.filter ?? params.filter ?? {},\n                          model: {\n                            ...(params.body?.model ?? params.model ?? {}),\n                            viewAll: true,\n                            modeType: refParam?.options?.modeType,\n                          },\n                        },\n                }\n              : {}),\n          }\n        } else {\n          if (apiType === 'list') {\n            params = {\n              ...params,\n              ...(params.model\n                ? {\n                    model: {\n                      ...params.model,\n                      viewAll: true,\n                      modeType: refParam?.options?.modeType,\n                    },\n                  }\n                : {\n                    viewAll: true,\n                    modeType: refParam?.options?.modeType,\n                  }),\n            }\n          } else {\n            params = {\n              filter: params.filter ?? {},\n              model: {\n                ...(params.model ?? {}),\n                viewAll: true,\n                modeType: refParam?.options?.modeType,\n              },\n            }\n          }\n        }\n\n        const allParamsFilter: Record<string, any> = {}\n        const isModeTypeAll = (params.body?.model ?? params.model ?? params)!['modeType'] === 'all'\n\n        if (isModeTypeAll) {\n          keepedApiParamKeys.length &&\n            keepedApiParamKeys.forEach((key: string) => {\n              const { v } = getPropByPath(params, key)\n              if (v) {\n                deepSet(allParamsFilter, key, v)\n              }\n            })\n        }\n\n        let exportResult: Record<string, any> = {}\n        const apiResult = await _api?.(\n          isModeTypeAll\n            ? params.body\n              ? {\n                  ...allParamsFilter,\n                  body: {\n                    filter: allParamsFilter.body?.filter ?? {},\n                    model: params.body.model,\n                  },\n                }\n              : params.filter || params.model\n              ? {\n                  filter: allParamsFilter.filter ?? {},\n                  model: params.model ?? {},\n                }\n              : {\n                  viewAll: true,\n                  modeType: refParam?.options?.modeType,\n                }\n            : params\n        )\n        if (apiResult.data && apiResult.success) {\n          exportResult = apiResult\n\n          if (\n            (customActionConfig.export as any).afterApi &&\n            isFunction((customActionConfig.export as any).afterApi)\n          ) {\n            exportResult =\n              (await (customActionConfig.export as any).afterApi(apiResult)) || exportResult\n          }\n\n          // list 数据这里自动转换\n          if (apiType === 'list') {\n            exportResult = {\n              data: {\n                [apiSetting.listField!]: exportResult.data,\n                [apiSetting.totalField!]: exportResult.data.length,\n              },\n            }\n          }\n        }\n\n        return exportResult\n      }\n    }\n\n    // 关闭自动加载，自动加载使用commit失效\n    unref(tablePropsRef).proxyConfig!['autoLoad'] = false\n\n    // 劫持proxy触发beforeapi修改参数\n    unref(tablePropsRef).proxyConfig!['beforeQuery'] = async (\n      vxeOption: VxeQueryParams,\n      option: TableProApiParams\n    ) => {\n      const {\n        page: { currentPage = 1, pageSize = PAGE_SIZE },\n      } = vxeOption\n      const model = {\n        page: currentPage,\n        limit: pageSize,\n      }\n\n      // model 中的值已vxetable计算的为准，其他值已传入为准，reload 传入 model 后，要对vxetable的model进行合并\n      params = option\n        ? option.model\n          ? { ...option, ...{ model: { ...model, ...option.model } }, ...option.model }\n          : { ...option, ...{ model } }\n        : { ...(params?.body ?? params), ...{ model } }\n\n      try {\n        if (beforeApi && isFunction(beforeApi)) {\n          params = (await beforeApi(params)) || params\n        }\n\n        let _api = api\n\n        // 跟 @hyb 商量后只对 permission api 做 list 参数兼容，对于普通 api 参数还是沿用之前分页的数据结构，这样做单纯是为了兼容，因为投管/其他项目里用的地方很多改起来太费劲\n        if (permissionApi && permissionApiParams) {\n          _api = permissionApi\n          params = {\n            ...permissionApiParams,\n            ...((params.filter ?? {}) && (params.model ?? {})\n              ? {\n                  body:\n                    apiType === 'list'\n                      ? {\n                          ...(params.filter ?? params),\n                          ...(params.model ?? params),\n                        }\n                      : {\n                          filter: params.filter ?? {},\n                          model: params.model ?? {},\n                        },\n                }\n              : {}),\n          }\n        }\n\n        if (_api && isFunction(_api)) {\n          // eslint-disable-next-line no-console\n          console.log('hijack table pro api 😂')\n\n          const apiResult = await _api(params)\n\n          if (apiResult.data && apiResult.success) {\n            result = apiResult\n\n            if (afterApi && isFunction(afterApi)) {\n              result = (await afterApi(result)) || result\n            }\n\n            // list 数据这里自动转换\n            if (apiType === 'list') {\n              result = {\n                data: {\n                  [apiSetting.listField!]: result.data,\n                  [apiSetting.totalField!]: result.data.length,\n                },\n              }\n            }\n          } else {\n            result = DEF\n          }\n        } else {\n          result = DEF\n        }\n\n        tableEmitter.emit('table-pro:api-success', { result })\n        emit('ApiSuccess', {\n          ...result,\n        })\n\n        // // 阻断 vue 对大数组的监听，避免 vue 绑定大数据造成短暂的卡顿, => 虚拟滚动-最大高度demo\n        // unref(tableRef)?.loadData(result)\n        return Promise.resolve(result)\n      } catch (error) {\n        emit('ApiError', error)\n        return Promise.resolve(DEF)\n      }\n    }\n  }\n\n  return tablePropsRef\n}\n\n/**\n * 根据传入的 props 利用 vxetable 现有方法实现扩展的 props\n * @param tablePropsRef\n * @param tableRef\n * @param emit\n * @returns\n */\nfunction handleExtendProps(\n  tablePropsRef: ComputedRef<TableProProps>,\n  tableRef: Ref<TableProInstance | null>,\n  emit: TableProGridEmit,\n  tableEmitter: Emitter\n) {\n  const handleExtendProxyConfigResult = handleExtendProxyConfig(tablePropsRef)\n  const handleExtendApiResult = handleExtendApi(\n    handleExtendProxyConfigResult,\n    tableRef,\n    emit,\n    tableEmitter\n  )\n  return handleExtendApiResult\n}\n\n/**\n * 根据 fixedLineHeight 做行高处理\n * @param tablePropsRef \\\n */\nfunction handleRowLineHeight(tablePropsRef: ComputedRef<TableProProps>) {\n  const { fixedLineHeight } = unref(tablePropsRef)\n  // 因为 vxetable 虚拟滚动的要求是关闭动态行高（即行高度不允许被内容撑开）\n  if (fixedLineHeight) {\n    // 所以当 showTooltip 为 true 时，要设置固定行高度（即设置 showOverflow）\n    unref(tablePropsRef).showOverflow = 'ellipsis'\n    unref(tablePropsRef).showHeaderOverflow = 'ellipsis'\n    unref(tablePropsRef).showFooterOverflow = 'ellipsis'\n    unref(tablePropsRef).scrollX.enabled = true\n    unref(tablePropsRef).scrollY.enabled = true\n  } else {\n    // 所以当 showTooltip 为 false 时，不设置固定行高度，行高度由内容撑开（虚拟滚动失效）\n    unref(tablePropsRef).showOverflow = null\n    unref(tablePropsRef).showHeaderOverflow = null\n    unref(tablePropsRef).showFooterOverflow = null\n    unref(tablePropsRef).scrollX.enabled = false\n    unref(tablePropsRef).scrollY.enabled = false\n  }\n\n  return tablePropsRef\n}\n\n/**\n * 利用生成的默认 props 与 传入的 props 合并\n * @param defaultPropsRef\n * @param paramPropsRef\n * @returns\n */\nfunction mergePropsRef(\n  defaultPropsRef: ComputedRef<Partial<TableProProps>>,\n  paramPropsRef: ComputedRef<TableProProps>,\n  tableRef: Ref<TableProInstance | null>,\n  emit: TableProGridEmit,\n  tableEmitter: Emitter\n): ComputedRef<TableProProps> {\n  return computed(() => {\n    for (const [key] of Object.entries(unref(paramPropsRef))) {\n      //@ts-ignore\n      if (unref(defaultPropsRef)[key]) {\n        // 只对对象进行合并，其他类型已传入的值为准\n        //@ts-ignore\n        if (isObject(unref(defaultPropsRef)[key])) {\n          // // 会有性能问题，暂时浅合并\n          // unref(paramPropsRef)[key] = deepMerge(\n          //   cloneDeep(unref(defaultPropsRef)[key]),\n          //   cloneDeep(unref(paramPropsRef)[key])\n          // )\n          // 浅合并\n          //@ts-ignore\n          unref(paramPropsRef)[key] = {\n            //@ts-ignore\n            ...unref(defaultPropsRef)[key],\n            //@ts-ignore\n            ...unref(paramPropsRef)[key],\n          }\n        }\n      }\n    }\n    const handledRowLineHeightTablePropsRef = handleRowLineHeight(paramPropsRef)\n    const tablePropsRef = handleExtendProps(\n      handledRowLineHeightTablePropsRef,\n      tableRef,\n      emit,\n      tableEmitter\n    )\n    return { ...unref(tablePropsRef) }\n  })\n}\n\n/**\n * 利用 types 中声明的 tableproprops 来生成默认props\n * @param defaultProps\n * @returns\n */\nfunction createDefaultPropsRef(defaultProps: TableProProps): ComputedRef<Partial<TableProProps>> {\n  const _defaultProps: Partial<TableProProps> = {}\n\n  for (const [key, value] of Object.entries(defaultProps)) {\n    const defaultValue = (value as any).default\n    if (defaultValue) {\n      // 这里指判断了有对象默认值的情况，函数默认值需要做判断\n      //@ts-ignore\n      _defaultProps[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue\n    }\n  }\n\n  return computed(() => ({ ..._defaultProps }))\n}\n\nexport function useProps(\n  tableProProps: any,\n  paramPropsRef: ComputedRef<TableProProps>,\n  tableRef: Ref<TableProInstance | null>,\n  emit: TableProGridEmit,\n  tableEmitter: Emitter\n) {\n  const defaultPropsRef = createDefaultPropsRef(tableProProps)\n  const tablePropsRef = mergePropsRef(defaultPropsRef, paramPropsRef, tableRef, emit, tableEmitter)\n  return tablePropsRef\n}\n"],"names":[],"mappings":"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"}