{"version":3,"file":"utils-Dq3w5Icc.cjs","sources":["../../../node_modules/lodash-es/_createOver.js","../../../node_modules/lodash-es/over.js","../src/utils/combine-handlers.ts","../src/widget-by-id/utils.ts"],"sourcesContent":["import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\nfunction createOver(arrayFunc) {\n  return flatRest(function(iteratees) {\n    iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n    return baseRest(function(args) {\n      var thisArg = this;\n      return arrayFunc(iteratees, function(iteratee) {\n        return apply(iteratee, thisArg, args);\n      });\n    });\n  });\n}\n\nexport default createOver;\n","import arrayMap from './_arrayMap.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\nvar over = createOver(arrayMap);\n\nexport default over;\n","import isFunction from 'lodash-es/isFunction';\r\nimport flow from 'lodash-es/flow';\r\nimport over from 'lodash-es/over';\r\nimport { RenderTitleHandler, RenderToolbarHandler, TextWidgetRenderToolbarHandler } from '@/types';\r\n\r\ntype AnyFunction = (...args: any[]) => any;\r\n\r\nexport function combineHandlers<Handler extends AnyFunction>(\r\n  handlers: (Handler | undefined)[],\r\n  chainHandlers = false,\r\n): Handler {\r\n  const validHandlers = handlers.filter((handler) => isFunction(handler)) as Handler[];\r\n\r\n  if (chainHandlers) {\r\n    return flow(validHandlers) as Handler;\r\n  }\r\n\r\n  return over(validHandlers) as Handler;\r\n}\r\n\r\n/**\r\n * Compose multiple RenderToolbarHandler functions into one.\r\n * Each handler gets a chance to modify the toolbar.\r\n * If it returns `null`, the previous toolbar is passed to the next handler.\r\n */\r\nexport function composeToolbarHandlers(\r\n  ...handlers: (RenderToolbarHandler | undefined)[]\r\n): RenderToolbarHandler {\r\n  return (onRefresh, defaultToolbar) => {\r\n    return handlers.reduce((currentToolbar, handler) => {\r\n      if (!handler) return currentToolbar;\r\n      return handler(onRefresh, currentToolbar) ?? currentToolbar;\r\n    }, defaultToolbar);\r\n  };\r\n}\r\n\r\n/**\r\n * Compose multiple TextWidgetRenderToolbarHandler functions into one.\r\n * Each handler gets a chance to modify the toolbar.\r\n * If it returns `null`, the previous toolbar is passed to the next handler.\r\n */\r\nexport function composeTextWidgetToolbarHandlers(\r\n  ...handlers: (TextWidgetRenderToolbarHandler | undefined)[]\r\n): TextWidgetRenderToolbarHandler {\r\n  return (defaultToolbar) => {\r\n    return handlers.reduce((currentToolbar, handler) => {\r\n      if (!handler) return currentToolbar;\r\n      return handler(currentToolbar) ?? currentToolbar;\r\n    }, defaultToolbar);\r\n  };\r\n}\r\n\r\n/**\r\n * Compose multiple RenderTitleHandler functions into one.\r\n * Each handler gets a chance to modify the title.\r\n * If it returns `null`, the previous tile is passed to the next handler.\r\n */\r\nexport function composeTitleHandlers(\r\n  ...handlers: (RenderTitleHandler | undefined)[]\r\n): RenderTitleHandler {\r\n  return (defaultTitle) => {\r\n    return handlers.reduce((currentTitle, handler) => {\r\n      if (!handler) return currentTitle;\r\n      const result = handler(currentTitle);\r\n      return result !== null ? result : currentTitle;\r\n    }, defaultTitle);\r\n  };\r\n}\r\n","import { ChartSubtype } from '@/chart-options-processor/subtype-to-design-options.js';\r\nimport {\r\n  ChartStyleOptions,\r\n  ChartType,\r\n  RenderToolbarHandler,\r\n  WidgetContainerStyleOptions,\r\n} from '@/types.js';\r\nimport {\r\n  Panel,\r\n  PanelItem,\r\n  TextWidgetDtoStyle,\r\n  WidgetStyle,\r\n  WidgetSubtype,\r\n  FusionWidgetType,\r\n} from './types.js';\r\nimport {\r\n  ChartProps,\r\n  ChartWidgetProps,\r\n  PivotTableWidgetProps,\r\n  CustomWidgetProps,\r\n  TextWidgetProps,\r\n  CommonWidgetProps,\r\n  WithCommonWidgetProps,\r\n  WidgetProps,\r\n  WidgetType,\r\n  PivotTableProps,\r\n} from '@/props';\r\nimport { combineHandlers, composeToolbarHandlers } from '@/utils/combine-handlers';\r\nimport { WidgetTypeInternal } from '@/models/widget/types';\r\nimport { WidgetModel } from '@/models';\r\nimport { TranslatableError } from '@/translation/translatable-error.js';\r\nexport {\r\n  mergeFilters,\r\n  getFilterRelationsFromJaql,\r\n  convertFilterRelationsModelToJaql,\r\n  getFilterCompareId,\r\n} from '@sisense/sdk-data';\r\n\r\nconst fusionWidgetTypeToChartType: Partial<Record<FusionWidgetType, ChartType>> = {\r\n  'chart/line': 'line',\r\n  'chart/area': 'area',\r\n  'chart/bar': 'bar',\r\n  'chart/column': 'column',\r\n  'chart/polar': 'polar',\r\n  'chart/pie': 'pie',\r\n  'chart/funnel': 'funnel',\r\n  treemap: 'treemap',\r\n  sunburst: 'sunburst',\r\n  'chart/scatter': 'scatter',\r\n  indicator: 'indicator',\r\n  'chart/boxplot': 'boxplot',\r\n  'map/scatter': 'scattermap',\r\n  'map/area': 'areamap',\r\n  tablewidget: 'table',\r\n  tablewidgetagg: 'table',\r\n  heatmap: 'calendar-heatmap',\r\n};\r\n\r\nconst chartTypeToFusionWidgetType: Record<ChartType, FusionWidgetType> = Object.entries(\r\n  fusionWidgetTypeToChartType,\r\n).reduce<Record<ChartType, FusionWidgetType>>((acc, [key, value]) => {\r\n  acc[value] = key as FusionWidgetType;\r\n  return acc;\r\n}, {} as Record<ChartType, FusionWidgetType>);\r\n\r\n/**\r\n * Returns the corresponding chart type for a given widget type\r\n *\r\n * @internal\r\n */\r\nexport function getChartType(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetTypeToChartType[fusionWidgetType];\r\n}\r\nexport function getFusionWidgetTypeFromChartType(chartType: ChartType): FusionWidgetType {\r\n  return chartTypeToFusionWidgetType[chartType];\r\n}\r\n\r\nexport function getFusionWidgetType(\r\n  widgetType: WidgetType,\r\n  chartType?: ChartType,\r\n): FusionWidgetType {\r\n  if (widgetType === 'chart') {\r\n    if (!chartType) {\r\n      throw new Error('chartType is required for chart widget type');\r\n    }\r\n    return getFusionWidgetTypeFromChartType(chartType);\r\n  }\r\n  if (widgetType === 'pivot') {\r\n    return 'pivot2';\r\n  }\r\n  if (widgetType === 'custom') {\r\n    return 'custom';\r\n  }\r\n  if (widgetType === 'text') {\r\n    return 'richtexteditor';\r\n  }\r\n  throw new TranslatableError('errors.widgetModel.unsupportedWidgetType', {\r\n    widgetType,\r\n  });\r\n}\r\n\r\nexport function getWidgetType(fusionWidgetType: FusionWidgetType): WidgetType {\r\n  if (isPivotTableFusionWidget(fusionWidgetType)) {\r\n    return 'pivot';\r\n  } else if (isCustomWidgetFusionWidget(fusionWidgetType)) {\r\n    return 'custom';\r\n  } else if (isTextFusionWidget(fusionWidgetType)) {\r\n    return 'text';\r\n  } else if (isChartFusionWidget(fusionWidgetType)) {\r\n    return 'chart';\r\n  }\r\n  throw new TranslatableError('errors.widgetModel.unsupportedFusionWidgetType', {\r\n    fusionWidgetType,\r\n  });\r\n}\r\n\r\nexport function getChartSubtype(widgetSubtype: WidgetSubtype): ChartSubtype | undefined {\r\n  const widgetSubtypeToChartSubtype: Partial<Record<WidgetSubtype, ChartSubtype>> = {\r\n    'area/basic': 'area/basic',\r\n    'area/stacked': 'area/stacked',\r\n    'area/stacked100': 'area/stacked100',\r\n    'area/spline': 'area/spline',\r\n    'area/stackedspline': 'area/stackedspline',\r\n    'area/stackedspline100': 'area/stackedspline100',\r\n    'bar/classic': 'bar/classic',\r\n    'bar/stacked': 'bar/stacked',\r\n    'bar/stacked100': 'bar/stacked100',\r\n    'column/classic': 'column/classic',\r\n    'column/stackedcolumn': 'column/stackedcolumn',\r\n    'column/stackedcolumn100': 'column/stackedcolumn100',\r\n    'line/basic': 'line/basic',\r\n    'line/spline': 'line/spline',\r\n    'pie/classic': 'pie/classic',\r\n    'pie/donut': 'pie/donut',\r\n    'pie/ring': 'pie/ring',\r\n    'column/polar': 'polar/column',\r\n    'area/polar': 'polar/area',\r\n    'line/polar': 'polar/line',\r\n    'indicator/numeric': 'indicator/numeric',\r\n    'indicator/gauge': 'indicator/gauge',\r\n    treemap: 'treemap',\r\n    sunburst: 'sunburst',\r\n    'boxplot/full': 'boxplot/full',\r\n    'boxplot/hollow': 'boxplot/hollow',\r\n    'map/scatter': 'scattermap',\r\n  };\r\n  return widgetSubtypeToChartSubtype[widgetSubtype];\r\n}\r\n\r\nexport function isSupportedWidgetType(\r\n  fusionWidgetType: FusionWidgetType,\r\n): fusionWidgetType is FusionWidgetType {\r\n  const supportedWidgetTypes: FusionWidgetType[] = [\r\n    'chart/line',\r\n    'chart/area',\r\n    'chart/bar',\r\n    'chart/column',\r\n    'chart/polar',\r\n    'chart/pie',\r\n    'chart/funnel',\r\n    'treemap',\r\n    'sunburst',\r\n    'chart/scatter',\r\n    'indicator',\r\n    'tablewidget',\r\n    'tablewidgetagg',\r\n    'pivot',\r\n    'pivot2',\r\n    'chart/boxplot',\r\n    'map/scatter',\r\n    'map/area',\r\n    'richtexteditor',\r\n    'heatmap',\r\n  ];\r\n  return supportedWidgetTypes.includes(fusionWidgetType);\r\n}\r\n\r\n/**\r\n * Widget types that support Jump To Dashboard (JTD) functionality\r\n *\r\n * Supported types:\r\n * - Pie chart with no categories, Pie chart\r\n * - Indicator\r\n * - Text widget\r\n * - Column chart, Bar chart, Line chart, Area chart\r\n * - Pivot\r\n * - Scatter chart, Polar chart\r\n * - Blox\r\n *\r\n * @internal\r\n */\r\nexport const JTD_SUPPORTED_WIDGET_TYPES: FusionWidgetType[] = [\r\n  'chart/pie',\r\n  'indicator',\r\n  'richtexteditor',\r\n  'chart/column',\r\n  'chart/bar',\r\n  'chart/line',\r\n  'chart/area',\r\n  'pivot',\r\n  'pivot2',\r\n  'chart/scatter',\r\n  'chart/polar',\r\n];\r\n\r\n/**\r\n * Check if the widget type supports Jump To Dashboard (JTD)\r\n *\r\n * @param fusionWidgetType - The fusion widget type\r\n * @returns True if the widget type supports JTD, false otherwise\r\n * @internal\r\n */\r\nexport function widgetTypeSupportsJtd(fusionWidgetType: FusionWidgetType): boolean {\r\n  return JTD_SUPPORTED_WIDGET_TYPES.includes(fusionWidgetType);\r\n}\r\n\r\nexport function isTableFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'tablewidget' || fusionWidgetType === 'tablewidgetagg';\r\n}\r\nexport function isTableWidgetModel(widgetModel: WidgetModel): boolean {\r\n  return isChartWidget(widgetModel.widgetType) && widgetModel.chartType === 'table';\r\n}\r\n\r\nexport function isPivotTableFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'pivot' || fusionWidgetType === 'pivot2';\r\n}\r\nexport function isPivotWidget(widgetType: WidgetType) {\r\n  return widgetType === 'pivot';\r\n}\r\n\r\nexport function isTextFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'richtexteditor';\r\n}\r\nexport function isTextWidget(widgetType: WidgetType) {\r\n  return widgetType === 'text';\r\n}\r\n\r\nexport function isTextWidgetDtoStyle(widgetStyle: WidgetStyle): widgetStyle is TextWidgetDtoStyle {\r\n  return 'content' in widgetStyle && 'html' in widgetStyle.content;\r\n}\r\n\r\nexport function isCustomWidgetFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'custom';\r\n}\r\nexport function isCustomWidget(widgetType: WidgetType) {\r\n  return widgetType === 'custom';\r\n}\r\n\r\nexport function isChartFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return !isPivotTableFusionWidget(fusionWidgetType) && !isTextFusionWidget(fusionWidgetType);\r\n}\r\nexport function isChartTypeFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType.startsWith('chart');\r\n}\r\nexport function isPieChartFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'chart/pie';\r\n}\r\nexport function isIndicatorFusionWidget(fusionWidgetType: FusionWidgetType) {\r\n  return fusionWidgetType === 'indicator';\r\n}\r\nexport function isChartWidget(widgetType: WidgetType) {\r\n  return widgetType === 'chart';\r\n}\r\n\r\n/**\r\n * Type guard for checking if the widget props is for a text widget.\r\n *\r\n * @param widgetProps - The widget props to check.\r\n * @returns whether the widget props is for a text widget\r\n * @internal\r\n */\r\nexport function isTextWidgetProps(\r\n  widgetProps: CommonWidgetProps,\r\n): widgetProps is WithCommonWidgetProps<TextWidgetProps, 'text'> {\r\n  return widgetProps.widgetType === 'text';\r\n}\r\n\r\n/**\r\n * Type guard for checking if the widget props is for a pivot table widget.\r\n *\r\n * @param widgetProps - The widget props to check.\r\n * @returns whether the widget props is for a pivot table widget\r\n * @internal\r\n */\r\nexport function isPivotTableWidgetProps(\r\n  widgetProps: CommonWidgetProps,\r\n): widgetProps is WithCommonWidgetProps<PivotTableWidgetProps, 'pivot'> {\r\n  return widgetProps.widgetType === 'pivot';\r\n}\r\n\r\n/**\r\n * Type guard for checking if the widget props is for a custom widget\r\n *\r\n * @param widgetProps - The widget props to check.\r\n * @returns whether the widget props is for a custom widget\r\n * @internal\r\n */\r\nexport function isCustomWidgetProps(\r\n  widgetProps: CommonWidgetProps,\r\n): widgetProps is WithCommonWidgetProps<CustomWidgetProps, 'custom'> {\r\n  return widgetProps.widgetType === 'custom';\r\n}\r\n\r\n/**\r\n * Type guard for checking if the widget props is for a chart widget\r\n *\r\n * @param widgetProps - The widget props to check.\r\n * @returns whether the widget props is for a chart widget\r\n * @internal\r\n */\r\nexport function isChartWidgetProps(\r\n  widgetProps: CommonWidgetProps,\r\n): widgetProps is WithCommonWidgetProps<ChartWidgetProps, 'chart'> {\r\n  return widgetProps.widgetType === 'chart';\r\n}\r\n\r\nexport function getInternalWidgetType(widgetProps: CommonWidgetProps): WidgetTypeInternal {\r\n  if (isPivotTableWidgetProps(widgetProps)) {\r\n    return 'pivot';\r\n  } else if (isCustomWidgetProps(widgetProps)) {\r\n    return 'custom';\r\n  } else if (isTextWidgetProps(widgetProps)) {\r\n    return 'text';\r\n  }\r\n\r\n  return (widgetProps as WithCommonWidgetProps<ChartWidgetProps, 'chart'>).chartType;\r\n}\r\n\r\n/**\r\n * Registers new \"onDataPointClick\" handler for the Widget component\r\n *\r\n * @internal\r\n */\r\nexport function registerDataPointClickHandler(\r\n  widgetProps: WidgetProps,\r\n  handler: NonNullable<ChartProps['onDataPointClick']>,\r\n): void {\r\n  if (!isChartWidgetProps(widgetProps)) return;\r\n\r\n  widgetProps.onDataPointClick = combineHandlers([widgetProps.onDataPointClick, handler]);\r\n}\r\n\r\n/**\r\n * Registers new \"onDataPointContextMenu\" handler for the Widget component\r\n *\r\n * @internal\r\n */\r\nexport function registerDataPointContextMenuHandler(\r\n  widgetProps: WidgetProps,\r\n  handler: NonNullable<\r\n    ChartProps['onDataPointContextMenu'] | PivotTableProps['onDataPointContextMenu']\r\n  >,\r\n): void {\r\n  if (!isChartWidgetProps(widgetProps) && !isPivotTableWidgetProps(widgetProps)) return;\r\n\r\n  widgetProps.onDataPointContextMenu = combineHandlers([\r\n    widgetProps.onDataPointContextMenu,\r\n    handler,\r\n  ]);\r\n}\r\n\r\n/**\r\n * Registers new \"onDataPointsSelected\" handler for the Widget component\r\n *\r\n * @internal\r\n */\r\nexport function registerDataPointsSelectedHandler(\r\n  widgetProps: WidgetProps,\r\n  handler: NonNullable<ChartProps['onDataPointsSelected']>,\r\n): void {\r\n  if (!isChartWidgetProps(widgetProps)) return;\r\n\r\n  widgetProps.onDataPointsSelected = combineHandlers([widgetProps.onDataPointsSelected, handler]);\r\n}\r\n\r\n/**\r\n * Registers new \"renderToolbar\" handler for the constructed component\r\n *\r\n * @internal\r\n */\r\nexport function registerRenderToolbarHandler(\r\n  widgetProps: WidgetProps,\r\n  handler: RenderToolbarHandler,\r\n): void {\r\n  const widgetStyleOptions = widgetProps.styleOptions as WidgetContainerStyleOptions;\r\n\r\n  widgetProps.styleOptions = {\r\n    ...widgetStyleOptions,\r\n    header: {\r\n      ...widgetStyleOptions?.header,\r\n      renderToolbar: composeToolbarHandlers(widgetStyleOptions?.header?.renderToolbar, handler),\r\n    },\r\n  } as ChartStyleOptions;\r\n}\r\n\r\nexport function getEnabledPanelItems(panels: Panel[], panelName: string) {\r\n  const panel = panels.find((p) => p.name === panelName);\r\n  const panelItems = panel?.items ?? [];\r\n  return panelItems.filter((item) => !item.disabled);\r\n}\r\n\r\nexport function getRootPanelItem(item: PanelItem): PanelItem {\r\n  return item.parent ? getRootPanelItem(item.parent) : item;\r\n}\r\n"],"names":["createOver","arrayFunc","flatRest","iteratees","arrayMap","baseUnary","baseIteratee","baseRest","args","thisArg","iteratee","apply","over","combineHandlers","handlers","chainHandlers","validHandlers","filter","handler","isFunction","flow","composeToolbarHandlers","onRefresh","defaultToolbar","reduce","currentToolbar","composeTextWidgetToolbarHandlers","composeTitleHandlers","defaultTitle","currentTitle","result","fusionWidgetTypeToChartType","treemap","sunburst","indicator","tablewidget","tablewidgetagg","heatmap","chartTypeToFusionWidgetType","Object","entries","acc","key","value","getChartType","fusionWidgetType","getFusionWidgetTypeFromChartType","chartType","getFusionWidgetType","widgetType","Error","TranslatableError","getWidgetType","isPivotTableFusionWidget","isCustomWidgetFusionWidget","isTextFusionWidget","isChartFusionWidget","getChartSubtype","widgetSubtype","isSupportedWidgetType","supportedWidgetTypes","includes","JTD_SUPPORTED_WIDGET_TYPES","widgetTypeSupportsJtd","isTableFusionWidget","isTableWidgetModel","widgetModel","isChartWidget","isPivotWidget","isTextWidget","isCustomWidget","isChartTypeFusionWidget","startsWith","isPieChartFusionWidget","isIndicatorFusionWidget","isTextWidgetProps","widgetProps","isPivotTableWidgetProps","isCustomWidgetProps","isChartWidgetProps","getInternalWidgetType","registerDataPointClickHandler","onDataPointClick","registerDataPointContextMenuHandler","onDataPointContextMenu","registerDataPointsSelectedHandler","onDataPointsSelected","registerRenderToolbarHandler","widgetStyleOptions","styleOptions","__spreadProps","__spreadValues","header","renderToolbar","getEnabledPanelItems","panels","panelName","panel","find","p","name","items","item","disabled","getRootPanelItem","parent"],"mappings":"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","x_google_ignoreList":[0,1]}