@cubejs-client/react 1.7.37 → 1.7.39
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.
- package/README.md +4 -4
- package/dist/CubeProvider.d.ts +1 -1
- package/dist/QueryBuilder.d.ts +4 -2
- package/dist/QueryBuilder.d.ts.map +1 -1
- package/dist/QueryRenderer.d.ts +2 -0
- package/dist/QueryRenderer.d.ts.map +1 -1
- package/dist/QueryRendererWithTotals.d.ts +2 -1
- package/dist/QueryRendererWithTotals.d.ts.map +1 -1
- package/dist/cubejs-client-react.cjs.js +88 -42
- package/dist/cubejs-client-react.cjs.js.map +1 -1
- package/dist/cubejs-client-react.esm.js +62 -34
- package/dist/cubejs-client-react.esm.js.map +1 -1
- package/dist/cubejs-client-react.umd.js +88 -42
- package/dist/cubejs-client-react.umd.js.map +1 -1
- package/dist/hooks/cube-query.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/types.d.ts +5 -5
- package/package.json +17 -4
- package/src/CubeProvider.tsx +1 -1
- package/src/QueryBuilder.tsx +3 -5
- package/src/QueryRenderer.tsx +2 -4
- package/src/hooks/cube-query.ts +68 -25
- package/src/index.ts +1 -1
- package/src/types.ts +5 -5
|
@@ -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
|
|
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
|
|
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
|
|
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
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
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
|
-
|
|
1190
|
-
|
|
1196
|
+
if (isCurrentRequest(requestId)) {
|
|
1197
|
+
setResultSet(response);
|
|
1198
|
+
setProgress(null);
|
|
1199
|
+
}
|
|
1191
1200
|
} catch (loadError) {
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1201
|
+
if (isCurrentRequest(requestId)) {
|
|
1202
|
+
setError(loadError);
|
|
1203
|
+
setResultSet(null);
|
|
1204
|
+
setProgress(null);
|
|
1205
|
+
}
|
|
1195
1206
|
}
|
|
1196
|
-
|
|
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 (
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
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
|
|
1265
|
+
await fetchQuery(requestId);
|
|
1244
1266
|
}
|
|
1245
1267
|
} catch (e) {
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
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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"}
|