@looker/extension-sdk-react 22.4.3-alpha.1523 → 22.4.3-alpha.1524

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.
@@ -31,12 +31,6 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
31
31
 
32
32
  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); }); }; }
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
-
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
-
38
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
-
40
34
  var ExtensionConnector = _ref => {
41
35
  var {
42
36
  contextData,
@@ -51,23 +45,25 @@ var ExtensionConnector = _ref => {
51
45
  chattyTimeout,
52
46
  children
53
47
  } = _ref;
48
+ var contextDataRef = (0, _react.useRef)(contextData);
54
49
  var [initialRouteData, setInitialRouteData] = (0, _react.useState)();
55
50
  var [hostRouteData, setHostRouteData] = (0, _react.useState)({
56
51
  route: ''
57
52
  });
58
53
  var [initializing, setInitializing] = (0, _react.useState)(true);
59
54
  var [initializeError, setInitializeError] = (0, _react.useState)();
60
-
61
- var setInitialRouteAndRouteState = (route, routeState) => {
55
+ (0, _react.useEffect)(() => {
56
+ contextDataRef.current = contextData;
57
+ }, [contextData]);
58
+ var setInitialRouteAndRouteState = (0, _react.useCallback)((route, routeState) => {
62
59
  if (hostTracksRoute) {
63
60
  setInitialRouteData({
64
61
  route,
65
62
  routeState
66
63
  });
67
64
  }
68
- };
69
-
70
- var hostChangedRoute = (_route, routeState) => {
65
+ }, [hostTracksRoute, setInitialRouteData]);
66
+ var hostChangedRoute = (0, _react.useCallback)((_route, routeState) => {
71
67
  var route = _route.startsWith('/') ? _route : '/' + _route;
72
68
 
73
69
  if (route !== hostRouteData.route || !(0, _isEqual.default)(routeState, hostRouteData.routeState)) {
@@ -75,32 +71,29 @@ var ExtensionConnector = _ref => {
75
71
  route,
76
72
  routeState
77
73
  });
78
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
74
+ updateContextData({
79
75
  route,
80
76
  routeState
81
- }));
77
+ });
82
78
  }
83
- };
84
-
85
- var visualizationDataReceivedCallback = visualizationData => {
86
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
79
+ }, [setHostRouteData, updateContextData]);
80
+ var visualizationDataReceivedCallback = (0, _react.useCallback)(visualizationData => {
81
+ updateContextData({
87
82
  visualizationData
88
- }));
89
- };
90
-
91
- var tileHostDataChangedCallback = partialHostData => {
92
- if (contextData.tileSDK) {
83
+ });
84
+ }, [updateContextData]);
85
+ var tileHostDataChangedCallback = (0, _react.useCallback)(partialHostData => {
86
+ if (contextDataRef.current.tileSDK) {
93
87
  var {
94
88
  tileSDK
95
- } = contextData;
89
+ } = contextDataRef.current;
96
90
  tileSDK.tileHostDataChanged(partialHostData);
97
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
91
+ updateContextData({
98
92
  tileHostData: tileSDK.tileHostData
99
- }));
93
+ });
100
94
  }
101
- };
102
-
103
- _react.default.useEffect(() => {
95
+ }, [updateContextData]);
96
+ (0, _react.useEffect)(() => {
104
97
  var initialize = function () {
105
98
  var _ref2 = _asyncToGenerator(function* () {
106
99
  try {
@@ -131,11 +124,9 @@ var ExtensionConnector = _ref => {
131
124
  unloadedCallback();
132
125
  };
133
126
  }, []);
134
-
135
- _react.default.useEffect(() => {
127
+ (0, _react.useEffect)(() => {
136
128
  return initializing ? undefined : (0, _setup_close_popovers.setupClosePopoversListener)(contextData.extensionSDK);
137
129
  }, [initializing]);
138
-
139
130
  return _react.default.createElement(_react.default.Fragment, null, initializing ? loadingComponent : _react.default.createElement(_react.default.Fragment, null, initializeError ? _react.default.createElement(_ErrorMessage.ErrorMessage, {
140
131
  errorMessage: initializeError
141
132
  }) : _react.default.createElement(_react.default.Fragment, null, hostTracksRoute ? _react.default.createElement(_reactRouterDom.MemoryRouter, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ExtensionConnector/ExtensionConnector.tsx"],"names":["ExtensionConnector","contextData","updateContextData","connectedCallback","unloadedCallback","onPathnameChange","onRouteChange","hostTracksRoute","loadingComponent","requiredLookerVersion","chattyTimeout","children","initialRouteData","setInitialRouteData","hostRouteData","setHostRouteData","route","initializing","setInitializing","initializeError","setInitializeError","setInitialRouteAndRouteState","routeState","hostChangedRoute","_route","startsWith","visualizationDataReceivedCallback","visualizationData","tileHostDataChangedCallback","partialHostData","tileSDK","tileHostDataChanged","tileHostData","React","useEffect","initialize","extensionHost","setInitialRoute","error","console","message","undefined","extensionSDK"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport isEqual from 'lodash/isEqual'\nimport React, { useState } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\nimport type { RawVisualizationData, TileHostData } from '@looker/extension-sdk'\nimport { connectExtensionHost } from '@looker/extension-sdk'\nimport { ErrorMessage } from '../ErrorMessage'\nimport { RouteChangeListener } from '../RouteChangeListener'\nimport { getInitialRouteEntries } from '../utils/get_initial_route_entries'\nimport { setupClosePopoversListener } from '../utils/setup_close_popovers'\nimport type { ExtensionConnectorProps, RouteData } from './types'\n\n/**\n * ExtensionConnector component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport const ExtensionConnector: React.FC<ExtensionConnectorProps> = ({\n contextData,\n updateContextData,\n connectedCallback,\n unloadedCallback,\n onPathnameChange,\n onRouteChange,\n hostTracksRoute = true,\n loadingComponent,\n requiredLookerVersion,\n chattyTimeout,\n children,\n}) => {\n const [initialRouteData, setInitialRouteData] = useState<RouteData>()\n const [hostRouteData, setHostRouteData] = useState<RouteData>({ route: '' })\n const [initializing, setInitializing] = useState(true)\n const [initializeError, setInitializeError] = useState<string>()\n\n const setInitialRouteAndRouteState = (route: string, routeState?: any) => {\n if (hostTracksRoute) {\n setInitialRouteData({ route, routeState })\n }\n }\n\n const hostChangedRoute = (_route: string, routeState?: any) => {\n const route = _route.startsWith('/') ? _route : '/' + _route\n if (\n route !== hostRouteData.route ||\n !isEqual(routeState, hostRouteData.routeState)\n ) {\n setHostRouteData({ route, routeState })\n updateContextData({\n ...contextData,\n route,\n routeState,\n })\n }\n }\n\n const visualizationDataReceivedCallback = (\n visualizationData: RawVisualizationData\n ) => {\n updateContextData({\n ...contextData,\n visualizationData,\n })\n }\n\n const tileHostDataChangedCallback = (\n partialHostData: Partial<TileHostData>\n ) => {\n if (contextData.tileSDK) {\n const { tileSDK } = contextData\n tileSDK.tileHostDataChanged(partialHostData)\n updateContextData({\n ...contextData,\n tileHostData: tileSDK.tileHostData,\n })\n }\n }\n\n React.useEffect(() => {\n const initialize = async () => {\n try {\n const extensionHost = await connectExtensionHost({\n setInitialRoute: setInitialRouteAndRouteState,\n requiredLookerVersion,\n hostChangedRoute,\n chattyTimeout,\n visualizationDataReceivedCallback,\n tileHostDataChangedCallback,\n })\n connectedCallback(extensionHost)\n setInitializing(false)\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error)\n setInitializeError(error.message || 'Extension failed to initialize.')\n setInitializing(false)\n }\n }\n initialize()\n return () => {\n unloadedCallback()\n }\n }, [])\n\n React.useEffect(() => {\n return initializing\n ? undefined\n : setupClosePopoversListener(contextData.extensionSDK)\n }, [initializing])\n\n return (\n <>\n {initializing ? (\n loadingComponent\n ) : (\n <>\n {initializeError ? (\n <ErrorMessage errorMessage={initializeError} />\n ) : (\n <>\n {hostTracksRoute ? (\n <MemoryRouter\n initialEntries={getInitialRouteEntries(initialRouteData)}\n >\n <RouteChangeListener\n onRouteChange={onRouteChange}\n onPathnameChange={onPathnameChange}\n extensionHost={contextData!.extensionSDK}\n hostRoute={hostRouteData.route}\n hostRouteState={hostRouteData.routeState}\n />\n {children}\n </MemoryRouter>\n ) : (\n <>{children}</>\n )}\n </>\n )}\n </>\n )}\n </>\n )\n}\n"],"file":"ExtensionConnector.js"}
1
+ {"version":3,"sources":["../../../src/components/ExtensionConnector/ExtensionConnector.tsx"],"names":["ExtensionConnector","contextData","updateContextData","connectedCallback","unloadedCallback","onPathnameChange","onRouteChange","hostTracksRoute","loadingComponent","requiredLookerVersion","chattyTimeout","children","contextDataRef","initialRouteData","setInitialRouteData","hostRouteData","setHostRouteData","route","initializing","setInitializing","initializeError","setInitializeError","current","setInitialRouteAndRouteState","routeState","hostChangedRoute","_route","startsWith","visualizationDataReceivedCallback","visualizationData","tileHostDataChangedCallback","partialHostData","tileSDK","tileHostDataChanged","tileHostData","initialize","extensionHost","setInitialRoute","error","console","message","undefined","extensionSDK"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport isEqual from 'lodash/isEqual'\nimport React, { useEffect, useState, useCallback, useRef } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\nimport type { RawVisualizationData, TileHostData } from '@looker/extension-sdk'\nimport { connectExtensionHost } from '@looker/extension-sdk'\nimport { ErrorMessage } from '../ErrorMessage'\nimport { RouteChangeListener } from '../RouteChangeListener'\nimport { getInitialRouteEntries } from '../utils/get_initial_route_entries'\nimport { setupClosePopoversListener } from '../utils/setup_close_popovers'\nimport type { ExtensionConnectorProps, RouteData } from './types'\n\n/**\n * ExtensionConnector component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport const ExtensionConnector: React.FC<ExtensionConnectorProps> = ({\n contextData,\n updateContextData,\n connectedCallback,\n unloadedCallback,\n onPathnameChange,\n onRouteChange,\n hostTracksRoute = true,\n loadingComponent,\n requiredLookerVersion,\n chattyTimeout,\n children,\n}) => {\n const contextDataRef = useRef(contextData)\n const [initialRouteData, setInitialRouteData] = useState<RouteData>()\n const [hostRouteData, setHostRouteData] = useState<RouteData>({ route: '' })\n const [initializing, setInitializing] = useState(true)\n const [initializeError, setInitializeError] = useState<string>()\n\n useEffect(() => {\n contextDataRef.current = contextData\n }, [contextData])\n\n const setInitialRouteAndRouteState = useCallback(\n (route: string, routeState?: any) => {\n if (hostTracksRoute) {\n setInitialRouteData({ route, routeState })\n }\n },\n [hostTracksRoute, setInitialRouteData]\n )\n\n const hostChangedRoute = useCallback(\n (_route: string, routeState?: any) => {\n const route = _route.startsWith('/') ? _route : '/' + _route\n if (\n route !== hostRouteData.route ||\n !isEqual(routeState, hostRouteData.routeState)\n ) {\n setHostRouteData({ route, routeState })\n updateContextData({\n route,\n routeState,\n })\n }\n },\n [setHostRouteData, updateContextData]\n )\n\n const visualizationDataReceivedCallback = useCallback(\n (visualizationData: RawVisualizationData) => {\n updateContextData({\n visualizationData,\n })\n },\n [updateContextData]\n )\n\n const tileHostDataChangedCallback = useCallback(\n (partialHostData: Partial<TileHostData>) => {\n if (contextDataRef.current.tileSDK) {\n const { tileSDK } = contextDataRef.current\n tileSDK.tileHostDataChanged(partialHostData)\n updateContextData({\n tileHostData: tileSDK.tileHostData,\n })\n }\n },\n [updateContextData]\n )\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const extensionHost = await connectExtensionHost({\n setInitialRoute: setInitialRouteAndRouteState,\n requiredLookerVersion,\n hostChangedRoute,\n chattyTimeout,\n visualizationDataReceivedCallback,\n tileHostDataChangedCallback,\n })\n connectedCallback(extensionHost)\n setInitializing(false)\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error)\n setInitializeError(error.message || 'Extension failed to initialize.')\n setInitializing(false)\n }\n }\n initialize()\n return () => {\n unloadedCallback()\n }\n }, [])\n\n useEffect(() => {\n return initializing\n ? undefined\n : setupClosePopoversListener(contextData.extensionSDK)\n }, [initializing])\n\n return (\n <>\n {initializing ? (\n loadingComponent\n ) : (\n <>\n {initializeError ? (\n <ErrorMessage errorMessage={initializeError} />\n ) : (\n <>\n {hostTracksRoute ? (\n <MemoryRouter\n initialEntries={getInitialRouteEntries(initialRouteData)}\n >\n <RouteChangeListener\n onRouteChange={onRouteChange}\n onPathnameChange={onPathnameChange}\n extensionHost={contextData!.extensionSDK}\n hostRoute={hostRouteData.route}\n hostRouteState={hostRouteData.routeState}\n />\n {children}\n </MemoryRouter>\n ) : (\n <>{children}</>\n )}\n </>\n )}\n </>\n )}\n </>\n )\n}\n"],"file":"ExtensionConnector.js"}
@@ -27,6 +27,6 @@ export interface ExtensionProviderProps {
27
27
  export interface ExtensionConnectorProps extends ExtensionProviderProps {
28
28
  contextData: BaseExtensionContextData;
29
29
  connectedCallback: (extensionSDK: ExtensionHostApi) => void;
30
- updateContextData: (contextData: BaseExtensionContextData) => void;
30
+ updateContextData: (contextData: Partial<BaseExtensionContextData>) => void;
31
31
  unloadedCallback: () => void;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ExtensionProvider/ExtensionProvider.tsx"],"names":["ExtensionContext","React","createContext","undefined","ExtensionProvider","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","core31SDK","LookerExtensionSDK","create31Client","core40SDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","coreSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;AA0BA;;AAEA;;AAMA;;AACA;;AACA;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB,GAAGC,eAAMC,aAAN,CAC9BC,SAD8B,CAAzB;;;;AASA,IAAMC,iBAAmD,GAAG,QAG7D;AAAA,MAH8D;AAClEC,IAAAA;AADkE,GAG9D;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAGA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,SAAsB,GAC1BC,iCAAmBC,cAAnB,CAAkCH,aAAlC,CADF;;AAEA,QAAMI,SAAsB,GAC1BF,iCAAmBG,cAAnB,CAAkCL,aAAlC,CADF;;AAGA,sCAAkBC,SAAlB;AACA,uCAAkBG,SAAlB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDR,aAAtD;AACA,QAAM;AAAES,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAT,IAAAA,gBAAgB,CAAEa,aAAD,IAAyC;AACxD,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEZ,aAFhB;AAGEa,QAAAA,OAAO,EAAEZ,SAHX;AAIEA,QAAAA,SAJF;AAKEG,QAAAA,SALF;AAMEE,QAAAA,gBANF;AAOEC,QAAAA,OAPF;AAQEE,QAAAA,iBARF;AASEC,QAAAA,YATF;AAUEF,QAAAA;AAVF;AAYD,KAbe,CAAhB;AAcD,GAzBD;;AA2BA,MAAMM,gBAAgB,GAAG,MAAM;AAC7B;AACA;AACD,GAHD;;AAKA,MAAMC,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1ElB,IAAAA,gBAAgB,CAAEa,aAAD,IAAyC;AACxD,6CACKA,aADL,GAEKK,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,6BAAC,gBAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAEnB;AAAlC,KACE,6BAAC,sCAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEgB,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGnB,QAPH,CADF,CADF;AAaD,CA7DM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { Looker31SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore31SDK, unregisterCore31SDK } from '../../sdk/core_sdk_31'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\nimport type { ExtensionContextData } from './types'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext = React.createContext<ExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n)\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n * @deprecated use ExtensionProvider40\n */\nexport const ExtensionProvider: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<ExtensionContextData>(\n {} as ExtensionContextData\n )\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const core31SDK: Looker31SDK =\n LookerExtensionSDK.create31Client(extensionHost)\n const core40SDK: Looker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n // Provide global access for use by redux if needed\n registerCore31SDK(core31SDK)\n registerCore40SDK(core40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK: core31SDK,\n core31SDK,\n core40SDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore31SDK()\n unregisterCore40SDK()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext.Provider>\n )\n}\n"],"file":"ExtensionProvider.js"}
1
+ {"version":3,"sources":["../../../src/components/ExtensionProvider/ExtensionProvider.tsx"],"names":["ExtensionContext","React","createContext","undefined","ExtensionProvider","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","core31SDK","LookerExtensionSDK","create31Client","core40SDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","coreSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;AA0BA;;AAEA;;AAMA;;AACA;;AACA;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB,GAAGC,eAAMC,aAAN,CAC9BC,SAD8B,CAAzB;;;;AASA,IAAMC,iBAAmD,GAAG,QAG7D;AAAA,MAH8D;AAClEC,IAAAA;AADkE,GAG9D;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAGA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,SAAsB,GAC1BC,iCAAmBC,cAAnB,CAAkCH,aAAlC,CADF;;AAEA,QAAMI,SAAsB,GAC1BF,iCAAmBG,cAAnB,CAAkCL,aAAlC,CADF;;AAGA,sCAAkBC,SAAlB;AACA,uCAAkBG,SAAlB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDR,aAAtD;AACA,QAAM;AAAES,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAT,IAAAA,gBAAgB,CAAEa,aAAD,IAAyC;AACxD,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEZ,aAFhB;AAGEa,QAAAA,OAAO,EAAEZ,SAHX;AAIEA,QAAAA,SAJF;AAKEG,QAAAA,SALF;AAMEE,QAAAA,gBANF;AAOEC,QAAAA,OAPF;AAQEE,QAAAA,iBARF;AASEC,QAAAA,YATF;AAUEF,QAAAA;AAVF;AAYD,KAbe,CAAhB;AAcD,GAzBD;;AA2BA,MAAMM,gBAAgB,GAAG,MAAM;AAC7B;AACA;AACD,GAHD;;AAKA,MAAMC,iBAAiB,GACrBC,kBADwB,IAErB;AACHlB,IAAAA,gBAAgB,CAAEa,aAAD,IAAyC;AACxD,6CACKA,aADL,GAEKK,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,6BAAC,gBAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAEnB;AAAlC,KACE,6BAAC,sCAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEgB,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGnB,QAPH,CADF,CADF;AAaD,CA/DM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { Looker31SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore31SDK, unregisterCore31SDK } from '../../sdk/core_sdk_31'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\nimport type { ExtensionContextData } from './types'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext = React.createContext<ExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n)\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n * @deprecated use ExtensionProvider40\n */\nexport const ExtensionProvider: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<ExtensionContextData>(\n {} as ExtensionContextData\n )\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const core31SDK: Looker31SDK =\n LookerExtensionSDK.create31Client(extensionHost)\n const core40SDK: Looker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n // Provide global access for use by redux if needed\n registerCore31SDK(core31SDK)\n registerCore40SDK(core40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK: core31SDK,\n core31SDK,\n core40SDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore31SDK()\n unregisterCore40SDK()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext.Provider>\n )\n}\n"],"file":"ExtensionProvider.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ExtensionProvider2/ExtensionProvider2.tsx"],"names":["ExtensionContext2","React","createContext","undefined","ExtensionProvider2","props","children","type","rest","extensionData","setExtensionData","apiVersion","ApiVersion","connectedCallback","extensionHost","coreSDK","LookerExtensionSDK","createClient","SdkConnection","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;AA0BA;;AAEA;;AACA;;AAKA;;AACA;;;;;;;;;;;;;;;;;;AASO,IAAMA,iBAAiB,GAAGC,eAAMC,aAAN,CAG/BC,SAH+B,CAA1B;;;;AAcA,SAASC,kBAAT,CAA+BC,KAA/B,EAAkE;AACvE,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA8BF,KAApC;AAAA,MAA2BG,IAA3B,4BAAoCH,KAApC;;AACA,MAAM,CAACI,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;AAGA,MAAMC,UAAU,GAAIJ,IAAD,CAAcK,UAAjC;;AAEA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAIC,OAAJ;;AACA,QAAIJ,UAAJ,EAAgB;AACdI,MAAAA,OAAO,GAAGC,wBAAmBC,YAAnB,CACR,IAAIC,2BAAJ,CAAkBJ,aAAlB,EAAiCH,UAAjC,CADQ,EAERJ,IAFQ,CAAV;AAID;;AACD,oCAAiBQ,OAAjB;AACA,QAAM;AAAEI,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDP,aAAtD;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAV,IAAAA,gBAAgB,CAAEc,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEX,aAFhB;AAGEC,QAAAA,OAHF;AAIEI,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAxBD;;AA0BA,MAAMK,gBAAgB,GAAG,MAAM;AAC7B;AACD,GAFD;;AAIA,MAAMC,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1ElB,IAAAA,gBAAgB,CAAEc,aAAD,IAA6C;AAC5D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,6BAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEnB;AAAnC,KACE,6BAAC,sCAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEI,iBAHrB;AAIE,IAAA,iBAAiB,EAAEc,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGpB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { SdkConnection } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCoreSDK2, unregisterCoreSDK2 } from '../../sdk/core_sdk2'\n\nexport interface ExtensionContextData2<T> extends BaseExtensionContextData {\n coreSDK: T\n}\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext2 = React.createContext<\n ExtensionContextData2<any>\n>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider2Props<T> extends ExtensionProviderProps {\n type: T\n}\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport function ExtensionProvider2<T>(props: ExtensionProvider2Props<T>) {\n const { children, type, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData2<T>>(\n {} as ExtensionContextData2<T>\n )\n const apiVersion = (type as any).ApiVersion\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n let coreSDK: any\n if (apiVersion) {\n coreSDK = LookerExtensionSDK.createClient(\n new SdkConnection(extensionHost, apiVersion),\n type as any\n )\n }\n registerCoreSDK2(coreSDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCoreSDK2()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData2<T>) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext2.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext2.Provider>\n )\n}\n"],"file":"ExtensionProvider2.js"}
1
+ {"version":3,"sources":["../../../src/components/ExtensionProvider2/ExtensionProvider2.tsx"],"names":["ExtensionContext2","React","createContext","undefined","ExtensionProvider2","props","children","type","rest","extensionData","setExtensionData","apiVersion","ApiVersion","connectedCallback","extensionHost","coreSDK","LookerExtensionSDK","createClient","SdkConnection","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;AA0BA;;AAEA;;AACA;;AAKA;;AACA;;;;;;;;;;;;;;;;;;AASO,IAAMA,iBAAiB,GAAGC,eAAMC,aAAN,CAG/BC,SAH+B,CAA1B;;;;AAcA,SAASC,kBAAT,CAA+BC,KAA/B,EAAkE;AACvE,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA8BF,KAApC;AAAA,MAA2BG,IAA3B,4BAAoCH,KAApC;;AACA,MAAM,CAACI,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;AAGA,MAAMC,UAAU,GAAIJ,IAAD,CAAcK,UAAjC;;AAEA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAIC,OAAJ;;AACA,QAAIJ,UAAJ,EAAgB;AACdI,MAAAA,OAAO,GAAGC,wBAAmBC,YAAnB,CACR,IAAIC,2BAAJ,CAAkBJ,aAAlB,EAAiCH,UAAjC,CADQ,EAERJ,IAFQ,CAAV;AAID;;AACD,oCAAiBQ,OAAjB;AACA,QAAM;AAAEI,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDP,aAAtD;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAV,IAAAA,gBAAgB,CAAEc,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEX,aAFhB;AAGEC,QAAAA,OAHF;AAIEI,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAxBD;;AA0BA,MAAMK,gBAAgB,GAAG,MAAM;AAC7B;AACD,GAFD;;AAIA,MAAMC,iBAAiB,GACrBC,kBADwB,IAErB;AACHlB,IAAAA,gBAAgB,CAAEc,aAAD,IAA6C;AAC5D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,6BAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEnB;AAAnC,KACE,6BAAC,sCAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEI,iBAHrB;AAIE,IAAA,iBAAiB,EAAEc,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGpB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { SdkConnection } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCoreSDK2, unregisterCoreSDK2 } from '../../sdk/core_sdk2'\n\nexport interface ExtensionContextData2<T> extends BaseExtensionContextData {\n coreSDK: T\n}\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext2 = React.createContext<\n ExtensionContextData2<any>\n>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider2Props<T> extends ExtensionProviderProps {\n type: T\n}\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport function ExtensionProvider2<T>(props: ExtensionProvider2Props<T>) {\n const { children, type, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData2<T>>(\n {} as ExtensionContextData2<T>\n )\n const apiVersion = (type as any).ApiVersion\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n let coreSDK: any\n if (apiVersion) {\n coreSDK = LookerExtensionSDK.createClient(\n new SdkConnection(extensionHost, apiVersion),\n type as any\n )\n }\n registerCoreSDK2(coreSDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCoreSDK2()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData2<T>) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext2.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext2.Provider>\n )\n}\n"],"file":"ExtensionProvider2.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ExtensionProvider40/ExtensionProvider40.tsx"],"names":["ExtensionContext40","React","createContext","undefined","ExtensionProvider40","props","children","rest","extensionData","setExtensionData","connectedCallback","extensionHost","coreSDK","LookerExtensionSDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;AA0BA;;AAEA;;AAMA;;AACA;;;;;;;;;;;;;;;;;;AASO,IAAMA,kBAAkB,GAAGC,eAAMC,aAAN,CAChCC,SADgC,CAA3B;;;;AAUA,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;AACnE,MAAM;AAAEC,IAAAA;AAAF,MAAwBD,KAA9B;AAAA,MAAqBE,IAArB,4BAA8BF,KAA9B;;AACA,MAAM,CAACG,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAIA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,OAAqB,GACzBC,iCAAmBC,cAAnB,CAAkCH,aAAlC,CADF;;AAEA,sCAAkBC,OAAlB;AACA,QAAM;AAAEG,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDN,aAAtD;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAP,IAAAA,gBAAgB,CAAEW,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEV,aAFhB;AAGEC,QAAAA,OAHF;AAIEG,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAnBD;;AAqBA,MAAMK,gBAAgB,GAAG,MAAM;AAC7B;AACD,GAFD;;AAIA,MAAMC,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1Ef,IAAAA,gBAAgB,CAAEW,aAAD,IAA2C;AAC1D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,6BAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEhB;AAApC,KACE,6BAAC,sCAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEa,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGhB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { ILooker40SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\n\nexport interface ExtensionContextData40 extends BaseExtensionContextData {\n coreSDK: ILooker40SDK\n}\n\n/**\n * React context provider for extension API and Looker SDK 4.0.\n */\nexport const ExtensionContext40 = React.createContext<ExtensionContextData40>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider40Props extends ExtensionProviderProps {}\n\n/**\n * ExtensionProvider40 component. Provides access to the extension API and SDK (use\n * ExtensionContext40) and react routing services.\n */\nexport function ExtensionProvider40(props: ExtensionProvider40Props) {\n const { children, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData40>(\n {} as ExtensionContextData40\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const coreSDK: ILooker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n registerCore40SDK(coreSDK as Looker40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore40SDK()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData40) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext40.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext40.Provider>\n )\n}\n"],"file":"ExtensionProvider40.js"}
1
+ {"version":3,"sources":["../../../src/components/ExtensionProvider40/ExtensionProvider40.tsx"],"names":["ExtensionContext40","React","createContext","undefined","ExtensionProvider40","props","children","rest","extensionData","setExtensionData","connectedCallback","extensionHost","coreSDK","LookerExtensionSDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;AA0BA;;AAEA;;AAMA;;AACA;;;;;;;;;;;;;;;;;;AASO,IAAMA,kBAAkB,GAAGC,eAAMC,aAAN,CAChCC,SADgC,CAA3B;;;;AAUA,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;AACnE,MAAM;AAAEC,IAAAA;AAAF,MAAwBD,KAA9B;AAAA,MAAqBE,IAArB,4BAA8BF,KAA9B;;AACA,MAAM,CAACG,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAIA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,OAAqB,GACzBC,iCAAmBC,cAAnB,CAAkCH,aAAlC,CADF;;AAEA,sCAAkBC,OAAlB;AACA,QAAM;AAAEG,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDN,aAAtD;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAP,IAAAA,gBAAgB,CAAEW,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEV,aAFhB;AAGEC,QAAAA,OAHF;AAIEG,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAnBD;;AAqBA,MAAMK,gBAAgB,GAAG,MAAM;AAC7B;AACD,GAFD;;AAIA,MAAMC,iBAAiB,GACrBC,kBADwB,IAErB;AACHf,IAAAA,gBAAgB,CAAEW,aAAD,IAA2C;AAC1D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,6BAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEhB;AAApC,KACE,6BAAC,sCAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEa,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGhB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { ILooker40SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\n\nexport interface ExtensionContextData40 extends BaseExtensionContextData {\n coreSDK: ILooker40SDK\n}\n\n/**\n * React context provider for extension API and Looker SDK 4.0.\n */\nexport const ExtensionContext40 = React.createContext<ExtensionContextData40>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider40Props extends ExtensionProviderProps {}\n\n/**\n * ExtensionProvider40 component. Provides access to the extension API and SDK (use\n * ExtensionContext40) and react routing services.\n */\nexport function ExtensionProvider40(props: ExtensionProvider40Props) {\n const { children, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData40>(\n {} as ExtensionContextData40\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const coreSDK: ILooker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n registerCore40SDK(coreSDK as Looker40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore40SDK()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData40) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext40.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext40.Provider>\n )\n}\n"],"file":"ExtensionProvider40.js"}
@@ -64,7 +64,7 @@ var ExtensionProviderBase = _ref => {
64
64
  var unloadedCallback = () => {};
65
65
 
66
66
  var updateContextData = contextData => {
67
- setExtensionData(contextData);
67
+ setExtensionData(previousContextData => _objectSpread(_objectSpread({}, previousContextData), contextData));
68
68
  };
69
69
 
70
70
  return _react.default.createElement(ExtensionContextBase.Provider, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ExtensionProviderBase/ExtensionProviderBase.tsx"],"names":["ExtensionContextBase","React","createContext","undefined","ExtensionProviderBase","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","contextData"],"mappings":";;;;;;;AA0BA;;AAMA;;;;;;;;;;;;;;;;;;AAKO,IAAMA,oBAAoB,GAC/BC,eAAMC,aAAN,CACEC,SADF,CADK;;;;AASA,IAAMC,qBAAuD,GAAG,QAGjE;AAAA,MAHkE;AACtEC,IAAAA;AADsE,GAGlE;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAIA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAM;AAAEC,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDH,aAAtD;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAJ,IAAAA,gBAAgB,CAAEQ,aAAD,IAA6C;AAC5D,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEP,aAFhB;AAGEC,QAAAA,gBAHF;AAIEC,QAAAA,OAJF;AAKEE,QAAAA,iBALF;AAMEC,QAAAA,YANF;AAOEF,QAAAA;AAPF;AASD,KAVe,CAAhB;AAWD,GAfD;;AAiBA,MAAMK,gBAAgB,GAAG,MAAM,CAE9B,CAFD;;AAIA,MAAMC,iBAAiB,GAAIC,WAAD,IAA2C;AACnEZ,IAAAA,gBAAgB,CAACY,WAAD,CAAhB;AACD,GAFD;;AAIA,SACE,6BAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAEb;AAAtC,KACE,6BAAC,sCAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEU,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGb,QAPH,CADF,CADF;AAaD,CA9CM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContextBase =\n React.createContext<BaseExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n )\n\n/**\n * ExtensionProviderBase component. Provides access to the extension API but no SDK is\n * provided.\n */\nexport const ExtensionProviderBase: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<BaseExtensionContextData>(\n {} as BaseExtensionContextData\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: BaseExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n // noop\n }\n\n const updateContextData = (contextData: BaseExtensionContextData) => {\n setExtensionData(contextData)\n }\n\n return (\n <ExtensionContextBase.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContextBase.Provider>\n )\n}\n"],"file":"ExtensionProviderBase.js"}
1
+ {"version":3,"sources":["../../../src/components/ExtensionProviderBase/ExtensionProviderBase.tsx"],"names":["ExtensionContextBase","React","createContext","undefined","ExtensionProviderBase","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","contextData","previousContextData"],"mappings":";;;;;;;AA0BA;;AAMA;;;;;;;;;;;;;;;;;;AAKO,IAAMA,oBAAoB,GAC/BC,eAAMC,aAAN,CACEC,SADF,CADK;;;;AASA,IAAMC,qBAAuD,GAAG,QAGjE;AAAA,MAHkE;AACtEC,IAAAA;AADsE,GAGlE;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,qBACxC,EADwC,CAA1C;;AAIA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAM;AAAEC,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDH,aAAtD;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAJ,IAAAA,gBAAgB,CAAEQ,aAAD,IAA6C;AAC5D,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEP,aAFhB;AAGEC,QAAAA,gBAHF;AAIEC,QAAAA,OAJF;AAKEE,QAAAA,iBALF;AAMEC,QAAAA,YANF;AAOEF,QAAAA;AAPF;AASD,KAVe,CAAhB;AAWD,GAfD;;AAiBA,MAAMK,gBAAgB,GAAG,MAAM,CAE9B,CAFD;;AAIA,MAAMC,iBAAiB,GACrBC,WADwB,IAErB;AACHZ,IAAAA,gBAAgB,CAAEa,mBAAD,oCACZA,mBADY,GAEZD,WAFY,CAAD,CAAhB;AAID,GAPD;;AASA,SACE,6BAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAEb;AAAtC,KACE,6BAAC,sCAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEU,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGb,QAPH,CADF,CADF;AAaD,CAnDM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContextBase =\n React.createContext<BaseExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n )\n\n/**\n * ExtensionProviderBase component. Provides access to the extension API but no SDK is\n * provided.\n */\nexport const ExtensionProviderBase: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<BaseExtensionContextData>(\n {} as BaseExtensionContextData\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: BaseExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n // noop\n }\n\n const updateContextData = (\n contextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousContextData) => ({\n ...previousContextData,\n ...contextData,\n }))\n }\n\n return (\n <ExtensionContextBase.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContextBase.Provider>\n )\n}\n"],"file":"ExtensionProviderBase.js"}
@@ -1,4 +1,3 @@
1
1
  import * as H from 'history';
2
2
  import type { RouteData } from '../ExtensionConnector/types';
3
3
  export declare const getInitialRouteEntries: (initialRouteData?: RouteData | undefined) => H.LocationDescriptor<unknown>[] | undefined;
4
- export declare const dummyExtensionSdkReact: () => string;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.dummyExtensionSdkReact = exports.getInitialRouteEntries = void 0;
6
+ exports.getInitialRouteEntries = void 0;
7
7
 
8
8
  var H = _interopRequireWildcard(require("history"));
9
9
 
@@ -34,10 +34,4 @@ var getInitialRouteEntries = initialRouteData => {
34
34
  };
35
35
 
36
36
  exports.getInitialRouteEntries = getInitialRouteEntries;
37
-
38
- var dummyExtensionSdkReact = () => {
39
- return 'dummy';
40
- };
41
-
42
- exports.dummyExtensionSdkReact = dummyExtensionSdkReact;
43
37
  //# sourceMappingURL=get_initial_route_entries.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/utils/get_initial_route_entries.ts"],"names":["getInitialRouteEntries","initialRouteData","initialEntries","route","routeState","H","parsePath","state","dummyExtensionSdkReact"],"mappings":";;;;;;;AA0BA;;;;;;;;;;;;AAGO,IAAMA,sBAAsB,GAAIC,gBAAD,IAAkC;AACtE,MAAIC,cAAJ;;AACA,MAAID,gBAAJ,EAAsB;AACpB,QAAM;AAAEE,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAwBH,gBAA9B;AACAC,IAAAA,cAAc,GAAG,iCAAMG,CAAC,CAACC,SAAF,CAAYH,KAAZ,CAAN;AAA0BI,MAAAA,KAAK,EAAEH;AAAjC,OAAjB;AACD;;AACD,SAAOF,cAAP;AACD,CAPM;;;;AASA,IAAMM,sBAAsB,GAAG,MAAM;AAE1C,SAAO,OAAP;AACD,CAHM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport * as H from 'history'\nimport type { RouteData } from '../ExtensionConnector/types'\n\nexport const getInitialRouteEntries = (initialRouteData?: RouteData) => {\n let initialEntries: H.LocationDescriptor[] | undefined\n if (initialRouteData) {\n const { route, routeState } = initialRouteData\n initialEntries = [{ ...H.parsePath(route), state: routeState }]\n }\n return initialEntries\n}\n\nexport const dummyExtensionSdkReact = () => {\n // Force publish - to be deleted\n return 'dummy'\n}\n"],"file":"get_initial_route_entries.js"}
1
+ {"version":3,"sources":["../../../src/components/utils/get_initial_route_entries.ts"],"names":["getInitialRouteEntries","initialRouteData","initialEntries","route","routeState","H","parsePath","state"],"mappings":";;;;;;;AA0BA;;;;;;;;;;;;AAGO,IAAMA,sBAAsB,GAAIC,gBAAD,IAAkC;AACtE,MAAIC,cAAJ;;AACA,MAAID,gBAAJ,EAAsB;AACpB,QAAM;AAAEE,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAwBH,gBAA9B;AACAC,IAAAA,cAAc,GAAG,iCAAMG,CAAC,CAACC,SAAF,CAAYH,KAAZ,CAAN;AAA0BI,MAAAA,KAAK,EAAEH;AAAjC,OAAjB;AACD;;AACD,SAAOF,cAAP;AACD,CAPM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport * as H from 'history'\nimport type { RouteData } from '../ExtensionConnector/types'\n\nexport const getInitialRouteEntries = (initialRouteData?: RouteData) => {\n let initialEntries: H.LocationDescriptor[] | undefined\n if (initialRouteData) {\n const { route, routeState } = initialRouteData\n initialEntries = [{ ...H.parsePath(route), state: routeState }]\n }\n return initialEntries\n}\n"],"file":"get_initial_route_entries.js"}
@@ -2,14 +2,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
2
2
 
3
3
  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); }); }; }
4
4
 
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
-
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
-
9
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
-
11
5
  import isEqual from 'lodash/isEqual';
12
- import React, { useState } from 'react';
6
+ import React, { useEffect, useState, useCallback, useRef } from 'react';
13
7
  import { MemoryRouter } from 'react-router-dom';
14
8
  import { connectExtensionHost } from '@looker/extension-sdk';
15
9
  import { ErrorMessage } from '../ErrorMessage';
@@ -30,23 +24,25 @@ export var ExtensionConnector = _ref => {
30
24
  chattyTimeout,
31
25
  children
32
26
  } = _ref;
27
+ var contextDataRef = useRef(contextData);
33
28
  var [initialRouteData, setInitialRouteData] = useState();
34
29
  var [hostRouteData, setHostRouteData] = useState({
35
30
  route: ''
36
31
  });
37
32
  var [initializing, setInitializing] = useState(true);
38
33
  var [initializeError, setInitializeError] = useState();
39
-
40
- var setInitialRouteAndRouteState = (route, routeState) => {
34
+ useEffect(() => {
35
+ contextDataRef.current = contextData;
36
+ }, [contextData]);
37
+ var setInitialRouteAndRouteState = useCallback((route, routeState) => {
41
38
  if (hostTracksRoute) {
42
39
  setInitialRouteData({
43
40
  route,
44
41
  routeState
45
42
  });
46
43
  }
47
- };
48
-
49
- var hostChangedRoute = (_route, routeState) => {
44
+ }, [hostTracksRoute, setInitialRouteData]);
45
+ var hostChangedRoute = useCallback((_route, routeState) => {
50
46
  var route = _route.startsWith('/') ? _route : '/' + _route;
51
47
 
52
48
  if (route !== hostRouteData.route || !isEqual(routeState, hostRouteData.routeState)) {
@@ -54,32 +50,29 @@ export var ExtensionConnector = _ref => {
54
50
  route,
55
51
  routeState
56
52
  });
57
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
53
+ updateContextData({
58
54
  route,
59
55
  routeState
60
- }));
56
+ });
61
57
  }
62
- };
63
-
64
- var visualizationDataReceivedCallback = visualizationData => {
65
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
58
+ }, [setHostRouteData, updateContextData]);
59
+ var visualizationDataReceivedCallback = useCallback(visualizationData => {
60
+ updateContextData({
66
61
  visualizationData
67
- }));
68
- };
69
-
70
- var tileHostDataChangedCallback = partialHostData => {
71
- if (contextData.tileSDK) {
62
+ });
63
+ }, [updateContextData]);
64
+ var tileHostDataChangedCallback = useCallback(partialHostData => {
65
+ if (contextDataRef.current.tileSDK) {
72
66
  var {
73
67
  tileSDK
74
- } = contextData;
68
+ } = contextDataRef.current;
75
69
  tileSDK.tileHostDataChanged(partialHostData);
76
- updateContextData(_objectSpread(_objectSpread({}, contextData), {}, {
70
+ updateContextData({
77
71
  tileHostData: tileSDK.tileHostData
78
- }));
72
+ });
79
73
  }
80
- };
81
-
82
- React.useEffect(() => {
74
+ }, [updateContextData]);
75
+ useEffect(() => {
83
76
  var initialize = function () {
84
77
  var _ref2 = _asyncToGenerator(function* () {
85
78
  try {
@@ -110,7 +103,7 @@ export var ExtensionConnector = _ref => {
110
103
  unloadedCallback();
111
104
  };
112
105
  }, []);
113
- React.useEffect(() => {
106
+ useEffect(() => {
114
107
  return initializing ? undefined : setupClosePopoversListener(contextData.extensionSDK);
115
108
  }, [initializing]);
116
109
  return React.createElement(React.Fragment, null, initializing ? loadingComponent : React.createElement(React.Fragment, null, initializeError ? React.createElement(ErrorMessage, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ExtensionConnector/ExtensionConnector.tsx"],"names":["isEqual","React","useState","MemoryRouter","connectExtensionHost","ErrorMessage","RouteChangeListener","getInitialRouteEntries","setupClosePopoversListener","ExtensionConnector","contextData","updateContextData","connectedCallback","unloadedCallback","onPathnameChange","onRouteChange","hostTracksRoute","loadingComponent","requiredLookerVersion","chattyTimeout","children","initialRouteData","setInitialRouteData","hostRouteData","setHostRouteData","route","initializing","setInitializing","initializeError","setInitializeError","setInitialRouteAndRouteState","routeState","hostChangedRoute","_route","startsWith","visualizationDataReceivedCallback","visualizationData","tileHostDataChangedCallback","partialHostData","tileSDK","tileHostDataChanged","tileHostData","useEffect","initialize","extensionHost","setInitialRoute","error","console","message","undefined","extensionSDK"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport isEqual from 'lodash/isEqual'\nimport React, { useState } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\nimport type { RawVisualizationData, TileHostData } from '@looker/extension-sdk'\nimport { connectExtensionHost } from '@looker/extension-sdk'\nimport { ErrorMessage } from '../ErrorMessage'\nimport { RouteChangeListener } from '../RouteChangeListener'\nimport { getInitialRouteEntries } from '../utils/get_initial_route_entries'\nimport { setupClosePopoversListener } from '../utils/setup_close_popovers'\nimport type { ExtensionConnectorProps, RouteData } from './types'\n\n/**\n * ExtensionConnector component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport const ExtensionConnector: React.FC<ExtensionConnectorProps> = ({\n contextData,\n updateContextData,\n connectedCallback,\n unloadedCallback,\n onPathnameChange,\n onRouteChange,\n hostTracksRoute = true,\n loadingComponent,\n requiredLookerVersion,\n chattyTimeout,\n children,\n}) => {\n const [initialRouteData, setInitialRouteData] = useState<RouteData>()\n const [hostRouteData, setHostRouteData] = useState<RouteData>({ route: '' })\n const [initializing, setInitializing] = useState(true)\n const [initializeError, setInitializeError] = useState<string>()\n\n const setInitialRouteAndRouteState = (route: string, routeState?: any) => {\n if (hostTracksRoute) {\n setInitialRouteData({ route, routeState })\n }\n }\n\n const hostChangedRoute = (_route: string, routeState?: any) => {\n const route = _route.startsWith('/') ? _route : '/' + _route\n if (\n route !== hostRouteData.route ||\n !isEqual(routeState, hostRouteData.routeState)\n ) {\n setHostRouteData({ route, routeState })\n updateContextData({\n ...contextData,\n route,\n routeState,\n })\n }\n }\n\n const visualizationDataReceivedCallback = (\n visualizationData: RawVisualizationData\n ) => {\n updateContextData({\n ...contextData,\n visualizationData,\n })\n }\n\n const tileHostDataChangedCallback = (\n partialHostData: Partial<TileHostData>\n ) => {\n if (contextData.tileSDK) {\n const { tileSDK } = contextData\n tileSDK.tileHostDataChanged(partialHostData)\n updateContextData({\n ...contextData,\n tileHostData: tileSDK.tileHostData,\n })\n }\n }\n\n React.useEffect(() => {\n const initialize = async () => {\n try {\n const extensionHost = await connectExtensionHost({\n setInitialRoute: setInitialRouteAndRouteState,\n requiredLookerVersion,\n hostChangedRoute,\n chattyTimeout,\n visualizationDataReceivedCallback,\n tileHostDataChangedCallback,\n })\n connectedCallback(extensionHost)\n setInitializing(false)\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error)\n setInitializeError(error.message || 'Extension failed to initialize.')\n setInitializing(false)\n }\n }\n initialize()\n return () => {\n unloadedCallback()\n }\n }, [])\n\n React.useEffect(() => {\n return initializing\n ? undefined\n : setupClosePopoversListener(contextData.extensionSDK)\n }, [initializing])\n\n return (\n <>\n {initializing ? (\n loadingComponent\n ) : (\n <>\n {initializeError ? (\n <ErrorMessage errorMessage={initializeError} />\n ) : (\n <>\n {hostTracksRoute ? (\n <MemoryRouter\n initialEntries={getInitialRouteEntries(initialRouteData)}\n >\n <RouteChangeListener\n onRouteChange={onRouteChange}\n onPathnameChange={onPathnameChange}\n extensionHost={contextData!.extensionSDK}\n hostRoute={hostRouteData.route}\n hostRouteState={hostRouteData.routeState}\n />\n {children}\n </MemoryRouter>\n ) : (\n <>{children}</>\n )}\n </>\n )}\n </>\n )}\n </>\n )\n}\n"],"file":"ExtensionConnector.js"}
1
+ {"version":3,"sources":["../../../../src/components/ExtensionConnector/ExtensionConnector.tsx"],"names":["isEqual","React","useEffect","useState","useCallback","useRef","MemoryRouter","connectExtensionHost","ErrorMessage","RouteChangeListener","getInitialRouteEntries","setupClosePopoversListener","ExtensionConnector","contextData","updateContextData","connectedCallback","unloadedCallback","onPathnameChange","onRouteChange","hostTracksRoute","loadingComponent","requiredLookerVersion","chattyTimeout","children","contextDataRef","initialRouteData","setInitialRouteData","hostRouteData","setHostRouteData","route","initializing","setInitializing","initializeError","setInitializeError","current","setInitialRouteAndRouteState","routeState","hostChangedRoute","_route","startsWith","visualizationDataReceivedCallback","visualizationData","tileHostDataChangedCallback","partialHostData","tileSDK","tileHostDataChanged","tileHostData","initialize","extensionHost","setInitialRoute","error","console","message","undefined","extensionSDK"],"mappings":";;;;AA0BA,OAAOA,OAAP,MAAoB,gBAApB;AACA,OAAOC,KAAP,IAAgBC,SAAhB,EAA2BC,QAA3B,EAAqCC,WAArC,EAAkDC,MAAlD,QAAgE,OAAhE;AACA,SAASC,YAAT,QAA6B,kBAA7B;AAEA,SAASC,oBAAT,QAAqC,uBAArC;AACA,SAASC,YAAT,QAA6B,iBAA7B;AACA,SAASC,mBAAT,QAAoC,wBAApC;AACA,SAASC,sBAAT,QAAuC,oCAAvC;AACA,SAASC,0BAAT,QAA2C,+BAA3C;AAOA,OAAO,IAAMC,kBAAqD,GAAG,QAY/D;AAAA,MAZgE;AACpEC,IAAAA,WADoE;AAEpEC,IAAAA,iBAFoE;AAGpEC,IAAAA,iBAHoE;AAIpEC,IAAAA,gBAJoE;AAKpEC,IAAAA,gBALoE;AAMpEC,IAAAA,aANoE;AAOpEC,IAAAA,eAAe,GAAG,IAPkD;AAQpEC,IAAAA,gBARoE;AASpEC,IAAAA,qBAToE;AAUpEC,IAAAA,aAVoE;AAWpEC,IAAAA;AAXoE,GAYhE;AACJ,MAAMC,cAAc,GAAGnB,MAAM,CAACQ,WAAD,CAA7B;AACA,MAAM,CAACY,gBAAD,EAAmBC,mBAAnB,IAA0CvB,QAAQ,EAAxD;AACA,MAAM,CAACwB,aAAD,EAAgBC,gBAAhB,IAAoCzB,QAAQ,CAAY;AAAE0B,IAAAA,KAAK,EAAE;AAAT,GAAZ,CAAlD;AACA,MAAM,CAACC,YAAD,EAAeC,eAAf,IAAkC5B,QAAQ,CAAC,IAAD,CAAhD;AACA,MAAM,CAAC6B,eAAD,EAAkBC,kBAAlB,IAAwC9B,QAAQ,EAAtD;AAEAD,EAAAA,SAAS,CAAC,MAAM;AACdsB,IAAAA,cAAc,CAACU,OAAf,GAAyBrB,WAAzB;AACD,GAFQ,EAEN,CAACA,WAAD,CAFM,CAAT;AAIA,MAAMsB,4BAA4B,GAAG/B,WAAW,CAC9C,CAACyB,KAAD,EAAgBO,UAAhB,KAAqC;AACnC,QAAIjB,eAAJ,EAAqB;AACnBO,MAAAA,mBAAmB,CAAC;AAAEG,QAAAA,KAAF;AAASO,QAAAA;AAAT,OAAD,CAAnB;AACD;AACF,GAL6C,EAM9C,CAACjB,eAAD,EAAkBO,mBAAlB,CAN8C,CAAhD;AASA,MAAMW,gBAAgB,GAAGjC,WAAW,CAClC,CAACkC,MAAD,EAAiBF,UAAjB,KAAsC;AACpC,QAAMP,KAAK,GAAGS,MAAM,CAACC,UAAP,CAAkB,GAAlB,IAAyBD,MAAzB,GAAkC,MAAMA,MAAtD;;AACA,QACET,KAAK,KAAKF,aAAa,CAACE,KAAxB,IACA,CAAC7B,OAAO,CAACoC,UAAD,EAAaT,aAAa,CAACS,UAA3B,CAFV,EAGE;AACAR,MAAAA,gBAAgB,CAAC;AAAEC,QAAAA,KAAF;AAASO,QAAAA;AAAT,OAAD,CAAhB;AACAtB,MAAAA,iBAAiB,CAAC;AAChBe,QAAAA,KADgB;AAEhBO,QAAAA;AAFgB,OAAD,CAAjB;AAID;AACF,GAbiC,EAclC,CAACR,gBAAD,EAAmBd,iBAAnB,CAdkC,CAApC;AAiBA,MAAM0B,iCAAiC,GAAGpC,WAAW,CAClDqC,iBAAD,IAA6C;AAC3C3B,IAAAA,iBAAiB,CAAC;AAChB2B,MAAAA;AADgB,KAAD,CAAjB;AAGD,GALkD,EAMnD,CAAC3B,iBAAD,CANmD,CAArD;AASA,MAAM4B,2BAA2B,GAAGtC,WAAW,CAC5CuC,eAAD,IAA4C;AAC1C,QAAInB,cAAc,CAACU,OAAf,CAAuBU,OAA3B,EAAoC;AAClC,UAAM;AAAEA,QAAAA;AAAF,UAAcpB,cAAc,CAACU,OAAnC;AACAU,MAAAA,OAAO,CAACC,mBAAR,CAA4BF,eAA5B;AACA7B,MAAAA,iBAAiB,CAAC;AAChBgC,QAAAA,YAAY,EAAEF,OAAO,CAACE;AADN,OAAD,CAAjB;AAGD;AACF,GAT4C,EAU7C,CAAChC,iBAAD,CAV6C,CAA/C;AAaAZ,EAAAA,SAAS,CAAC,MAAM;AACd,QAAM6C,UAAU;AAAA,oCAAG,aAAY;AAC7B,YAAI;AACF,cAAMC,aAAa,SAASzC,oBAAoB,CAAC;AAC/C0C,YAAAA,eAAe,EAAEd,4BAD8B;AAE/Cd,YAAAA,qBAF+C;AAG/CgB,YAAAA,gBAH+C;AAI/Cf,YAAAA,aAJ+C;AAK/CkB,YAAAA,iCAL+C;AAM/CE,YAAAA;AAN+C,WAAD,CAAhD;AAQA3B,UAAAA,iBAAiB,CAACiC,aAAD,CAAjB;AACAjB,UAAAA,eAAe,CAAC,KAAD,CAAf;AACD,SAXD,CAWE,OAAOmB,KAAP,EAAmB;AAEnBC,UAAAA,OAAO,CAACD,KAAR,CAAcA,KAAd;AACAjB,UAAAA,kBAAkB,CAACiB,KAAK,CAACE,OAAN,IAAiB,iCAAlB,CAAlB;AACArB,UAAAA,eAAe,CAAC,KAAD,CAAf;AACD;AACF,OAlBe;;AAAA,sBAAVgB,UAAU;AAAA;AAAA;AAAA,OAAhB;;AAmBAA,IAAAA,UAAU;AACV,WAAO,MAAM;AACX/B,MAAAA,gBAAgB;AACjB,KAFD;AAGD,GAxBQ,EAwBN,EAxBM,CAAT;AA0BAd,EAAAA,SAAS,CAAC,MAAM;AACd,WAAO4B,YAAY,GACfuB,SADe,GAEf1C,0BAA0B,CAACE,WAAW,CAACyC,YAAb,CAF9B;AAGD,GAJQ,EAIN,CAACxB,YAAD,CAJM,CAAT;AAMA,SACE,0CACGA,YAAY,GACXV,gBADW,GAGX,0CACGY,eAAe,GACd,oBAAC,YAAD;AAAc,IAAA,YAAY,EAAEA;AAA5B,IADc,GAGd,0CACGb,eAAe,GACd,oBAAC,YAAD;AACE,IAAA,cAAc,EAAET,sBAAsB,CAACe,gBAAD;AADxC,KAGE,oBAAC,mBAAD;AACE,IAAA,aAAa,EAAEP,aADjB;AAEE,IAAA,gBAAgB,EAAED,gBAFpB;AAGE,IAAA,aAAa,EAAEJ,WAAW,CAAEyC,YAH9B;AAIE,IAAA,SAAS,EAAE3B,aAAa,CAACE,KAJ3B;AAKE,IAAA,cAAc,EAAEF,aAAa,CAACS;AALhC,IAHF,EAUGb,QAVH,CADc,GAcd,0CAAGA,QAAH,CAfJ,CAJJ,CAJJ,CADF;AAgCD,CAvIM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport isEqual from 'lodash/isEqual'\nimport React, { useEffect, useState, useCallback, useRef } from 'react'\nimport { MemoryRouter } from 'react-router-dom'\nimport type { RawVisualizationData, TileHostData } from '@looker/extension-sdk'\nimport { connectExtensionHost } from '@looker/extension-sdk'\nimport { ErrorMessage } from '../ErrorMessage'\nimport { RouteChangeListener } from '../RouteChangeListener'\nimport { getInitialRouteEntries } from '../utils/get_initial_route_entries'\nimport { setupClosePopoversListener } from '../utils/setup_close_popovers'\nimport type { ExtensionConnectorProps, RouteData } from './types'\n\n/**\n * ExtensionConnector component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport const ExtensionConnector: React.FC<ExtensionConnectorProps> = ({\n contextData,\n updateContextData,\n connectedCallback,\n unloadedCallback,\n onPathnameChange,\n onRouteChange,\n hostTracksRoute = true,\n loadingComponent,\n requiredLookerVersion,\n chattyTimeout,\n children,\n}) => {\n const contextDataRef = useRef(contextData)\n const [initialRouteData, setInitialRouteData] = useState<RouteData>()\n const [hostRouteData, setHostRouteData] = useState<RouteData>({ route: '' })\n const [initializing, setInitializing] = useState(true)\n const [initializeError, setInitializeError] = useState<string>()\n\n useEffect(() => {\n contextDataRef.current = contextData\n }, [contextData])\n\n const setInitialRouteAndRouteState = useCallback(\n (route: string, routeState?: any) => {\n if (hostTracksRoute) {\n setInitialRouteData({ route, routeState })\n }\n },\n [hostTracksRoute, setInitialRouteData]\n )\n\n const hostChangedRoute = useCallback(\n (_route: string, routeState?: any) => {\n const route = _route.startsWith('/') ? _route : '/' + _route\n if (\n route !== hostRouteData.route ||\n !isEqual(routeState, hostRouteData.routeState)\n ) {\n setHostRouteData({ route, routeState })\n updateContextData({\n route,\n routeState,\n })\n }\n },\n [setHostRouteData, updateContextData]\n )\n\n const visualizationDataReceivedCallback = useCallback(\n (visualizationData: RawVisualizationData) => {\n updateContextData({\n visualizationData,\n })\n },\n [updateContextData]\n )\n\n const tileHostDataChangedCallback = useCallback(\n (partialHostData: Partial<TileHostData>) => {\n if (contextDataRef.current.tileSDK) {\n const { tileSDK } = contextDataRef.current\n tileSDK.tileHostDataChanged(partialHostData)\n updateContextData({\n tileHostData: tileSDK.tileHostData,\n })\n }\n },\n [updateContextData]\n )\n\n useEffect(() => {\n const initialize = async () => {\n try {\n const extensionHost = await connectExtensionHost({\n setInitialRoute: setInitialRouteAndRouteState,\n requiredLookerVersion,\n hostChangedRoute,\n chattyTimeout,\n visualizationDataReceivedCallback,\n tileHostDataChangedCallback,\n })\n connectedCallback(extensionHost)\n setInitializing(false)\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error)\n setInitializeError(error.message || 'Extension failed to initialize.')\n setInitializing(false)\n }\n }\n initialize()\n return () => {\n unloadedCallback()\n }\n }, [])\n\n useEffect(() => {\n return initializing\n ? undefined\n : setupClosePopoversListener(contextData.extensionSDK)\n }, [initializing])\n\n return (\n <>\n {initializing ? (\n loadingComponent\n ) : (\n <>\n {initializeError ? (\n <ErrorMessage errorMessage={initializeError} />\n ) : (\n <>\n {hostTracksRoute ? (\n <MemoryRouter\n initialEntries={getInitialRouteEntries(initialRouteData)}\n >\n <RouteChangeListener\n onRouteChange={onRouteChange}\n onPathnameChange={onPathnameChange}\n extensionHost={contextData!.extensionSDK}\n hostRoute={hostRouteData.route}\n hostRouteState={hostRouteData.routeState}\n />\n {children}\n </MemoryRouter>\n ) : (\n <>{children}</>\n )}\n </>\n )}\n </>\n )}\n </>\n )\n}\n"],"file":"ExtensionConnector.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ExtensionProvider/ExtensionProvider.tsx"],"names":["React","useState","LookerExtensionSDK","ExtensionConnector","registerCore31SDK","unregisterCore31SDK","registerCore40SDK","unregisterCore40SDK","ExtensionContext","createContext","undefined","ExtensionProvider","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","core31SDK","create31Client","core40SDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","coreSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,kBAAT,QAAmC,uBAAnC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AAMA,OAAO,IAAMC,gBAAgB,GAAGR,KAAK,CAACS,aAAN,CAC9BC,SAD8B,CAAzB;AASP,OAAO,IAAMC,iBAAmD,GAAG,QAG7D;AAAA,MAH8D;AAClEC,IAAAA;AADkE,GAG9D;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCd,QAAQ,CAChD,EADgD,CAAlD;;AAGA,MAAMe,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,SAAsB,GAC1BhB,kBAAkB,CAACiB,cAAnB,CAAkCF,aAAlC,CADF;AAEA,QAAMG,SAAsB,GAC1BlB,kBAAkB,CAACmB,cAAnB,CAAkCJ,aAAlC,CADF;AAGAb,IAAAA,iBAAiB,CAACc,SAAD,CAAjB;AACAZ,IAAAA,iBAAiB,CAACc,SAAD,CAAjB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDP,aAAtD;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAR,IAAAA,gBAAgB,CAAEY,aAAD,IAAyC;AACxD,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEX,aAFhB;AAGEY,QAAAA,OAAO,EAAEX,SAHX;AAIEA,QAAAA,SAJF;AAKEE,QAAAA,SALF;AAMEE,QAAAA,gBANF;AAOEC,QAAAA,OAPF;AAQEE,QAAAA,iBARF;AASEC,QAAAA,YATF;AAUEF,QAAAA;AAVF;AAYD,KAbe,CAAhB;AAcD,GAzBD;;AA2BA,MAAMM,gBAAgB,GAAG,MAAM;AAC7BzB,IAAAA,mBAAmB;AACnBE,IAAAA,mBAAmB;AACpB,GAHD;;AAKA,MAAMwB,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1EjB,IAAAA,gBAAgB,CAAEY,aAAD,IAAyC;AACxD,6CACKA,aADL,GAEKK,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAElB;AAAlC,KACE,oBAAC,kBAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEe,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGlB,QAPH,CADF,CADF;AAaD,CA7DM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { Looker31SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore31SDK, unregisterCore31SDK } from '../../sdk/core_sdk_31'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\nimport type { ExtensionContextData } from './types'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext = React.createContext<ExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n)\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n * @deprecated use ExtensionProvider40\n */\nexport const ExtensionProvider: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<ExtensionContextData>(\n {} as ExtensionContextData\n )\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const core31SDK: Looker31SDK =\n LookerExtensionSDK.create31Client(extensionHost)\n const core40SDK: Looker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n // Provide global access for use by redux if needed\n registerCore31SDK(core31SDK)\n registerCore40SDK(core40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK: core31SDK,\n core31SDK,\n core40SDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore31SDK()\n unregisterCore40SDK()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext.Provider>\n )\n}\n"],"file":"ExtensionProvider.js"}
1
+ {"version":3,"sources":["../../../../src/components/ExtensionProvider/ExtensionProvider.tsx"],"names":["React","useState","LookerExtensionSDK","ExtensionConnector","registerCore31SDK","unregisterCore31SDK","registerCore40SDK","unregisterCore40SDK","ExtensionContext","createContext","undefined","ExtensionProvider","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","core31SDK","create31Client","core40SDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","coreSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,kBAAT,QAAmC,uBAAnC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AAMA,OAAO,IAAMC,gBAAgB,GAAGR,KAAK,CAACS,aAAN,CAC9BC,SAD8B,CAAzB;AASP,OAAO,IAAMC,iBAAmD,GAAG,QAG7D;AAAA,MAH8D;AAClEC,IAAAA;AADkE,GAG9D;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCd,QAAQ,CAChD,EADgD,CAAlD;;AAGA,MAAMe,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,SAAsB,GAC1BhB,kBAAkB,CAACiB,cAAnB,CAAkCF,aAAlC,CADF;AAEA,QAAMG,SAAsB,GAC1BlB,kBAAkB,CAACmB,cAAnB,CAAkCJ,aAAlC,CADF;AAGAb,IAAAA,iBAAiB,CAACc,SAAD,CAAjB;AACAZ,IAAAA,iBAAiB,CAACc,SAAD,CAAjB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDP,aAAtD;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAR,IAAAA,gBAAgB,CAAEY,aAAD,IAAyC;AACxD,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEX,aAFhB;AAGEY,QAAAA,OAAO,EAAEX,SAHX;AAIEA,QAAAA,SAJF;AAKEE,QAAAA,SALF;AAMEE,QAAAA,gBANF;AAOEC,QAAAA,OAPF;AAQEE,QAAAA,iBARF;AASEC,QAAAA,YATF;AAUEF,QAAAA;AAVF;AAYD,KAbe,CAAhB;AAcD,GAzBD;;AA2BA,MAAMM,gBAAgB,GAAG,MAAM;AAC7BzB,IAAAA,mBAAmB;AACnBE,IAAAA,mBAAmB;AACpB,GAHD;;AAKA,MAAMwB,iBAAiB,GACrBC,kBADwB,IAErB;AACHjB,IAAAA,gBAAgB,CAAEY,aAAD,IAAyC;AACxD,6CACKA,aADL,GAEKK,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,oBAAC,gBAAD,CAAkB,QAAlB;AAA2B,IAAA,KAAK,EAAElB;AAAlC,KACE,oBAAC,kBAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEe,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGlB,QAPH,CADF,CADF;AAaD,CA/DM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { Looker31SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore31SDK, unregisterCore31SDK } from '../../sdk/core_sdk_31'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\nimport type { ExtensionContextData } from './types'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext = React.createContext<ExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n)\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n * @deprecated use ExtensionProvider40\n */\nexport const ExtensionProvider: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<ExtensionContextData>(\n {} as ExtensionContextData\n )\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const core31SDK: Looker31SDK =\n LookerExtensionSDK.create31Client(extensionHost)\n const core40SDK: Looker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n // Provide global access for use by redux if needed\n registerCore31SDK(core31SDK)\n registerCore40SDK(core40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK: core31SDK,\n core31SDK,\n core40SDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore31SDK()\n unregisterCore40SDK()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext.Provider>\n )\n}\n"],"file":"ExtensionProvider.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ExtensionProvider2/ExtensionProvider2.tsx"],"names":["React","useState","SdkConnection","LookerExtensionSDK","ExtensionConnector","registerCoreSDK2","unregisterCoreSDK2","ExtensionContext2","createContext","undefined","ExtensionProvider2","props","children","type","rest","extensionData","setExtensionData","apiVersion","ApiVersion","connectedCallback","extensionHost","coreSDK","createClient","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,aAAT,QAA8B,uBAA9B;AACA,SAASC,kBAAT,QAAmC,aAAnC;AAKA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,gBAAT,EAA2BC,kBAA3B,QAAqD,qBAArD;AASA,OAAO,IAAMC,iBAAiB,GAAGP,KAAK,CAACQ,aAAN,CAG/BC,SAH+B,CAA1B;AAcP,OAAO,SAASC,kBAAT,CAA+BC,KAA/B,EAAkE;AACvE,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA8BF,KAApC;AAAA,MAA2BG,IAA3B,4BAAoCH,KAApC;;AACA,MAAM,CAACI,aAAD,EAAgBC,gBAAhB,IAAoCf,QAAQ,CAChD,EADgD,CAAlD;AAGA,MAAMgB,UAAU,GAAIJ,IAAD,CAAcK,UAAjC;;AAEA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAIC,OAAJ;;AACA,QAAIJ,UAAJ,EAAgB;AACdI,MAAAA,OAAO,GAAGlB,kBAAkB,CAACmB,YAAnB,CACR,IAAIpB,aAAJ,CAAkBkB,aAAlB,EAAiCH,UAAjC,CADQ,EAERJ,IAFQ,CAAV;AAID;;AACDR,IAAAA,gBAAgB,CAACgB,OAAD,CAAhB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDL,aAAtD;AACA,QAAM;AAAEM,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAR,IAAAA,gBAAgB,CAAEY,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAET,aAFhB;AAGEC,QAAAA,OAHF;AAIEE,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAxBD;;AA0BA,MAAMK,gBAAgB,GAAG,MAAM;AAC7BxB,IAAAA,kBAAkB;AACnB,GAFD;;AAIA,MAAMyB,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1EhB,IAAAA,gBAAgB,CAAEY,aAAD,IAA6C;AAC5D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,oBAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEjB;AAAnC,KACE,oBAAC,kBAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEI,iBAHrB;AAIE,IAAA,iBAAiB,EAAEY,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGlB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { SdkConnection } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCoreSDK2, unregisterCoreSDK2 } from '../../sdk/core_sdk2'\n\nexport interface ExtensionContextData2<T> extends BaseExtensionContextData {\n coreSDK: T\n}\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext2 = React.createContext<\n ExtensionContextData2<any>\n>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider2Props<T> extends ExtensionProviderProps {\n type: T\n}\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport function ExtensionProvider2<T>(props: ExtensionProvider2Props<T>) {\n const { children, type, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData2<T>>(\n {} as ExtensionContextData2<T>\n )\n const apiVersion = (type as any).ApiVersion\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n let coreSDK: any\n if (apiVersion) {\n coreSDK = LookerExtensionSDK.createClient(\n new SdkConnection(extensionHost, apiVersion),\n type as any\n )\n }\n registerCoreSDK2(coreSDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCoreSDK2()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData2<T>) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext2.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext2.Provider>\n )\n}\n"],"file":"ExtensionProvider2.js"}
1
+ {"version":3,"sources":["../../../../src/components/ExtensionProvider2/ExtensionProvider2.tsx"],"names":["React","useState","SdkConnection","LookerExtensionSDK","ExtensionConnector","registerCoreSDK2","unregisterCoreSDK2","ExtensionContext2","createContext","undefined","ExtensionProvider2","props","children","type","rest","extensionData","setExtensionData","apiVersion","ApiVersion","connectedCallback","extensionHost","coreSDK","createClient","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,aAAT,QAA8B,uBAA9B;AACA,SAASC,kBAAT,QAAmC,aAAnC;AAKA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,gBAAT,EAA2BC,kBAA3B,QAAqD,qBAArD;AASA,OAAO,IAAMC,iBAAiB,GAAGP,KAAK,CAACQ,aAAN,CAG/BC,SAH+B,CAA1B;AAcP,OAAO,SAASC,kBAAT,CAA+BC,KAA/B,EAAkE;AACvE,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA8BF,KAApC;AAAA,MAA2BG,IAA3B,4BAAoCH,KAApC;;AACA,MAAM,CAACI,aAAD,EAAgBC,gBAAhB,IAAoCf,QAAQ,CAChD,EADgD,CAAlD;AAGA,MAAMgB,UAAU,GAAIJ,IAAD,CAAcK,UAAjC;;AAEA,MAAMC,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAIC,OAAJ;;AACA,QAAIJ,UAAJ,EAAgB;AACdI,MAAAA,OAAO,GAAGlB,kBAAkB,CAACmB,YAAnB,CACR,IAAIpB,aAAJ,CAAkBkB,aAAlB,EAAiCH,UAAjC,CADQ,EAERJ,IAFQ,CAAV;AAID;;AACDR,IAAAA,gBAAgB,CAACgB,OAAD,CAAhB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDL,aAAtD;AACA,QAAM;AAAEM,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAR,IAAAA,gBAAgB,CAAEY,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAET,aAFhB;AAGEC,QAAAA,OAHF;AAIEE,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAxBD;;AA0BA,MAAMK,gBAAgB,GAAG,MAAM;AAC7BxB,IAAAA,kBAAkB;AACnB,GAFD;;AAIA,MAAMyB,iBAAiB,GACrBC,kBADwB,IAErB;AACHhB,IAAAA,gBAAgB,CAAEY,aAAD,IAA6C;AAC5D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,oBAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEjB;AAAnC,KACE,oBAAC,kBAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEI,iBAHrB;AAIE,IAAA,iBAAiB,EAAEY,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGlB,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { SdkConnection } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCoreSDK2, unregisterCoreSDK2 } from '../../sdk/core_sdk2'\n\nexport interface ExtensionContextData2<T> extends BaseExtensionContextData {\n coreSDK: T\n}\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContext2 = React.createContext<\n ExtensionContextData2<any>\n>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider2Props<T> extends ExtensionProviderProps {\n type: T\n}\n\n/**\n * ExtensionProvider component. Provides access to the extension API and SDK (use\n * ExtensionContext) and react routing services.\n */\nexport function ExtensionProvider2<T>(props: ExtensionProvider2Props<T>) {\n const { children, type, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData2<T>>(\n {} as ExtensionContextData2<T>\n )\n const apiVersion = (type as any).ApiVersion\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n let coreSDK: any\n if (apiVersion) {\n coreSDK = LookerExtensionSDK.createClient(\n new SdkConnection(extensionHost, apiVersion),\n type as any\n )\n }\n registerCoreSDK2(coreSDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCoreSDK2()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData2<T>) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext2.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext2.Provider>\n )\n}\n"],"file":"ExtensionProvider2.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ExtensionProvider40/ExtensionProvider40.tsx"],"names":["React","useState","LookerExtensionSDK","ExtensionConnector","registerCore40SDK","unregisterCore40SDK","ExtensionContext40","createContext","undefined","ExtensionProvider40","props","children","rest","extensionData","setExtensionData","connectedCallback","extensionHost","coreSDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,kBAAT,QAAmC,uBAAnC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AASA,OAAO,IAAMC,kBAAkB,GAAGN,KAAK,CAACO,aAAN,CAChCC,SADgC,CAA3B;AAUP,OAAO,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;AACnE,MAAM;AAAEC,IAAAA;AAAF,MAAwBD,KAA9B;AAAA,MAAqBE,IAArB,4BAA8BF,KAA9B;;AACA,MAAM,CAACG,aAAD,EAAgBC,gBAAhB,IAAoCb,QAAQ,CAChD,EADgD,CAAlD;;AAIA,MAAMc,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,OAAqB,GACzBf,kBAAkB,CAACgB,cAAnB,CAAkCF,aAAlC,CADF;AAEAZ,IAAAA,iBAAiB,CAACa,OAAD,CAAjB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDL,aAAtD;AACA,QAAM;AAAEM,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAN,IAAAA,gBAAgB,CAAEU,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAET,aAFhB;AAGEC,QAAAA,OAHF;AAIEE,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAnBD;;AAqBA,MAAMK,gBAAgB,GAAG,MAAM;AAC7BrB,IAAAA,mBAAmB;AACpB,GAFD;;AAIA,MAAMsB,iBAAiB,GAAIC,kBAAD,IAAkD;AAC1Ed,IAAAA,gBAAgB,CAAEU,aAAD,IAA2C;AAC1D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GAPD;;AASA,SACE,oBAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEf;AAApC,KACE,oBAAC,kBAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEY,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGf,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { ILooker40SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\n\nexport interface ExtensionContextData40 extends BaseExtensionContextData {\n coreSDK: ILooker40SDK\n}\n\n/**\n * React context provider for extension API and Looker SDK 4.0.\n */\nexport const ExtensionContext40 = React.createContext<ExtensionContextData40>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider40Props extends ExtensionProviderProps {}\n\n/**\n * ExtensionProvider40 component. Provides access to the extension API and SDK (use\n * ExtensionContext40) and react routing services.\n */\nexport function ExtensionProvider40(props: ExtensionProvider40Props) {\n const { children, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData40>(\n {} as ExtensionContextData40\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const coreSDK: ILooker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n registerCore40SDK(coreSDK as Looker40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore40SDK()\n }\n\n const updateContextData = (updatedContextData: BaseExtensionContextData) => {\n setExtensionData((previousState: ExtensionContextData40) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext40.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext40.Provider>\n )\n}\n"],"file":"ExtensionProvider40.js"}
1
+ {"version":3,"sources":["../../../../src/components/ExtensionProvider40/ExtensionProvider40.tsx"],"names":["React","useState","LookerExtensionSDK","ExtensionConnector","registerCore40SDK","unregisterCore40SDK","ExtensionContext40","createContext","undefined","ExtensionProvider40","props","children","rest","extensionData","setExtensionData","connectedCallback","extensionHost","coreSDK","create40Client","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","updatedContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAEA,SAASC,kBAAT,QAAmC,uBAAnC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AACA,SAASC,iBAAT,EAA4BC,mBAA5B,QAAuD,uBAAvD;AASA,OAAO,IAAMC,kBAAkB,GAAGN,KAAK,CAACO,aAAN,CAChCC,SADgC,CAA3B;AAUP,OAAO,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;AACnE,MAAM;AAAEC,IAAAA;AAAF,MAAwBD,KAA9B;AAAA,MAAqBE,IAArB,4BAA8BF,KAA9B;;AACA,MAAM,CAACG,aAAD,EAAgBC,gBAAhB,IAAoCb,QAAQ,CAChD,EADgD,CAAlD;;AAIA,MAAMc,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAMC,OAAqB,GACzBf,kBAAkB,CAACgB,cAAnB,CAAkCF,aAAlC,CADF;AAEAZ,IAAAA,iBAAiB,CAACa,OAAD,CAAjB;AACA,QAAM;AAAEE,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDL,aAAtD;AACA,QAAM;AAAEM,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAN,IAAAA,gBAAgB,CAAEU,aAAD,IAAwB;AACvC,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAET,aAFhB;AAGEC,QAAAA,OAHF;AAIEE,QAAAA,gBAJF;AAKEC,QAAAA,OALF;AAMEE,QAAAA,iBANF;AAOEC,QAAAA,YAPF;AAQEF,QAAAA;AARF;AAUD,KAXe,CAAhB;AAYD,GAnBD;;AAqBA,MAAMK,gBAAgB,GAAG,MAAM;AAC7BrB,IAAAA,mBAAmB;AACpB,GAFD;;AAIA,MAAMsB,iBAAiB,GACrBC,kBADwB,IAErB;AACHd,IAAAA,gBAAgB,CAAEU,aAAD,IAA2C;AAC1D,6CACKA,aADL,GAEKI,kBAFL;AAID,KALe,CAAhB;AAMD,GATD;;AAWA,SACE,oBAAC,kBAAD,CAAoB,QAApB;AAA6B,IAAA,KAAK,EAAEf;AAApC,KACE,oBAAC,kBAAD,eACMD,IADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEY,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGf,QAPH,CADF,CADF;AAaD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport { LookerExtensionSDK } from '@looker/extension-sdk'\nimport type { ILooker40SDK, Looker40SDK } from '@looker/sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\nimport { registerCore40SDK, unregisterCore40SDK } from '../../sdk/core_sdk_40'\n\nexport interface ExtensionContextData40 extends BaseExtensionContextData {\n coreSDK: ILooker40SDK\n}\n\n/**\n * React context provider for extension API and Looker SDK 4.0.\n */\nexport const ExtensionContext40 = React.createContext<ExtensionContextData40>(\n undefined as any // no one will ever see this undefined!\n)\n\nexport interface ExtensionProvider40Props extends ExtensionProviderProps {}\n\n/**\n * ExtensionProvider40 component. Provides access to the extension API and SDK (use\n * ExtensionContext40) and react routing services.\n */\nexport function ExtensionProvider40(props: ExtensionProvider40Props) {\n const { children, ...rest } = props\n const [extensionData, setExtensionData] = useState<ExtensionContextData40>(\n {} as ExtensionContextData40\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const coreSDK: ILooker40SDK =\n LookerExtensionSDK.create40Client(extensionHost)\n registerCore40SDK(coreSDK as Looker40SDK)\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: any) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n coreSDK,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n unregisterCore40SDK()\n }\n\n const updateContextData = (\n updatedContextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousState: ExtensionContextData40) => {\n return {\n ...previousState,\n ...updatedContextData,\n }\n })\n }\n\n return (\n <ExtensionContext40.Provider value={extensionData}>\n <ExtensionConnector\n {...rest}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContext40.Provider>\n )\n}\n"],"file":"ExtensionProvider40.js"}
@@ -48,7 +48,7 @@ export var ExtensionProviderBase = _ref => {
48
48
  var unloadedCallback = () => {};
49
49
 
50
50
  var updateContextData = contextData => {
51
- setExtensionData(contextData);
51
+ setExtensionData(previousContextData => _objectSpread(_objectSpread({}, previousContextData), contextData));
52
52
  };
53
53
 
54
54
  return React.createElement(ExtensionContextBase.Provider, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ExtensionProviderBase/ExtensionProviderBase.tsx"],"names":["React","useState","ExtensionConnector","ExtensionContextBase","createContext","undefined","ExtensionProviderBase","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","contextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AAKA,OAAO,IAAMC,oBAAoB,GAC/BH,KAAK,CAACI,aAAN,CACEC,SADF,CADK;AASP,OAAO,IAAMC,qBAAuD,GAAG,QAGjE;AAAA,MAHkE;AACtEC,IAAAA;AADsE,GAGlE;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCT,QAAQ,CAChD,EADgD,CAAlD;;AAIA,MAAMU,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAM;AAAEC,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDH,aAAtD;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAJ,IAAAA,gBAAgB,CAAEQ,aAAD,IAA6C;AAC5D,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEP,aAFhB;AAGEC,QAAAA,gBAHF;AAIEC,QAAAA,OAJF;AAKEE,QAAAA,iBALF;AAMEC,QAAAA,YANF;AAOEF,QAAAA;AAPF;AASD,KAVe,CAAhB;AAWD,GAfD;;AAiBA,MAAMK,gBAAgB,GAAG,MAAM,CAE9B,CAFD;;AAIA,MAAMC,iBAAiB,GAAIC,WAAD,IAA2C;AACnEZ,IAAAA,gBAAgB,CAACY,WAAD,CAAhB;AACD,GAFD;;AAIA,SACE,oBAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAEb;AAAtC,KACE,oBAAC,kBAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEU,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGb,QAPH,CADF,CADF;AAaD,CA9CM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContextBase =\n React.createContext<BaseExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n )\n\n/**\n * ExtensionProviderBase component. Provides access to the extension API but no SDK is\n * provided.\n */\nexport const ExtensionProviderBase: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<BaseExtensionContextData>(\n {} as BaseExtensionContextData\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: BaseExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n // noop\n }\n\n const updateContextData = (contextData: BaseExtensionContextData) => {\n setExtensionData(contextData)\n }\n\n return (\n <ExtensionContextBase.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContextBase.Provider>\n )\n}\n"],"file":"ExtensionProviderBase.js"}
1
+ {"version":3,"sources":["../../../../src/components/ExtensionProviderBase/ExtensionProviderBase.tsx"],"names":["React","useState","ExtensionConnector","ExtensionContextBase","createContext","undefined","ExtensionProviderBase","children","props","extensionData","setExtensionData","connectedCallback","extensionHost","visualizationSDK","tileSDK","lookerHostData","visualizationData","tileHostData","previousState","extensionSDK","unloadedCallback","updateContextData","contextData","previousContextData"],"mappings":";;;;;;;;;;;;AA0BA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AAMA,SAASC,kBAAT,QAAmC,uBAAnC;AAKA,OAAO,IAAMC,oBAAoB,GAC/BH,KAAK,CAACI,aAAN,CACEC,SADF,CADK;AASP,OAAO,IAAMC,qBAAuD,GAAG,QAGjE;AAAA,MAHkE;AACtEC,IAAAA;AADsE,GAGlE;AAAA,MADDC,KACC;;AACJ,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCT,QAAQ,CAChD,EADgD,CAAlD;;AAIA,MAAMU,iBAAiB,GAAIC,aAAD,IAAqC;AAC7D,QAAM;AAAEC,MAAAA,gBAAF;AAAoBC,MAAAA,OAApB;AAA6BC,MAAAA;AAA7B,QAAgDH,aAAtD;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAwBH,gBAA9B;AACA,QAAM;AAAEI,MAAAA;AAAF,QAAmBH,OAAzB;AACAJ,IAAAA,gBAAgB,CAAEQ,aAAD,IAA6C;AAC5D,6CACKA,aADL;AAEEC,QAAAA,YAAY,EAAEP,aAFhB;AAGEC,QAAAA,gBAHF;AAIEC,QAAAA,OAJF;AAKEE,QAAAA,iBALF;AAMEC,QAAAA,YANF;AAOEF,QAAAA;AAPF;AASD,KAVe,CAAhB;AAWD,GAfD;;AAiBA,MAAMK,gBAAgB,GAAG,MAAM,CAE9B,CAFD;;AAIA,MAAMC,iBAAiB,GACrBC,WADwB,IAErB;AACHZ,IAAAA,gBAAgB,CAAEa,mBAAD,oCACZA,mBADY,GAEZD,WAFY,CAAD,CAAhB;AAID,GAPD;;AASA,SACE,oBAAC,oBAAD,CAAsB,QAAtB;AAA+B,IAAA,KAAK,EAAEb;AAAtC,KACE,oBAAC,kBAAD,eACMD,KADN;AAEE,IAAA,WAAW,EAAEC,aAFf;AAGE,IAAA,iBAAiB,EAAEE,iBAHrB;AAIE,IAAA,iBAAiB,EAAEU,iBAJrB;AAKE,IAAA,gBAAgB,EAAED;AALpB,MAOGb,QAPH,CADF,CADF;AAaD,CAnDM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useState } from 'react'\nimport type { ExtensionHostApi } from '@looker/extension-sdk'\nimport type {\n BaseExtensionContextData,\n ExtensionProviderProps,\n} from '../ExtensionConnector'\nimport { ExtensionConnector } from '../ExtensionConnector'\n\n/**\n * React context provider for extension API and SDK\n */\nexport const ExtensionContextBase =\n React.createContext<BaseExtensionContextData>(\n undefined as any // no one will ever see this undefined!\n )\n\n/**\n * ExtensionProviderBase component. Provides access to the extension API but no SDK is\n * provided.\n */\nexport const ExtensionProviderBase: React.FC<ExtensionProviderProps> = ({\n children,\n ...props\n}) => {\n const [extensionData, setExtensionData] = useState<BaseExtensionContextData>(\n {} as BaseExtensionContextData\n )\n\n const connectedCallback = (extensionHost: ExtensionHostApi) => {\n const { visualizationSDK, tileSDK, lookerHostData } = extensionHost\n const { visualizationData } = visualizationSDK\n const { tileHostData } = tileSDK\n setExtensionData((previousState: BaseExtensionContextData) => {\n return {\n ...previousState,\n extensionSDK: extensionHost,\n visualizationSDK,\n tileSDK,\n visualizationData,\n tileHostData,\n lookerHostData,\n }\n })\n }\n\n const unloadedCallback = () => {\n // noop\n }\n\n const updateContextData = (\n contextData: Partial<BaseExtensionContextData>\n ) => {\n setExtensionData((previousContextData) => ({\n ...previousContextData,\n ...contextData,\n }))\n }\n\n return (\n <ExtensionContextBase.Provider value={extensionData}>\n <ExtensionConnector\n {...props}\n contextData={extensionData}\n connectedCallback={connectedCallback}\n updateContextData={updateContextData}\n unloadedCallback={unloadedCallback}\n >\n {children}\n </ExtensionConnector>\n </ExtensionContextBase.Provider>\n )\n}\n"],"file":"ExtensionProviderBase.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@looker/extension-sdk-react",
3
- "version": "22.4.3-alpha.1523+609dcf92",
3
+ "version": "22.4.3-alpha.1524+0be961a6",
4
4
  "description": "Looker Extension SDK for React",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -43,7 +43,7 @@
43
43
  "react-router-dom": "^5.1.2"
44
44
  },
45
45
  "dependencies": {
46
- "@looker/extension-sdk": "^22.4.3-alpha.1523+609dcf92",
46
+ "@looker/extension-sdk": "^22.4.3-alpha.1524+0be961a6",
47
47
  "@looker/sdk": "^22.4.2",
48
48
  "@looker/sdk-rtl": "^21.3.3",
49
49
  "history": "^4.9.0",
@@ -58,5 +58,5 @@
58
58
  "Looker",
59
59
  "extension-sdk"
60
60
  ],
61
- "gitHead": "609dcf92cd1d0c0311ca5a87208c914126b915d1"
61
+ "gitHead": "0be961a6030870de88a0f1e76ffe3d7fe6037efd"
62
62
  }