@vuu-ui/vuu-utils 2.1.9 → 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 (67) 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 +10 -10
  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 +75 -44
  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 +5 -5
  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 +9 -7
  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/react-utils.js +8 -8
  42. package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -1
  43. package/cjs/packages/vuu-utils/src/theme-utils.js +3 -3
  44. package/cjs/packages/vuu-utils/src/theme-utils.js.map +1 -1
  45. package/cjs/packages/vuu-utils/src/useId.js +2 -2
  46. package/cjs/packages/vuu-utils/src/useId.js.map +1 -1
  47. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +3 -3
  48. package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -1
  49. package/cjs/packages/vuu-utils/src/useResizeObserver.js +5 -5
  50. package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +1 -1
  51. package/cjs/packages/vuu-utils/src/useStateRef.js +4 -4
  52. package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -1
  53. package/esm/packages/vuu-utils/dist/index.js +5979 -0
  54. package/esm/packages/vuu-utils/dist/index.js.map +1 -0
  55. package/esm/packages/vuu-utils/src/ThemeProvider.js +2 -2
  56. package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -1
  57. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +2 -2
  58. package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -1
  59. package/esm/packages/vuu-utils/src/data-editing/EditSession.js +75 -44
  60. package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -1
  61. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +2 -0
  62. package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -1
  63. package/esm/packages/vuu-utils/src/feature-utils.js +2 -2
  64. package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -1
  65. package/package.json +6 -6
  66. package/types/data-editing/EditSession.d.ts +23 -1
  67. package/types/filters/filter-utils.d.ts +2 -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,24 +1,24 @@
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
- const handleSave = React.useCallback(() => {
12
+ const [editState, setEditState] = __WEBPACK_EXTERNAL_MODULE_react__.useState("clean");
13
+ const handleSave = __WEBPACK_EXTERNAL_MODULE_react__.useCallback(() => {
14
14
  onSave(editState === "stale");
15
15
  }, [editState, onSave]);
16
- React.useMemo(() => {
16
+ __WEBPACK_EXTERNAL_MODULE_react__.useMemo(() => {
17
17
  editSession?.on("editState", setEditState);
18
18
  }, [editSession]);
19
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20
- /* @__PURE__ */ jsxRuntime.jsx(
21
- 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,
22
22
  {
23
23
  disabled: editState === "clean" || editState === "invalid",
24
24
  onClick: handleSave,
@@ -26,7 +26,7 @@ const EditButtons = ({
26
26
  children: editState === "stale" ? "Save (force)" : "Save"
27
27
  }
28
28
  ),
29
- /* @__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" })
30
30
  ] });
31
31
  };
32
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 { 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,eAAoB,OAAO,CAAA;AAE7D,EAAM,MAAA,UAAA,GAAaC,kBAAY,MAAM;AACnC,IAAA,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,GAC3B,EAAA,CAAC,SAAW,EAAA,MAAM,CAAC,CAAA;AAEtB,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,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,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);
@@ -80,8 +81,10 @@ class EditSession extends eventEmitter.EventEmitter {
80
81
  }
81
82
  async end(saveChanges = false, force = false) {
82
83
  try {
83
- await this.dataSource?.endEditSession?.(saveChanges, force);
84
- this.clear();
84
+ if (__privateGet(this, _inEditMode)) {
85
+ await this.dataSource?.endEditSession?.(saveChanges, force);
86
+ this.clear();
87
+ }
85
88
  } catch (e) {
86
89
  if (e instanceof StaleUpdateError) {
87
90
  this.emit("editState", "stale");
@@ -96,61 +99,89 @@ class EditSession extends eventEmitter.EventEmitter {
96
99
  get editState() {
97
100
  return this.editCount === 0 ? "clean" : "dirty";
98
101
  }
99
- edit(key, columnName, originalValue, newValue) {
102
+ getRowEdits(key) {
100
103
  const rowEditDetails = __privateGet(this, _rowEdits).get(key);
101
104
  if (rowEditDetails) {
102
- const { cellEdits } = rowEditDetails;
103
- const cellEdit = cellEdits.get(columnName);
104
- if (cellEdit) {
105
- if (newValue === cellEdit.originalValue) {
106
- if (cellEdits.size === 1) {
107
- __privateGet(this, _rowEdits).delete(key);
108
- } else {
109
- cellEdits.delete(columnName);
110
- }
111
- 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);
112
149
  } else {
113
- cellEdit.editedValue = newValue;
150
+ cellEdits.delete(columnName);
114
151
  }
152
+ this.editCount = __privateGet(this, _editCount) - 1;
115
153
  } else {
116
- cellEdits.set(columnName, {
117
- originalValue,
118
- editedValue: newValue
119
- });
120
- this.editCount = __privateGet(this, _editCount) + 1;
154
+ cellEdit.editedValue = newValue;
121
155
  }
122
156
  } else {
123
- __privateGet(this, _rowEdits).set(key, {
124
- cellEdits: /* @__PURE__ */ new Map([
125
- [columnName, { originalValue, editedValue: newValue }]
126
- ])
157
+ cellEdits.set(columnName, {
158
+ originalValue,
159
+ editedValue: newValue
127
160
  });
128
161
  this.editCount = __privateGet(this, _editCount) + 1;
129
162
  }
130
163
  }
131
- async commit(key, columnName, typedValue, isValid) {
132
- const rowEditDetails = __privateGet(this, _rowEdits).get(key);
164
+ async commit(key, columnName, originalValue, typedValue, isValid) {
165
+ const rowEditDetails = this.getRowEdits(key);
133
166
  if (isValid) {
134
- if (rowEditDetails) {
135
- const { cellEdits } = rowEditDetails;
136
- const cellEditValues = cellEdits.get(columnName);
137
- if (cellEditValues) {
138
- try {
139
- if (cellEditValues.isValid === false) {
140
- cellEditValues.isValid = true;
141
- this.invalidCount -= 1;
142
- }
143
- return this.dataSource?.editCell?.(key, columnName, typedValue);
144
- } catch (e) {
145
- console.error(e);
146
- }
147
- }
148
- } else {
149
- return {
150
- errorMessage: "CHANGE_REVERTED",
151
- type: "ERROR_RESULT"
152
- };
167
+ const { cellEdits } = rowEditDetails;
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;
153
183
  }
184
+ return response;
154
185
  } else {
155
186
  if (rowEditDetails) {
156
187
  const { cellEdits } = rowEditDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"EditSession.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditSession.tsx"],"sourcesContent":["import { DataSource, EditSessionMode } from \"@vuu-ui/vuu-data-types\";\nimport type {\n RpcResultError,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { EventEmitter } from \"../event-emitter\";\n\nexport type EditState = \"clean\" | \"dirty\" | \"invalid\" | \"stale\";\n\ntype CellEdit = {\n originalValue: VuuRowDataItemType;\n editedValue: VuuRowDataItemType;\n isValid?: boolean;\n};\n\n// TODO can add more when when we know what the server implementation of error columns will look like\nexport class StaleUpdateError extends Error {}\n\ntype RowEditDetails = {\n /**\n * Column name => cell edit details\n */\n cellEdits: Map<string, CellEdit>;\n};\n\ntype EditSessionEvents = {\n editState: (editState: EditState) => void;\n};\n\nexport class EditSession extends EventEmitter<EditSessionEvents> {\n /**\n * Row key => row edits\n */\n #rowEdits = new Map<string, RowEditDetails>();\n #editCount = 0;\n #invalidCount = 0;\n #sourceTableDataSource?: DataSource;\n #sessionDataSource?: DataSource;\n #inEditMode = false;\n\n constructor(dataSource: DataSource) {\n super();\n this.#sourceTableDataSource = dataSource;\n\n dataSource.on(\"remote-update-during-local-edit\", (rows) => {\n console.log(\n `source table updated via another channel, whilst we have an inline edit session in progress`,\n { rows },\n );\n });\n }\n\n get editCount() {\n return this.#editCount;\n }\n\n set editCount(val: number) {\n if (val !== this.#editCount) {\n const oldCount = this.#editCount;\n this.#editCount = val;\n if (val === 0) {\n this.emit(\"editState\", \"clean\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"dirty\");\n }\n }\n }\n\n get invalidCount() {\n return this.#invalidCount;\n }\n\n set invalidCount(val: number) {\n if (val !== this.#invalidCount) {\n const oldCount = this.#invalidCount;\n this.#invalidCount = val;\n if (val === 0) {\n this.emit(\"editState\", this.#editCount === 0 ? \"clean\" : \"dirty\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"invalid\");\n }\n }\n }\n\n clear() {\n this.#rowEdits.clear();\n this.#editCount = 0;\n this.#inEditMode = false;\n }\n\n async begin(editSessionMode?: EditSessionMode) {\n try {\n this.#inEditMode = true;\n const sessionDataSource =\n await this.#sourceTableDataSource?.beginEditSession?.(editSessionMode);\n\n this.#sessionDataSource = sessionDataSource;\n\n return sessionDataSource;\n } catch (e) {\n this.#inEditMode = false;\n }\n }\n\n get dataSource() {\n return this.#sessionDataSource ?? this.#sourceTableDataSource;\n }\n\n async end(saveChanges = false, force = false) {\n try {\n await this.dataSource?.endEditSession?.(saveChanges, force);\n this.clear();\n } catch (e) {\n if (e instanceof StaleUpdateError) {\n this.emit(\"editState\", \"stale\");\n } else {\n console.error(`[EditSession] ${(e as Error).message}`);\n }\n }\n }\n\n get inEditMode() {\n return this.#inEditMode;\n }\n\n get editState(): EditState {\n return this.editCount === 0 ? \"clean\" : \"dirty\";\n }\n\n edit(\n key: string,\n columnName: string,\n originalValue: VuuRowDataItemType,\n newValue: VuuRowDataItemType,\n ) {\n const rowEditDetails = this.#rowEdits.get(key);\n if (rowEditDetails) {\n const { cellEdits } = rowEditDetails;\n const cellEdit = cellEdits.get(columnName);\n if (cellEdit) {\n if (newValue === cellEdit.originalValue) {\n if (cellEdits.size === 1) {\n this.#rowEdits.delete(key);\n } else {\n // re-editing a cell had removed the edit\n cellEdits.delete(columnName);\n }\n this.editCount = this.#editCount - 1;\n } else {\n cellEdit.editedValue = newValue;\n }\n } else {\n // row has already been edited, but this column has not\n cellEdits.set(columnName, {\n originalValue,\n editedValue: newValue,\n });\n this.editCount = this.#editCount + 1;\n }\n } else {\n this.#rowEdits.set(key, {\n cellEdits: new Map([\n [columnName, { originalValue, editedValue: newValue }],\n ]),\n });\n this.editCount = this.#editCount + 1;\n }\n }\n\n async commit(\n key: string,\n columnName: string,\n typedValue: string | number | boolean,\n isValid: boolean,\n ) {\n const rowEditDetails = this.#rowEdits.get(key);\n\n if (isValid) {\n if (rowEditDetails) {\n const { cellEdits } = rowEditDetails;\n const cellEditValues = cellEdits.get(columnName);\n if (cellEditValues) {\n try {\n if (cellEditValues.isValid === false) {\n cellEditValues.isValid = true;\n this.invalidCount -= 1;\n }\n return this.dataSource?.editCell?.(key, columnName, typedValue);\n } catch (e) {\n // ??\n console.error(e);\n }\n }\n } else {\n return {\n errorMessage: \"CHANGE_REVERTED\",\n type: \"ERROR_RESULT\",\n } as RpcResultError;\n }\n } else {\n if (rowEditDetails) {\n const { cellEdits } = rowEditDetails;\n const cellEditValues = cellEdits.get(columnName);\n if (cellEditValues && cellEditValues.isValid !== false) {\n cellEditValues.isValid = false;\n this.invalidCount += 1;\n }\n }\n console.log(\n `[EditSession] key ${key}, column ${columnName} is valid ? ${isValid} `,\n );\n }\n }\n}\n"],"names":["EventEmitter"],"mappings":"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"}
1
+ {"version":3,"file":"EditSession.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/EditSession.tsx"],"sourcesContent":["import { DataSource, EditSessionMode } from \"@vuu-ui/vuu-data-types\";\nimport type { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { isRpcError } from \"../../dist/index.mjs\";\n\nexport type EditState = \"clean\" | \"dirty\" | \"invalid\" | \"stale\";\n\ntype CellEdit = {\n originalValue: VuuRowDataItemType;\n editedValue: VuuRowDataItemType;\n isValid?: boolean;\n};\n\n// TODO can add more when when we know what the server implementation of error columns will look like\nexport class StaleUpdateError extends Error {}\n\ntype RowEditDetails = {\n /**\n * Column name => cell edit details\n */\n cellEdits: Map<string, CellEdit>;\n};\n\ntype EditSessionEvents = {\n editState: (editState: EditState) => void;\n};\n\nexport class EditSession extends EventEmitter<EditSessionEvents> {\n /**\n * Row key => row edits\n */\n #rowEdits = new Map<string, RowEditDetails>();\n #editCount = 0;\n #invalidCount = 0;\n #sourceTableDataSource?: DataSource;\n #sessionDataSource?: DataSource;\n #inEditMode = false;\n\n constructor(dataSource: DataSource) {\n super();\n this.#sourceTableDataSource = dataSource;\n\n dataSource.on(\"remote-update-during-local-edit\", (rows) => {\n console.log(\n `source table updated via another channel, whilst we have an inline edit session in progress`,\n { rows },\n );\n });\n }\n\n get editCount() {\n return this.#editCount;\n }\n\n set editCount(val: number) {\n if (val !== this.#editCount) {\n const oldCount = this.#editCount;\n this.#editCount = val;\n if (val === 0) {\n this.emit(\"editState\", \"clean\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"dirty\");\n }\n }\n }\n\n get invalidCount() {\n return this.#invalidCount;\n }\n\n set invalidCount(val: number) {\n if (val !== this.#invalidCount) {\n const oldCount = this.#invalidCount;\n this.#invalidCount = val;\n if (val === 0) {\n this.emit(\"editState\", this.#editCount === 0 ? \"clean\" : \"dirty\");\n } else if (oldCount === 0) {\n this.emit(\"editState\", \"invalid\");\n }\n }\n }\n\n clear() {\n this.#rowEdits.clear();\n this.#editCount = 0;\n this.#inEditMode = false;\n }\n\n async begin(editSessionMode?: EditSessionMode) {\n try {\n this.#inEditMode = true;\n const sessionDataSource =\n await this.#sourceTableDataSource?.beginEditSession?.(editSessionMode);\n\n this.#sessionDataSource = sessionDataSource;\n\n return sessionDataSource;\n } catch (e) {\n this.#inEditMode = false;\n }\n }\n\n get dataSource() {\n return this.#sessionDataSource ?? this.#sourceTableDataSource;\n }\n\n async end(saveChanges = false, force = false) {\n try {\n if (this.#inEditMode) {\n await this.dataSource?.endEditSession?.(saveChanges, force);\n this.clear();\n }\n } catch (e) {\n if (e instanceof StaleUpdateError) {\n this.emit(\"editState\", \"stale\");\n } else {\n console.error(`[EditSession] ${(e as Error).message}`);\n }\n }\n }\n\n get inEditMode() {\n return this.#inEditMode;\n }\n\n get editState(): EditState {\n return this.editCount === 0 ? \"clean\" : \"dirty\";\n }\n\n getRowEdits(key: string): RowEditDetails {\n const rowEditDetails = this.#rowEdits.get(key);\n if (rowEditDetails) {\n return rowEditDetails;\n } else {\n const rowEditDetails = {\n cellEdits: new Map(),\n };\n this.#rowEdits.set(key, rowEditDetails);\n return rowEditDetails;\n }\n }\n\n storeCellEdit(\n cellEdits: Map<string, CellEdit>,\n column: string,\n originalValue: VuuRowDataItemType,\n editedValue: VuuRowDataItemType,\n isValid: boolean,\n ) {\n const cellEdit = cellEdits.get(column);\n if (cellEdit) {\n if (isValid && cellEdit.isValid === false) {\n cellEdit.isValid = true;\n this.invalidCount -= 1;\n }\n return cellEdit;\n } else {\n const cellEdit = {\n originalValue,\n editedValue,\n isValid,\n };\n cellEdits.set(column, cellEdit);\n this.editCount = this.#editCount + 1;\n return cellEdit;\n }\n }\n\n /**\n * Apply incremental edit(s) to edit control value. Used for TextInput, where multiple\n * edits may follow in sequence before value finally committed.\n *\n * @param key value for edited Row\n * @param columnName\n * @param originalValue\n * @param newValue\n */\n edit(\n key: string,\n columnName: string,\n originalValue: VuuRowDataItemType,\n newValue: VuuRowDataItemType,\n ) {\n const { cellEdits } = this.getRowEdits(key);\n const cellEdit = cellEdits.get(columnName);\n if (cellEdit) {\n if (newValue === cellEdit.originalValue) {\n if (cellEdits.size === 1) {\n this.#rowEdits.delete(key);\n } else {\n // re-editing a cell had removed the edit\n cellEdits.delete(columnName);\n }\n this.editCount = this.#editCount - 1;\n } else {\n cellEdit.editedValue = newValue;\n }\n } else {\n cellEdits.set(columnName, {\n originalValue,\n editedValue: newValue,\n });\n this.editCount = this.#editCount + 1;\n }\n }\n\n async commit(\n key: string,\n columnName: string,\n originalValue: VuuRowDataItemType,\n typedValue: string | number | boolean,\n isValid: boolean,\n ) {\n const rowEditDetails = this.getRowEdits(key);\n\n if (isValid) {\n const { cellEdits } = rowEditDetails;\n const cellEdit = this.storeCellEdit(\n cellEdits,\n columnName,\n originalValue,\n typedValue,\n isValid,\n );\n\n const response = await this.dataSource?.editCell?.(\n key,\n columnName,\n typedValue,\n );\n if (isRpcError(response)) {\n cellEdit.isValid = false;\n this.invalidCount += 1;\n }\n\n return response;\n } else {\n if (rowEditDetails) {\n const { cellEdits } = rowEditDetails;\n const cellEditValues = cellEdits.get(columnName);\n if (cellEditValues && cellEditValues.isValid !== false) {\n cellEditValues.isValid = false;\n this.invalidCount += 1;\n }\n }\n console.log(\n `[EditSession] key ${key}, column ${columnName} is valid ? ${isValid} `,\n );\n }\n }\n}\n"],"names":["EventEmitter","rowEditDetails","cellEdit","isRpcError"],"mappings":";;;;;;;;;;;;AAAA,IAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,WAAA;AAcO,MAAM,yBAAyB,KAAM,CAAA;AAAC;AAatC,MAAM,oBAAoBA,yBAAgC,CAAA;AAAA,EAW/D,YAAY,UAAwB,EAAA;AAClC,IAAM,KAAA,EAAA;AARR;AAAA;AAAA;AAAA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,sBAAgB,GAA4B,EAAA,CAAA;AAC5C,IAAa,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;AACb,IAAgB,YAAA,CAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;AAChB,IAAA,YAAA,CAAA,IAAA,EAAA,sBAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AACA,IAAc,YAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA;AAIZ,IAAA,YAAA,CAAA,IAAA,EAAK,sBAAyB,EAAA,UAAA,CAAA;AAE9B,IAAW,UAAA,CAAA,EAAA,CAAG,iCAAmC,EAAA,CAAC,IAAS,KAAA;AACzD,MAAQ,OAAA,CAAA,GAAA;AAAA,QACN,CAAA,2FAAA,CAAA;AAAA,QACA,EAAE,IAAK;AAAA,OACT;AAAA,KACD,CAAA;AAAA;AACH,EAEA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA;AAAA;AACd,EAEA,IAAI,UAAU,GAAa,EAAA;AACzB,IAAI,IAAA,GAAA,KAAQ,mBAAK,UAAY,CAAA,EAAA;AAC3B,MAAA,MAAM,WAAW,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA;AACtB,MAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,GAAA,CAAA;AAClB,MAAA,IAAI,QAAQ,CAAG,EAAA;AACb,QAAK,IAAA,CAAA,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA,OAChC,MAAA,IAAW,aAAa,CAAG,EAAA;AACzB,QAAK,IAAA,CAAA,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA;AAChC;AACF;AACF,EAEA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA;AACd,EAEA,IAAI,aAAa,GAAa,EAAA;AAC5B,IAAI,IAAA,GAAA,KAAQ,mBAAK,aAAe,CAAA,EAAA;AAC9B,MAAA,MAAM,WAAW,YAAK,CAAA,IAAA,EAAA,aAAA,CAAA;AACtB,MAAA,YAAA,CAAA,IAAA,EAAK,aAAgB,EAAA,GAAA,CAAA;AACrB,MAAA,IAAI,QAAQ,CAAG,EAAA;AACb,QAAA,IAAA,CAAK,KAAK,WAAa,EAAA,YAAA,CAAA,IAAA,EAAK,UAAe,CAAA,KAAA,CAAA,GAAI,UAAU,OAAO,CAAA;AAAA,OAClE,MAAA,IAAW,aAAa,CAAG,EAAA;AACzB,QAAK,IAAA,CAAA,IAAA,CAAK,aAAa,SAAS,CAAA;AAAA;AAClC;AACF;AACF,EAEA,KAAQ,GAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAK,WAAU,KAAM,EAAA;AACrB,IAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,CAAA,CAAA;AAClB,IAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,KAAA,CAAA;AAAA;AACrB,EAEA,MAAM,MAAM,eAAmC,EAAA;AAC7C,IAAI,IAAA;AACF,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,IAAA,CAAA;AACnB,MAAA,MAAM,iBACJ,GAAA,MAAM,YAAK,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAwB,mBAAmB,eAAe,CAAA;AAEvE,MAAA,YAAA,CAAA,IAAA,EAAK,kBAAqB,EAAA,iBAAA,CAAA;AAE1B,MAAO,OAAA,iBAAA;AAAA,aACA,CAAG,EAAA;AACV,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,KAAA,CAAA;AAAA;AACrB;AACF,EAEA,IAAI,UAAa,GAAA;AACf,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,uBAAsB,YAAK,CAAA,IAAA,EAAA,sBAAA,CAAA;AAAA;AACzC,EAEA,MAAM,GAAA,CAAI,WAAc,GAAA,KAAA,EAAO,QAAQ,KAAO,EAAA;AAC5C,IAAI,IAAA;AACF,MAAA,IAAI,mBAAK,WAAa,CAAA,EAAA;AACpB,QAAA,MAAM,IAAK,CAAA,UAAA,EAAY,cAAiB,GAAA,WAAA,EAAa,KAAK,CAAA;AAC1D,QAAA,IAAA,CAAK,KAAM,EAAA;AAAA;AACb,aACO,CAAG,EAAA;AACV,MAAA,IAAI,aAAa,gBAAkB,EAAA;AACjC,QAAK,IAAA,CAAA,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA,OACzB,MAAA;AACL,QAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,cAAA,EAAkB,CAAY,CAAA,OAAO,CAAE,CAAA,CAAA;AAAA;AACvD;AACF;AACF,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA;AACd,EAEA,IAAI,SAAuB,GAAA;AACzB,IAAO,OAAA,IAAA,CAAK,SAAc,KAAA,CAAA,GAAI,OAAU,GAAA,OAAA;AAAA;AAC1C,EAEA,YAAY,GAA6B,EAAA;AACvC,IAAA,MAAM,cAAiB,GAAA,YAAA,CAAA,IAAA,EAAK,SAAU,CAAA,CAAA,GAAA,CAAI,GAAG,CAAA;AAC7C,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAO,OAAA,cAAA;AAAA,KACF,MAAA;AACL,MAAA,MAAMC,eAAiB,GAAA;AAAA,QACrB,SAAA,sBAAe,GAAI;AAAA,OACrB;AACA,MAAK,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAU,GAAI,CAAA,GAAA,EAAKA,eAAc,CAAA;AACtC,MAAOA,OAAAA,eAAAA;AAAA;AACT;AACF,EAEA,aACE,CAAA,SAAA,EACA,MACA,EAAA,aAAA,EACA,aACA,OACA,EAAA;AACA,IAAM,MAAA,QAAA,GAAW,SAAU,CAAA,GAAA,CAAI,MAAM,CAAA;AACrC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAI,IAAA,OAAA,IAAW,QAAS,CAAA,OAAA,KAAY,KAAO,EAAA;AACzC,QAAA,QAAA,CAAS,OAAU,GAAA,IAAA;AACnB,QAAA,IAAA,CAAK,YAAgB,IAAA,CAAA;AAAA;AAEvB,MAAO,OAAA,QAAA;AAAA,KACF,MAAA;AACL,MAAA,MAAMC,SAAW,GAAA;AAAA,QACf,aAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF;AACA,MAAU,SAAA,CAAA,GAAA,CAAI,QAAQA,SAAQ,CAAA;AAC9B,MAAK,IAAA,CAAA,SAAA,GAAY,mBAAK,UAAa,CAAA,GAAA,CAAA;AACnC,MAAOA,OAAAA,SAAAA;AAAA;AACT;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,IACE,CAAA,GAAA,EACA,UACA,EAAA,aAAA,EACA,QACA,EAAA;AACA,IAAA,MAAM,EAAE,SAAA,EAAc,GAAA,IAAA,CAAK,YAAY,GAAG,CAAA;AAC1C,IAAM,MAAA,QAAA,GAAW,SAAU,CAAA,GAAA,CAAI,UAAU,CAAA;AACzC,IAAA,IAAI,QAAU,EAAA;AACZ,MAAI,IAAA,QAAA,KAAa,SAAS,aAAe,EAAA;AACvC,QAAI,IAAA,SAAA,CAAU,SAAS,CAAG,EAAA;AACxB,UAAK,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAU,OAAO,GAAG,CAAA;AAAA,SACpB,MAAA;AAEL,UAAA,SAAA,CAAU,OAAO,UAAU,CAAA;AAAA;AAE7B,QAAK,IAAA,CAAA,SAAA,GAAY,mBAAK,UAAa,CAAA,GAAA,CAAA;AAAA,OAC9B,MAAA;AACL,QAAA,QAAA,CAAS,WAAc,GAAA,QAAA;AAAA;AACzB,KACK,MAAA;AACL,MAAA,SAAA,CAAU,IAAI,UAAY,EAAA;AAAA,QACxB,aAAA;AAAA,QACA,WAAa,EAAA;AAAA,OACd,CAAA;AACD,MAAK,IAAA,CAAA,SAAA,GAAY,mBAAK,UAAa,CAAA,GAAA,CAAA;AAAA;AACrC;AACF,EAEA,MAAM,MACJ,CAAA,GAAA,EACA,UACA,EAAA,aAAA,EACA,YACA,OACA,EAAA;AACA,IAAM,MAAA,cAAA,GAAiB,IAAK,CAAA,WAAA,CAAY,GAAG,CAAA;AAE3C,IAAA,IAAI,OAAS,EAAA;AACX,MAAM,MAAA,EAAE,WAAc,GAAA,cAAA;AACtB,MAAA,MAAM,WAAW,IAAK,CAAA,aAAA;AAAA,QACpB,SAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAM,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,UAAY,EAAA,QAAA;AAAA,QACtC,GAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AACA,MAAI,IAAAC,gBAAA,CAAW,QAAQ,CAAG,EAAA;AACxB,QAAA,QAAA,CAAS,OAAU,GAAA,KAAA;AACnB,QAAA,IAAA,CAAK,YAAgB,IAAA,CAAA;AAAA;AAGvB,MAAO,OAAA,QAAA;AAAA,KACF,MAAA;AACL,MAAA,IAAI,cAAgB,EAAA;AAClB,QAAM,MAAA,EAAE,WAAc,GAAA,cAAA;AACtB,QAAM,MAAA,cAAA,GAAiB,SAAU,CAAA,GAAA,CAAI,UAAU,CAAA;AAC/C,QAAI,IAAA,cAAA,IAAkB,cAAe,CAAA,OAAA,KAAY,KAAO,EAAA;AACtD,UAAA,cAAA,CAAe,OAAU,GAAA,KAAA;AACzB,UAAA,IAAA,CAAK,YAAgB,IAAA,CAAA;AAAA;AACvB;AAEF,MAAQ,OAAA,CAAA,GAAA;AAAA,QACN,CAAqB,kBAAA,EAAA,GAAG,CAAY,SAAA,EAAA,UAAU,eAAe,OAAO,CAAA,CAAA;AAAA,OACtE;AAAA;AACF;AAEJ;AA3NE,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA;AACA,sBAAA,GAAA,IAAA,OAAA,EAAA;AACA,kBAAA,GAAA,IAAA,OAAA,EAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
3
+ var __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__ = require('react/jsx-runtime');
4
4
  require('../date/date-utils.js');
5
5
  require('../date/dateTimePattern.js');
6
6
  var formatter = require('../date/formatter.js');
@@ -17,13 +17,13 @@ const getVuuEditMessage = (dataRow, column, originalValue) => {
17
17
  if (msgForCol) {
18
18
  const [, value, updatedValue, ts] = msgForCol.split(":");
19
19
  const updateTime = timeFormatter(new Date(parseInt(ts)));
20
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
20
+ return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsxs("span", { children: [
21
21
  "Update rejected. Original value ",
22
- /* @__PURE__ */ jsxRuntime.jsx("b", { children: originalValue }),
22
+ /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx("b", { children: originalValue }),
23
23
  " could not be updated to ",
24
- /* @__PURE__ */ jsxRuntime.jsx("b", { children: value }),
24
+ /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx("b", { children: value }),
25
25
  ". It was updated to ",
26
- /* @__PURE__ */ jsxRuntime.jsx("b", { children: updatedValue }),
26
+ /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx("b", { children: updatedValue }),
27
27
  " at ",
28
28
  updateTime,
29
29
  "."
@@ -1 +1 @@
1
- {"version":3,"file":"edit-utils.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/edit-utils.tsx"],"sourcesContent":["import { EditSessionMode, InlineEditSessionMode } from \"@vuu-ui/vuu-data-types\";\nimport { DataRow, RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { formatDate } from \"../date\";\n\nexport const isInlineEditingSession = (\n editSessionMode: EditSessionMode,\n): editSessionMode is InlineEditSessionMode =>\n editSessionMode.startsWith(\"inline\");\n\nconst timeFormatter = formatDate({ time: \"hh:mm:ss\" });\n\nexport const getVuuEditMessage = (\n dataRow: DataRow,\n column: RuntimeColumnDescriptor,\n originalValue: string,\n) => {\n const vuuMsg = dataRow.vuuMsg as string;\n if (vuuMsg) {\n const columnMessages = vuuMsg.split(\",\");\n const msgForCol = columnMessages.find((msg) =>\n msg.startsWith(`${column.name}:`),\n );\n if (msgForCol) {\n const [, value, updatedValue, ts] = msgForCol.split(\":\");\n const updateTime = timeFormatter(new Date(parseInt(ts as string)));\n return (\n <span>\n {\"Update rejected. Original value \"}\n <b>{originalValue}</b>\n {\" could not be updated to \"}\n <b>{value}</b>\n {\". It was updated to \"}\n <b>{updatedValue}</b>\n {\" at \"}\n {updateTime}\n {\".\"}\n </span>\n );\n }\n }\n};\n"],"names":["formatDate","jsx"],"mappings":";;;;;;;AAIO,MAAM,sBAAyB,GAAA,CACpC,eAEA,KAAA,eAAA,CAAgB,WAAW,QAAQ;AAErC,MAAM,aAAgB,GAAAA,oBAAA,CAAW,EAAE,IAAA,EAAM,YAAY,CAAA;AAE9C,MAAM,iBAAoB,GAAA,CAC/B,OACA,EAAA,MAAA,EACA,aACG,KAAA;AACH,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAA;AACvB,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA;AACvC,IAAA,MAAM,YAAY,cAAe,CAAA,IAAA;AAAA,MAAK,CAAC,GACrC,KAAA,GAAA,CAAI,WAAW,CAAG,EAAA,MAAA,CAAO,IAAI,CAAG,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,GAAG,KAAO,EAAA,YAAA,EAAc,EAAE,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA;AACvD,MAAA,MAAM,aAAa,aAAc,CAAA,IAAI,KAAK,QAAS,CAAA,EAAY,CAAC,CAAC,CAAA;AACjE,MAAA,uCACG,MACE,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,kCAAA;AAAA,wBACDC,cAAA,CAAC,OAAG,QAAc,EAAA,aAAA,EAAA,CAAA;AAAA,QACjB,2BAAA;AAAA,wBACDA,cAAA,CAAC,OAAG,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,QACT,sBAAA;AAAA,wBACDA,cAAA,CAAC,OAAG,QAAa,EAAA,YAAA,EAAA,CAAA;AAAA,QAChB,MAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACH,EAAA,CAAA;AAAA;AAEJ;AAEJ;;;;;"}
1
+ {"version":3,"file":"edit-utils.js","sources":["../../../../../../../packages/vuu-utils/src/data-editing/edit-utils.tsx"],"sourcesContent":["import { EditSessionMode, InlineEditSessionMode } from \"@vuu-ui/vuu-data-types\";\nimport { DataRow, RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { formatDate } from \"../date\";\n\nexport const isInlineEditingSession = (\n editSessionMode: EditSessionMode,\n): editSessionMode is InlineEditSessionMode =>\n editSessionMode.startsWith(\"inline\");\n\nconst timeFormatter = formatDate({ time: \"hh:mm:ss\" });\n\nexport const getVuuEditMessage = (\n dataRow: DataRow,\n column: RuntimeColumnDescriptor,\n originalValue: string,\n) => {\n const vuuMsg = dataRow.vuuMsg as string;\n if (vuuMsg) {\n const columnMessages = vuuMsg.split(\",\");\n const msgForCol = columnMessages.find((msg) =>\n msg.startsWith(`${column.name}:`),\n );\n if (msgForCol) {\n const [, value, updatedValue, ts] = msgForCol.split(\":\");\n const updateTime = timeFormatter(new Date(parseInt(ts as string)));\n return (\n <span>\n {\"Update rejected. Original value \"}\n <b>{originalValue}</b>\n {\" could not be updated to \"}\n <b>{value}</b>\n {\". It was updated to \"}\n <b>{updatedValue}</b>\n {\" at \"}\n {updateTime}\n {\".\"}\n </span>\n );\n }\n }\n};\n"],"names":["formatDate","jsx"],"mappings":";;;;;;;AAIO,MAAM,sBAAyB,GAAA,CACpC,eAEA,KAAA,eAAA,CAAgB,WAAW,QAAQ;AAErC,MAAM,aAAgB,GAAAA,oBAAA,CAAW,EAAE,IAAA,EAAM,YAAY,CAAA;AAE9C,MAAM,iBAAoB,GAAA,CAC/B,OACA,EAAA,MAAA,EACA,aACG,KAAA;AACH,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAA;AACvB,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA;AACvC,IAAA,MAAM,YAAY,cAAe,CAAA,IAAA;AAAA,MAAK,CAAC,GACrC,KAAA,GAAA,CAAI,WAAW,CAAG,EAAA,MAAA,CAAO,IAAI,CAAG,CAAA,CAAA;AAAA,KAClC;AACA,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,GAAG,KAAO,EAAA,YAAA,EAAc,EAAE,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA;AACvD,MAAA,MAAM,aAAa,aAAc,CAAA,IAAI,KAAK,QAAS,CAAA,EAAY,CAAC,CAAC,CAAA;AACjE,MAAA,0EACG,MACE,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,kCAAA;AAAA,wBACDC,iDAAA,CAAC,OAAG,QAAc,EAAA,aAAA,EAAA,CAAA;AAAA,QACjB,2BAAA;AAAA,wBACDA,iDAAA,CAAC,OAAG,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,QACT,sBAAA;AAAA,wBACDA,iDAAA,CAAC,OAAG,QAAa,EAAA,YAAA,EAAA,CAAA;AAAA,QAChB,MAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACH,EAAA,CAAA;AAAA;AAEJ;AAEJ;;;;;"}