@fileverse-dev/dsheet 4.1.21 → 4.1.23-stabilise-package-1

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 (97) hide show
  1. package/dist/editor/components/editor-workbook.d.ts +6 -0
  2. package/dist/editor/components/sidebar/editor-right-sidebar.d.ts +3 -1
  3. package/dist/editor/components/sidebar/sidebar-offsets.d.ts +12 -0
  4. package/dist/editor/components/sidebar/sidebar-offsets.test.d.ts +1 -0
  5. package/dist/editor/contexts/editor-context.d.ts +5 -0
  6. package/dist/editor/hooks/use-editor-sync.d.ts +5 -1
  7. package/dist/editor/types.d.ts +42 -0
  8. package/dist/editor/utils/activate-sheet-for-link.d.ts +3 -0
  9. package/dist/editor/utils/active-sheet-keeper.d.ts +21 -0
  10. package/dist/editor/utils/after-update-cell.d.ts +2 -0
  11. package/dist/editor/utils/after-update-cell.test.d.ts +1 -0
  12. package/dist/editor/utils/apply-comment-markers.d.ts +3 -1
  13. package/dist/editor/utils/apply-comment-markers.test.d.ts +1 -0
  14. package/dist/editor/utils/calc-chain-ydoc-update.test.d.ts +1 -0
  15. package/dist/editor/utils/content-change.d.ts +48 -0
  16. package/dist/editor/utils/content-change.test.d.ts +1 -0
  17. package/dist/editor/utils/content-fingerprint.d.ts +37 -0
  18. package/dist/editor/utils/content-fingerprint.test.d.ts +1 -0
  19. package/dist/editor/utils/editor-handle.d.ts +1 -1
  20. package/dist/editor/utils/format-gate.d.ts +23 -0
  21. package/dist/editor/utils/format-gate.test.d.ts +1 -0
  22. package/dist/editor/utils/navigate-to-sheet.d.ts +22 -0
  23. package/dist/editor/utils/patch-plain-celldata.d.ts +19 -0
  24. package/dist/editor/utils/patch-plain-celldata.test.d.ts +1 -0
  25. package/dist/editor/utils/rebuild-indexeddb-store.d.ts +12 -0
  26. package/dist/editor/utils/rebuild-indexeddb-store.failure.test.d.ts +1 -0
  27. package/dist/editor/utils/rebuild-indexeddb-store.test.d.ts +1 -0
  28. package/dist/editor/utils/remote-apply-guard.d.ts +26 -0
  29. package/dist/editor/utils/remote-apply-guard.test.d.ts +1 -0
  30. package/dist/editor/utils/sheet-ydoc-sync-utils.d.ts +13 -4
  31. package/dist/editor/utils/sheet-ydoc-sync-utils.test.d.ts +1 -0
  32. package/dist/editor/utils/structural-edit-formula-sync.test.d.ts +1 -0
  33. package/dist/editor/utils/update-ydoc.d.ts +9 -1
  34. package/dist/{es-S4GKlN-t.js → es-BlDQ6jCL.js} +1 -0
  35. package/dist/{executeStringFunction-CQ922vEp.js → executeStringFunction-DKA5MuP0.js} +7092 -6760
  36. package/dist/formula.js +1 -1
  37. package/dist/{hi-DMMTDTxZ.js → hi-CP0ta0Yk.js} +1 -0
  38. package/dist/{index-BZbTaVjU.js → index-ypRdpDnX.js} +22658 -21718
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.es.js +16 -16
  41. package/dist/persistence-utils-CSKBobX8.js +151 -0
  42. package/dist/persistence-utils.d.ts +2 -0
  43. package/dist/persistence.append.test.d.ts +1 -0
  44. package/dist/persistence.d.ts +13 -0
  45. package/dist/persistence.fingerprint.test.d.ts +1 -0
  46. package/dist/persistence.js +122 -74
  47. package/dist/sheet-engine/core/api/cell.d.ts +20 -1
  48. package/dist/sheet-engine/core/api/remote-apply.test.d.ts +1 -0
  49. package/dist/sheet-engine/core/index.d.ts +1 -1
  50. package/dist/sheet-engine/core/locale/en.d.ts +1 -0
  51. package/dist/sheet-engine/core/locale/es.d.ts +1 -0
  52. package/dist/sheet-engine/core/locale/hi.d.ts +1 -0
  53. package/dist/sheet-engine/core/locale/zh.d.ts +1 -0
  54. package/dist/sheet-engine/core/locale/zh_tw.d.ts +1 -0
  55. package/dist/sheet-engine/core/modules/b6-ydoc-writes.test.d.ts +1 -0
  56. package/dist/sheet-engine/core/modules/border.d.ts +9 -0
  57. package/dist/sheet-engine/core/modules/cell-shift.d.ts +11 -0
  58. package/dist/sheet-engine/core/modules/cell.commit-ydoc.test.d.ts +1 -0
  59. package/dist/sheet-engine/core/modules/dataVerification.d.ts +15 -0
  60. package/dist/sheet-engine/core/modules/engine-hot-spots.test.d.ts +1 -0
  61. package/dist/sheet-engine/core/modules/formula-async-eval.d.ts +5 -0
  62. package/dist/sheet-engine/core/modules/formula-narrowing.test.d.ts +1 -0
  63. package/dist/sheet-engine/core/modules/formula-snapshot-eval.d.ts +2 -0
  64. package/dist/sheet-engine/core/modules/formula-transitive-deps.d.ts +5 -1
  65. package/dist/sheet-engine/core/modules/formula-warmup.d.ts +37 -0
  66. package/dist/sheet-engine/core/modules/formula-warmup.test.d.ts +1 -0
  67. package/dist/sheet-engine/core/modules/formula.d.ts +48 -1
  68. package/dist/sheet-engine/core/modules/formula.dep-graph.test.d.ts +1 -0
  69. package/dist/sheet-engine/core/modules/formula.str-change.test.d.ts +1 -0
  70. package/dist/sheet-engine/core/modules/formula.wide-seed.test.d.ts +1 -0
  71. package/dist/sheet-engine/core/modules/history-calc-chain.d.ts +33 -0
  72. package/dist/sheet-engine/core/modules/history-calc-chain.test.d.ts +1 -0
  73. package/dist/sheet-engine/core/modules/index.d.ts +3 -2
  74. package/dist/sheet-engine/core/paste/paste-dep-graph.test.d.ts +1 -0
  75. package/dist/sheet-engine/core/paste-helpers/calculate-range-cell-size.d.ts +14 -0
  76. package/dist/sheet-engine/core/paste-helpers/calculate-range-cell-size.test.d.ts +1 -0
  77. package/dist/sheet-engine/core/settings.d.ts +7 -1
  78. package/dist/sheet-engine/core/utils/ydoc-celldata-changes.d.ts +16 -0
  79. package/dist/sheet-engine/react/components/ContextMenu/sheet-tab-menu-items.d.ts +15 -0
  80. package/dist/sheet-engine/react/components/Workbook/api.d.ts +4 -0
  81. package/dist/sheet-engine/react/components/Workbook/denomination-scan.d.ts +16 -0
  82. package/dist/sheet-engine/react/components/Workbook/denomination-scan.test.d.ts +1 -0
  83. package/dist/sheet-engine/react/components/Workbook/index.d.ts +2 -0
  84. package/dist/style.css +1 -1
  85. package/dist/sync-local/SyncManager.d.ts +5 -2
  86. package/dist/sync-local/SyncManager.mirror.test.d.ts +1 -0
  87. package/dist/sync-local/SyncManager.remote-apply.test.d.ts +1 -0
  88. package/dist/sync-local/types/index.d.ts +5 -3
  89. package/dist/{template-data-list-BYOIK_Nd.js → template-data-list-apgmwRAT.js} +18 -10
  90. package/dist/{use-xlsx-import-impl-Bzyh3J-h.js → use-xlsx-import-impl-DQ3tpIAe.js} +120 -119
  91. package/dist/{xlsx-defined-names-CGkkDs3a.js → xlsx-defined-names-CVVLxbe-.js} +2 -2
  92. package/dist/{xlsx-export-impl-8QvOUcjc.js → xlsx-export-impl-ghSoFZBz.js} +4 -4
  93. package/dist/{xlsx-hyperlink-inline-CEmgXple.js → xlsx-hyperlink-inline-DXj7AkSf.js} +2 -2
  94. package/dist/{zh-Bv4KIDiJ.js → zh-CmOCFd5t.js} +1 -0
  95. package/dist/{zh_tw-BdpsK45h.js → zh_tw-BqyRw1gX.js} +1 -0
  96. package/package.json +2 -2
  97. package/dist/persistence-utils-BXFajzvq.js +0 -98
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { executeStringFunction } from './editor/utils/executeStringFunction';
5
5
  export { FLVURL } from '@fileverse-dev/formulajs';
6
6
  export { loadLocale } from './sheet-engine/core';
7
7
  export type { ErrorMessageHandlerReturnType, DataBlockEvent, DataBlockEventType, ApiKeyStorage, DSheetEditorHandle, DSheetPermissionMode, } from './editor/types';
8
- export type { PanelConfig, PanelId, BuiltInPanelType } from './editor/types';
8
+ export type { PanelConfig, PanelId, BuiltInPanelType, DSheetContentChange, } from './editor/types';
9
9
  export type { CommentThread, CommentReply, CommentActionParams, CommentsConfig, CommentAnchorMove, } from './editor/types/comments';
10
10
  export { CommentAction } from './editor/types/comments';
11
11
  export { remapCommentAnchors } from './editor/utils/remap-comment-anchors';
package/dist/index.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C as s, d as o, f as t, S as r, g as l, h as n, j as d, T as S, k as c, l as i, n as m, o as h, p, q as C, t as u, u as E, v as F, w as g, x, z as R, A, B as f, D as I, E as L, F as T, G as w, H as y, I as v, J as D, K as M, L as b, M as k, N as z, O, P } from "./index-BZbTaVjU.js";
2
- import { cy as G, cz as K, cA as U, cG as X, bs as _, e as j, f as B, l as H, a as J, dj as N, dk as q, bb as Y, dl as Z, dm as Q, dr as W, ds as $, du as ee, I as ae, dJ as se, eg as oe, b4 as te } from "./executeStringFunction-CQ922vEp.js";
1
+ import { C as s, f as o, g as t, S as r, h as l, j as n, k as d, T as S, l as c, n as i, o as m, p as h, q as p, t as C, u, v as E, w as F, x as g, z as x, A as R, B as L, D as f, E as A, F as I, G as T, H as w, I as y, J as D, K as v, L as M, M as b, N as k, O as z, P as O, Q as P } from "./index-ypRdpDnX.js";
2
+ import { cD as B, cE as K, cF as U, cL as X, bx as _, e as G, f as H, l as J, a as j, dr as N, ds as Q, bg as q, dt as Y, du as Z, dy as W, dz as $, dB as ee, J as ae, dQ as se, eo as oe, b9 as te } from "./executeStringFunction-DKA5MuP0.js";
3
3
  import { FLVURL as le } from "@fileverse-dev/formulajs";
4
4
  import { E as de, S as Se } from "./constants-8Ij49Lxv.js";
5
5
  export {
@@ -15,7 +15,7 @@ export {
15
15
  d as SupportedChain,
16
16
  S as TEMPLATES,
17
17
  c as api,
18
- G as clearColumnsCellsFormat,
18
+ B as clearColumnsCellsFormat,
19
19
  i as clearFilter,
20
20
  K as clearRowsCellsFormat,
21
21
  U as clearSelectedCellFormat,
@@ -25,35 +25,35 @@ export {
25
25
  _ as deleteSelectedCellText,
26
26
  p as describeMatchedShortcut,
27
27
  C as encryptForRoomKey,
28
- j as executeStringFunction,
28
+ G as executeStringFunction,
29
29
  u as fetchSessionState,
30
- B as formulaResponseUiSync,
31
- H as getFlowdata,
30
+ H as formulaResponseUiSync,
31
+ J as getFlowdata,
32
32
  E as getRemoveDuplicatesErrorMessage,
33
33
  F as getRemoveDuplicatesPreview,
34
- J as getSheetIndex,
34
+ j as getSheetIndex,
35
35
  g as handleCSVUpload,
36
36
  x as handleCopy,
37
37
  R as handleExportToCSV,
38
- A as handleExportToJSON,
38
+ L as handleExportToJSON,
39
39
  f as handleExportToODS,
40
- I as handleExportToXLSX,
40
+ A as handleExportToXLSX,
41
41
  N as handleFreeze,
42
- q as handleHorizontalAlign,
43
- Y as handleLink,
44
- Z as handleMerge,
45
- L as handlePasteByClick,
46
- Q as handleSort,
42
+ Q as handleHorizontalAlign,
43
+ q as handleLink,
44
+ Y as handleMerge,
45
+ I as handlePasteByClick,
46
+ Z as handleSort,
47
47
  W as handleTextSize,
48
48
  $ as handleVerticalAlign,
49
49
  T as importSpreadsheetFile,
50
50
  ee as insertRowCol,
51
51
  w as isBrowserZoomShortcut,
52
52
  y as isFormulaListShortcut,
53
- v as isOpenShortcutsModalShortcut,
53
+ D as isOpenShortcutsModalShortcut,
54
54
  ae as jfrefreshgrid,
55
55
  se as loadLocale,
56
- D as remapCommentAnchors,
56
+ v as remapCommentAnchors,
57
57
  M as removeActiveImage,
58
58
  b as removeDuplicates,
59
59
  k as seedSession,
@@ -0,0 +1,151 @@
1
+ import * as c from "yjs";
2
+ const p = typeof Buffer == "function";
3
+ typeof TextDecoder == "function" && new TextDecoder();
4
+ typeof TextEncoder == "function" && new TextEncoder();
5
+ const E = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", l = Array.prototype.slice.call(E), f = ((t) => {
6
+ let e = {};
7
+ return t.forEach((r, n) => e[r] = n), e;
8
+ })(l), U = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/, u = String.fromCharCode.bind(String), h = typeof Uint8Array.from == "function" ? Uint8Array.from.bind(Uint8Array) : (t) => new Uint8Array(Array.prototype.slice.call(t, 0)), T = (t) => t.replace(/=/g, "").replace(/[+\/]/g, (e) => e == "+" ? "-" : "_"), m = (t) => t.replace(/[^A-Za-z0-9\+\/]/g, ""), w = (t) => {
9
+ let e, r, n, a, o = "";
10
+ const s = t.length % 3;
11
+ for (let i = 0; i < t.length; ) {
12
+ if ((r = t.charCodeAt(i++)) > 255 || (n = t.charCodeAt(i++)) > 255 || (a = t.charCodeAt(i++)) > 255)
13
+ throw new TypeError("invalid character found");
14
+ e = r << 16 | n << 8 | a, o += l[e >> 18 & 63] + l[e >> 12 & 63] + l[e >> 6 & 63] + l[e & 63];
15
+ }
16
+ return s ? o.slice(0, s - 3) + "===".substring(s) : o;
17
+ }, _ = typeof btoa == "function" ? (t) => btoa(t) : p ? (t) => Buffer.from(t, "binary").toString("base64") : w, y = p ? (t) => Buffer.from(t).toString("base64") : (t) => {
18
+ let r = [];
19
+ for (let n = 0, a = t.length; n < a; n += 4096)
20
+ r.push(u.apply(null, t.subarray(n, n + 4096)));
21
+ return _(r.join(""));
22
+ }, d = (t, e = !1) => e ? T(y(t)) : y(t), C = (t) => {
23
+ if (t = t.replace(/\s+/g, ""), !U.test(t))
24
+ throw new TypeError("malformed base64.");
25
+ t += "==".slice(2 - (t.length & 3));
26
+ let e, r, n, a = [];
27
+ for (let o = 0; o < t.length; )
28
+ e = f[t.charAt(o++)] << 18 | f[t.charAt(o++)] << 12 | (r = f[t.charAt(o++)]) << 6 | (n = f[t.charAt(o++)]), r === 64 ? a.push(u(e >> 16 & 255)) : n === 64 ? a.push(u(e >> 16 & 255, e >> 8 & 255)) : a.push(u(e >> 16 & 255, e >> 8 & 255, e & 255));
29
+ return a.join("");
30
+ }, x = typeof atob == "function" ? (t) => atob(m(t)) : p ? (t) => Buffer.from(t, "base64").toString("binary") : C, B = p ? (t) => h(Buffer.from(t, "base64")) : (t) => h(x(t).split("").map((e) => e.charCodeAt(0))), k = (t) => B(F(t)), F = (t) => m(t.replace(/[-_]/g, (e) => e == "-" ? "+" : "/")), S = (t) => {
31
+ let e = 0;
32
+ return t.clients.forEach((r) => {
33
+ for (let n = 0; n < r.length; n += 1) e += r[n].len;
34
+ }), e;
35
+ }, z = (t) => {
36
+ let e = 0;
37
+ return t.deleteSet.clients.forEach((r, n) => {
38
+ const a = t.beforeState.get(n) ?? 0;
39
+ for (let o = 0; o < r.length; o += 1) {
40
+ const { clock: s, len: i } = r[o];
41
+ s < a && (e += Math.min(s + i, a) - s);
42
+ }
43
+ }), t.afterState.forEach((r, n) => {
44
+ const a = t.beforeState.get(n) ?? 0;
45
+ if (r <= a) return;
46
+ const o = t.doc.store.clients.get(n);
47
+ if (o)
48
+ for (let s = c.findIndexSS(o, a); s < o.length && o[s].id.clock < r; s += 1) {
49
+ const i = o[s];
50
+ if (!i.deleted) continue;
51
+ const A = Math.max(i.id.clock, a), D = Math.min(i.id.clock + i.length, r);
52
+ e += D - A;
53
+ }
54
+ }), e;
55
+ };
56
+ function V(t) {
57
+ let e = t.store.clients.size === 0 ? 0 : S(c.createDeleteSetFromStructStore(t.store));
58
+ const r = (n) => {
59
+ e += z(n);
60
+ };
61
+ return t.on("afterTransaction", r), {
62
+ getFingerprint: () => `${d(c.encodeStateVector(t))}:${e}`,
63
+ getDeletedCount: () => e,
64
+ dispose: () => t.off("afterTransaction", r)
65
+ };
66
+ }
67
+ function I(t) {
68
+ const e = new c.Doc();
69
+ try {
70
+ return c.applyUpdate(e, t), b(e);
71
+ } finally {
72
+ e.destroy();
73
+ }
74
+ }
75
+ function b(t) {
76
+ const e = t.store.clients.size === 0 ? 0 : S(c.createDeleteSetFromStructStore(t.store));
77
+ return `${d(c.encodeStateVector(t))}:${e}`;
78
+ }
79
+ const Z = 8e3, P = (t) => t instanceof Error ? t : new Error(String(t)), v = (t, e, r = "dsheet-package-ingress") => {
80
+ const n = k(e), a = new c.Doc();
81
+ try {
82
+ c.applyUpdate(a, n);
83
+ } finally {
84
+ a.destroy();
85
+ }
86
+ let o = !1;
87
+ const s = () => {
88
+ o = !0;
89
+ };
90
+ t.on("update", s);
91
+ try {
92
+ return c.applyUpdate(t, n, r), o;
93
+ } finally {
94
+ t.off("update", s);
95
+ }
96
+ }, $ = async (t, e) => {
97
+ let r;
98
+ try {
99
+ return await Promise.race([
100
+ t,
101
+ new Promise((n, a) => {
102
+ r = setTimeout(
103
+ () => a(new Error("dSheet IndexedDB operation timed out")),
104
+ e
105
+ );
106
+ })
107
+ ]);
108
+ } finally {
109
+ r && clearTimeout(r);
110
+ }
111
+ }, g = (t, e, r) => ({
112
+ dsheetId: t,
113
+ status: e,
114
+ encodedState: null,
115
+ stateVector: null,
116
+ fingerprint: null,
117
+ ...r ? { error: P(r) } : {}
118
+ }), M = (t, e) => {
119
+ const r = c.encodeStateAsUpdate(e);
120
+ return {
121
+ dsheetId: t,
122
+ status: r.length <= 2 ? "empty" : "available",
123
+ encodedState: d(r),
124
+ stateVector: d(c.encodeStateVector(e)),
125
+ fingerprint: b(e)
126
+ };
127
+ }, j = (t, e, r) => {
128
+ if (!r)
129
+ return g(
130
+ t,
131
+ "unavailable",
132
+ new Error("dSheet document is not ready")
133
+ );
134
+ try {
135
+ return v(r, e, "dsheet-package-ingress"), M(t, r);
136
+ } catch (n) {
137
+ return g(t, "corrupt", n);
138
+ }
139
+ };
140
+ export {
141
+ Z as D,
142
+ I as a,
143
+ V as b,
144
+ j as c,
145
+ d as f,
146
+ v as m,
147
+ M as s,
148
+ k as t,
149
+ g as u,
150
+ $ as w
151
+ };
@@ -6,6 +6,8 @@ export type DSheetContentSnapshot = {
6
6
  status: DSheetContentStatus;
7
7
  encodedState: string | null;
8
8
  stateVector: string | null;
9
+ /** A1 content fingerprint of the document read; null when unavailable. */
10
+ fingerprint: string | null;
9
11
  error?: Error;
10
12
  };
11
13
  export type DSheetContentReadOptions = {
@@ -0,0 +1 @@
1
+
@@ -1,6 +1,7 @@
1
1
  import { DSheetContentReadOptions, DSheetContentSnapshot } from './persistence-utils';
2
2
 
3
3
  export type { DSheetContentReadOptions, DSheetContentSnapshot, DSheetContentStatus, } from './persistence-utils';
4
+ export { fingerprintFromUpdate } from './editor/utils/content-fingerprint';
4
5
  export declare const getDsheetStateVector: (encodedState: string | Uint8Array) => string;
5
6
  /**
6
7
  * Read the package-owned Y-IndexedDB database without attaching another
@@ -10,3 +11,15 @@ export declare const readDsheetContent: (dsheetId: string, options?: DSheetConte
10
11
  /** Merge content into the package-owned Y-IndexedDB document. */
11
12
  export declare const mergeDsheetContent: (dsheetId: string, encodedState: string, options?: DSheetContentReadOptions) => Promise<DSheetContentSnapshot>;
12
13
  export declare const deleteDsheetContent: (dsheetId: string) => Promise<void>;
14
+ /**
15
+ * Append one Yjs update as a single row of the package-owned y-indexeddb
16
+ * `updates` store. Unlike mergeDsheetContent it never builds a Y.Doc and never
17
+ * writes a full copy of the document: the caller passes only what is missing
18
+ * (for example Y.diffUpdate(remote, localStateVector)).
19
+ *
20
+ * If the database does not exist yet it is created with the same schema
21
+ * y-indexeddb uses (`updates` autoIncrement, `custom`). Rejects with
22
+ * "IndexedDB is unavailable" when there is no indexedDB, and with the
23
+ * underlying error if the transaction fails or aborts.
24
+ */
25
+ export declare const appendDsheetUpdate: (dsheetId: string, update: Uint8Array, options?: DSheetContentReadOptions) => Promise<void>;
@@ -1,118 +1,166 @@
1
- import { t as D, f as h, D as b, u as p, w as S, s as w } from "./persistence-utils-BXFajzvq.js";
2
- import * as u from "yjs";
3
- import { clearDocument as v, IndexeddbPersistence as E } from "y-indexeddb";
4
- const f = /* @__PURE__ */ new Map(), M = (e) => {
5
- const o = new u.Doc();
1
+ import { w, D, t as h, f as g, u as m, s as S } from "./persistence-utils-CSKBobX8.js";
2
+ import { a as F } from "./persistence-utils-CSKBobX8.js";
3
+ import * as p from "yjs";
4
+ import { clearDocument as x, IndexeddbPersistence as E } from "y-indexeddb";
5
+ const y = /* @__PURE__ */ new Map(), A = (e) => {
6
+ const i = new p.Doc();
6
7
  try {
7
- return u.applyUpdate(
8
- o,
9
- typeof e == "string" ? D(e) : e
10
- ), h(u.encodeStateVector(o));
8
+ return p.applyUpdate(
9
+ i,
10
+ typeof e == "string" ? h(e) : e
11
+ ), g(p.encodeStateVector(i));
11
12
  } finally {
12
- o.destroy();
13
+ i.destroy();
13
14
  }
14
- }, x = (e, o) => new Promise((s) => {
15
- const a = new u.Doc();
16
- let r = null, t = null, i = !1, m = !1;
17
- const y = (n) => {
18
- i || (i = !0, clearTimeout(g), r == null || r.close(), a.destroy(), s(n));
19
- }, c = (n, d) => y(p(e, n, d)), g = setTimeout(() => {
15
+ }, v = (e, i) => new Promise((c) => {
16
+ const r = new p.Doc();
17
+ let n = null, t = null, u = !1, b = !1;
18
+ const l = (s) => {
19
+ u || (u = !0, clearTimeout(a), n == null || n.close(), r.destroy(), c(s));
20
+ }, o = (s, f) => l(m(e, s, f)), a = setTimeout(() => {
20
21
  try {
21
22
  t == null || t.abort();
22
23
  } catch {
23
24
  }
24
- c("timed-out", new Error("dSheet IndexedDB read timed out"));
25
- }, o);
26
- let l;
25
+ o("timed-out", new Error("dSheet IndexedDB read timed out"));
26
+ }, i);
27
+ let d;
27
28
  try {
28
- l = indexedDB.open(e);
29
- } catch (n) {
30
- c("unavailable", n);
29
+ d = indexedDB.open(e);
30
+ } catch (s) {
31
+ o("unavailable", s);
31
32
  return;
32
33
  }
33
- l.onupgradeneeded = () => {
34
- var n;
35
- m = !0, (n = l.transaction) == null || n.abort();
36
- }, l.onerror = () => {
37
- m ? y(p(e, "missing")) : c("unavailable", l.error);
38
- }, l.onsuccess = () => {
39
- if (r = l.result, !r.objectStoreNames.contains("updates") || !r.objectStoreNames.contains("custom")) {
40
- c("corrupt", new Error("dSheet IndexedDB schema is invalid"));
34
+ d.onupgradeneeded = () => {
35
+ var s;
36
+ b = !0, (s = d.transaction) == null || s.abort();
37
+ }, d.onerror = () => {
38
+ b ? l(m(e, "missing")) : o("unavailable", d.error);
39
+ }, d.onsuccess = () => {
40
+ if (n = d.result, !n.objectStoreNames.contains("updates") || !n.objectStoreNames.contains("custom")) {
41
+ o("corrupt", new Error("dSheet IndexedDB schema is invalid"));
41
42
  return;
42
43
  }
43
44
  try {
44
- t = r.transaction("updates", "readonly");
45
- const n = t.objectStore("updates").getAll();
46
- n.onerror = () => c("unavailable", n.error), n.onsuccess = () => {
45
+ t = n.transaction("updates", "readonly");
46
+ const s = t.objectStore("updates").getAll();
47
+ s.onerror = () => o("unavailable", s.error), s.onsuccess = () => {
47
48
  try {
48
- for (const d of n.result ?? []) {
49
- if (!(d instanceof Uint8Array))
49
+ for (const f of s.result ?? []) {
50
+ if (!(f instanceof Uint8Array))
50
51
  throw new Error("dSheet IndexedDB contains a non-Yjs update");
51
- u.applyUpdate(a, d);
52
+ p.applyUpdate(r, f);
52
53
  }
53
- } catch (d) {
54
- c("corrupt", d);
54
+ } catch (f) {
55
+ o("corrupt", f);
55
56
  }
56
- }, t.oncomplete = () => y(w(e, a)), t.onabort = () => {
57
- i || c("unavailable", t == null ? void 0 : t.error);
57
+ }, t.oncomplete = () => l(S(e, r)), t.onabort = () => {
58
+ u || o("unavailable", t == null ? void 0 : t.error);
58
59
  }, t.onerror = () => {
59
- i || c("unavailable", t == null ? void 0 : t.error);
60
+ u || o("unavailable", t == null ? void 0 : t.error);
60
61
  };
61
- } catch (n) {
62
- c("unavailable", n);
62
+ } catch (s) {
63
+ o("unavailable", s);
63
64
  }
64
65
  };
65
- }), B = async (e, o) => {
66
+ }), B = async (e, i) => {
66
67
  if (typeof indexedDB > "u")
67
- return p(
68
+ return m(
68
69
  e,
69
70
  "unavailable",
70
71
  new Error("IndexedDB is unavailable")
71
72
  );
72
- const s = indexedDB;
73
- if (s.databases)
73
+ const c = indexedDB;
74
+ if (c.databases)
74
75
  try {
75
- if (!(await s.databases()).some((r) => r.name === e))
76
- return p(e, "missing");
76
+ if (!(await c.databases()).some((n) => n.name === e))
77
+ return m(e, "missing");
77
78
  } catch {
78
79
  }
79
- return x(e, o);
80
- }, A = (e, o = {}) => {
81
- const s = f.get(e);
82
- if (s) return s;
83
- const a = B(
80
+ return v(e, i);
81
+ }, M = (e, i = {}) => {
82
+ const c = y.get(e);
83
+ if (c) return c;
84
+ const r = B(
84
85
  e,
85
- o.timeoutMs ?? b
86
+ i.timeoutMs ?? D
86
87
  ).finally(() => {
87
- f.get(e) === a && f.delete(e);
88
+ y.get(e) === r && y.delete(e);
88
89
  });
89
- return f.set(e, a), a;
90
- }, C = async (e, o, s = {}) => {
91
- const a = s.timeoutMs ?? b, r = new u.Doc();
90
+ return y.set(e, r), r;
91
+ }, j = async (e, i, c = {}) => {
92
+ const r = c.timeoutMs ?? D, n = new p.Doc();
92
93
  try {
93
- u.applyUpdate(r, D(o), "dsheet-package-ingress");
94
- } catch (i) {
95
- return r.destroy(), p(e, "corrupt", i);
94
+ p.applyUpdate(n, h(i), "dsheet-package-ingress");
95
+ } catch (u) {
96
+ return n.destroy(), m(e, "corrupt", u);
96
97
  }
97
98
  let t = null;
98
99
  try {
99
- return t = new E(e, r), await S(t.whenSynced, a), w(e, r);
100
- } catch (i) {
101
- return p(
100
+ return t = new E(e, n), await w(t.whenSynced, r), S(e, n);
101
+ } catch (u) {
102
+ return m(
102
103
  e,
103
- /timed out/i.test(String(i)) ? "timed-out" : "unavailable",
104
- i
104
+ /timed out/i.test(String(u)) ? "timed-out" : "unavailable",
105
+ u
105
106
  );
106
107
  } finally {
107
108
  await (t == null ? void 0 : t.destroy().catch(() => {
108
- })), r.destroy();
109
+ })), n.destroy();
110
+ }
111
+ }, N = async (e) => {
112
+ y.delete(e), typeof indexedDB < "u" && await x(e);
113
+ }, C = async (e, i, c = {}) => {
114
+ if (!(i instanceof Uint8Array))
115
+ throw new TypeError("appendDsheetUpdate expects a Uint8Array update");
116
+ if (typeof indexedDB > "u")
117
+ throw new Error("IndexedDB is unavailable");
118
+ let r = null, n = !1;
119
+ const t = () => {
120
+ try {
121
+ r == null || r.close();
122
+ } catch {
123
+ }
124
+ }, u = new Promise((b, l) => {
125
+ let o;
126
+ try {
127
+ o = indexedDB.open(e);
128
+ } catch (a) {
129
+ l(a);
130
+ return;
131
+ }
132
+ o.onupgradeneeded = () => {
133
+ const a = o.result;
134
+ a.objectStoreNames.contains("updates") || a.createObjectStore("updates", { autoIncrement: !0 }), a.objectStoreNames.contains("custom") || a.createObjectStore("custom");
135
+ }, o.onerror = () => l(o.error), o.onsuccess = () => {
136
+ if (r = o.result, r.onversionchange = () => t(), n) {
137
+ t();
138
+ return;
139
+ }
140
+ try {
141
+ if (!r.objectStoreNames.contains("updates"))
142
+ throw new Error("dSheet IndexedDB schema is invalid");
143
+ const a = r.transaction("updates", "readwrite");
144
+ a.objectStore("updates").add(i), a.oncomplete = () => b(), a.onerror = () => l(a.error), a.onabort = () => l(a.error ?? new Error("dSheet IndexedDB write aborted"));
145
+ } catch (a) {
146
+ l(a);
147
+ }
148
+ };
149
+ });
150
+ try {
151
+ await w(
152
+ u,
153
+ c.timeoutMs ?? D
154
+ );
155
+ } finally {
156
+ n = !0, t();
109
157
  }
110
- }, j = async (e) => {
111
- f.delete(e), typeof indexedDB < "u" && await v(e);
112
158
  };
113
159
  export {
114
- j as deleteDsheetContent,
115
- M as getDsheetStateVector,
116
- C as mergeDsheetContent,
117
- A as readDsheetContent
160
+ C as appendDsheetUpdate,
161
+ N as deleteDsheetContent,
162
+ F as fingerprintFromUpdate,
163
+ A as getDsheetStateVector,
164
+ j as mergeDsheetContent,
165
+ M as readDsheetContent
118
166
  };
@@ -1,5 +1,5 @@
1
1
  import { Context } from '../context';
2
- import { Cell, SingleRange } from '../types';
2
+ import { Cell, SingleRange, Sheet } from '../types';
3
3
  import { CommonOptions } from './common';
4
4
 
5
5
  export declare function getCellValue(ctx: Context, row: number, column: number, options?: CommonOptions & {
@@ -7,6 +7,25 @@ export declare function getCellValue(ctx: Context, row: number, column: number,
7
7
  }): any;
8
8
  export declare function setCellValue(ctx: Context, row: number, column: number, value: any, cellInput: HTMLDivElement | null, options?: CommonOptions, callAfterUpdate?: boolean): void;
9
9
  export declare function applyRemoteCellValue(ctx: Context, row: number, column: number, value: any, options?: CommonOptions): void;
10
+ /**
11
+ * Replace a sheet's formula list with the collaborator's value from Yjs and
12
+ * reset the formula dependency indexes to a fresh mount's state (A4). This
13
+ * is what the grid rebuild it replaces produced, without the rebuild. The
14
+ * caller runs it with noHistory.
15
+ */
16
+ export declare function setSheetCalcChain(ctx: Context, calcChain: Sheet['calcChain'], options?: CommonOptions): void;
17
+ export type RemoteCellChange = {
18
+ r: number;
19
+ c: number;
20
+ v: unknown;
21
+ };
22
+ /**
23
+ * Apply a remote batch of cells inside one draft (A5). The caller runs it in
24
+ * one setContext with noHistory, so a batch is one Immer pass and never
25
+ * lands on the local undo stack. A cell that fails is reported through
26
+ * onSkip and the rest still apply.
27
+ */
28
+ export declare function applyRemoteCells(ctx: Context, cells: RemoteCellChange[], options?: CommonOptions, onSkip?: (cell: RemoteCellChange, error: unknown) => void): void;
10
29
  export declare function clearCell(ctx: Context, row: number, column: number, options?: CommonOptions): void;
11
30
  export declare function setCellFormat(ctx: Context, row: number, column: number, attr: keyof Cell, value: any, options?: CommonOptions): void;
12
31
  export declare function autoFillCell(ctx: Context, copyRange: SingleRange, applyRange: SingleRange, direction: 'up' | 'down' | 'left' | 'right'): void;
@@ -0,0 +1 @@
1
+ export {};
@@ -7,7 +7,7 @@ export { defaultSettings } from './settings';
7
7
  export type { Settings, Hooks, DateBaseLocale, CommentAnchorMove, } from './settings';
8
8
  export { handleCopy, handleGlobalKeyDown, handlePaste, handlePasteByClick, fixPositionOnFrozenCells, handleCellAreaMouseDown, handleCellAreaDoubleClick, handleContextMenu, mouseRender, handleOverlayMouseMove, handleOverlayMouseUp, handleRowHeaderMouseDown, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColSizeHandleDoubleClick, handleRowSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleRowFreezeHandleMouseDown, describeMatchedShortcut, isBrowserZoomShortcut, isOpenShortcutsModalShortcut, isFormulaListShortcut, } from './events';
9
9
  export * from './locale';
10
- export { getBorderInfoComputeRange, getBorderInfoCompute, normalizedCellAttr, normalizedAttr, getCellValue, setCellValue, getRealCellValue, mergeBorder, cancelNormalSelected, updateCell, getRangetxt, getRangeByTxt, isValidRangeText, getInlineStringHTML, applyLinkToSelection, getHyperlinksFromInlineSegments, getUniformLinkFromWindowSelectionInEditor, getHyperlinkAtCaretInContentEditable, getStyleByCell, clearSelectedCellFormat, clearRowsCellsFormat, clearColumnsCellsFormat, clipboard, moveToEnd, getRangeRectsByCharacterOffset, getDateBaseLocale, getCanonicalDateDisplayFormat, getCanonicalDateEditFormat, getDateEditFormatForCell, isUsDateBaseLocale, normalizeDateBaseLocale, shouldPreserveDateFormatForEdit, setDateBaseLocale, update, is_date, valueShowEs, isTypedCurrencyDisplayFormat, isCurrencyLikeNumberFormat, buildFiatCurrencyFormat, quoteSsfLiteral, FormulaCache, groupValuesRefresh, execFunctionGroup, runFormulaEvalChunk, applyWorkerFormulaChunkResults, isFormulaEvalPending, FORMULA_ASYNC_CHUNK_SIZE, FORMULA_ASYNC_EVAL_THRESHOLD, FORMULA_WORKER_CHUNK_SIZE, FORMULA_WORKER_THRESHOLD, setCaretPosition, getrangeseleciton, getFormulaEditorOwner, rangeHightlightselected, handleFormulaInput, israngeseleciton, createRangeHightlight, maybeRecoverDirtyRangeSelection, getFormulaRangeIndexAtCaret, isCaretAtValidFormulaRangeInsertionPoint, isLegacyFormulaRangeMode, markRangeSelectionDirty, setFormulaEditorOwner, functionHTMLGenerate, suppressFormulaRangeSelectionForInitialEdit, ensureFormulaRangeToSheet, shouldPreserveFormulaEditOnSheetSwitch, activateSheetForNavigation, returnToFormulaOriginSheet, rangeSetValue, getFormulaRangeIndexForKeyboardSync, createFormulaRangeSelect, isFormulaReferenceInputMode, seedFormulaFuncSelectedRangeFromLastSelection, initFreeze, isInlineStringCell, getInlineStringNoStyle, rowLocation, rowLocationByIndex, colLocation, colLocationByIndex, insertRowCol, deleteRowCol, hideSelected, showSelected, isShowHidenCR, getFilterHiddenRowsUnionFromFilterMap, getFilterHiddenRowsUnion, ensureManualHiddenInitialized, rebuildRowHiddenUnion, scrollToHighlightCell, selectTitlesMap, selectTitlesRange, defaultLuckysheetSelectRanges, normalizeSelection, syncPrimaryCellActiveFromSelection, selectionIsExactlyOneMergeBlock, setPrimaryCellActive, advancePrimaryCellInLastMultiSelection, snapSheetSelectionFocusToCellPreserveMultiRange, moveHighlightCell, deleteSelectedCellText, selectAll, fixRowStyleOverflowInFreeze, fixColumnStyleOverflowInFreeze, calcSelectionInfo, addSheet, deleteSheet, editSheetName, changeSheet, updateFormat, autoSelectionFormula, handleBold, handleItalic, handleStrikeThrough, handleUnderline, handleHorizontalAlign, handleVerticalAlign, handleTextColor, handleTextBackground, handleBorder, handleMerge, mergeSelectionHasValues, handleSort, getRemoveDuplicatesPreview, removeDuplicates, getRemoveDuplicatesErrorMessage, handleFreeze, handleTextSize, handleSum, handleLink, captureLinkEditorOpenSnapshot, isHyperlinkCreationBlocked, toolbarItemClickHandler, toolbarItemSelectedFunc, handleScreenShot, insertImage, showImgChooser, drawArrow, setEditingComment, removeEditingComment, removeOverShowComment, newComment, editComment, deleteComment, showComments, showHideComment, showHideAllComments, onCommentBoxMoveStart, removeActiveImage, copyActiveImage, cutActiveImage, pasteImageItem, loadImageFromFile, getImageClipboard, getImageCutSourceId, cancelActiveImgItem, onImageMoveStart, onImageResizeStart, createDropCellRange, sortSelection, sortSheetBySelectedColumn, searchAll, searchNext, replace, replaceAll, replaceAllScoped, getSearchIndexArr, getSearchIndexArrAsync, getFindRangeOnCurrentSheet, getQuickSearchIndexArr, getQuickSearchHiddenConfig, getCellHyperlinks, getHyperlinkDisplayTextInCell, getInlineLinkPlainRange, getUniformLinkCoveringPlainRange, getUniformLinkAtPlainOffset, removeHyperlinkForLink, updateHyperlinkForLink, syncLinkCardAfterHyperlinkChange, expandCellRectForMerge, shouldQuickSearchUseAsync, runQuickSearchIndexArrAsync, QUICK_SEARCH_ASYNC_ROW_THRESHOLD, parseRangeText, getCellRowColumn, getCellHyperlink, saveHyperlink, removeHyperlink, showLinkCard, goToLink, isLinkValid, createFilterOptions, clearFilter, clearFilterForColumn, toggleViewerFilter, createFilter, applySheetFilterState, getFilterColumnValues, getFilterColumnColors, orderbydatafiler, saveFilter, onCellsMoveStart, cfSplitRange, updateMoreCell, getRegStr, getDataArr, applyLocation, getOptionValue, getSelectRange, getDropdownList, setDropdownValue, confirmMessage, setConditionRules, CF_DATE_DEFAULT_FORMAT, parseCfDateConditionForUi, formatCfDatePresetSnapshot, parseDdMmYyyyToSerial, handleOverlayTouchStart, handleOverlayTouchEnd, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, jfrefreshgrid, sanitizeDuneUrl, insertDuneChart, onIframeMoveStart, onIframeResizeStart, onIframeMove, onIframeMoveEnd, onIframeResize, onIframeResizeEnd, setCellError, clearCellError, detectDateFormat, isdatatypemulti, diff, isdatetime, isRealNull, isRealNum, isNumericCellType, iscelldata, getcellrange, cancelFunctionrangeSelected, seletedHighlistByindex, spillSortResult, execfunction, insertUpdateFunctionGroup, remapFormulaReferencesByMap, refreshFormulasUsingDefinedNames, checkCF, getComputeMap, isValidDefinedNameIdentifier, getDefinedNameDisplayRange, findDefinedNameForSelection, findDefinedNameByName, resolveDefinedNameForFormula, addDefinedName, updateDefinedName, deleteDefinedName, selectDefinedName, openNamedRangesSidebar, scheduleDefinedNamesSync, shiftDefinedNamesOnInsert, shiftDefinedNamesOnDelete, removeDefinedNamesForSheet, cancelPaintModel, hideCRCount, getdatabyselection, } from './modules';
10
+ export { getBorderInfoComputeRange, getBorderInfoCompute, normalizedCellAttr, normalizedAttr, getCellValue, setCellValue, getRealCellValue, mergeBorder, cancelNormalSelected, updateCell, getRangetxt, getRangeByTxt, isValidRangeText, getInlineStringHTML, applyLinkToSelection, getHyperlinksFromInlineSegments, getUniformLinkFromWindowSelectionInEditor, getHyperlinkAtCaretInContentEditable, getStyleByCell, clearSelectedCellFormat, clearRowsCellsFormat, clearColumnsCellsFormat, clipboard, moveToEnd, getRangeRectsByCharacterOffset, getDateBaseLocale, getCanonicalDateDisplayFormat, getCanonicalDateEditFormat, getDateEditFormatForCell, isUsDateBaseLocale, normalizeDateBaseLocale, shouldPreserveDateFormatForEdit, setDateBaseLocale, update, is_date, valueShowEs, isTypedCurrencyDisplayFormat, isCurrencyLikeNumberFormat, buildFiatCurrencyFormat, quoteSsfLiteral, FormulaCache, groupValuesRefresh, execFunctionGroup, runFormulaEvalChunk, applyWorkerFormulaChunkResults, finishFullFormulaPass, resetFormulaDependencyIndexes, isFormulaEvalPending, FORMULA_ASYNC_CHUNK_SIZE, FORMULA_ASYNC_EVAL_THRESHOLD, FORMULA_WORKER_CHUNK_SIZE, FORMULA_WORKER_THRESHOLD, setCaretPosition, getrangeseleciton, getFormulaEditorOwner, rangeHightlightselected, handleFormulaInput, israngeseleciton, createRangeHightlight, maybeRecoverDirtyRangeSelection, getFormulaRangeIndexAtCaret, isCaretAtValidFormulaRangeInsertionPoint, isLegacyFormulaRangeMode, markRangeSelectionDirty, setFormulaEditorOwner, functionHTMLGenerate, suppressFormulaRangeSelectionForInitialEdit, ensureFormulaRangeToSheet, shouldPreserveFormulaEditOnSheetSwitch, activateSheetForNavigation, returnToFormulaOriginSheet, rangeSetValue, getFormulaRangeIndexForKeyboardSync, createFormulaRangeSelect, isFormulaReferenceInputMode, seedFormulaFuncSelectedRangeFromLastSelection, initFreeze, isInlineStringCell, getInlineStringNoStyle, rowLocation, rowLocationByIndex, colLocation, colLocationByIndex, insertRowCol, deleteRowCol, hideSelected, showSelected, isShowHidenCR, getFilterHiddenRowsUnionFromFilterMap, getFilterHiddenRowsUnion, ensureManualHiddenInitialized, rebuildRowHiddenUnion, scrollToHighlightCell, selectTitlesMap, selectTitlesRange, defaultLuckysheetSelectRanges, normalizeSelection, syncPrimaryCellActiveFromSelection, selectionIsExactlyOneMergeBlock, setPrimaryCellActive, advancePrimaryCellInLastMultiSelection, snapSheetSelectionFocusToCellPreserveMultiRange, moveHighlightCell, deleteSelectedCellText, selectAll, fixRowStyleOverflowInFreeze, fixColumnStyleOverflowInFreeze, calcSelectionInfo, addSheet, deleteSheet, editSheetName, changeSheet, updateFormat, autoSelectionFormula, handleBold, handleItalic, handleStrikeThrough, handleUnderline, handleHorizontalAlign, handleVerticalAlign, handleTextColor, handleTextBackground, handleBorder, handleMerge, mergeSelectionHasValues, handleSort, getRemoveDuplicatesPreview, removeDuplicates, getRemoveDuplicatesErrorMessage, handleFreeze, handleTextSize, handleSum, handleLink, captureLinkEditorOpenSnapshot, isHyperlinkCreationBlocked, toolbarItemClickHandler, toolbarItemSelectedFunc, handleScreenShot, insertImage, showImgChooser, drawArrow, setEditingComment, removeEditingComment, removeOverShowComment, newComment, editComment, deleteComment, showComments, showHideComment, showHideAllComments, onCommentBoxMoveStart, removeActiveImage, copyActiveImage, cutActiveImage, pasteImageItem, loadImageFromFile, getImageClipboard, getImageCutSourceId, cancelActiveImgItem, onImageMoveStart, onImageResizeStart, createDropCellRange, sortSelection, sortSheetBySelectedColumn, searchAll, searchNext, replace, replaceAll, replaceAllScoped, getSearchIndexArr, getSearchIndexArrAsync, getFindRangeOnCurrentSheet, getQuickSearchIndexArr, getQuickSearchHiddenConfig, getCellHyperlinks, getHyperlinkDisplayTextInCell, getInlineLinkPlainRange, getUniformLinkCoveringPlainRange, getUniformLinkAtPlainOffset, removeHyperlinkForLink, updateHyperlinkForLink, syncLinkCardAfterHyperlinkChange, expandCellRectForMerge, shouldQuickSearchUseAsync, runQuickSearchIndexArrAsync, QUICK_SEARCH_ASYNC_ROW_THRESHOLD, parseRangeText, getCellRowColumn, getCellHyperlink, saveHyperlink, removeHyperlink, showLinkCard, goToLink, isLinkValid, createFilterOptions, clearFilter, clearFilterForColumn, toggleViewerFilter, createFilter, applySheetFilterState, getFilterColumnValues, getFilterColumnColors, orderbydatafiler, saveFilter, onCellsMoveStart, cfSplitRange, updateMoreCell, getRegStr, getDataArr, applyLocation, getOptionValue, getSelectRange, getDropdownList, setDropdownValue, confirmMessage, setConditionRules, CF_DATE_DEFAULT_FORMAT, parseCfDateConditionForUi, formatCfDatePresetSnapshot, parseDdMmYyyyToSerial, handleOverlayTouchStart, handleOverlayTouchEnd, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, jfrefreshgrid, sanitizeDuneUrl, insertDuneChart, onIframeMoveStart, onIframeResizeStart, onIframeMove, onIframeMoveEnd, onIframeResize, onIframeResizeEnd, setCellError, clearCellError, detectDateFormat, isdatatypemulti, diff, isdatetime, isRealNull, isRealNum, isNumericCellType, iscelldata, getcellrange, cancelFunctionrangeSelected, seletedHighlistByindex, spillSortResult, execfunction, insertUpdateFunctionGroup, remapFormulaReferencesByMap, refreshFormulasUsingDefinedNames, checkCF, getComputeMap, isValidDefinedNameIdentifier, getDefinedNameDisplayRange, findDefinedNameForSelection, findDefinedNameByName, resolveDefinedNameForFormula, addDefinedName, updateDefinedName, deleteDefinedName, selectDefinedName, openNamedRangesSidebar, scheduleDefinedNamesSync, shiftDefinedNamesOnInsert, shiftDefinedNamesOnDelete, removeDefinedNamesForSheet, cancelPaintModel, hideCRCount, getdatabyselection, deleteCellsShift, insertCellsShift, } from './modules';
11
11
  export type { FilterDate, FilterValue, FilterColor } from './modules';
12
12
  export { getFreezeState, getFrozenPixelBounds, toggleFreeze, indexToColumnChar, escapeScriptTag, escapeHTMLTag, getSheetIndex, replaceHtml, isAllowEdit, isAllowEditReadOnly, filterPatch, patchToOp, opToPatch, inverseRowColOptions, } from './utils';
13
13
  export type { PatchOptions, ChangedSheet } from './utils';
@@ -548,6 +548,7 @@ declare const _default: {
548
548
  cancelText: string;
549
549
  chooseText: string;
550
550
  focus: string;
551
+ copyLink: string;
551
552
  tipNameRepeat: string;
552
553
  noMoreSheet: string;
553
554
  confirmDelete: string;
@@ -700,6 +700,7 @@ declare const _default: {
700
700
  cancelText: string;
701
701
  chooseText: string;
702
702
  focus: string;
703
+ copyLink: string;
703
704
  tipNameRepeat: string;
704
705
  noMoreSheet: string;
705
706
  confirmDelete: string;
@@ -575,6 +575,7 @@ declare const _default: {
575
575
  cancelText: string;
576
576
  chooseText: string;
577
577
  focus: string;
578
+ copyLink: string;
578
579
  tipNameRepeat: string;
579
580
  noMoreSheet: string;
580
581
  confirmDelete: string;
@@ -593,6 +593,7 @@ declare const _default: {
593
593
  cancelText: string;
594
594
  chooseText: string;
595
595
  focus: string;
596
+ copyLink: string;
596
597
  tipNameRepeat: string;
597
598
  noMoreSheet: string;
598
599
  confirmDelete: string;
@@ -738,6 +738,7 @@ declare const _default: {
738
738
  cancelText: string;
739
739
  chooseText: string;
740
740
  focus: string;
741
+ copyLink: string;
741
742
  tipNameRepeat: string;
742
743
  noMoreSheet: string;
743
744
  confirmDelete: string;
@@ -1,4 +1,13 @@
1
1
  import { Context } from '../context';
2
2
 
3
3
  export declare function getBorderInfoComputeRange(ctx: Context, dataset_row_st: number, dataset_row_ed: number, dataset_col_st: number, dataset_col_ed: number, sheetId?: string): Record<string, any>;
4
+ /**
5
+ * getBorderInfoComputeRange for the current sheet's canvas draw, cached (C6).
6
+ * The draw re-expanded every borderInfo entry on every repaint. Keyed by the
7
+ * identities of borderInfo, merge, rowhidden and colhidden (Immer gives each
8
+ * a new identity on change; merged cells' `mc` follows `merge`), the grid
9
+ * size and the drawn bounds, so redraws for scroll-back, selection moves,
10
+ * edits and remote cells reuse the result. Callers only read it.
11
+ */
12
+ export declare function getBorderInfoComputeRangeCached(ctx: Context, dataset_row_st: number, dataset_row_ed: number, dataset_col_st: number, dataset_col_ed: number): Record<string, any>;
4
13
  export declare function getBorderInfoCompute(ctx: Context, sheetId?: string): any;