@piveau/piveau-hub-ui-modules 4.0.23 → 4.0.26

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.
@@ -1,13 +1,13 @@
1
- import { isEmpty as u, isNil as h, has as p } from "lodash-es";
1
+ import { isEmpty as u, isNil as h, cloneDeep as p, has as b } from "lodash-es";
2
2
  import y from "axios";
3
- import { getTranslationFor as b } from "../../utils/helpers.mjs";
4
- function x(e) {
3
+ import { getTranslationFor as x } from "../../utils/helpers.mjs";
4
+ function g(e) {
5
5
  let t = {};
6
6
  for (const r in e)
7
7
  t = Object.assign(t, e[r]);
8
8
  return t;
9
9
  }
10
- function g(e, t) {
10
+ function v(e, t) {
11
11
  let r;
12
12
  const s = e.indexOf(":");
13
13
  if (s !== -1) {
@@ -17,24 +17,24 @@ function g(e, t) {
17
17
  r = e;
18
18
  return r;
19
19
  }
20
- function m(e, t) {
20
+ function d(e, t) {
21
21
  let r;
22
22
  e.includes("#") ? r = e.lastIndexOf("#") : r = e.lastIndexOf("/");
23
23
  const s = e.substr(r + 1), n = e.substr(0, r + 1);
24
- return `${Object.keys(t.prefixes).find((l) => t.prefixes[l] === n)}:${s}`;
24
+ return `${Object.keys(t.prefixes).find((a) => t.prefixes[a] === n)}:${s}`;
25
25
  }
26
- function v(e, t) {
26
+ function N(e, t) {
27
27
  const r = [];
28
28
  for (let s of e)
29
- r.push(m(s.predicate.value, t));
29
+ r.push(d(s.predicate.value, t));
30
30
  return r;
31
31
  }
32
- function N(e) {
32
+ function O(e) {
33
33
  for (var t = "", r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", s = r.length, n = 0; n < e; n++)
34
34
  t += r.charAt(Math.floor(Math.random() * s));
35
35
  return t;
36
36
  }
37
- function O(e) {
37
+ function P(e) {
38
38
  let t;
39
39
  try {
40
40
  t = new URL(e);
@@ -43,7 +43,7 @@ function O(e) {
43
43
  }
44
44
  return t.protocol === "http:" || t.protocol === "https:";
45
45
  }
46
- async function P(e, t) {
46
+ async function $(e, t) {
47
47
  let r, s;
48
48
  t !== "" ? s = {
49
49
  method: "GET",
@@ -57,20 +57,20 @@ async function P(e, t) {
57
57
  };
58
58
  try {
59
59
  r = fetch(e, s).then((n) => {
60
- var l;
61
- const c = (l = n == null ? void 0 : n.body) == null ? void 0 : l.getReader();
60
+ var a;
61
+ const c = (a = n == null ? void 0 : n.body) == null ? void 0 : a.getReader();
62
62
  return new ReadableStream({
63
- start(a) {
64
- function i() {
65
- c == null || c.read().then(({ done: o, value: d }) => {
66
- if (o) {
67
- a.close();
63
+ start(l) {
64
+ function o() {
65
+ c == null || c.read().then(({ done: i, value: m }) => {
66
+ if (i) {
67
+ l.close();
68
68
  return;
69
69
  }
70
- a.enqueue(d), i();
70
+ l.enqueue(m), o();
71
71
  });
72
72
  }
73
- i();
73
+ o();
74
74
  }
75
75
  });
76
76
  }).then(
@@ -81,7 +81,7 @@ async function P(e, t) {
81
81
  }
82
82
  return r;
83
83
  }
84
- function $(e, t, r) {
84
+ function I(e, t, r) {
85
85
  const s = {
86
86
  datasets: {},
87
87
  distributions: {},
@@ -90,14 +90,14 @@ function $(e, t, r) {
90
90
  for (let n in r[e]) {
91
91
  s[e][n] = [];
92
92
  const c = r[e][n];
93
- for (let l = 0; l < c.length; l++) {
94
- const a = c[l], i = t[e][a].name;
95
- i !== void 0 && s[e][n].push(i);
93
+ for (let a = 0; a < c.length; a++) {
94
+ const l = c[a], o = t[e][l].name;
95
+ o !== void 0 && s[e][n].push(o);
96
96
  }
97
97
  }
98
98
  return s;
99
99
  }
100
- function I({ accessUrl: e, fileUploadUrl: t }) {
100
+ function j({ accessUrl: e, fileUploadUrl: t }) {
101
101
  const r = e.endsWith("/") ? e : `${e}/`, s = t.endsWith("/") ? t : `${t}/`;
102
102
  if (r.startsWith(s)) {
103
103
  const n = r.split("/");
@@ -108,27 +108,28 @@ function I({ accessUrl: e, fileUploadUrl: t }) {
108
108
  function T(e, t, r, s) {
109
109
  s[t][r].push(e);
110
110
  }
111
- function j(e, t, r, s) {
111
+ function k(e, t, r, s) {
112
112
  s[t][r].splice(s[t][r].indexOf(e), 1);
113
113
  }
114
114
  function f(e) {
115
115
  let t = !1;
116
116
  if (!h(e) && !u(e)) {
117
- p(e, "@language") && delete e["@language"];
118
- const r = Object.values(e).filter((s) => s);
119
- if (!u(r))
120
- for (let s = 0; s < r.length; s++) {
121
- const n = r[s];
122
- if (Array.isArray(n))
123
- for (let c = 0; c < n.length; c++)
124
- f(n[c]) && (t = !0);
117
+ let r = p(e);
118
+ b(r, "@language") && delete r["@language"];
119
+ const s = Object.values(r).filter((n) => n);
120
+ if (!u(s))
121
+ for (let n = 0; n < s.length; n++) {
122
+ const c = s[n];
123
+ if (Array.isArray(c))
124
+ for (let a = 0; a < c.length; a++)
125
+ f(c[a]) && (t = !0);
125
126
  else
126
- typeof n == "object" ? f(n) && (t = !0) : t = !0;
127
+ typeof c == "object" ? f(c) && (t = !0) : t = !0;
127
128
  }
128
129
  }
129
130
  return t;
130
131
  }
131
- function k(e) {
132
+ function A(e) {
132
133
  let t = !1;
133
134
  if (e !== void 0 && e !== "" && !u(e) && !h(e))
134
135
  if (Array.isArray(e)) {
@@ -141,7 +142,7 @@ function k(e) {
141
142
  typeof e == "object" ? t = f(e) : t = !0;
142
143
  return t;
143
144
  }
144
- async function A(e, t, r) {
145
+ async function w(e, t, r) {
145
146
  const s = Object.keys(t.vocabPrefixes).find((n) => e.includes(t.vocabPrefixes[n]));
146
147
  try {
147
148
  let n;
@@ -151,42 +152,42 @@ async function A(e, t, r) {
151
152
  const c = e.replace(t.vocabPrefixes[s], "");
152
153
  n = `${r.api.baseUrl}vocabularies/${s}/${c}`;
153
154
  }
154
- return new Promise((c, l) => {
155
- y.get(n).then((a) => {
156
- c(a);
157
- }).catch((a) => {
158
- l(a);
155
+ return new Promise((c, a) => {
156
+ y.get(n).then((l) => {
157
+ c(l);
158
+ }).catch((l) => {
159
+ a(l);
159
160
  });
160
161
  });
161
162
  } catch {
162
163
  }
163
164
  }
164
- async function w(e, t, r, s) {
165
+ async function U(e, t, r, s) {
165
166
  let n;
166
- const c = Object.keys(t.vocabPrefixes).find((a) => e.includes(t.vocabPrefixes[a]));
167
- let l = c === "iana-media-types" || c === "spdx-checksum-algorithm";
168
- return await A(e, t, s).then(
169
- (a) => {
170
- n = l ? a.data.result.results.filter((o) => o.resource === e).map((o) => o.pref_label)[0].en : b(a.data.result.pref_label, r, []);
167
+ const c = Object.keys(t.vocabPrefixes).find((l) => e.includes(t.vocabPrefixes[l]));
168
+ let a = c === "iana-media-types" || c === "spdx-checksum-algorithm";
169
+ return await w(e, t, s).then(
170
+ (l) => {
171
+ n = a ? l.data.result.results.filter((i) => i.resource === e).map((i) => i.pref_label)[0].en : x(l.data.result.pref_label, r, []);
171
172
  }
172
173
  ), n;
173
174
  }
174
- const L = {
175
- mergeNestedObjects: x,
176
- addNamespace: g,
177
- makeId: N,
178
- isUrl: O,
179
- fetchLinkedData: P,
180
- getPagePrefixedNames: $,
181
- getNestedKeys: v,
182
- removeNamespace: m,
183
- getFileIdByAccessUrl: I,
175
+ const R = {
176
+ mergeNestedObjects: g,
177
+ addNamespace: v,
178
+ makeId: O,
179
+ isUrl: P,
180
+ fetchLinkedData: $,
181
+ getPagePrefixedNames: I,
182
+ getNestedKeys: N,
183
+ removeNamespace: d,
184
+ getFileIdByAccessUrl: j,
184
185
  addKeyToFormatType: T,
185
- removeKeyFromFormatType: j,
186
- propertyHasValue: k,
187
- getUriLabel: w
186
+ removeKeyFromFormatType: k,
187
+ propertyHasValue: A,
188
+ getUriLabel: U
188
189
  };
189
190
  export {
190
- L as default
191
+ R as default
191
192
  };
192
193
  //# sourceMappingURL=general-helper.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"general-helper.mjs","sources":["../../../lib/data-provider-interface/utils/general-helper.js"],"sourcesContent":["import { isEmpty, isNil, has } from 'lodash';\nimport axios from 'axios';\nimport { getTranslationFor } from \"../../utils/helpers\";\n\n\n/**\n * Merges multiple Objects nested within an object into one main objects with al key-value-pairs originally located within the nested objects\n * @param {Object} data Object containing nested objects\n * @returns Object with key-value pairs merged from nested objects\n */\nfunction mergeNestedObjects(data) {\n let mergedObject = {};\n for (const key in data) {\n mergedObject = Object.assign(mergedObject, data[key]);\n }\n return mergedObject;\n}\n\n/**\n *\n * @param {*} prefix\n * @returns\n */\nfunction addNamespace(prefix, dpiConfig) {\n // the prefix had the following format: namespace:property (e.g. dct:title)\n // the short version of the namespace noe should be replaced by the long version (e.g. http://purl.org/dc/terms/title)\n let fullDescriptor;\n const colonIndex = prefix.indexOf(':');\n\n // there are also prefixes with no namespace which should sty the same\n if (colonIndex !== -1) {\n const namespaceAbbreviation = prefix.substr(0,colonIndex);\n const propertyName = prefix.substr(colonIndex + 1);\n\n // the long version of the namespace is saved within the context.json (config)\n // there is an object containing the namespace abbreviation(key) and the corresponding value is the long version of the namespace\n\n const longNamespace = dpiConfig.prefixes[namespaceAbbreviation];\n fullDescriptor = `${longNamespace}${propertyName}`;\n } else {\n fullDescriptor = prefix;\n }\n\n return fullDescriptor;\n}\n\n/**\n * Removes long namespace and replaces it with the abbreviation of the namespace\n * @param {*} longValue Long value with long namespace (e.g. https://....#type)\n * @returns Returns value with short namespace (e.g. rdf:type)\n */\nfunction removeNamespace(longValue, dpiConfig) {\n let lastIndex;\n\n // long namespace either ends with an # or a \\\n if (longValue.includes('#')) {\n lastIndex = longValue.lastIndexOf('#')\n } else {\n lastIndex = longValue.lastIndexOf('/')\n }\n\n const shortValue = longValue.substr(lastIndex + 1);\n const longPrefix = longValue.substr(0, lastIndex + 1);\n const shortPrefix = Object.keys(dpiConfig.prefixes).find(key => dpiConfig.prefixes[key] === longPrefix);\n\n return `${shortPrefix}:${shortValue}`;\n}\n\n/**\n * Returns list of keys as shortned version from given data\n * @param {*} data An array of quads with keys as predicate\n * @returns Array of shortened keys\n */\nfunction getNestedKeys(data, dpiConfig) {\n const keys = [];\n\n for (let el of data) {\n keys.push(removeNamespace(el.predicate.value, dpiConfig));\n }\n\n return keys;\n}\n\n/**\n * Creates a random string\n * @param {*} length Length of string to be created\n * @returns String formed of random characters with given length\n */\nfunction makeId(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\n/**\n * Methods checks if given string is an Url\n * @param {*} string String to test\n * @returns Boolean determining if given string is an Url\n */\nfunction isUrl(string) {\n let url;\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n\n/**\n * Fetches data from given endpoint using token and returns data\n * @param {*} url Endpoint from where to fetch the data\n * @param {*} token User token for authentication (if needed)\n * @returns Returns promise of fetched data\n */\nasync function fetchLinkedData(endpoint, token) {\n let response;\n let requestOptions;\n\n // if token is given, provide token (for drafts and other non-public elements)\n if (token !== '') {\n requestOptions = {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n url: endpoint,\n };\n } else {\n requestOptions = {\n method: 'GET',\n url: endpoint,\n };\n }\n\n try {\n response = fetch(endpoint, requestOptions)\n .then(response => {\n const reader = response?.body?.getReader();\n return new ReadableStream({\n start(controller) {\n // The following function handles each data chunk\n function push() {\n // \"done\" is a Boolean and value a \"Uint8Array\"\n reader?.read().then(({done, value}) => {\n // If there is no more data to read\n if (done) {\n controller.close();\n return;\n }\n // Get the data and send it to the browser via the controller\n controller.enqueue(value);\n // Check chunks by logging to the console\n push();\n });\n }\n\n push();\n },\n });\n }).then((stream) =>\n new Response(stream, {headers: {'Content-Type': 'text/html'}}).text()\n );\n } catch (err) {\n // TODO: Handle (network) errors\n throw Error(`Error occured during fetching endpoint: ${endpoint}`);\n }\n return response;\n}\n\n/**\n * Exracts keynames (e.g. dct:title) using the page-content-config for each element\n * @param {*} property Property (datasets/distributions/catalogues)\n * @param {*} formDefinitions Form definition of properties including name\n * @param {*} pageContent Config file containing definition of which property will be displayed on which page\n * @returns Object containing keys of properties for each page\n */\nfunction getPagePrefixedNames(property, formDefinitions, pageContent) {\n\n const prefixedNames = {\n datasets: {},\n distributions: {},\n catalogues: {}\n };\n\n // get property keys for each page\n for (let pageName in pageContent[property]) {\n prefixedNames[property][pageName] = [];\n const propertyKeys = pageContent[property][pageName];\n for (let propertyindex = 0; propertyindex < propertyKeys.length; propertyindex++) {\n const propertyName = propertyKeys[propertyindex];\n const prefixedName = formDefinitions[property][propertyName].name; // form definition includes name-property which contains key\n if (prefixedName !== undefined) prefixedNames[property][pageName].push(prefixedName);\n }\n }\n\n return prefixedNames;\n}\n\nfunction isValid(id) {\n return /^[a-z0-9-]*$/.test(id);\n}\n\n/**\n * Get file id from accessUrl, if it is a file upload url.\n * accessUrls are file upload urls, iff they start with fileUploadUrl.\n * @param {string} accessUrl\n * @param {string} fileUploadUrl\n * @returns {string|null}\n */\nfunction getFileIdByAccessUrl({ accessUrl, fileUploadUrl }) {\n const accessUrlWithTrailingSlash = accessUrl.endsWith('/')\n ? accessUrl\n : `${accessUrl}/`;\n const fileUploadUrlWithTrailingSlash = fileUploadUrl.endsWith('/')\n ? fileUploadUrl\n : `${fileUploadUrl}/`;\n\n // Check if accessUrl starts with fileUploadApi\n if (accessUrlWithTrailingSlash.startsWith(fileUploadUrlWithTrailingSlash)) {\n const accessUrlParts = accessUrlWithTrailingSlash.split('/');\n const fileId = accessUrlParts[accessUrlParts.length - 2];\n\n return fileId || null;\n }\n\n return null;\n}\n\n/**\n * Adds given key to format type \n * @param {String} key \n * @param {String} format \n * @param {String} property \n * @param {Object} typeDefinition \n */\nfunction addKeyToFormatType(key, format, property, typeDefinition) {\n typeDefinition[format][property].push(key);\n}\n\n/**\n * Removes key from format type\n * @param {String} key \n * @param {String} format \n * @param {String} property \n * @param {Object} typeDefinition \n */\nfunction removeKeyFromFormatType(key, format, property, typeDefinition) {\n typeDefinition[format][property].splice(typeDefinition[format][property].indexOf(key), 1);\n}\n\nfunction propertyObjectHasValues(objectData) {\n let objectHasValues = false;\n\n if (!isNil(objectData) && !isEmpty(objectData)) {\n // language tag is always given\n if (has(objectData, '@language')) {\n delete objectData['@language'];\n }\n\n // removing all falsy values (undefined, null, \"\", '', NaN, 0)\n const actualValues = Object.values(objectData).filter(el => el); // filters all real values\n if (!isEmpty(actualValues)) {\n // there are keys containing an object or array as value\n for (let valueIndex = 0; valueIndex < actualValues.length; valueIndex++) {\n // if at least one elemnt within the array is set, return true\n const currentValue = actualValues[valueIndex];\n\n // testing content of array\n if (Array.isArray(currentValue)) {\n // there are only objects wihtin those arrays\n for (let arrIndex = 0; arrIndex < currentValue.length; arrIndex++) {\n if (propertyObjectHasValues(currentValue[arrIndex])) objectHasValues = true;\n }\n } else if (typeof currentValue === 'object') { // testing content of object\n if (propertyObjectHasValues(currentValue)) objectHasValues = true;\n } else {\n objectHasValues = true;\n }\n }\n }\n }\n\n return objectHasValues;\n}\n\nfunction propertyHasValue(data) {\n\n let isSet = false;\n\n if (data !== undefined && data !== \"\" && !isEmpty(data) && !isNil(data)) {\n // testing array data\n if (Array.isArray(data)) {\n // there are arreay of objects or arrays of values\n if (data.every(el => typeof el === 'string')) {\n isSet = !isEmpty(data.filter(el => el)); \n } else if (data.every(el => typeof el === 'object')) {\n for (let index = 0; index < data.length; index++) {\n // if at least one array element is set, return true\n if (propertyObjectHasValues(data[index])) isSet = true; \n }\n }\n } else if (typeof data === 'object') {\n // testing object data\n isSet = propertyObjectHasValues(data);\n } else {\n isSet = true;\n }\n }\n\n return isSet;\n}\n\n/**\n * \n */\nasync function requestUriLabel(uri, dpiConfig, envs) {\n\n // get vocabulary by finding vocab-url within given URI\n const voc = Object.keys(dpiConfig.vocabPrefixes).find(key => uri.includes(dpiConfig.vocabPrefixes[key]));\n\n try {\n let req;\n\n // vocabularies for spdx checksum and inana-media-types are structured differently in the backend then other vocabularies\n if (voc === 'iana-media-types' || voc === 'spdx-checksum-algorithm') {\n req = `${envs.api.baseUrl}vocabularies/${voc}`;\n\n } else {\n const value = uri.replace(dpiConfig.vocabPrefixes[voc], '');\n req = `${envs.api.baseUrl}vocabularies/${voc}/${value}`;\n }\n\n return new Promise((resolve, reject) => {\n axios.get(req)\n .then((res) => {\n resolve(res);\n })\n .catch((err) => {\n reject(err);\n\n });\n });\n } catch (error) {\n // \n } \n}\n\n\n/**\n * \n */\nasync function getUriLabel(uri, dpiConfig, locale, envs) {\n let URIlabel;\n\n const voc = Object.keys(dpiConfig.vocabPrefixes).find(key => uri.includes(dpiConfig.vocabPrefixes[key]));\n\n // if vocabulary iana media type or spdx checksum endpoint returns values in a different way\n let vocMatch = (voc === \"iana-media-types\" || voc === \"spdx-checksum-algorithm\");\n\n await requestUriLabel(uri, dpiConfig, envs).then(\n (response) => {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === uri)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale, []);\n\n URIlabel = result;\n }\n );\n\n return URIlabel;\n}\n\nexport default {\n mergeNestedObjects,\n addNamespace,\n makeId,\n isUrl,\n fetchLinkedData,\n getPagePrefixedNames,\n getNestedKeys,\n removeNamespace,\n getFileIdByAccessUrl,\n addKeyToFormatType,\n removeKeyFromFormatType,\n propertyHasValue,\n getUriLabel,\n};\n"],"names":["mergeNestedObjects","data","mergedObject","key","addNamespace","prefix","dpiConfig","fullDescriptor","colonIndex","namespaceAbbreviation","propertyName","removeNamespace","longValue","lastIndex","shortValue","longPrefix","getNestedKeys","keys","el","makeId","length","result","characters","charactersLength","i","isUrl","string","url","fetchLinkedData","endpoint","token","response","requestOptions","reader","_a","controller","push","done","value","stream","getPagePrefixedNames","property","formDefinitions","pageContent","prefixedNames","pageName","propertyKeys","propertyindex","prefixedName","getFileIdByAccessUrl","accessUrl","fileUploadUrl","accessUrlWithTrailingSlash","fileUploadUrlWithTrailingSlash","accessUrlParts","addKeyToFormatType","format","typeDefinition","removeKeyFromFormatType","propertyObjectHasValues","objectData","objectHasValues","isNil","isEmpty","has","actualValues","valueIndex","currentValue","arrIndex","propertyHasValue","isSet","index","requestUriLabel","uri","envs","voc","req","resolve","reject","axios","res","err","getUriLabel","locale","URIlabel","vocMatch","dataset","getTranslationFor","generalHelper"],"mappings":"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"}
1
+ {"version":3,"file":"general-helper.mjs","sources":["../../../lib/data-provider-interface/utils/general-helper.js"],"sourcesContent":["import { isEmpty, isNil, has, cloneDeep } from 'lodash';\nimport axios from 'axios';\nimport { getTranslationFor } from \"../../utils/helpers\";\n\n\n/**\n * Merges multiple Objects nested within an object into one main objects with al key-value-pairs originally located within the nested objects\n * @param {Object} data Object containing nested objects\n * @returns Object with key-value pairs merged from nested objects\n */\nfunction mergeNestedObjects(data) {\n let mergedObject = {};\n for (const key in data) {\n mergedObject = Object.assign(mergedObject, data[key]);\n }\n return mergedObject;\n}\n\n/**\n *\n * @param {*} prefix\n * @returns\n */\nfunction addNamespace(prefix, dpiConfig) {\n // the prefix had the following format: namespace:property (e.g. dct:title)\n // the short version of the namespace noe should be replaced by the long version (e.g. http://purl.org/dc/terms/title)\n let fullDescriptor;\n const colonIndex = prefix.indexOf(':');\n\n // there are also prefixes with no namespace which should sty the same\n if (colonIndex !== -1) {\n const namespaceAbbreviation = prefix.substr(0, colonIndex);\n const propertyName = prefix.substr(colonIndex + 1);\n\n // the long version of the namespace is saved within the context.json (config)\n // there is an object containing the namespace abbreviation(key) and the corresponding value is the long version of the namespace\n\n const longNamespace = dpiConfig.prefixes[namespaceAbbreviation];\n fullDescriptor = `${longNamespace}${propertyName}`;\n } else {\n fullDescriptor = prefix;\n }\n\n return fullDescriptor;\n}\n\n/**\n * Removes long namespace and replaces it with the abbreviation of the namespace\n * @param {*} longValue Long value with long namespace (e.g. https://....#type)\n * @returns Returns value with short namespace (e.g. rdf:type)\n */\nfunction removeNamespace(longValue, dpiConfig) {\n let lastIndex;\n\n // long namespace either ends with an # or a \\\n if (longValue.includes('#')) {\n lastIndex = longValue.lastIndexOf('#')\n } else {\n lastIndex = longValue.lastIndexOf('/')\n }\n\n const shortValue = longValue.substr(lastIndex + 1);\n const longPrefix = longValue.substr(0, lastIndex + 1);\n const shortPrefix = Object.keys(dpiConfig.prefixes).find(key => dpiConfig.prefixes[key] === longPrefix);\n\n return `${shortPrefix}:${shortValue}`;\n}\n\n/**\n * Returns list of keys as shortned version from given data\n * @param {*} data An array of quads with keys as predicate\n * @returns Array of shortened keys\n */\nfunction getNestedKeys(data, dpiConfig) {\n const keys = [];\n\n for (let el of data) {\n keys.push(removeNamespace(el.predicate.value, dpiConfig));\n }\n\n return keys;\n}\n\n/**\n * Creates a random string\n * @param {*} length Length of string to be created\n * @returns String formed of random characters with given length\n */\nfunction makeId(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\n/**\n * Methods checks if given string is an Url\n * @param {*} string String to test\n * @returns Boolean determining if given string is an Url\n */\nfunction isUrl(string) {\n let url;\n try {\n url = new URL(string);\n } catch (_) {\n return false;\n }\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n}\n\n/**\n * Fetches data from given endpoint using token and returns data\n * @param {*} url Endpoint from where to fetch the data\n * @param {*} token User token for authentication (if needed)\n * @returns Returns promise of fetched data\n */\nasync function fetchLinkedData(endpoint, token) {\n let response;\n let requestOptions;\n\n // if token is given, provide token (for drafts and other non-public elements)\n if (token !== '') {\n requestOptions = {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n url: endpoint,\n };\n } else {\n requestOptions = {\n method: 'GET',\n url: endpoint,\n };\n }\n\n try {\n response = fetch(endpoint, requestOptions)\n .then(response => {\n const reader = response?.body?.getReader();\n return new ReadableStream({\n start(controller) {\n // The following function handles each data chunk\n function push() {\n // \"done\" is a Boolean and value a \"Uint8Array\"\n reader?.read().then(({ done, value }) => {\n // If there is no more data to read\n if (done) {\n controller.close();\n return;\n }\n // Get the data and send it to the browser via the controller\n controller.enqueue(value);\n // Check chunks by logging to the console\n push();\n });\n }\n\n push();\n },\n });\n }).then((stream) =>\n new Response(stream, { headers: { 'Content-Type': 'text/html' } }).text()\n );\n } catch (err) {\n // TODO: Handle (network) errors\n throw Error(`Error occured during fetching endpoint: ${endpoint}`);\n }\n return response;\n}\n\n/**\n * Exracts keynames (e.g. dct:title) using the page-content-config for each element\n * @param {*} property Property (datasets/distributions/catalogues)\n * @param {*} formDefinitions Form definition of properties including name\n * @param {*} pageContent Config file containing definition of which property will be displayed on which page\n * @returns Object containing keys of properties for each page\n */\nfunction getPagePrefixedNames(property, formDefinitions, pageContent) {\n\n const prefixedNames = {\n datasets: {},\n distributions: {},\n catalogues: {}\n };\n\n // get property keys for each page\n for (let pageName in pageContent[property]) {\n prefixedNames[property][pageName] = [];\n const propertyKeys = pageContent[property][pageName];\n for (let propertyindex = 0; propertyindex < propertyKeys.length; propertyindex++) {\n const propertyName = propertyKeys[propertyindex];\n const prefixedName = formDefinitions[property][propertyName].name; // form definition includes name-property which contains key\n if (prefixedName !== undefined) prefixedNames[property][pageName].push(prefixedName);\n }\n }\n\n return prefixedNames;\n}\n\nfunction isValid(id) {\n return /^[a-z0-9-]*$/.test(id);\n}\n\n/**\n * Get file id from accessUrl, if it is a file upload url.\n * accessUrls are file upload urls, iff they start with fileUploadUrl.\n * @param {string} accessUrl\n * @param {string} fileUploadUrl\n * @returns {string|null}\n */\nfunction getFileIdByAccessUrl({ accessUrl, fileUploadUrl }) {\n const accessUrlWithTrailingSlash = accessUrl.endsWith('/')\n ? accessUrl\n : `${accessUrl}/`;\n const fileUploadUrlWithTrailingSlash = fileUploadUrl.endsWith('/')\n ? fileUploadUrl\n : `${fileUploadUrl}/`;\n\n // Check if accessUrl starts with fileUploadApi\n if (accessUrlWithTrailingSlash.startsWith(fileUploadUrlWithTrailingSlash)) {\n const accessUrlParts = accessUrlWithTrailingSlash.split('/');\n const fileId = accessUrlParts[accessUrlParts.length - 2];\n\n return fileId || null;\n }\n\n return null;\n}\n\n/**\n * Adds given key to format type \n * @param {String} key \n * @param {String} format \n * @param {String} property \n * @param {Object} typeDefinition \n */\nfunction addKeyToFormatType(key, format, property, typeDefinition) {\n typeDefinition[format][property].push(key);\n}\n\n/**\n * Removes key from format type\n * @param {String} key \n * @param {String} format \n * @param {String} property \n * @param {Object} typeDefinition \n */\nfunction removeKeyFromFormatType(key, format, property, typeDefinition) {\n typeDefinition[format][property].splice(typeDefinition[format][property].indexOf(key), 1);\n}\n\nfunction propertyObjectHasValues(objectData) {\n let objectHasValues = false;\n if (!isNil(objectData) && !isEmpty(objectData)) {\n // language tag is always given\n let copiedData = cloneDeep(objectData)\n\n if (has(copiedData, '@language')) {\n delete copiedData['@language'];\n }\n\n // removing all falsy values (undefined, null, \"\", '', NaN, 0)\n const actualValues = Object.values(copiedData).filter(el => el); // filters all real values\n if (!isEmpty(actualValues)) {\n // there are keys containing an object or array as value\n for (let valueIndex = 0; valueIndex < actualValues.length; valueIndex++) {\n // if at least one elemnt within the array is set, return true\n const currentValue = actualValues[valueIndex];\n\n // testing content of array\n if (Array.isArray(currentValue)) {\n // there are only objects wihtin those arrays\n for (let arrIndex = 0; arrIndex < currentValue.length; arrIndex++) {\n if (propertyObjectHasValues(currentValue[arrIndex])) objectHasValues = true;\n }\n } else if (typeof currentValue === 'object') { // testing content of object\n if (propertyObjectHasValues(currentValue)) objectHasValues = true;\n } else {\n objectHasValues = true;\n }\n }\n }\n }\n\n return objectHasValues;\n}\n\nfunction propertyHasValue(data) {\n\n let isSet = false;\n\n if (data !== undefined && data !== \"\" && !isEmpty(data) && !isNil(data)) {\n // testing array data\n if (Array.isArray(data)) {\n // there are arreay of objects or arrays of values\n if (data.every(el => typeof el === 'string')) {\n isSet = !isEmpty(data.filter(el => el));\n } else if (data.every(el => typeof el === 'object')) {\n for (let index = 0; index < data.length; index++) {\n // if at least one array element is set, return true\n if (propertyObjectHasValues(data[index])) isSet = true;\n }\n }\n } else if (typeof data === 'object') {\n // testing object data\n isSet = propertyObjectHasValues(data);\n } else {\n isSet = true;\n }\n }\n\n return isSet;\n}\n\n/**\n * \n */\nasync function requestUriLabel(uri, dpiConfig, envs) {\n\n // get vocabulary by finding vocab-url within given URI\n const voc = Object.keys(dpiConfig.vocabPrefixes).find(key => uri.includes(dpiConfig.vocabPrefixes[key]));\n\n try {\n let req;\n\n // vocabularies for spdx checksum and inana-media-types are structured differently in the backend then other vocabularies\n if (voc === 'iana-media-types' || voc === 'spdx-checksum-algorithm') {\n req = `${envs.api.baseUrl}vocabularies/${voc}`;\n\n } else {\n const value = uri.replace(dpiConfig.vocabPrefixes[voc], '');\n req = `${envs.api.baseUrl}vocabularies/${voc}/${value}`;\n }\n\n return new Promise((resolve, reject) => {\n axios.get(req)\n .then((res) => {\n resolve(res);\n })\n .catch((err) => {\n reject(err);\n\n });\n });\n } catch (error) {\n // \n }\n}\n\n\n/**\n * \n */\nasync function getUriLabel(uri, dpiConfig, locale, envs) {\n let URIlabel;\n\n const voc = Object.keys(dpiConfig.vocabPrefixes).find(key => uri.includes(dpiConfig.vocabPrefixes[key]));\n\n // if vocabulary iana media type or spdx checksum endpoint returns values in a different way\n let vocMatch = (voc === \"iana-media-types\" || voc === \"spdx-checksum-algorithm\");\n\n await requestUriLabel(uri, dpiConfig, envs).then(\n (response) => {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === uri)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, locale, []);\n\n URIlabel = result;\n }\n );\n\n return URIlabel;\n}\n\nexport default {\n mergeNestedObjects,\n addNamespace,\n makeId,\n isUrl,\n fetchLinkedData,\n getPagePrefixedNames,\n getNestedKeys,\n removeNamespace,\n getFileIdByAccessUrl,\n addKeyToFormatType,\n removeKeyFromFormatType,\n propertyHasValue,\n getUriLabel,\n};\n"],"names":["mergeNestedObjects","data","mergedObject","key","addNamespace","prefix","dpiConfig","fullDescriptor","colonIndex","namespaceAbbreviation","propertyName","removeNamespace","longValue","lastIndex","shortValue","longPrefix","getNestedKeys","keys","el","makeId","length","result","characters","charactersLength","i","isUrl","string","url","fetchLinkedData","endpoint","token","response","requestOptions","reader","_a","controller","push","done","value","stream","getPagePrefixedNames","property","formDefinitions","pageContent","prefixedNames","pageName","propertyKeys","propertyindex","prefixedName","getFileIdByAccessUrl","accessUrl","fileUploadUrl","accessUrlWithTrailingSlash","fileUploadUrlWithTrailingSlash","accessUrlParts","addKeyToFormatType","format","typeDefinition","removeKeyFromFormatType","propertyObjectHasValues","objectData","objectHasValues","isNil","isEmpty","copiedData","cloneDeep","has","actualValues","valueIndex","currentValue","arrIndex","propertyHasValue","isSet","index","requestUriLabel","uri","envs","voc","req","resolve","reject","axios","res","err","getUriLabel","locale","URIlabel","vocMatch","dataset","getTranslationFor","generalHelper"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { has as c, isObject as C } from "lodash-es";
2
- import { useI18n as h } from "vue-i18n";
3
- async function m(a, s) {
4
- const l = await h();
1
+ import { has as c, isObject as i } from "lodash-es";
2
+ import r from "../../store/index.mjs";
3
+ function m(a, s) {
4
+ const l = r.$app.config.globalProperties.i18n.global;
5
5
  if (c(a, "identifier")) {
6
- const e = ["label", "info", "help", "placeholder", "add-label"], n = a.identifier;
6
+ const e = ["label", "info", "help", "placeholder", "add-label"], o = a.identifier;
7
7
  for (let d = 0; d < e.length; d += 1) {
8
- let o = n;
9
- const t = e[d], $ = l.te(`message.dataupload.${s}.${n}.${t}`), f = l.te(`message.dataupload.${s}.${n}.${t}`, "en");
10
- c(s, t) || ($ ? o = l.t(`message.dataupload.${s}.${n}.${t}`) : f ? o = l.t(`message.dataupload.${s}.${n}.${t}`, "en") : o = t, !!a.$cmp && !a.$formkit && C(a.props) && a.$cmp === "SelectControlledGroup" ? a.props[t] = o : a[t] = o), a.mandatory && t === "label" && (a[t] = `${o}*`);
8
+ let n = o;
9
+ const t = e[d], $ = l.te(`message.dataupload.${s}.${o}.${t}`), f = l.te(`message.dataupload.${s}.${o}.${t}`, "en");
10
+ c(s, t) || ($ ? n = l.t(`message.dataupload.${s}.${o}.${t}`) : f ? n = l.t(`message.dataupload.${s}.${o}.${t}`, "en") : n = t, !!a.$cmp && !a.$formkit && i(a.props) && a.$cmp === "SelectControlledGroup" ? a.props[t] = n : a[t] = n), a.mandatory && t === "label" && (a[t] = `${n}*`);
11
11
  }
12
12
  }
13
13
  }
@@ -18,10 +18,10 @@ function u(a, s) {
18
18
  m(e, s), u(e.children, s);
19
19
  else if (c(e, "data")) {
20
20
  m(e, s);
21
- const n = Object.keys(e.data);
22
- for (let d = 0; d < n.length; d += 1) {
23
- const o = n[d];
24
- u(e.data[o], s);
21
+ const o = Object.keys(e.data);
22
+ for (let d = 0; d < o.length; d += 1) {
23
+ const n = o[d];
24
+ u(e.data[n], s);
25
25
  }
26
26
  } else
27
27
  m(e, s);
@@ -1 +1 @@
1
- {"version":3,"file":"translation-helper.mjs","sources":["../../../lib/data-provider-interface/utils/translation-helper.js"],"sourcesContent":["import { has, isObject } from 'lodash-es';\nimport { useI18n } from 'vue-i18n';\n\n\n/**\n * Translation of each translatable parameter within the given structure if a translation is available\n * @param {*} propertyDefinition Object containing parameters defining the form and their content\n * @param {String} property String defining which property translation should be used\n */\n\n async function translateProperty(propertyDefinition, property) {\n\n // console.log(useI18n().messages);\n const i18n = await useI18n();\n\n if (has(propertyDefinition, 'identifier')) { // hidden fields don't need a label and have no identifier\n const translatableParameters = ['label', 'info', 'help', 'placeholder', 'add-label'];\n const propertyName = propertyDefinition.identifier;\n\n for (let valueIndex = 0; valueIndex < translatableParameters.length; valueIndex += 1) {\n let translation = propertyName;\n const parameter = translatableParameters[valueIndex];\n \n\n const translationExsists = i18n.te(`message.dataupload.${property}.${propertyName}.${parameter}`);\n const translationExsistsEN = i18n.te(`message.dataupload.${property}.${propertyName}.${parameter}`, 'en');\n\n // Check if translation exists\n if (!has(property, parameter)) {\n\n \n\n if (translationExsists) {\n translation = i18n.t(`message.dataupload.${property}.${propertyName}.${parameter}`);\n } else if (translationExsistsEN) {\n translation = i18n.t(`message.dataupload.${property}.${propertyName}.${parameter}`, 'en');\n } else {\n translation = parameter;\n }\n\n const isCustomComponentWithProps = !!propertyDefinition.$cmp\n && !propertyDefinition.$formkit\n && isObject(propertyDefinition.props);\n\n const isSelectControlledGroupCustomComponent = isCustomComponentWithProps\n && propertyDefinition.$cmp === 'SelectControlledGroup';\n\n if (isSelectControlledGroupCustomComponent) {\n propertyDefinition.props[parameter] = translation;\n } else {\n propertyDefinition[parameter] = translation;\n }\n\n // if (parameter === \"info\") {\n\n // propertyDefinition['sections-schema'] = { prefix: { $el: 'div', attrs: { class: 'infoI', }, children: [{ $el: 'div', children: translation, attrs: { class: 'tooltipFormkit' } }] } }\n // }\n }\n\n // Highlight mandatory fields\n if (propertyDefinition.mandatory && parameter === \"label\") propertyDefinition[parameter] = `${translation}*`\n }\n }\n}\n\n/**\n * Recursive translation of propertie parameters including recursive translation of nested properties\n * @param {Object} schema Object containing the forms schema\n * @param {String} property String defining which property translation should be used (datasets/ distribution/ catalogues)\n */\nfunction translate(schema, property) {\n for (let index = 0; index < schema.length; index += 1) {\n const schemaPropertyValues = schema[index];\n\n // translation of group forms and their nested properties\n if (has(schemaPropertyValues, 'children')) {\n // group attributes should be translated too\n translateProperty(schemaPropertyValues, property);\n // translated nested properties\n translate(schemaPropertyValues.children, property);\n // translation of conditional forms and their nested properties\n } else if (has(schemaPropertyValues, 'data')) {\n // group attributes should be translated too\n translateProperty(schemaPropertyValues, property);\n // translate nested data\n const dataKeys = Object.keys(schemaPropertyValues.data);\n for (let keyIndex = 0; keyIndex < dataKeys.length; keyIndex += 1) {\n const currentKey = dataKeys[keyIndex];\n translate(schemaPropertyValues.data[currentKey], property);\n }\n // translation of 'normal' singular form properties\n } else {\n translateProperty(schemaPropertyValues, property);\n }\n }\n}\n\nexport default translate;\n"],"names":["translateProperty","propertyDefinition","property","i18n","useI18n","has","translatableParameters","propertyName","valueIndex","translation","parameter","translationExsists","translationExsistsEN","isObject","translate","schema","index","schemaPropertyValues","dataKeys","keyIndex","currentKey"],"mappings":";;AAUC,eAAeA,EAAkBC,GAAoBC,GAAU;AAGxD,QAAMC,IAAO,MAAMC;AAEpB,MAAIC,EAAIJ,GAAoB,YAAY,GAAG;AAC1C,UAAMK,IAAyB,CAAC,SAAS,QAAQ,QAAQ,eAAe,WAAW,GAC7EC,IAAeN,EAAmB;AAExC,aAASO,IAAa,GAAGA,IAAaF,EAAuB,QAAQE,KAAc,GAAG;AAClF,UAAIC,IAAcF;AAClB,YAAMG,IAAYJ,EAAuBE,CAAU,GAG7CG,IAAqBR,EAAK,GAAG,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,EAAE,GAC1FE,IAAuBT,EAAK,GAAG,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,IAAI,IAAI;AAGxG,MAAKL,EAAIH,GAAUQ,CAAS,MAIpBC,IACAF,IAAcN,EAAK,EAAE,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,EAAE,IAC3EE,IACPH,IAAcN,EAAK,EAAE,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,IAAI,IAAI,IAExFD,IAAcC,GAGiB,CAAC,CAACT,EAAmB,QACjD,CAACA,EAAmB,YACpBY,EAASZ,EAAmB,KAAK,KAGjCA,EAAmB,SAAS,0BAG/BA,EAAmB,MAAMS,CAAS,IAAID,IAEtCR,EAAmBS,CAAS,IAAID,IAUpCR,EAAmB,aAAaS,MAAc,YAAST,EAAmBS,CAAS,IAAI,GAAGD,CAAW;AAAA,IAC5G;AAAA,EACJ;AACL;AAOA,SAASK,EAAUC,GAAQb,GAAU;AACjC,WAASc,IAAQ,GAAGA,IAAQD,EAAO,QAAQC,KAAS,GAAG;AACnD,UAAMC,IAAuBF,EAAOC,CAAK;AAGzC,QAAIX,EAAIY,GAAsB,UAAU;AAEpC,MAAAjB,EAAkBiB,GAAsBf,CAAQ,GAEhDY,EAAUG,EAAqB,UAAUf,CAAQ;AAAA,aAE1CG,EAAIY,GAAsB,MAAM,GAAG;AAE1C,MAAAjB,EAAkBiB,GAAsBf,CAAQ;AAEhD,YAAMgB,IAAW,OAAO,KAAKD,EAAqB,IAAI;AACtD,eAASE,IAAW,GAAGA,IAAWD,EAAS,QAAQC,KAAY,GAAG;AAC9D,cAAMC,IAAaF,EAASC,CAAQ;AACpC,QAAAL,EAAUG,EAAqB,KAAKG,CAAU,GAAGlB,CAAQ;AAAA,MAC5D;AAAA,IAEb;AACY,MAAAF,EAAkBiB,GAAsBf,CAAQ;AAAA,EAEvD;AACL;"}
1
+ {"version":3,"file":"translation-helper.mjs","sources":["../../../lib/data-provider-interface/utils/translation-helper.js"],"sourcesContent":["import { has, isObject } from 'lodash-es';\nimport store from '../../store';\n\n/**\n * Translation of each translatable parameter within the given structure if a translation is available\n * @param {*} propertyDefinition Object containing parameters defining the form and their content\n * @param {String} property String defining which property translation should be used\n */\n\nfunction translateProperty(propertyDefinition, property) {\n\n const i18n = store.$app.config.globalProperties.i18n.global;\n if (has(propertyDefinition, 'identifier')) { // hidden fields don't need a label and have no identifier\n const translatableParameters = ['label', 'info', 'help', 'placeholder', 'add-label'];\n const propertyName = propertyDefinition.identifier;\n\n for (let valueIndex = 0; valueIndex < translatableParameters.length; valueIndex += 1) {\n let translation = propertyName;\n const parameter = translatableParameters[valueIndex];\n\n const translationExsists = i18n.te(`message.dataupload.${property}.${propertyName}.${parameter}`);\n const translationExsistsEN = i18n.te(`message.dataupload.${property}.${propertyName}.${parameter}`, 'en');\n\n // Check if translation exists\n if (!has(property, parameter)) {\n if (translationExsists) {\n translation = i18n.t(`message.dataupload.${property}.${propertyName}.${parameter}`);\n } else if (translationExsistsEN) {\n translation = i18n.t(`message.dataupload.${property}.${propertyName}.${parameter}`, 'en');\n } else {\n translation = parameter;\n }\n\n const isCustomComponentWithProps = !!propertyDefinition.$cmp\n && !propertyDefinition.$formkit\n && isObject(propertyDefinition.props);\n\n const isSelectControlledGroupCustomComponent = isCustomComponentWithProps\n && propertyDefinition.$cmp === 'SelectControlledGroup';\n\n if (isSelectControlledGroupCustomComponent) {\n propertyDefinition.props[parameter] = translation;\n } else {\n propertyDefinition[parameter] = translation;\n }\n\n // if (parameter === \"info\") {\n\n // propertyDefinition['sections-schema'] = { prefix: { $el: 'div', attrs: { class: 'infoI', }, children: [{ $el: 'div', children: translation, attrs: { class: 'tooltipFormkit' } }] } }\n // }\n }\n\n // Highlight mandatory fields\n if (propertyDefinition.mandatory && parameter === \"label\") propertyDefinition[parameter] = `${translation}*`\n }\n }\n}\n\n/**\n * Recursive translation of propertie parameters including recursive translation of nested properties\n * @param {Object} schema Object containing the forms schema\n * @param {String} property String defining which property translation should be used (datasets/ distribution/ catalogues)\n */\nfunction translate(schema, property) {\n for (let index = 0; index < schema.length; index += 1) {\n const schemaPropertyValues = schema[index];\n\n // translation of group forms and their nested properties\n if (has(schemaPropertyValues, 'children')) {\n // group attributes should be translated too\n translateProperty(schemaPropertyValues, property);\n // translated nested properties\n translate(schemaPropertyValues.children, property);\n // translation of conditional forms and their nested properties\n } else if (has(schemaPropertyValues, 'data')) {\n // group attributes should be translated too\n translateProperty(schemaPropertyValues, property);\n // translate nested data\n const dataKeys = Object.keys(schemaPropertyValues.data);\n for (let keyIndex = 0; keyIndex < dataKeys.length; keyIndex += 1) {\n const currentKey = dataKeys[keyIndex];\n translate(schemaPropertyValues.data[currentKey], property);\n }\n // translation of 'normal' singular form properties\n } else {\n translateProperty(schemaPropertyValues, property);\n }\n }\n}\n\nexport default translate;\n"],"names":["translateProperty","propertyDefinition","property","i18n","store","has","translatableParameters","propertyName","valueIndex","translation","parameter","translationExsists","translationExsistsEN","isObject","translate","schema","index","schemaPropertyValues","dataKeys","keyIndex","currentKey"],"mappings":";;AASA,SAASA,EAAkBC,GAAoBC,GAAU;AAErD,QAAMC,IAAOC,EAAM,KAAK,OAAO,iBAAiB,KAAK;AACrD,MAAIC,EAAIJ,GAAoB,YAAY,GAAG;AACvC,UAAMK,IAAyB,CAAC,SAAS,QAAQ,QAAQ,eAAe,WAAW,GAC7EC,IAAeN,EAAmB;AAExC,aAASO,IAAa,GAAGA,IAAaF,EAAuB,QAAQE,KAAc,GAAG;AAClF,UAAIC,IAAcF;AAClB,YAAMG,IAAYJ,EAAuBE,CAAU,GAE7CG,IAAqBR,EAAK,GAAG,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,EAAE,GAC1FE,IAAuBT,EAAK,GAAG,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,IAAI,IAAI;AAGxG,MAAKL,EAAIH,GAAUQ,CAAS,MACpBC,IACAF,IAAcN,EAAK,EAAE,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,EAAE,IAC3EE,IACPH,IAAcN,EAAK,EAAE,sBAAsBD,CAAQ,IAAIK,CAAY,IAAIG,CAAS,IAAI,IAAI,IAExFD,IAAcC,GAGiB,CAAC,CAACT,EAAmB,QACjD,CAACA,EAAmB,YACpBY,EAASZ,EAAmB,KAAK,KAGjCA,EAAmB,SAAS,0BAG/BA,EAAmB,MAAMS,CAAS,IAAID,IAEtCR,EAAmBS,CAAS,IAAID,IAUpCR,EAAmB,aAAaS,MAAc,YAAST,EAAmBS,CAAS,IAAI,GAAGD,CAAW;AAAA,IAC5G;AAAA,EACJ;AACL;AAOA,SAASK,EAAUC,GAAQb,GAAU;AACjC,WAASc,IAAQ,GAAGA,IAAQD,EAAO,QAAQC,KAAS,GAAG;AACnD,UAAMC,IAAuBF,EAAOC,CAAK;AAGzC,QAAIX,EAAIY,GAAsB,UAAU;AAEpC,MAAAjB,EAAkBiB,GAAsBf,CAAQ,GAEhDY,EAAUG,EAAqB,UAAUf,CAAQ;AAAA,aAE1CG,EAAIY,GAAsB,MAAM,GAAG;AAE1C,MAAAjB,EAAkBiB,GAAsBf,CAAQ;AAEhD,YAAMgB,IAAW,OAAO,KAAKD,EAAqB,IAAI;AACtD,eAASE,IAAW,GAAGA,IAAWD,EAAS,QAAQC,KAAY,GAAG;AAC9D,cAAMC,IAAaF,EAASC,CAAQ;AACpC,QAAAL,EAAUG,EAAqB,KAAKG,CAAU,GAAGlB,CAAQ;AAAA,MAC5D;AAAA,IAEb;AACY,MAAAF,EAAkBiB,GAAsBf,CAAQ;AAAA,EAEvD;AACL;"}
@@ -9,7 +9,7 @@ declare const _default: import('vue').DefineComponent<{
9
9
  showMultilingualValue(property: any, value: any): boolean | "";
10
10
  checkadms(str: any): any;
11
11
  showValue(property: any, value: any): boolean | undefined;
12
- filterDateFormatEU(date: any): string;
12
+ filterDateFormatEU(date: any): any;
13
13
  convertTemporalResolution(data: any): string;
14
14
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
15
15
  property: StringConstructor;
@@ -13,11 +13,7 @@ declare const _default: import('vue').DefineComponent<Readonly<{
13
13
  away(): void;
14
14
  replaceHttp: typeof replaceHttp;
15
15
  setClipboard(value: any): void;
16
- }, {
17
- directives: {
18
- ClickAway: import('vue').Directive;
19
- };
20
- }, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<Readonly<{
16
+ }, any, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<Readonly<{
21
17
  title?: any;
22
18
  message?: any;
23
19
  distribution?: any;
@@ -6,7 +6,7 @@ import N from "./ValuesList.vue.mjs";
6
6
  import { mapGetters as S } from "vuex";
7
7
  import g from "../../filters/dateFilters.mjs";
8
8
  import { truncate as j, getTranslationFor as V } from "../../utils/helpers.mjs";
9
- import { resolveComponent as m, openBlock as s, createElementBlock as i, createElementVNode as b, createVNode as h, withCtx as k, createTextVNode as o, toDisplayString as p, createCommentVNode as u, Fragment as T, renderList as v, createBlock as B } from "vue";
9
+ import { resolveComponent as m, openBlock as s, createElementBlock as i, createElementVNode as b, createVNode as h, withCtx as k, createTextVNode as o, toDisplayString as d, createCommentVNode as u, Fragment as T, renderList as v, createBlock as B } from "vue";
10
10
  import "./DatasetDetailsProperty.vue2.mjs";
11
11
  import E from "../../_virtual/_plugin-vue_export-helper.mjs";
12
12
  const O = {
@@ -100,8 +100,8 @@ const O = {
100
100
  return e = e.filter((r) => !y(t[r[0]])), e.map((r) => {
101
101
  let n = t[r[0]];
102
102
  _(n) || (n = [n]);
103
- const d = { key: r[0], value: n };
104
- return r[1] !== void 0 && (d.type = r[1]), r[2] !== void 0 && (d.translation = r[2]), d;
103
+ const c = { key: r[0], value: n };
104
+ return r[1] !== void 0 && (c.type = r[1]), r[2] !== void 0 && (c.translation = r[2]), c;
105
105
  });
106
106
  },
107
107
  interpretTranslateKey(t, e) {
@@ -109,7 +109,7 @@ const O = {
109
109
  }
110
110
  }
111
111
  }, P = { key: 0 }, A = { class: "w-25 text-break font-weight-bold" }, C = { key: 0 }, L = { key: 1 }, W = ["href"], I = { key: 2 }, U = { key: 1 }, q = { key: 3 }, G = { key: 4 };
112
- function z(t, e, r, n, d, a) {
112
+ function z(t, e, r, n, c, a) {
113
113
  const D = m("tooltip"), F = m("app-link"), f = m("values-list");
114
114
  return a.show ? (s(), i("tr", P, [
115
115
  b("td", A, [
@@ -117,31 +117,31 @@ function z(t, e, r, n, d, a) {
117
117
  title: a.labelDisplay[0]
118
118
  }, {
119
119
  default: k(() => [
120
- o(p(a.labelDisplay[1]), 1)
120
+ o(d(a.labelDisplay[1]), 1)
121
121
  ]),
122
122
  _: 1
123
123
  }, 8, ["title"])
124
124
  ]),
125
125
  o(),
126
- ["string", "date", "first:number", "translation"].includes(r.type) ? (s(), i("td", C, p(a.value), 1)) : u("", !0),
126
+ ["string", "date", "first:number", "translation"].includes(r.type) ? (s(), i("td", C, d(a.value), 1)) : u("", !0),
127
127
  o(),
128
128
  r.type === "uri" ? (s(), i("td", L, [
129
- b("a", { href: a.value }, p(a.value), 9, W)
129
+ b("a", { href: a.value }, d(a.value), 9, W)
130
130
  ])) : u("", !0),
131
131
  o(),
132
132
  r.type === "links" ? (s(), i("td", I, [
133
- (s(!0), i(T, null, v(a.value, (l, c) => (s(), i("div", { key: c }, [
134
- !a.isNil(l) && l.link ? (s(), B(F, {
133
+ (s(!0), i(T, null, v(a.value, (l, p) => (s(), i("div", { key: p }, [
134
+ !a.isNil(l) && l.link && r.name !== "languages" ? (s(), B(F, {
135
135
  key: 0,
136
136
  to: l.link
137
137
  }, {
138
138
  default: k(() => [
139
- o(p(a.truncate(l.label, 75)), 1)
139
+ o(d(a.truncate(l.label, 75)), 1)
140
140
  ]),
141
141
  _: 2
142
142
  }, 1032, ["to"])) : u("", !0),
143
143
  o(),
144
- !a.isNil(l) && !l.link ? (s(), i("div", U, p(a.truncate(l.label, 75)), 1)) : u("", !0)
144
+ !a.isNil(l) && !l.link || r.name === "languages" ? (s(), i("div", U, d(a.truncate(l.label, 75)), 1)) : u("", !0)
145
145
  ]))), 128))
146
146
  ])) : u("", !0),
147
147
  o(),
@@ -154,7 +154,7 @@ function z(t, e, r, n, d, a) {
154
154
  ])) : u("", !0),
155
155
  o(),
156
156
  r.type === "objects" ? (s(), i("td", G, [
157
- (s(!0), i(T, null, v(a.value, (l, c) => (s(), i("div", { key: c }, [
157
+ (s(!0), i(T, null, v(a.value, (l, p) => (s(), i("div", { key: p }, [
158
158
  h(f, {
159
159
  values: l,
160
160
  interpretTranslateKey: a.interpretTranslateKey,
@@ -164,7 +164,7 @@ function z(t, e, r, n, d, a) {
164
164
  ])) : u("", !0)
165
165
  ])) : u("", !0);
166
166
  }
167
- const rt = /* @__PURE__ */ E(O, [["render", z], ["__scopeId", "data-v-998aa7e1"]]);
167
+ const rt = /* @__PURE__ */ E(O, [["render", z], ["__scopeId", "data-v-ace59886"]]);
168
168
  export {
169
169
  rt as default
170
170
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetDetailsProperty.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperty.vue"],"sourcesContent":["<template>\n <tr v-if=\"show\">\n <td class=\"w-25 text-break font-weight-bold\">\n <tooltip :title=\"labelDisplay[0]\">\n {{ labelDisplay[1] }}\n </tooltip>\n </td>\n <td v-if=\"['string', 'date', 'first:number', 'translation'].includes(type)\">{{ value }}</td>\n <td v-if=\"type==='uri'\"><a :href='value'>{{ value }}</a></td>\n <td v-if=\"type==='links'\">\n <div v-for=\"(v, i) of value\" :key=\"i\">\n <app-link v-if=\"!isNil(v) && v.link\" :to=\"v.link\">{{ truncate(v.label, 75) }}</app-link>\n <div v-if=\"!isNil(v) && !v.link\">{{ truncate(v.label, 75) }}</div>\n </div>\n </td>\n <td v-if=\"type==='object'\">\n <values-list :values=\"value\" :interpretTranslateKey=\"interpretTranslateKey\" :itemstyles=\"itemstyles\"/>\n </td>\n <td v-if=\"type==='objects'\">\n <div v-for=\"(item, i) of value\" :key=\"i\">\n <values-list :values=\"item\" :interpretTranslateKey=\"interpretTranslateKey\" :itemstyles=\"itemstyles\"/>\n </div>\n </td>\n </tr>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport {isNil, isArray} from \"lodash\";\nimport {showByType} from \"./typeCheckers.ts\";\nimport ValuesList from \"./ValuesList\";\nimport {mapGetters} from \"vuex\";\nimport dateFilters from \"../../filters/dateFilters.ts\";\nimport {truncate, getTranslationFor} from \"../../utils/helpers\";\n\nexport default {\n name: \"DatasetDetailsProperty\",\n props: {\n type: String, // Can be any of the types recognized in typeCheckers.ts\n translate: String | Array, // i18n key for the tooltip and label string values (if not given, name is used!)\n name: String, // Key to extract the value from the Datasets store\n propertyFields: String, // Comma-separated keys for extracting data from an object\n itemstyles: String, // Styles to apply to an object key-value block\n track: String, // Comma-separated keys for tracking\n preTransform: Function, // Transform raw data from dataset service\n transform: Function // Transform data after preparing by this.value\n },\n components: {\n Tooltip, AppLink, ValuesList\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getProperty'\n ]),\n labelDisplay() {\n const prefix = [\"message.tooltip.datasetDetails\", \"message.metadata\"];\n let translateItems;\n if (this.translate) {\n translateItems = this.translate.split(',');\n if (translateItems.length === 1) {\n translateItems.push(translateItems[0]);\n }\n } else {\n translateItems = [this.name, this.name];\n }\n return translateItems.map((item, i) => this.interpretTranslateKey(item, prefix[i]));\n },\n data() {\n let d = this.getProperty(this.name);\n if (this.name === 'languages') {\n d.sort((a, b) => {\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n });\n }\n return d;\n },\n preparedFields() {\n return this.propertyFields?.split(',').map(field => field.split(':'));\n },\n preparedTrack() {\n return this.track?.split(',');\n },\n value() {\n let v = this.data;\n if (this.preTransform) v = this.preTransform(v);\n switch (this.type) {\n case 'date':\n v = dateFilters.formatEU(v);\n break;\n case 'links':\n v = this.data.map(item => {\n if (item) {\n const link = typeof item === 'string'? item : item.resource;\n const label = typeof item === 'string'? item : item.label || item.id || item.resource;\n return { link, label };\n }\n });\n break;\n case 'object':\n v = this.prepareObject(this.data);\n break;\n case 'objects':\n v = this.data.map(item => {\n return this.prepareObject(item);\n });\n break;\n case 'translation':\n v = this.getTranslationFor(v, this.$route.query.locale, ['en']);\n break;\n default:\n if (this.type.startsWith('first')) {\n v = this.data[0];\n }\n }\n if (this.transform) v = this.transform(v);\n return v;\n },\n show() {\n return showByType(this.type, this.data);\n }\n },\n methods: {\n isNil,\n isArray,\n truncate,\n getTranslationFor,\n dateValue() {\n return dateFilters.formatEU(this.value);\n },\n prepareObject(object) {\n // Because this.fields can contain \":\" signs that split a key into an array,\n // we also transform the keys in the case this.fields is undefined into arrays:\n let keys = this.preparedFields ?? Object.keys(object).map(key => [key]);\n\n // Now key[0] holds the actual key in all cases. Check if the value given\n // For a key is undefined and filter them out:\n keys = keys.filter(key => !isNil(object[key[0]]));\n\n return keys.map(key => {\n let value = object[key[0]];\n\n // Values can be arrays for displaying several values. For uniform treatment,\n // transform single values into arrays of length 1:\n if (!isArray(value)) value = [value];\n\n // First step: an object holding key and value:\n const result = {key: key[0], value};\n\n // Enrich the object when appropriate:\n if (key[1] !== undefined) result.type = key[1];\n if (key[2] !== undefined) result.translation = key[2];\n\n return result;\n });\n },\n interpretTranslateKey(key, prefix) {\n if (key === '') return '';\n if (key.startsWith('/')) return `${this.i18n.global.t(key.substring(1))}:`;\n if (key.startsWith('\\'')) return key.substring(1, key.length - 1);\n return `${this.i18n.global.t(`${prefix}.${key}`)}:`;\n },\n }\n}\n</script>\n\n<style scoped>\ntr {\n width: 100%;\n}\n.w-25 {\n min-width: 160px;\n}\n\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","ValuesList","mapGetters","prefix","translateItems","item","i","d","a","b","_a","field","v","dateFilters","link","label","showByType","isNil","isArray","truncate","getTranslationFor","object","keys","key","value","result","_hoisted_2","_hoisted_5","$options","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_createVNode","_component_tooltip","_withCtx","_createTextVNode","_toDisplayString","$props","_hoisted_3","_createCommentVNode","_hoisted_4","_hoisted_6","_Fragment","_renderList","_createBlock","_component_app_link","_hoisted_7","_hoisted_8","_component_values_list","_hoisted_9"],"mappings":"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"}
1
+ {"version":3,"file":"DatasetDetailsProperty.vue.mjs","sources":["../../../lib/datasetDetails/properties/DatasetDetailsProperty.vue"],"sourcesContent":["<template>\n <tr v-if=\"show\">\n <td class=\"w-25 text-break font-weight-bold\">\n <tooltip :title=\"labelDisplay[0]\">\n {{ labelDisplay[1] }}\n </tooltip>\n </td>\n <td v-if=\"['string', 'date', 'first:number', 'translation'].includes(type)\">{{ value }}</td>\n <td v-if=\"type==='uri'\"><a :href='value'>{{ value }}</a></td>\n <td v-if=\"type==='links'\">\n <div v-for=\"(v, i) of value\" :key=\"i\">\n <app-link v-if=\"!isNil(v) && v.link && name !== 'languages'\" :to=\"v.link\">{{ truncate(v.label, 75) }}</app-link>\n <div v-if=\"(!isNil(v) && !v.link) || name === 'languages'\">{{ truncate(v.label, 75) }}</div>\n </div>\n </td>\n <td v-if=\"type==='object'\">\n <values-list :values=\"value\" :interpretTranslateKey=\"interpretTranslateKey\" :itemstyles=\"itemstyles\"/>\n </td>\n <td v-if=\"type==='objects'\">\n <div v-for=\"(item, i) of value\" :key=\"i\">\n <values-list :values=\"item\" :interpretTranslateKey=\"interpretTranslateKey\" :itemstyles=\"itemstyles\"/>\n </div>\n </td>\n </tr>\n</template>\n\n<script>\nimport AppLink from \"../../widgets/AppLink\";\nimport Tooltip from \"../../widgets/Tooltip\";\nimport {isNil, isArray} from \"lodash\";\nimport {showByType} from \"./typeCheckers.ts\";\nimport ValuesList from \"./ValuesList\";\nimport {mapGetters} from \"vuex\";\nimport dateFilters from \"../../filters/dateFilters.ts\";\nimport {truncate, getTranslationFor} from \"../../utils/helpers\";\n\nexport default {\n name: \"DatasetDetailsProperty\",\n props: {\n type: String, // Can be any of the types recognized in typeCheckers.ts\n translate: String | Array, // i18n key for the tooltip and label string values (if not given, name is used!)\n name: String, // Key to extract the value from the Datasets store\n propertyFields: String, // Comma-separated keys for extracting data from an object\n itemstyles: String, // Styles to apply to an object key-value block\n track: String, // Comma-separated keys for tracking\n preTransform: Function, // Transform raw data from dataset service\n transform: Function // Transform data after preparing by this.value\n },\n components: {\n Tooltip, AppLink, ValuesList\n },\n computed: {\n ...mapGetters('datasetDetails', [\n 'getProperty'\n ]),\n labelDisplay() {\n const prefix = [\"message.tooltip.datasetDetails\", \"message.metadata\"];\n let translateItems;\n if (this.translate) {\n translateItems = this.translate.split(',');\n if (translateItems.length === 1) {\n translateItems.push(translateItems[0]);\n }\n } else {\n translateItems = [this.name, this.name];\n }\n return translateItems.map((item, i) => this.interpretTranslateKey(item, prefix[i]));\n },\n data() {\n let d = this.getProperty(this.name);\n if (this.name === 'languages') {\n d.sort((a, b) => {\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n });\n }\n return d;\n },\n preparedFields() {\n return this.propertyFields?.split(',').map(field => field.split(':'));\n },\n preparedTrack() {\n return this.track?.split(',');\n },\n value() {\n let v = this.data;\n if (this.preTransform) v = this.preTransform(v);\n switch (this.type) {\n case 'date':\n v = dateFilters.formatEU(v);\n break;\n case 'links':\n v = this.data.map(item => {\n if (item) {\n const link = typeof item === 'string'? item : item.resource;\n const label = typeof item === 'string'? item : item.label || item.id || item.resource;\n return { link, label };\n }\n });\n break;\n case 'object':\n v = this.prepareObject(this.data);\n break;\n case 'objects':\n v = this.data.map(item => {\n return this.prepareObject(item);\n });\n break;\n case 'translation':\n v = this.getTranslationFor(v, this.$route.query.locale, ['en']);\n break;\n default:\n if (this.type.startsWith('first')) {\n v = this.data[0];\n }\n }\n if (this.transform) v = this.transform(v);\n return v;\n },\n show() {\n return showByType(this.type, this.data);\n }\n },\n methods: {\n isNil,\n isArray,\n truncate,\n getTranslationFor,\n dateValue() {\n return dateFilters.formatEU(this.value);\n },\n prepareObject(object) {\n // Because this.fields can contain \":\" signs that split a key into an array,\n // we also transform the keys in the case this.fields is undefined into arrays:\n let keys = this.preparedFields ?? Object.keys(object).map(key => [key]);\n\n // Now key[0] holds the actual key in all cases. Check if the value given\n // For a key is undefined and filter them out:\n keys = keys.filter(key => !isNil(object[key[0]]));\n\n return keys.map(key => {\n let value = object[key[0]];\n\n // Values can be arrays for displaying several values. For uniform treatment,\n // transform single values into arrays of length 1:\n if (!isArray(value)) value = [value];\n\n // First step: an object holding key and value:\n const result = {key: key[0], value};\n\n // Enrich the object when appropriate:\n if (key[1] !== undefined) result.type = key[1];\n if (key[2] !== undefined) result.translation = key[2];\n\n return result;\n });\n },\n interpretTranslateKey(key, prefix) {\n if (key === '') return '';\n if (key.startsWith('/')) return `${this.i18n.global.t(key.substring(1))}:`;\n if (key.startsWith('\\'')) return key.substring(1, key.length - 1);\n return `${this.i18n.global.t(`${prefix}.${key}`)}:`;\n },\n }\n}\n</script>\n\n<style scoped>\ntr {\n width: 100%;\n}\n.w-25 {\n min-width: 160px;\n}\n\n</style>\n"],"names":["_sfc_main","Tooltip","AppLink","ValuesList","mapGetters","prefix","translateItems","item","i","d","a","b","_a","field","v","dateFilters","link","label","showByType","isNil","isArray","truncate","getTranslationFor","object","keys","key","value","result","_hoisted_2","_hoisted_5","$options","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_createVNode","_component_tooltip","_withCtx","_createTextVNode","_toDisplayString","$props","_hoisted_3","_createCommentVNode","_hoisted_4","_hoisted_6","_Fragment","_renderList","_createBlock","_component_app_link","_hoisted_7","_hoisted_8","_component_values_list","_hoisted_9"],"mappings":"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"}
@@ -2,8 +2,8 @@ declare const _default: import('vue').DefineComponent<Readonly<{
2
2
  date?: any;
3
3
  toolTipTitle?: any;
4
4
  }>, any, any, {
5
- filterDateFormatUS(): string;
6
- filterDateFormatEU(): string;
5
+ filterDateFormatUS(): any;
6
+ filterDateFormatEU(): any;
7
7
  }, {
8
8
  isIncorrectDate(): boolean;
9
9
  setDateIncorrect: import('vuex').ActionMethod;
@@ -1,5 +1,5 @@
1
1
  import { noop as v, isIOS as k, isClient as O, toValue as L, isObject as S, tryOnScopeDispose as b } from "../shared/index";
2
- import { ref as h, computed as A, watch as I } from "vue-demi";
2
+ import { watch as I, ref as h, computed as A } from "vue-demi";
3
3
  function p(s) {
4
4
  var o;
5
5
  const n = L(s);
@@ -10,13 +10,13 @@ declare const dateFilters: {
10
10
  * @param {date} date - The given date
11
11
  * @returns {String}
12
12
  */
13
- formatUS(date: string): string;
13
+ formatUS(date: string): any;
14
14
  /**
15
15
  * @description Transforms the given date into a US Date Format String
16
16
  * @param {date} date - The given date
17
17
  * @returns {String}
18
18
  */
19
- formatEU(date: string): string;
19
+ formatEU(date: string): any;
20
20
  /**
21
21
  * @description Returns a String representing the expired time from the given date to now.
22
22
  * @param {date} date - The given date