@updog/data-editor-wc 0.1.50 → 0.1.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/index.css +1 -1
  2. package/index.d.ts +6 -0
  3. package/index.js +889 -636
  4. package/package.json +1 -1
package/index.js CHANGED
@@ -8413,6 +8413,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr
8413
8413
  steps: {
8414
8414
  selectFiles: "Select files",
8415
8415
  sheetSelection: "Select sheet",
8416
+ headerSelection: "Header selection",
8416
8417
  matchColumns: "Match columns",
8417
8418
  matchValues: "Match values",
8418
8419
  primaryKey: "Primary key"
@@ -8432,12 +8433,15 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr
8432
8433
  emptyData: "The source returned no data",
8433
8434
  fetchError: "Failed to load data"
8434
8435
  },
8436
+ headerSelection: { noHeaderLabel: "My data has no header row" },
8435
8437
  matchColumns: {
8436
8438
  banner: "Some columns could not be automatically matched",
8437
8439
  importedColumns: "Imported columns",
8438
8440
  matchedCount: "{{matched}}/{{total}} matched",
8439
8441
  targetColumns: "Target columns",
8440
8442
  selectColumnPlaceholder: "Select column",
8443
+ syntheticColumn: "C{{index}}",
8444
+ syntheticColumnValue: "C{{index}}: {{value}}",
8441
8445
  bestMatch: "Best match",
8442
8446
  createColumn: "Create column",
8443
8447
  createColumnNameLabel: "Column name",
@@ -33311,82 +33315,94 @@ function $_(e, t, n) {
33311
33315
  }
33312
33316
  //#endregion
33313
33317
  //#region src/components/PreviewTable/index.tsx
33314
- var ev = 15, tv = { width: 1 }, nv = { height: 1 }, rv = ({ headers: e, rows: t, lockedColumns: n, displayRows: r = ev, blur: i = !0, scrollbars: a = !0, className: o }) => {
33315
- let s = e.length, c = Array.from({ length: r }, (e, n) => t[n]), l = a === !0, u = a === !0 || a === "empty", d = (0, y.useRef)(null), f = (0, y.useRef)(null), p = (0, y.useRef)(null), m = (0, y.useRef)(null), h = (0, y.useRef)(null), g = (0, y.useRef)(null), [_, v] = (0, y.useState)(!1), [b, x] = (0, y.useState)(!1);
33318
+ var ev = 15, tv = { width: 1 }, nv = { height: 1 }, rv = ({ headers: e, rows: t, lockedColumns: n, displayRows: r = ev, blur: i = !0, scrollbars: a = !0, selectedRow: o, onSelectRow: s, className: c }) => {
33319
+ let l = e ? e.length : Math.max(0, ...t.map((e) => e?.length ?? 0)), u = Array.from({ length: r }, (e, n) => t[n]), d = a === !0, f = a === !0 || a === "empty", p = (0, y.useRef)(null), m = (0, y.useRef)(null), h = (0, y.useRef)(null), g = (0, y.useRef)(null), _ = (0, y.useRef)(null), v = (0, y.useRef)(null), [b, x] = (0, y.useState)(!1), [S, C] = (0, y.useState)(!1);
33316
33320
  (0, y.useEffect)(() => {
33317
- if (!l) return;
33318
- let e = d.current, t = p.current, n = m.current, r = h.current, i = g.current;
33321
+ if (!d) return;
33322
+ let e = p.current, t = h.current, n = g.current, r = _.current, i = v.current;
33319
33323
  if (!e) return;
33320
33324
  let a = () => {
33321
33325
  let a = e.scrollHeight - e.clientHeight, o = e.scrollWidth - e.clientWidth;
33322
- t && r && (r.style.height = a + t.clientHeight + "px"), n && i && (i.style.width = o + n.clientWidth + "px"), x(a > 0), v(o > 0);
33326
+ t && r && (r.style.height = a + t.clientHeight + "px"), n && i && (i.style.width = o + n.clientWidth + "px"), C(a > 0), x(o > 0);
33323
33327
  }, o = new ResizeObserver(a);
33324
- o.observe(e), f.current && o.observe(f.current), a();
33328
+ o.observe(e), m.current && o.observe(m.current), a();
33325
33329
  let s = (e) => {
33326
33330
  e.preventDefault(), t && (t.scrollTop += e.deltaY), n && (n.scrollLeft += e.deltaX);
33327
33331
  };
33328
33332
  e.addEventListener("wheel", s, { passive: !1 });
33329
33333
  let c = () => {
33330
33334
  t && (e.scrollTop = t.scrollTop);
33331
- }, u = () => {
33335
+ }, l = () => {
33332
33336
  n && (e.scrollLeft = n.scrollLeft);
33333
33337
  };
33334
- return t?.addEventListener("scroll", c, { passive: !0 }), n?.addEventListener("scroll", u, { passive: !0 }), () => {
33335
- o.disconnect(), e.removeEventListener("wheel", s), t?.removeEventListener("scroll", c), n?.removeEventListener("scroll", u);
33338
+ return t?.addEventListener("scroll", c, { passive: !0 }), n?.addEventListener("scroll", l, { passive: !0 }), () => {
33339
+ o.disconnect(), e.removeEventListener("wheel", s), t?.removeEventListener("scroll", c), n?.removeEventListener("scroll", l);
33336
33340
  };
33337
- }, [l]);
33338
- let S = (0, y.useMemo)(() => ({ gridTemplateColumns: `var(--marker-width) repeat(${Math.max(s, 1)}, auto)` }), [s]);
33341
+ }, [d]);
33342
+ let w = (0, y.useCallback)((e) => {
33343
+ s?.(Number(e.currentTarget.dataset.rowIndex));
33344
+ }, [s]), T = (0, y.useCallback)((e) => {
33345
+ e.key !== "Enter" && e.key !== " " || (e.preventDefault(), s?.(Number(e.currentTarget.dataset.rowIndex)));
33346
+ }, [s]), E = (0, y.useMemo)(() => ({ gridTemplateColumns: `var(--marker-width) repeat(${Math.max(l, 1)}, auto)` }), [l]);
33339
33347
  return /* @__PURE__ */ (0, O.jsxs)("div", {
33340
- className: N("updog__preview-table", a === !1 ? "updog__preview-table--scrollbars-none" : a === "empty" ? "updog__preview-table--scrollbars-empty" : "updog__preview-table--scrollbars-show", l && !_ && "updog__preview-table--no-hscroll", l && !b && "updog__preview-table--no-vscroll", o),
33348
+ className: N("updog__preview-table", a === !1 ? "updog__preview-table--scrollbars-none" : a === "empty" ? "updog__preview-table--scrollbars-empty" : "updog__preview-table--scrollbars-show", d && !b && "updog__preview-table--no-hscroll", d && !S && "updog__preview-table--no-vscroll", c),
33341
33349
  children: [
33342
33350
  /* @__PURE__ */ (0, O.jsx)("div", {
33343
33351
  className: "updog__preview-table__canvas-wrap",
33344
33352
  children: /* @__PURE__ */ (0, O.jsx)("div", {
33345
33353
  className: "updog__preview-table__scroll",
33346
- ref: d,
33354
+ ref: p,
33347
33355
  children: /* @__PURE__ */ (0, O.jsxs)("div", {
33348
33356
  className: "updog__preview-table__grid",
33349
- style: S,
33350
- ref: f,
33351
- children: [
33352
- /* @__PURE__ */ (0, O.jsx)("div", { className: "updog__preview-table-marker" }),
33353
- s === 0 ? /* @__PURE__ */ (0, O.jsx)("div", { className: N("updog__preview-table-th", "updog__preview-table-cell--last-col") }) : e.map((e, t) => /* @__PURE__ */ (0, O.jsxs)("div", {
33354
- className: N("updog__preview-table-th", t === s - 1 && "updog__preview-table-cell--last-col"),
33355
- children: [/* @__PURE__ */ (0, O.jsx)("span", {
33356
- className: "updog__preview-table-th__label",
33357
- children: e
33358
- }), n?.[t] && /* @__PURE__ */ (0, O.jsx)(we, {
33359
- size: "0.875rem",
33360
- className: "updog__preview-table-th__lock-icon"
33361
- })]
33362
- }, t)),
33363
- c.map((t, n) => /* @__PURE__ */ (0, O.jsxs)(y.Fragment, { children: [/* @__PURE__ */ (0, O.jsx)("div", {
33364
- className: N("updog__preview-table-marker", n === r - 1 && "updog__preview-table-cell--last-row"),
33365
- children: n + 1
33366
- }), s === 0 ? /* @__PURE__ */ (0, O.jsx)("div", { className: N("updog__preview-table-td", "updog__preview-table-cell--last-col", n === r - 1 && "updog__preview-table-cell--last-row") }) : e.map((e, i) => /* @__PURE__ */ (0, O.jsx)("div", {
33367
- className: N("updog__preview-table-td", i === s - 1 && "updog__preview-table-cell--last-col", n === r - 1 && "updog__preview-table-cell--last-row"),
33368
- children: t?.[i] ?? ""
33369
- }, i))] }, n))
33370
- ]
33357
+ style: E,
33358
+ ref: m,
33359
+ children: [e !== void 0 && /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [/* @__PURE__ */ (0, O.jsx)("div", { className: "updog__preview-table-marker" }), l === 0 ? /* @__PURE__ */ (0, O.jsx)("div", { className: N("updog__preview-table-th", "updog__preview-table-cell--last-col") }) : e.map((e, t) => /* @__PURE__ */ (0, O.jsxs)("div", {
33360
+ className: N("updog__preview-table-th", t === l - 1 && "updog__preview-table-cell--last-col"),
33361
+ children: [/* @__PURE__ */ (0, O.jsx)("span", {
33362
+ className: "updog__preview-table-th__label",
33363
+ children: e
33364
+ }), n?.[t] && /* @__PURE__ */ (0, O.jsx)(we, {
33365
+ size: "0.875rem",
33366
+ className: "updog__preview-table-th__lock-icon"
33367
+ })]
33368
+ }, t))] }), u.map((e, t) => {
33369
+ let n = t === r - 1, i = !!s && e !== void 0, a = o === t;
33370
+ return /* @__PURE__ */ (0, O.jsxs)("div", {
33371
+ className: N("updog__preview-table-row", i && "updog__preview-table-row--interactive", a && "updog__preview-table-row--selected"),
33372
+ "data-row-index": t,
33373
+ role: i ? "row" : void 0,
33374
+ tabIndex: i ? 0 : void 0,
33375
+ "aria-selected": i ? a : void 0,
33376
+ onClick: i ? w : void 0,
33377
+ onKeyDown: i ? T : void 0,
33378
+ children: [/* @__PURE__ */ (0, O.jsx)("div", {
33379
+ className: N("updog__preview-table-marker", n && "updog__preview-table-cell--last-row"),
33380
+ children: t + 1
33381
+ }), l === 0 ? /* @__PURE__ */ (0, O.jsx)("div", { className: N("updog__preview-table-td", "updog__preview-table-cell--last-col", n && "updog__preview-table-cell--last-row") }) : Array.from({ length: l }, (t, r) => /* @__PURE__ */ (0, O.jsx)("div", {
33382
+ className: N("updog__preview-table-td", r === l - 1 && "updog__preview-table-cell--last-col", n && "updog__preview-table-cell--last-row"),
33383
+ children: e?.[r] ?? ""
33384
+ }, r))]
33385
+ }, t);
33386
+ })]
33371
33387
  })
33372
33388
  })
33373
33389
  }),
33374
- u && /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [
33390
+ f && /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [
33375
33391
  /* @__PURE__ */ (0, O.jsx)("div", {
33376
33392
  className: "updog__preview-table__vtrack",
33377
- ref: p,
33393
+ ref: h,
33378
33394
  tabIndex: -1,
33379
33395
  children: /* @__PURE__ */ (0, O.jsx)("div", {
33380
- ref: h,
33396
+ ref: _,
33381
33397
  style: tv
33382
33398
  })
33383
33399
  }),
33384
33400
  /* @__PURE__ */ (0, O.jsx)("div", {
33385
33401
  className: "updog__preview-table__htrack",
33386
- ref: m,
33402
+ ref: g,
33387
33403
  tabIndex: -1,
33388
33404
  children: /* @__PURE__ */ (0, O.jsx)("div", {
33389
- ref: g,
33405
+ ref: v,
33390
33406
  style: nv
33391
33407
  })
33392
33408
  }),
@@ -45799,7 +45815,7 @@ var gj = ({ text: e, onSelect: t }) => /* @__PURE__ */ (0, O.jsx)(ot, {
45799
45815
  return this.state.hasError ? /* @__PURE__ */ (0, O.jsx)(Dj, { error: Oj }) : this.props.children;
45800
45816
  }
45801
45817
  }, Aj = ({ leftSlot: e }) => {
45802
- let { variant: t, setShowUploader: n } = th(), { t: r } = j(), { isFirstStep: i, isLastStep: a, nextStep: o, prevStep: s, onImport: c, parsedCsv: l, xlsxFile: u, isParsing: d, isImporting: f, steps: p, activeStepIndex: m, selectedSheet: h, handleSheetConfirmed: g, remoteSourceLoading: _ } = TN(), v = i && t === "editor", b = (0, y.useCallback)(() => {
45818
+ let { variant: t, setShowUploader: n } = th(), { t: r } = j(), { isFirstStep: i, isLastStep: a, nextStep: o, prevStep: s, onImport: c, parsedCsv: l, xlsxFile: u, isParsing: d, isImporting: f, steps: p, activeStepIndex: m, selectedSheet: h, handleSheetConfirmed: g, remoteSourceLoading: _ } = XN(), v = i && t === "editor", b = (0, y.useCallback)(() => {
45803
45819
  n(!1);
45804
45820
  }, [n]), x = p[m]?.id === "sheet-selection", S = (0, y.useCallback)(() => {
45805
45821
  a ? c() : x ? g() : o();
@@ -46568,15 +46584,17 @@ var gj = ({ text: e, onSelect: t }) => /* @__PURE__ */ (0, O.jsx)(ot, {
46568
46584
  }
46569
46585
  return i;
46570
46586
  }, Qj = () => {
46571
- let { columns: e, enableCreateColumn: t, synonyms: n } = th(), { t: r } = j(), { parsedCsv: i, columnMapping: a, updateColumnMapping: o, pendingColumns: s, setPendingColumns: c } = TN(), [l, u] = (0, y.useState)(null), d = (0, y.useRef)(null), f = i?.headers ?? [], p = (0, y.useRef)(null);
46572
- p.current === null && (p.current = Zj(f, e, n));
46573
- let m = (0, y.useCallback)((e, t) => {
46587
+ let { columns: e, enableCreateColumn: t, synonyms: n } = th(), { t: r } = j(), { headers: i, columnMapping: a, updateColumnMapping: o, pendingColumns: s, setPendingColumns: c } = XN(), [l, u] = (0, y.useState)(null), d = (0, y.useRef)(null), f = (0, y.useMemo)(() => Zj(i, e, n), [
46588
+ i,
46589
+ e,
46590
+ n
46591
+ ]), p = (0, y.useCallback)((e, t) => {
46574
46592
  if (t === "action:create") {
46575
46593
  d.current = e, u({ title: e });
46576
46594
  return;
46577
46595
  }
46578
46596
  o(e, t);
46579
- }, [o]), h = (0, y.useCallback)((e) => {
46597
+ }, [o]), m = (0, y.useCallback)((e) => {
46580
46598
  if (d.current === null) return;
46581
46599
  let t = Math.random().toString(36).slice(2, 7), n = `${ad}${e.title}-${t}`;
46582
46600
  c((t) => [...t, {
@@ -46584,59 +46602,64 @@ var gj = ({ text: e, onSelect: t }) => /* @__PURE__ */ (0, O.jsx)(ot, {
46584
46602
  id: n,
46585
46603
  size: 150
46586
46604
  }]), o(d.current, n), d.current = null, u(null);
46587
- }, [o, c]), g = (0, y.useCallback)(() => {
46605
+ }, [o, c]), h = (0, y.useCallback)(() => {
46588
46606
  d.current = null, u(null);
46589
- }, []), _ = (0, y.useMemo)(() => [...e.map((e) => e.title), ...s.map((e) => e.title)], [e, s]), v = (0, y.useMemo)(() => {
46607
+ }, []), g = (0, y.useMemo)(() => [...e.map((e) => e.title), ...s.map((e) => e.title)], [e, s]), _ = (0, y.useMemo)(() => {
46590
46608
  let n = {
46591
46609
  text: r("dataEditor.uploader.matchColumns.bestMatch"),
46592
46610
  color: "green"
46593
- }, i = {
46611
+ }, a = {
46594
46612
  text: r("dataEditor.uploader.matchColumns.newColumnTag"),
46595
46613
  color: "blue"
46596
- }, a = r("dataEditor.uploader.matchColumns.createColumn");
46597
- return Object.fromEntries(f.map((r) => {
46598
- let o = p.current?.[r], c = e.map((e) => ({
46614
+ }, o = r("dataEditor.uploader.matchColumns.createColumn");
46615
+ return Object.fromEntries(i.map((r) => {
46616
+ let i = f[r], c = e.map((e) => ({
46599
46617
  id: e.id,
46600
46618
  text: e.title,
46601
- ...e.id === o && { tag: n }
46619
+ ...e.id === i && { tag: n }
46602
46620
  }));
46603
46621
  for (let e of s) c.push({
46604
46622
  id: e.id,
46605
46623
  text: e.title,
46606
- tag: i
46624
+ tag: a
46607
46625
  });
46608
46626
  return t && c.push({
46609
46627
  id: `${r}_d`,
46610
46628
  type: "divider"
46611
46629
  }, {
46612
46630
  id: qj,
46613
- text: a,
46631
+ text: o,
46614
46632
  icon: /* @__PURE__ */ (0, O.jsx)(Ae, { size: "1rem" })
46615
46633
  }), [r, c];
46616
46634
  }));
46617
46635
  }, [
46618
- f,
46636
+ i,
46619
46637
  e,
46620
46638
  s,
46621
46639
  r,
46622
- t
46623
- ]), b = (0, y.useMemo)(() => f.filter((e) => a[e]).length, [f, a]);
46640
+ t,
46641
+ f
46642
+ ]), v = (0, y.useMemo)(() => i.filter((e) => a[e]).length, [i, a]);
46624
46643
  return {
46625
- headers: f,
46626
- matchedCount: b,
46627
- allMatched: b === f.length,
46644
+ headers: i,
46645
+ matchedCount: v,
46646
+ allMatched: v === i.length,
46628
46647
  placeholder: r("dataEditor.uploader.matchColumns.selectColumnPlaceholder"),
46629
- existingNames: _,
46648
+ existingNames: g,
46630
46649
  createModalValues: l,
46631
46650
  getRowData: (0, y.useCallback)((e) => ({
46632
46651
  mappedValue: a[e],
46633
- options: v[e],
46634
- autoMatchId: p.current?.[e]
46635
- }), [a, v]),
46636
- onSelectChange: m,
46652
+ options: _[e],
46653
+ autoMatchId: f[e]
46654
+ }), [
46655
+ a,
46656
+ _,
46657
+ f
46658
+ ]),
46659
+ onSelectChange: p,
46637
46660
  onClear: o,
46638
- submitCreate: h,
46639
- closeCreate: g
46661
+ submitCreate: m,
46662
+ closeCreate: h
46640
46663
  };
46641
46664
  }, $j = (0, y.createContext)(null);
46642
46665
  function eM({ children: e }) {
@@ -46780,12 +46803,208 @@ var tM = () => {
46780
46803
  /* @__PURE__ */ (0, O.jsx)(aM, {})
46781
46804
  ]
46782
46805
  }), sM = () => {
46783
- let { parsedCsv: e } = TN();
46806
+ let { parsedCsv: e } = XN();
46784
46807
  return e ? /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)("div", {
46785
46808
  className: "updog__step-column-matching__content updog__scrollbar",
46786
46809
  children: /* @__PURE__ */ (0, O.jsx)(eM, { children: /* @__PURE__ */ (0, O.jsx)(oM, {}) })
46787
46810
  }), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) }) : null;
46788
- }, cM = ({ open: e, existingOptions: t, initialName: n, onClose: r, onSubmit: i }) => {
46811
+ }, cM = new Set([
46812
+ "true",
46813
+ "false",
46814
+ "yes",
46815
+ "no"
46816
+ ]), lM = /^\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4}$/, uM = /^[-+]?(\d{1,3}([ ,.]\d{3})+|\d+)([.,]\d+)?%?$/, dM = new Set([
46817
+ "number",
46818
+ "date",
46819
+ "bool"
46820
+ ]);
46821
+ function fM(e) {
46822
+ if (e == null) return "empty";
46823
+ let t = String(e).trim();
46824
+ return t.length === 0 ? "empty" : cM.has(t.toLowerCase()) ? "bool" : lM.test(t) ? "date" : uM.test(t) ? "number" : "text";
46825
+ }
46826
+ function pM(e) {
46827
+ return e.filter((e) => e != null && String(e).trim().length > 0).length;
46828
+ }
46829
+ function mM(e) {
46830
+ let t = /* @__PURE__ */ new Map(), n = 0, r = 0;
46831
+ for (let i of e) {
46832
+ let e = pM(i);
46833
+ if (e === 0) continue;
46834
+ let a = (t.get(e) ?? 0) + 1;
46835
+ t.set(e, a), a > n && (n = a, r = e);
46836
+ }
46837
+ return r;
46838
+ }
46839
+ function hM(e) {
46840
+ let t = 0;
46841
+ for (let n of e) t = Math.max(t, n.length);
46842
+ return t;
46843
+ }
46844
+ function gM(e, t, n) {
46845
+ if (t <= 0) return 0;
46846
+ let r = -1, i = 0;
46847
+ for (let a = 0; a < e.length; a++) if (pM(e[a]) === t) {
46848
+ if (r < 0 && (r = a), i++, i >= n) return r;
46849
+ } else r = -1, i = 0;
46850
+ for (let n = 0; n < e.length; n++) if (pM(e[n]) === t) return n;
46851
+ return 0;
46852
+ }
46853
+ function _M(e, t, n, r) {
46854
+ let i = /* @__PURE__ */ new Map();
46855
+ for (let a = t; a < n; a++) {
46856
+ let t = fM(e[a]?.[r]);
46857
+ t !== "empty" && i.set(t, (i.get(t) ?? 0) + 1);
46858
+ }
46859
+ let a = "empty", o = 0;
46860
+ for (let [e, t] of i) t > o && (o = t, a = e);
46861
+ return a;
46862
+ }
46863
+ function vM(e, t, n, r) {
46864
+ let i = 0, a = 0;
46865
+ for (let o = 0; o < r; o++) {
46866
+ let r = _M(e, t + 1, n, o);
46867
+ r !== "empty" && (a++, fM(e[t]?.[o]) === "text" && dM.has(r) && i++);
46868
+ }
46869
+ return a === 0 ? 0 : i / a;
46870
+ }
46871
+ function yM(e, t, n, r) {
46872
+ let i = 0, a = 0;
46873
+ for (let o = 0; o < r; o++) {
46874
+ let r = _M(e, t, n, o);
46875
+ if (r !== "empty") for (let s = t; s < n; s++) {
46876
+ let t = fM(e[s]?.[o]);
46877
+ t !== "empty" && (a++, t === r && i++);
46878
+ }
46879
+ }
46880
+ return a === 0 ? 0 : i / a;
46881
+ }
46882
+ function bM(e) {
46883
+ let t = e.map(fM).filter((e) => e !== "empty");
46884
+ return t.length === 0 ? 0 : 1 - t.filter((e) => e !== "text").length / t.length;
46885
+ }
46886
+ function xM(e, t) {
46887
+ if (t <= 0) return 0;
46888
+ let n = pM(e);
46889
+ return Math.max(0, 1 - Math.abs(n - t) / t);
46890
+ }
46891
+ function SM(e) {
46892
+ let t = e.map((e) => String(e ?? "").trim().toLowerCase()).filter((e) => e.length > 0);
46893
+ return t.length === 0 ? 0 : new Set(t).size / t.length;
46894
+ }
46895
+ function CM(e, t, n, r, i) {
46896
+ return .45 * vM(e, t, n, r) + .25 * yM(e, t + 1, n, r) + .15 * bM(e[t] ?? []) + .1 * xM(e[t] ?? [], i) + .05 * SM(e[t] ?? []);
46897
+ }
46898
+ function wM(e, t = 100) {
46899
+ if (e.length === 0) return {
46900
+ headerRowIndex: 0,
46901
+ dataStartIndex: 0,
46902
+ confidence: 0,
46903
+ mode: "header",
46904
+ review: { kind: "none" }
46905
+ };
46906
+ let n = Math.min(t, e.length), r = e.slice(0, n), i = hM(r), a = mM(r), o = gM(r, a, 3), s = e[o] ?? [], c = vM(e, o, n, i), l = yM(e, o + 1, n, i), u = pM(s) > 0 && bM(s) === 0, d = Math.round(Math.max(0, CM(e, o, n, i, a)) * 100) / 100;
46907
+ if (u && c <= .15 && l >= .7) return {
46908
+ headerRowIndex: -1,
46909
+ dataStartIndex: o,
46910
+ confidence: d,
46911
+ mode: "no-header",
46912
+ review: { kind: "no-header" }
46913
+ };
46914
+ let f = d >= .55 ? { kind: "none" } : {
46915
+ kind: "ambiguous-row",
46916
+ confidence: d
46917
+ };
46918
+ return {
46919
+ headerRowIndex: o,
46920
+ dataStartIndex: o + 1,
46921
+ confidence: d,
46922
+ mode: "header",
46923
+ review: f
46924
+ };
46925
+ }
46926
+ function TM(e) {
46927
+ let t = /* @__PURE__ */ new Set();
46928
+ return e.map((e) => {
46929
+ let n = e, r = 2;
46930
+ for (; t.has(n);) n = `${e} (${r})`, r++;
46931
+ return t.add(n), n;
46932
+ });
46933
+ }
46934
+ //#endregion
46935
+ //#region src/components/DataUploader/components/StepHeaderSelection/context/useViewModel.tsx
46936
+ function EM(e, t, n, r) {
46937
+ return (0, y.useMemo)(() => ({
46938
+ sample: e,
46939
+ selectedRow: t,
46940
+ selectRow: n,
46941
+ noHeader: r
46942
+ }), [
46943
+ e,
46944
+ t,
46945
+ n,
46946
+ r
46947
+ ]);
46948
+ }
46949
+ //#endregion
46950
+ //#region src/components/DataUploader/components/StepHeaderSelection/context/index.tsx
46951
+ var DM = (0, y.createContext)(null);
46952
+ function OM({ sample: e, selectedRow: t, selectRow: n, noHeader: r, children: i }) {
46953
+ let a = EM(e, t, n, r);
46954
+ return /* @__PURE__ */ (0, O.jsx)(DM.Provider, {
46955
+ value: a,
46956
+ children: i
46957
+ });
46958
+ }
46959
+ var kM = () => {
46960
+ let e = (0, y.useContext)(DM);
46961
+ if (!e) throw Error("useHeaderSelection must be used within HeaderSelectionProvider");
46962
+ return e;
46963
+ }, AM = () => {
46964
+ let { sample: e, selectedRow: t, selectRow: n, noHeader: r } = kM(), { headers: i } = XN(), { headers: a, rows: o } = (0, y.useMemo)(() => {
46965
+ let t = i.length;
46966
+ return {
46967
+ headers: i.map((e) => r ? e : ""),
46968
+ rows: e.map((e) => Array.from({ length: t }, (t, n) => String(e[n] ?? "")))
46969
+ };
46970
+ }, [
46971
+ e,
46972
+ i,
46973
+ r
46974
+ ]);
46975
+ return /* @__PURE__ */ (0, O.jsx)(rv, {
46976
+ className: "updog__step-header-selection__preview",
46977
+ headers: a,
46978
+ rows: o,
46979
+ displayRows: e.length,
46980
+ blur: !1,
46981
+ selectedRow: r ? void 0 : t,
46982
+ onSelectRow: r ? void 0 : n
46983
+ });
46984
+ }, jM = () => {
46985
+ let { t: e } = j(), { parsedCsv: t, headerRowIndex: n, setHeaderRowIndex: r } = XN(), i = (0, y.useCallback)((e) => {
46986
+ r(e ? -1 : Math.max(0, t?.detection.headerRowIndex ?? 0));
46987
+ }, [r, t]);
46988
+ if (!t) return null;
46989
+ let a = t.rawRows.slice(0, 50), o = n < 0;
46990
+ return /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsx)(ah, { children: /* @__PURE__ */ (0, O.jsxs)(OM, {
46991
+ sample: a,
46992
+ selectedRow: o ? void 0 : n,
46993
+ selectRow: r,
46994
+ noHeader: o,
46995
+ children: [/* @__PURE__ */ (0, O.jsxs)("div", {
46996
+ className: "updog__step-header-selection__content updog__scrollbar",
46997
+ children: [/* @__PURE__ */ (0, O.jsx)("div", {
46998
+ className: "updog__step-header-selection__noHeadersWrapper",
46999
+ children: /* @__PURE__ */ (0, O.jsx)(jt, {
47000
+ checked: o,
47001
+ onChange: i,
47002
+ label: e("dataEditor.uploader.headerSelection.noHeaderLabel")
47003
+ })
47004
+ }), /* @__PURE__ */ (0, O.jsx)(AM, {})]
47005
+ }), /* @__PURE__ */ (0, O.jsx)(Aj, {})]
47006
+ }) }) });
47007
+ }, MM = ({ open: e, existingOptions: t, initialName: n, onClose: r, onSubmit: i }) => {
46789
47008
  let { t: a } = j();
46790
47009
  return /* @__PURE__ */ (0, O.jsx)(vs, {
46791
47010
  open: e,
@@ -46798,13 +47017,13 @@ var tM = () => {
46798
47017
  onSubmit: i
46799
47018
  })
46800
47019
  });
46801
- }, lM = [
47020
+ }, NM = [
46802
47021
  ",",
46803
47022
  ";",
46804
47023
  "|",
46805
47024
  "\n",
46806
47025
  " "
46807
- ], uM = (e, t, n) => {
47026
+ ], PM = (e, t, n) => {
46808
47027
  let r = new Set(n.map((e) => e.trim().toLowerCase())), i = (e) => r.has(e.trim().toLowerCase());
46809
47028
  if (e.trim() === "") return [];
46810
47029
  if (i(e)) return [e.trim()];
@@ -46816,80 +47035,144 @@ var tM = () => {
46816
47035
  a.push(e);
46817
47036
  continue;
46818
47037
  }
46819
- a.push(...dM(e, t, i));
47038
+ a.push(...FM(e, t, i));
46820
47039
  }
46821
47040
  }
46822
47041
  return a;
46823
- }, dM = (e, t, n) => {
46824
- for (let r of lM) {
47042
+ }, FM = (e, t, n) => {
47043
+ for (let r of NM) {
46825
47044
  if (r === t || !e.includes(r)) continue;
46826
47045
  let i = e.split(r).map((e) => e.trim()).filter((e) => e !== "");
46827
47046
  if (i.length >= 2 && i.every(n)) return i;
46828
47047
  }
46829
47048
  return [e];
46830
- }, fM = (e, t, n, r) => {
46831
- let i = /* @__PURE__ */ new Set();
46832
- for (let a of e) {
46833
- let e = a[t];
46834
- if (!(e === void 0 || e === "")) if (r) for (let t of uM(e, r, n)) i.add(t);
46835
- else i.add(e);
46836
- }
46837
- return [...i];
46838
- }, pM = () => {
46839
- let { columns: e } = th(), { t } = j(), { parsedCsv: n, columnMapping: r, valueMapping: i, autoValueMapping: a, updateValueMapping: o, multiselectDelimiters: s, setMultiselectDelimiter: c, reapplyMultiselectDelimiter: l, pendingOptions: u, addPendingOption: d } = TN(), [f, p] = (0, y.useState)({}), [m, h] = (0, y.useState)({}), [g, _] = (0, y.useState)(null), v = (0, y.useRef)(!1), b = (0, y.useMemo)(() => {
47049
+ }, IM = (e, t, n) => {
47050
+ let r = /* @__PURE__ */ new Set();
47051
+ for (let i of e) if (i !== "") if (n) for (let e of PM(i, n, t)) r.add(e);
47052
+ else r.add(i);
47053
+ return [...r];
47054
+ }, LM = (e) => !e.some((e) => e != null && String(e).trim() !== ""), RM = (e, t) => {
47055
+ let n = 0;
47056
+ for (let r = t; r < e.length; r++) n = Math.max(n, e[r].length);
47057
+ return n;
47058
+ }, zM = 50, BM = (e, t, n) => {
47059
+ let r = Math.min(e.length, t + zM);
47060
+ for (let i = t; i < r; i++) {
47061
+ let t = e[i];
47062
+ if (!t || LM(t)) continue;
47063
+ let r = !0;
47064
+ for (let e = 0; e < n; e++) {
47065
+ let n = t[e];
47066
+ if (n == null || String(n).trim() === "") {
47067
+ r = !1;
47068
+ break;
47069
+ }
47070
+ }
47071
+ if (r) return Array.from({ length: n }, (e, n) => String(t[n]).trim());
47072
+ }
47073
+ return Array.from({ length: n }, (n, i) => {
47074
+ for (let n = t; n < r; n++) {
47075
+ let t = e[n];
47076
+ if (!t || LM(t)) continue;
47077
+ let r = t[i], a = r == null ? "" : String(r).trim();
47078
+ if (a !== "") return a;
47079
+ }
47080
+ return "";
47081
+ });
47082
+ }, VM = (e, t) => t === e.headerRowIndex ? e.dataStartIndex : t + 1, HM = (e, t, n, r) => {
47083
+ if (t < 0) {
47084
+ let t = RM(e, n), i = BM(e, n, t);
47085
+ return Array.from({ length: t }, (e, t) => r(t, i[t]));
47086
+ }
47087
+ return TM((e[t] ?? []).map((e) => String(e ?? "").trim()));
47088
+ }, UM = () => ({
47089
+ headerRowIndex: 0,
47090
+ dataStartIndex: 1,
47091
+ confidence: 1,
47092
+ mode: "header",
47093
+ review: { kind: "none" }
47094
+ }), WM = (e, t) => {
47095
+ let n = [e];
47096
+ for (let r of t) n.push(e.map((e) => r[e] ?? ""));
47097
+ return n;
47098
+ }, GM = (e) => {
47099
+ let t = /* @__PURE__ */ new Map();
47100
+ for (let n = 0; n < e.length; n++) t.set(e[n], n);
47101
+ return t;
47102
+ }, KM = (e, t, n) => {
47103
+ let r = [];
47104
+ for (let i = t; i < e.length; i++) {
47105
+ let t = e[i];
47106
+ if (LM(t)) continue;
47107
+ let a = t[n], o = a == null ? "" : String(a);
47108
+ o !== "" && r.push(o);
47109
+ }
47110
+ return r;
47111
+ }, qM = (e, t) => {
47112
+ let n = {};
47113
+ for (let r = 0; r < t.length; r++) n[t[r]] = String(e[r] ?? "");
47114
+ return n;
47115
+ }, JM = (e, t, n, r) => {
47116
+ let i = [];
47117
+ for (let a = n; a < e.length && i.length < r; a++) LM(e[a]) || i.push(qM(e[a], t));
47118
+ return i;
47119
+ }, YM = () => {
47120
+ let { columns: e } = th(), { t } = j(), { parsedCsv: n, headers: r, dataStartIndex: i, columnMapping: a, valueMapping: o, autoValueMapping: s, updateValueMapping: c, multiselectDelimiters: l, setMultiselectDelimiter: u, reapplyMultiselectDelimiter: d, pendingOptions: f, addPendingOption: p } = XN(), [m, h] = (0, y.useState)({}), [g, _] = (0, y.useState)({}), [v, b] = (0, y.useState)(null), x = (0, y.useRef)(!1), S = (0, y.useMemo)(() => {
46840
47121
  if (!n) return [];
46841
- let t = [];
46842
- for (let [a, o] of Object.entries(r)) {
46843
- if (!o) continue;
46844
- let r = e.find((e) => e.id === o);
46845
- if (!r?.editor) continue;
46846
- let c = r.editor.type;
46847
- if (c !== "select" && c !== "multiselect") continue;
46848
- let l = r.editor.options, u = i[o] ?? {}, d = c === "multiselect", f = d ? s[o] ?? null : null, p = fM(n.rows, a, l, f).map((e) => ({
47122
+ let t = [], s = GM(r);
47123
+ for (let [r, c] of Object.entries(a)) {
47124
+ if (!c) continue;
47125
+ let a = e.find((e) => e.id === c);
47126
+ if (!a?.editor) continue;
47127
+ let u = a.editor.type;
47128
+ if (u !== "select" && u !== "multiselect") continue;
47129
+ let d = a.editor.options, f = o[c] ?? {}, p = u === "multiselect", m = p ? l[c] ?? null : null, h = s.get(r), g = IM(h === void 0 ? [] : KM(n.rawRows, i, h), d, m).map((e) => ({
46849
47130
  imported: e,
46850
- mapped: u[e]
47131
+ mapped: f[e]
46851
47132
  }));
46852
- p.sort((e, t) => e.imported.localeCompare(t.imported));
46853
- let m = p.filter((e) => e.mapped !== void 0).length;
47133
+ g.sort((e, t) => e.imported.localeCompare(t.imported));
47134
+ let _ = g.filter((e) => e.mapped !== void 0).length;
46854
47135
  t.push({
46855
- columnId: o,
46856
- columnTitle: r.title,
46857
- options: l,
46858
- enableCustomValue: r.editor.enableCustomValue !== !1,
46859
- isMultiselect: d,
46860
- delimiter: f,
46861
- values: p,
46862
- matchedCount: m,
46863
- allMatched: m === p.length
47136
+ columnId: c,
47137
+ columnTitle: a.title,
47138
+ options: d,
47139
+ enableCustomValue: a.editor.enableCustomValue !== !1,
47140
+ isMultiselect: p,
47141
+ delimiter: m,
47142
+ values: g,
47143
+ matchedCount: _,
47144
+ allMatched: _ === g.length
46864
47145
  });
46865
47146
  }
46866
47147
  return t;
46867
47148
  }, [
46868
47149
  n,
46869
47150
  r,
46870
- e,
46871
47151
  i,
46872
- s
47152
+ a,
47153
+ e,
47154
+ o,
47155
+ l
46873
47156
  ]);
46874
47157
  (0, y.useEffect)(() => {
46875
- if (v.current || b.length === 0) return;
46876
- v.current = !0;
47158
+ if (x.current || S.length === 0) return;
47159
+ x.current = !0;
46877
47160
  let e = {};
46878
- for (let t of b) t.allMatched && (e[t.columnId] = !0);
46879
- h(e);
46880
- }, [b]);
46881
- let x = (0, y.useMemo)(() => {
47161
+ for (let t of S) t.allMatched && (e[t.columnId] = !0);
47162
+ _(e);
47163
+ }, [S]);
47164
+ let C = (0, y.useMemo)(() => {
46882
47165
  let e = {
46883
47166
  text: t("dataEditor.uploader.matchColumns.bestMatch"),
46884
47167
  color: "green"
46885
47168
  }, n = t("dataEditor.uploader.matchValues.createOption"), r = {};
46886
- for (let t of b) {
46887
- let i = u[t.columnId] ?? [], o = {};
47169
+ for (let t of S) {
47170
+ let i = f[t.columnId] ?? [], a = {};
46888
47171
  for (let r of t.values) {
46889
- let s = a[t.columnId]?.[r.imported], c = new Set(t.options), l = t.options.map((t) => ({
47172
+ let o = s[t.columnId]?.[r.imported], c = new Set(t.options), l = t.options.map((t) => ({
46890
47173
  id: t,
46891
47174
  text: t,
46892
- ...t === s && { tag: e }
47175
+ ...t === o && { tag: e }
46893
47176
  }));
46894
47177
  if (t.enableCustomValue) {
46895
47178
  for (let e of i) c.has(e) || (l.push({
@@ -46905,81 +47188,81 @@ var tM = () => {
46905
47188
  icon: /* @__PURE__ */ (0, O.jsx)(Ae, { size: "1rem" })
46906
47189
  });
46907
47190
  }
46908
- o[r.imported] = l;
47191
+ a[r.imported] = l;
46909
47192
  }
46910
- r[t.columnId] = o;
47193
+ r[t.columnId] = a;
46911
47194
  }
46912
47195
  return r;
46913
47196
  }, [
46914
- b,
46915
- a,
46916
- u,
47197
+ S,
47198
+ s,
47199
+ f,
46917
47200
  t
46918
- ]), S = (0, y.useCallback)((e) => f[e] ?? !0, [f]), C = (0, y.useCallback)((e) => m[e] ?? !1, [m]), w = (0, y.useCallback)((e) => {
46919
- let t = f[e.columnId] ?? !0;
47201
+ ]), w = (0, y.useCallback)((e) => m[e] ?? !0, [m]), T = (0, y.useCallback)((e) => g[e] ?? !1, [g]), E = (0, y.useCallback)((e) => {
47202
+ let t = m[e.columnId] ?? !0;
46920
47203
  return e.values.filter((e) => t || e.mapped === void 0);
46921
- }, [f]), T = (0, y.useCallback)((e, t) => x[e]?.[t] ?? [], [x]), E = (0, y.useCallback)((e, t) => {
46922
- p((n) => ({
47204
+ }, [m]), D = (0, y.useCallback)((e, t) => C[e]?.[t] ?? [], [C]), k = (0, y.useCallback)((e, t) => {
47205
+ h((n) => ({
46923
47206
  ...n,
46924
47207
  [e]: t
46925
47208
  }));
46926
- }, []), D = (0, y.useCallback)((e) => {
46927
- h((t) => ({
47209
+ }, []), A = (0, y.useCallback)((e) => {
47210
+ _((t) => ({
46928
47211
  ...t,
46929
47212
  [e]: !t[e]
46930
47213
  }));
46931
- }, []), k = (0, y.useCallback)((e, t, n) => {
47214
+ }, []), M = (0, y.useCallback)((e, t, n) => {
46932
47215
  if (n === "action:create-option") {
46933
- _({
47216
+ b({
46934
47217
  columnId: e,
46935
47218
  imported: t
46936
47219
  });
46937
47220
  return;
46938
47221
  }
46939
- o(e, t, n);
46940
- }, [o]), A = (0, y.useCallback)((e, t) => {
46941
- c(e, t === "" ? null : t);
46942
- }, [c]), M = (0, y.useCallback)((e) => {
46943
- l(e);
46944
- }, [l]), N = (0, y.useCallback)((e) => {
46945
- g && (d(g.columnId, e), o(g.columnId, g.imported, e), _(null));
47222
+ c(e, t, n);
47223
+ }, [c]), N = (0, y.useCallback)((e, t) => {
47224
+ u(e, t === "" ? null : t);
47225
+ }, [u]), P = (0, y.useCallback)((e) => {
47226
+ d(e);
47227
+ }, [d]), F = (0, y.useCallback)((e) => {
47228
+ v && (p(v.columnId, e), c(v.columnId, v.imported, e), b(null));
46946
47229
  }, [
46947
- g,
46948
- d,
46949
- o
46950
- ]), P = (0, y.useCallback)(() => _(null), []);
47230
+ v,
47231
+ p,
47232
+ c
47233
+ ]), I = (0, y.useCallback)(() => b(null), []);
46951
47234
  return {
46952
- sections: b,
46953
- selectOptionsByValue: x,
46954
- createForOptions: (0, y.useMemo)(() => b.find((e) => e.columnId === g?.columnId)?.options ?? [], [b, g]),
46955
- hasCreateTarget: g !== null,
46956
- createInitialName: g?.imported ?? "",
46957
- isShowMatched: S,
46958
- isCollapsed: C,
46959
- getVisibleValues: w,
46960
- getSelectOptions: T,
46961
- setShowMatched: E,
46962
- toggleCollapsed: D,
46963
- selectValue: k,
46964
- changeDelimiter: A,
46965
- reapplyDelimiter: M,
46966
- submitCreate: N,
46967
- closeCreate: P
47235
+ sections: S,
47236
+ selectOptionsByValue: C,
47237
+ createForOptions: (0, y.useMemo)(() => S.find((e) => e.columnId === v?.columnId)?.options ?? [], [S, v]),
47238
+ hasCreateTarget: v !== null,
47239
+ createInitialName: v?.imported ?? "",
47240
+ isShowMatched: w,
47241
+ isCollapsed: T,
47242
+ getVisibleValues: E,
47243
+ getSelectOptions: D,
47244
+ setShowMatched: k,
47245
+ toggleCollapsed: A,
47246
+ selectValue: M,
47247
+ changeDelimiter: N,
47248
+ reapplyDelimiter: P,
47249
+ submitCreate: F,
47250
+ closeCreate: I
46968
47251
  };
46969
- }, mM = (0, y.createContext)(null);
46970
- function hM({ children: e }) {
46971
- let t = pM();
46972
- return /* @__PURE__ */ (0, O.jsx)(mM.Provider, {
47252
+ }, XM = (0, y.createContext)(null);
47253
+ function ZM({ children: e }) {
47254
+ let t = YM();
47255
+ return /* @__PURE__ */ (0, O.jsx)(XM.Provider, {
46973
47256
  value: t,
46974
47257
  children: e
46975
47258
  });
46976
47259
  }
46977
- var gM = () => {
46978
- let e = (0, y.useContext)(mM);
47260
+ var QM = () => {
47261
+ let e = (0, y.useContext)(XM);
46979
47262
  if (!e) throw Error("useValueMatching must be used within ValueMatchingProvider");
46980
47263
  return e;
46981
- }, _M = ({ section: e }) => {
46982
- let { t } = j(), { isShowMatched: n, isCollapsed: r, setShowMatched: i, toggleCollapsed: a } = gM(), o = r(e.columnId), s = t(o ? "dataEditor.common.expand" : "dataEditor.common.collapse"), c = (0, y.useCallback)((t) => i(e.columnId, t), [i, e.columnId]), l = (0, y.useCallback)(() => a(e.columnId), [a, e.columnId]);
47264
+ }, $M = ({ section: e }) => {
47265
+ let { t } = j(), { isShowMatched: n, isCollapsed: r, setShowMatched: i, toggleCollapsed: a } = QM(), o = r(e.columnId), s = t(o ? "dataEditor.common.expand" : "dataEditor.common.collapse"), c = (0, y.useCallback)((t) => i(e.columnId, t), [i, e.columnId]), l = (0, y.useCallback)(() => a(e.columnId), [a, e.columnId]);
46983
47266
  return /* @__PURE__ */ (0, O.jsxs)("header", {
46984
47267
  className: "updog__value-matching__section-header",
46985
47268
  children: [/* @__PURE__ */ (0, O.jsx)("div", {
@@ -47023,14 +47306,14 @@ var gM = () => {
47023
47306
  })
47024
47307
  })]
47025
47308
  });
47026
- }, vM = {
47309
+ }, eN = {
47027
47310
  ",": ",",
47028
47311
  ";": ";",
47029
47312
  "|": "|",
47030
47313
  "\n": "\\n",
47031
47314
  " ": "\\t"
47032
- }, yM = (e) => e === null ? "" : vM[e] ?? e, bM = ({ section: e }) => {
47033
- let { t } = j(), { changeDelimiter: n, reapplyDelimiter: r } = gM(), i = (0, y.useRef)(e.delimiter), a = yM(e.delimiter), [o, s] = (0, y.useState)(a), { debouncedValue: c } = gc(o, 300), l = (0, y.useRef)(a);
47315
+ }, tN = (e) => e === null ? "" : eN[e] ?? e, nN = ({ section: e }) => {
47316
+ let { t } = j(), { changeDelimiter: n, reapplyDelimiter: r } = QM(), i = (0, y.useRef)(e.delimiter), a = tN(e.delimiter), [o, s] = (0, y.useState)(a), { debouncedValue: c } = gc(o, 300), l = (0, y.useRef)(a);
47034
47317
  (0, y.useEffect)(() => {
47035
47318
  s(a), l.current = a;
47036
47319
  }, [a]), (0, y.useEffect)(() => {
@@ -47073,8 +47356,8 @@ var gM = () => {
47073
47356
  })
47074
47357
  ]
47075
47358
  });
47076
- }, xM = ({ section: e, val: t }) => {
47077
- let { t: n } = j(), { getSelectOptions: r, selectValue: i } = gM(), a = t.mapped === void 0, o = (0, y.useCallback)((n) => i(e.columnId, t.imported, n), [
47359
+ }, rN = ({ section: e, val: t }) => {
47360
+ let { t: n } = j(), { getSelectOptions: r, selectValue: i } = QM(), a = t.mapped === void 0, o = (0, y.useCallback)((n) => i(e.columnId, t.imported, n), [
47078
47361
  i,
47079
47362
  e.columnId,
47080
47363
  t.imported
@@ -47126,8 +47409,8 @@ var gM = () => {
47126
47409
  })
47127
47410
  ]
47128
47411
  });
47129
- }, SM = ({ section: e }) => {
47130
- let { t } = j(), { getVisibleValues: n } = gM(), r = n(e);
47412
+ }, iN = ({ section: e }) => {
47413
+ let { t } = j(), { getVisibleValues: n } = QM(), r = n(e);
47131
47414
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47132
47415
  className: "updog__value-matching__table",
47133
47416
  children: [r.length === 0 ? /* @__PURE__ */ (0, O.jsx)("div", {
@@ -47147,7 +47430,7 @@ var gM = () => {
47147
47430
  size: "sm",
47148
47431
  weight: "medium",
47149
47432
  children: t("dataEditor.uploader.matchValues.importedValues")
47150
- }), e.isMultiselect && /* @__PURE__ */ (0, O.jsx)(bM, { section: e })]
47433
+ }), e.isMultiselect && /* @__PURE__ */ (0, O.jsx)(nN, { section: e })]
47151
47434
  }),
47152
47435
  /* @__PURE__ */ (0, O.jsx)("div", { className: "updog__value-matching__arrow-spacer" }),
47153
47436
  /* @__PURE__ */ (0, O.jsx)(W, {
@@ -47159,25 +47442,25 @@ var gM = () => {
47159
47442
  }),
47160
47443
  /* @__PURE__ */ (0, O.jsx)("div", { className: "updog__value-matching__action" })
47161
47444
  ]
47162
- }), r.map((t) => /* @__PURE__ */ (0, O.jsx)(xM, {
47445
+ }), r.map((t) => /* @__PURE__ */ (0, O.jsx)(rN, {
47163
47446
  section: e,
47164
47447
  val: t
47165
47448
  }, t.imported))]
47166
47449
  });
47167
- }, CM = ({ section: e }) => {
47168
- let { isCollapsed: t } = gM(), n = !t(e.columnId);
47450
+ }, aN = ({ section: e }) => {
47451
+ let { isCollapsed: t } = QM(), n = !t(e.columnId);
47169
47452
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47170
47453
  className: "updog__value-matching__section",
47171
- children: [/* @__PURE__ */ (0, O.jsx)(_M, { section: e }), /* @__PURE__ */ (0, O.jsx)("div", {
47454
+ children: [/* @__PURE__ */ (0, O.jsx)($M, { section: e }), /* @__PURE__ */ (0, O.jsx)("div", {
47172
47455
  className: N("updog__value-matching__collapsible", n && "updog__value-matching__collapsible--expanded"),
47173
- children: /* @__PURE__ */ (0, O.jsx)(SM, { section: e })
47456
+ children: /* @__PURE__ */ (0, O.jsx)(iN, { section: e })
47174
47457
  })]
47175
47458
  });
47176
- }, wM = () => {
47177
- let { sections: e, hasCreateTarget: t, createForOptions: n, createInitialName: r, submitCreate: i, closeCreate: a } = gM();
47459
+ }, oN = () => {
47460
+ let { sections: e, hasCreateTarget: t, createForOptions: n, createInitialName: r, submitCreate: i, closeCreate: a } = QM();
47178
47461
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47179
47462
  className: "updog__value-matching",
47180
- children: [e.map((e) => /* @__PURE__ */ (0, O.jsx)(CM, { section: e }, e.columnId)), t && /* @__PURE__ */ (0, O.jsx)(cM, {
47463
+ children: [e.map((e) => /* @__PURE__ */ (0, O.jsx)(aN, { section: e }, e.columnId)), t && /* @__PURE__ */ (0, O.jsx)(MM, {
47181
47464
  open: !0,
47182
47465
  existingOptions: n,
47183
47466
  initialName: r,
@@ -47185,22 +47468,26 @@ var gM = () => {
47185
47468
  onSubmit: i
47186
47469
  })]
47187
47470
  });
47188
- }, TM = () => /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)("div", {
47471
+ }, sN = () => /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)("div", {
47189
47472
  className: "updog__step-match-values__content updog__scrollbar",
47190
- children: /* @__PURE__ */ (0, O.jsx)(hM, { children: /* @__PURE__ */ (0, O.jsx)(wM, {}) })
47191
- }), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) }), EM = 20, DM = () => {
47192
- let { store: e } = th(), { t } = j(), { primaryKey: n, onPrimaryKeyChange: r, parsedCsv: i, columnMapping: a, primaryKeyColumns: o } = TN(), s = e.isClient(), c = (0, y.useCallback)(() => r(null), [r]), l = (0, y.useMemo)(() => {
47473
+ children: /* @__PURE__ */ (0, O.jsx)(ZM, { children: /* @__PURE__ */ (0, O.jsx)(oN, {}) })
47474
+ }), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) }), cN = 20, lN = () => {
47475
+ let { store: e } = th(), { t } = j(), { primaryKey: n, onPrimaryKeyChange: r, parsedCsv: i, headers: a, dataStartIndex: o, columnMapping: s, primaryKeyColumns: c } = XN(), l = e.isClient(), u = (0, y.useCallback)(() => r(null), [r]), d = (0, y.useMemo)(() => {
47193
47476
  let e = {};
47194
- for (let [t, n] of Object.entries(a)) n && (e[n] = t);
47477
+ for (let [t, n] of Object.entries(s)) n && (e[n] = t);
47195
47478
  return e;
47196
- }, [a]), u = i?.rows.slice(0, EM) ?? [];
47479
+ }, [s]), f = (0, y.useMemo)(() => i ? JM(i.rawRows, a, o, cN) : [], [
47480
+ i,
47481
+ a,
47482
+ o
47483
+ ]);
47197
47484
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47198
47485
  className: "updog__primary-key-selection updog__scrollbar",
47199
- children: [s && /* @__PURE__ */ (0, O.jsxs)(hc, {
47486
+ children: [l && /* @__PURE__ */ (0, O.jsxs)(hc, {
47200
47487
  name: "primaryKey",
47201
47488
  value: "",
47202
47489
  checked: n === null,
47203
- onChange: c,
47490
+ onChange: u,
47204
47491
  radioPosition: "end",
47205
47492
  className: N("updog__primary-key-selection__card", n === null && "updog__primary-key-selection__card--selected"),
47206
47493
  children: [/* @__PURE__ */ (0, O.jsx)(W, {
@@ -47213,8 +47500,8 @@ var gM = () => {
47213
47500
  className: "updog__primary-key-selection__value-text updog__primary-key-selection__value-none",
47214
47501
  children: t("dataEditor.uploader.primaryKey.noneHint")
47215
47502
  })]
47216
- }), o.map((e) => {
47217
- let t = l[e.id], i = t ? u.map((e) => e[t] ?? "") : [];
47503
+ }), c.map((e) => {
47504
+ let t = d[e.id], i = t ? f.map((e) => e[t] ?? "") : [];
47218
47505
  return /* @__PURE__ */ (0, O.jsxs)(hc, {
47219
47506
  name: "primaryKey",
47220
47507
  value: e.id,
@@ -47241,8 +47528,8 @@ var gM = () => {
47241
47528
  }, e.id);
47242
47529
  })]
47243
47530
  });
47244
- }, OM = () => /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)(DM, {}), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) }), kM = () => {
47245
- let { columns: e, importFormats: t, remoteSources: n, sampleData: r } = th(), i = t === !1 ? [] : t, { t: a } = j(), { parsedCsv: o, xlsxFile: s, handleFileRemoved: c, parseFile: l, isParsing: u, remoteSourceLoading: d, remoteSourceError: f, handleRemoteSourceSelect: p } = TN(), m = [
47531
+ }, uN = () => /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)(lN, {}), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) }), dN = () => {
47532
+ let { columns: e, importFormats: t, remoteSources: n, sampleData: r } = th(), i = t === !1 ? [] : t, { t: a } = j(), { parsedCsv: o, xlsxFile: s, handleFileRemoved: c, parseFile: l, isParsing: u, remoteSourceLoading: d, remoteSourceError: f, handleRemoteSourceSelect: p } = XN(), m = [
47246
47533
  {
47247
47534
  id: "csv",
47248
47535
  format: "csv",
@@ -47300,20 +47587,20 @@ var gM = () => {
47300
47587
  }, [c]),
47301
47588
  handleRemoteSourceSelect: p
47302
47589
  };
47303
- }, AM = (0, y.createContext)(null);
47304
- function jM({ children: e }) {
47305
- let t = kM();
47306
- return /* @__PURE__ */ (0, O.jsx)(AM.Provider, {
47590
+ }, fN = (0, y.createContext)(null);
47591
+ function pN({ children: e }) {
47592
+ let t = dN();
47593
+ return /* @__PURE__ */ (0, O.jsx)(fN.Provider, {
47307
47594
  value: t,
47308
47595
  children: e
47309
47596
  });
47310
47597
  }
47311
- var MM = () => {
47312
- let e = (0, y.useContext)(AM);
47598
+ var mN = () => {
47599
+ let e = (0, y.useContext)(fN);
47313
47600
  if (!e) throw Error("useSelectFiles must be used within SelectFilesProvider");
47314
47601
  return e;
47315
- }, NM = () => {
47316
- let { t: e } = j(), { exampleMenuOptions: t, onExampleDownload: n } = MM();
47602
+ }, hN = () => {
47603
+ let { t: e } = j(), { exampleMenuOptions: t, onExampleDownload: n } = mN();
47317
47604
  return /* @__PURE__ */ (0, O.jsx)(fc, {
47318
47605
  options: t,
47319
47606
  onSelect: n,
@@ -47325,7 +47612,7 @@ var MM = () => {
47325
47612
  children: e("dataEditor.uploader.uploadFile.downloadExample")
47326
47613
  })
47327
47614
  });
47328
- }, PM = ({ source: e }) => e.icon.trimStart().startsWith("<") ? /* @__PURE__ */ (0, O.jsx)("span", {
47615
+ }, gN = ({ source: e }) => e.icon.trimStart().startsWith("<") ? /* @__PURE__ */ (0, O.jsx)("span", {
47329
47616
  className: "updog__remote-source-btn__icon",
47330
47617
  dangerouslySetInnerHTML: { __html: e.icon }
47331
47618
  }) : /* @__PURE__ */ (0, O.jsx)("span", {
@@ -47334,7 +47621,7 @@ var MM = () => {
47334
47621
  src: e.icon,
47335
47622
  alt: e.label
47336
47623
  })
47337
- }), FM = ({ source: e, loading: t, disabled: n, onSelect: r }) => /* @__PURE__ */ (0, O.jsx)(ot, {
47624
+ }), _N = ({ source: e, loading: t, disabled: n, onSelect: r }) => /* @__PURE__ */ (0, O.jsx)(ot, {
47338
47625
  variant: "filled",
47339
47626
  color: "neutral",
47340
47627
  size: "sm",
@@ -47344,11 +47631,11 @@ var MM = () => {
47344
47631
  disabled: !t && n,
47345
47632
  loading: t,
47346
47633
  spinnerPosition: "start",
47347
- startIcon: /* @__PURE__ */ (0, O.jsx)(PM, { source: e }),
47634
+ startIcon: /* @__PURE__ */ (0, O.jsx)(gN, { source: e }),
47348
47635
  title: e.description,
47349
47636
  children: e.label
47350
- }), IM = () => {
47351
- let { t: e } = j(), { importFormats: t, remoteSources: n, remoteSourceLoading: r, remoteSourceError: i, handleRemoteSourceSelect: a } = MM(), o = n.length > 0;
47637
+ }), vN = () => {
47638
+ let { t: e } = j(), { importFormats: t, remoteSources: n, remoteSourceLoading: r, remoteSourceError: i, handleRemoteSourceSelect: a } = mN(), o = n.length > 0;
47352
47639
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47353
47640
  className: "updog__source-picker",
47354
47641
  children: [
@@ -47375,7 +47662,7 @@ var MM = () => {
47375
47662
  }),
47376
47663
  o && /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [/* @__PURE__ */ (0, O.jsx)(ac, {}), /* @__PURE__ */ (0, O.jsx)("div", {
47377
47664
  className: "updog__source-picker__sources-list",
47378
- children: n.map((e) => /* @__PURE__ */ (0, O.jsx)(FM, {
47665
+ children: n.map((e) => /* @__PURE__ */ (0, O.jsx)(_N, {
47379
47666
  source: e,
47380
47667
  loading: r === e.id,
47381
47668
  disabled: !!r,
@@ -47389,7 +47676,7 @@ var MM = () => {
47389
47676
  })
47390
47677
  ]
47391
47678
  });
47392
- }, LM = () => {
47679
+ }, yN = () => {
47393
47680
  let { t: e } = j();
47394
47681
  return /* @__PURE__ */ (0, O.jsxs)("div", {
47395
47682
  className: "updog__uploading-state",
@@ -47402,12 +47689,12 @@ var MM = () => {
47402
47689
  children: e("dataEditor.uploader.uploadFile.uploading")
47403
47690
  })]
47404
47691
  });
47405
- }, RM = () => {
47406
- let { t: e } = j(), { isBlocked: t, isParsing: n, hasFile: r, fileName: i, open: a, onRemoveClick: o } = MM();
47692
+ }, bN = () => {
47693
+ let { t: e } = j(), { isBlocked: t, isParsing: n, hasFile: r, fileName: i, open: a, onRemoveClick: o } = mN();
47407
47694
  return /* @__PURE__ */ (0, O.jsx)("div", {
47408
47695
  className: N("updog__step-select-files__upload-area", t && "updog__step-select-files__upload-area--disabled"),
47409
47696
  onClick: t ? void 0 : a,
47410
- children: n ? /* @__PURE__ */ (0, O.jsx)(LM, {}) : /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [
47697
+ children: n ? /* @__PURE__ */ (0, O.jsx)(yN, {}) : /* @__PURE__ */ (0, O.jsxs)(O.Fragment, { children: [
47411
47698
  /* @__PURE__ */ (0, O.jsx)("div", {
47412
47699
  className: "updog__step-select-files__icon-container",
47413
47700
  children: r ? /* @__PURE__ */ (0, O.jsx)(oe, {
@@ -47418,7 +47705,7 @@ var MM = () => {
47418
47705
  className: "updog__step-select-files__icon"
47419
47706
  })
47420
47707
  }),
47421
- !r && /* @__PURE__ */ (0, O.jsx)(IM, {}),
47708
+ !r && /* @__PURE__ */ (0, O.jsx)(vN, {}),
47422
47709
  r && /* @__PURE__ */ (0, O.jsxs)("div", {
47423
47710
  className: "updog__step-select-files__info",
47424
47711
  children: [/* @__PURE__ */ (0, O.jsx)(W, {
@@ -47435,21 +47722,21 @@ var MM = () => {
47435
47722
  })
47436
47723
  ] })
47437
47724
  });
47438
- }, zM = () => {
47439
- let { getRootProps: e, getInputProps: t, isDragActive: n } = MM();
47725
+ }, xN = () => {
47726
+ let { getRootProps: e, getInputProps: t, isDragActive: n } = mN();
47440
47727
  return /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)("div", {
47441
47728
  className: "updog__step-select-files__dropzone",
47442
47729
  ...e(),
47443
47730
  children: [
47444
47731
  /* @__PURE__ */ (0, O.jsx)("input", { ...t() }),
47445
- /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)(RM, {}), /* @__PURE__ */ (0, O.jsx)(Aj, { leftSlot: /* @__PURE__ */ (0, O.jsx)(NM, {}) })] }),
47732
+ /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)(bN, {}), /* @__PURE__ */ (0, O.jsx)(Aj, { leftSlot: /* @__PURE__ */ (0, O.jsx)(hN, {}) })] }),
47446
47733
  n && /* @__PURE__ */ (0, O.jsx)(oh, {})
47447
47734
  ]
47448
47735
  }) });
47449
- }, BM = () => /* @__PURE__ */ (0, O.jsx)(jM, { children: /* @__PURE__ */ (0, O.jsx)(zM, {}) }), VM = ({ preview: e }) => {
47450
- let { selectedSheet: t, setSelectedSheet: n } = TN(), { t: r } = j(), i = Math.max(0, e.totalRows), a = t === e.name, o = (0, y.useMemo)(() => {
47736
+ }, SN = () => /* @__PURE__ */ (0, O.jsx)(pN, { children: /* @__PURE__ */ (0, O.jsx)(xN, {}) }), CN = ({ preview: e }) => {
47737
+ let { selectedSheet: t, setSelectedSheet: n } = XN(), { t: r } = j(), i = Math.max(0, e.totalRows), a = t === e.name, o = (0, y.useMemo)(() => {
47451
47738
  let { headers: t, rows: n } = e;
47452
- return n.map((e) => t.map((t) => e[t] ?? ""));
47739
+ return [t, ...n.map((e) => t.map((t) => e[t] ?? ""))];
47453
47740
  }, [e]);
47454
47741
  return /* @__PURE__ */ (0, O.jsx)(hc, {
47455
47742
  name: "sheetSelection",
@@ -47477,23 +47764,22 @@ var MM = () => {
47477
47764
  className: "updog__sheet-preview-emptyText",
47478
47765
  children: r("dataEditor.uploader.sheetSelection.emptySheet")
47479
47766
  }) : /* @__PURE__ */ (0, O.jsx)(rv, {
47480
- headers: e.headers,
47481
47767
  rows: o,
47482
47768
  scrollbars: !1
47483
47769
  })
47484
47770
  })]
47485
47771
  })
47486
47772
  });
47487
- }, HM = () => {
47488
- let { sheetPreviews: e } = TN();
47773
+ }, wN = () => {
47774
+ let { sheetPreviews: e } = XN();
47489
47775
  return /* @__PURE__ */ (0, O.jsx)(sh, { children: /* @__PURE__ */ (0, O.jsxs)(ah, { children: [/* @__PURE__ */ (0, O.jsx)("div", {
47490
47776
  className: "updog__sheet-preview-wrapper updog__scrollbar",
47491
47777
  children: /* @__PURE__ */ (0, O.jsx)("div", {
47492
47778
  className: "updog__sheet-preview-grid",
47493
- children: e.map((e) => /* @__PURE__ */ (0, O.jsx)(VM, { preview: e }, e.name))
47779
+ children: e.map((e) => /* @__PURE__ */ (0, O.jsx)(CN, { preview: e }, e.name))
47494
47780
  })
47495
47781
  }), /* @__PURE__ */ (0, O.jsx)(Aj, {})] }) });
47496
- }, UM = (e, t, n) => {
47782
+ }, TN = (e, t, n) => {
47497
47783
  let r = new Map(t.map((e) => [e.id, e])), i = [];
47498
47784
  for (let [t, a] of Object.entries(e)) a && i.push({
47499
47785
  csvHeader: t,
@@ -47501,11 +47787,11 @@ var MM = () => {
47501
47787
  column: n.has(a) ? void 0 : r.get(a)
47502
47788
  });
47503
47789
  return i;
47504
- }, WM = (e) => {
47790
+ }, EN = (e) => {
47505
47791
  let t = [];
47506
47792
  for (let { csvHeader: n, column: r } of e) r?.editor?.type === "number" && t.push(n);
47507
47793
  return t;
47508
- }, GM = (e, t, n) => {
47794
+ }, DN = (e, t, n) => {
47509
47795
  let r = {};
47510
47796
  for (let { csvHeader: i, columnId: a, column: o } of t) {
47511
47797
  let t = e[i] ?? "";
@@ -47520,7 +47806,7 @@ var MM = () => {
47520
47806
  continue;
47521
47807
  }
47522
47808
  if (s === "multiselect") {
47523
- let e = n.multiselectDelimiters[a], i = o.editor.options ?? [], s = e ? uM(t, e, i) : t === "" ? [] : [t], c = [], l = /* @__PURE__ */ new Set();
47809
+ let e = n.multiselectDelimiters[a], i = o.editor.options ?? [], s = e ? PM(t, e, i) : t === "" ? [] : [t], c = [], l = /* @__PURE__ */ new Set();
47524
47810
  for (let e of s) {
47525
47811
  let t = n.valueMapping[a]?.[e.trim()];
47526
47812
  t !== void 0 && !l.has(t) && (l.add(t), c.push(t));
@@ -47532,88 +47818,16 @@ var MM = () => {
47532
47818
  r[a] = o.transformer ? o.transformer(c) : c;
47533
47819
  }
47534
47820
  return r;
47535
- }, KM = /^-?\d+([.,]\d+)?%?$/, qM = /^\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4}$/, JM = new Set([
47536
- "true",
47537
- "false",
47538
- "yes",
47539
- "no"
47540
- ]), YM = 50;
47541
- function XM(e) {
47542
- return !!(KM.test(e) || qM.test(e) || JM.has(e.toLowerCase()));
47543
- }
47544
- function ZM(e) {
47545
- return e.filter((e) => e != null && String(e).trim().length > 0).length;
47546
- }
47547
- function QM(e) {
47548
- let t = /* @__PURE__ */ new Map(), n = 0, r = 0;
47549
- for (let i of e) {
47550
- let e = ZM(i);
47551
- if (e === 0) continue;
47552
- let a = (t.get(e) ?? 0) + 1;
47553
- t.set(e, a), a > n && (n = a, r = e);
47554
- }
47555
- return r;
47556
- }
47557
- function $M(e, t) {
47558
- let n = e.map((e) => String(e ?? "").trim()), r = n.filter((e) => e.length > 0);
47559
- if (r.length === 0) return 0;
47560
- let i = r.filter((e) => XM(e)).length === 0 ? 1 : 0, a = r.length / Math.max(n.length, 1), o = new Set(r.map((e) => e.toLowerCase())).size / r.length, s = r.filter((e) => e.length <= YM).length / r.length, c = t > 0 ? 1 - Math.abs(r.length - t) / t : 0;
47561
- return .3 * i + .25 * a + .2 * o + .15 * s + .1 * Math.max(0, c);
47562
- }
47563
- function eN(e, t = 100) {
47564
- if (e.length === 0) return {
47565
- headerRowIndex: 0,
47566
- confidence: 0
47567
- };
47568
- if (e.length === 1) return {
47569
- headerRowIndex: 0,
47570
- confidence: 1
47571
- };
47572
- let n = Math.min(t, e.length), r = QM(e.slice(0, n)), i = 0, a = -1;
47573
- for (let t = 0; t < n; t++) {
47574
- let n = $M(e[t], r);
47575
- if (n > a && (a = n, i = t), t === 0 && n > .85 && ZM(e[0]) === r) break;
47576
- }
47577
- return {
47578
- headerRowIndex: i,
47579
- confidence: Math.round(a * 100) / 100
47580
- };
47581
- }
47582
- function tN(e) {
47583
- let t = /* @__PURE__ */ new Set();
47584
- return e.map((e) => {
47585
- let n = e, r = 2;
47586
- for (; t.has(n);) n = `${e} (${r})`, r++;
47587
- return t.add(n), n;
47588
- });
47589
- }
47590
- function nN(e) {
47591
- let { headerRowIndex: t } = eN(e), n = tN((e[t] ?? []).map((e) => String(e ?? "").trim())), r = [], i = [];
47592
- for (let a of e.slice(t + 1)) {
47593
- if (!a.some((e) => e != null && String(e).trim() !== "")) continue;
47594
- let e = {};
47595
- for (let t = 0; t < n.length; t++) e[n[t]] = String(a[t] ?? "");
47596
- r.push(e), i.push(a.length === n.length ? null : a.map((e) => String(e ?? "")));
47597
- }
47598
- return {
47599
- headerRowIndex: t,
47600
- headers: n,
47601
- rows: r,
47602
- rawCells: i
47603
- };
47604
- }
47605
- //#endregion
47606
- //#region src/components/DataUploader/utils/detectMultiValueDelimiter.ts
47607
- var rN = 200, iN = (e, t, n) => {
47821
+ }, ON = 200, kN = (e, t, n) => {
47608
47822
  if (n) return n;
47609
47823
  let r = new Set(t.map((e) => e.trim().toLowerCase())), i = (e) => r.has(e.trim().toLowerCase()), a = /* @__PURE__ */ new Set(), o = [];
47610
47824
  for (let t of e) {
47611
47825
  let e = t.trim();
47612
- if (!(e === "" || a.has(e)) && (a.add(e), o.push(e), o.length >= rN)) break;
47826
+ if (!(e === "" || a.has(e)) && (a.add(e), o.push(e), o.length >= ON)) break;
47613
47827
  }
47614
47828
  if (o.length === 0) return null;
47615
47829
  let s = null, c = 0, l = 0;
47616
- for (let e of lM) {
47830
+ for (let e of NM) {
47617
47831
  let n = 0, r = 0;
47618
47832
  for (let a of o) {
47619
47833
  if (i(a) || !a.includes(e)) continue;
@@ -47626,7 +47840,7 @@ var rN = 200, iN = (e, t, n) => {
47626
47840
  (n > c || n === c && n > 0 && r > l) && (s = e, c = n, l = r);
47627
47841
  }
47628
47842
  return c > 0 ? s : null;
47629
- }, aN = (e) => {
47843
+ }, AN = (e) => {
47630
47844
  let t = /* @__PURE__ */ new Map();
47631
47845
  for (let [n, r] of Object.entries(e)) {
47632
47846
  let e = Pj(n), i = t.get(e) ?? /* @__PURE__ */ new Set();
@@ -47634,8 +47848,8 @@ var rN = 200, iN = (e, t, n) => {
47634
47848
  t.set(e, i);
47635
47849
  }
47636
47850
  return t;
47637
- }, oN = (e, t, n, r) => {
47638
- let i = aN(r), a = (e, t) => i.get(Pj(e))?.has(Pj(t)) ?? !1, o = new Map(n.map((e) => [e.id, e])), s = (e, t) => (n, r) => {
47851
+ }, jN = (e, t, n, r) => {
47852
+ let i = AN(r), a = (e, t) => i.get(Pj(e))?.has(Pj(t)) ?? !1, o = new Map(n.map((e) => [e.id, e])), s = (e, t) => (n, r) => {
47639
47853
  if (Pj(n) === Pj(r) || a(r, n)) return;
47640
47854
  let i = `${n} ${r}`;
47641
47855
  t.has(i) || (t.add(i), e.push({
@@ -47655,16 +47869,16 @@ var rN = 200, iN = (e, t, n) => {
47655
47869
  for (let e of Object.values(t)) for (let [t, n] of Object.entries(e)) n && u(t, n);
47656
47870
  return c;
47657
47871
  };
47658
- function sN(e, t, n) {
47872
+ function MN(e, t, n) {
47659
47873
  let r = e.length, i = t;
47660
- return i <= 0 ? [] : r === i ? [{ cells: [...e] }] : (r < i ? cN(i, i - r) : cN(r - 1, i - 1)) > 1e3 ? [] : r < i ? lN(e, i) : uN(e, i, n);
47874
+ return i <= 0 ? [] : r === i ? [{ cells: [...e] }] : (r < i ? NN(i, i - r) : NN(r - 1, i - 1)) > 1e3 ? [] : r < i ? PN(e, i) : FN(e, i, n);
47661
47875
  }
47662
- function cN(e, t) {
47876
+ function NN(e, t) {
47663
47877
  let n = Math.min(t, e - t), r = 1;
47664
47878
  for (let t = 1; t <= n; t++) if (r = r * (e - n + t) / t, r > 1e3) return r;
47665
47879
  return r;
47666
47880
  }
47667
- function lN(e, t) {
47881
+ function PN(e, t) {
47668
47882
  let n = e.length, r = [], i = [], a = (o) => {
47669
47883
  if (i.length === n) {
47670
47884
  let a = Array(t).fill("");
@@ -47676,7 +47890,7 @@ function lN(e, t) {
47676
47890
  };
47677
47891
  return a(0), r;
47678
47892
  }
47679
- function uN(e, t, n) {
47893
+ function FN(e, t, n) {
47680
47894
  let r = e.length, i = [], a = [], o = (s) => {
47681
47895
  if (a.length === t - 1) {
47682
47896
  let o = [
@@ -47694,27 +47908,27 @@ function uN(e, t, n) {
47694
47908
  }
47695
47909
  //#endregion
47696
47910
  //#region src/components/DataUploader/utils/raggedRows/pruneByValidators.ts
47697
- var dN = {};
47698
- function fN(e, t) {
47911
+ var IN = {};
47912
+ function LN(e, t) {
47699
47913
  for (let n of t.validators ?? []) if (n.type !== "expression") {
47700
47914
  if (n.type === "function") {
47701
- if (n.fn(e, dN) != null) return !1;
47915
+ if (n.fn(e, IN) != null) return !1;
47702
47916
  continue;
47703
47917
  }
47704
- if (Bm(n, e, dN) != null) return !1;
47918
+ if (Bm(n, e, IN) != null) return !1;
47705
47919
  }
47706
47920
  return !0;
47707
47921
  }
47708
- function pN(e, t) {
47709
- for (let n = 0; n < t.length; n++) if (!fN(e.cells[n] ?? "", t[n])) return !1;
47922
+ function RN(e, t) {
47923
+ for (let n = 0; n < t.length; n++) if (!LN(e.cells[n] ?? "", t[n])) return !1;
47710
47924
  return !0;
47711
47925
  }
47712
- function mN(e, t) {
47713
- return e.filter((e) => pN(e, t));
47926
+ function zN(e, t) {
47927
+ return e.filter((e) => RN(e, t));
47714
47928
  }
47715
47929
  //#endregion
47716
47930
  //#region src/components/DataUploader/utils/raggedRows/computeDisputeSpans.ts
47717
- function hN(e) {
47931
+ function BN(e) {
47718
47932
  if (e.length <= 1) return [];
47719
47933
  let t = e[0].cells.length, n = [], r = -1;
47720
47934
  for (let i = 0; i < t; i++) {
@@ -47731,25 +47945,25 @@ function hN(e) {
47731
47945
  }
47732
47946
  //#endregion
47733
47947
  //#region src/components/DataUploader/utils/raggedRows/alignRow.ts
47734
- function gN(e, t, n) {
47735
- let r = sN(e, t.length, n), i = mN(r, t);
47948
+ function VN(e, t, n) {
47949
+ let r = MN(e, t.length, n), i = zN(r, t);
47736
47950
  return i.length === 1 ? {
47737
47951
  kind: "confident",
47738
47952
  alignment: i[0]
47739
47953
  } : i.length > 1 ? {
47740
47954
  kind: "ambiguous",
47741
47955
  candidates: i,
47742
- disputeSpans: hN(i)
47956
+ disputeSpans: BN(i)
47743
47957
  } : {
47744
47958
  kind: "invalid",
47745
47959
  candidates: r,
47746
- disputeSpans: hN(r)
47960
+ disputeSpans: BN(r)
47747
47961
  };
47748
47962
  }
47749
47963
  //#endregion
47750
47964
  //#region src/components/DataUploader/utils/raggedRows/resolveRaggedRow.ts
47751
- function _N(e, t, n) {
47752
- let r = gN(e, t, n);
47965
+ function HN(e, t, n) {
47966
+ let r = VN(e, t, n);
47753
47967
  if (r.kind === "confident") return {
47754
47968
  cells: r.alignment.cells,
47755
47969
  conflictColumns: []
@@ -47768,111 +47982,131 @@ function _N(e, t, n) {
47768
47982
  }
47769
47983
  //#endregion
47770
47984
  //#region src/components/DataUploader/context/useViewModel.tsx
47771
- var vN = 5e3, yN = 15, bN = 20, xN = new Set([
47985
+ var UN = 5e3, WN = 15, GN = 20, KN = new Set([
47772
47986
  "xlsx",
47773
47987
  "xls",
47774
47988
  "xlsb",
47775
47989
  "ods"
47776
47990
  ]);
47777
- function SN() {
47991
+ function qN() {
47778
47992
  let { store: e, validator: t, columns: n, primaryKey: r, setShowUploader: i, pendingImportFile: a, setPendingImportFile: o, onColumnMatch: s, onValueMatch: c, synonyms: l, addDynamicColumns: u, scaleClient: d } = th(), { t: f } = j(), [p, m] = (0, y.useState)(0), [h, g] = (0, y.useState)(0), [_, v] = (0, y.useState)(null), [b, x] = (0, y.useState)({}), S = (0, y.useMemo)(() => {
47779
47993
  let e = new Set(Object.values(b).filter(Boolean));
47780
47994
  return n.filter((t) => t.unique && e.has(t.id));
47781
- }, [b, n]), [C, w] = (0, y.useState)(() => r), [T, E] = (0, y.useState)(!1), [D, k] = (0, y.useState)(!1), [A, M] = (0, y.useState)(null), [N, P] = (0, y.useState)([]), [F, I] = (0, y.useState)(null), [L, R] = (0, y.useState)([]), [ee, z] = (0, y.useState)({}), [B, V] = (0, y.useState)([]), [H, te] = (0, y.useState)({}), ne = (0, y.useRef)(null), [re, ie] = (0, y.useState)(0), ae = (0, y.useCallback)((e) => {
47995
+ }, [b, n]), [C, w] = (0, y.useState)(() => r), [T, E] = (0, y.useState)(!1), [D, k] = (0, y.useState)(!1), [A, M] = (0, y.useState)(null), [N, P] = (0, y.useState)([]), [F, I] = (0, y.useState)(null), [L, R] = (0, y.useState)([]), [ee, z] = (0, y.useState)({}), [B, V] = (0, y.useState)([]), [H, te] = (0, y.useState)({}), ne = (0, y.useRef)(null), [re, ie] = (0, y.useState)(-1), ae = (0, y.useCallback)((e, t) => t ? f("dataEditor.uploader.matchColumns.syntheticColumnValue", {
47996
+ index: e + 1,
47997
+ value: t
47998
+ }) : f("dataEditor.uploader.matchColumns.syntheticColumn", { index: e + 1 }), [f]), oe = (0, y.useMemo)(() => _ ? VM(_.detection, re) : 0, [_, re]), U = (0, y.useMemo)(() => _ ? HM(_.rawRows, re, oe, ae) : [], [
47999
+ _,
48000
+ re,
48001
+ oe,
48002
+ ae
48003
+ ]), se = (0, y.useCallback)((e) => {
47782
48004
  D || w(e);
47783
- }, [D]), oe = (0, y.useRef)(null);
47784
- oe.current ||= new Bh();
47785
- let U = oe.current;
47786
- (0, y.useEffect)(() => () => U.dispose(), [U]);
47787
- let se = (0, y.useMemo)(() => {
48005
+ }, [D]), ce = (0, y.useRef)(null);
48006
+ ce.current ||= new Bh();
48007
+ let le = ce.current;
48008
+ (0, y.useEffect)(() => () => le.dispose(), [le]);
48009
+ let ue = (0, y.useMemo)(() => {
47788
48010
  let e = new Set(Object.values(b).filter(Boolean));
47789
48011
  return n.some((t) => t.editor?.type === "select" && e.has(t.id));
47790
- }, [b, n]), [ce] = (0, y.useState)(() => e.getLocalRowCount() > 0), le = (0, y.useMemo)(() => {
48012
+ }, [b, n]), [de] = (0, y.useState)(() => e.getLocalRowCount() > 0), fe = (0, y.useMemo)(() => {
47791
48013
  let e = [{
47792
48014
  id: "select-files",
47793
48015
  title: f("dataEditor.uploader.steps.selectFiles"),
47794
- content: /* @__PURE__ */ (0, O.jsx)(BM, {})
48016
+ content: /* @__PURE__ */ (0, O.jsx)(SN, {})
47795
48017
  }];
47796
48018
  return N.length > 1 && e.push({
47797
48019
  id: "sheet-selection",
47798
48020
  title: f("dataEditor.uploader.steps.sheetSelection"),
47799
- content: /* @__PURE__ */ (0, O.jsx)(HM, {})
48021
+ content: /* @__PURE__ */ (0, O.jsx)(wN, {})
48022
+ }), _ && _.detection.review.kind !== "none" && e.push({
48023
+ id: "header-selection",
48024
+ title: f("dataEditor.uploader.steps.headerSelection"),
48025
+ content: /* @__PURE__ */ (0, O.jsx)(jM, {})
47800
48026
  }), e.push({
47801
48027
  id: "column-matching",
47802
48028
  title: f("dataEditor.uploader.steps.matchColumns"),
47803
48029
  content: /* @__PURE__ */ (0, O.jsx)(sM, {})
47804
- }), se && e.push({
48030
+ }), ue && e.push({
47805
48031
  id: "match-values",
47806
48032
  title: f("dataEditor.uploader.steps.matchValues"),
47807
- content: /* @__PURE__ */ (0, O.jsx)(TM, {})
47808
- }), S.length > 0 && ce && e.push({
48033
+ content: /* @__PURE__ */ (0, O.jsx)(sN, {})
48034
+ }), S.length > 0 && de && e.push({
47809
48035
  id: "primary-key",
47810
48036
  title: f("dataEditor.uploader.steps.primaryKey"),
47811
- content: /* @__PURE__ */ (0, O.jsx)(OM, {})
48037
+ content: /* @__PURE__ */ (0, O.jsx)(uN, {})
47812
48038
  }), e;
47813
48039
  }, [
47814
48040
  S.length,
47815
48041
  N.length,
47816
- se,
47817
- ce,
48042
+ ue,
48043
+ de,
48044
+ _,
47818
48045
  f
47819
- ]), ue = (0, y.useCallback)((e) => {
47820
- e >= 0 && e < le.length && m(e);
47821
- }, [le.length]), de = (0, y.useCallback)(() => {
48046
+ ]), pe = (0, y.useCallback)((e) => {
48047
+ e >= 0 && e < fe.length && m(e);
48048
+ }, [fe.length]), me = (0, y.useCallback)(() => {
47822
48049
  m((e) => {
47823
- let t = Math.min(e + 1, le.length - 1);
48050
+ let t = Math.min(e + 1, fe.length - 1);
47824
48051
  return g((e) => Math.max(e, t)), t;
47825
48052
  });
47826
- }, [le.length]), fe = (0, y.useCallback)(() => {
48053
+ }, [fe.length]), he = (0, y.useCallback)(() => {
47827
48054
  m((e) => Math.max(e - 1, 0));
47828
- }, []), pe = p === 0, me = p === le.length - 1, he = (0, y.useCallback)((e) => {
47829
- v(e), E(!1), Xj(e.headers, n, s, l).then(x);
48055
+ }, []), ge = p === 0, _e = p === fe.length - 1, ve = (0, y.useCallback)((e) => {
48056
+ v(e), E(!1);
48057
+ }, []), ye = (0, y.useRef)(0);
48058
+ (0, y.useEffect)(() => {
48059
+ if (!_ || U.length === 0) return;
48060
+ let e = ++ye.current;
48061
+ Xj(U, n, s, l).then((t) => {
48062
+ ye.current === e && x(t);
48063
+ });
47830
48064
  }, [
48065
+ _,
48066
+ U,
47831
48067
  n,
47832
48068
  s,
47833
48069
  l
47834
- ]), ge = (0, y.useCallback)(() => {
47835
- U.cancel(), v(null), E(!1), x({}), V([]), te({}), ne.current = null, ie(0), M(null), P([]), I(null), R([]);
47836
- }, [U]), _e = (0, y.useCallback)((e, t, n) => {
48070
+ ]);
48071
+ let be = (0, y.useCallback)(() => {
48072
+ le.cancel(), v(null), E(!1), x({}), V([]), te({}), ne.current = null, ie(-1), M(null), P([]), I(null), R([]);
48073
+ }, [le]), xe = (0, y.useCallback)((e, t, n) => {
47837
48074
  M(e), P(t), I(t[0]), R(n), E(!1);
47838
- }, []), ve = (0, y.useCallback)(() => {
47839
- !A || !F || (E(!0), U.parse(A, {
48075
+ }, []), Se = (0, y.useCallback)(() => {
48076
+ !A || !F || (E(!0), le.parse(A, {
47840
48077
  format: "xlsx",
47841
48078
  sheetName: F
47842
48079
  }).then((e) => {
47843
48080
  if (e.kind !== "rows") return;
47844
- let t = nN(e.rows);
47845
- ie(t.headerRowIndex), he({
48081
+ let t = wM(e.rows);
48082
+ ie(t.headerRowIndex), ve({
47846
48083
  fileName: A.name,
47847
- headers: t.headers,
47848
- rows: t.rows,
47849
- isParsing: !1,
47850
- rawCells: t.rawCells,
48084
+ rawRows: e.rows,
48085
+ detection: t,
47851
48086
  delimiter: ","
47852
- }), de();
48087
+ }), me();
47853
48088
  }).catch(() => {
47854
48089
  E(!1);
47855
48090
  }));
47856
48091
  }, [
47857
48092
  A,
47858
48093
  F,
47859
- U,
47860
- he,
47861
- de
47862
- ]), ye = (0, y.useCallback)(async (t) => {
48094
+ le,
48095
+ ve,
48096
+ me,
48097
+ ae
48098
+ ]), Ce = (0, y.useCallback)(async (t) => {
47863
48099
  try {
47864
- let e = await U.parse(t, { format: "csv" });
48100
+ let e = await le.parse(t, { format: "csv" });
47865
48101
  if (e.kind !== "rows") {
47866
48102
  E(!1);
47867
48103
  return;
47868
48104
  }
47869
- let n = nN(e.rows);
47870
- if (ie(n.headerRowIndex), he({
48105
+ let n = wM(e.rows);
48106
+ if (ie(n.headerRowIndex), ve({
47871
48107
  fileName: t.name,
47872
- headers: n.headers,
47873
- rows: n.rows,
47874
- isParsing: !1,
47875
- rawCells: n.rawCells,
48108
+ rawRows: e.rows,
48109
+ detection: n,
47876
48110
  delimiter: e.delimiter
47877
48111
  }), e.errors.length > 0) {
47878
48112
  let t = e.errors.slice(0, 3).map((e) => e.row == null ? "?" : String(e.row + 1)).join(", ");
@@ -47890,20 +48124,20 @@ function SN() {
47890
48124
  });
47891
48125
  }
47892
48126
  }, [
47893
- U,
47894
- he,
48127
+ le,
48128
+ ve,
47895
48129
  E,
47896
48130
  e,
47897
- f
47898
- ]), be = (0, y.useCallback)(async (t) => {
48131
+ f,
48132
+ ae
48133
+ ]), we = (0, y.useCallback)(async (t) => {
47899
48134
  try {
47900
- let e = await U.parse(t, { format: "json" });
48135
+ let e = await le.parse(t, { format: "json" });
47901
48136
  if (e.kind !== "records") return;
47902
- he({
48137
+ ie(0), ve({
47903
48138
  fileName: t.name,
47904
- headers: e.headers,
47905
- rows: e.rows,
47906
- isParsing: !1
48139
+ rawRows: WM(e.headers, e.rows),
48140
+ detection: UM()
47907
48141
  });
47908
48142
  } catch (t) {
47909
48143
  E(!1), e.errorHandler.handleError({
@@ -47914,19 +48148,18 @@ function SN() {
47914
48148
  });
47915
48149
  }
47916
48150
  }, [
47917
- U,
47918
- he,
48151
+ le,
48152
+ ve,
47919
48153
  E,
47920
48154
  e
47921
- ]), xe = (0, y.useCallback)(async (t) => {
48155
+ ]), Te = (0, y.useCallback)(async (t) => {
47922
48156
  try {
47923
- let e = await U.parse(t, { format: "xml" });
48157
+ let e = await le.parse(t, { format: "xml" });
47924
48158
  if (e.kind !== "records") return;
47925
- he({
48159
+ ie(0), ve({
47926
48160
  fileName: t.name,
47927
- headers: e.headers,
47928
- rows: e.rows,
47929
- isParsing: !1
48161
+ rawRows: WM(e.headers, e.rows),
48162
+ detection: UM()
47930
48163
  });
47931
48164
  } catch (t) {
47932
48165
  E(!1), e.errorHandler.handleError({
@@ -47937,33 +48170,31 @@ function SN() {
47937
48170
  });
47938
48171
  }
47939
48172
  }, [
47940
- U,
47941
- he,
48173
+ le,
48174
+ ve,
47942
48175
  E,
47943
48176
  e
47944
- ]), Se = (0, y.useCallback)((t) => {
47945
- U.parse(t, { format: "xlsx" }).then((e) => {
48177
+ ]), Ee = (0, y.useCallback)((t) => {
48178
+ le.parse(t, { format: "xlsx" }).then((e) => {
47946
48179
  if (e.kind === "sheets") {
47947
48180
  let n = e.sheets.map((e) => {
47948
- let { headers: t, rows: n } = nN(e.rows);
48181
+ let t = wM(e.rows), n = VM(t, t.headerRowIndex), r = HM(e.rows, t.headerRowIndex, n, ae);
47949
48182
  return {
47950
48183
  name: e.name,
47951
- headers: t,
47952
- rows: n.slice(0, yN),
48184
+ headers: r,
48185
+ rows: JM(e.rows, r, n, WN),
47953
48186
  totalRows: e.totalRows - 1
47954
48187
  };
47955
48188
  });
47956
- _e(t, e.sheets.map((e) => e.name), n);
48189
+ xe(t, e.sheets.map((e) => e.name), n);
47957
48190
  return;
47958
48191
  }
47959
48192
  if (e.kind !== "rows") return;
47960
- let n = nN(e.rows);
47961
- ie(n.headerRowIndex), he({
48193
+ let n = wM(e.rows);
48194
+ ie(n.headerRowIndex), ve({
47962
48195
  fileName: t.name,
47963
- headers: n.headers,
47964
- rows: n.rows,
47965
- isParsing: !1,
47966
- rawCells: n.rawCells,
48196
+ rawRows: e.rows,
48197
+ detection: n,
47967
48198
  delimiter: ","
47968
48199
  });
47969
48200
  }).catch((t) => {
@@ -47975,39 +48206,40 @@ function SN() {
47975
48206
  }), E(!1);
47976
48207
  });
47977
48208
  }, [
47978
- U,
47979
- he,
47980
- _e,
48209
+ le,
48210
+ ve,
48211
+ xe,
47981
48212
  E,
47982
- e
47983
- ]), Ce = (0, y.useCallback)((e) => {
48213
+ e,
48214
+ ae
48215
+ ]), De = (0, y.useCallback)((e) => {
47984
48216
  E(!0), ne.current = e;
47985
48217
  let t = e.name.split(".").pop()?.toLowerCase();
47986
- t && xN.has(t) ? Se(e) : t === "json" ? be(e) : t === "xml" ? xe(e) : ye(e);
48218
+ t && KN.has(t) ? Ee(e) : t === "json" ? we(e) : t === "xml" ? Te(e) : Ce(e);
47987
48219
  }, [
47988
- ye,
47989
- be,
47990
- Se,
47991
- xe,
48220
+ Ce,
48221
+ we,
48222
+ Ee,
48223
+ Te,
47992
48224
  E
47993
48225
  ]);
47994
48226
  (0, y.useEffect)(() => {
47995
- a && (Ce(a), o(null));
48227
+ a && (De(a), o(null));
47996
48228
  }, [
47997
48229
  a,
47998
48230
  o,
47999
- Ce
48231
+ De
48000
48232
  ]);
48001
- let [we, Te] = (0, y.useState)(null), [Ee, De] = (0, y.useState)(null), Oe = (0, y.useCallback)(() => {
48002
- De(null);
48003
- }, []), ke = (0, y.useCallback)(async (e) => {
48004
- Te(e.id), De(null);
48233
+ let [Oe, ke] = (0, y.useState)(null), [Ae, je] = (0, y.useState)(null), Me = (0, y.useCallback)(() => {
48234
+ je(null);
48235
+ }, []), Ne = (0, y.useCallback)(async (e) => {
48236
+ ke(e.id), je(null);
48005
48237
  try {
48006
48238
  let t = await e.fetch();
48007
- if (t instanceof File) Ce(t);
48239
+ if (t instanceof File) De(t);
48008
48240
  else if (Array.isArray(t)) {
48009
48241
  if (t.length === 0) {
48010
- De(f("dataEditor.uploader.remoteSources.emptyData"));
48242
+ je(f("dataEditor.uploader.remoteSources.emptyData"));
48011
48243
  return;
48012
48244
  }
48013
48245
  let n = Object.keys(t[0]), r = t.map((e) => {
@@ -48018,23 +48250,22 @@ function SN() {
48018
48250
  }
48019
48251
  return t;
48020
48252
  });
48021
- he({
48253
+ ie(0), ve({
48022
48254
  fileName: e.label,
48023
- headers: n,
48024
- rows: r,
48025
- isParsing: !1
48255
+ rawRows: WM(n, r),
48256
+ detection: UM()
48026
48257
  });
48027
48258
  }
48028
48259
  } catch (e) {
48029
- De(e instanceof Error ? e.message : String(e));
48260
+ je(e instanceof Error ? e.message : String(e));
48030
48261
  } finally {
48031
- Te(null);
48262
+ ke(null);
48032
48263
  }
48033
48264
  }, [
48034
- Ce,
48035
- he,
48265
+ De,
48266
+ ve,
48036
48267
  f
48037
- ]), Ae = (0, y.useCallback)((e, t) => {
48268
+ ]), Pe = (0, y.useCallback)((e, t) => {
48038
48269
  x((n) => {
48039
48270
  let r = {
48040
48271
  ...n,
@@ -48043,52 +48274,50 @@ function SN() {
48043
48274
  if (t) for (let n in r) n !== e && r[n] === t && (r[n] = void 0);
48044
48275
  return r;
48045
48276
  });
48046
- }, []), [je, Me] = (0, y.useState)({}), [Ne, Pe] = (0, y.useState)({}), Fe = (0, y.useRef)(0);
48277
+ }, []), [Fe, Ie] = (0, y.useState)({}), [Le, Re] = (0, y.useState)({}), ze = (0, y.useRef)(0);
48047
48278
  (0, y.useEffect)(() => {
48048
48279
  if (!_) {
48049
- Me({}), Pe({});
48280
+ Ie({}), Re({});
48050
48281
  return;
48051
48282
  }
48052
48283
  if (D) return;
48053
- let e = {}, t = {};
48054
- for (let [r, i] of Object.entries(b)) {
48055
- if (!i) continue;
48056
- let a = n.find((e) => e.id === i);
48057
- if (!a?.editor) continue;
48058
- let o = a.editor.type;
48059
- if (o !== "select" && o !== "multiselect") continue;
48060
- let s = a.editor.options, c = [];
48061
- for (let e of _.rows) {
48062
- let t = e[r];
48063
- t === void 0 || t === "" || c.push(t);
48064
- }
48065
- if (o === "multiselect") {
48066
- let n = a.editor.delimiter, r = iN(c, s, n);
48067
- t[i] = r;
48068
- let o = new Set(s.map((e) => e.trim().toLowerCase())), l = /* @__PURE__ */ new Set();
48069
- for (let e of c) {
48070
- let t = o.has(e.trim().toLowerCase()), n = r && !t ? e.split(r) : [e];
48284
+ let e = {}, t = {}, r = GM(U);
48285
+ for (let [i, a] of Object.entries(b)) {
48286
+ if (!a) continue;
48287
+ let o = n.find((e) => e.id === a);
48288
+ if (!o?.editor) continue;
48289
+ let s = o.editor.type;
48290
+ if (s !== "select" && s !== "multiselect") continue;
48291
+ let c = o.editor.options, l = r.get(i);
48292
+ if (l === void 0) continue;
48293
+ let u = KM(_.rawRows, oe, l);
48294
+ if (s === "multiselect") {
48295
+ let n = o.editor.delimiter, r = kN(u, c, n);
48296
+ t[a] = r;
48297
+ let i = new Set(c.map((e) => e.trim().toLowerCase())), s = /* @__PURE__ */ new Set();
48298
+ for (let e of u) {
48299
+ let t = i.has(e.trim().toLowerCase()), n = r && !t ? e.split(r) : [e];
48071
48300
  for (let e of n) {
48072
48301
  let t = e.trim();
48073
- t !== "" && l.add(t);
48302
+ t !== "" && s.add(t);
48074
48303
  }
48075
48304
  }
48076
- e[i] = {
48077
- importedValues: Array.from(l),
48078
- options: s
48305
+ e[a] = {
48306
+ importedValues: Array.from(s),
48307
+ options: c
48079
48308
  };
48080
- } else e[i] = {
48081
- importedValues: Array.from(new Set(c)),
48082
- options: s
48309
+ } else e[a] = {
48310
+ importedValues: Array.from(new Set(u)),
48311
+ options: c
48083
48312
  };
48084
48313
  }
48085
- if (Pe(t), Object.keys(e).length === 0) {
48086
- Me({});
48314
+ if (Re(t), Object.keys(e).length === 0) {
48315
+ Ie({});
48087
48316
  return;
48088
48317
  }
48089
- let r = ++Fe.current;
48318
+ let i = ++ze.current;
48090
48319
  Kj(e, c, l).then((e) => {
48091
- Fe.current === r && Me(e);
48320
+ ze.current === i && Ie(e);
48092
48321
  });
48093
48322
  }, [
48094
48323
  _,
@@ -48096,16 +48325,18 @@ function SN() {
48096
48325
  n,
48097
48326
  c,
48098
48327
  l,
48099
- D
48328
+ D,
48329
+ U,
48330
+ oe
48100
48331
  ]);
48101
- let Ie = (0, y.useMemo)(() => {
48332
+ let Be = (0, y.useMemo)(() => {
48102
48333
  let e = {};
48103
- for (let [t, n] of Object.entries(je)) e[t] = {
48334
+ for (let [t, n] of Object.entries(Fe)) e[t] = {
48104
48335
  ...n,
48105
48336
  ...ee[t]
48106
48337
  };
48107
48338
  return e;
48108
- }, [je, ee]), Le = (0, y.useCallback)((e, t, n) => {
48339
+ }, [Fe, ee]), Ve = (0, y.useCallback)((e, t, n) => {
48109
48340
  z((r) => ({
48110
48341
  ...r,
48111
48342
  [e]: {
@@ -48113,30 +48344,29 @@ function SN() {
48113
48344
  [t]: n
48114
48345
  }
48115
48346
  }));
48116
- }, []), Re = (0, y.useCallback)((e, t) => {
48117
- Pe((n) => ({
48347
+ }, []), He = (0, y.useCallback)((e, t) => {
48348
+ Re((n) => ({
48118
48349
  ...n,
48119
48350
  [e]: t
48120
48351
  }));
48121
- }, []), ze = (0, y.useCallback)((e) => {
48352
+ }, []), Ue = (0, y.useCallback)((e) => {
48122
48353
  if (!_) return;
48123
48354
  let t = Object.keys(b).find((t) => b[t] === e);
48124
48355
  if (!t) return;
48125
48356
  let r = n.find((t) => t.id === e);
48126
48357
  if (r?.editor?.type !== "multiselect") return;
48127
- let i = [];
48128
- for (let e of _.rows) {
48129
- let n = e[t];
48130
- n !== void 0 && n !== "" && i.push(n);
48131
- }
48132
- let a = r.editor.delimiter;
48133
- Re(e, iN(i, r.editor.options, a));
48358
+ let i = GM(U).get(t);
48359
+ if (i === void 0) return;
48360
+ let a = KM(_.rawRows, oe, i), o = r.editor.delimiter;
48361
+ He(e, kN(a, r.editor.options, o));
48134
48362
  }, [
48135
48363
  _,
48136
48364
  b,
48137
48365
  n,
48138
- Re
48139
- ]), Be = (0, y.useCallback)((e, t) => {
48366
+ He,
48367
+ U,
48368
+ oe
48369
+ ]), We = (0, y.useCallback)((e, t) => {
48140
48370
  te((n) => {
48141
48371
  let r = n[e] ?? [];
48142
48372
  return r.includes(t) ? n : {
@@ -48144,36 +48374,38 @@ function SN() {
48144
48374
  [e]: [...r, t]
48145
48375
  };
48146
48376
  });
48147
- }, []), Ve = (0, y.useCallback)((e) => {
48377
+ }, []), Ge = (0, y.useCallback)((e) => {
48148
48378
  let t = [];
48149
48379
  for (let [r, i] of Object.entries(b)) !i || e.has(i) || n.find((e) => e.id === i)?.editor?.type === "date" && t.push(r);
48150
48380
  return t;
48151
- }, [b, n]), He = (0, y.useCallback)(() => {
48152
- let e = new Set(B.map((e) => e.id)), t = UM(b, n, e), i = rp(_?.rows ?? [], WM(t)), a = Ve(e), o = cp(_?.rows ?? [], a);
48381
+ }, [b, n]), Ke = (0, y.useCallback)(() => {
48382
+ let e = new Set(B.map((e) => e.id)), t = TN(b, n, e), i = _ ? JM(_.rawRows, U, oe, 1e3) : [], a = rp(i, EN(t)), o = cp(i, Ge(e));
48153
48383
  return {
48154
48384
  columnMapping: b,
48155
- valueMapping: Ie,
48385
+ valueMapping: Be,
48156
48386
  primaryKey: C ?? r,
48157
48387
  selectedSheet: F ?? void 0,
48158
48388
  headerRowIndex: re,
48159
- numberFormat: i,
48389
+ numberFormat: a,
48160
48390
  dateFormat: o,
48161
48391
  newColumns: B
48162
48392
  };
48163
48393
  }, [
48164
48394
  _,
48165
48395
  b,
48166
- Ie,
48396
+ Be,
48167
48397
  C,
48168
48398
  F,
48169
48399
  r,
48170
48400
  re,
48401
+ U,
48402
+ oe,
48171
48403
  B,
48172
48404
  n,
48173
- Ve
48174
- ]), Ue = (0, y.useCallback)(async () => {
48405
+ Ge
48406
+ ]), qe = (0, y.useCallback)(async () => {
48175
48407
  if (!ne.current || !d?.onFileImport) return;
48176
- let t = new AbortController(), n = He();
48408
+ let t = new AbortController(), n = Ke();
48177
48409
  await d.onFileImport({
48178
48410
  file: ne.current,
48179
48411
  mappings: n,
@@ -48182,49 +48414,59 @@ function SN() {
48182
48414
  }), e.reloadServerData();
48183
48415
  }, [
48184
48416
  d,
48185
- He,
48417
+ Ke,
48186
48418
  e
48187
- ]), We = (0, y.useCallback)(async () => {
48419
+ ]), Je = (0, y.useCallback)(async () => {
48188
48420
  if (!_ || !d?.onRowsImport) return;
48189
48421
  let t = _;
48190
48422
  v(null);
48191
- let r = crypto.randomUUID(), i = He(), a = new AbortController(), o = d.importChunkSize ?? vN, s = UM(b, n, new Set(B.map((e) => e.id))), c = {
48423
+ let r = crypto.randomUUID(), i = Ke(), a = new AbortController(), o = d.importChunkSize ?? UN, s = TN(b, n, new Set(B.map((e) => e.id))), c = {
48192
48424
  numberFormat: i.numberFormat,
48193
48425
  dateFormat: i.dateFormat,
48194
48426
  monthTable: op(f),
48195
- valueMapping: Ie,
48196
- multiselectDelimiters: Ne
48197
- }, l = t.rows, u = 0;
48198
- for (; u < l.length;) {
48199
- let e = Math.min(u + o, l.length), n = [];
48200
- for (let t = u; t < e; t++) n.push(GM(l[t], s, c));
48201
- let f = e >= l.length, p = Math.floor(u / o);
48427
+ valueMapping: Be,
48428
+ multiselectDelimiters: Le
48429
+ }, l = U, u = t.rawRows, p = [];
48430
+ for (let e = oe; e < u.length; e++) {
48431
+ let t = u[e];
48432
+ t && !LM(t) && p.push(e);
48433
+ }
48434
+ let m = 0;
48435
+ for (; m < p.length;) {
48436
+ let e = Math.min(m + o, p.length), n = [];
48437
+ for (let t = m; t < e; t++) {
48438
+ let e = qM(u[p[t]] ?? [], l);
48439
+ n.push(DN(e, s, c));
48440
+ }
48441
+ let f = e >= p.length, h = Math.floor(m / o);
48202
48442
  await d.onRowsImport({
48203
48443
  importId: r,
48204
48444
  sourceName: t.fileName,
48205
- chunkIndex: p,
48445
+ chunkIndex: h,
48206
48446
  isLastChunk: f,
48207
48447
  rows: n,
48208
- newColumns: p === 0 && B.length > 0 ? B : void 0,
48448
+ newColumns: h === 0 && B.length > 0 ? B : void 0,
48209
48449
  primaryKey: i.primaryKey,
48210
48450
  signal: a.signal
48211
48451
  });
48212
- for (let t = u; t < e; t++) l[t] = null;
48213
- u = e;
48452
+ for (let t = m; t < e; t++) u[p[t]] = void 0;
48453
+ m = e;
48214
48454
  }
48215
48455
  e.reloadServerData();
48216
48456
  }, [
48217
48457
  _,
48218
48458
  d,
48219
- He,
48459
+ Ke,
48220
48460
  b,
48221
48461
  B,
48222
48462
  n,
48223
- Ie,
48224
- Ne,
48463
+ U,
48464
+ oe,
48465
+ Be,
48466
+ Le,
48225
48467
  e,
48226
48468
  f
48227
- ]), Ge = (0, y.useCallback)(() => new Promise((r) => {
48469
+ ]), W = (0, y.useCallback)(() => new Promise((r) => {
48228
48470
  if (!_) {
48229
48471
  r();
48230
48472
  return;
@@ -48235,47 +48477,52 @@ function SN() {
48235
48477
  B.length > 0 && u(B);
48236
48478
  for (let [t, n] of Object.entries(H)) e.addColumnOptions(t, n);
48237
48479
  let o = e.registerSource({ name: i.fileName });
48238
- e.setSourceLoading(o, !0), e.recordLearnedSynonyms(oN(b, Ie, [...n, ...B], Mj(jj, l)));
48239
- let s = UM(b, n, a), c = {
48240
- numberFormat: rp(i.rows, WM(s)),
48241
- dateFormat: cp(i.rows, Ve(a)),
48480
+ e.setSourceLoading(o, !0), e.recordLearnedSynonyms(jN(b, Be, [...n, ...B], Mj(jj, l)));
48481
+ let s = U, c = i.delimiter ?? ",", d = i.rawRows, p = [];
48482
+ for (let e = oe; e < d.length; e++) {
48483
+ let t = d[e];
48484
+ t && !LM(t) && p.push(e);
48485
+ }
48486
+ let m = JM(i.rawRows, s, oe, 1e3), h = TN(b, n, a), g = {
48487
+ numberFormat: rp(m, EN(h)),
48488
+ dateFormat: cp(m, Ge(a)),
48242
48489
  monthTable: op(f),
48243
- valueMapping: Ie,
48244
- multiselectDelimiters: Ne
48245
- }, d = i.rows, p = i.rawCells ?? [], m = i.delimiter ?? ",", h = i.headers, g = h.map((e) => {
48490
+ valueMapping: Be,
48491
+ multiselectDelimiters: Le
48492
+ }, _ = s.map((e) => {
48246
48493
  let t = b[e];
48247
48494
  return (t ? n.find((e) => e.id === t) : void 0) ?? {
48248
48495
  id: e,
48249
48496
  title: e
48250
48497
  };
48251
- }), _ = 0, v = () => {
48252
- let n = Math.min(_ + vN, d.length), i = [], a = [];
48253
- for (let e = _; e < n; e++) {
48254
- let t = d[e], n = p[e];
48255
- if (n) {
48256
- let { cells: r, conflictColumns: i } = _N(n, g, m);
48498
+ }), v = 0, y = () => {
48499
+ let n = Math.min(v + UN, p.length), i = [], a = [];
48500
+ for (let e = v; e < n; e++) {
48501
+ let t = d[p[e]] ?? [], n = qM(t, s);
48502
+ if (t.length !== s.length) {
48503
+ let { cells: r, conflictColumns: i } = HN(t.map((e) => String(e ?? "")), _, c);
48257
48504
  if (r.length) {
48258
48505
  let e = {};
48259
- for (let t = 0; t < h.length; t++) e[h[t]] = r[t] ?? "";
48260
- t = e;
48506
+ for (let t = 0; t < s.length; t++) e[s[t]] = r[t] ?? "";
48507
+ n = e;
48261
48508
  }
48262
48509
  if (i.length) {
48263
48510
  let t = [];
48264
48511
  for (let e of i) {
48265
- let n = b[h[e]];
48512
+ let n = b[s[e]];
48266
48513
  n && t.push(n);
48267
48514
  }
48268
48515
  t.length && a.push({
48269
- localIndex: e - _,
48516
+ localIndex: e - v,
48270
48517
  columnIds: t
48271
48518
  });
48272
48519
  }
48273
48520
  }
48274
- i.push(GM(t, s, c));
48521
+ i.push(DN(n, h, g));
48275
48522
  }
48276
48523
  let { rows: l, rowIds: u } = e.upsertRows(o, i, { anchorKey: C ?? void 0 });
48277
- for (let e = _; e < n; e++) e < bN || (d[e] = null, e < p.length && (p[e] = null));
48278
- _ = n, setTimeout(() => {
48524
+ for (let e = v; e < n; e++) e < GN || (d[p[e]] = void 0);
48525
+ v = n, setTimeout(() => {
48279
48526
  t.validateRows(l, u);
48280
48527
  for (let { localIndex: t, columnIds: n } of a) {
48281
48528
  let r = u[t];
@@ -48288,11 +48535,11 @@ function SN() {
48288
48535
  }
48289
48536
  }
48290
48537
  a.length > 0 && e.notify();
48291
- }, 0), _ < d.length ? setTimeout(v, 0) : e.finalizeSource(o).then(() => {
48538
+ }, 0), v < p.length ? setTimeout(y, 0) : e.finalizeSource(o).then(() => {
48292
48539
  t.validateUniqueness(), r();
48293
48540
  });
48294
48541
  };
48295
- v();
48542
+ y();
48296
48543
  }, 0);
48297
48544
  }), [
48298
48545
  _,
@@ -48304,43 +48551,45 @@ function SN() {
48304
48551
  t,
48305
48552
  n,
48306
48553
  u,
48307
- Ie,
48308
- Ne,
48554
+ Be,
48555
+ Le,
48309
48556
  l,
48310
- Ve,
48557
+ Ge,
48558
+ U,
48559
+ oe,
48311
48560
  f
48312
48561
  ]);
48313
48562
  return {
48314
- steps: le,
48563
+ steps: fe,
48315
48564
  activeStepIndex: p,
48316
48565
  currentStepIndex: h,
48317
- isFirstStep: pe,
48318
- isLastStep: me,
48319
- goToStep: ue,
48320
- nextStep: de,
48321
- prevStep: fe,
48566
+ isFirstStep: ge,
48567
+ isLastStep: _e,
48568
+ goToStep: pe,
48569
+ nextStep: me,
48570
+ prevStep: he,
48322
48571
  parsedCsv: _,
48323
48572
  columnMapping: b,
48324
- handleFileParsed: he,
48325
- handleFileRemoved: ge,
48326
- updateColumnMapping: Ae,
48327
- valueMapping: Ie,
48328
- autoValueMapping: je,
48329
- updateValueMapping: Le,
48330
- multiselectDelimiters: Ne,
48331
- setMultiselectDelimiter: Re,
48332
- reapplyMultiselectDelimiter: ze,
48573
+ handleFileParsed: ve,
48574
+ handleFileRemoved: be,
48575
+ updateColumnMapping: Pe,
48576
+ valueMapping: Be,
48577
+ autoValueMapping: Fe,
48578
+ updateValueMapping: Ve,
48579
+ multiselectDelimiters: Le,
48580
+ setMultiselectDelimiter: He,
48581
+ reapplyMultiselectDelimiter: Ue,
48333
48582
  pendingOptions: H,
48334
- addPendingOption: Be,
48583
+ addPendingOption: We,
48335
48584
  xlsxFile: A,
48336
48585
  sheetNames: N,
48337
48586
  selectedSheet: F,
48338
48587
  setSelectedSheet: I,
48339
- handleSheetConfirmed: ve,
48340
- handleXlsxMultiSheet: _e,
48588
+ handleSheetConfirmed: Se,
48589
+ handleXlsxMultiSheet: xe,
48341
48590
  sheetPreviews: L,
48342
48591
  primaryKey: C,
48343
- onPrimaryKeyChange: ae,
48592
+ onPrimaryKeyChange: se,
48344
48593
  primaryKeyColumns: S,
48345
48594
  pendingColumns: B,
48346
48595
  setPendingColumns: V,
@@ -48352,7 +48601,7 @@ function SN() {
48352
48601
  k(!0);
48353
48602
  try {
48354
48603
  await ld(e, "importing", Infinity, async () => {
48355
- d?.onFileImport ? await Ue() : d?.onRowsImport ? await We() : await Ge();
48604
+ d?.onFileImport ? await qe() : d?.onRowsImport ? await Je() : await W();
48356
48605
  });
48357
48606
  } finally {
48358
48607
  v(null), k(!1), i(!1);
@@ -48362,34 +48611,38 @@ function SN() {
48362
48611
  _,
48363
48612
  e,
48364
48613
  d,
48365
- Ue,
48366
- We,
48367
- Ge,
48614
+ qe,
48615
+ Je,
48616
+ W,
48368
48617
  i
48369
48618
  ]),
48370
- parseFile: Ce,
48371
- remoteSourceLoading: we,
48372
- remoteSourceError: Ee,
48373
- clearRemoteSourceError: Oe,
48374
- handleRemoteSourceSelect: ke
48619
+ parseFile: De,
48620
+ remoteSourceLoading: Oe,
48621
+ remoteSourceError: Ae,
48622
+ clearRemoteSourceError: Me,
48623
+ handleRemoteSourceSelect: Ne,
48624
+ headerRowIndex: re,
48625
+ setHeaderRowIndex: ie,
48626
+ headers: U,
48627
+ dataStartIndex: oe
48375
48628
  };
48376
48629
  }
48377
48630
  //#endregion
48378
48631
  //#region src/components/DataUploader/context/index.tsx
48379
- var CN = (0, y.createContext)(null);
48380
- function wN({ children: e }) {
48381
- let t = SN();
48382
- return /* @__PURE__ */ (0, O.jsx)(CN.Provider, {
48632
+ var JN = (0, y.createContext)(null);
48633
+ function YN({ children: e }) {
48634
+ let t = qN();
48635
+ return /* @__PURE__ */ (0, O.jsx)(JN.Provider, {
48383
48636
  value: t,
48384
48637
  children: e
48385
48638
  });
48386
48639
  }
48387
- var TN = () => {
48388
- let e = (0, y.useContext)(CN);
48640
+ var XN = () => {
48641
+ let e = (0, y.useContext)(JN);
48389
48642
  if (!e) throw Error("useDataUploaderContext must be used within DataUploaderProvider");
48390
48643
  return e;
48391
- }, EN = () => {
48392
- let { steps: e, activeStepIndex: t, currentStepIndex: n, goToStep: r } = TN();
48644
+ }, ZN = () => {
48645
+ let { steps: e, activeStepIndex: t, currentStepIndex: n, goToStep: r } = XN();
48393
48646
  return /* @__PURE__ */ (0, O.jsx)(zc, {
48394
48647
  steps: e,
48395
48648
  activeStepIndex: t,
@@ -48397,79 +48650,79 @@ var TN = () => {
48397
48650
  onStepChange: r,
48398
48651
  isProgressive: !0
48399
48652
  });
48400
- }, DN = () => /* @__PURE__ */ (0, O.jsx)(wN, { children: /* @__PURE__ */ (0, O.jsx)(EN, {}) }), ON = {
48653
+ }, QN = () => /* @__PURE__ */ (0, O.jsx)(YN, { children: /* @__PURE__ */ (0, O.jsx)(ZN, {}) }), $N = {
48401
48654
  kty: "EC",
48402
48655
  crv: "P-256",
48403
48656
  x: "wZO1Jxr21FEBDsVMzbTbF8blU2CP17c_eQY7gorO13U",
48404
48657
  y: "Nwr-tXatJZ3DxZqpUG_gOWzmpU6szTqrEL7Gnh5UGwo"
48405
- }, kN = "updog_license_grant", AN = new Set([
48658
+ }, eP = "updog_license_grant", tP = new Set([
48406
48659
  "updog.tech",
48407
48660
  "landing.updog.tech",
48408
48661
  "demo.updog.tech"
48409
48662
  ]);
48410
- function jN() {
48411
- return AN.has(window.location.hostname);
48663
+ function nP() {
48664
+ return tP.has(window.location.hostname);
48412
48665
  }
48413
- function MN() {
48666
+ function rP() {
48414
48667
  return !1;
48415
48668
  }
48416
- function NN() {
48669
+ function iP() {
48417
48670
  return "https://api.updog.tech";
48418
48671
  }
48419
- function PN(e) {
48672
+ function aP(e) {
48420
48673
  let t = e.replace(/-/g, "+").replace(/_/g, "/"), n = t + "=".repeat((4 - t.length % 4) % 4), r = atob(n), i = new Uint8Array(r.length);
48421
48674
  for (let e = 0; e < r.length; e++) i[e] = r.charCodeAt(e);
48422
48675
  return i;
48423
48676
  }
48424
- async function FN(e) {
48677
+ async function oP(e) {
48425
48678
  let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
48426
48679
  return Array.from(new Uint8Array(n)).map((e) => e.toString(16).padStart(2, "0")).join("");
48427
48680
  }
48428
- var IN = null;
48429
- async function LN() {
48430
- return IN || (IN = await crypto.subtle.importKey("jwk", ON, {
48681
+ var sP = null;
48682
+ async function cP() {
48683
+ return sP || (sP = await crypto.subtle.importKey("jwk", $N, {
48431
48684
  name: "ECDSA",
48432
48685
  namedCurve: "P-256"
48433
- }, !1, ["verify"]), IN);
48686
+ }, !1, ["verify"]), sP);
48434
48687
  }
48435
- function RN() {
48688
+ function lP() {
48436
48689
  try {
48437
- return localStorage.getItem(kN);
48690
+ return localStorage.getItem(eP);
48438
48691
  } catch {
48439
48692
  return null;
48440
48693
  }
48441
48694
  }
48442
- function zN(e) {
48695
+ function uP(e) {
48443
48696
  try {
48444
- localStorage.setItem(kN, e);
48697
+ localStorage.setItem(eP, e);
48445
48698
  } catch {}
48446
48699
  }
48447
- function BN() {
48700
+ function dP() {
48448
48701
  try {
48449
- localStorage.removeItem(kN);
48702
+ localStorage.removeItem(eP);
48450
48703
  } catch {}
48451
48704
  }
48452
- async function VN(e, t, n) {
48705
+ async function fP(e, t, n) {
48453
48706
  let r = e.indexOf(".");
48454
48707
  if (r === -1) return !1;
48455
- let i = e.slice(0, r), a = e.slice(r + 1), o = PN(i), s = PN(a), c = await LN();
48708
+ let i = e.slice(0, r), a = e.slice(r + 1), o = aP(i), s = aP(a), c = await cP();
48456
48709
  if (!await crypto.subtle.verify({
48457
48710
  name: "ECDSA",
48458
48711
  hash: "SHA-256"
48459
48712
  }, c, new Uint8Array(s), new Uint8Array(o))) return !1;
48460
48713
  let l = JSON.parse(new TextDecoder().decode(o));
48461
48714
  if (l.exp <= Math.floor(Date.now() / 1e3)) return !1;
48462
- let u = await FN(t);
48715
+ let u = await oP(t);
48463
48716
  return !(l.key !== u || l.domain !== n);
48464
48717
  }
48465
- async function HN(e) {
48466
- let t = RN();
48718
+ async function pP(e) {
48719
+ let t = lP();
48467
48720
  if (!t) return {
48468
48721
  valid: !1,
48469
48722
  errorCode: "license.invalid"
48470
48723
  };
48471
48724
  try {
48472
- if (await VN(t, e, window.location.hostname.toLowerCase().trim())) return {
48725
+ if (await fP(t, e, window.location.hostname.toLowerCase().trim())) return {
48473
48726
  valid: !0,
48474
48727
  errorCode: null
48475
48728
  };
@@ -48479,23 +48732,23 @@ async function HN(e) {
48479
48732
  errorCode: "license.invalid"
48480
48733
  };
48481
48734
  }
48482
- async function UN(e, t = !0) {
48483
- if (jN() || MN()) return {
48735
+ async function mP(e, t = !0) {
48736
+ if (nP() || rP()) return {
48484
48737
  valid: !0,
48485
48738
  errorCode: null
48486
48739
  };
48487
- let n = NN();
48740
+ let n = iP();
48488
48741
  try {
48489
48742
  let r = await fetch(`${n}/v1/validate`, { headers: { "X-API-Key": e } });
48490
48743
  if (r.ok) {
48491
48744
  let e = await r.json();
48492
- return t && e.grant && zN(e.grant), {
48745
+ return t && e.grant && uP(e.grant), {
48493
48746
  valid: !0,
48494
48747
  errorCode: null
48495
48748
  };
48496
48749
  }
48497
48750
  if (r.status >= 400 && r.status < 500) {
48498
- t && BN();
48751
+ t && dP();
48499
48752
  try {
48500
48753
  return await r.json();
48501
48754
  } catch {
@@ -48507,7 +48760,7 @@ async function UN(e, t = !0) {
48507
48760
  }
48508
48761
  throw Error(`Server error: ${r.status}`);
48509
48762
  } catch {
48510
- return t ? HN(e) : {
48763
+ return t ? pP(e) : {
48511
48764
  valid: !1,
48512
48765
  errorCode: "license.invalid"
48513
48766
  };
@@ -48515,7 +48768,7 @@ async function UN(e, t = !0) {
48515
48768
  }
48516
48769
  //#endregion
48517
48770
  //#region src/hooks/useLicenseValidation.ts
48518
- function WN(e, t, n = !0) {
48771
+ function hP(e, t, n = !0) {
48519
48772
  let [r, i] = (0, y.useState)({
48520
48773
  isValidating: t,
48521
48774
  isValid: !1,
@@ -48535,7 +48788,7 @@ function WN(e, t, n = !0) {
48535
48788
  isValidating: !0,
48536
48789
  isValid: !1,
48537
48790
  errorCode: null
48538
- }), UN(e, n).then((e) => {
48791
+ }), mP(e, n).then((e) => {
48539
48792
  r || i({
48540
48793
  isValidating: !1,
48541
48794
  isValid: e.valid,
@@ -48558,7 +48811,7 @@ function WN(e, t, n = !0) {
48558
48811
  }
48559
48812
  //#endregion
48560
48813
  //#region src/server/auth/AuthState.ts
48561
- var GN = class {
48814
+ var gP = class {
48562
48815
  token = null;
48563
48816
  get() {
48564
48817
  return this.token;
@@ -48569,13 +48822,13 @@ var GN = class {
48569
48822
  clear() {
48570
48823
  this.token = null;
48571
48824
  }
48572
- }, KN = class extends Error {
48825
+ }, _P = class extends Error {
48573
48826
  status;
48574
48827
  code;
48575
48828
  constructor(e) {
48576
48829
  super(e.message), this.name = "ScaleHttpError", this.status = e.status, this.code = e.code;
48577
48830
  }
48578
- }, qN = class {
48831
+ }, vP = class {
48579
48832
  baseUrl;
48580
48833
  apiKey;
48581
48834
  auth;
@@ -48605,7 +48858,7 @@ var GN = class {
48605
48858
  signal: r?.signal
48606
48859
  });
48607
48860
  } catch (e) {
48608
- this.notify(new KN({
48861
+ this.notify(new _P({
48609
48862
  status: 0,
48610
48863
  code: "network",
48611
48864
  message: e instanceof Error ? e.message : String(e)
@@ -48616,7 +48869,7 @@ var GN = class {
48616
48869
  try {
48617
48870
  e = await s.json();
48618
48871
  } catch {}
48619
- this.notify(new KN({
48872
+ this.notify(new _P({
48620
48873
  status: s.status,
48621
48874
  code: e.error ?? `http_${s.status}`,
48622
48875
  message: e.message ?? s.statusText
@@ -48627,23 +48880,23 @@ var GN = class {
48627
48880
  };
48628
48881
  //#endregion
48629
48882
  //#region src/server/endpoints/workspaces.ts
48630
- async function JN(e, t) {
48883
+ async function yP(e, t) {
48631
48884
  return e.post("/workspaces", {
48632
48885
  primaryKey: t.primaryKey,
48633
48886
  columns: t.columns
48634
48887
  }, { signal: t.signal });
48635
48888
  }
48636
- async function YN(e) {
48889
+ async function bP(e) {
48637
48890
  try {
48638
48891
  await e.http.delete(`/workspaces/${e.workspaceId}`, { signal: e.signal });
48639
48892
  } catch (e) {
48640
- if (e instanceof KN && e.status === 404) return;
48893
+ if (e instanceof _P && e.status === 404) return;
48641
48894
  throw e;
48642
48895
  }
48643
48896
  }
48644
48897
  //#endregion
48645
48898
  //#region src/server/endpoints/query.ts
48646
- async function XN(e, t) {
48899
+ async function xP(e, t) {
48647
48900
  let n = await e.http.post(`/workspaces/${e.workspaceId}/query`, {
48648
48901
  page: {
48649
48902
  limit: t.limit,
@@ -48661,12 +48914,12 @@ async function XN(e, t) {
48661
48914
  }
48662
48915
  //#endregion
48663
48916
  //#region src/server/ScaleClient.ts
48664
- var ZN = class {
48917
+ var SP = class {
48665
48918
  disposed = !1;
48666
48919
  constructor(e) {
48667
48920
  this.deps = e;
48668
48921
  }
48669
- onQuery = (e) => XN(this.deps, e);
48922
+ onQuery = (e) => xP(this.deps, e);
48670
48923
  onEdit = async (e) => ({
48671
48924
  rejected: !0,
48672
48925
  reason: "Edits are not yet supported in server mode (v0)."
@@ -48683,7 +48936,7 @@ var ZN = class {
48683
48936
  pageSize = void 0;
48684
48937
  scrollSensitivity = void 0;
48685
48938
  dispose = async () => {
48686
- this.disposed || (this.disposed = !0, await YN({
48939
+ this.disposed || (this.disposed = !0, await bP({
48687
48940
  http: this.deps.http,
48688
48941
  workspaceId: this.deps.workspaceId
48689
48942
  }));
@@ -48691,25 +48944,25 @@ var ZN = class {
48691
48944
  };
48692
48945
  //#endregion
48693
48946
  //#region src/server/createScaleClient.ts
48694
- async function QN(e) {
48695
- let t = new GN(), n = new qN({
48947
+ async function CP(e) {
48948
+ let t = new gP(), n = new vP({
48696
48949
  baseUrl: e.url,
48697
48950
  apiKey: e.apiKey,
48698
48951
  auth: t,
48699
48952
  onDegraded: e.onDegraded
48700
- }), { workspaceId: r, accessToken: i } = await JN(n, {
48953
+ }), { workspaceId: r, accessToken: i } = await yP(n, {
48701
48954
  primaryKey: e.primaryKey,
48702
48955
  columns: e.columns,
48703
48956
  signal: e.signal
48704
48957
  });
48705
- return t.set(i), new ZN({
48958
+ return t.set(i), new SP({
48706
48959
  workspaceId: r,
48707
48960
  http: n
48708
48961
  });
48709
48962
  }
48710
48963
  //#endregion
48711
48964
  //#region src/server/errors.ts
48712
- function $N(e, t, n) {
48965
+ function wP(e, t, n) {
48713
48966
  return {
48714
48967
  code: e,
48715
48968
  message: t,
@@ -48719,7 +48972,7 @@ function $N(e, t, n) {
48719
48972
  }
48720
48973
  //#endregion
48721
48974
  //#region src/hooks/useScaleClient.ts
48722
- function eP(e) {
48975
+ function TP(e) {
48723
48976
  let [t, n] = (0, y.useState)({ status: "idle" }), r = (0, y.useRef)(e.columns), i = (0, y.useRef)(e.primaryKey);
48724
48977
  return (0, y.useEffect)(() => {
48725
48978
  if (!e.enabled) {
@@ -48728,7 +48981,7 @@ function eP(e) {
48728
48981
  }
48729
48982
  n({ status: "bootstrapping" });
48730
48983
  let t = new AbortController(), a = null;
48731
- return QN({
48984
+ return CP({
48732
48985
  url: e.url,
48733
48986
  apiKey: e.apiKey,
48734
48987
  primaryKey: i.current,
@@ -48737,7 +48990,7 @@ function eP(e) {
48737
48990
  onDegraded: (e) => {
48738
48991
  t.signal.aborted || n({
48739
48992
  status: "failed",
48740
- error: nP(e)
48993
+ error: DP(e)
48741
48994
  });
48742
48995
  }
48743
48996
  }).then((e) => {
@@ -48752,7 +49005,7 @@ function eP(e) {
48752
49005
  }).catch((e) => {
48753
49006
  t.signal.aborted || n({
48754
49007
  status: "failed",
48755
- error: tP(e)
49008
+ error: EP(e)
48756
49009
  });
48757
49010
  }), () => {
48758
49011
  t.abort(), a?.dispose().catch(() => {});
@@ -48763,30 +49016,30 @@ function eP(e) {
48763
49016
  e.apiKey
48764
49017
  ]), t;
48765
49018
  }
48766
- function tP(e) {
48767
- return e instanceof KN ? e.status === 401 ? $N(e.code.startsWith("license.") ? e.code : "license.invalid", e.message, e) : e.status === 0 ? $N("scale.unreachable", e.message, e) : e.status >= 500 ? $N("scale.server_error", e.message, e) : $N("scale.bootstrap_failed", e.message, e) : $N("scale.bootstrap_failed", e instanceof Error ? e.message : String(e), e);
49019
+ function EP(e) {
49020
+ return e instanceof _P ? e.status === 401 ? wP(e.code.startsWith("license.") ? e.code : "license.invalid", e.message, e) : e.status === 0 ? wP("scale.unreachable", e.message, e) : e.status >= 500 ? wP("scale.server_error", e.message, e) : wP("scale.bootstrap_failed", e.message, e) : wP("scale.bootstrap_failed", e instanceof Error ? e.message : String(e), e);
48768
49021
  }
48769
- function nP(e) {
48770
- return e.status === 0 ? $N("scale.unreachable", e.message, e) : e.status === 404 ? $N("scale.workspace_lost", e.message, e) : $N("scale.server_error", e.message, e);
49022
+ function DP(e) {
49023
+ return e.status === 0 ? wP("scale.unreachable", e.message, e) : e.status === 404 ? wP("scale.workspace_lost", e.message, e) : wP("scale.server_error", e.message, e);
48771
49024
  }
48772
49025
  //#endregion
48773
49026
  //#region src/index.tsx
48774
- function rP(e) {
49027
+ function OP(e) {
48775
49028
  return e === !1 ? { licenseGrant: !1 } : { licenseGrant: e?.licenseGrant ?? !0 };
48776
49029
  }
48777
- function iP(e) {
49030
+ function kP(e) {
48778
49031
  let t = (0, y.useMemo)(() => new ed(e.onError), [e.onError]);
48779
49032
  return /* @__PURE__ */ (0, O.jsx)(kj, {
48780
49033
  errorHandler: t,
48781
49034
  children: /* @__PURE__ */ (0, O.jsx)(eh, {
48782
49035
  ...e,
48783
49036
  errorHandler: t,
48784
- children: e.showUploader ? /* @__PURE__ */ (0, O.jsx)(DN, {}) : /* @__PURE__ */ (0, O.jsx)(Tj, {})
49037
+ children: e.showUploader ? /* @__PURE__ */ (0, O.jsx)(QN, {}) : /* @__PURE__ */ (0, O.jsx)(Tj, {})
48785
49038
  })
48786
49039
  });
48787
49040
  }
48788
- function aP(e) {
48789
- let t = e.mode ?? "modal", { t: n, rtl: r } = j(), i = r ? "rtl" : "ltr", a = rP(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = WN(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.__server != null, d = eP({
49041
+ function AP(e) {
49042
+ let t = e.mode ?? "modal", { t: n, rtl: r } = j(), i = r ? "rtl" : "ltr", a = OP(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = hP(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.__server != null, d = TP({
48790
49043
  enabled: !s && c && u,
48791
49044
  url: e.__server?.url ?? "",
48792
49045
  apiKey: e.apiKey,
@@ -48841,7 +49094,7 @@ function aP(e) {
48841
49094
  code: e,
48842
49095
  message: "License validation failed",
48843
49096
  source: "license"
48844
- } }), E = () => s ? w(n("dataEditor.license.loading")) : c ? u && d.status === "bootstrapping" ? w(n("dataEditor.connecting.label")) : u && d.status === "failed" ? /* @__PURE__ */ (0, O.jsx)(Dj, { error: d.error }) : /* @__PURE__ */ (0, O.jsx)(iP, { ...C }) : T(l ?? "license.invalid");
49097
+ } }), E = () => s ? w(n("dataEditor.license.loading")) : c ? u && d.status === "bootstrapping" ? w(n("dataEditor.connecting.label")) : u && d.status === "failed" ? /* @__PURE__ */ (0, O.jsx)(Dj, { error: d.error }) : /* @__PURE__ */ (0, O.jsx)(kP, { ...C }) : T(l ?? "license.invalid");
48845
49098
  return t === "inline" ? /* @__PURE__ */ (0, O.jsx)("div", {
48846
49099
  className: "updog__data-editor updog__data-editor-inline",
48847
49100
  dir: i,
@@ -48861,18 +49114,18 @@ function aP(e) {
48861
49114
  submitText: n("dataEditor.confirmClose.action")
48862
49115
  })] });
48863
49116
  }
48864
- function oP(e) {
49117
+ function jP(e) {
48865
49118
  let { translations: t, rtl: n = !1, locale: r = "en", className: i, ...a } = e;
48866
49119
  return /* @__PURE__ */ (0, O.jsx)(A, {
48867
49120
  translations: t,
48868
49121
  rtl: n,
48869
49122
  locale: r,
48870
- children: /* @__PURE__ */ (0, O.jsx)(aP, { ...a })
49123
+ children: /* @__PURE__ */ (0, O.jsx)(AP, { ...a })
48871
49124
  });
48872
49125
  }
48873
49126
  //#endregion
48874
49127
  //#region src/wc.ts
48875
- var sP = {
49128
+ var MP = {
48876
49129
  "api-key": {
48877
49130
  prop: "apiKey",
48878
49131
  type: "string"
@@ -48905,12 +49158,12 @@ var sP = {
48905
49158
  prop: "mode",
48906
49159
  type: "string"
48907
49160
  }
48908
- }, cP = class extends HTMLElement {
49161
+ }, NP = class extends HTMLElement {
48909
49162
  _root = null;
48910
49163
  _props = {};
48911
49164
  _renderScheduled = !1;
48912
49165
  static get observedAttributes() {
48913
- return Object.keys(sP);
49166
+ return Object.keys(MP);
48914
49167
  }
48915
49168
  connectedCallback() {
48916
49169
  this._root = (0, v.createRoot)(this), this._props.mode !== "inline" && (this._props.onClose = () => {
@@ -48921,7 +49174,7 @@ var sP = {
48921
49174
  this._root?.unmount(), this._root = null;
48922
49175
  }
48923
49176
  attributeChangedCallback(e, t, n) {
48924
- let r = sP[e];
49177
+ let r = MP[e];
48925
49178
  r && (this._props[r.prop] = r.type === "boolean" ? n !== null : n, e === "mode" && (n === "inline" ? delete this._props.onClose : this._props.onClose = () => {
48926
49179
  this.dispatchEvent(new CustomEvent("close", { bubbles: !0 }));
48927
49180
  }), this._scheduleRender());
@@ -48938,11 +49191,11 @@ var sP = {
48938
49191
  }
48939
49192
  _scheduleRender() {
48940
49193
  this._renderScheduled || (this._renderScheduled = !0, queueMicrotask(() => {
48941
- this._renderScheduled = !1, this._root && this._root.render((0, y.createElement)(oP, this._props));
49194
+ this._renderScheduled = !1, this._root && this._root.render((0, y.createElement)(jP, this._props));
48942
49195
  }));
48943
49196
  }
48944
49197
  };
48945
- for (let e of /* @__PURE__ */ "columns.primaryKey.apiKey.className.localStorage.loadData.__server.onComplete.translations.importFormats.exportFormats.remoteSources.enableDeleteRow.enableAddRow.enableCreateColumn.onColumnMatch.onValueMatch.synonyms.sampleData.rowHeight.headerHeight.locale.variant.rtl.readonly.mode.chat".split(".")) Object.defineProperty(cP.prototype, e, {
49198
+ for (let e of /* @__PURE__ */ "columns.primaryKey.apiKey.className.localStorage.loadData.__server.onComplete.translations.importFormats.exportFormats.remoteSources.enableDeleteRow.enableAddRow.enableCreateColumn.onColumnMatch.onValueMatch.synonyms.sampleData.rowHeight.headerHeight.locale.variant.rtl.readonly.mode.chat".split(".")) Object.defineProperty(NP.prototype, e, {
48946
49199
  get() {
48947
49200
  return this._props[e];
48948
49201
  },
@@ -48952,7 +49205,7 @@ for (let e of /* @__PURE__ */ "columns.primaryKey.apiKey.className.localStorage.
48952
49205
  enumerable: !0,
48953
49206
  configurable: !0
48954
49207
  });
48955
- Object.defineProperty(cP.prototype, "open", {
49208
+ Object.defineProperty(NP.prototype, "open", {
48956
49209
  get() {
48957
49210
  return this.hasAttribute("open");
48958
49211
  },
@@ -48961,5 +49214,5 @@ Object.defineProperty(cP.prototype, "open", {
48961
49214
  },
48962
49215
  enumerable: !0,
48963
49216
  configurable: !0
48964
- }), customElements.define("updog-editor", cP);
49217
+ }), customElements.define("updog-editor", NP);
48965
49218
  //#endregion