@deephaven/jsapi-bootstrap 0.60.1-beta.5 → 0.60.1-object-fetcher.6

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.
@@ -1,14 +1,15 @@
1
1
  import React from 'react';
2
+ import { VariableDescriptor } from '@deephaven/jsapi-types';
2
3
  type DeferredApiBootstrapProps = React.PropsWithChildren<{
3
4
  onError?: (error: unknown) => void;
4
5
  /**
5
6
  * Options to use when fetching the deferred API.
6
7
  */
7
- options?: Record<string, unknown>;
8
+ descriptor: VariableDescriptor;
8
9
  }>;
9
10
  /**
10
11
  * Does not render children until the deferred API is resolved.
11
12
  */
12
- export declare const DeferredApiBootstrap: React.MemoExoticComponent<({ children, onError, options, }: DeferredApiBootstrapProps) => JSX.Element | null>;
13
+ export declare const DeferredApiBootstrap: React.MemoExoticComponent<({ children, onError, descriptor, }: DeferredApiBootstrapProps) => JSX.Element | null>;
13
14
  export default DeferredApiBootstrap;
14
15
  //# sourceMappingURL=DeferredApiBootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeferredApiBootstrap.d.ts","sourceRoot":"","sources":["../src/DeferredApiBootstrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,8DAK5B,yBAAyB,KAAG,WAAW,GAAG,IAAI,CAYlD,CAAC;AAIF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"DeferredApiBootstrap.d.ts","sourceRoot":"","sources":["../src/DeferredApiBootstrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,KAAK,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,UAAU,EAAE,kBAAkB,CAAC;CAChC,CAAC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,iEAK5B,yBAAyB,KAAG,WAAW,GAAG,IAAI,CAYlD,CAAC;AAIF,eAAe,oBAAoB,CAAC"}
@@ -9,9 +9,9 @@ export var DeferredApiBootstrap = /*#__PURE__*/React.memo(_ref => {
9
9
  var {
10
10
  children,
11
11
  onError,
12
- options
12
+ descriptor
13
13
  } = _ref;
14
- var [api, apiError] = useDeferredApi(options);
14
+ var [api, apiError] = useDeferredApi(descriptor);
15
15
  if (apiError != null) {
16
16
  onError === null || onError === void 0 ? void 0 : onError(apiError);
17
17
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"DeferredApiBootstrap.js","names":["React","useDeferredApi","ApiContext","jsx","_jsx","DeferredApiBootstrap","memo","_ref","children","onError","options","api","apiError","Provider","value","displayName"],"sources":["../src/DeferredApiBootstrap.tsx"],"sourcesContent":["import React from 'react';\nimport useDeferredApi from './useDeferredApi';\nimport { ApiContext } from './ApiBootstrap';\n\ntype DeferredApiBootstrapProps = React.PropsWithChildren<{\n onError?: (error: unknown) => void;\n /**\n * Options to use when fetching the deferred API.\n */\n options?: Record<string, unknown>;\n}>;\n\n/**\n * Does not render children until the deferred API is resolved.\n */\nexport const DeferredApiBootstrap = React.memo(\n ({\n children,\n onError,\n options,\n }: DeferredApiBootstrapProps): JSX.Element | null => {\n const [api, apiError] = useDeferredApi(options);\n if (apiError != null) {\n onError?.(apiError);\n return null;\n }\n if (api == null) {\n // Still waiting for the API to load\n return null;\n }\n return <ApiContext.Provider value={api}>{children}</ApiContext.Provider>;\n }\n);\n\nDeferredApiBootstrap.displayName = 'DeferredApiBootstrap';\n\nexport default DeferredApiBootstrap;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAAC,OACnBC,cAAc;AAAA,SACZC,UAAU;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAUnB;AACA;AACA;AACA,OAAO,IAAMC,oBAAoB,gBAAGL,KAAK,CAACM,IAAI,CAC5CC,IAAA,IAIqD;EAAA,IAJpD;IACCC,QAAQ;IACRC,OAAO;IACPC;EACyB,CAAC,GAAAH,IAAA;EAC1B,IAAM,CAACI,GAAG,EAAEC,QAAQ,CAAC,GAAGX,cAAc,CAACS,OAAO,CAAC;EAC/C,IAAIE,QAAQ,IAAI,IAAI,EAAE;IACpBH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGG,QAAQ,CAAC;IACnB,OAAO,IAAI;EACb;EACA,IAAID,GAAG,IAAI,IAAI,EAAE;IACf;IACA,OAAO,IAAI;EACb;EACA,oBAAOP,IAAA,CAACF,UAAU,CAACW,QAAQ;IAACC,KAAK,EAAEH,GAAI;IAAAH,QAAA,EAAEA;EAAQ,CAAsB,CAAC;AAC1E,CACF,CAAC;AAEDH,oBAAoB,CAACU,WAAW,GAAG,sBAAsB;AAEzD,eAAeV,oBAAoB"}
1
+ {"version":3,"file":"DeferredApiBootstrap.js","names":["React","useDeferredApi","ApiContext","jsx","_jsx","DeferredApiBootstrap","memo","_ref","children","onError","descriptor","api","apiError","Provider","value","displayName"],"sources":["../src/DeferredApiBootstrap.tsx"],"sourcesContent":["import React from 'react';\nimport { VariableDescriptor } from '@deephaven/jsapi-types';\nimport useDeferredApi from './useDeferredApi';\nimport { ApiContext } from './ApiBootstrap';\n\ntype DeferredApiBootstrapProps = React.PropsWithChildren<{\n onError?: (error: unknown) => void;\n /**\n * Options to use when fetching the deferred API.\n */\n descriptor: VariableDescriptor;\n}>;\n\n/**\n * Does not render children until the deferred API is resolved.\n */\nexport const DeferredApiBootstrap = React.memo(\n ({\n children,\n onError,\n descriptor,\n }: DeferredApiBootstrapProps): JSX.Element | null => {\n const [api, apiError] = useDeferredApi(descriptor);\n if (apiError != null) {\n onError?.(apiError);\n return null;\n }\n if (api == null) {\n // Still waiting for the API to load\n return null;\n }\n return <ApiContext.Provider value={api}>{children}</ApiContext.Provider>;\n }\n);\n\nDeferredApiBootstrap.displayName = 'DeferredApiBootstrap';\n\nexport default DeferredApiBootstrap;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAAC,OAEnBC,cAAc;AAAA,SACZC,UAAU;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAUnB;AACA;AACA;AACA,OAAO,IAAMC,oBAAoB,gBAAGL,KAAK,CAACM,IAAI,CAC5CC,IAAA,IAIqD;EAAA,IAJpD;IACCC,QAAQ;IACRC,OAAO;IACPC;EACyB,CAAC,GAAAH,IAAA;EAC1B,IAAM,CAACI,GAAG,EAAEC,QAAQ,CAAC,GAAGX,cAAc,CAACS,UAAU,CAAC;EAClD,IAAIE,QAAQ,IAAI,IAAI,EAAE;IACpBH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGG,QAAQ,CAAC;IACnB,OAAO,IAAI;EACb;EACA,IAAID,GAAG,IAAI,IAAI,EAAE;IACf;IACA,OAAO,IAAI;EACb;EACA,oBAAOP,IAAA,CAACF,UAAU,CAACW,QAAQ;IAACC,KAAK,EAAEH,GAAI;IAAAH,QAAA,EAAEA;EAAQ,CAAsB,CAAC;AAC1E,CACF,CAAC;AAEDH,oBAAoB,CAACU,WAAW,GAAG,sBAAsB;AAEzD,eAAeV,oBAAoB"}
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from './DeferredApiBootstrap';
4
4
  export * from './useApi';
5
5
  export * from './useClient';
6
6
  export * from './useDeferredApi';
7
+ export * from './useObjectFetcher';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -4,4 +4,5 @@ export * from "./DeferredApiBootstrap.js";
4
4
  export * from "./useApi.js";
5
5
  export * from "./useClient.js";
6
6
  export * from "./useDeferredApi.js";
7
+ export * from "./useObjectFetcher.js";
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from './ApiBootstrap';\nexport * from './ClientBootstrap';\nexport * from './DeferredApiBootstrap';\nexport * from './useApi';\nexport * from './useClient';\nexport * from './useDeferredApi';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from './ApiBootstrap';\nexport * from './ClientBootstrap';\nexport * from './DeferredApiBootstrap';\nexport * from './useApi';\nexport * from './useClient';\nexport * from './useDeferredApi';\nexport * from './useObjectFetcher';\n"],"mappings":""}
@@ -1,14 +1,18 @@
1
1
  /// <reference types="react" />
2
- import type { dh as DhType } from '@deephaven/jsapi-types';
3
- /** Options for retrieving the deferred */
4
- export type DeferredApiOptions = Record<string, unknown>;
5
- export type DeferredApiFetcher = (options?: DeferredApiOptions) => Promise<DhType>;
2
+ import type { dh as DhType, VariableDescriptor } from '@deephaven/jsapi-types';
3
+ /**
4
+ * Function to fetch an API based on a provided descriptor object.
5
+ * Depending on the context there may be more properties on the descriptor,
6
+ * providing more information about the object, such as a session ID.
7
+ */
8
+ export type DeferredApiFetcher = (descriptor?: VariableDescriptor) => Promise<DhType>;
6
9
  export declare const DeferredApiContext: import("react").Context<DhType | DeferredApiFetcher | null>;
7
10
  /**
8
- * Retrieve the API for the current context, given the metadata provided.
11
+ * Retrieve the API for the current context, given the descriptor provided.
9
12
  * The API may need to be loaded, and will return `null` until it is ready.
13
+ * @param descriptor The object descriptor to use to fetch the API
10
14
  * @returns A tuple with the API instance, and an error if one occurred.
11
15
  */
12
- export declare function useDeferredApi(options?: Record<string, unknown>): [DhType | null, unknown | null];
16
+ export declare function useDeferredApi(descriptor: VariableDescriptor): [DhType | null, unknown | null];
13
17
  export default useDeferredApi;
14
18
  //# sourceMappingURL=useDeferredApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDeferredApi.d.ts","sourceRoot":"","sources":["../src/useDeferredApi.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,0CAA0C;AAC1C,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,eAAO,MAAM,kBAAkB,6DAExB,CAAC;AAER;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,CAkDjC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"useDeferredApi.d.ts","sourceRoot":"","sources":["../src/useDeferredApi.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG/E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,UAAU,CAAC,EAAE,kBAAkB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,eAAO,MAAM,kBAAkB,6DAExB,CAAC;AAER;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,kBAAkB,GAC7B,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,CAkDjC;AAED,eAAe,cAAc,CAAC"}
@@ -2,15 +2,20 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
2
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
3
3
  import { createContext, useContext, useEffect, useState } from 'react';
4
4
  import { ApiContext } from "./ApiBootstrap.js";
5
- /** Options for retrieving the deferred */
5
+ /**
6
+ * Function to fetch an API based on a provided descriptor object.
7
+ * Depending on the context there may be more properties on the descriptor,
8
+ * providing more information about the object, such as a session ID.
9
+ */
6
10
  export var DeferredApiContext = /*#__PURE__*/createContext(null);
7
11
 
8
12
  /**
9
- * Retrieve the API for the current context, given the metadata provided.
13
+ * Retrieve the API for the current context, given the descriptor provided.
10
14
  * The API may need to be loaded, and will return `null` until it is ready.
15
+ * @param descriptor The object descriptor to use to fetch the API
11
16
  * @returns A tuple with the API instance, and an error if one occurred.
12
17
  */
13
- export function useDeferredApi(options) {
18
+ export function useDeferredApi(descriptor) {
14
19
  var [api, setApi] = useState(null);
15
20
  var [error, setError] = useState(null);
16
21
  var deferredApi = useContext(DeferredApiContext);
@@ -34,7 +39,7 @@ export function useDeferredApi(options) {
34
39
  _loadApi = _asyncToGenerator(function* () {
35
40
  if (typeof deferredApi === 'function') {
36
41
  try {
37
- var newApi = yield deferredApi(options);
42
+ var newApi = yield deferredApi(descriptor);
38
43
  if (!isCancelled) {
39
44
  setApi(newApi);
40
45
  setError(null);
@@ -55,7 +60,7 @@ export function useDeferredApi(options) {
55
60
  return () => {
56
61
  isCancelled = true;
57
62
  };
58
- }, [contextApi, deferredApi, options]);
63
+ }, [contextApi, deferredApi, descriptor]);
59
64
  return [api, error];
60
65
  }
61
66
  export default useDeferredApi;
@@ -1 +1 @@
1
- {"version":3,"file":"useDeferredApi.js","names":["createContext","useContext","useEffect","useState","ApiContext","DeferredApiContext","useDeferredApi","options","api","setApi","error","setError","deferredApi","contextApi","Error","isCancelled","loadApi","_loadApi","apply","arguments","_asyncToGenerator","newApi","e"],"sources":["../src/useDeferredApi.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState } from 'react';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { ApiContext } from './ApiBootstrap';\n\n/** Options for retrieving the deferred */\nexport type DeferredApiOptions = Record<string, unknown>;\n\nexport type DeferredApiFetcher = (\n options?: DeferredApiOptions\n) => Promise<DhType>;\n\nexport const DeferredApiContext = createContext<\n DhType | DeferredApiFetcher | null\n>(null);\n\n/**\n * Retrieve the API for the current context, given the metadata provided.\n * The API may need to be loaded, and will return `null` until it is ready.\n * @returns A tuple with the API instance, and an error if one occurred.\n */\nexport function useDeferredApi(\n options?: Record<string, unknown>\n): [DhType | null, unknown | null] {\n const [api, setApi] = useState<DhType | null>(null);\n const [error, setError] = useState<unknown | null>(null);\n const deferredApi = useContext(DeferredApiContext);\n const contextApi = useContext(ApiContext);\n\n useEffect(() => {\n if (deferredApi == null) {\n if (contextApi != null) {\n setApi(contextApi);\n setError(null);\n return;\n }\n setApi(null);\n setError(\n new Error(\n 'No API available in useDeferredApi. Was code wrapped in ApiBootstrap or DeferredApiContext.Provider?'\n )\n );\n return;\n }\n let isCancelled = false;\n\n async function loadApi() {\n if (typeof deferredApi === 'function') {\n try {\n const newApi = await deferredApi(options);\n if (!isCancelled) {\n setApi(newApi);\n setError(null);\n }\n } catch (e) {\n if (!isCancelled) {\n setApi(null);\n setError(e);\n }\n }\n } else {\n setApi(deferredApi);\n }\n }\n\n loadApi();\n\n return () => {\n isCancelled = true;\n };\n }, [contextApi, deferredApi, options]);\n\n return [api, error];\n}\n\nexport default useDeferredApi;\n"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAAC,SAE9DC,UAAU;AAEnB;AAOA,OAAO,IAAMC,kBAAkB,gBAAGL,aAAa,CAE7C,IAAI,CAAC;;AAEP;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,cAAcA,CAC5BC,OAAiC,EACA;EACjC,IAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAGN,QAAQ,CAAgB,IAAI,CAAC;EACnD,IAAM,CAACO,KAAK,EAAEC,QAAQ,CAAC,GAAGR,QAAQ,CAAiB,IAAI,CAAC;EACxD,IAAMS,WAAW,GAAGX,UAAU,CAACI,kBAAkB,CAAC;EAClD,IAAMQ,UAAU,GAAGZ,UAAU,CAACG,UAAU,CAAC;EAEzCF,SAAS,CAAC,MAAM;IACd,IAAIU,WAAW,IAAI,IAAI,EAAE;MACvB,IAAIC,UAAU,IAAI,IAAI,EAAE;QACtBJ,MAAM,CAACI,UAAU,CAAC;QAClBF,QAAQ,CAAC,IAAI,CAAC;QACd;MACF;MACAF,MAAM,CAAC,IAAI,CAAC;MACZE,QAAQ,CACN,IAAIG,KAAK,CACP,sGACF,CACF,CAAC;MACD;IACF;IACA,IAAIC,WAAW,GAAG,KAAK;IAAC,SAETC,OAAOA,CAAA;MAAA,OAAAC,QAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,SAAA;MAAAA,QAAA,GAAAG,iBAAA,CAAtB,aAAyB;QACvB,IAAI,OAAOR,WAAW,KAAK,UAAU,EAAE;UACrC,IAAI;YACF,IAAMS,MAAM,SAAST,WAAW,CAACL,OAAO,CAAC;YACzC,IAAI,CAACQ,WAAW,EAAE;cAChBN,MAAM,CAACY,MAAM,CAAC;cACdV,QAAQ,CAAC,IAAI,CAAC;YAChB;UACF,CAAC,CAAC,OAAOW,CAAC,EAAE;YACV,IAAI,CAACP,WAAW,EAAE;cAChBN,MAAM,CAAC,IAAI,CAAC;cACZE,QAAQ,CAACW,CAAC,CAAC;YACb;UACF;QACF,CAAC,MAAM;UACLb,MAAM,CAACG,WAAW,CAAC;QACrB;MACF,CAAC;MAAA,OAAAK,QAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,OAAO,CAAC,CAAC;IAET,OAAO,MAAM;MACXD,WAAW,GAAG,IAAI;IACpB,CAAC;EACH,CAAC,EAAE,CAACF,UAAU,EAAED,WAAW,EAAEL,OAAO,CAAC,CAAC;EAEtC,OAAO,CAACC,GAAG,EAAEE,KAAK,CAAC;AACrB;AAEA,eAAeJ,cAAc"}
1
+ {"version":3,"file":"useDeferredApi.js","names":["createContext","useContext","useEffect","useState","ApiContext","DeferredApiContext","useDeferredApi","descriptor","api","setApi","error","setError","deferredApi","contextApi","Error","isCancelled","loadApi","_loadApi","apply","arguments","_asyncToGenerator","newApi","e"],"sources":["../src/useDeferredApi.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState } from 'react';\nimport type { dh as DhType, VariableDescriptor } from '@deephaven/jsapi-types';\nimport { ApiContext } from './ApiBootstrap';\n\n/**\n * Function to fetch an API based on a provided descriptor object.\n * Depending on the context there may be more properties on the descriptor,\n * providing more information about the object, such as a session ID.\n */\nexport type DeferredApiFetcher = (\n descriptor?: VariableDescriptor\n) => Promise<DhType>;\n\nexport const DeferredApiContext = createContext<\n DhType | DeferredApiFetcher | null\n>(null);\n\n/**\n * Retrieve the API for the current context, given the descriptor provided.\n * The API may need to be loaded, and will return `null` until it is ready.\n * @param descriptor The object descriptor to use to fetch the API\n * @returns A tuple with the API instance, and an error if one occurred.\n */\nexport function useDeferredApi(\n descriptor: VariableDescriptor\n): [DhType | null, unknown | null] {\n const [api, setApi] = useState<DhType | null>(null);\n const [error, setError] = useState<unknown | null>(null);\n const deferredApi = useContext(DeferredApiContext);\n const contextApi = useContext(ApiContext);\n\n useEffect(() => {\n if (deferredApi == null) {\n if (contextApi != null) {\n setApi(contextApi);\n setError(null);\n return;\n }\n setApi(null);\n setError(\n new Error(\n 'No API available in useDeferredApi. Was code wrapped in ApiBootstrap or DeferredApiContext.Provider?'\n )\n );\n return;\n }\n let isCancelled = false;\n\n async function loadApi() {\n if (typeof deferredApi === 'function') {\n try {\n const newApi = await deferredApi(descriptor);\n if (!isCancelled) {\n setApi(newApi);\n setError(null);\n }\n } catch (e) {\n if (!isCancelled) {\n setApi(null);\n setError(e);\n }\n }\n } else {\n setApi(deferredApi);\n }\n }\n\n loadApi();\n\n return () => {\n isCancelled = true;\n };\n }, [contextApi, deferredApi, descriptor]);\n\n return [api, error];\n}\n\nexport default useDeferredApi;\n"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAAC,SAE9DC,UAAU;AAEnB;AACA;AACA;AACA;AACA;AAKA,OAAO,IAAMC,kBAAkB,gBAAGL,aAAa,CAE7C,IAAI,CAAC;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,cAAcA,CAC5BC,UAA8B,EACG;EACjC,IAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAGN,QAAQ,CAAgB,IAAI,CAAC;EACnD,IAAM,CAACO,KAAK,EAAEC,QAAQ,CAAC,GAAGR,QAAQ,CAAiB,IAAI,CAAC;EACxD,IAAMS,WAAW,GAAGX,UAAU,CAACI,kBAAkB,CAAC;EAClD,IAAMQ,UAAU,GAAGZ,UAAU,CAACG,UAAU,CAAC;EAEzCF,SAAS,CAAC,MAAM;IACd,IAAIU,WAAW,IAAI,IAAI,EAAE;MACvB,IAAIC,UAAU,IAAI,IAAI,EAAE;QACtBJ,MAAM,CAACI,UAAU,CAAC;QAClBF,QAAQ,CAAC,IAAI,CAAC;QACd;MACF;MACAF,MAAM,CAAC,IAAI,CAAC;MACZE,QAAQ,CACN,IAAIG,KAAK,CACP,sGACF,CACF,CAAC;MACD;IACF;IACA,IAAIC,WAAW,GAAG,KAAK;IAAC,SAETC,OAAOA,CAAA;MAAA,OAAAC,QAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,SAAA;MAAAA,QAAA,GAAAG,iBAAA,CAAtB,aAAyB;QACvB,IAAI,OAAOR,WAAW,KAAK,UAAU,EAAE;UACrC,IAAI;YACF,IAAMS,MAAM,SAAST,WAAW,CAACL,UAAU,CAAC;YAC5C,IAAI,CAACQ,WAAW,EAAE;cAChBN,MAAM,CAACY,MAAM,CAAC;cACdV,QAAQ,CAAC,IAAI,CAAC;YAChB;UACF,CAAC,CAAC,OAAOW,CAAC,EAAE;YACV,IAAI,CAACP,WAAW,EAAE;cAChBN,MAAM,CAAC,IAAI,CAAC;cACZE,QAAQ,CAACW,CAAC,CAAC;YACb;UACF;QACF,CAAC,MAAM;UACLb,MAAM,CAACG,WAAW,CAAC;QACrB;MACF,CAAC;MAAA,OAAAK,QAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,OAAO,CAAC,CAAC;IAET,OAAO,MAAM;MACXD,WAAW,GAAG,IAAI;IACpB,CAAC;EACH,CAAC,EAAE,CAACF,UAAU,EAAED,WAAW,EAAEL,UAAU,CAAC,CAAC;EAEzC,OAAO,CAACC,GAAG,EAAEE,KAAK,CAAC;AACrB;AAEA,eAAeJ,cAAc"}
@@ -0,0 +1,40 @@
1
+ /// <reference types="react" />
2
+ import { VariableDescriptor, VariableDefinition } from '@deephaven/jsapi-types';
3
+ /**
4
+ * Descriptor for a variable by name. Used when needed to fetch an object.
5
+ */
6
+ export type NameVariableDescriptor = {
7
+ /** Type of the variable */
8
+ type: string;
9
+ /** Name of the variable */
10
+ name: string;
11
+ };
12
+ /**
13
+ * Descriptor for a variable by id. Used when needed to fetch an object.
14
+ */
15
+ export type IdVariableDescriptor = {
16
+ /** Type of the variable */
17
+ type: string;
18
+ /** Id of the variable */
19
+ id: string;
20
+ };
21
+ export declare function isNameVariableDescriptor(value: unknown): value is NameVariableDescriptor;
22
+ export declare function isIdVariableDescriptor(value: unknown): value is IdVariableDescriptor;
23
+ export declare function isVariableDescriptor(value: unknown): value is VariableDescriptor;
24
+ /**
25
+ * Function to fetch an object based on a provided descriptor object
26
+ */
27
+ export type ObjectFetcher<T = unknown> = (descriptor: VariableDescriptor) => Promise<T>;
28
+ export declare const ObjectFetcherContext: import("react").Context<ObjectFetcher<unknown> | null>;
29
+ /**
30
+ * Get the serializable descriptor for a variable definition.
31
+ * @param definition Variable definition to get the serialized descriptor for
32
+ * @returns Descriptor object that is serializable
33
+ */
34
+ export declare function getVariableDescriptor(definition: Partial<VariableDefinition>): NameVariableDescriptor | IdVariableDescriptor;
35
+ /**
36
+ * Use a function to fetch an object based on provided metadata
37
+ * @returns Function to asynchronously fetch an object based on provided metadata
38
+ */
39
+ export declare function useObjectFetcher<T = unknown>(): ObjectFetcher<T>;
40
+ //# sourceMappingURL=useObjectFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useObjectFetcher.d.ts","sourceRoot":"","sources":["../src/useObjectFetcher.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIhF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,sBAAsB,CAOjC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,oBAAoB,CAO/B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAE7B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CACvC,UAAU,EAAE,kBAAkB,KAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,eAAO,MAAM,oBAAoB,wDAA4C,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACtC,sBAAsB,GAAG,oBAAoB,CAkB/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAKhE"}
@@ -0,0 +1,58 @@
1
+ import { useContextOrThrow } from '@deephaven/react-hooks';
2
+ import { createContext } from 'react';
3
+
4
+ /**
5
+ * Descriptor for a variable by name. Used when needed to fetch an object.
6
+ */
7
+
8
+ /**
9
+ * Descriptor for a variable by id. Used when needed to fetch an object.
10
+ */
11
+
12
+ export function isNameVariableDescriptor(value) {
13
+ return typeof value === 'object' && value != null && typeof value.type === 'string' && value.name != null;
14
+ }
15
+ export function isIdVariableDescriptor(value) {
16
+ return typeof value === 'object' && value != null && typeof value.type === 'string' && value.id != null;
17
+ }
18
+ export function isVariableDescriptor(value) {
19
+ return isNameVariableDescriptor(value) || isIdVariableDescriptor(value);
20
+ }
21
+
22
+ /**
23
+ * Function to fetch an object based on a provided descriptor object
24
+ */
25
+
26
+ export var ObjectFetcherContext = /*#__PURE__*/createContext(null);
27
+
28
+ /**
29
+ * Get the serializable descriptor for a variable definition.
30
+ * @param definition Variable definition to get the serialized descriptor for
31
+ * @returns Descriptor object that is serializable
32
+ */
33
+ export function getVariableDescriptor(definition) {
34
+ // Can't use a spread operator because of how the GWT compiled code defines properties on the object: https://github.com/gwtproject/gwt/issues/9913
35
+ if (isIdVariableDescriptor(definition)) {
36
+ return {
37
+ id: definition.id,
38
+ type: definition.type
39
+ };
40
+ }
41
+ if (definition.type != null && (definition.title != null || definition.name != null)) {
42
+ var _ref, _definition$title;
43
+ return {
44
+ name: (_ref = (_definition$title = definition.title) !== null && _definition$title !== void 0 ? _definition$title : definition.name) !== null && _ref !== void 0 ? _ref : '',
45
+ type: definition.type
46
+ };
47
+ }
48
+ throw new Error("Can't get a descriptor for definition: ".concat(definition));
49
+ }
50
+
51
+ /**
52
+ * Use a function to fetch an object based on provided metadata
53
+ * @returns Function to asynchronously fetch an object based on provided metadata
54
+ */
55
+ export function useObjectFetcher() {
56
+ return useContextOrThrow(ObjectFetcherContext, 'No ObjectFetcher available in useObjectFetcher. Was code wrapped in ObjectFetcherContext.Provider?');
57
+ }
58
+ //# sourceMappingURL=useObjectFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useObjectFetcher.js","names":["useContextOrThrow","createContext","isNameVariableDescriptor","value","type","name","isIdVariableDescriptor","id","isVariableDescriptor","ObjectFetcherContext","getVariableDescriptor","definition","title","_ref","_definition$title","Error","concat","useObjectFetcher"],"sources":["../src/useObjectFetcher.ts"],"sourcesContent":["import { VariableDescriptor, VariableDefinition } from '@deephaven/jsapi-types';\nimport { useContextOrThrow } from '@deephaven/react-hooks';\nimport { createContext } from 'react';\n\n/**\n * Descriptor for a variable by name. Used when needed to fetch an object.\n */\nexport type NameVariableDescriptor = {\n /** Type of the variable */\n type: string;\n /** Name of the variable */\n name: string;\n};\n\n/**\n * Descriptor for a variable by id. Used when needed to fetch an object.\n */\nexport type IdVariableDescriptor = {\n /** Type of the variable */\n type: string;\n /** Id of the variable */\n id: string;\n};\n\nexport function isNameVariableDescriptor(\n value: unknown\n): value is NameVariableDescriptor {\n return (\n typeof value === 'object' &&\n value != null &&\n typeof (value as NameVariableDescriptor).type === 'string' &&\n (value as NameVariableDescriptor).name != null\n );\n}\n\nexport function isIdVariableDescriptor(\n value: unknown\n): value is IdVariableDescriptor {\n return (\n typeof value === 'object' &&\n value != null &&\n typeof (value as IdVariableDescriptor).type === 'string' &&\n (value as IdVariableDescriptor).id != null\n );\n}\n\nexport function isVariableDescriptor(\n value: unknown\n): value is VariableDescriptor {\n return isNameVariableDescriptor(value) || isIdVariableDescriptor(value);\n}\n\n/**\n * Function to fetch an object based on a provided descriptor object\n */\nexport type ObjectFetcher<T = unknown> = (\n descriptor: VariableDescriptor\n) => Promise<T>;\n\nexport const ObjectFetcherContext = createContext<ObjectFetcher | null>(null);\n\n/**\n * Get the serializable descriptor for a variable definition.\n * @param definition Variable definition to get the serialized descriptor for\n * @returns Descriptor object that is serializable\n */\nexport function getVariableDescriptor(\n definition: Partial<VariableDefinition>\n): NameVariableDescriptor | IdVariableDescriptor {\n // Can't use a spread operator because of how the GWT compiled code defines properties on the object: https://github.com/gwtproject/gwt/issues/9913\n if (isIdVariableDescriptor(definition)) {\n return {\n id: definition.id,\n type: definition.type,\n };\n }\n if (\n definition.type != null &&\n (definition.title != null || definition.name != null)\n ) {\n return {\n name: definition.title ?? definition.name ?? '',\n type: definition.type,\n };\n }\n throw new Error(`Can't get a descriptor for definition: ${definition}`);\n}\n\n/**\n * Use a function to fetch an object based on provided metadata\n * @returns Function to asynchronously fetch an object based on provided metadata\n */\nexport function useObjectFetcher<T = unknown>(): ObjectFetcher<T> {\n return useContextOrThrow(\n ObjectFetcherContext,\n 'No ObjectFetcher available in useObjectFetcher. Was code wrapped in ObjectFetcherContext.Provider?'\n ) as ObjectFetcher<T>;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,aAAa,QAAQ,OAAO;;AAErC;AACA;AACA;;AAQA;AACA;AACA;;AAQA,OAAO,SAASC,wBAAwBA,CACtCC,KAAc,EACmB;EACjC,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,IAAI,IAAI,IACb,OAAQA,KAAK,CAA4BC,IAAI,KAAK,QAAQ,IACzDD,KAAK,CAA4BE,IAAI,IAAI,IAAI;AAElD;AAEA,OAAO,SAASC,sBAAsBA,CACpCH,KAAc,EACiB;EAC/B,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,IAAI,IAAI,IACb,OAAQA,KAAK,CAA0BC,IAAI,KAAK,QAAQ,IACvDD,KAAK,CAA0BI,EAAE,IAAI,IAAI;AAE9C;AAEA,OAAO,SAASC,oBAAoBA,CAClCL,KAAc,EACe;EAC7B,OAAOD,wBAAwB,CAACC,KAAK,CAAC,IAAIG,sBAAsB,CAACH,KAAK,CAAC;AACzE;;AAEA;AACA;AACA;;AAKA,OAAO,IAAMM,oBAAoB,gBAAGR,aAAa,CAAuB,IAAI,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,qBAAqBA,CACnCC,UAAuC,EACQ;EAC/C;EACA,IAAIL,sBAAsB,CAACK,UAAU,CAAC,EAAE;IACtC,OAAO;MACLJ,EAAE,EAAEI,UAAU,CAACJ,EAAE;MACjBH,IAAI,EAAEO,UAAU,CAACP;IACnB,CAAC;EACH;EACA,IACEO,UAAU,CAACP,IAAI,IAAI,IAAI,KACtBO,UAAU,CAACC,KAAK,IAAI,IAAI,IAAID,UAAU,CAACN,IAAI,IAAI,IAAI,CAAC,EACrD;IAAA,IAAAQ,IAAA,EAAAC,iBAAA;IACA,OAAO;MACLT,IAAI,GAAAQ,IAAA,IAAAC,iBAAA,GAAEH,UAAU,CAACC,KAAK,cAAAE,iBAAA,cAAAA,iBAAA,GAAIH,UAAU,CAACN,IAAI,cAAAQ,IAAA,cAAAA,IAAA,GAAI,EAAE;MAC/CT,IAAI,EAAEO,UAAU,CAACP;IACnB,CAAC;EACH;EACA,MAAM,IAAIW,KAAK,2CAAAC,MAAA,CAA2CL,UAAU,CAAE,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,gBAAgBA,CAAA,EAAkC;EAChE,OAAOjB,iBAAiB,CACtBS,oBAAoB,EACpB,oGACF,CAAC;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/jsapi-bootstrap",
3
- "version": "0.60.1-beta.5+b047fa36",
3
+ "version": "0.60.1-object-fetcher.6+6a7af1e6",
4
4
  "description": "Deephaven JSAPI Bootstrap",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,10 +22,10 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/components": "^0.60.1-beta.5+b047fa36",
26
- "@deephaven/jsapi-types": "^0.60.1-beta.5+b047fa36",
27
- "@deephaven/log": "^0.60.1-beta.5+b047fa36",
28
- "@deephaven/react-hooks": "^0.60.1-beta.5+b047fa36"
25
+ "@deephaven/components": "^0.60.1-object-fetcher.6+6a7af1e6",
26
+ "@deephaven/jsapi-types": "^0.60.1-object-fetcher.6+6a7af1e6",
27
+ "@deephaven/log": "^0.60.1-object-fetcher.6+6a7af1e6",
28
+ "@deephaven/react-hooks": "^0.60.1-object-fetcher.6+6a7af1e6"
29
29
  },
30
30
  "devDependencies": {
31
31
  "react": "^17.x"
@@ -40,5 +40,5 @@
40
40
  "publishConfig": {
41
41
  "access": "public"
42
42
  },
43
- "gitHead": "b047fa36de3a285be925736ef73722a60d1d9ed7"
43
+ "gitHead": "6a7af1e6366a33dddcd7534fbc0d50d82509a137"
44
44
  }