@infomaximum/widget-sdk 4.0.0-beta58 → 4.0.0-beta59

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/index.esm.js CHANGED
@@ -229,7 +229,7 @@ var EFormattingPresets;
229
229
  (function (EFormattingPresets) {
230
230
  //Общая группа шаблонов
231
231
  EFormattingPresets["AUTO"] = "AUTO";
232
- EFormattingPresets["TUNE"] = "TUNE";
232
+ EFormattingPresets["CUSTOM"] = "CUSTOM";
233
233
  //Группа шаблонов для формата DATE
234
234
  EFormattingPresets["DD/M/YYYY"] = "DD/M/YYYY";
235
235
  EFormattingPresets["DD-MM-YYYY"] = "DD-MM-YYYY";
@@ -473,22 +473,6 @@ var EWidgetFilterMode;
473
473
  EWidgetFilterMode["MULTI"] = "MULTI";
474
474
  EWidgetFilterMode["DISABLED"] = "DISABLED";
475
475
  })(EWidgetFilterMode || (EWidgetFilterMode = {}));
476
- var EColorMode;
477
- (function (EColorMode) {
478
- EColorMode["DISABLED"] = "DISABLED";
479
- EColorMode["FORMULA"] = "FORMULA";
480
- EColorMode["BASE"] = "BASE";
481
- EColorMode["GRADIENT"] = "GRADIENT";
482
- EColorMode["AUTO"] = "AUTO";
483
- EColorMode["RULE"] = "RULE";
484
- EColorMode["VALUES"] = "VALUES";
485
- EColorMode["BY_DIMENSION"] = "BY_DIMENSION";
486
- })(EColorMode || (EColorMode = {}));
487
- var EColorScope;
488
- (function (EColorScope) {
489
- EColorScope["WORKSPACE"] = "WORKSPACE";
490
- EColorScope["DASHBOARD"] = "DASHBOARD";
491
- })(EColorScope || (EColorScope = {}));
492
476
  var EMarkdownDisplayMode;
493
477
  (function (EMarkdownDisplayMode) {
494
478
  EMarkdownDisplayMode["NONE"] = "NONE";
@@ -551,9 +535,7 @@ var EWidgetIndicatorType;
551
535
  EWidgetIndicatorType["EVENT_INDICATOR"] = "EVENT_INDICATOR";
552
536
  EWidgetIndicatorType["TRANSITION_INDICATOR"] = "TRANSITION_INDICATOR";
553
537
  EWidgetIndicatorType["DIMENSION"] = "DIMENSION";
554
- EWidgetIndicatorType["DIMENSION_HIERARCHY"] = "DIMENSION_HIERARCHY";
555
538
  EWidgetIndicatorType["SORTING"] = "SORTING";
556
- EWidgetIndicatorType["CUSTOM"] = "CUSTOM";
557
539
  })(EWidgetIndicatorType || (EWidgetIndicatorType = {}));
558
540
  var EDbType;
559
541
  (function (EDbType) {
@@ -573,18 +555,8 @@ var ESortingValueModes;
573
555
  (function (ESortingValueModes) {
574
556
  /** Сортировка по формуле */
575
557
  ESortingValueModes["FORMULA"] = "FORMULA";
576
- /** Пункт "Количество" */
577
- ESortingValueModes["QUANTITY"] = "QUANTITY";
578
- /** @deprecated Для сортировки по иерархии используется режим DIMENSION_IN_WIDGET */
579
- ESortingValueModes["HIERARCHY"] = "HIERARCHY";
580
- /** Сортировка по мере виджета */
581
- ESortingValueModes["MEASURE_IN_WIDGET"] = "MEASURE_IN_WIDGET";
582
- /** Сортировка по разрезу(в т.ч. по иерархии) виджета */
583
- ESortingValueModes["DIMENSION_IN_WIDGET"] = "DIMENSION_IN_WIDGET";
584
- /** Сортировка по мере отчета */
585
- ESortingValueModes["IN_DASHBOARD"] = "IN_DASHBOARD";
586
- /** Сортировка по мере пространства */
587
- ESortingValueModes["IN_WORKSPACE"] = "IN_WORKSPACE";
558
+ /** Сортировка по показателю(разрезу или мере) виджета */
559
+ ESortingValueModes["IN_WIDGET"] = "IN_WIDGET";
588
560
  })(ESortingValueModes || (ESortingValueModes = {}));
589
561
  /** Тип показателя */
590
562
  var EIndicatorType;
@@ -606,8 +578,8 @@ var EIndicatorType;
606
578
  /** Пользовательская сортировка */
607
579
  EIndicatorType["USER_SORTING"] = "USER_SORTING";
608
580
  })(EIndicatorType || (EIndicatorType = {}));
609
- function isHierarchy(indicator) {
610
- return indicator.type === EWidgetIndicatorType.DIMENSION_HIERARCHY;
581
+ function isDimensionsHierarchy(indicator) {
582
+ return "hierarchyDimensions" in indicator;
611
583
  }
612
584
 
613
585
  var _a$3;
@@ -703,11 +675,11 @@ function getMeasureFormula(_a) {
703
675
  var _a$1;
704
676
  var EEventMeasureTemplateNames;
705
677
  (function (EEventMeasureTemplateNames) {
706
- EEventMeasureTemplateNames["count"] = "count";
678
+ EEventMeasureTemplateNames["eventsCount"] = "eventsCount";
707
679
  EEventMeasureTemplateNames["reworksCount"] = "reworksCount";
708
680
  })(EEventMeasureTemplateNames || (EEventMeasureTemplateNames = {}));
709
681
  var eventMeasureTemplateFormulas = (_a$1 = {},
710
- _a$1[EEventMeasureTemplateNames.count] = "count()",
682
+ _a$1[EEventMeasureTemplateNames.eventsCount] = "count()",
711
683
  _a$1[EEventMeasureTemplateNames.reworksCount] = "count() - uniqExact({caseCaseIdFormula})",
712
684
  _a$1);
713
685
  function getEventMeasureFormula(_a, process) {
@@ -728,11 +700,11 @@ function getEventMeasureFormula(_a, process) {
728
700
  var _a;
729
701
  var ETransitionMeasureTemplateNames;
730
702
  (function (ETransitionMeasureTemplateNames) {
731
- ETransitionMeasureTemplateNames["count"] = "count";
703
+ ETransitionMeasureTemplateNames["transitionsCount"] = "transitionsCount";
732
704
  ETransitionMeasureTemplateNames["medianTime"] = "medianTime";
733
705
  })(ETransitionMeasureTemplateNames || (ETransitionMeasureTemplateNames = {}));
734
706
  var transitionMeasureTemplateFormulas = (_a = {},
735
- _a[ETransitionMeasureTemplateNames.count] = "count()",
707
+ _a[ETransitionMeasureTemplateNames.transitionsCount] = "count()",
736
708
  _a[ETransitionMeasureTemplateNames.medianTime] = "medianExact(date_diff(second, begin({eventTimeFormula}), end({eventTimeFormula})))",
737
709
  _a);
738
710
  function getTransitionMeasureFormula(_a, process) {
@@ -750,6 +722,32 @@ function getTransitionMeasureFormula(_a, process) {
750
722
  return "";
751
723
  }
752
724
 
725
+ /**
726
+ * Регулярное выражение для поиска имени ссылки внутри формулы.
727
+ * Учитывает, что имя внутри формулы содержит экраны.
728
+ *
729
+ * Принцип работы:
730
+ * Пробовать следующие вхождения:
731
+ * - \\\\ - экранированный символ обратного слэша.
732
+ * - Иначе \\" - экранированный символ кавычки.
733
+ * - Иначе [^"] - любой символ кроме кавычки.
734
+ * Если встречается любой другой символ, то это закрывающая кавычка имени переменной.
735
+ */
736
+ var linkNameRegExp = "(?:\\\\\\\\|\\\\\"|[^\"])+";
737
+ var dashboardLinkRegExp = new RegExp("link: \"(".concat(linkNameRegExp, ")\"(?!\\.\"").concat(linkNameRegExp, "\")"), "g");
738
+ var workspaceLinkRegExp = new RegExp("link: \"(".concat(linkNameRegExp, ")\"\\.\"(").concat(linkNameRegExp, ")\""), "g");
739
+ var parseIndicatorLink = function (formula) {
740
+ var dashboardMatch = formula.match(dashboardLinkRegExp.source);
741
+ if (dashboardMatch) {
742
+ return { scopeName: null, indicatorName: dashboardMatch[1] };
743
+ }
744
+ var workspaceMatch = formula.match(workspaceLinkRegExp.source);
745
+ if (workspaceMatch) {
746
+ return { scopeName: workspaceMatch[1], indicatorName: workspaceMatch[2] };
747
+ }
748
+ return null;
749
+ };
750
+
753
751
  function mapMeasureToInput(measure, variables, addFormulas) {
754
752
  if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
755
753
  var mainFormula = getMeasureFormula(measure);
@@ -772,8 +770,7 @@ function mapMeasuresToInputs(measures, variables, addFormulas) {
772
770
  return compactMap(measures, function (measure) { return mapMeasureToInput(measure, variables, addFormulas); });
773
771
  }
774
772
 
775
- function mapDimensionToInput(dimension, variables, addFormulas) {
776
- if (addFormulas === void 0) { addFormulas = function () { return new Map(); }; }
773
+ function mapDimensionToInput(dimension, variables) {
777
774
  var formula = getDimensionFormula(dimension);
778
775
  if (!formula) {
779
776
  return null;
@@ -787,14 +784,11 @@ function mapDimensionToInput(dimension, variables, addFormulas) {
787
784
  dataType: dimension.dataType,
788
785
  hideEmpty: dimension.hideEmptyValues,
789
786
  displayConditionFormula: getDisplayConditionFormula(dimension.displayCondition),
790
- additionalFormulas: addFormulas(dimension),
791
787
  };
792
788
  }
793
789
  /** Конвертировать разрезы виджета во входы для вычислителя */
794
- function mapDimensionsToInputs(dimensions, variables, addFormulas) {
795
- return compactMap(dimensions, function (dimension) {
796
- return mapDimensionToInput(dimension, variables, addFormulas);
797
- });
790
+ function mapDimensionsToInputs(dimensions, variables) {
791
+ return compactMap(dimensions, function (dimension) { return mapDimensionToInput(dimension, variables); });
798
792
  }
799
793
 
800
794
  function mapTransitionMeasureToInput(indicator, process, variables, addFormulas) {
@@ -853,15 +847,45 @@ var ESortDirection;
853
847
  ESortDirection["DESC"] = "descend";
854
848
  })(ESortDirection || (ESortDirection = {}));
855
849
 
850
+ /**
851
+ * Выбрать активный разрез иерархии на основе активных фильтров.
852
+ * Принцип:
853
+ * Если к разрезу иерархии применяется INCLUDE-фильтр с одним значением - выбираем следующий за ним разрез
854
+ * Если к разрезу иерархии применяется INCLUDE-фильтр с несколькими значениями - выбираем данный разрез
855
+ */
856
+ function selectDimensionFromHierarchy(_a, filters) {
857
+ var hierarchyDimensions = _a.hierarchyDimensions;
858
+ var _loop_1 = function (i) {
859
+ var dimension = hierarchyDimensions[i];
860
+ // todo: widgets - возможно, стоит использовать Map фильтров для быстрого поиска
861
+ var matchedFilter = filters.find(function (_a) {
862
+ var formula = _a.formula, filteringMethod = _a.filteringMethod;
863
+ return formula === getDimensionFormula(dimension) &&
864
+ filteringMethod === ECalculatorFilterMethods.INCLUDE;
865
+ });
866
+ if (!matchedFilter) {
867
+ return "continue";
868
+ }
869
+ var selectionIndex = matchedFilter.values.length > 1 ? i : Math.min(i + 1, hierarchyDimensions.length - 1);
870
+ return { value: hierarchyDimensions[selectionIndex] };
871
+ };
872
+ for (var i = hierarchyDimensions.length - 1; i >= 0; i--) {
873
+ var state_1 = _loop_1(i);
874
+ if (typeof state_1 === "object")
875
+ return state_1.value;
876
+ }
877
+ return hierarchyDimensions[0];
878
+ }
879
+
856
880
  var getDefaultSortOrder = function (dimensions, measures) {
857
- /** Если есть условие отображения, то не делаем автосортировку */
881
+ /** Если есть условие отображения, то не делаем авто-сортировку */
858
882
  if (dimensions.some(function (dimension) {
859
883
  return dimension.displayCondition &&
860
884
  dimension.displayCondition.mode !== EDisplayConditionMode.DISABLED;
861
885
  })) {
862
886
  return [];
863
887
  }
864
- /** Если есть временной разрез, то автосортировка по первому такому разрезу (по возрастанию) */
888
+ /** Если есть временной разрез, то авто-сортировка по первому такому разрезу (по возрастанию) */
865
889
  var timeDimension = dimensions.find(function (dimension) {
866
890
  return dimension.format &&
867
891
  [
@@ -894,88 +918,69 @@ var getDefaultSortOrder = function (dimensions, measures) {
894
918
  }
895
919
  return [];
896
920
  };
897
- /**
898
- * Преобразовать объекты сортировок из settings виджета в sortOrders вычислителя
899
- * @param sortingIndicators объекты сортировок из settings виджета
900
- * @param dimensionsInOriginalOrder разрезы виджета (конкретный разрез будет браться по индексу)
901
- * @param measuresInOriginalOrder меры виджета (конкретная мера будет браться по индексу)
902
- * @returns
903
- */
904
- function mapSortingToInputs(sortingIndicators, dimensionsInOriginalOrder, measuresInOriginalOrder, variables, withDefaultSortOrder) {
905
- if (sortingIndicators === void 0) { sortingIndicators = []; }
906
- if (dimensionsInOriginalOrder === void 0) { dimensionsInOriginalOrder = []; }
907
- if (measuresInOriginalOrder === void 0) { measuresInOriginalOrder = []; }
908
- if (withDefaultSortOrder === void 0) { withDefaultSortOrder = true; }
909
- var sortOrder = compactMap(sortingIndicators, function (_a) {
921
+ function mapSortingToInputs(_a) {
922
+ var _b;
923
+ var settings = _a.settings, variables = _a.variables, filters = _a.filters, getIndicatorType = _a.getIndicatorType, _c = _a.withDefaultSortOrder, withDefaultSortOrder = _c === void 0 ? true : _c, _d = _a.sortableIndicatorsKeys, sortableIndicatorsKeys = _d === void 0 ? [] : _d;
924
+ var sortOrder = compactMap((_b = settings["sorting"]) !== null && _b !== void 0 ? _b : [], function (_a) {
910
925
  var _b;
911
- var value = _a.value, direction = _a.direction;
912
- if (value.mode === ESortingValueModes.FORMULA ||
913
- value.mode === ESortingValueModes.QUANTITY ||
914
- value.mode === ESortingValueModes.IN_DASHBOARD ||
915
- value.mode === ESortingValueModes.IN_WORKSPACE) {
926
+ var direction = _a.direction, value = _a.value;
927
+ if (value.mode === ESortingValueModes.FORMULA) {
916
928
  return value.formula ? { formula: value.formula, direction: direction } : undefined;
917
929
  }
918
- if (value.mode === ESortingValueModes.DIMENSION_IN_WIDGET ||
919
- value.mode === ESortingValueModes.HIERARCHY) {
920
- var dimension = dimensionsInOriginalOrder[value.index];
921
- if (!dimension) {
922
- return;
923
- }
924
- var formula = getDimensionFormula(dimension);
925
- if (!formula || !checkDisplayCondition(dimension.displayCondition, variables)) {
930
+ var indicatorsGroup = settings[value.group];
931
+ var indicator = indicatorsGroup === null || indicatorsGroup === void 0 ? void 0 : indicatorsGroup[value.index];
932
+ if (!indicator) {
933
+ return;
934
+ }
935
+ if (getIndicatorType(value.group, indicator) === EWidgetIndicatorType.DIMENSION) {
936
+ var activeDimensions = isDimensionsHierarchy(indicator)
937
+ ? selectDimensionFromHierarchy(indicator, filters)
938
+ : indicator;
939
+ var formula = activeDimensions && getDimensionFormula(activeDimensions);
940
+ if (!formula || !checkDisplayCondition(indicator.displayCondition, variables)) {
926
941
  return;
927
942
  }
928
943
  return {
929
- formula: getDimensionFormula(dimension),
944
+ formula: formula,
930
945
  direction: direction,
931
- displayCondition: ((_b = dimension.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
932
- ? dimension.displayCondition.formula
946
+ displayCondition: ((_b = indicator.displayCondition) === null || _b === void 0 ? void 0 : _b.mode) === EDisplayConditionMode.FORMULA
947
+ ? indicator.displayCondition.formula
933
948
  : undefined,
934
949
  };
935
950
  }
936
- if (value.mode === ESortingValueModes.MEASURE_IN_WIDGET) {
937
- var measure = measuresInOriginalOrder[value.index];
938
- return measure && { formula: getMeasureFormula(measure), direction: direction };
939
- }
951
+ return {
952
+ formula: getMeasureFormula(indicator),
953
+ direction: direction,
954
+ };
940
955
  });
941
- return withDefaultSortOrder && sortOrder.length === 0
942
- ? getDefaultSortOrder(dimensionsInOriginalOrder, measuresInOriginalOrder)
943
- : sortOrder;
944
- }
945
-
946
- /**
947
- * Выбрать активный разрез иерархии на основе активных фильтров.
948
- * Принцип:
949
- * Если к разрезу иерархии применяется INCLUDE-фильтр с одним значением - выбираем следующий за ним разрез
950
- * Если к разрезу иерархии применяется INCLUDE-фильтр с несколькими значениями - выбираем данный разрез
951
- */
952
- function selectDimensionFromHierarchy(_a, filters) {
953
- var dimensions = _a.dimensions;
954
- var _loop_1 = function (i) {
955
- var dimension = dimensions[i];
956
- // todo: widgets - возможно, стоит использовать Map фильтров для быстрого поиска
957
- var matchedFilter = filters.find(function (_a) {
958
- var formula = _a.formula, filteringMethod = _a.filteringMethod;
959
- return formula === getDimensionFormula(dimension) &&
960
- filteringMethod === ECalculatorFilterMethods.INCLUDE;
961
- });
962
- if (!matchedFilter) {
963
- return "continue";
964
- }
965
- var selectionIndex = matchedFilter.values.length > 1 ? i : Math.min(i + 1, dimensions.length - 1);
966
- return { value: dimensions[selectionIndex] };
967
- };
968
- for (var i = dimensions.length - 1; i >= 0; i--) {
969
- var state_1 = _loop_1(i);
970
- if (typeof state_1 === "object")
971
- return state_1.value;
956
+ if (sortOrder.length > 0) {
957
+ return sortOrder;
958
+ }
959
+ if (sortableIndicatorsKeys.length === 0 || withDefaultSortOrder === false) {
960
+ return [];
972
961
  }
973
- return dimensions[0];
962
+ var dimensions = [];
963
+ var measures = [];
964
+ sortableIndicatorsKeys.forEach(function (key) {
965
+ var indicatorsGroup = settings[key];
966
+ indicatorsGroup === null || indicatorsGroup === void 0 ? void 0 : indicatorsGroup.forEach(function (indicator) {
967
+ if (getIndicatorType(key, indicator) === EWidgetIndicatorType.DIMENSION) {
968
+ var activeDimensions = isDimensionsHierarchy(indicator)
969
+ ? selectDimensionFromHierarchy(indicator, filters)
970
+ : indicator;
971
+ activeDimensions && dimensions.push(activeDimensions);
972
+ }
973
+ else {
974
+ measures.push(indicator);
975
+ }
976
+ });
977
+ });
978
+ return getDefaultSortOrder(dimensions, measures);
974
979
  }
975
980
 
976
981
  var replaceHierarchiesWithDimensions = function (dimensions, filters) {
977
982
  return compactMap(dimensions, function (indicator) {
978
- if (isHierarchy(indicator)) {
983
+ if (isDimensionsHierarchy(indicator)) {
979
984
  var selectedDimension = selectDimensionFromHierarchy(indicator, filters);
980
985
  return (selectedDimension && replaceDisplayCondition(selectedDimension, indicator.displayCondition));
981
986
  }
@@ -1020,8 +1025,6 @@ var EControlType;
1020
1025
  EControlType["typedFormula"] = "typedFormula";
1021
1026
  EControlType["inputRange"] = "inputRange";
1022
1027
  EControlType["colorPicker"] = "colorPicker";
1023
- /** @deprecated - удалится в ближайшее время */
1024
- EControlType["filterMode"] = "filterMode";
1025
1028
  EControlType["displayCondition"] = "displayCondition";
1026
1029
  EControlType["eventsColor"] = "eventsColor";
1027
1030
  EControlType["inputMarkdown"] = "inputMarkdown";
@@ -1139,4 +1142,45 @@ var getLocalizedText = function (language, locObj, props) {
1139
1142
  return localization.getLocalized(locObj, props);
1140
1143
  };
1141
1144
 
1142
- export { EActionTypes, ECalculatorFilterMethods, EColorMode, EColorScope, EControlType, ECustomSelectTemplates, EDbType, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationUnit, EEventMeasureTemplateNames, EFontWeight, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureTemplateNames, EProcessFilterNames, ESelectOptionTypes, ESimpleDataType, ESortDirection, ESortingValueModes, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, dimensionTemplateFormulas, escapeSpecialCharacters, eventMeasureTemplateFormulas, fillTemplateString, formulaFilterMethods, generateColumnFormula, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getLocalizedText, getMeasureFormula, getTransitionMeasureFormula, isExecuteScriptActionValid, isFormulaFilterValue, isHierarchy, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureTemplateFormulas, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateMultiModeSelection, updateSingleModeSelection };
1145
+ var EColorMode;
1146
+ (function (EColorMode) {
1147
+ /** Окрашивание отключено */
1148
+ EColorMode["DISABLED"] = "DISABLED";
1149
+ /** Цвет каждого значения вычисляется по формуле */
1150
+ EColorMode["FORMULA"] = "FORMULA";
1151
+ /** Один цвет для всех значений */
1152
+ EColorMode["BASE"] = "BASE";
1153
+ /** Окрашивание каждого значения по градиенту относительно минимального и максимального значений */
1154
+ EColorMode["GRADIENT"] = "GRADIENT";
1155
+ /** Использовать автоматический цвет: по умолчанию определяется порядковым номером показателя */
1156
+ EColorMode["AUTO"] = "AUTO";
1157
+ /** Использовать цвет из правила отображения (в правиле отображения рекурсивно определен цвет) */
1158
+ EColorMode["RULE"] = "RULE";
1159
+ /** Задать цвет конкретным значениям разреза */
1160
+ EColorMode["VALUES"] = "VALUES";
1161
+ /** Задать цвет конкретным значениям общего разреза. Режим используется только для настроек правила отображения */
1162
+ EColorMode["BY_DIMENSION"] = "BY_DIMENSION";
1163
+ })(EColorMode || (EColorMode = {}));
1164
+ var getRuleColor = function (ruleFormula, globalContext) {
1165
+ var _a, _b;
1166
+ var link = parseIndicatorLink(ruleFormula);
1167
+ if (!link) {
1168
+ return;
1169
+ }
1170
+ var _c = link.scopeName, scopeName = _c === void 0 ? null : _c, ruleName = link.indicatorName;
1171
+ var rulesByScope = isNil(scopeName)
1172
+ ? globalContext.reportDisplayRules
1173
+ : (_a = globalContext.workspaceDisplayRules) === null || _a === void 0 ? void 0 : _a.get(scopeName);
1174
+ return (_b = rulesByScope === null || rulesByScope === void 0 ? void 0 : rulesByScope.get(ruleName)) === null || _b === void 0 ? void 0 : _b.color;
1175
+ };
1176
+ var isValidColor = function (color, globalContext) {
1177
+ if (color.mode === EColorMode.RULE) {
1178
+ return !color.formula || Boolean(getRuleColor(color.formula, globalContext));
1179
+ }
1180
+ if (color.mode === EColorMode.VALUES) {
1181
+ return color.items.every(function (item) { return isValidColor(item.color, globalContext); });
1182
+ }
1183
+ return true;
1184
+ };
1185
+
1186
+ export { EActionTypes, ECalculatorFilterMethods, EColorMode, EControlType, ECustomSelectTemplates, EDbType, EDimensionTemplateNames, EDisplayConditionMode, EDrawerPlacement, EDurationUnit, EEventMeasureTemplateNames, EFontWeight, EFormatTypes, EFormattingPresets, EFormulaFilterFieldKeys, EIndicatorType, ELastTimeUnit, EMarkdownDisplayMode, EMeasureTemplateNames, EProcessFilterNames, ESelectOptionTypes, ESimpleDataType, ESortDirection, ESortingValueModes, ETransitionMeasureTemplateNames, EUnitMode, EViewMode, EViewOpenIn, EWidgetActionInputMethod, EWidgetFilterMode, EWidgetIndicatorType, EWidgetIndicatorValueModes, bindContentWithIndicator, bindContentsWithIndicators, checkDisplayCondition, dashboardLinkRegExp, dimensionTemplateFormulas, escapeSpecialCharacters, eventMeasureTemplateFormulas, fillTemplateString, formulaFilterMethods, generateColumnFormula, getDimensionFormula, getDisplayConditionFormula, getEventMeasureFormula, getLocalizedText, getMeasureFormula, getRuleColor, getTransitionMeasureFormula, isDimensionsHierarchy, isExecuteScriptActionValid, isFormulaFilterValue, isValidColor, linkNameRegExp, mapDimensionsToInputs, mapEventMeasuresToInputs, mapFormulaFilterToCalculatorInput, mapFormulaFiltersToInputs, mapMeasuresToInputs, mapSortingToInputs, mapTransitionMeasuresToInputs, measureTemplateFormulas, parseIndicatorLink, prepareValuesForSql, replaceDisplayCondition, replaceFiltersBySelection, replaceHierarchiesWithDimensions, selectDimensionFromHierarchy, transitionMeasureTemplateFormulas, unescapeSpecialCharacters, updateDefaultModeSelection, updateMultiModeSelection, updateSingleModeSelection, workspaceLinkRegExp };