@cubejs-client/react 1.7.36 → 1.7.38

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.
@@ -106,10 +106,6 @@ class QueryRenderer extends React.Component {
106
106
  // TypeScript field declarations into `everything-else`, which the configured
107
107
  // order puts after `lifecycle`. Runtime is unaffected: field initializers run
108
108
  // right after `super()`, so the constructor's assignments still win.
109
- //
110
- // `this.context` is not re-declared: React types it as `any`, and a field
111
- // declaration would be emitted at runtime and shadow the context React
112
- // assigns.
113
109
 
114
110
  cubeApi() {
115
111
  // eslint-disable-next-line react/destructuring-assignment
@@ -316,7 +312,7 @@ const granularities = [{
316
312
  }];
317
313
 
318
314
  /**
319
- * `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube.js Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.
315
+ * `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.
320
316
  *
321
317
  * **Example**
322
318
  *
@@ -505,10 +501,6 @@ class QueryBuilder extends React.Component {
505
501
  // TypeScript field declarations into `everything-else`, which the configured
506
502
  // order puts after `lifecycle`. Runtime is unaffected: field initializers run
507
503
  // right after `super()`, so the constructor's assignments still win.
508
- //
509
- // `this.context` is not re-declared: React types it as `any`, and a field
510
- // declaration would be emitted at runtime and shadow the context React
511
- // assigns.
512
504
 
513
505
  fetchMeta = async () => {
514
506
  if (!this.cubeApi()) {
@@ -965,7 +957,7 @@ class QueryBuilder extends React.Component {
965
957
  }
966
958
 
967
959
  /**
968
- * Cube.js context provider
960
+ * Cube context provider
969
961
  * ```js
970
962
  * import React from 'react';
971
963
  * import cube from '@cubejs-client/core';
@@ -1116,7 +1108,7 @@ function useLazyDryRun(query, options = {}) {
1116
1108
  }
1117
1109
 
1118
1110
  /**
1119
- * A React hook for executing Cube.js queries
1111
+ * A React hook for executing Cube queries
1120
1112
  * ```js
1121
1113
  * import React from 'react';
1122
1114
  * import { Table } from 'antd';
@@ -1159,11 +1151,25 @@ function useCubeQuery(query, options = {}) {
1159
1151
  const [progress, setProgress] = useState(null);
1160
1152
  const [error, setError] = useState(null);
1161
1153
  const context = useContext(CubeContext);
1154
+ const requestIdRef = useRef(0);
1155
+ const hasStartedRequestRef = useRef(false);
1162
1156
  let subscribeRequest = null;
1163
-
1164
- // `progressResponse` is not part of the public `ProgressResult` API
1165
- const progressCallback = progressResult => setProgress(progressResult.progressResponse);
1166
- async function fetch() {
1157
+ function isCurrentRequest(requestId) {
1158
+ return requestId === requestIdRef.current;
1159
+ }
1160
+ function startRequest() {
1161
+ hasStartedRequestRef.current = true;
1162
+ return ++requestIdRef.current;
1163
+ }
1164
+ function createProgressCallback(requestId) {
1165
+ return progressResult => {
1166
+ if (isCurrentRequest(requestId)) {
1167
+ // `progressResponse` is not part of the public `ProgressResult` API
1168
+ setProgress(progressResult.progressResponse);
1169
+ }
1170
+ };
1171
+ }
1172
+ async function fetchQuery(requestId) {
1167
1173
  const {
1168
1174
  resetResultSetOnChange
1169
1175
  } = options;
@@ -1176,24 +1182,35 @@ function useCubeQuery(query, options = {}) {
1176
1182
  }
1177
1183
  setError(null);
1178
1184
  setLoading(true);
1185
+ setProgress(null);
1179
1186
  try {
1180
1187
  const response = await cubeApi.load(query, {
1181
1188
  mutexObj: mutexRef.current,
1182
1189
  mutexKey: 'query',
1183
- progressCallback,
1190
+ progressCallback: createProgressCallback(requestId),
1184
1191
  castNumerics: Boolean(typeof options.castNumerics === 'boolean' ? options.castNumerics : context?.options?.castNumerics),
1185
1192
  ...(options.cache ? {
1186
1193
  cache: options.cache
1187
1194
  } : {})
1188
1195
  });
1189
- setResultSet(response);
1190
- setProgress(null);
1196
+ if (isCurrentRequest(requestId)) {
1197
+ setResultSet(response);
1198
+ setProgress(null);
1199
+ }
1191
1200
  } catch (loadError) {
1192
- setError(loadError);
1193
- setResultSet(null);
1194
- setProgress(null);
1201
+ if (isCurrentRequest(requestId)) {
1202
+ setError(loadError);
1203
+ setResultSet(null);
1204
+ setProgress(null);
1205
+ }
1195
1206
  }
1196
- setLoading(false);
1207
+ if (isCurrentRequest(requestId)) {
1208
+ setLoading(false);
1209
+ }
1210
+ }
1211
+ async function fetch() {
1212
+ const requestId = startRequest();
1213
+ await fetchQuery(requestId);
1197
1214
  }
1198
1215
  useEffect(() => {
1199
1216
  const {
@@ -1206,6 +1223,8 @@ function useCubeQuery(query, options = {}) {
1206
1223
  }
1207
1224
  async function loadQuery() {
1208
1225
  if (!skip && isQueryPresent(query)) {
1226
+ const requestId = startRequest();
1227
+
1209
1228
  // `areQueriesEqual` is declared for a single query, and reads no more
1210
1229
  // than `order` off one when given an array of queries
1211
1230
  const previousQuery = currentQuery;
@@ -1217,6 +1236,7 @@ function useCubeQuery(query, options = {}) {
1217
1236
  }
1218
1237
  setError(null);
1219
1238
  setLoading(true);
1239
+ setProgress(null);
1220
1240
  try {
1221
1241
  if (subscribeRequest) {
1222
1242
  await subscribeRequest.unsubscribe();
@@ -1226,32 +1246,40 @@ function useCubeQuery(query, options = {}) {
1226
1246
  subscribeRequest = cubeApi.subscribe(query, {
1227
1247
  mutexObj: mutexRef.current,
1228
1248
  mutexKey: 'query',
1229
- progressCallback,
1249
+ progressCallback: createProgressCallback(requestId),
1230
1250
  ...(options.cache ? {
1231
1251
  cache: options.cache
1232
1252
  } : {})
1233
1253
  }, (e, result) => {
1234
- if (e) {
1235
- setError(e);
1236
- } else {
1237
- setResultSet(result);
1254
+ if (isCurrentRequest(requestId)) {
1255
+ if (e) {
1256
+ setError(e);
1257
+ } else {
1258
+ setResultSet(result);
1259
+ }
1260
+ setLoading(false);
1261
+ setProgress(null);
1238
1262
  }
1239
- setLoading(false);
1240
- setProgress(null);
1241
1263
  });
1242
1264
  } else {
1243
- await fetch();
1265
+ await fetchQuery(requestId);
1244
1266
  }
1245
1267
  } catch (e) {
1246
- setError(e);
1247
- setResultSet(null);
1248
- setLoading(false);
1249
- setProgress(null);
1268
+ if (isCurrentRequest(requestId)) {
1269
+ setError(e);
1270
+ setResultSet(null);
1271
+ setLoading(false);
1272
+ setProgress(null);
1273
+ }
1250
1274
  }
1275
+ } else if (hasStartedRequestRef.current) {
1276
+ setLoading(false);
1277
+ setProgress(null);
1251
1278
  }
1252
1279
  }
1253
1280
  loadQuery();
1254
1281
  return () => {
1282
+ requestIdRef.current += 1;
1255
1283
  if (subscribeRequest) {
1256
1284
  subscribeRequest.unsubscribe();
1257
1285
  subscribeRequest = null;
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-react.esm.js","sources":["../src/CubeContext.ts","../src/QueryRenderer.tsx","../src/QueryRendererWithTotals.tsx","../src/utils.ts","../src/QueryBuilder.tsx","../src/CubeProvider.tsx","../src/hooks/deep-compare-memoize.ts","../src/hooks/cube-fetch.ts","../src/hooks/cube-sql.ts","../src/hooks/dry-run.ts","../src/hooks/lazy-dry-run.ts","../src/hooks/cube-query.ts","../src/hooks/cube-meta.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { CubeContextProps } from './types';\n\n/**\n * In case when you need direct access to `cubeApi` you can use `CubeContext` anywhere in your app\n *\n * ```js\n * import React from 'react';\n * import { CubeContext } from '@cubejs-client/react';\n *\n * export default function DisplayComponent() {\n * const { cubeApi } = React.useContext(CubeContext);\n * const [rawResults, setRawResults] = React.useState([]);\n * const query = {\n * ...\n * };\n *\n * React.useEffect(() => {\n * cubeApi.load(query).then((resultSet) => {\n * setRawResults(resultSet.rawData());\n * });\n * }, [query]);\n *\n * return (\n * <>\n * {rawResults.map(row => (\n * ...\n * ))}\n * </>\n * )\n * }\n * ```\n */\n// The context has no default value: `cubeApi` is only available under a\n// `CubeProvider`, and consumers guard against a missing context.\nexport default createContext<CubeContextProps>(null as unknown as CubeContextProps);\n","import React from 'react';\nimport { equals, toPairs, fromPairs } from 'ramda';\nimport { isQueryPresent } from '@cubejs-client/core';\nimport type { CubeApi, LoadMethodOptions, Query, ResultSet } from '@cubejs-client/core';\n\nimport CubeContext from './CubeContext';\nimport type {\n MutexObj,\n QueryRendererLoadState,\n QueryRendererProps,\n QueryRendererRenderProps,\n QueryRendererState,\n} from './types';\n\n/**\n * `<QueryRenderer />` a react component that accepts a query, fetches the given query, and uses the render prop to render the resulting data\n * @stickyTypes QueryRendererProps, QueryRendererRenderProps\n * @noInheritDoc\n */\nexport default class QueryRenderer extends React.Component<QueryRendererProps, QueryRendererState> {\n static contextType = CubeContext;\n\n static defaultProps = {\n cubeApi: null,\n query: null,\n render: null,\n queries: null,\n loadSql: null,\n updateOnlyOnStateChange: false,\n resetResultSetOnChange: true,\n cache: null,\n };\n\n // @deprecated use `isQueryPresent` from `@cubejs-client/core`\n static isQueryPresent(query: Query | Query[]) {\n return isQueryPresent(query);\n }\n\n constructor(props: QueryRendererProps) {\n super(props);\n this.state = {};\n this.mutexObj = {};\n }\n\n componentDidMount() {\n const { query, queries } = this.props;\n if (query) {\n this.load(query);\n }\n if (queries) {\n this.loadQueries(queries);\n }\n }\n\n shouldComponentUpdate(nextProps: QueryRendererProps, nextState: QueryRendererState) {\n const {\n query, queries, render, cubeApi, loadSql, updateOnlyOnStateChange\n } = this.props;\n if (!updateOnlyOnStateChange) {\n return true;\n }\n return !equals(nextProps.query, query)\n || !equals(nextProps.queries, queries)\n || ((nextProps.render == null || render == null) && nextProps.render !== render)\n || nextProps.cubeApi !== cubeApi\n || nextProps.loadSql !== loadSql\n || !equals(nextState, this.state)\n || nextProps.updateOnlyOnStateChange !== updateOnlyOnStateChange;\n }\n\n componentDidUpdate(prevProps: QueryRendererProps) {\n const { query, queries } = this.props;\n if (!equals(prevProps.query, query)) {\n this.load(query);\n }\n\n if (!equals(prevProps.queries, queries)) {\n this.loadQueries(queries);\n }\n }\n\n // These sit after the lifecycle methods because `react/sort-comp` sorts\n // TypeScript field declarations into `everything-else`, which the configured\n // order puts after `lifecycle`. Runtime is unaffected: field initializers run\n // right after `super()`, so the constructor's assignments still win.\n //\n // `this.context` is not re-declared: React types it as `any`, and a field\n // declaration would be emitted at runtime and shadow the context React\n // assigns.\n private mutexObj: MutexObj;\n\n cubeApi(): CubeApi {\n // eslint-disable-next-line react/destructuring-assignment\n return this.props.cubeApi || this.context && this.context.cubeApi;\n }\n\n load(query: Query | Query[]) {\n const { resetResultSetOnChange, cache } = this.props;\n this.setState({\n isLoading: true,\n error: null,\n sqlQuery: null,\n ...(resetResultSetOnChange ? { resultSet: null } : {})\n });\n const { loadSql } = this.props;\n const cubeApi = this.cubeApi();\n\n const loadOptions: LoadMethodOptions = {\n mutexObj: this.mutexObj,\n mutexKey: 'query',\n ...(cache ? { cache } : {}),\n };\n\n if (query && isQueryPresent(query)) {\n if (loadSql === 'only') {\n cubeApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' })\n .then(sqlQuery => this.setState({ sqlQuery, error: null, isLoading: false }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n } else if (loadSql) {\n Promise.all([\n cubeApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' }),\n cubeApi.load(query, loadOptions)\n ]).then(([sqlQuery, resultSet]) => this.setState({\n sqlQuery, resultSet, error: null, isLoading: false\n }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n } else {\n cubeApi.load(query, loadOptions)\n .then(resultSet => this.setState({ resultSet, error: null, isLoading: false }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n }\n }\n }\n\n loadQueries(queries?: { [key: string]: Query }) {\n const cubeApi = this.cubeApi();\n const { resetResultSetOnChange, cache } = this.props;\n this.setState({\n isLoading: true,\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error: null\n });\n\n const resultPromises = Promise.all(toPairs(queries as { [key: string]: Query }).map(\n ([name, query]) => cubeApi.load(query, {\n mutexObj: this.mutexObj,\n mutexKey: name,\n ...(cache ? { cache } : {}),\n }).then((r): [string, ResultSet] => [name, r])\n ));\n\n resultPromises\n .then(resultSet => this.setState({\n resultSet: fromPairs(resultSet),\n error: null,\n isLoading: false\n }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n }\n\n render() {\n const {\n error, queries, resultSet, isLoading, sqlQuery\n } = this.state;\n const { render } = this.props;\n\n const loadState: QueryRendererLoadState = {\n error: error ? new Error(error.response?.plainError || error.message || error.toString()) : null,\n resultSet: queries ? (resultSet || {}) : resultSet,\n loadingState: { isLoading },\n sqlQuery\n };\n\n if (render) {\n // The prop is declared as returning `void` for backwards compatibility,\n // while what it returns is what gets rendered\n return render(loadState as QueryRendererRenderProps) as React.ReactNode;\n }\n\n return null;\n }\n}\n","import React from 'react';\nimport type { TimeDimension } from '@cubejs-client/core';\n\nimport QueryRenderer from './QueryRenderer';\nimport type { QueryRendererWithTotalsProps } from './types';\n\nconst QueryRendererWithTotals = ({ query, ...restProps }: QueryRendererWithTotalsProps) => (\n <QueryRenderer\n queries={{\n // `granularity: null` is sent to the API on purpose to get totals\n totals: {\n ...query,\n dimensions: [],\n timeDimensions: query.timeDimensions\n ? query.timeDimensions.map(td => ({ ...td, granularity: null }) as unknown as TimeDimension)\n : undefined\n },\n main: query\n }}\n {...restProps}\n />\n);\n\nexport default QueryRendererWithTotals;\n","export function removeEmpty<T>(obj: T): T {\n if (Array.isArray(obj) || typeof obj !== 'object') {\n return obj;\n }\n\n return Object.fromEntries(\n Object.entries(obj as Record<string, unknown>)\n .filter(([, v]) => v != null)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return [k, v.map(removeEmpty)];\n }\n\n return [k, typeof v === 'object' ? removeEmpty(v) : v];\n })\n ) as T;\n}\n","import React from 'react';\nimport { clone, equals, indexBy, pick, prop, uniq, uniqBy } from 'ramda';\nimport {\n defaultHeuristics,\n defaultOrder,\n flattenFilters,\n getQueryMembers,\n isQueryPresent,\n moveItemInArray,\n movePivotItem,\n validateQuery,\n ResultSet,\n removeEmptyQueryFields\n} from '@cubejs-client/core';\nimport type {\n CubeApi,\n CubeMember,\n DryRunResponse,\n Meta,\n NotFoundMember,\n PivotConfig,\n PivotQuery,\n Query,\n QueryOrder,\n RequestError,\n TCubeDimension,\n TCubeMeasure,\n TCubeSegment,\n TDefaultHeuristicsState,\n TOrderMember,\n} from '@cubejs-client/core';\n\nimport QueryRenderer from './QueryRenderer';\nimport CubeContext from './CubeContext';\nimport { removeEmpty } from './utils';\nimport type {\n AvailableCube,\n AvailableMembers,\n ChartType,\n CubeContextProps,\n FilterUpdateFields,\n FilterUpdateInput,\n GranularityOption,\n IndexedDimension,\n IndexedMeasure,\n IndexedSegment,\n MemberUpdater,\n MemberUpdaterFactory,\n MetaErrorSource,\n MutexObj,\n PivotConfigUpdaterArgs,\n QueryBuilderInternalState,\n QueryBuilderProps,\n QueryBuilderRenderProps,\n QueryBuilderState,\n QueryBuilderStateUpdate,\n QueryMemberType,\n QueryRendererRenderProps,\n ResolvedFilter,\n ResolveMemberArgs,\n ResolvedTimeDimension,\n TimeDimensionComparisonUpdateFields,\n TimeDimensionRangedUpdateFields,\n TimeDimensionUpdateInput,\n TimeDimensionWithExtraFields,\n} from './types';\n\nconst granularities: GranularityOption[] = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\n/**\n * `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube.js Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.\n *\n * **Example**\n *\n * [Open in CodeSandbox](https://codesandbox.io/s/z6r7qj8wm)\n * ```js\n * import React from 'react';\n * import ReactDOM from 'react-dom';\n * import { Layout, Divider, Empty, Select } from 'antd';\n * import { QueryBuilder } from '@cubejs-client/react';\n * import cube from '@cubejs-client/core';\n * import 'antd/dist/antd.css';\n *\n * import ChartRenderer from './ChartRenderer';\n *\n * const cubeApi = cube('YOUR-CUBE-API-TOKEN', {\n * apiUrl: 'http://localhost:4000/cubejs-api/v1',\n * });\n *\n * const App = () => (\n * <QueryBuilder\n * query={{\n * timeDimensions: [\n * {\n * dimension: 'LineItems.createdAt',\n * granularity: 'month',\n * },\n * ],\n * }}\n * cubeApi={cubeApi}\n * render={({ resultSet, measures, availableMeasures, updateMeasures }) => (\n * <Layout.Content style={{ padding: '20px' }}>\n * <Select\n * mode=\"multiple\"\n * style={{ width: '100%' }}\n * placeholder=\"Please select\"\n * onSelect={(measure) => updateMeasures.add(measure)}\n * onDeselect={(measure) => updateMeasures.remove(measure)}\n * >\n * {availableMeasures.map((measure) => (\n * <Select.Option key={measure.name} value={measure}>\n * {measure.title}\n * </Select.Option>\n * ))}\n * </Select>\n * <Divider />\n * {measures.length > 0 ? (\n * <ChartRenderer resultSet={resultSet} />\n * ) : (\n * <Empty description=\"Select measure or dimension to get started\" />\n * )}\n * </Layout.Content>\n * )}\n * />\n * );\n *\n * const rootElement = document.getElementById(\"root\");\n * ReactDOM.render(<App />, rootElement);\n * ```\n * @stickyTypes QueryBuilderProps, QueryBuilderRenderProps, QueryBuilderState\n * @noInheritDoc\n * @order 2\n */\nexport default class QueryBuilder extends React.Component<QueryBuilderProps, QueryBuilderInternalState> {\n static contextType = CubeContext;\n\n static defaultProps = {\n cubeApi: null,\n stateChangeHeuristics: null,\n disableHeuristics: false,\n render: null,\n wrapWithQueryRenderer: true,\n defaultChartType: 'line',\n defaultQuery: {},\n initialVizState: null,\n onVizStateChanged: null,\n\n // deprecated\n query: null,\n setQuery: null,\n vizState: null,\n setVizState: null,\n };\n\n // This is an anti-pattern, only kept for backward compatibility\n // https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#anti-pattern-unconditionally-copying-props-to-state\n static getDerivedStateFromProps(props: QueryBuilderProps, state: QueryBuilderInternalState) {\n if (props.query || props.vizState) {\n const nextState = {\n ...state,\n ...(props.vizState || {}),\n };\n\n if (Array.isArray(props.query)) {\n throw new Error('Array of queries is not supported.');\n }\n\n return {\n ...nextState,\n query: {\n ...nextState.query,\n ...(props.query || {}),\n },\n };\n }\n return null;\n }\n\n static resolveMember(\n type: QueryMemberType,\n { meta, query }: ResolveMemberArgs\n ): unknown[] {\n if (!meta) {\n return [];\n }\n\n if (Array.isArray(query)) {\n return query.reduce<unknown[]>(\n (memo, currentQuery) => memo.concat(\n QueryBuilder.resolveMember(type, {\n meta,\n query: currentQuery,\n })\n ),\n []\n );\n }\n\n if (type === 'timeDimensions') {\n return (query.timeDimensions || []).map((m, index) => ({\n ...m,\n dimension: {\n ...(meta.resolveMember(m.dimension, 'dimensions') as TCubeDimension),\n granularities,\n },\n index,\n }));\n }\n\n return (query[type] || []).map((m, index) => ({\n index,\n ...(meta.resolveMember(m, type) as CubeMember),\n }));\n }\n\n constructor(props: QueryBuilderProps) {\n super(props);\n\n this.state = {\n query: (props.defaultQuery || props.query) as Query,\n chartType: props.defaultChartType,\n validatedQuery: props.query, // deprecated, validatedQuery should not be set until after dry-run for safety\n missingMembers: [],\n // todo: rename to `isMetaReady`\n isFetchingMeta: true,\n dryRunResponse: null,\n ...props.vizState, // deprecated\n ...props.initialVizState,\n };\n\n this.mutexObj = {};\n this.orderMembersOrderKeys = [];\n }\n\n async componentDidMount() {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n async componentDidUpdate(prevProps: QueryBuilderProps) {\n const { schemaVersion, onSchemaChange } = this.props;\n const { meta } = this.state;\n\n if (this.prevContext?.cubeApi !== this.context?.cubeApi) {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n if (prevProps.schemaVersion !== schemaVersion) {\n try {\n const newMeta = await this.cubeApi().meta();\n if (!equals(newMeta, meta) && typeof onSchemaChange === 'function') {\n onSchemaChange({\n schemaVersion: schemaVersion as number,\n refresh: async () => {\n await this.fetchMeta();\n },\n });\n }\n } catch (error) {\n // eslint-disable-next-line\n this.setState({ metaError: error as Error });\n }\n }\n }\n\n // These sit after the lifecycle methods because `react/sort-comp` sorts\n // TypeScript field declarations into `everything-else`, which the configured\n // order puts after `lifecycle`. Runtime is unaffected: field initializers run\n // right after `super()`, so the constructor's assignments still win.\n //\n // `this.context` is not re-declared: React types it as `any`, and a field\n // declaration would be emitted at runtime and shadow the context React\n // assigns.\n private mutexObj: MutexObj;\n\n private orderMembersOrderKeys: string[];\n\n private prevContext?: CubeContextProps;\n\n fetchMeta = async () => {\n if (!this.cubeApi()) {\n return;\n }\n\n let meta: Meta | undefined;\n let metaError: MetaErrorSource | null = null;\n let richMetaError: Error | null = null;\n let metaErrorStack: string | null = null;\n\n try {\n this.setState({ isFetchingMeta: true });\n meta = await this.cubeApi().meta();\n } catch (error) {\n const requestError = error as RequestError;\n\n metaError = requestError.response?.plainError || requestError;\n richMetaError = requestError;\n metaErrorStack = requestError.response?.stack?.replace(requestError.message || '', '') || '';\n }\n\n this.setState(\n {\n meta,\n metaError: metaError ? new Error(metaError.message || metaError.toString()) : null,\n richMetaError,\n metaErrorStack,\n isFetchingMeta: false,\n },\n () => {\n // Run update query to force viz state update\n // This will catch any new missing members, and also validate the query against the new meta\n this.updateQuery({});\n }\n );\n };\n\n cubeApi(): CubeApi {\n const { cubeApi } = this.props;\n // eslint-disable-next-line react/destructuring-assignment\n return cubeApi || (this.context && this.context.cubeApi);\n }\n\n getMissingMembers(query: Query, meta?: Meta) {\n if (!meta) {\n return [];\n }\n\n return getQueryMembers(query)\n .map((member) => {\n const resolvedMember = meta.resolveMember(member, ['measures', 'dimensions', 'segments']) as NotFoundMember;\n if (resolvedMember.error) {\n return member;\n }\n return false;\n })\n .filter(Boolean) as string[];\n }\n\n isQueryPresent() {\n const { query } = this.state;\n return QueryRenderer.isQueryPresent(query);\n }\n\n prepareRenderProps(queryRendererProps?: QueryRendererRenderProps): QueryBuilderRenderProps {\n const getName = (member: unknown) => (member as CubeMember).name;\n\n const toTimeDimension = (member: TimeDimensionUpdateInput) => {\n const rangeSelection = member.compareDateRange\n ? { compareDateRange: member.compareDateRange }\n : { dateRange: member.dateRange };\n\n return removeEmpty({\n dimension: member.dimension.name,\n granularity: member.granularity,\n ...rangeSelection,\n });\n };\n\n const toFilter = (member: FilterUpdateInput) => ({\n member: member.member?.name || member.dimension?.name,\n operator: member.operator,\n ...(['set', 'notSet'].includes(member.operator) ? {} : { values: member.values }),\n });\n\n const updateMethods: MemberUpdaterFactory = (memberType, toQuery = getName) => ({\n add: (member) => {\n const { query } = this.state;\n this.updateQuery({\n [memberType]: ((query[memberType] || []) as unknown[]).concat(toQuery(member)),\n } as Query);\n },\n remove: (member) => {\n const { query } = this.state;\n\n return this.updateQuery({\n [memberType]: ((query[memberType] || []) as unknown[]).filter((_, index) => index !== member.index),\n } as Query);\n },\n update: (member, updateWith) => {\n const { query } = this.state;\n const members = ((query[memberType] || []) as unknown[]).concat([]);\n members.splice(member.index, 1, toQuery(updateWith));\n return this.updateQuery({\n [memberType]: members,\n } as Query);\n },\n });\n\n const {\n meta,\n metaError,\n richMetaError,\n query,\n queryError,\n chartType,\n pivotConfig,\n validatedQuery,\n missingMembers,\n isFetchingMeta,\n dryRunResponse,\n metaErrorStack\n } = this.state;\n\n const flatFilters = uniqBy((filter) => `${prop('member', filter)}${prop('operator', filter)}`,\n flattenFilters((meta && query.filters) || []).map((filter) => ({\n ...filter,\n member: filter.member || filter.dimension,\n })));\n\n const filters: ResolvedFilter[] = flatFilters.map((m, i) => ({\n ...m,\n dimension: meta!.resolveMember(\n m.member || m.dimension!,\n ['dimensions', 'measures']\n ) as TCubeDimension | TCubeMeasure,\n operators: meta!.filterOperatorsForMember(m.member || m.dimension!, ['dimensions', 'measures']),\n index: i,\n }));\n\n const measures = QueryBuilder.resolveMember('measures', this.state) as IndexedMeasure[];\n const dimensions = QueryBuilder.resolveMember('dimensions', this.state) as IndexedDimension[];\n const timeDimensions = QueryBuilder.resolveMember('timeDimensions', this.state) as ResolvedTimeDimension[];\n const segments: IndexedSegment[] = ((meta && query.segments) || []).map((m, i) => ({\n index: i,\n ...(meta!.resolveMember(m, 'segments') as TCubeSegment),\n }));\n\n let availableMeasures: TCubeMeasure[] = [];\n let availableDimensions: TCubeDimension[] = [];\n let availableSegments: TCubeSegment[] = [];\n let availableFilterMembers: Array<AvailableCube<TCubeMeasure> | AvailableCube<TCubeDimension>> = [];\n\n const availableMembers: AvailableMembers = meta?.membersGroupedByCube() || {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n };\n\n if (meta) {\n availableMeasures = meta.membersForQuery(query, 'measures') as TCubeMeasure[];\n availableDimensions = meta.membersForQuery(query, 'dimensions') as TCubeDimension[];\n availableSegments = meta.membersForQuery(query, 'segments') as TCubeSegment[];\n\n const indexedMeasures = indexBy(prop('cubeName'), availableMembers.measures);\n const indexedDimensions = indexBy(prop('cubeName'), availableMembers.dimensions);\n const cubeNames = uniq([...Object.keys(indexedMeasures), ...Object.keys(indexedDimensions)]).sort();\n\n // Measures and dimensions of a cube are merged into one member list, which\n // the declared type describes as either one or the other\n availableFilterMembers = cubeNames.map((name): AvailableCube<TCubeMeasure | TCubeDimension> => {\n const cube = indexedMeasures[name] || indexedDimensions[name];\n\n return {\n ...cube,\n members: [\n ...indexedMeasures[name]?.members,\n ...indexedDimensions[name]?.members\n ].sort((a, b) => (a.shortTitle > b.shortTitle ? 1 : -1)),\n };\n }) as Array<AvailableCube<TCubeMeasure> | AvailableCube<TCubeDimension>>;\n }\n\n const activeOrder = Array.isArray(query.order) ? Object.fromEntries(query.order) : query.order;\n const members = [\n ...measures,\n ...dimensions,\n ...timeDimensions.map(({ dimension }) => dimension)\n ];\n\n let orderMembers = uniqBy(prop('id'), [\n // uniqBy prefers first, so these will only be added if not already in the query\n ...members.map(({ name, title }) => ({ id: name, title, order: activeOrder?.[name] || 'none' })),\n ]);\n\n if (this.orderMembersOrderKeys.length !== orderMembers.length) {\n this.orderMembersOrderKeys = orderMembers.map(({ id }) => id);\n }\n\n if (this.orderMembersOrderKeys.length) {\n // Preserve order until the members change or manually re-ordered\n // This is needed so that when an order member becomes active, it doesn't jump to the top of the list\n orderMembers = (this.orderMembersOrderKeys || [])\n .map((id) => orderMembers.find((member) => member.id === id))\n .filter(Boolean) as TOrderMember[];\n }\n\n return {\n meta,\n metaError,\n richMetaError,\n metaErrorStack,\n query,\n error: queryError, // Match same name as QueryRenderer prop\n validatedQuery: validatedQuery as Query,\n isQueryPresent: this.isQueryPresent(),\n chartType,\n measures,\n dimensions,\n // The declared granularity options require a `name`, which the\n // \"w/o grouping\" option leaves out\n timeDimensions: timeDimensions as (TimeDimensionWithExtraFields & { index: number })[],\n segments,\n filters,\n orderMembers,\n availableMeasures,\n availableDimensions,\n availableTimeDimensions: availableDimensions.filter((m) => m.type === 'time'),\n availableSegments,\n availableMembers,\n availableFilterMembers,\n updateQuery: (queryUpdate) => this.updateQuery(queryUpdate),\n updateMeasures: updateMethods<TCubeMeasure>('measures'),\n updateDimensions: updateMethods<TCubeDimension>('dimensions'),\n updateSegments: updateMethods<TCubeSegment>('segments'),\n updateTimeDimensions: updateMethods<TimeDimensionUpdateInput>('timeDimensions', toTimeDimension) as\n MemberUpdater<TimeDimensionRangedUpdateFields | TimeDimensionComparisonUpdateFields>,\n updateFilters: updateMethods<FilterUpdateInput>('filters', toFilter) as MemberUpdater<FilterUpdateFields>,\n updateChartType: (newChartType: ChartType) => this.updateVizState({ chartType: newChartType }),\n updateOrder: {\n set: (memberId: string, newOrder: QueryOrder | 'none' = 'asc') => {\n this.updateQuery({\n order: orderMembers\n .map((orderMember) => ({\n ...orderMember,\n order: orderMember.id === memberId ? newOrder : orderMember.order,\n }))\n .reduce<[string, QueryOrder][]>(\n (acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc),\n []\n ),\n });\n },\n update: (order) => {\n this.updateQuery({\n order,\n });\n },\n reorder: (sourceIndex: number, destinationIndex: number) => {\n if (sourceIndex == null || destinationIndex == null) {\n return;\n }\n\n const nextArray = moveItemInArray(orderMembers, sourceIndex, destinationIndex);\n this.orderMembersOrderKeys = nextArray.map(({ id }) => id);\n\n this.updateQuery({\n order: nextArray.reduce<[string, QueryOrder][]>(\n (acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc),\n []\n ),\n });\n },\n },\n pivotConfig,\n updatePivotConfig: {\n moveItem: ({ sourceIndex, destinationIndex, sourceAxis, destinationAxis }: PivotConfigUpdaterArgs) => {\n this.updateVizState({\n pivotConfig: movePivotItem(\n pivotConfig as PivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis\n ),\n });\n },\n update: (config) => {\n const { limit } = config;\n\n this.updateVizState({\n pivotConfig: {\n ...pivotConfig,\n ...config,\n },\n ...(limit ? { query: { ...query, limit } } : null),\n });\n },\n },\n missingMembers,\n refresh: this.fetchMeta,\n isFetchingMeta,\n dryRunResponse: dryRunResponse as DryRunResponse | undefined,\n ...queryRendererProps,\n };\n }\n\n updateQuery(queryUpdate: Query) {\n const { query } = this.state;\n\n this.updateVizState({\n query: removeEmptyQueryFields({\n ...query,\n ...queryUpdate,\n }),\n });\n }\n\n async updateVizState(state: QueryBuilderStateUpdate) {\n const { setQuery, setVizState } = this.props;\n const { query: stateQuery, pivotConfig: statePivotConfig, chartType, meta } = this.state;\n\n const finalState = this.applyStateChangeHeuristics(state);\n if (!finalState.query) {\n finalState.query = { ...stateQuery };\n }\n\n let vizStateSent: QueryBuilderState | null = null;\n const handleVizStateChange = (currentState: QueryBuilderStateUpdate) => {\n const { onVizStateChanged } = this.props;\n if (onVizStateChanged) {\n const newVizState = pick(['chartType', 'pivotConfig', 'query'], currentState) as QueryBuilderState;\n // Don't run callbacks more than once unless the viz state has changed since last time\n if (!vizStateSent || !equals(vizStateSent, newVizState)) {\n onVizStateChanged(newVizState);\n // use clone to make sure we don't save object references\n vizStateSent = clone(newVizState);\n }\n }\n };\n\n // deprecated, setters replaced by onVizStateChanged\n const runSetters = (currentState: QueryBuilderStateUpdate) => {\n if (setVizState) {\n setVizState(pick(['chartType', 'pivotConfig', 'query'], currentState) as QueryBuilderState);\n }\n if (currentState.query && setQuery) {\n setQuery(currentState.query);\n }\n };\n\n if (finalState.shouldApplyHeuristicOrder) {\n finalState.query.order = defaultOrder(finalState.query);\n }\n\n finalState.pivotConfig = ResultSet.getNormalizedPivotConfig(\n finalState.query as PivotQuery,\n (finalState.pivotConfig !== undefined ? finalState.pivotConfig : statePivotConfig) as PivotConfig | undefined\n );\n\n finalState.missingMembers = this.getMissingMembers(finalState.query, meta);\n finalState.chartType = finalState.chartType || state.chartType || chartType;\n\n // deprecated\n runSetters({\n ...state,\n query: finalState.query,\n });\n\n // Update optimistically so that UI does not stutter\n this.setState({\n ...finalState,\n queryError: null,\n } as QueryBuilderInternalState);\n\n handleVizStateChange(finalState);\n\n const shouldFetchDryRun = !equals(\n pick(['measures', 'dimensions', 'timeDimensions'], stateQuery),\n pick(['measures', 'dimensions', 'timeDimensions'], finalState.query)\n );\n\n if (shouldFetchDryRun && isQueryPresent(finalState.query) && finalState.missingMembers.length === 0) {\n try {\n const response = await this.cubeApi().dryRun(finalState.query, {\n mutexObj: this.mutexObj,\n });\n\n if (finalState.shouldApplyHeuristicOrder) {\n finalState.query.order = (response.queryOrder || []).reduce((memo, current) => ({ ...memo, ...current }), {});\n }\n\n finalState.pivotConfig = ResultSet.getNormalizedPivotConfig(response.pivotQuery, finalState.pivotConfig);\n finalState.validatedQuery = this.validatedQuery(finalState);\n finalState.dryRunResponse = response;\n\n // deprecated\n if (isQueryPresent(stateQuery)) {\n runSetters({\n ...this.state,\n ...finalState,\n });\n }\n } catch (error) {\n const requestError = error as RequestError;\n\n this.setState({\n queryError: new Error(requestError.response?.plainError || requestError.message),\n richQueryError: new Error(requestError.message || requestError.toString())\n });\n }\n }\n\n this.setState(finalState as QueryBuilderInternalState, () => handleVizStateChange(this.state));\n }\n\n validatedQuery(state?: QueryBuilderStateUpdate) {\n const { query } = state || this.state;\n\n return validateQuery(query);\n }\n\n defaultHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate {\n const { query, sessionGranularity, meta } = this.state;\n\n return defaultHeuristics(newState as TDefaultHeuristicsState, query, {\n meta: meta as Meta,\n sessionGranularity: sessionGranularity || 'day',\n }) as QueryBuilderStateUpdate;\n }\n\n applyStateChangeHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate {\n const { stateChangeHeuristics, disableHeuristics } = this.props;\n if (disableHeuristics) {\n return newState;\n }\n return (stateChangeHeuristics && stateChangeHeuristics(this.state, newState)) || this.defaultHeuristics(newState);\n }\n\n render() {\n const { query } = this.state;\n const { cubeApi, render, wrapWithQueryRenderer } = this.props;\n\n if (wrapWithQueryRenderer) {\n return (\n <QueryRenderer\n query={query}\n cubeApi={cubeApi}\n resetResultSetOnChange={false}\n render={(queryRendererProps) => {\n if (render) {\n return render(this.prepareRenderProps(queryRendererProps));\n }\n return null;\n }}\n />\n );\n } else {\n if (render) {\n return render(this.prepareRenderProps());\n }\n return null;\n }\n }\n}\n","import React from 'react';\n\nimport CubeContext from './CubeContext';\nimport type { CubeContextProps, CubeProviderProps } from './types';\n\n/**\n * Cube.js context provider\n * ```js\n * import React from 'react';\n * import cube from '@cubejs-client/core';\n * import { CubeProvider } from '@cubejs-client/react';\n *\n * const API_URL = 'https://harsh-eel.aws-us-east-2.cubecloudapp.dev';\n * const CUBE_TOKEN =\n * 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.* eyJpYXQiOjE1OTE3MDcxNDgsImV4cCI6MTU5NDI5OTE0OH0.* n5jGLQJ14igg6_Hri_Autx9qOIzVqp4oYxmX27V-4T4';\n *\n * const cubeApi = cube(CUBE_TOKEN, {\n * apiUrl: `${API_URL}/cubejs-api/v1`,\n * });\n *\n * export default function App() {\n * return (\n * <CubeProvider cubeApi={cubeApi}>\n * //...\n * </CubeProvider>\n * )\n * }\n * ```\n * @stickyTypes\n * @order 10\n */\nconst CubeProvider: React.FC<CubeProviderProps> = ({ cubeApi, children, options = {} }) => (\n <CubeContext.Provider value={{\n cubeApi,\n options\n } as CubeContextProps}\n >\n {children}\n </CubeContext.Provider>\n);\n\nexport default CubeProvider;\n","import { useRef } from 'react';\nimport { equals } from 'ramda';\n\nexport default function useDeepCompareMemoize(value: unknown[]): unknown[] {\n const ref = useRef<unknown[]>([]);\n\n if (!equals(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent } from '@cubejs-client/core';\nimport type { MetaMethodOptions, Query } from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport type {\n CubeFetchArgs,\n CubeFetchDispatch,\n CubeFetchMethod,\n CubeFetchState,\n MutexObj,\n UseCubeFetchInternalResult,\n UseCubeFetchLoadOptions,\n UseCubeFetchOptions,\n UseCubeFetchResult,\n} from '../types';\n\n/**\n * @hidden\n */\nexport function useCubeFetch<T>(\n method: CubeFetchMethod,\n options?: UseCubeFetchOptions\n): UseCubeFetchResult<T>;\n\nexport function useCubeFetch<T>(\n method: CubeFetchMethod,\n options: UseCubeFetchOptions = {}\n): UseCubeFetchInternalResult<T> {\n const context = useContext(CubeContext);\n const mutexRef = useRef<MutexObj>({});\n\n const [response, setResponse] = useState<CubeFetchState<T>>({\n isLoading: false,\n response: null,\n });\n const [error, setError] = useState<Error | null>(null);\n\n const { skip = false } = options;\n\n async function load(loadOptions: UseCubeFetchLoadOptions = {}, ignoreSkip = false) {\n const cubeApi = options.cubeApi || context?.cubeApi;\n const query = loadOptions.query || options.query;\n const onlyViews = 'onlyViews' in loadOptions ? loadOptions.onlyViews : options.onlyViews;\n\n const queryCondition = method === 'meta' ? true : query && isQueryPresent(query);\n\n if (cubeApi && (ignoreSkip || !skip) && queryCondition) {\n setError(null);\n setResponse({\n isLoading: true,\n response: null,\n });\n\n const coreOptions: MetaMethodOptions = {\n mutexObj: mutexRef.current,\n mutexKey: method,\n ...(options.baseRequestId ? { baseRequestId: options.baseRequestId } : {}),\n ...(method === 'meta' && onlyViews ? { onlyViews: true } : {})\n };\n const args: CubeFetchArgs = method === 'meta' ? [coreOptions] : [query!, coreOptions];\n // `method` picks between overloaded `CubeApi` methods, so the call is\n // dispatched dynamically while keeping `cubeApi` as the receiver\n const fetchMethod = cubeApi[method] as CubeFetchDispatch;\n\n try {\n const fetchResponse = await fetchMethod.apply(cubeApi, args) as T;\n\n setResponse({\n response: fetchResponse,\n isLoading: false,\n });\n } catch (fetchError) {\n setError(fetchError as Error);\n setResponse({\n isLoading: false,\n response: null,\n });\n }\n }\n }\n\n useEffect(() => {\n load();\n // `order` is read off a single query; an array of queries does not carry it\n }, useDeepCompareMemoize([\n Object.keys((options.query as Query | undefined)?.order || {}),\n options,\n context,\n ]));\n\n return {\n ...response,\n error,\n refetch: (refetchOptions?: UseCubeFetchLoadOptions) => load(refetchOptions, true),\n };\n}\n","import type { DryRunResponse, Query, SqlQuery } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { UseCubeFetchOptions, UseCubeFetchResult } from '../types';\n\n/**\n * The hook resolves with a `SqlQuery`, while its `response` stays declared as a\n * dry-run response for backwards compatibility — `UseCubeSqlResult` spells the\n * real shape. `refetch` is declared, as it is on `useDryRun` and `useCubeMeta`,\n * because all three return the same object.\n *\n * @hidden\n */\nexport function useCubeSql(\n query: Query | Query[],\n options: UseCubeFetchOptions = {}\n): UseCubeFetchResult<DryRunResponse> {\n return useCubeFetch<SqlQuery>('sql', {\n ...options,\n query\n }) as unknown as UseCubeFetchResult<DryRunResponse>;\n}\n","import type { DryRunResponse, Query } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { UseCubeFetchOptions, UseCubeFetchResult } from '../types';\n\n/**\n * @hidden\n */\nexport function useDryRun(\n query: Query | Query[],\n options: UseCubeFetchOptions = {}\n): UseCubeFetchResult<DryRunResponse> {\n return useCubeFetch<DryRunResponse>('dryRun', {\n ...options,\n query,\n });\n}\n","import type { DryRunResponse, Query } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type {\n CubeFetchResult,\n UseCubeFetchLoadOptions,\n UseCubeFetchOptions,\n} from '../types';\n\n/**\n * @hidden\n */\nexport function useLazyDryRun(\n query?: Query | Query[],\n options: UseCubeFetchOptions = {}\n): [(loadOptions?: UseCubeFetchLoadOptions) => Promise<void>, CubeFetchResult<DryRunResponse>] {\n const { refetch, ...result } = useCubeFetch<DryRunResponse>('dryRun', {\n ...options,\n query,\n skip: true\n });\n\n return [refetch, result];\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent, areQueriesEqual } from '@cubejs-client/core';\nimport type {\n DeeplyReadonly,\n ProgressResponse,\n Query,\n QueryRecordType,\n ResultSet,\n UnsubscribeObj,\n} from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport type {\n MutexObj,\n ProgressCallback,\n ProgressResultWithResponse,\n ReadonlyQueryInput,\n UseCubeQueryInternalResult,\n UseCubeQueryOptions,\n UseCubeQueryResult,\n} from '../types';\n\n/**\n * A React hook for executing Cube.js queries\n * ```js\n * import React from 'react';\n * import { Table } from 'antd';\n * import { useCubeQuery } from '@cubejs-client/react';\n *\n * export default function App() {\n * const { resultSet, isLoading, error, progress } = useCubeQuery({\n * measures: ['Orders.count'],\n * dimensions: ['Orders.createdAt.month'],\n * });\n *\n * if (isLoading) {\n * return <div>{progress?.stage || 'Loading...'}</div>;\n * }\n *\n * if (error) {\n * return <div>{error.toString()}</div>;\n * }\n *\n * if (!resultSet) {\n * return null;\n * }\n *\n * const dataSource = resultSet.tablePivot();\n * const columns = resultSet.tableColumns();\n *\n * return <Table columns={columns} dataSource={dataSource} />;\n * }\n *\n * ```\n * @order 1\n * @stickyTypes\n */\nexport function useCubeQuery<\n Data,\n QueryInput extends ReadonlyQueryInput = ReadonlyQueryInput\n>(\n query: QueryInput,\n options?: UseCubeQueryOptions\n): UseCubeQueryResult<QueryInput, unknown extends Data ? QueryRecordType<QueryInput> : Data>;\n\nexport function useCubeQuery(\n query: ReadonlyQueryInput,\n options: UseCubeQueryOptions = {}\n): UseCubeQueryInternalResult {\n const mutexRef = useRef<MutexObj>({});\n const [currentQuery, setCurrentQuery] = useState<ReadonlyQueryInput | null>(null);\n const [isLoading, setLoading] = useState(!options.skip);\n const [resultSet, setResultSet] = useState<ResultSet | null>(null);\n const [progress, setProgress] = useState<ProgressResponse | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const context = useContext(CubeContext);\n\n let subscribeRequest: UnsubscribeObj | null = null;\n\n // `progressResponse` is not part of the public `ProgressResult` API\n const progressCallback: ProgressCallback = (progressResult) => setProgress(\n (progressResult as unknown as ProgressResultWithResponse).progressResponse\n );\n\n async function fetch() {\n const { resetResultSetOnChange } = options;\n const cubeApi = options.cubeApi || context?.cubeApi;\n\n if (!cubeApi) {\n throw new Error('Cube API client is not provided');\n }\n\n if (resetResultSetOnChange) {\n setResultSet(null);\n }\n\n setError(null);\n setLoading(true);\n\n try {\n const response = await cubeApi.load(query, {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback,\n castNumerics: Boolean(typeof options.castNumerics === 'boolean' ? options.castNumerics : context?.options?.castNumerics),\n ...(options.cache ? { cache: options.cache } : {}),\n });\n\n setResultSet(response);\n setProgress(null);\n } catch (loadError) {\n setError(loadError as Error);\n setResultSet(null);\n setProgress(null);\n }\n\n setLoading(false);\n }\n\n useEffect(() => {\n const { skip = false, resetResultSetOnChange } = options;\n\n const cubeApi = options.cubeApi || context?.cubeApi;\n\n if (!cubeApi) {\n throw new Error('Cube API client is not provided');\n }\n\n async function loadQuery() {\n if (!skip && isQueryPresent(query)) {\n // `areQueriesEqual` is declared for a single query, and reads no more\n // than `order` off one when given an array of queries\n const previousQuery = currentQuery as DeeplyReadonly<Query> | null;\n\n if (!areQueriesEqual(previousQuery, query as DeeplyReadonly<Query>)) {\n if (resetResultSetOnChange == null || resetResultSetOnChange) {\n setResultSet(null);\n }\n setCurrentQuery(query);\n }\n\n setError(null);\n setLoading(true);\n\n try {\n if (subscribeRequest) {\n await subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n\n if (options.subscribe) {\n subscribeRequest = cubeApi.subscribe(\n query,\n {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback,\n ...(options.cache ? { cache: options.cache } : {}),\n },\n (e, result) => {\n if (e) {\n setError(e);\n } else {\n setResultSet(result);\n }\n setLoading(false);\n setProgress(null);\n }\n );\n } else {\n await fetch();\n }\n } catch (e) {\n setError(e as Error);\n setResultSet(null);\n setLoading(false);\n setProgress(null);\n }\n }\n }\n\n loadQuery();\n\n return () => {\n if (subscribeRequest) {\n subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n };\n // `order` is read off a single query; an array of queries does not carry it\n }, useDeepCompareMemoize([\n query,\n Object.keys((query as DeeplyReadonly<Query> | undefined)?.order || {}),\n options,\n context,\n ]));\n\n return {\n isLoading,\n resultSet,\n error,\n progress,\n previousQuery: currentQuery,\n refetch: fetch\n };\n}\n","import type { Meta } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { CubeMetaFetchOptions, UseCubeFetchResult } from '../types';\n\nexport function useCubeMeta(options: CubeMetaFetchOptions = {}): UseCubeFetchResult<Meta> {\n return useCubeFetch<Meta>('meta', options);\n}\n"],"names":["createContext","QueryRenderer","React","Component","contextType","CubeContext","defaultProps","cubeApi","query","render","queries","loadSql","updateOnlyOnStateChange","resetResultSetOnChange","cache","isQueryPresent","constructor","props","state","mutexObj","componentDidMount","load","loadQueries","shouldComponentUpdate","nextProps","nextState","equals","componentDidUpdate","prevProps","context","setState","isLoading","error","sqlQuery","resultSet","loadOptions","mutexKey","sql","then","catch","Promise","all","resultPromises","toPairs","map","name","r","fromPairs","loadState","Error","response","plainError","message","toString","loadingState","QueryRendererWithTotals","restProps","createElement","_extends","totals","dimensions","timeDimensions","td","granularity","undefined","main","removeEmpty","obj","Array","isArray","Object","fromEntries","entries","filter","v","k","granularities","title","QueryBuilder","stateChangeHeuristics","disableHeuristics","wrapWithQueryRenderer","defaultChartType","defaultQuery","initialVizState","onVizStateChanged","setQuery","vizState","setVizState","getDerivedStateFromProps","resolveMember","type","meta","reduce","memo","currentQuery","concat","m","index","dimension","chartType","validatedQuery","missingMembers","isFetchingMeta","dryRunResponse","orderMembersOrderKeys","prevContext","fetchMeta","schemaVersion","onSchemaChange","newMeta","refresh","metaError","richMetaError","metaErrorStack","requestError","stack","replace","updateQuery","getMissingMembers","getQueryMembers","member","resolvedMember","Boolean","prepareRenderProps","queryRendererProps","getName","toTimeDimension","rangeSelection","compareDateRange","dateRange","toFilter","operator","includes","values","updateMethods","memberType","toQuery","add","remove","_","update","updateWith","members","splice","queryError","pivotConfig","flatFilters","uniqBy","prop","flattenFilters","filters","i","operators","filterOperatorsForMember","measures","segments","availableMeasures","availableDimensions","availableSegments","availableFilterMembers","availableMembers","membersGroupedByCube","membersForQuery","indexedMeasures","indexBy","indexedDimensions","cubeNames","uniq","keys","sort","cube","a","b","shortTitle","activeOrder","order","orderMembers","id","length","find","availableTimeDimensions","queryUpdate","updateMeasures","updateDimensions","updateSegments","updateTimeDimensions","updateFilters","updateChartType","newChartType","updateVizState","updateOrder","set","memberId","newOrder","orderMember","acc","reorder","sourceIndex","destinationIndex","nextArray","moveItemInArray","updatePivotConfig","moveItem","sourceAxis","destinationAxis","movePivotItem","config","limit","removeEmptyQueryFields","stateQuery","statePivotConfig","finalState","applyStateChangeHeuristics","vizStateSent","handleVizStateChange","currentState","newVizState","pick","clone","runSetters","shouldApplyHeuristicOrder","defaultOrder","ResultSet","getNormalizedPivotConfig","shouldFetchDryRun","dryRun","queryOrder","current","pivotQuery","richQueryError","validateQuery","defaultHeuristics","newState","sessionGranularity","CubeProvider","children","options","Provider","value","useDeepCompareMemoize","ref","useRef","useCubeFetch","method","useContext","mutexRef","setResponse","useState","setError","skip","ignoreSkip","onlyViews","queryCondition","coreOptions","baseRequestId","args","fetchMethod","fetchResponse","apply","fetchError","useEffect","refetch","refetchOptions","useCubeSql","useDryRun","useLazyDryRun","result","useCubeQuery","setCurrentQuery","setLoading","setResultSet","progress","setProgress","subscribeRequest","progressCallback","progressResult","progressResponse","fetch","castNumerics","loadError","loadQuery","previousQuery","areQueriesEqual","unsubscribe","subscribe","e","useCubeMeta"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-react.esm.js","sources":["../src/CubeContext.ts","../src/QueryRenderer.tsx","../src/QueryRendererWithTotals.tsx","../src/utils.ts","../src/QueryBuilder.tsx","../src/CubeProvider.tsx","../src/hooks/deep-compare-memoize.ts","../src/hooks/cube-fetch.ts","../src/hooks/cube-sql.ts","../src/hooks/dry-run.ts","../src/hooks/lazy-dry-run.ts","../src/hooks/cube-query.ts","../src/hooks/cube-meta.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { CubeContextProps } from './types';\n\n/**\n * In case when you need direct access to `cubeApi` you can use `CubeContext` anywhere in your app\n *\n * ```js\n * import React from 'react';\n * import { CubeContext } from '@cubejs-client/react';\n *\n * export default function DisplayComponent() {\n * const { cubeApi } = React.useContext(CubeContext);\n * const [rawResults, setRawResults] = React.useState([]);\n * const query = {\n * ...\n * };\n *\n * React.useEffect(() => {\n * cubeApi.load(query).then((resultSet) => {\n * setRawResults(resultSet.rawData());\n * });\n * }, [query]);\n *\n * return (\n * <>\n * {rawResults.map(row => (\n * ...\n * ))}\n * </>\n * )\n * }\n * ```\n */\n// The context has no default value: `cubeApi` is only available under a\n// `CubeProvider`, and consumers guard against a missing context.\nexport default createContext<CubeContextProps>(null as unknown as CubeContextProps);\n","import React from 'react';\nimport { equals, toPairs, fromPairs } from 'ramda';\nimport { isQueryPresent } from '@cubejs-client/core';\nimport type { CubeApi, LoadMethodOptions, Query, ResultSet } from '@cubejs-client/core';\n\nimport CubeContext from './CubeContext';\nimport type {\n MutexObj,\n QueryRendererLoadState,\n QueryRendererProps,\n QueryRendererRenderProps,\n QueryRendererState,\n} from './types';\n\n/**\n * `<QueryRenderer />` a react component that accepts a query, fetches the given query, and uses the render prop to render the resulting data\n * @stickyTypes QueryRendererProps, QueryRendererRenderProps\n * @noInheritDoc\n */\nexport default class QueryRenderer extends React.Component<QueryRendererProps, QueryRendererState> {\n static contextType = CubeContext;\n\n context!: React.ContextType<typeof CubeContext>;\n\n static defaultProps = {\n cubeApi: null,\n query: null,\n render: null,\n queries: null,\n loadSql: null,\n updateOnlyOnStateChange: false,\n resetResultSetOnChange: true,\n cache: null,\n };\n\n // @deprecated use `isQueryPresent` from `@cubejs-client/core`\n static isQueryPresent(query: Query | Query[]) {\n return isQueryPresent(query);\n }\n\n constructor(props: QueryRendererProps) {\n super(props);\n this.state = {};\n this.mutexObj = {};\n }\n\n componentDidMount() {\n const { query, queries } = this.props;\n if (query) {\n this.load(query);\n }\n if (queries) {\n this.loadQueries(queries);\n }\n }\n\n shouldComponentUpdate(nextProps: QueryRendererProps, nextState: QueryRendererState) {\n const {\n query, queries, render, cubeApi, loadSql, updateOnlyOnStateChange\n } = this.props;\n if (!updateOnlyOnStateChange) {\n return true;\n }\n return !equals(nextProps.query, query)\n || !equals(nextProps.queries, queries)\n || ((nextProps.render == null || render == null) && nextProps.render !== render)\n || nextProps.cubeApi !== cubeApi\n || nextProps.loadSql !== loadSql\n || !equals(nextState, this.state)\n || nextProps.updateOnlyOnStateChange !== updateOnlyOnStateChange;\n }\n\n componentDidUpdate(prevProps: QueryRendererProps) {\n const { query, queries } = this.props;\n if (!equals(prevProps.query, query)) {\n this.load(query);\n }\n\n if (!equals(prevProps.queries, queries)) {\n this.loadQueries(queries);\n }\n }\n\n // These sit after the lifecycle methods because `react/sort-comp` sorts\n // TypeScript field declarations into `everything-else`, which the configured\n // order puts after `lifecycle`. Runtime is unaffected: field initializers run\n // right after `super()`, so the constructor's assignments still win.\n private mutexObj: MutexObj;\n\n cubeApi(): CubeApi {\n // eslint-disable-next-line react/destructuring-assignment\n return this.props.cubeApi || this.context && this.context.cubeApi;\n }\n\n load(query: Query | Query[]) {\n const { resetResultSetOnChange, cache } = this.props;\n this.setState({\n isLoading: true,\n error: null,\n sqlQuery: null,\n ...(resetResultSetOnChange ? { resultSet: null } : {})\n });\n const { loadSql } = this.props;\n const cubeApi = this.cubeApi();\n\n const loadOptions: LoadMethodOptions = {\n mutexObj: this.mutexObj,\n mutexKey: 'query',\n ...(cache ? { cache } : {}),\n };\n\n if (query && isQueryPresent(query)) {\n if (loadSql === 'only') {\n cubeApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' })\n .then(sqlQuery => this.setState({ sqlQuery, error: null, isLoading: false }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n } else if (loadSql) {\n Promise.all([\n cubeApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' }),\n cubeApi.load(query, loadOptions)\n ]).then(([sqlQuery, resultSet]) => this.setState({\n sqlQuery, resultSet, error: null, isLoading: false\n }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n } else {\n cubeApi.load(query, loadOptions)\n .then(resultSet => this.setState({ resultSet, error: null, isLoading: false }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n }\n }\n }\n\n loadQueries(queries?: { [key: string]: Query }) {\n const cubeApi = this.cubeApi();\n const { resetResultSetOnChange, cache } = this.props;\n this.setState({\n isLoading: true,\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error: null\n });\n\n const resultPromises = Promise.all(toPairs(queries as { [key: string]: Query }).map(\n ([name, query]) => cubeApi.load(query, {\n mutexObj: this.mutexObj,\n mutexKey: name,\n ...(cache ? { cache } : {}),\n }).then((r): [string, ResultSet] => [name, r])\n ));\n\n resultPromises\n .then(resultSet => this.setState({\n resultSet: fromPairs(resultSet),\n error: null,\n isLoading: false\n }))\n .catch(error => this.setState({\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error,\n isLoading: false\n }));\n }\n\n render() {\n const {\n error, queries, resultSet, isLoading, sqlQuery\n } = this.state;\n const { render } = this.props;\n\n const loadState: QueryRendererLoadState = {\n error: error ? new Error(error.response?.plainError || error.message || error.toString()) : null,\n resultSet: queries ? (resultSet || {}) : resultSet,\n loadingState: { isLoading },\n sqlQuery\n };\n\n if (render) {\n // The prop is declared as returning `void` for backwards compatibility,\n // while what it returns is what gets rendered\n return render(loadState as QueryRendererRenderProps) as React.ReactNode;\n }\n\n return null;\n }\n}\n","import React from 'react';\nimport type { TimeDimension } from '@cubejs-client/core';\n\nimport QueryRenderer from './QueryRenderer';\nimport type { QueryRendererWithTotalsProps } from './types';\n\nconst QueryRendererWithTotals = ({ query, ...restProps }: QueryRendererWithTotalsProps) => (\n <QueryRenderer\n queries={{\n // `granularity: null` is sent to the API on purpose to get totals\n totals: {\n ...query,\n dimensions: [],\n timeDimensions: query.timeDimensions\n ? query.timeDimensions.map(td => ({ ...td, granularity: null }) as unknown as TimeDimension)\n : undefined\n },\n main: query\n }}\n {...restProps}\n />\n);\n\nexport default QueryRendererWithTotals;\n","export function removeEmpty<T>(obj: T): T {\n if (Array.isArray(obj) || typeof obj !== 'object') {\n return obj;\n }\n\n return Object.fromEntries(\n Object.entries(obj as Record<string, unknown>)\n .filter(([, v]) => v != null)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return [k, v.map(removeEmpty)];\n }\n\n return [k, typeof v === 'object' ? removeEmpty(v) : v];\n })\n ) as T;\n}\n","import React from 'react';\nimport { clone, equals, indexBy, pick, prop, uniq, uniqBy } from 'ramda';\nimport {\n defaultHeuristics,\n defaultOrder,\n flattenFilters,\n getQueryMembers,\n isQueryPresent,\n moveItemInArray,\n movePivotItem,\n validateQuery,\n ResultSet,\n removeEmptyQueryFields\n} from '@cubejs-client/core';\nimport type {\n CubeApi,\n CubeMember,\n DryRunResponse,\n Meta,\n NotFoundMember,\n PivotConfig,\n PivotQuery,\n Query,\n QueryOrder,\n RequestError,\n TCubeDimension,\n TCubeMeasure,\n TCubeSegment,\n TDefaultHeuristicsState,\n TOrderMember,\n} from '@cubejs-client/core';\n\nimport QueryRenderer from './QueryRenderer';\nimport CubeContext from './CubeContext';\nimport { removeEmpty } from './utils';\nimport type {\n AvailableCube,\n AvailableMembers,\n ChartType,\n CubeContextProps,\n FilterUpdateFields,\n FilterUpdateInput,\n GranularityOption,\n IndexedDimension,\n IndexedMeasure,\n IndexedSegment,\n MemberUpdater,\n MemberUpdaterFactory,\n MetaErrorSource,\n MutexObj,\n PivotConfigUpdaterArgs,\n QueryBuilderInternalState,\n QueryBuilderProps,\n QueryBuilderRenderProps,\n QueryBuilderState,\n QueryBuilderStateUpdate,\n QueryMemberType,\n QueryRendererRenderProps,\n ResolvedFilter,\n ResolveMemberArgs,\n ResolvedTimeDimension,\n TimeDimensionComparisonUpdateFields,\n TimeDimensionRangedUpdateFields,\n TimeDimensionUpdateInput,\n TimeDimensionWithExtraFields,\n} from './types';\n\nconst granularities: GranularityOption[] = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\n/**\n * `<QueryBuilder />` is used to build interactive analytics query builders. It abstracts state management and API calls to Cube Backend. It uses render prop technique and doesn’t render anything itself, but calls the render function instead.\n *\n * **Example**\n *\n * [Open in CodeSandbox](https://codesandbox.io/s/z6r7qj8wm)\n * ```js\n * import React from 'react';\n * import ReactDOM from 'react-dom';\n * import { Layout, Divider, Empty, Select } from 'antd';\n * import { QueryBuilder } from '@cubejs-client/react';\n * import cube from '@cubejs-client/core';\n * import 'antd/dist/antd.css';\n *\n * import ChartRenderer from './ChartRenderer';\n *\n * const cubeApi = cube('YOUR-CUBE-API-TOKEN', {\n * apiUrl: 'http://localhost:4000/cubejs-api/v1',\n * });\n *\n * const App = () => (\n * <QueryBuilder\n * query={{\n * timeDimensions: [\n * {\n * dimension: 'LineItems.createdAt',\n * granularity: 'month',\n * },\n * ],\n * }}\n * cubeApi={cubeApi}\n * render={({ resultSet, measures, availableMeasures, updateMeasures }) => (\n * <Layout.Content style={{ padding: '20px' }}>\n * <Select\n * mode=\"multiple\"\n * style={{ width: '100%' }}\n * placeholder=\"Please select\"\n * onSelect={(measure) => updateMeasures.add(measure)}\n * onDeselect={(measure) => updateMeasures.remove(measure)}\n * >\n * {availableMeasures.map((measure) => (\n * <Select.Option key={measure.name} value={measure}>\n * {measure.title}\n * </Select.Option>\n * ))}\n * </Select>\n * <Divider />\n * {measures.length > 0 ? (\n * <ChartRenderer resultSet={resultSet} />\n * ) : (\n * <Empty description=\"Select measure or dimension to get started\" />\n * )}\n * </Layout.Content>\n * )}\n * />\n * );\n *\n * const rootElement = document.getElementById(\"root\");\n * ReactDOM.render(<App />, rootElement);\n * ```\n * @stickyTypes QueryBuilderProps, QueryBuilderRenderProps, QueryBuilderState\n * @noInheritDoc\n * @order 2\n */\nexport default class QueryBuilder extends React.Component<QueryBuilderProps, QueryBuilderInternalState> {\n static contextType = CubeContext;\n\n context!: React.ContextType<typeof CubeContext>;\n\n static defaultProps = {\n cubeApi: null,\n stateChangeHeuristics: null,\n disableHeuristics: false,\n render: null,\n wrapWithQueryRenderer: true,\n defaultChartType: 'line',\n defaultQuery: {},\n initialVizState: null,\n onVizStateChanged: null,\n\n // deprecated\n query: null,\n setQuery: null,\n vizState: null,\n setVizState: null,\n };\n\n // This is an anti-pattern, only kept for backward compatibility\n // https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#anti-pattern-unconditionally-copying-props-to-state\n static getDerivedStateFromProps(props: QueryBuilderProps, state: QueryBuilderInternalState) {\n if (props.query || props.vizState) {\n const nextState = {\n ...state,\n ...(props.vizState || {}),\n };\n\n if (Array.isArray(props.query)) {\n throw new Error('Array of queries is not supported.');\n }\n\n return {\n ...nextState,\n query: {\n ...nextState.query,\n ...(props.query || {}),\n },\n };\n }\n return null;\n }\n\n static resolveMember(\n type: QueryMemberType,\n { meta, query }: ResolveMemberArgs\n ): unknown[] {\n if (!meta) {\n return [];\n }\n\n if (Array.isArray(query)) {\n return query.reduce<unknown[]>(\n (memo, currentQuery) => memo.concat(\n QueryBuilder.resolveMember(type, {\n meta,\n query: currentQuery,\n })\n ),\n []\n );\n }\n\n if (type === 'timeDimensions') {\n return (query.timeDimensions || []).map((m, index) => ({\n ...m,\n dimension: {\n ...(meta.resolveMember(m.dimension, 'dimensions') as TCubeDimension),\n granularities,\n },\n index,\n }));\n }\n\n return (query[type] || []).map((m, index) => ({\n index,\n ...(meta.resolveMember(m, type) as CubeMember),\n }));\n }\n\n constructor(props: QueryBuilderProps) {\n super(props);\n\n this.state = {\n query: (props.defaultQuery || props.query) as Query,\n chartType: props.defaultChartType,\n validatedQuery: props.query, // deprecated, validatedQuery should not be set until after dry-run for safety\n missingMembers: [],\n // todo: rename to `isMetaReady`\n isFetchingMeta: true,\n dryRunResponse: null,\n ...props.vizState, // deprecated\n ...props.initialVizState,\n };\n\n this.mutexObj = {};\n this.orderMembersOrderKeys = [];\n }\n\n async componentDidMount() {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n async componentDidUpdate(prevProps: QueryBuilderProps) {\n const { schemaVersion, onSchemaChange } = this.props;\n const { meta } = this.state;\n\n if (this.prevContext?.cubeApi !== this.context?.cubeApi) {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n if (prevProps.schemaVersion !== schemaVersion) {\n try {\n const newMeta = await this.cubeApi().meta();\n if (!equals(newMeta, meta) && typeof onSchemaChange === 'function') {\n onSchemaChange({\n schemaVersion: schemaVersion as number,\n refresh: async () => {\n await this.fetchMeta();\n },\n });\n }\n } catch (error) {\n // eslint-disable-next-line\n this.setState({ metaError: error as Error });\n }\n }\n }\n\n // These sit after the lifecycle methods because `react/sort-comp` sorts\n // TypeScript field declarations into `everything-else`, which the configured\n // order puts after `lifecycle`. Runtime is unaffected: field initializers run\n // right after `super()`, so the constructor's assignments still win.\n private mutexObj: MutexObj;\n\n private orderMembersOrderKeys: string[];\n\n private prevContext?: CubeContextProps;\n\n fetchMeta = async () => {\n if (!this.cubeApi()) {\n return;\n }\n\n let meta: Meta | undefined;\n let metaError: MetaErrorSource | null = null;\n let richMetaError: Error | null = null;\n let metaErrorStack: string | null = null;\n\n try {\n this.setState({ isFetchingMeta: true });\n meta = await this.cubeApi().meta();\n } catch (error) {\n const requestError = error as RequestError;\n\n metaError = requestError.response?.plainError || requestError;\n richMetaError = requestError;\n metaErrorStack = requestError.response?.stack?.replace(requestError.message || '', '') || '';\n }\n\n this.setState(\n {\n meta,\n metaError: metaError ? new Error(metaError.message || metaError.toString()) : null,\n richMetaError,\n metaErrorStack,\n isFetchingMeta: false,\n },\n () => {\n // Run update query to force viz state update\n // This will catch any new missing members, and also validate the query against the new meta\n this.updateQuery({});\n }\n );\n };\n\n cubeApi(): CubeApi {\n const { cubeApi } = this.props;\n // eslint-disable-next-line react/destructuring-assignment\n return cubeApi || (this.context && this.context.cubeApi);\n }\n\n getMissingMembers(query: Query, meta?: Meta) {\n if (!meta) {\n return [];\n }\n\n return getQueryMembers(query)\n .map((member) => {\n const resolvedMember = meta.resolveMember(member, ['measures', 'dimensions', 'segments']) as NotFoundMember;\n if (resolvedMember.error) {\n return member;\n }\n return false;\n })\n .filter(Boolean) as string[];\n }\n\n isQueryPresent() {\n const { query } = this.state;\n return QueryRenderer.isQueryPresent(query);\n }\n\n prepareRenderProps(queryRendererProps?: QueryRendererRenderProps): QueryBuilderRenderProps {\n const getName = (member: unknown) => (member as CubeMember).name;\n\n const toTimeDimension = (member: TimeDimensionUpdateInput) => {\n const rangeSelection = member.compareDateRange\n ? { compareDateRange: member.compareDateRange }\n : { dateRange: member.dateRange };\n\n return removeEmpty({\n dimension: member.dimension.name,\n granularity: member.granularity,\n ...rangeSelection,\n });\n };\n\n const toFilter = (member: FilterUpdateInput) => ({\n member: member.member?.name || member.dimension?.name,\n operator: member.operator,\n ...(['set', 'notSet'].includes(member.operator) ? {} : { values: member.values }),\n });\n\n const updateMethods: MemberUpdaterFactory = (memberType, toQuery = getName) => ({\n add: (member) => {\n const { query } = this.state;\n this.updateQuery({\n [memberType]: ((query[memberType] || []) as unknown[]).concat(toQuery(member)),\n } as Query);\n },\n remove: (member) => {\n const { query } = this.state;\n\n return this.updateQuery({\n [memberType]: ((query[memberType] || []) as unknown[]).filter((_, index) => index !== member.index),\n } as Query);\n },\n update: (member, updateWith) => {\n const { query } = this.state;\n const members = ((query[memberType] || []) as unknown[]).concat([]);\n members.splice(member.index, 1, toQuery(updateWith));\n return this.updateQuery({\n [memberType]: members,\n } as Query);\n },\n });\n\n const {\n meta,\n metaError,\n richMetaError,\n query,\n queryError,\n chartType,\n pivotConfig,\n validatedQuery,\n missingMembers,\n isFetchingMeta,\n dryRunResponse,\n metaErrorStack\n } = this.state;\n\n const flatFilters = uniqBy((filter) => `${prop('member', filter)}${prop('operator', filter)}`,\n flattenFilters((meta && query.filters) || []).map((filter) => ({\n ...filter,\n member: filter.member || filter.dimension,\n })));\n\n const filters: ResolvedFilter[] = flatFilters.map((m, i) => ({\n ...m,\n dimension: meta!.resolveMember(\n m.member || m.dimension!,\n ['dimensions', 'measures']\n ) as TCubeDimension | TCubeMeasure,\n operators: meta!.filterOperatorsForMember(m.member || m.dimension!, ['dimensions', 'measures']),\n index: i,\n }));\n\n const measures = QueryBuilder.resolveMember('measures', this.state) as IndexedMeasure[];\n const dimensions = QueryBuilder.resolveMember('dimensions', this.state) as IndexedDimension[];\n const timeDimensions = QueryBuilder.resolveMember('timeDimensions', this.state) as ResolvedTimeDimension[];\n const segments: IndexedSegment[] = ((meta && query.segments) || []).map((m, i) => ({\n index: i,\n ...(meta!.resolveMember(m, 'segments') as TCubeSegment),\n }));\n\n let availableMeasures: TCubeMeasure[] = [];\n let availableDimensions: TCubeDimension[] = [];\n let availableSegments: TCubeSegment[] = [];\n let availableFilterMembers: Array<AvailableCube<TCubeMeasure> | AvailableCube<TCubeDimension>> = [];\n\n const availableMembers: AvailableMembers = meta?.membersGroupedByCube() || {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n };\n\n if (meta) {\n availableMeasures = meta.membersForQuery(query, 'measures') as TCubeMeasure[];\n availableDimensions = meta.membersForQuery(query, 'dimensions') as TCubeDimension[];\n availableSegments = meta.membersForQuery(query, 'segments') as TCubeSegment[];\n\n const indexedMeasures = indexBy(prop('cubeName'), availableMembers.measures);\n const indexedDimensions = indexBy(prop('cubeName'), availableMembers.dimensions);\n const cubeNames = uniq([...Object.keys(indexedMeasures), ...Object.keys(indexedDimensions)]).sort();\n\n // Measures and dimensions of a cube are merged into one member list, which\n // the declared type describes as either one or the other\n availableFilterMembers = cubeNames.map((name): AvailableCube<TCubeMeasure | TCubeDimension> => {\n const cube = indexedMeasures[name] || indexedDimensions[name];\n\n return {\n ...cube,\n members: [\n ...indexedMeasures[name]?.members,\n ...indexedDimensions[name]?.members\n ].sort((a, b) => (a.shortTitle > b.shortTitle ? 1 : -1)),\n };\n }) as Array<AvailableCube<TCubeMeasure> | AvailableCube<TCubeDimension>>;\n }\n\n const activeOrder = Array.isArray(query.order) ? Object.fromEntries(query.order) : query.order;\n const members = [\n ...measures,\n ...dimensions,\n ...timeDimensions.map(({ dimension }) => dimension)\n ];\n\n let orderMembers = uniqBy(prop('id'), [\n // uniqBy prefers first, so these will only be added if not already in the query\n ...members.map(({ name, title }) => ({ id: name, title, order: activeOrder?.[name] || 'none' })),\n ]);\n\n if (this.orderMembersOrderKeys.length !== orderMembers.length) {\n this.orderMembersOrderKeys = orderMembers.map(({ id }) => id);\n }\n\n if (this.orderMembersOrderKeys.length) {\n // Preserve order until the members change or manually re-ordered\n // This is needed so that when an order member becomes active, it doesn't jump to the top of the list\n orderMembers = (this.orderMembersOrderKeys || [])\n .map((id) => orderMembers.find((member) => member.id === id))\n .filter(Boolean) as TOrderMember[];\n }\n\n return {\n meta,\n metaError,\n richMetaError,\n metaErrorStack,\n query,\n error: queryError, // Match same name as QueryRenderer prop\n validatedQuery: validatedQuery as Query,\n isQueryPresent: this.isQueryPresent(),\n chartType,\n measures,\n dimensions,\n // The declared granularity options require a `name`, which the\n // \"w/o grouping\" option leaves out\n timeDimensions: timeDimensions as (TimeDimensionWithExtraFields & { index: number })[],\n segments,\n filters,\n orderMembers,\n availableMeasures,\n availableDimensions,\n availableTimeDimensions: availableDimensions.filter((m) => m.type === 'time'),\n availableSegments,\n availableMembers,\n availableFilterMembers,\n updateQuery: (queryUpdate) => this.updateQuery(queryUpdate),\n updateMeasures: updateMethods<TCubeMeasure>('measures'),\n updateDimensions: updateMethods<TCubeDimension>('dimensions'),\n updateSegments: updateMethods<TCubeSegment>('segments'),\n updateTimeDimensions: updateMethods<TimeDimensionUpdateInput>('timeDimensions', toTimeDimension) as\n MemberUpdater<TimeDimensionRangedUpdateFields | TimeDimensionComparisonUpdateFields>,\n updateFilters: updateMethods<FilterUpdateInput>('filters', toFilter) as MemberUpdater<FilterUpdateFields>,\n updateChartType: (newChartType: ChartType) => this.updateVizState({ chartType: newChartType }),\n updateOrder: {\n set: (memberId: string, newOrder: QueryOrder | 'none' = 'asc') => {\n this.updateQuery({\n order: orderMembers\n .map((orderMember) => ({\n ...orderMember,\n order: orderMember.id === memberId ? newOrder : orderMember.order,\n }))\n .reduce<[string, QueryOrder][]>(\n (acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc),\n []\n ),\n });\n },\n update: (order) => {\n this.updateQuery({\n order,\n });\n },\n reorder: (sourceIndex: number, destinationIndex: number) => {\n if (sourceIndex == null || destinationIndex == null) {\n return;\n }\n\n const nextArray = moveItemInArray(orderMembers, sourceIndex, destinationIndex);\n this.orderMembersOrderKeys = nextArray.map(({ id }) => id);\n\n this.updateQuery({\n order: nextArray.reduce<[string, QueryOrder][]>(\n (acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc),\n []\n ),\n });\n },\n },\n pivotConfig,\n updatePivotConfig: {\n moveItem: ({ sourceIndex, destinationIndex, sourceAxis, destinationAxis }: PivotConfigUpdaterArgs) => {\n this.updateVizState({\n pivotConfig: movePivotItem(\n pivotConfig as PivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis\n ),\n });\n },\n update: (config) => {\n const { limit } = config;\n\n this.updateVizState({\n pivotConfig: {\n ...pivotConfig,\n ...config,\n },\n ...(limit ? { query: { ...query, limit } } : null),\n });\n },\n },\n missingMembers,\n refresh: this.fetchMeta,\n isFetchingMeta,\n dryRunResponse: dryRunResponse as DryRunResponse | undefined,\n ...queryRendererProps,\n };\n }\n\n updateQuery(queryUpdate: Query) {\n const { query } = this.state;\n\n this.updateVizState({\n query: removeEmptyQueryFields({\n ...query,\n ...queryUpdate,\n }),\n });\n }\n\n async updateVizState(state: QueryBuilderStateUpdate) {\n const { setQuery, setVizState } = this.props;\n const { query: stateQuery, pivotConfig: statePivotConfig, chartType, meta } = this.state;\n\n const finalState = this.applyStateChangeHeuristics(state);\n if (!finalState.query) {\n finalState.query = { ...stateQuery };\n }\n\n let vizStateSent: QueryBuilderState | null = null;\n const handleVizStateChange = (currentState: QueryBuilderStateUpdate) => {\n const { onVizStateChanged } = this.props;\n if (onVizStateChanged) {\n const newVizState = pick(['chartType', 'pivotConfig', 'query'], currentState) as QueryBuilderState;\n // Don't run callbacks more than once unless the viz state has changed since last time\n if (!vizStateSent || !equals(vizStateSent, newVizState)) {\n onVizStateChanged(newVizState);\n // use clone to make sure we don't save object references\n vizStateSent = clone(newVizState);\n }\n }\n };\n\n // deprecated, setters replaced by onVizStateChanged\n const runSetters = (currentState: QueryBuilderStateUpdate) => {\n if (setVizState) {\n setVizState(pick(['chartType', 'pivotConfig', 'query'], currentState) as QueryBuilderState);\n }\n if (currentState.query && setQuery) {\n setQuery(currentState.query);\n }\n };\n\n if (finalState.shouldApplyHeuristicOrder) {\n finalState.query.order = defaultOrder(finalState.query);\n }\n\n finalState.pivotConfig = ResultSet.getNormalizedPivotConfig(\n finalState.query as PivotQuery,\n (finalState.pivotConfig !== undefined ? finalState.pivotConfig : statePivotConfig) as PivotConfig | undefined\n );\n\n finalState.missingMembers = this.getMissingMembers(finalState.query, meta);\n finalState.chartType = finalState.chartType || state.chartType || chartType;\n\n // deprecated\n runSetters({\n ...state,\n query: finalState.query,\n });\n\n // Update optimistically so that UI does not stutter\n this.setState({\n ...finalState,\n queryError: null,\n } as QueryBuilderInternalState);\n\n handleVizStateChange(finalState);\n\n const shouldFetchDryRun = !equals(\n pick(['measures', 'dimensions', 'timeDimensions'], stateQuery),\n pick(['measures', 'dimensions', 'timeDimensions'], finalState.query)\n );\n\n if (shouldFetchDryRun && isQueryPresent(finalState.query) && finalState.missingMembers.length === 0) {\n try {\n const response = await this.cubeApi().dryRun(finalState.query, {\n mutexObj: this.mutexObj,\n });\n\n if (finalState.shouldApplyHeuristicOrder) {\n finalState.query.order = (response.queryOrder || []).reduce((memo, current) => ({ ...memo, ...current }), {});\n }\n\n finalState.pivotConfig = ResultSet.getNormalizedPivotConfig(response.pivotQuery, finalState.pivotConfig);\n finalState.validatedQuery = this.validatedQuery(finalState);\n finalState.dryRunResponse = response;\n\n // deprecated\n if (isQueryPresent(stateQuery)) {\n runSetters({\n ...this.state,\n ...finalState,\n });\n }\n } catch (error) {\n const requestError = error as RequestError;\n\n this.setState({\n queryError: new Error(requestError.response?.plainError || requestError.message),\n richQueryError: new Error(requestError.message || requestError.toString())\n });\n }\n }\n\n this.setState(finalState as QueryBuilderInternalState, () => handleVizStateChange(this.state));\n }\n\n validatedQuery(state?: QueryBuilderStateUpdate) {\n const { query } = state || this.state;\n\n return validateQuery(query);\n }\n\n defaultHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate {\n const { query, sessionGranularity, meta } = this.state;\n\n return defaultHeuristics(newState as TDefaultHeuristicsState, query, {\n meta: meta as Meta,\n sessionGranularity: sessionGranularity || 'day',\n }) as QueryBuilderStateUpdate;\n }\n\n applyStateChangeHeuristics(newState: QueryBuilderStateUpdate): QueryBuilderStateUpdate {\n const { stateChangeHeuristics, disableHeuristics } = this.props;\n if (disableHeuristics) {\n return newState;\n }\n return (stateChangeHeuristics && stateChangeHeuristics(this.state, newState)) || this.defaultHeuristics(newState);\n }\n\n render() {\n const { query } = this.state;\n const { cubeApi, render, wrapWithQueryRenderer } = this.props;\n\n if (wrapWithQueryRenderer) {\n return (\n <QueryRenderer\n query={query}\n cubeApi={cubeApi}\n resetResultSetOnChange={false}\n render={(queryRendererProps) => {\n if (render) {\n return render(this.prepareRenderProps(queryRendererProps));\n }\n return null;\n }}\n />\n );\n } else {\n if (render) {\n return render(this.prepareRenderProps());\n }\n return null;\n }\n }\n}\n","import React from 'react';\n\nimport CubeContext from './CubeContext';\nimport type { CubeContextProps, CubeProviderProps } from './types';\n\n/**\n * Cube context provider\n * ```js\n * import React from 'react';\n * import cube from '@cubejs-client/core';\n * import { CubeProvider } from '@cubejs-client/react';\n *\n * const API_URL = 'https://harsh-eel.aws-us-east-2.cubecloudapp.dev';\n * const CUBE_TOKEN =\n * 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.* eyJpYXQiOjE1OTE3MDcxNDgsImV4cCI6MTU5NDI5OTE0OH0.* n5jGLQJ14igg6_Hri_Autx9qOIzVqp4oYxmX27V-4T4';\n *\n * const cubeApi = cube(CUBE_TOKEN, {\n * apiUrl: `${API_URL}/cubejs-api/v1`,\n * });\n *\n * export default function App() {\n * return (\n * <CubeProvider cubeApi={cubeApi}>\n * //...\n * </CubeProvider>\n * )\n * }\n * ```\n * @stickyTypes\n * @order 10\n */\nconst CubeProvider: React.FC<CubeProviderProps> = ({ cubeApi, children, options = {} }) => (\n <CubeContext.Provider value={{\n cubeApi,\n options\n } as CubeContextProps}\n >\n {children}\n </CubeContext.Provider>\n);\n\nexport default CubeProvider;\n","import { useRef } from 'react';\nimport { equals } from 'ramda';\n\nexport default function useDeepCompareMemoize(value: unknown[]): unknown[] {\n const ref = useRef<unknown[]>([]);\n\n if (!equals(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent } from '@cubejs-client/core';\nimport type { MetaMethodOptions, Query } from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport type {\n CubeFetchArgs,\n CubeFetchDispatch,\n CubeFetchMethod,\n CubeFetchState,\n MutexObj,\n UseCubeFetchInternalResult,\n UseCubeFetchLoadOptions,\n UseCubeFetchOptions,\n UseCubeFetchResult,\n} from '../types';\n\n/**\n * @hidden\n */\nexport function useCubeFetch<T>(\n method: CubeFetchMethod,\n options?: UseCubeFetchOptions\n): UseCubeFetchResult<T>;\n\nexport function useCubeFetch<T>(\n method: CubeFetchMethod,\n options: UseCubeFetchOptions = {}\n): UseCubeFetchInternalResult<T> {\n const context = useContext(CubeContext);\n const mutexRef = useRef<MutexObj>({});\n\n const [response, setResponse] = useState<CubeFetchState<T>>({\n isLoading: false,\n response: null,\n });\n const [error, setError] = useState<Error | null>(null);\n\n const { skip = false } = options;\n\n async function load(loadOptions: UseCubeFetchLoadOptions = {}, ignoreSkip = false) {\n const cubeApi = options.cubeApi || context?.cubeApi;\n const query = loadOptions.query || options.query;\n const onlyViews = 'onlyViews' in loadOptions ? loadOptions.onlyViews : options.onlyViews;\n\n const queryCondition = method === 'meta' ? true : query && isQueryPresent(query);\n\n if (cubeApi && (ignoreSkip || !skip) && queryCondition) {\n setError(null);\n setResponse({\n isLoading: true,\n response: null,\n });\n\n const coreOptions: MetaMethodOptions = {\n mutexObj: mutexRef.current,\n mutexKey: method,\n ...(options.baseRequestId ? { baseRequestId: options.baseRequestId } : {}),\n ...(method === 'meta' && onlyViews ? { onlyViews: true } : {})\n };\n const args: CubeFetchArgs = method === 'meta' ? [coreOptions] : [query!, coreOptions];\n // `method` picks between overloaded `CubeApi` methods, so the call is\n // dispatched dynamically while keeping `cubeApi` as the receiver\n const fetchMethod = cubeApi[method] as CubeFetchDispatch;\n\n try {\n const fetchResponse = await fetchMethod.apply(cubeApi, args) as T;\n\n setResponse({\n response: fetchResponse,\n isLoading: false,\n });\n } catch (fetchError) {\n setError(fetchError as Error);\n setResponse({\n isLoading: false,\n response: null,\n });\n }\n }\n }\n\n useEffect(() => {\n load();\n // `order` is read off a single query; an array of queries does not carry it\n }, useDeepCompareMemoize([\n Object.keys((options.query as Query | undefined)?.order || {}),\n options,\n context,\n ]));\n\n return {\n ...response,\n error,\n refetch: (refetchOptions?: UseCubeFetchLoadOptions) => load(refetchOptions, true),\n };\n}\n","import type { DryRunResponse, Query, SqlQuery } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { UseCubeFetchOptions, UseCubeFetchResult } from '../types';\n\n/**\n * The hook resolves with a `SqlQuery`, while its `response` stays declared as a\n * dry-run response for backwards compatibility — `UseCubeSqlResult` spells the\n * real shape. `refetch` is declared, as it is on `useDryRun` and `useCubeMeta`,\n * because all three return the same object.\n *\n * @hidden\n */\nexport function useCubeSql(\n query: Query | Query[],\n options: UseCubeFetchOptions = {}\n): UseCubeFetchResult<DryRunResponse> {\n return useCubeFetch<SqlQuery>('sql', {\n ...options,\n query\n }) as unknown as UseCubeFetchResult<DryRunResponse>;\n}\n","import type { DryRunResponse, Query } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { UseCubeFetchOptions, UseCubeFetchResult } from '../types';\n\n/**\n * @hidden\n */\nexport function useDryRun(\n query: Query | Query[],\n options: UseCubeFetchOptions = {}\n): UseCubeFetchResult<DryRunResponse> {\n return useCubeFetch<DryRunResponse>('dryRun', {\n ...options,\n query,\n });\n}\n","import type { DryRunResponse, Query } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type {\n CubeFetchResult,\n UseCubeFetchLoadOptions,\n UseCubeFetchOptions,\n} from '../types';\n\n/**\n * @hidden\n */\nexport function useLazyDryRun(\n query?: Query | Query[],\n options: UseCubeFetchOptions = {}\n): [(loadOptions?: UseCubeFetchLoadOptions) => Promise<void>, CubeFetchResult<DryRunResponse>] {\n const { refetch, ...result } = useCubeFetch<DryRunResponse>('dryRun', {\n ...options,\n query,\n skip: true\n });\n\n return [refetch, result];\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent, areQueriesEqual } from '@cubejs-client/core';\nimport type {\n DeeplyReadonly,\n ProgressResponse,\n Query,\n QueryRecordType,\n ResultSet,\n UnsubscribeObj,\n} from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport type {\n MutexObj,\n ProgressCallback,\n ProgressResultWithResponse,\n ReadonlyQueryInput,\n UseCubeQueryInternalResult,\n UseCubeQueryOptions,\n UseCubeQueryResult,\n} from '../types';\n\n/**\n * A React hook for executing Cube queries\n * ```js\n * import React from 'react';\n * import { Table } from 'antd';\n * import { useCubeQuery } from '@cubejs-client/react';\n *\n * export default function App() {\n * const { resultSet, isLoading, error, progress } = useCubeQuery({\n * measures: ['Orders.count'],\n * dimensions: ['Orders.createdAt.month'],\n * });\n *\n * if (isLoading) {\n * return <div>{progress?.stage || 'Loading...'}</div>;\n * }\n *\n * if (error) {\n * return <div>{error.toString()}</div>;\n * }\n *\n * if (!resultSet) {\n * return null;\n * }\n *\n * const dataSource = resultSet.tablePivot();\n * const columns = resultSet.tableColumns();\n *\n * return <Table columns={columns} dataSource={dataSource} />;\n * }\n *\n * ```\n * @order 1\n * @stickyTypes\n */\nexport function useCubeQuery<\n Data,\n QueryInput extends ReadonlyQueryInput = ReadonlyQueryInput\n>(\n query: QueryInput,\n options?: UseCubeQueryOptions\n): UseCubeQueryResult<QueryInput, unknown extends Data ? QueryRecordType<QueryInput> : Data>;\n\nexport function useCubeQuery(\n query: ReadonlyQueryInput,\n options: UseCubeQueryOptions = {}\n): UseCubeQueryInternalResult {\n const mutexRef = useRef<MutexObj>({});\n const [currentQuery, setCurrentQuery] = useState<ReadonlyQueryInput | null>(null);\n const [isLoading, setLoading] = useState(!options.skip);\n const [resultSet, setResultSet] = useState<ResultSet | null>(null);\n const [progress, setProgress] = useState<ProgressResponse | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const context = useContext(CubeContext);\n const requestIdRef = useRef(0);\n const hasStartedRequestRef = useRef(false);\n\n let subscribeRequest: UnsubscribeObj | null = null;\n\n function isCurrentRequest(requestId: number) {\n return requestId === requestIdRef.current;\n }\n\n function startRequest() {\n hasStartedRequestRef.current = true;\n\n return ++requestIdRef.current;\n }\n\n function createProgressCallback(requestId: number): ProgressCallback {\n return (progressResult) => {\n if (isCurrentRequest(requestId)) {\n // `progressResponse` is not part of the public `ProgressResult` API\n setProgress(\n (progressResult as unknown as ProgressResultWithResponse).progressResponse\n );\n }\n };\n }\n\n async function fetchQuery(requestId: number) {\n const { resetResultSetOnChange } = options;\n const cubeApi = options.cubeApi || context?.cubeApi;\n\n if (!cubeApi) {\n throw new Error('Cube API client is not provided');\n }\n\n if (resetResultSetOnChange) {\n setResultSet(null);\n }\n\n setError(null);\n setLoading(true);\n setProgress(null);\n\n try {\n const response = await cubeApi.load(query, {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback: createProgressCallback(requestId),\n castNumerics: Boolean(typeof options.castNumerics === 'boolean' ? options.castNumerics : context?.options?.castNumerics),\n ...(options.cache ? { cache: options.cache } : {}),\n });\n\n if (isCurrentRequest(requestId)) {\n setResultSet(response);\n setProgress(null);\n }\n } catch (loadError) {\n if (isCurrentRequest(requestId)) {\n setError(loadError as Error);\n setResultSet(null);\n setProgress(null);\n }\n }\n\n if (isCurrentRequest(requestId)) {\n setLoading(false);\n }\n }\n\n async function fetch() {\n const requestId = startRequest();\n\n await fetchQuery(requestId);\n }\n\n useEffect(() => {\n const { skip = false, resetResultSetOnChange } = options;\n\n const cubeApi = options.cubeApi || context?.cubeApi;\n\n if (!cubeApi) {\n throw new Error('Cube API client is not provided');\n }\n\n async function loadQuery() {\n if (!skip && isQueryPresent(query)) {\n const requestId = startRequest();\n\n // `areQueriesEqual` is declared for a single query, and reads no more\n // than `order` off one when given an array of queries\n const previousQuery = currentQuery as DeeplyReadonly<Query> | null;\n\n if (!areQueriesEqual(previousQuery, query as DeeplyReadonly<Query>)) {\n if (resetResultSetOnChange == null || resetResultSetOnChange) {\n setResultSet(null);\n }\n setCurrentQuery(query);\n }\n\n setError(null);\n setLoading(true);\n setProgress(null);\n\n try {\n if (subscribeRequest) {\n await subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n\n if (options.subscribe) {\n subscribeRequest = cubeApi.subscribe(\n query,\n {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback: createProgressCallback(requestId),\n ...(options.cache ? { cache: options.cache } : {}),\n },\n (e, result) => {\n if (isCurrentRequest(requestId)) {\n if (e) {\n setError(e);\n } else {\n setResultSet(result);\n }\n setLoading(false);\n setProgress(null);\n }\n }\n );\n } else {\n await fetchQuery(requestId);\n }\n } catch (e) {\n if (isCurrentRequest(requestId)) {\n setError(e as Error);\n setResultSet(null);\n setLoading(false);\n setProgress(null);\n }\n }\n } else if (hasStartedRequestRef.current) {\n setLoading(false);\n setProgress(null);\n }\n }\n\n loadQuery();\n\n return () => {\n requestIdRef.current += 1;\n\n if (subscribeRequest) {\n subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n };\n // `order` is read off a single query; an array of queries does not carry it\n }, useDeepCompareMemoize([\n query,\n Object.keys((query as DeeplyReadonly<Query> | undefined)?.order || {}),\n options,\n context,\n ]));\n\n return {\n isLoading,\n resultSet,\n error,\n progress,\n previousQuery: currentQuery,\n refetch: fetch\n };\n}\n","import type { Meta } from '@cubejs-client/core';\n\nimport { useCubeFetch } from './cube-fetch';\nimport type { CubeMetaFetchOptions, UseCubeFetchResult } from '../types';\n\nexport function useCubeMeta(options: CubeMetaFetchOptions = {}): UseCubeFetchResult<Meta> {\n return useCubeFetch<Meta>('meta', options);\n}\n"],"names":["createContext","QueryRenderer","React","Component","contextType","CubeContext","defaultProps","cubeApi","query","render","queries","loadSql","updateOnlyOnStateChange","resetResultSetOnChange","cache","isQueryPresent","constructor","props","state","mutexObj","componentDidMount","load","loadQueries","shouldComponentUpdate","nextProps","nextState","equals","componentDidUpdate","prevProps","context","setState","isLoading","error","sqlQuery","resultSet","loadOptions","mutexKey","sql","then","catch","Promise","all","resultPromises","toPairs","map","name","r","fromPairs","loadState","Error","response","plainError","message","toString","loadingState","QueryRendererWithTotals","restProps","createElement","_extends","totals","dimensions","timeDimensions","td","granularity","undefined","main","removeEmpty","obj","Array","isArray","Object","fromEntries","entries","filter","v","k","granularities","title","QueryBuilder","stateChangeHeuristics","disableHeuristics","wrapWithQueryRenderer","defaultChartType","defaultQuery","initialVizState","onVizStateChanged","setQuery","vizState","setVizState","getDerivedStateFromProps","resolveMember","type","meta","reduce","memo","currentQuery","concat","m","index","dimension","chartType","validatedQuery","missingMembers","isFetchingMeta","dryRunResponse","orderMembersOrderKeys","prevContext","fetchMeta","schemaVersion","onSchemaChange","newMeta","refresh","metaError","richMetaError","metaErrorStack","requestError","stack","replace","updateQuery","getMissingMembers","getQueryMembers","member","resolvedMember","Boolean","prepareRenderProps","queryRendererProps","getName","toTimeDimension","rangeSelection","compareDateRange","dateRange","toFilter","operator","includes","values","updateMethods","memberType","toQuery","add","remove","_","update","updateWith","members","splice","queryError","pivotConfig","flatFilters","uniqBy","prop","flattenFilters","filters","i","operators","filterOperatorsForMember","measures","segments","availableMeasures","availableDimensions","availableSegments","availableFilterMembers","availableMembers","membersGroupedByCube","membersForQuery","indexedMeasures","indexBy","indexedDimensions","cubeNames","uniq","keys","sort","cube","a","b","shortTitle","activeOrder","order","orderMembers","id","length","find","availableTimeDimensions","queryUpdate","updateMeasures","updateDimensions","updateSegments","updateTimeDimensions","updateFilters","updateChartType","newChartType","updateVizState","updateOrder","set","memberId","newOrder","orderMember","acc","reorder","sourceIndex","destinationIndex","nextArray","moveItemInArray","updatePivotConfig","moveItem","sourceAxis","destinationAxis","movePivotItem","config","limit","removeEmptyQueryFields","stateQuery","statePivotConfig","finalState","applyStateChangeHeuristics","vizStateSent","handleVizStateChange","currentState","newVizState","pick","clone","runSetters","shouldApplyHeuristicOrder","defaultOrder","ResultSet","getNormalizedPivotConfig","shouldFetchDryRun","dryRun","queryOrder","current","pivotQuery","richQueryError","validateQuery","defaultHeuristics","newState","sessionGranularity","CubeProvider","children","options","Provider","value","useDeepCompareMemoize","ref","useRef","useCubeFetch","method","useContext","mutexRef","setResponse","useState","setError","skip","ignoreSkip","onlyViews","queryCondition","coreOptions","baseRequestId","args","fetchMethod","fetchResponse","apply","fetchError","useEffect","refetch","refetchOptions","useCubeSql","useDryRun","useLazyDryRun","result","useCubeQuery","setCurrentQuery","setLoading","setResultSet","progress","setProgress","requestIdRef","hasStartedRequestRef","subscribeRequest","isCurrentRequest","requestId","startRequest","createProgressCallback","progressResult","progressResponse","fetchQuery","progressCallback","castNumerics","loadError","fetch","loadQuery","previousQuery","areQueriesEqual","unsubscribe","subscribe","e","useCubeMeta"],"mappings":"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"}