{"version":3,"file":"use-api.mjs","sources":["../../../../../packages/components/table-select/src/use-api.ts"],"sourcesContent":["import { useConfig } from '@element-ultra/hooks'\nimport {\n  computed,\n  shallowReactive,\n  shallowRef,\n  watch,\n  provide,\n  inject,\n  ShallowReactive,\n  ShallowRef,\n  ComputedRef,\n  InjectionKey\n} from 'vue'\nimport type { TableSelectProps } from './table-select'\n\ninterface Options {\n  props: TableSelectProps\n  type: 'provide' | 'inject'\n}\n\nconst transformToken: InjectionKey<{\n  fetchData: (reset?: boolean) => Promise<void>\n  total: ShallowRef<number>\n  pageQuery: ShallowReactive<{\n    page: number\n    size: number\n  }>\n  data: ComputedRef<any[]>\n  loading: ShallowRef<boolean>\n  displayData: ComputedRef<any[]>\n}> = Symbol('transformToken')\n\nexport default function useApi(options: Options) {\n  const { props, type } = options\n\n  if (type === 'provide') {\n    const [configStore] = useConfig()\n\n    const pageQuery = shallowReactive({\n      page: 1,\n      size: 20\n    })\n\n    const total = shallowRef(0)\n\n    const internalData = shallowRef<any[]>([])\n\n    const data = computed(() => {\n      return props.data || internalData.value\n    })\n\n    /** 数据value-key映射关系 */\n    const dataValueKeyMap = computed<Record<string, any> | undefined>(() => {\n      if (!props.valueKey || !data.value.length) return\n\n      return data.value.reduce((acc, cur) => {\n        let value = cur[props.valueKey]\n        if (value) {\n          acc[value] = cur\n        }\n        return acc\n      }, {})\n    })\n\n    const loading = shallowRef(false)\n    /**\n     * 查询数据\n     * @param reset 重置分页 默认 true\n     */\n    const fetchData = async (reset = true) => {\n      const { api, requestExtra } = props\n      if (!configStore.tableSelectRequestMethod || !api) return\n\n      internalData.value = []\n\n      if (reset) {\n        pageQuery.page = 1\n      }\n      const { query, pagination } = props\n\n      let realQuery = Object.keys(query || {}).reduce((acc, cur) => {\n        let v = query![cur]\n        if (cur.startsWith('$')) {\n          cur = cur.slice(1)\n        }\n        acc[cur] = v\n        return acc\n      }, {} as Record<string, any>)\n\n      loading.value = true\n\n      const { total: _total, data } = await configStore\n        .tableSelectRequestMethod({\n          api,\n          query: {\n            ...realQuery,\n            ...(pagination ? pageQuery : {})\n          },\n          extra: requestExtra\n        })\n        .finally(() => {\n          loading.value = false\n        })\n\n      if (_total || _total === 0) {\n        total.value = _total\n      }\n\n      internalData.value = props.dataMap ? props.dataMap(data) : data\n    }\n\n    const queryWatchList = computed(() => {\n      return Object.keys(props.query || {})\n        .filter(k => k.startsWith('$'))\n        .map(k => {\n          return props.query?.[k]\n        })\n    })\n\n    watch(queryWatchList, () => fetchData())\n\n    const displayData = computed(() => {\n      const { modelValue, valueKey } = props\n      if (!modelValue) return []\n\n      const result = Array.isArray(modelValue) ? modelValue : [modelValue]\n\n      // 有value-key时优先从valueKeyMap中取数据(数据相对会更加完整)\n      if (valueKey && dataValueKeyMap.value) {\n        return result.map(item => {\n          let value = item[valueKey]\n          return dataValueKeyMap.value![value] || item\n        })\n      }\n      return result\n    })\n\n    const exposed = {\n      fetchData,\n      total,\n      pageQuery,\n      data,\n      loading,\n      displayData\n    }\n\n    provide(transformToken, exposed)\n\n    return exposed\n  }\n\n  return inject(transformToken)!\n}\n"],"names":["data"],"mappings":"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"}