@piveau/piveau-hub-ui-modules 4.6.49 → 4.6.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/PvBadge/PvBadge.vue.mjs.map +1 -1
  2. package/dist/PvDataInfoBox/PvDataInfoBox.vue.mjs +2 -1
  3. package/dist/PvDataInfoBox/PvDataInfoBox.vue.mjs.map +1 -1
  4. package/dist/PvDataInfoBox/PvDataInfoBoxDescription.vue.mjs.map +1 -1
  5. package/dist/PvDataInfoBox/PvDataInfoBoxFooter.vue.mjs.map +1 -1
  6. package/dist/PvDataInfoBox/PvDataInfoBoxFormats.vue.mjs.map +1 -1
  7. package/dist/catalogues/CatalogPage.vue.mjs.map +1 -1
  8. package/dist/catalogues/CatalogPageDatasetCard.vue.mjs +6 -5
  9. package/dist/catalogues/CatalogPageDatasetCard.vue.mjs.map +1 -1
  10. package/dist/catalogues/Catalogues.vue.mjs.map +1 -1
  11. package/dist/catalogues/cataloguesFacets/CataloguesFacets.vue.mjs.map +1 -1
  12. package/dist/citation/DatasetCitationModal.vue.mjs.map +1 -1
  13. package/dist/citation/DatasetCitationTable.vue.mjs.map +1 -1
  14. package/dist/composables/useRuntimeEnv.d.ts +2 -2
  15. package/dist/configurations/config-schema/apiSchema.mjs +1 -1
  16. package/dist/configurations/config-schema/authenticationSchema.mjs +1 -1
  17. package/dist/configurations/config-schema/configSchema.d.ts +5 -5
  18. package/dist/configurations/config-schema/configSchema.mjs +18 -18
  19. package/dist/configurations/config-schema/contentSchema.mjs +1 -1
  20. package/dist/configurations/config-schema/languagesSchema.d.ts +2 -2
  21. package/dist/configurations/config-schema/languagesSchema.mjs +1 -1
  22. package/dist/configurations/config-schema/metadataSchema.mjs +1 -1
  23. package/dist/configurations/config-schema/routingSchema.mjs +1 -1
  24. package/dist/configurations/config-schema/themesSchema.mjs +1 -1
  25. package/dist/configurations/config-schema/trackerSchema.mjs +1 -1
  26. package/dist/data-provider-interface/CatalogueMQA.vue.mjs.map +1 -1
  27. package/dist/data-provider-interface/DPIMenu.vue.d.ts +10 -10
  28. package/dist/data-provider-interface/DPIMenu.vue.mjs.map +1 -1
  29. package/dist/data-provider-interface/DataProviderInterface.vue.d.ts +15 -17
  30. package/dist/data-provider-interface/DataProviderInterface.vue.mjs.map +1 -1
  31. package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs.map +1 -1
  32. package/dist/data-provider-interface/components/ConditionalInput.vue.mjs.map +1 -1
  33. package/dist/data-provider-interface/components/DataFetchingComponent.vue.d.ts +2 -2
  34. package/dist/data-provider-interface/components/DistributionStepper.vue.mjs +2 -1
  35. package/dist/data-provider-interface/components/DistributionStepper.vue.mjs.map +1 -1
  36. package/dist/data-provider-interface/components/Dropup.vue.d.ts +1 -1
  37. package/dist/data-provider-interface/components/Dropup.vue.mjs.map +1 -1
  38. package/dist/data-provider-interface/components/FileUpload.vue.d.ts +1 -1
  39. package/dist/data-provider-interface/components/FileUpload.vue.mjs.map +1 -1
  40. package/dist/data-provider-interface/components/InfoSlot.vue.mjs.map +1 -1
  41. package/dist/data-provider-interface/components/InputPageStep.vue.mjs.map +1 -1
  42. package/dist/data-provider-interface/components/LanguageSelector.vue.mjs.map +1 -1
  43. package/dist/data-provider-interface/components/Navigation.vue.d.ts +8 -8
  44. package/dist/data-provider-interface/components/Navigation.vue.mjs.map +1 -1
  45. package/dist/data-provider-interface/components/SelectControlledGroup.vue.mjs +2 -1
  46. package/dist/data-provider-interface/components/SelectControlledGroup.vue.mjs.map +1 -1
  47. package/dist/data-provider-interface/components/SimpleAccessURLInput.vue.mjs.map +1 -1
  48. package/dist/data-provider-interface/components/SimpleInput.vue.mjs.map +1 -1
  49. package/dist/data-provider-interface/components/SimpleSelect.vue.mjs.map +1 -1
  50. package/dist/data-provider-interface/components/SpatialInput.vue.mjs.map +1 -1
  51. package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs.map +1 -1
  52. package/dist/data-provider-interface/components/WidgetInput.vue.mjs.map +1 -1
  53. package/dist/data-provider-interface/views/DistributionInputPage.vue.mjs.map +1 -1
  54. package/dist/data-provider-interface/views/DistributionOverview.vue.d.ts +2 -2
  55. package/dist/data-provider-interface/views/DistributionOverview.vue.mjs.map +1 -1
  56. package/dist/data-provider-interface/views/DraftsPage.vue.d.ts +5 -5
  57. package/dist/data-provider-interface/views/DraftsPage.vue.mjs +19 -14
  58. package/dist/data-provider-interface/views/DraftsPage.vue.mjs.map +1 -1
  59. package/dist/data-provider-interface/views/InputPage.vue.d.ts +12 -14
  60. package/dist/data-provider-interface/views/InputPage.vue.mjs +4 -2
  61. package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
  62. package/dist/data-provider-interface/views/LinkedDataViewer.vue.mjs.map +1 -1
  63. package/dist/data-provider-interface/views/OverviewPage/CatalogueOverview.vue.mjs.map +1 -1
  64. package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs.map +1 -1
  65. package/dist/data-provider-interface/views/OverviewPage/DistributionOverview.vue.mjs.map +1 -1
  66. package/dist/data-provider-interface/views/OverviewPage/Properties/MultilingualProp.vue.mjs.map +1 -1
  67. package/dist/data-provider-interface/views/OverviewPage/Properties/SpecialProp.vue.mjs.map +1 -1
  68. package/dist/data-provider-interface/views/OverviewPage/Properties/StringProp.vue.mjs.map +1 -1
  69. package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs.map +1 -1
  70. package/dist/data-provider-interface/views/OverviewPage/Properties/URLProp.vue.mjs.map +1 -1
  71. package/dist/data-provider-interface/views/OverviewPage/PropertyEntry.vue.mjs.map +1 -1
  72. package/dist/data-provider-interface/views/OverviewPage.vue.d.ts +3 -5
  73. package/dist/data-provider-interface/views/OverviewPage.vue.mjs.map +1 -1
  74. package/dist/data-provider-interface/views/PropertyChooser.vue.mjs.map +1 -1
  75. package/dist/data-provider-interface/views/UserCataloguesPage.vue.mjs.map +1 -1
  76. package/dist/data-provider-interface/views/UserProfilePage.vue.mjs.map +1 -1
  77. package/dist/datasetDetails/AppMarkdownContent.vue.mjs.map +1 -1
  78. package/dist/datasetDetails/DatasetDetails.vue.mjs.map +1 -1
  79. package/dist/datasetDetails/DatasetDetailsActivityStream.vue.mjs.map +1 -1
  80. package/dist/datasetDetails/DatasetDetailsBanners.vue.d.ts +1 -3
  81. package/dist/datasetDetails/DatasetDetailsBanners.vue.mjs.map +1 -1
  82. package/dist/datasetDetails/DatasetDetailsCSVLinter.vue.mjs.map +1 -1
  83. package/dist/datasetDetails/DatasetDetailsCategories.vue.mjs.map +1 -1
  84. package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs +3 -2
  85. package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs.map +1 -1
  86. package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs +61 -50
  87. package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs.map +1 -1
  88. package/dist/datasetDetails/DatasetDetailsDescription.vue.d.ts +1 -3
  89. package/dist/datasetDetails/DatasetDetailsDescription.vue.mjs.map +1 -1
  90. package/dist/datasetDetails/DatasetDetailsFeedbackButton.vue.mjs.map +1 -1
  91. package/dist/datasetDetails/DatasetDetailsLinkedMetricsButton.vue.mjs.map +1 -1
  92. package/dist/datasetDetails/DatasetDetailsQuality.vue.mjs.map +1 -1
  93. package/dist/datasetDetails/DatasetDetailsShareButton.vue.mjs.map +1 -1
  94. package/dist/datasetDetails/DatasetDetailsSimilarDatasets.vue.mjs.map +1 -1
  95. package/dist/datasetDetails/DatasetDetailsSkeleton.vue.mjs.map +1 -1
  96. package/dist/datasetDetails/distributions/Distribution.vue.mjs.map +1 -1
  97. package/dist/datasetDetails/distributions/DistributionAdded.vue.mjs.map +1 -1
  98. package/dist/datasetDetails/distributions/DistributionDownloadAsModal.vue.mjs.map +1 -1
  99. package/dist/datasetDetails/distributions/DistributionFormat.vue.d.ts +2 -2
  100. package/dist/datasetDetails/distributions/DistributionFormat.vue.mjs.map +1 -1
  101. package/dist/datasetDetails/distributions/Distributions.vue.mjs.map +1 -1
  102. package/dist/datasetDetails/distributions/DistributionsHeader.vue.d.ts +4 -4
  103. package/dist/datasetDetails/distributions/DistributionsHeader.vue.mjs.map +1 -1
  104. package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.d.ts +8 -8
  105. package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.mjs +2 -1
  106. package/dist/datasetDetails/distributions/DownloadAllDistributions.vue.mjs.map +1 -1
  107. package/dist/datasetDetails/distributions/FadingDistributionOverlay.vue.mjs +7 -5
  108. package/dist/datasetDetails/distributions/FadingDistributionOverlay.vue.mjs.map +1 -1
  109. package/dist/datasetDetails/distributions/distributionActions/DistributionActions.vue.mjs +6 -5
  110. package/dist/datasetDetails/distributions/distributionActions/DistributionActions.vue.mjs.map +1 -1
  111. package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.d.ts +2 -2
  112. package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.mjs +15 -12
  113. package/dist/datasetDetails/distributions/distributionActions/DistributionDownload.vue.mjs.map +1 -1
  114. package/dist/datasetDetails/distributions/distributionActions/DistributionDownloadAs.vue.mjs.map +1 -1
  115. package/dist/datasetDetails/distributions/distributionActions/DistributionDropdownDownload.vue.d.ts +2 -2
  116. package/dist/datasetDetails/distributions/distributionActions/DistributionDropdownDownload.vue.mjs.map +1 -1
  117. package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.d.ts +4 -4
  118. package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.mjs +6 -5
  119. package/dist/datasetDetails/distributions/distributionActions/DistributionOptionsDropdown.vue.mjs.map +1 -1
  120. package/dist/datasetDetails/distributions/distributionActions/DistributionPreview.vue.d.ts +4 -4
  121. package/dist/datasetDetails/distributions/distributionActions/DistributionPreview.vue.mjs.map +1 -1
  122. package/dist/datasetDetails/distributions/distributionActions/DistributionVisualizeButton.vue.d.ts +4 -4
  123. package/dist/datasetDetails/distributions/distributionActions/DistributionVisualizeButton.vue.mjs.map +1 -1
  124. package/dist/datasetDetails/distributions/distributionActions/LinkedDataButtonsDropdown.vue.mjs.map +1 -1
  125. package/dist/datasetDetails/distributions/distributionDetails/DistributionContent.vue.mjs +22 -21
  126. package/dist/datasetDetails/distributions/distributionDetails/DistributionContent.vue.mjs.map +1 -1
  127. package/dist/datasetDetails/distributions/distributionDetails/DistributionDescription.vue.d.ts +6 -6
  128. package/dist/datasetDetails/distributions/distributionDetails/DistributionDescription.vue.mjs.map +1 -1
  129. package/dist/datasetDetails/distributions/distributionDetails/DistributionDetails.vue.d.ts +16 -16
  130. package/dist/datasetDetails/distributions/distributionDetails/DistributionDetails.vue.mjs.map +1 -1
  131. package/dist/datasetDetails/distributions/distributionDetails/DistributionExpand.vue.d.ts +2 -2
  132. package/dist/datasetDetails/distributions/distributionDetails/DistributionExpand.vue.mjs.map +1 -1
  133. package/dist/datasetDetails/features/DatasetDetailsCategoriesKey.vue.d.ts +1 -1
  134. package/dist/datasetDetails/features/DatasetDetailsCategoriesKey.vue.mjs.map +1 -1
  135. package/dist/datasetDetails/features/DatasetDetailsDataServices.vue.mjs.map +1 -1
  136. package/dist/datasetDetails/features/DatasetDetailsFeatureHeader.vue.mjs.map +1 -1
  137. package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.d.ts +2 -2
  138. package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs.map +1 -1
  139. package/dist/datasetDetails/features/DatasetDetailsHvdThemes.vue.d.ts +1 -1
  140. package/dist/datasetDetails/features/DatasetDetailsHvdThemes.vue.mjs.map +1 -1
  141. package/dist/datasetDetails/features/DatasetDetailsIsUsedBy.vue.mjs.map +1 -1
  142. package/dist/datasetDetails/features/DatasetDetailsKeywords.vue.d.ts +1 -1
  143. package/dist/datasetDetails/features/DatasetDetailsKeywords.vue.mjs.map +1 -1
  144. package/dist/datasetDetails/features/DatasetDetailsMap.vue.mjs.map +1 -1
  145. package/dist/datasetDetails/features/DatasetDetailsPages.vue.mjs.map +1 -1
  146. package/dist/datasetDetails/features/DatasetDetailsRelations.vue.mjs.map +1 -1
  147. package/dist/datasetDetails/features/DatasetDetailsSubject.vue.d.ts +1 -1
  148. package/dist/datasetDetails/features/DatasetDetailsSubject.vue.mjs.map +1 -1
  149. package/dist/datasetDetails/features/DatasetDetailsVisualisations.vue.mjs.map +1 -1
  150. package/dist/datasetDetails/header/DatasetDetailsHeader.vue.mjs.map +1 -1
  151. package/dist/datasetDetails/header/DatasetDetailsHeaderCatalogue.vue.d.ts +2 -2
  152. package/dist/datasetDetails/header/DatasetDetailsHeaderCatalogue.vue.mjs.map +1 -1
  153. package/dist/datasetDetails/header/DatasetDetailsHeaderTitle.vue.d.ts +2 -2
  154. package/dist/datasetDetails/header/DatasetDetailsHeaderTitle.vue.mjs.map +1 -1
  155. package/dist/datasetDetails/navigation/DatasetDetailsNavigation.vue.mjs.map +1 -1
  156. package/dist/datasetDetails/navigation/DatasetDetailsNavigationLinks.vue.d.ts +2 -2
  157. package/dist/datasetDetails/navigation/DatasetDetailsNavigationLinks.vue.mjs.map +1 -1
  158. package/dist/datasetDetails/navigation/DatasetDetailsNavigationPage.vue.mjs.map +1 -1
  159. package/dist/datasetDetails/navigation/DatasetDetailsNavigationPages.vue.d.ts +7 -1
  160. package/dist/datasetDetails/navigation/DatasetDetailsNavigationPages.vue.mjs.map +1 -1
  161. package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.d.ts +200 -1
  162. package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs.map +1 -1
  163. package/dist/datasetDetails/properties/DatasetDetailsProperty.vue.mjs.map +1 -1
  164. package/dist/datasetDetails/properties/ValuesList.vue.mjs.map +1 -1
  165. package/dist/datasets/DatasetDate.vue.mjs.map +1 -1
  166. package/dist/datasets/DatasetList.vue.mjs.map +1 -1
  167. package/dist/datasets/Datasets.vue.mjs.map +1 -1
  168. package/dist/datasets/DatasetsFilters.vue.d.ts +1 -1
  169. package/dist/datasets/DatasetsFilters.vue.mjs.map +1 -1
  170. package/dist/datasets/DatasetsFiltersTabs.vue.d.ts +2 -2
  171. package/dist/datasets/DatasetsFiltersTabs.vue.mjs.map +1 -1
  172. package/dist/datasets/DatasetsTopControls.vue.d.ts +5 -5
  173. package/dist/datasets/DatasetsTopControls.vue.mjs +8 -6
  174. package/dist/datasets/DatasetsTopControls.vue.mjs.map +1 -1
  175. package/dist/datasets/datasetsFacets/DatasetsFacets.vue.mjs.map +1 -1
  176. package/dist/datasets/datasetsFacets/DatasetsFacetsItem.vue.mjs.map +1 -1
  177. package/dist/datasets/datasetsFacets/DatasetsMapFacet.vue.mjs.map +1 -1
  178. package/dist/embed/DatasetEmbedModal.vue.mjs.map +1 -1
  179. package/dist/embed/EmbedDataset.vue.mjs.map +1 -1
  180. package/dist/embed/EmbedDatasetSnippet.vue.mjs.map +1 -1
  181. package/dist/external/zod/dist/esm/v3/ZodError +84 -0
  182. package/dist/external/zod/dist/esm/v3/ZodError.map +1 -0
  183. package/dist/external/zod/dist/esm/v3/errors +10 -0
  184. package/dist/external/zod/dist/esm/v3/errors.map +1 -0
  185. package/dist/external/zod/dist/esm/v3/helpers/errorUtil +8 -0
  186. package/dist/external/zod/dist/esm/v3/helpers/errorUtil.map +1 -0
  187. package/dist/external/zod/dist/esm/v3/helpers/parseUtil +98 -0
  188. package/dist/external/zod/dist/esm/v3/helpers/parseUtil.map +1 -0
  189. package/dist/external/zod/dist/esm/v3/helpers/util +95 -0
  190. package/dist/external/zod/dist/esm/v3/helpers/util.map +1 -0
  191. package/dist/external/zod/dist/esm/v3/locales/en +62 -0
  192. package/dist/external/zod/dist/esm/v3/locales/en.map +1 -0
  193. package/dist/external/zod/dist/esm/v3/types +2440 -0
  194. package/dist/external/zod/dist/esm/v3/types.map +1 -0
  195. package/dist/facets/CatalogDetailsFacet.vue.mjs.map +1 -1
  196. package/dist/facets/ExpandableSelectFacet.vue.mjs.map +1 -1
  197. package/dist/facets/Facet.vue.mjs.map +1 -1
  198. package/dist/facets/FacetTitle.vue.mjs.map +1 -1
  199. package/dist/facets/RadioFacet.vue.mjs.map +1 -1
  200. package/dist/facets/SelectedFacetsOverview.vue.d.ts +2 -2
  201. package/dist/facets/SelectedFacetsOverview.vue.mjs.map +1 -1
  202. package/dist/form/FormKitGroup.vue.mjs.map +1 -1
  203. package/dist/form/Repeatable.vue2.mjs +2 -1
  204. package/dist/form/Repeatable.vue2.mjs.map +1 -1
  205. package/dist/map/MapBasic.vue.mjs.map +1 -1
  206. package/dist/map/MapBoundsReceiver.vue.mjs.map +1 -1
  207. package/dist/map/MapBoundsSender.vue.mjs.map +1 -1
  208. package/dist/modal/AppConfirmationDialog.vue.mjs.map +1 -1
  209. package/dist/modal/AppSnackbar.vue.mjs.map +1 -1
  210. package/dist/modal/AppToast.vue.mjs.map +1 -1
  211. package/dist/navigation/SubNavigation.vue.mjs.map +1 -1
  212. package/dist/pages/NotFound.vue.mjs.map +1 -1
  213. package/dist/pages/SparqlSearch.vue.mjs.map +1 -1
  214. package/dist/pages/user/UserImprint.vue.mjs.map +1 -1
  215. package/dist/pages/user/UserPrivacyPolicy.vue.mjs.map +1 -1
  216. package/dist/piveau-hub-ui-modules.css +1 -1
  217. package/dist/search/Search.vue.mjs.map +1 -1
  218. package/dist/services/datasetService.d.ts +1 -1
  219. package/dist/widgets/AppLink.vue.mjs.map +1 -1
  220. package/dist/widgets/Dropdown.vue.mjs.map +1 -1
  221. package/dist/widgets/Pagination.vue.d.ts +1 -1
  222. package/dist/widgets/Pagination.vue.mjs.map +1 -1
  223. package/dist/widgets/PropertyValue.vue.mjs.map +1 -1
  224. package/dist/widgets/PvBanner.vue.mjs.map +1 -1
  225. package/dist/widgets/PvButton.vue.mjs.map +1 -1
  226. package/dist/widgets/PvShowMore.vue.mjs.map +1 -1
  227. package/dist/widgets/ResourceAccessPopup.vue.d.ts +1 -1
  228. package/dist/widgets/ResourceAccessPopup.vue.mjs.map +1 -1
  229. package/dist/widgets/ResourceDetailsLinkedDataButton.vue.mjs.map +1 -1
  230. package/dist/widgets/Tooltip.vue.mjs.map +1 -1
  231. package/package.json +1 -1
  232. package/dist/external/zod/lib/index +0 -2849
  233. package/dist/external/zod/lib/index.map +0 -1
@@ -20,7 +20,7 @@ declare const _default: import('vue').DefineComponent<{}, {
20
20
  to: {
21
21
  name: string;
22
22
  query: {
23
- locale: import('vue-router').LocationQueryValue | import('vue-router').LocationQueryValue[];
23
+ locale: any;
24
24
  edit: boolean;
25
25
  draft?: undefined;
26
26
  };
@@ -54,7 +54,7 @@ declare const _default: import('vue').DefineComponent<{}, {
54
54
  };
55
55
  query: {
56
56
  draft: boolean;
57
- locale: import('vue-router').LocationQueryValue | import('vue-router').LocationQueryValue[];
57
+ locale: any;
58
58
  edit?: undefined;
59
59
  };
60
60
  };
@@ -74,7 +74,7 @@ declare const _default: import('vue').DefineComponent<{}, {
74
74
  to: {
75
75
  name: string;
76
76
  query: {
77
- locale: import('vue-router').LocationQueryValue | import('vue-router').LocationQueryValue[];
77
+ locale: any;
78
78
  edit: boolean;
79
79
  draft?: undefined;
80
80
  };
@@ -100,13 +100,13 @@ declare const _default: import('vue').DefineComponent<{}, {
100
100
  to: {
101
101
  name: string;
102
102
  params: {
103
- catalog: string | string[];
103
+ catalog: any;
104
104
  property: string;
105
105
  id: any;
106
106
  };
107
107
  query: {
108
108
  draft: boolean;
109
- locale: import('vue-router').LocationQueryValue | import('vue-router').LocationQueryValue[];
109
+ locale: any;
110
110
  edit?: undefined;
111
111
  };
112
112
  };
@@ -114,11 +114,11 @@ declare const _default: import('vue').DefineComponent<{}, {
114
114
  })[];
115
115
  })[];
116
116
  menuItems(): {
117
- name: string;
117
+ name: any;
118
118
  to: {
119
119
  name: string;
120
120
  query: {
121
- locale: import('vue-router').LocationQueryValue | import('vue-router').LocationQueryValue[];
121
+ locale: any;
122
122
  };
123
123
  };
124
124
  }[];
@@ -127,14 +127,14 @@ declare const _default: import('vue').DefineComponent<{}, {
127
127
  isOperator(): any;
128
128
  getUserData: import('vuex').Computed;
129
129
  hasAnyDoi(): any;
130
- getTitle: import('vuex').Computed;
131
- getDescription: import('vuex').Computed;
132
130
  getCatalog: import('vuex').Computed;
133
131
  getLoading: import('vuex').Computed;
134
132
  getID: import('vuex').Computed;
135
- getOtherIdentifiers: import('vuex').Computed;
133
+ getTitle: import('vuex').Computed;
134
+ getDescription: import('vuex').Computed;
136
135
  getAdmsIdentifiers: import('vuex').Computed;
137
136
  getIdentifiers: import('vuex').Computed;
137
+ getOtherIdentifiers: import('vuex').Computed;
138
138
  }, {
139
139
  setupKeycloakWatcher(): void;
140
140
  handleConfirm(action: any, argsObj: any, { successMessage, errorMessage }: {
@@ -1 +1 @@
1
- {"version":3,"file":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <dropup\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n \n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n \n menuItems() {\n let items = [\n {\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n },\n ];\n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment Moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_b","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_cache","_createTextVNode","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_withCtx","_hoisted_6","_renderSlot","_hoisted_8","_createVNode","_component_router_link","_createCommentVNode","_component_app_confirmation_dialog"],"mappings":"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"}
1
+ {"version":3,"file":"DPIMenu.vue.mjs","sources":["../../lib/data-provider-interface/DPIMenu.vue"],"sourcesContent":["<template>\n <div id=\"wrapper\" data-cy=\"dpi-menu\">\n <nav v-if=\"visible\">\n <div>\n <h4 class=\"text-white\">{{ $t(\"message.dataupload.menu.dpi\") }}</h4>\n </div>\n\n <div style=\"margin-top: 1%\">\n <dropup\n v-for=\"(group, index) in menuGroups\"\n :key=\"`Group${index}`\"\n :groupName=\"group.group\"\n :groupItems=\"group.items\"\n :show=\"$env.content.dataProviderInterface.buttons[group.group]\"\n :isOperator=\"getUserData.roles.includes('operator')\"\n :isCatalog=\"group.group === 'Catalogue' ? true : false\"\n >\n </dropup>\n <ul>\n <div class=\"btn-group dropup\">\n <li v-for=\"(menuItem, index) in menuItems\" :key=\"`Menu${index}`\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n @click=\"scrollToTop()\"\n >\n <!-- Menu items are either buttons or router-link -->\n <!-- depending if they have a 'to' or 'handler' property -->\n <component\n :is=\"menuItem.handler ? 'button' : 'router-link'\"\n :class=\"{ disabled: menuItem.disabled }\"\n :to=\"menuItem.to\"\n @click.native=\"menuItem.handler ? menuItem.handler() : null\"\n >\n {{ menuItem.handler }}\n {{ menuItem.name }}\n </component>\n </button>\n </li>\n </div>\n </ul>\n </div>\n\n <div v-if=\"getUserData.userName\" class=\"logoutWrap\">\n <slot name=\"right\" :get-user-data=\"getUserData\">\n <small class=\"text-white\"\n >{{ $t(\"message.dataupload.menu.loggedInAs\") }}\n {{ getUserData.userName }}</small\n >\n <br />\n <button type=\"button\" class=\"btn btn-default logout\">\n <router-link :to=\"{ name: 'Logout' }\">{{\n $t(\"message.dataupload.menu.logout\")\n }}</router-link>\n </button>\n </slot>\n </div>\n </nav>\n\n <app-confirmation-dialog\n id=\"DPIMenuModal\"\n :loading=\"modal.loading\"\n :confirm=\"modal.confirm\"\n @confirm=\"modal.confirmHandler\"\n >\n {{ modal.message }}\n </app-confirmation-dialog>\n </div>\n</template>\n\n<script>\nimport axios from \"axios\";\nimport $ from \"jquery\";\nimport { has, isEmpty } from \"lodash-es\";\nimport { mapGetters, mapActions } from \"vuex\";\nimport Dropup from \"./components/Dropup\";\nimport { useWindowScroll } from \"@vueuse/core\";\n\nexport default {\n name: \"DPI-menu\",\n components: {\n Dropup,\n },\n props: {},\n data() {\n return {\n showRatingService: this.$env.content.datasetDetails?.showRatingService,\n visible: true,\n modal: {\n show: false,\n loading: false,\n error: null,\n message: \"\",\n confirm: \"Ok\",\n confirmHandler: () => null,\n },\n };\n },\n setup() {\n const scrollToTop = () => {\n let { x, y } = useWindowScroll({ behavior: \"smooth\" });\n y.value = 0;\n };\n return {\n scrollToTop,\n };\n },\n computed: {\n ...mapGetters(\"datasetDetails\", [\n \"getCatalog\",\n \"getID\",\n \"getLoading\",\n \"getTitle\",\n \"getDescription\",\n 'getAdmsIdentifiers',\n 'getIdentifiers',\n 'getOtherIdentifiers',\n ]),\n // Individual DOI checks for display\n hasAnyDoi() {\n const checkDoi = (value) => value && value.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n \n return (\n checkDoi(this.getIdentifiers?.[0]) || // Check Identifier\n checkDoi(this.getAdmsIdentifiers?.[0]?.identifier) || // Check Adms\n checkDoi(this.getOtherIdentifiers?.[0]?.identifier) // Check Others\n );\n },\n ...mapGetters(\"auth\", [\"getUserData\"]),\n menuGroups() {\n return [\n {\n group: \"Dataset\",\n items: [\n {\n key: \"create-dataset\",\n name: \"createDataset\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false }, // if edit is false -> reset is triggered\n params: { property: \"datasets\" },\n },\n },\n {\n name: \"deleteDataset\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage || this.hasAnyDoi,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.datasetDeletion.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.datasetDeletion.confirm\"\n ),\n confirmHandler: () =>\n this.handleDelete({\n id: this.getID,\n property: \"datasets\",\n catalog: this.getCatalog.id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"edit-dataset\",\n name: \"editDataset\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.getCatalog.id || \"undefined\",\n property: \"datasets\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n\n {\n key: \"draft-dataset\",\n name: \"setToDraft\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.markAsDraft.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.markAsDraft.confirm\"\n ),\n confirmHandler: () =>\n this.handleMarkAsDraft({\n id: this.getID,\n catalog: this.getCatalog.id,\n title: this.getTitle,\n description: this.getDescription,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n key: \"register-dataset\",\n name: \"registerDoi\",\n disabled: !this.isLocatedOnAuthorizedDatasetPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message: this.$t(\n \"message.dataupload.menu.registerADoi.message\"\n ),\n confirm: this.$t(\n \"message.dataupload.menu.registerADoi.confirm\"\n ),\n confirmHandler: () =>\n this.handleRegisterDoi({\n id: this.getID,\n catalog: this.getCatalog.id,\n type:\n this.$env.content.dataProviderInterface\n .doiRegistrationService.persistentIdentifierType ||\n \"mock\",\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n ],\n },\n {\n group: \"Catalogue\",\n items: [\n {\n name: \"CreateCatalogue\",\n to: {\n name: \"DataProviderInterface-Input\",\n query: { locale: this.$route.query.locale, edit: false },\n params: { property: \"catalogues\" },\n },\n },\n {\n name: \"DeleteCatalogue\",\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n handler: () => {\n this.modal = {\n ...this.modal,\n ...{\n message:\n \"Are you sure you want to delete this catalogue? This can not be reverted!\",\n confirm: \"Delete catlogue (irreversible)\",\n confirmHandler: () =>\n this.handleDelete({\n id: this.$route.params.ctlg_id,\n property: \"catalogues\",\n catalog: this.$route.params.ctlg_id,\n }),\n },\n };\n $(\"#modal\").modal({ show: true });\n },\n },\n {\n name: \"EditCatalog\",\n onlyAuthorizedDatasetPage: true,\n disabled: !this.isLocatedOnAuthorizedCatalogPage,\n to: {\n name: \"DataProviderInterface-Edit\",\n params: {\n catalog: this.$route.params.ctlg_id\n ? this.$route.params.ctlg_id\n : \"undefined\",\n property: \"catalogues\",\n id: this.getID || \"undefined\",\n },\n query: {\n draft: false,\n locale: this.$route.query.locale,\n },\n },\n },\n ],\n },\n ];\n },\n \n menuItems() {\n let items = [\n {\n name: this.$t(\"message.dataupload.menu.draftDatasets\"),\n to: {\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.myCatalogues\"),\n to: {\n name: \"DataProviderInterface-UserCatalogues\",\n query: { locale: this.$route.query.locale },\n },\n },\n {\n name: this.$t(\"message.dataupload.menu.userProfile\"),\n to: {\n name: \"DataProviderInterface-UserProfile\",\n query: { locale: this.$route.query.locale },\n },\n },\n ];\n if (this.showRatingService && this.isOperator) {\n items.push({\n name: \"Comment Moderation\",\n to: {\n name: \"DataProviderInterface-CommentsModeration\",\n query: { locale: this.$route.query.locale },\n },\n });\n }\n return items;\n },\n isLocatedOnAuthorizedDatasetPage() {\n // Never return true while loading\n if (this.getLoading) return false;\n\n // Is the user located on the correct page?\n const isOnDatasetDetailsPage =\n this.$route.name === \"DatasetDetailsDataset\";\n if (!isOnDatasetDetailsPage) return false;\n const datasetId = isOnDatasetDetailsPage && this.$route.params.ds_id;\n\n // Does user have permission on dataset (based on current datasetDetails state)?\n const permissions = this.getUserData && this.getUserData.permissions;\n const catalogId = this.getCatalog && this.getCatalog.id;\n const hasPermission = permissions.find(\n (permission) => permission.rsname === catalogId\n );\n\n // Does the user have permission on the current dataset details page?\n return (\n hasPermission && isOnDatasetDetailsPage && datasetId === this.getID\n );\n },\n isLocatedOnAuthorizedCatalogPage() {\n // never return true while loading\n if (this.getLoading) return false;\n\n // is the user located on the correct page?\n const onCatalogPage = this.$route.name === \"CatalogueDetails\";\n if (!onCatalogPage) return false;\n const catalogId = onCatalogPage && this.$route.params.ctlg_id;\n\n // const permissions = this.getUserData && this.getUserData.permissions;\n // const hasPermission = permissions.find(permission => permission.rsname === catalogId);\n const hasPermission = true;\n // does user have permission on current catalogue\n return hasPermission && onCatalogPage;\n },\n isOperator() {\n return this.getUserData.roles.includes(\"operator\");\n }\n },\n methods: {\n checkDoi(doi = '') {\n return doi && doi.match(/^10\\.\\d{4,9}\\/[-._;()/:A-Z0-9]+$/i);\n },\n ...mapActions(\"auth\", [\"updateUserData\"]),\n ...mapActions(\"snackbar\", [\"showSnackbar\"]),\n setupKeycloakWatcher() {\n if (this.$keycloak && this.$keycloak.authenticated) {\n // Set up watcher here since we this.$keycloak might not be available.\n // If this.$keycloak is ensured, move this watcher out of this created hook.\n this.$watch(\n \"$keycloak.token\",\n async (newToken) => {\n if (!newToken) return;\n\n let rtpToken = this.$keycloak.rtpToken;\n if (!rtpToken) {\n const rtpTokenFn = this.$keycloak.getRtpToken;\n if (rtpTokenFn) {\n const res = await rtpTokenFn({ autoRefresh: true });\n rtpToken = res;\n }\n }\n\n this.updateUserData({\n authToken: newToken,\n rtpToken: rtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n },\n { immediate: true }\n );\n\n this.$watch(\"$keycloak.rtpToken\", (newRtpToken) => {\n if (!newRtpToken) return;\n\n this.updateUserData({\n authToken: this.$keycloak.token,\n rtpToken: newRtpToken,\n hubUrl: this.$env.api.hubUrl,\n });\n });\n }\n },\n async handleConfirm(action, argsObj, { successMessage, errorMessage }) {\n this.modal.loading = true;\n try {\n // Sleep for 250ms for better UX\n this.$Progress.start();\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.set(25);\n await this.$store.dispatch(action, argsObj);\n\n // Successful DOI registration\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n this.$Progress.finish();\n } catch (ex) {\n this.$Progress.fail();\n // eslint-disable-next-line no-console\n console.error(ex);\n\n const maybeErrorStatusMsg =\n ex.response && ex.response.data && ex.response.data.message;\n\n this.modal = {\n ...this.modal,\n ...{\n // Need to translate this\n message:\n \"DOI registration is not possible, the following error occured: \" +\n ex.response.data,\n confirm: \"Okay\",\n confirmHandler: () => $(\"#modal\").modal(\"hide\"),\n },\n };\n\n console.log(ex.response.data);\n let customErrorMessage =\n typeof errorMessage === \"string\" && errorMessage;\n customErrorMessage =\n typeof errorMessage === \"function\" && errorMessage(ex);\n // customErrorMessage = typeof errorMessage === 'object' && errorMessage.prefix && `${errorMessage.prefix}${maybeErrorStatusMsg && ` — ${maybeErrorStatusMsg}`}`;\n customErrorMessage =\n typeof errorMessage === \"object\" &&\n errorMessage.prefix + \" - \" + ex.response.data;\n\n console.log(errorMessage);\n const errorMsg =\n customErrorMessage ||\n maybeErrorStatusMsg ||\n ex.message ||\n \"An error occurred\";\n // show snackbar\n this.showSnackbar({\n message: errorMsg,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n async handleRegisterDoi({ id, catalog, type = \"eu-ra-doi\" }) {\n await this.handleConfirm(\n \"auth/createPersistentIdentifier\",\n { id, catalog, type },\n {\n successMessage: this.$te(\"message.snackbar.doiRegistration.success\")\n ? this.$t(\"message.snackbar.doiRegistration.success\")\n : \"Successfully registered DOI\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.doiRegistration.error\")\n ? this.$t(\"message.snackbar.doiRegistration.error\")\n : \"DOI registration failed\",\n },\n }\n );\n },\n async handleMarkAsDraft({ id, catalog, title, description }) {\n await this.handleConfirm(\n \"auth/putDatasetToDraft\",\n {\n id,\n catalog,\n title,\n description,\n },\n {\n successMessage: this.$te(\"message.snackbar.markAsDraft.success\")\n ? this.$t(\"message.snackbar.markAsDraft.success\")\n : \"Dataset successfully marked as draft\",\n errorMessage: {\n prefix: this.$te(\"message.snackbar.markAsDraft.error\")\n ? this.$t(\"message.snackbar.markAsDraft.error\")\n : \"Failed to mark dataset as draft\",\n },\n }\n );\n\n this.$router\n .push({\n name: \"DataProviderInterface-Draft\",\n query: { locale: this.$route.query.locale },\n })\n .catch(() => {});\n },\n async handleDelete({ id, property, catalog }) {\n // todo: create user dataset api (and maybe integrate to store)\n // For now, do request manually using axios\n\n this.modal.loading = true;\n this.$Progress.start();\n try {\n let endpoint;\n\n if (property === \"datasets\") {\n endpoint = `${this.$env.api.hubUrl}datasets/${id}?useNormalizedId=true&catalogue=${catalog}`;\n } else if (property === \"catalogues\") {\n endpoint = `${this.$env.api.hubUrl}catalogues/${id}`;\n }\n\n await axios.delete(endpoint, {\n headers: {\n \"Content-Type\": \"text/turtle\",\n Authorization: `Bearer ${this.getUserData.rtpToken}`,\n },\n });\n\n let successMessage;\n if (property === \"datasets\") {\n successMessage = this.$te(\"message.snackbar.deleteDataset.success\")\n ? this.$t(\"message.snackbar.deleteDataset.success\")\n : \"Dataset successfully deleted\";\n } else if (property === \"catalogues\") {\n successMessage = this.$te(\"message.snackbar.deleteCatalog.success\")\n ? this.$t(\"message.snackbar.deleteCatalog.success\")\n : \"Catalog successfully deleted\";\n }\n\n this.showSnackbar({\n message: successMessage,\n variant: \"success\",\n });\n this.$Progress.finish();\n\n // Redirect to Home\n this.$router\n .push({\n name: \"Datasets\",\n query: { locale: this.$route.query.locale, refresh: true },\n })\n .catch(() => {});\n } catch (ex) {\n this.$Progress.fail();\n\n let errorMessage;\n\n if (property === \"datasets\") {\n errorMessage = this.$te(\"message.snackbar.deleteDataset.error\")\n ? this.$t(\"message.snackbar.deleteDataset.error\")\n : \"Failed to delete dataset\";\n } else if (property === \"catalogues\") {\n errorMessage = this.$te(\"message.snackbar.deleteCatalog.error\")\n ? this.$t(\"message.snackbar.deleteCatalog.error\")\n : \"Failed to delete catalog\";\n }\n\n this.showSnackbar({\n message: `${errorMessage}${\n ex.response?.data ? ` — ${ex.response?.data}` : ex.message\n }`,\n variant: \"error\",\n });\n } finally {\n this.modal.loading = false;\n $(\"#modal\").modal(\"hide\");\n }\n },\n },\n created() {\n this.setupKeycloakWatcher();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#wrapper {\n background: linear-gradient(90deg, #082b7a, #0e47cb);\n width: 100%;\n position: sticky;\n bottom: 0;\n z-index: 999;\n}\n\nnav {\n max-width: 1400px;\n display: flex;\n flex-direction: row;\n margin: 0 auto;\n justify-content: space-between;\n font-size: 1rem;\n align-items: center;\n}\n\nul {\n float: right;\n\n li {\n display: inline;\n\n a {\n color: white;\n }\n }\n}\n\nbutton a {\n color: white;\n}\n\n.logout {\n display: block;\n margin: 0 auto;\n border: 1px solid white;\n padding: 0.1rem 1.5rem;\n}\n\n.logoutWrap {\n width: 14rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n</style>\n"],"names":["_sfc_main","Dropup","_a","x","y","useWindowScroll","mapGetters","checkDoi","value","_c","_b","_e","_d","$","items","isOnDatasetDetailsPage","datasetId","permissions","catalogId","permission","onCatalogPage","doi","mapActions","newToken","rtpToken","rtpTokenFn","newRtpToken","action","argsObj","successMessage","errorMessage","resolve","ex","maybeErrorStatusMsg","customErrorMessage","errorMsg","id","catalog","type","title","description","property","endpoint","axios","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_openBlock","_createElementBlock","_hoisted_1","$data","_hoisted_2","_createElementVNode","_toDisplayString","_ctx","_Fragment","_renderList","$options","group","index","_createBlock","_component_dropup","menuItem","$setup","_resolveDynamicComponent","_normalizeClass","_createTextVNode","_hoisted_6","_renderSlot","_hoisted_8","_createVNode","_component_router_link","_component_app_confirmation_dialog"],"mappings":"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"}
@@ -20,10 +20,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
20
20
  key: import('vue').ComputedRef<string>;
21
21
  isReady: import('vue').ComputedRef<boolean>;
22
22
  }, {
23
- property: string | string[];
24
- id: string | string[];
23
+ property: any;
24
+ id: any;
25
25
  }, {
26
- mode(): string;
26
+ mode(): any;
27
27
  getIsEditMode: import('vuex').Computed;
28
28
  }, {
29
29
  getClearPath(): string;
@@ -96,7 +96,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
96
96
  corsproxyApiUrl: string;
97
97
  };
98
98
  authentication: {
99
- useService: boolean;
100
99
  login: {
101
100
  useLogin: boolean;
102
101
  loginTitle: string;
@@ -106,6 +105,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
106
105
  logoutURL: string;
107
106
  logoutRedirectUri: string;
108
107
  };
108
+ useService: boolean;
109
109
  keycloak: {
110
110
  realm: string;
111
111
  clientId: string;
@@ -386,9 +386,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
386
386
  };
387
387
  };
388
388
  languages: {
389
+ useLanguageSelector: boolean;
389
390
  locale: string;
390
391
  fallbackLocale: string;
391
- useLanguageSelector: boolean;
392
392
  };
393
393
  themes: {
394
394
  header: string;
@@ -399,9 +399,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
399
399
  trackerUrl: string;
400
400
  };
401
401
  };
402
- dpiLocale: string | {
403
- [x: string]: string[];
404
- } | import('vue-router').LocationQueryValue[];
402
+ dpiLocale: any;
405
403
  }, {
406
404
  showDatasetsOverview(): boolean;
407
405
  showCatalogsOverview(): boolean;
@@ -1295,8 +1293,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1295
1293
  createDatasetID(): void;
1296
1294
  generateandTranslateSchema(property: any): void;
1297
1295
  clearAll: import('vuex').ActionMethod;
1298
- saveFormValues: import('vuex').ActionMethod;
1299
1296
  saveLocalstorageValues: import('vuex').ActionMethod;
1297
+ saveFormValues: import('vuex').ActionMethod;
1300
1298
  setIsEditMode: import('vuex').ActionMethod;
1301
1299
  setIsDraft: import('vuex').ActionMethod;
1302
1300
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -1351,8 +1349,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1351
1349
  PropertyChooser: import('vue').DefineSetupFnComponent<Record<string, any>, {}, {}, Record<string, any> & {}, import('vue').PublicProps>;
1352
1350
  Navigation: import('vue').DefineComponent<{
1353
1351
  steps?: any;
1354
- nextStep?: any;
1355
1352
  previousStep?: any;
1353
+ nextStep?: any;
1356
1354
  goToNextStep?: any;
1357
1355
  goToPreviousStep?: any;
1358
1356
  }, {
@@ -1376,7 +1374,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1376
1374
  corsproxyApiUrl: string;
1377
1375
  };
1378
1376
  authentication: {
1379
- useService: boolean;
1380
1377
  login: {
1381
1378
  useLogin: boolean;
1382
1379
  loginTitle: string;
@@ -1386,6 +1383,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1386
1383
  logoutURL: string;
1387
1384
  logoutRedirectUri: string;
1388
1385
  };
1386
+ useService: boolean;
1389
1387
  keycloak: {
1390
1388
  realm: string;
1391
1389
  clientId: string;
@@ -1666,9 +1664,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1666
1664
  };
1667
1665
  };
1668
1666
  languages: {
1667
+ useLanguageSelector: boolean;
1669
1668
  locale: string;
1670
1669
  fallbackLocale: string;
1671
- useLanguageSelector: boolean;
1672
1670
  };
1673
1671
  themes: {
1674
1672
  header: string;
@@ -1700,14 +1698,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1700
1698
  callback: Function;
1701
1699
  };
1702
1700
  };
1703
- property: string | string[];
1704
- id: string | string[];
1701
+ property: any;
1702
+ id: any;
1705
1703
  }, {
1706
1704
  formErrorCount(): boolean;
1707
1705
  getData: import('vuex').Computed;
1706
+ getUserData: import('vuex').Computed;
1708
1707
  getIsEditMode: import('vuex').Computed;
1709
1708
  getIsDraft: import('vuex').Computed;
1710
- getUserData: import('vuex').Computed;
1711
1709
  }, {
1712
1710
  closeModal(): void;
1713
1711
  handleIDError(): void;
@@ -1718,15 +1716,15 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1718
1716
  createDraft(): void;
1719
1717
  createCatalogue(datasetId: any): void;
1720
1718
  idunique(id: any): Promise<boolean>;
1721
- convertToRDF: import('vuex').ActionMethod;
1722
1719
  clearAll: import('vuex').ActionMethod;
1720
+ convertToRDF: import('vuex').ActionMethod;
1723
1721
  showSnackbar: import('vuex').ActionMethod;
1724
1722
  setIsEditMode: import('vuex').ActionMethod;
1725
1723
  setIsDraft: import('vuex').ActionMethod;
1726
1724
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
1727
1725
  steps?: any;
1728
- nextStep?: any;
1729
1726
  previousStep?: any;
1727
+ nextStep?: any;
1730
1728
  goToNextStep?: any;
1731
1729
  goToPreviousStep?: any;
1732
1730
  }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"DataProviderInterface.vue.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":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view","_createCommentVNode"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA,MAHpD,KAAAH,EAAA;AAAA,IAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA;;;"}
1
+ {"version":3,"file":"DataProviderInterface.vue.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":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 class=\"formkitHeader\" v-if=\"inDis\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 v-if=\"props.context.attrs.identifier != 'licence' && !inDis\" v-html=\"$t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label')\">\n </h4>\n\n <div class=\"formkitCmpWrap\">\n\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n\n <input ref=\"acInput\" class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ $t('message.dataupload.info.suggestions') }}</h3>\n <span>{{ $t('message.dataupload.info.suggestionText') }}</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">{{ $t('message.dataupload.info.tryIt')\n }}</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n\n\n <!-- <div class=\"formkit-wrapper mb-3\">\n <div v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\" class=\"formkit-help\"> \n </div> \n </div> -->\n\n <div v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, watch, computed, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n';\n\nimport qs from 'qs';\nimport axios from 'axios';\nimport { useAutocomplete } from '../composables/aucotomplete';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst { requestAutocompleteSuggestions, requestResourceName } = useAutocomplete()\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\nconst { t, locale } = useI18n();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\n\nlet matchesSearchstring = computed(() => {\n return t('message.dataupload.info.searchVocabulary')\n})\nlet matchesNothingFound = computed(() => {\n return t('message.dataupload.info.matchesNothingFound')\n})\nlet matches = ref({\n value: { name: matchesSearchstring }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet acInput = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\nlet inDis = computed(() => {\n try {\n if (props.context.attrs.class.includes(\"inDistribution\")) {\n return true\n }\n } catch (error) {\n\n }\n\n\n});\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await requestResourceName({ voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, locale.value, []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale.value, []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nonClickOutside(acInput, event => inputText.value = \"\")\n\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n\n for (let i = 0; i < response.data.results.length; i++) {\n\n\n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n inputText.value = \"\"\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\n await requestAutocompleteSuggestions({ voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n // filter OP_DATPRO\n const updatedArray = response.data.result.results.filter(obj => obj.id !== 'OP_DATPRO');\n\n const results = updatedArray.map((r) => ({\n name: getTranslationFor(r.pref_label, locale.value, []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: matchesNothingFound } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>\n"],"names":["instance","getCurrentInstance","requestAutocompleteSuggestions","requestResourceName","useAutocomplete","props","__props","useStore","t","locale","useI18n","listOfValues","computed","selection","voc","matchesSearchstring","matchesNothingFound","matches","ref","activeList","dropdownList","acInput","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","inDis","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty"],"mappings":"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"}
1
+ {"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 class=\"formkitHeader\" v-if=\"inDis\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 v-if=\"props.context.attrs.identifier != 'licence' && !inDis\" v-html=\"$t('message.dataupload.datasets.' + props.context.attrs.identifier + '.label')\">\n </h4>\n\n <div class=\"formkitCmpWrap\">\n\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n\n <input ref=\"acInput\" class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ $t('message.dataupload.info.suggestions') }}</h3>\n <span>{{ $t('message.dataupload.info.suggestionText') }}</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">{{ $t('message.dataupload.info.tryIt')\n }}</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n\n\n <!-- <div class=\"formkit-wrapper mb-3\">\n <div v-html=\"$t('message.dataupload.distributions.licence.vocabulary.help')\" class=\"formkit-help\"> \n </div> \n </div> -->\n\n <div v-html=\"props.context.attrs.info\" class=\"formkit-help\"></div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, watch, computed, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n';\n\nimport qs from 'qs';\nimport axios from 'axios';\nimport { useAutocomplete } from '../composables/aucotomplete';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst { requestAutocompleteSuggestions, requestResourceName } = useAutocomplete()\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\nconst { t, locale } = useI18n();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\n\nlet matchesSearchstring = computed(() => {\n return t('message.dataupload.info.searchVocabulary')\n})\nlet matchesNothingFound = computed(() => {\n return t('message.dataupload.info.matchesNothingFound')\n})\nlet matches = ref({\n value: { name: matchesSearchstring }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet acInput = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\nlet inDis = computed(() => {\n try {\n if (props.context.attrs.class.includes(\"inDistribution\")) {\n return true\n }\n } catch (error) {\n\n }\n\n\n});\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await requestResourceName({ voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, locale.value, []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale.value, []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nonClickOutside(acInput, event => inputText.value = \"\")\n\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n\n for (let i = 0; i < response.data.results.length; i++) {\n\n\n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n inputText.value = \"\"\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\n await requestAutocompleteSuggestions({ voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n // filter OP_DATPRO\n const updatedArray = response.data.result.results.filter(obj => obj.id !== 'OP_DATPRO');\n\n const results = updatedArray.map((r) => ({\n name: getTranslationFor(r.pref_label, locale.value, []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: matchesNothingFound } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>\n"],"names":["instance","getCurrentInstance","requestAutocompleteSuggestions","requestResourceName","useAutocomplete","props","__props","useStore","t","locale","useI18n","listOfValues","computed","selection","voc","matchesSearchstring","matchesNothingFound","matches","ref","activeList","dropdownList","acInput","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","inDis","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty","_openBlock","_createElementBlock","_hoisted_1","_unref","_hoisted_2","_toDisplayString","$t","_createElementVNode","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","$event","_cache","_isRef","_Fragment","_renderList","match","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_16","_hoisted_17","_hoisted_18","_normalizeClass","_hoisted_20","_hoisted_21"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGA,QAAIA,IAAWC,GAAkB,EAAG,WAAW,IAAI,OAAO,iBAAiB;AAE3E,UAAM,EAAE,gCAAAC,GAAgC,qBAAAC,EAAqB,IAAGC,GAAgB,GAE1EC,IAAQC;AAGA,IAAAC,GAAU;AACxB,UAAM,EAAE,GAAAC,GAAG,QAAAC,MAAWC;AAEtB,QAAIC,IAAeC,EAAS,MACnBP,EAAM,QAAQ,KACtB,GAEGQ,GACAC,IAAMT,EAAM,QAAQ,MAAM,KAE1BU,IAAsBH,EAAS,MAC1BJ,EAAE,0CAA0C,CACpD,GACGQ,IAAsBJ,EAAS,MAC1BJ,EAAE,6CAA6C,CACvD,GACGS,IAAUC,EAAI;AAAA,MAChB,OAAO,EAAE,MAAMH,EAAoB;AAAA,IACrC,CAAC,GACGI,IAAaD,EAAI,GACjBE,IAAeF,EAAI,IAAI,GACvBG,IAAUH,EAAI,IAAI,GAClBI,IAAYJ,EAAI,EAAE,GAClBK,IAAY,CAAA,GACZC,IAAY,CAAA,GACZC,IAAeP,EAAI;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AACmB,IAAAA,EAAK;AACzB,QAAIQ,IAAqBR,EAAI,EAAE;AAE/B,IAAAS,GAAU,YAAY;AACpB,MAAAL,EAAU,QAAQ;AAAA,IACpB,CAAC;AACD,QAAIM,IAAQhB,EAAS,MAAM;AACzB,UAAI;AACF,YAAIP,EAAM,QAAQ,MAAM,MAAM,SAAS,gBAAgB;AACrD,iBAAO;AAAA,MAEV,QAAe;AAAA,MAEhB;AAAA,IAGF,CAAC;AACD,IAAAwB,EAAMZ,GAAS,YAAY;AAAA,KAAG,GAC9BY,EAAMH,GAAoB,YAAY;AAAA,KAAG;AAEzC,UAAMI,IAAiB,OAAOC,MAAQ;AAEpC,UAAIA,KAAO,MAAW;AACpB,YAAIC,IACFlB,MAAQ,sBACRA,MAAQ,2BAENmB;AAEJ,qBAAM9B,EAAoB,EAAE,KAAKW,GAAK,KAAKiB,GAAK,MAAM/B,EAAU,CAAA,EAAE;AAAA,UAChE,CAACkC,MAAa;AACZ,YAAI7B,EAAM,QAAQ,MAAM,aAAa,iCAC/B6B,KAAY,SAMdD,IALaD,IACTE,EAAS,KAAK,OAAO,QACpB,OAAO,CAACC,MAAYA,EAAQ,aAAaJ,CAAG,EAC5C,IAAI,CAACI,MAAYA,EAAQ,SAAS,EAAE,CAAC,EAAE,KACxCC,EAAkBF,EAAS,KAAK,OAAO,WAAWzB,EAAO,OAAO,CAAA,CAAE,KAKpEyB,KAAY,SAMdD,IALaD,IACTE,EAAS,KAAK,OAAO,QACpB,OAAO,CAACC,MAAYA,EAAQ,aAAaJ,CAAG,EAC5C,IAAI,CAACI,MAAYA,EAAQ,UAAU,EAAE,CAAC,EAAE,KACzCC,EAAkBF,EAAS,KAAK,OAAO,YAAYzB,EAAO,OAAO,CAAA,CAAE;AAAA,UAK7E;AAAA,QACN,GACWwB;AAAA,MACT;AAAA,IAEF;AAEA,IAAAI,GAAY,YAAY;AACtB,YAAMC,IAAS3B,EAAa;AAG5B,UAAI2B,EAAO,eAAe,MAAM,KAC1BA,EAAO,SAASA,EAAO,UAAU;AACnC,YAAIC;AACJ,QAAKlC,EAAM,QAAQ,MAAM,aACvBkC,IAAUT,EAAeQ,EAAO,QAAQ,GACxCjC,EAAM,QAAQ,KAAK,MAAM,EAAE,MAAM,MAAMkC,GAAS,UAAUD,EAAO,UAAU;AAAA,MAG/E;AAGF,UAAIA,EAAO,UAAU,GAAG;AACtB,YAAIE,IAAc,CAAA;AAClB,iBAASC,IAAQ,GAAGA,IAAQH,EAAO,QAAQG;AACzC,UAAIH,EAAOG,CAAK,EAAE,SAASH,EAAOG,CAAK,EAAE,aACvCD,EAAY,KAAK,EAAE,MAAM,MAAMV,EAAeQ,EAAOG,CAAK,EAAE,QAAQ,GAAG,UAAUH,EAAOG,CAAK,EAAE,SAAQ,CAAE,GACzGpC,EAAM,QAAQ,KAAK,MAAMmC,CAAW;AAAA,MAG1C;AAAA,IACF,CAAC;AACD,aAASE,EAAqBC,GAAS;AAErC,UAAIC,IAAY,EAAE,MAAM,IAAI,MAAMvC,EAAM,QAAQ,KAAK,KAAK,GACtDwC,IAAqB,KAAK,MAAM,aAAa,QAAQ,cAAc,CAAC;AAExE,eAASJ,IAAQ,GAAGA,IAAQ,OAAO,KAAKI,CAAkB,EAAE,QAAQJ;AAClE,iBAASK,IAAa,GAAGA,IAAa,OAAO,KAAKD,CAAkB,EAAEJ,CAAK,EAAE,QAAQK,KAAc;AACjG,cAAIC,IAAO,OAAO,QAASF,CAAmB;AAC9C,cAAI;AACF,mBAAO,KAAKE,EAAKN,CAAK,EAAEK,CAAU,CAAC,EAAE,OAAO,CAAAE,MAAK;AAC/C,cAAIA,MAAM3C,EAAM,QAAQ,KAAK,SAC3BuC,EAAU,OAAOG,EAAKN,CAAK,EAAE,CAAC,GAE1BE,MAAY,YAEd9B,IAAY,CAAC,GACbgC,EAAmBD,EAAU,IAAI,EAAEA,EAAU,IAAI,IAAI/B,IAIrDgC,EAAmBD,EAAU,IAAI,EAAEA,EAAU,IAAI,IAAI/B,GAGvD,aAAa,QAAQ,gBAAgB,KAAK,UAAUgC,CAAkB,CAAC;AAAA,YAEnF,CAAS;AAAA,UACF,QAAe;AAAA,UAChB;AAAA,QACF;AAGF,aAAO,oBAAoB,SAASI,CAAc;AAAA,IACpD;AACA,IAAAA,EAAe7B,GAAc,CAAA8B,MAAS/B,EAAW,QAAQ,EAAK,GAC9D8B,EAAe5B,GAAS,CAAA6B,MAAS5B,EAAU,QAAQ,EAAE;AAErD,QAAI6B,IAAoB,OAAOC,GAAOC,MAAU;AAE9C,UAAIC,IAAa;AACjB,MAAID,KAAS,SACXC,IAAaA,IAAa;AAG5B,UAAIC,IAAQC,GAAG,UAAU;AAAA,QACvB,MAAQJ;AAAA,QACR,OAASE;AAAA,MACb,CAAG;AAGD,UAAIG,IAAS;AAAA,QACX,QAAQ;AAAA,QACR,KAAK3C,KAAO,YACRd,EAAS,QAAQ,sBAAsB,mBACvCA,EAAS,QAAQ,sBAAsB;AAAA,QAC3C,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,QAAU;AAAA,QACX;AAAA,QACD,MAAMuD;AAAA,MACV;AAIE,MAAAG,GAAMD,CAAM,EACT,KAAK,OAAOvB,MAAa;AAExB,iBAASyB,IAAI,GAAGA,IAAIzB,EAAS,KAAK,QAAQ,QAAQyB;AAGhD,UAAAnC,EAAUmC,CAAC,IAAI,EAAE,MAAQzB,EAAS,KAAK,QAAQyB,CAAC,EAAE,OAAO,UAAYzB,EAAS,KAAK,QAAQyB,CAAC,EAAE,KAAK,aAAe,GAAM;AAE1H,YAAIC,IAAiB,CAAC;AACtB,QAAIjD,EAAa,MAAM,SAAS,KAC9BA,EAAa,MAAM,QAAQ,CAAAkD,MAAW;AACpC,UAAAD,EAAe,KAAK,EAAE,MAAQC,EAAQ,MAAM,UAAYA,EAAQ,UAAU,aAAe,GAAI,CAAE;AAAA,QACzG,CAAS,GAEC3B,EAAS,KAAK,QAAQ,SAAS,MACjCV,EAAUA,EAAU,SAAS,CAAC,IAAI,EAAE,MAAQ,OAAO,UAAY,WAAW,aAAe,GAAM,IAGjGE,EAAmB,QAAQoC,EAAgBF,GAAgBpC,CAAS;AAAA,MAE1E,CAAK,EACA,MAAM,SAAUuC,GAAO;AACtB,gBAAQ,IAAIA,CAAK;AAAA,MACvB,CAAK;AAAA,IACL;AACA,mBAAeC,EAAqBC,GAAM;AAExC,MAAIA,EAAK,aAAa,YACpBC,EAAqB,CAAC,KAGtBC,EAAS,EAAE,MAAMF,EAAK,MAAM,UAAUA,EAAK,UAAU,GACrDC,EAAqB;AAAA,IAEzB;AACA,aAASJ,EAAgBM,GAAQC,GAAQ;AAEvC,UAAIC,IAAcF,EAAO,OAAOC,CAAM,GAClCE,IAAgB,CAAA,GAChBC,IAAc,oBAAI;AAEtB,aAAAF,EAAY,QAAQ,CAAAG,MAAO;AACzB,QAAKD,EAAY,IAAIC,EAAI,QAAQ,MAC/BD,EAAY,IAAIC,EAAI,QAAQ,GACvBA,EAAI,eACPF,EAAc,KAAKE,CAAG;AAAA,MAG9B,CAAG,GAGMF;AAAA,IACT;AACA,UAAML,IAAuB,OAAOQ,MAAgB;AAElD,UAAIC,IAAMC,GAAQ,WAAW,EAAE,MAAM,iBAAiB;AACtD,eAASjB,IAAI,GAAGA,IAAIgB,EAAI,QAAQhB;AAC9B,QAAIgB,EAAIhB,CAAC,EAAE,WAAW,MAAM,SACtBe,KAAe,OACjB,MAAMvB,EAAkBwB,EAAIhB,CAAC,EAAE,QAAQ,GAAG,CAAC,IAExC,MAAMR,EAAkBwB,EAAIhB,CAAC,EAAE,QAAQ,CAAC;AAAA,IAInD;AAGA,IAAAtD,EAAM,QAAQ,QAAQ,SAAS,wBAAwBA,EAAM,QAAQ,MAAM;AAE3E,UAAM8D,IAAW,OAAOnB,MAAM;AAE5B,UADA1B,EAAU,QAAQ,IACd,OAAO,KAAK0B,CAAC,EAAE,WAAW,GAS9B;AAAA,YANIrC,EAAa,MAAM,SAAS,MAE9BY,IAAYZ,EAAa,QAIvBN,EAAM,QAAQ,MAAM;AAEtB,cAAIkB,EAAU,UAAU,GAAG;AACzB,gBAAIsD,IAAmB,EAAE,MAAM7B,EAAE,MAAM,UAAUA,EAAE,YAC/C8B,IAAevD,EAAU,OAAO,CAACsC,MAAYA,EAAQ,QAAQb,EAAE,IAAI;AACvE,YAAA8B,EAAa,KAAKD,CAAgB,GAClChE,IAAYiE,GACZ,MAAMzE,EAAM,QAAQ,KAAK,MAAMQ,CAAS;AAAA,UAE1C;AAEE,YAAAU,EAAU,KAAK,EAAE,MAAMyB,EAAE,MAAM,UAAUA,EAAE,UAAU,GACrDnC,IAAYU,GACZ,MAAMlB,EAAM,QAAQ,KAAK,MAAMQ,CAAS;AAAA,aAIvC;AAAA,cAAImC,EAAE,aAAa;AAAW;AAC9B,UAAIA,MAAM,WAAW,MAAM3C,EAAM,QAAQ,KAAK,MAAM,CAAA,CAAE,GAAGqC,EAAqBM,CAAC,MAElFnC,IAAY,EAAE,MAAMmC,EAAE,MAAM,UAAUA,EAAE,YACxC,MAAM3C,EAAM,QAAQ,KAAK,MAAMQ,CAAS;AAAA;AAE1C,QAAA6B;;IACF,GAEMqC,KAA6B,OAAO/B,MAAM;AAC9C,UAAIgC,IAAYhC,EAAE,OAAO;AACzB,YAAM9C,EAA+B,EAAE,KAAAY,GAAK,MAAMkE,GAAW,MAAMhF,EAAS,IAAI,QAAS,CAAA,EAAE,KAAK,CAACkC,MAAa;AAI5G,cAAM+C,IAFe/C,EAAS,KAAK,OAAO,QAAQ,OAAO,CAAAuC,MAAOA,EAAI,OAAO,WAAW,EAEzD,IAAI,CAACS,OAAO;AAAA,UACvC,MAAM9C,EAAkB8C,EAAE,YAAYzE,EAAO,OAAO,CAAA,CAAE,IAAI,OAAOyE,EAAE,KAAK;AAAA,UACxE,UAAUA,EAAE;AAAA,QACb,EAAC;AACF,QAAID,EAAQ,WAAW,IACrBhE,EAAQ,QAAQ,EAAE,OAAO,EAAE,MAAMD,EAAmB,EAAG,IAEpDC,EAAQ,QAAQgE;AAAA,MACzB,CAAG;AAAA,IACH;AAEA,aAASE,GAAenC,GAAG;AACzB,MAAA3C,EAAM,QAAQ,KAAK,MAAM,CAAA,CAAE,GAC3B8D,EAAS,OAAO;AAAA,IAClB;AACA,aAASiB,EAAuBpC,GAAG;AAEjC,MAAIhD,EAAS,QAAQ,sBAAsB,oBACzCkE,EAAqB,GAEnBvD,EAAa,MAAM,SAAS,MAC9BY,IAAYZ,EAAa,QAG3BY,EAAU,OAAOA,EAAU,UAAU,CAACsC,MAAYA,EAAQ,QAAQb,EAAE,IAAI,GAAG,CAAC,GAC5EnC,IAAYU,GACZlB,EAAM,QAAQ,KAAK,MAAMQ,CAAS,GAClC6B;IACF;sBAtaE2C,EAAA,GAAAC,EAoFM,OApFNC,IAoFM;AAAA,MAhF4BC,EAAK5D,CAAA,UAArC0D,EAEK,MAFLG,IAEKC,EADAC,EAAE,GAAA,sCAAuCtF,EAAM,QAAQ,MAAM,aAAU,QAAA,CAAA,GAAA,CAAA;;MAElEA,EAAM,QAAQ,MAAM,4BAA4BmF,EAAK5D,CAAA,UAA/D0D,EACO,MAAA;AAAA;QAD0D,WAAQK,KAAoC,iCAAAtF,EAAM,QAAQ,MAAM,aAAU,QAAA;AAAA;;MAG3IuF,EAyEM,OAzENC,IAyEM;AAAA,QAvEJD,EAsEM,OAtENE,IAsEM;AAAA,UArEqC,CAAAzF,EAAM,QAAQ,MAAM,YAAYA,EAAM,QAAQ,MAAM,QAA7FgF,KAAAC,EAMM,OANNS,IAMM;AAAA,YAFJH,EAA2E,KAA3EI,IAA4CN,EAAArF,EAAM,QAAQ,MAAM,IAAI,GAAA,CAAA;AAAA;YACpEuF,EAAmD,OAAA;AAAA,cAA9C,OAAM;AAAA,cAAW,SAAOT;AAAA;sBAE/BG,EA6DM,OAAAW,IAAA;AAAA,YA5DJL,EAOM,OAPNM,IAOM;AAAA,gBAFJN,EACgG,SAAA;AAAA,yBADrF;AAAA,gBAAJ,KAAIvE;AAAA,gBAAU,OAAM;AAAA,gBAA0B,aAAahB,EAAM,QAAQ,MAAM;AAAA,qEAAsBiB,EAAS,QAAA6E,IAAA7E,IAAA6E;AAAA,gBACnH,MAAK;AAAA,gBAAY,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAEpB,GAA2BoB,CAAM;AAAA,gBAAI,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAEE,EAAUlF,CAAA,IAAAA,EAAA,QAAA,CAAAqE,EAAArE,CAAA,IAAAA,IAAA,CAAIqE,EAAUrE,CAAA;AAAA;qBADcqE,EAASlE,CAAA,CAAA;AAAA;;;cAIvHsE,EAIK,MAAA;AAAA,uBAJG;AAAA,cAAJ,KAAIxE;AAAA,cAAmC,OAAM;AAAA;sBAC/CkE,EAEKgB,GAAA,MAAAC,EAFef,EAAOvE,CAAA,GAAA,CAAhBuF,YAAXlB,EAEK,MAAA;AAAA,gBAFyB,KAAKkB;AAAA,gBAAQ;AAAO,kBAAArC,EAASqC,CAAK,GAAGH,EAAAlF,CAAA,IAAAA,EAAA,QAAA,CAAAqE,EAAArE,CAAA,IAAAA,KAAcqE,EAAUrE,CAAA;AAAA,gBAAA;AAAA,gBACzF,OAAM;AAAA,cAAoF,GAAAuE,EAAAc,EAAM,IAAI,GAAA,GAAAC,EAAA;;mBAFzEjB,EAAUrE,CAAA,CAAA;AAAA;;YAK9BqE,EAAAxF,CAAA,EAAS,QAAQ,sBAAsB,oBAAoBK,EAAM,QAAQ,MAAM,cAA1FgF,KAAAC,EA+BM,OA/BNoB,IA+BM;AAAA,sBA7BJpB,EAOMgB,GAAA,MAAAC,EAPcf,EAAY7E,CAAA,GAAA,CAApBsD,YAAZqB,EAOM,OAAA,EAP6B,KAAKrB,KAAI;AAAA,gBAC1C2B,EAKM,OALNe,IAKM;AAAA,kBAJJf,EAGM,OAAA;AAAA,oBAHD,OAAM;AAAA,oBAAU;AAAO,sBAAA3B,EAAK,cAAe,CAAAA,EAAK;AAAA,oBAAW;AAAA;oBAC9D2B,EAA4B,QAAA,MAAAF,EAAnBzB,EAAK,IAAI,GAAA,CAAA;AAAA;oBAClB2B,EAAiE,OAAA;AAAA,sBAA5D,OAAM;AAAA,sBAAW,SAAK,CAAAO,MAAEf,EAAuBnB,CAAI;AAAA;;;;;cAI9D2B,EAmBM,OAnBNgB,IAmBM;AAAA,gBAlBJhB,EAMM,OANNiB,IAMM;AAAA,kBALJjB,EAAwD,cAAjDD,EAAE,GAAA,qCAAA,CAAA,GAAA,CAAA;AAAA;kBACTC,EAA+D,gBAAtDD,EAAE,GAAA,wCAAA,CAAA,GAAA,CAAA;AAAA;kBACXC,EAEa,UAAA;AAAA,oBAFL,OAAM;AAAA,oBAAgB,MAAK;AAAA,oBAChC,SAAOQ,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAD,MAAA;AAAA,sBAAAjC,EAAwB,GAAAsB,EAAA/D,CAAA,EAAa,QAAK;AAAA,oBAAA;AAAA,uBAAYkE,EAAE,GAAA,+BAAA,CAAA,GAAA,CAAA;AAAA;;gBAG5BH,EAAA/D,CAAA,EAAa,SAArD4D,KAAAC,EAUM,OAVNwB,IAUM;AAAA,0BATJxB,EAQMgB,GAAA,MAAAC,EARcf,EAAkB9D,CAAA,GAAA,CAA1BuC,YAAZqB,EAQM,OAAA;AAAA,oBARmC,KAAKrB;AAAA,oBAAM,OAAM;AAAA;oBACxD2B,EAMM,OAAA;AAAA,sBAND,OAAMmB,GAAA,CAAA,iDACW,EAAA,UAAA9C,EAAK,aAAQ,UAAA,CAAA,CAAA;AAAA,sBAChC,SAAK,CAAAkC,MAAA;AAAE,wBAAAlC,EAAK,cAAW,CAAIA,EAAK,aAAaD,EAAqBC,CAAI;AAAA,sBAAA;AAAA;sBACvE2B,EAEM,OAFNoB,IAEM;AAAA,wBADJpB,EAA4B,QAAA,MAAAF,EAAnBzB,EAAK,IAAI,GAAA,CAAA;AAAA;;;;;mBAQ9BoB,KAAAC,EAKM,OALN2B,IAKM;AAAA,eAJJ5B,EAAA,EAAA,GAAAC,EAGMgB,WAHuDjG,EAAM,QAAQ,QAAtB4D,YAArDqB,EAGM,OAAA;AAAA,gBAHD,OAAM;AAAA,gBAAwE,KAAKrB;AAAA;gBACtF2B,EAA4B,QAAA,MAAAF,EAAnBzB,EAAK,IAAI,GAAA,CAAA;AAAA;gBAClB2B,EAAiE,OAAA;AAAA,kBAA5D,OAAM;AAAA,kBAAW,SAAK,CAAAO,MAAEf,EAAuBnB,CAAI;AAAA;;;;YAU5D2B,EAAkE,OAAA;AAAA,cAA7D,WAAQvF,EAAM,QAAQ,MAAM;AAAA,cAAM,OAAM;AAAA;;;;;;;"}