{"version":3,"file":"useDpiEditMode.mjs","sources":["../../../lib/data-provider-interface/composables/useDpiEditMode.ts"],"sourcesContent":["import { useRoute } from \"vue-router\";\nimport { type DpiContext } from \"./useDpiContext\";\nimport { computed, MaybeRefOrGetter, toValue, watch } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useRuntimeEnv } from \"../../composables/useRuntimeEnv\";\nimport { useAsyncState, watchOnce } from \"@vueuse/core\";\n\n  /**\n   * Use this composable in the DataProviderInterface to fetch a dataset from the Hub API and\n   * convert it to a form input via localStorage. This composable is used when the user navigates to a dataset\n   * by clicking on the \"Edit\" on the DatasetDetails page or in DraftsPage\n   *\n   *\n   * @param dpiContext - The DPI context as returned by `useDpiContext`.\n   * @returns The computed properties described above.\n   */\nexport function useDpiEditMode(dpiContext: MaybeRefOrGetter<DpiContext>) {\n  const route = useRoute();\n  const store = useStore();\n  const env = useRuntimeEnv();\n\n  const editQuery = computed(() => {\n    return toValue(dpiContext)?.edit?.enabled ?? route.query.edit === 'true';\n  });\n\n  const editIdQuery = computed(() => {\n    return toValue(dpiContext)?.edit?.id ?? route.query.id;\n  });\n\n  const editFromDraft = computed(() => {\n    return toValue(dpiContext)?.edit?.fromDraft ?? route.query.fromDraft ?? store.getters[\"auth/getIsDraft\"];\n  });\n\n  // For legacy purposes, set editmode to false if editQuery is false\n  if (!!editQuery.value) {\n    localStorage.setItem('dpi_editmode', 'false');\n    store.dispatch(\"auth/setIsEditMode\", false);\n  }\n\n  const requestParams = computed(() => {\n    const isDraft = editFromDraft.value;\n    const token = store.getters[\"auth/getUserData\"]?.rtpToken;\n    const property = route.params.property;\n    const id = route.params.id;\n\n    const endpoint = isDraft\n      ? `${env.api.hubUrl}drafts/datasets/${editIdQuery.value}.nt?catalogue=${route.query.catalog}`\n      : route.params.property === \"catalogues\"\n      ? `${env.api.hubUrl}catalogues/${route.query.catalog}.nt`\n      : `${env.api.hubUrl}datasets/${editIdQuery.value}.nt?useNormalizedId=true`;\n    return { endpoint, token, property, id };\n  });\n\n  const { execute, isLoading, error } = useAsyncState(\n    async () => {\n      return await store.dispatch(\n        \"dpiStore/convertToInput\",\n        { ...requestParams.value }\n      );\n    },\n    undefined,\n    {\n      immediate: false,\n    }\n  );\n\n  const inEditModeAndRptAvailable = computed(() => !!editIdQuery.value && !!requestParams.value.token)\n  watch(inEditModeAndRptAvailable, () => {\n    if (!inEditModeAndRptAvailable.value) return;\n    const isDraft = editFromDraft.value;\n    store.dispatch(\"auth/setIsEditMode\", true);\n    store.dispatch(\"auth/setIsDraft\", isDraft);\n    execute();\n  }, { immediate: true });\n\n  // Ensure dpiStore contains a specification before rendering the input page.\n  // Maybe it's not needed but better safe than sorry.\n  const isReady = computed(() => {\n    return !!store.getters[\"dpiStore/getSpecificationName\"] && !isLoading.value;\n  });\n\n  return {\n    isReady,\n    error,\n  }\n}\n"],"names":["useDpiEditMode","dpiContext","route","useRoute","store","useStore","env","useRuntimeEnv","editQuery","computed","_b","_a","toValue","editIdQuery","editFromDraft","requestParams","isDraft","token","property","id","execute","isLoading","error","useAsyncState","inEditModeAndRptAvailable","watch"],"mappings":";;;;;AAgBO,SAASA,EAAeC,GAA0C;AACvE,QAAMC,IAAQC,KACRC,IAAQC,KACRC,IAAMC,KAENC,IAAYC,EAAS,MAAM;;AAC/B,aAAOC,KAAAC,IAAAC,EAAQX,CAAU,MAAlB,gBAAAU,EAAqB,SAArB,gBAAAD,EAA2B,YAAWR,EAAM,MAAM,SAAS;AAAA,EAAA,CACnE,GAEKW,IAAcJ,EAAS,MAAM;;AACjC,aAAOC,KAAAC,IAAAC,EAAQX,CAAU,MAAlB,gBAAAU,EAAqB,SAArB,gBAAAD,EAA2B,OAAMR,EAAM,MAAM;AAAA,EAAA,CACrD,GAEKY,IAAgBL,EAAS,MAAM;;AAC5B,aAAAC,KAAAC,IAAAC,EAAQX,CAAU,MAAlB,gBAAAU,EAAqB,SAArB,gBAAAD,EAA2B,cAAaR,EAAM,MAAM,aAAaE,EAAM,QAAQ,iBAAiB;AAAA,EAAA,CACxG;AAGG,EAAEI,EAAU,UACD,aAAA,QAAQ,gBAAgB,OAAO,GACtCJ,EAAA,SAAS,sBAAsB,EAAK;AAGtC,QAAAW,IAAgBN,EAAS,MAAM;;AACnC,UAAMO,IAAUF,EAAc,OACxBG,KAAQN,IAAAP,EAAM,QAAQ,kBAAkB,MAAhC,gBAAAO,EAAmC,UAC3CO,IAAWhB,EAAM,OAAO,UACxBiB,IAAKjB,EAAM,OAAO;AAOxB,WAAO,EAAE,UALQc,IACb,GAAGV,EAAI,IAAI,MAAM,mBAAmBO,EAAY,KAAK,iBAAiBX,EAAM,MAAM,OAAO,KACzFA,EAAM,OAAO,aAAa,eAC1B,GAAGI,EAAI,IAAI,MAAM,cAAcJ,EAAM,MAAM,OAAO,QAClD,GAAGI,EAAI,IAAI,MAAM,YAAYO,EAAY,KAAK,4BAC/B,OAAAI,GAAO,UAAAC,GAAU,IAAAC,EAAG;AAAA,EAAA,CACxC,GAEK,EAAE,SAAAC,GAAS,WAAAC,GAAW,OAAAC,EAAU,IAAAC;AAAA,IACpC,YACS,MAAMnB,EAAM;AAAA,MACjB;AAAA,MACA,EAAE,GAAGW,EAAc,MAAM;AAAA,IAAA;AAAA,IAG7B;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EAAA,GAGIS,IAA4Bf,EAAS,MAAM,CAAC,CAACI,EAAY,SAAS,CAAC,CAACE,EAAc,MAAM,KAAK;AACnG,SAAAU,EAAMD,GAA2B,MAAM;AACrC,QAAI,CAACA,EAA0B;AAAO;AACtC,UAAMR,IAAUF,EAAc;AACxB,IAAAV,EAAA,SAAS,sBAAsB,EAAI,GACnCA,EAAA,SAAS,mBAAmBY,CAAO,GACjCI;EAAA,GACP,EAAE,WAAW,GAAA,CAAM,GAQf;AAAA,IACL,SALcX,EAAS,MAChB,CAAC,CAACL,EAAM,QAAQ,+BAA+B,KAAK,CAACiB,EAAU,KACvE;AAAA,IAIC,OAAAC;AAAA,EAAA;AAEJ;"}