@cubejs-client/react 0.34.2 → 0.34.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import React, { createContext, useRef, useEffect, useContext, useState } from 'react';
1
+ import React, { createContext, useEffect, useRef, useContext, useState } from 'react';
2
2
  import { equals, toPairs, fromPairs, uniqBy, prop, indexBy, uniq, pick, clone } from 'ramda';
3
3
  import { isQueryPresent, getQueryMembers, flattenFilters, moveItemInArray, movePivotItem, removeEmptyQueryFields, defaultOrder, ResultSet, validateQuery, defaultHeuristics, areQueriesEqual } from '@cubejs-client/core';
4
4
 
@@ -882,13 +882,20 @@ class QueryBuilder extends React.Component {
882
882
  }
883
883
 
884
884
  function CubeProvider({
885
+ cubeApi,
885
886
  cubejsApi,
886
887
  children,
887
888
  options = {}
888
889
  }) {
890
+ useEffect(() => {
891
+ if (cubejsApi && !cubeApi) {
892
+ console.warn('"cubejsApi" is deprecated and will be removed in the following version. Use "cubeApi" instead.');
893
+ }
894
+ }, [cubeApi, cubejsApi]);
889
895
  return /*#__PURE__*/React.createElement(CubeContext.Provider, {
890
896
  value: {
891
897
  cubejsApi,
898
+ cubeApi,
892
899
  options
893
900
  }
894
901
  }, children);
@@ -929,11 +936,11 @@ function useCubeFetch(method, options = {}) {
929
936
  } = options;
930
937
 
931
938
  async function load(loadOptions = {}, ignoreSkip = false) {
932
- const cubejsApi = options.cubejsApi || context?.cubejsApi;
939
+ const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;
933
940
  const query = loadOptions.query || options.query;
934
941
  const queryCondition = method === 'meta' ? true : query && isQueryPresent(query);
935
942
 
936
- if (cubejsApi && (ignoreSkip || !skip) && queryCondition) {
943
+ if (cubeApi && (ignoreSkip || !skip) && queryCondition) {
937
944
  setError(null);
938
945
  setResponse({
939
946
  isLoading: true,
@@ -946,7 +953,7 @@ function useCubeFetch(method, options = {}) {
946
953
  const args = method === 'meta' ? [coreOptions] : [query, coreOptions];
947
954
 
948
955
  try {
949
- const response = await cubejsApi[method](...args);
956
+ const response = await cubeApi[method](...args);
950
957
 
951
958
  if (isMounted()) {
952
959
  setResponse({
@@ -1013,13 +1020,19 @@ function useCubeQuery(query, options = {}) {
1013
1020
  progressResponse
1014
1021
  }) => setProgress(progressResponse);
1015
1022
 
1023
+ useEffect(() => {
1024
+ if (options.cubejsApi && !options.cubeApi) {
1025
+ console.warn('"cubejsApi" is deprecated and will be removed in the following version. Use "cubeApi" instead.');
1026
+ }
1027
+ }, [options.cubeApi, options.cubejsApi]);
1028
+
1016
1029
  async function fetch() {
1017
1030
  const {
1018
1031
  resetResultSetOnChange
1019
1032
  } = options;
1020
- const cubejsApi = options.cubejsApi || context?.cubejsApi;
1033
+ const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;
1021
1034
 
1022
- if (!cubejsApi) {
1035
+ if (!cubeApi) {
1023
1036
  throw new Error('Cube API client is not provided');
1024
1037
  }
1025
1038
 
@@ -1031,7 +1044,7 @@ function useCubeQuery(query, options = {}) {
1031
1044
  setLoading(true);
1032
1045
 
1033
1046
  try {
1034
- const response = await cubejsApi.load(query, {
1047
+ const response = await cubeApi.load(query, {
1035
1048
  mutexObj: mutexRef.current,
1036
1049
  mutexKey: 'query',
1037
1050
  progressCallback,
@@ -1060,9 +1073,9 @@ function useCubeQuery(query, options = {}) {
1060
1073
  skip = false,
1061
1074
  resetResultSetOnChange
1062
1075
  } = options;
1063
- const cubejsApi = options.cubejsApi || context?.cubejsApi;
1076
+ const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;
1064
1077
 
1065
- if (!cubejsApi) {
1078
+ if (!cubeApi) {
1066
1079
  throw new Error('Cube API client is not provided');
1067
1080
  }
1068
1081
 
@@ -1086,7 +1099,7 @@ function useCubeQuery(query, options = {}) {
1086
1099
  }
1087
1100
 
1088
1101
  if (options.subscribe) {
1089
- subscribeRequest = cubejsApi.subscribe(query, {
1102
+ subscribeRequest = cubeApi.subscribe(query, {
1090
1103
  mutexObj: mutexRef.current,
1091
1104
  mutexKey: 'query',
1092
1105
  progressCallback
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-react.esm.js","sources":["../src/CubeContext.js","../src/QueryRenderer.jsx","../src/QueryRendererWithTotals.jsx","../src/utils.js","../src/QueryBuilder.jsx","../src/CubeProvider.jsx","../src/hooks/deep-compare-memoize.js","../src/hooks/is-mounted.js","../src/hooks/cube-fetch.js","../src/hooks/cube-sql.js","../src/hooks/dry-run.js","../src/hooks/lazy-dry-run.js","../src/hooks/cube-query.js","../src/hooks/cube-meta.js"],"sourcesContent":["import { createContext } from 'react';\n\nexport default createContext(null);\n","import React from 'react';\nimport { equals, toPairs, fromPairs } from 'ramda';\nimport { isQueryPresent } from '@cubejs-client/core';\n\nimport CubeContext from './CubeContext';\n\nexport default class QueryRenderer extends React.Component {\n static contextType = CubeContext;\n \n static defaultProps = {\n cubejsApi: null,\n query: null,\n render: null,\n queries: null,\n loadSql: null,\n updateOnlyOnStateChange: false,\n resetResultSetOnChange: true\n };\n \n // @deprected use `isQueryPresent` from `@cubejs-client/core`\n static isQueryPresent(query) {\n return isQueryPresent(query);\n }\n\n constructor(props) {\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, nextState) {\n const {\n query, queries, render, cubejsApi, 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.cubejsApi !== cubejsApi\n || nextProps.loadSql !== loadSql\n || !equals(nextState, this.state)\n || nextProps.updateOnlyOnStateChange !== updateOnlyOnStateChange;\n }\n\n componentDidUpdate(prevProps) {\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 cubejsApi() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.props.cubejsApi || this.context && this.context.cubejsApi;\n }\n\n load(query) {\n const { resetResultSetOnChange } = 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 cubejsApi = this.cubejsApi();\n\n if (query && isQueryPresent(query)) {\n if (loadSql === 'only') {\n cubejsApi.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 cubejsApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' }),\n cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: 'query' })\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 cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: 'query' })\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) {\n const cubejsApi = this.cubejsApi();\n const { resetResultSetOnChange } = this.props;\n this.setState({\n isLoading: true,\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error: null\n });\n\n const resultPromises = Promise.all(toPairs(queries).map(\n ([name, query]) => cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: name }).then(r => [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 = {\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 return render(loadState);\n }\n\n return null;\n }\n}\n","import React from 'react';\nimport QueryRenderer from './QueryRenderer.jsx';\n\nconst QueryRendererWithTotals = ({ query, ...restProps }) => (\n <QueryRenderer\n queries={{\n totals: {\n ...query,\n dimensions: [],\n timeDimensions: query.timeDimensions\n ? query.timeDimensions.map(td => ({ ...td, granularity: null }))\n : undefined\n },\n main: query\n }}\n {...restProps}\n />\n);\n\nexport default QueryRendererWithTotals;\n","export function removeEmpty(obj) {\n if (typeof obj !== 'object') {\n return obj;\n }\n\n return Object.fromEntries(\n Object.entries(obj)\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 );\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';\n\nimport QueryRenderer from './QueryRenderer.jsx';\nimport CubeContext from './CubeContext';\nimport { removeEmpty } from './utils';\n\nconst granularities = [\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\nexport default class QueryBuilder extends React.Component {\n static contextType = CubeContext;\n\n static defaultProps = {\n cubejsApi: 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, state) {\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(type, { meta, query }) {\n if (!meta) {\n return [];\n }\n\n if (Array.isArray(query)) {\n return query.reduce(\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'),\n granularities,\n },\n index,\n }));\n }\n\n return (query[type] || []).map((m, index) => ({\n index,\n ...meta.resolveMember(m, type),\n }));\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n query: props.defaultQuery || props.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) {\n const { schemaVersion, onSchemaChange } = this.props;\n const { meta } = this.state;\n\n if (this.prevContext?.cubejsApi !== this.context?.cubejsApi) {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n if (prevProps.schemaVersion !== schemaVersion) {\n try {\n const newMeta = await this.cubejsApi().meta();\n if (!equals(newMeta, meta) && typeof onSchemaChange === 'function') {\n onSchemaChange({\n schemaVersion,\n refresh: async () => {\n await this.fetchMeta();\n },\n });\n }\n } catch (error) {\n // eslint-disable-next-line\n this.setState({ metaError: error });\n }\n }\n }\n\n fetchMeta = async () => {\n if (!this.cubejsApi()) {\n return;\n }\n\n let meta;\n let metaError = null;\n let richMetaError = null;\n let metaErrorStack = null;\n\n try {\n this.setState({ isFetchingMeta: true });\n meta = await this.cubejsApi().meta();\n } catch (error) {\n metaError = error.response?.plainError || error;\n richMetaError = error;\n metaErrorStack = error.response?.stack?.replace(error.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 cubejsApi() {\n const { cubejsApi } = this.props;\n // eslint-disable-next-line react/destructuring-assignment\n return cubejsApi || (this.context && this.context.cubejsApi);\n }\n\n getMissingMembers(query, meta) {\n if (!meta) {\n return [];\n }\n\n return getQueryMembers(query)\n .map((member) => {\n const resolvedMember = meta.resolveMember(member, ['measures', 'dimensions', 'segments']);\n if (resolvedMember.error) {\n return member;\n }\n return false;\n })\n .filter(Boolean);\n }\n\n isQueryPresent() {\n const { query } = this.state;\n return QueryRenderer.isQueryPresent(query);\n }\n\n prepareRenderProps(queryRendererProps) {\n const getName = (member) => member.name;\n\n const toTimeDimension = (member) => {\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) => ({\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 = (memberType, toQuery = getName) => ({\n add: (member) => {\n const { query } = this.state;\n this.updateQuery({\n [memberType]: (query[memberType] || []).concat(toQuery(member)),\n });\n },\n remove: (member) => {\n const { query } = this.state;\n\n return this.updateQuery({\n [memberType]: (query[memberType] || []).filter((_, index) => index !== member.index),\n });\n },\n update: (member, updateWith) => {\n const { query } = this.state;\n const members = (query[memberType] || []).concat([]);\n members.splice(member.index, 1, toQuery(updateWith));\n return this.updateQuery({\n [memberType]: members,\n });\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 = flatFilters.map((m, i) => ({\n ...m,\n dimension: meta.resolveMember(m.member || m.dimension, ['dimensions', 'measures']),\n operators: meta.filterOperatorsForMember(m.member || m.dimension, ['dimensions', 'measures']),\n index: i,\n }));\n\n const measures = QueryBuilder.resolveMember('measures', this.state);\n const dimensions = QueryBuilder.resolveMember('dimensions', this.state);\n const timeDimensions = QueryBuilder.resolveMember('timeDimensions', this.state);\n const segments = ((meta && query.segments) || []).map((m, i) => ({\n index: i,\n ...meta.resolveMember(m, 'segments'),\n }));\n\n let availableMeasures = [];\n let availableDimensions = [];\n let availableSegments = [];\n let availableFilterMembers = [];\n\n const availableMembers = meta?.membersGroupedByCube() || {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n };\n\n if (meta) {\n availableMeasures = meta.membersForQuery(query, 'measures');\n availableDimensions = meta.membersForQuery(query, 'dimensions');\n availableSegments = meta.membersForQuery(query, 'segments');\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 availableFilterMembers = cubeNames.map((name) => {\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 });\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);\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,\n isQueryPresent: this.isQueryPresent(),\n chartType,\n measures,\n dimensions,\n timeDimensions,\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('measures'),\n updateDimensions: updateMethods('dimensions'),\n updateSegments: updateMethods('segments'),\n updateTimeDimensions: updateMethods('timeDimensions', toTimeDimension),\n updateFilters: updateMethods('filters', toFilter),\n updateChartType: (newChartType) => this.updateVizState({ chartType: newChartType }),\n updateOrder: {\n set: (memberId, newOrder = 'asc') => {\n this.updateQuery({\n order: orderMembers\n .map((orderMember) => ({\n ...orderMember,\n order: orderMember.id === memberId ? newOrder : orderMember.order,\n }))\n .reduce((acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc), []),\n });\n },\n update: (order) => {\n this.updateQuery({\n order,\n });\n },\n reorder: (sourceIndex, destinationIndex) => {\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((acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc), []),\n });\n },\n },\n pivotConfig,\n updatePivotConfig: {\n moveItem: ({ sourceIndex, destinationIndex, sourceAxis, destinationAxis }) => {\n this.updateVizState({\n pivotConfig: movePivotItem(pivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis),\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,\n ...queryRendererProps,\n };\n }\n\n updateQuery(queryUpdate) {\n const { query } = this.state;\n\n this.updateVizState({\n query: removeEmptyQueryFields({\n ...query,\n ...queryUpdate,\n }),\n });\n }\n\n async updateVizState(state) {\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 = null;\n const handleVizStateChange = (currentState) => {\n const { onVizStateChanged } = this.props;\n if (onVizStateChanged) {\n const newVizState = pick(['chartType', 'pivotConfig', 'query'], currentState);\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) => {\n if (setVizState) {\n setVizState(pick(['chartType', 'pivotConfig', 'query'], currentState));\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,\n finalState.pivotConfig !== undefined ? finalState.pivotConfig : statePivotConfig\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 });\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.cubejsApi().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 this.setState({\n queryError: new Error(error.response?.plainError || error.message),\n richQueryError: new Error(error.message || error.toString())\n });\n }\n }\n\n this.setState(finalState, () => handleVizStateChange(this.state));\n }\n\n validatedQuery(state) {\n const { query } = state || this.state;\n\n return validateQuery(query);\n }\n\n defaultHeuristics(newState) {\n const { query, sessionGranularity, meta } = this.state;\n\n return defaultHeuristics(newState, query, {\n meta,\n sessionGranularity: sessionGranularity || 'day',\n });\n }\n\n applyStateChangeHeuristics(newState) {\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 { cubejsApi, render, wrapWithQueryRenderer } = this.props;\n\n if (wrapWithQueryRenderer) {\n return (\n <QueryRenderer\n query={query}\n cubejsApi={cubejsApi}\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';\nimport CubeContext from './CubeContext';\n\nexport default function CubeProvider({ cubejsApi, children, options = {} }) {\n return (\n <CubeContext.Provider value={{\n cubejsApi,\n options\n }}\n >\n {children}\n </CubeContext.Provider>\n );\n}\n","import { useRef } from 'react';\nimport { equals } from 'ramda';\n\nexport default function useDeepCompareMemoize(value) {\n const ref = useRef([]);\n\n if (!equals(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useIsMounted() {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return () => isMounted.current;\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent } from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport { useIsMounted } from './is-mounted';\n\nexport function useCubeFetch(method, options = {}) {\n const isMounted = useIsMounted();\n const context = useContext(CubeContext);\n const mutexRef = useRef({});\n\n const [response, setResponse] = useState({\n isLoading: false,\n response: null,\n });\n const [error, setError] = useState(null);\n\n const { skip = false } = options;\n\n async function load(loadOptions = {}, ignoreSkip = false) {\n const cubejsApi = options.cubejsApi || context?.cubejsApi;\n const query = loadOptions.query || options.query;\n\n const queryCondition = method === 'meta' ? true : query && isQueryPresent(query);\n\n if (cubejsApi && (ignoreSkip || !skip) && queryCondition) {\n setError(null);\n setResponse({\n isLoading: true,\n response: null,\n });\n\n const coreOptions = {\n mutexObj: mutexRef.current,\n mutexKey: method,\n };\n const args = method === 'meta' ? [coreOptions] : [query, coreOptions];\n\n try {\n const response = await cubejsApi[method](...args);\n\n if (isMounted()) {\n setResponse({\n response,\n isLoading: false,\n });\n }\n } catch (error) {\n if (isMounted()) {\n setError(error);\n setResponse({\n isLoading: false,\n response: null,\n });\n }\n }\n }\n }\n\n useEffect(() => {\n load();\n }, useDeepCompareMemoize([Object.keys(options.query?.order || {}), options, context]));\n\n return {\n ...response,\n error,\n refetch: (options) => load(options, true),\n };\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useCubeSql(query, options = {}) {\n return useCubeFetch('sql', {\n ...options,\n query\n });\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useDryRun(query, options = {}) {\n return useCubeFetch('dryRun', {\n ...options,\n query,\n });\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useLazyDryRun(query, options = {}) {\n const { refetch, ...result } = useCubeFetch('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';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport { useIsMounted } from './is-mounted';\n\nexport function useCubeQuery(query, options = {}) {\n const mutexRef = useRef({});\n const isMounted = useIsMounted();\n const [currentQuery, setCurrentQuery] = useState(null);\n const [isLoading, setLoading] = useState(false);\n const [resultSet, setResultSet] = useState(null);\n const [progress, setProgress] = useState(null);\n const [error, setError] = useState(null);\n const context = useContext(CubeContext);\n\n let subscribeRequest = null;\n\n const progressCallback = ({ progressResponse }) => setProgress(progressResponse);\n\n async function fetch() {\n const { resetResultSetOnChange } = options;\n const cubejsApi = options.cubejsApi || context?.cubejsApi;\n\n if (!cubejsApi) {\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 cubejsApi.load(query, {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback,\n castNumerics: Boolean(typeof options.castNumerics === 'boolean' ? options.castNumerics : context?.options?.castNumerics)\n });\n\n if (isMounted()) {\n setResultSet(response);\n setProgress(null);\n }\n } catch (error) {\n if (isMounted()) {\n setError(error);\n setResultSet(null);\n setProgress(null);\n }\n }\n\n if (isMounted()) {\n setLoading(false);\n }\n }\n\n useEffect(() => {\n const { skip = false, resetResultSetOnChange } = options;\n\n const cubejsApi = options.cubejsApi || context?.cubejsApi;\n\n if (!cubejsApi) {\n throw new Error('Cube API client is not provided');\n }\n\n async function loadQuery() {\n if (!skip && isQueryPresent(query)) {\n if (!areQueriesEqual(currentQuery, 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 = cubejsApi.subscribe(\n query,\n {\n mutexObj: mutexRef.current,\n mutexKey: 'query',\n progressCallback,\n },\n (e, result) => {\n if (isMounted()) {\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 fetch();\n }\n } catch (e) {\n if (isMounted()) {\n setError(e);\n setResultSet(null);\n setLoading(false);\n setProgress(null);\n }\n }\n }\n }\n\n loadQuery();\n\n return () => {\n if (subscribeRequest) {\n subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n };\n }, useDeepCompareMemoize([query, Object.keys((query && query.order) || {}), options, context]));\n\n return {\n isLoading,\n resultSet,\n error,\n progress,\n previousQuery: currentQuery,\n refetch: fetch\n };\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useCubeMeta(options = {}) {\n return useCubeFetch('meta', options);\n}\n"],"names":["createContext","QueryRenderer","React","Component","contextType","CubeContext","defaultProps","cubejsApi","query","render","queries","loadSql","updateOnlyOnStateChange","resetResultSetOnChange","isQueryPresent","constructor","props","state","mutexObj","componentDidMount","load","loadQueries","shouldComponentUpdate","nextProps","nextState","equals","componentDidUpdate","prevProps","context","setState","isLoading","error","sqlQuery","resultSet","sql","mutexKey","then","catch","Promise","all","resultPromises","toPairs","map","name","r","fromPairs","loadState","Error","response","plainError","message","toString","loadingState","QueryRendererWithTotals","restProps","totals","dimensions","timeDimensions","td","granularity","undefined","main","removeEmpty","obj","Object","fromEntries","entries","filter","v","k","Array","isArray","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","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","useDeepCompareMemoize","value","ref","useRef","useIsMounted","isMounted","useEffect","useCubeFetch","method","useContext","mutexRef","setResponse","useState","setError","skip","loadOptions","ignoreSkip","queryCondition","coreOptions","args","refetch","useCubeSql","useDryRun","useLazyDryRun","result","useCubeQuery","setCurrentQuery","setLoading","setResultSet","progress","setProgress","subscribeRequest","progressCallback","progressResponse","fetch","castNumerics","loadQuery","areQueriesEqual","unsubscribe","subscribe","e","previousQuery","useCubeMeta"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-react.esm.js","sources":["../src/CubeContext.js","../src/QueryRenderer.jsx","../src/QueryRendererWithTotals.jsx","../src/utils.js","../src/QueryBuilder.jsx","../src/CubeProvider.jsx","../src/hooks/deep-compare-memoize.js","../src/hooks/is-mounted.js","../src/hooks/cube-fetch.js","../src/hooks/cube-sql.js","../src/hooks/dry-run.js","../src/hooks/lazy-dry-run.js","../src/hooks/cube-query.js","../src/hooks/cube-meta.js"],"sourcesContent":["import { createContext } from 'react';\n\nexport default createContext(null);\n","import React from 'react';\nimport { equals, toPairs, fromPairs } from 'ramda';\nimport { isQueryPresent } from '@cubejs-client/core';\n\nimport CubeContext from './CubeContext';\n\nexport default class QueryRenderer extends React.Component {\n static contextType = CubeContext;\n \n static defaultProps = {\n cubejsApi: null,\n query: null,\n render: null,\n queries: null,\n loadSql: null,\n updateOnlyOnStateChange: false,\n resetResultSetOnChange: true\n };\n \n // @deprected use `isQueryPresent` from `@cubejs-client/core`\n static isQueryPresent(query) {\n return isQueryPresent(query);\n }\n\n constructor(props) {\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, nextState) {\n const {\n query, queries, render, cubejsApi, 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.cubejsApi !== cubejsApi\n || nextProps.loadSql !== loadSql\n || !equals(nextState, this.state)\n || nextProps.updateOnlyOnStateChange !== updateOnlyOnStateChange;\n }\n\n componentDidUpdate(prevProps) {\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 cubejsApi() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.props.cubejsApi || this.context && this.context.cubejsApi;\n }\n\n load(query) {\n const { resetResultSetOnChange } = 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 cubejsApi = this.cubejsApi();\n\n if (query && isQueryPresent(query)) {\n if (loadSql === 'only') {\n cubejsApi.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 cubejsApi.sql(query, { mutexObj: this.mutexObj, mutexKey: 'sql' }),\n cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: 'query' })\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 cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: 'query' })\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) {\n const cubejsApi = this.cubejsApi();\n const { resetResultSetOnChange } = this.props;\n this.setState({\n isLoading: true,\n ...(resetResultSetOnChange ? { resultSet: null } : {}),\n error: null\n });\n\n const resultPromises = Promise.all(toPairs(queries).map(\n ([name, query]) => cubejsApi.load(query, { mutexObj: this.mutexObj, mutexKey: name }).then(r => [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 = {\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 return render(loadState);\n }\n\n return null;\n }\n}\n","import React from 'react';\nimport QueryRenderer from './QueryRenderer.jsx';\n\nconst QueryRendererWithTotals = ({ query, ...restProps }) => (\n <QueryRenderer\n queries={{\n totals: {\n ...query,\n dimensions: [],\n timeDimensions: query.timeDimensions\n ? query.timeDimensions.map(td => ({ ...td, granularity: null }))\n : undefined\n },\n main: query\n }}\n {...restProps}\n />\n);\n\nexport default QueryRendererWithTotals;\n","export function removeEmpty(obj) {\n if (typeof obj !== 'object') {\n return obj;\n }\n\n return Object.fromEntries(\n Object.entries(obj)\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 );\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';\n\nimport QueryRenderer from './QueryRenderer.jsx';\nimport CubeContext from './CubeContext';\nimport { removeEmpty } from './utils';\n\nconst granularities = [\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\nexport default class QueryBuilder extends React.Component {\n static contextType = CubeContext;\n\n static defaultProps = {\n cubejsApi: 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, state) {\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(type, { meta, query }) {\n if (!meta) {\n return [];\n }\n\n if (Array.isArray(query)) {\n return query.reduce(\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'),\n granularities,\n },\n index,\n }));\n }\n\n return (query[type] || []).map((m, index) => ({\n index,\n ...meta.resolveMember(m, type),\n }));\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n query: props.defaultQuery || props.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) {\n const { schemaVersion, onSchemaChange } = this.props;\n const { meta } = this.state;\n\n if (this.prevContext?.cubejsApi !== this.context?.cubejsApi) {\n this.prevContext = this.context;\n await this.fetchMeta();\n }\n\n if (prevProps.schemaVersion !== schemaVersion) {\n try {\n const newMeta = await this.cubejsApi().meta();\n if (!equals(newMeta, meta) && typeof onSchemaChange === 'function') {\n onSchemaChange({\n schemaVersion,\n refresh: async () => {\n await this.fetchMeta();\n },\n });\n }\n } catch (error) {\n // eslint-disable-next-line\n this.setState({ metaError: error });\n }\n }\n }\n\n fetchMeta = async () => {\n if (!this.cubejsApi()) {\n return;\n }\n\n let meta;\n let metaError = null;\n let richMetaError = null;\n let metaErrorStack = null;\n\n try {\n this.setState({ isFetchingMeta: true });\n meta = await this.cubejsApi().meta();\n } catch (error) {\n metaError = error.response?.plainError || error;\n richMetaError = error;\n metaErrorStack = error.response?.stack?.replace(error.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 cubejsApi() {\n const { cubejsApi } = this.props;\n // eslint-disable-next-line react/destructuring-assignment\n return cubejsApi || (this.context && this.context.cubejsApi);\n }\n\n getMissingMembers(query, meta) {\n if (!meta) {\n return [];\n }\n\n return getQueryMembers(query)\n .map((member) => {\n const resolvedMember = meta.resolveMember(member, ['measures', 'dimensions', 'segments']);\n if (resolvedMember.error) {\n return member;\n }\n return false;\n })\n .filter(Boolean);\n }\n\n isQueryPresent() {\n const { query } = this.state;\n return QueryRenderer.isQueryPresent(query);\n }\n\n prepareRenderProps(queryRendererProps) {\n const getName = (member) => member.name;\n\n const toTimeDimension = (member) => {\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) => ({\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 = (memberType, toQuery = getName) => ({\n add: (member) => {\n const { query } = this.state;\n this.updateQuery({\n [memberType]: (query[memberType] || []).concat(toQuery(member)),\n });\n },\n remove: (member) => {\n const { query } = this.state;\n\n return this.updateQuery({\n [memberType]: (query[memberType] || []).filter((_, index) => index !== member.index),\n });\n },\n update: (member, updateWith) => {\n const { query } = this.state;\n const members = (query[memberType] || []).concat([]);\n members.splice(member.index, 1, toQuery(updateWith));\n return this.updateQuery({\n [memberType]: members,\n });\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 = flatFilters.map((m, i) => ({\n ...m,\n dimension: meta.resolveMember(m.member || m.dimension, ['dimensions', 'measures']),\n operators: meta.filterOperatorsForMember(m.member || m.dimension, ['dimensions', 'measures']),\n index: i,\n }));\n\n const measures = QueryBuilder.resolveMember('measures', this.state);\n const dimensions = QueryBuilder.resolveMember('dimensions', this.state);\n const timeDimensions = QueryBuilder.resolveMember('timeDimensions', this.state);\n const segments = ((meta && query.segments) || []).map((m, i) => ({\n index: i,\n ...meta.resolveMember(m, 'segments'),\n }));\n\n let availableMeasures = [];\n let availableDimensions = [];\n let availableSegments = [];\n let availableFilterMembers = [];\n\n const availableMembers = meta?.membersGroupedByCube() || {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n };\n\n if (meta) {\n availableMeasures = meta.membersForQuery(query, 'measures');\n availableDimensions = meta.membersForQuery(query, 'dimensions');\n availableSegments = meta.membersForQuery(query, 'segments');\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 availableFilterMembers = cubeNames.map((name) => {\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 });\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);\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,\n isQueryPresent: this.isQueryPresent(),\n chartType,\n measures,\n dimensions,\n timeDimensions,\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('measures'),\n updateDimensions: updateMethods('dimensions'),\n updateSegments: updateMethods('segments'),\n updateTimeDimensions: updateMethods('timeDimensions', toTimeDimension),\n updateFilters: updateMethods('filters', toFilter),\n updateChartType: (newChartType) => this.updateVizState({ chartType: newChartType }),\n updateOrder: {\n set: (memberId, newOrder = 'asc') => {\n this.updateQuery({\n order: orderMembers\n .map((orderMember) => ({\n ...orderMember,\n order: orderMember.id === memberId ? newOrder : orderMember.order,\n }))\n .reduce((acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc), []),\n });\n },\n update: (order) => {\n this.updateQuery({\n order,\n });\n },\n reorder: (sourceIndex, destinationIndex) => {\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((acc, { id, order }) => (order !== 'none' ? [...acc, [id, order]] : acc), []),\n });\n },\n },\n pivotConfig,\n updatePivotConfig: {\n moveItem: ({ sourceIndex, destinationIndex, sourceAxis, destinationAxis }) => {\n this.updateVizState({\n pivotConfig: movePivotItem(pivotConfig, sourceIndex, destinationIndex, sourceAxis, destinationAxis),\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,\n ...queryRendererProps,\n };\n }\n\n updateQuery(queryUpdate) {\n const { query } = this.state;\n\n this.updateVizState({\n query: removeEmptyQueryFields({\n ...query,\n ...queryUpdate,\n }),\n });\n }\n\n async updateVizState(state) {\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 = null;\n const handleVizStateChange = (currentState) => {\n const { onVizStateChanged } = this.props;\n if (onVizStateChanged) {\n const newVizState = pick(['chartType', 'pivotConfig', 'query'], currentState);\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) => {\n if (setVizState) {\n setVizState(pick(['chartType', 'pivotConfig', 'query'], currentState));\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,\n finalState.pivotConfig !== undefined ? finalState.pivotConfig : statePivotConfig\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 });\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.cubejsApi().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 this.setState({\n queryError: new Error(error.response?.plainError || error.message),\n richQueryError: new Error(error.message || error.toString())\n });\n }\n }\n\n this.setState(finalState, () => handleVizStateChange(this.state));\n }\n\n validatedQuery(state) {\n const { query } = state || this.state;\n\n return validateQuery(query);\n }\n\n defaultHeuristics(newState) {\n const { query, sessionGranularity, meta } = this.state;\n\n return defaultHeuristics(newState, query, {\n meta,\n sessionGranularity: sessionGranularity || 'day',\n });\n }\n\n applyStateChangeHeuristics(newState) {\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 { cubejsApi, render, wrapWithQueryRenderer } = this.props;\n\n if (wrapWithQueryRenderer) {\n return (\n <QueryRenderer\n query={query}\n cubejsApi={cubejsApi}\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, { useEffect } from 'react';\nimport CubeContext from './CubeContext';\n\nexport default function CubeProvider({ cubeApi, cubejsApi, children, options = {} }) {\n useEffect(() => {\n if (cubejsApi && !cubeApi) {\n console.warn('\"cubejsApi\" is deprecated and will be removed in the following version. Use \"cubeApi\" instead.');\n }\n }, [cubeApi, cubejsApi]);\n \n return (\n <CubeContext.Provider value={{\n cubejsApi,\n cubeApi,\n options\n }}\n >\n {children}\n </CubeContext.Provider>\n );\n}\n","import { useRef } from 'react';\nimport { equals } from 'ramda';\n\nexport default function useDeepCompareMemoize(value) {\n const ref = useRef([]);\n\n if (!equals(value, ref.current)) {\n ref.current = value;\n }\n\n return ref.current;\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useIsMounted() {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return () => isMounted.current;\n}\n","import { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent } from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport { useIsMounted } from './is-mounted';\n\nexport function useCubeFetch(method, options = {}) {\n const isMounted = useIsMounted();\n const context = useContext(CubeContext);\n const mutexRef = useRef({});\n\n const [response, setResponse] = useState({\n isLoading: false,\n response: null,\n });\n const [error, setError] = useState(null);\n\n const { skip = false } = options;\n\n async function load(loadOptions = {}, ignoreSkip = false) {\n const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;\n const query = loadOptions.query || options.query;\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 = {\n mutexObj: mutexRef.current,\n mutexKey: method,\n };\n const args = method === 'meta' ? [coreOptions] : [query, coreOptions];\n\n try {\n const response = await cubeApi[method](...args);\n\n if (isMounted()) {\n setResponse({\n response,\n isLoading: false,\n });\n }\n } catch (error) {\n if (isMounted()) {\n setError(error);\n setResponse({\n isLoading: false,\n response: null,\n });\n }\n }\n }\n }\n\n useEffect(() => {\n load();\n }, useDeepCompareMemoize([Object.keys(options.query?.order || {}), options, context]));\n\n return {\n ...response,\n error,\n refetch: (options) => load(options, true),\n };\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useCubeSql(query, options = {}) {\n return useCubeFetch('sql', {\n ...options,\n query\n });\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useDryRun(query, options = {}) {\n return useCubeFetch('dryRun', {\n ...options,\n query,\n });\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useLazyDryRun(query, options = {}) {\n const { refetch, ...result } = useCubeFetch('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';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\nimport { useIsMounted } from './is-mounted';\n\nexport function useCubeQuery(query, options = {}) {\n const mutexRef = useRef({});\n const isMounted = useIsMounted();\n const [currentQuery, setCurrentQuery] = useState(null);\n const [isLoading, setLoading] = useState(false);\n const [resultSet, setResultSet] = useState(null);\n const [progress, setProgress] = useState(null);\n const [error, setError] = useState(null);\n const context = useContext(CubeContext);\n\n let subscribeRequest = null;\n\n const progressCallback = ({ progressResponse }) => setProgress(progressResponse);\n \n useEffect(() => {\n if (options.cubejsApi && !options.cubeApi) {\n console.warn('\"cubejsApi\" is deprecated and will be removed in the following version. Use \"cubeApi\" instead.');\n }\n }, [options.cubeApi, options.cubejsApi]);\n\n async function fetch() {\n const { resetResultSetOnChange } = options;\n const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;\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 });\n\n if (isMounted()) {\n setResultSet(response);\n setProgress(null);\n }\n } catch (error) {\n if (isMounted()) {\n setError(error);\n setResultSet(null);\n setProgress(null);\n }\n }\n\n if (isMounted()) {\n setLoading(false);\n }\n }\n\n useEffect(() => {\n const { skip = false, resetResultSetOnChange } = options;\n\n const cubeApi = options.cubeApi || options.cubejsApi || context?.cubeApi || context?.cubejsApi;\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 if (!areQueriesEqual(currentQuery, 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 },\n (e, result) => {\n if (isMounted()) {\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 fetch();\n }\n } catch (e) {\n if (isMounted()) {\n setError(e);\n setResultSet(null);\n setLoading(false);\n setProgress(null);\n }\n }\n }\n }\n\n loadQuery();\n\n return () => {\n if (subscribeRequest) {\n subscribeRequest.unsubscribe();\n subscribeRequest = null;\n }\n };\n }, useDeepCompareMemoize([query, Object.keys((query && query.order) || {}), options, context]));\n\n return {\n isLoading,\n resultSet,\n error,\n progress,\n previousQuery: currentQuery,\n refetch: fetch\n };\n}\n","import { useCubeFetch } from './cube-fetch';\n\nexport function useCubeMeta(options = {}) {\n return useCubeFetch('meta', options);\n}\n"],"names":["createContext","QueryRenderer","React","Component","contextType","CubeContext","defaultProps","cubejsApi","query","render","queries","loadSql","updateOnlyOnStateChange","resetResultSetOnChange","isQueryPresent","constructor","props","state","mutexObj","componentDidMount","load","loadQueries","shouldComponentUpdate","nextProps","nextState","equals","componentDidUpdate","prevProps","context","setState","isLoading","error","sqlQuery","resultSet","sql","mutexKey","then","catch","Promise","all","resultPromises","toPairs","map","name","r","fromPairs","loadState","Error","response","plainError","message","toString","loadingState","QueryRendererWithTotals","restProps","totals","dimensions","timeDimensions","td","granularity","undefined","main","removeEmpty","obj","Object","fromEntries","entries","filter","v","k","Array","isArray","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","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","cubeApi","children","options","useEffect","console","warn","useDeepCompareMemoize","value","ref","useRef","useIsMounted","isMounted","useCubeFetch","method","useContext","mutexRef","setResponse","useState","setError","skip","loadOptions","ignoreSkip","queryCondition","coreOptions","args","refetch","useCubeSql","useDryRun","useLazyDryRun","result","useCubeQuery","setCurrentQuery","setLoading","setResultSet","progress","setProgress","subscribeRequest","progressCallback","progressResponse","fetch","castNumerics","loadQuery","areQueriesEqual","unsubscribe","subscribe","e","previousQuery","useCubeMeta"],"mappings":"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"}
@@ -1177,13 +1177,20 @@ _defineProperty__default['default'](QueryBuilder, "defaultProps", {
1177
1177
  });
1178
1178
 
1179
1179
  function CubeProvider(_ref) {
1180
- var cubejsApi = _ref.cubejsApi,
1180
+ var cubeApi = _ref.cubeApi,
1181
+ cubejsApi = _ref.cubejsApi,
1181
1182
  children = _ref.children,
1182
1183
  _ref$options = _ref.options,
1183
1184
  options = _ref$options === void 0 ? {} : _ref$options;
1185
+ React.useEffect(function () {
1186
+ if (cubejsApi && !cubeApi) {
1187
+ console.warn('"cubejsApi" is deprecated and will be removed in the following version. Use "cubeApi" instead.');
1188
+ }
1189
+ }, [cubeApi, cubejsApi]);
1184
1190
  return /*#__PURE__*/React__default['default'].createElement(CubeContext.Provider, {
1185
1191
  value: {
1186
1192
  cubejsApi: cubejsApi,
1193
+ cubeApi: cubeApi,
1187
1194
  options: options
1188
1195
  }
1189
1196
  }, children);
@@ -1247,7 +1254,7 @@ function useCubeFetch(method) {
1247
1254
  _load = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
1248
1255
  var loadOptions,
1249
1256
  ignoreSkip,
1250
- cubejsApi,
1257
+ cubeApi,
1251
1258
  query,
1252
1259
  queryCondition,
1253
1260
  coreOptions,
@@ -1261,11 +1268,11 @@ function useCubeFetch(method) {
1261
1268
  case 0:
1262
1269
  loadOptions = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
1263
1270
  ignoreSkip = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
1264
- cubejsApi = options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1271
+ cubeApi = options.cubeApi || options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubeApi) || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1265
1272
  query = loadOptions.query || options.query;
1266
1273
  queryCondition = method === 'meta' ? true : query && core.isQueryPresent(query);
1267
1274
 
1268
- if (!(cubejsApi && (ignoreSkip || !skip) && queryCondition)) {
1275
+ if (!(cubeApi && (ignoreSkip || !skip) && queryCondition)) {
1269
1276
  _context.next = 20;
1270
1277
  break;
1271
1278
  }
@@ -1282,7 +1289,7 @@ function useCubeFetch(method) {
1282
1289
  args = method === 'meta' ? [coreOptions] : [query, coreOptions];
1283
1290
  _context.prev = 10;
1284
1291
  _context.next = 13;
1285
- return cubejsApi[method].apply(cubejsApi, args);
1292
+ return cubeApi[method].apply(cubeApi, args);
1286
1293
 
1287
1294
  case 13:
1288
1295
  _response = _context.sent;
@@ -1406,22 +1413,28 @@ function useCubeQuery(query) {
1406
1413
  return setProgress(progressResponse);
1407
1414
  };
1408
1415
 
1416
+ React.useEffect(function () {
1417
+ if (options.cubejsApi && !options.cubeApi) {
1418
+ console.warn('"cubejsApi" is deprecated and will be removed in the following version. Use "cubeApi" instead.');
1419
+ }
1420
+ }, [options.cubeApi, options.cubejsApi]);
1421
+
1409
1422
  function fetch() {
1410
1423
  return _fetch.apply(this, arguments);
1411
1424
  }
1412
1425
 
1413
1426
  function _fetch() {
1414
1427
  _fetch = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
1415
- var resetResultSetOnChange, cubejsApi, _context$options, response;
1428
+ var resetResultSetOnChange, cubeApi, _context$options, response;
1416
1429
 
1417
1430
  return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
1418
1431
  while (1) {
1419
1432
  switch (_context2.prev = _context2.next) {
1420
1433
  case 0:
1421
1434
  resetResultSetOnChange = options.resetResultSetOnChange;
1422
- cubejsApi = options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1435
+ cubeApi = options.cubeApi || options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubeApi) || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1423
1436
 
1424
- if (cubejsApi) {
1437
+ if (cubeApi) {
1425
1438
  _context2.next = 4;
1426
1439
  break;
1427
1440
  }
@@ -1437,7 +1450,7 @@ function useCubeQuery(query) {
1437
1450
  setLoading(true);
1438
1451
  _context2.prev = 7;
1439
1452
  _context2.next = 10;
1440
- return cubejsApi.load(query, {
1453
+ return cubeApi.load(query, {
1441
1454
  mutexObj: mutexRef.current,
1442
1455
  mutexKey: 'query',
1443
1456
  progressCallback: progressCallback,
@@ -1484,9 +1497,9 @@ function useCubeQuery(query) {
1484
1497
  var _options$skip = options.skip,
1485
1498
  skip = _options$skip === void 0 ? false : _options$skip,
1486
1499
  resetResultSetOnChange = options.resetResultSetOnChange;
1487
- var cubejsApi = options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1500
+ var cubeApi = options.cubeApi || options.cubejsApi || (context === null || context === void 0 ? void 0 : context.cubeApi) || (context === null || context === void 0 ? void 0 : context.cubejsApi);
1488
1501
 
1489
- if (!cubejsApi) {
1502
+ if (!cubeApi) {
1490
1503
  throw new Error('Cube API client is not provided');
1491
1504
  }
1492
1505
 
@@ -1534,7 +1547,7 @@ function useCubeQuery(query) {
1534
1547
  break;
1535
1548
  }
1536
1549
 
1537
- subscribeRequest = cubejsApi.subscribe(query, {
1550
+ subscribeRequest = cubeApi.subscribe(query, {
1538
1551
  mutexObj: mutexRef.current,
1539
1552
  mutexKey: 'query',
1540
1553
  progressCallback: progressCallback