@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.
- package/cjs/node_modules/@dnd-kit/react/hooks.js +17 -17
- package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -1
- package/cjs/node_modules/@dnd-kit/react/index.js +24 -24
- package/cjs/node_modules/@dnd-kit/react/index.js.map +1 -1
- package/cjs/node_modules/@dnd-kit/react/sortable.js +5 -5
- package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -1
- package/cjs/packages/vuu-utils/dist/index.js +6004 -0
- package/cjs/packages/vuu-utils/dist/index.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ShellContext.js +3 -3
- package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -1
- package/cjs/packages/vuu-utils/src/ThemeProvider.js +10 -10
- package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +2 -2
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +4 -4
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +5 -5
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -1
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +3 -3
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -1
- package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js +5 -5
- package/cjs/packages/vuu-utils/src/data-editing/DataEditingProvider.js.map +1 -1
- package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js +15 -12
- package/cjs/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -1
- package/cjs/packages/vuu-utils/src/data-editing/EditSession.js +130 -52
- package/cjs/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -1
- package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js +32 -1
- package/cjs/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js +23 -15
- package/cjs/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -1
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +2 -2
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -1
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +3 -3
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/date/date-utils.js +2 -2
- package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/date/formatter.js +2 -2
- package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -1
- package/cjs/packages/vuu-utils/src/feature-utils.js +2 -2
- package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/index.js +8 -2
- package/cjs/packages/vuu-utils/src/index.js.map +1 -1
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js +8 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/react-utils.js +8 -8
- package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/theme-utils.js +3 -3
- package/cjs/packages/vuu-utils/src/theme-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/useId.js +2 -2
- package/cjs/packages/vuu-utils/src/useId.js.map +1 -1
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +3 -3
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -1
- package/cjs/packages/vuu-utils/src/useResizeObserver.js +5 -5
- package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +1 -1
- package/cjs/packages/vuu-utils/src/useStateRef.js +4 -4
- package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -1
- package/esm/packages/vuu-utils/dist/index.js +5979 -0
- package/esm/packages/vuu-utils/dist/index.js.map +1 -0
- package/esm/packages/vuu-utils/src/ThemeProvider.js +2 -2
- package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -1
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +2 -2
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -1
- package/esm/packages/vuu-utils/src/data-editing/EditButtons.js +7 -4
- package/esm/packages/vuu-utils/src/data-editing/EditButtons.js.map +1 -1
- package/esm/packages/vuu-utils/src/data-editing/EditSession.js +130 -53
- package/esm/packages/vuu-utils/src/data-editing/EditSession.js.map +1 -1
- package/esm/packages/vuu-utils/src/data-editing/edit-utils.js +32 -2
- package/esm/packages/vuu-utils/src/data-editing/edit-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js +17 -9
- package/esm/packages/vuu-utils/src/data-editing/useEditableTable.js.map +1 -1
- package/esm/packages/vuu-utils/src/feature-utils.js +2 -2
- package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/index.js +3 -3
- package/esm/packages/vuu-utils/src/protocol-message-utils.js +5 -1
- package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
- package/package.json +6 -6
- package/types/data-editing/EditButtons.d.ts +1 -1
- package/types/data-editing/EditSession.d.ts +30 -6
- package/types/data-editing/edit-utils.d.ts +2 -0
- package/types/data-editing/useEditableTable.d.ts +1 -1
- package/types/filters/filter-utils.d.ts +2 -1
- package/types/index.d.ts +3 -2
- package/types/protocol-message-utils.d.ts +5 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
|
|
4
4
|
|
|
5
5
|
const defaultConfig = {};
|
|
6
|
-
const ShellContext =
|
|
6
|
+
const ShellContext = __WEBPACK_EXTERNAL_MODULE_react__.createContext(defaultConfig);
|
|
7
7
|
const useShellContext = () => {
|
|
8
|
-
return
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
5
|
-
var
|
|
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 =
|
|
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 =
|
|
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 (
|
|
39
|
-
return
|
|
40
|
-
className:
|
|
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
|
-
} =
|
|
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__ */
|
|
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,
|
|
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
|
|
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 =
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
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__ */
|
|
13
|
+
return /* @__PURE__ */ __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__.jsx(DataContext.DataContext.Provider, { value: { isLocalData, VuuDataSource, getServerAPI }, children });
|
|
14
14
|
};
|
|
15
|
-
const useData = () =>
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
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 =
|
|
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__ */
|
|
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 } =
|
|
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,
|
|
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
|
|
3
|
+
var __WEBPACK_EXTERNAL_MODULE_react__ = require('react');
|
|
4
4
|
|
|
5
|
-
const WorkspaceContext =
|
|
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 } =
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
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 =
|
|
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__ */
|
|
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 =
|
|
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,
|
|
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
|
|
4
|
-
var
|
|
5
|
-
var
|
|
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] =
|
|
13
|
-
|
|
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__ */
|
|
17
|
-
/* @__PURE__ */
|
|
18
|
-
|
|
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:
|
|
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__ */
|
|
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={
|
|
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
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
71
|
-
edit(key, columnName, originalValue, newValue) {
|
|
102
|
+
getRowEdits(key) {
|
|
72
103
|
const rowEditDetails = __privateGet(this, _rowEdits).get(key);
|
|
73
104
|
if (rowEditDetails) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
150
|
+
cellEdits.delete(columnName);
|
|
86
151
|
}
|
|
152
|
+
this.editCount = __privateGet(this, _editCount) - 1;
|
|
87
153
|
} else {
|
|
88
|
-
|
|
89
|
-
originalValue,
|
|
90
|
-
editedValue: newValue
|
|
91
|
-
});
|
|
92
|
-
this.editCount = __privateGet(this, _editCount) + 1;
|
|
154
|
+
cellEdit.editedValue = newValue;
|
|
93
155
|
}
|
|
94
156
|
} else {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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 =
|
|
105
|
-
if (
|
|
164
|
+
async commit(key, columnName, originalValue, typedValue, isValid) {
|
|
165
|
+
const rowEditDetails = this.getRowEdits(key);
|
|
166
|
+
if (isValid) {
|
|
106
167
|
const { cellEdits } = rowEditDetails;
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|