@updog/data-editor-wc 0.1.49 → 0.1.51

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