@sheetwrite/react 0.3.1 → 0.5.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.
package/README.md CHANGED
@@ -61,6 +61,12 @@ replace the grid. Live inputs are `theme`, `readOnly`, `config`, `overscan`, and
61
61
 
62
62
  `ref` receives the current `Grid` before `onReady({ grid, generation, reason })` runs and clears on replacement or unmount. Reasons are `initial`, `input-reset`, and `renderer-reset`.
63
63
 
64
+ Readiness observes the latest committed live options. A throwing ref or ready
65
+ callback retires the new Grid; consumer errors are not initialization failures.
66
+ Omitted `renderer` and `"canvas"` are equivalent. Changing an explicit
67
+ `wasmSource` after readiness preserves the Grid and retains the loader's
68
+ first-source warning.
69
+
64
70
  Grid events use collision-free names: `onGridChange`, `onViewportChange`, `onSelectionChange`, `onEditBegin`, `onEditCommit`, `onSearch`, `onCommandStateChange`, `onActiveSheetChange`, `onMutationRejected`, `onRendererFallback`, `onDatasourceError`, and `onExportError`. Native host `onChange` and `onScroll` remain ordinary DOM handlers.
65
71
 
66
72
  For vanilla/preload control, import `initSheetwrite()` and `createGrid()` from `@sheetwrite/core`. See [installation](https://sheetwrite.vercel.app/docs/start/installation/), [React integration](https://sheetwrite.vercel.app/docs/frameworks/react/), and [collaboration](https://sheetwrite.vercel.app/docs/guides/collaboration/).
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type CellScalar, type Grid, type GridOptions } from "@sheetwrite/core";
1
+ import type { CellScalar, Grid, GridOptions } from "@sheetwrite/core";
2
2
  import { createSimpleRowBridge, type GridAdapterEventHandlers, type GridSizeProps, type RowBridge, type RowBridgeHandler, type RowBridgeId, type SheetwriteInitializationProps, type SimpleColumn } from "@sheetwrite/core/adapter";
3
3
  import { type CSSProperties, type ForwardedRef, type HTMLAttributes, type ReactElement, type ReactNode } from "react";
4
4
  type GridAdapterEventHandlerName = "onGridChange" | "onRowDelta" | "onSelectionChange" | "onViewportChange" | "onEditBegin" | "onEditCommit" | "onSearch" | "onCommandStateChange" | "onActiveSheetChange" | "onMutationRejected" | "onRendererFallback" | "onDatasourceError" | "onExportError" | "onReady" | "onInitializationError";
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { initSheetwrite, isSheetwriteReady, } from "@sheetwrite/core";
3
- import { createGridController, createSimpleGridInput, createSimpleRowBridge, getGridResetReason, gridSizeStyle, } from "@sheetwrite/core/adapter";
2
+ import { createAdapterGridController, createSimpleGridInput, createSimpleRowBridge, extractGridOptions, gridSizeStyle, } from "@sheetwrite/core/adapter";
4
3
  import { forwardRef, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
5
4
  const useCommitLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
6
5
  function publishGrid(ref, grid) {
@@ -14,20 +13,9 @@ const SheetwriteGridComponent = forwardRef(function SheetwriteGrid(props, ref) {
14
13
  const { className, style, fallback, wasmSource, onInitializationError, onGridChange, onRowDelta, onSelectionChange, onViewportChange, onEditBegin, onEditCommit, onSearch, onCommandStateChange, onActiveSheetChange, onMutationRejected, onRendererFallback, onDatasourceError, onExportError, onReady, rowBridge, workbook, data, datasource, datasourceStorage, renderer, workerUrl, presentation, theme, readOnly, protectionResolver, mutationPolicy, transactionResourceLimits, hyperlinkActivation, renderers, editors, overscan, minColumns, config, height, fill, ...hostAttributes } = props;
15
14
  const hostRef = useRef(null);
16
15
  const controllerRef = useRef(null);
16
+ const currentGrid = useRef(null);
17
17
  const publishedRef = useRef(null);
18
- const generationRef = useRef(0);
19
- const initializedRef = useRef(isSheetwriteReady());
20
- const mountedRef = useRef(false);
21
- const [initializationState, setInitializationState] = useState(initializedRef.current ? "ready" : "loading");
22
- const previousOptionsRef = useRef(null);
23
- const liveOptionsRef = useRef({
24
- theme,
25
- readOnly,
26
- overscan,
27
- minColumns,
28
- config,
29
- });
30
- liveOptionsRef.current = { theme, readOnly, overscan, minColumns, config };
18
+ const [initializationState, setInitializationState] = useState("loading");
31
19
  const handlers = useRef(null);
32
20
  useCommitLayoutEffect(() => {
33
21
  const committedHandlers = {
@@ -74,7 +62,7 @@ const SheetwriteGridComponent = forwardRef(function SheetwriteGrid(props, ref) {
74
62
  if (previous && previous !== ref)
75
63
  publishGrid(previous, null);
76
64
  publishedRef.current = ref;
77
- publishGrid(ref, controllerRef.current?.grid ?? null);
65
+ publishGrid(ref, currentGrid.current);
78
66
  return () => {
79
67
  if (publishedRef.current !== ref)
80
68
  return;
@@ -82,151 +70,56 @@ const SheetwriteGridComponent = forwardRef(function SheetwriteGrid(props, ref) {
82
70
  publishedRef.current = null;
83
71
  };
84
72
  }, [ref]);
85
- useEffect(() => {
86
- mountedRef.current = true;
87
- return () => {
88
- mountedRef.current = false;
89
- };
90
- }, []);
91
- useEffect(() => {
92
- let current = true;
93
- if (isSheetwriteReady()) {
94
- initializedRef.current = true;
95
- setInitializationState("ready");
96
- return;
97
- }
98
- setInitializationState("loading");
99
- void initSheetwrite(wasmSource).then(() => {
100
- if (!mountedRef.current || !isSheetwriteReady())
101
- return;
102
- initializedRef.current = true;
103
- setInitializationState("ready");
104
- }, (error) => {
105
- if (!current || !mountedRef.current)
106
- return;
107
- initializedRef.current = false;
108
- setInitializationState("error");
109
- handlers.current?.onInitializationError?.(error);
110
- });
111
- return () => {
112
- current = false;
113
- };
114
- }, [wasmSource]);
115
- useEffect(() => {
116
- if (initializationState !== "ready")
117
- return;
118
- const host = hostRef.current;
119
- if (!host)
120
- return;
121
- const options = {
122
- workbook,
123
- data,
124
- datasource,
125
- datasourceStorage,
126
- renderer,
127
- workerUrl,
128
- presentation,
129
- renderers,
130
- editors,
131
- protectionResolver,
132
- mutationPolicy,
133
- transactionResourceLimits,
134
- hyperlinkActivation,
135
- ...liveOptionsRef.current,
136
- };
137
- const previousOptions = previousOptionsRef.current;
138
- const reason = generationRef.current === 0
139
- ? "initial"
140
- : ((previousOptions && getGridResetReason(previousOptions, options)) ?? "input-reset");
141
- const controller = createGridController(host, options, {
73
+ if (!controllerRef.current) {
74
+ const forwardCommandStateChange = (event) => handlers.current?.onCommandStateChange?.(event);
75
+ controllerRef.current = createAdapterGridController({
142
76
  onGridChange: (event) => handlers.current?.onGridChange?.(event),
143
- onRowDelta: (projection) => handlers.current?.onRowDelta?.(projection),
144
- onSelectionChange: (selection) => handlers.current?.onSelectionChange?.(selection),
77
+ onRowDelta: (event) => handlers.current?.onRowDelta?.(event),
78
+ onSelectionChange: (event) => handlers.current?.onSelectionChange?.(event),
145
79
  onViewportChange: (event) => handlers.current?.onViewportChange?.(event),
146
80
  onEditBegin: (event) => handlers.current?.onEditBegin?.(event),
147
81
  onEditCommit: (event) => handlers.current?.onEditCommit?.(event),
148
- onSearch: (result) => handlers.current?.onSearch?.(result),
149
- onCommandStateChange: (event) => handlers.current?.onCommandStateChange?.(event),
82
+ onSearch: (event) => handlers.current?.onSearch?.(event),
83
+ get onCommandStateChange() {
84
+ return handlers.current?.onCommandStateChange ? forwardCommandStateChange : undefined;
85
+ },
150
86
  onActiveSheetChange: (event) => handlers.current?.onActiveSheetChange?.(event),
151
87
  onMutationRejected: (event) => handlers.current?.onMutationRejected?.(event),
152
88
  onRendererFallback: (event) => handlers.current?.onRendererFallback?.(event),
153
89
  onDatasourceError: (event) => handlers.current?.onDatasourceError?.(event),
154
90
  onExportError: (event) => handlers.current?.onExportError?.(event),
155
- }, rowBridge);
156
- controllerRef.current = controller;
157
- generationRef.current += 1;
158
- let destroyed = false;
159
- const teardown = (detachPublishedRef = false) => {
160
- if (destroyed)
161
- return;
162
- destroyed = true;
163
- if (controllerRef.current === controller)
164
- controllerRef.current = null;
165
- const published = publishedRef.current;
166
- let cleanupError;
167
- let cleanupFailed = false;
168
- try {
169
- publishGrid(published, null);
170
- }
171
- catch (error) {
172
- cleanupError = error;
173
- cleanupFailed = true;
174
- }
175
- if (detachPublishedRef && publishedRef.current === published)
176
- publishedRef.current = null;
177
- try {
178
- controller.destroy();
179
- }
180
- catch (error) {
181
- cleanupError = cleanupFailed
182
- ? new AggregateError([cleanupError, error], "Sheetwrite React controller cleanup failed")
183
- : error;
184
- cleanupFailed = true;
185
- }
186
- if (cleanupFailed)
187
- throw cleanupError;
188
- };
189
- try {
190
- publishGrid(publishedRef.current, controller.grid);
191
- handlers.current?.onReady?.({
192
- grid: controller.grid,
193
- generation: generationRef.current,
194
- reason,
195
- });
196
- previousOptionsRef.current = options;
197
- }
198
- catch (error) {
199
- try {
200
- teardown(true);
201
- }
202
- catch (cleanupError) {
203
- throw new AggregateError([error, cleanupError], "Sheetwrite React controller creation and cleanup failed");
204
- }
205
- throw error;
206
- }
207
- return teardown;
208
- }, [
209
- initializationState,
210
- workbook,
211
- data,
212
- datasource,
213
- datasourceStorage,
214
- renderer,
215
- workerUrl,
216
- presentation,
217
- protectionResolver,
218
- mutationPolicy,
219
- transactionResourceLimits,
220
- hyperlinkActivation,
221
- renderers,
222
- editors,
91
+ onReady: (event) => handlers.current?.onReady?.(event),
92
+ onInitializationError: (error) => handlers.current?.onInitializationError?.(error),
93
+ }, {
94
+ publish(grid) {
95
+ currentGrid.current = grid;
96
+ publishGrid(publishedRef.current, grid);
97
+ },
98
+ setInitializationState,
99
+ reportConsumerFailure(thrown) {
100
+ reportError(thrown);
101
+ },
102
+ });
103
+ }
104
+ const committedInput = useRef({
105
+ options: extractGridOptions({ ...props }),
223
106
  rowBridge,
224
- ]);
225
- useEffect(() => controllerRef.current?.setReadOnly(readOnly ?? false), [readOnly]);
226
- useEffect(() => controllerRef.current?.setConfig(config), [config]);
227
- useEffect(() => controllerRef.current?.setTheme(theme), [theme]);
228
- useEffect(() => controllerRef.current?.setOverscan(overscan), [overscan]);
229
- useEffect(() => controllerRef.current?.setMinColumns(minColumns), [minColumns]);
107
+ wasmSource,
108
+ });
109
+ useCommitLayoutEffect(() => {
110
+ committedInput.current = { options: extractGridOptions({ ...props }), rowBridge, wasmSource };
111
+ });
112
+ useEffect(() => {
113
+ const controller = controllerRef.current;
114
+ const host = hostRef.current;
115
+ if (!controller || !host)
116
+ return;
117
+ controller.mount(host, committedInput.current);
118
+ return () => controller.unmount();
119
+ }, []);
120
+ useEffect(() => {
121
+ controllerRef.current?.update(committedInput.current);
122
+ });
230
123
  const hostClassName = className ? `sheetwrite ${className}` : "sheetwrite";
231
124
  const sizing = gridSizeStyle({ height, fill });
232
125
  const hostStyle = { ...style, ...sizing };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheetwrite/react",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "React adapter for Sheetwrite.",
6
6
  "license": "MIT",
@@ -19,6 +19,9 @@
19
19
  "react",
20
20
  "canvas"
21
21
  ],
22
+ "sideEffects": [
23
+ "**/*.css"
24
+ ],
22
25
  "main": "./dist/index.js",
23
26
  "module": "./dist/index.js",
24
27
  "types": "./dist/index.d.ts",
@@ -30,7 +33,8 @@
30
33
  "./styles.css": "./styles.css"
31
34
  },
32
35
  "files": [
33
- "dist",
36
+ "dist/**/*.js",
37
+ "dist/**/*.d.ts",
34
38
  "styles.css"
35
39
  ],
36
40
  "publishConfig": {
@@ -45,6 +49,6 @@
45
49
  "react": ">=18"
46
50
  },
47
51
  "dependencies": {
48
- "@sheetwrite/core": "0.3.1"
52
+ "@sheetwrite/core": "0.5.0"
49
53
  }
50
54
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}