@cubejs-client/react 1.7.13 → 1.7.14
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/dist/CubeContext.d.ts +35 -0
- package/dist/CubeContext.d.ts.map +1 -0
- package/dist/CubeProvider.d.ts +31 -0
- package/dist/CubeProvider.d.ts.map +1 -0
- package/dist/QueryBuilder.d.ts +135 -0
- package/dist/QueryBuilder.d.ts.map +1 -0
- package/dist/QueryRenderer.d.ts +34 -0
- package/dist/QueryRenderer.d.ts.map +1 -0
- package/dist/QueryRendererWithTotals.d.ts +4 -0
- package/dist/QueryRendererWithTotals.d.ts.map +1 -0
- package/dist/cubejs-client-react.cjs.js +248 -23
- package/dist/cubejs-client-react.cjs.js.map +1 -1
- package/dist/cubejs-client-react.esm.js +253 -31
- package/dist/cubejs-client-react.esm.js.map +1 -1
- package/dist/cubejs-client-react.umd.js +248 -23
- package/dist/cubejs-client-react.umd.js.map +1 -1
- package/dist/hooks/cube-fetch.d.ts +6 -0
- package/dist/hooks/cube-fetch.d.ts.map +1 -0
- package/dist/hooks/cube-meta.d.ts +4 -0
- package/dist/hooks/cube-meta.d.ts.map +1 -0
- package/dist/hooks/cube-query.d.ts +39 -0
- package/dist/hooks/cube-query.d.ts.map +1 -0
- package/dist/hooks/cube-sql.d.ts +12 -0
- package/dist/hooks/cube-sql.d.ts.map +1 -0
- package/dist/hooks/deep-compare-memoize.d.ts +2 -0
- package/dist/hooks/deep-compare-memoize.d.ts.map +1 -0
- package/dist/hooks/dry-run.d.ts +7 -0
- package/dist/hooks/dry-run.d.ts.map +1 -0
- package/dist/hooks/lazy-dry-run.d.ts +7 -0
- package/dist/hooks/lazy-dry-run.d.ts.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/types.d.ts +765 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +14 -10
- package/src/CubeContext.ts +37 -0
- package/src/CubeProvider.tsx +42 -0
- package/src/{QueryBuilder.jsx → QueryBuilder.tsx} +238 -89
- package/src/{QueryRenderer.jsx → QueryRenderer.tsx} +39 -14
- package/src/QueryRendererWithTotals.tsx +24 -0
- package/src/hooks/cube-fetch.ts +98 -0
- package/src/hooks/cube-meta.ts +8 -0
- package/src/hooks/{cube-query.js → cube-query.ts} +90 -14
- package/src/hooks/cube-sql.ts +22 -0
- package/src/hooks/{deep-compare-memoize.js → deep-compare-memoize.ts} +2 -2
- package/src/hooks/dry-run.ts +17 -0
- package/src/hooks/lazy-dry-run.ts +24 -0
- package/src/index.ts +77 -0
- package/src/types.ts +837 -0
- package/src/{utils.js → utils.ts} +3 -3
- package/index.d.ts +0 -697
- package/src/CubeContext.js +0 -3
- package/src/CubeProvider.jsx +0 -14
- package/src/QueryRendererWithTotals.jsx +0 -20
- package/src/hooks/cube-fetch.js +0 -66
- package/src/hooks/cube-meta.js +0 -5
- package/src/hooks/cube-sql.js +0 -8
- package/src/hooks/dry-run.js +0 -8
- package/src/hooks/lazy-dry-run.js +0 -11
- package/src/index.js +0 -18
|
@@ -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/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 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) {\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, 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) {\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 cubeApi() {\n // eslint-disable-next-line react/destructuring-assignment\n return this.props.cubeApi || this.context && this.context.cubeApi;\n }\n\n load(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 = {\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) {\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).map(\n ([name, query]) => cubeApi.load(query, {\n mutexObj: this.mutexObj,\n mutexKey: name,\n ...(cache ? { cache } : {}),\n }).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 (Array.isArray(obj) || 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 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, 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?.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,\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.cubeApi()) {\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.cubeApi().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 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, 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.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 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 { 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';\nimport CubeContext from './CubeContext';\n\nexport default function CubeProvider({ cubeApi, children, options = {} }) {\n return (\n <CubeContext.Provider value={{\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 { useContext, useEffect, useState, useRef } from 'react';\nimport { isQueryPresent } from '@cubejs-client/core';\n\nimport CubeContext from '../CubeContext';\nimport useDeepCompareMemoize from './deep-compare-memoize';\n\nexport function useCubeFetch(method, options = {}) {\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 || context?.cubeApi;\n const query = loadOptions.query || options.query;\n\n const queryCondition =\n 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 ...(options.baseRequestId ? { baseRequestId: options.baseRequestId } : {})\n };\n const args = method === 'meta' ? [coreOptions] : [query, coreOptions];\n\n try {\n const response = await cubeApi[method](...args);\n\n setResponse({\n response,\n isLoading: false,\n });\n } catch (error) {\n setError(error);\n setResponse({\n isLoading: false,\n response: null,\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';\n\nexport function useCubeQuery(query, options = {}) {\n const mutexRef = useRef({});\n const [currentQuery, setCurrentQuery] = useState(null);\n const [isLoading, setLoading] = useState(!options.skip);\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 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 (error) {\n setError(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 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 ...(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);\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 }, 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","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","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","queryCondition","coreOptions","baseRequestId","args","useEffect","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.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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"}
|