@firecms/data_import_export 3.0.0-canary.7 → 3.0.0-canary.9

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.
package/dist/index.es.js CHANGED
@@ -1,221 +1,222 @@
1
- import C, { useState as j, useRef as Oe, useEffect as ce, useCallback as x, useMemo as Ie } from "react";
2
- import { jsxs as p, Fragment as $, jsx as s } from "react/jsx-runtime";
3
- import { getPropertyInPath as R, EntityReference as Ee, useSnackbarController as de, useCustomizationController as V, getFieldConfig as pe, ErrorBoundary as Ae, PropertyConfigBadge as fe, useDataSource as me, resolveCollection as ue, getPropertiesWithPropertiesOrder as Te, useSelectionController as je, EntityCollectionTable as ke, getArrayValuesCount as Fe, getValueInPath as Pe, useFireCMSContext as Me, useNavigationController as $e } from "@firecms/core";
4
- import { Table as Re, TableHeader as Le, TableCell as M, TableBody as _e, TableRow as Be, Typography as u, ChevronRightIcon as Je, Select as he, SelectItem as B, FileUpload as He, UploadIcon as Ue, TextField as We, IconButton as ee, EditIcon as ze, CenteredView as Ve, CircularProgress as ge, Tooltip as te, FileUploadIcon as Ge, Dialog as ye, DialogContent as be, DialogActions as xe, Button as k, cn as _, defaultBorderMixin as Xe, GetAppIcon as qe, Alert as Qe, focusedMixin as U, BooleanSwitchWithLabel as Ye } from "@firecms/ui";
5
- import { buildEntityPropertiesFromData as Ze } from "@firecms/schema_inference";
6
- import * as ie from "xlsx";
7
- const Ke = () => {
8
- const [e, r] = j(!1), [n, t] = j(), [a, i] = j([]), [o, l] = j([]), [d, c] = j({}), [f, m] = j({});
1
+ import C, { useState as O, useRef as Ee, useEffect as de, useCallback as b, useMemo as Ie } from "react";
2
+ import { jsxs as f, Fragment as M, jsx as o } from "react/jsx-runtime";
3
+ import { getPropertyInPath as _, EntityReference as Ae, useSnackbarController as pe, useCustomizationController as X, getFieldConfig as fe, ErrorBoundary as Te, PropertyConfigBadge as me, useDataSource as ue, resolveCollection as he, getPropertiesWithPropertiesOrder as je, useSelectionController as Fe, EntityCollectionTable as Pe, slugify as ke, getArrayValuesCount as Me, getValueInPath as _e, useFireCMSContext as $e, useNavigationController as Re } from "@firecms/core";
4
+ import { Table as Le, TableHeader as Be, TableCell as k, TableBody as Je, TableRow as He, Typography as u, ChevronRightIcon as Ue, Select as ge, SelectItem as H, FileUpload as We, UploadIcon as ze, TextField as Ve, IconButton as ee, EditIcon as Ge, CenteredView as ie, Button as E, CircularProgress as ye, Tooltip as te, FileUploadIcon as Xe, Dialog as be, DialogContent as xe, DialogActions as ve, cn as J, defaultBorderMixin as qe, GetAppIcon as Qe, Alert as Ye, focusedMixin as z, BooleanSwitchWithLabel as Ze } from "@firecms/ui";
5
+ import { buildEntityPropertiesFromData as Ke } from "@firecms/schema_inference";
6
+ import * as oe from "xlsx";
7
+ const et = () => {
8
+ const [e, r] = O(!1), [a, t] = O(), [n, i] = O([]), [s, d] = O([]), [c, l] = O({}), [p, m] = O({});
9
9
  return {
10
10
  inUse: e,
11
11
  setInUse: r,
12
- idColumn: n,
12
+ idColumn: a,
13
13
  setIdColumn: t,
14
- entities: o,
15
- setEntities: l,
16
- importData: a,
14
+ entities: s,
15
+ setEntities: d,
16
+ importData: n,
17
17
  setImportData: i,
18
- headersMapping: d,
19
- setHeadersMapping: c,
20
- originProperties: f,
18
+ headersMapping: c,
19
+ setHeadersMapping: l,
20
+ originProperties: p,
21
21
  setOriginProperties: m
22
22
  };
23
23
  };
24
- function et(e) {
25
- return new Promise((r, n) => {
24
+ function tt(e) {
25
+ return new Promise((r, a) => {
26
26
  if (e.type === "application/json") {
27
27
  console.debug("Converting JSON file to JSON", e.name);
28
28
  const t = new FileReader();
29
- t.onload = function(a) {
30
- const i = a.target?.result, o = JSON.parse(i);
31
- Array.isArray(o) || n(new Error("JSON file should contain an array of objects")), r(o);
29
+ t.onload = function(n) {
30
+ const i = n.target?.result, s = JSON.parse(i);
31
+ Array.isArray(s) || a(new Error("JSON file should contain an array of objects")), r(s);
32
32
  }, t.readAsText(e);
33
33
  } else {
34
34
  console.debug("Converting Excel file to JSON", e.name);
35
35
  const t = new FileReader();
36
- t.onload = function(a) {
37
- const i = new Uint8Array(a.target?.result), o = ie.read(
36
+ t.onload = function(n) {
37
+ const i = new Uint8Array(n.target?.result), s = oe.read(
38
38
  i,
39
39
  {
40
40
  type: "array",
41
41
  codepage: 65001,
42
42
  cellDates: !0
43
43
  }
44
- ), l = o.SheetNames[0], d = o.Sheets[l], m = ie.utils.sheet_to_json(d).map(tt).map(ve);
44
+ ), d = s.SheetNames[0], c = s.Sheets[d], m = oe.utils.sheet_to_json(c).map(rt).map(Ce);
45
45
  r(m);
46
46
  }, t.readAsArrayBuffer(e);
47
47
  }
48
48
  });
49
49
  }
50
- function tt(e) {
51
- return Object.keys(e).reduce((r, n) => {
50
+ function rt(e) {
51
+ return Object.keys(e).reduce((r, a) => {
52
52
  try {
53
- r[n] = JSON.parse(e[n]);
53
+ r[a] = JSON.parse(e[a]);
54
54
  } catch {
55
- r[n] = e[n];
55
+ r[a] = e[a];
56
56
  }
57
57
  return r;
58
58
  }, {});
59
59
  }
60
- function ve(e) {
61
- return Object.keys(e).reduce((r, n) => {
60
+ function Ce(e) {
61
+ return Object.keys(e).reduce((r, a) => {
62
62
  let t = r;
63
- const a = n.split(".");
64
- return a.forEach((i, o) => {
63
+ const n = a.split(".");
64
+ return n.forEach((i, s) => {
65
65
  if (/^[\w]+\[\d+\]$/.test(i)) {
66
- const l = i.slice(0, i.indexOf("[")), d = parseInt(i.slice(i.indexOf("[") + 1, i.indexOf("]")));
67
- t[l] || (t[l] = []), o !== a.length - 1 ? (t[l][d] = t[l][d] || {}, t = t[l][d]) : t[l][d] = e[n];
66
+ const d = i.slice(0, i.indexOf("[")), c = parseInt(i.slice(i.indexOf("[") + 1, i.indexOf("]")));
67
+ t[d] || (t[d] = []), s !== n.length - 1 ? (t[d][c] = t[d][c] || {}, t = t[d][c]) : t[d][c] = e[a];
68
68
  } else
69
- o !== a.length - 1 ? (t[i] = t[i] || {}, t = t[i]) : t[i] = e[n];
69
+ s !== n.length - 1 ? (t[i] = t[i] || {}, t = t[i]) : t[i] = e[a];
70
70
  }), r;
71
71
  }, {});
72
72
  }
73
- function rt(e, r, n, t, a, i) {
74
- const o = Ce(e);
75
- r && delete o[r];
76
- const l = Object.entries(o).map(([c, f]) => {
77
- const m = n[c] ?? c;
78
- if (!R(t, m))
73
+ function nt(e, r, a, t, n, i) {
74
+ const s = we(e);
75
+ r && delete s[r];
76
+ const d = Object.entries(s).map(([p, m]) => {
77
+ const h = a[p] ?? p;
78
+ if (!_(t, h))
79
79
  return {};
80
- const h = a[m];
81
- let S = f;
82
- return h && (S = Z(f, h)), {
83
- [m]: S
80
+ const I = n[h];
81
+ let A = m;
82
+ return I && (A = Z(m, I)), {
83
+ [h]: A
84
84
  };
85
- }).reduce((c, f) => ({ ...c, ...f }), {}), d = ve(l);
86
- return {
87
- id: r ? e[r] : void 0,
88
- values: d,
85
+ }).reduce((p, m) => ({ ...p, ...m }), {}), c = Ce(d);
86
+ let l = r ? e[r] : void 0;
87
+ return typeof l == "string" ? l = l.trim() : typeof l == "number" || typeof l == "boolean" ? l = l.toString() : l instanceof Date ? l = l.toISOString() : l && "toString" in l && (l = l.toString()), {
88
+ id: l,
89
+ values: c,
89
90
  path: i
90
91
  };
91
92
  }
92
- function Ce(e, r = "") {
93
- return Object.keys(e).reduce((n, t) => {
94
- const a = r ? `${r}.${t}` : t;
95
- return typeof e[t] == "object" && e[t] !== null && !Array.isArray(e[t]) ? Object.assign(n, Ce(e[t], a)) : n[a] = e[t], n;
93
+ function we(e, r = "") {
94
+ return Object.keys(e).reduce((a, t) => {
95
+ const n = r ? `${r}.${t}` : t;
96
+ return typeof e[t] == "object" && e[t] !== null && !Array.isArray(e[t]) ? Object.assign(a, we(e[t], n)) : a[n] = e[t], a;
96
97
  }, {});
97
98
  }
98
99
  function Z(e, r) {
99
100
  if (r === void 0)
100
101
  return e;
101
102
  const {
102
- from: n,
103
+ from: a,
103
104
  to: t
104
105
  } = r;
105
- if (n === "array" && t === "array" && r.fromSubtype && r.toSubtype && Array.isArray(e))
106
- return e.map((a) => Z(a, {
106
+ if (a === "array" && t === "array" && r.fromSubtype && r.toSubtype && Array.isArray(e))
107
+ return e.map((n) => Z(n, {
107
108
  from: r.fromSubtype,
108
109
  to: r.toSubtype
109
110
  }));
110
- if (n === "string" && t === "number" && typeof e == "string")
111
+ if (a === "string" && t === "number" && typeof e == "string")
111
112
  return Number(e);
112
- if (n === "string" && t === "array" && r.toSubtype && typeof e == "string")
113
- return e.split(",").map((a) => Z(a, {
113
+ if (a === "string" && t === "array" && r.toSubtype && typeof e == "string")
114
+ return e.split(",").map((n) => Z(n, {
114
115
  from: "string",
115
116
  to: r.toSubtype
116
117
  }));
117
- if (n === "string" && t === "boolean")
118
+ if (a === "string" && t === "boolean")
118
119
  return e === "true";
119
- if (n === "number" && t === "boolean")
120
+ if (a === "number" && t === "boolean")
120
121
  return e === 1;
121
- if (n === "boolean" && t === "number")
122
+ if (a === "boolean" && t === "number")
122
123
  return e ? 1 : 0;
123
- if (n === "boolean" && t === "string")
124
+ if (a === "boolean" && t === "string")
124
125
  return e ? "true" : "false";
125
- if (n === "number" && t === "string" && typeof e == "number")
126
+ if (a === "number" && t === "string" && typeof e == "number")
126
127
  return e.toString();
127
- if (n === "string" && t === "array" && typeof e == "string")
128
- return e.split(",").map((a) => a.trim());
129
- if (n === "string" && t === "date" && typeof e == "string")
128
+ if (a === "string" && t === "array" && typeof e == "string")
129
+ return e.split(",").map((n) => n.trim());
130
+ if (a === "string" && t === "date" && typeof e == "string")
130
131
  try {
131
132
  return new Date(e);
132
133
  } catch {
133
134
  return e;
134
135
  }
135
136
  else {
136
- if (n === "date" && t === "string")
137
+ if (a === "date" && t === "string")
137
138
  return e instanceof Date && e.toISOString();
138
- if (n === "number" && t === "date" && typeof e == "number")
139
+ if (a === "number" && t === "date" && typeof e == "number")
139
140
  try {
140
141
  return new Date(e);
141
142
  } catch {
142
143
  return e;
143
144
  }
144
- else if (n === "string" && t === "reference" && typeof e == "string") {
145
- const a = e.split("/").slice(0, -1).join("/"), i = e.split("/").slice(-1)[0];
146
- return new Ee(i, a);
145
+ else if (a === "string" && t === "reference" && typeof e == "string") {
146
+ const n = e.split("/").slice(0, -1).join("/"), i = e.split("/").slice(-1)[0];
147
+ return new Ae(i, n);
147
148
  } else {
148
- if (n === t)
149
+ if (a === t)
149
150
  return e;
150
- if (n === "array" && t === "string" && Array.isArray(e))
151
+ if (a === "array" && t === "string" && Array.isArray(e))
151
152
  return e.join(",");
152
153
  }
153
154
  }
154
155
  return e;
155
156
  }
156
- function nt(e) {
157
+ function at(e) {
157
158
  return typeof e == "number" ? "number" : typeof e == "string" ? "string" : typeof e == "boolean" ? "boolean" : e instanceof Date ? "date" : Array.isArray(e) ? "array" : "map";
158
159
  }
159
- function at(e, r) {
160
- function n(t, a) {
160
+ function it(e, r) {
161
+ function a(t, n) {
161
162
  const i = {};
162
- return Object.keys(t).forEach((o) => {
163
- const l = a ? `${a}.${o}` : o, d = R(t, o), c = R(e, l);
164
- if (d) {
165
- if (d.dataType === "map" && d.properties) {
166
- const f = n(d.properties, l);
167
- Object.keys(f).forEach((m) => {
168
- i[`${l}.${m}`] = f[m];
163
+ return Object.keys(t).forEach((s) => {
164
+ const d = n ? `${n}.${s}` : s, c = _(t, s), l = _(e, d);
165
+ if (c) {
166
+ if (c.dataType === "map" && c.properties) {
167
+ const p = a(c.properties, d);
168
+ Object.keys(p).forEach((m) => {
169
+ i[`${d}.${m}`] = p[m];
169
170
  });
170
171
  return;
171
172
  }
172
- if (c) {
173
- const f = c.dataType, m = d.dataType;
174
- let y, h;
175
- d.dataType === "array" && d.of && (h = d.of.dataType), c?.dataType === "array" && c?.of && (y = c.of.dataType), (f !== m || y !== h) && (i[o] = {
176
- from: f,
173
+ if (l) {
174
+ const p = l.dataType, m = c.dataType;
175
+ let h, g;
176
+ c.dataType === "array" && c.of && (g = c.of.dataType), l?.dataType === "array" && l?.of && (h = l.of.dataType), (p !== m || h !== g) && (i[s] = {
177
+ from: p,
177
178
  to: m,
178
- fromSubtype: y,
179
- toSubtype: h
179
+ fromSubtype: h,
180
+ toSubtype: g
180
181
  });
181
182
  }
182
183
  }
183
184
  }), i;
184
185
  }
185
- return n(r);
186
+ return a(r);
186
187
  }
187
- function it({
188
+ function ot({
188
189
  idColumn: e,
189
190
  headersMapping: r,
190
- originProperties: n,
191
+ originProperties: a,
191
192
  destinationProperties: t,
192
- onIdPropertyChanged: a,
193
+ onIdPropertyChanged: n,
193
194
  buildPropertyView: i
194
195
  }) {
195
- return /* @__PURE__ */ p($, { children: [
196
- /* @__PURE__ */ s(
196
+ return /* @__PURE__ */ f(M, { children: [
197
+ /* @__PURE__ */ o(
197
198
  st,
198
199
  {
199
200
  idColumn: e,
200
201
  headersMapping: r,
201
- onChange: a
202
+ onChange: n
202
203
  }
203
204
  ),
204
- /* @__PURE__ */ p(Re, { style: {
205
+ /* @__PURE__ */ f(Le, { style: {
205
206
  tableLayout: "fixed"
206
207
  }, children: [
207
- /* @__PURE__ */ p(Le, { children: [
208
- /* @__PURE__ */ s(M, { header: !0, style: { width: "20%" }, children: "Column in file" }),
209
- /* @__PURE__ */ s(M, { header: !0 }),
210
- /* @__PURE__ */ s(M, { header: !0, style: { width: "75%" }, children: "Property" })
208
+ /* @__PURE__ */ f(Be, { children: [
209
+ /* @__PURE__ */ o(k, { header: !0, style: { width: "20%" }, children: "Column in file" }),
210
+ /* @__PURE__ */ o(k, { header: !0 }),
211
+ /* @__PURE__ */ o(k, { header: !0, style: { width: "75%" }, children: "Property" })
211
212
  ] }),
212
- /* @__PURE__ */ s(_e, { children: t && Object.entries(r).map(
213
- ([o, l]) => {
214
- const d = r[o], c = l ? R(t, l) : null, f = R(n, o), m = f ? f.dataType === "array" && typeof f.of == "object" ? `${f.dataType} - ${f.of.dataType}` : f.dataType : void 0;
215
- return /* @__PURE__ */ p(Be, { style: { height: "90px" }, children: [
216
- /* @__PURE__ */ p(M, { style: { width: "20%" }, children: [
217
- /* @__PURE__ */ s(u, { variant: "body2", children: o }),
218
- f && /* @__PURE__ */ s(
213
+ /* @__PURE__ */ o(Je, { children: t && Object.entries(r).map(
214
+ ([s, d]) => {
215
+ const c = r[s], l = d ? _(t, d) : null, p = _(a, s), m = p ? p.dataType === "array" && typeof p.of == "object" ? `${p.dataType} - ${p.of.dataType}` : p.dataType : void 0;
216
+ return /* @__PURE__ */ f(He, { style: { height: "90px" }, children: [
217
+ /* @__PURE__ */ f(k, { style: { width: "20%" }, children: [
218
+ /* @__PURE__ */ o(u, { variant: "body2", children: s }),
219
+ p && /* @__PURE__ */ o(
219
220
  u,
220
221
  {
221
222
  variant: "caption",
@@ -224,21 +225,21 @@ function it({
224
225
  }
225
226
  )
226
227
  ] }),
227
- /* @__PURE__ */ s(M, { children: /* @__PURE__ */ s(Je, {}) }),
228
- /* @__PURE__ */ s(
229
- M,
228
+ /* @__PURE__ */ o(k, { children: /* @__PURE__ */ o(Ue, {}) }),
229
+ /* @__PURE__ */ o(
230
+ k,
230
231
  {
231
- className: o === e ? "text-center" : void 0,
232
+ className: s === e ? "text-center" : void 0,
232
233
  style: { width: "75%" },
233
234
  children: i?.({
234
- isIdColumn: o === e,
235
- property: c,
236
- propertyKey: d,
237
- importKey: o
235
+ isIdColumn: s === e,
236
+ property: l,
237
+ propertyKey: c,
238
+ importKey: s
238
239
  })
239
240
  }
240
241
  )
241
- ] }, o);
242
+ ] }, s);
242
243
  }
243
244
  ) })
244
245
  ] })
@@ -247,29 +248,30 @@ function it({
247
248
  function st({
248
249
  idColumn: e,
249
250
  headersMapping: r,
250
- onChange: n
251
+ onChange: a
251
252
  }) {
252
- return /* @__PURE__ */ s("div", { children: /* @__PURE__ */ p(
253
- he,
253
+ return /* @__PURE__ */ o("div", { children: /* @__PURE__ */ f(
254
+ ge,
254
255
  {
255
256
  size: "small",
256
257
  value: e ?? "",
257
258
  onChange: (t) => {
258
- n(t.target.value);
259
+ const n = t.target.value;
260
+ a(n === "none" ? null : n);
259
261
  },
260
- renderValue: (t) => /* @__PURE__ */ s(u, { variant: "body2", children: t !== "" ? t : "Autogenerate ID" }),
262
+ renderValue: (t) => /* @__PURE__ */ o(u, { variant: "body2", children: t !== "" ? t : "Autogenerate ID" }),
261
263
  label: "Column that will be used as ID for each document",
262
264
  children: [
263
- /* @__PURE__ */ s(B, { value: "", children: "Autogenerate ID" }),
264
- Object.entries(r).map(([t, a]) => /* @__PURE__ */ s(B, { value: t, children: t }, t))
265
+ /* @__PURE__ */ o(H, { value: "none", children: "Autogenerate ID" }),
266
+ Object.entries(r).map(([t, n]) => /* @__PURE__ */ o(H, { value: t, children: t }, t))
265
267
  ]
266
268
  }
267
269
  ) });
268
270
  }
269
- function ot({ onDataAdded: e }) {
270
- const r = de();
271
- return /* @__PURE__ */ s(
272
- He,
271
+ function lt({ onDataAdded: e }) {
272
+ const r = pe();
273
+ return /* @__PURE__ */ o(
274
+ We,
273
275
  {
274
276
  accept: {
275
277
  "text/*": [".csv", ".xls", ".xlsx"],
@@ -284,12 +286,12 @@ function ot({ onDataAdded: e }) {
284
286
  preventDropOnDocument: !0,
285
287
  size: "small",
286
288
  maxFiles: 1,
287
- uploadDescription: /* @__PURE__ */ p($, { children: [
288
- /* @__PURE__ */ s(Ue, {}),
289
+ uploadDescription: /* @__PURE__ */ f(M, { children: [
290
+ /* @__PURE__ */ o(ze, {}),
289
291
  "Drag and drop a file here or click to upload"
290
292
  ] }),
291
- onFilesAdded: (n) => {
292
- n.length > 0 && et(n[0]).then((t) => {
293
+ onFilesAdded: (a) => {
294
+ a.length > 0 && tt(a[0]).then((t) => {
293
295
  e(t);
294
296
  }).catch((t) => {
295
297
  console.error("Error parsing file", t), r.open({ type: "error", message: t.message });
@@ -301,181 +303,191 @@ function ot({ onDataAdded: e }) {
301
303
  function Dt({
302
304
  propertyKey: e,
303
305
  property: r,
304
- onEditClick: n,
306
+ onEditClick: a,
305
307
  includeName: t = !0,
306
- onPropertyNameChanged: a,
308
+ onPropertyNameChanged: n,
307
309
  propertyTypeView: i
308
310
  }) {
309
- const { propertyConfigs: o } = V(), l = r ? pe(r, o) : null;
310
- return /* @__PURE__ */ s(Ae, { children: /* @__PURE__ */ p(
311
+ const { propertyConfigs: s } = X(), d = r ? fe(r, s) : null;
312
+ return /* @__PURE__ */ o(Te, { children: /* @__PURE__ */ f(
311
313
  "div",
312
314
  {
313
315
  className: "flex flex-row w-full items-center",
314
316
  children: [
315
- /* @__PURE__ */ s("div", { className: "mx-4", children: i ?? /* @__PURE__ */ s(fe, { propertyConfig: l ?? void 0 }) }),
316
- /* @__PURE__ */ s("div", { className: "w-full flex flex-col grow", children: /* @__PURE__ */ p("div", { className: "flex flex-row items-center gap-2", children: [
317
- t && /* @__PURE__ */ s(
318
- We,
317
+ /* @__PURE__ */ o("div", { className: "mx-4", children: i ?? /* @__PURE__ */ o(me, { propertyConfig: d ?? void 0 }) }),
318
+ /* @__PURE__ */ o("div", { className: "w-full flex flex-col grow", children: /* @__PURE__ */ f("div", { className: "flex flex-row items-center gap-2", children: [
319
+ t && /* @__PURE__ */ o(
320
+ Ve,
319
321
  {
320
322
  size: "small",
321
323
  className: "text-base grow",
322
324
  value: r?.name ?? "",
323
- onChange: (d) => {
324
- a && e && a(e, d.target.value);
325
+ onChange: (c) => {
326
+ n && e && n(e, c.target.value);
325
327
  }
326
328
  }
327
329
  ),
328
- /* @__PURE__ */ s(ee, { onClick: n, size: "small", children: /* @__PURE__ */ s(ze, { size: "small" }) })
330
+ /* @__PURE__ */ o(ee, { onClick: a, size: "small", children: /* @__PURE__ */ o(Ge, { size: "small" }) })
329
331
  ] }) })
330
332
  ]
331
333
  }
332
334
  ) });
333
335
  }
334
- function lt({
336
+ function ct({
335
337
  path: e,
336
338
  importConfig: r,
337
- collection: n,
339
+ collection: a,
338
340
  onImportSuccess: t
339
341
  }) {
340
- console.log("ImportSaveInProgress", e);
341
- const a = me(), i = Oe(!1), [o, l] = j(0);
342
- function d() {
343
- i.current || (i.current = !0, we(
342
+ const [n, i] = O(void 0), s = ue(), d = Ee(!1), [c, l] = O(0);
343
+ function p() {
344
+ d.current || (d.current = !0, Se(
345
+ s,
344
346
  a,
345
- n,
346
347
  e,
347
348
  r.entities,
348
349
  0,
349
350
  25,
350
351
  l
351
352
  ).then(() => {
352
- t(n), i.current = !1;
353
+ t(a), d.current = !1;
354
+ }).catch((m) => {
355
+ i(m), d.current = !1;
353
356
  }));
354
357
  }
355
- return ce(() => {
356
- d();
357
- }, []), /* @__PURE__ */ p(Ve, { className: "flex flex-col gap-4 items-center", children: [
358
- /* @__PURE__ */ s(ge, {}),
359
- /* @__PURE__ */ s(u, { variant: "h6", children: "Saving data" }),
360
- /* @__PURE__ */ p(u, { variant: "body2", children: [
361
- o,
358
+ return de(() => {
359
+ p();
360
+ }, []), n ? /* @__PURE__ */ f(ie, { className: "flex flex-col gap-4 items-center", children: [
361
+ /* @__PURE__ */ o(u, { variant: "h6", children: "Error saving data" }),
362
+ /* @__PURE__ */ o(u, { variant: "body2", color: "error", children: n.message }),
363
+ /* @__PURE__ */ o(
364
+ E,
365
+ {
366
+ onClick: p,
367
+ variant: "outlined",
368
+ children: "Retry"
369
+ }
370
+ )
371
+ ] }) : /* @__PURE__ */ f(ie, { className: "flex flex-col gap-4 items-center", children: [
372
+ /* @__PURE__ */ o(ye, {}),
373
+ /* @__PURE__ */ o(u, { variant: "h6", children: "Saving data" }),
374
+ /* @__PURE__ */ f(u, { variant: "body2", children: [
375
+ c,
362
376
  "/",
363
377
  r.entities.length,
364
378
  " entities saved"
365
379
  ] }),
366
- /* @__PURE__ */ s(u, { variant: "caption", children: "Do not close this tab or the import will be interrupted." })
380
+ /* @__PURE__ */ o(u, { variant: "caption", children: "Do not close this tab or the import will be interrupted." })
367
381
  ] });
368
382
  }
369
- function we(e, r, n, t, a = 0, i = 25, o) {
370
- console.debug("Saving imported data", a, i);
371
- const l = t.slice(a, a + i);
372
- return Promise.all(l.map((d) => e.saveEntity({
373
- path: n,
374
- values: d.values,
375
- entityId: d.id,
383
+ function Se(e, r, a, t, n = 0, i = 25, s) {
384
+ console.debug("Saving imported data", n, i);
385
+ const d = t.slice(n, n + i);
386
+ return Promise.all(d.map((c) => e.saveEntity({
387
+ path: a,
388
+ values: c.values,
389
+ entityId: c.id,
376
390
  collection: r,
377
391
  status: "new"
378
- }))).then(() => a + i < t.length ? (o(a + i), we(e, r, n, t, a + i, i, o)) : (o(t.length), Promise.resolve()));
392
+ }))).then(() => n + i < t.length ? (s(n + i), Se(e, r, a, t, n + i, i, s)) : (s(t.length), Promise.resolve()));
379
393
  }
380
- function ct({
394
+ function dt({
381
395
  collection: e,
382
396
  path: r,
383
- collectionEntitiesCount: n
397
+ collectionEntitiesCount: a,
398
+ onAnalyticsEvent: t
384
399
  }) {
385
- const t = V(), a = de(), [i, o] = C.useState(!1), [l, d] = C.useState("initial"), c = Ke(), f = x(() => {
386
- o(!0), d("initial");
387
- }, [o]), m = x(() => {
388
- o(!1);
389
- }, [o]), y = x(() => {
390
- d("preview");
391
- }, []), h = x(() => {
392
- d("import_data_saving");
393
- }, []), S = async (g) => {
394
- if (c.setImportData(g), g.length > 0) {
395
- const I = await Ze(g, nt);
396
- c.setOriginProperties(I);
397
- const E = Se(g);
398
- c.setHeadersMapping(E);
399
- const A = Object.keys(E)?.[0];
400
- if (A?.includes("id") || A?.includes("key")) {
401
- const w = A;
402
- c.setIdColumn(w);
403
- }
400
+ const n = X(), i = pe(), [s, d] = C.useState(!1), [c, l] = C.useState("initial"), p = et(), m = b(() => {
401
+ d(!0), l("initial");
402
+ }, [d]), h = b(() => {
403
+ d(!1);
404
+ }, [d]), g = b(() => {
405
+ l("preview");
406
+ }, []), I = b(() => {
407
+ l("import_data_saving");
408
+ }, []), A = async (y) => {
409
+ if (p.setImportData(y), y.length > 0) {
410
+ const T = await Ke(y, at);
411
+ p.setOriginProperties(T);
412
+ const L = Ne(y, e?.properties);
413
+ p.setHeadersMapping(L);
414
+ const w = Object.keys(L)?.[0];
415
+ (w?.includes("id") || w?.includes("key")) && p.setIdColumn(w);
404
416
  }
405
417
  setTimeout(() => {
406
- d("mapping");
418
+ l("mapping");
407
419
  }, 100);
408
- }, N = ue({
420
+ }, $ = he({
409
421
  collection: e,
410
422
  path: r,
411
- fields: t.propertyConfigs
412
- }), L = Te(N.properties, N.propertiesOrder), O = Object.entries(L).flatMap(([g, I]) => De(g, I, 0)), J = N.propertiesOrder ?? Object.keys(N.properties);
413
- return e.collectionGroup ? null : /* @__PURE__ */ p($, { children: [
414
- /* @__PURE__ */ s(te, { title: "Import", children: /* @__PURE__ */ s(ee, { color: "primary", onClick: f, children: /* @__PURE__ */ s(Ge, {}) }) }),
415
- /* @__PURE__ */ p(
416
- ye,
423
+ fields: n.propertyConfigs
424
+ }), x = je($.properties, $.propertiesOrder), U = Object.entries(x).flatMap(([y, T]) => De(y, T, 0)), R = $.propertiesOrder ?? Object.keys($.properties);
425
+ return e.collectionGroup ? null : /* @__PURE__ */ f(M, { children: [
426
+ /* @__PURE__ */ o(te, { title: "Import", children: /* @__PURE__ */ o(ee, { color: "primary", onClick: m, children: /* @__PURE__ */ o(Xe, {}) }) }),
427
+ /* @__PURE__ */ f(
428
+ be,
417
429
  {
418
- open: i,
419
- fullWidth: l === "preview",
420
- fullHeight: l === "preview",
421
- maxWidth: l === "initial" ? "lg" : "7xl",
430
+ open: s,
431
+ fullWidth: c === "preview",
432
+ fullHeight: c === "preview",
433
+ maxWidth: c === "initial" ? "lg" : "7xl",
422
434
  children: [
423
- /* @__PURE__ */ p(be, { className: "flex flex-col gap-4 my-4", fullHeight: l === "preview", children: [
424
- l === "initial" && /* @__PURE__ */ p($, { children: [
425
- /* @__PURE__ */ s(u, { variant: "h6", children: "Import data" }),
426
- /* @__PURE__ */ s(u, { variant: "body2", children: "Upload a CSV, Excel or JSON file and map it to your existing schema" }),
427
- /* @__PURE__ */ s(ot, { onDataAdded: S })
435
+ /* @__PURE__ */ f(xe, { className: "flex flex-col gap-4 my-4", fullHeight: c === "preview", children: [
436
+ c === "initial" && /* @__PURE__ */ f(M, { children: [
437
+ /* @__PURE__ */ o(u, { variant: "h6", children: "Import data" }),
438
+ /* @__PURE__ */ o(u, { variant: "body2", children: "Upload a CSV, Excel or JSON file and map it to your existing schema" }),
439
+ /* @__PURE__ */ o(lt, { onDataAdded: A })
428
440
  ] }),
429
- l === "mapping" && /* @__PURE__ */ p($, { children: [
430
- /* @__PURE__ */ s(u, { variant: "h6", children: "Map fields" }),
431
- /* @__PURE__ */ s(
432
- it,
441
+ c === "mapping" && /* @__PURE__ */ f(M, { children: [
442
+ /* @__PURE__ */ o(u, { variant: "h6", children: "Map fields" }),
443
+ /* @__PURE__ */ o(
444
+ ot,
433
445
  {
434
- headersMapping: c.headersMapping,
435
- idColumn: c.idColumn,
436
- originProperties: c.originProperties,
437
- destinationProperties: L,
438
- onIdPropertyChanged: (g) => c.setIdColumn(g),
446
+ headersMapping: p.headersMapping,
447
+ idColumn: p.idColumn,
448
+ originProperties: p.originProperties,
449
+ destinationProperties: x,
450
+ onIdPropertyChanged: (y) => p.setIdColumn(y ?? void 0),
439
451
  buildPropertyView: ({
440
- isIdColumn: g,
441
- property: I,
442
- propertyKey: E,
443
- importKey: A
444
- }) => /* @__PURE__ */ s(
445
- dt,
452
+ isIdColumn: y,
453
+ property: T,
454
+ propertyKey: L,
455
+ importKey: w
456
+ }) => /* @__PURE__ */ o(
457
+ pt,
446
458
  {
447
- selectedPropertyKey: E ?? "",
448
- properties: L,
449
- propertiesAndLevel: O,
450
- isIdColumn: g,
459
+ selectedPropertyKey: L ?? "",
460
+ properties: x,
461
+ propertiesAndLevel: U,
462
+ isIdColumn: y,
451
463
  onIdSelected: () => {
452
- c.setIdColumn(A);
464
+ p.setIdColumn(w);
453
465
  },
454
- onPropertySelected: (w) => {
455
- const G = Object.entries(c.headersMapping).map(([b, F]) => F === w ? { [b]: null } : b === A ? { [b]: w } : { [b]: F }).reduce((b, F) => ({ ...b, ...F }), {});
456
- c.setHeadersMapping(G), w === c.idColumn && c.setIdColumn(void 0);
466
+ onPropertySelected: (B) => {
467
+ const j = Object.entries(p.headersMapping).map(([S, D]) => D === B ? { [S]: null } : S === w ? { [S]: B } : { [S]: D }).reduce((S, D) => ({ ...S, ...D }), {});
468
+ p.setHeadersMapping(j), B === p.idColumn && p.setIdColumn(void 0);
457
469
  }
458
470
  }
459
471
  )
460
472
  }
461
473
  )
462
474
  ] }),
463
- l === "preview" && /* @__PURE__ */ s(
464
- pt,
475
+ c === "preview" && /* @__PURE__ */ o(
476
+ ft,
465
477
  {
466
- importConfig: c,
467
- properties: L,
468
- propertiesOrder: J
478
+ importConfig: p,
479
+ properties: x,
480
+ propertiesOrder: R
469
481
  }
470
482
  ),
471
- l === "import_data_saving" && c && /* @__PURE__ */ s(
472
- lt,
483
+ c === "import_data_saving" && p && /* @__PURE__ */ o(
484
+ ct,
473
485
  {
474
- importConfig: c,
486
+ importConfig: p,
475
487
  collection: e,
476
488
  path: r,
477
- onImportSuccess: (g) => {
478
- m(), a.open({
489
+ onImportSuccess: (y) => {
490
+ h(), i.open({
479
491
  type: "info",
480
492
  message: "Data imported successfully"
481
493
  });
@@ -483,44 +495,44 @@ function ct({
483
495
  }
484
496
  )
485
497
  ] }),
486
- /* @__PURE__ */ p(xe, { children: [
487
- l === "mapping" && /* @__PURE__ */ s(
488
- k,
498
+ /* @__PURE__ */ f(ve, { children: [
499
+ c === "mapping" && /* @__PURE__ */ o(
500
+ E,
489
501
  {
490
- onClick: () => d("initial"),
502
+ onClick: () => l("initial"),
491
503
  variant: "text",
492
504
  children: "Back"
493
505
  }
494
506
  ),
495
- l === "preview" && /* @__PURE__ */ s(
496
- k,
507
+ c === "preview" && /* @__PURE__ */ o(
508
+ E,
497
509
  {
498
- onClick: () => d("mapping"),
510
+ onClick: () => l("mapping"),
499
511
  variant: "text",
500
512
  children: "Back"
501
513
  }
502
514
  ),
503
- /* @__PURE__ */ s(
504
- k,
515
+ /* @__PURE__ */ o(
516
+ E,
505
517
  {
506
- onClick: m,
518
+ onClick: h,
507
519
  variant: "text",
508
520
  children: "Cancel"
509
521
  }
510
522
  ),
511
- l === "mapping" && /* @__PURE__ */ s(
512
- k,
523
+ c === "mapping" && /* @__PURE__ */ o(
524
+ E,
513
525
  {
514
526
  variant: "filled",
515
- onClick: y,
527
+ onClick: g,
516
528
  children: "Next"
517
529
  }
518
530
  ),
519
- l === "preview" && /* @__PURE__ */ s(
520
- k,
531
+ c === "preview" && /* @__PURE__ */ o(
532
+ E,
521
533
  {
522
534
  variant: "filled",
523
- onClick: h,
535
+ onClick: I,
524
536
  children: "Save data"
525
537
  }
526
538
  )
@@ -530,48 +542,48 @@ function ct({
530
542
  )
531
543
  ] });
532
544
  }
533
- const W = "__internal_id__";
534
- function dt({
545
+ const V = "__internal_id__";
546
+ function pt({
535
547
  selectedPropertyKey: e,
536
548
  properties: r,
537
- onPropertySelected: n,
549
+ onPropertySelected: a,
538
550
  onIdSelected: t,
539
- propertiesAndLevel: a,
551
+ propertiesAndLevel: n,
540
552
  isIdColumn: i
541
553
  }) {
542
- const o = e ? R(r, e) : null, l = x((c) => c === W ? /* @__PURE__ */ s(u, { variant: "body2", className: "p-4", children: "Use this column as ID" }) : !c || !o ? /* @__PURE__ */ s(u, { variant: "body2", className: "p-4", children: "Do not import this property" }) : /* @__PURE__ */ s(
554
+ const s = e ? _(r, e) : null, d = b((l) => l === V ? /* @__PURE__ */ o(u, { variant: "body2", className: "p-4", children: "Use this column as ID" }) : !l || !s ? /* @__PURE__ */ o(u, { variant: "body2", className: "p-4", children: "Do not import this property" }) : /* @__PURE__ */ o(
543
555
  se,
544
556
  {
545
- propertyKey: c,
546
- property: o
557
+ propertyKey: l,
558
+ property: s
547
559
  }
548
- ), [o]), d = x((c) => {
549
- c === W ? (t(), n(null)) : n(c === "" ? null : c);
560
+ ), [s]), c = b((l) => {
561
+ l === V ? (t(), a(null)) : a(l === "__do_not_import" ? null : l);
550
562
  }, []);
551
- return /* @__PURE__ */ p(
552
- he,
563
+ return /* @__PURE__ */ f(
564
+ ge,
553
565
  {
554
- value: i ? W : e ?? void 0,
555
- onValueChange: d,
556
- renderValue: l,
566
+ value: i ? V : e ?? void 0,
567
+ onValueChange: c,
568
+ renderValue: d,
557
569
  children: [
558
- /* @__PURE__ */ s(B, { value: "", children: /* @__PURE__ */ s(u, { variant: "body2", className: "p-4", children: "Do not import this property" }) }),
559
- /* @__PURE__ */ s(B, { value: W, children: /* @__PURE__ */ s(u, { variant: "body2", className: "p-4", children: "Use this column as ID" }) }),
560
- a.map(({
561
- property: c,
562
- level: f,
570
+ /* @__PURE__ */ o(H, { value: "__do_not_import", children: /* @__PURE__ */ o(u, { variant: "body2", className: "p-4", children: "Do not import this property" }) }),
571
+ /* @__PURE__ */ o(H, { value: V, children: /* @__PURE__ */ o(u, { variant: "body2", className: "p-4", children: "Use this column as ID" }) }),
572
+ n.map(({
573
+ property: l,
574
+ level: p,
563
575
  propertyKey: m
564
- }) => /* @__PURE__ */ s(
565
- B,
576
+ }) => /* @__PURE__ */ o(
577
+ H,
566
578
  {
567
579
  value: m,
568
- disabled: c.dataType === "map",
569
- children: /* @__PURE__ */ s(
580
+ disabled: l.dataType === "map",
581
+ children: /* @__PURE__ */ o(
570
582
  se,
571
583
  {
572
584
  propertyKey: m,
573
- property: c,
574
- level: f
585
+ property: l,
586
+ level: p
575
587
  }
576
588
  )
577
589
  },
@@ -581,31 +593,31 @@ function dt({
581
593
  }
582
594
  );
583
595
  }
584
- function De(e, r, n) {
596
+ function De(e, r, a) {
585
597
  const t = [];
586
598
  return t.push({
587
599
  property: r,
588
- level: n,
600
+ level: a,
589
601
  propertyKey: e
590
- }), r.dataType === "map" && r.properties && Object.entries(r.properties).forEach(([a, i]) => {
591
- t.push(...De(`${e}.${a}`, i, n + 1));
602
+ }), r.dataType === "map" && r.properties && Object.entries(r.properties).forEach(([n, i]) => {
603
+ t.push(...De(`${e}.${n}`, i, a + 1));
592
604
  }), t;
593
605
  }
594
606
  function se({
595
607
  propertyKey: e,
596
608
  property: r,
597
- level: n = 0
609
+ level: a = 0
598
610
  }) {
599
- const { propertyConfigs: t } = V(), a = pe(r, t);
600
- return /* @__PURE__ */ p(
611
+ const { propertyConfigs: t } = X(), n = fe(r, t);
612
+ return /* @__PURE__ */ f(
601
613
  "div",
602
614
  {
603
615
  className: "flex flex-row w-full text-start items-center h-full",
604
616
  children: [
605
- new Array(n).fill(0).map((i, o) => /* @__PURE__ */ s("div", { className: _(Xe, "ml-8 border-l h-12") }, o)),
606
- /* @__PURE__ */ s("div", { className: "m-4", children: /* @__PURE__ */ s(te, { title: a?.name, children: /* @__PURE__ */ s(fe, { propertyConfig: a }) }) }),
607
- /* @__PURE__ */ p("div", { className: "flex flex-col flex-grow p-2 pl-2", children: [
608
- /* @__PURE__ */ s(
617
+ new Array(a).fill(0).map((i, s) => /* @__PURE__ */ o("div", { className: J(qe, "ml-8 border-l h-12") }, s)),
618
+ /* @__PURE__ */ o("div", { className: "m-4", children: /* @__PURE__ */ o(te, { title: n?.name, children: /* @__PURE__ */ o(me, { propertyConfig: n }) }) }),
619
+ /* @__PURE__ */ f("div", { className: "flex flex-col flex-grow p-2 pl-2", children: [
620
+ /* @__PURE__ */ o(
609
621
  u,
610
622
  {
611
623
  variant: "body1",
@@ -614,7 +626,7 @@ function se({
614
626
  children: r.name ? r.name : " "
615
627
  }
616
628
  ),
617
- /* @__PURE__ */ s(
629
+ /* @__PURE__ */ o(
618
630
  u,
619
631
  {
620
632
  className: " pr-2",
@@ -629,284 +641,295 @@ function se({
629
641
  }
630
642
  );
631
643
  }
632
- function pt({
644
+ function ft({
633
645
  importConfig: e,
634
646
  properties: r,
635
- propertiesOrder: n
647
+ propertiesOrder: a
636
648
  }) {
637
- ce(() => {
638
- const a = at(e.originProperties, r), i = e.importData.map((o) => rt(o, e.idColumn, e.headersMapping, r, a, "TEMP_PATH"));
649
+ de(() => {
650
+ const n = it(e.originProperties, r), i = e.importData.map((s) => nt(s, e.idColumn, e.headersMapping, r, n, "TEMP_PATH"));
639
651
  e.setEntities(i);
640
652
  }, []);
641
- const t = je();
642
- return /* @__PURE__ */ s(
643
- ke,
653
+ const t = Fe();
654
+ return /* @__PURE__ */ o(
655
+ Pe,
644
656
  {
645
- title: /* @__PURE__ */ p("div", { children: [
646
- /* @__PURE__ */ s(u, { variant: "subtitle2", children: "Imported data preview" }),
647
- /* @__PURE__ */ s(u, { variant: "caption", children: "Entities with the same id will be overwritten" })
657
+ title: /* @__PURE__ */ f("div", { children: [
658
+ /* @__PURE__ */ o(u, { variant: "subtitle2", children: "Imported data preview" }),
659
+ /* @__PURE__ */ o(u, { variant: "caption", children: "Entities with the same id will be overwritten" })
648
660
  ] }),
649
661
  tableController: {
650
662
  data: e.entities,
651
663
  dataLoading: !1,
652
664
  noMoreToLoad: !1
653
665
  },
654
- endAdornment: /* @__PURE__ */ s("div", { className: "h-12" }),
666
+ endAdornment: /* @__PURE__ */ o("div", { className: "h-12" }),
655
667
  filterable: !1,
656
668
  sortable: !1,
657
669
  selectionController: t,
658
- displayedColumnIds: n.map((a) => ({
659
- key: a,
670
+ displayedColumnIds: a.map((n) => ({
671
+ key: n,
660
672
  disabled: !1
661
673
  })),
662
674
  properties: r
663
675
  }
664
676
  );
665
677
  }
666
- function Se(e) {
667
- const r = {};
668
- return e.filter(Boolean).forEach((n) => {
669
- Object.keys(n).forEach((t) => {
670
- const a = n[t];
671
- typeof a == "object" && !Array.isArray(a) && Object.entries(Se([a])).forEach(([i, o]) => {
672
- r[`${t}.${i}`] = `${t}.${o}`;
673
- }), r[t] = t;
678
+ function Ne(e, r) {
679
+ const a = {};
680
+ return e.filter(Boolean).forEach((t) => {
681
+ Object.keys(t).forEach((n) => {
682
+ const i = t[n];
683
+ if (typeof i == "object" && !Array.isArray(i)) {
684
+ const s = r?.[n], d = s && "properties" in s ? s.properties : void 0, c = Ne([i], d);
685
+ Object.entries(c).forEach(([l, p]) => {
686
+ a[`${n}.${l}`] = `${n}.${p}`;
687
+ });
688
+ }
689
+ if (!r)
690
+ a[n] = n;
691
+ else if (n in r)
692
+ a[n] = n;
693
+ else {
694
+ const s = ke(n);
695
+ s in r ? a[n] = s : a[n] = n;
696
+ }
674
697
  });
675
- }), r;
698
+ }), a;
676
699
  }
677
- function ft(e, r, n, t, a, i, o) {
678
- console.debug("Downloading export", { dataLength: e.length, collection: n, exportType: i, dateExportType: o });
679
- const l = n.properties;
700
+ function mt(e, r, a, t, n, i, s) {
701
+ console.debug("Downloading export", { dataLength: e.length, collection: a, exportType: i, dateExportType: s });
702
+ const d = a.properties;
680
703
  if (i === "csv") {
681
- const d = t ? Fe(e.map((h) => h.values)) : {}, c = ht(l, a, d), f = mt(e, r, l, c, o), m = oe(c.map((h) => h.label)), y = f.map((h) => oe(h));
682
- le([m, ...y], `${n.name}.csv`, "text/csv");
704
+ const c = t ? Me(e.map((g) => g.values)) : {}, l = gt(d, n, c), p = ut(e, r, d, l, s), m = le(l.map((g) => g.label)), h = p.map((g) => le(g));
705
+ ce([m, ...h], `${a.name}.csv`, "text/csv");
683
706
  } else {
684
- const d = ut(e, r, l, o), c = JSON.stringify(d, null, 2);
685
- le([c], `${n.name}.json`, "application/json");
707
+ const c = ht(e, r, d, s), l = JSON.stringify(c, null, 2);
708
+ ce([l], `${a.name}.json`, "application/json");
686
709
  }
687
710
  }
688
- function mt(e, r, n, t, a) {
689
- const i = e.map((o) => ({
690
- id: o.id,
691
- ...re(o.values, n, "csv", a)
711
+ function ut(e, r, a, t, n) {
712
+ const i = e.map((s) => ({
713
+ id: s.id,
714
+ ...re(s.values, a, "csv", n)
692
715
  }));
693
- return r && r.forEach((o, l) => {
694
- i[l] = { ...i[l], ...o };
695
- }), i && i.map((o) => t.map((l) => Pe(o, l.key)));
716
+ return r && r.forEach((s, d) => {
717
+ i[d] = { ...i[d], ...s };
718
+ }), i && i.map((s) => t.map((d) => _e(s, d.key)));
696
719
  }
697
- function ut(e, r, n, t) {
698
- const a = e.map((i) => ({
720
+ function ht(e, r, a, t) {
721
+ const n = e.map((i) => ({
699
722
  id: i.id,
700
- ...re(i.values, n, "json", t)
723
+ ...re(i.values, a, "json", t)
701
724
  }));
702
- return r && r.forEach((i, o) => {
703
- a[o] = { ...a[o], ...i };
704
- }), a;
725
+ return r && r.forEach((i, s) => {
726
+ n[s] = { ...n[s], ...i };
727
+ }), n;
705
728
  }
706
- function ht(e, r, n) {
729
+ function gt(e, r, a) {
707
730
  const t = [
708
731
  { label: "id", key: "id" },
709
- ...Object.entries(e).flatMap(([a, i]) => n && n[a] > 1 ? Array.from(
710
- { length: n[a] },
711
- (o, l) => K(i, `${a}[${l}]`, "")
712
- ).flat() : K(i, a, ""))
732
+ ...Object.entries(e).flatMap(([n, i]) => a && a[n] > 1 ? Array.from(
733
+ { length: a[n] },
734
+ (s, d) => K(i, `${n}[${d}]`, "")
735
+ ).flat() : K(i, n, ""))
713
736
  ];
714
- return r && t.push(...r.map((a) => ({ label: a, key: a }))), t;
737
+ return r && t.push(...r.map((n) => ({ label: n, key: n }))), t;
715
738
  }
716
- function K(e, r, n = "") {
717
- const t = n ? `${n}.${r}` : r;
718
- return e.dataType === "map" && e.properties ? Object.entries(e.properties).map(([a, i]) => K(i, a, t)).flat() : [{ label: t, key: t }];
739
+ function K(e, r, a = "") {
740
+ const t = a ? `${a}.${r}` : r;
741
+ return e.dataType === "map" && e.properties ? Object.entries(e.properties).map(([n, i]) => K(i, n, t)).flat() : [{ label: t, key: t }];
719
742
  }
720
- function z(e, r, n, t) {
721
- let a;
743
+ function G(e, r, a, t) {
744
+ let n;
722
745
  if (r.dataType === "map" && r.properties)
723
- a = re(e, r.properties, n, t);
746
+ n = re(e, r.properties, a, t);
724
747
  else if (r.dataType === "array")
725
- r.of && Array.isArray(e) ? Array.isArray(r.of) ? a = r.of.map((i, o) => z(e[o], i, n, t)) : r.of.dataType === "map" ? a = n === "csv" ? e.map((i) => JSON.stringify(i)) : e.map((i) => z(i, r.of, n, t)) : a = e.map((i) => z(i, r.of, n, t)) : a = e;
726
- else if (r.dataType === "reference" && e.isEntityReference && e.isEntityReference()) {
748
+ r.of && Array.isArray(e) ? Array.isArray(r.of) ? n = r.of.map((i, s) => G(e[s], i, a, t)) : r.of.dataType === "map" ? n = a === "csv" ? e.map((i) => JSON.stringify(i)) : e.map((i) => G(i, r.of, a, t)) : n = e.map((i) => G(i, r.of, a, t)) : n = e;
749
+ else if (r.dataType === "reference" && e && e.isEntityReference && e.isEntityReference()) {
727
750
  const i = e || void 0;
728
- a = i ? i.pathWithId : null;
751
+ n = i ? i.pathWithId : null;
729
752
  } else
730
- r.dataType === "date" && e instanceof Date ? a = e ? t === "timestamp" ? e.getTime() : e.toISOString() : null : a = e;
731
- return a;
753
+ r.dataType === "date" && e instanceof Date ? n = e ? t === "timestamp" ? e.getTime() : e.toISOString() : null : n = e;
754
+ return n;
732
755
  }
733
- function re(e, r, n, t) {
734
- const a = Object.entries(r).map(([i, o]) => {
735
- const l = e && e[i], d = z(l, o, n, t);
736
- return d === void 0 ? {} : { [i]: d };
737
- }).reduce((i, o) => ({ ...i, ...o }), {});
738
- return { ...e, ...a };
756
+ function re(e, r, a, t) {
757
+ const n = Object.entries(r).map(([i, s]) => {
758
+ const d = e && e[i], c = G(d, s, a, t);
759
+ return c === void 0 ? {} : { [i]: c };
760
+ }).reduce((i, s) => ({ ...i, ...s }), {});
761
+ return { ...e, ...n };
739
762
  }
740
- function oe(e) {
763
+ function le(e) {
741
764
  return e.map((r) => r == null ? "" : Array.isArray(r) ? '"' + JSON.stringify(r).replaceAll('"', '\\"') + '"' : '"' + String(r).replaceAll('"', '""') + '"').join(",") + `\r
742
765
  `;
743
766
  }
744
- function le(e, r, n) {
745
- const t = new Blob(e, { type: n }), a = URL.createObjectURL(t), i = document.createElement("a");
746
- i.href = a, i.setAttribute("download", r), i.click();
767
+ function ce(e, r, a) {
768
+ const t = new Blob(e, { type: a }), n = URL.createObjectURL(t), i = document.createElement("a");
769
+ i.href = n, i.setAttribute("download", r), i.click();
747
770
  }
748
- const gt = 500;
749
- function yt({
771
+ const yt = 500;
772
+ function bt({
750
773
  collection: e,
751
774
  path: r,
752
- collectionEntitiesCount: n,
775
+ collectionEntitiesCount: a,
753
776
  exportAllowed: t,
754
- notAllowedView: a
777
+ notAllowedView: n
755
778
  }) {
756
- const i = V(), o = typeof e.exportable == "object" ? e.exportable : void 0, l = C.useRef(/* @__PURE__ */ new Date()), [d, c] = C.useState(!0), [f, m] = C.useState("csv"), [y, h] = C.useState("string"), S = Me(), N = me(), O = $e().resolveAliasesFrom(r), J = !t || t({
757
- collectionEntitiesCount: n,
758
- path: O,
779
+ const i = X(), s = typeof e.exportable == "object" ? e.exportable : void 0, d = C.useRef(/* @__PURE__ */ new Date()), [c, l] = C.useState(!0), [p, m] = C.useState("csv"), [h, g] = C.useState("string"), I = $e(), A = ue(), x = Re().resolveAliasesFrom(r), U = !t || t({
780
+ collectionEntitiesCount: a,
781
+ path: x,
759
782
  collection: e
760
- }), g = C.useMemo(() => ue({
783
+ }), R = C.useMemo(() => he({
761
784
  collection: e,
762
- path: O,
785
+ path: x,
763
786
  fields: i.propertyConfigs
764
- }), [e, O]), [I, E] = C.useState(!1), [A, w] = C.useState(), [G, b] = C.useState(!1), F = x(() => {
765
- b(!0);
766
- }, [b]), X = x(() => {
767
- b(!1);
768
- }, [b]), ne = x(async (P) => {
769
- const H = o?.additionalFields, D = g.additionalFields, q = H ? await Promise.all(P.map(async (T) => (await Promise.all(H.map(async (v) => ({
787
+ }), [e, x]), [y, T] = C.useState(!1), [L, w] = C.useState(), [B, j] = C.useState(!1), S = b(() => {
788
+ j(!0);
789
+ }, [j]), D = b(() => {
790
+ j(!1);
791
+ }, [j]), ne = b(async (P) => {
792
+ const W = s?.additionalFields, N = R.additionalFields, q = W ? await Promise.all(P.map(async (F) => (await Promise.all(W.map(async (v) => ({
770
793
  [v.key]: await v.builder({
771
- entity: T,
772
- context: S
794
+ entity: F,
795
+ context: I
773
796
  })
774
- })))).reduce((v, Y) => ({ ...v, ...Y }), {}))) : [], Q = D ? await Promise.all(P.map(async (T) => (await Promise.all(D.map(async (v) => v.value ? {
797
+ })))).reduce((v, Y) => ({ ...v, ...Y }), {}))) : [], Q = N ? await Promise.all(P.map(async (F) => (await Promise.all(N.map(async (v) => v.value ? {
775
798
  [v.key]: await v.value({
776
- entity: T,
777
- context: S
799
+ entity: F,
800
+ context: I
778
801
  })
779
802
  } : {}))).reduce((v, Y) => ({ ...v, ...Y }), {}))) : [];
780
803
  return [...q, ...Q];
781
- }, [o?.additionalFields]), ae = x(async (P, H) => {
782
- E(!0), N.fetchCollection({
783
- path: O,
804
+ }, [s?.additionalFields]), ae = b(async (P, W) => {
805
+ T(!0), A.fetchCollection({
806
+ path: x,
784
807
  collection: P
785
- }).then(async (D) => {
808
+ }).then(async (N) => {
786
809
  w(void 0);
787
- const q = await ne(D), Q = [
788
- ...H?.additionalFields?.map((T) => T.key) ?? [],
789
- ...P.additionalFields?.map((T) => T.key) ?? []
810
+ const q = await ne(N), Q = [
811
+ ...W?.additionalFields?.map((F) => F.key) ?? [],
812
+ ...P.additionalFields?.map((F) => F.key) ?? []
790
813
  ];
791
- ft(D, q, P, d, Q, f, y);
792
- }).catch((D) => {
793
- console.error("Error loading export data", D), w(D);
794
- }).finally(() => E(!1));
795
- }, [N, O, ne, d, f, y]), Ne = x(() => {
796
- ae(g, o), X();
797
- }, [ae, g, o, X]);
798
- return /* @__PURE__ */ p($, { children: [
799
- /* @__PURE__ */ s(te, { title: "Export", children: /* @__PURE__ */ s(ee, { color: "primary", onClick: F, children: /* @__PURE__ */ s(qe, {}) }) }),
800
- /* @__PURE__ */ p(
801
- ye,
814
+ mt(N, q, P, c, Q, p, h);
815
+ }).catch((N) => {
816
+ console.error("Error loading export data", N), w(N);
817
+ }).finally(() => T(!1));
818
+ }, [A, x, ne, c, p, h]), Oe = b(() => {
819
+ ae(R, s), D();
820
+ }, [ae, R, s, D]);
821
+ return /* @__PURE__ */ f(M, { children: [
822
+ /* @__PURE__ */ o(te, { title: "Export", children: /* @__PURE__ */ o(ee, { color: "primary", onClick: S, children: /* @__PURE__ */ o(Qe, {}) }) }),
823
+ /* @__PURE__ */ f(
824
+ be,
802
825
  {
803
- open: G,
804
- onOpenChange: b,
826
+ open: B,
827
+ onOpenChange: j,
805
828
  maxWidth: "xl",
806
829
  children: [
807
- /* @__PURE__ */ p(be, { className: "flex flex-col gap-4 my-4", children: [
808
- /* @__PURE__ */ s(u, { variant: "h6", children: "Export data" }),
809
- /* @__PURE__ */ s("div", { children: "Download the the content of this table as a CSV" }),
810
- n > gt && /* @__PURE__ */ s(Qe, { color: "warning", children: /* @__PURE__ */ p("div", { children: [
830
+ /* @__PURE__ */ f(xe, { className: "flex flex-col gap-4 my-4", children: [
831
+ /* @__PURE__ */ o(u, { variant: "h6", children: "Export data" }),
832
+ /* @__PURE__ */ o("div", { children: "Download the the content of this table as a CSV" }),
833
+ a > yt && /* @__PURE__ */ o(Ye, { color: "warning", children: /* @__PURE__ */ f("div", { children: [
811
834
  "This collections has a large number of documents (",
812
- n,
835
+ a,
813
836
  ")."
814
837
  ] }) }),
815
- /* @__PURE__ */ p("div", { className: "flex flex-row gap-4", children: [
816
- /* @__PURE__ */ p("div", { className: "p-4 flex flex-col", children: [
817
- /* @__PURE__ */ p("div", { className: "flex items-center", children: [
818
- /* @__PURE__ */ s(
838
+ /* @__PURE__ */ f("div", { className: "flex flex-row gap-4", children: [
839
+ /* @__PURE__ */ f("div", { className: "p-4 flex flex-col", children: [
840
+ /* @__PURE__ */ f("div", { className: "flex items-center", children: [
841
+ /* @__PURE__ */ o(
819
842
  "input",
820
843
  {
821
844
  id: "radio-csv",
822
845
  type: "radio",
823
846
  value: "csv",
824
847
  name: "exportType",
825
- checked: f === "csv",
848
+ checked: p === "csv",
826
849
  onChange: () => m("csv"),
827
- className: _(U, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
850
+ className: J(z, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
828
851
  }
829
852
  ),
830
- /* @__PURE__ */ s(
853
+ /* @__PURE__ */ o(
831
854
  "label",
832
855
  {
833
856
  htmlFor: "radio-csv",
834
- className: "p-2 text-sm font-medium text-gray-900 dark:text-gray-300",
857
+ className: "p-2 text-sm font-medium text-gray-900 dark:text-slate-300",
835
858
  children: "CSV"
836
859
  }
837
860
  )
838
861
  ] }),
839
- /* @__PURE__ */ p("div", { className: "flex items-center", children: [
840
- /* @__PURE__ */ s(
862
+ /* @__PURE__ */ f("div", { className: "flex items-center", children: [
863
+ /* @__PURE__ */ o(
841
864
  "input",
842
865
  {
843
866
  id: "radio-json",
844
867
  type: "radio",
845
868
  value: "json",
846
869
  name: "exportType",
847
- checked: f === "json",
870
+ checked: p === "json",
848
871
  onChange: () => m("json"),
849
- className: _(U, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
872
+ className: J(z, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
850
873
  }
851
874
  ),
852
- /* @__PURE__ */ s(
875
+ /* @__PURE__ */ o(
853
876
  "label",
854
877
  {
855
878
  htmlFor: "radio-json",
856
- className: "p-2 text-sm font-medium text-gray-900 dark:text-gray-300",
879
+ className: "p-2 text-sm font-medium text-gray-900 dark:text-slate-300",
857
880
  children: "JSON"
858
881
  }
859
882
  )
860
883
  ] })
861
884
  ] }),
862
- /* @__PURE__ */ p("div", { className: "p-4 flex flex-col", children: [
863
- /* @__PURE__ */ p("div", { className: "flex items-center", children: [
864
- /* @__PURE__ */ s(
885
+ /* @__PURE__ */ f("div", { className: "p-4 flex flex-col", children: [
886
+ /* @__PURE__ */ f("div", { className: "flex items-center", children: [
887
+ /* @__PURE__ */ o(
865
888
  "input",
866
889
  {
867
890
  id: "radio-timestamp",
868
891
  type: "radio",
869
892
  value: "timestamp",
870
893
  name: "dateExportType",
871
- checked: y === "timestamp",
872
- onChange: () => h("timestamp"),
873
- className: _(U, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
894
+ checked: h === "timestamp",
895
+ onChange: () => g("timestamp"),
896
+ className: J(z, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
874
897
  }
875
898
  ),
876
- /* @__PURE__ */ p(
899
+ /* @__PURE__ */ f(
877
900
  "label",
878
901
  {
879
902
  htmlFor: "radio-timestamp",
880
- className: "p-2 text-sm font-medium text-gray-900 dark:text-gray-300",
903
+ className: "p-2 text-sm font-medium text-gray-900 dark:text-slate-300",
881
904
  children: [
882
905
  "Dates as timestamps (",
883
- l.current.getTime(),
906
+ d.current.getTime(),
884
907
  ")"
885
908
  ]
886
909
  }
887
910
  )
888
911
  ] }),
889
- /* @__PURE__ */ p("div", { className: "flex items-center", children: [
890
- /* @__PURE__ */ s(
912
+ /* @__PURE__ */ f("div", { className: "flex items-center", children: [
913
+ /* @__PURE__ */ o(
891
914
  "input",
892
915
  {
893
916
  id: "radio-string",
894
917
  type: "radio",
895
918
  value: "string",
896
919
  name: "dateExportType",
897
- checked: y === "string",
898
- onChange: () => h("string"),
899
- className: _(U, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
920
+ checked: h === "string",
921
+ onChange: () => g("string"),
922
+ className: J(z, "w-4 text-primary-dark bg-gray-100 border-gray-300 dark:bg-gray-700 dark:border-gray-600")
900
923
  }
901
924
  ),
902
- /* @__PURE__ */ p(
925
+ /* @__PURE__ */ f(
903
926
  "label",
904
927
  {
905
928
  htmlFor: "radio-string",
906
- className: "p-2 text-sm font-medium text-gray-900 dark:text-gray-300",
929
+ className: "p-2 text-sm font-medium text-gray-900 dark:text-slate-300",
907
930
  children: [
908
931
  "Dates as strings (",
909
- l.current.toISOString(),
932
+ d.current.toISOString(),
910
933
  ")"
911
934
  ]
912
935
  }
@@ -914,34 +937,34 @@ function yt({
914
937
  ] })
915
938
  ] })
916
939
  ] }),
917
- /* @__PURE__ */ s(
918
- Ye,
940
+ /* @__PURE__ */ o(
941
+ Ze,
919
942
  {
920
943
  size: "small",
921
- disabled: f !== "csv",
922
- value: d,
923
- onValueChange: c,
944
+ disabled: p !== "csv",
945
+ value: c,
946
+ onValueChange: l,
924
947
  label: "Flatten arrays"
925
948
  }
926
949
  ),
927
- !J && a
950
+ !U && n
928
951
  ] }),
929
- /* @__PURE__ */ p(xe, { children: [
930
- I && /* @__PURE__ */ s(ge, { size: "small" }),
931
- /* @__PURE__ */ s(
932
- k,
952
+ /* @__PURE__ */ f(ve, { children: [
953
+ y && /* @__PURE__ */ o(ye, { size: "small" }),
954
+ /* @__PURE__ */ o(
955
+ E,
933
956
  {
934
- onClick: X,
957
+ onClick: D,
935
958
  variant: "text",
936
959
  children: "Cancel"
937
960
  }
938
961
  ),
939
- /* @__PURE__ */ s(
940
- k,
962
+ /* @__PURE__ */ o(
963
+ E,
941
964
  {
942
965
  variant: "filled",
943
- onClick: Ne,
944
- disabled: I || !J,
966
+ onClick: Oe,
967
+ disabled: y || !U,
945
968
  children: "Download"
946
969
  }
947
970
  )
@@ -951,28 +974,28 @@ function yt({
951
974
  )
952
975
  ] });
953
976
  }
954
- function St(e) {
977
+ function Nt(e) {
955
978
  return Ie(() => ({
956
979
  name: "Import/Export",
957
- collections: {
958
- CollectionActions: [ct, yt],
980
+ collectionView: {
981
+ CollectionActions: [dt, bt],
959
982
  collectionActionsProps: e
960
983
  }
961
984
  }), [e]);
962
985
  }
963
986
  export {
964
- it as DataNewPropertiesMapping,
965
- ot as ImportFileUpload,
987
+ ot as DataNewPropertiesMapping,
988
+ lt as ImportFileUpload,
966
989
  Dt as ImportNewPropertyFieldPreview,
967
- lt as ImportSaveInProgress,
968
- rt as convertDataToEntity,
969
- et as convertFileToJson,
970
- Ce as flattenEntry,
971
- nt as getInferenceType,
972
- at as getPropertiesMapping,
990
+ ct as ImportSaveInProgress,
991
+ nt as convertDataToEntity,
992
+ tt as convertFileToJson,
993
+ we as flattenEntry,
994
+ at as getInferenceType,
995
+ it as getPropertiesMapping,
973
996
  Z as processValueMapping,
974
- ve as unflattenObject,
975
- Ke as useImportConfig,
976
- St as useImportExportPlugin
997
+ Ce as unflattenObject,
998
+ et as useImportConfig,
999
+ Nt as useImportExportPlugin
977
1000
  };
978
1001
  //# sourceMappingURL=index.es.js.map