@updog/data-editor 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2026 Mikhail Kutateladze. All rights reserved.
1
+ Copyright (c) 2026 Updog Software Solutions FZCO. All rights reserved.
2
2
 
3
3
  ================================================================================
4
4
  UPDOG SDK — COMMERCIAL LICENSE
@@ -9,7 +9,7 @@ Copyright (c) 2026 Mikhail Kutateladze. All rights reserved.
9
9
  1. DEFINITIONS
10
10
  --------------------------------------------------------------------------------
11
11
 
12
- "Licensor" Mikhail Kutateladze, the copyright holder of the Software.
12
+ "Licensor" Updog Software Solutions FZCO, the copyright holder of the Software.
13
13
 
14
14
  "Software" The Updog SDK, including all source code, compiled artifacts,
15
15
  documentation, and associated files distributed as an npm
package/README.md CHANGED
@@ -1,8 +1,18 @@
1
1
  # @updog/data-editor
2
2
 
3
- Client-side data importer and spreadsheet editor SDK for React. Your users import files, match columns to your schema, fix errors, and submit clean data. Edits happen inline, in the browser, at 1M+ rows.
3
+ Client-side CSV importer and spreadsheet editor SDK for React. Your users import files, match columns to your schema, fix errors, and submit clean data. Edits happen inline, in the browser, at 1M+ rows.
4
4
 
5
- > **Not using React?** Use the framework-agnostic Web Component build — [`@updog/data-editor-wc`](https://www.npmjs.com/package/@updog/data-editor-wc) — for Angular, Vue, Svelte, or vanilla JS.
5
+ ## What is @updog/data-editor
6
+
7
+ @updog/data-editor is a commercial React SDK that embeds a complete data import wizard and spreadsheet editor into your application.
8
+
9
+ - **Import** CSV, Excel (XLSX), TSV, JSON, and XML — column auto-matching, value mapping, multi-source merging, validation
10
+ - **Edit** 1M+ rows with undo/redo, find & replace, copy/paste, fill handle, sorting, filtering, and bulk transforms
11
+ - **Submit** clean data through a single onComplete callback, classified into insert / update / delete
12
+
13
+ Everything runs client-side. Files are parsed, validated, and edited in the user's browser — no upload server, no data residency, no DPA required.
14
+
15
+ > **Not on React?** The same SDK ships as a framework-agnostic Web Component — [`@updog/data-editor-wc`](https://www.npmjs.com/package/@updog/data-editor-wc) — for Vue, Angular, Svelte, or vanilla JS.
6
16
 
7
17
  ## Requirements
8
18
 
@@ -388,6 +398,18 @@ npm install @updog/data-editor-wc
388
398
 
389
399
  See [@updog/data-editor-wc](https://www.npmjs.com/package/@updog/data-editor-wc).
390
400
 
401
+ ## FAQ
402
+
403
+ **Does my user's data leave the browser?** No. Parsing, validation, mapping, and editing all run client-side. Your code controls when (and whether) data is submitted to your own backend.
404
+
405
+ **Is there a row limit?** No hard cap. The grid is engineered for 1M+ rows using canvas rendering and virtual scrolling.
406
+
407
+ **Are there per-import or per-row fees?** No. Pricing is flat per production domain. See [updog.tech/#pricing](https://updog.tech/#pricing).
408
+
409
+ **Can I white-label?** Yes, on every plan including the free tier. Strip all Updog branding via CSS theming.
410
+
411
+ **Which file formats are supported?** CSV, Excel (XLSX), TSV, JSON, and XML on both import and export.
412
+
391
413
  ## License
392
414
 
393
415
  Commercial — see [LICENSE](./LICENSE) for the full terms of the Updog SDK Commercial License v1.0. Contact `admin@updog.tech` for enterprise licensing. Third-party dependencies are listed in `THIRD_PARTY_NOTICES.txt`.
package/index.d.ts CHANGED
@@ -3005,10 +3005,10 @@ type DataEditorCommonProps<TRow extends DataEditorRow = DataEditorRow> = DataEdi
3005
3005
  /** Your Updog license key. Validated on each open. */
3006
3006
  apiKey: string;
3007
3007
  /**
3008
- * Connect to a self-hosted Updog Scale binary. When provided, the SDK
3009
- * delegates all data operations to the Scale server at the given URL.
3008
+ * @internal
3009
+ * Reserved for future server-delegated mode. Not part of the public API.
3010
3010
  */
3011
- server?: ScaleServerConfig;
3011
+ __server?: ScaleServerConfig;
3012
3012
  /**
3013
3013
  * Controls what the editor stores in `localStorage`. Set to `false` to
3014
3014
  * disable all local storage usage.
@@ -3140,4 +3140,4 @@ declare function exportDataEditor<TRow extends DataEditorRow>(params: ExportPara
3140
3140
  declare function DataEditor<TRow extends DataEditorRow = DataEditorRow>(allProps: DataEditorProps<TRow>): react_jsx_runtime.JSX.Element;
3141
3141
 
3142
3142
  export { DataEditor, downloadExampleFile, exportDataEditor };
3143
- export type { CellValidator, ChatContext, ChatErrorSummary, ChatResponseChunk, ChatRow, ChatRowStatus, ChunkSourceOptions, DataEditorChat, DataEditorColumn, DataEditorFormat, DataEditorInlineProps, DataEditorLocalStorage, DataEditorModalProps, DataEditorMode, DataEditorProps, DataEditorResult, DataEditorRow, DataEditorSourceResult, DataEditorTranslations, DataEditorVariant, RemoteSource, ResultRow, ScaleServerConfig, UpdogError, UpdogErrorCode, ValidationError, ValueMatchInput, ValueMatchOutput };
3143
+ export type { CellValidator, ChatContext, ChatErrorSummary, ChatResponseChunk, ChatRow, ChatRowStatus, ChunkSourceOptions, DataEditorChat, DataEditorColumn, DataEditorFormat, DataEditorInlineProps, DataEditorLocalStorage, DataEditorModalProps, DataEditorMode, DataEditorProps, DataEditorResult, DataEditorRow, DataEditorSourceResult, DataEditorTranslations, DataEditorVariant, RemoteSource, ResultRow, UpdogError, UpdogErrorCode, ValidationError, ValueMatchInput, ValueMatchOutput };
package/index.js CHANGED
@@ -4123,12 +4123,12 @@ var ys = "backend", bs = "manual", xs = class {
4123
4123
  _finalize(e, t, n, r) {
4124
4124
  let i = this._host;
4125
4125
  this._validateFields(e, 0, () => {
4126
- i.setBulkMode(!1), i.flushBulkMode(e), i.skipNotify(!1);
4126
+ i.setBulkMode(!1);
4127
4127
  for (let t of e) if (t.newValues.size === 0 && t.oldValues.size > 0) for (let e of t.oldValues.keys()) {
4128
4128
  let n = i.getRowById(e);
4129
4129
  n && t.newValues.set(e, n[t.field]);
4130
4130
  }
4131
- if (e.length === 0) {
4131
+ if (i.flushBulkMode(e), i.skipNotify(!1), e.length === 0) {
4132
4132
  i.setPhase("idle"), i.notify(), this._activeDeltas = null;
4133
4133
  return;
4134
4134
  }
@@ -13018,7 +13018,7 @@ async function Lh(e) {
13018
13018
  //#endregion
13019
13019
  //#region src/components/DataEditor/ConfirmCompleteDialog/index.tsx
13020
13020
  var Rh = ({ open: e, onClose: t, onConfirm: n }) => {
13021
- let { store: r } = X(), { t: i } = q(), { newRowCount: a, editedRowCount: o, deletedRowCount: s, errorCount: c } = Mo(r), l = c > 0;
13021
+ let { store: r } = X(), { t: i } = q(), { newRowCount: a, dirtyRowCount: o, deletedRowCount: s, errorCount: c } = Mo(r), l = o - a, u = c > 0;
13022
13022
  return /* @__PURE__ */ w(Vi, {
13023
13023
  open: e,
13024
13024
  onOpenChange: t,
@@ -13035,9 +13035,9 @@ var Rh = ({ open: e, onClose: t, onConfirm: n }) => {
13035
13035
  as: "li",
13036
13036
  children: i("dataEditor.confirmSubmit.createRows", { count: a })
13037
13037
  }),
13038
- o > 0 && /* @__PURE__ */ C(J, {
13038
+ l > 0 && /* @__PURE__ */ C(J, {
13039
13039
  as: "li",
13040
- children: i("dataEditor.confirmSubmit.updateRows", { count: o })
13040
+ children: i("dataEditor.confirmSubmit.updateRows", { count: l })
13041
13041
  }),
13042
13042
  s > 0 && /* @__PURE__ */ C(J, {
13043
13043
  as: "li",
@@ -13045,7 +13045,7 @@ var Rh = ({ open: e, onClose: t, onConfirm: n }) => {
13045
13045
  })
13046
13046
  ]
13047
13047
  }),
13048
- l && /* @__PURE__ */ C(ti, {
13048
+ u && /* @__PURE__ */ C(ti, {
13049
13049
  color: "yellow",
13050
13050
  text: i("dataEditor.confirmSubmit.bannerTitle", { count: c })
13051
13051
  })
@@ -25456,9 +25456,9 @@ function RT(e) {
25456
25456
  });
25457
25457
  }
25458
25458
  function zT(e) {
25459
- let t = e.mode ?? "modal", { t: n, rtl: r } = q(), i = r ? "rtl" : "ltr", a = LT(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = wT(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.server != null, d = PT({
25459
+ let t = e.mode ?? "modal", { t: n, rtl: r } = q(), i = r ? "rtl" : "ltr", a = LT(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = wT(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.__server != null, d = PT({
25460
25460
  enabled: !s && c && u,
25461
- url: e.server?.url ?? "",
25461
+ url: e.__server?.url ?? "",
25462
25462
  apiKey: e.apiKey,
25463
25463
  primaryKey: e.primaryKey,
25464
25464
  columns: e.columns
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@updog/data-editor",
3
- "version": "0.1.11",
4
- "description": "Enterprise-grade spreadsheet editor SDK for React. Edit large datasets with validation, undo/redo, CSV/XLSX import, and multi-source merging.",
3
+ "version": "0.1.13",
4
+ "description": "Client-side CSV importer and spreadsheet editor SDK for React. Import CSV, Excel, JSON, TSV, and XML, match columns, validate, and edit 1M+ rows entirely in the browser.",
5
5
  "author": "Mikhail Kutateladze <admin@updog.tech>",
6
6
  "homepage": "https://updog.tech",
7
7
  "bugs": {
@@ -50,8 +50,15 @@
50
50
  "react-dom": "^18.0.0 || ^19.0.0"
51
51
  },
52
52
  "keywords": [
53
+ "csv-importer",
54
+ "csv-import",
55
+ "data-import",
56
+ "data-import-sdk",
57
+ "spreadsheet-editor",
53
58
  "react",
54
- "spreadsheet",
59
+ "react-csv",
60
+ "react-csv-importer",
61
+ "client-side",
55
62
  "data-editor",
56
63
  "csv",
57
64
  "xlsx",