import type { ComputedRef, Ref } from 'vue' import type { ColumnType, MapType, TableType, ViewType } from 'nocodb-sdk' import { ref, useInjectionState } from '#imports' import type { Row } from '~/lib' const [useProvideMapViewStore, useMapViewStore] = useInjectionState( ( meta: Ref, viewMeta: Ref | ComputedRef<(ViewType & { id: string }) | undefined>, ) => { const formattedData = ref([]) const { api } = useApi() const { project } = useProject() const { $api } = useNuxtApp() const mapMetaData = ref({}) const geoDataFieldColumn = ref() async function loadMapMeta() { if (!viewMeta?.value?.id || !meta?.value?.columns) return mapMetaData.value = await $api.dbView.mapRead(viewMeta.value.id) geoDataFieldColumn.value = (meta.value.columns as ColumnType[]).filter((f) => f.id === mapMetaData.value.fk_geo_data_col_id)[0] || {} } async function loadMapData() { if (!viewMeta?.value?.id || !meta?.value?.columns) return const res = await api.dbViewRow.list('noco', project.value.id!, meta.value!.id!, viewMeta.value!.id!) console.log('in useMapViewDataStore - res.list: ', res.list) formattedData.value = res.list } return { formattedData, loadMapData, loadMapMeta, mapMetaData, geoDataFieldColumn, } }, ) export { useProvideMapViewStore } export function useMapViewStoreOrThrow() { const mapViewStore = useMapViewStore() if (mapViewStore == null) throw new Error('Please call `useProvideMapViewStore` on the appropriate parent component') return mapViewStore }