@sheetpane/grid 0.3.0 → 0.4.0

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 (74) hide show
  1. package/README.md +294 -13
  2. package/custom-elements.json +292 -27
  3. package/dist/check.d.ts +75 -0
  4. package/dist/check.d.ts.map +1 -0
  5. package/dist/check.js +151 -0
  6. package/dist/check.js.map +1 -0
  7. package/dist/errors/element.d.ts +90 -12
  8. package/dist/errors/element.d.ts.map +1 -1
  9. package/dist/errors/element.js +572 -50
  10. package/dist/errors/element.js.map +1 -1
  11. package/dist/excel/element.d.ts +168 -15
  12. package/dist/excel/element.d.ts.map +1 -1
  13. package/dist/excel/element.js +752 -90
  14. package/dist/excel/element.js.map +1 -1
  15. package/dist/excel/link.d.ts +40 -0
  16. package/dist/excel/link.d.ts.map +1 -0
  17. package/dist/excel/link.js +90 -0
  18. package/dist/excel/link.js.map +1 -0
  19. package/dist/excel/styles.d.ts.map +1 -1
  20. package/dist/excel/styles.js +37 -5
  21. package/dist/excel/styles.js.map +1 -1
  22. package/dist/frameworks/elements.d.ts +57 -17
  23. package/dist/frameworks/jsx.d.ts +15 -9
  24. package/dist/frameworks/solid.d.ts +51 -11
  25. package/dist/frameworks/svelte.d.ts +28 -16
  26. package/dist/frameworks/vue.d.ts +15 -9
  27. package/dist/index.d.ts +9 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +8 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/llms-full.txt +3027 -239
  32. package/dist/llms.txt +92 -86
  33. package/dist/pane/protection.d.ts +61 -0
  34. package/dist/pane/protection.d.ts.map +1 -0
  35. package/dist/pane/protection.js +89 -0
  36. package/dist/pane/protection.js.map +1 -0
  37. package/dist/pane/rules.d.ts +1 -1
  38. package/dist/pane/rules.d.ts.map +1 -1
  39. package/dist/pane/store.d.ts +336 -15
  40. package/dist/pane/store.d.ts.map +1 -1
  41. package/dist/pane/store.js +891 -44
  42. package/dist/pane/store.js.map +1 -1
  43. package/dist/pane/structure.d.ts +58 -0
  44. package/dist/pane/structure.d.ts.map +1 -0
  45. package/dist/pane/structure.js +238 -0
  46. package/dist/pane/structure.js.map +1 -0
  47. package/dist/pane/types.d.ts +195 -6
  48. package/dist/pane/types.d.ts.map +1 -1
  49. package/dist/pane/types.js +57 -0
  50. package/dist/pane/types.js.map +1 -1
  51. package/dist/plugins/types.d.ts +34 -6
  52. package/dist/plugins/types.d.ts.map +1 -1
  53. package/dist/plugins/types.js.map +1 -1
  54. package/dist/shared/detail.d.ts +24 -0
  55. package/dist/shared/detail.d.ts.map +1 -0
  56. package/dist/shared/detail.js +75 -0
  57. package/dist/shared/detail.js.map +1 -0
  58. package/dist/shared/dom.d.ts +3 -0
  59. package/dist/shared/dom.d.ts.map +1 -1
  60. package/dist/shared/dom.js +3 -0
  61. package/dist/shared/dom.js.map +1 -1
  62. package/dist/static.d.ts +81 -0
  63. package/dist/static.d.ts.map +1 -0
  64. package/dist/static.js +352 -0
  65. package/dist/static.js.map +1 -0
  66. package/dist/style.css +3 -3
  67. package/dist/tokens.d.ts +1 -0
  68. package/dist/tokens.d.ts.map +1 -1
  69. package/dist/tokens.js +2 -2
  70. package/dist/tokens.js.map +1 -1
  71. package/dist/vscode.css-custom-data.json +11 -1
  72. package/dist/vscode.html-custom-data.json +89 -2
  73. package/dist/web-types.json +204 -21
  74. package/package.json +12 -4
package/dist/check.js ADDED
@@ -0,0 +1,151 @@
1
+ // @sheetpane/grid/check — the checks the pane runs on load, with no page (W-54): the rules
2
+ // file, the column rules and every plugin's `validate`, over the same store the elements share,
3
+ // giving the same SheetpaneError[]. One engine, two entry points: this one never imports an
4
+ // element, registers nothing and touches no DOM, so it runs in Node, in a worker and in a page
5
+ // (SR-GRID decision 22f).
6
+ import { parseRange, spError } from '@sheetpane/export';
7
+ import { pluginsFromIds } from './plugins/host.js';
8
+ import { createWorkbook } from './pane/store.js';
9
+ // what a DOM-free host or plugin needs, from the modules the elements use (the same instances)
10
+ export { WorkbookStore, createWorkbook, parseInput, key as cellKey, splitKey, kindRef, baseRef, SLOTTED_KINDS, HISTORY_CAP } from './pane/store.js';
11
+ export { checkDocument, describeRule, RULE_TYPE, CELL_RULE_TYPE } from './pane/rules.js';
12
+ export { BUILTIN_TYPE_NAMES, DEFAULT_ERROR_TYPES, SEVERITY, machineAuthored } from './pane/types.js';
13
+ export { registerPlugin, registeredPluginIds, pluginsFromIds, checkPlugins } from './plugins/host.js';
14
+ export { HOOKS, SLOTS, SINGLE_PROVIDER, STYLE_PROPS } from './plugins/types.js';
15
+ export { shiftFormula } from '@sheetpane/export';
16
+ export { CODES, ERRORS_DOC_URL, codeUrl, spMessage, spError, codeOf, detailOf } from '@sheetpane/export';
17
+ /**
18
+ * The errors a pane holds once a file has loaded and its checks have finished — the rules file, the
19
+ * column rules (including an async `validate`, awaited) and every plugin's `validate`, after a
20
+ * `derive` plugin has recalculated — computed with no page (SR-GRID decision 22f). Same file, same
21
+ * options → the same errors as `<sheetpane-excel>` in a browser; only `id` and `createdAt` are per
22
+ * run. Sorted by sheet (workbook order), row, column, then type and message.
23
+ * @param file - The `.xlsx` or `.csv` bytes.
24
+ * @param options - The pane's settings: `rules`, `columns`, `validate`, `onInvalid`, `headerRow`, `plugins`, and the file's `name`.
25
+ * @returns The errors, SheetpaneError v1.
26
+ * @throws SP-3020 when `file` is not bytes; the reader's own code (SP-10xx) when the file cannot be read.
27
+ * @example
28
+ * ```ts
29
+ * import { check } from '@sheetpane/grid/check';
30
+ * import { validation } from '@sheetpane/validation/check';
31
+ *
32
+ * // `bytes`: the file as your runtime reads it — `await readFile(path)` in Node
33
+ * const found = await check(bytes, {
34
+ * name: 'q3.xlsx',
35
+ * rules: { version: 1, sheets: { '*': { columns: { Units: { type: 'integer', min: 0 } } } } },
36
+ * plugins: [validation()],
37
+ * });
38
+ * const blocking = found.filter((e) => e.severity === 'error');
39
+ * ```
40
+ * @see https://github.com/arpitarya/sheetpane/blob/main/records/0105_GRID.md
41
+ */
42
+ export async function check(file, options = {}) {
43
+ return sorted(await loadWorkbook(file, options));
44
+ }
45
+ /**
46
+ * The workbook {@link check} reads, returned instead of its errors: a {@link WorkbookStore} holding
47
+ * the file, every `derive` landed and every check finished — what a DOM-free host hands to
48
+ * `renderStatic` (`@sheetpane/grid/static`, W-67), or reads with `getErrors()`, `text()` and `value()`.
49
+ * @param file - The `.xlsx` or `.csv` bytes.
50
+ * @param options - The same options as {@link check}.
51
+ * @returns The loaded store; its errors are `check()`'s, unsorted.
52
+ * @throws SP-3020 when `file` is not bytes; the reader's own code (SP-10xx) when the file cannot be read.
53
+ * @example
54
+ * ```ts
55
+ * import { loadWorkbook } from '@sheetpane/grid/check';
56
+ * import { numfmt } from '@sheetpane/numfmt';
57
+ *
58
+ * const book = await loadWorkbook(bytes, { name: 'q3.xlsx', plugins: [numfmt()] });
59
+ * book.text('Holdings', 'C4'); // "1,250.00" — as the pane shows it
60
+ * ```
61
+ */
62
+ export async function loadWorkbook(file, options = {}) {
63
+ const isBlob = typeof Blob !== 'undefined' && file instanceof Blob;
64
+ if (!(file instanceof Uint8Array || file instanceof ArrayBuffer || isBlob)) {
65
+ throw spError('SP-3020', `check() and loadWorkbook() take the file's bytes — a Uint8Array, an ArrayBuffer or a Blob, not ${file === null ? 'null' : typeof file}`, TypeError);
66
+ }
67
+ const deriving = new Set();
68
+ const plugins = (options.plugins ?? []).flatMap((p) => (typeof p === 'string' ? pluginsFromIds([p]) : [p])).map((p) => tracked(p, deriving));
69
+ const store = createWorkbook({ plugins });
70
+ const rules = rulesConfig(options);
71
+ if (rules)
72
+ store.setColumnRules(rules); // before the file, as an element given rules binds them first
73
+ await store.load(file, options.name ?? (await nameOf(file)));
74
+ const load = store.getSnapshot().load;
75
+ if (load.status === 'error')
76
+ throw spError(load.spCode, load.message);
77
+ await settled(store, deriving);
78
+ return store;
79
+ }
80
+ /** The element's `applyRules()`, from options: undefined when none is given (a pane with no rules has none). */
81
+ function rulesConfig(o) {
82
+ if (o.rules === undefined && o.columns === undefined && o.validate === undefined)
83
+ return undefined;
84
+ const c = { columns: o.columns ?? {}, validate: o.validate, onInvalid: o.onInvalid ?? 'flag', headerRow: Math.max(1, Number(o.headerRow ?? 1) || 1) };
85
+ if (o.rules !== undefined)
86
+ c.document = documentOf(o.rules);
87
+ return c;
88
+ }
89
+ /** A rules file given as text is parsed; text that is not JSON becomes the SP-6011 note, as a failed `rules-src` read does. */
90
+ function documentOf(rules) {
91
+ if (typeof rules !== 'string')
92
+ return rules;
93
+ try {
94
+ return JSON.parse(rules);
95
+ }
96
+ catch (e) {
97
+ return { __error: `not JSON — ${e.message}` };
98
+ }
99
+ }
100
+ /** Unnamed bytes are named as `<sheetpane-excel>.load()` names them: a ZIP is `.xlsx`, anything else `.csv`. */
101
+ async function nameOf(file) {
102
+ const head = file instanceof Uint8Array ? file.subarray(0, 2) : file instanceof ArrayBuffer ? new Uint8Array(file, 0, Math.min(2, file.byteLength)) : new Uint8Array(await file.slice(0, 2).arrayBuffer());
103
+ return head[0] === 0x50 && head[1] === 0x4b ? 'workbook.xlsx' : 'data.csv';
104
+ }
105
+ /**
106
+ * The plugin with its `derive` watched, so {@link check} knows when recalculation is done; the
107
+ * plugin itself is the prototype — its id, hooks and anything else it offers (`evaluate()`) unchanged.
108
+ */
109
+ function tracked(p, deriving) {
110
+ if (typeof p?.derive !== 'function')
111
+ return p;
112
+ const w = Object.create(p);
113
+ w.derive = (input, ctx) => {
114
+ const out = p.derive.call(w, input, ctx);
115
+ const done = Promise.resolve(out).then(() => undefined, () => undefined); // a failure is the store's to log (SP-3012)
116
+ deriving.add(done);
117
+ void done.then(() => deriving.delete(done));
118
+ return out;
119
+ };
120
+ return w;
121
+ }
122
+ /** A turn of the event loop: the store's own continuations after a `derive` or a load-phase slice have run. */
123
+ const turn = () => new Promise((r) => setTimeout(r, 0));
124
+ /** Resolves once the rules' load phase is idle (`ruleProgress` undefined) — it reports every step through the store. */
125
+ function rulesIdle(store) {
126
+ if (store.ruleProgress === undefined)
127
+ return Promise.resolve();
128
+ return new Promise((resolve) => {
129
+ const off = store.subscribe(() => { if (store.ruleProgress === undefined) {
130
+ off();
131
+ resolve();
132
+ } });
133
+ });
134
+ }
135
+ /** Waits until nothing is left to run: every `derive` landed and the rules' load phase finished, then once more. */
136
+ async function settled(store, deriving) {
137
+ for (;;) {
138
+ await Promise.all([...deriving]);
139
+ await rulesIdle(store);
140
+ await turn();
141
+ if (!deriving.size && store.ruleProgress === undefined)
142
+ return;
143
+ }
144
+ }
145
+ /** The store's errors in a fixed order: sheet (workbook order), row, column, type, message. */
146
+ function sorted(store) {
147
+ const order = new Map((store.book?.sheets ?? []).map((s, i) => [s.name, i]));
148
+ const at = (e) => { const r = parseRange(e.range); return [order.get(e.sheet) ?? order.size, r?.top ?? -1, r?.left ?? -1]; };
149
+ return store.getErrors().map((e) => ({ e, k: at(e) })).sort((a, b) => a.k[0] - b.k[0] || a.k[1] - b.k[1] || a.k[2] - b.k[2] || (a.e.type < b.e.type ? -1 : a.e.type > b.e.type ? 1 : 0) || (a.e.message < b.e.message ? -1 : a.e.message > b.e.message ? 1 : 0)).map((x) => x.e);
150
+ }
151
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Theme } from '../tokens.js';
2
2
  import { type WorkbookStore } from '../pane/store.js';
3
- import { type ErrorType, type SheetpaneError, type Severity } from '../pane/types.js';
3
+ import { type ErrorType, type ErrorsEnvelope, type RenderDetail, type ResultsLevel, type SheetpaneError, type Severity } from '../pane/types.js';
4
4
  import { ElementBase } from '../shared/dom.js';
5
5
  declare const sevOrder: Record<Severity, number>;
6
6
  /**
@@ -10,25 +10,33 @@ declare const sevOrder: Record<Severity, number>;
10
10
  *
11
11
  * Attributes:
12
12
  * - `pane` — the pane id shared with the sheet; none gives the element its own store.
13
- * - `readonly` — hides the form, Resolve, Delete, Undo and Redo (a sign-off screen).
14
- * - `author` — written into the errors this element's user adds.
13
+ * - `readonly` — hides the form, Resolve, Accept…, Delete, Undo and Redo (a sign-off screen).
14
+ * - `author` — written into the errors this element's user adds, and as who accepted one (W-69).
15
15
  * - `plugins` — space-separated registered plugin ids; fixed per pane.
16
16
  * - `theme` — `light` (the default), `dark` or `auto`.
17
+ * - `results` — `summary` (the default), `marks` or `off`: how `pass` and `skipped` results show, pane-wide (W-50).
18
+ * - `layers` — space-separated review layers to show (W-51); none shows every layer. Shared by the pane's elements; with two or more layers the header shows a switch.
17
19
  *
18
- * Properties: `workbook`, `errors`, `errorTypes`, `readOnly`, `theme`.
20
+ * Properties: `workbook`, `errors`, `errorTypes`, `readOnly`, `theme`, `results`, `renderDetail`, `layers`, `layerNames`.
19
21
  *
20
- * Methods: `getErrors()`, `setErrors(list, { plugins? })`, `renderNow()`.
22
+ * Methods: `getErrors({ layer? })`, `setErrors(list | envelope, { plugins?, layer? })`, `renderNow()`.
21
23
  *
22
24
  * Every event bubbles and is composed; an action's event fires once, on the element where it
23
25
  * happened.
24
26
  *
25
- * @fires sheetpane-errors `{ errors, plugins }` when the pane's errors change — the envelope to save a review.
27
+ * @fires sheetpane-errors `{ v, errors, plugins, layers, changed }` when the pane's errors change — the envelope to save a review (`v: 2`, W-51); `changed` names the layers whose errors changed.
28
+ * @fires sheetpane-layers `{ visible, layers }` when the visible review layers change — the switch or the `layers` attribute (W-51).
26
29
  * @fires sheetpane-change `{ sheet, ref, kind, was, now }` when a cell changes from here ("Also change the cell", undo, redo).
27
30
  * @fires sheetpane-select `{ sheet, ref }` when picking a row selects its cell.
28
31
  * @fires sheetpane-history `{ reason, canUndo, canRedo }` on undo, redo, or the stack cleared by `setErrors()`.
29
- * @fires sheetpane-reveal `{ error }` on Show in sheet, so the host can switch tab or open the pop-up.
32
+ * @fires sheetpane-reveal `{ error }` on Show in sheet, so the host can switch tab or open the pop-up — for a whole-sheet error too (its tab is opened); never for a workbook-level one (W-55); for a result group's Show ▸, its first entry (W-50).
33
+ *
34
+ * Views (W-50, W-64): *Problems* (the default); *✓ Passed* and *— Not checked* while the pane holds results; *Edits n* —
35
+ * every change in the pane, newest first, each with its place, kind, was → now, time, the errors it cleared or raised,
36
+ * and its own Revert — in Edit mode, and in View mode while there are edits.
30
37
  *
31
38
  * @csspart root - The panel's frame: the header, the form, the filters and the list.
39
+ * @csspart detail - The host's region in an open row, after the message: what `renderDetail` returns (W-68).
32
40
  *
33
41
  * @example
34
42
  * ```ts
@@ -39,7 +47,9 @@ declare const sevOrder: Record<Severity, number>;
39
47
  * document.body.append(list);
40
48
  * list.addEventListener('sheetpane-errors', (e) => localStorage.setItem('review', JSON.stringify((e as CustomEvent).detail)));
41
49
  * const saved = JSON.parse(localStorage.getItem('review') ?? 'null');
42
- * if (saved) list.setErrors(saved.errors, { plugins: saved.plugins });
50
+ * if (saved) list.setErrors(saved); // the envelope: every layer, and the plugins notice
51
+ * list.setErrors(pdfFindings, { layer: 'pdf' }); // one layer replaced; the others kept
52
+ * list.layerNames = { pdf: 'PDF check' };
43
53
  * ```
44
54
  * @see https://github.com/arpitarya/sheetpane/blob/main/records/0106_ERRORS.md
45
55
  * @see https://github.com/arpitarya/sheetpane/blob/main/packages/grid/README.md#sheetpane-errors
@@ -60,6 +70,23 @@ export declare class SheetpaneErrors extends ElementBase {
60
70
  private draft;
61
71
  private formKey;
62
72
  private savedPlugins;
73
+ private detailRegion;
74
+ /** W-69: the Accepted chip is on (only accepted errors listed); the error whose Accept form is open, and its reason so far. */
75
+ private showAccepted;
76
+ /** W-51: the switch's button to focus after a re-draw (`''` is All). */
77
+ private focusLayer;
78
+ private accepting;
79
+ private reasonDraft;
80
+ private focusNext;
81
+ private _layerNames;
82
+ private view;
83
+ private openGroups;
84
+ private groupEntries;
85
+ /** A control to focus again once the list is redrawn (a group toggled). */
86
+ private refocus;
87
+ /** W-64: how many edits the Edits view draws; the Edits chip to focus once the last row is reverted. */
88
+ private editsLimit;
89
+ private focusEditsChip;
63
90
  /** The pane's store; assigning one replaces the `pane` lookup. */
64
91
  get workbook(): WorkbookStore | undefined;
65
92
  set workbook(s: WorkbookStore | undefined);
@@ -75,12 +102,42 @@ export declare class SheetpaneErrors extends ElementBase {
75
102
  /** `light` (the default), `dark` or `auto` — the same tokens as the sheet (W-29). */
76
103
  get theme(): Theme;
77
104
  set theme(t: Theme);
78
- /** A copy of the pane's errors, to save a review. */
79
- getErrors(): SheetpaneError[];
80
- /** Restores a saved review. `plugins` (from the saved `sheetpane-errors` envelope) shows a notice when it differs from this pane's set. */
81
- setErrors(list: SheetpaneError[], o?: {
105
+ /**
106
+ * The host's extra detail for an error (W-68): called with a copy of the error when its row is opened, and drawn after
107
+ * the message in a `part="detail"` region. A string is text, never HTML; a Node is the host's own. Called again only when
108
+ * the error changes (its `meta` included) or this is replaced; a throw is logged as SP-3017. Set it on each element
109
+ * that should show it — the sheet's error card has its own.
110
+ */
111
+ get renderDetail(): RenderDetail | undefined;
112
+ set renderDetail(f: RenderDetail | undefined);
113
+ /** The pane's results level (W-50): `summary` (the default), `marks` or `off`; setting it sets the `results` attribute. */
114
+ get results(): ResultsLevel;
115
+ set results(v: ResultsLevel);
116
+ /**
117
+ * The review layers shown (W-51) — the pane's, shared with `<sheetpane-excel>`: every layer until the `layers`
118
+ * attribute or the switch names some. Setting it sets the attribute; `null` or `[]` shows every layer.
119
+ */
120
+ get layers(): string[];
121
+ set layers(v: readonly string[] | null);
122
+ /** What the switch and the rows call each layer (W-51), e.g. `{ pdf: 'PDF check' }`; a layer not named here shows its name (`review` as *Review*). */
123
+ get layerNames(): Readonly<Record<string, string>>;
124
+ set layerNames(m: Readonly<Record<string, string>>);
125
+ /** A copy of the pane's errors, to save a review; `{ layer }` gives one layer's (W-51). */
126
+ getErrors(o?: {
127
+ layer?: string;
128
+ }): SheetpaneError[];
129
+ /**
130
+ * Restores a saved review — a list, or the `sheetpane-errors` envelope with its layers — or, with `layer`, replaces that
131
+ * layer only (W-51). `plugins` (from the saved envelope; read from it when it is passed whole) shows a notice when it
132
+ * differs from this pane's set.
133
+ */
134
+ setErrors(list: SheetpaneError[] | ErrorsEnvelope, o?: {
82
135
  plugins?: string[];
136
+ layer?: string;
83
137
  }): void;
138
+ private layerName;
139
+ /** The `layers` attribute, given to the store (connect, a new store). */
140
+ private applyLayers;
84
141
  /** Builds the shadow root once and binds to the pane's store. */
85
142
  connectedCallback(): void;
86
143
  /** Releases the pane's store. */
@@ -97,9 +154,30 @@ export declare class SheetpaneErrors extends ElementBase {
97
154
  private onClick;
98
155
  private onInput;
99
156
  private onKey;
157
+ /** Selects an error's cell; a sheet-level error opens its tab (W-55), keeping the selection when it is already there; a workbook-level one has no place. */
158
+ private showPlace;
159
+ /** Selects an edit's cell or range (W-64); an edit about a whole sheet opens its tab, keeping the selection when it is already there. */
160
+ private showEdit;
161
+ /** Reverts one edit (W-64) — itself one undo step. Focus moves to the next row's Revert, else the previous one's, else the Edits chip. */
162
+ private revertEdit;
163
+ /** Closes the reason form; focus goes back to Accept…. */
164
+ private closeAccept;
165
+ /** Accepts the error whose form is open (W-69): only with a reason; who is this element's `author`. The row moves under the Accepted chip, which takes focus. */
166
+ private acceptNow;
100
167
  private add;
168
+ /** Show ▸ (W-50): selects the group's range on its first sheet and marks that range's results, even at `summary`. */
169
+ private showGroup;
101
170
  private authorKind;
102
171
  private render;
172
+ /** The Passed or Not checked view (W-50): one row per check (passes, by type + message) or reason (not checked, by message). */
173
+ private groupsHtml;
174
+ /**
175
+ * The Edits view (W-64): one row per change-map entry, newest first — its place and kind, was → now, the time, and the
176
+ * errors it cleared or raised (each a link to the error in Problems); Revert per row in Edit mode. A page at a time.
177
+ */
178
+ private editsHtml;
179
+ /** Draws the cell rows an opened group's box shows, and a few either side — never all of them (W-50, virtualised). */
180
+ private fillCells;
103
181
  private formHtml;
104
182
  }
105
183
  /** The column's header text: the nearest row above with two or more text cells. */
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/errors/element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/errors/element.ts"],"names":[],"mappings":"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"}