@gooddata/sdk-ui 8.13.0-alpha.2 → 8.13.0-alpha.21
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/base/constants/bucketNames.js +32 -32
- package/dist/base/constants/bucketNames.js.map +1 -1
- package/dist/base/errors/GoodDataSdkError.js +67 -98
- package/dist/base/errors/GoodDataSdkError.js.map +1 -1
- package/dist/base/errors/errorHandling.js +17 -18
- package/dist/base/errors/errorHandling.js.map +1 -1
- package/dist/base/headerMatching/HeaderPredicateFactory.js +50 -58
- package/dist/base/headerMatching/HeaderPredicateFactory.js.map +1 -1
- package/dist/base/headerMatching/MappingHeader.js +3 -3
- package/dist/base/headerMatching/MappingHeader.js.map +1 -1
- package/dist/base/helpers/CatalogHelper.js +33 -34
- package/dist/base/helpers/CatalogHelper.js.map +1 -1
- package/dist/base/localization/IntlStore.js +12 -14
- package/dist/base/localization/IntlStore.js.map +1 -1
- package/dist/base/localization/IntlWrapper.js +9 -10
- package/dist/base/localization/IntlWrapper.js.map +1 -1
- package/dist/base/localization/Locale.js +1 -1
- package/dist/base/localization/Locale.js.map +1 -1
- package/dist/base/localization/TranslationsCustomizationProvider/Context.js +11 -12
- package/dist/base/localization/TranslationsCustomizationProvider/Context.js.map +1 -1
- package/dist/base/localization/TranslationsCustomizationProvider/TranslationsCustomizationProvider.js +28 -38
- package/dist/base/localization/TranslationsCustomizationProvider/TranslationsCustomizationProvider.js.map +1 -1
- package/dist/base/localization/TranslationsCustomizationProvider/utils.js +25 -37
- package/dist/base/localization/TranslationsCustomizationProvider/utils.js.map +1 -1
- package/dist/base/localization/TranslationsProvider.js +12 -19
- package/dist/base/localization/TranslationsProvider.js.map +1 -1
- package/dist/base/localization/bundles/de-DE.json +23 -11
- package/dist/base/localization/bundles/en-US.json +93 -27
- package/dist/base/localization/bundles/es-ES.json +22 -10
- package/dist/base/localization/bundles/fr-FR.json +22 -10
- package/dist/base/localization/bundles/ja-JP.json +22 -10
- package/dist/base/localization/bundles/nl-NL.json +22 -10
- package/dist/base/localization/bundles/pt-BR.json +22 -10
- package/dist/base/localization/bundles/pt-PT.json +22 -10
- package/dist/base/localization/bundles/ru-RU.json +22 -10
- package/dist/base/localization/bundles/zh-Hans.json +22 -10
- package/dist/base/localization/intlUtils.js +18 -25
- package/dist/base/localization/intlUtils.js.map +1 -1
- package/dist/base/localization/messagesMap.js +12 -12
- package/dist/base/localization/messagesMap.js.map +1 -1
- package/dist/base/measureFormats/fillMissingFormat.js +5 -5
- package/dist/base/measureFormats/fillMissingFormat.js.map +1 -1
- package/dist/base/measureFormats/fillMissingFormats.js +3 -3
- package/dist/base/measureFormats/fillMissingFormats.js.map +1 -1
- package/dist/base/measureTitles/ArithmeticMeasureTitleFactory.js +27 -28
- package/dist/base/measureTitles/ArithmeticMeasureTitleFactory.js.map +1 -1
- package/dist/base/measureTitles/DerivedMeasureTitleSuffixFactory.js +14 -15
- package/dist/base/measureTitles/DerivedMeasureTitleSuffixFactory.js.map +1 -1
- package/dist/base/measureTitles/fillMissingTitles.js +49 -50
- package/dist/base/measureTitles/fillMissingTitles.js.map +1 -1
- package/dist/base/measureTitles/ignoreTitlesForSimpleMeasures.js +4 -4
- package/dist/base/measureTitles/ignoreTitlesForSimpleMeasures.js.map +1 -1
- package/dist/base/react/BackendContext.js +14 -16
- package/dist/base/react/BackendContext.js.map +1 -1
- package/dist/base/react/CancelablePromise.js +21 -24
- package/dist/base/react/CancelablePromise.js.map +1 -1
- package/dist/base/react/ClientWorkspaceContext/ClientWorkspaceContext.js +28 -28
- package/dist/base/react/ClientWorkspaceContext/ClientWorkspaceContext.js.map +1 -1
- package/dist/base/react/ClientWorkspaceContext/resolveLCMWorkspaceIdentifiers.js +30 -82
- package/dist/base/react/ClientWorkspaceContext/resolveLCMWorkspaceIdentifiers.js.map +1 -1
- package/dist/base/react/ErrorComponent.js +35 -40
- package/dist/base/react/ErrorComponent.js.map +1 -1
- package/dist/base/react/LoadingComponent.js +42 -36
- package/dist/base/react/LoadingComponent.js.map +1 -1
- package/dist/base/react/PromiseCache.js +31 -34
- package/dist/base/react/PromiseCache.js.map +1 -1
- package/dist/base/react/WorkspaceContext.js +14 -16
- package/dist/base/react/WorkspaceContext.js.map +1 -1
- package/dist/base/react/legacy/availableDrillTargets.js +15 -16
- package/dist/base/react/legacy/availableDrillTargets.js.map +1 -1
- package/dist/base/react/legacy/withEntireDataView.js +115 -139
- package/dist/base/react/legacy/withEntireDataView.js.map +1 -1
- package/dist/base/react/placeholders/base.js +4 -4
- package/dist/base/react/placeholders/base.js.map +1 -1
- package/dist/base/react/placeholders/context.js +12 -13
- package/dist/base/react/placeholders/context.js.map +1 -1
- package/dist/base/react/placeholders/factory.js +15 -17
- package/dist/base/react/placeholders/factory.js.map +1 -1
- package/dist/base/react/placeholders/hooks.js +34 -40
- package/dist/base/react/placeholders/hooks.js.map +1 -1
- package/dist/base/react/placeholders/resolve.js +9 -12
- package/dist/base/react/placeholders/resolve.js.map +1 -1
- package/dist/base/react/useCancelablePromise.js +24 -21
- package/dist/base/react/useCancelablePromise.js.map +1 -1
- package/dist/base/react/useCancelablePromiseUtils.js +16 -17
- package/dist/base/react/useCancelablePromiseUtils.js.map +1 -1
- package/dist/base/react/usePagedResource.js +25 -29
- package/dist/base/react/usePagedResource.js.map +1 -1
- package/dist/base/react/usePrevious.js +4 -4
- package/dist/base/react/usePrevious.js.map +1 -1
- package/dist/base/react/usePromiseCache.js +17 -18
- package/dist/base/react/usePromiseCache.js.map +1 -1
- package/dist/base/react/withContexts.js +5 -5
- package/dist/base/react/withContexts.js.map +1 -1
- package/dist/base/react/wrapDisplayName.js +5 -5
- package/dist/base/react/wrapDisplayName.js.map +1 -1
- package/dist/base/results/dataAccessConfig.js +10 -10
- package/dist/base/results/dataAccessConfig.js.map +1 -1
- package/dist/base/results/facade.js +35 -36
- package/dist/base/results/facade.js.map +1 -1
- package/dist/base/results/internal/dataAccessDigest.js +66 -80
- package/dist/base/results/internal/dataAccessDigest.js.map +1 -1
- package/dist/base/results/internal/dataAccessImpl.js +134 -145
- package/dist/base/results/internal/dataAccessImpl.js.map +1 -1
- package/dist/base/results/internal/dataAccessMethods.js +49 -58
- package/dist/base/results/internal/dataAccessMethods.js.map +1 -1
- package/dist/base/results/internal/definitionMethods.js +36 -37
- package/dist/base/results/internal/definitionMethods.js.map +1 -1
- package/dist/base/results/internal/lazyInitArray.js +18 -20
- package/dist/base/results/internal/lazyInitArray.js.map +1 -1
- package/dist/base/results/internal/resultDataMethods.js +26 -27
- package/dist/base/results/internal/resultDataMethods.js.map +1 -1
- package/dist/base/results/internal/resultMetaMethods.js +64 -72
- package/dist/base/results/internal/resultMetaMethods.js.map +1 -1
- package/dist/base/results/internal/utils.js +1 -1
- package/dist/base/results/internal/utils.js.map +1 -1
- package/dist/base/vis/DrillEvents.js +5 -5
- package/dist/base/vis/DrillEvents.js.map +1 -1
- package/dist/base/vis/drilling.d.ts.map +1 -1
- package/dist/base/vis/drilling.js +19 -24
- package/dist/base/vis/drilling.js.map +1 -1
- package/dist/base/vis/export.js +10 -10
- package/dist/base/vis/export.js.map +1 -1
- package/dist/execution/DataViewLoader.js +36 -80
- package/dist/execution/DataViewLoader.js.map +1 -1
- package/dist/execution/Execute.js +35 -35
- package/dist/execution/Execute.js.map +1 -1
- package/dist/execution/ExecuteInsight.js +54 -62
- package/dist/execution/ExecuteInsight.js.map +1 -1
- package/dist/execution/RawExecute.js +27 -27
- package/dist/execution/RawExecute.js.map +1 -1
- package/dist/execution/createExecution.js +17 -16
- package/dist/execution/createExecution.js.map +1 -1
- package/dist/execution/useDataExport.js +16 -19
- package/dist/execution/useDataExport.js.map +1 -1
- package/dist/execution/useDataView.js +18 -23
- package/dist/execution/useDataView.js.map +1 -1
- package/dist/execution/useExecution.js +12 -13
- package/dist/execution/useExecution.js.map +1 -1
- package/dist/execution/useExecutionDataView.js +23 -22
- package/dist/execution/useExecutionDataView.js.map +1 -1
- package/dist/execution/useInsight.js +10 -10
- package/dist/execution/useInsight.js.map +1 -1
- package/dist/execution/useInsightDataView.js +26 -27
- package/dist/execution/useInsightDataView.js.map +1 -1
- package/dist/execution/withExecution.js +27 -56
- package/dist/execution/withExecution.js.map +1 -1
- package/dist/execution/withExecutionLoading.js +87 -104
- package/dist/execution/withExecutionLoading.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/kpi/FormattedNumber.js +8 -9
- package/dist/kpi/FormattedNumber.js.map +1 -1
- package/dist/kpi/Kpi.js +25 -26
- package/dist/kpi/Kpi.js.map +1 -1
- package/dist/kpi/KpiError.js +4 -4
- package/dist/kpi/KpiError.js.map +1 -1
- package/dist/locales.js +1 -1
- package/dist/locales.js.map +1 -1
- package/esm/base/constants/bucketNames.js +33 -33
- package/esm/base/constants/bucketNames.js.map +1 -1
- package/esm/base/constants/colorPalette.js +1 -1
- package/esm/base/constants/colorPalette.js.map +1 -1
- package/esm/base/errors/GoodDataSdkError.js +66 -112
- package/esm/base/errors/GoodDataSdkError.js.map +1 -1
- package/esm/base/errors/errorHandling.js +13 -14
- package/esm/base/errors/errorHandling.js.map +1 -1
- package/esm/base/headerMatching/HeaderPredicateFactory.js +49 -57
- package/esm/base/headerMatching/HeaderPredicateFactory.js.map +1 -1
- package/esm/base/headerMatching/MappingHeader.js +2 -2
- package/esm/base/headerMatching/MappingHeader.js.map +1 -1
- package/esm/base/helpers/CatalogHelper.js +33 -35
- package/esm/base/helpers/CatalogHelper.js.map +1 -1
- package/esm/base/interfaces/OverTimeComparison.js +1 -1
- package/esm/base/interfaces/OverTimeComparison.js.map +1 -1
- package/esm/base/localization/IntlStore.js +7 -10
- package/esm/base/localization/IntlStore.js.map +1 -1
- package/esm/base/localization/IntlWrapper.js +3 -4
- package/esm/base/localization/IntlWrapper.js.map +1 -1
- package/esm/base/localization/Locale.js +3 -3
- package/esm/base/localization/Locale.js.map +1 -1
- package/esm/base/localization/TranslationsCustomizationProvider/Context.js +7 -9
- package/esm/base/localization/TranslationsCustomizationProvider/Context.js.map +1 -1
- package/esm/base/localization/TranslationsCustomizationProvider/TranslationsCustomizationProvider.js +22 -33
- package/esm/base/localization/TranslationsCustomizationProvider/TranslationsCustomizationProvider.js.map +1 -1
- package/esm/base/localization/TranslationsCustomizationProvider/utils.js +23 -36
- package/esm/base/localization/TranslationsCustomizationProvider/utils.js.map +1 -1
- package/esm/base/localization/TranslationsProvider.js +8 -17
- package/esm/base/localization/TranslationsProvider.js.map +1 -1
- package/esm/base/localization/bundles/de-DE.json +23 -11
- package/esm/base/localization/bundles/en-US.json +93 -27
- package/esm/base/localization/bundles/es-ES.json +22 -10
- package/esm/base/localization/bundles/fr-FR.json +22 -10
- package/esm/base/localization/bundles/ja-JP.json +22 -10
- package/esm/base/localization/bundles/nl-NL.json +22 -10
- package/esm/base/localization/bundles/pt-BR.json +22 -10
- package/esm/base/localization/bundles/pt-PT.json +22 -10
- package/esm/base/localization/bundles/ru-RU.json +22 -10
- package/esm/base/localization/bundles/zh-Hans.json +22 -10
- package/esm/base/localization/intlUtils.js +12 -20
- package/esm/base/localization/intlUtils.js.map +1 -1
- package/esm/base/localization/messagesMap.js +1 -1
- package/esm/base/localization/messagesMap.js.map +1 -1
- package/esm/base/measureFormats/fillMissingFormat.js +4 -4
- package/esm/base/measureFormats/fillMissingFormat.js.map +1 -1
- package/esm/base/measureFormats/fillMissingFormats.js +1 -1
- package/esm/base/measureFormats/fillMissingFormats.js.map +1 -1
- package/esm/base/measureTitles/ArithmeticMeasureTitleFactory.js +25 -27
- package/esm/base/measureTitles/ArithmeticMeasureTitleFactory.js.map +1 -1
- package/esm/base/measureTitles/DerivedMeasureTitleSuffixFactory.js +11 -13
- package/esm/base/measureTitles/DerivedMeasureTitleSuffixFactory.js.map +1 -1
- package/esm/base/measureTitles/fillMissingTitles.js +44 -45
- package/esm/base/measureTitles/fillMissingTitles.js.map +1 -1
- package/esm/base/measureTitles/ignoreTitlesForSimpleMeasures.js +3 -3
- package/esm/base/measureTitles/ignoreTitlesForSimpleMeasures.js.map +1 -1
- package/esm/base/react/BackendContext.js +10 -13
- package/esm/base/react/BackendContext.js.map +1 -1
- package/esm/base/react/CancelablePromise.js +19 -24
- package/esm/base/react/CancelablePromise.js.map +1 -1
- package/esm/base/react/ClientWorkspaceContext/ClientWorkspaceContext.js +20 -21
- package/esm/base/react/ClientWorkspaceContext/ClientWorkspaceContext.js.map +1 -1
- package/esm/base/react/ClientWorkspaceContext/resolveLCMWorkspaceIdentifiers.js +27 -80
- package/esm/base/react/ClientWorkspaceContext/resolveLCMWorkspaceIdentifiers.js.map +1 -1
- package/esm/base/react/ErrorComponent.js +33 -40
- package/esm/base/react/ErrorComponent.js.map +1 -1
- package/esm/base/react/LoadingComponent.js +40 -36
- package/esm/base/react/LoadingComponent.js.map +1 -1
- package/esm/base/react/PromiseCache.js +28 -32
- package/esm/base/react/PromiseCache.js.map +1 -1
- package/esm/base/react/WorkspaceContext.js +10 -13
- package/esm/base/react/WorkspaceContext.js.map +1 -1
- package/esm/base/react/legacy/availableDrillTargets.js +12 -13
- package/esm/base/react/legacy/availableDrillTargets.js.map +1 -1
- package/esm/base/react/legacy/withEntireDataView.js +102 -127
- package/esm/base/react/legacy/withEntireDataView.js.map +1 -1
- package/esm/base/react/placeholders/base.js +2 -2
- package/esm/base/react/placeholders/base.js.map +1 -1
- package/esm/base/react/placeholders/context.js +9 -11
- package/esm/base/react/placeholders/context.js.map +1 -1
- package/esm/base/react/placeholders/factory.js +11 -13
- package/esm/base/react/placeholders/factory.js.map +1 -1
- package/esm/base/react/placeholders/hooks.js +27 -33
- package/esm/base/react/placeholders/hooks.js.map +1 -1
- package/esm/base/react/placeholders/resolve.js +6 -10
- package/esm/base/react/placeholders/resolve.js.map +1 -1
- package/esm/base/react/useCancelablePromise.js +18 -16
- package/esm/base/react/useCancelablePromise.js.map +1 -1
- package/esm/base/react/useCancelablePromiseUtils.js +13 -15
- package/esm/base/react/useCancelablePromiseUtils.js.map +1 -1
- package/esm/base/react/usePagedResource.js +23 -27
- package/esm/base/react/usePagedResource.js.map +1 -1
- package/esm/base/react/usePrevious.js +3 -3
- package/esm/base/react/usePrevious.js.map +1 -1
- package/esm/base/react/usePromiseCache.js +15 -16
- package/esm/base/react/usePromiseCache.js.map +1 -1
- package/esm/base/react/wrapDisplayName.js +5 -5
- package/esm/base/react/wrapDisplayName.js.map +1 -1
- package/esm/base/results/dataAccessConfig.js +6 -6
- package/esm/base/results/dataAccessConfig.js.map +1 -1
- package/esm/base/results/facade.js +30 -32
- package/esm/base/results/facade.js.map +1 -1
- package/esm/base/results/internal/dataAccessDigest.js +62 -77
- package/esm/base/results/internal/dataAccessDigest.js.map +1 -1
- package/esm/base/results/internal/dataAccessImpl.js +126 -138
- package/esm/base/results/internal/dataAccessImpl.js.map +1 -1
- package/esm/base/results/internal/dataAccessMethods.js +46 -55
- package/esm/base/results/internal/dataAccessMethods.js.map +1 -1
- package/esm/base/results/internal/definitionMethods.js +33 -34
- package/esm/base/results/internal/definitionMethods.js.map +1 -1
- package/esm/base/results/internal/lazyInitArray.js +16 -19
- package/esm/base/results/internal/lazyInitArray.js.map +1 -1
- package/esm/base/results/internal/resultDataMethods.js +23 -24
- package/esm/base/results/internal/resultDataMethods.js.map +1 -1
- package/esm/base/results/internal/resultMetaMethods.js +60 -68
- package/esm/base/results/internal/resultMetaMethods.js.map +1 -1
- package/esm/base/results/internal/utils.js +1 -1
- package/esm/base/results/internal/utils.js.map +1 -1
- package/esm/base/vis/DrillEvents.js +2 -2
- package/esm/base/vis/DrillEvents.js.map +1 -1
- package/esm/base/vis/drilling.d.ts.map +1 -1
- package/esm/base/vis/drilling.js +14 -20
- package/esm/base/vis/drilling.js.map +1 -1
- package/esm/base/vis/export.js +10 -10
- package/esm/base/vis/export.js.map +1 -1
- package/esm/base/vis/visualizationTypes.js +1 -1
- package/esm/base/vis/visualizationTypes.js.map +1 -1
- package/esm/execution/DataViewLoader.js +32 -78
- package/esm/execution/DataViewLoader.js.map +1 -1
- package/esm/execution/Execute.js +29 -30
- package/esm/execution/Execute.js.map +1 -1
- package/esm/execution/ExecuteInsight.js +49 -58
- package/esm/execution/ExecuteInsight.js.map +1 -1
- package/esm/execution/RawExecute.js +24 -24
- package/esm/execution/RawExecute.js.map +1 -1
- package/esm/execution/createExecution.js +12 -12
- package/esm/execution/createExecution.js.map +1 -1
- package/esm/execution/useDataExport.js +15 -18
- package/esm/execution/useDataExport.js.map +1 -1
- package/esm/execution/useDataView.js +17 -22
- package/esm/execution/useDataView.js.map +1 -1
- package/esm/execution/useExecution.js +10 -11
- package/esm/execution/useExecution.js.map +1 -1
- package/esm/execution/useExecutionDataView.js +18 -18
- package/esm/execution/useExecutionDataView.js.map +1 -1
- package/esm/execution/useInsight.js +8 -8
- package/esm/execution/useInsight.js.map +1 -1
- package/esm/execution/useInsightDataView.js +23 -24
- package/esm/execution/useInsightDataView.js.map +1 -1
- package/esm/execution/withExecution.js +24 -53
- package/esm/execution/withExecution.js.map +1 -1
- package/esm/execution/withExecutionLoading.js +82 -100
- package/esm/execution/withExecutionLoading.js.map +1 -1
- package/esm/index.d.ts +0 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -3
- package/esm/index.js.map +1 -1
- package/esm/kpi/FormattedNumber.js +5 -6
- package/esm/kpi/FormattedNumber.js.map +1 -1
- package/esm/kpi/Kpi.js +17 -19
- package/esm/kpi/Kpi.js.map +1 -1
- package/esm/kpi/KpiError.js +2 -2
- package/esm/kpi/KpiError.js.map +1 -1
- package/esm/locales.js +1 -1
- package/esm/locales.js.map +1 -1
- package/package.json +9 -14
- package/dist/polyfills.d.ts +0 -3
- package/dist/polyfills.d.ts.map +0 -1
- package/dist/polyfills.js +0 -8
- package/dist/polyfills.js.map +0 -1
- package/esm/polyfills.d.ts +0 -3
- package/esm/polyfills.d.ts.map +0 -1
- package/esm/polyfills.js +0 -6
- package/esm/polyfills.js.map +0 -1
|
@@ -16,15 +16,15 @@ import { setPlaceholder, resolvePlaceholderValue, resolveComposedPlaceholderValu
|
|
|
16
16
|
* @public
|
|
17
17
|
*/
|
|
18
18
|
export function usePlaceholder(placeholder) {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const { state, updateState } = usePlaceholdersContext();
|
|
20
|
+
const resolvedPlaceholderValue = isPlaceholder(placeholder)
|
|
21
21
|
? resolvePlaceholderValue(placeholder, state)
|
|
22
22
|
: undefined;
|
|
23
|
-
|
|
24
|
-
updateState(
|
|
23
|
+
const setPlaceholderValue = useCallback((valueOrUpdateCallback) => {
|
|
24
|
+
updateState((s) => {
|
|
25
25
|
invariant(isPlaceholder(placeholder), "usePlaceholder: Cannot set value of the placeholder - placeholder was not provided.");
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const resoledPlaceholderValue = resolvePlaceholderValue(placeholder, s);
|
|
27
|
+
const updatedValue = valueOrUpdateCallback instanceof Function
|
|
28
28
|
? valueOrUpdateCallback(resoledPlaceholderValue)
|
|
29
29
|
: valueOrUpdateCallback;
|
|
30
30
|
return setPlaceholder(placeholder, updatedValue, s);
|
|
@@ -41,20 +41,16 @@ export function usePlaceholder(placeholder) {
|
|
|
41
41
|
* @public
|
|
42
42
|
*/
|
|
43
43
|
export function usePlaceholders(placeholders) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
var resolvedValues = placeholders.map(function (placeholder) {
|
|
52
|
-
return resolvePlaceholderValue(placeholder, s);
|
|
53
|
-
});
|
|
54
|
-
var updatedValues = typeof valueOrUpdateCallback === "function"
|
|
44
|
+
const { state, updateState } = usePlaceholdersContext();
|
|
45
|
+
const resolvedPlaceholderValues = placeholders.map((placeholder) => resolvePlaceholderValue(placeholder, state));
|
|
46
|
+
const memoizedResolvedValues = useMultiValueMemoStringify(resolvedPlaceholderValues);
|
|
47
|
+
const setPlaceholderValues = useCallback((valueOrUpdateCallback) => {
|
|
48
|
+
updateState((s) => {
|
|
49
|
+
const resolvedValues = placeholders.map((placeholder) => resolvePlaceholderValue(placeholder, s));
|
|
50
|
+
const updatedValues = typeof valueOrUpdateCallback === "function"
|
|
55
51
|
? valueOrUpdateCallback(resolvedValues)
|
|
56
52
|
: valueOrUpdateCallback;
|
|
57
|
-
return placeholders.reduce(
|
|
53
|
+
return placeholders.reduce((acc, placeholder, i) => {
|
|
58
54
|
return setPlaceholder(placeholder, updatedValues[i], acc);
|
|
59
55
|
}, s);
|
|
60
56
|
});
|
|
@@ -71,8 +67,8 @@ export function usePlaceholders(placeholders) {
|
|
|
71
67
|
* @public
|
|
72
68
|
*/
|
|
73
69
|
export function useComposedPlaceholder(placeholder, resolutionContext) {
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
const { state } = usePlaceholdersContext();
|
|
71
|
+
const resolvedValue = resolveComposedPlaceholderValue(placeholder, state, resolutionContext);
|
|
76
72
|
return useMemoStringify(resolvedValue);
|
|
77
73
|
}
|
|
78
74
|
/**
|
|
@@ -84,8 +80,8 @@ export function useComposedPlaceholder(placeholder, resolutionContext) {
|
|
|
84
80
|
* @public
|
|
85
81
|
*/
|
|
86
82
|
export function useResolveValueWithPlaceholders(value, resolutionContext) {
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
const { state } = usePlaceholdersContext();
|
|
84
|
+
const resolvedValue = resolveValueWithPlaceholders(value, state, resolutionContext);
|
|
89
85
|
return useMemoStringify(resolvedValue);
|
|
90
86
|
}
|
|
91
87
|
/**
|
|
@@ -97,10 +93,8 @@ export function useResolveValueWithPlaceholders(value, resolutionContext) {
|
|
|
97
93
|
* @public
|
|
98
94
|
*/
|
|
99
95
|
export function useResolveValuesWithPlaceholders(values, resolutionContext) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return resolveValueWithPlaceholders(value, state, resolutionContext);
|
|
103
|
-
});
|
|
96
|
+
const { state } = usePlaceholdersContext();
|
|
97
|
+
const resolvedValues = values === null || values === void 0 ? void 0 : values.map((value) => resolveValueWithPlaceholders(value, state, resolutionContext));
|
|
104
98
|
return useMultiValueMemoStringify(resolvedValues);
|
|
105
99
|
}
|
|
106
100
|
/**
|
|
@@ -111,7 +105,7 @@ export function useResolveValuesWithPlaceholders(values, resolutionContext) {
|
|
|
111
105
|
* @internal
|
|
112
106
|
*/
|
|
113
107
|
export function useMemoStringify(value) {
|
|
114
|
-
return useMemo(
|
|
108
|
+
return useMemo(() => {
|
|
115
109
|
return value;
|
|
116
110
|
}, [stableStringify(value)]);
|
|
117
111
|
}
|
|
@@ -124,18 +118,18 @@ export function useMemoStringify(value) {
|
|
|
124
118
|
*/
|
|
125
119
|
export function useMultiValueMemoStringify(values) {
|
|
126
120
|
var _a;
|
|
127
|
-
|
|
121
|
+
const prevValues = useRef((_a = values === null || values === void 0 ? void 0 : values.map((v) => ({
|
|
128
122
|
hash: stableStringify(v),
|
|
129
123
|
value: v,
|
|
130
|
-
})
|
|
131
|
-
return useMemo(
|
|
132
|
-
return values === null || values === void 0 ? void 0 : values.map(
|
|
133
|
-
|
|
124
|
+
}))) !== null && _a !== void 0 ? _a : []);
|
|
125
|
+
return useMemo(() => {
|
|
126
|
+
return values === null || values === void 0 ? void 0 : values.map((val, idx) => {
|
|
127
|
+
const hash = stableStringify(val);
|
|
134
128
|
if (hash === prevValues.current[idx].hash) {
|
|
135
129
|
return prevValues.current[idx].value;
|
|
136
130
|
}
|
|
137
131
|
prevValues.current[idx] = {
|
|
138
|
-
hash
|
|
132
|
+
hash,
|
|
139
133
|
value: val,
|
|
140
134
|
};
|
|
141
135
|
return val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/base/react/placeholders/hooks.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAOH,aAAa,GAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,sBAAsB,EAAqB,MAAM,WAAW,CAAC;AACtE,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EACH,cAAc,EACd,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,GAC/B,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC1B,WAAe;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/base/react/placeholders/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __assign, __read, __spread } from "tslib";
|
|
2
1
|
// (C) 2019-2022 GoodData Corporation
|
|
3
2
|
import isArray from "lodash/isArray";
|
|
4
3
|
import { isPlaceholder, isAnyPlaceholder, isComposedPlaceholder, } from "./base";
|
|
@@ -7,12 +6,11 @@ import { isPlaceholder, isAnyPlaceholder, isComposedPlaceholder, } from "./base"
|
|
|
7
6
|
* @internal
|
|
8
7
|
*/
|
|
9
8
|
export function setPlaceholder(placeholder, value, state) {
|
|
10
|
-
var _a;
|
|
11
9
|
if (placeholder.validate) {
|
|
12
10
|
placeholder.validate(value);
|
|
13
11
|
}
|
|
14
12
|
if (isPlaceholder(placeholder)) {
|
|
15
|
-
return
|
|
13
|
+
return Object.assign(Object.assign({}, state), { placeholders: Object.assign(Object.assign({}, state.placeholders), { [placeholder.id]: Object.assign(Object.assign({}, placeholder), { value }) }) });
|
|
16
14
|
}
|
|
17
15
|
return state;
|
|
18
16
|
}
|
|
@@ -22,7 +20,7 @@ export function setPlaceholder(placeholder, value, state) {
|
|
|
22
20
|
*/
|
|
23
21
|
export function resolvePlaceholderValue(placeholder, state) {
|
|
24
22
|
var _a, _b;
|
|
25
|
-
|
|
23
|
+
const placeholderValue = (_b = (_a = state.placeholders[placeholder.id]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : placeholder.defaultValue;
|
|
26
24
|
if (placeholder.validate) {
|
|
27
25
|
placeholder.validate(placeholderValue);
|
|
28
26
|
}
|
|
@@ -33,9 +31,7 @@ export function resolvePlaceholderValue(placeholder, state) {
|
|
|
33
31
|
* @internal
|
|
34
32
|
*/
|
|
35
33
|
export function resolveComposedPlaceholderValue(placeholder, state, resolutionContext) {
|
|
36
|
-
|
|
37
|
-
return resolveValueWithPlaceholders(p, state, resolutionContext);
|
|
38
|
-
});
|
|
34
|
+
const values = placeholder.placeholders.map((p) => resolveValueWithPlaceholders(p, state, resolutionContext));
|
|
39
35
|
return placeholder.computeValue(values, resolutionContext);
|
|
40
36
|
}
|
|
41
37
|
/**
|
|
@@ -57,15 +53,15 @@ export function resolveValueWithPlaceholders(value, state, resolutionContext) {
|
|
|
57
53
|
return resolveComposedPlaceholderValue(value, state, resolutionContext);
|
|
58
54
|
}
|
|
59
55
|
else if (isArray(value)) {
|
|
60
|
-
return value.reduce(
|
|
61
|
-
|
|
56
|
+
return value.reduce((acc, v) => {
|
|
57
|
+
const resolvedValue = resolveValueWithPlaceholders(v, state, resolutionContext);
|
|
62
58
|
if (isAnyPlaceholder(v)) {
|
|
63
59
|
// Omit placeholder values that are not set
|
|
64
60
|
if (!resolvedValue) {
|
|
65
61
|
return acc;
|
|
66
62
|
}
|
|
67
63
|
else if (isArray(resolvedValue)) {
|
|
68
|
-
acc.push
|
|
64
|
+
acc.push(...resolvedValue.filter((v) => typeof v !== "undefined"));
|
|
69
65
|
return acc;
|
|
70
66
|
}
|
|
71
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/base/react/placeholders/resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/base/react/placeholders/resolve.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAGH,aAAa,EACb,gBAAgB,EAIhB,qBAAqB,GACxB,MAAM,QAAQ,CAAC;AAGhB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC1B,WAAc,EACd,KAAsC,EACtC,KAAwB;IAExB,IAAI,WAAW,CAAC,QAAQ,EAAE;QACtB,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;IACD,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;QAC5B,uCACO,KAAK,KACR,YAAY,kCACL,KAAK,CAAC,YAAY,KACrB,CAAC,WAAW,CAAC,EAAE,CAAC,kCACT,WAAW,KACd,KAAK,UAGf;KACL;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACnC,WAAc,EACd,KAAwB;;IAExB,MAAM,gBAAgB,eAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,0CAAE,KAAK,mCAAI,WAAW,CAAC,YAAY,CAAC;IAC/F,IAAI,WAAW,CAAC,QAAQ,EAAE;QACtB,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;KAC1C;IACD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAC3C,WAA4D,EAC5D,KAAwB,EACxB,iBAA4B;IAE5B,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,4BAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CACtB,CAAC;IACxC,OAAO,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAkB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CACxC,KAAQ,EACR,KAAwB,EACxB,iBAAqB;IAErB,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAgC,CAAC;KAC/E;SAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;QACrC,OAAO,+BAA+B,CAClC,KAAK,EACL,KAAK,EACL,iBAAiB,CACW,CAAC;KACpC;SAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,aAAa,GAAG,4BAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAChF,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBACrB,2CAA2C;gBAC3C,IAAI,CAAC,aAAa,EAAE;oBAChB,OAAO,GAAG,CAAC;iBACd;qBAAM,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;oBAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;oBACnE,OAAO,GAAG,CAAC;iBACd;aACJ;YAED,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxB,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;KACV;IAED,OAAO,KAAoC,CAAC;AAChD,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __read } from "tslib";
|
|
2
1
|
// (C) 2019-2022 GoodData Corporation
|
|
3
2
|
import { useEffect, useState } from "react";
|
|
4
3
|
import { makeCancelable } from "./CancelablePromise";
|
|
@@ -22,14 +21,14 @@ import { safeSerialize } from "./safeSerialize";
|
|
|
22
21
|
* @public
|
|
23
22
|
*/
|
|
24
23
|
export function useCancelablePromise(options, deps) {
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const { promise, onLoading = noop, onPending = noop, onCancel = noop, onSuccess = noop, onError = noop, } = options;
|
|
25
|
+
const getInitialState = () => ({
|
|
27
26
|
result: undefined,
|
|
28
27
|
error: undefined,
|
|
29
28
|
status: promise ? "loading" : "pending",
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
useEffect(
|
|
29
|
+
});
|
|
30
|
+
const [state, setState] = useState(getInitialState());
|
|
31
|
+
useEffect(() => {
|
|
33
32
|
if (!promise) {
|
|
34
33
|
if (state.status !== "pending") {
|
|
35
34
|
setState({
|
|
@@ -51,22 +50,22 @@ export function useCancelablePromise(options, deps) {
|
|
|
51
50
|
}
|
|
52
51
|
onLoading();
|
|
53
52
|
}
|
|
54
|
-
|
|
53
|
+
const cancelablePromise = makeCancelable(promise());
|
|
55
54
|
cancelablePromise.promise
|
|
56
|
-
.then(
|
|
55
|
+
.then((result) => {
|
|
57
56
|
// Because promises have their own lifecycle independent on react lifecycle,
|
|
58
57
|
// we need to check if cancelable promise was not canceled before it's resolution
|
|
59
58
|
// and our results are still relevant.
|
|
60
59
|
if (!cancelablePromise.getHasCanceled()) {
|
|
61
60
|
setState({
|
|
62
61
|
status: "success",
|
|
63
|
-
result
|
|
62
|
+
result,
|
|
64
63
|
error: undefined,
|
|
65
64
|
});
|
|
66
65
|
onSuccess(result);
|
|
67
66
|
}
|
|
68
67
|
})
|
|
69
|
-
.catch(
|
|
68
|
+
.catch((error) => {
|
|
70
69
|
// Because promises have their own lifecycle independent on react lifecycle,
|
|
71
70
|
// we need to check if cancelable promise was not canceled before it's resolution
|
|
72
71
|
// and our results are still relevant.
|
|
@@ -74,12 +73,12 @@ export function useCancelablePromise(options, deps) {
|
|
|
74
73
|
setState({
|
|
75
74
|
status: "error",
|
|
76
75
|
result: undefined,
|
|
77
|
-
error
|
|
76
|
+
error,
|
|
78
77
|
});
|
|
79
78
|
onError(error);
|
|
80
79
|
}
|
|
81
80
|
});
|
|
82
|
-
return
|
|
81
|
+
return () => {
|
|
83
82
|
// If promise was not fulfilled before dependencies change, cancel it.
|
|
84
83
|
// Important notice - request itself is not canceled - we just don't care about unrelevant results anymore.
|
|
85
84
|
if (!cancelablePromise.getHasFulfilled()) {
|
|
@@ -90,13 +89,16 @@ export function useCancelablePromise(options, deps) {
|
|
|
90
89
|
}, deps);
|
|
91
90
|
// We want to avoid the return of the old state when some dependency has changed,
|
|
92
91
|
// before another useEffect hook round starts.
|
|
93
|
-
|
|
92
|
+
const [prevDeps, setDeps] = useState(deps);
|
|
94
93
|
if ((prevDeps === null || prevDeps === void 0 ? void 0 : prevDeps.length) !== (deps === null || deps === void 0 ? void 0 : deps.length)) {
|
|
95
|
-
throw new UnexpectedSdkError(
|
|
94
|
+
throw new UnexpectedSdkError(`The final argument passed to useCancelablePromise changed size between renders. The order and size of this array must remain constant.
|
|
95
|
+
|
|
96
|
+
Previous: ${safeSerialize(prevDeps)}
|
|
97
|
+
Incoming: ${safeSerialize(deps)}`);
|
|
96
98
|
}
|
|
97
|
-
if (deps === null || deps === void 0 ? void 0 : deps.some(
|
|
99
|
+
if (deps === null || deps === void 0 ? void 0 : deps.some((dep, i) => dep !== (prevDeps === null || prevDeps === void 0 ? void 0 : prevDeps[i]))) {
|
|
98
100
|
setDeps(deps);
|
|
99
|
-
|
|
101
|
+
const currentState = getInitialState();
|
|
100
102
|
setState(currentState);
|
|
101
103
|
return currentState;
|
|
102
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCancelablePromise.js","sourceRoot":"","sources":["../../../src/base/react/useCancelablePromise.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCancelablePromise.js","sourceRoot":"","sources":["../../../src/base/react/useCancelablePromise.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __read, __spread } from "tslib";
|
|
2
1
|
// (C) 2019-2022 GoodData Corporation
|
|
3
2
|
import identity from "lodash/identity";
|
|
4
3
|
import { UnexpectedSdkError } from "../errors/GoodDataSdkError";
|
|
@@ -25,11 +24,10 @@ import { UnexpectedSdkError } from "../errors/GoodDataSdkError";
|
|
|
25
24
|
* @returns resolved status
|
|
26
25
|
* @public
|
|
27
26
|
*/
|
|
28
|
-
export function resolveUseCancelablePromisesStatus(cancelablePromisesStates, options) {
|
|
27
|
+
export function resolveUseCancelablePromisesStatus(cancelablePromisesStates, options = {}) {
|
|
29
28
|
var _a;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var strategy = (_a = options.strategy) !== null && _a !== void 0 ? _a : "serial";
|
|
29
|
+
const statuses = collectUseCancelablePromiseStatuses(cancelablePromisesStates);
|
|
30
|
+
const strategy = (_a = options.strategy) !== null && _a !== void 0 ? _a : "serial";
|
|
33
31
|
return strategy === "parallel"
|
|
34
32
|
? resolveUseCancelablePromisesStatusParallel(statuses)
|
|
35
33
|
: resolveUseCancelablePromisesStatusSerial(statuses);
|
|
@@ -46,14 +44,14 @@ export function resolveUseCancelablePromisesStatus(cancelablePromisesStates, opt
|
|
|
46
44
|
* @public
|
|
47
45
|
*/
|
|
48
46
|
export function resolveUseCancelablePromisesError(states) {
|
|
49
|
-
|
|
47
|
+
const errors = collectUseCancelablePromiseErrors(states);
|
|
50
48
|
return errors.find(identity);
|
|
51
49
|
}
|
|
52
50
|
/**
|
|
53
51
|
* @internal
|
|
54
52
|
*/
|
|
55
53
|
export function resolveUseCancelablePromisesStatusSerial(statuses) {
|
|
56
|
-
return statuses.reduce(
|
|
54
|
+
return statuses.reduce((prevStatus, nextStatus) => {
|
|
57
55
|
switch (prevStatus) {
|
|
58
56
|
case "pending":
|
|
59
57
|
case "loading":
|
|
@@ -62,21 +60,21 @@ export function resolveUseCancelablePromisesStatusSerial(statuses) {
|
|
|
62
60
|
case "success":
|
|
63
61
|
return nextStatus;
|
|
64
62
|
default: {
|
|
65
|
-
|
|
66
|
-
throw new UnexpectedSdkError(
|
|
63
|
+
const a = prevStatus;
|
|
64
|
+
throw new UnexpectedSdkError(`Unknown useCancelablePromise status: ${a}`);
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
67
|
});
|
|
70
68
|
}
|
|
71
|
-
|
|
69
|
+
const priorityByStatus = {
|
|
72
70
|
pending: 0,
|
|
73
71
|
loading: 1,
|
|
74
72
|
error: 2,
|
|
75
73
|
success: 3,
|
|
76
74
|
};
|
|
77
75
|
function compareStatus(a, b) {
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
const aPriority = priorityByStatus[a];
|
|
77
|
+
const bPriority = priorityByStatus[b];
|
|
80
78
|
if (aPriority < bPriority) {
|
|
81
79
|
return -1;
|
|
82
80
|
}
|
|
@@ -89,13 +87,13 @@ function compareStatus(a, b) {
|
|
|
89
87
|
* @internal
|
|
90
88
|
*/
|
|
91
89
|
export function resolveUseCancelablePromisesStatusParallel(statuses) {
|
|
92
|
-
|
|
90
|
+
const [finalStatus] = [...statuses].sort(compareStatus);
|
|
93
91
|
return finalStatus;
|
|
94
92
|
}
|
|
95
93
|
function collectUseCancelablePromiseStatuses(results) {
|
|
96
|
-
return results.map(
|
|
94
|
+
return results.map((r) => r.status);
|
|
97
95
|
}
|
|
98
96
|
function collectUseCancelablePromiseErrors(results) {
|
|
99
|
-
return results.map(
|
|
97
|
+
return results.map((r) => r.error);
|
|
100
98
|
}
|
|
101
99
|
//# sourceMappingURL=useCancelablePromiseUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCancelablePromiseUtils.js","sourceRoot":"","sources":["../../../src/base/react/useCancelablePromiseUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCancelablePromiseUtils.js","sourceRoot":"","sources":["../../../src/base/react/useCancelablePromiseUtils.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kCAAkC,CAC9C,wBAAuE,EACvE,UAEI,EAAE;;IAEN,MAAM,QAAQ,GAAG,mCAAmC,CAAC,wBAAwB,CAAC,CAAC;IAC/E,MAAM,QAAQ,SAAG,OAAO,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IAE9C,OAAO,QAAQ,KAAK,UAAU;QAC1B,CAAC,CAAC,0CAA0C,CAAC,QAAQ,CAAC;QACtD,CAAC,CAAC,wCAAwC,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC7C,MAAoD;IAEpD,MAAM,MAAM,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wCAAwC,CACpD,QAAsC;IAEtC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE;QAC9C,QAAQ,UAAU,EAAE;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,OAAO;gBACR,OAAO,UAAU,CAAC;YACtB,KAAK,SAAS;gBACV,OAAO,UAAU,CAAC;YACtB,OAAO,CAAC,CAAC;gBACL,MAAM,CAAC,GAAU,UAAU,CAAC;gBAC5B,MAAM,IAAI,kBAAkB,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;aAC7E;SACJ;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,gBAAgB,GAAuD;IACzE,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;CACb,CAAC;AAEF,SAAS,aAAa,CAAC,CAA6B,EAAE,CAA6B;IAC/E,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,SAAS,GAAG,SAAS,EAAE;QACvB,OAAO,CAAC,CAAC,CAAC;KACb;IACD,IAAI,SAAS,GAAG,SAAS,EAAE;QACvB,OAAO,CAAC,CAAC;KACZ;IAED,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0CAA0C,CACtD,QAAsC;IAEtC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAS,mCAAmC,CACxC,OAAsD;IAEtD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,iCAAiC,CACtC,OAAqD;IAErD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __read, __spread } from "tslib";
|
|
2
1
|
// (C) 2007-2021 GoodData Corporation
|
|
3
2
|
import { useState, useEffect } from "react";
|
|
4
3
|
import { usePromiseCache } from "./usePromiseCache";
|
|
@@ -6,39 +5,36 @@ import { usePromiseCache } from "./usePromiseCache";
|
|
|
6
5
|
* Hook for getting data from paged resource
|
|
7
6
|
* @public
|
|
8
7
|
*/
|
|
9
|
-
export function usePagedResource(resourceFactory, fetchParams, fetchDeps, resetDeps, getCacheKey, initialState
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
var _b = usePromiseCache(resourceFactory, fetchParams, fetchDeps, resetDeps, getCacheKey), isLoading = _b.isLoading, results = _b.results;
|
|
28
|
-
useEffect(function () {
|
|
8
|
+
export function usePagedResource(resourceFactory, fetchParams, fetchDeps, resetDeps, getCacheKey, initialState = {
|
|
9
|
+
totalItemsCount: undefined,
|
|
10
|
+
items: [],
|
|
11
|
+
}) {
|
|
12
|
+
const [state, setState] = useState(initialState);
|
|
13
|
+
const reset = () => setState(initialState);
|
|
14
|
+
const mergeResult = (result) => setState((state) => {
|
|
15
|
+
const isFirstResult = typeof state.totalItemsCount === "undefined";
|
|
16
|
+
const items = isFirstResult ? new Array(result.totalCount) : [...state.items];
|
|
17
|
+
items.splice(result.offset, result.limit, ...result.items);
|
|
18
|
+
return {
|
|
19
|
+
totalItemsCount: result.totalCount,
|
|
20
|
+
items,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const { isLoading, results } = usePromiseCache(resourceFactory, fetchParams, fetchDeps, resetDeps, getCacheKey);
|
|
24
|
+
useEffect(() => {
|
|
29
25
|
// We want to reset state only after resetDeps are changed, not on first run
|
|
30
|
-
return
|
|
26
|
+
return () => {
|
|
31
27
|
reset();
|
|
32
28
|
};
|
|
33
29
|
}, resetDeps);
|
|
34
|
-
useEffect(
|
|
30
|
+
useEffect(() => {
|
|
35
31
|
results.forEach(mergeResult);
|
|
36
32
|
}, [results]);
|
|
37
|
-
|
|
33
|
+
const { items, totalItemsCount } = state;
|
|
38
34
|
return {
|
|
39
|
-
isLoading
|
|
40
|
-
items
|
|
41
|
-
totalItemsCount
|
|
35
|
+
isLoading,
|
|
36
|
+
items,
|
|
37
|
+
totalItemsCount,
|
|
42
38
|
};
|
|
43
39
|
}
|
|
44
40
|
//# sourceMappingURL=usePagedResource.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePagedResource.js","sourceRoot":"","sources":["../../../src/base/react/usePagedResource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePagedResource.js","sourceRoot":"","sources":["../../../src/base/react/usePagedResource.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAiBpD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC5B,eAAoE,EACpE,WAAsB,EACtB,SAA+B,EAC/B,SAA+B,EAC/B,WAAyC,EACzC,eAA8C;IAC1C,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,EAAE;CACZ;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgC,YAAY,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,CAAC,MAA6B,EAAE,EAAE,CAClD,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,eAAe,KAAK,WAAW,CAAC;QACnE,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9E,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO;YACH,eAAe,EAAE,MAAM,CAAC,UAAU;YAClC,KAAK;SACR,CAAC;IACN,CAAC,CAAC,CAAC;IAEP,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,eAAe,CAC1C,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,CACd,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,4EAA4E;QAC5E,OAAO,GAAG,EAAE;YACR,KAAK,EAAE,CAAC;QACZ,CAAC,CAAC;IACN,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEzC,OAAO;QACH,SAAS;QACT,KAAK;QACL,eAAe;KAClB,CAAC;AACN,CAAC"}
|
|
@@ -6,9 +6,9 @@ import { useEffect, useRef } from "react";
|
|
|
6
6
|
* See: https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
useEffect(
|
|
9
|
+
export const usePrevious = (props) => {
|
|
10
|
+
const previousProps = useRef(props);
|
|
11
|
+
useEffect(() => {
|
|
12
12
|
previousProps.current = props;
|
|
13
13
|
});
|
|
14
14
|
return previousProps.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrevious.js","sourceRoot":"","sources":["../../../src/base/react/usePrevious.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"usePrevious.js","sourceRoot":"","sources":["../../../src/base/react/usePrevious.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC1C,MAAM,aAAa,GAAG,MAAM,CAAI,KAAK,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { __assign, __read } from "tslib";
|
|
2
1
|
// (C) 2007-2020 GoodData Corporation
|
|
3
2
|
import { useEffect, useState, useRef } from "react";
|
|
4
3
|
import { PromiseCache } from "./PromiseCache";
|
|
5
|
-
|
|
4
|
+
const initialState = {
|
|
6
5
|
isLoading: false,
|
|
7
6
|
results: [],
|
|
8
7
|
errors: [],
|
|
@@ -14,21 +13,21 @@ var initialState = {
|
|
|
14
13
|
* @internal
|
|
15
14
|
*/
|
|
16
15
|
export function usePromiseCache(promiseFactory, fetchParams, fetchDeps, resetDeps, getCacheKey) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
useEffect(
|
|
24
|
-
return
|
|
16
|
+
const promiseCacheRef = useRef(new PromiseCache(promiseFactory, getCacheKey));
|
|
17
|
+
const [state, setState] = useState(initialState);
|
|
18
|
+
const setInitialState = () => setState(initialState);
|
|
19
|
+
const setResults = (results) => setState((state) => (Object.assign(Object.assign({}, state), { results })));
|
|
20
|
+
const setErrors = (errors) => setState((state) => (Object.assign(Object.assign({}, state), { errors })));
|
|
21
|
+
const setLoading = (isLoading) => setState((state) => (Object.assign(Object.assign({}, state), { isLoading })));
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
return () => {
|
|
25
24
|
promiseCacheRef.current.reset();
|
|
26
25
|
setInitialState();
|
|
27
26
|
};
|
|
28
27
|
}, resetDeps);
|
|
29
|
-
useEffect(
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const newParams = fetchParams.filter((params) => !promiseCacheRef.current.getResult(params));
|
|
30
|
+
const newPromises = newParams.map(promiseCacheRef.current.load);
|
|
32
31
|
if (newPromises.length === 0) {
|
|
33
32
|
return;
|
|
34
33
|
}
|
|
@@ -37,16 +36,16 @@ export function usePromiseCache(promiseFactory, fetchParams, fetchDeps, resetDep
|
|
|
37
36
|
// and our results are still relevant.
|
|
38
37
|
// We do this by storing current promise cache in effect closure
|
|
39
38
|
// so when promises are resolved, we have still access to it
|
|
40
|
-
|
|
39
|
+
const usedPromiseCache = promiseCacheRef.current;
|
|
41
40
|
setLoading(true);
|
|
42
41
|
Promise.all(newPromises)
|
|
43
|
-
.then(
|
|
42
|
+
.then((results) => {
|
|
44
43
|
setLoading(false);
|
|
45
44
|
if (usedPromiseCache === promiseCacheRef.current) {
|
|
46
45
|
setResults(results);
|
|
47
46
|
}
|
|
48
47
|
})
|
|
49
|
-
.catch(
|
|
48
|
+
.catch((errors) => {
|
|
50
49
|
setLoading(false);
|
|
51
50
|
if (usedPromiseCache === promiseCacheRef.current) {
|
|
52
51
|
setErrors(errors);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePromiseCache.js","sourceRoot":"","sources":["../../../src/base/react/usePromiseCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePromiseCache.js","sourceRoot":"","sources":["../../../src/base/react/usePromiseCache.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9C,MAAM,YAAY,GAAoC;IAClD,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;CACb,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC3B,cAAqD,EACrD,WAAsB,EACtB,SAA+B,EAC/B,SAA+B,EAC/B,WAAyC;IAEzC,MAAM,eAAe,GAAG,MAAM,CAC1B,IAAI,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAChD,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyC,YAAY,CAAC,CAAC;IAEzF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,OAAO,IAAG,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,MAAM,IAAG,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,CAAC,SAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,SAAS,IAAG,CAAC,CAAC;IAE1F,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,GAAG,EAAE;YACR,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,eAAe,EAAE,CAAC;QACtB,CAAC,CAAC;IACN,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO;SACV;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,sCAAsC;QACtC,gEAAgE;QAChE,4DAA4D;QAC5D,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC;QACjD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACd,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,gBAAgB,KAAK,eAAe,CAAC,OAAO,EAAE;gBAC9C,UAAU,CAAC,OAAO,CAAC,CAAC;aACvB;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,gBAAgB,KAAK,eAAe,CAAC,OAAO,EAAE;gBAC9C,SAAS,CAAC,MAAM,CAAC,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IACX,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* Get displayName of React component
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
const getDisplayName = (Component) => {
|
|
7
7
|
return Component.displayName || Component.name || "Component";
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
10
|
* Wrap displayName of React component
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
Component.displayName = hocName
|
|
13
|
+
export const wrapDisplayName = (hocName, BaseComponent) => {
|
|
14
|
+
return (Component) => {
|
|
15
|
+
const componentName = getDisplayName(BaseComponent || Component);
|
|
16
|
+
Component.displayName = `${hocName}(${componentName})`;
|
|
17
17
|
return Component;
|
|
18
18
|
};
|
|
19
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapDisplayName.js","sourceRoot":"","sources":["../../../src/base/react/wrapDisplayName.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"wrapDisplayName.js","sourceRoot":"","sources":["../../../src/base/react/wrapDisplayName.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,SAAmC,EAAE,EAAE;IAC3D,OAAO,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAC;AAClE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,OAAe,EACf,aAAwC,EAC0B,EAAE;IACpE,OAAO,CAAI,SAAiC,EAAE,EAAE;QAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;QACjE,SAAS,CAAC,WAAW,GAAG,GAAG,OAAO,IAAI,aAAa,GAAG,CAAC;QAEvD,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;AACN,CAAC,CAAC"}
|