{"version":3,"file":"DataProviderInterface.vue2.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n  <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n    <!-- CONTENT -->\n    <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n    </router-view>\n  </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , provide, ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\nimport { AutocompleteInstance, autocompleteKey, defaultAutocompleteAdapter, useAutocomplete } from './composables/aucotomplete';\n\n\n\nexport default defineComponent({\n  name: 'DataProviderInterface',\n  components: {\n    InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n  },\n  props: {\n    name: {\n      type: String,\n      default: '',\n    },\n    dpiContext: {\n      type: Object as PropType<DpiContext>,\n      default: () => undefined,\n    },\n    autocomplete: {\n      type: Object as PropType<AutocompleteInstance>,\n      default: () => undefined,\n    }\n  },\n  metaInfo() {\n    return {\n      title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n      meta: [\n        { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n        { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n        { name: 'robots', content: 'noindex, follow' },\n      ],\n    };\n  },\n  data() {\n    return {\n      property: this.$route.params.property,\n      id: this.$route.params.id,\n    };\n  },\n  computed: {\n    ...mapGetters('auth', [\n      'getIsEditMode',\n    ]),\n    mode() {\n      return this.property === 'catalogues'\n        ? this.getIsEditMode\n          ? this.$t('message.dataupload.menu.editCatalogue')\n          : this.$t('message.dataupload.createNewCatalogue')\n        : this.property === 'datasets'\n          ? this.getIsEditMode\n            ? this.$t('message.dataupload.menu.editDataset')\n            : this.$t('message.dataupload.createNewDataset')\n          : 'Edit Distribution';\n    },\n  },\n  methods: {\n    ...mapActions('dpiStore', [\n      'saveLocalstorageValues',\n    ]),\n    ...mapActions('auth', [\n      'populateDraftAndEdit',\n    ]),\n    getClearPath() {\n      return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n    },\n    handleScroll() {\n      try {\n        if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n          document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n        }\n        else {\n          document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n        }\n      } catch (error) {\n\n      }\n    }\n\n  },\n  created() {\n    window.addEventListener('scroll', this.handleScroll);\n    this.populateDraftAndEdit();\n  },\n  mounted() {\n    this.saveLocalstorageValues(this.property);\n  },\n  unmounted() {\n    window.removeEventListener('scroll', this.handleScroll);\n  },\n  setup(props) {\n    const route = useRoute()\n    const store = useStore()\n    const env = useRuntimeEnv()\n    const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n    const fallbackSpec = dpiSpecs[userSpec]\n    const dpiContext = toRef(props, 'dpiContext')\n\n    const resolvedDpiContext = computed<DpiContext>(() => {\n      const _dpiContext = toValue(dpiContext)\n\n      return {\n        specification: fallbackSpec,\n        specificationName: userSpec,\n        edit: {\n          enabled: route.query.edit === 'true',\n          id: route.query.id as string || undefined,\n          catalog: route.query.catalog as string || undefined,\n          fromDraft: route.query.fromDraft === 'true',\n        },\n        ..._dpiContext\n      }\n    })\n\n    const specification = computed(() => {\n      return resolvedDpiContext.value.specification\n    })\n\n    const specificationName = computed(() => {\n      return resolvedDpiContext.value.specificationName\n    })\n\n    setupDpiContext(resolvedDpiContext)\n    const defaultAutocompleteInstance = defaultAutocompleteAdapter({\n      envs: env,\n      dpiContext: resolvedDpiContext\n    });\n    provide(autocompleteKey, props.autocomplete || defaultAutocompleteInstance.adapter);\n\n    watchEffect(() => {\n      store.dispatch('dpiStore/setSpecification', specification.value)\n      store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n    })\n\n    const key = computed(() => {\n      return `${route.query.key}@${specificationName.value}`\n    })\n\n    const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n    return {\n      resolvedDpiContext,\n      key,\n      isReady,\n    }\n\n  }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n  border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n  position: sticky;\n  top: 0;\n  background: #ffffff;\n  z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n  margin: 1vh 0;\n  display: flex;\n  align-items: center;\n}\n\n.stickyStepper .stickyNav {\n  border-left: 1px solid black;\n  margin-left: 1vh;\n  padding-left: 1vh;\n}\n\n#stepper {\n  width: 100% !important;\n}\n\n#input {\n  padding: 10px;\n}\n\n.small-headline {\n  font-size: 1.5rem;\n  min-width: max-content;\n}\n\n.property {\n  margin: 20px;\n  background-color: #ffffff;\n  border: solid 0.5px rgb(225, 225, 225);\n  margin-top: 30px;\n}\n\n.infoBox .material-icons {\n  font-size: 20px;\n  vertical-align: text-bottom;\n  margin-right: 5px;\n  margin-bottom: 1px;\n}\n\n.infoBox {\n  width: 100%;\n  height: 30%;\n  background-color: #f7f7f7;\n  padding: 5%;\n  border-radius: 0.25rem;\n  margin-top: 20px;\n\n  .input_subpage_nav {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    padding: 15px;\n  }\n}\n\n.besides {\n  .formkit-input-group-repeatable {\n    display: flex;\n    flex-direction: row;\n    background-color: transparent;\n    padding: 0px;\n  }\n}\n\n.main {\n  width: 75%;\n  margin: 0 5px 0 5px;\n}\n\n.sub {\n  width: 20%;\n  margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n  position: sticky;\n  top: 154px;\n  z-index: 10;\n  width: 100%;\n  padding: 0 10%;\n\n  .step-progress__bar {\n    border-top: none !important;\n  }\n\n  .step-progress__step--active {\n    .step-progress__step-label {\n      background-color: lightsteelblue !important;\n    }\n\n  }\n}\n\n.step-progress__step span{\n\n    color:white !important;\n\n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n//   .step-progress__step {\n//     display: flex;\n//     align-items: center;\n//     justify-content: center;\n//     height: 70%;\n//     width: 20%;\n//     display: flex;\n//     align-items: center;\n//     z-index: 1;\n\n\n//     span {\n//       color: grey;\n//       font-size: 18px;\n//       display: none;\n//     }\n\n//     div {\n//       padding: 1rem;\n//       height: 100%;\n//       display: flex;\n//       align-items: center;\n//       color: white;\n//       font-weight: 300;\n\n//     }\n\n//     .step-progress__step-label {\n\n//       background: lightgrey;\n//       background-size: 400% 400%;\n//       background-position: 100% 0%;\n//       transition: all 300ms ease-in-out;\n//       border-right: 1px white solid;\n//       font-size: 14px;\n//       display: flex;\n//       align-items: center;\n//       justify-content: center;\n\n\n//     }\n\n\n//     .step-progress__step-label:hover {\n//       background-position: 65% 0%;\n//       color: black;\n\n//     }\n\n//   }\n\n//   .step-progress__step--active {\n\n//     z-index: 7 !important;\n\n\n//     span {\n//       color: black;\n//     }\n\n//     div {\n//       background: white;\n//     }\n\n//     .step-progress__step-label {\n//       background: rgb(236, 236, 236);\n//       background-position: 50% 0%;\n//       box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n//       transform: scale(1.1);\n//       z-index: 8;\n//       font-size: 16px;\n//     }\n\n//   }\n\n//   .step-progress__step--valid {\n//     div {\n//       color: white;\n\n//     }\n\n//     .step-progress__step-label {\n//       background: rgba(0, 235, 0, 0.2);\n//       color: lightslategrey;\n\n\n//     }\n\n//     .step-progress__step-label:hover {\n//       color: black;\n//     }\n//   }\n\n//   .step-progress__step--active .step-progress__step-label {\n//     color: rgb(31, 31, 31);\n//   }\n\n//   .step-progress__wrapper-after {\n//     display: none;\n//   }\n\n//   .step-progress__step-icon {\n//     display: none !important;\n//   }\n\n//   .step-progress__bar {\n//     margin: 0;\n//     height: 5rem;\n//     border-top: 1px solid lightslategray;\n\n//   }\n\n//   .step-progress__step-label {\n//     position: unset;\n//     transform: unset;\n//     flex-grow: 1;\n//   }\n\n//   .step-progress__step {}\n\n//   .step-progress__wrapper-before {\n//     display: none !important;\n//   }\n\n//   #stepper .step-progress__step::after {\n//     display: none !important;\n//   }\n// }\n#stepper .step-progress__step{\n  border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n    font-size: 25px;\n}\n.step-progress__step-label{\n  cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n  border: none;\n  padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n  border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n  margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n  font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n  font-weight: 400;\n}\n\n.formkit-input-error {\n  color: #e13737 !important;\n  font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n  &-input {\n    .formkit {\n      &-input {\n        &-element {\n          max-width: 100%;\n        }\n\n        &-error {\n          font-weight: bold;\n        }\n      }\n    }\n  }\n\n  .formkit-input-group-add-more {\n    display: flex;\n    justify-content: flex-end;\n\n    button {\n      border: black;\n    }\n  }\n\n  .formkit-input {\n    &[data-classification=\"text\"] .formkit-input-wrapper {\n      display: flex;\n      flex-direction: column;\n    }\n\n    &[data-classification=\"select\"] .formkit-input-wrapper {\n      display: flex;\n      flex-direction: column;\n    }\n  }\n\n  .formkit-input[data-classification=\"button\"] {\n    button {\n      &[data-ghost] {\n        color: white;\n        background-color: #001d85;\n        border-color: #001d85;\n        border-radius: 1.875rem;\n\n        &:hover {\n          background-color: #196fd2;\n          border-color: #196fd2;\n        }\n      }\n    }\n  }\n}\n\n.formkit-input.besides {\n  border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n  font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n  &--textarea {\n    width: 100%;\n  }\n}\n\n.formkit-input-element--group {\n  display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n  text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n//   .step-progress__step::after {\n//     display: none;\n//   }\n\n//   .step-progress__step-label {\n//     cursor: pointer;\n//   }\n// }\n</style>\n"],"names":["_sfc_main","defineComponent","defineAsyncComponent","mapGetters","mapActions","_a","_b","_c","props","route","useRoute","store","useStore","env","useRuntimeEnv","userSpec","fallbackSpec","dpiSpecs","dpiContext","toRef","resolvedDpiContext","computed","_dpiContext","toValue","specification","specificationName","setupDpiContext","defaultAutocompleteInstance","defaultAutocompleteAdapter","provide","autocompleteKey","watchEffect","key","isReady","useDpiEditMode"],"mappings":"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"}