@infomaximum/widget-sdk 7.0.0-29 → 7.0.0-30

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/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [7.0.0-30](https://github.com/Infomaximum/widget-sdk/compare/v7.0.0-29...v7.0.0-30) (2026-06-18)
6
+
7
+
8
+ ### Features
9
+
10
+ * array nesting logic migrated from react-bi-utils [WD-2356] ([b263699](https://github.com/Infomaximum/widget-sdk/commit/b2636997531e1321bea83b627aa07b80506365db))
11
+
5
12
  ## [7.0.0-29](https://github.com/Infomaximum/widget-sdk/compare/v7.0.0-28...v7.0.0-29) (2026-06-11)
6
13
 
7
14
 
package/dist/index.d.ts CHANGED
@@ -27330,8 +27330,36 @@ declare const displayConditionTemplate = "isNotNull({formula}) AND accurateCastO
27330
27330
  /** Конвертировать меры виджета во входы для вычислителя */
27331
27331
  declare function mapMeasuresToInputs<T extends IWidgetMeasure>(measures: T[], variables: Map<string, TWidgetVariable>, addFormulas?: (measure: T) => Map<string, string>): ICalculatorMeasureInput[];
27332
27332
 
27333
+ interface IDimensionNesting {
27334
+ dimensionNestingMap: Map<string, Map<string | null, string | null>>;
27335
+ dimensionMaxNestingMap: Map<string, string | null>;
27336
+ }
27337
+ type TWidgetDimensionWithNesting<T extends TWidgetDimensionUnion = IWidgetDimension> = T & {
27338
+ arrayNesting?: boolean;
27339
+ };
27340
+ type TDimensionWithNesting<D extends TWidgetDimensionUnion = IWidgetDimension> = D & {
27341
+ arrayNesting?: boolean;
27342
+ };
27343
+ type TSlicedDimension<D extends TWidgetDimensionUnion = IWidgetDimension> = TWidgetDimensionWithNesting<D> & {
27344
+ sliceIndex?: number;
27345
+ };
27346
+ declare function isNestingDimension<D extends TWidgetDimensionUnion = IWidgetDimension>(indicator: IWidgetColumnIndicator | IWidgetDimensionInHierarchy): indicator is TDimensionWithNesting<D>;
27347
+ declare function findMatchedFilter(filterValues: TWidgetFilterValue[], dimension: TWidgetDimensionWithNesting): TWidgetFilterValue | undefined;
27348
+ declare function getDimensionSliceIndex(dimensionMaxNestingMap: IDimensionNesting["dimensionMaxNestingMap"] | undefined, filterSliceIndex: number | undefined, checkedValuesLength: number, dimensionId: number | undefined): number;
27349
+ declare function getSlicedDimension<D extends TWidgetDimensionWithNesting<IWidgetDimension | TConditionalDimensionInHierarchy>>(dimension: D, sliceIndex: number | undefined): TSlicedDimension<D>;
27350
+ declare function selectSlicedDimensionFromHierarchy<D extends TWidgetDimensionWithNesting = TWidgetDimensionWithNesting, I extends TWidgetDimensionWithNesting<IWidgetDimensionInHierarchy> = TWidgetDimensionWithNesting<IWidgetDimensionInHierarchy>, H extends IWidgetDimensionHierarchy<I> = IWidgetDimensionHierarchy<I>>(hierarchy: H, widgetFilterValues: TWidgetFilterValue[], dimensionMaxNestingMap?: IDimensionNesting["dimensionMaxNestingMap"]): TNullable<TSlicedDimension<D | TConditionalDimensionInHierarchy<I>>>;
27351
+ declare function getSlicedDimensionByFilters<D extends TWidgetDimensionWithNesting>(dimension: D, widgetFilters: TWidgetFilterValue[], dimensionMaxNestingMap?: IDimensionNesting["dimensionMaxNestingMap"]): TSlicedDimension<D>;
27352
+ declare const getSlicedDimensionFormula: (dimension: TSlicedDimension<TWidgetDimensionUnion>) => {
27353
+ slicedDimensionFormula: string;
27354
+ dimensionFormula: string;
27355
+ };
27356
+ declare const replaceHierarchiesWithSlicedDimension: <D extends IWidgetDimension = IWidgetDimension, I extends IWidgetDimensionInHierarchy = IWidgetDimensionInHierarchy>(dimension: D | IWidgetDimensionHierarchy<I>, widgetFilters: TWidgetFilterValue[], dimensionMaxNestingMap?: IDimensionNesting["dimensionMaxNestingMap"]) => TSlicedDimension<D | TConditionalDimensionInHierarchy<I>> | undefined;
27357
+ declare const replaceHierarchiesWithSlicedDimensions: <D extends IWidgetDimension = IWidgetDimension, I extends IWidgetDimensionInHierarchy = IWidgetDimensionInHierarchy>(dimensions: (D | IWidgetDimensionHierarchy<I>)[], widgetFilters: TWidgetFilterValue[], dimensionMaxNestingMap?: IDimensionNesting["dimensionMaxNestingMap"]) => TSlicedDimension<D | TConditionalDimensionInHierarchy<I>>[];
27358
+ declare const findDimensionsForNestingQuery: <D extends TWidgetDimensionWithNesting<IWidgetDimension> = TWidgetDimensionWithNesting<IWidgetDimension>, I extends TWidgetDimensionWithNesting<IWidgetDimensionInHierarchy> = TWidgetDimensionWithNesting<IWidgetDimensionInHierarchy>>(dimensions: (D | IWidgetDimensionHierarchy<I>)[], widgetFilters: TWidgetFilterValue[]) => TSlicedDimension<D | TConditionalDimensionInHierarchy<I>>[];
27359
+
27360
+ declare function mapDimensionToInput<T extends IWidgetDimension>(dimension: TSlicedDimension<T>, variables: Map<string, TWidgetVariable>): ICalculatorDimensionInput | null;
27333
27361
  /** Конвертировать разрезы виджета во входы для вычислителя */
27334
- declare function mapDimensionsToInputs<T extends IWidgetDimension>(dimensions: T[], variables: Map<string, TWidgetVariable>): ICalculatorDimensionInput[];
27362
+ declare function mapDimensionsToInputs<T extends IWidgetDimension>(dimensions: TSlicedDimension<T>[], variables: Map<string, TWidgetVariable>): ICalculatorDimensionInput[];
27335
27363
 
27336
27364
  /** Конвертировать процессные показатели виджета во входы для вычислителя */
27337
27365
  declare function mapTransitionMeasuresToInputs<T extends IProcessIndicator>(indicators: T[], process: IWidgetProcess, variables: Map<string, TWidgetVariable>, addFormulas?: (indicator: T) => Map<string, string>): ICalculatorMeasureInput[];
@@ -27350,11 +27378,13 @@ interface IMapSortingToInputsParams<Settings extends TSettings, Indicator> {
27350
27378
  settings: Settings;
27351
27379
  variables: Map<string, TWidgetVariable>;
27352
27380
  filters: ICalculatorFilter[];
27381
+ widgetFilters?: TWidgetFilterValue[];
27353
27382
  getIndicatorType(key: string, indicator: Indicator): typeof EWidgetIndicatorType.DIMENSION | typeof EWidgetIndicatorType.MEASURE;
27383
+ dimensionMaxNestingMap?: IDimensionNesting["dimensionMaxNestingMap"];
27354
27384
  }
27355
27385
  type TSettings = Pick<IBaseWidgetSettings, "sorting">;
27356
27386
  type TIndicator = IWidgetDimension | IWidgetMeasure | IWidgetDimensionHierarchy<IWidgetDimension>;
27357
- declare function mapSortingToInputs<Settings extends TSettings = TSettings, Indicator extends TIndicator = TIndicator>({ settings, variables, filters, getIndicatorType, }: IMapSortingToInputsParams<Settings, Indicator>): ISortOrder[];
27387
+ declare function mapSortingToInputs<Settings extends TSettings = TSettings, Indicator extends TIndicator = TIndicator>({ settings, variables, filters, widgetFilters, getIndicatorType, dimensionMaxNestingMap, }: IMapSortingToInputsParams<Settings, Indicator>): ISortOrder[];
27358
27388
  interface IPrepareSortOrdersParams<Settings extends TSettings, Indicator> extends IMapSortingToInputsParams<Settings, Indicator>, Pick<IGetDefaultSortOrders, "dimensions" | "measures"> {
27359
27389
  }
27360
27390
  declare function prepareSortOrders<Settings extends IBaseWidgetSettings = IBaseWidgetSettings, Indicator extends IWidgetColumnIndicator = IWidgetColumnIndicator>({ dimensions, measures, ...rest }: IPrepareSortOrdersParams<Settings, Indicator>): ISortOrder[];
@@ -28799,7 +28829,7 @@ interface IDimensionSelectionByFormula extends Map<string, IDimensionSelection>
28799
28829
  type TUpdateSelection = (selection: IDimensionSelectionByFormula, formula: string, value: string, filters: ICalculatorFilter[]) => void;
28800
28830
  declare const updateDefaultModeSelection: TUpdateSelection;
28801
28831
  declare const updateSingleModeSelection: TUpdateSelection;
28802
- declare const replaceFiltersBySelection: (filters: ICalculatorFilter[], selection: IDimensionSelectionByFormula) => ICalculatorFilter[];
28832
+ declare function replaceFiltersBySelection<T extends ICalculatorFilter | IWidgetFilter>(filters: T[], selection: IDimensionSelectionByFormula): T[];
28803
28833
 
28804
28834
  /** @deprecated временно используется для миграции */
28805
28835
  declare const WidgetPresetSettingsSchema: TVersionedSchema<{
@@ -29131,4 +29161,4 @@ declare global {
29131
29161
  }
29132
29162
  }
29133
29163
 
29134
- export { ActionButtonSchema, ActionDrillDownSchema, ActionGoToURLSchema, ActionOnClickParameterSchema, ActionOpenInSchema, ActionOpenViewSchema, ActionRunScriptSchema, ActionSchema, ActionUpdateVariableSchema, ActionsOnClickSchema, AutoIdentifiedArrayItemSchema, BaseWidgetSettingsSchema, ColorAutoSchema, ColorBaseSchema, ColorByDimensionSchema, ColorDisabledSchema, ColorFormulaSchema, ColorGradientSchema, ColorRangesSchema, ColorRuleSchema, ColorSchema, ColorValuesSchema, ColoredValueSchema, ColumnIndicatorValueSchema, DimensionProcessFilterSchema, DimensionValueSchema, DisplayConditionSchema, EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionProcessFilterTimeUnit, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EExpectedFieldTypes, EFontWeight, EFormatOrFormattingMode, EFormulaFilterFieldKeys, EHeightMode, EIgnoreFilterMode, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureInnerTemplateNames, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESettingsSchemaMetaKey, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingMode, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIgnoreFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, ExtendedFormulaFilterValueSchema, FormatSchema, FormattingSchema, FormulaFilterValueSchema, FormulaNullableSchema, FormulaSchema, type IActionButton, type IActionDrillDown, type IActionGoToUrl, type IActionOnClickControl, type IActionRunScript, type IActionScript, type IActionUpdateVariable, type IAddButtonSelectOption, type IAddDurationOfTransitionFilter, type IAddPresenceOfEventFilter, type IAddPresenceOfTransitionFilter, type IAddRepetitionOfEventFilter, type IAutoIdentifiedArrayItem, type IBaseDimensionsAndMeasuresCalculator, type IBaseDimensionsAndMeasuresCalculatorInput, type IBaseDimensionsAndMeasuresCalculatorOutput, type IBaseWidgetSettings, type ICalculator, type ICalculatorDimensionInput, type ICalculatorDimensionOutput, type ICalculatorFactory, type ICalculatorFilter, type ICalculatorIndicatorInput, type ICalculatorIndicatorOutput, type ICalculatorMeasureInput, type ICalculatorMeasureOutput, type ICalculatorOptions, type ICollapseRecord, type IColorPickerControl, type IColoredValue, type ICommonDimensions, type ICommonMeasures, type ICommonState, type IControlProps, type IControlRecord, type ICustomAddButtonProps, type ICustomWidgetProps, type IDefinition, type IDimensionAddButtonProps, type IDimensionProcessFilter, type IDimensionSelection, type IDimensionSelectionByFormula, type IDisplayConditionControl, type IDisplayPredicate, type IDisplayRule, type IDivePanelDescription, type IDividerRecord, type IEdge, type IEventsColorControl, type IEventsPickerControl, type IExportColumnOrder, type IFillSettings, type IFilterControl, type IFormattingControl, type IFormattingTemplateControl, type IFormulaControl, type IFormulaFilterValue, type IGeneralCalculator, type IGeneralCalculatorExportInput, type IGeneralCalculatorInput, type IGeneralCalculatorOutput, type IGlobalContext, type IGradient, type IGraphElement, type IGroupSetDescription, type IGroupSetRecord, type IGroupSettings, type IHintTooltipProps, type IHistogramBin, type IHistogramCalculator, type IHistogramCalculatorInput, type IHistogramCalculatorOutput, type IHistoricalSchemaDefinition, type IIndicatorLink, type IInitialSettings, type IInputControl, type IInputMarkdownControl, type IInputNumberControl, type IInputRangeControl, type IInputTemplatedControl, type ILens, type ILifecycleRuntime, type ILifecycleRuntimeFactory, type IMarkdownMeasure, type IMeasureAddButtonProps, type IMigrateContext, type IPanelDescription, type IPanelDescriptionCreator, type IParameterFromAggregation, type IParameterFromColumn, type IParameterFromDynamicList, type IParameterFromEditableTextValue, type IParameterFromEndEvent, type IParameterFromEvent, type IParameterFromFormula, type IParameterFromManualInput, type IParameterFromStartEvent, type IParameterFromStaticList, type IParameterFromVariable, type IPieCalculator, type IPieCalculatorInput, type IPieCalculatorOutput, type IProcessEventFilterValue, type IProcessEventIndicator, type IProcessFilterPreviewParams, type IProcessGraphCalculator, type IProcessGraphCalculatorInput, type IProcessGraphCalculatorOutput, type IProcessIndicator, type IProcessTransitionFilterValue, type IProcessTransitionIndicator, type IRadioIconGroupControl, type IRange, type ISchemaContext, type ISchemaFactory, type ISelectBranchOption, type ISelectControl, type ISelectDividerOption, type ISelectGroupOption, type ISelectLeafOption, type ISelectNode, type ISelectOption, type ISelectSystemOption, type ISizeControl, type ISortOrder, type ISortingAddButtonProps, type ISortingControl, type IStagesFilterValue, type IStaticListLabeledOption, type ISwitchControl, type ITagSetControl, type ITheme, type ITwoLimitsCalculator, type ITwoLimitsCalculatorExportInput, type ITwoLimitsCalculatorInput, type ITwoLimitsCalculatorOutput, type ITypeCalculator, type ITypeCalculatorInput, type ITypeCalculatorOutput, type ITypeCalculatorOutputItem, type ITypedFormulaControl, type IVersionedEnumBuildParams, type IVertex, type IViewAction, type IViewContext, type IWidget, type IWidgetAction, type IWidgetColumnIndicator, type IWidgetColumnListVariable, type IWidgetDimension, type IWidgetDimensionHierarchy, type IWidgetDimensionInHierarchy, type IWidgetDynamicListVariable, type IWidgetEntity, type IWidgetFilter, type IWidgetFiltration, type IWidgetFormatting, type IWidgetIndicator, type IWidgetIndicatorAddButtonProps, type IWidgetManifest, type IWidgetMeasure, type IWidgetMigrator, type IWidgetPersistValue, type IWidgetPlaceholderController, type IWidgetPlaceholderValues, type IWidgetProcess, type IWidgetProps, type IWidgetSortingIndicator, type IWidgetStaticListVariable, type IWidgetStaticVariable, type IWidgetStruct, type IWidgetTable, type IWidgetTableColumn, KeyNullableSchema, MarkdownMeasureSchema, MeasureValueSchema, NameNullableSchema, OuterAggregation, ParameterFromAggregationSchema, ParameterFromColumnSchema, ParameterFromDataModelSchema, ParameterFromDynamicListSchema, ParameterFromEditableTextValueSchema, ParameterFromEndEventSchema, ParameterFromEventSchema, ParameterFromFormulaSchema, ParameterFromManualInputSchema, ParameterFromStartEventSchema, ParameterFromStaticListSchema, ParameterFromVariableSchema, ProcessIndicatorSchema, ProcessIndicatorValueSchema, RangeSchema, SchemaRegistryReader, SettingsFilterSchema, SortDirectionSchema, SortOrderSchema, SortingValueSchema, type TAction, type TActionButtonsTypes, type TActionOnClickParameter, type TActionOpenView, type TActionTypes, type TActionValidator, type TActionsConfig, type TActionsOnClick, type TActivateConditionMode, type TAddButton, type TAddButtonProps, type TApiVersion, type TAutoUpdateMode, type TBoundedContentWithIndicator, type TCalculatorFilterMethods, type TClickHouseBaseTypes, type TColor, type TColorBase, type TColorMode, type TColorRule, type TColumnIndicatorValue, type TConditionalDimensionInHierarchy, type TContextMenu, type TContextMenuButton, type TContextMenuButtonActions, type TContextMenuButtonApply, type TContextMenuButtonClose, type TContextMenuButtonCustom, type TContextMenuButtonGroup, type TContextMenuButtonOptions, type TContextMenuList, type TContextMenuPositionUnit, type TContextMenuRow, type TControlType, type TControlUnion, type TControlsSpecMap, type TCustomAddButtonSelectOption, type TCustomControlFactories, type TCustomSelectTemplates, type TDataModelOption, type TDefineWidgetOptions, type TDimensionAggregationTemplateName, type TDimensionProcessFilterTimeUnit, type TDimensionTemplateNames, type TDisplayCondition, type TDisplayConditionMode, type TDisplayMode, type TDrawerPlacement, type TDurationTemplateName, type TDurationUnit, type TEmptyRecord, type TEventAppearances, type TEventMeasureTemplateNames, type TExtendedFormulaFilterValue, type TFiltrationAccessibility, type TFontWeight, type TFormatOrFormattingMode, type TFormulaFilterFieldKeys, type TGradientsSetValue, type TGroupLevelRecord, type THSLTuple, type THeightMode, type THintPlacement, type TIgnoreFilterMode, type TIndicatorType, type TLastTimeUnit, type TLaunchActionParams, type TLimitedColor, type TMarkdownDisplayMode, type TMeasureAddButtonSelectOption, type TMeasureAggregationTemplateName, type TMeasureInnerTemplateNames, type TMeasureTemplateNames, type TMigrateProcessor, type TMigrationStruct, type TOuterAggregation, type TOuterAggregationIf, type TParameterFromDataModel, type TProcessFilterNames, type TProcessIndicatorValue, type TRGBTuple, type TRecordAccessor, type TSchemaType, type TSchemaTypeForVersion, type TSelectChildOptions, type TSelectFetchNodes, type TSelectOptionTypes, type TSelectivePartial, type TSettingsFilter, type TSettingsOf, type TSettingsSchemaMetaKey, type TSimpleDataType, type TSimpleInputType, type TSortDirection, type TSortDirectionEnum, type TSortingMode, type TSortingValue, type TSortingValueModes, type TSystemRecordKey, type TTabsHorizontalAlignment, type TTransitionMeasureTemplateNames, type TUnitMode, type TUpdateSelection, type TValuePath, type TVersion, type TVersionedEnum, type TVersionedEnumValues, type TViewActionParameter, type TViewMode, type TViewOpenIn, type TWidgetActionInputMethod, type TWidgetActionParameter, type TWidgetContainer, type TWidgetDimensionData, type TWidgetDimensionUnion, type TWidgetFilterMode, type TWidgetFilterValue, type TWidgetFiltering, type TWidgetIgnoreFilterMode, type TWidgetIndicatorAggregationValue, type TWidgetIndicatorConversionValue, type TWidgetIndicatorDurationValue, type TWidgetIndicatorTimeValue, type TWidgetIndicatorType, type TWidgetIndicatorValueModes, type TWidgetLevelRecord, type TWidgetMeasureData, type TWidgetMigrateStruct, type TWidgetSortingValue, type TWidgetVariable, type TWidgetsPaletteValue, type TZod, VersionedEnum, VersionedSchemaFactory, ViewActionParameterSchema, ViewActionSchema, WidgetActionParameterSchema, WidgetActionSchema, WidgetColumnIndicatorSchema, WidgetDimensionHierarchySchema, WidgetDimensionInHierarchySchema, WidgetDimensionSchema, WidgetFilterModeSchema, WidgetIgnoreFilterModeSchema, WidgetIndicatorAggregationValueSchema, WidgetIndicatorConversionValueSchema, WidgetIndicatorDurationValueSchema, WidgetIndicatorFormulaValueSchema, WidgetIndicatorSchema, WidgetIndicatorTemplateValueSchema, WidgetIndicatorTimeValueSchema, WidgetMeasureAggregationValueSchema, WidgetMeasureSchema, WidgetPresetSettingsSchema, WidgetSortingIndicatorSchema, WidgetSortingValueSchema, apiVersion, apiVersions, applyIndexToArrayFormula, availableFormatsBySimpleType, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createEscaper, createAggregationTemplate as createMeasureAggregationTemplate, curlyBracketsContentPattern, dashboardLinkRegExp, defaultActionsConfig, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, doubleQuoteContentPattern, durationTemplates, escapeCurlyBracketLinkName, escapeDoubleQuoteLinkName, eventMeasureTemplateFormulas, extendWithMeta, fillTemplateSql, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getParentMeta, getProcessDimensionValueFormula, getRuleColor, getTransitionMeasureFormula, hasInMetaChain, hexToRgb, inheritDisplayConditionFromHierarchy, interpolateHexColor, isDimensionProcessFilter, isDimensionsHierarchy, isFormulaFilterValue, isValidColor, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSettingsFiltersToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureInnerTemplateFormulas, measureTemplateFormulas, omitWithMeta, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, themed, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, versionedEnumValues, workspaceLinkRegExp, zodEnumLike };
29164
+ export { ActionButtonSchema, ActionDrillDownSchema, ActionGoToURLSchema, ActionOnClickParameterSchema, ActionOpenInSchema, ActionOpenViewSchema, ActionRunScriptSchema, ActionSchema, ActionUpdateVariableSchema, ActionsOnClickSchema, AutoIdentifiedArrayItemSchema, BaseWidgetSettingsSchema, ColorAutoSchema, ColorBaseSchema, ColorByDimensionSchema, ColorDisabledSchema, ColorFormulaSchema, ColorGradientSchema, ColorRangesSchema, ColorRuleSchema, ColorSchema, ColorValuesSchema, ColoredValueSchema, ColumnIndicatorValueSchema, DimensionProcessFilterSchema, DimensionValueSchema, DisplayConditionSchema, EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionProcessFilterTimeUnit, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EExpectedFieldTypes, EFontWeight, EFormatOrFormattingMode, EFormulaFilterFieldKeys, EHeightMode, EIgnoreFilterMode, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureInnerTemplateNames, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESettingsSchemaMetaKey, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingMode, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIgnoreFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, ExtendedFormulaFilterValueSchema, FormatSchema, FormattingSchema, FormulaFilterValueSchema, FormulaNullableSchema, FormulaSchema, type IActionButton, type IActionDrillDown, type IActionGoToUrl, type IActionOnClickControl, type IActionRunScript, type IActionScript, type IActionUpdateVariable, type IAddButtonSelectOption, type IAddDurationOfTransitionFilter, type IAddPresenceOfEventFilter, type IAddPresenceOfTransitionFilter, type IAddRepetitionOfEventFilter, type IAutoIdentifiedArrayItem, type IBaseDimensionsAndMeasuresCalculator, type IBaseDimensionsAndMeasuresCalculatorInput, type IBaseDimensionsAndMeasuresCalculatorOutput, type IBaseWidgetSettings, type ICalculator, type ICalculatorDimensionInput, type ICalculatorDimensionOutput, type ICalculatorFactory, type ICalculatorFilter, type ICalculatorIndicatorInput, type ICalculatorIndicatorOutput, type ICalculatorMeasureInput, type ICalculatorMeasureOutput, type ICalculatorOptions, type ICollapseRecord, type IColorPickerControl, type IColoredValue, type ICommonDimensions, type ICommonMeasures, type ICommonState, type IControlProps, type IControlRecord, type ICustomAddButtonProps, type ICustomWidgetProps, type IDefinition, type IDimensionAddButtonProps, type IDimensionNesting, type IDimensionProcessFilter, type IDimensionSelection, type IDimensionSelectionByFormula, type IDisplayConditionControl, type IDisplayPredicate, type IDisplayRule, type IDivePanelDescription, type IDividerRecord, type IEdge, type IEventsColorControl, type IEventsPickerControl, type IExportColumnOrder, type IFillSettings, type IFilterControl, type IFormattingControl, type IFormattingTemplateControl, type IFormulaControl, type IFormulaFilterValue, type IGeneralCalculator, type IGeneralCalculatorExportInput, type IGeneralCalculatorInput, type IGeneralCalculatorOutput, type IGlobalContext, type IGradient, type IGraphElement, type IGroupSetDescription, type IGroupSetRecord, type IGroupSettings, type IHintTooltipProps, type IHistogramBin, type IHistogramCalculator, type IHistogramCalculatorInput, type IHistogramCalculatorOutput, type IHistoricalSchemaDefinition, type IIndicatorLink, type IInitialSettings, type IInputControl, type IInputMarkdownControl, type IInputNumberControl, type IInputRangeControl, type IInputTemplatedControl, type ILens, type ILifecycleRuntime, type ILifecycleRuntimeFactory, type IMarkdownMeasure, type IMeasureAddButtonProps, type IMigrateContext, type IPanelDescription, type IPanelDescriptionCreator, type IParameterFromAggregation, type IParameterFromColumn, type IParameterFromDynamicList, type IParameterFromEditableTextValue, type IParameterFromEndEvent, type IParameterFromEvent, type IParameterFromFormula, type IParameterFromManualInput, type IParameterFromStartEvent, type IParameterFromStaticList, type IParameterFromVariable, type IPieCalculator, type IPieCalculatorInput, type IPieCalculatorOutput, type IProcessEventFilterValue, type IProcessEventIndicator, type IProcessFilterPreviewParams, type IProcessGraphCalculator, type IProcessGraphCalculatorInput, type IProcessGraphCalculatorOutput, type IProcessIndicator, type IProcessTransitionFilterValue, type IProcessTransitionIndicator, type IRadioIconGroupControl, type IRange, type ISchemaContext, type ISchemaFactory, type ISelectBranchOption, type ISelectControl, type ISelectDividerOption, type ISelectGroupOption, type ISelectLeafOption, type ISelectNode, type ISelectOption, type ISelectSystemOption, type ISizeControl, type ISortOrder, type ISortingAddButtonProps, type ISortingControl, type IStagesFilterValue, type IStaticListLabeledOption, type ISwitchControl, type ITagSetControl, type ITheme, type ITwoLimitsCalculator, type ITwoLimitsCalculatorExportInput, type ITwoLimitsCalculatorInput, type ITwoLimitsCalculatorOutput, type ITypeCalculator, type ITypeCalculatorInput, type ITypeCalculatorOutput, type ITypeCalculatorOutputItem, type ITypedFormulaControl, type IVersionedEnumBuildParams, type IVertex, type IViewAction, type IViewContext, type IWidget, type IWidgetAction, type IWidgetColumnIndicator, type IWidgetColumnListVariable, type IWidgetDimension, type IWidgetDimensionHierarchy, type IWidgetDimensionInHierarchy, type IWidgetDynamicListVariable, type IWidgetEntity, type IWidgetFilter, type IWidgetFiltration, type IWidgetFormatting, type IWidgetIndicator, type IWidgetIndicatorAddButtonProps, type IWidgetManifest, type IWidgetMeasure, type IWidgetMigrator, type IWidgetPersistValue, type IWidgetPlaceholderController, type IWidgetPlaceholderValues, type IWidgetProcess, type IWidgetProps, type IWidgetSortingIndicator, type IWidgetStaticListVariable, type IWidgetStaticVariable, type IWidgetStruct, type IWidgetTable, type IWidgetTableColumn, KeyNullableSchema, MarkdownMeasureSchema, MeasureValueSchema, NameNullableSchema, OuterAggregation, ParameterFromAggregationSchema, ParameterFromColumnSchema, ParameterFromDataModelSchema, ParameterFromDynamicListSchema, ParameterFromEditableTextValueSchema, ParameterFromEndEventSchema, ParameterFromEventSchema, ParameterFromFormulaSchema, ParameterFromManualInputSchema, ParameterFromStartEventSchema, ParameterFromStaticListSchema, ParameterFromVariableSchema, ProcessIndicatorSchema, ProcessIndicatorValueSchema, RangeSchema, SchemaRegistryReader, SettingsFilterSchema, SortDirectionSchema, SortOrderSchema, SortingValueSchema, type TAction, type TActionButtonsTypes, type TActionOnClickParameter, type TActionOpenView, type TActionTypes, type TActionValidator, type TActionsConfig, type TActionsOnClick, type TActivateConditionMode, type TAddButton, type TAddButtonProps, type TApiVersion, type TAutoUpdateMode, type TBoundedContentWithIndicator, type TCalculatorFilterMethods, type TClickHouseBaseTypes, type TColor, type TColorBase, type TColorMode, type TColorRule, type TColumnIndicatorValue, type TConditionalDimensionInHierarchy, type TContextMenu, type TContextMenuButton, type TContextMenuButtonActions, type TContextMenuButtonApply, type TContextMenuButtonClose, type TContextMenuButtonCustom, type TContextMenuButtonGroup, type TContextMenuButtonOptions, type TContextMenuList, type TContextMenuPositionUnit, type TContextMenuRow, type TControlType, type TControlUnion, type TControlsSpecMap, type TCustomAddButtonSelectOption, type TCustomControlFactories, type TCustomSelectTemplates, type TDataModelOption, type TDefineWidgetOptions, type TDimensionAggregationTemplateName, type TDimensionProcessFilterTimeUnit, type TDimensionTemplateNames, type TDimensionWithNesting, type TDisplayCondition, type TDisplayConditionMode, type TDisplayMode, type TDrawerPlacement, type TDurationTemplateName, type TDurationUnit, type TEmptyRecord, type TEventAppearances, type TEventMeasureTemplateNames, type TExtendedFormulaFilterValue, type TFiltrationAccessibility, type TFontWeight, type TFormatOrFormattingMode, type TFormulaFilterFieldKeys, type TGradientsSetValue, type TGroupLevelRecord, type THSLTuple, type THeightMode, type THintPlacement, type TIgnoreFilterMode, type TIndicatorType, type TLastTimeUnit, type TLaunchActionParams, type TLimitedColor, type TMarkdownDisplayMode, type TMeasureAddButtonSelectOption, type TMeasureAggregationTemplateName, type TMeasureInnerTemplateNames, type TMeasureTemplateNames, type TMigrateProcessor, type TMigrationStruct, type TOuterAggregation, type TOuterAggregationIf, type TParameterFromDataModel, type TProcessFilterNames, type TProcessIndicatorValue, type TRGBTuple, type TRecordAccessor, type TSchemaType, type TSchemaTypeForVersion, type TSelectChildOptions, type TSelectFetchNodes, type TSelectOptionTypes, type TSelectivePartial, type TSettingsFilter, type TSettingsOf, type TSettingsSchemaMetaKey, type TSimpleDataType, type TSimpleInputType, type TSlicedDimension, type TSortDirection, type TSortDirectionEnum, type TSortingMode, type TSortingValue, type TSortingValueModes, type TSystemRecordKey, type TTabsHorizontalAlignment, type TTransitionMeasureTemplateNames, type TUnitMode, type TUpdateSelection, type TValuePath, type TVersion, type TVersionedEnum, type TVersionedEnumValues, type TViewActionParameter, type TViewMode, type TViewOpenIn, type TWidgetActionInputMethod, type TWidgetActionParameter, type TWidgetContainer, type TWidgetDimensionData, type TWidgetDimensionUnion, type TWidgetDimensionWithNesting, type TWidgetFilterMode, type TWidgetFilterValue, type TWidgetFiltering, type TWidgetIgnoreFilterMode, type TWidgetIndicatorAggregationValue, type TWidgetIndicatorConversionValue, type TWidgetIndicatorDurationValue, type TWidgetIndicatorTimeValue, type TWidgetIndicatorType, type TWidgetIndicatorValueModes, type TWidgetLevelRecord, type TWidgetMeasureData, type TWidgetMigrateStruct, type TWidgetSortingValue, type TWidgetVariable, type TWidgetsPaletteValue, type TZod, VersionedEnum, VersionedSchemaFactory, ViewActionParameterSchema, ViewActionSchema, WidgetActionParameterSchema, WidgetActionSchema, WidgetColumnIndicatorSchema, WidgetDimensionHierarchySchema, WidgetDimensionInHierarchySchema, WidgetDimensionSchema, WidgetFilterModeSchema, WidgetIgnoreFilterModeSchema, WidgetIndicatorAggregationValueSchema, WidgetIndicatorConversionValueSchema, WidgetIndicatorDurationValueSchema, WidgetIndicatorFormulaValueSchema, WidgetIndicatorSchema, WidgetIndicatorTemplateValueSchema, WidgetIndicatorTimeValueSchema, WidgetMeasureAggregationValueSchema, WidgetMeasureSchema, WidgetPresetSettingsSchema, WidgetSortingIndicatorSchema, WidgetSortingValueSchema, apiVersion, apiVersions, applyIndexToArrayFormula, availableFormatsBySimpleType, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createEscaper, createAggregationTemplate as createMeasureAggregationTemplate, curlyBracketsContentPattern, dashboardLinkRegExp, defaultActionsConfig, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, doubleQuoteContentPattern, durationTemplates, escapeCurlyBracketLinkName, escapeDoubleQuoteLinkName, eventMeasureTemplateFormulas, extendWithMeta, fillTemplateSql, findDimensionsForNestingQuery, findMatchedFilter, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDimensionSliceIndex, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getParentMeta, getProcessDimensionValueFormula, getRuleColor, getSlicedDimension, getSlicedDimensionByFilters, getSlicedDimensionFormula, getTransitionMeasureFormula, hasInMetaChain, hexToRgb, inheritDisplayConditionFromHierarchy, interpolateHexColor, isDimensionProcessFilter, isDimensionsHierarchy, isFormulaFilterValue, isNestingDimension, isValidColor, mapDimensionToInput, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSettingsFiltersToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureInnerTemplateFormulas, measureTemplateFormulas, omitWithMeta, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, replaceHierarchiesWithSlicedDimension, replaceHierarchiesWithSlicedDimensions, selectDimensionFromHierarchy, selectSlicedDimensionFromHierarchy, themed, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, versionedEnumValues, workspaceLinkRegExp, zodEnumLike };
package/dist/index.esm.js CHANGED
@@ -408,6 +408,24 @@ var compactMap = function (items, f) {
408
408
  var isNil = function (value) {
409
409
  return value === null || value === undefined;
410
410
  };
411
+ function omit(obj, keys) {
412
+ var e_1, _a;
413
+ var newObj = __assign({}, obj);
414
+ try {
415
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
416
+ var key = keys_1_1.value;
417
+ delete newObj[key];
418
+ }
419
+ }
420
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
421
+ finally {
422
+ try {
423
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
424
+ }
425
+ finally { if (e_1) throw e_1.error; }
426
+ }
427
+ return newObj;
428
+ }
411
429
  function memoize(fn) {
412
430
  var cache = new Map();
413
431
  return function (arg) {
@@ -3333,8 +3351,158 @@ function mapMeasuresToInputs(measures, variables, addFormulas) {
3333
3351
  return compactMap(measures, function (measure) { return mapMeasureToInput(measure, variables, addFormulas); });
3334
3352
  }
3335
3353
 
3354
+ var isFormulaWithSliceGuard = function (value) {
3355
+ return "filteringMethod" in value && "formula" in value;
3356
+ };
3357
+ function isNestingDimension(indicator) {
3358
+ return (!isDimensionsHierarchy(indicator) &&
3359
+ parseClickHouseType(indicator.dbDataType).containers.includes("Array"));
3360
+ }
3361
+ function findMatchedFilter(filterValues, dimension) {
3362
+ var dimensionFormula = getDimensionFormula(dimension);
3363
+ return filterValues.findLast(function (filterValue) {
3364
+ if (!isFormulaWithSliceGuard(filterValue)) {
3365
+ return false;
3366
+ }
3367
+ var isFormulaMatched = filterValue.formula === dimensionFormula;
3368
+ if (dimension.arrayNesting) {
3369
+ return isFormulaMatched && filterValue.sliceIndex;
3370
+ }
3371
+ return isFormulaMatched;
3372
+ });
3373
+ }
3374
+ function calculateSelectionIndex(dimension, hierarchyDimensions, index, dimensionMaxNestingMap, filterSliceIndex) {
3375
+ var correctIndex = index + 1;
3376
+ if (filterSliceIndex) {
3377
+ var maxNestingDepth = Number(dimensionMaxNestingMap === null || dimensionMaxNestingMap === void 0 ? void 0 : dimensionMaxNestingMap.get(String(dimension.id))) || 0;
3378
+ var isBelowMaxDepth = filterSliceIndex < maxNestingDepth;
3379
+ var isNestingPending = dimension.arrayNesting && !dimensionMaxNestingMap;
3380
+ correctIndex = isBelowMaxDepth || isNestingPending ? index : index + 1;
3381
+ }
3382
+ return Math.min(correctIndex, hierarchyDimensions.length - 1);
3383
+ }
3384
+ var minNestingIndex = 1;
3385
+ function getDimensionSliceIndex(dimensionMaxNestingMap, filterSliceIndex, checkedValuesLength, dimensionId) {
3386
+ if (!filterSliceIndex) {
3387
+ return minNestingIndex;
3388
+ }
3389
+ var maxNestingDepth = typeof dimensionId === "number" && Number(dimensionMaxNestingMap === null || dimensionMaxNestingMap === void 0 ? void 0 : dimensionMaxNestingMap.get(String(dimensionId)));
3390
+ var isFilterSliceIndexMaxNesting = filterSliceIndex && maxNestingDepth && filterSliceIndex >= maxNestingDepth;
3391
+ if (!dimensionMaxNestingMap || checkedValuesLength > 1 || isFilterSliceIndexMaxNesting) {
3392
+ return filterSliceIndex;
3393
+ }
3394
+ if (checkedValuesLength === 1) {
3395
+ return filterSliceIndex + 1;
3396
+ }
3397
+ return minNestingIndex;
3398
+ }
3399
+ function getSlicedDimension(dimension, sliceIndex) {
3400
+ return __assign(__assign({}, dimension), { sliceIndex: sliceIndex });
3401
+ }
3402
+ function selectSlicedDimensionFromHierarchy(hierarchy, widgetFilterValues, dimensionMaxNestingMap) {
3403
+ var _a;
3404
+ var hierarchyDimensions = hierarchy.hierarchyDimensions;
3405
+ for (var i = hierarchyDimensions.length - 1; i >= 0; i--) {
3406
+ var dimension = hierarchyDimensions[i];
3407
+ if (!dimension) {
3408
+ continue;
3409
+ }
3410
+ var displayedDimension = inheritDisplayConditionFromHierarchy(dimension, hierarchy);
3411
+ var matchedFilter = findMatchedFilter(widgetFilterValues, displayedDimension);
3412
+ if (!matchedFilter || !isFormulaWithSliceGuard(matchedFilter)) {
3413
+ continue;
3414
+ }
3415
+ var checkedValuesLength = (_a = matchedFilter.checkedValues) === null || _a === void 0 ? void 0 : _a.length;
3416
+ if (checkedValuesLength === undefined) {
3417
+ continue;
3418
+ }
3419
+ var filterSliceIndex = matchedFilter.sliceIndex;
3420
+ var selectionIndex = checkedValuesLength > 1
3421
+ ? i
3422
+ : calculateSelectionIndex(displayedDimension, hierarchyDimensions, i, dimensionMaxNestingMap, filterSliceIndex);
3423
+ var currentDimension = hierarchyDimensions[selectionIndex];
3424
+ if (!currentDimension) {
3425
+ continue;
3426
+ }
3427
+ var displayedCurrentDimension = inheritDisplayConditionFromHierarchy(currentDimension, hierarchy);
3428
+ var dimensionSliceIndex = (displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.arrayNesting)
3429
+ ? getDimensionSliceIndex(dimensionMaxNestingMap, displayedDimension.id === (displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.id) ? filterSliceIndex : undefined, checkedValuesLength, displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.id)
3430
+ : undefined;
3431
+ return getSlicedDimension(displayedCurrentDimension, dimensionSliceIndex);
3432
+ }
3433
+ var activeDimension = hierarchyDimensions.at(0);
3434
+ if (!activeDimension) {
3435
+ return;
3436
+ }
3437
+ var displayedActiveDimension = inheritDisplayConditionFromHierarchy(activeDimension, hierarchy);
3438
+ var sliceIndex = (displayedActiveDimension === null || displayedActiveDimension === void 0 ? void 0 : displayedActiveDimension.arrayNesting) ? minNestingIndex : undefined;
3439
+ return getSlicedDimension(displayedActiveDimension, sliceIndex);
3440
+ }
3441
+ function getSlicedDimensionByFilters(dimension, widgetFilters, dimensionMaxNestingMap) {
3442
+ var _a, _b;
3443
+ if (!dimension.arrayNesting) {
3444
+ return dimension;
3445
+ }
3446
+ var matchedFilter = findMatchedFilter(widgetFilters, dimension);
3447
+ if (!matchedFilter || !isFormulaWithSliceGuard(matchedFilter)) {
3448
+ return getSlicedDimension(dimension, 1);
3449
+ }
3450
+ var dimensionSliceIndex = getDimensionSliceIndex(dimensionMaxNestingMap, matchedFilter.sliceIndex, (_b = (_a = matchedFilter.checkedValues) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, dimension.id);
3451
+ return getSlicedDimension(dimension, dimensionSliceIndex);
3452
+ }
3453
+ var getSlicedDimensionFormula = function (dimension) {
3454
+ var dimensionFormula = getDimensionFormula(dimension);
3455
+ var slicedDimensionFormula = dimension.sliceIndex
3456
+ ? applyIndexToArrayFormula(dimensionFormula, dimension.sliceIndex)
3457
+ : dimensionFormula;
3458
+ return { slicedDimensionFormula: slicedDimensionFormula, dimensionFormula: dimensionFormula };
3459
+ };
3460
+ var replaceHierarchiesWithSlicedDimension = function (dimension, widgetFilters, dimensionMaxNestingMap) {
3461
+ if (isDimensionsHierarchy(dimension)) {
3462
+ var slicedDimension = selectSlicedDimensionFromHierarchy(dimension, widgetFilters, dimensionMaxNestingMap);
3463
+ if (!slicedDimension) {
3464
+ return;
3465
+ }
3466
+ var displayedIndicator = __assign(__assign({}, slicedDimension), { displayCondition: dimension.displayCondition });
3467
+ return getSlicedDimension(displayedIndicator, slicedDimension === null || slicedDimension === void 0 ? void 0 : slicedDimension.sliceIndex);
3468
+ }
3469
+ return getSlicedDimensionByFilters(dimension, widgetFilters, dimensionMaxNestingMap);
3470
+ };
3471
+ var replaceHierarchiesWithSlicedDimensions = function (dimensions, widgetFilters, dimensionMaxNestingMap) {
3472
+ return compactMap(dimensions, function (dimension) {
3473
+ return replaceHierarchiesWithSlicedDimension(dimension, widgetFilters, dimensionMaxNestingMap);
3474
+ });
3475
+ };
3476
+ var findDimensionsForNestingQuery = function (dimensions, widgetFilters) {
3477
+ var slicedDimensions = replaceHierarchiesWithSlicedDimensions(dimensions, widgetFilters);
3478
+ return slicedDimensions.filter(function (dimension) {
3479
+ var _a, _b;
3480
+ if (!(dimension === null || dimension === void 0 ? void 0 : dimension.arrayNesting)) {
3481
+ return false;
3482
+ }
3483
+ var dimensionFormula = getDimensionFormula(dimension);
3484
+ var lastFilterByDimension = widgetFilters.findLast(function (filterValue) {
3485
+ if (!isFormulaWithSliceGuard(filterValue) || !filterValue.sliceIndex) {
3486
+ return false;
3487
+ }
3488
+ return (filterValue.formula === dimensionFormula && dimension.sliceIndex === filterValue.sliceIndex);
3489
+ });
3490
+ if (!lastFilterByDimension || !isFormulaWithSliceGuard(lastFilterByDimension)) {
3491
+ return false;
3492
+ }
3493
+ var filterSliceIndex = lastFilterByDimension.sliceIndex;
3494
+ var selectedFilterValues = (_b = (_a = lastFilterByDimension.checkedValues) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
3495
+ if (!filterSliceIndex || selectedFilterValues !== 1) {
3496
+ return false;
3497
+ }
3498
+ return true;
3499
+ });
3500
+ };
3501
+
3336
3502
  function mapDimensionToInput(dimension, variables) {
3337
- var formula = getDimensionFormula(dimension);
3503
+ var formula = dimension.sliceIndex !== undefined
3504
+ ? getSlicedDimensionFormula(dimension).slicedDimensionFormula
3505
+ : getDimensionFormula(dimension);
3338
3506
  if (!formula) {
3339
3507
  return null;
3340
3508
  }
@@ -3515,9 +3683,9 @@ var getDefaultSortOrders = function (_a) {
3515
3683
  };
3516
3684
  function mapSortingToInputs(_a) {
3517
3685
  var _b;
3518
- var settings = _a.settings, variables = _a.variables, filters = _a.filters, getIndicatorType = _a.getIndicatorType;
3686
+ var settings = _a.settings, variables = _a.variables, filters = _a.filters, widgetFilters = _a.widgetFilters, getIndicatorType = _a.getIndicatorType, dimensionMaxNestingMap = _a.dimensionMaxNestingMap;
3519
3687
  var sortOrder = compactMap((_b = settings["sorting"]) !== null && _b !== void 0 ? _b : [], function (_a) {
3520
- var _b;
3688
+ var _b, _c;
3521
3689
  var direction = _a.direction, value = _a.value;
3522
3690
  if (value.mode === ESortingValueModes.FORMULA) {
3523
3691
  return value.formula
@@ -3530,6 +3698,21 @@ function mapSortingToInputs(_a) {
3530
3698
  return;
3531
3699
  }
3532
3700
  if (getIndicatorType(value.group, indicator) === EWidgetIndicatorType.DIMENSION) {
3701
+ if (dimensionMaxNestingMap !== undefined) {
3702
+ var slicedDimension = replaceHierarchiesWithSlicedDimension(indicator, widgetFilters !== null && widgetFilters !== void 0 ? widgetFilters : [], dimensionMaxNestingMap);
3703
+ if (!slicedDimension ||
3704
+ !checkDisplayCondition(slicedDimension.displayCondition, variables)) {
3705
+ return;
3706
+ }
3707
+ return {
3708
+ formula: getSlicedDimensionFormula(slicedDimension).slicedDimensionFormula,
3709
+ direction: direction,
3710
+ dbDataType: slicedDimension.dbDataType,
3711
+ displayCondition: ((_b = slicedDimension.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
3712
+ ? slicedDimension.displayCondition.formula
3713
+ : undefined,
3714
+ };
3715
+ }
3533
3716
  var activeDimensions = (isDimensionsHierarchy(indicator)
3534
3717
  ? selectDimensionFromHierarchy(indicator, filters)
3535
3718
  : indicator);
@@ -3541,7 +3724,7 @@ function mapSortingToInputs(_a) {
3541
3724
  formula: formula,
3542
3725
  direction: direction,
3543
3726
  dbDataType: activeDimensions.dbDataType,
3544
- displayCondition: ((_b = indicator.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
3727
+ displayCondition: ((_c = indicator.displayCondition) === null || _c === void 0 ? void 0 : _c.mode) === EDisplayConditionMode.FORMULA
3545
3728
  ? indicator.displayCondition.formula
3546
3729
  : undefined,
3547
3730
  };
@@ -3751,19 +3934,46 @@ var updateSingleModeSelection = function (selection, formula, value) {
3751
3934
  replacedFilter: null,
3752
3935
  });
3753
3936
  };
3754
- var replaceFiltersBySelection = function (filters, selection) {
3937
+ var isWidgetFilter = function (filter) {
3938
+ return "filterValue" in filter;
3939
+ };
3940
+ var isCalculatorFilter = function (filter) { return "formula" in filter; };
3941
+ var getWidgetFilterFormula = function (_a) {
3942
+ var filterValue = _a.filterValue, preparedFilterValue = _a.preparedFilterValue;
3943
+ if (!("filteringMethod" in filterValue && "formula" in filterValue)) {
3944
+ return preparedFilterValue.formula;
3945
+ }
3946
+ var formulaFilterValue = filterValue;
3947
+ if (!formulaFilterValue.sliceIndex) {
3948
+ return formulaFilterValue.formula;
3949
+ }
3950
+ return applyIndexToArrayFormula(formulaFilterValue.formula, formulaFilterValue.sliceIndex);
3951
+ };
3952
+ var mergeWidgetFilter = function (filter, replacedFilter) {
3953
+ return __assign(__assign({}, filter), { preparedFilterValue: replacedFilter, filterValue: __assign(__assign(__assign({}, filter.filterValue), omit(replacedFilter, ["values"])), { checkedValues: replacedFilter.values }) });
3954
+ };
3955
+ function replaceFiltersBySelection(filters, selection) {
3755
3956
  return filters.reduce(function (acc, filter) {
3756
3957
  var _a;
3757
- var calculatorFilter = selection.has(filter.formula)
3758
- ? (_a = selection.get(filter.formula)) === null || _a === void 0 ? void 0 : _a.replacedFilter
3958
+ var isFilterFromWidget = isWidgetFilter(filter);
3959
+ var filterFormula = isFilterFromWidget ? getWidgetFilterFormula(filter) : filter.formula;
3960
+ if (!filterFormula) {
3961
+ return acc;
3962
+ }
3963
+ var currentFilter = selection.has(filterFormula)
3964
+ ? (_a = selection.get(filterFormula)) === null || _a === void 0 ? void 0 : _a.replacedFilter
3759
3965
  : filter;
3760
- if (!calculatorFilter) {
3966
+ if (!currentFilter) {
3761
3967
  return acc;
3762
3968
  }
3763
- acc.push(calculatorFilter);
3969
+ var hasReplacedCalculatorForWidget = selection.has(filterFormula) && isFilterFromWidget && isCalculatorFilter(currentFilter);
3970
+ var resolvedFilter = hasReplacedCalculatorForWidget
3971
+ ? mergeWidgetFilter(filter, currentFilter)
3972
+ : currentFilter;
3973
+ acc.push(resolvedFilter);
3764
3974
  return acc;
3765
3975
  }, []);
3766
- };
3976
+ }
3767
3977
 
3768
3978
  var colors = [
3769
3979
  "#222F3E",
@@ -4121,4 +4331,4 @@ var themed = function (scheme, selectThemeValue) {
4121
4331
  return scheme.meta((_a = {}, _a[ESettingsSchemaMetaKey.themeValue] = selectThemeValue, _a));
4122
4332
  };
4123
4333
 
4124
- export { ActionButtonSchema, ActionDrillDownSchema, ActionGoToURLSchema, ActionOnClickParameterSchema, ActionOpenInSchema, ActionOpenViewSchema, ActionRunScriptSchema, ActionSchema, ActionUpdateVariableSchema, ActionsOnClickSchema, AutoIdentifiedArrayItemSchema, BaseWidgetSettingsSchema, ColorAutoSchema, ColorBaseSchema, ColorByDimensionSchema, ColorDisabledSchema, ColorFormulaSchema, ColorGradientSchema, ColorRangesSchema, ColorRuleSchema, ColorSchema, ColorValuesSchema, ColoredValueSchema, ColumnIndicatorValueSchema, DimensionProcessFilterSchema, DimensionValueSchema, DisplayConditionSchema, EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionProcessFilterTimeUnit, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EExpectedFieldTypes, EFontWeight, EFormatOrFormattingMode, EFormulaFilterFieldKeys, EHeightMode, EIgnoreFilterMode, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureInnerTemplateNames, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESettingsSchemaMetaKey, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingMode, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIgnoreFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, ExtendedFormulaFilterValueSchema, FormatSchema, FormattingSchema, FormulaFilterValueSchema, FormulaNullableSchema, FormulaSchema, KeyNullableSchema, MarkdownMeasureSchema, MeasureValueSchema, NameNullableSchema, OuterAggregation, ParameterFromAggregationSchema, ParameterFromColumnSchema, ParameterFromDataModelSchema, ParameterFromDynamicListSchema, ParameterFromEditableTextValueSchema, ParameterFromEndEventSchema, ParameterFromEventSchema, ParameterFromFormulaSchema, ParameterFromManualInputSchema, ParameterFromStartEventSchema, ParameterFromStaticListSchema, ParameterFromVariableSchema, ProcessIndicatorSchema, ProcessIndicatorValueSchema, RangeSchema, SchemaRegistryReader, SettingsFilterSchema, SortDirectionSchema, SortOrderSchema, SortingValueSchema, VersionedEnum, VersionedSchemaFactory, ViewActionParameterSchema, ViewActionSchema, WidgetActionParameterSchema, WidgetActionSchema, WidgetColumnIndicatorSchema, WidgetDimensionHierarchySchema, WidgetDimensionInHierarchySchema, WidgetDimensionSchema, WidgetFilterModeSchema, WidgetIgnoreFilterModeSchema, WidgetIndicatorAggregationValueSchema, WidgetIndicatorConversionValueSchema, WidgetIndicatorDurationValueSchema, WidgetIndicatorFormulaValueSchema, WidgetIndicatorSchema, WidgetIndicatorTemplateValueSchema, WidgetIndicatorTimeValueSchema, WidgetMeasureAggregationValueSchema, WidgetMeasureSchema, WidgetPresetSettingsSchema, WidgetSortingIndicatorSchema, WidgetSortingValueSchema, apiVersion, apiVersions, applyIndexToArrayFormula, availableFormatsBySimpleType, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createEscaper, createAggregationTemplate as createMeasureAggregationTemplate, curlyBracketsContentPattern, dashboardLinkRegExp, defaultActionsConfig, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, doubleQuoteContentPattern, durationTemplates, escapeCurlyBracketLinkName, escapeDoubleQuoteLinkName, eventMeasureTemplateFormulas, extendWithMeta, fillTemplateSql, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getParentMeta, getProcessDimensionValueFormula, getRuleColor, getTransitionMeasureFormula, hasInMetaChain, hexToRgb, inheritDisplayConditionFromHierarchy, interpolateHexColor, isDimensionProcessFilter, isDimensionsHierarchy, isFormulaFilterValue, isValidColor, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSettingsFiltersToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureInnerTemplateFormulas, measureTemplateFormulas, omitWithMeta, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, themed, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, versionedEnumValues, workspaceLinkRegExp, zodEnumLike };
4334
+ export { ActionButtonSchema, ActionDrillDownSchema, ActionGoToURLSchema, ActionOnClickParameterSchema, ActionOpenInSchema, ActionOpenViewSchema, ActionRunScriptSchema, ActionSchema, ActionUpdateVariableSchema, ActionsOnClickSchema, AutoIdentifiedArrayItemSchema, BaseWidgetSettingsSchema, ColorAutoSchema, ColorBaseSchema, ColorByDimensionSchema, ColorDisabledSchema, ColorFormulaSchema, ColorGradientSchema, ColorRangesSchema, ColorRuleSchema, ColorSchema, ColorValuesSchema, ColoredValueSchema, ColumnIndicatorValueSchema, DimensionProcessFilterSchema, DimensionValueSchema, DisplayConditionSchema, EActionButtonsTypes, EActionTypes, EActivateConditionMode, EAutoUpdateMode, ECalculatorFilterMethods, EClickHouseBaseTypes, EColorMode, EControlType, ECustomSelectTemplates, EDataModelOption, EDimensionAggregationTemplateName, EDimensionProcessFilterTimeUnit, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationTemplateName, EDurationUnit, EEventAppearances, EEventMeasureTemplateNames, EExpectedFieldTypes, EFontWeight, EFormatOrFormattingMode, EFormulaFilterFieldKeys, EHeightMode, EIgnoreFilterMode, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureAggregationTemplateName, EMeasureInnerTemplateNames, EMeasureTemplateNames, EOuterAggregation, EProcessFilterNames, ESelectOptionTypes, ESettingsSchemaMetaKey, ESimpleDataType, ESimpleInputType, ESortDirection, ESortingMode, ESortingValueModes, ESystemRecordKey, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIgnoreFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, ExtendedFormulaFilterValueSchema, FormatSchema, FormattingSchema, FormulaFilterValueSchema, FormulaNullableSchema, FormulaSchema, KeyNullableSchema, MarkdownMeasureSchema, MeasureValueSchema, NameNullableSchema, OuterAggregation, ParameterFromAggregationSchema, ParameterFromColumnSchema, ParameterFromDataModelSchema, ParameterFromDynamicListSchema, ParameterFromEditableTextValueSchema, ParameterFromEndEventSchema, ParameterFromEventSchema, ParameterFromFormulaSchema, ParameterFromManualInputSchema, ParameterFromStartEventSchema, ParameterFromStaticListSchema, ParameterFromVariableSchema, ProcessIndicatorSchema, ProcessIndicatorValueSchema, RangeSchema, SchemaRegistryReader, SettingsFilterSchema, SortDirectionSchema, SortOrderSchema, SortingValueSchema, VersionedEnum, VersionedSchemaFactory, ViewActionParameterSchema, ViewActionSchema, WidgetActionParameterSchema, WidgetActionSchema, WidgetColumnIndicatorSchema, WidgetDimensionHierarchySchema, WidgetDimensionInHierarchySchema, WidgetDimensionSchema, WidgetFilterModeSchema, WidgetIgnoreFilterModeSchema, WidgetIndicatorAggregationValueSchema, WidgetIndicatorConversionValueSchema, WidgetIndicatorDurationValueSchema, WidgetIndicatorFormulaValueSchema, WidgetIndicatorSchema, WidgetIndicatorTemplateValueSchema, WidgetIndicatorTimeValueSchema, WidgetMeasureAggregationValueSchema, WidgetMeasureSchema, WidgetPresetSettingsSchema, WidgetSortingIndicatorSchema, WidgetSortingValueSchema, apiVersion, apiVersions, applyIndexToArrayFormula, availableFormatsBySimpleType, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, clearMultiLineComments, clearSingleLineComments, colors, conversionTemplate, convertFiltersToFormula, convertToFormulasChain, countExecutionsTemplate, createEscaper, createAggregationTemplate as createMeasureAggregationTemplate, curlyBracketsContentPattern, dashboardLinkRegExp, defaultActionsConfig, dimensionAggregationTemplates, dimensionTemplateFormulas, displayConditionTemplate, doubleQuoteContentPattern, durationTemplates, escapeCurlyBracketLinkName, escapeDoubleQuoteLinkName, eventMeasureTemplateFormulas, extendWithMeta, fillTemplateSql, findDimensionsForNestingQuery, findMatchedFilter, formulaFilterMethods, generateColumnFormula, getColorByIndex, getDefaultSortOrders, getDimensionFormula, getDimensionSliceIndex, getDisplayConditionFormula, getEventMeasureFormula, getMeasureFormula, getParentMeta, getProcessDimensionValueFormula, getRuleColor, getSlicedDimension, getSlicedDimensionByFilters, getSlicedDimensionFormula, getTransitionMeasureFormula, hasInMetaChain, hexToRgb, inheritDisplayConditionFromHierarchy, interpolateHexColor, isDimensionProcessFilter, isDimensionsHierarchy, isFormulaFilterValue, isNestingDimension, isValidColor, mapDimensionToInput, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSettingsFiltersToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureInnerTemplateFormulas, measureTemplateFormulas, omitWithMeta, parseClickHouseType, parseIndicatorLink, prepareConversionParams, prepareDimensionAggregationParams, prepareDurationParams, prepareFormulaForSql, prepareMeasureAggregationParams, prepareSortOrders, prepareTimeParams, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, replaceHierarchiesWithSlicedDimension, replaceHierarchiesWithSlicedDimensions, selectDimensionFromHierarchy, selectSlicedDimensionFromHierarchy, themed, timeTemplates, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateSingleModeSelection, versionedEnumValues, workspaceLinkRegExp, zodEnumLike };
package/dist/index.js CHANGED
@@ -409,6 +409,24 @@ var compactMap = function (items, f) {
409
409
  var isNil = function (value) {
410
410
  return value === null || value === undefined;
411
411
  };
412
+ function omit(obj, keys) {
413
+ var e_1, _a;
414
+ var newObj = __assign({}, obj);
415
+ try {
416
+ for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
417
+ var key = keys_1_1.value;
418
+ delete newObj[key];
419
+ }
420
+ }
421
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
422
+ finally {
423
+ try {
424
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
425
+ }
426
+ finally { if (e_1) throw e_1.error; }
427
+ }
428
+ return newObj;
429
+ }
412
430
  function memoize(fn) {
413
431
  var cache = new Map();
414
432
  return function (arg) {
@@ -3334,8 +3352,158 @@ function mapMeasuresToInputs(measures, variables, addFormulas) {
3334
3352
  return compactMap(measures, function (measure) { return mapMeasureToInput(measure, variables, addFormulas); });
3335
3353
  }
3336
3354
 
3355
+ var isFormulaWithSliceGuard = function (value) {
3356
+ return "filteringMethod" in value && "formula" in value;
3357
+ };
3358
+ function isNestingDimension(indicator) {
3359
+ return (!isDimensionsHierarchy(indicator) &&
3360
+ parseClickHouseType(indicator.dbDataType).containers.includes("Array"));
3361
+ }
3362
+ function findMatchedFilter(filterValues, dimension) {
3363
+ var dimensionFormula = getDimensionFormula(dimension);
3364
+ return filterValues.findLast(function (filterValue) {
3365
+ if (!isFormulaWithSliceGuard(filterValue)) {
3366
+ return false;
3367
+ }
3368
+ var isFormulaMatched = filterValue.formula === dimensionFormula;
3369
+ if (dimension.arrayNesting) {
3370
+ return isFormulaMatched && filterValue.sliceIndex;
3371
+ }
3372
+ return isFormulaMatched;
3373
+ });
3374
+ }
3375
+ function calculateSelectionIndex(dimension, hierarchyDimensions, index, dimensionMaxNestingMap, filterSliceIndex) {
3376
+ var correctIndex = index + 1;
3377
+ if (filterSliceIndex) {
3378
+ var maxNestingDepth = Number(dimensionMaxNestingMap === null || dimensionMaxNestingMap === void 0 ? void 0 : dimensionMaxNestingMap.get(String(dimension.id))) || 0;
3379
+ var isBelowMaxDepth = filterSliceIndex < maxNestingDepth;
3380
+ var isNestingPending = dimension.arrayNesting && !dimensionMaxNestingMap;
3381
+ correctIndex = isBelowMaxDepth || isNestingPending ? index : index + 1;
3382
+ }
3383
+ return Math.min(correctIndex, hierarchyDimensions.length - 1);
3384
+ }
3385
+ var minNestingIndex = 1;
3386
+ function getDimensionSliceIndex(dimensionMaxNestingMap, filterSliceIndex, checkedValuesLength, dimensionId) {
3387
+ if (!filterSliceIndex) {
3388
+ return minNestingIndex;
3389
+ }
3390
+ var maxNestingDepth = typeof dimensionId === "number" && Number(dimensionMaxNestingMap === null || dimensionMaxNestingMap === void 0 ? void 0 : dimensionMaxNestingMap.get(String(dimensionId)));
3391
+ var isFilterSliceIndexMaxNesting = filterSliceIndex && maxNestingDepth && filterSliceIndex >= maxNestingDepth;
3392
+ if (!dimensionMaxNestingMap || checkedValuesLength > 1 || isFilterSliceIndexMaxNesting) {
3393
+ return filterSliceIndex;
3394
+ }
3395
+ if (checkedValuesLength === 1) {
3396
+ return filterSliceIndex + 1;
3397
+ }
3398
+ return minNestingIndex;
3399
+ }
3400
+ function getSlicedDimension(dimension, sliceIndex) {
3401
+ return __assign(__assign({}, dimension), { sliceIndex: sliceIndex });
3402
+ }
3403
+ function selectSlicedDimensionFromHierarchy(hierarchy, widgetFilterValues, dimensionMaxNestingMap) {
3404
+ var _a;
3405
+ var hierarchyDimensions = hierarchy.hierarchyDimensions;
3406
+ for (var i = hierarchyDimensions.length - 1; i >= 0; i--) {
3407
+ var dimension = hierarchyDimensions[i];
3408
+ if (!dimension) {
3409
+ continue;
3410
+ }
3411
+ var displayedDimension = inheritDisplayConditionFromHierarchy(dimension, hierarchy);
3412
+ var matchedFilter = findMatchedFilter(widgetFilterValues, displayedDimension);
3413
+ if (!matchedFilter || !isFormulaWithSliceGuard(matchedFilter)) {
3414
+ continue;
3415
+ }
3416
+ var checkedValuesLength = (_a = matchedFilter.checkedValues) === null || _a === void 0 ? void 0 : _a.length;
3417
+ if (checkedValuesLength === undefined) {
3418
+ continue;
3419
+ }
3420
+ var filterSliceIndex = matchedFilter.sliceIndex;
3421
+ var selectionIndex = checkedValuesLength > 1
3422
+ ? i
3423
+ : calculateSelectionIndex(displayedDimension, hierarchyDimensions, i, dimensionMaxNestingMap, filterSliceIndex);
3424
+ var currentDimension = hierarchyDimensions[selectionIndex];
3425
+ if (!currentDimension) {
3426
+ continue;
3427
+ }
3428
+ var displayedCurrentDimension = inheritDisplayConditionFromHierarchy(currentDimension, hierarchy);
3429
+ var dimensionSliceIndex = (displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.arrayNesting)
3430
+ ? getDimensionSliceIndex(dimensionMaxNestingMap, displayedDimension.id === (displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.id) ? filterSliceIndex : undefined, checkedValuesLength, displayedCurrentDimension === null || displayedCurrentDimension === void 0 ? void 0 : displayedCurrentDimension.id)
3431
+ : undefined;
3432
+ return getSlicedDimension(displayedCurrentDimension, dimensionSliceIndex);
3433
+ }
3434
+ var activeDimension = hierarchyDimensions.at(0);
3435
+ if (!activeDimension) {
3436
+ return;
3437
+ }
3438
+ var displayedActiveDimension = inheritDisplayConditionFromHierarchy(activeDimension, hierarchy);
3439
+ var sliceIndex = (displayedActiveDimension === null || displayedActiveDimension === void 0 ? void 0 : displayedActiveDimension.arrayNesting) ? minNestingIndex : undefined;
3440
+ return getSlicedDimension(displayedActiveDimension, sliceIndex);
3441
+ }
3442
+ function getSlicedDimensionByFilters(dimension, widgetFilters, dimensionMaxNestingMap) {
3443
+ var _a, _b;
3444
+ if (!dimension.arrayNesting) {
3445
+ return dimension;
3446
+ }
3447
+ var matchedFilter = findMatchedFilter(widgetFilters, dimension);
3448
+ if (!matchedFilter || !isFormulaWithSliceGuard(matchedFilter)) {
3449
+ return getSlicedDimension(dimension, 1);
3450
+ }
3451
+ var dimensionSliceIndex = getDimensionSliceIndex(dimensionMaxNestingMap, matchedFilter.sliceIndex, (_b = (_a = matchedFilter.checkedValues) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, dimension.id);
3452
+ return getSlicedDimension(dimension, dimensionSliceIndex);
3453
+ }
3454
+ var getSlicedDimensionFormula = function (dimension) {
3455
+ var dimensionFormula = getDimensionFormula(dimension);
3456
+ var slicedDimensionFormula = dimension.sliceIndex
3457
+ ? applyIndexToArrayFormula(dimensionFormula, dimension.sliceIndex)
3458
+ : dimensionFormula;
3459
+ return { slicedDimensionFormula: slicedDimensionFormula, dimensionFormula: dimensionFormula };
3460
+ };
3461
+ var replaceHierarchiesWithSlicedDimension = function (dimension, widgetFilters, dimensionMaxNestingMap) {
3462
+ if (isDimensionsHierarchy(dimension)) {
3463
+ var slicedDimension = selectSlicedDimensionFromHierarchy(dimension, widgetFilters, dimensionMaxNestingMap);
3464
+ if (!slicedDimension) {
3465
+ return;
3466
+ }
3467
+ var displayedIndicator = __assign(__assign({}, slicedDimension), { displayCondition: dimension.displayCondition });
3468
+ return getSlicedDimension(displayedIndicator, slicedDimension === null || slicedDimension === void 0 ? void 0 : slicedDimension.sliceIndex);
3469
+ }
3470
+ return getSlicedDimensionByFilters(dimension, widgetFilters, dimensionMaxNestingMap);
3471
+ };
3472
+ var replaceHierarchiesWithSlicedDimensions = function (dimensions, widgetFilters, dimensionMaxNestingMap) {
3473
+ return compactMap(dimensions, function (dimension) {
3474
+ return replaceHierarchiesWithSlicedDimension(dimension, widgetFilters, dimensionMaxNestingMap);
3475
+ });
3476
+ };
3477
+ var findDimensionsForNestingQuery = function (dimensions, widgetFilters) {
3478
+ var slicedDimensions = replaceHierarchiesWithSlicedDimensions(dimensions, widgetFilters);
3479
+ return slicedDimensions.filter(function (dimension) {
3480
+ var _a, _b;
3481
+ if (!(dimension === null || dimension === void 0 ? void 0 : dimension.arrayNesting)) {
3482
+ return false;
3483
+ }
3484
+ var dimensionFormula = getDimensionFormula(dimension);
3485
+ var lastFilterByDimension = widgetFilters.findLast(function (filterValue) {
3486
+ if (!isFormulaWithSliceGuard(filterValue) || !filterValue.sliceIndex) {
3487
+ return false;
3488
+ }
3489
+ return (filterValue.formula === dimensionFormula && dimension.sliceIndex === filterValue.sliceIndex);
3490
+ });
3491
+ if (!lastFilterByDimension || !isFormulaWithSliceGuard(lastFilterByDimension)) {
3492
+ return false;
3493
+ }
3494
+ var filterSliceIndex = lastFilterByDimension.sliceIndex;
3495
+ var selectedFilterValues = (_b = (_a = lastFilterByDimension.checkedValues) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
3496
+ if (!filterSliceIndex || selectedFilterValues !== 1) {
3497
+ return false;
3498
+ }
3499
+ return true;
3500
+ });
3501
+ };
3502
+
3337
3503
  function mapDimensionToInput(dimension, variables) {
3338
- var formula = getDimensionFormula(dimension);
3504
+ var formula = dimension.sliceIndex !== undefined
3505
+ ? getSlicedDimensionFormula(dimension).slicedDimensionFormula
3506
+ : getDimensionFormula(dimension);
3339
3507
  if (!formula) {
3340
3508
  return null;
3341
3509
  }
@@ -3516,9 +3684,9 @@ var getDefaultSortOrders = function (_a) {
3516
3684
  };
3517
3685
  function mapSortingToInputs(_a) {
3518
3686
  var _b;
3519
- var settings = _a.settings, variables = _a.variables, filters = _a.filters, getIndicatorType = _a.getIndicatorType;
3687
+ var settings = _a.settings, variables = _a.variables, filters = _a.filters, widgetFilters = _a.widgetFilters, getIndicatorType = _a.getIndicatorType, dimensionMaxNestingMap = _a.dimensionMaxNestingMap;
3520
3688
  var sortOrder = compactMap((_b = settings["sorting"]) !== null && _b !== void 0 ? _b : [], function (_a) {
3521
- var _b;
3689
+ var _b, _c;
3522
3690
  var direction = _a.direction, value = _a.value;
3523
3691
  if (value.mode === ESortingValueModes.FORMULA) {
3524
3692
  return value.formula
@@ -3531,6 +3699,21 @@ function mapSortingToInputs(_a) {
3531
3699
  return;
3532
3700
  }
3533
3701
  if (getIndicatorType(value.group, indicator) === EWidgetIndicatorType.DIMENSION) {
3702
+ if (dimensionMaxNestingMap !== undefined) {
3703
+ var slicedDimension = replaceHierarchiesWithSlicedDimension(indicator, widgetFilters !== null && widgetFilters !== void 0 ? widgetFilters : [], dimensionMaxNestingMap);
3704
+ if (!slicedDimension ||
3705
+ !checkDisplayCondition(slicedDimension.displayCondition, variables)) {
3706
+ return;
3707
+ }
3708
+ return {
3709
+ formula: getSlicedDimensionFormula(slicedDimension).slicedDimensionFormula,
3710
+ direction: direction,
3711
+ dbDataType: slicedDimension.dbDataType,
3712
+ displayCondition: ((_b = slicedDimension.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
3713
+ ? slicedDimension.displayCondition.formula
3714
+ : undefined,
3715
+ };
3716
+ }
3534
3717
  var activeDimensions = (isDimensionsHierarchy(indicator)
3535
3718
  ? selectDimensionFromHierarchy(indicator, filters)
3536
3719
  : indicator);
@@ -3542,7 +3725,7 @@ function mapSortingToInputs(_a) {
3542
3725
  formula: formula,
3543
3726
  direction: direction,
3544
3727
  dbDataType: activeDimensions.dbDataType,
3545
- displayCondition: ((_b = indicator.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
3728
+ displayCondition: ((_c = indicator.displayCondition) === null || _c === void 0 ? void 0 : _c.mode) === EDisplayConditionMode.FORMULA
3546
3729
  ? indicator.displayCondition.formula
3547
3730
  : undefined,
3548
3731
  };
@@ -3752,19 +3935,46 @@ var updateSingleModeSelection = function (selection, formula, value) {
3752
3935
  replacedFilter: null,
3753
3936
  });
3754
3937
  };
3755
- var replaceFiltersBySelection = function (filters, selection) {
3938
+ var isWidgetFilter = function (filter) {
3939
+ return "filterValue" in filter;
3940
+ };
3941
+ var isCalculatorFilter = function (filter) { return "formula" in filter; };
3942
+ var getWidgetFilterFormula = function (_a) {
3943
+ var filterValue = _a.filterValue, preparedFilterValue = _a.preparedFilterValue;
3944
+ if (!("filteringMethod" in filterValue && "formula" in filterValue)) {
3945
+ return preparedFilterValue.formula;
3946
+ }
3947
+ var formulaFilterValue = filterValue;
3948
+ if (!formulaFilterValue.sliceIndex) {
3949
+ return formulaFilterValue.formula;
3950
+ }
3951
+ return applyIndexToArrayFormula(formulaFilterValue.formula, formulaFilterValue.sliceIndex);
3952
+ };
3953
+ var mergeWidgetFilter = function (filter, replacedFilter) {
3954
+ return __assign(__assign({}, filter), { preparedFilterValue: replacedFilter, filterValue: __assign(__assign(__assign({}, filter.filterValue), omit(replacedFilter, ["values"])), { checkedValues: replacedFilter.values }) });
3955
+ };
3956
+ function replaceFiltersBySelection(filters, selection) {
3756
3957
  return filters.reduce(function (acc, filter) {
3757
3958
  var _a;
3758
- var calculatorFilter = selection.has(filter.formula)
3759
- ? (_a = selection.get(filter.formula)) === null || _a === void 0 ? void 0 : _a.replacedFilter
3959
+ var isFilterFromWidget = isWidgetFilter(filter);
3960
+ var filterFormula = isFilterFromWidget ? getWidgetFilterFormula(filter) : filter.formula;
3961
+ if (!filterFormula) {
3962
+ return acc;
3963
+ }
3964
+ var currentFilter = selection.has(filterFormula)
3965
+ ? (_a = selection.get(filterFormula)) === null || _a === void 0 ? void 0 : _a.replacedFilter
3760
3966
  : filter;
3761
- if (!calculatorFilter) {
3967
+ if (!currentFilter) {
3762
3968
  return acc;
3763
3969
  }
3764
- acc.push(calculatorFilter);
3970
+ var hasReplacedCalculatorForWidget = selection.has(filterFormula) && isFilterFromWidget && isCalculatorFilter(currentFilter);
3971
+ var resolvedFilter = hasReplacedCalculatorForWidget
3972
+ ? mergeWidgetFilter(filter, currentFilter)
3973
+ : currentFilter;
3974
+ acc.push(resolvedFilter);
3765
3975
  return acc;
3766
3976
  }, []);
3767
- };
3977
+ }
3768
3978
 
3769
3979
  var colors = [
3770
3980
  "#222F3E",
@@ -4302,17 +4512,23 @@ exports.escapeDoubleQuoteLinkName = escapeDoubleQuoteLinkName;
4302
4512
  exports.eventMeasureTemplateFormulas = eventMeasureTemplateFormulas;
4303
4513
  exports.extendWithMeta = extendWithMeta;
4304
4514
  exports.fillTemplateSql = fillTemplateSql;
4515
+ exports.findDimensionsForNestingQuery = findDimensionsForNestingQuery;
4516
+ exports.findMatchedFilter = findMatchedFilter;
4305
4517
  exports.formulaFilterMethods = formulaFilterMethods;
4306
4518
  exports.generateColumnFormula = generateColumnFormula;
4307
4519
  exports.getColorByIndex = getColorByIndex;
4308
4520
  exports.getDefaultSortOrders = getDefaultSortOrders;
4309
4521
  exports.getDimensionFormula = getDimensionFormula;
4522
+ exports.getDimensionSliceIndex = getDimensionSliceIndex;
4310
4523
  exports.getDisplayConditionFormula = getDisplayConditionFormula;
4311
4524
  exports.getEventMeasureFormula = getEventMeasureFormula;
4312
4525
  exports.getMeasureFormula = getMeasureFormula;
4313
4526
  exports.getParentMeta = getParentMeta;
4314
4527
  exports.getProcessDimensionValueFormula = getProcessDimensionValueFormula;
4315
4528
  exports.getRuleColor = getRuleColor;
4529
+ exports.getSlicedDimension = getSlicedDimension;
4530
+ exports.getSlicedDimensionByFilters = getSlicedDimensionByFilters;
4531
+ exports.getSlicedDimensionFormula = getSlicedDimensionFormula;
4316
4532
  exports.getTransitionMeasureFormula = getTransitionMeasureFormula;
4317
4533
  exports.hasInMetaChain = hasInMetaChain;
4318
4534
  exports.hexToRgb = hexToRgb;
@@ -4321,7 +4537,9 @@ exports.interpolateHexColor = interpolateHexColor;
4321
4537
  exports.isDimensionProcessFilter = isDimensionProcessFilter;
4322
4538
  exports.isDimensionsHierarchy = isDimensionsHierarchy;
4323
4539
  exports.isFormulaFilterValue = isFormulaFilterValue;
4540
+ exports.isNestingDimension = isNestingDimension;
4324
4541
  exports.isValidColor = isValidColor;
4542
+ exports.mapDimensionToInput = mapDimensionToInput;
4325
4543
  exports.mapDimensionsToInputs = mapDimensionsToInputs;
4326
4544
  exports.mapEventMeasuresToInputs = mapEventMeasuresToInputs;
4327
4545
  exports.mapFormulaFilterToCalculatorInput = mapFormulaFilterToCalculatorInput;
@@ -4346,7 +4564,10 @@ exports.prepareValuesForSql = prepareValuesForSql;
4346
4564
  exports.replaceDisplayCondition = replaceDisplayCondition;
4347
4565
  exports.replaceFiltersBySelection = replaceFiltersBySelection;
4348
4566
  exports.replaceHierarchiesWithDimensions = replaceHierarchiesWithDimensions;
4567
+ exports.replaceHierarchiesWithSlicedDimension = replaceHierarchiesWithSlicedDimension;
4568
+ exports.replaceHierarchiesWithSlicedDimensions = replaceHierarchiesWithSlicedDimensions;
4349
4569
  exports.selectDimensionFromHierarchy = selectDimensionFromHierarchy;
4570
+ exports.selectSlicedDimensionFromHierarchy = selectSlicedDimensionFromHierarchy;
4350
4571
  exports.themed = themed;
4351
4572
  exports.timeTemplates = timeTemplates;
4352
4573
  exports.transitionMeasureTemplateFormulas = transitionMeasureTemplateFormulas;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infomaximum/widget-sdk",
3
- "version": "7.0.0-29",
3
+ "version": "7.0.0-30",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",