@vuu-ui/vuu-table-extras 5.0.0-alpha.2 → 5.0.0-alpha.4

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 (29) hide show
  1. package/package.json +13 -13
  2. package/src/bulk-edit-dialog/useBulkEditDialog.js +93 -0
  3. package/src/csv-upload/parse/csv-parse.js +6 -2
  4. package/src/csv-upload/useCsvUpload.js +17 -0
  5. package/src/editable-table/EditableTable.css.js +41 -0
  6. package/src/editable-table/EditableTable.js +176 -0
  7. package/src/editable-table/EditableTableLayout.js +61 -0
  8. package/src/index.js +4 -0
  9. package/src/inline-add-row/useInlineAddRow.js +0 -8
  10. package/src/table-editor/TableEditorContext.js +9 -0
  11. package/src/table-editor/TableEditorControls.js +86 -0
  12. package/src/table-editor/TableEditorForm.js +142 -0
  13. package/src/table-editor/TableEditorLayout.css.js +16 -0
  14. package/src/table-editor/TableEditorLayout.js +30 -0
  15. package/src/table-editor/TableEditorProvider.js +434 -0
  16. package/src/table-editor/TableEditorTable.js +112 -0
  17. package/src/table-editor/index.js +5 -0
  18. package/types/bulk-edit-dialog/useBulkEditDialog.d.ts +27 -0
  19. package/types/editable-table/EditableTable.d.ts +178 -0
  20. package/types/editable-table/EditableTableLayout.d.ts +41 -0
  21. package/types/index.d.ts +4 -0
  22. package/types/inline-add-row/useInlineAddRow.d.ts +1 -0
  23. package/types/table-editor/TableEditorContext.d.ts +100 -0
  24. package/types/table-editor/TableEditorControls.d.ts +43 -0
  25. package/types/table-editor/TableEditorForm.d.ts +58 -0
  26. package/types/table-editor/TableEditorLayout.d.ts +10 -0
  27. package/types/table-editor/TableEditorProvider.d.ts +57 -0
  28. package/types/table-editor/TableEditorTable.d.ts +24 -0
  29. package/types/table-editor/index.d.ts +5 -0
@@ -0,0 +1,142 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createElement, useCallback, useLayoutEffect, useMemo, useRef } from "react";
3
+ import { CreateRowForm, EditField, EditForm, getFormFields, useEditFormContext } from "@vuu-ui/vuu-data-editing";
4
+ import { useTableEditorContext } from "./TableEditorContext.js";
5
+ const classBase = "vuuTableEditorForm";
6
+ const useFormFields = (fields, operation, enabled)=>{
7
+ const { columns, dataSource } = useTableEditorContext("TableEditorForm");
8
+ const schema = dataSource.tableSchema;
9
+ return useMemo(()=>enabled ? getFormFields({
10
+ columns,
11
+ fields,
12
+ operation,
13
+ schema
14
+ }) : [], [
15
+ columns,
16
+ enabled,
17
+ fields,
18
+ operation,
19
+ schema
20
+ ]);
21
+ };
22
+ const requiredNames = (fields)=>fields.filter(({ required })=>required).map(({ name })=>name);
23
+ const FormRegistration = ()=>{
24
+ const form = useEditFormContext();
25
+ const { formHandleRef } = useTableEditorContext("TableEditorForm");
26
+ useLayoutEffect(()=>{
27
+ formHandleRef.current = form ? {
28
+ cancel: form.cancel,
29
+ getValues: form.getValues,
30
+ isDirty: form.isDirty
31
+ } : void 0;
32
+ });
33
+ useLayoutEffect(()=>()=>{
34
+ formHandleRef.current = void 0;
35
+ }, [
36
+ formHandleRef
37
+ ]);
38
+ return null;
39
+ };
40
+ const TableEditorForm = ({ children, className, fields, onCancelled, onSaved, showButtons = void 0 === children, validate, ...formProps })=>{
41
+ const { confirmCancel, dataSource, editModel, editStrategy, formHandleRef, formSessionProps, mode, onEditCancelled, onEditSaved, selectedRow } = useTableEditorContext("TableEditorForm");
42
+ const formFields = useFormFields(fields, "update", void 0 === children);
43
+ const requiredColumns = useMemo(()=>requiredNames(formFields), [
44
+ formFields
45
+ ]);
46
+ const submittedValuesRef = useRef(void 0);
47
+ const validateEdit = useCallback((values)=>{
48
+ submittedValuesRef.current = values;
49
+ return validate?.(values);
50
+ }, [
51
+ validate
52
+ ]);
53
+ const handleCancelled = useCallback(()=>{
54
+ onCancelled?.();
55
+ onEditCancelled();
56
+ }, [
57
+ onCancelled,
58
+ onEditCancelled
59
+ ]);
60
+ const handleSaved = useCallback(()=>{
61
+ onSaved?.();
62
+ onEditSaved("direct" === editModel ? formHandleRef.current?.getValues() : submittedValuesRef.current);
63
+ }, [
64
+ editModel,
65
+ formHandleRef,
66
+ onEditSaved,
67
+ onSaved
68
+ ]);
69
+ if ("form" !== editStrategy || "create" === mode || void 0 === selectedRow) return null;
70
+ return /*#__PURE__*/ createElement(EditForm, {
71
+ ...formProps,
72
+ ...formSessionProps,
73
+ className: [
74
+ classBase,
75
+ className
76
+ ].filter(Boolean).join(" "),
77
+ confirmCancel: confirmCancel,
78
+ dataRow: selectedRow,
79
+ dataSource: dataSource,
80
+ editModel: editModel,
81
+ isEditMode: "edit" === mode,
82
+ key: selectedRow.key,
83
+ onCancelled: handleCancelled,
84
+ onSaved: handleSaved,
85
+ requiredColumns: requiredColumns,
86
+ showButtons: showButtons,
87
+ validate: validateEdit,
88
+ children: [
89
+ children ?? formFields.map((field)=>/*#__PURE__*/ jsx(EditField, {
90
+ column: field
91
+ }, field.name)),
92
+ /*#__PURE__*/ jsx(FormRegistration, {})
93
+ ]
94
+ });
95
+ };
96
+ const TableEditorCreateForm = ({ children, className, fields, onCancelled, onSaved, ...formProps })=>{
97
+ const { confirmCancel, createKey, createStrategy, dataSource, editModel, editSession, editStrategy, formSessionProps, mode, onCreateDone } = useTableEditorContext("TableEditorCreateForm");
98
+ const generatedFields = useFormFields(fields, "insert", void 0 !== fields || void 0 === children);
99
+ const formFields = useMemo(()=>fields ? generatedFields : generatedFields.map((field)=>field.required ? field : {
100
+ ...field,
101
+ required: false
102
+ }), [
103
+ fields,
104
+ generatedFields
105
+ ]);
106
+ const sharedEditSession = "inline" === editStrategy && "session" === editModel ? editSession : void 0;
107
+ const handleCancelled = useCallback(()=>{
108
+ onCancelled?.();
109
+ onCreateDone(false);
110
+ }, [
111
+ onCancelled,
112
+ onCreateDone
113
+ ]);
114
+ const handleSaved = useCallback(()=>{
115
+ onSaved?.();
116
+ onCreateDone(true);
117
+ }, [
118
+ onCreateDone,
119
+ onSaved
120
+ ]);
121
+ if ("form" !== createStrategy || "create" !== mode) return null;
122
+ return /*#__PURE__*/ createElement(CreateRowForm, {
123
+ ...formProps,
124
+ ...formSessionProps,
125
+ className: [
126
+ classBase,
127
+ className
128
+ ].filter(Boolean).join(" "),
129
+ confirmCancel: confirmCancel,
130
+ dataSource: dataSource,
131
+ editSession: sharedEditSession,
132
+ fields: formFields,
133
+ key: createKey,
134
+ onCancelled: handleCancelled,
135
+ onSaved: handleSaved,
136
+ children: [
137
+ children,
138
+ /*#__PURE__*/ jsx(FormRegistration, {})
139
+ ]
140
+ });
141
+ };
142
+ export { TableEditorCreateForm, TableEditorForm };
@@ -0,0 +1,16 @@
1
+ const css = `
2
+ .vuuTableEditorToolbar {
3
+ align-items: center;
4
+ gap: var(--salt-spacing-100);
5
+ padding: var(--salt-spacing-50) var(--salt-spacing-100);
6
+ flex: none;
7
+ display: flex;
8
+ }
9
+
10
+ .vuuTableEditorPlaceholder {
11
+ color: var(--salt-content-secondary-foreground);
12
+ }
13
+
14
+
15
+ `;
16
+ export default css;
@@ -0,0 +1,30 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useComponentCssInjection } from "@salt-ds/styles";
3
+ import { useWindow } from "@salt-ds/window";
4
+ import clsx from "clsx";
5
+ import { useTableEditorContext } from "./TableEditorContext.js";
6
+ import TableEditorLayout from "./TableEditorLayout.css";
7
+ const useLayoutCss = ()=>{
8
+ const targetWindow = useWindow();
9
+ useComponentCssInjection({
10
+ testId: "vuu-table-editor-layout",
11
+ css: TableEditorLayout,
12
+ window: targetWindow
13
+ });
14
+ };
15
+ const TableEditorToolbar = ({ className, ...htmlAttributes })=>{
16
+ useLayoutCss();
17
+ return /*#__PURE__*/ jsx("div", {
18
+ ...htmlAttributes,
19
+ className: clsx("vuuTableEditorToolbar", className)
20
+ });
21
+ };
22
+ const TableEditorPlaceholder = ({ className, ...htmlAttributes })=>{
23
+ useLayoutCss();
24
+ const { editStrategy, mode, selectedRow } = useTableEditorContext("TableEditorPlaceholder");
25
+ return "form" === editStrategy && "create" !== mode && void 0 === selectedRow ? /*#__PURE__*/ jsx("div", {
26
+ ...htmlAttributes,
27
+ className: clsx("vuuTableEditorPlaceholder", className)
28
+ }) : null;
29
+ };
30
+ export { TableEditorPlaceholder, TableEditorToolbar };
@@ -0,0 +1,434 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { SidePanelProvider } from "@salt-ds/core";
3
+ import { DataEditingProvider, DirectEditSession, getDataRowValues, useEditableTable } from "@vuu-ui/vuu-data-editing";
4
+ import { useCallback, useMemo, useRef, useState } from "react";
5
+ import { TableEditorContext } from "./TableEditorContext.js";
6
+ const useModeState = ({ defaultMode = "view", mode: modeProp, onModeChange })=>{
7
+ const [modeState, setModeState] = useState(defaultMode);
8
+ const isControlled = void 0 !== modeProp;
9
+ const setMode = useCallback((mode)=>{
10
+ if (!isControlled) setModeState(mode);
11
+ onModeChange?.(mode);
12
+ }, [
13
+ isControlled,
14
+ onModeChange
15
+ ]);
16
+ return [
17
+ modeProp ?? modeState,
18
+ setMode
19
+ ];
20
+ };
21
+ const useFormState = ()=>{
22
+ const [columns, setColumns] = useState();
23
+ const formHandleRef = useRef(void 0);
24
+ return {
25
+ columns,
26
+ formHandleRef,
27
+ setColumns
28
+ };
29
+ };
30
+ const cancelForm = async (form, confirmCancel, onNoForm)=>{
31
+ if (void 0 === form) onNoForm();
32
+ else if (!confirmCancel || !form.isDirty || await confirmCancel()) await form.cancel();
33
+ };
34
+ const useInlineCreate = ({ createStrategy, mode, modeAfterCreate, setMode })=>{
35
+ const [createKey, setCreateKey] = useState(0);
36
+ const modeBeforeCreateRef = useRef("view");
37
+ const hasCreateForm = "form" === createStrategy;
38
+ const canCreate = hasCreateForm && "create" !== mode;
39
+ const modeRef = useRef(mode);
40
+ modeRef.current = mode;
41
+ const startCreate = useCallback(()=>{
42
+ const currentMode = modeRef.current;
43
+ if (hasCreateForm && "create" !== currentMode) {
44
+ modeBeforeCreateRef.current = currentMode;
45
+ setCreateKey((key)=>key + 1);
46
+ setMode("create");
47
+ }
48
+ }, [
49
+ hasCreateForm,
50
+ setMode
51
+ ]);
52
+ const endCreate = useCallback(()=>{
53
+ setMode(modeAfterCreate ?? modeBeforeCreateRef.current);
54
+ }, [
55
+ modeAfterCreate,
56
+ setMode
57
+ ]);
58
+ return {
59
+ canCreate,
60
+ createKey,
61
+ endCreate,
62
+ panelOpen: hasCreateForm && "create" === mode,
63
+ startCreate
64
+ };
65
+ };
66
+ const NO_FORM_SESSION_PROPS = void 0;
67
+ const noop = ()=>void 0;
68
+ const Providers = ({ children, value })=>/*#__PURE__*/ jsx(TableEditorContext.Provider, {
69
+ value: value,
70
+ children: /*#__PURE__*/ jsx(SidePanelProvider, {
71
+ onOpenChange: value.setPanelOpen,
72
+ open: value.panelOpen,
73
+ children: children
74
+ })
75
+ });
76
+ const InlineSessionProvider = ({ allowDelete = false, children, confirmCancel, copyOption, createStrategy = "inline", dataSource, deleteMode = allowDelete ? "soft" : void 0, editSessionApi, onCancelled, onError, onSaved, rowDefaults, ...modeProps })=>{
77
+ const [mode, setMode] = useModeState(modeProps);
78
+ const isEditing = "view" !== mode;
79
+ const { columns, formHandleRef, setColumns } = useFormState();
80
+ const handleCancelled = useCallback(()=>{
81
+ setMode("view");
82
+ onCancelled?.();
83
+ }, [
84
+ onCancelled,
85
+ setMode
86
+ ]);
87
+ const handleSaved = useCallback(()=>{
88
+ setMode("view");
89
+ onSaved?.();
90
+ }, [
91
+ onSaved,
92
+ setMode
93
+ ]);
94
+ const editableTable = useEditableTable({
95
+ copyOption,
96
+ dataSource,
97
+ deleteMode,
98
+ editSessionApi,
99
+ isEditMode: isEditing,
100
+ onCancel: handleCancelled,
101
+ onError,
102
+ onSave: handleSaved,
103
+ rowDefaults
104
+ });
105
+ const { editSession, onCancel: cancelEdit } = editableTable;
106
+ const { canCreate, createKey, endCreate, panelOpen, startCreate } = useInlineCreate({
107
+ createStrategy,
108
+ mode,
109
+ modeAfterCreate: "edit",
110
+ setMode
111
+ });
112
+ const cancel = useCallback(async ()=>{
113
+ if ("create" === mode) await cancelForm(formHandleRef.current, confirmCancel, endCreate);
114
+ else if (isEditing && (!confirmCancel || "clean" === editSession.editState || await confirmCancel())) cancelEdit();
115
+ }, [
116
+ cancelEdit,
117
+ confirmCancel,
118
+ editSession,
119
+ endCreate,
120
+ formHandleRef,
121
+ isEditing,
122
+ mode
123
+ ]);
124
+ const startEdit = useCallback(()=>setMode("edit"), [
125
+ setMode
126
+ ]);
127
+ const value = useMemo(()=>({
128
+ allowDelete,
129
+ canClosePanel: false,
130
+ canCreate,
131
+ cancel,
132
+ columns,
133
+ confirmCancel,
134
+ createKey,
135
+ createStrategy,
136
+ dataSource,
137
+ editModel: "session",
138
+ editSession,
139
+ editStrategy: "inline",
140
+ editableTable,
141
+ formHandleRef,
142
+ formSessionProps: NO_FORM_SESSION_PROPS,
143
+ isEditing,
144
+ mode,
145
+ onCreateDone: endCreate,
146
+ onEditCancelled: noop,
147
+ onEditSaved: noop,
148
+ onSelect: noop,
149
+ panelOpen,
150
+ setColumns,
151
+ setPanelOpen: noop,
152
+ startCreate,
153
+ startEdit
154
+ }), [
155
+ allowDelete,
156
+ canCreate,
157
+ cancel,
158
+ columns,
159
+ confirmCancel,
160
+ createKey,
161
+ createStrategy,
162
+ dataSource,
163
+ editSession,
164
+ editableTable,
165
+ endCreate,
166
+ formHandleRef,
167
+ isEditing,
168
+ mode,
169
+ panelOpen,
170
+ setColumns,
171
+ startCreate,
172
+ startEdit
173
+ ]);
174
+ return /*#__PURE__*/ jsx(Providers, {
175
+ value: value,
176
+ children: /*#__PURE__*/ jsx(DataEditingProvider, {
177
+ editSession: editSession,
178
+ children: children
179
+ })
180
+ });
181
+ };
182
+ const InlineDirectProvider = ({ children, confirmCancel, createStrategy = "inline", dataSource, deleteMode, editSessionApi, onCancelled, onError, onSaved, rowDefaults, ...modeProps })=>{
183
+ const [mode, setMode] = useModeState(modeProps);
184
+ const isEditing = "view" !== mode;
185
+ const { columns, formHandleRef, setColumns } = useFormState();
186
+ const editSession = useMemo(()=>new DirectEditSession({
187
+ dataSource
188
+ }), [
189
+ dataSource
190
+ ]);
191
+ const { canCreate, createKey, endCreate, panelOpen, startCreate } = useInlineCreate({
192
+ createStrategy,
193
+ mode,
194
+ setMode
195
+ });
196
+ const onCreateDone = useCallback((saved = false)=>{
197
+ endCreate();
198
+ if (saved) onSaved?.();
199
+ else onCancelled?.();
200
+ }, [
201
+ endCreate,
202
+ onCancelled,
203
+ onSaved
204
+ ]);
205
+ const cancel = useCallback(async ()=>{
206
+ if ("create" === mode) await cancelForm(formHandleRef.current, confirmCancel, onCreateDone);
207
+ else setMode("view");
208
+ }, [
209
+ confirmCancel,
210
+ formHandleRef,
211
+ mode,
212
+ onCreateDone,
213
+ setMode
214
+ ]);
215
+ const startEdit = useCallback(()=>setMode("edit"), [
216
+ setMode
217
+ ]);
218
+ const value = useMemo(()=>({
219
+ allowDelete: false,
220
+ canClosePanel: false,
221
+ canCreate,
222
+ cancel,
223
+ columns,
224
+ confirmCancel,
225
+ createKey,
226
+ createStrategy,
227
+ dataSource,
228
+ editModel: "direct",
229
+ editStrategy: "inline",
230
+ formHandleRef,
231
+ formSessionProps: {
232
+ deleteMode,
233
+ editSessionApi,
234
+ onError,
235
+ rowDefaults
236
+ },
237
+ isEditing,
238
+ mode,
239
+ onCreateDone,
240
+ onEditCancelled: noop,
241
+ onEditSaved: noop,
242
+ onSelect: noop,
243
+ panelOpen,
244
+ setColumns,
245
+ setPanelOpen: noop,
246
+ startCreate,
247
+ startEdit
248
+ }), [
249
+ canCreate,
250
+ cancel,
251
+ columns,
252
+ confirmCancel,
253
+ createKey,
254
+ createStrategy,
255
+ dataSource,
256
+ deleteMode,
257
+ editSessionApi,
258
+ formHandleRef,
259
+ isEditing,
260
+ mode,
261
+ onCreateDone,
262
+ onError,
263
+ panelOpen,
264
+ rowDefaults,
265
+ setColumns,
266
+ startCreate,
267
+ startEdit
268
+ ]);
269
+ return /*#__PURE__*/ jsx(Providers, {
270
+ value: value,
271
+ children: /*#__PURE__*/ jsx(DataEditingProvider, {
272
+ editSession: editSession,
273
+ children: children
274
+ })
275
+ });
276
+ };
277
+ const toRowSnapshot = (values)=>{
278
+ const snapshot = {
279
+ ...values
280
+ };
281
+ return {
282
+ ...snapshot,
283
+ hasColumn: (name)=>name in snapshot
284
+ };
285
+ };
286
+ const FormProvider = ({ children, confirmCancel, dataSource, deleteMode, editModel = "session", editSessionApi, onCancelled, onError, onSaved, panelVisibility = "on-select", rowDefaults, ...modeProps })=>{
287
+ const [mode, setMode] = useModeState(modeProps);
288
+ const [selectedRow, setSelectedRow] = useState();
289
+ const [createKey, setCreateKey] = useState(0);
290
+ const [panelOpenState, setPanelOpenState] = useState(false);
291
+ const panelOpenBeforeCreateRef = useRef(false);
292
+ const { columns, formHandleRef, setColumns } = useFormState();
293
+ const isEditing = "view" !== mode;
294
+ const alwaysVisible = "always" === panelVisibility;
295
+ const canClosePanel = !alwaysVisible && !isEditing;
296
+ const panelOpen = alwaysVisible || isEditing || panelOpenState;
297
+ const setPanelOpen = useCallback((open)=>{
298
+ if (open || canClosePanel) setPanelOpenState(open);
299
+ }, [
300
+ canClosePanel
301
+ ]);
302
+ const onSelect = useCallback((dataRow)=>{
303
+ setSelectedRow(dataRow ? toRowSnapshot(getDataRowValues(dataRow)) : void 0);
304
+ setPanelOpenState(null !== dataRow);
305
+ }, []);
306
+ const startEdit = useCallback(()=>{
307
+ if (selectedRow) {
308
+ setPanelOpenState(true);
309
+ setMode("edit");
310
+ }
311
+ }, [
312
+ selectedRow,
313
+ setMode
314
+ ]);
315
+ const modeRef = useRef(mode);
316
+ modeRef.current = mode;
317
+ const startCreate = useCallback(()=>{
318
+ if ("view" === modeRef.current) {
319
+ setCreateKey((key)=>key + 1);
320
+ panelOpenBeforeCreateRef.current = panelOpenState;
321
+ setMode("create");
322
+ }
323
+ }, [
324
+ panelOpenState,
325
+ setMode
326
+ ]);
327
+ const onCreateDone = useCallback((saved = false)=>{
328
+ setPanelOpenState(panelOpenBeforeCreateRef.current);
329
+ setMode("view");
330
+ if (saved) onSaved?.();
331
+ else onCancelled?.();
332
+ }, [
333
+ onCancelled,
334
+ onSaved,
335
+ setMode
336
+ ]);
337
+ const onEditCancelled = useCallback(()=>{
338
+ setMode("view");
339
+ onCancelled?.();
340
+ }, [
341
+ onCancelled,
342
+ setMode
343
+ ]);
344
+ const onEditSaved = useCallback((values)=>{
345
+ if (values) setSelectedRow(toRowSnapshot(values));
346
+ setMode("view");
347
+ onSaved?.();
348
+ }, [
349
+ onSaved,
350
+ setMode
351
+ ]);
352
+ const cancel = useCallback(async ()=>{
353
+ if (isEditing) await cancelForm(formHandleRef.current, confirmCancel, ()=>"create" === mode ? onCreateDone() : onEditCancelled());
354
+ }, [
355
+ confirmCancel,
356
+ formHandleRef,
357
+ isEditing,
358
+ mode,
359
+ onCreateDone,
360
+ onEditCancelled
361
+ ]);
362
+ const value = useMemo(()=>({
363
+ allowDelete: false,
364
+ canClosePanel,
365
+ canCreate: !isEditing,
366
+ cancel,
367
+ columns,
368
+ confirmCancel,
369
+ createKey,
370
+ createStrategy: "form",
371
+ dataSource,
372
+ editModel,
373
+ editStrategy: "form",
374
+ formHandleRef,
375
+ formSessionProps: {
376
+ deleteMode,
377
+ editSessionApi,
378
+ onError,
379
+ rowDefaults
380
+ },
381
+ isEditing,
382
+ mode,
383
+ onCreateDone,
384
+ onEditCancelled,
385
+ onEditSaved,
386
+ onSelect,
387
+ panelOpen,
388
+ selectedRow,
389
+ setColumns,
390
+ setPanelOpen,
391
+ startCreate,
392
+ startEdit
393
+ }), [
394
+ canClosePanel,
395
+ cancel,
396
+ columns,
397
+ confirmCancel,
398
+ createKey,
399
+ dataSource,
400
+ deleteMode,
401
+ editModel,
402
+ editSessionApi,
403
+ formHandleRef,
404
+ isEditing,
405
+ mode,
406
+ onCreateDone,
407
+ onEditCancelled,
408
+ onEditSaved,
409
+ onError,
410
+ onSelect,
411
+ panelOpen,
412
+ rowDefaults,
413
+ selectedRow,
414
+ setColumns,
415
+ setPanelOpen,
416
+ startCreate,
417
+ startEdit
418
+ ]);
419
+ return /*#__PURE__*/ jsx(Providers, {
420
+ value: value,
421
+ children: children
422
+ });
423
+ };
424
+ const TableEditorProvider = ({ createStrategy, editModel = "session", editStrategy = "inline", ...props })=>"form" === editStrategy ? /*#__PURE__*/ jsx(FormProvider, {
425
+ ...props,
426
+ editModel: editModel
427
+ }) : "direct" === editModel ? /*#__PURE__*/ jsx(InlineDirectProvider, {
428
+ ...props,
429
+ createStrategy: createStrategy
430
+ }) : /*#__PURE__*/ jsx(InlineSessionProvider, {
431
+ ...props,
432
+ createStrategy: createStrategy
433
+ });
434
+ export { TableEditorProvider };