@vuu-ui/vuu-utils 2.1.10 → 2.1.11

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 (83) hide show
  1. package/cjs/node_modules/@dnd-kit/react/hooks.js +17 -17
  2. package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -1
  3. package/cjs/node_modules/@dnd-kit/react/index.js +24 -24
  4. package/cjs/node_modules/@dnd-kit/react/index.js.map +1 -1
  5. package/cjs/node_modules/@dnd-kit/react/sortable.js +5 -5
  6. package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -1
  7. package/cjs/packages/vuu-utils/dist/index.js +6004 -0
  8. package/cjs/packages/vuu-utils/dist/index.js.map +1 -0
  9. package/cjs/packages/vuu-utils/src/ShellContext.js +3 -3
  10. package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -1
  11. package/cjs/packages/vuu-utils/src/ThemeProvider.js +10 -10
  12. package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -1
  13. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +2 -2
  14. package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -1
  15. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +4 -4
  16. package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -1
  17. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +5 -5
  18. package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -1
  19. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +3 -3
  20. package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -1
  21. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js +5 -5
  22. package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -1
  23. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js +15 -12
  24. package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -1
  25. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js +130 -52
  26. package/cjs/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -1
  27. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js +32 -1
  28. package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -1
  29. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js +23 -15
  30. package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -1
  31. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +2 -2
  32. package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -1
  33. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +3 -3
  34. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -1
  35. package/cjs/packages/vuu-utils/src/date/date-utils.js +2 -2
  36. package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -1
  37. package/cjs/packages/vuu-utils/src/date/formatter.js +2 -2
  38. package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -1
  39. package/cjs/packages/vuu-utils/src/feature-utils.js +2 -2
  40. package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -1
  41. package/cjs/packages/vuu-utils/src/index.js +8 -2
  42. package/cjs/packages/vuu-utils/src/index.js.map +1 -1
  43. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +8 -0
  44. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
  45. package/cjs/packages/vuu-utils/src/react-utils.js +8 -8
  46. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -1
  47. package/cjs/packages/vuu-utils/src/theme-utils.js +3 -3
  48. package/cjs/packages/vuu-utils/src/theme-utils.js.map +1 -1
  49. package/cjs/packages/vuu-utils/src/useId.js +2 -2
  50. package/cjs/packages/vuu-utils/src/useId.js.map +1 -1
  51. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +3 -3
  52. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -1
  53. package/cjs/packages/vuu-utils/src/useResizeObserver.js +5 -5
  54. package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +1 -1
  55. package/cjs/packages/vuu-utils/src/useStateRef.js +4 -4
  56. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -1
  57. package/esm/packages/vuu-utils/dist/index.js +5979 -0
  58. package/esm/packages/vuu-utils/dist/index.js.map +1 -0
  59. package/esm/packages/vuu-utils/src/ThemeProvider.js +2 -2
  60. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -1
  61. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +2 -2
  62. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -1
  63. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js +7 -4
  64. package/esm/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -1
  65. package/esm/packages/vuu-utils/src/data-editing/EditSession.js +130 -53
  66. package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -1
  67. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js +32 -2
  68. package/esm/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -1
  69. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +17 -9
  70. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -1
  71. package/esm/packages/vuu-utils/src/feature-utils.js +2 -2
  72. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -1
  73. package/esm/packages/vuu-utils/src/index.js +3 -3
  74. package/esm/packages/vuu-utils/src/protocol-message-utils.js +5 -1
  75. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
  76. package/package.json +6 -6
  77. package/types/data-editing/EditButtons.d.ts +1 -1
  78. package/types/data-editing/EditSession.d.ts +30 -6
  79. package/types/data-editing/edit-utils.d.ts +2 -0
  80. package/types/data-editing/useEditableTable.d.ts +1 -1
  81. package/types/filters/filter-utils.d.ts +2 -1
  82. package/types/index.d.ts +3 -2
  83. package/types/protocol-message-utils.d.ts +5 -1
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
4
4
 
5
5
  const defaultConfig = {};
6
- const ShellContext = React.createContext(defaultConfig);
6
+ const ShellContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext(defaultConfig);
7
7
  const useShellContext = () => {
8
- return React.useContext(ShellContext);
8
+ return __WEBPACK_EXTERNAL_MODULE_react__.useContext(ShellContext);
9
9
  };
10
10
 
11
11
  exports.ShellContext = ShellContext;
@@ -1 +1 @@
1
- {"version":3,"file":"ShellContext.js","sources":["../../../../../../packages/vuu-utils/src/ShellContext.ts"],"sourcesContent":["import type { RpcResponseHandler } from \"@vuu-ui/vuu-data-types\";\nimport type {\n DefaultColumnConfiguration,\n DefaultTableConfiguration,\n} from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useContext } from \"react\";\nimport { LookupTableProvider } from \"./feature-utils\";\n\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getDefaultTableConfig?: DefaultTableConfiguration;\n getLookupValues?: LookupTableProvider;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nexport const ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAeA,MAAM,gBAAgB,EAAC;AAEV,MAAA,YAAA,GAAeA,oBAAiC,aAAa;AAEnE,MAAM,kBAAkB,MAAM;AACnC,EAAA,OAAOC,iBAAW,YAAY,CAAA;AAChC;;;;;"}
1
+ {"version":3,"file":"ShellContext.js","sources":["../../../../../../packages/vuu-utils/src/ShellContext.ts"],"sourcesContent":["import type { RpcResponseHandler } from \"@vuu-ui/vuu-data-types\";\nimport type {\n DefaultColumnConfiguration,\n DefaultTableConfiguration,\n} from \"@vuu-ui/vuu-table-types\";\nimport { createContext, useContext } from \"react\";\nimport { LookupTableProvider } from \"./feature-utils\";\n\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getDefaultTableConfig?: DefaultTableConfiguration;\n getLookupValues?: LookupTableProvider;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nexport const ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n"],"names":["createContext","useContext"],"mappings":";;;;AAeA,MAAM,gBAAgB,EAAC;AAEV,MAAA,YAAA,GAAeA,gDAAiC,aAAa;AAEnE,MAAM,kBAAkB,MAAM;AACnC,EAAA,OAAOC,6CAAW,YAAY,CAAA;AAChC;;;;;"}
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var cx = require('clsx');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
5
+ var __WEBPACK_EXTERNAL_MODULE_clsx__ = require('clsx');
6
6
 
7
7
  const DEFAULT_DENSITY = "medium";
8
8
  const DEFAULT_THEME = "salt-theme";
9
9
  const DEFAULT_THEME_MODE = "light";
10
- const ThemeContext = React.createContext({
10
+ const ThemeContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext({
11
11
  density: "high",
12
12
  theme: "vuu",
13
13
  themeMode: "light"
@@ -18,7 +18,7 @@ const DEFAULT_THEME_ATTRIBUTES = [
18
18
  "light"
19
19
  ];
20
20
  const useThemeAttributes = (themeAttributes) => {
21
- const context = React.useContext(ThemeContext);
21
+ const context = __WEBPACK_EXTERNAL_MODULE_react__.useContext(ThemeContext);
22
22
  if (themeAttributes) {
23
23
  return [
24
24
  themeAttributes.themeClass,
@@ -35,9 +35,9 @@ const useThemeAttributes = (themeAttributes) => {
35
35
  return DEFAULT_THEME_ATTRIBUTES;
36
36
  };
37
37
  const createThemedChildren = (children, theme, themeMode, density) => {
38
- if (React.isValidElement(children)) {
39
- return React.cloneElement(children, {
40
- className: cx(
38
+ if (__WEBPACK_EXTERNAL_MODULE_react__.isValidElement(children)) {
39
+ return __WEBPACK_EXTERNAL_MODULE_react__.cloneElement(children, {
40
+ className: __WEBPACK_EXTERNAL_MODULE_clsx__(
41
41
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
42
42
  children.props?.className,
43
43
  `${theme}-theme`,
@@ -67,12 +67,12 @@ const ThemeProvider = ({
67
67
  density: inheritedDensity,
68
68
  themeMode: inheritedThemeMode,
69
69
  theme: inheritedTheme
70
- } = React.useContext(ThemeContext);
70
+ } = __WEBPACK_EXTERNAL_MODULE_react__.useContext(ThemeContext);
71
71
  const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;
72
72
  const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;
73
73
  const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;
74
74
  const themedChildren = applyThemeClasses ? createThemedChildren(children, theme, themeMode, density) : children;
75
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value: { themeMode, density, theme }, children: themedChildren });
75
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(ThemeContext.Provider, { value: { themeMode, density, theme }, children: themedChildren });
76
76
  };
77
77
  ThemeProvider.displayName = "ThemeProvider";
78
78
 
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sources":["../../../../../../packages/vuu-utils/src/ThemeProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"clsx\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"salt-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `salt-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `salt-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n"],"names":["createContext","useContext","isValidElement","cloneElement","jsx"],"mappings":";;;;;;AAUO,MAAM,eAA2B,GAAA;AACjC,MAAM,aAAgB,GAAA;AACtB,MAAM,kBAAgC,GAAA;AAYtC,MAAM,eAAeA,mBAAiC,CAAA;AAAA,EAC3D,OAAS,EAAA,MAAA;AAAA,EACT,KAAO,EAAA,KAAA;AAAA,EACP,SAAW,EAAA;AACb,CAAC;AAID,MAAM,wBAAyC,GAAA;AAAA,EAC7C,KAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAQa,MAAA,kBAAA,GAAqB,CAChC,eACgC,KAAA;AAChC,EAAM,MAAA,OAAA,GAAUC,iBAAW,YAAY,CAAA;AACvC,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA;AAAA,MACL,eAAgB,CAAA,UAAA;AAAA,MAChB,eAAgB,CAAA,YAAA;AAAA,MAChB,eAAgB,CAAA;AAAA,KAClB;AAAA,aACS,OAAS,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,CAAA,EAAG,QAAQ,KAAK,CAAA,MAAA,CAAA;AAAA,MAChB,CAAA,aAAA,EAAgB,QAAQ,OAAO,CAAA,CAAA;AAAA,MAC/B,OAAQ,CAAA;AAAA,KACV;AAAA;AAEF,EAAO,OAAA,wBAAA;AACT;AAEA,MAAM,oBAAuB,GAAA,CAC3B,QACA,EAAA,KAAA,EACA,WACA,OACG,KAAA;AACH,EAAI,IAAAC,oBAAA,CAA4C,QAAQ,CAAG,EAAA;AACzD,IAAA,OAAOC,mBAAa,QAAU,EAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA;AAAA,QAET,SAAS,KAAO,EAAA,SAAA;AAAA,QAChB,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,QACR,gBAAgB,OAAO,CAAA;AAAA,OACzB;AAAA;AAAA;AAAA,MAGA,WAAa,EAAA;AAAA,KACd,CAAA;AAAA,GACI,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA;AAAA,iDAAA;AAAA,KAEF;AACA,IAAO,OAAA,QAAA;AAAA;AAEX,CAAA;AAUO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,iBAAoB,GAAA,KAAA;AAAA,EACpB,QAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,SAAW,EAAA,aAAA;AAAA,EACX,OAAS,EAAA;AACX,CAA0B,KAAA;AACxB,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA,gBAAA;AAAA,IACT,SAAW,EAAA,kBAAA;AAAA,IACX,KAAO,EAAA;AAAA,GACT,GAAIF,iBAAW,YAAY,CAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,eAAe,gBAAoB,IAAA,eAAA;AACnD,EAAM,MAAA,SAAA,GAAY,iBAAiB,kBAAsB,IAAA,kBAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,aAAa,cAAkB,IAAA,aAAA;AAC7C,EAAA,MAAM,iBAAiB,iBACnB,GAAA,oBAAA,CAAqB,UAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CACxD,GAAA,QAAA;AAEJ,EACE,uBAAAG,cAAA,CAAC,YAAa,CAAA,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,SAAW,EAAA,OAAA,EAAS,KAAM,EAAA,EACvD,QACH,EAAA,cAAA,EAAA,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;;;;;;;;"}
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../../../../packages/vuu-utils/src/ThemeProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"clsx\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"salt-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `salt-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `salt-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n"],"names":["createContext","useContext","isValidElement","cloneElement","cx","jsx"],"mappings":";;;;;;AAUO,MAAM,eAA2B,GAAA;AACjC,MAAM,aAAgB,GAAA;AACtB,MAAM,kBAAgC,GAAA;AAYtC,MAAM,eAAeA,+CAAiC,CAAA;AAAA,EAC3D,OAAS,EAAA,MAAA;AAAA,EACT,KAAO,EAAA,KAAA;AAAA,EACP,SAAW,EAAA;AACb,CAAC;AAID,MAAM,wBAAyC,GAAA;AAAA,EAC7C,KAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAQa,MAAA,kBAAA,GAAqB,CAChC,eACgC,KAAA;AAChC,EAAM,MAAA,OAAA,GAAUC,6CAAW,YAAY,CAAA;AACvC,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA;AAAA,MACL,eAAgB,CAAA,UAAA;AAAA,MAChB,eAAgB,CAAA,YAAA;AAAA,MAChB,eAAgB,CAAA;AAAA,KAClB;AAAA,aACS,OAAS,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,CAAA,EAAG,QAAQ,KAAK,CAAA,MAAA,CAAA;AAAA,MAChB,CAAA,aAAA,EAAgB,QAAQ,OAAO,CAAA,CAAA;AAAA,MAC/B,OAAQ,CAAA;AAAA,KACV;AAAA;AAEF,EAAO,OAAA,wBAAA;AACT;AAEA,MAAM,oBAAuB,GAAA,CAC3B,QACA,EAAA,KAAA,EACA,WACA,OACG,KAAA;AACH,EAAI,IAAAC,gDAAA,CAA4C,QAAQ,CAAG,EAAA;AACzD,IAAA,OAAOC,+CAAa,QAAU,EAAA;AAAA,MAC5B,SAAW,EAAAC,gCAAA;AAAA;AAAA,QAET,SAAS,KAAO,EAAA,SAAA;AAAA,QAChB,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,QACR,gBAAgB,OAAO,CAAA;AAAA,OACzB;AAAA;AAAA;AAAA,MAGA,WAAa,EAAA;AAAA,KACd,CAAA;AAAA,GACI,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA;AAAA,iDAAA;AAAA,KAEF;AACA,IAAO,OAAA,QAAA;AAAA;AAEX,CAAA;AAUO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,iBAAoB,GAAA,KAAA;AAAA,EACpB,QAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,SAAW,EAAA,aAAA;AAAA,EACX,OAAS,EAAA;AACX,CAA0B,KAAA;AACxB,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA,gBAAA;AAAA,IACT,SAAW,EAAA,kBAAA;AAAA,IACX,KAAO,EAAA;AAAA,GACT,GAAIH,6CAAW,YAAY,CAAA;AAC3B,EAAM,MAAA,OAAA,GAAU,eAAe,gBAAoB,IAAA,eAAA;AACnD,EAAM,MAAA,SAAA,GAAY,iBAAiB,kBAAsB,IAAA,kBAAA;AACzD,EAAM,MAAA,KAAA,GAAQ,aAAa,cAAkB,IAAA,aAAA;AAC7C,EAAA,MAAM,iBAAiB,iBACnB,GAAA,oBAAA,CAAqB,UAAU,KAAO,EAAA,SAAA,EAAW,OAAO,CACxD,GAAA,QAAA;AAEJ,EACE,uBAAAI,iDAAA,CAAC,YAAa,CAAA,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,SAAW,EAAA,OAAA,EAAS,KAAM,EAAA,EACvD,QACH,EAAA,cAAA,EAAA,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
4
4
 
5
5
  const getServerAPI = () => {
6
6
  throw Error("no DataProvider has been installed");
@@ -10,7 +10,7 @@ class NullDataSourceConstructor {
10
10
  throw Error("no DataProvider has been installed");
11
11
  }
12
12
  }
13
- const DataContext = React.createContext({
13
+ const DataContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext({
14
14
  isLocalData: false,
15
15
  getServerAPI,
16
16
  VuuDataSource: NullDataSourceConstructor
@@ -1 +1 @@
1
- {"version":3,"file":"DataContext.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataContextProps {\n VuuDataSource: DataSourceConstructor;\n isLocalData: boolean;\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n /**\n * A tableSchema would normally be requested via the serverAPI.\n * schemas can be injected, in which case these 'local' schemas\n * will be returned from the getTableSchema API call.\n * The key is formed from concatenation of module and tableName\n * from VuuTable e.g 'SIMUL:instruments'\n */\n tableSchemas?: Record<string, TableSchema>;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataProvider has been installed\");\n};\n\nexport class NullDataSourceConstructor {\n constructor(_: DataSourceConstructorProps) {\n throw Error(\"no DataProvider has been installed\");\n }\n}\n\nexport const DataContext = createContext<DataContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSourceConstructor as DataSourceConstructor,\n});\n"],"names":["createContext"],"mappings":";;;;AA4BA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,MAAM,oCAAoC,CAAA;AAClD,CAAA;AAEO,MAAM,yBAA0B,CAAA;AAAA,EACrC,YAAY,CAA+B,EAAA;AACzC,IAAA,MAAM,MAAM,oCAAoC,CAAA;AAAA;AAEpD;AAEO,MAAM,cAAcA,mBAAgC,CAAA;AAAA,EACzD,WAAa,EAAA,KAAA;AAAA,EACb,YAAA;AAAA,EACA,aAAe,EAAA;AACjB,CAAC;;;;;"}
1
+ {"version":3,"file":"DataContext.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataContextProps {\n VuuDataSource: DataSourceConstructor;\n isLocalData: boolean;\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n /**\n * A tableSchema would normally be requested via the serverAPI.\n * schemas can be injected, in which case these 'local' schemas\n * will be returned from the getTableSchema API call.\n * The key is formed from concatenation of module and tableName\n * from VuuTable e.g 'SIMUL:instruments'\n */\n tableSchemas?: Record<string, TableSchema>;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataProvider has been installed\");\n};\n\nexport class NullDataSourceConstructor {\n constructor(_: DataSourceConstructorProps) {\n throw Error(\"no DataProvider has been installed\");\n }\n}\n\nexport const DataContext = createContext<DataContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSourceConstructor as DataSourceConstructor,\n});\n"],"names":["createContext"],"mappings":";;;;AA4BA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,MAAM,oCAAoC,CAAA;AAClD,CAAA;AAEO,MAAM,yBAA0B,CAAA;AAAA,EACrC,YAAY,CAA+B,EAAA;AACzC,IAAA,MAAM,MAAM,oCAAoC,CAAA;AAAA;AAEpD;AAEO,MAAM,cAAcA,+CAAgC,CAAA;AAAA,EACzD,WAAa,EAAA,KAAA;AAAA,EACb,YAAA;AAAA,EACA,aAAe,EAAA;AACjB,CAAC;;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
5
5
  var DataContext = require('./DataContext.js');
6
6
 
7
7
  const DataProvider = ({
@@ -10,9 +10,9 @@ const DataProvider = ({
10
10
  isLocalData = true,
11
11
  VuuDataSource
12
12
  }) => {
13
- return /* @__PURE__ */ jsxRuntime.jsx(DataContext.DataContext.Provider, { value: { isLocalData, VuuDataSource, getServerAPI }, children });
13
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(DataContext.DataContext.Provider, { value: { isLocalData, VuuDataSource, getServerAPI }, children });
14
14
  };
15
- const useData = () => React.useContext(DataContext.DataContext);
15
+ const useData = () => __WEBPACK_EXTERNAL_MODULE_react__.useContext(DataContext.DataContext);
16
16
 
17
17
  exports.DataProvider = DataProvider;
18
18
  exports.useData = useData;
@@ -1 +1 @@
1
- {"version":3,"file":"DataProvider.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataContext, DataContextProps } from \"./DataContext\";\n\nexport const DataProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n}: Omit<DataContextProps, \"isLocalData\"> & {\n children: ReactNode;\n isLocalData?: boolean;\n}) => {\n return (\n <DataContext.Provider value={{ isLocalData, VuuDataSource, getServerAPI }}>\n {children}\n </DataContext.Provider>\n );\n};\n\nexport const useData = () => useContext(DataContext);\n"],"names":["jsx","DataContext","useContext"],"mappings":";;;;;;AAGO,MAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd;AACF,CAGM,KAAA;AACJ,EACE,uBAAAA,cAAA,CAACC,uBAAY,CAAA,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,WAAa,EAAA,aAAA,EAAe,YAAa,EAAA,EACrE,QACH,EAAA,CAAA;AAEJ;AAEa,MAAA,OAAA,GAAU,MAAMC,gBAAA,CAAWD,uBAAW;;;;;"}
1
+ {"version":3,"file":"DataProvider.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataContext, DataContextProps } from \"./DataContext\";\n\nexport const DataProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n}: Omit<DataContextProps, \"isLocalData\"> & {\n children: ReactNode;\n isLocalData?: boolean;\n}) => {\n return (\n <DataContext.Provider value={{ isLocalData, VuuDataSource, getServerAPI }}>\n {children}\n </DataContext.Provider>\n );\n};\n\nexport const useData = () => useContext(DataContext);\n"],"names":["jsx","DataContext","useContext"],"mappings":";;;;;;AAGO,MAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd;AACF,CAGM,KAAA;AACJ,EACE,uBAAAA,iDAAA,CAACC,uBAAY,CAAA,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,WAAa,EAAA,aAAA,EAAe,YAAa,EAAA,EACrE,QACH,EAAA,CAAA;AAEJ;AAEa,MAAA,OAAA,GAAU,MAAMC,4CAAA,CAAWD,uBAAW;;;;;"}
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
5
5
 
6
- const DataSourceContext = React.createContext({
6
+ const DataSourceContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext({
7
7
  dataSource: void 0
8
8
  });
9
9
  const DataSourceProvider = ({
10
10
  children,
11
11
  dataSource
12
12
  }) => {
13
- return /* @__PURE__ */ jsxRuntime.jsx(DataSourceContext.Provider, { value: { dataSource }, children });
13
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(DataSourceContext.Provider, { value: { dataSource }, children });
14
14
  };
15
15
  function useDataSource(throwIfNoDataSource = false) {
16
- const { dataSource } = React.useContext(DataSourceContext);
16
+ const { dataSource } = __WEBPACK_EXTERNAL_MODULE_react__.useContext(DataSourceContext);
17
17
  if (dataSource) {
18
18
  return dataSource;
19
19
  } else if (throwIfNoDataSource) {
@@ -1 +1 @@
1
- {"version":3,"file":"DataSourceProvider.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { createContext, ReactNode, useContext } from \"react\";\n\nexport interface DataSourceContextProps {\n dataSource?: DataSource;\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n dataSource: undefined,\n});\n\nexport const DataSourceProvider = ({\n children,\n dataSource,\n}: {\n children: ReactNode;\n dataSource: DataSource;\n}) => {\n return (\n <DataSourceContext.Provider value={{ dataSource }}>\n {children}\n </DataSourceContext.Provider>\n );\n};\n\nexport function useDataSource(throwIfNoDataSource: true): DataSource;\nexport function useDataSource(\n throwIfNoDataSource: false | undefined,\n): DataSource | undefined;\nexport function useDataSource(throwIfNoDataSource = false) {\n const { dataSource } = useContext(DataSourceContext);\n if (dataSource) {\n return dataSource;\n } else if (throwIfNoDataSource) {\n throw Error(\n `[DataSOurceProvider] useDataSource,no DataSourceProvider has been declared `,\n );\n } else {\n console.warn(\n `[DataSourceProvider] useDataSource: no DataSourceProvider has been declared`,\n );\n }\n}\n"],"names":["createContext","jsx","useContext"],"mappings":";;;;;AAOO,MAAM,oBAAoBA,mBAAsC,CAAA;AAAA,EACrE,UAAY,EAAA,KAAA;AACd,CAAC;AAEM,MAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EACE,uBAAAC,cAAA,CAAC,kBAAkB,QAAlB,EAAA,EAA2B,OAAO,EAAE,UAAA,IAClC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,aAAA,CAAc,sBAAsB,KAAO,EAAA;AACzD,EAAA,MAAM,EAAE,UAAA,EAAe,GAAAC,gBAAA,CAAW,iBAAiB,CAAA;AACnD,EAAA,IAAI,UAAY,EAAA;AACd,IAAO,OAAA,UAAA;AAAA,aACE,mBAAqB,EAAA;AAC9B,IAAM,MAAA,KAAA;AAAA,MACJ,CAAA,2EAAA;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,CAAA,2EAAA;AAAA,KACF;AAAA;AAEJ;;;;;;"}
1
+ {"version":3,"file":"DataSourceProvider.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { createContext, ReactNode, useContext } from \"react\";\n\nexport interface DataSourceContextProps {\n dataSource?: DataSource;\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n dataSource: undefined,\n});\n\nexport const DataSourceProvider = ({\n children,\n dataSource,\n}: {\n children: ReactNode;\n dataSource: DataSource;\n}) => {\n return (\n <DataSourceContext.Provider value={{ dataSource }}>\n {children}\n </DataSourceContext.Provider>\n );\n};\n\nexport function useDataSource(throwIfNoDataSource: true): DataSource;\nexport function useDataSource(\n throwIfNoDataSource: false | undefined,\n): DataSource | undefined;\nexport function useDataSource(throwIfNoDataSource = false) {\n const { dataSource } = useContext(DataSourceContext);\n if (dataSource) {\n return dataSource;\n } else if (throwIfNoDataSource) {\n throw Error(\n `[DataSOurceProvider] useDataSource,no DataSourceProvider has been declared `,\n );\n } else {\n console.warn(\n `[DataSourceProvider] useDataSource: no DataSourceProvider has been declared`,\n );\n }\n}\n"],"names":["createContext","jsx","useContext"],"mappings":";;;;;AAOO,MAAM,oBAAoBA,+CAAsC,CAAA;AAAA,EACrE,UAAY,EAAA,KAAA;AACd,CAAC;AAEM,MAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EACE,uBAAAC,iDAAA,CAAC,kBAAkB,QAAlB,EAAA,EAA2B,OAAO,EAAE,UAAA,IAClC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,aAAA,CAAc,sBAAsB,KAAO,EAAA;AACzD,EAAA,MAAM,EAAE,UAAA,EAAe,GAAAC,4CAAA,CAAW,iBAAiB,CAAA;AACnD,EAAA,IAAI,UAAY,EAAA;AACd,IAAO,OAAA,UAAA;AAAA,aACE,mBAAqB,EAAA;AAC9B,IAAM,MAAA,KAAA;AAAA,MACJ,CAAA,2EAAA;AAAA,KACF;AAAA,GACK,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,CAAA,2EAAA;AAAA,KACF;AAAA;AAEJ;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
4
4
 
5
- const WorkspaceContext = React.createContext({
5
+ const WorkspaceContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext({
6
6
  getApplicationSettings: () => void 0,
7
7
  layoutMetadata: [],
8
8
  saveLayout: () => void 0,
@@ -11,7 +11,7 @@ const WorkspaceContext = React.createContext({
11
11
  loadLayoutById: () => void 0
12
12
  });
13
13
  const usePlaceholderJSON = () => {
14
- const { layoutPlaceholderJSON } = React.useContext(WorkspaceContext);
14
+ const { layoutPlaceholderJSON } = __WEBPACK_EXTERNAL_MODULE_react__.useContext(WorkspaceContext);
15
15
  return layoutPlaceholderJSON;
16
16
  };
17
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceContext.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/WorkspaceContext.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport {\n ApplicationSetting,\n ApplicationSettings,\n LayoutJSON\n} from \"../json-types\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"../layout-types\";\n\nexport interface WorkspaceContextProps {\n layoutMetadata: LayoutMetadata[];\n layoutPlaceholderJSON?: LayoutJSON;\n getApplicationSettings: (\n key?: keyof ApplicationSettings\n ) => ApplicationSettings | ApplicationSetting | undefined;\n loadLayoutById: (id: string) => void;\n saveApplicationSettings: (\n settings: ApplicationSettings | ApplicationSetting,\n key?: keyof ApplicationSettings\n ) => void;\n saveLayout: (n: LayoutMetadataDto) => void;\n saveApplicationLayout: (layout: LayoutJSON) => void;\n workspaceJSON?: LayoutJSON | LayoutJSON[];\n}\n\nexport const WorkspaceContext = React.createContext<WorkspaceContextProps>({\n getApplicationSettings: () => undefined,\n layoutMetadata: [],\n saveLayout: () => undefined,\n saveApplicationLayout: () => undefined,\n saveApplicationSettings: () => undefined,\n loadLayoutById: () => undefined\n});\n\nexport const usePlaceholderJSON = () => {\n const { layoutPlaceholderJSON } = useContext(WorkspaceContext);\n return layoutPlaceholderJSON;\n};\n"],"names":["useContext"],"mappings":";;;;AAwBa,MAAA,gBAAA,GAAmB,MAAM,aAAqC,CAAA;AAAA,EACzE,wBAAwB,MAAM,KAAA,CAAA;AAAA,EAC9B,gBAAgB,EAAC;AAAA,EACjB,YAAY,MAAM,KAAA,CAAA;AAAA,EAClB,uBAAuB,MAAM,KAAA,CAAA;AAAA,EAC7B,yBAAyB,MAAM,KAAA,CAAA;AAAA,EAC/B,gBAAgB,MAAM,KAAA;AACxB,CAAC;AAEM,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,qBAAA,EAA0B,GAAAA,gBAAA,CAAW,gBAAgB,CAAA;AAC7D,EAAO,OAAA,qBAAA;AACT;;;;;"}
1
+ {"version":3,"file":"WorkspaceContext.js","sources":["../../../../../../../packages/vuu-utils/src/context-definitions/WorkspaceContext.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport {\n ApplicationSetting,\n ApplicationSettings,\n LayoutJSON\n} from \"../json-types\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"../layout-types\";\n\nexport interface WorkspaceContextProps {\n layoutMetadata: LayoutMetadata[];\n layoutPlaceholderJSON?: LayoutJSON;\n getApplicationSettings: (\n key?: keyof ApplicationSettings\n ) => ApplicationSettings | ApplicationSetting | undefined;\n loadLayoutById: (id: string) => void;\n saveApplicationSettings: (\n settings: ApplicationSettings | ApplicationSetting,\n key?: keyof ApplicationSettings\n ) => void;\n saveLayout: (n: LayoutMetadataDto) => void;\n saveApplicationLayout: (layout: LayoutJSON) => void;\n workspaceJSON?: LayoutJSON | LayoutJSON[];\n}\n\nexport const WorkspaceContext = React.createContext<WorkspaceContextProps>({\n getApplicationSettings: () => undefined,\n layoutMetadata: [],\n saveLayout: () => undefined,\n saveApplicationLayout: () => undefined,\n saveApplicationSettings: () => undefined,\n loadLayoutById: () => undefined\n});\n\nexport const usePlaceholderJSON = () => {\n const { layoutPlaceholderJSON } = useContext(WorkspaceContext);\n return layoutPlaceholderJSON;\n};\n"],"names":["React","useContext"],"mappings":";;;;AAwBa,MAAA,gBAAA,GAAmBA,kCAAM,aAAqC,CAAA;AAAA,EACzE,wBAAwB,MAAM,KAAA,CAAA;AAAA,EAC9B,gBAAgB,EAAC;AAAA,EACjB,YAAY,MAAM,KAAA,CAAA;AAAA,EAClB,uBAAuB,MAAM,KAAA,CAAA;AAAA,EAC7B,yBAAyB,MAAM,KAAA,CAAA;AAAA,EAC/B,gBAAgB,MAAM,KAAA;AACxB,CAAC;AAEM,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,qBAAA,EAA0B,GAAAC,4CAAA,CAAW,gBAAgB,CAAA;AAC7D,EAAO,OAAA,qBAAA;AACT;;;;;"}
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
5
5
 
6
- const DataEditingContext = React.createContext(void 0);
6
+ const DataEditingContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext(void 0);
7
7
  const DataEditingProvider = ({
8
8
  children,
9
9
  editSession
10
10
  }) => {
11
- return /* @__PURE__ */ jsxRuntime.jsx(DataEditingContext.Provider, { value: editSession, children });
11
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(DataEditingContext.Provider, { value: editSession, children });
12
12
  };
13
13
  function useEditSession(throwIfUnavailable = false) {
14
- const editSession = React.useContext(DataEditingContext);
14
+ const editSession = __WEBPACK_EXTERNAL_MODULE_react__.useContext(DataEditingContext);
15
15
  if (editSession === void 0) {
16
16
  if (throwIfUnavailable) {
17
17
  throw Error(
@@ -1 +1 @@
1
- {"version":3,"file":"DataEditingProvider.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/DataEditingProvider.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { EditSession } from \"./EditSession\";\n\nconst DataEditingContext = createContext<EditSession | undefined>(undefined);\n\nexport const DataEditingProvider = ({\n children,\n editSession,\n}: {\n children: ReactNode;\n editSession: EditSession;\n}) => {\n return (\n <DataEditingContext.Provider value={editSession}>\n {children}\n </DataEditingContext.Provider>\n );\n};\n\nexport function useEditSession(\n throwIfUnavailable?: false,\n): EditSession | undefined;\nexport function useEditSession(throwIfUnavailable: true): EditSession;\nexport function useEditSession(throwIfUnavailable = false) {\n const editSession = useContext(DataEditingContext);\n if (editSession === undefined) {\n if (throwIfUnavailable) {\n throw Error(\n \"[useEditSession] no DataEditingContext in scope. You need to enclose editable component(s) with DataEditingProvider\",\n );\n }\n } else {\n return editSession;\n }\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;AAGA,MAAM,kBAAA,GAAqBA,oBAAuC,KAAS,CAAA,CAAA;AAEpE,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAA,sCACG,kBAAmB,CAAA,QAAA,EAAnB,EAA4B,KAAA,EAAO,aACjC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,cAAA,CAAe,qBAAqB,KAAO,EAAA;AACzD,EAAM,MAAA,WAAA,GAAcC,iBAAW,kBAAkB,CAAA;AACjD,EAAA,IAAI,gBAAgB,KAAW,CAAA,EAAA;AAC7B,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAM,MAAA,KAAA;AAAA,QACJ;AAAA,OACF;AAAA;AACF,GACK,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;;;;;"}
1
+ {"version":3,"file":"DataEditingProvider.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/DataEditingProvider.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { EditSession } from \"./EditSession\";\n\nconst DataEditingContext = createContext<EditSession | undefined>(undefined);\n\nexport const DataEditingProvider = ({\n children,\n editSession,\n}: {\n children: ReactNode;\n editSession: EditSession;\n}) => {\n return (\n <DataEditingContext.Provider value={editSession}>\n {children}\n </DataEditingContext.Provider>\n );\n};\n\nexport function useEditSession(\n throwIfUnavailable?: false,\n): EditSession | undefined;\nexport function useEditSession(throwIfUnavailable: true): EditSession;\nexport function useEditSession(throwIfUnavailable = false) {\n const editSession = useContext(DataEditingContext);\n if (editSession === undefined) {\n if (throwIfUnavailable) {\n throw Error(\n \"[useEditSession] no DataEditingContext in scope. You need to enclose editable component(s) with DataEditingProvider\",\n );\n }\n } else {\n return editSession;\n }\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;AAGA,MAAM,kBAAA,GAAqBA,gDAAuC,KAAS,CAAA,CAAA;AAEpE,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAA,yEACG,kBAAmB,CAAA,QAAA,EAAnB,EAA4B,KAAA,EAAO,aACjC,QACH,EAAA,CAAA;AAEJ;AAMgB,SAAA,cAAA,CAAe,qBAAqB,KAAO,EAAA;AACzD,EAAM,MAAA,WAAA,GAAcC,6CAAW,kBAAkB,CAAA;AACjD,EAAA,IAAI,gBAAgB,KAAW,CAAA,EAAA;AAC7B,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAM,MAAA,KAAA;AAAA,QACJ;AAAA,OACF;AAAA;AACF,GACK,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;;;;;"}
@@ -1,29 +1,32 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var core = require('@salt-ds/core');
5
- var React = require('react');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
+ var __WEBPACK_EXTERNAL_MODULE__salt_ds_core__ = require('@salt-ds/core');
5
+ var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
6
6
 
7
7
  const EditButtons = ({
8
8
  editSession,
9
9
  onCancel,
10
10
  onSave
11
11
  }) => {
12
- const [editState, setEditState] = React.useState("clean");
13
- React.useMemo(() => {
12
+ const [editState, setEditState] = __WEBPACK_EXTERNAL_MODULE_react__.useState("clean");
13
+ const handleSave = __WEBPACK_EXTERNAL_MODULE_react__.useCallback(() => {
14
+ onSave(editState === "stale");
15
+ }, [editState, onSave]);
16
+ __WEBPACK_EXTERNAL_MODULE_react__.useMemo(() => {
14
17
  editSession?.on("editState", setEditState);
15
18
  }, [editSession]);
16
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17
- /* @__PURE__ */ jsxRuntime.jsx(
18
- core.Button,
19
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsxs(__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.Fragment, { children: [
20
+ /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(
21
+ __WEBPACK_EXTERNAL_MODULE__salt_ds_core__.Button,
19
22
  {
20
- disabled: editState === "clean",
21
- onClick: onSave,
23
+ disabled: editState === "clean" || editState === "invalid",
24
+ onClick: handleSave,
22
25
  sentiment: "accented",
23
- children: "Save"
26
+ children: editState === "stale" ? "Save (force)" : "Save"
24
27
  }
25
28
  ),
26
- /* @__PURE__ */ jsxRuntime.jsx(core.Button, { onClick: onCancel, children: "Cancel" })
29
+ /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(__WEBPACK_EXTERNAL_MODULE__salt_ds_core__.Button, { onClick: onCancel, children: "Cancel" })
27
30
  ] });
28
31
  };
29
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"EditButtons.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditButtons.tsx"],"sourcesContent":["import { Button } from \"@salt-ds/core\";\nimport { EditState, EditSession } from \"./EditSession\";\nimport { useMemo, useState } from \"react\";\n\nexport interface EditButtonProps {\n editSession?: EditSession;\n onCancel: () => void;\n onSave: () => void;\n}\n\nexport const EditButtons = ({\n editSession,\n onCancel,\n onSave,\n}: EditButtonProps) => {\n const [editState, setEditState] = useState<EditState>(\"clean\");\n\n useMemo(() => {\n editSession?.on(\"editState\", setEditState);\n }, [editSession]);\n\n return (\n <>\n <Button\n disabled={editState === \"clean\"}\n onClick={onSave}\n sentiment=\"accented\"\n >\n Save\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </>\n );\n};\n"],"names":["useState","useMemo","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;AAUO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAoB,OAAO,CAAA;AAE7D,EAAAC,aAAA,CAAQ,MAAM;AACZ,IAAa,WAAA,EAAA,EAAA,CAAG,aAAa,YAAY,CAAA;AAAA,GAC3C,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,UAAU,SAAc,KAAA,OAAA;AAAA,QACxB,OAAS,EAAA,MAAA;AAAA,QACT,SAAU,EAAA,UAAA;AAAA,QACX,QAAA,EAAA;AAAA;AAAA,KAED;AAAA,oBACCD,cAAA,CAAAC,WAAA,EAAA,EAAO,OAAS,EAAA,QAAA,EAAU,QAAM,EAAA,QAAA,EAAA;AAAA,GACnC,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"EditButtons.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditButtons.tsx"],"sourcesContent":["import { Button } from \"@salt-ds/core\";\nimport { EditState, EditSession } from \"./EditSession\";\nimport { useCallback, useMemo, useState } from \"react\";\n\nexport interface EditButtonProps {\n editSession?: EditSession;\n onCancel: () => void;\n onSave: (force?: boolean) => void;\n}\n\nexport const EditButtons = ({\n editSession,\n onCancel,\n onSave,\n}: EditButtonProps) => {\n const [editState, setEditState] = useState<EditState>(\"clean\");\n\n const handleSave = useCallback(() => {\n onSave(editState === \"stale\");\n }, [editState, onSave]);\n\n useMemo(() => {\n editSession?.on(\"editState\", setEditState);\n }, [editSession]);\n\n return (\n <>\n <Button\n disabled={editState === \"clean\" || editState === \"invalid\"}\n onClick={handleSave}\n sentiment=\"accented\"\n >\n {editState === \"stale\" ? \"Save (force)\" : \"Save\"}\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </>\n );\n};\n"],"names":["useState","useCallback","useMemo","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;AAUO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,2CAAoB,OAAO,CAAA;AAE7D,EAAM,MAAA,UAAA,GAAaC,8CAAY,MAAM;AACnC,IAAA,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,GAC3B,EAAA,CAAC,SAAW,EAAA,MAAM,CAAC,CAAA;AAEtB,EAAAC,yCAAA,CAAQ,MAAM;AACZ,IAAa,WAAA,EAAA,EAAA,CAAG,aAAa,YAAY,CAAA;AAAA,GAC3C,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBAEIC,kDAAA,CAAAC,sDAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAC,iDAAA;AAAA,MAACC,gDAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,SAAc,KAAA,OAAA,IAAW,SAAc,KAAA,SAAA;AAAA,QACjD,OAAS,EAAA,UAAA;AAAA,QACT,SAAU,EAAA,UAAA;AAAA,QAET,QAAA,EAAA,SAAA,KAAc,UAAU,cAAiB,GAAA;AAAA;AAAA,KAC5C;AAAA,oBACCD,iDAAA,CAAAC,gDAAA,EAAA,EAAO,OAAS,EAAA,QAAA,EAAU,QAAM,EAAA,QAAA,EAAA;AAAA,GACnC,EAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var eventEmitter = require('../event-emitter.js');
4
+ var index = require('../../dist/index.js');
4
5
 
5
6
  var __typeError = (msg) => {
6
7
  throw TypeError(msg);
@@ -9,26 +10,28 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
9
10
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
10
11
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
11
12
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
12
- var _active, _rowEdits, _editCount, _sourceTableDataSource, _sessionDataSource, _inEditMode;
13
+ var _rowEdits, _editCount, _invalidCount, _sourceTableDataSource, _sessionDataSource, _inEditMode;
14
+ class StaleUpdateError extends Error {
15
+ }
13
16
  class EditSession extends eventEmitter.EventEmitter {
14
17
  constructor(dataSource) {
15
18
  super();
16
- __privateAdd(this, _active, false);
17
19
  /**
18
20
  * Row key => row edits
19
21
  */
20
22
  __privateAdd(this, _rowEdits, /* @__PURE__ */ new Map());
21
23
  __privateAdd(this, _editCount, 0);
24
+ __privateAdd(this, _invalidCount, 0);
22
25
  __privateAdd(this, _sourceTableDataSource);
23
26
  __privateAdd(this, _sessionDataSource);
24
27
  __privateAdd(this, _inEditMode, false);
25
28
  __privateSet(this, _sourceTableDataSource, dataSource);
26
- }
27
- get active() {
28
- return __privateGet(this, _active);
29
- }
30
- set active(isActive) {
31
- __privateSet(this, _active, isActive);
29
+ dataSource.on("remote-update-during-local-edit", (rows) => {
30
+ console.log(
31
+ `source table updated via another channel, whilst we have an inline edit session in progress`,
32
+ { rows }
33
+ );
34
+ });
32
35
  }
33
36
  get editCount() {
34
37
  return __privateGet(this, _editCount);
@@ -44,22 +47,51 @@ class EditSession extends eventEmitter.EventEmitter {
44
47
  }
45
48
  }
46
49
  }
50
+ get invalidCount() {
51
+ return __privateGet(this, _invalidCount);
52
+ }
53
+ set invalidCount(val) {
54
+ if (val !== __privateGet(this, _invalidCount)) {
55
+ const oldCount = __privateGet(this, _invalidCount);
56
+ __privateSet(this, _invalidCount, val);
57
+ if (val === 0) {
58
+ this.emit("editState", __privateGet(this, _editCount) === 0 ? "clean" : "dirty");
59
+ } else if (oldCount === 0) {
60
+ this.emit("editState", "invalid");
61
+ }
62
+ }
63
+ }
47
64
  clear() {
48
65
  __privateGet(this, _rowEdits).clear();
49
66
  __privateSet(this, _editCount, 0);
67
+ __privateSet(this, _inEditMode, false);
50
68
  }
51
69
  async begin(editSessionMode) {
52
- __privateSet(this, _inEditMode, true);
53
- const sessionDataSource = await __privateGet(this, _sourceTableDataSource)?.beginEditSession?.(editSessionMode);
54
- __privateSet(this, _sessionDataSource, sessionDataSource);
55
- return sessionDataSource;
70
+ try {
71
+ __privateSet(this, _inEditMode, true);
72
+ const sessionDataSource = await __privateGet(this, _sourceTableDataSource)?.beginEditSession?.(editSessionMode);
73
+ __privateSet(this, _sessionDataSource, sessionDataSource);
74
+ return sessionDataSource;
75
+ } catch (e) {
76
+ __privateSet(this, _inEditMode, false);
77
+ }
56
78
  }
57
79
  get dataSource() {
58
80
  return __privateGet(this, _sessionDataSource) ?? __privateGet(this, _sourceTableDataSource);
59
81
  }
60
- async end(saveChanges = false) {
61
- await this.dataSource?.endEditSession?.(saveChanges);
62
- this.clear();
82
+ async end(saveChanges = false, force = false) {
83
+ try {
84
+ if (__privateGet(this, _inEditMode)) {
85
+ await this.dataSource?.endEditSession?.(saveChanges, force);
86
+ this.clear();
87
+ }
88
+ } catch (e) {
89
+ if (e instanceof StaleUpdateError) {
90
+ this.emit("editState", "stale");
91
+ } else {
92
+ console.error(`[EditSession] ${e.message}`);
93
+ }
94
+ }
63
95
  }
64
96
  get inEditMode() {
65
97
  return __privateGet(this, _inEditMode);
@@ -67,65 +99,111 @@ class EditSession extends eventEmitter.EventEmitter {
67
99
  get editState() {
68
100
  return this.editCount === 0 ? "clean" : "dirty";
69
101
  }
70
- // TODO how do we deal with the '_edited' pattern
71
- edit(key, columnName, originalValue, newValue) {
102
+ getRowEdits(key) {
72
103
  const rowEditDetails = __privateGet(this, _rowEdits).get(key);
73
104
  if (rowEditDetails) {
74
- const { cellEdits } = rowEditDetails;
75
- const cellEdit = cellEdits.get(columnName);
76
- if (cellEdit) {
77
- if (newValue === cellEdit.originalValue) {
78
- if (cellEdits.size === 1) {
79
- __privateGet(this, _rowEdits).delete(key);
80
- } else {
81
- cellEdits.delete(columnName);
82
- }
83
- this.editCount = __privateGet(this, _editCount) - 1;
105
+ return rowEditDetails;
106
+ } else {
107
+ const rowEditDetails2 = {
108
+ cellEdits: /* @__PURE__ */ new Map()
109
+ };
110
+ __privateGet(this, _rowEdits).set(key, rowEditDetails2);
111
+ return rowEditDetails2;
112
+ }
113
+ }
114
+ storeCellEdit(cellEdits, column, originalValue, editedValue, isValid) {
115
+ const cellEdit = cellEdits.get(column);
116
+ if (cellEdit) {
117
+ if (isValid && cellEdit.isValid === false) {
118
+ cellEdit.isValid = true;
119
+ this.invalidCount -= 1;
120
+ }
121
+ return cellEdit;
122
+ } else {
123
+ const cellEdit2 = {
124
+ originalValue,
125
+ editedValue,
126
+ isValid
127
+ };
128
+ cellEdits.set(column, cellEdit2);
129
+ this.editCount = __privateGet(this, _editCount) + 1;
130
+ return cellEdit2;
131
+ }
132
+ }
133
+ /**
134
+ * Apply incremental edit(s) to edit control value. Used for TextInput, where multiple
135
+ * edits may follow in sequence before value finally committed.
136
+ *
137
+ * @param key value for edited Row
138
+ * @param columnName
139
+ * @param originalValue
140
+ * @param newValue
141
+ */
142
+ edit(key, columnName, originalValue, newValue) {
143
+ const { cellEdits } = this.getRowEdits(key);
144
+ const cellEdit = cellEdits.get(columnName);
145
+ if (cellEdit) {
146
+ if (newValue === cellEdit.originalValue) {
147
+ if (cellEdits.size === 1) {
148
+ __privateGet(this, _rowEdits).delete(key);
84
149
  } else {
85
- cellEdit.editedValue = newValue;
150
+ cellEdits.delete(columnName);
86
151
  }
152
+ this.editCount = __privateGet(this, _editCount) - 1;
87
153
  } else {
88
- cellEdits.set(columnName, {
89
- originalValue,
90
- editedValue: newValue
91
- });
92
- this.editCount = __privateGet(this, _editCount) + 1;
154
+ cellEdit.editedValue = newValue;
93
155
  }
94
156
  } else {
95
- __privateGet(this, _rowEdits).set(key, {
96
- cellEdits: /* @__PURE__ */ new Map([
97
- [columnName, { originalValue, editedValue: newValue }]
98
- ])
157
+ cellEdits.set(columnName, {
158
+ originalValue,
159
+ editedValue: newValue
99
160
  });
100
161
  this.editCount = __privateGet(this, _editCount) + 1;
101
162
  }
102
163
  }
103
- async commit(key, columnName, typedValue) {
104
- const rowEditDetails = __privateGet(this, _rowEdits).get(key);
105
- if (rowEditDetails) {
164
+ async commit(key, columnName, originalValue, typedValue, isValid) {
165
+ const rowEditDetails = this.getRowEdits(key);
166
+ if (isValid) {
106
167
  const { cellEdits } = rowEditDetails;
107
- const cellEditValues = cellEdits.get(columnName);
108
- if (cellEditValues) {
109
- try {
110
- this.dataSource?.editCell?.(key, columnName, typedValue);
111
- } catch (e) {
112
- console.error(e);
113
- }
168
+ const cellEdit = this.storeCellEdit(
169
+ cellEdits,
170
+ columnName,
171
+ originalValue,
172
+ typedValue,
173
+ isValid
174
+ );
175
+ const response = await this.dataSource?.editCell?.(
176
+ key,
177
+ columnName,
178
+ typedValue
179
+ );
180
+ if (index.isRpcError(response)) {
181
+ cellEdit.isValid = false;
182
+ this.invalidCount += 1;
114
183
  }
184
+ return response;
115
185
  } else {
116
- return {
117
- errorMessage: "CHANGE_REVERTED",
118
- type: "ERROR_RESULT"
119
- };
186
+ if (rowEditDetails) {
187
+ const { cellEdits } = rowEditDetails;
188
+ const cellEditValues = cellEdits.get(columnName);
189
+ if (cellEditValues && cellEditValues.isValid !== false) {
190
+ cellEditValues.isValid = false;
191
+ this.invalidCount += 1;
192
+ }
193
+ }
194
+ console.log(
195
+ `[EditSession] key ${key}, column ${columnName} is valid ? ${isValid} `
196
+ );
120
197
  }
121
198
  }
122
199
  }
123
- _active = new WeakMap();
124
200
  _rowEdits = new WeakMap();
125
201
  _editCount = new WeakMap();
202
+ _invalidCount = new WeakMap();
126
203
  _sourceTableDataSource = new WeakMap();
127
204
  _sessionDataSource = new WeakMap();
128
205
  _inEditMode = new WeakMap();
129
206
 
130
207
  exports.EditSession = EditSession;
208
+ exports.StaleUpdateError = StaleUpdateError;
131
209
  //# sourceMappingURL=EditSession.js.map