@updog/data-editor-wc 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,10 +1,18 @@
1
1
  # @updog/data-editor-wc
2
2
 
3
- Client-side data importer and spreadsheet editor SDK, shipped as a Web Component. 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, shipped as a Web Component for Vue, Angular, Svelte, and vanilla JS. 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
- Framework-agnostic works with vanilla JS, Angular, Vue, Svelte, or any framework that renders HTML.
5
+ ## What is @updog/data-editor-wc
6
6
 
7
- > **Using React?** Use the first-class React SDK instead [`@updog/data-editor`](https://www.npmjs.com/package/@updog/data-editor) for typed props, hooks-friendly integration, and a smaller bundle (shares your app's React).
7
+ @updog/data-editor-wc is a commercial Web Component that embeds a complete data import wizard and spreadsheet editor into any frontend stack. Same engine as the React SDK; framework-agnostic packaging.
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
+ > **Using React?** The same SDK ships as a first-class React component — [`@updog/data-editor`](https://www.npmjs.com/package/@updog/data-editor) — with typed props, hooks-friendly integration, and a smaller bundle (shares your app's React).
8
16
 
9
17
  ## Requirements
10
18
 
@@ -467,6 +475,20 @@ npm install @updog/data-editor
467
475
 
468
476
  See [@updog/data-editor](https://www.npmjs.com/package/@updog/data-editor).
469
477
 
478
+ ## FAQ
479
+
480
+ **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.
481
+
482
+ **Which frameworks does the Web Component support?** Vue, Angular, Svelte, vanilla JS, and any other framework that renders HTML. For React, install `@updog/data-editor` instead.
483
+
484
+ **Is there a row limit?** No hard cap. The grid is engineered for 1M+ rows using canvas rendering and virtual scrolling.
485
+
486
+ **Are there per-import or per-row fees?** No. Pricing is flat per production domain. See [updog.tech/#pricing](https://updog.tech/#pricing).
487
+
488
+ **Can I white-label?** Yes, on every plan including the free tier. Strip all Updog branding via CSS theming.
489
+
490
+ **Which file formats are supported?** CSV, Excel (XLSX), TSV, JSON, and XML on both import and export.
491
+
470
492
  ## License
471
493
 
472
494
  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 bundled with this package are listed in `THIRD_PARTY_NOTICES.txt`.
package/index.d.ts CHANGED
@@ -1301,10 +1301,10 @@ type DataEditorCommonProps<TRow extends DataEditorRow = DataEditorRow> = DataEdi
1301
1301
  /** Your Updog license key. Validated on each open. */
1302
1302
  apiKey: string;
1303
1303
  /**
1304
- * Connect to a self-hosted Updog Scale binary. When provided, the SDK
1305
- * delegates all data operations to the Scale server at the given URL.
1304
+ * @internal
1305
+ * Reserved for future server-delegated mode. Not part of the public API.
1306
1306
  */
1307
- server?: ScaleServerConfig;
1307
+ __server?: ScaleServerConfig;
1308
1308
  /**
1309
1309
  * Controls what the editor stores in `localStorage`. Set to `false` to
1310
1310
  * disable all local storage usage.
package/index.js CHANGED
@@ -16137,12 +16137,12 @@ var Ul = "backend", Wl = "manual", Gl = class {
16137
16137
  _finalize(e, t, n, r) {
16138
16138
  let i = this._host;
16139
16139
  this._validateFields(e, 0, () => {
16140
- i.setBulkMode(!1), i.flushBulkMode(e), i.skipNotify(!1);
16140
+ i.setBulkMode(!1);
16141
16141
  for (let t of e) if (t.newValues.size === 0 && t.oldValues.size > 0) for (let e of t.oldValues.keys()) {
16142
16142
  let n = i.getRowById(e);
16143
16143
  n && t.newValues.set(e, n[t.field]);
16144
16144
  }
16145
- if (e.length === 0) {
16145
+ if (i.flushBulkMode(e), i.skipNotify(!1), e.length === 0) {
16146
16146
  i.setPhase("idle"), i.notify(), this._activeDeltas = null;
16147
16147
  return;
16148
16148
  }
@@ -25233,7 +25233,7 @@ async function Mv(e) {
25233
25233
  //#endregion
25234
25234
  //#region src/components/DataEditor/ConfirmCompleteDialog/index.tsx
25235
25235
  var Nv = ({ open: e, onClose: t, onConfirm: n }) => {
25236
- let { store: r } = Bd(), { t: i } = k(), { newRowCount: a, editedRowCount: o, deletedRowCount: s, errorCount: c } = nl(r), l = c > 0;
25236
+ let { store: r } = Bd(), { t: i } = k(), { newRowCount: a, dirtyRowCount: o, deletedRowCount: s, errorCount: c } = nl(r), l = o - a, u = c > 0;
25237
25237
  return /* @__PURE__ */ (0, E.jsxs)(fs, {
25238
25238
  open: e,
25239
25239
  onOpenChange: t,
@@ -25250,9 +25250,9 @@ var Nv = ({ open: e, onClose: t, onConfirm: n }) => {
25250
25250
  as: "li",
25251
25251
  children: i("dataEditor.confirmSubmit.createRows", { count: a })
25252
25252
  }),
25253
- o > 0 && /* @__PURE__ */ (0, E.jsx)(W, {
25253
+ l > 0 && /* @__PURE__ */ (0, E.jsx)(W, {
25254
25254
  as: "li",
25255
- children: i("dataEditor.confirmSubmit.updateRows", { count: o })
25255
+ children: i("dataEditor.confirmSubmit.updateRows", { count: l })
25256
25256
  }),
25257
25257
  s > 0 && /* @__PURE__ */ (0, E.jsx)(W, {
25258
25258
  as: "li",
@@ -25260,7 +25260,7 @@ var Nv = ({ open: e, onClose: t, onConfirm: n }) => {
25260
25260
  })
25261
25261
  ]
25262
25262
  }),
25263
- l && /* @__PURE__ */ (0, E.jsx)(Ke, {
25263
+ u && /* @__PURE__ */ (0, E.jsx)(Ke, {
25264
25264
  color: "yellow",
25265
25265
  text: i("dataEditor.confirmSubmit.bannerTitle", { count: c })
25266
25266
  })
@@ -51675,9 +51675,9 @@ function GB(e) {
51675
51675
  });
51676
51676
  }
51677
51677
  function KB(e) {
51678
- let t = e.mode ?? "modal", { t: n, rtl: r } = k(), i = r ? "rtl" : "ltr", a = WB(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = jB(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.server != null, d = VB({
51678
+ let t = e.mode ?? "modal", { t: n, rtl: r } = k(), i = r ? "rtl" : "ltr", a = WB(e.localStorage), o = t === "modal" ? e.open : !0, { isValidating: s, isValid: c, errorCode: l } = jB(e.apiKey, t === "modal" ? o : !0, a.licenseGrant), u = e.__server != null, d = VB({
51679
51679
  enabled: !s && c && u,
51680
- url: e.server?.url ?? "",
51680
+ url: e.__server?.url ?? "",
51681
51681
  apiKey: e.apiKey,
51682
51682
  primaryKey: e.primaryKey,
51683
51683
  columns: e.columns
@@ -51825,7 +51825,7 @@ var JB = {
51825
51825
  }));
51826
51826
  }
51827
51827
  };
51828
- 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(YB.prototype, e, {
51828
+ 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(YB.prototype, e, {
51829
51829
  get() {
51830
51830
  return this._props[e];
51831
51831
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@updog/data-editor-wc",
3
- "version": "0.1.11",
4
- "description": "Web Component wrapper for @updog/data-editor. Framework-agnostic, zero dependencies.",
3
+ "version": "0.1.13",
4
+ "description": "Client-side CSV importer and spreadsheet editor SDK as a Web Component. Drop into Vue, Angular, Svelte, or vanilla JS. Import CSV, Excel, JSON; edit 1M+ rows entirely in the browser.",
5
5
  "author": "Mikhail Kutateladze <admin@updog.tech>",
6
6
  "homepage": "https://updog.tech",
7
7
  "bugs": {
@@ -30,9 +30,17 @@
30
30
  "THIRD_PARTY_NOTICES.txt"
31
31
  ],
32
32
  "keywords": [
33
+ "csv-importer",
34
+ "csv-import",
35
+ "data-import",
36
+ "data-import-sdk",
37
+ "spreadsheet-editor",
33
38
  "web-component",
34
39
  "custom-element",
35
- "spreadsheet",
40
+ "vue-csv-importer",
41
+ "angular-csv-importer",
42
+ "svelte-csv-importer",
43
+ "client-side",
36
44
  "data-editor",
37
45
  "csv",
38
46
  "xlsx"