@fluentui/react-charts 0.0.0-nightly-20260109-0406.1 → 0.0.0-nightly-20260113-0406.1

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.
Files changed (173) hide show
  1. package/CHANGELOG.md +13 -13
  2. package/dist/index.d.ts +361 -0
  3. package/lib/PolarChart.js +1 -0
  4. package/lib/PolarChart.js.map +1 -0
  5. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
  6. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  7. package/lib/components/ChartTable/ChartTable.js +21 -7
  8. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  9. package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
  10. package/lib/components/ChartTable/useChartTableStyles.styles.js +24 -3
  11. package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  12. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
  13. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  14. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +7 -5
  15. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  16. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  17. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +47 -3
  18. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
  19. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +24 -17
  20. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
  21. package/lib/components/CommonComponents/CartesianChart.js +5 -3
  22. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  23. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  24. package/lib/components/DeclarativeChart/DeclarativeChart.js +33 -29
  25. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  26. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +250 -153
  27. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  28. package/lib/components/DonutChart/DonutChart.js +12 -4
  29. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  30. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  31. package/lib/components/DonutChart/useDonutChartStyles.styles.js +25 -5
  32. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  33. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +16 -5
  34. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  35. package/lib/components/FunnelChart/FunnelChart.js +27 -5
  36. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  37. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
  38. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +26 -4
  39. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  40. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
  41. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  42. package/lib/components/GaugeChart/GaugeChart.js +5 -5
  43. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  44. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  45. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +8 -5
  46. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  47. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +2 -5
  48. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  49. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -1
  50. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  51. package/lib/components/LineChart/LineChart.js +4 -1
  52. package/lib/components/LineChart/LineChart.js.map +1 -1
  53. package/lib/components/PolarChart/PolarChart.js +576 -0
  54. package/lib/components/PolarChart/PolarChart.js.map +1 -0
  55. package/lib/components/PolarChart/PolarChart.types.js +1 -0
  56. package/lib/components/PolarChart/PolarChart.types.js.map +1 -0
  57. package/lib/components/PolarChart/PolarChart.utils.js +174 -0
  58. package/lib/components/PolarChart/PolarChart.utils.js.map +1 -0
  59. package/lib/components/PolarChart/index.js +2 -0
  60. package/lib/components/PolarChart/index.js.map +1 -0
  61. package/lib/components/PolarChart/usePolarChartStyles.styles.js +72 -0
  62. package/lib/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
  63. package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js +61 -0
  64. package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
  65. package/lib/components/SankeyChart/SankeyChart.js +13 -3
  66. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  67. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  68. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +23 -6
  69. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  70. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +15 -5
  71. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  72. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +25 -36
  73. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  74. package/lib/index.js +1 -0
  75. package/lib/index.js.map +1 -1
  76. package/lib/types/DataPoint.js +1 -1
  77. package/lib/types/DataPoint.js.map +1 -1
  78. package/lib/utilities/ChartTitle.js +33 -0
  79. package/lib/utilities/ChartTitle.js.map +1 -0
  80. package/lib/utilities/Common.styles.js +73 -1
  81. package/lib/utilities/Common.styles.js.map +1 -1
  82. package/lib/utilities/Common.styles.raw.js +70 -0
  83. package/lib/utilities/Common.styles.raw.js.map +1 -1
  84. package/lib/utilities/index.js +1 -0
  85. package/lib/utilities/index.js.map +1 -1
  86. package/lib/utilities/utilities.js +2 -2
  87. package/lib/utilities/utilities.js.map +1 -1
  88. package/lib-commonjs/PolarChart.js +6 -0
  89. package/lib-commonjs/PolarChart.js.map +1 -0
  90. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
  91. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  92. package/lib-commonjs/components/ChartTable/ChartTable.js +21 -7
  93. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  94. package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
  95. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +34 -3
  96. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  97. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
  98. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  99. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +7 -5
  100. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  101. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  102. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +58 -4
  103. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
  104. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +24 -17
  105. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
  106. package/lib-commonjs/components/CommonComponents/CartesianChart.js +4 -2
  107. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  108. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  109. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +59 -56
  110. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  111. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +256 -156
  112. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  113. package/lib-commonjs/components/DonutChart/DonutChart.js +11 -3
  114. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  115. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  116. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +31 -4
  117. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  118. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +15 -4
  119. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  120. package/lib-commonjs/components/FunnelChart/FunnelChart.js +26 -4
  121. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  122. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
  123. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +36 -4
  124. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  125. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
  126. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  127. package/lib-commonjs/components/GaugeChart/GaugeChart.js +4 -4
  128. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  129. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  130. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +10 -4
  131. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  132. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +2 -5
  133. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  134. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -1
  135. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  136. package/lib-commonjs/components/LineChart/LineChart.js +4 -1
  137. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  138. package/lib-commonjs/components/PolarChart/PolarChart.js +586 -0
  139. package/lib-commonjs/components/PolarChart/PolarChart.js.map +1 -0
  140. package/lib-commonjs/components/PolarChart/PolarChart.types.js +6 -0
  141. package/lib-commonjs/components/PolarChart/PolarChart.types.js.map +1 -0
  142. package/lib-commonjs/components/PolarChart/PolarChart.utils.js +204 -0
  143. package/lib-commonjs/components/PolarChart/PolarChart.utils.js.map +1 -0
  144. package/lib-commonjs/components/PolarChart/index.js +7 -0
  145. package/lib-commonjs/components/PolarChart/index.js.map +1 -0
  146. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js +107 -0
  147. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
  148. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js +75 -0
  149. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
  150. package/lib-commonjs/components/SankeyChart/SankeyChart.js +13 -3
  151. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  152. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  153. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +28 -4
  154. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  155. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +14 -3
  156. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  157. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +25 -36
  158. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  159. package/lib-commonjs/index.js +1 -0
  160. package/lib-commonjs/index.js.map +1 -1
  161. package/lib-commonjs/types/DataPoint.js +1 -1
  162. package/lib-commonjs/types/DataPoint.js.map +1 -1
  163. package/lib-commonjs/utilities/ChartTitle.js +41 -0
  164. package/lib-commonjs/utilities/ChartTitle.js.map +1 -0
  165. package/lib-commonjs/utilities/Common.styles.js +69 -0
  166. package/lib-commonjs/utilities/Common.styles.js.map +1 -1
  167. package/lib-commonjs/utilities/Common.styles.raw.js +69 -0
  168. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
  169. package/lib-commonjs/utilities/index.js +1 -0
  170. package/lib-commonjs/utilities/index.js.map +1 -1
  171. package/lib-commonjs/utilities/utilities.js +6 -0
  172. package/lib-commonjs/utilities/utilities.js.map +1 -1
  173. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ChartTable/ChartTable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ChartTableProps } from './ChartTable.types';\nimport { useChartTableStyles } from './useChartTableStyles.styles';\nimport { tokens } from '@fluentui/react-theme';\nimport * as d3 from 'd3-color';\nimport { getColorContrast } from '../../utilities/colors';\nimport { resolveCSSVariables } from '../../utilities/utilities';\nimport { useImageExport } from '../../utilities/hooks';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\nfunction invertHexColor(hex: string): string {\n const color = d3.color(hex);\n if (!color) {\n return tokens.colorNeutralForeground1!;\n }\n const rgb = color.rgb();\n return d3.rgb(255 - rgb.r, 255 - rgb.g, 255 - rgb.b).formatHex();\n}\n\nfunction getSafeBackgroundColor(chartContainer: HTMLElement, foreground?: string, background?: string): string {\n const fallbackFg = tokens.colorNeutralForeground1;\n const fallbackBg = tokens.colorNeutralBackground1;\n if (!chartContainer) {\n return fallbackBg;\n }\n\n const resolvedFg = resolveCSSVariables(chartContainer, foreground || fallbackFg);\n const resolvedBg = resolveCSSVariables(chartContainer, background || fallbackBg);\n\n const fg = d3.color(resolvedFg);\n const bg = d3.color(resolvedBg);\n\n if (!fg || !bg) {\n return resolvedBg;\n }\n const contrast = getColorContrast(fg.formatHex(), bg.formatHex());\n if (contrast >= 3) {\n return bg.formatHex();\n }\n\n const invertedBg = invertHexColor(bg.formatHex());\n const invertedContrast = getColorContrast(fg.formatHex(), invertedBg);\n return invertedContrast >= 3 ? invertedBg : fallbackBg;\n}\n\nexport const ChartTable: React.FunctionComponent<ChartTableProps> = React.forwardRef<HTMLDivElement, ChartTableProps>(\n (props, forwardedRef) => {\n const { headers, rows, width, height } = props;\n const { chartContainerRef: _rootElem } = useImageExport(props.componentRef, true, false);\n const classes = useChartTableStyles(props);\n const arrowAttributes = useArrowNavigationGroup({ axis: 'grid' });\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n\n const bgColorSet = new Set<string>();\n headers.forEach(header => {\n const bg = header?.style?.backgroundColor;\n const normalized = d3.color(bg || '')?.formatHex();\n if (normalized) {\n bgColorSet.add(normalized);\n }\n });\n let sharedBackgroundColor: string | undefined;\n let useSharedBackground = false;\n\n /*\n If we have only one or two unique background colors, we can consider using a shared background color\n for the table headers. This is to ensure better contrast with the foreground text.\n For size 1, we will consider that as default color if it satisfies the contrast ratio.\n There could also be a scenario where backgroundcolor array is of size 2, for eg: [\"dimsgray\", \"gray\"],\n which will assign 1st column header bg color to dimsgray and rest to gray. so our logic of shared background\n color won't run here. So will consider for size 2 as well.\n For size greater than this, we will consider that user wants different colors and will let color contrast fail\n if any.\n */\n if (bgColorSet.size === 1 || bgColorSet.size === 2) {\n const candidateBg = bgColorSet.size === 1 ? Array.from(bgColorSet)[0] : Array.from(bgColorSet)[1];\n for (const header of headers) {\n const fg = header?.style?.color;\n if (fg && getColorContrast(fg, candidateBg) >= 3) {\n sharedBackgroundColor = candidateBg;\n useSharedBackground = true;\n break;\n }\n }\n }\n\n return (\n <div\n ref={el => {\n _rootElem.current = el;\n }}\n className={classes.root as string}\n style={{ height: height ? `${height}px` : '650px', overflow: 'hidden' }}\n >\n <svg width={width ?? '100%'} height={height ?? '650px'}>\n <foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classes.table}\n style={{\n width: width ? `${width}px` : '100%',\n }}\n {...arrowAttributes}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => {\n const style = { ...header?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n\n if (useSharedBackground) {\n style.backgroundColor = sharedBackgroundColor;\n } else if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(_rootElem.current!, fg, bg);\n }\n return (\n <th key={idx} className={classes.headerCell} style={style} tabIndex={0}>\n {header.value}\n </th>\n );\n })}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => {\n const style = { ...cell?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(_rootElem.current!, fg, bg);\n }\n return (\n <td key={colIdx} className={classes.bodyCell} style={style} tabIndex={0}>\n {cell.value}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n },\n);\n\nChartTable.displayName = 'ChartTable';\n"],"names":["React","useChartTableStyles","tokens","d3","getColorContrast","resolveCSSVariables","useImageExport","useArrowNavigationGroup","invertHexColor","hex","color","colorNeutralForeground1","rgb","r","g","b","formatHex","getSafeBackgroundColor","chartContainer","foreground","background","fallbackFg","fallbackBg","colorNeutralBackground1","resolvedFg","resolvedBg","fg","bg","contrast","invertedBg","invertedContrast","ChartTable","forwardRef","props","forwardedRef","headers","rows","width","height","chartContainerRef","_rootElem","componentRef","classes","arrowAttributes","axis","length","div","bgColorSet","Set","forEach","header","style","backgroundColor","normalized","add","sharedBackgroundColor","useSharedBackground","size","candidateBg","Array","from","ref","el","current","className","root","overflow","svg","foreignObject","x","y","maxHeight","overflowY","overflowX","table","thead","tr","map","idx","th","key","headerCell","tabIndex","value","tbody","row","rowIdx","cell","colIdx","td","bodyCell","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/ChartTable/ChartTable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ChartTableProps } from './ChartTable.types';\nimport { useChartTableStyles } from './useChartTableStyles.styles';\nimport { tokens } from '@fluentui/react-theme';\nimport * as d3 from 'd3-color';\nimport { getColorContrast } from '../../utilities/colors';\nimport { resolveCSSVariables } from '../../utilities/utilities';\nimport { ChartTitle } from '../../utilities/index';\nimport { useImageExport } from '../../utilities/hooks';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\nfunction invertHexColor(hex: string): string {\n const color = d3.color(hex);\n if (!color) {\n return tokens.colorNeutralForeground1!;\n }\n const rgb = color.rgb();\n return d3.rgb(255 - rgb.r, 255 - rgb.g, 255 - rgb.b).formatHex();\n}\n\nfunction getSafeBackgroundColor(chartContainer: HTMLElement, foreground?: string, background?: string): string {\n const fallbackFg = tokens.colorNeutralForeground1;\n const fallbackBg = tokens.colorNeutralBackground1;\n if (!chartContainer) {\n return fallbackBg;\n }\n\n const resolvedFg = resolveCSSVariables(chartContainer, foreground || fallbackFg);\n const resolvedBg = resolveCSSVariables(chartContainer, background || fallbackBg);\n\n const fg = d3.color(resolvedFg);\n const bg = d3.color(resolvedBg);\n\n if (!fg || !bg) {\n return resolvedBg;\n }\n const contrast = getColorContrast(fg.formatHex(), bg.formatHex());\n if (contrast >= 3) {\n return bg.formatHex();\n }\n\n const invertedBg = invertHexColor(bg.formatHex());\n const invertedContrast = getColorContrast(fg.formatHex(), invertedBg);\n return invertedContrast >= 3 ? invertedBg : fallbackBg;\n}\n\nexport const ChartTable: React.FunctionComponent<ChartTableProps> = React.forwardRef<HTMLDivElement, ChartTableProps>(\n (props, forwardedRef) => {\n const { headers, rows, width, height, chartTitle } = props;\n const { chartContainerRef: _rootElem } = useImageExport(props.componentRef, true, false);\n const classes = useChartTableStyles(props);\n const arrowAttributes = useArrowNavigationGroup({ axis: 'grid' });\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n\n const bgColorSet = new Set<string>();\n headers.forEach(header => {\n const bg = header?.style?.backgroundColor;\n const normalized = d3.color(bg || '')?.formatHex();\n if (normalized) {\n bgColorSet.add(normalized);\n }\n });\n let sharedBackgroundColor: string | undefined;\n let useSharedBackground = false;\n\n /*\n If we have only one or two unique background colors, we can consider using a shared background color\n for the table headers. This is to ensure better contrast with the foreground text.\n For size 1, we will consider that as default color if it satisfies the contrast ratio.\n There could also be a scenario where backgroundcolor array is of size 2, for eg: [\"dimsgray\", \"gray\"],\n which will assign 1st column header bg color to dimsgray and rest to gray. so our logic of shared background\n color won't run here. So will consider for size 2 as well.\n For size greater than this, we will consider that user wants different colors and will let color contrast fail\n if any.\n */\n if (bgColorSet.size === 1 || bgColorSet.size === 2) {\n const candidateBg = bgColorSet.size === 1 ? Array.from(bgColorSet)[0] : Array.from(bgColorSet)[1];\n for (const header of headers) {\n const fg = header?.style?.color;\n if (fg && getColorContrast(fg, candidateBg) >= 3) {\n sharedBackgroundColor = candidateBg;\n useSharedBackground = true;\n break;\n }\n }\n }\n\n const titleHeight = chartTitle ? 30 : 0;\n const totalHeight = typeof height === 'number' ? height : 650;\n const tableHeight = `${totalHeight - titleHeight}px`;\n const svgWidth = typeof width === 'number' ? width : '100%';\n const titleMaxWidth = typeof width === 'number' ? width - 20 : undefined;\n const titleX = typeof width === 'number' ? width / 2 : 0;\n\n return (\n <div\n ref={el => {\n _rootElem.current = el;\n }}\n className={classes.root as string}\n style={{ height: `${totalHeight}px`, overflow: 'hidden' }}\n >\n <svg width={svgWidth} height={`${totalHeight}px`}>\n {chartTitle && (\n <ChartTitle\n title={chartTitle}\n x={titleX}\n maxWidth={titleMaxWidth}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n tooltipClassName={classes.svgTooltip}\n />\n )}\n <foreignObject x=\"0\" y={titleHeight} width=\"100%\" height={tableHeight}>\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classes.table}\n style={{\n width: width ? `${width}px` : '100%',\n }}\n {...arrowAttributes}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => {\n const style = { ...header?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n\n if (useSharedBackground) {\n style.backgroundColor = sharedBackgroundColor;\n } else if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(_rootElem.current!, fg, bg);\n }\n return (\n <th key={idx} className={classes.headerCell} style={style} tabIndex={0}>\n {header.value}\n </th>\n );\n })}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => {\n const style = { ...cell?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(_rootElem.current!, fg, bg);\n }\n return (\n <td key={colIdx} className={classes.bodyCell} style={style} tabIndex={0}>\n {cell.value}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n },\n);\n\nChartTable.displayName = 'ChartTable';\n"],"names":["React","useChartTableStyles","tokens","d3","getColorContrast","resolveCSSVariables","ChartTitle","useImageExport","useArrowNavigationGroup","invertHexColor","hex","color","colorNeutralForeground1","rgb","r","g","b","formatHex","getSafeBackgroundColor","chartContainer","foreground","background","fallbackFg","fallbackBg","colorNeutralBackground1","resolvedFg","resolvedBg","fg","bg","contrast","invertedBg","invertedContrast","ChartTable","forwardRef","props","forwardedRef","headers","rows","width","height","chartTitle","chartContainerRef","_rootElem","componentRef","classes","arrowAttributes","axis","length","div","bgColorSet","Set","forEach","header","style","backgroundColor","normalized","add","sharedBackgroundColor","useSharedBackground","size","candidateBg","Array","from","titleHeight","totalHeight","tableHeight","svgWidth","titleMaxWidth","undefined","titleX","ref","el","current","className","root","overflow","svg","title","x","maxWidth","titleStyles","tooltipClassName","svgTooltip","foreignObject","y","maxHeight","overflowY","overflowX","table","thead","tr","map","idx","th","key","headerCell","tabIndex","value","tbody","row","rowIdx","cell","colIdx","td","bodyCell","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ChartTable/ChartTable.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { Chart } from './index';\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface ChartTableProps {\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ChartTableStyles;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface ChartTableStyles {\n root?: string | React.CSSProperties;\n table?: string;\n headerCell?: string;\n bodyCell?: string;\n chart?: string;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
1
+ {"version":3,"sources":["../src/components/ChartTable/ChartTable.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { TitleStyles } from '../../utilities/Common.styles';\nimport { Chart } from './index';\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface ChartTableProps {\n /**\n * Title styles configuration for the chart title\n */\n titleStyles?: TitleStyles;\n\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Chart title to display above the table\n */\n chartTitle?: string;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ChartTableStyles;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface ChartTableStyles {\n root?: string | React.CSSProperties;\n table?: string;\n headerCell?: string;\n bodyCell?: string;\n chart?: string;\n chartTitle?: string;\n svgTooltip?: string;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { __styles, mergeClasses } from '@griffel/react';
4
4
  import { tokens, typographyStyles } from '@fluentui/react-theme';
5
+ import { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';
5
6
  /**
6
7
  * @internal
7
8
  */
@@ -10,7 +11,9 @@ export const chartTableClassNames = {
10
11
  table: 'fui-ChartTable__table',
11
12
  headerCell: 'fui-ChartTable__headerCell',
12
13
  bodyCell: 'fui-ChartTable__bodyCell',
13
- chart: 'fui-ChartTable__chart'
14
+ chart: 'fui-ChartTable__chart',
15
+ chartTitle: 'fui-ChartTable__chartTitle',
16
+ svgTooltip: 'fui-ChartTable__svgTooltip'
14
17
  };
15
18
  const useStyles = /*#__PURE__*/__styles({
16
19
  root: {
@@ -83,6 +86,20 @@ const useStyles = /*#__PURE__*/__styles({
83
86
  sj55zd: "f19n0e5",
84
87
  fsow6f: ["f1o700av", "fes3tcz"],
85
88
  B7iucu3: "fhs7xo9"
89
+ },
90
+ chartTitle: {
91
+ Bahqtrf: "fk6fouc",
92
+ Be2twd7: "f13mqy1h",
93
+ Bhrd7zp: "fl43uef",
94
+ Bg96gwp: "fcpl73t",
95
+ Bkfmm31: "fhuob2q",
96
+ Bvjb7m6: "fhv2zbx",
97
+ fsow6f: "f17mccla",
98
+ jrapky: "fqcjy3b"
99
+ },
100
+ svgTooltip: {
101
+ Bkfmm31: "f5q6cfr",
102
+ Bxms50k: "f1bgda6t"
86
103
  }
87
104
  }, {
88
105
  d: [".fly5x3f{width:100%;}", ".f1oy3dpc{overflow-x:auto;}", ".fgkb47j{border-collapse:collapse;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".fl43uef{font-weight:var(--fontWeightSemibold);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".f16xq7d1{background-color:var(--colorNeutralBackground3);}", ".f19n0e5{color:var(--colorNeutralForeground1);}", [".f1bnz8pu{padding:var(--spacingHorizontalS);}", {
@@ -93,11 +110,13 @@ const useStyles = /*#__PURE__*/__styles({
93
110
  p: -1
94
111
  }], [".fox1scm{border:var(--strokeWidthThick) solid var(--colorNeutralStroke2);}", {
95
112
  p: -2
96
- }]],
113
+ }], ".f13mqy1h{font-size:var(--fontSizeBase100);}", ".fcpl73t{line-height:var(--lineHeightBase100);}", ".fhuob2q{fill:var(--colorNeutralForeground1);}", ".fhv2zbx{forced-color-adjust:auto;}", ".f17mccla{text-align:center;}", ".fqcjy3b{margin-bottom:var(--spacingVerticalS);}", ".f5q6cfr{fill:var(--colorNeutralBackground1);}"],
97
114
  m: [["@media (forced-colors: active){.ftx6bta{background-color:Window;}}", {
98
115
  m: "(forced-colors: active)"
99
116
  }], ["@media (forced-colors: active){.fhs7xo9{color:WindowText;}}", {
100
117
  m: "(forced-colors: active)"
118
+ }], ["@media screen and (-ms-high-contrast: active),screen and (forced-colors: active){.f1bgda6t{fill:Canvas;}}", {
119
+ m: "screen and (-ms-high-contrast: active), screen and (forced-colors: active)"
101
120
  }]]
102
121
  });
103
122
  /**
@@ -110,6 +129,8 @@ export const useChartTableStyles = props => {
110
129
  table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/),
111
130
  headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/),
112
131
  bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/),
113
- chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/)
132
+ chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/),
133
+ chartTitle: mergeClasses(chartTableClassNames.chartTitle, baseStyles.chartTitle /*props.styles?.chartTitle*/),
134
+ svgTooltip: mergeClasses(chartTableClassNames.svgTooltip, baseStyles.svgTooltip /*props.styles?.svgTooltip*/)
114
135
  };
115
136
  };
@@ -1 +1 @@
1
- {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","chartTableClassNames","root","table","headerCell","bodyCell","chart","useStyles","a9b677","B68tc82","po53p8","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","De3pzq","sj55zd","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","fsow6f","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","By8wz76","B7iucu3","d","p","m","useChartTableStyles","props","baseStyles"],"sources":["useChartTableStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const chartTableClassNames = {\n root: 'fui-ChartTable__root',\n table: 'fui-ChartTable__table',\n headerCell: 'fui-ChartTable__headerCell',\n bodyCell: 'fui-ChartTable__bodyCell',\n chart: 'fui-ChartTable__chart'\n};\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n overflowX: 'auto'\n },\n table: {\n borderCollapse: 'collapse'\n },\n headerCell: {\n ...typographyStyles.caption1,\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground1,\n padding: tokens.spacingHorizontalS,\n textAlign: 'left',\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n '@media (forced-colors: active)': {\n backgroundColor: 'Window',\n color: 'WindowText'\n }\n },\n bodyCell: {\n ...typographyStyles.caption1,\n padding: tokens.spacingHorizontalS,\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n color: tokens.colorNeutralForeground1,\n textAlign: 'left',\n '@media (forced-colors: active)': {\n color: 'WindowText'\n }\n }\n});\n/**\n * Apply styling to the ChartTable slots based on the state\n */ export const useChartTableStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(chartTableClassNames.root, baseStyles.root /*props.styles?.root*/ ),\n table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/ ),\n headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/ ),\n bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/ ),\n chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/ )\n };\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE;AACA;AACA;AAAI,OAAO,MAAMC,oBAAoB,GAAG;EACpCC,IAAI,EAAE,sBAAsB;EAC5BC,KAAK,EAAE,uBAAuB;EAC9BC,UAAU,EAAE,4BAA4B;EACxCC,QAAQ,EAAE,0BAA0B;EACpCC,KAAK,EAAE;AACX,CAAC;AACD,MAAMC,SAAS,gBAAGV,QAAA;EAAAK,IAAA;IAAAM,MAAA;IAAAC,OAAA;EAAA;EAAAN,KAAA;IAAAO,MAAA;EAAA;EAAAN,UAAA;IAAAO,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAApC,QAAA;IAAAM,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAG,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAE,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAvB,MAAA;IAAAM,MAAA;IAAAmB,OAAA;EAAA;AAAA;EAAAC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;EAAAC,CAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CA+BjB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,mBAAmB,GAAIC,KAAK,IAAG;EAC5C,MAAMC,UAAU,GAAGxC,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHL,IAAI,EAAEJ,YAAY,CAACG,oBAAoB,CAACC,IAAI,EAAE6C,UAAU,CAAC7C,IAAI,CAAC,sBAAuB,CAAC;IACtFC,KAAK,EAAEL,YAAY,CAACG,oBAAoB,CAACE,KAAK,EAAE4C,UAAU,CAAC5C,KAAK,CAAC,uBAAwB,CAAC;IAC1FC,UAAU,EAAEN,YAAY,CAACG,oBAAoB,CAACG,UAAU,EAAE2C,UAAU,CAAC3C,UAAU,CAAC,4BAA6B,CAAC;IAC9GC,QAAQ,EAAEP,YAAY,CAACG,oBAAoB,CAACI,QAAQ,EAAE0C,UAAU,CAAC1C,QAAQ,CAAC,0BAA2B,CAAC;IACtGC,KAAK,EAAER,YAAY,CAACG,oBAAoB,CAACK,KAAK,CAAC,uBAAwB;EAC3E,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","getChartTitleStyles","HighContrastSelector","chartTableClassNames","root","table","headerCell","bodyCell","chart","chartTitle","svgTooltip","useStyles","a9b677","B68tc82","po53p8","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","De3pzq","sj55zd","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","fsow6f","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","By8wz76","B7iucu3","Bkfmm31","Bvjb7m6","jrapky","Bxms50k","d","p","m","useChartTableStyles","props","baseStyles"],"sources":["useChartTableStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const chartTableClassNames = {\n root: 'fui-ChartTable__root',\n table: 'fui-ChartTable__table',\n headerCell: 'fui-ChartTable__headerCell',\n bodyCell: 'fui-ChartTable__bodyCell',\n chart: 'fui-ChartTable__chart',\n chartTitle: 'fui-ChartTable__chartTitle',\n svgTooltip: 'fui-ChartTable__svgTooltip'\n};\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n overflowX: 'auto'\n },\n table: {\n borderCollapse: 'collapse'\n },\n headerCell: {\n ...typographyStyles.caption1,\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground1,\n padding: tokens.spacingHorizontalS,\n textAlign: 'left',\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n '@media (forced-colors: active)': {\n backgroundColor: 'Window',\n color: 'WindowText'\n }\n },\n bodyCell: {\n ...typographyStyles.caption1,\n padding: tokens.spacingHorizontalS,\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n color: tokens.colorNeutralForeground1,\n textAlign: 'left',\n '@media (forced-colors: active)': {\n color: 'WindowText'\n }\n },\n chartTitle: getChartTitleStyles(),\n svgTooltip: {\n fill: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n fill: 'Canvas'\n }\n }\n});\n/**\n * Apply styling to the ChartTable slots based on the state\n */ export const useChartTableStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(chartTableClassNames.root, baseStyles.root /*props.styles?.root*/ ),\n table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/ ),\n headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/ ),\n bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/ ),\n chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/ ),\n chartTitle: mergeClasses(chartTableClassNames.chartTitle, baseStyles.chartTitle /*props.styles?.chartTitle*/ ),\n svgTooltip: mergeClasses(chartTableClassNames.svgTooltip, baseStyles.svgTooltip /*props.styles?.svgTooltip*/ )\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import { makeStyles, mergeClasses } from '@griffel/react';
3
3
  import { tokens, typographyStyles } from '@fluentui/react-theme';
4
+ import { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';
4
5
  /**
5
6
  * @internal
6
7
  */ export const chartTableClassNames = {
@@ -8,7 +9,9 @@ import { tokens, typographyStyles } from '@fluentui/react-theme';
8
9
  table: 'fui-ChartTable__table',
9
10
  headerCell: 'fui-ChartTable__headerCell',
10
11
  bodyCell: 'fui-ChartTable__bodyCell',
11
- chart: 'fui-ChartTable__chart'
12
+ chart: 'fui-ChartTable__chart',
13
+ chartTitle: 'fui-ChartTable__chartTitle',
14
+ svgTooltip: 'fui-ChartTable__svgTooltip'
12
15
  };
13
16
  const useStyles = makeStyles({
14
17
  root: {
@@ -40,6 +43,13 @@ const useStyles = makeStyles({
40
43
  '@media (forced-colors: active)': {
41
44
  color: 'WindowText'
42
45
  }
46
+ },
47
+ chartTitle: getChartTitleStyles(),
48
+ svgTooltip: {
49
+ fill: tokens.colorNeutralBackground1,
50
+ [HighContrastSelector]: {
51
+ fill: 'Canvas'
52
+ }
43
53
  }
44
54
  });
45
55
  /**
@@ -51,6 +61,8 @@ const useStyles = makeStyles({
51
61
  table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/ ),
52
62
  headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/ ),
53
63
  bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/ ),
54
- chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/ )
64
+ chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/ ),
65
+ chartTitle: mergeClasses(chartTableClassNames.chartTitle, baseStyles.chartTitle /*props.styles?.chartTitle*/ ),
66
+ svgTooltip: mergeClasses(chartTableClassNames.svgTooltip, baseStyles.svgTooltip /*props.styles?.svgTooltip*/ )
55
67
  };
56
68
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ChartTable/useChartTableStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { ChartTableProps, ChartTableStyles } from './ChartTable.types';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\n/**\n * @internal\n */\nexport const chartTableClassNames: SlotClassNames<ChartTableStyles> = {\n root: 'fui-ChartTable__root',\n table: 'fui-ChartTable__table',\n headerCell: 'fui-ChartTable__headerCell',\n bodyCell: 'fui-ChartTable__bodyCell',\n chart: 'fui-ChartTable__chart',\n};\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n overflowX: 'auto',\n },\n table: {\n borderCollapse: 'collapse',\n },\n headerCell: {\n ...typographyStyles.caption1,\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground1,\n padding: tokens.spacingHorizontalS,\n textAlign: 'left',\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n '@media (forced-colors: active)': {\n backgroundColor: 'Window',\n color: 'WindowText',\n },\n },\n bodyCell: {\n ...typographyStyles.caption1,\n padding: tokens.spacingHorizontalS,\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n color: tokens.colorNeutralForeground1,\n textAlign: 'left',\n '@media (forced-colors: active)': {\n color: 'WindowText',\n },\n },\n});\n\n/**\n * Apply styling to the ChartTable slots based on the state\n */\nexport const useChartTableStyles = (props: ChartTableProps): ChartTableStyles => {\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(chartTableClassNames.root, baseStyles.root /*props.styles?.root*/),\n table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/),\n headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/),\n bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/),\n chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","typographyStyles","chartTableClassNames","root","table","headerCell","bodyCell","chart","useStyles","width","overflowX","borderCollapse","caption1","fontWeight","fontWeightSemibold","backgroundColor","colorNeutralBackground3","color","colorNeutralForeground1","padding","spacingHorizontalS","textAlign","border","strokeWidthThick","colorNeutralStroke2","useChartTableStyles","props","baseStyles"],"mappings":"AAAA;AAEA,SAASA,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAG1D,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,wBAAwB;AAEjE;;CAEC,GACD,OAAO,MAAMC,uBAAyD;IACpEC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,UAAU;IACVC,OAAO;AACT,EAAE;AAEF,MAAMC,YAAYV,WAAW;IAC3BK,MAAM;QACJM,OAAO;QACPC,WAAW;IACb;IACAN,OAAO;QACLO,gBAAgB;IAClB;IACAN,YAAY;QACV,GAAGJ,iBAAiBW,QAAQ;QAC5BC,YAAYb,OAAOc,kBAAkB;QACrCC,iBAAiBf,OAAOgB,uBAAuB;QAC/CC,OAAOjB,OAAOkB,uBAAuB;QACrCC,SAASnB,OAAOoB,kBAAkB;QAClCC,WAAW;QACXC,QAAQ,GAAGtB,OAAOuB,gBAAgB,CAAC,OAAO,EAAEvB,OAAOwB,mBAAmB,EAAE;QACxE,kCAAkC;YAChCT,iBAAiB;YACjBE,OAAO;QACT;IACF;IACAX,UAAU;QACR,GAAGL,iBAAiBW,QAAQ;QAC5BO,SAASnB,OAAOoB,kBAAkB;QAClCE,QAAQ,GAAGtB,OAAOuB,gBAAgB,CAAC,OAAO,EAAEvB,OAAOwB,mBAAmB,EAAE;QACxEP,OAAOjB,OAAOkB,uBAAuB;QACrCG,WAAW;QACX,kCAAkC;YAChCJ,OAAO;QACT;IACF;AACF;AAEA;;CAEC,GACD,OAAO,MAAMQ,sBAAsB,CAACC;IAClC,MAAMC,aAAanB;IAEnB,OAAO;QACLL,MAAMJ,aAAaG,qBAAqBC,IAAI,EAAEwB,WAAWxB,IAAI,CAAC,oBAAoB;QAClFC,OAAOL,aAAaG,qBAAqBE,KAAK,EAAEuB,WAAWvB,KAAK,CAAC,qBAAqB;QACtFC,YAAYN,aAAaG,qBAAqBG,UAAU,EAAEsB,WAAWtB,UAAU,CAAC,0BAA0B;QAC1GC,UAAUP,aAAaG,qBAAqBI,QAAQ,EAAEqB,WAAWrB,QAAQ,CAAC,wBAAwB;QAClGC,OAAOR,aAAaG,qBAAqBK,KAAK,CAAC,qBAAqB;IACtE;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/ChartTable/useChartTableStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { GriffelStyle, makeStyles, mergeClasses } from '@griffel/react';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { ChartTableProps, ChartTableStyles } from './ChartTable.types';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';\n\n/**\n * @internal\n */\nexport const chartTableClassNames: SlotClassNames<ChartTableStyles> = {\n root: 'fui-ChartTable__root',\n table: 'fui-ChartTable__table',\n headerCell: 'fui-ChartTable__headerCell',\n bodyCell: 'fui-ChartTable__bodyCell',\n chart: 'fui-ChartTable__chart',\n chartTitle: 'fui-ChartTable__chartTitle',\n svgTooltip: 'fui-ChartTable__svgTooltip',\n};\n\nconst useStyles = makeStyles({\n root: {\n width: '100%',\n overflowX: 'auto',\n },\n table: {\n borderCollapse: 'collapse',\n },\n headerCell: {\n ...typographyStyles.caption1,\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground1,\n padding: tokens.spacingHorizontalS,\n textAlign: 'left',\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n '@media (forced-colors: active)': {\n backgroundColor: 'Window',\n color: 'WindowText',\n },\n },\n bodyCell: {\n ...typographyStyles.caption1,\n padding: tokens.spacingHorizontalS,\n border: `${tokens.strokeWidthThick} solid ${tokens.colorNeutralStroke2}`,\n color: tokens.colorNeutralForeground1,\n textAlign: 'left',\n '@media (forced-colors: active)': {\n color: 'WindowText',\n },\n },\n chartTitle: getChartTitleStyles() as GriffelStyle,\n svgTooltip: {\n fill: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n fill: 'Canvas',\n },\n },\n});\n\n/**\n * Apply styling to the ChartTable slots based on the state\n */\nexport const useChartTableStyles = (props: ChartTableProps): ChartTableStyles => {\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(chartTableClassNames.root, baseStyles.root /*props.styles?.root*/),\n table: mergeClasses(chartTableClassNames.table, baseStyles.table /*props.styles?.table*/),\n headerCell: mergeClasses(chartTableClassNames.headerCell, baseStyles.headerCell /*props.styles?.headerCell*/),\n bodyCell: mergeClasses(chartTableClassNames.bodyCell, baseStyles.bodyCell /*props.styles?.bodyCell*/),\n chart: mergeClasses(chartTableClassNames.chart /*props.styles?.chart*/),\n chartTitle: mergeClasses(chartTableClassNames.chartTitle, baseStyles.chartTitle /*props.styles?.chartTitle*/),\n svgTooltip: mergeClasses(chartTableClassNames.svgTooltip, baseStyles.svgTooltip /*props.styles?.svgTooltip*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","typographyStyles","getChartTitleStyles","HighContrastSelector","chartTableClassNames","root","table","headerCell","bodyCell","chart","chartTitle","svgTooltip","useStyles","width","overflowX","borderCollapse","caption1","fontWeight","fontWeightSemibold","backgroundColor","colorNeutralBackground3","color","colorNeutralForeground1","padding","spacingHorizontalS","textAlign","border","strokeWidthThick","colorNeutralStroke2","fill","colorNeutralBackground1","useChartTableStyles","props","baseStyles"],"mappings":"AAAA;AAEA,SAAuBA,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAGxE,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,wBAAwB;AACjE,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,wBAAwB;AAElF;;CAEC,GACD,OAAO,MAAMC,uBAAyD;IACpEC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,UAAU;IACVC,OAAO;IACPC,YAAY;IACZC,YAAY;AACd,EAAE;AAEF,MAAMC,YAAYd,WAAW;IAC3BO,MAAM;QACJQ,OAAO;QACPC,WAAW;IACb;IACAR,OAAO;QACLS,gBAAgB;IAClB;IACAR,YAAY;QACV,GAAGN,iBAAiBe,QAAQ;QAC5BC,YAAYjB,OAAOkB,kBAAkB;QACrCC,iBAAiBnB,OAAOoB,uBAAuB;QAC/CC,OAAOrB,OAAOsB,uBAAuB;QACrCC,SAASvB,OAAOwB,kBAAkB;QAClCC,WAAW;QACXC,QAAQ,GAAG1B,OAAO2B,gBAAgB,CAAC,OAAO,EAAE3B,OAAO4B,mBAAmB,EAAE;QACxE,kCAAkC;YAChCT,iBAAiB;YACjBE,OAAO;QACT;IACF;IACAb,UAAU;QACR,GAAGP,iBAAiBe,QAAQ;QAC5BO,SAASvB,OAAOwB,kBAAkB;QAClCE,QAAQ,GAAG1B,OAAO2B,gBAAgB,CAAC,OAAO,EAAE3B,OAAO4B,mBAAmB,EAAE;QACxEP,OAAOrB,OAAOsB,uBAAuB;QACrCG,WAAW;QACX,kCAAkC;YAChCJ,OAAO;QACT;IACF;IACAX,YAAYR;IACZS,YAAY;QACVkB,MAAM7B,OAAO8B,uBAAuB;QACpC,CAAC3B,qBAAqB,EAAE;YACtB0B,MAAM;QACR;IACF;AACF;AAEA;;CAEC,GACD,OAAO,MAAME,sBAAsB,CAACC;IAClC,MAAMC,aAAarB;IAEnB,OAAO;QACLP,MAAMN,aAAaK,qBAAqBC,IAAI,EAAE4B,WAAW5B,IAAI,CAAC,oBAAoB;QAClFC,OAAOP,aAAaK,qBAAqBE,KAAK,EAAE2B,WAAW3B,KAAK,CAAC,qBAAqB;QACtFC,YAAYR,aAAaK,qBAAqBG,UAAU,EAAE0B,WAAW1B,UAAU,CAAC,0BAA0B;QAC1GC,UAAUT,aAAaK,qBAAqBI,QAAQ,EAAEyB,WAAWzB,QAAQ,CAAC,wBAAwB;QAClGC,OAAOV,aAAaK,qBAAqBK,KAAK,CAAC,qBAAqB;QACpEC,YAAYX,aAAaK,qBAAqBM,UAAU,EAAEuB,WAAWvB,UAAU,CAAC,0BAA0B;QAC1GC,YAAYZ,aAAaK,qBAAqBO,UAAU,EAAEsB,WAAWtB,UAAU,CAAC,0BAA0B;IAC5G;AACF,EAAE"}
@@ -320,7 +320,7 @@ const resolveCoordinates = (annotation, context)=>{
320
320
  };
321
321
  };
322
322
  export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
323
- const { annotations: annotationsProp, context } = props;
323
+ const { annotations: annotationsProp, context, hideDefaultStyles } = props;
324
324
  const classes = useChartAnnotationLayerStyles(props);
325
325
  const idPrefix = useId('chart-annotation');
326
326
  const autoKeyPrefix = useId('chart-annotation-item');
@@ -417,7 +417,7 @@ export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
417
417
  backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity, {
418
418
  preserveOriginalOpacity: ((_annotation_style4 = annotation.style) === null || _annotation_style4 === void 0 ? void 0 : _annotation_style4.opacity) === undefined
419
419
  })
420
- } : {
420
+ } : hideDefaultStyles ? {} : {
421
421
  backgroundColor: applyOpacityToColor(tokens.colorNeutralBackground1, DEFAULT_ANNOTATION_BACKGROUND_OPACITY)
422
422
  },
423
423
  borderColor: (_annotation_style5 = annotation.style) === null || _annotation_style5 === void 0 ? void 0 : _annotation_style5.borderColor,
@@ -503,6 +503,7 @@ export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
503
503
  visibility: 'hidden',
504
504
  ...containerStyle
505
505
  };
506
+ const annotationClass = hideDefaultStyles ? classes.annotationNoDefaults : classes.annotation;
506
507
  if (!isMeasurementValid) {
507
508
  var _annotation_style19, _annotation_style20;
508
509
  measurementElements.push(/*#__PURE__*/ React.createElement("div", {
@@ -515,7 +516,7 @@ export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
515
516
  }
516
517
  }
517
518
  },
518
- className: mergeClasses(classes.annotation, classes.measurement, layout === null || layout === void 0 ? void 0 : layout.className, (_annotation_style19 = annotation.style) === null || _annotation_style19 === void 0 ? void 0 : _annotation_style19.className),
519
+ className: mergeClasses(annotationClass, classes.measurement, layout === null || layout === void 0 ? void 0 : layout.className, (_annotation_style19 = annotation.style) === null || _annotation_style19 === void 0 ? void 0 : _annotation_style19.className),
519
520
  style: measurementStyle,
520
521
  "aria-hidden": true,
521
522
  "data-annotation-key": key,
@@ -535,15 +536,16 @@ export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
535
536
  className: mergeClasses(classes.annotationForeignObject),
536
537
  "data-annotation-key": key
537
538
  }, /*#__PURE__*/ React.createElement("div", {
538
- className: mergeClasses(classes.annotation, layout === null || layout === void 0 ? void 0 : layout.className, (_annotation_style17 = annotation.style) === null || _annotation_style17 === void 0 ? void 0 : _annotation_style17.className),
539
+ className: mergeClasses(annotationClass, layout === null || layout === void 0 ? void 0 : layout.className, (_annotation_style17 = annotation.style) === null || _annotation_style17 === void 0 ? void 0 : _annotation_style17.className),
539
540
  style: containerStyle,
540
541
  "data-annotation-key": key
541
542
  }, /*#__PURE__*/ React.createElement("div", {
542
- className: mergeClasses(classes.annotationContent, (_annotation_style18 = annotation.style) === null || _annotation_style18 === void 0 ? void 0 : _annotation_style18.className),
543
+ className: mergeClasses(classes.annotationContent, classes.annotationContentInteractive, (_annotation_style18 = annotation.style) === null || _annotation_style18 === void 0 ? void 0 : _annotation_style18.className),
543
544
  style: contentStyle,
544
545
  role: (_annotation_accessibility_role = (_annotation_accessibility = annotation.accessibility) === null || _annotation_accessibility === void 0 ? void 0 : _annotation_accessibility.role) !== null && _annotation_accessibility_role !== void 0 ? _annotation_accessibility_role : 'note',
545
546
  "aria-label": (_annotation_accessibility_ariaLabel = (_annotation_accessibility1 = annotation.accessibility) === null || _annotation_accessibility1 === void 0 ? void 0 : _annotation_accessibility1.ariaLabel) !== null && _annotation_accessibility_ariaLabel !== void 0 ? _annotation_accessibility_ariaLabel : annotationPlainText ? annotationPlainText : undefined,
546
547
  "aria-describedby": (_annotation_accessibility2 = annotation.accessibility) === null || _annotation_accessibility2 === void 0 ? void 0 : _annotation_accessibility2.ariaDescribedBy,
548
+ tabIndex: 0,
547
549
  "data-chart-annotation": "true",
548
550
  "data-annotation-key": key
549
551
  }, renderSimpleMarkup(annotationMarkupNodes, `${key}-content`)))));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeClasses } from '@griffel/react';\nimport type { ChartAnnotation } from '../../../types/ChartAnnotation';\nimport type {\n AnnotationPoint,\n ChartAnnotationContext,\n ChartAnnotationLayerProps,\n ConnectorRenderData,\n ResolvedAnnotationPosition,\n} from './ChartAnnotationLayer.types';\nimport {\n applyOpacityToColor,\n DEFAULT_ANNOTATION_BACKGROUND_OPACITY,\n DEFAULT_CONNECTOR_ARROW,\n DEFAULT_CONNECTOR_END_PADDING,\n DEFAULT_CONNECTOR_START_PADDING,\n DEFAULT_CONNECTOR_STROKE_WIDTH,\n getDefaultConnectorStrokeColor,\n useChartAnnotationLayerStyles,\n} from './useChartAnnotationLayer.styles';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\n\nconst DEFAULT_HORIZONTAL_ALIGN = 'center';\nconst DEFAULT_VERTICAL_ALIGN = 'middle';\nconst DEFAULT_FOREIGN_OBJECT_WIDTH = 180;\nconst DEFAULT_FOREIGN_OBJECT_HEIGHT = 60;\nconst MIN_ARROW_SIZE = 6;\nconst MAX_ARROW_SIZE = 24;\nconst ARROW_SIZE_SCALE = 0.35;\nconst MAX_SIMPLE_MARKUP_DEPTH = 5;\nconst CHAR_CODE_LESS_THAN = '<'.codePointAt(0)!;\nconst CHAR_CODE_GREATER_THAN = '>'.codePointAt(0)!;\ntype SimpleMarkupNode =\n | { type: 'text'; content: string }\n | { type: 'br' }\n | { type: 'element'; tag: 'b' | 'i'; children: SimpleMarkupNode[] };\n\ntype ElementMarkupNode = Extract<SimpleMarkupNode, { type: 'element' }>;\n\ntype StackFrame = {\n node: ElementMarkupNode | null;\n};\n\nconst decodeSimpleMarkupInput = (input: string): string => {\n const namedEntities: Record<string, string> = {\n amp: '&',\n quot: '\"',\n apos: \"'\",\n nbsp: '\\u00a0',\n };\n\n const withBasicEntitiesDecoded = input.replace(/&(#x?[0-9a-f]+|#\\d+|[a-z][\\w-]*);/gi, (match, entity) => {\n const lower = entity.toLowerCase();\n if (lower === 'lt' || lower === 'gt') {\n return `&${lower};`;\n }\n if (lower.startsWith('#')) {\n const isHex = lower[1] === 'x';\n const digits = lower.slice(isHex ? 2 : 1);\n const codePoint = Number.parseInt(digits, isHex ? 16 : 10);\n if (Number.isNaN(codePoint)) {\n return match;\n }\n if (codePoint === CHAR_CODE_LESS_THAN) {\n return '&lt;';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '&gt;';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/&lt;([^;]+)&gt;/gi, (match, inner) => {\n const normalized = inner.trim().replace(/\\s+/g, ' ');\n const lower = normalized.toLowerCase();\n\n switch (lower) {\n case 'b':\n return '<b>';\n case '/b':\n return '</b>';\n case 'i':\n return '<i>';\n case '/i':\n return '</i>';\n case 'br':\n case 'br/':\n case 'br /':\n return '<br />';\n default:\n return match;\n }\n });\n};\n\nconst appendTextNode = (nodes: SimpleMarkupNode[], text: string) => {\n if (text.length === 0) {\n return;\n }\n\n const last = nodes[nodes.length - 1];\n if (last && last.type === 'text') {\n last.content += text;\n } else {\n nodes.push({ type: 'text', content: text });\n }\n};\n\nconst serializeSimpleMarkup = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '<br />';\n }\n return `<${node.tag}>${serializeSimpleMarkup(node.children)}</${node.tag}>`;\n })\n .join('');\n\nconst parseSimpleMarkup = (input: string): SimpleMarkupNode[] => {\n if (!input) {\n return [];\n }\n\n const decodedInput = decodeSimpleMarkupInput(input);\n const rootChildren: SimpleMarkupNode[] = [];\n const stack: StackFrame[] = [{ node: null }];\n const currentChildren = () => stack[stack.length - 1].node?.children ?? rootChildren;\n const tagRegex = /<\\/?([a-z]+)\\s*\\/?\\s*>/gi;\n let lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = tagRegex.exec(decodedInput)) !== null) {\n const [fullMatch, rawTagName] = match;\n const tagName = rawTagName.toLowerCase();\n const isClosing = fullMatch.startsWith('</');\n const isSelfClosing = /\\/\\s*>$/.test(fullMatch);\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex, match.index));\n lastIndex = match.index + fullMatch.length;\n\n if (tagName === 'br' && !isClosing) {\n currentChildren().push({ type: 'br' });\n continue;\n }\n\n if ((tagName === 'b' || tagName === 'i') && !isSelfClosing) {\n if (isClosing) {\n const top = stack[stack.length - 1].node;\n if (stack.length > 1 && top?.tag === tagName) {\n stack.pop();\n } else {\n appendTextNode(currentChildren(), fullMatch);\n }\n } else {\n if (stack.length - 1 >= MAX_SIMPLE_MARKUP_DEPTH) {\n appendTextNode(currentChildren(), fullMatch);\n continue;\n }\n const elementNode: ElementMarkupNode = {\n type: 'element',\n tag: tagName as 'b' | 'i',\n children: [],\n };\n currentChildren().push(elementNode);\n stack.push({ node: elementNode });\n }\n continue;\n }\n\n appendTextNode(currentChildren(), fullMatch);\n }\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex));\n\n while (stack.length > 1) {\n const unclosed = stack.pop()!;\n const elementNode = unclosed.node;\n if (!elementNode) {\n continue;\n }\n\n const parentChildren = stack[stack.length - 1].node?.children ?? rootChildren;\n const lastChild = parentChildren[parentChildren.length - 1];\n if (lastChild === elementNode) {\n parentChildren.pop();\n } else {\n const nodeIndex = parentChildren.indexOf(elementNode);\n if (nodeIndex !== -1) {\n parentChildren.splice(nodeIndex, 1);\n }\n }\n\n appendTextNode(\n parentChildren,\n `<${elementNode.tag}>${serializeSimpleMarkup(elementNode.children)}</${elementNode.tag}>`,\n );\n }\n\n return rootChildren;\n};\n\nconst simpleMarkupNodesToPlainText = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '\\n';\n }\n return simpleMarkupNodesToPlainText(node.children);\n })\n .join('');\n\nconst renderSimpleMarkupNodeList = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode[] =>\n nodes.map((node, index) => {\n const key = `${keyPrefix}-${index}`;\n\n if (node.type === 'text') {\n return <React.Fragment key={key}>{node.content}</React.Fragment>;\n }\n\n if (node.type === 'br') {\n return <br key={key} />;\n }\n\n const Tag = node.tag === 'b' ? 'strong' : 'em';\n return React.createElement(Tag, { key }, ...renderSimpleMarkupNodeList(node.children, key));\n });\nconst renderSimpleMarkup = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode => {\n const rendered = renderSimpleMarkupNodeList(nodes, keyPrefix);\n return rendered.length <= 1 ? rendered[0] ?? null : rendered;\n};\n\nconst normalizeBandOffset = (\n scale: (((value: unknown) => number) & { bandwidth?: () => number }) | undefined,\n value: unknown,\n) => {\n const position = scale?.(value as never);\n if (typeof position !== 'number' || Number.isNaN(position)) {\n return undefined;\n }\n if (scale && typeof scale.bandwidth === 'function') {\n return position + scale.bandwidth() / 2;\n }\n return position;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\ntype AxisCoordinateType = 'data' | 'relative' | 'pixel';\n\nconst resolveDataCoordinate = (\n axis: 'x' | 'y',\n value: number | string | Date,\n context: ChartAnnotationContext,\n yAxis: 'primary' | 'secondary' = 'primary',\n): number | undefined => {\n if (axis === 'x') {\n const xScale = context.xScale;\n if (!xScale) {\n return undefined;\n }\n const parsedValue = value instanceof Date ? value.getTime() : value;\n return normalizeBandOffset(xScale, parsedValue);\n }\n\n const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;\n if (!yScale) {\n return undefined;\n }\n const parsedValue = value instanceof Date ? value.getTime() : value;\n return normalizeBandOffset(yScale, parsedValue);\n};\n\nconst resolveAxisCoordinate = (\n axis: 'x' | 'y',\n coordinateType: AxisCoordinateType,\n value: number | string | Date,\n context: ChartAnnotationContext,\n options: { yAxis?: 'primary' | 'secondary' } = {},\n): number | undefined => {\n switch (coordinateType) {\n case 'data':\n return resolveDataCoordinate(axis, value, context, options.yAxis);\n case 'relative':\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return undefined;\n }\n return axis === 'x'\n ? context.plotRect.x + context.plotRect.width * value\n : context.plotRect.y + context.plotRect.height * value;\n case 'pixel':\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return undefined;\n }\n return axis === 'x' ? context.plotRect.x + value : context.plotRect.y + value;\n default:\n return undefined;\n }\n};\n\nconst createMeasurementSignature = (\n annotationContentSignature: string,\n containerStyle: React.CSSProperties,\n contentStyle: React.CSSProperties,\n layoutClassName?: string,\n styleClassName?: string,\n) =>\n JSON.stringify({\n annotationContentSignature,\n containerStyle,\n contentStyle,\n layoutClassName: layoutClassName ?? '',\n styleClassName: styleClassName ?? '',\n });\n\ntype MeasurementEntry = { width: number; height: number; signature: string };\n\ntype CoordinateDescriptor = {\n xType: AxisCoordinateType;\n yType: AxisCoordinateType;\n yAxis?: 'primary' | 'secondary';\n};\n\nconst getCoordinateDescriptor = (coordinates: ChartAnnotation['coordinates']): CoordinateDescriptor | undefined => {\n switch (coordinates.type) {\n case 'data':\n return { xType: 'data', yType: 'data', yAxis: coordinates.yAxis };\n case 'relative':\n return { xType: 'relative', yType: 'relative' };\n case 'pixel':\n return { xType: 'pixel', yType: 'pixel' };\n case 'mixed':\n return {\n xType: coordinates.xCoordinateType,\n yType: coordinates.yCoordinateType,\n yAxis: coordinates.yAxis,\n };\n default:\n return undefined;\n }\n};\n\nconst resolveCoordinates = (\n annotation: ChartAnnotation,\n context: ChartAnnotationContext,\n): ResolvedAnnotationPosition | undefined => {\n const { coordinates, layout } = annotation;\n\n if (!coordinates) {\n return undefined;\n }\n\n const descriptor = getCoordinateDescriptor(coordinates);\n if (!descriptor) {\n return undefined;\n }\n\n const offsetX = layout?.offsetX ?? 0;\n const offsetY = layout?.offsetY ?? 0;\n\n const anchorX = resolveAxisCoordinate('x', descriptor.xType, coordinates.x, context);\n const anchorY = resolveAxisCoordinate('y', descriptor.yType, coordinates.y, context, {\n yAxis: descriptor.yAxis,\n });\n\n if (anchorX === undefined || anchorY === undefined) {\n return undefined;\n }\n\n const anchor: AnnotationPoint = { x: anchorX, y: anchorY };\n\n let left = anchor.x + offsetX;\n let top = anchor.y + offsetY;\n\n if (layout?.clipToBounds) {\n left = clamp(left, context.plotRect.x, context.plotRect.x + context.plotRect.width);\n top = clamp(top, context.plotRect.y, context.plotRect.y + context.plotRect.height);\n }\n\n return {\n anchor,\n point: { x: left, y: top },\n };\n};\n\nexport const ChartAnnotationLayer: React.FC<ChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, context } = props;\n\n const classes = useChartAnnotationLayerStyles(props);\n const idPrefix = useId('chart-annotation');\n const autoKeyPrefix = useId('chart-annotation-item');\n\n const [measurements, setMeasurements] = React.useState<Record<string, MeasurementEntry>>({});\n\n const resolvedAnnotations = React.useMemo(() => {\n let fallbackIndex = 0;\n return (annotationsProp ?? []).map(annotation => ({\n annotation,\n key: annotation.id ?? `${autoKeyPrefix}-${fallbackIndex++}`,\n }));\n }, [annotationsProp, autoKeyPrefix]);\n\n React.useEffect(() => {\n setMeasurements(prev => {\n if (resolvedAnnotations.length === 0) {\n if (Object.keys(prev).length === 0) {\n return prev;\n }\n return {} as Record<string, MeasurementEntry>;\n }\n\n const next: Record<string, MeasurementEntry> = {};\n resolvedAnnotations.forEach(({ key }) => {\n if (prev[key]) {\n next[key] = prev[key];\n }\n });\n\n if (Object.keys(next).length === Object.keys(prev).length) {\n let identical = true;\n for (const key of Object.keys(next)) {\n if (next[key] !== prev[key]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return prev;\n }\n }\n\n return next;\n });\n }, [resolvedAnnotations]);\n\n const updateMeasurement = React.useCallback((key: string, width: number, height: number, signature: string) => {\n setMeasurements(prev => {\n const prevEntry = prev[key];\n if (\n prevEntry &&\n prevEntry.signature === signature &&\n Math.abs(prevEntry.width - width) < 0.5 &&\n Math.abs(prevEntry.height - height) < 0.5\n ) {\n return prev;\n }\n\n if (width === 0 && height === 0) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { width, height, signature },\n };\n });\n }, []);\n\n const annotationForeignObjects: React.ReactNode[] = [];\n const measurementElements: React.ReactNode[] = [];\n const connectors: ConnectorRenderData[] = [];\n\n resolvedAnnotations.forEach(({ annotation, key }) => {\n const resolved = resolveCoordinates(annotation, context);\n if (!resolved) {\n return;\n }\n\n const rawAnnotationText = annotation.text === undefined || annotation.text === null ? '' : String(annotation.text);\n const annotationMarkupNodes = parseSimpleMarkup(rawAnnotationText);\n const annotationMarkupSignature = JSON.stringify(annotationMarkupNodes);\n const annotationPlainText = simpleMarkupNodesToPlainText(annotationMarkupNodes);\n\n const layout = annotation.layout;\n const horizontalAlign = layout?.align ?? DEFAULT_HORIZONTAL_ALIGN;\n const verticalAlign = layout?.verticalAlign ?? DEFAULT_VERTICAL_ALIGN;\n const backgroundOpacity = annotation.style?.opacity ?? DEFAULT_ANNOTATION_BACKGROUND_OPACITY;\n const baseBackgroundColor = annotation.style?.backgroundColor;\n const hasCustomBackground =\n annotation.style?.backgroundColor !== undefined || annotation.style?.opacity !== undefined;\n\n const containerStyle: React.CSSProperties = {\n maxWidth: layout?.maxWidth,\n ...(hasCustomBackground\n ? {\n backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity, {\n preserveOriginalOpacity: annotation.style?.opacity === undefined,\n }),\n }\n : {\n backgroundColor: applyOpacityToColor(tokens.colorNeutralBackground1, DEFAULT_ANNOTATION_BACKGROUND_OPACITY),\n }),\n borderColor: annotation.style?.borderColor,\n borderWidth: annotation.style?.borderWidth,\n borderStyle: annotation.style?.borderStyle ?? (annotation.style?.borderColor ? 'solid' : undefined),\n borderRadius: annotation.style?.borderRadius,\n padding: annotation.style?.padding,\n boxShadow: annotation.style?.boxShadow,\n };\n\n const contentStyle: React.CSSProperties = {\n color: annotation.style?.textColor,\n fontSize: annotation.style?.fontSize,\n fontWeight: annotation.style?.fontWeight,\n opacity: 1,\n };\n\n if (typeof annotation.style?.rotation === 'number' && !Number.isNaN(annotation.style.rotation)) {\n containerStyle.transform = `rotate(${annotation.style.rotation}deg)`;\n containerStyle.transformOrigin = '50% 50%';\n }\n\n const measurementSignature = createMeasurementSignature(\n annotationMarkupSignature,\n containerStyle,\n contentStyle,\n layout?.className,\n annotation.style?.className,\n );\n const measurementEntry = measurements[key];\n const isMeasurementValid = measurementEntry?.signature === measurementSignature;\n const measuredSize = isMeasurementValid ? measurementEntry : undefined;\n const width = Math.max(measuredSize?.width ?? layout?.maxWidth ?? DEFAULT_FOREIGN_OBJECT_WIDTH, 1);\n const height = Math.max(measuredSize?.height ?? DEFAULT_FOREIGN_OBJECT_HEIGHT, 1);\n\n const offsetX = horizontalAlign === 'center' ? -width / 2 : horizontalAlign === 'end' ? -width : 0;\n const offsetY = verticalAlign === 'middle' ? -height / 2 : verticalAlign === 'bottom' ? -height : 0;\n\n const baseTopLeftX = resolved.point.x + offsetX;\n const baseTopLeftY = resolved.point.y + offsetY;\n\n const usePlotBounds = layout?.clipToBounds !== false;\n const viewportX = usePlotBounds ? context.plotRect.x : 0;\n const viewportY = usePlotBounds ? context.plotRect.y : 0;\n const viewportWidth = usePlotBounds ? context.plotRect.width : context.svgRect.width ?? 0;\n const viewportHeight = usePlotBounds ? context.plotRect.height : context.svgRect.height ?? 0;\n\n const maxTopLeftX = viewportWidth > 0 ? viewportX + viewportWidth - width : baseTopLeftX;\n const maxTopLeftY = viewportHeight > 0 ? viewportY + viewportHeight - height : baseTopLeftY;\n\n let topLeftX = viewportWidth > 0 ? clamp(baseTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : baseTopLeftX;\n let topLeftY = viewportHeight > 0 ? clamp(baseTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : baseTopLeftY;\n\n let displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n\n if (annotation.connector) {\n const startPadding = annotation.connector.startPadding ?? 12;\n const endPadding = annotation.connector.endPadding ?? 0;\n const minArrowClearance = 6;\n const minDistance = Math.max(startPadding + endPadding + minArrowClearance, startPadding);\n\n const dx = displayPoint.x - resolved.anchor.x;\n const dy = displayPoint.y - resolved.anchor.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance < minDistance) {\n const fallbackDirection: AnnotationPoint = { x: 0, y: -1 };\n const ux = distance === 0 ? fallbackDirection.x : dx / distance;\n const uy = distance === 0 ? fallbackDirection.y : dy / distance;\n\n const desiredDisplayX = resolved.anchor.x + ux * minDistance;\n const desiredDisplayY = resolved.anchor.y + uy * minDistance;\n\n let desiredTopLeftX = desiredDisplayX + offsetX;\n let desiredTopLeftY = desiredDisplayY + offsetY;\n\n desiredTopLeftX =\n viewportWidth > 0 ? clamp(desiredTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : desiredTopLeftX;\n desiredTopLeftY =\n viewportHeight > 0 ? clamp(desiredTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : desiredTopLeftY;\n\n topLeftX = desiredTopLeftX;\n topLeftY = desiredTopLeftY;\n displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n }\n }\n\n const measurementStyle: React.CSSProperties = {\n position: 'absolute',\n left: topLeftX,\n top: topLeftY,\n pointerEvents: 'none',\n visibility: 'hidden',\n ...containerStyle,\n };\n\n if (!isMeasurementValid) {\n measurementElements.push(\n <div\n key={`${key}-measurement`}\n ref={node => {\n if (node) {\n const rect = node.getBoundingClientRect();\n if (rect.width !== 0 || rect.height !== 0) {\n updateMeasurement(key, rect.width, rect.height, measurementSignature);\n }\n }\n }}\n className={mergeClasses(\n classes.annotation,\n classes.measurement,\n layout?.className,\n annotation.style?.className,\n )}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n <div\n className={mergeClasses(classes.annotationContent, layout?.className, annotation.style?.className)}\n style={contentStyle}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-measurement`)}\n </div>\n </div>,\n );\n }\n\n annotationForeignObjects.push(\n <foreignObject\n key={`${key}-annotation`}\n x={topLeftX}\n y={topLeftY}\n width={width}\n height={height}\n className={mergeClasses(classes.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={mergeClasses(classes.annotation, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n <div\n className={mergeClasses(classes.annotationContent, annotation.style?.className)}\n style={contentStyle}\n role={annotation.accessibility?.role ?? 'note'}\n aria-label={annotation.accessibility?.ariaLabel ?? (annotationPlainText ? annotationPlainText : undefined)}\n aria-describedby={annotation.accessibility?.ariaDescribedBy}\n data-chart-annotation=\"true\"\n data-annotation-key={key}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-content`)}\n </div>\n </div>\n </foreignObject>,\n );\n\n if (annotation.connector) {\n const {\n startPadding = DEFAULT_CONNECTOR_START_PADDING,\n endPadding = DEFAULT_CONNECTOR_END_PADDING,\n strokeColor = getDefaultConnectorStrokeColor(),\n strokeWidth = DEFAULT_CONNECTOR_STROKE_WIDTH,\n dashArray,\n arrow = DEFAULT_CONNECTOR_ARROW,\n } = annotation.connector;\n\n const dx = resolved.anchor.x - displayPoint.x;\n const dy = resolved.anchor.y - displayPoint.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const ux = dx / distance;\n const uy = dy / distance;\n\n const sizeBasis = Math.max(1, Math.min(width, height));\n const proportionalSize = sizeBasis * ARROW_SIZE_SCALE;\n const maxByPadding = startPadding > 0 ? startPadding * 1.25 : MAX_ARROW_SIZE;\n const maxByDistance = distance * 0.6;\n const markerSize = clamp(proportionalSize, MIN_ARROW_SIZE, Math.min(MAX_ARROW_SIZE, maxByPadding, maxByDistance));\n const markerStrokeWidth = clamp(strokeWidth, 1, markerSize / 2);\n\n const start: AnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: AnnotationPoint = {\n x: resolved.anchor.x - ux * endPadding,\n y: resolved.anchor.y - uy * endPadding,\n };\n\n connectors.push({\n key: `${key}-connector`,\n start,\n end,\n strokeColor,\n strokeWidth,\n dashArray,\n arrow,\n markerSize,\n markerStrokeWidth,\n });\n }\n });\n\n if (annotationForeignObjects.length === 0 && connectors.length === 0) {\n return null;\n }\n\n const viewBoxWidth = context.svgRect.width || 1;\n const viewBoxHeight = context.svgRect.height || 1;\n\n const markerDefs: React.ReactNode[] = [];\n\n const createMarkerId = (color: string, position: 'start' | 'end', size: number, markerStrokeWidth: number) => {\n const id = `${idPrefix}-${position}-${markerDefs.length}`;\n const refY = size / 2;\n const refX = position === 'end' ? size : 0;\n const pathEnd = `M0 0 L ${size} ${refY} L0 ${size} Z`;\n const pathStart = `M ${size} 0 L0 ${refY} L ${size} ${size} Z`;\n const path = position === 'end' ? pathEnd : pathStart;\n\n markerDefs.push(\n <marker\n key={id}\n id={id}\n markerWidth={size}\n markerHeight={size}\n viewBox={`0 0 ${size} ${size}`}\n refX={refX}\n refY={refY}\n orient=\"auto\"\n markerUnits=\"userSpaceOnUse\"\n >\n <path\n d={path}\n fill={color}\n stroke={color}\n strokeWidth={markerStrokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </marker>,\n );\n\n return id;\n };\n\n const connectorElements = connectors.map(connector => {\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n if (connector.arrow === 'start' || connector.arrow === 'both') {\n markerStart = createMarkerId(connector.strokeColor, 'start', connector.markerSize, connector.markerStrokeWidth);\n }\n if (connector.arrow === 'end' || connector.arrow === 'both') {\n markerEnd = createMarkerId(connector.strokeColor, 'end', connector.markerSize, connector.markerStrokeWidth);\n }\n\n return (\n <line\n key={connector.key}\n x1={connector.start.x}\n y1={connector.start.y}\n x2={connector.end.x}\n y2={connector.end.y}\n stroke={connector.strokeColor}\n strokeWidth={connector.strokeWidth}\n strokeDasharray={connector.dashArray}\n strokeLinecap=\"round\"\n markerStart={markerStart ? `url(#${markerStart})` : undefined}\n markerEnd={markerEnd ? `url(#${markerEnd})` : undefined}\n />\n );\n });\n\n const shouldRenderSvg = connectors.length > 0 || annotationForeignObjects.length > 0;\n return (\n <div className={classes.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classes.connectorLayer}\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n preserveAspectRatio=\"none\"\n data-chart-annotation-svg=\"true\"\n >\n {markerDefs.length > 0 && <defs>{markerDefs}</defs>}\n {connectorElements.length > 0 && (\n <g aria-hidden=\"true\" className={classes.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"],"names":["React","mergeClasses","applyOpacityToColor","DEFAULT_ANNOTATION_BACKGROUND_OPACITY","DEFAULT_CONNECTOR_ARROW","DEFAULT_CONNECTOR_END_PADDING","DEFAULT_CONNECTOR_START_PADDING","DEFAULT_CONNECTOR_STROKE_WIDTH","getDefaultConnectorStrokeColor","useChartAnnotationLayerStyles","useId","tokens","DEFAULT_HORIZONTAL_ALIGN","DEFAULT_VERTICAL_ALIGN","DEFAULT_FOREIGN_OBJECT_WIDTH","DEFAULT_FOREIGN_OBJECT_HEIGHT","MIN_ARROW_SIZE","MAX_ARROW_SIZE","ARROW_SIZE_SCALE","MAX_SIMPLE_MARKUP_DEPTH","CHAR_CODE_LESS_THAN","codePointAt","CHAR_CODE_GREATER_THAN","decodeSimpleMarkupInput","input","namedEntities","amp","quot","apos","nbsp","withBasicEntitiesDecoded","replace","match","entity","lower","toLowerCase","startsWith","isHex","digits","slice","codePoint","Number","parseInt","isNaN","String","fromCodePoint","inner","normalized","trim","appendTextNode","nodes","text","length","last","type","content","push","serializeSimpleMarkup","map","node","tag","children","join","parseSimpleMarkup","decodedInput","rootChildren","stack","currentChildren","tagRegex","lastIndex","exec","fullMatch","rawTagName","tagName","isClosing","isSelfClosing","test","index","top","pop","elementNode","unclosed","parentChildren","lastChild","nodeIndex","indexOf","splice","simpleMarkupNodesToPlainText","renderSimpleMarkupNodeList","keyPrefix","key","Fragment","br","Tag","createElement","renderSimpleMarkup","rendered","normalizeBandOffset","scale","value","position","undefined","bandwidth","clamp","min","max","Math","resolveDataCoordinate","axis","context","yAxis","xScale","parsedValue","Date","getTime","yScale","yScaleSecondary","yScalePrimary","resolveAxisCoordinate","coordinateType","options","plotRect","x","width","y","height","createMeasurementSignature","annotationContentSignature","containerStyle","contentStyle","layoutClassName","styleClassName","JSON","stringify","getCoordinateDescriptor","coordinates","xType","yType","xCoordinateType","yCoordinateType","resolveCoordinates","annotation","layout","descriptor","offsetX","offsetY","anchorX","anchorY","anchor","left","clipToBounds","point","ChartAnnotationLayer","memo","props","annotations","annotationsProp","classes","idPrefix","autoKeyPrefix","measurements","setMeasurements","useState","resolvedAnnotations","useMemo","fallbackIndex","id","useEffect","prev","Object","keys","next","forEach","identical","updateMeasurement","useCallback","signature","prevEntry","abs","annotationForeignObjects","measurementElements","connectors","resolved","rawAnnotationText","annotationMarkupNodes","annotationMarkupSignature","annotationPlainText","horizontalAlign","align","verticalAlign","backgroundOpacity","style","opacity","baseBackgroundColor","backgroundColor","hasCustomBackground","maxWidth","preserveOriginalOpacity","colorNeutralBackground1","borderColor","borderWidth","borderStyle","borderRadius","padding","boxShadow","color","textColor","fontSize","fontWeight","rotation","transform","transformOrigin","measurementSignature","className","measurementEntry","isMeasurementValid","measuredSize","baseTopLeftX","baseTopLeftY","usePlotBounds","viewportX","viewportY","viewportWidth","svgRect","viewportHeight","maxTopLeftX","maxTopLeftY","topLeftX","topLeftY","displayPoint","connector","startPadding","endPadding","minArrowClearance","minDistance","dx","dy","distance","sqrt","fallbackDirection","ux","uy","desiredDisplayX","desiredDisplayY","desiredTopLeftX","desiredTopLeftY","measurementStyle","pointerEvents","visibility","div","ref","rect","getBoundingClientRect","measurement","aria-hidden","data-annotation-key","data-chart-annotation-measurement","annotationContent","foreignObject","annotationForeignObject","role","accessibility","aria-label","ariaLabel","aria-describedby","ariaDescribedBy","data-chart-annotation","strokeColor","strokeWidth","dashArray","arrow","sizeBasis","proportionalSize","maxByPadding","maxByDistance","markerSize","markerStrokeWidth","start","end","viewBoxWidth","viewBoxHeight","markerDefs","createMarkerId","size","refY","refX","pathEnd","pathStart","path","marker","markerWidth","markerHeight","viewBox","orient","markerUnits","d","fill","stroke","strokeLinecap","strokeLinejoin","connectorElements","markerStart","markerEnd","line","x1","y1","x2","y2","strokeDasharray","shouldRenderSvg","root","data-chart-annotation-layer","svg","connectorLayer","preserveAspectRatio","data-chart-annotation-svg","defs","g","connectorGroup","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { mergeClasses } from '@griffel/react';\nimport type { ChartAnnotation } from '../../../types/ChartAnnotation';\nimport type {\n AnnotationPoint,\n ChartAnnotationContext,\n ChartAnnotationLayerProps,\n ConnectorRenderData,\n ResolvedAnnotationPosition,\n} from './ChartAnnotationLayer.types';\nimport {\n applyOpacityToColor,\n DEFAULT_ANNOTATION_BACKGROUND_OPACITY,\n DEFAULT_CONNECTOR_ARROW,\n DEFAULT_CONNECTOR_END_PADDING,\n DEFAULT_CONNECTOR_START_PADDING,\n DEFAULT_CONNECTOR_STROKE_WIDTH,\n getDefaultConnectorStrokeColor,\n useChartAnnotationLayerStyles,\n} from './useChartAnnotationLayer.styles';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\n\nconst DEFAULT_HORIZONTAL_ALIGN = 'center';\nconst DEFAULT_VERTICAL_ALIGN = 'middle';\nconst DEFAULT_FOREIGN_OBJECT_WIDTH = 180;\nconst DEFAULT_FOREIGN_OBJECT_HEIGHT = 60;\nconst MIN_ARROW_SIZE = 6;\nconst MAX_ARROW_SIZE = 24;\nconst ARROW_SIZE_SCALE = 0.35;\nconst MAX_SIMPLE_MARKUP_DEPTH = 5;\nconst CHAR_CODE_LESS_THAN = '<'.codePointAt(0)!;\nconst CHAR_CODE_GREATER_THAN = '>'.codePointAt(0)!;\ntype SimpleMarkupNode =\n | { type: 'text'; content: string }\n | { type: 'br' }\n | { type: 'element'; tag: 'b' | 'i'; children: SimpleMarkupNode[] };\n\ntype ElementMarkupNode = Extract<SimpleMarkupNode, { type: 'element' }>;\n\ntype StackFrame = {\n node: ElementMarkupNode | null;\n};\n\nconst decodeSimpleMarkupInput = (input: string): string => {\n const namedEntities: Record<string, string> = {\n amp: '&',\n quot: '\"',\n apos: \"'\",\n nbsp: '\\u00a0',\n };\n\n const withBasicEntitiesDecoded = input.replace(/&(#x?[0-9a-f]+|#\\d+|[a-z][\\w-]*);/gi, (match, entity) => {\n const lower = entity.toLowerCase();\n if (lower === 'lt' || lower === 'gt') {\n return `&${lower};`;\n }\n if (lower.startsWith('#')) {\n const isHex = lower[1] === 'x';\n const digits = lower.slice(isHex ? 2 : 1);\n const codePoint = Number.parseInt(digits, isHex ? 16 : 10);\n if (Number.isNaN(codePoint)) {\n return match;\n }\n if (codePoint === CHAR_CODE_LESS_THAN) {\n return '&lt;';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '&gt;';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/&lt;([^;]+)&gt;/gi, (match, inner) => {\n const normalized = inner.trim().replace(/\\s+/g, ' ');\n const lower = normalized.toLowerCase();\n\n switch (lower) {\n case 'b':\n return '<b>';\n case '/b':\n return '</b>';\n case 'i':\n return '<i>';\n case '/i':\n return '</i>';\n case 'br':\n case 'br/':\n case 'br /':\n return '<br />';\n default:\n return match;\n }\n });\n};\n\nconst appendTextNode = (nodes: SimpleMarkupNode[], text: string) => {\n if (text.length === 0) {\n return;\n }\n\n const last = nodes[nodes.length - 1];\n if (last && last.type === 'text') {\n last.content += text;\n } else {\n nodes.push({ type: 'text', content: text });\n }\n};\n\nconst serializeSimpleMarkup = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '<br />';\n }\n return `<${node.tag}>${serializeSimpleMarkup(node.children)}</${node.tag}>`;\n })\n .join('');\n\nconst parseSimpleMarkup = (input: string): SimpleMarkupNode[] => {\n if (!input) {\n return [];\n }\n\n const decodedInput = decodeSimpleMarkupInput(input);\n const rootChildren: SimpleMarkupNode[] = [];\n const stack: StackFrame[] = [{ node: null }];\n const currentChildren = () => stack[stack.length - 1].node?.children ?? rootChildren;\n const tagRegex = /<\\/?([a-z]+)\\s*\\/?\\s*>/gi;\n let lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = tagRegex.exec(decodedInput)) !== null) {\n const [fullMatch, rawTagName] = match;\n const tagName = rawTagName.toLowerCase();\n const isClosing = fullMatch.startsWith('</');\n const isSelfClosing = /\\/\\s*>$/.test(fullMatch);\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex, match.index));\n lastIndex = match.index + fullMatch.length;\n\n if (tagName === 'br' && !isClosing) {\n currentChildren().push({ type: 'br' });\n continue;\n }\n\n if ((tagName === 'b' || tagName === 'i') && !isSelfClosing) {\n if (isClosing) {\n const top = stack[stack.length - 1].node;\n if (stack.length > 1 && top?.tag === tagName) {\n stack.pop();\n } else {\n appendTextNode(currentChildren(), fullMatch);\n }\n } else {\n if (stack.length - 1 >= MAX_SIMPLE_MARKUP_DEPTH) {\n appendTextNode(currentChildren(), fullMatch);\n continue;\n }\n const elementNode: ElementMarkupNode = {\n type: 'element',\n tag: tagName as 'b' | 'i',\n children: [],\n };\n currentChildren().push(elementNode);\n stack.push({ node: elementNode });\n }\n continue;\n }\n\n appendTextNode(currentChildren(), fullMatch);\n }\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex));\n\n while (stack.length > 1) {\n const unclosed = stack.pop()!;\n const elementNode = unclosed.node;\n if (!elementNode) {\n continue;\n }\n\n const parentChildren = stack[stack.length - 1].node?.children ?? rootChildren;\n const lastChild = parentChildren[parentChildren.length - 1];\n if (lastChild === elementNode) {\n parentChildren.pop();\n } else {\n const nodeIndex = parentChildren.indexOf(elementNode);\n if (nodeIndex !== -1) {\n parentChildren.splice(nodeIndex, 1);\n }\n }\n\n appendTextNode(\n parentChildren,\n `<${elementNode.tag}>${serializeSimpleMarkup(elementNode.children)}</${elementNode.tag}>`,\n );\n }\n\n return rootChildren;\n};\n\nconst simpleMarkupNodesToPlainText = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '\\n';\n }\n return simpleMarkupNodesToPlainText(node.children);\n })\n .join('');\n\nconst renderSimpleMarkupNodeList = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode[] =>\n nodes.map((node, index) => {\n const key = `${keyPrefix}-${index}`;\n\n if (node.type === 'text') {\n return <React.Fragment key={key}>{node.content}</React.Fragment>;\n }\n\n if (node.type === 'br') {\n return <br key={key} />;\n }\n\n const Tag = node.tag === 'b' ? 'strong' : 'em';\n return React.createElement(Tag, { key }, ...renderSimpleMarkupNodeList(node.children, key));\n });\nconst renderSimpleMarkup = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode => {\n const rendered = renderSimpleMarkupNodeList(nodes, keyPrefix);\n return rendered.length <= 1 ? rendered[0] ?? null : rendered;\n};\n\nconst normalizeBandOffset = (\n scale: (((value: unknown) => number) & { bandwidth?: () => number }) | undefined,\n value: unknown,\n) => {\n const position = scale?.(value as never);\n if (typeof position !== 'number' || Number.isNaN(position)) {\n return undefined;\n }\n if (scale && typeof scale.bandwidth === 'function') {\n return position + scale.bandwidth() / 2;\n }\n return position;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\ntype AxisCoordinateType = 'data' | 'relative' | 'pixel';\n\nconst resolveDataCoordinate = (\n axis: 'x' | 'y',\n value: number | string | Date,\n context: ChartAnnotationContext,\n yAxis: 'primary' | 'secondary' = 'primary',\n): number | undefined => {\n if (axis === 'x') {\n const xScale = context.xScale;\n if (!xScale) {\n return undefined;\n }\n const parsedValue = value instanceof Date ? value.getTime() : value;\n return normalizeBandOffset(xScale, parsedValue);\n }\n\n const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;\n if (!yScale) {\n return undefined;\n }\n const parsedValue = value instanceof Date ? value.getTime() : value;\n return normalizeBandOffset(yScale, parsedValue);\n};\n\nconst resolveAxisCoordinate = (\n axis: 'x' | 'y',\n coordinateType: AxisCoordinateType,\n value: number | string | Date,\n context: ChartAnnotationContext,\n options: { yAxis?: 'primary' | 'secondary' } = {},\n): number | undefined => {\n switch (coordinateType) {\n case 'data':\n return resolveDataCoordinate(axis, value, context, options.yAxis);\n case 'relative':\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return undefined;\n }\n return axis === 'x'\n ? context.plotRect.x + context.plotRect.width * value\n : context.plotRect.y + context.plotRect.height * value;\n case 'pixel':\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return undefined;\n }\n return axis === 'x' ? context.plotRect.x + value : context.plotRect.y + value;\n default:\n return undefined;\n }\n};\n\nconst createMeasurementSignature = (\n annotationContentSignature: string,\n containerStyle: React.CSSProperties,\n contentStyle: React.CSSProperties,\n layoutClassName?: string,\n styleClassName?: string,\n) =>\n JSON.stringify({\n annotationContentSignature,\n containerStyle,\n contentStyle,\n layoutClassName: layoutClassName ?? '',\n styleClassName: styleClassName ?? '',\n });\n\ntype MeasurementEntry = { width: number; height: number; signature: string };\n\ntype CoordinateDescriptor = {\n xType: AxisCoordinateType;\n yType: AxisCoordinateType;\n yAxis?: 'primary' | 'secondary';\n};\n\nconst getCoordinateDescriptor = (coordinates: ChartAnnotation['coordinates']): CoordinateDescriptor | undefined => {\n switch (coordinates.type) {\n case 'data':\n return { xType: 'data', yType: 'data', yAxis: coordinates.yAxis };\n case 'relative':\n return { xType: 'relative', yType: 'relative' };\n case 'pixel':\n return { xType: 'pixel', yType: 'pixel' };\n case 'mixed':\n return {\n xType: coordinates.xCoordinateType,\n yType: coordinates.yCoordinateType,\n yAxis: coordinates.yAxis,\n };\n default:\n return undefined;\n }\n};\n\nconst resolveCoordinates = (\n annotation: ChartAnnotation,\n context: ChartAnnotationContext,\n): ResolvedAnnotationPosition | undefined => {\n const { coordinates, layout } = annotation;\n\n if (!coordinates) {\n return undefined;\n }\n\n const descriptor = getCoordinateDescriptor(coordinates);\n if (!descriptor) {\n return undefined;\n }\n\n const offsetX = layout?.offsetX ?? 0;\n const offsetY = layout?.offsetY ?? 0;\n\n const anchorX = resolveAxisCoordinate('x', descriptor.xType, coordinates.x, context);\n const anchorY = resolveAxisCoordinate('y', descriptor.yType, coordinates.y, context, {\n yAxis: descriptor.yAxis,\n });\n\n if (anchorX === undefined || anchorY === undefined) {\n return undefined;\n }\n\n const anchor: AnnotationPoint = { x: anchorX, y: anchorY };\n\n let left = anchor.x + offsetX;\n let top = anchor.y + offsetY;\n\n if (layout?.clipToBounds) {\n left = clamp(left, context.plotRect.x, context.plotRect.x + context.plotRect.width);\n top = clamp(top, context.plotRect.y, context.plotRect.y + context.plotRect.height);\n }\n\n return {\n anchor,\n point: { x: left, y: top },\n };\n};\n\nexport const ChartAnnotationLayer: React.FC<ChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, context, hideDefaultStyles } = props;\n\n const classes = useChartAnnotationLayerStyles(props);\n const idPrefix = useId('chart-annotation');\n const autoKeyPrefix = useId('chart-annotation-item');\n\n const [measurements, setMeasurements] = React.useState<Record<string, MeasurementEntry>>({});\n\n const resolvedAnnotations = React.useMemo(() => {\n let fallbackIndex = 0;\n return (annotationsProp ?? []).map(annotation => ({\n annotation,\n key: annotation.id ?? `${autoKeyPrefix}-${fallbackIndex++}`,\n }));\n }, [annotationsProp, autoKeyPrefix]);\n\n React.useEffect(() => {\n setMeasurements(prev => {\n if (resolvedAnnotations.length === 0) {\n if (Object.keys(prev).length === 0) {\n return prev;\n }\n return {} as Record<string, MeasurementEntry>;\n }\n\n const next: Record<string, MeasurementEntry> = {};\n resolvedAnnotations.forEach(({ key }) => {\n if (prev[key]) {\n next[key] = prev[key];\n }\n });\n\n if (Object.keys(next).length === Object.keys(prev).length) {\n let identical = true;\n for (const key of Object.keys(next)) {\n if (next[key] !== prev[key]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return prev;\n }\n }\n\n return next;\n });\n }, [resolvedAnnotations]);\n\n const updateMeasurement = React.useCallback((key: string, width: number, height: number, signature: string) => {\n setMeasurements(prev => {\n const prevEntry = prev[key];\n if (\n prevEntry &&\n prevEntry.signature === signature &&\n Math.abs(prevEntry.width - width) < 0.5 &&\n Math.abs(prevEntry.height - height) < 0.5\n ) {\n return prev;\n }\n\n if (width === 0 && height === 0) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { width, height, signature },\n };\n });\n }, []);\n\n const annotationForeignObjects: React.ReactNode[] = [];\n const measurementElements: React.ReactNode[] = [];\n const connectors: ConnectorRenderData[] = [];\n\n resolvedAnnotations.forEach(({ annotation, key }) => {\n const resolved = resolveCoordinates(annotation, context);\n if (!resolved) {\n return;\n }\n\n const rawAnnotationText = annotation.text === undefined || annotation.text === null ? '' : String(annotation.text);\n const annotationMarkupNodes = parseSimpleMarkup(rawAnnotationText);\n const annotationMarkupSignature = JSON.stringify(annotationMarkupNodes);\n const annotationPlainText = simpleMarkupNodesToPlainText(annotationMarkupNodes);\n\n const layout = annotation.layout;\n const horizontalAlign = layout?.align ?? DEFAULT_HORIZONTAL_ALIGN;\n const verticalAlign = layout?.verticalAlign ?? DEFAULT_VERTICAL_ALIGN;\n const backgroundOpacity = annotation.style?.opacity ?? DEFAULT_ANNOTATION_BACKGROUND_OPACITY;\n const baseBackgroundColor = annotation.style?.backgroundColor;\n const hasCustomBackground =\n annotation.style?.backgroundColor !== undefined || annotation.style?.opacity !== undefined;\n\n const containerStyle: React.CSSProperties = {\n maxWidth: layout?.maxWidth,\n ...(hasCustomBackground\n ? {\n backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity, {\n preserveOriginalOpacity: annotation.style?.opacity === undefined,\n }),\n }\n : hideDefaultStyles\n ? {}\n : {\n backgroundColor: applyOpacityToColor(tokens.colorNeutralBackground1, DEFAULT_ANNOTATION_BACKGROUND_OPACITY),\n }),\n borderColor: annotation.style?.borderColor,\n borderWidth: annotation.style?.borderWidth,\n borderStyle: annotation.style?.borderStyle ?? (annotation.style?.borderColor ? 'solid' : undefined),\n borderRadius: annotation.style?.borderRadius,\n padding: annotation.style?.padding,\n boxShadow: annotation.style?.boxShadow,\n };\n\n const contentStyle: React.CSSProperties = {\n color: annotation.style?.textColor,\n fontSize: annotation.style?.fontSize,\n fontWeight: annotation.style?.fontWeight,\n opacity: 1,\n };\n\n if (typeof annotation.style?.rotation === 'number' && !Number.isNaN(annotation.style.rotation)) {\n containerStyle.transform = `rotate(${annotation.style.rotation}deg)`;\n containerStyle.transformOrigin = '50% 50%';\n }\n\n const measurementSignature = createMeasurementSignature(\n annotationMarkupSignature,\n containerStyle,\n contentStyle,\n layout?.className,\n annotation.style?.className,\n );\n const measurementEntry = measurements[key];\n const isMeasurementValid = measurementEntry?.signature === measurementSignature;\n const measuredSize = isMeasurementValid ? measurementEntry : undefined;\n const width = Math.max(measuredSize?.width ?? layout?.maxWidth ?? DEFAULT_FOREIGN_OBJECT_WIDTH, 1);\n const height = Math.max(measuredSize?.height ?? DEFAULT_FOREIGN_OBJECT_HEIGHT, 1);\n\n const offsetX = horizontalAlign === 'center' ? -width / 2 : horizontalAlign === 'end' ? -width : 0;\n const offsetY = verticalAlign === 'middle' ? -height / 2 : verticalAlign === 'bottom' ? -height : 0;\n\n const baseTopLeftX = resolved.point.x + offsetX;\n const baseTopLeftY = resolved.point.y + offsetY;\n\n const usePlotBounds = layout?.clipToBounds !== false;\n const viewportX = usePlotBounds ? context.plotRect.x : 0;\n const viewportY = usePlotBounds ? context.plotRect.y : 0;\n const viewportWidth = usePlotBounds ? context.plotRect.width : context.svgRect.width ?? 0;\n const viewportHeight = usePlotBounds ? context.plotRect.height : context.svgRect.height ?? 0;\n\n const maxTopLeftX = viewportWidth > 0 ? viewportX + viewportWidth - width : baseTopLeftX;\n const maxTopLeftY = viewportHeight > 0 ? viewportY + viewportHeight - height : baseTopLeftY;\n\n let topLeftX = viewportWidth > 0 ? clamp(baseTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : baseTopLeftX;\n let topLeftY = viewportHeight > 0 ? clamp(baseTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : baseTopLeftY;\n\n let displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n\n if (annotation.connector) {\n const startPadding = annotation.connector.startPadding ?? 12;\n const endPadding = annotation.connector.endPadding ?? 0;\n const minArrowClearance = 6;\n const minDistance = Math.max(startPadding + endPadding + minArrowClearance, startPadding);\n\n const dx = displayPoint.x - resolved.anchor.x;\n const dy = displayPoint.y - resolved.anchor.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance < minDistance) {\n const fallbackDirection: AnnotationPoint = { x: 0, y: -1 };\n const ux = distance === 0 ? fallbackDirection.x : dx / distance;\n const uy = distance === 0 ? fallbackDirection.y : dy / distance;\n\n const desiredDisplayX = resolved.anchor.x + ux * minDistance;\n const desiredDisplayY = resolved.anchor.y + uy * minDistance;\n\n let desiredTopLeftX = desiredDisplayX + offsetX;\n let desiredTopLeftY = desiredDisplayY + offsetY;\n\n desiredTopLeftX =\n viewportWidth > 0 ? clamp(desiredTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : desiredTopLeftX;\n desiredTopLeftY =\n viewportHeight > 0 ? clamp(desiredTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : desiredTopLeftY;\n\n topLeftX = desiredTopLeftX;\n topLeftY = desiredTopLeftY;\n displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n }\n }\n\n const measurementStyle: React.CSSProperties = {\n position: 'absolute',\n left: topLeftX,\n top: topLeftY,\n pointerEvents: 'none',\n visibility: 'hidden',\n ...containerStyle,\n };\n\n const annotationClass = hideDefaultStyles ? classes.annotationNoDefaults : classes.annotation;\n\n if (!isMeasurementValid) {\n measurementElements.push(\n <div\n key={`${key}-measurement`}\n ref={node => {\n if (node) {\n const rect = node.getBoundingClientRect();\n if (rect.width !== 0 || rect.height !== 0) {\n updateMeasurement(key, rect.width, rect.height, measurementSignature);\n }\n }\n }}\n className={mergeClasses(annotationClass, classes.measurement, layout?.className, annotation.style?.className)}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n <div\n className={mergeClasses(classes.annotationContent, layout?.className, annotation.style?.className)}\n style={contentStyle}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-measurement`)}\n </div>\n </div>,\n );\n }\n\n annotationForeignObjects.push(\n <foreignObject\n key={`${key}-annotation`}\n x={topLeftX}\n y={topLeftY}\n width={width}\n height={height}\n className={mergeClasses(classes.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={mergeClasses(annotationClass, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n <div\n className={mergeClasses(\n classes.annotationContent,\n classes.annotationContentInteractive,\n annotation.style?.className,\n )}\n style={contentStyle}\n role={annotation.accessibility?.role ?? 'note'}\n aria-label={annotation.accessibility?.ariaLabel ?? (annotationPlainText ? annotationPlainText : undefined)}\n aria-describedby={annotation.accessibility?.ariaDescribedBy}\n tabIndex={0}\n data-chart-annotation=\"true\"\n data-annotation-key={key}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-content`)}\n </div>\n </div>\n </foreignObject>,\n );\n\n if (annotation.connector) {\n const {\n startPadding = DEFAULT_CONNECTOR_START_PADDING,\n endPadding = DEFAULT_CONNECTOR_END_PADDING,\n strokeColor = getDefaultConnectorStrokeColor(),\n strokeWidth = DEFAULT_CONNECTOR_STROKE_WIDTH,\n dashArray,\n arrow = DEFAULT_CONNECTOR_ARROW,\n } = annotation.connector;\n\n const dx = resolved.anchor.x - displayPoint.x;\n const dy = resolved.anchor.y - displayPoint.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const ux = dx / distance;\n const uy = dy / distance;\n\n const sizeBasis = Math.max(1, Math.min(width, height));\n const proportionalSize = sizeBasis * ARROW_SIZE_SCALE;\n const maxByPadding = startPadding > 0 ? startPadding * 1.25 : MAX_ARROW_SIZE;\n const maxByDistance = distance * 0.6;\n const markerSize = clamp(proportionalSize, MIN_ARROW_SIZE, Math.min(MAX_ARROW_SIZE, maxByPadding, maxByDistance));\n const markerStrokeWidth = clamp(strokeWidth, 1, markerSize / 2);\n\n const start: AnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: AnnotationPoint = {\n x: resolved.anchor.x - ux * endPadding,\n y: resolved.anchor.y - uy * endPadding,\n };\n\n connectors.push({\n key: `${key}-connector`,\n start,\n end,\n strokeColor,\n strokeWidth,\n dashArray,\n arrow,\n markerSize,\n markerStrokeWidth,\n });\n }\n });\n\n if (annotationForeignObjects.length === 0 && connectors.length === 0) {\n return null;\n }\n\n const viewBoxWidth = context.svgRect.width || 1;\n const viewBoxHeight = context.svgRect.height || 1;\n\n const markerDefs: React.ReactNode[] = [];\n\n const createMarkerId = (color: string, position: 'start' | 'end', size: number, markerStrokeWidth: number) => {\n const id = `${idPrefix}-${position}-${markerDefs.length}`;\n const refY = size / 2;\n const refX = position === 'end' ? size : 0;\n const pathEnd = `M0 0 L ${size} ${refY} L0 ${size} Z`;\n const pathStart = `M ${size} 0 L0 ${refY} L ${size} ${size} Z`;\n const path = position === 'end' ? pathEnd : pathStart;\n\n markerDefs.push(\n <marker\n key={id}\n id={id}\n markerWidth={size}\n markerHeight={size}\n viewBox={`0 0 ${size} ${size}`}\n refX={refX}\n refY={refY}\n orient=\"auto\"\n markerUnits=\"userSpaceOnUse\"\n >\n <path\n d={path}\n fill={color}\n stroke={color}\n strokeWidth={markerStrokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </marker>,\n );\n\n return id;\n };\n\n const connectorElements = connectors.map(connector => {\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n if (connector.arrow === 'start' || connector.arrow === 'both') {\n markerStart = createMarkerId(connector.strokeColor, 'start', connector.markerSize, connector.markerStrokeWidth);\n }\n if (connector.arrow === 'end' || connector.arrow === 'both') {\n markerEnd = createMarkerId(connector.strokeColor, 'end', connector.markerSize, connector.markerStrokeWidth);\n }\n\n return (\n <line\n key={connector.key}\n x1={connector.start.x}\n y1={connector.start.y}\n x2={connector.end.x}\n y2={connector.end.y}\n stroke={connector.strokeColor}\n strokeWidth={connector.strokeWidth}\n strokeDasharray={connector.dashArray}\n strokeLinecap=\"round\"\n markerStart={markerStart ? `url(#${markerStart})` : undefined}\n markerEnd={markerEnd ? `url(#${markerEnd})` : undefined}\n />\n );\n });\n\n const shouldRenderSvg = connectors.length > 0 || annotationForeignObjects.length > 0;\n return (\n <div className={classes.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classes.connectorLayer}\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n preserveAspectRatio=\"none\"\n data-chart-annotation-svg=\"true\"\n >\n {markerDefs.length > 0 && <defs>{markerDefs}</defs>}\n {connectorElements.length > 0 && (\n <g aria-hidden=\"true\" className={classes.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"],"names":["React","mergeClasses","applyOpacityToColor","DEFAULT_ANNOTATION_BACKGROUND_OPACITY","DEFAULT_CONNECTOR_ARROW","DEFAULT_CONNECTOR_END_PADDING","DEFAULT_CONNECTOR_START_PADDING","DEFAULT_CONNECTOR_STROKE_WIDTH","getDefaultConnectorStrokeColor","useChartAnnotationLayerStyles","useId","tokens","DEFAULT_HORIZONTAL_ALIGN","DEFAULT_VERTICAL_ALIGN","DEFAULT_FOREIGN_OBJECT_WIDTH","DEFAULT_FOREIGN_OBJECT_HEIGHT","MIN_ARROW_SIZE","MAX_ARROW_SIZE","ARROW_SIZE_SCALE","MAX_SIMPLE_MARKUP_DEPTH","CHAR_CODE_LESS_THAN","codePointAt","CHAR_CODE_GREATER_THAN","decodeSimpleMarkupInput","input","namedEntities","amp","quot","apos","nbsp","withBasicEntitiesDecoded","replace","match","entity","lower","toLowerCase","startsWith","isHex","digits","slice","codePoint","Number","parseInt","isNaN","String","fromCodePoint","inner","normalized","trim","appendTextNode","nodes","text","length","last","type","content","push","serializeSimpleMarkup","map","node","tag","children","join","parseSimpleMarkup","decodedInput","rootChildren","stack","currentChildren","tagRegex","lastIndex","exec","fullMatch","rawTagName","tagName","isClosing","isSelfClosing","test","index","top","pop","elementNode","unclosed","parentChildren","lastChild","nodeIndex","indexOf","splice","simpleMarkupNodesToPlainText","renderSimpleMarkupNodeList","keyPrefix","key","Fragment","br","Tag","createElement","renderSimpleMarkup","rendered","normalizeBandOffset","scale","value","position","undefined","bandwidth","clamp","min","max","Math","resolveDataCoordinate","axis","context","yAxis","xScale","parsedValue","Date","getTime","yScale","yScaleSecondary","yScalePrimary","resolveAxisCoordinate","coordinateType","options","plotRect","x","width","y","height","createMeasurementSignature","annotationContentSignature","containerStyle","contentStyle","layoutClassName","styleClassName","JSON","stringify","getCoordinateDescriptor","coordinates","xType","yType","xCoordinateType","yCoordinateType","resolveCoordinates","annotation","layout","descriptor","offsetX","offsetY","anchorX","anchorY","anchor","left","clipToBounds","point","ChartAnnotationLayer","memo","props","annotations","annotationsProp","hideDefaultStyles","classes","idPrefix","autoKeyPrefix","measurements","setMeasurements","useState","resolvedAnnotations","useMemo","fallbackIndex","id","useEffect","prev","Object","keys","next","forEach","identical","updateMeasurement","useCallback","signature","prevEntry","abs","annotationForeignObjects","measurementElements","connectors","resolved","rawAnnotationText","annotationMarkupNodes","annotationMarkupSignature","annotationPlainText","horizontalAlign","align","verticalAlign","backgroundOpacity","style","opacity","baseBackgroundColor","backgroundColor","hasCustomBackground","maxWidth","preserveOriginalOpacity","colorNeutralBackground1","borderColor","borderWidth","borderStyle","borderRadius","padding","boxShadow","color","textColor","fontSize","fontWeight","rotation","transform","transformOrigin","measurementSignature","className","measurementEntry","isMeasurementValid","measuredSize","baseTopLeftX","baseTopLeftY","usePlotBounds","viewportX","viewportY","viewportWidth","svgRect","viewportHeight","maxTopLeftX","maxTopLeftY","topLeftX","topLeftY","displayPoint","connector","startPadding","endPadding","minArrowClearance","minDistance","dx","dy","distance","sqrt","fallbackDirection","ux","uy","desiredDisplayX","desiredDisplayY","desiredTopLeftX","desiredTopLeftY","measurementStyle","pointerEvents","visibility","annotationClass","annotationNoDefaults","div","ref","rect","getBoundingClientRect","measurement","aria-hidden","data-annotation-key","data-chart-annotation-measurement","annotationContent","foreignObject","annotationForeignObject","annotationContentInteractive","role","accessibility","aria-label","ariaLabel","aria-describedby","ariaDescribedBy","tabIndex","data-chart-annotation","strokeColor","strokeWidth","dashArray","arrow","sizeBasis","proportionalSize","maxByPadding","maxByDistance","markerSize","markerStrokeWidth","start","end","viewBoxWidth","viewBoxHeight","markerDefs","createMarkerId","size","refY","refX","pathEnd","pathStart","path","marker","markerWidth","markerHeight","viewBox","orient","markerUnits","d","fill","stroke","strokeLinecap","strokeLinejoin","connectorElements","markerStart","markerEnd","line","x1","y1","x2","y2","strokeDasharray","shouldRenderSvg","root","data-chart-annotation-layer","svg","connectorLayer","preserveAspectRatio","data-chart-annotation-svg","defs","g","connectorGroup","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/CommonComponents/Annotations/ChartAnnotationLayer.types.ts"],"sourcesContent":["import { ChartAnnotation, ChartAnnotationArrowHead } from '../../../types/ChartAnnotation';\n\nexport interface AnnotationPoint {\n x: number;\n y: number;\n}\n\nexport interface AnnotationPlotRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface ChartAnnotationContext {\n /** Rectangle describing the drawable area of the chart (without margins) */\n plotRect: AnnotationPlotRect;\n /** Size of the owning SVG element */\n svgRect: { width: number; height: number };\n /** Indicates if layout should be mirrored */\n isRtl?: boolean;\n /** Primary x scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: (value: any) => number;\n /** Primary y scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: (value: any) => number;\n /** Secondary y scale when present */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: (value: any) => number;\n}\n\nexport interface ChartAnnotationLayerProps {\n annotations?: ChartAnnotation[];\n context: ChartAnnotationContext;\n className?: string;\n}\n\nexport interface ResolvedAnnotationPosition {\n /** Final absolute position after applying layout and offsets */\n point: AnnotationPoint;\n /** Raw anchor position before offsets (used for connectors) */\n anchor: AnnotationPoint;\n}\n\nexport type ConnectorRenderData = {\n key: string;\n start: AnnotationPoint;\n end: AnnotationPoint;\n strokeColor: string;\n strokeWidth: number;\n dashArray?: string;\n arrow: ChartAnnotationArrowHead;\n markerSize: number;\n markerStrokeWidth: number;\n};\n"],"names":[],"mappings":"AA6CA,WAUE"}
1
+ {"version":3,"sources":["../src/components/CommonComponents/Annotations/ChartAnnotationLayer.types.ts"],"sourcesContent":["import { ChartAnnotation, ChartAnnotationArrowHead } from '../../../types/ChartAnnotation';\n\nexport interface AnnotationPoint {\n x: number;\n y: number;\n}\n\nexport interface AnnotationPlotRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface ChartAnnotationContext {\n /** Rectangle describing the drawable area of the chart (without margins) */\n plotRect: AnnotationPlotRect;\n /** Size of the owning SVG element */\n svgRect: { width: number; height: number };\n /** Indicates if layout should be mirrored */\n isRtl?: boolean;\n /** Primary x scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: (value: any) => number;\n /** Primary y scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: (value: any) => number;\n /** Secondary y scale when present */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: (value: any) => number;\n}\n\nexport interface ChartAnnotationLayerProps {\n annotations?: ChartAnnotation[];\n context: ChartAnnotationContext;\n className?: string;\n /**\n * When true, removes default border, shadow, and background styling from annotations.\n * @default false\n */\n hideDefaultStyles?: boolean;\n}\n\nexport interface ResolvedAnnotationPosition {\n /** Final absolute position after applying layout and offsets */\n point: AnnotationPoint;\n /** Raw anchor position before offsets (used for connectors) */\n anchor: AnnotationPoint;\n}\n\nexport type ConnectorRenderData = {\n key: string;\n start: AnnotationPoint;\n end: AnnotationPoint;\n strokeColor: string;\n strokeWidth: number;\n dashArray?: string;\n arrow: ChartAnnotationArrowHead;\n markerSize: number;\n markerStrokeWidth: number;\n};\n"],"names":[],"mappings":"AAkDA,WAUE"}