@vuu-ui/vuu-data-react 0.8.92 → 0.8.94

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.
@@ -7,11 +7,11 @@ var styles = require('@salt-ds/styles');
7
7
  var window = require('@salt-ds/window');
8
8
  require('@vuu-ui/vuu-data-remote');
9
9
  require('react');
10
+ require('@vuu-ui/vuu-layout');
10
11
  require('@vuu-ui/vuu-popups');
11
12
  require('@vuu-ui/vuu-table');
12
13
  var core = require('@salt-ds/core');
13
14
  var cx = require('clsx');
14
- require('@vuu-ui/vuu-layout');
15
15
  require('@vuu-ui/vuu-ui-controls');
16
16
  var editValidationRules = require('./edit-validation-rules.js');
17
17
  var useEditForm = require('./useEditForm.js');
@@ -4,13 +4,14 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var vuuDataRemote = require('@vuu-ui/vuu-data-remote');
5
5
  var vuuUtils = require('@vuu-ui/vuu-utils');
6
6
 
7
+ const getServerAPI = () => vuuDataRemote.ConnectionManager.serverAPI;
7
8
  const VuuDataSourceProvider = ({
8
9
  children
9
10
  }) => /* @__PURE__ */ jsxRuntime.jsx(
10
11
  vuuUtils.DataSourceProvider,
11
12
  {
12
13
  VuuDataSource: vuuDataRemote.VuuDataSource,
13
- getServerAPI: vuuDataRemote.getServerAPI,
14
+ getServerAPI,
14
15
  isLocalData: false,
15
16
  children
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VuuDataSourceProvider.js","sources":["../../src/datasource-provider/VuuDataSourceProvider.tsx"],"sourcesContent":["import { VuuDataSource, getServerAPI } from \"@vuu-ui/vuu-data-remote\";\nimport { DataSourceProvider } from \"@vuu-ui/vuu-utils\";\nimport { ReactNode } from \"react\";\n\nexport const VuuDataSourceProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => (\n <DataSourceProvider\n VuuDataSource={VuuDataSource}\n getServerAPI={getServerAPI}\n isLocalData={false}\n >\n {children}\n </DataSourceProvider>\n);\n"],"names":["jsx","DataSourceProvider","VuuDataSource","getServerAPI"],"mappings":";;;;;;AAIO,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AACF,CAGE,qBAAAA,cAAA;AAAA,EAACC,2BAAA;AAAA,EAAA;AAAA,mBACCC,2BAAA;AAAA,kBACAC,0BAAA;AAAA,IACA,WAAa,EAAA,KAAA;AAAA,IAEZ,QAAA;AAAA,GAAA;AACH;;;;"}
1
+ {"version":3,"file":"VuuDataSourceProvider.js","sources":["../../src/datasource-provider/VuuDataSourceProvider.tsx"],"sourcesContent":["import { ConnectionManager, VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { DataSourceProvider } from \"@vuu-ui/vuu-utils\";\nimport { ReactNode } from \"react\";\n\nconst getServerAPI = () => ConnectionManager.serverAPI;\n\nexport const VuuDataSourceProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => (\n <DataSourceProvider\n VuuDataSource={VuuDataSource}\n getServerAPI={getServerAPI}\n isLocalData={false}\n >\n {children}\n </DataSourceProvider>\n);\n"],"names":["ConnectionManager","jsx","DataSourceProvider","VuuDataSource"],"mappings":";;;;;;AAIA,MAAM,YAAA,GAAe,MAAMA,+BAAkB,CAAA,SAAA,CAAA;AAEtC,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AACF,CAGE,qBAAAC,cAAA;AAAA,EAACC,2BAAA;AAAA,EAAA;AAAA,mBACCC,2BAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAa,EAAA,KAAA;AAAA,IAEZ,QAAA;AAAA,GAAA;AACH;;;;"}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var vuuUtils = require('@vuu-ui/vuu-utils');
4
+ var vuuLayout = require('@vuu-ui/vuu-layout');
5
+ var react = require('react');
6
+
7
+ const NO_CONFIG = {};
8
+ const useSessionDataSource = ({
9
+ dataSourceSessionKey = "data-source",
10
+ tableSchema
11
+ }) => {
12
+ const { id, load, save, loadSession, saveSession, title } = vuuLayout.useViewContext();
13
+ const { VuuDataSource } = vuuUtils.useDataSource();
14
+ const { "datasource-config": dataSourceConfigFromState } = react.useMemo(() => load?.() ?? NO_CONFIG, [load]);
15
+ const handleDataSourceConfigChange = react.useCallback(
16
+ (config, confirmed) => {
17
+ if (confirmed === void 0) {
18
+ const { noChanges } = vuuUtils.isConfigChanged(
19
+ dataSourceConfigFromState,
20
+ config
21
+ );
22
+ if (noChanges === false) {
23
+ save?.(config, "datasource-config");
24
+ }
25
+ }
26
+ },
27
+ [dataSourceConfigFromState, save]
28
+ );
29
+ const dataSource = react.useMemo(() => {
30
+ let ds = loadSession?.(dataSourceSessionKey);
31
+ if (ds) {
32
+ if (dataSourceConfigFromState) {
33
+ ds.applyConfig(dataSourceConfigFromState, true);
34
+ }
35
+ if (ds.range.from > 0) {
36
+ ds.range = vuuUtils.resetRange(ds.range);
37
+ }
38
+ return ds;
39
+ }
40
+ const columns = dataSourceConfigFromState?.columns ?? tableSchema.columns.map((col) => col.name);
41
+ ds = new VuuDataSource({
42
+ // bufferSize: 0,
43
+ viewport: id,
44
+ table: tableSchema.table,
45
+ ...dataSourceConfigFromState,
46
+ columns,
47
+ title
48
+ });
49
+ ds.on("config", handleDataSourceConfigChange);
50
+ saveSession?.(ds, "data-source");
51
+ return ds;
52
+ }, [
53
+ VuuDataSource,
54
+ dataSourceConfigFromState,
55
+ dataSourceSessionKey,
56
+ handleDataSourceConfigChange,
57
+ id,
58
+ loadSession,
59
+ saveSession,
60
+ tableSchema.columns,
61
+ tableSchema.table,
62
+ title
63
+ ]);
64
+ return dataSource;
65
+ };
66
+
67
+ exports.useSessionDataSource = useSessionDataSource;
68
+ //# sourceMappingURL=useSessionDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionDataSource.js","sources":["../../src/hooks/useSessionDataSource.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceConfig,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { isConfigChanged, resetRange, useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useViewContext } from \"@vuu-ui/vuu-layout\";\nimport { useCallback, useMemo } from \"react\";\n\ntype SessionDataSourceConfig = {\n \"datasource-config\"?: DataSourceConfig;\n};\n\nconst NO_CONFIG: SessionDataSourceConfig = {};\n\nexport const useSessionDataSource = ({\n dataSourceSessionKey = \"data-source\",\n tableSchema,\n}: {\n dataSourceSessionKey?: string;\n tableSchema: TableSchema;\n}) => {\n const { id, load, save, loadSession, saveSession, title } = useViewContext();\n const { VuuDataSource } = useDataSource();\n\n const { \"datasource-config\": dataSourceConfigFromState } =\n useMemo<SessionDataSourceConfig>(() => load?.() ?? NO_CONFIG, [load]);\n\n const handleDataSourceConfigChange = useCallback(\n (config: DataSourceConfig | undefined, confirmed?: boolean) => {\n // confirmed / unconfirmed messages are used for UI updates, not state saving\n if (confirmed === undefined) {\n const { noChanges } = isConfigChanged(\n dataSourceConfigFromState,\n config,\n );\n if (noChanges === false) {\n save?.(config, \"datasource-config\");\n }\n }\n },\n [dataSourceConfigFromState, save],\n );\n\n const dataSource: DataSource = useMemo(() => {\n let ds = loadSession?.(dataSourceSessionKey) as DataSource;\n if (ds) {\n if (dataSourceConfigFromState) {\n // this won't do anything if dataSource config already matches this\n // This is only really used when injecting a dataSource into session\n // state in Showcase examples\n ds.applyConfig(dataSourceConfigFromState, true);\n }\n\n if (ds.range.from > 0) {\n // UI does not currently restore scroll position, so always reset to top of dataset\n ds.range = resetRange(ds.range);\n }\n\n return ds;\n }\n\n const columns =\n dataSourceConfigFromState?.columns ??\n tableSchema.columns.map((col) => col.name);\n\n ds = new VuuDataSource({\n // bufferSize: 0,\n viewport: id,\n table: tableSchema.table,\n ...dataSourceConfigFromState,\n columns,\n title,\n });\n ds.on(\"config\", handleDataSourceConfigChange);\n saveSession?.(ds, \"data-source\");\n return ds;\n }, [\n VuuDataSource,\n dataSourceConfigFromState,\n dataSourceSessionKey,\n handleDataSourceConfigChange,\n id,\n loadSession,\n saveSession,\n tableSchema.columns,\n tableSchema.table,\n title,\n ]);\n\n return dataSource;\n};\n"],"names":["useViewContext","useDataSource","useMemo","useCallback","isConfigChanged","resetRange"],"mappings":";;;;;;AAaA,MAAM,YAAqC,EAAC,CAAA;AAErC,MAAM,uBAAuB,CAAC;AAAA,EACnC,oBAAuB,GAAA,aAAA;AAAA,EACvB,WAAA;AACF,CAGM,KAAA;AACJ,EAAM,MAAA,EAAE,IAAI,IAAM,EAAA,IAAA,EAAM,aAAa,WAAa,EAAA,KAAA,KAAUA,wBAAe,EAAA,CAAA;AAC3E,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIC,sBAAc,EAAA,CAAA;AAExC,EAAM,MAAA,EAAE,mBAAqB,EAAA,yBAAA,EAC3B,GAAAC,aAAA,CAAiC,MAAM,IAAA,IAAY,IAAA,SAAA,EAAW,CAAC,IAAI,CAAC,CAAA,CAAA;AAEtE,EAAA,MAAM,4BAA+B,GAAAC,iBAAA;AAAA,IACnC,CAAC,QAAsC,SAAwB,KAAA;AAE7D,MAAA,IAAI,cAAc,KAAW,CAAA,EAAA;AAC3B,QAAM,MAAA,EAAE,WAAc,GAAAC,wBAAA;AAAA,UACpB,yBAAA;AAAA,UACA,MAAA;AAAA,SACF,CAAA;AACA,QAAA,IAAI,cAAc,KAAO,EAAA;AACvB,UAAA,IAAA,GAAO,QAAQ,mBAAmB,CAAA,CAAA;AAAA,SACpC;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,2BAA2B,IAAI,CAAA;AAAA,GAClC,CAAA;AAEA,EAAM,MAAA,UAAA,GAAyBF,cAAQ,MAAM;AAC3C,IAAI,IAAA,EAAA,GAAK,cAAc,oBAAoB,CAAA,CAAA;AAC3C,IAAA,IAAI,EAAI,EAAA;AACN,MAAA,IAAI,yBAA2B,EAAA;AAI7B,QAAG,EAAA,CAAA,WAAA,CAAY,2BAA2B,IAAI,CAAA,CAAA;AAAA,OAChD;AAEA,MAAI,IAAA,EAAA,CAAG,KAAM,CAAA,IAAA,GAAO,CAAG,EAAA;AAErB,QAAG,EAAA,CAAA,KAAA,GAAQG,mBAAW,CAAA,EAAA,CAAG,KAAK,CAAA,CAAA;AAAA,OAChC;AAEA,MAAO,OAAA,EAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,OAAA,GACJ,2BAA2B,OAC3B,IAAA,WAAA,CAAY,QAAQ,GAAI,CAAA,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AAE3C,IAAA,EAAA,GAAK,IAAI,aAAc,CAAA;AAAA;AAAA,MAErB,QAAU,EAAA,EAAA;AAAA,MACV,OAAO,WAAY,CAAA,KAAA;AAAA,MACnB,GAAG,yBAAA;AAAA,MACH,OAAA;AAAA,MACA,KAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAG,EAAA,CAAA,EAAA,CAAG,UAAU,4BAA4B,CAAA,CAAA;AAC5C,IAAA,WAAA,GAAc,IAAI,aAAa,CAAA,CAAA;AAC/B,IAAO,OAAA,EAAA,CAAA;AAAA,GACN,EAAA;AAAA,IACD,aAAA;AAAA,IACA,yBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4BAAA;AAAA,IACA,EAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAY,CAAA,OAAA;AAAA,IACZ,WAAY,CAAA,KAAA;AAAA,IACZ,KAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
@@ -21,7 +21,7 @@ const useTypeaheadSuggestions = () => react.useCallback(async (params) => {
21
21
  method: "getUniqueFieldValuesStartingWith",
22
22
  params
23
23
  };
24
- return vuuDataRemote.makeRpcCall(rpcMessage);
24
+ return vuuDataRemote.ConnectionManager.makeRpcCall(rpcMessage);
25
25
  }, []);
26
26
 
27
27
  exports.getTypeaheadParams = getTypeaheadParams;
@@ -1 +1 @@
1
- {"version":3,"file":"useTypeaheadSuggestions.js","sources":["../../src/hooks/useTypeaheadSuggestions.ts"],"sourcesContent":["import { makeRpcCall } from \"@vuu-ui/vuu-data-remote\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcServiceRequest,\n TypeaheadParams,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback } from \"react\";\n\nexport const getTypeaheadParams = (\n table: TableSchemaTable,\n column: string,\n text = \"\",\n selectedValues: string[] = [],\n): TypeaheadParams => {\n if (text !== \"\" && !selectedValues.includes(text.toLowerCase())) {\n return [table, column, text];\n }\n return [table, column];\n};\n\nexport const useTypeaheadSuggestions = () =>\n useCallback<SuggestionFetcher>(async (params: TypeaheadParams) => {\n const rpcMessage: VuuRpcServiceRequest =\n params.length === 2\n ? {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValues\",\n params,\n }\n : {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValuesStartingWith\",\n params,\n };\n return makeRpcCall<string[]>(rpcMessage);\n }, []);\n"],"names":["useCallback","makeRpcCall"],"mappings":";;;;;AAQa,MAAA,kBAAA,GAAqB,CAChC,KACA,EAAA,MAAA,EACA,OAAO,EACP,EAAA,cAAA,GAA2B,EACP,KAAA;AACpB,EAAI,IAAA,IAAA,KAAS,MAAM,CAAC,cAAA,CAAe,SAAS,IAAK,CAAA,WAAA,EAAa,CAAG,EAAA;AAC/D,IAAO,OAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAO,OAAA,CAAC,OAAO,MAAM,CAAA,CAAA;AACvB,EAAA;AAEO,MAAM,uBAA0B,GAAA,MACrCA,iBAA+B,CAAA,OAAO,MAA4B,KAAA;AAChE,EAAM,MAAA,UAAA,GACJ,MAAO,CAAA,MAAA,KAAW,CACd,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAA;AAAA,GAEF,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,kCAAA;AAAA,IACR,MAAA;AAAA,GACF,CAAA;AACN,EAAA,OAAOC,0BAAsB,UAAU,CAAA,CAAA;AACzC,CAAA,EAAG,EAAE;;;;;"}
1
+ {"version":3,"file":"useTypeaheadSuggestions.js","sources":["../../src/hooks/useTypeaheadSuggestions.ts"],"sourcesContent":["import { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcServiceRequest,\n TypeaheadParams,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback } from \"react\";\n\nexport const getTypeaheadParams = (\n table: TableSchemaTable,\n column: string,\n text = \"\",\n selectedValues: string[] = [],\n): TypeaheadParams => {\n if (text !== \"\" && !selectedValues.includes(text.toLowerCase())) {\n return [table, column, text];\n }\n return [table, column];\n};\n\nexport const useTypeaheadSuggestions = () =>\n useCallback<SuggestionFetcher>(async (params: TypeaheadParams) => {\n const rpcMessage: VuuRpcServiceRequest =\n params.length === 2\n ? {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValues\",\n params,\n }\n : {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValuesStartingWith\",\n params,\n };\n return ConnectionManager.makeRpcCall<string[]>(rpcMessage);\n }, []);\n"],"names":["useCallback","ConnectionManager"],"mappings":";;;;;AAQa,MAAA,kBAAA,GAAqB,CAChC,KACA,EAAA,MAAA,EACA,OAAO,EACP,EAAA,cAAA,GAA2B,EACP,KAAA;AACpB,EAAI,IAAA,IAAA,KAAS,MAAM,CAAC,cAAA,CAAe,SAAS,IAAK,CAAA,WAAA,EAAa,CAAG,EAAA;AAC/D,IAAO,OAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAO,OAAA,CAAC,OAAO,MAAM,CAAA,CAAA;AACvB,EAAA;AAEO,MAAM,uBAA0B,GAAA,MACrCA,iBAA+B,CAAA,OAAO,MAA4B,KAAA;AAChE,EAAM,MAAA,UAAA,GACJ,MAAO,CAAA,MAAA,KAAW,CACd,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAA;AAAA,GAEF,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,kCAAA;AAAA,IACR,MAAA;AAAA,GACF,CAAA;AACN,EAAO,OAAAC,+BAAA,CAAkB,YAAsB,UAAU,CAAA,CAAA;AAC3D,CAAA,EAAG,EAAE;;;;;"}
@@ -26,7 +26,7 @@ const useVuuTables = () => {
26
26
  setTables(tableSchemas);
27
27
  } catch (err) {
28
28
  console.warn(
29
- `useVuuTables: error fetching table metedata ${String(err)}`
29
+ `useVuuTables: error fetching table metadata ${String(err)}`
30
30
  );
31
31
  }
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useVuuTables.js","sources":["../../src/hooks/useVuuTables.ts"],"sourcesContent":["import type { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport const useVuuTables = () => {\n const [tables, setTables] = useState<Map<string, TableSchema> | undefined>();\n\n const { getServerAPI } = useDataSource();\n\n const buildTables = useCallback((schemas: TableSchema[]) => {\n const vuuTables = new Map<string, TableSchema>();\n schemas.forEach((schema) => {\n vuuTables.set(schema.table.table, schema);\n });\n return vuuTables;\n }, []);\n\n useEffect(() => {\n async function fetchTableMetadata() {\n try {\n const server = await getServerAPI();\n const { tables } = await server.getTableList();\n const tableSchemas = buildTables(\n await Promise.all(\n tables.map((vuuTable) => server.getTableSchema(vuuTable)),\n ),\n );\n setTables(tableSchemas);\n } catch (err) {\n console.warn(\n `useVuuTables: error fetching table metedata ${String(err)}`,\n );\n }\n }\n\n fetchTableMetadata();\n }, [buildTables, getServerAPI]);\n\n return tables;\n};\n"],"names":["useState","useDataSource","useCallback","useEffect","tables"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,cAA+C,EAAA,CAAA;AAE3E,EAAM,MAAA,EAAE,YAAa,EAAA,GAAIC,sBAAc,EAAA,CAAA;AAEvC,EAAM,MAAA,WAAA,GAAcC,iBAAY,CAAA,CAAC,OAA2B,KAAA;AAC1D,IAAM,MAAA,SAAA,uBAAgB,GAAyB,EAAA,CAAA;AAC/C,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,MAAA,SAAA,CAAU,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAO,OAAA,SAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,eAAe,kBAAqB,GAAA;AAClC,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,YAAa,EAAA,CAAA;AAClC,QAAA,MAAM,EAAE,MAAAC,EAAAA,OAAAA,EAAW,GAAA,MAAM,OAAO,YAAa,EAAA,CAAA;AAC7C,QAAA,MAAM,YAAe,GAAA,WAAA;AAAA,UACnB,MAAM,OAAQ,CAAA,GAAA;AAAA,YACZA,QAAO,GAAI,CAAA,CAAC,aAAa,MAAO,CAAA,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,WAC1D;AAAA,SACF,CAAA;AACA,QAAA,SAAA,CAAU,YAAY,CAAA,CAAA;AAAA,eACf,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,4CAAA,EAA+C,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,SAC5D,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAmB,kBAAA,EAAA,CAAA;AAAA,GAClB,EAAA,CAAC,WAAa,EAAA,YAAY,CAAC,CAAA,CAAA;AAE9B,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"useVuuTables.js","sources":["../../src/hooks/useVuuTables.ts"],"sourcesContent":["import type { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport const useVuuTables = () => {\n const [tables, setTables] = useState<Map<string, TableSchema> | undefined>();\n\n const { getServerAPI } = useDataSource();\n\n const buildTables = useCallback((schemas: TableSchema[]) => {\n const vuuTables = new Map<string, TableSchema>();\n schemas.forEach((schema) => {\n vuuTables.set(schema.table.table, schema);\n });\n return vuuTables;\n }, []);\n\n useEffect(() => {\n async function fetchTableMetadata() {\n try {\n const server = await getServerAPI();\n const { tables } = await server.getTableList();\n const tableSchemas = buildTables(\n await Promise.all(\n tables.map((vuuTable) => server.getTableSchema(vuuTable)),\n ),\n );\n setTables(tableSchemas);\n } catch (err) {\n console.warn(\n `useVuuTables: error fetching table metadata ${String(err)}`,\n );\n }\n }\n\n fetchTableMetadata();\n }, [buildTables, getServerAPI]);\n\n return tables;\n};\n"],"names":["useState","useDataSource","useCallback","useEffect","tables"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,cAA+C,EAAA,CAAA;AAE3E,EAAM,MAAA,EAAE,YAAa,EAAA,GAAIC,sBAAc,EAAA,CAAA;AAEvC,EAAM,MAAA,WAAA,GAAcC,iBAAY,CAAA,CAAC,OAA2B,KAAA;AAC1D,IAAM,MAAA,SAAA,uBAAgB,GAAyB,EAAA,CAAA;AAC/C,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,MAAA,SAAA,CAAU,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAO,OAAA,SAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,eAAe,kBAAqB,GAAA;AAClC,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,YAAa,EAAA,CAAA;AAClC,QAAA,MAAM,EAAE,MAAAC,EAAAA,OAAAA,EAAW,GAAA,MAAM,OAAO,YAAa,EAAA,CAAA;AAC7C,QAAA,MAAM,YAAe,GAAA,WAAA;AAAA,UACnB,MAAM,OAAQ,CAAA,GAAA;AAAA,YACZA,QAAO,GAAI,CAAA,CAAC,aAAa,MAAO,CAAA,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,WAC1D;AAAA,SACF,CAAA;AACA,QAAA,SAAA,CAAU,YAAY,CAAA,CAAA;AAAA,eACf,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,4CAAA,EAA+C,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,SAC5D,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAmB,kBAAA,EAAA,CAAA;AAAA,GAClB,EAAA,CAAC,WAAa,EAAA,YAAY,CAAC,CAAA,CAAA;AAE9B,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
package/cjs/index.js CHANGED
@@ -6,10 +6,10 @@ var editRuleValidationChecker = require('./data-editing/edit-rule-validation-che
6
6
  var UnsavedChangesReport = require('./data-editing/UnsavedChangesReport.js');
7
7
  var VuuDataSourceProvider = require('./datasource-provider/VuuDataSourceProvider.js');
8
8
  var useLookupValues = require('./hooks/useLookupValues.js');
9
+ var useSessionDataSource = require('./hooks/useSessionDataSource.js');
9
10
  var useVuuMenuActions = require('./hooks/useVuuMenuActions.js');
10
11
  var useVuuTables = require('./hooks/useVuuTables.js');
11
12
  var useVisualLinks = require('./hooks/useVisualLinks.js');
12
- var useServerConnectionStatus = require('./hooks/useServerConnectionStatus.js');
13
13
  var useServerConnectionQuality = require('./hooks/useServerConnectionQuality.js');
14
14
  var useTypeaheadSuggestions = require('./hooks/useTypeaheadSuggestions.js');
15
15
  var SessionEditingForm = require('./session-editing-form/SessionEditingForm.js');
@@ -24,10 +24,10 @@ exports.getEditValidationRules = editRuleValidationChecker.getEditValidationRule
24
24
  exports.UnsavedChangesReport = UnsavedChangesReport.UnsavedChangesReport;
25
25
  exports.VuuDataSourceProvider = VuuDataSourceProvider.VuuDataSourceProvider;
26
26
  exports.useLookupValues = useLookupValues.useLookupValues;
27
+ exports.useSessionDataSource = useSessionDataSource.useSessionDataSource;
27
28
  exports.useVuuMenuActions = useVuuMenuActions.useVuuMenuActions;
28
29
  exports.useVuuTables = useVuuTables.useVuuTables;
29
30
  exports.useVisualLinks = useVisualLinks.useVisualLinks;
30
- exports.useServerConnectionStatus = useServerConnectionStatus.useServerConnectionStatus;
31
31
  exports.useServerConnectionQuality = useServerConnectionQuality.useServerConnectionQuality;
32
32
  exports.getTypeaheadParams = useTypeaheadSuggestions.getTypeaheadParams;
33
33
  exports.useTypeaheadSuggestions = useTypeaheadSuggestions.useTypeaheadSuggestions;
@@ -5,11 +5,11 @@ import { useComponentCssInjection } from '@salt-ds/styles';
5
5
  import { useWindow } from '@salt-ds/window';
6
6
  import '@vuu-ui/vuu-data-remote';
7
7
  import 'react';
8
+ import '@vuu-ui/vuu-layout';
8
9
  import '@vuu-ui/vuu-popups';
9
10
  import '@vuu-ui/vuu-table';
10
11
  import { FormField, FormFieldLabel, Button } from '@salt-ds/core';
11
12
  import cx from 'clsx';
12
- import '@vuu-ui/vuu-layout';
13
13
  import '@vuu-ui/vuu-ui-controls';
14
14
  import { registerRules } from './edit-validation-rules.js';
15
15
  import { useEditForm } from './useEditForm.js';
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { VuuDataSource, getServerAPI } from '@vuu-ui/vuu-data-remote';
2
+ import { VuuDataSource, ConnectionManager } from '@vuu-ui/vuu-data-remote';
3
3
  import { DataSourceProvider } from '@vuu-ui/vuu-utils';
4
4
 
5
+ const getServerAPI = () => ConnectionManager.serverAPI;
5
6
  const VuuDataSourceProvider = ({
6
7
  children
7
8
  }) => /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"VuuDataSourceProvider.js","sources":["../../src/datasource-provider/VuuDataSourceProvider.tsx"],"sourcesContent":["import { VuuDataSource, getServerAPI } from \"@vuu-ui/vuu-data-remote\";\nimport { DataSourceProvider } from \"@vuu-ui/vuu-utils\";\nimport { ReactNode } from \"react\";\n\nexport const VuuDataSourceProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => (\n <DataSourceProvider\n VuuDataSource={VuuDataSource}\n getServerAPI={getServerAPI}\n isLocalData={false}\n >\n {children}\n </DataSourceProvider>\n);\n"],"names":[],"mappings":";;;;AAIO,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AACF,CAGE,qBAAA,GAAA;AAAA,EAAC,kBAAA;AAAA,EAAA;AAAA,IACC,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAa,EAAA,KAAA;AAAA,IAEZ,QAAA;AAAA,GAAA;AACH;;;;"}
1
+ {"version":3,"file":"VuuDataSourceProvider.js","sources":["../../src/datasource-provider/VuuDataSourceProvider.tsx"],"sourcesContent":["import { ConnectionManager, VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { DataSourceProvider } from \"@vuu-ui/vuu-utils\";\nimport { ReactNode } from \"react\";\n\nconst getServerAPI = () => ConnectionManager.serverAPI;\n\nexport const VuuDataSourceProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => (\n <DataSourceProvider\n VuuDataSource={VuuDataSource}\n getServerAPI={getServerAPI}\n isLocalData={false}\n >\n {children}\n </DataSourceProvider>\n);\n"],"names":[],"mappings":";;;;AAIA,MAAM,YAAA,GAAe,MAAM,iBAAkB,CAAA,SAAA,CAAA;AAEtC,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AACF,CAGE,qBAAA,GAAA;AAAA,EAAC,kBAAA;AAAA,EAAA;AAAA,IACC,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAa,EAAA,KAAA;AAAA,IAEZ,QAAA;AAAA,GAAA;AACH;;;;"}
@@ -0,0 +1,66 @@
1
+ import { useDataSource, isConfigChanged, resetRange } from '@vuu-ui/vuu-utils';
2
+ import { useViewContext } from '@vuu-ui/vuu-layout';
3
+ import { useMemo, useCallback } from 'react';
4
+
5
+ const NO_CONFIG = {};
6
+ const useSessionDataSource = ({
7
+ dataSourceSessionKey = "data-source",
8
+ tableSchema
9
+ }) => {
10
+ const { id, load, save, loadSession, saveSession, title } = useViewContext();
11
+ const { VuuDataSource } = useDataSource();
12
+ const { "datasource-config": dataSourceConfigFromState } = useMemo(() => load?.() ?? NO_CONFIG, [load]);
13
+ const handleDataSourceConfigChange = useCallback(
14
+ (config, confirmed) => {
15
+ if (confirmed === void 0) {
16
+ const { noChanges } = isConfigChanged(
17
+ dataSourceConfigFromState,
18
+ config
19
+ );
20
+ if (noChanges === false) {
21
+ save?.(config, "datasource-config");
22
+ }
23
+ }
24
+ },
25
+ [dataSourceConfigFromState, save]
26
+ );
27
+ const dataSource = useMemo(() => {
28
+ let ds = loadSession?.(dataSourceSessionKey);
29
+ if (ds) {
30
+ if (dataSourceConfigFromState) {
31
+ ds.applyConfig(dataSourceConfigFromState, true);
32
+ }
33
+ if (ds.range.from > 0) {
34
+ ds.range = resetRange(ds.range);
35
+ }
36
+ return ds;
37
+ }
38
+ const columns = dataSourceConfigFromState?.columns ?? tableSchema.columns.map((col) => col.name);
39
+ ds = new VuuDataSource({
40
+ // bufferSize: 0,
41
+ viewport: id,
42
+ table: tableSchema.table,
43
+ ...dataSourceConfigFromState,
44
+ columns,
45
+ title
46
+ });
47
+ ds.on("config", handleDataSourceConfigChange);
48
+ saveSession?.(ds, "data-source");
49
+ return ds;
50
+ }, [
51
+ VuuDataSource,
52
+ dataSourceConfigFromState,
53
+ dataSourceSessionKey,
54
+ handleDataSourceConfigChange,
55
+ id,
56
+ loadSession,
57
+ saveSession,
58
+ tableSchema.columns,
59
+ tableSchema.table,
60
+ title
61
+ ]);
62
+ return dataSource;
63
+ };
64
+
65
+ export { useSessionDataSource };
66
+ //# sourceMappingURL=useSessionDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionDataSource.js","sources":["../../src/hooks/useSessionDataSource.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceConfig,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { isConfigChanged, resetRange, useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useViewContext } from \"@vuu-ui/vuu-layout\";\nimport { useCallback, useMemo } from \"react\";\n\ntype SessionDataSourceConfig = {\n \"datasource-config\"?: DataSourceConfig;\n};\n\nconst NO_CONFIG: SessionDataSourceConfig = {};\n\nexport const useSessionDataSource = ({\n dataSourceSessionKey = \"data-source\",\n tableSchema,\n}: {\n dataSourceSessionKey?: string;\n tableSchema: TableSchema;\n}) => {\n const { id, load, save, loadSession, saveSession, title } = useViewContext();\n const { VuuDataSource } = useDataSource();\n\n const { \"datasource-config\": dataSourceConfigFromState } =\n useMemo<SessionDataSourceConfig>(() => load?.() ?? NO_CONFIG, [load]);\n\n const handleDataSourceConfigChange = useCallback(\n (config: DataSourceConfig | undefined, confirmed?: boolean) => {\n // confirmed / unconfirmed messages are used for UI updates, not state saving\n if (confirmed === undefined) {\n const { noChanges } = isConfigChanged(\n dataSourceConfigFromState,\n config,\n );\n if (noChanges === false) {\n save?.(config, \"datasource-config\");\n }\n }\n },\n [dataSourceConfigFromState, save],\n );\n\n const dataSource: DataSource = useMemo(() => {\n let ds = loadSession?.(dataSourceSessionKey) as DataSource;\n if (ds) {\n if (dataSourceConfigFromState) {\n // this won't do anything if dataSource config already matches this\n // This is only really used when injecting a dataSource into session\n // state in Showcase examples\n ds.applyConfig(dataSourceConfigFromState, true);\n }\n\n if (ds.range.from > 0) {\n // UI does not currently restore scroll position, so always reset to top of dataset\n ds.range = resetRange(ds.range);\n }\n\n return ds;\n }\n\n const columns =\n dataSourceConfigFromState?.columns ??\n tableSchema.columns.map((col) => col.name);\n\n ds = new VuuDataSource({\n // bufferSize: 0,\n viewport: id,\n table: tableSchema.table,\n ...dataSourceConfigFromState,\n columns,\n title,\n });\n ds.on(\"config\", handleDataSourceConfigChange);\n saveSession?.(ds, \"data-source\");\n return ds;\n }, [\n VuuDataSource,\n dataSourceConfigFromState,\n dataSourceSessionKey,\n handleDataSourceConfigChange,\n id,\n loadSession,\n saveSession,\n tableSchema.columns,\n tableSchema.table,\n title,\n ]);\n\n return dataSource;\n};\n"],"names":[],"mappings":";;;;AAaA,MAAM,YAAqC,EAAC,CAAA;AAErC,MAAM,uBAAuB,CAAC;AAAA,EACnC,oBAAuB,GAAA,aAAA;AAAA,EACvB,WAAA;AACF,CAGM,KAAA;AACJ,EAAM,MAAA,EAAE,IAAI,IAAM,EAAA,IAAA,EAAM,aAAa,WAAa,EAAA,KAAA,KAAU,cAAe,EAAA,CAAA;AAC3E,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,aAAc,EAAA,CAAA;AAExC,EAAM,MAAA,EAAE,mBAAqB,EAAA,yBAAA,EAC3B,GAAA,OAAA,CAAiC,MAAM,IAAA,IAAY,IAAA,SAAA,EAAW,CAAC,IAAI,CAAC,CAAA,CAAA;AAEtE,EAAA,MAAM,4BAA+B,GAAA,WAAA;AAAA,IACnC,CAAC,QAAsC,SAAwB,KAAA;AAE7D,MAAA,IAAI,cAAc,KAAW,CAAA,EAAA;AAC3B,QAAM,MAAA,EAAE,WAAc,GAAA,eAAA;AAAA,UACpB,yBAAA;AAAA,UACA,MAAA;AAAA,SACF,CAAA;AACA,QAAA,IAAI,cAAc,KAAO,EAAA;AACvB,UAAA,IAAA,GAAO,QAAQ,mBAAmB,CAAA,CAAA;AAAA,SACpC;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,2BAA2B,IAAI,CAAA;AAAA,GAClC,CAAA;AAEA,EAAM,MAAA,UAAA,GAAyB,QAAQ,MAAM;AAC3C,IAAI,IAAA,EAAA,GAAK,cAAc,oBAAoB,CAAA,CAAA;AAC3C,IAAA,IAAI,EAAI,EAAA;AACN,MAAA,IAAI,yBAA2B,EAAA;AAI7B,QAAG,EAAA,CAAA,WAAA,CAAY,2BAA2B,IAAI,CAAA,CAAA;AAAA,OAChD;AAEA,MAAI,IAAA,EAAA,CAAG,KAAM,CAAA,IAAA,GAAO,CAAG,EAAA;AAErB,QAAG,EAAA,CAAA,KAAA,GAAQ,UAAW,CAAA,EAAA,CAAG,KAAK,CAAA,CAAA;AAAA,OAChC;AAEA,MAAO,OAAA,EAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,OAAA,GACJ,2BAA2B,OAC3B,IAAA,WAAA,CAAY,QAAQ,GAAI,CAAA,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AAE3C,IAAA,EAAA,GAAK,IAAI,aAAc,CAAA;AAAA;AAAA,MAErB,QAAU,EAAA,EAAA;AAAA,MACV,OAAO,WAAY,CAAA,KAAA;AAAA,MACnB,GAAG,yBAAA;AAAA,MACH,OAAA;AAAA,MACA,KAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAG,EAAA,CAAA,EAAA,CAAG,UAAU,4BAA4B,CAAA,CAAA;AAC5C,IAAA,WAAA,GAAc,IAAI,aAAa,CAAA,CAAA;AAC/B,IAAO,OAAA,EAAA,CAAA;AAAA,GACN,EAAA;AAAA,IACD,aAAA;AAAA,IACA,yBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4BAAA;AAAA,IACA,EAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAY,CAAA,OAAA;AAAA,IACZ,WAAY,CAAA,KAAA;AAAA,IACZ,KAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
@@ -1,4 +1,4 @@
1
- import { makeRpcCall } from '@vuu-ui/vuu-data-remote';
1
+ import { ConnectionManager } from '@vuu-ui/vuu-data-remote';
2
2
  import { useCallback } from 'react';
3
3
 
4
4
  const getTypeaheadParams = (table, column, text = "", selectedValues = []) => {
@@ -19,7 +19,7 @@ const useTypeaheadSuggestions = () => useCallback(async (params) => {
19
19
  method: "getUniqueFieldValuesStartingWith",
20
20
  params
21
21
  };
22
- return makeRpcCall(rpcMessage);
22
+ return ConnectionManager.makeRpcCall(rpcMessage);
23
23
  }, []);
24
24
 
25
25
  export { getTypeaheadParams, useTypeaheadSuggestions };
@@ -1 +1 @@
1
- {"version":3,"file":"useTypeaheadSuggestions.js","sources":["../../src/hooks/useTypeaheadSuggestions.ts"],"sourcesContent":["import { makeRpcCall } from \"@vuu-ui/vuu-data-remote\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcServiceRequest,\n TypeaheadParams,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback } from \"react\";\n\nexport const getTypeaheadParams = (\n table: TableSchemaTable,\n column: string,\n text = \"\",\n selectedValues: string[] = [],\n): TypeaheadParams => {\n if (text !== \"\" && !selectedValues.includes(text.toLowerCase())) {\n return [table, column, text];\n }\n return [table, column];\n};\n\nexport const useTypeaheadSuggestions = () =>\n useCallback<SuggestionFetcher>(async (params: TypeaheadParams) => {\n const rpcMessage: VuuRpcServiceRequest =\n params.length === 2\n ? {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValues\",\n params,\n }\n : {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValuesStartingWith\",\n params,\n };\n return makeRpcCall<string[]>(rpcMessage);\n }, []);\n"],"names":[],"mappings":";;;AAQa,MAAA,kBAAA,GAAqB,CAChC,KACA,EAAA,MAAA,EACA,OAAO,EACP,EAAA,cAAA,GAA2B,EACP,KAAA;AACpB,EAAI,IAAA,IAAA,KAAS,MAAM,CAAC,cAAA,CAAe,SAAS,IAAK,CAAA,WAAA,EAAa,CAAG,EAAA;AAC/D,IAAO,OAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAO,OAAA,CAAC,OAAO,MAAM,CAAA,CAAA;AACvB,EAAA;AAEO,MAAM,uBAA0B,GAAA,MACrC,WAA+B,CAAA,OAAO,MAA4B,KAAA;AAChE,EAAM,MAAA,UAAA,GACJ,MAAO,CAAA,MAAA,KAAW,CACd,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAA;AAAA,GAEF,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,kCAAA;AAAA,IACR,MAAA;AAAA,GACF,CAAA;AACN,EAAA,OAAO,YAAsB,UAAU,CAAA,CAAA;AACzC,CAAA,EAAG,EAAE;;;;"}
1
+ {"version":3,"file":"useTypeaheadSuggestions.js","sources":["../../src/hooks/useTypeaheadSuggestions.ts"],"sourcesContent":["import { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport { SuggestionFetcher, TableSchemaTable } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcServiceRequest,\n TypeaheadParams,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback } from \"react\";\n\nexport const getTypeaheadParams = (\n table: TableSchemaTable,\n column: string,\n text = \"\",\n selectedValues: string[] = [],\n): TypeaheadParams => {\n if (text !== \"\" && !selectedValues.includes(text.toLowerCase())) {\n return [table, column, text];\n }\n return [table, column];\n};\n\nexport const useTypeaheadSuggestions = () =>\n useCallback<SuggestionFetcher>(async (params: TypeaheadParams) => {\n const rpcMessage: VuuRpcServiceRequest =\n params.length === 2\n ? {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValues\",\n params,\n }\n : {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n method: \"getUniqueFieldValuesStartingWith\",\n params,\n };\n return ConnectionManager.makeRpcCall<string[]>(rpcMessage);\n }, []);\n"],"names":[],"mappings":";;;AAQa,MAAA,kBAAA,GAAqB,CAChC,KACA,EAAA,MAAA,EACA,OAAO,EACP,EAAA,cAAA,GAA2B,EACP,KAAA;AACpB,EAAI,IAAA,IAAA,KAAS,MAAM,CAAC,cAAA,CAAe,SAAS,IAAK,CAAA,WAAA,EAAa,CAAG,EAAA;AAC/D,IAAO,OAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAO,OAAA,CAAC,OAAO,MAAM,CAAA,CAAA;AACvB,EAAA;AAEO,MAAM,uBAA0B,GAAA,MACrC,WAA+B,CAAA,OAAO,MAA4B,KAAA;AAChE,EAAM,MAAA,UAAA,GACJ,MAAO,CAAA,MAAA,KAAW,CACd,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAA;AAAA,GAEF,GAAA;AAAA,IACE,IAAM,EAAA,UAAA;AAAA,IACN,OAAS,EAAA,qBAAA;AAAA,IACT,MAAQ,EAAA,kCAAA;AAAA,IACR,MAAA;AAAA,GACF,CAAA;AACN,EAAO,OAAA,iBAAA,CAAkB,YAAsB,UAAU,CAAA,CAAA;AAC3D,CAAA,EAAG,EAAE;;;;"}
@@ -24,7 +24,7 @@ const useVuuTables = () => {
24
24
  setTables(tableSchemas);
25
25
  } catch (err) {
26
26
  console.warn(
27
- `useVuuTables: error fetching table metedata ${String(err)}`
27
+ `useVuuTables: error fetching table metadata ${String(err)}`
28
28
  );
29
29
  }
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useVuuTables.js","sources":["../../src/hooks/useVuuTables.ts"],"sourcesContent":["import type { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport const useVuuTables = () => {\n const [tables, setTables] = useState<Map<string, TableSchema> | undefined>();\n\n const { getServerAPI } = useDataSource();\n\n const buildTables = useCallback((schemas: TableSchema[]) => {\n const vuuTables = new Map<string, TableSchema>();\n schemas.forEach((schema) => {\n vuuTables.set(schema.table.table, schema);\n });\n return vuuTables;\n }, []);\n\n useEffect(() => {\n async function fetchTableMetadata() {\n try {\n const server = await getServerAPI();\n const { tables } = await server.getTableList();\n const tableSchemas = buildTables(\n await Promise.all(\n tables.map((vuuTable) => server.getTableSchema(vuuTable)),\n ),\n );\n setTables(tableSchemas);\n } catch (err) {\n console.warn(\n `useVuuTables: error fetching table metedata ${String(err)}`,\n );\n }\n }\n\n fetchTableMetadata();\n }, [buildTables, getServerAPI]);\n\n return tables;\n};\n"],"names":["tables"],"mappings":";;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAA+C,EAAA,CAAA;AAE3E,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,aAAc,EAAA,CAAA;AAEvC,EAAM,MAAA,WAAA,GAAc,WAAY,CAAA,CAAC,OAA2B,KAAA;AAC1D,IAAM,MAAA,SAAA,uBAAgB,GAAyB,EAAA,CAAA;AAC/C,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,MAAA,SAAA,CAAU,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAO,OAAA,SAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAe,kBAAqB,GAAA;AAClC,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,YAAa,EAAA,CAAA;AAClC,QAAA,MAAM,EAAE,MAAAA,EAAAA,OAAAA,EAAW,GAAA,MAAM,OAAO,YAAa,EAAA,CAAA;AAC7C,QAAA,MAAM,YAAe,GAAA,WAAA;AAAA,UACnB,MAAM,OAAQ,CAAA,GAAA;AAAA,YACZA,QAAO,GAAI,CAAA,CAAC,aAAa,MAAO,CAAA,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,WAC1D;AAAA,SACF,CAAA;AACA,QAAA,SAAA,CAAU,YAAY,CAAA,CAAA;AAAA,eACf,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,4CAAA,EAA+C,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,SAC5D,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAmB,kBAAA,EAAA,CAAA;AAAA,GAClB,EAAA,CAAC,WAAa,EAAA,YAAY,CAAC,CAAA,CAAA;AAE9B,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"useVuuTables.js","sources":["../../src/hooks/useVuuTables.ts"],"sourcesContent":["import type { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { useDataSource } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport const useVuuTables = () => {\n const [tables, setTables] = useState<Map<string, TableSchema> | undefined>();\n\n const { getServerAPI } = useDataSource();\n\n const buildTables = useCallback((schemas: TableSchema[]) => {\n const vuuTables = new Map<string, TableSchema>();\n schemas.forEach((schema) => {\n vuuTables.set(schema.table.table, schema);\n });\n return vuuTables;\n }, []);\n\n useEffect(() => {\n async function fetchTableMetadata() {\n try {\n const server = await getServerAPI();\n const { tables } = await server.getTableList();\n const tableSchemas = buildTables(\n await Promise.all(\n tables.map((vuuTable) => server.getTableSchema(vuuTable)),\n ),\n );\n setTables(tableSchemas);\n } catch (err) {\n console.warn(\n `useVuuTables: error fetching table metadata ${String(err)}`,\n );\n }\n }\n\n fetchTableMetadata();\n }, [buildTables, getServerAPI]);\n\n return tables;\n};\n"],"names":["tables"],"mappings":";;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAA+C,EAAA,CAAA;AAE3E,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,aAAc,EAAA,CAAA;AAEvC,EAAM,MAAA,WAAA,GAAc,WAAY,CAAA,CAAC,OAA2B,KAAA;AAC1D,IAAM,MAAA,SAAA,uBAAgB,GAAyB,EAAA,CAAA;AAC/C,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,MAAA,SAAA,CAAU,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAO,OAAA,SAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAe,kBAAqB,GAAA;AAClC,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,YAAa,EAAA,CAAA;AAClC,QAAA,MAAM,EAAE,MAAAA,EAAAA,OAAAA,EAAW,GAAA,MAAM,OAAO,YAAa,EAAA,CAAA;AAC7C,QAAA,MAAM,YAAe,GAAA,WAAA;AAAA,UACnB,MAAM,OAAQ,CAAA,GAAA;AAAA,YACZA,QAAO,GAAI,CAAA,CAAC,aAAa,MAAO,CAAA,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,WAC1D;AAAA,SACF,CAAA;AACA,QAAA,SAAA,CAAU,YAAY,CAAA,CAAA;AAAA,eACf,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,4CAAA,EAA+C,MAAO,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,SAC5D,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAmB,kBAAA,EAAA,CAAA;AAAA,GAClB,EAAA,CAAC,WAAa,EAAA,YAAY,CAAC,CAAA,CAAA;AAE9B,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
package/esm/index.js CHANGED
@@ -4,10 +4,10 @@ export { OK, buildValidationChecker, getEditValidationRules } from './data-editi
4
4
  export { UnsavedChangesReport } from './data-editing/UnsavedChangesReport.js';
5
5
  export { VuuDataSourceProvider } from './datasource-provider/VuuDataSourceProvider.js';
6
6
  export { useLookupValues } from './hooks/useLookupValues.js';
7
+ export { useSessionDataSource } from './hooks/useSessionDataSource.js';
7
8
  export { useVuuMenuActions } from './hooks/useVuuMenuActions.js';
8
9
  export { useVuuTables } from './hooks/useVuuTables.js';
9
10
  export { useVisualLinks } from './hooks/useVisualLinks.js';
10
- export { useServerConnectionStatus } from './hooks/useServerConnectionStatus.js';
11
11
  export { useServerConnectionQuality } from './hooks/useServerConnectionQuality.js';
12
12
  export { getTypeaheadParams, useTypeaheadSuggestions } from './hooks/useTypeaheadSuggestions.js';
13
13
  export { SessionEditingForm } from './session-editing-form/SessionEditingForm.js';
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
- "version": "0.8.92",
2
+ "version": "0.8.94",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-data-types": "0.8.92",
7
- "@vuu-ui/vuu-filter-types": "0.8.92",
8
- "@vuu-ui/vuu-popups": "0.8.92",
9
- "@vuu-ui/vuu-protocol-types": "0.8.92",
10
- "@vuu-ui/vuu-table-types": "0.8.92"
6
+ "@vuu-ui/vuu-data-types": "0.8.94",
7
+ "@vuu-ui/vuu-filter-types": "0.8.94",
8
+ "@vuu-ui/vuu-popups": "0.8.94",
9
+ "@vuu-ui/vuu-protocol-types": "0.8.94",
10
+ "@vuu-ui/vuu-table-types": "0.8.94"
11
11
  },
12
12
  "dependencies": {
13
- "@vuu-ui/vuu-data-remote": "0.8.92",
14
- "@vuu-ui/vuu-filter-parser": "0.8.92",
15
- "@vuu-ui/vuu-layout": "0.8.92",
16
- "@vuu-ui/vuu-popups": "0.8.92",
17
- "@vuu-ui/vuu-ui-controls": "0.8.92",
18
- "@vuu-ui/vuu-utils": "0.8.92",
19
- "@vuu-ui/vuu-table": "0.8.92",
13
+ "@vuu-ui/vuu-data-remote": "0.8.94",
14
+ "@vuu-ui/vuu-filter-parser": "0.8.94",
15
+ "@vuu-ui/vuu-layout": "0.8.94",
16
+ "@vuu-ui/vuu-popups": "0.8.94",
17
+ "@vuu-ui/vuu-ui-controls": "0.8.94",
18
+ "@vuu-ui/vuu-utils": "0.8.94",
19
+ "@vuu-ui/vuu-table": "0.8.94",
20
20
  "@salt-ds/core": "1.34.0",
21
21
  "@salt-ds/styles": "0.2.1",
22
22
  "@salt-ds/window": "0.1.1"
@@ -1,7 +1,7 @@
1
1
  export * from "./useLookupValues";
2
+ export * from "./useSessionDataSource";
2
3
  export * from "./useVuuMenuActions";
3
4
  export * from "./useVuuTables";
4
5
  export * from "./useVisualLinks";
5
- export * from "./useServerConnectionStatus";
6
6
  export * from "./useServerConnectionQuality";
7
7
  export * from "./useTypeaheadSuggestions";
@@ -0,0 +1,5 @@
1
+ import { DataSource, TableSchema } from "@vuu-ui/vuu-data-types";
2
+ export declare const useSessionDataSource: ({ dataSourceSessionKey, tableSchema, }: {
3
+ dataSourceSessionKey?: string | undefined;
4
+ tableSchema: TableSchema;
5
+ }) => DataSource;
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var vuuDataRemote = require('@vuu-ui/vuu-data-remote');
5
-
6
- const useServerConnectionStatus = () => {
7
- const [connectionStatus, setConnectionStatus] = react.useState("disconnected");
8
- const handleStatusChange = react.useCallback(
9
- ({ status }) => {
10
- setConnectionStatus(status);
11
- },
12
- []
13
- );
14
- react.useEffect(() => {
15
- vuuDataRemote.ConnectionManager.on("connection-status", handleStatusChange);
16
- return () => {
17
- vuuDataRemote.ConnectionManager.removeListener("connection-status", handleStatusChange);
18
- };
19
- }, [handleStatusChange]);
20
- return connectionStatus;
21
- };
22
-
23
- exports.useServerConnectionStatus = useServerConnectionStatus;
24
- //# sourceMappingURL=useServerConnectionStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useServerConnectionStatus.js","sources":["../../src/hooks/useServerConnectionStatus.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport { ConnectionStatusMessage } from \"@vuu-ui/vuu-data-types\";\n\nexport const useServerConnectionStatus = () => {\n const [connectionStatus, setConnectionStatus] = useState(\"disconnected\");\n\n const handleStatusChange = useCallback(\n ({ status }: ConnectionStatusMessage) => {\n setConnectionStatus(status);\n },\n [],\n );\n\n useEffect(() => {\n ConnectionManager.on(\"connection-status\", handleStatusChange);\n return () => {\n ConnectionManager.removeListener(\"connection-status\", handleStatusChange);\n };\n }, [handleStatusChange]);\n\n return connectionStatus;\n};\n"],"names":["useState","useCallback","useEffect","ConnectionManager"],"mappings":";;;;;AAIO,MAAM,4BAA4B,MAAM;AAC7C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,cAAc,CAAA,CAAA;AAEvE,EAAA,MAAM,kBAAqB,GAAAC,iBAAA;AAAA,IACzB,CAAC,EAAE,MAAA,EAAsC,KAAA;AACvC,MAAA,mBAAA,CAAoB,MAAM,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAkBC,+BAAA,CAAA,EAAA,CAAG,qBAAqB,kBAAkB,CAAA,CAAA;AAC5D,IAAA,OAAO,MAAM;AACX,MAAkBA,+BAAA,CAAA,cAAA,CAAe,qBAAqB,kBAAkB,CAAA,CAAA;AAAA,KAC1E,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EAAO,OAAA,gBAAA,CAAA;AACT;;;;"}
@@ -1,22 +0,0 @@
1
- import { useState, useCallback, useEffect } from 'react';
2
- import { ConnectionManager } from '@vuu-ui/vuu-data-remote';
3
-
4
- const useServerConnectionStatus = () => {
5
- const [connectionStatus, setConnectionStatus] = useState("disconnected");
6
- const handleStatusChange = useCallback(
7
- ({ status }) => {
8
- setConnectionStatus(status);
9
- },
10
- []
11
- );
12
- useEffect(() => {
13
- ConnectionManager.on("connection-status", handleStatusChange);
14
- return () => {
15
- ConnectionManager.removeListener("connection-status", handleStatusChange);
16
- };
17
- }, [handleStatusChange]);
18
- return connectionStatus;
19
- };
20
-
21
- export { useServerConnectionStatus };
22
- //# sourceMappingURL=useServerConnectionStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useServerConnectionStatus.js","sources":["../../src/hooks/useServerConnectionStatus.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport { ConnectionStatusMessage } from \"@vuu-ui/vuu-data-types\";\n\nexport const useServerConnectionStatus = () => {\n const [connectionStatus, setConnectionStatus] = useState(\"disconnected\");\n\n const handleStatusChange = useCallback(\n ({ status }: ConnectionStatusMessage) => {\n setConnectionStatus(status);\n },\n [],\n );\n\n useEffect(() => {\n ConnectionManager.on(\"connection-status\", handleStatusChange);\n return () => {\n ConnectionManager.removeListener(\"connection-status\", handleStatusChange);\n };\n }, [handleStatusChange]);\n\n return connectionStatus;\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,4BAA4B,MAAM;AAC7C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,cAAc,CAAA,CAAA;AAEvE,EAAA,MAAM,kBAAqB,GAAA,WAAA;AAAA,IACzB,CAAC,EAAE,MAAA,EAAsC,KAAA;AACvC,MAAA,mBAAA,CAAoB,MAAM,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAkB,iBAAA,CAAA,EAAA,CAAG,qBAAqB,kBAAkB,CAAA,CAAA;AAC5D,IAAA,OAAO,MAAM;AACX,MAAkB,iBAAA,CAAA,cAAA,CAAe,qBAAqB,kBAAkB,CAAA,CAAA;AAAA,KAC1E,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EAAO,OAAA,gBAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- export declare const useServerConnectionStatus: () => string;