@deephaven/jsapi-components 0.37.4-beta.0 → 0.37.4-logout.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/RefreshTokenBootstrap.d.ts +13 -0
  2. package/dist/RefreshTokenBootstrap.d.ts.map +1 -0
  3. package/dist/RefreshTokenBootstrap.js +40 -0
  4. package/dist/RefreshTokenBootstrap.js.map +1 -0
  5. package/dist/RefreshTokenUtils.d.ts +18 -0
  6. package/dist/RefreshTokenUtils.d.ts.map +1 -0
  7. package/dist/RefreshTokenUtils.js +35 -0
  8. package/dist/RefreshTokenUtils.js.map +1 -0
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/useBroadcastChannel.d.ts +4 -0
  14. package/dist/useBroadcastChannel.d.ts.map +1 -0
  15. package/dist/useBroadcastChannel.js +29 -0
  16. package/dist/useBroadcastChannel.js.map +1 -0
  17. package/dist/useBroadcastLoginListener.d.ts +4 -0
  18. package/dist/useBroadcastLoginListener.d.ts.map +1 -0
  19. package/dist/useBroadcastLoginListener.js +15 -0
  20. package/dist/useBroadcastLoginListener.js.map +1 -0
  21. package/dist/useInitializeViewportData.d.ts +1 -1
  22. package/dist/useInitializeViewportData.d.ts.map +1 -1
  23. package/dist/useInitializeViewportData.js.map +1 -1
  24. package/dist/useSelectDistinctTable.d.ts +1 -1
  25. package/dist/useSelectDistinctTable.d.ts.map +1 -1
  26. package/dist/useSelectDistinctTable.js.map +1 -1
  27. package/dist/useSetPaddedViewportCallback.d.ts +1 -1
  28. package/dist/useSetPaddedViewportCallback.d.ts.map +1 -1
  29. package/dist/useSetPaddedViewportCallback.js.map +1 -1
  30. package/dist/useTable.d.ts.map +1 -1
  31. package/dist/useTable.js +2 -1
  32. package/dist/useTable.js.map +1 -1
  33. package/dist/useViewportData.d.ts +1 -1
  34. package/dist/useViewportData.d.ts.map +1 -1
  35. package/dist/useViewportData.js.map +1 -1
  36. package/package.json +13 -11
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export type RefreshTokenBootstrapProps = {
3
+ /**
4
+ * The children to render wrapped with the RefreshTokenContext.
5
+ */
6
+ children: React.ReactNode;
7
+ };
8
+ /**
9
+ * RefreshTokenBootstrap component. Handles storing and reading the refresh token.
10
+ */
11
+ export declare function RefreshTokenBootstrap({ children, }: RefreshTokenBootstrapProps): JSX.Element;
12
+ export default RefreshTokenBootstrap;
13
+ //# sourceMappingURL=RefreshTokenBootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshTokenBootstrap.d.ts","sourceRoot":"","sources":["../src/RefreshTokenBootstrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAUhE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,GACT,EAAE,0BAA0B,eAqC5B;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
+ import { useApi, useClient } from '@deephaven/jsapi-bootstrap';
3
+ import useBroadcastChannel from "./useBroadcastChannel.js";
4
+ import useBroadcastLoginListener from "./useBroadcastLoginListener.js";
5
+ import { readRefreshToken, RefreshTokenContext, storeRefreshToken } from "./RefreshTokenUtils.js";
6
+ /**
7
+ * RefreshTokenBootstrap component. Handles storing and reading the refresh token.
8
+ */
9
+ export function RefreshTokenBootstrap(_ref) {
10
+ var {
11
+ children
12
+ } = _ref;
13
+ var api = useApi();
14
+ var client = useClient();
15
+ var channel = useBroadcastChannel();
16
+ var [token, setToken] = useState(readRefreshToken());
17
+ useEffect(function listenForTokenUpdates() {
18
+ var cleanup = client.addEventListener(api.CoreClient.EVENT_REFRESH_TOKEN_UPDATED, event => {
19
+ var {
20
+ detail: newToken
21
+ } = event;
22
+ storeRefreshToken(newToken);
23
+ setToken(newToken);
24
+ });
25
+ return cleanup;
26
+ }, [api, channel, client, token]);
27
+ var onLogin = useCallback(() => {
28
+ setToken(readRefreshToken());
29
+ }, []);
30
+ var onLogout = useCallback(() => {
31
+ storeRefreshToken(null);
32
+ setToken(null);
33
+ }, []);
34
+ useBroadcastLoginListener(onLogin, onLogout);
35
+ return /*#__PURE__*/React.createElement(RefreshTokenContext.Provider, {
36
+ value: token
37
+ }, children);
38
+ }
39
+ export default RefreshTokenBootstrap;
40
+ //# sourceMappingURL=RefreshTokenBootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshTokenBootstrap.js","names":["React","useCallback","useEffect","useState","useApi","useClient","useBroadcastChannel","useBroadcastLoginListener","readRefreshToken","RefreshTokenContext","storeRefreshToken","RefreshTokenBootstrap","children","api","client","channel","token","setToken","listenForTokenUpdates","cleanup","addEventListener","CoreClient","EVENT_REFRESH_TOKEN_UPDATED","event","detail","newToken","onLogin","onLogout"],"sources":["../src/RefreshTokenBootstrap.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { useApi, useClient } from '@deephaven/jsapi-bootstrap';\nimport useBroadcastChannel from './useBroadcastChannel';\nimport useBroadcastLoginListener from './useBroadcastLoginListener';\nimport {\n readRefreshToken,\n RefreshTokenContext,\n storeRefreshToken,\n} from './RefreshTokenUtils';\n\nexport type RefreshTokenBootstrapProps = {\n /**\n * The children to render wrapped with the RefreshTokenContext.\n */\n children: React.ReactNode;\n};\n\n/**\n * RefreshTokenBootstrap component. Handles storing and reading the refresh token.\n */\nexport function RefreshTokenBootstrap({\n children,\n}: RefreshTokenBootstrapProps) {\n const api = useApi();\n const client = useClient();\n const channel = useBroadcastChannel();\n const [token, setToken] = useState(readRefreshToken());\n\n useEffect(\n function listenForTokenUpdates() {\n const cleanup = client.addEventListener(\n api.CoreClient.EVENT_REFRESH_TOKEN_UPDATED,\n (event: CustomEvent) => {\n const { detail: newToken } = event;\n storeRefreshToken(newToken);\n setToken(newToken);\n }\n );\n return cleanup;\n },\n [api, channel, client, token]\n );\n\n const onLogin = useCallback(() => {\n setToken(readRefreshToken());\n }, []);\n\n const onLogout = useCallback(() => {\n storeRefreshToken(null);\n setToken(null);\n }, []);\n\n useBroadcastLoginListener(onLogin, onLogout);\n\n return (\n <RefreshTokenContext.Provider value={token}>\n {children}\n </RefreshTokenContext.Provider>\n );\n}\n\nexport default RefreshTokenBootstrap;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC/D,SAASC,MAAM,EAAEC,SAAS,QAAQ,4BAA4B;AAAC,OACxDC,mBAAmB;AAAA,OACnBC,yBAAyB;AAAA,SAE9BC,gBAAgB,EAChBC,mBAAmB,EACnBC,iBAAiB;AAUnB;AACA;AACA;AACA,OAAO,SAASC,qBAAqB,OAEN;EAAA,IAFO;IACpCC;EAC0B,CAAC;EAC3B,IAAMC,GAAG,GAAGT,MAAM,EAAE;EACpB,IAAMU,MAAM,GAAGT,SAAS,EAAE;EAC1B,IAAMU,OAAO,GAAGT,mBAAmB,EAAE;EACrC,IAAM,CAACU,KAAK,EAAEC,QAAQ,CAAC,GAAGd,QAAQ,CAACK,gBAAgB,EAAE,CAAC;EAEtDN,SAAS,CACP,SAASgB,qBAAqB,GAAG;IAC/B,IAAMC,OAAO,GAAGL,MAAM,CAACM,gBAAgB,CACrCP,GAAG,CAACQ,UAAU,CAACC,2BAA2B,EACzCC,KAAkB,IAAK;MACtB,IAAM;QAAEC,MAAM,EAAEC;MAAS,CAAC,GAAGF,KAAK;MAClCb,iBAAiB,CAACe,QAAQ,CAAC;MAC3BR,QAAQ,CAACQ,QAAQ,CAAC;IACpB,CAAC,CACF;IACD,OAAON,OAAO;EAChB,CAAC,EACD,CAACN,GAAG,EAAEE,OAAO,EAAED,MAAM,EAAEE,KAAK,CAAC,CAC9B;EAED,IAAMU,OAAO,GAAGzB,WAAW,CAAC,MAAM;IAChCgB,QAAQ,CAACT,gBAAgB,EAAE,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMmB,QAAQ,GAAG1B,WAAW,CAAC,MAAM;IACjCS,iBAAiB,CAAC,IAAI,CAAC;IACvBO,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC,EAAE,EAAE,CAAC;EAENV,yBAAyB,CAACmB,OAAO,EAAEC,QAAQ,CAAC;EAE5C,oBACE,oBAAC,mBAAmB,CAAC,QAAQ;IAAC,KAAK,EAAEX;EAAM,GACxCJ,QAAQ,CACoB;AAEnC;AAEA,eAAeD,qBAAqB"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ export declare const REFRESH_TOKEN_KEY = "io.deephaven.web.client.auth.refreshToken";
3
+ export type RefreshToken = {
4
+ bytes: string;
5
+ expiry: number;
6
+ };
7
+ export declare const RefreshTokenContext: import("react").Context<RefreshToken | null>;
8
+ /**
9
+ * Read the refresh token from our cookie store
10
+ * @returns RefreshToken if it exists, null otherwise
11
+ */
12
+ export declare function readRefreshToken(): RefreshToken | null;
13
+ /**
14
+ * Store the provided refresh token as a cookie
15
+ * @param token The refresh token to store
16
+ */
17
+ export declare function storeRefreshToken(token: RefreshToken | null): void;
18
+ //# sourceMappingURL=RefreshTokenUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshTokenUtils.d.ts","sourceRoot":"","sources":["../src/RefreshTokenUtils.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,iBAAiB,8CAA8C,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,mBAAmB,8CAA2C,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAGtD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,QAgB3D"}
@@ -0,0 +1,35 @@
1
+ import { createContext } from 'react';
2
+ import Cookies from 'js-cookie';
3
+ export var REFRESH_TOKEN_KEY = 'io.deephaven.web.client.auth.refreshToken';
4
+ export var RefreshTokenContext = /*#__PURE__*/createContext(null);
5
+
6
+ /**
7
+ * Read the refresh token from our cookie store
8
+ * @returns RefreshToken if it exists, null otherwise
9
+ */
10
+ export function readRefreshToken() {
11
+ var cookieToken = Cookies.get(REFRESH_TOKEN_KEY);
12
+ return cookieToken != null ? JSON.parse(cookieToken) : null;
13
+ }
14
+
15
+ /**
16
+ * Store the provided refresh token as a cookie
17
+ * @param token The refresh token to store
18
+ */
19
+ export function storeRefreshToken(token) {
20
+ if (token != null) {
21
+ var cookieToken = JSON.stringify({
22
+ bytes: token.bytes,
23
+ expiry: token.expiry
24
+ });
25
+ var expires = new Date(token.expiry);
26
+ Cookies.set(REFRESH_TOKEN_KEY, cookieToken, {
27
+ secure: true,
28
+ sameSite: 'strict',
29
+ expires
30
+ });
31
+ } else {
32
+ Cookies.remove(REFRESH_TOKEN_KEY);
33
+ }
34
+ }
35
+ //# sourceMappingURL=RefreshTokenUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshTokenUtils.js","names":["createContext","Cookies","REFRESH_TOKEN_KEY","RefreshTokenContext","readRefreshToken","cookieToken","get","JSON","parse","storeRefreshToken","token","stringify","bytes","expiry","expires","Date","set","secure","sameSite","remove"],"sources":["../src/RefreshTokenUtils.ts"],"sourcesContent":["import { createContext } from 'react';\nimport Cookies from 'js-cookie';\n\nexport const REFRESH_TOKEN_KEY = 'io.deephaven.web.client.auth.refreshToken';\n\nexport type RefreshToken = { bytes: string; expiry: number };\n\nexport const RefreshTokenContext = createContext<RefreshToken | null>(null);\n\n/**\n * Read the refresh token from our cookie store\n * @returns RefreshToken if it exists, null otherwise\n */\nexport function readRefreshToken(): RefreshToken | null {\n const cookieToken = Cookies.get(REFRESH_TOKEN_KEY);\n return cookieToken != null ? JSON.parse(cookieToken) : null;\n}\n\n/**\n * Store the provided refresh token as a cookie\n * @param token The refresh token to store\n */\nexport function storeRefreshToken(token: RefreshToken | null) {\n if (token != null) {\n const cookieToken = JSON.stringify({\n bytes: token.bytes,\n expiry: token.expiry,\n });\n const expires = new Date(token.expiry);\n\n Cookies.set(REFRESH_TOKEN_KEY, cookieToken, {\n secure: true,\n sameSite: 'strict',\n expires,\n });\n } else {\n Cookies.remove(REFRESH_TOKEN_KEY);\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,OAAO;AACrC,OAAOC,OAAO,MAAM,WAAW;AAE/B,OAAO,IAAMC,iBAAiB,GAAG,2CAA2C;AAI5E,OAAO,IAAMC,mBAAmB,gBAAGH,aAAa,CAAsB,IAAI,CAAC;;AAE3E;AACA;AACA;AACA;AACA,OAAO,SAASI,gBAAgB,GAAwB;EACtD,IAAMC,WAAW,GAAGJ,OAAO,CAACK,GAAG,CAACJ,iBAAiB,CAAC;EAClD,OAAOG,WAAW,IAAI,IAAI,GAAGE,IAAI,CAACC,KAAK,CAACH,WAAW,CAAC,GAAG,IAAI;AAC7D;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,iBAAiB,CAACC,KAA0B,EAAE;EAC5D,IAAIA,KAAK,IAAI,IAAI,EAAE;IACjB,IAAML,WAAW,GAAGE,IAAI,CAACI,SAAS,CAAC;MACjCC,KAAK,EAAEF,KAAK,CAACE,KAAK;MAClBC,MAAM,EAAEH,KAAK,CAACG;IAChB,CAAC,CAAC;IACF,IAAMC,OAAO,GAAG,IAAIC,IAAI,CAACL,KAAK,CAACG,MAAM,CAAC;IAEtCZ,OAAO,CAACe,GAAG,CAACd,iBAAiB,EAAEG,WAAW,EAAE;MAC1CY,MAAM,EAAE,IAAI;MACZC,QAAQ,EAAE,QAAQ;MAClBJ;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACLb,OAAO,CAACkB,MAAM,CAACjB,iBAAiB,CAAC;EACnC;AACF"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  export { default as TableInput } from './TableInput';
2
+ export * from './RefreshTokenBootstrap';
3
+ export * from './RefreshTokenUtils';
4
+ export { default as useBroadcastChannel } from './useBroadcastChannel';
5
+ export { default as useBroadcastLoginListener } from './useBroadcastLoginListener';
2
6
  export { default as useInitializeViewportData } from './useInitializeViewportData';
3
7
  export { default as useTable } from './useTable';
4
8
  export { default as useTableColumn } from './useTableColumn';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,8 @@
1
1
  export { default as TableInput } from "./TableInput.js";
2
+ export * from "./RefreshTokenBootstrap.js";
3
+ export * from "./RefreshTokenUtils.js";
4
+ export { default as useBroadcastChannel } from "./useBroadcastChannel.js";
5
+ export { default as useBroadcastLoginListener } from "./useBroadcastLoginListener.js";
2
6
  export { default as useInitializeViewportData } from "./useInitializeViewportData.js";
3
7
  export { default as useTable } from "./useTable.js";
4
8
  export { default as useTableColumn } from "./useTableColumn.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","TableInput","useInitializeViewportData","useTable","useTableColumn","useTableListener","useSelectDistinctTable","useSetPaddedViewportCallback","useViewportData"],"sources":["../src/index.ts"],"sourcesContent":["export { default as TableInput } from './TableInput';\nexport { default as useInitializeViewportData } from './useInitializeViewportData';\nexport { default as useTable } from './useTable';\nexport { default as useTableColumn } from './useTableColumn';\nexport { default as useTableListener } from './useTableListener';\nexport { default as useSelectDistinctTable } from './useSelectDistinctTable';\nexport { default as useSetPaddedViewportCallback } from './useSetPaddedViewportCallback';\nexport { default as useViewportData } from './useViewportData';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,yBAAyB;AAAA,SACpCF,OAAO,IAAIG,QAAQ;AAAA,SACnBH,OAAO,IAAII,cAAc;AAAA,SACzBJ,OAAO,IAAIK,gBAAgB;AAAA,SAC3BL,OAAO,IAAIM,sBAAsB;AAAA,SACjCN,OAAO,IAAIO,4BAA4B;AAAA,SACvCP,OAAO,IAAIQ,eAAe"}
1
+ {"version":3,"file":"index.js","names":["default","TableInput","useBroadcastChannel","useBroadcastLoginListener","useInitializeViewportData","useTable","useTableColumn","useTableListener","useSelectDistinctTable","useSetPaddedViewportCallback","useViewportData"],"sources":["../src/index.ts"],"sourcesContent":["export { default as TableInput } from './TableInput';\nexport * from './RefreshTokenBootstrap';\nexport * from './RefreshTokenUtils';\nexport { default as useBroadcastChannel } from './useBroadcastChannel';\nexport { default as useBroadcastLoginListener } from './useBroadcastLoginListener';\nexport { default as useInitializeViewportData } from './useInitializeViewportData';\nexport { default as useTable } from './useTable';\nexport { default as useTableColumn } from './useTableColumn';\nexport { default as useTableListener } from './useTableListener';\nexport { default as useSelectDistinctTable } from './useSelectDistinctTable';\nexport { default as useSetPaddedViewportCallback } from './useSetPaddedViewportCallback';\nexport { default as useViewportData } from './useViewportData';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA;AAAA;AAAA,SAGrBD,OAAO,IAAIE,mBAAmB;AAAA,SAC9BF,OAAO,IAAIG,yBAAyB;AAAA,SACpCH,OAAO,IAAII,yBAAyB;AAAA,SACpCJ,OAAO,IAAIK,QAAQ;AAAA,SACnBL,OAAO,IAAIM,cAAc;AAAA,SACzBN,OAAO,IAAIO,gBAAgB;AAAA,SAC3BP,OAAO,IAAIQ,sBAAsB;AAAA,SACjCR,OAAO,IAAIS,4BAA4B;AAAA,SACvCT,OAAO,IAAIU,eAAe"}
@@ -0,0 +1,4 @@
1
+ import { Message } from '@deephaven/jsapi-utils';
2
+ export declare function useBroadcastChannel(onEvent?: (event: MessageEvent<Message<unknown>>) => void, name?: string): BroadcastChannel;
3
+ export default useBroadcastChannel;
4
+ //# sourceMappingURL=useBroadcastChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBroadcastChannel.d.ts","sourceRoot":"","sources":["../src/useBroadcastChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,EACR,MAAM,wBAAwB,CAAC;AAOhC,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,IAAqB,EACzE,IAAI,SAAyB,oBAuB9B;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { BROADCAST_CHANNEL_NAME, isMessage } from '@deephaven/jsapi-utils';
2
+ import Log from '@deephaven/log';
3
+ import { EMPTY_FUNCTION } from '@deephaven/utils';
4
+ import { useEffect, useMemo } from 'react';
5
+ var log = Log.module('useBroadcastChannel');
6
+ export function useBroadcastChannel() {
7
+ var onEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_FUNCTION;
8
+ var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : BROADCAST_CHANNEL_NAME;
9
+ var channel = useMemo(() => new BroadcastChannel(name), [name]);
10
+ useEffect(() => () => {
11
+ channel.close();
12
+ }, [channel]);
13
+ useEffect(() => {
14
+ channel.onmessage = event => {
15
+ var {
16
+ data
17
+ } = event;
18
+ if (!isMessage(data)) {
19
+ log.debug('Ignoring non-deephaven message', data);
20
+ return;
21
+ }
22
+ log.debug('event received', data);
23
+ onEvent(event);
24
+ };
25
+ }, [channel, onEvent]);
26
+ return channel;
27
+ }
28
+ export default useBroadcastChannel;
29
+ //# sourceMappingURL=useBroadcastChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBroadcastChannel.js","names":["BROADCAST_CHANNEL_NAME","isMessage","Log","EMPTY_FUNCTION","useEffect","useMemo","log","module","useBroadcastChannel","onEvent","name","channel","BroadcastChannel","close","onmessage","event","data","debug"],"sources":["../src/useBroadcastChannel.ts"],"sourcesContent":["import {\n BROADCAST_CHANNEL_NAME,\n isMessage,\n Message,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { useEffect, useMemo } from 'react';\n\nconst log = Log.module('useBroadcastChannel');\n\nexport function useBroadcastChannel(\n onEvent: (event: MessageEvent<Message<unknown>>) => void = EMPTY_FUNCTION,\n name = BROADCAST_CHANNEL_NAME\n) {\n const channel = useMemo(() => new BroadcastChannel(name), [name]);\n useEffect(\n () => () => {\n channel.close();\n },\n [channel]\n );\n\n useEffect(() => {\n channel.onmessage = (event: MessageEvent) => {\n const { data } = event;\n if (!isMessage(data)) {\n log.debug('Ignoring non-deephaven message', data);\n return;\n }\n log.debug('event received', data);\n onEvent(event);\n };\n }, [channel, onEvent]);\n\n return channel;\n}\n\nexport default useBroadcastChannel;\n"],"mappings":"AAAA,SACEA,sBAAsB,EACtBC,SAAS,QAEJ,wBAAwB;AAC/B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAE1C,IAAMC,GAAG,GAAGJ,GAAG,CAACK,MAAM,CAAC,qBAAqB,CAAC;AAE7C,OAAO,SAASC,mBAAmB,GAGjC;EAAA,IAFAC,OAAwD,uEAAGN,cAAc;EAAA,IACzEO,IAAI,uEAAGV,sBAAsB;EAE7B,IAAMW,OAAO,GAAGN,OAAO,CAAC,MAAM,IAAIO,gBAAgB,CAACF,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EACjEN,SAAS,CACP,MAAM,MAAM;IACVO,OAAO,CAACE,KAAK,EAAE;EACjB,CAAC,EACD,CAACF,OAAO,CAAC,CACV;EAEDP,SAAS,CAAC,MAAM;IACdO,OAAO,CAACG,SAAS,GAAIC,KAAmB,IAAK;MAC3C,IAAM;QAAEC;MAAK,CAAC,GAAGD,KAAK;MACtB,IAAI,CAACd,SAAS,CAACe,IAAI,CAAC,EAAE;QACpBV,GAAG,CAACW,KAAK,CAAC,gCAAgC,EAAED,IAAI,CAAC;QACjD;MACF;MACAV,GAAG,CAACW,KAAK,CAAC,gBAAgB,EAAED,IAAI,CAAC;MACjCP,OAAO,CAACM,KAAK,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACJ,OAAO,EAAEF,OAAO,CAAC,CAAC;EAEtB,OAAOE,OAAO;AAChB;AAEA,eAAeH,mBAAmB"}
@@ -0,0 +1,4 @@
1
+ import { BroadcastLoginMessage, BroadcastLogoutMessage } from '@deephaven/jsapi-utils';
2
+ export declare function useBroadcastLoginListener(onLogin?: (message: BroadcastLoginMessage) => void, onLogout?: (message: BroadcastLogoutMessage) => void): void;
3
+ export default useBroadcastLoginListener;
4
+ //# sourceMappingURL=useBroadcastLoginListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBroadcastLoginListener.d.ts","sourceRoot":"","sources":["../src/useBroadcastLoginListener.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAIvB,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,yBAAyB,CACvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,EAClD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,QAcrD;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { isBroadcastLoginMessage, isBroadcastLogoutMessage } from '@deephaven/jsapi-utils';
2
+ import { useCallback } from 'react';
3
+ import useBroadcastChannel from "./useBroadcastChannel.js";
4
+ export function useBroadcastLoginListener(onLogin, onLogout) {
5
+ var onMessage = useCallback(event => {
6
+ if (isBroadcastLoginMessage(event.data)) {
7
+ onLogin === null || onLogin === void 0 ? void 0 : onLogin(event.data);
8
+ } else if (isBroadcastLogoutMessage(event.data)) {
9
+ onLogout === null || onLogout === void 0 ? void 0 : onLogout(event.data);
10
+ }
11
+ }, [onLogin, onLogout]);
12
+ useBroadcastChannel(onMessage);
13
+ }
14
+ export default useBroadcastLoginListener;
15
+ //# sourceMappingURL=useBroadcastLoginListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBroadcastLoginListener.js","names":["isBroadcastLoginMessage","isBroadcastLogoutMessage","useCallback","useBroadcastChannel","useBroadcastLoginListener","onLogin","onLogout","onMessage","event","data"],"sources":["../src/useBroadcastLoginListener.ts"],"sourcesContent":["import {\n BroadcastLoginMessage,\n BroadcastLogoutMessage,\n isBroadcastLoginMessage,\n isBroadcastLogoutMessage,\n Message,\n} from '@deephaven/jsapi-utils';\nimport { useCallback } from 'react';\nimport useBroadcastChannel from './useBroadcastChannel';\n\nexport function useBroadcastLoginListener(\n onLogin?: (message: BroadcastLoginMessage) => void,\n onLogout?: (message: BroadcastLogoutMessage) => void\n) {\n const onMessage = useCallback(\n (event: MessageEvent<Message<unknown>>) => {\n if (isBroadcastLoginMessage(event.data)) {\n onLogin?.(event.data);\n } else if (isBroadcastLogoutMessage(event.data)) {\n onLogout?.(event.data);\n }\n },\n [onLogin, onLogout]\n );\n\n useBroadcastChannel(onMessage);\n}\n\nexport default useBroadcastLoginListener;\n"],"mappings":"AAAA,SAGEA,uBAAuB,EACvBC,wBAAwB,QAEnB,wBAAwB;AAC/B,SAASC,WAAW,QAAQ,OAAO;AAAC,OAC7BC,mBAAmB;AAE1B,OAAO,SAASC,yBAAyB,CACvCC,OAAkD,EAClDC,QAAoD,EACpD;EACA,IAAMC,SAAS,GAAGL,WAAW,CAC1BM,KAAqC,IAAK;IACzC,IAAIR,uBAAuB,CAACQ,KAAK,CAACC,IAAI,CAAC,EAAE;MACvCJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGG,KAAK,CAACC,IAAI,CAAC;IACvB,CAAC,MAAM,IAAIR,wBAAwB,CAACO,KAAK,CAACC,IAAI,CAAC,EAAE;MAC/CH,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGE,KAAK,CAACC,IAAI,CAAC;IACxB;EACF,CAAC,EACD,CAACJ,OAAO,EAAEC,QAAQ,CAAC,CACpB;EAEDH,mBAAmB,CAACI,SAAS,CAAC;AAChC;AAEA,eAAeH,yBAAyB"}
@@ -1,5 +1,5 @@
1
1
  import { ListData } from '@react-stately/data';
2
- import { Table, TreeTable } from '@deephaven/jsapi-shim';
2
+ import { Table, TreeTable } from '@deephaven/jsapi-types';
3
3
  import { KeyedItem } from '@deephaven/jsapi-utils';
4
4
  /**
5
5
  * Initializes a ListData instance that can be used for windowed views of a
@@ -1 +1 @@
1
- {"version":3,"file":"useInitializeViewportData.d.ts","sourceRoot":"","sources":["../src/useInitializeViewportData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,CAAC,EACjD,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,GAC9B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAsBxB"}
1
+ {"version":3,"file":"useInitializeViewportData.d.ts","sourceRoot":"","sources":["../src/useInitializeViewportData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,CAAC,EACjD,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,GAC9B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAsBxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInitializeViewportData.js","names":["useEffect","useListData","generateEmptyKeyedItems","getSize","useInitializeViewportData","table","viewportData","items","length","remove","map","key","insert"],"sources":["../src/useInitializeViewportData.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { ListData, useListData } from '@react-stately/data';\nimport { Table, TreeTable } from '@deephaven/jsapi-shim';\nimport {\n KeyedItem,\n generateEmptyKeyedItems,\n getSize,\n} from '@deephaven/jsapi-utils';\n\n/**\n * Initializes a ListData instance that can be used for windowed views of a\n * Table. The list must always contain a KeyedItem for every record in the table,\n * so it is pre-populated with empty items that can be updated with real data as\n * the window changes.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table The table that will be used to determine the list size.\n * @returns\n */\nexport default function useInitializeViewportData<T>(\n table: Table | TreeTable | null\n): ListData<KeyedItem<T>> {\n const viewportData = useListData<KeyedItem<T>>({});\n\n // We only want this to fire 1x once the table exists. Note that `useListData`\n // has no way to respond to a reference change of the `table` instance so we\n // have to manually delete any previous keyed items from the list.\n useEffect(() => {\n if (!table) {\n return;\n }\n\n if (viewportData.items.length) {\n viewportData.remove(...viewportData.items.map(({ key }) => key));\n }\n\n viewportData.insert(0, ...generateEmptyKeyedItems<T>(getSize(table)));\n\n // Intentionally excluding viewportData since it changes on every render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table]);\n\n return viewportData;\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAAmBC,WAAW,QAAQ,qBAAqB;AAE3D,SAEEC,uBAAuB,EACvBC,OAAO,QACF,wBAAwB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,yBAAyB,CAC/CC,KAA+B,EACP;EACxB,IAAMC,YAAY,GAAGL,WAAW,CAAe,CAAC,CAAC,CAAC;;EAElD;EACA;EACA;EACAD,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;MACV;IACF;IAEA,IAAIC,YAAY,CAACC,KAAK,CAACC,MAAM,EAAE;MAC7BF,YAAY,CAACG,MAAM,CAAC,GAAGH,YAAY,CAACC,KAAK,CAACG,GAAG,CAAC;QAAA,IAAC;UAAEC;QAAI,CAAC;QAAA,OAAKA,GAAG;MAAA,EAAC,CAAC;IAClE;IAEAL,YAAY,CAACM,MAAM,CAAC,CAAC,EAAE,GAAGV,uBAAuB,CAAIC,OAAO,CAACE,KAAK,CAAC,CAAC,CAAC;;IAErE;IACA;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OAAOC,YAAY;AACrB"}
1
+ {"version":3,"file":"useInitializeViewportData.js","names":["useEffect","useListData","generateEmptyKeyedItems","getSize","useInitializeViewportData","table","viewportData","items","length","remove","map","key","insert"],"sources":["../src/useInitializeViewportData.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { ListData, useListData } from '@react-stately/data';\nimport { Table, TreeTable } from '@deephaven/jsapi-types';\nimport {\n KeyedItem,\n generateEmptyKeyedItems,\n getSize,\n} from '@deephaven/jsapi-utils';\n\n/**\n * Initializes a ListData instance that can be used for windowed views of a\n * Table. The list must always contain a KeyedItem for every record in the table,\n * so it is pre-populated with empty items that can be updated with real data as\n * the window changes.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table The table that will be used to determine the list size.\n * @returns\n */\nexport default function useInitializeViewportData<T>(\n table: Table | TreeTable | null\n): ListData<KeyedItem<T>> {\n const viewportData = useListData<KeyedItem<T>>({});\n\n // We only want this to fire 1x once the table exists. Note that `useListData`\n // has no way to respond to a reference change of the `table` instance so we\n // have to manually delete any previous keyed items from the list.\n useEffect(() => {\n if (!table) {\n return;\n }\n\n if (viewportData.items.length) {\n viewportData.remove(...viewportData.items.map(({ key }) => key));\n }\n\n viewportData.insert(0, ...generateEmptyKeyedItems<T>(getSize(table)));\n\n // Intentionally excluding viewportData since it changes on every render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table]);\n\n return viewportData;\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAAmBC,WAAW,QAAQ,qBAAqB;AAE3D,SAEEC,uBAAuB,EACvBC,OAAO,QACF,wBAAwB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,yBAAyB,CAC/CC,KAA+B,EACP;EACxB,IAAMC,YAAY,GAAGL,WAAW,CAAe,CAAC,CAAC,CAAC;;EAElD;EACA;EACA;EACAD,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;MACV;IACF;IAEA,IAAIC,YAAY,CAACC,KAAK,CAACC,MAAM,EAAE;MAC7BF,YAAY,CAACG,MAAM,CAAC,GAAGH,YAAY,CAACC,KAAK,CAACG,GAAG,CAAC;QAAA,IAAC;UAAEC;QAAI,CAAC;QAAA,OAAKA,GAAG;MAAA,EAAC,CAAC;IAClE;IAEAL,YAAY,CAACM,MAAM,CAAC,CAAC,EAAE,GAAGV,uBAAuB,CAAIC,OAAO,CAACE,KAAK,CAAC,CAAC,CAAC;;IAErE;IACA;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OAAOC,YAAY;AACrB"}
@@ -1,4 +1,4 @@
1
- import { Table, TreeTable } from '@deephaven/jsapi-shim';
1
+ import { Table, TreeTable } from '@deephaven/jsapi-types';
2
2
  /**
3
3
  * Creates and subscribes to a `selectDistinct` derived table and unsubscribes
4
4
  * on unmount.
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectDistinctTable.d.ts","sourceRoot":"","sources":["../src/useSelectDistinctTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,EAC/B,GAAG,WAAW,EAAE,MAAM,EAAE;;;;;EAsBzB"}
1
+ {"version":3,"file":"useSelectDistinctTable.d.ts","sourceRoot":"","sources":["../src/useSelectDistinctTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,EAC/B,GAAG,WAAW,EAAE,MAAM,EAAE;;;;;EAsBzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectDistinctTable.js","names":["useCallback","useEffect","usePromiseFactory","useSelectDistinctTable","table","columnNames","selectDistinct","findColumns","data","distinctTable","error","isError","isLoading","close"],"sources":["../src/useSelectDistinctTable.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport { Table, TreeTable } from '@deephaven/jsapi-shim';\nimport { usePromiseFactory } from '@deephaven/react-hooks';\n\n/**\n * Creates and subscribes to a `selectDistinct` derived table and unsubscribes\n * on unmount.\n * @param table The table to call `selectDistinct` on.\n * @param columnNames The list of column names to pass to `selectDistinct`.\n */\nexport default function useSelectDistinctTable(\n table: Table | TreeTable | null,\n ...columnNames: string[]\n) {\n const selectDistinct = useCallback(\n async () => table?.selectDistinct(table.findColumns(columnNames)) ?? null,\n // Disabling the exhaustive checks due to the spreading of `columnNames`\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table, ...columnNames]\n );\n\n const { data: distinctTable, error, isError, isLoading } = usePromiseFactory(\n selectDistinct,\n []\n );\n\n useEffect(\n () => () => {\n distinctTable?.close();\n },\n [distinctTable]\n );\n\n return { distinctTable, error, isError, isLoading };\n}\n"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAE9C,SAASC,iBAAiB,QAAQ,wBAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsB,CAC5CC,KAA+B,EAE/B;EAAA,kCADGC,WAAW;IAAXA,WAAW;EAAA;EAEd,IAAMC,cAAc,GAAGN,WAAW,iCAChC;IAAA;IAAA,gCAAYI,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,cAAc,CAACF,KAAK,CAACG,WAAW,CAACF,WAAW,CAAC,CAAC,yEAAI,IAAI;EAAA;EACzE;EACA;EACA,CAACD,KAAK,EAAE,GAAGC,WAAW,CAAC,CACxB;EAED,IAAM;IAAEG,IAAI,EAAEC,aAAa;IAAEC,KAAK;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAGV,iBAAiB,CAC1EI,cAAc,EACd,EAAE,CACH;EAEDL,SAAS,CACP,MAAM,MAAM;IACVQ,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,KAAK,EAAE;EACxB,CAAC,EACD,CAACJ,aAAa,CAAC,CAChB;EAED,OAAO;IAAEA,aAAa;IAAEC,KAAK;IAAEC,OAAO;IAAEC;EAAU,CAAC;AACrD"}
1
+ {"version":3,"file":"useSelectDistinctTable.js","names":["useCallback","useEffect","usePromiseFactory","useSelectDistinctTable","table","columnNames","selectDistinct","findColumns","data","distinctTable","error","isError","isLoading","close"],"sources":["../src/useSelectDistinctTable.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport { Table, TreeTable } from '@deephaven/jsapi-types';\nimport { usePromiseFactory } from '@deephaven/react-hooks';\n\n/**\n * Creates and subscribes to a `selectDistinct` derived table and unsubscribes\n * on unmount.\n * @param table The table to call `selectDistinct` on.\n * @param columnNames The list of column names to pass to `selectDistinct`.\n */\nexport default function useSelectDistinctTable(\n table: Table | TreeTable | null,\n ...columnNames: string[]\n) {\n const selectDistinct = useCallback(\n async () => table?.selectDistinct(table.findColumns(columnNames)) ?? null,\n // Disabling the exhaustive checks due to the spreading of `columnNames`\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table, ...columnNames]\n );\n\n const { data: distinctTable, error, isError, isLoading } = usePromiseFactory(\n selectDistinct,\n []\n );\n\n useEffect(\n () => () => {\n distinctTable?.close();\n },\n [distinctTable]\n );\n\n return { distinctTable, error, isError, isLoading };\n}\n"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAE9C,SAASC,iBAAiB,QAAQ,wBAAwB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsB,CAC5CC,KAA+B,EAE/B;EAAA,kCADGC,WAAW;IAAXA,WAAW;EAAA;EAEd,IAAMC,cAAc,GAAGN,WAAW,iCAChC;IAAA;IAAA,gCAAYI,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,cAAc,CAACF,KAAK,CAACG,WAAW,CAACF,WAAW,CAAC,CAAC,yEAAI,IAAI;EAAA;EACzE;EACA;EACA,CAACD,KAAK,EAAE,GAAGC,WAAW,CAAC,CACxB;EAED,IAAM;IAAEG,IAAI,EAAEC,aAAa;IAAEC,KAAK;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAGV,iBAAiB,CAC1EI,cAAc,EACd,EAAE,CACH;EAEDL,SAAS,CACP,MAAM,MAAM;IACVQ,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,KAAK,EAAE;EACxB,CAAC,EACD,CAACJ,aAAa,CAAC,CAChB;EAED,OAAO;IAAEA,aAAa;IAAEC,KAAK;IAAEC,OAAO;IAAEC;EAAU,CAAC;AACrD"}
@@ -1,4 +1,4 @@
1
- import { Table, TreeTable } from '@deephaven/jsapi-shim';
1
+ import { Table, TreeTable } from '@deephaven/jsapi-types';
2
2
  /**
3
3
  * Creates a callback function that will set a Table viewport. The callback has
4
4
  * a closure over the Table, a desired viewport size, and additional padding.
@@ -1 +1 @@
1
- {"version":3,"file":"useSetPaddedViewportCallback.d.ts","sourceRoot":"","sources":["../src/useSetPaddedViewportCallback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,EAC/B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,cAGgB,MAAM,UAW9C"}
1
+ {"version":3,"file":"useSetPaddedViewportCallback.d.ts","sourceRoot":"","sources":["../src/useSetPaddedViewportCallback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,EAC/B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,cAGgB,MAAM,UAW9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSetPaddedViewportCallback.js","names":["useCallback","getSize","padFirstAndLastRow","useSetPaddedViewportCallback","table","viewportSize","viewportPadding","setPaddedViewport","firstRow","first","last","setViewport"],"sources":["../src/useSetPaddedViewportCallback.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { Table, TreeTable } from '@deephaven/jsapi-shim';\nimport { getSize, padFirstAndLastRow } from '@deephaven/jsapi-utils';\n\n/**\n * Creates a callback function that will set a Table viewport. The callback has\n * a closure over the Table, a desired viewport size, and additional padding.\n * These will be combined with a first row index passed to the callback to\n * calculate the final viewport.\n * @param table Table to call `setViewport` on.\n * @param viewportSize The desired viewport size.\n * @param viewportPadding Padding to add before and after the viewport.\n * @returns A callback function for setting the viewport.\n */\nexport default function useSetPaddedViewportCallback(\n table: Table | TreeTable | null,\n viewportSize: number,\n viewportPadding: number\n) {\n return useCallback(\n function setPaddedViewport(firstRow: number) {\n const [first, last] = padFirstAndLastRow(\n firstRow,\n viewportSize,\n viewportPadding,\n getSize(table)\n );\n table?.setViewport(first, last);\n },\n [table, viewportPadding, viewportSize]\n );\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AAEnC,SAASC,OAAO,EAAEC,kBAAkB,QAAQ,wBAAwB;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAA4B,CAClDC,KAA+B,EAC/BC,YAAoB,EACpBC,eAAuB,EACvB;EACA,OAAON,WAAW,CAChB,SAASO,iBAAiB,CAACC,QAAgB,EAAE;IAC3C,IAAM,CAACC,KAAK,EAAEC,IAAI,CAAC,GAAGR,kBAAkB,CACtCM,QAAQ,EACRH,YAAY,EACZC,eAAe,EACfL,OAAO,CAACG,KAAK,CAAC,CACf;IACDA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,WAAW,CAACF,KAAK,EAAEC,IAAI,CAAC;EACjC,CAAC,EACD,CAACN,KAAK,EAAEE,eAAe,EAAED,YAAY,CAAC,CACvC;AACH"}
1
+ {"version":3,"file":"useSetPaddedViewportCallback.js","names":["useCallback","getSize","padFirstAndLastRow","useSetPaddedViewportCallback","table","viewportSize","viewportPadding","setPaddedViewport","firstRow","first","last","setViewport"],"sources":["../src/useSetPaddedViewportCallback.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { Table, TreeTable } from '@deephaven/jsapi-types';\nimport { getSize, padFirstAndLastRow } from '@deephaven/jsapi-utils';\n\n/**\n * Creates a callback function that will set a Table viewport. The callback has\n * a closure over the Table, a desired viewport size, and additional padding.\n * These will be combined with a first row index passed to the callback to\n * calculate the final viewport.\n * @param table Table to call `setViewport` on.\n * @param viewportSize The desired viewport size.\n * @param viewportPadding Padding to add before and after the viewport.\n * @returns A callback function for setting the viewport.\n */\nexport default function useSetPaddedViewportCallback(\n table: Table | TreeTable | null,\n viewportSize: number,\n viewportPadding: number\n) {\n return useCallback(\n function setPaddedViewport(firstRow: number) {\n const [first, last] = padFirstAndLastRow(\n firstRow,\n viewportSize,\n viewportPadding,\n getSize(table)\n );\n table?.setViewport(first, last);\n },\n [table, viewportPadding, viewportSize]\n );\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AAEnC,SAASC,OAAO,EAAEC,kBAAkB,QAAQ,wBAAwB;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,4BAA4B,CAClDC,KAA+B,EAC/BC,YAAoB,EACpBC,eAAuB,EACvB;EACA,OAAON,WAAW,CAChB,SAASO,iBAAiB,CAACC,QAAgB,EAAE;IAC3C,IAAM,CAACC,KAAK,EAAEC,IAAI,CAAC,GAAGR,kBAAkB,CACtCM,QAAQ,EACRH,YAAY,EACZC,eAAe,EACfL,OAAO,CAACG,KAAK,CAAC,CACf;IACDA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,WAAW,CAACF,KAAK,EAAEC,IAAI,CAAC;EACjC,CAAC,EACD,CAACN,KAAK,EAAEE,eAAe,EAAED,YAAY,CAAC,CACvC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../src/useTable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAO,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,QAAA,MAAM,QAAQ,UACL,KAAK,GAAG,SAAS,YACd,MAAM,WACP,MAAM,gBACD,MAAM,EAAE;aAEb,MAAM,EAAE,GAAG,SAAS;UACvB,OAAO,EAAE,EAAE;WACV,KAAK,GAAG,IAAI;CA0DpB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../src/useTable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAO,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAQ5D,QAAA,MAAM,QAAQ,UACL,KAAK,GAAG,SAAS,YACd,MAAM,WACP,MAAM,gBACD,MAAM,EAAE;aAEb,MAAM,EAAE,GAAG,SAAS;UACvB,OAAO,EAAE,EAAE;WACV,KAAK,GAAG,IAAI;CA2DpB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
package/dist/useTable.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
- import dh from '@deephaven/jsapi-shim';
2
+ import { useApi } from '@deephaven/jsapi-bootstrap';
3
3
  import Log from '@deephaven/log';
4
4
  import useTableListener from "./useTableListener.js";
5
5
  import ColumnNameError from "./ColumnNameError.js";
6
6
  import TableDisconnectError from "./TableDisconnectError.js";
7
7
  var log = Log.module('useTable');
8
8
  var useTable = (table, firstRow, lastRow, columnNames) => {
9
+ var dh = useApi();
9
10
  var [columns, setColumns] = useState(undefined);
10
11
  var [data, setData] = useState([]);
11
12
  var [columnError, setColumnError] = useState(null);
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.js","names":["useCallback","useEffect","useState","dh","Log","useTableListener","ColumnNameError","TableDisconnectError","log","module","useTable","table","firstRow","lastRow","columnNames","columns","setColumns","undefined","data","setData","columnError","setColumnError","tableError","setTableError","findColumns","e","error","debug2","setViewport","handleUpdate","detail","viewportData","map","column","rows","r","get","handleDisconnect","handleReconnect","Table","EVENT_UPDATED","EVENT_DISCONNECT","EVENT_RECONNECT"],"sources":["../src/useTable.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport dh from '@deephaven/jsapi-shim';\nimport { Column, Row, Table } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport useTableListener from './useTableListener';\nimport ColumnNameError from './ColumnNameError';\nimport TableDisconnectError from './TableDisconnectError';\n\nconst log = Log.module('useTable');\n\nconst useTable = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnNames?: string[]\n): {\n columns: Column[] | undefined;\n data: unknown[][];\n error: Error | null;\n} => {\n const [columns, setColumns] = useState<Column[] | undefined>(undefined);\n const [data, setData] = useState<unknown[][]>([]);\n const [columnError, setColumnError] = useState<Error | null>(null);\n const [tableError, setTableError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table?.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table?.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(`Column not found`, e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n\n const handleUpdate = useCallback(\n ({ detail }) => {\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n const viewportData = columns.map(column =>\n (detail.rows as Row[]).map(r => r.get(column))\n );\n setData(viewportData);\n },\n [columns]\n );\n\n const handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n\n const handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n\n return { columns, data, error: tableError ?? columnError };\n};\n\nexport default useTable;\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTable.js","names":["useCallback","useEffect","useState","useApi","Log","useTableListener","ColumnNameError","TableDisconnectError","log","module","useTable","table","firstRow","lastRow","columnNames","dh","columns","setColumns","undefined","data","setData","columnError","setColumnError","tableError","setTableError","findColumns","e","error","debug2","setViewport","handleUpdate","detail","viewportData","map","column","rows","r","get","handleDisconnect","handleReconnect","Table","EVENT_UPDATED","EVENT_DISCONNECT","EVENT_RECONNECT"],"sources":["../src/useTable.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Column, Row, Table } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport useTableListener from './useTableListener';\nimport ColumnNameError from './ColumnNameError';\nimport TableDisconnectError from './TableDisconnectError';\n\nconst log = Log.module('useTable');\n\nconst useTable = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnNames?: string[]\n): {\n columns: Column[] | undefined;\n data: unknown[][];\n error: Error | null;\n} => {\n const dh = useApi();\n const [columns, setColumns] = useState<Column[] | undefined>(undefined);\n const [data, setData] = useState<unknown[][]>([]);\n const [columnError, setColumnError] = useState<Error | null>(null);\n const [tableError, setTableError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table?.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table?.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(`Column not found`, e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n\n const handleUpdate = useCallback(\n ({ detail }) => {\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n const viewportData = columns.map(column =>\n (detail.rows as Row[]).map(r => r.get(column))\n );\n setData(viewportData);\n },\n [columns]\n );\n\n const handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n\n const handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n\n return { columns, data, error: tableError ?? columnError };\n};\n\nexport default useTable;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ListData } from '@react-stately/data';
2
- import { Table, TreeTable } from '@deephaven/jsapi-shim';
2
+ import { Table, TreeTable } from '@deephaven/jsapi-types';
3
3
  import { KeyedItem, RowDeserializer } from '@deephaven/jsapi-utils';
4
4
  export interface UseViewportDataProps<T> {
5
5
  table: Table | TreeTable | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useViewportData.d.ts","sourceRoot":"","sources":["../src/useViewportData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,eAAe,EAKhB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,gEAAgE;IAChE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,EAAE,EACzC,KAAK,EACL,YAAiB,EACjB,eAAoB,EACpB,cAAuC,GACxC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA4BpD"}
1
+ {"version":3,"file":"useViewportData.d.ts","sourceRoot":"","sources":["../src/useViewportData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,eAAe,EAKhB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,gEAAgE;IAChE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,EAAE,EACzC,KAAK,EACL,YAAiB,EACjB,eAAoB,EACpB,cAAuC,GACxC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA4BpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useViewportData.js","names":["useEffect","createOnTableUpdatedHandler","defaultRowDeserializer","getSize","isClosed","useInitializeViewportData","useSetPaddedViewportCallback","useTableListener","useViewportData","table","viewportSize","viewportPadding","deserializeRow","viewportData","setViewport","dh","Table","EVENT_UPDATED","size"],"sources":["../src/useViewportData.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { ListData } from '@react-stately/data';\nimport { Table, TreeTable } from '@deephaven/jsapi-shim';\nimport {\n KeyedItem,\n RowDeserializer,\n createOnTableUpdatedHandler,\n defaultRowDeserializer,\n getSize,\n isClosed,\n} from '@deephaven/jsapi-utils';\nimport useInitializeViewportData from './useInitializeViewportData';\nimport useSetPaddedViewportCallback from './useSetPaddedViewportCallback';\nimport useTableListener from './useTableListener';\n\nexport interface UseViewportDataProps<T> {\n table: Table | TreeTable | null;\n viewportSize?: number;\n viewportPadding?: number;\n deserializeRow?: RowDeserializer<T>;\n}\n\nexport interface UseViewportDataResult<T> {\n /** Manages deserialized row items associated with a DH Table */\n viewportData: ListData<KeyedItem<T>>;\n /** Size of the underlying Table */\n size: number;\n /** Set the viewport of the Table */\n setViewport: (firstRow: number) => void;\n}\n\n/**\n * Sets up state management for windowed Table viewports. Returns a ListData\n * instance for managing items associated with the Table + a `setViewport`\n * callback for changing the current viewport.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table\n * @param viewportSize\n * @param viewportPadding\n * @returns An object for managing Table viewport state.\n */\nexport default function useViewportData<T>({\n table,\n viewportSize = 10,\n viewportPadding = 50,\n deserializeRow = defaultRowDeserializer,\n}: UseViewportDataProps<T>): UseViewportDataResult<T> {\n const viewportData = useInitializeViewportData<T>(table);\n\n const setViewport = useSetPaddedViewportCallback(\n table,\n viewportSize,\n viewportPadding\n );\n\n useTableListener(\n table,\n dh.Table.EVENT_UPDATED,\n createOnTableUpdatedHandler(table, viewportData, deserializeRow)\n );\n\n useEffect(() => {\n if (table && !isClosed(table)) {\n // Hydrate the viewport with real data. This will fetch data from index\n // 0 to the end of the viewport + padding.\n setViewport(0);\n }\n }, [table, setViewport]);\n\n return {\n viewportData,\n size: getSize(table),\n setViewport,\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAGjC,SAGEC,2BAA2B,EAC3BC,sBAAsB,EACtBC,OAAO,EACPC,QAAQ,QACH,wBAAwB;AAAC,OACzBC,yBAAyB;AAAA,OACzBC,4BAA4B;AAAA,OAC5BC,gBAAgB;AAkBvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAe,OAKe;EAAA,IALX;IACzCC,KAAK;IACLC,YAAY,GAAG,EAAE;IACjBC,eAAe,GAAG,EAAE;IACpBC,cAAc,GAAGV;EACM,CAAC;EACxB,IAAMW,YAAY,GAAGR,yBAAyB,CAAII,KAAK,CAAC;EAExD,IAAMK,WAAW,GAAGR,4BAA4B,CAC9CG,KAAK,EACLC,YAAY,EACZC,eAAe,CAChB;EAEDJ,gBAAgB,CACdE,KAAK,EACLM,EAAE,CAACC,KAAK,CAACC,aAAa,EACtBhB,2BAA2B,CAACQ,KAAK,EAAEI,YAAY,EAAED,cAAc,CAAC,CACjE;EAEDZ,SAAS,CAAC,MAAM;IACd,IAAIS,KAAK,IAAI,CAACL,QAAQ,CAACK,KAAK,CAAC,EAAE;MAC7B;MACA;MACAK,WAAW,CAAC,CAAC,CAAC;IAChB;EACF,CAAC,EAAE,CAACL,KAAK,EAAEK,WAAW,CAAC,CAAC;EAExB,OAAO;IACLD,YAAY;IACZK,IAAI,EAAEf,OAAO,CAACM,KAAK,CAAC;IACpBK;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"useViewportData.js","names":["useEffect","createOnTableUpdatedHandler","defaultRowDeserializer","getSize","isClosed","useInitializeViewportData","useSetPaddedViewportCallback","useTableListener","useViewportData","table","viewportSize","viewportPadding","deserializeRow","viewportData","setViewport","dh","Table","EVENT_UPDATED","size"],"sources":["../src/useViewportData.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { ListData } from '@react-stately/data';\nimport { Table, TreeTable } from '@deephaven/jsapi-types';\nimport {\n KeyedItem,\n RowDeserializer,\n createOnTableUpdatedHandler,\n defaultRowDeserializer,\n getSize,\n isClosed,\n} from '@deephaven/jsapi-utils';\nimport useInitializeViewportData from './useInitializeViewportData';\nimport useSetPaddedViewportCallback from './useSetPaddedViewportCallback';\nimport useTableListener from './useTableListener';\n\nexport interface UseViewportDataProps<T> {\n table: Table | TreeTable | null;\n viewportSize?: number;\n viewportPadding?: number;\n deserializeRow?: RowDeserializer<T>;\n}\n\nexport interface UseViewportDataResult<T> {\n /** Manages deserialized row items associated with a DH Table */\n viewportData: ListData<KeyedItem<T>>;\n /** Size of the underlying Table */\n size: number;\n /** Set the viewport of the Table */\n setViewport: (firstRow: number) => void;\n}\n\n/**\n * Sets up state management for windowed Table viewports. Returns a ListData\n * instance for managing items associated with the Table + a `setViewport`\n * callback for changing the current viewport.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table\n * @param viewportSize\n * @param viewportPadding\n * @returns An object for managing Table viewport state.\n */\nexport default function useViewportData<T>({\n table,\n viewportSize = 10,\n viewportPadding = 50,\n deserializeRow = defaultRowDeserializer,\n}: UseViewportDataProps<T>): UseViewportDataResult<T> {\n const viewportData = useInitializeViewportData<T>(table);\n\n const setViewport = useSetPaddedViewportCallback(\n table,\n viewportSize,\n viewportPadding\n );\n\n useTableListener(\n table,\n dh.Table.EVENT_UPDATED,\n createOnTableUpdatedHandler(table, viewportData, deserializeRow)\n );\n\n useEffect(() => {\n if (table && !isClosed(table)) {\n // Hydrate the viewport with real data. This will fetch data from index\n // 0 to the end of the viewport + padding.\n setViewport(0);\n }\n }, [table, setViewport]);\n\n return {\n viewportData,\n size: getSize(table),\n setViewport,\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAGjC,SAGEC,2BAA2B,EAC3BC,sBAAsB,EACtBC,OAAO,EACPC,QAAQ,QACH,wBAAwB;AAAC,OACzBC,yBAAyB;AAAA,OACzBC,4BAA4B;AAAA,OAC5BC,gBAAgB;AAkBvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAe,OAKe;EAAA,IALX;IACzCC,KAAK;IACLC,YAAY,GAAG,EAAE;IACjBC,eAAe,GAAG,EAAE;IACpBC,cAAc,GAAGV;EACM,CAAC;EACxB,IAAMW,YAAY,GAAGR,yBAAyB,CAAII,KAAK,CAAC;EAExD,IAAMK,WAAW,GAAGR,4BAA4B,CAC9CG,KAAK,EACLC,YAAY,EACZC,eAAe,CAChB;EAEDJ,gBAAgB,CACdE,KAAK,EACLM,EAAE,CAACC,KAAK,CAACC,aAAa,EACtBhB,2BAA2B,CAACQ,KAAK,EAAEI,YAAY,EAAED,cAAc,CAAC,CACjE;EAEDZ,SAAS,CAAC,MAAM;IACd,IAAIS,KAAK,IAAI,CAACL,QAAQ,CAACK,KAAK,CAAC,EAAE;MAC7B;MACA;MACAK,WAAW,CAAC,CAAC,CAAC;IAChB;EACF,CAAC,EAAE,CAACL,KAAK,EAAEK,WAAW,CAAC,CAAC;EAExB,OAAO;IACLD,YAAY;IACZK,IAAI,EAAEf,OAAO,CAACM,KAAK,CAAC;IACpBK;EACF,CAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/jsapi-components",
3
- "version": "0.37.4-beta.0+33c9673e",
3
+ "version": "0.37.4-logout.1+055523d8",
4
4
  "description": "Deephaven JSAPI Components",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,20 +22,22 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/components": "^0.37.4-beta.0+33c9673e",
26
- "@deephaven/jsapi-bootstrap": "^0.37.4-beta.0+33c9673e",
27
- "@deephaven/jsapi-shim": "^0.37.4-beta.0+33c9673e",
28
- "@deephaven/jsapi-types": "^0.37.4-beta.0+33c9673e",
29
- "@deephaven/jsapi-utils": "^0.37.4-beta.0+33c9673e",
30
- "@deephaven/log": "^0.37.4-beta.0+33c9673e",
31
- "@deephaven/react-hooks": "^0.37.4-beta.0+33c9673e",
32
- "@deephaven/utils": "^0.37.4-beta.0+33c9673e",
25
+ "@deephaven/components": "^0.37.4-logout.1+055523d8",
26
+ "@deephaven/jsapi-bootstrap": "^0.37.4-logout.1+055523d8",
27
+ "@deephaven/jsapi-types": "^0.37.4-logout.1+055523d8",
28
+ "@deephaven/jsapi-utils": "^0.37.4-logout.1+055523d8",
29
+ "@deephaven/log": "^0.37.4-logout.1+055523d8",
30
+ "@deephaven/react-hooks": "^0.37.4-logout.1+055523d8",
31
+ "@deephaven/utils": "^0.37.4-logout.1+055523d8",
33
32
  "@react-stately/data": "^3.9.1",
33
+ "@types/js-cookie": "^3.0.3",
34
34
  "classnames": "^2.3.2",
35
+ "js-cookie": "^3.0.5",
35
36
  "prop-types": "^15.8.1"
36
37
  },
37
38
  "devDependencies": {
38
- "@deephaven/tsconfig": "^0.37.4-beta.0+33c9673e",
39
+ "@deephaven/jsapi-shim": "^0.37.4-logout.1+055523d8",
40
+ "@deephaven/tsconfig": "^0.37.4-logout.1+055523d8",
39
41
  "@testing-library/react-hooks": "^8.0.1",
40
42
  "react-test-renderer": "^17.0.2"
41
43
  },
@@ -51,5 +53,5 @@
51
53
  "publishConfig": {
52
54
  "access": "public"
53
55
  },
54
- "gitHead": "33c9673e1f523f9dba1f06d13b4a2aa5441c0679"
56
+ "gitHead": "055523d81e65b5f0ef2d2515bcfe091f4a3391de"
55
57
  }