@fluentui/react-charts 0.0.0-nightly-20251209-0407.1 → 0.0.0-nightly-20251211-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 (31) hide show
  1. package/CHANGELOG.md +13 -13
  2. package/dist/index.d.ts +26 -6
  3. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +87 -49
  4. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  6. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +84 -158
  7. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  8. package/lib/components/GanttChart/GanttChart.js +1 -1
  9. package/lib/components/GanttChart/GanttChart.js.map +1 -1
  10. package/lib/components/LineChart/LineChart.js +60 -40
  11. package/lib/components/LineChart/LineChart.js.map +1 -1
  12. package/lib/components/ScatterChart/ScatterChart.js +6 -2
  13. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  14. package/lib/types/ChartAnnotation.js.map +1 -1
  15. package/lib/utilities/utilities.js +18 -9
  16. package/lib/utilities/utilities.js.map +1 -1
  17. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +87 -49
  18. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  19. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  20. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +84 -158
  21. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  22. package/lib-commonjs/components/GanttChart/GanttChart.js +1 -1
  23. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
  24. package/lib-commonjs/components/LineChart/LineChart.js +60 -40
  25. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  26. package/lib-commonjs/components/ScatterChart/ScatterChart.js +6 -2
  27. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  28. package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
  29. package/lib-commonjs/utilities/utilities.js +18 -9
  30. package/lib-commonjs/utilities/utilities.js.map +1 -1
  31. package/package.json +13 -13
package/CHANGELOG.md CHANGED
@@ -1,26 +1,26 @@
1
1
  # Change Log - @fluentui/react-charts
2
2
 
3
- This log was last generated on Tue, 09 Dec 2025 04:21:55 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 11 Dec 2025 04:21:24 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.0.0-nightly-20251209-0407.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v0.0.0-nightly-20251209-0407.1)
7
+ ## [0.0.0-nightly-20251211-0406.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v0.0.0-nightly-20251211-0406.1)
8
8
 
9
- Tue, 09 Dec 2025 04:21:55 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.7..@fluentui/react-charts_v0.0.0-nightly-20251209-0407.1)
9
+ Thu, 11 Dec 2025 04:21:24 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.7..@fluentui/react-charts_v0.0.0-nightly-20251211-0406.1)
11
11
 
12
12
  ### Changes
13
13
 
14
14
  - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/not available) by fluentui-internal@service.microsoft.com)
15
- - Bump @fluentui/react-button to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
16
- - Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
17
- - Bump @fluentui/react-overflow to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
18
- - Bump @fluentui/react-popover to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
19
- - Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
20
- - Bump @fluentui/react-tabster to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
21
- - Bump @fluentui/react-theme to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
22
- - Bump @fluentui/react-tooltip to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
23
- - Bump @fluentui/react-utilities to v0.0.0-nightly-20251209-0407.1 ([commit](https://github.com/microsoft/fluentui/commit/44a1bcdf5cea90a08db52982f47afc78cc0835bc) by beachball)
15
+ - Bump @fluentui/react-button to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
16
+ - Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
17
+ - Bump @fluentui/react-overflow to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
18
+ - Bump @fluentui/react-popover to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
19
+ - Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
20
+ - Bump @fluentui/react-tabster to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
21
+ - Bump @fluentui/react-theme to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
22
+ - Bump @fluentui/react-tooltip to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
23
+ - Bump @fluentui/react-utilities to v0.0.0-nightly-20251211-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/323f8747396b73ac9e92681d60c4882d28ec45ad) by beachball)
24
24
 
25
25
  ## [9.3.7](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.3.7)
26
26
 
package/dist/index.d.ts CHANGED
@@ -407,7 +407,7 @@ export declare interface CartesianChartProps {
407
407
  */
408
408
  xMinValue?: number;
409
409
  /**
410
- * maximum data value point in x-axis (for numeric x-axis)
410
+ * maximum data value point in x-axis
411
411
  */
412
412
  xMaxValue?: number;
413
413
  /**
@@ -809,17 +809,37 @@ export declare interface ChartAnnotationContext {
809
809
  }
810
810
 
811
811
  export declare type ChartAnnotationCoordinate = {
812
- /** Cartesian data coordinates mapped through the chart scales or
813
- * Normalised coordinates within the plot area (0-1) or
814
- * Absolute pixel position relative to the chart's SVG origin
815
- */
816
- type: 'data' | 'relative' | 'pixel';
812
+ /** Cartesian data coordinates mapped through the chart scales */
813
+ type: 'data';
817
814
  /** x-axis value in the data domain */
818
815
  x: number | string | Date;
819
816
  /** y-axis value in the data domain */
820
817
  y: number | string | Date;
821
818
  /** Use the secondary y scale when available */
822
819
  yAxis?: 'primary' | 'secondary';
820
+ } | {
821
+ /** Normalised coordinates within the plot area (0-1) */
822
+ type: 'relative';
823
+ /** Fractional x-position inside the plot area */
824
+ x: number;
825
+ /** Fractional y-position inside the plot area */
826
+ y: number;
827
+ } | {
828
+ /** Absolute pixel position relative to the chart's plot origin */
829
+ type: 'pixel';
830
+ /** Horizontal pixel offset from the plot origin */
831
+ x: number;
832
+ /** Vertical pixel offset from the plot origin */
833
+ y: number;
834
+ } | {
835
+ /** Mixed coordinate systems per axis (e.g., data X + relative Y) */
836
+ type: 'mixed';
837
+ xCoordinateType: 'data' | 'relative' | 'pixel';
838
+ yCoordinateType: 'data' | 'relative' | 'pixel';
839
+ x: number | string | Date;
840
+ y: number | string | Date;
841
+ /** Use the secondary y scale when the Y coordinate maps to data */
842
+ yAxis?: 'primary' | 'secondary';
823
843
  };
824
844
 
825
845
  export declare type ChartAnnotationHorizontalAlign = 'start' | 'center' | 'end';
@@ -14,10 +14,6 @@ const ARROW_SIZE_SCALE = 0.35;
14
14
  const MAX_SIMPLE_MARKUP_DEPTH = 5;
15
15
  const CHAR_CODE_LESS_THAN = '<'.codePointAt(0);
16
16
  const CHAR_CODE_GREATER_THAN = '>'.codePointAt(0);
17
- const getAnnotationKey = (annotation, index)=>{
18
- var _annotation_id, _ref;
19
- return (_ref = (_annotation_id = annotation.id) !== null && _annotation_id !== void 0 ? _annotation_id : typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined) !== null && _ref !== void 0 ? _ref : `annotation-${index}`;
20
- };
21
17
  const decodeSimpleMarkupInput = (input)=>{
22
18
  const namedEntities = {
23
19
  amp: '&',
@@ -216,6 +212,40 @@ const normalizeBandOffset = (scale, value)=>{
216
212
  return position;
217
213
  };
218
214
  const clamp = (value, min, max)=>Math.max(min, Math.min(max, value));
215
+ const resolveDataCoordinate = (axis, value, context, yAxis = 'primary')=>{
216
+ if (axis === 'x') {
217
+ const xScale = context.xScale;
218
+ if (!xScale) {
219
+ return undefined;
220
+ }
221
+ const parsedValue = value instanceof Date ? value.getTime() : value;
222
+ return normalizeBandOffset(xScale, parsedValue);
223
+ }
224
+ const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;
225
+ if (!yScale) {
226
+ return undefined;
227
+ }
228
+ const parsedValue = value instanceof Date ? value.getTime() : value;
229
+ return normalizeBandOffset(yScale, parsedValue);
230
+ };
231
+ const resolveAxisCoordinate = (axis, coordinateType, value, context, options = {})=>{
232
+ switch(coordinateType){
233
+ case 'data':
234
+ return resolveDataCoordinate(axis, value, context, options.yAxis);
235
+ case 'relative':
236
+ if (typeof value !== 'number' || Number.isNaN(value)) {
237
+ return undefined;
238
+ }
239
+ return axis === 'x' ? context.plotRect.x + context.plotRect.width * value : context.plotRect.y + context.plotRect.height * value;
240
+ case 'pixel':
241
+ if (typeof value !== 'number' || Number.isNaN(value)) {
242
+ return undefined;
243
+ }
244
+ return axis === 'x' ? context.plotRect.x + value : context.plotRect.y + value;
245
+ default:
246
+ return undefined;
247
+ }
248
+ };
219
249
  const createMeasurementSignature = (annotationContentSignature, containerStyle, contentStyle, layoutClassName, styleClassName)=>JSON.stringify({
220
250
  annotationContentSignature,
221
251
  containerStyle,
@@ -223,58 +253,58 @@ const createMeasurementSignature = (annotationContentSignature, containerStyle,
223
253
  layoutClassName: layoutClassName !== null && layoutClassName !== void 0 ? layoutClassName : '',
224
254
  styleClassName: styleClassName !== null && styleClassName !== void 0 ? styleClassName : ''
225
255
  });
256
+ const getCoordinateDescriptor = (coordinates)=>{
257
+ switch(coordinates.type){
258
+ case 'data':
259
+ return {
260
+ xType: 'data',
261
+ yType: 'data',
262
+ yAxis: coordinates.yAxis
263
+ };
264
+ case 'relative':
265
+ return {
266
+ xType: 'relative',
267
+ yType: 'relative'
268
+ };
269
+ case 'pixel':
270
+ return {
271
+ xType: 'pixel',
272
+ yType: 'pixel'
273
+ };
274
+ case 'mixed':
275
+ return {
276
+ xType: coordinates.xCoordinateType,
277
+ yType: coordinates.yCoordinateType,
278
+ yAxis: coordinates.yAxis
279
+ };
280
+ default:
281
+ return undefined;
282
+ }
283
+ };
226
284
  const resolveCoordinates = (annotation, context)=>{
227
285
  const { coordinates, layout } = annotation;
228
286
  if (!coordinates) {
229
287
  return undefined;
230
288
  }
289
+ const descriptor = getCoordinateDescriptor(coordinates);
290
+ if (!descriptor) {
291
+ return undefined;
292
+ }
231
293
  var _layout_offsetX;
232
294
  const offsetX = (_layout_offsetX = layout === null || layout === void 0 ? void 0 : layout.offsetX) !== null && _layout_offsetX !== void 0 ? _layout_offsetX : 0;
233
295
  var _layout_offsetY;
234
296
  const offsetY = (_layout_offsetY = layout === null || layout === void 0 ? void 0 : layout.offsetY) !== null && _layout_offsetY !== void 0 ? _layout_offsetY : 0;
297
+ const anchorX = resolveAxisCoordinate('x', descriptor.xType, coordinates.x, context);
298
+ const anchorY = resolveAxisCoordinate('y', descriptor.yType, coordinates.y, context, {
299
+ yAxis: descriptor.yAxis
300
+ });
301
+ if (anchorX === undefined || anchorY === undefined) {
302
+ return undefined;
303
+ }
235
304
  const anchor = {
236
- x: 0,
237
- y: 0
305
+ x: anchorX,
306
+ y: anchorY
238
307
  };
239
- switch(coordinates.type){
240
- case 'data':
241
- {
242
- const { x, y, yAxis = 'primary' } = coordinates;
243
- const xScale = context.xScale;
244
- const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;
245
- if (!xScale || !yScale) {
246
- return undefined;
247
- }
248
- const xValue = normalizeBandOffset(xScale, x instanceof Date ? x.getTime() : x);
249
- const yValue = normalizeBandOffset(yScale, y instanceof Date ? y.getTime() : y);
250
- if (typeof xValue !== 'number' || typeof yValue !== 'number') {
251
- return undefined;
252
- }
253
- anchor.x = xValue;
254
- anchor.y = yValue;
255
- break;
256
- }
257
- case 'relative':
258
- {
259
- if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {
260
- return undefined;
261
- }
262
- anchor.x = context.plotRect.x + context.plotRect.width * coordinates.x;
263
- anchor.y = context.plotRect.y + context.plotRect.height * coordinates.y;
264
- break;
265
- }
266
- case 'pixel':
267
- {
268
- if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {
269
- return undefined;
270
- }
271
- anchor.x = context.plotRect.x + coordinates.x;
272
- anchor.y = context.plotRect.y + coordinates.y;
273
- break;
274
- }
275
- default:
276
- return undefined;
277
- }
278
308
  let left = anchor.x + offsetX;
279
309
  let top = anchor.y + offsetY;
280
310
  if (layout === null || layout === void 0 ? void 0 : layout.clipToBounds) {
@@ -293,12 +323,20 @@ export const ChartAnnotationLayer = /*#__PURE__*/ React.memo((props)=>{
293
323
  const { annotations: annotationsProp, context } = props;
294
324
  const classes = useChartAnnotationLayerStyles(props);
295
325
  const idPrefix = useId('chart-annotation');
326
+ const autoKeyPrefix = useId('chart-annotation-item');
296
327
  const [measurements, setMeasurements] = React.useState({});
297
- const resolvedAnnotations = React.useMemo(()=>(annotationsProp !== null && annotationsProp !== void 0 ? annotationsProp : []).map((annotation, index)=>({
328
+ const resolvedAnnotations = React.useMemo(()=>{
329
+ let fallbackIndex = 0;
330
+ return (annotationsProp !== null && annotationsProp !== void 0 ? annotationsProp : []).map((annotation)=>{
331
+ var _annotation_id;
332
+ return {
298
333
  annotation,
299
- key: getAnnotationKey(annotation, index)
300
- })), [
301
- annotationsProp
334
+ key: (_annotation_id = annotation.id) !== null && _annotation_id !== void 0 ? _annotation_id : `${autoKeyPrefix}-${fallbackIndex++}`
335
+ };
336
+ });
337
+ }, [
338
+ annotationsProp,
339
+ autoKeyPrefix
302
340
  ]);
303
341
  React.useEffect(()=>{
304
342
  setMeasurements((prev)=>{
@@ -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)!;\nconst getAnnotationKey = (annotation: ChartAnnotation, index: number) =>\n annotation.id ??\n (typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined) ??\n `annotation-${index}`;\n\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\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\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 offsetX = layout?.offsetX ?? 0;\n const offsetY = layout?.offsetY ?? 0;\n\n const anchor: AnnotationPoint = { x: 0, y: 0 };\n\n switch (coordinates.type) {\n case 'data': {\n const { x, y, yAxis = 'primary' } = coordinates;\n const xScale = context.xScale;\n const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;\n if (!xScale || !yScale) {\n return undefined;\n }\n const xValue = normalizeBandOffset(xScale, x instanceof Date ? x.getTime() : x);\n const yValue = normalizeBandOffset(yScale, y instanceof Date ? y.getTime() : y);\n if (typeof xValue !== 'number' || typeof yValue !== 'number') {\n return undefined;\n }\n anchor.x = xValue;\n anchor.y = yValue;\n break;\n }\n case 'relative': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + context.plotRect.width * coordinates.x;\n anchor.y = context.plotRect.y + context.plotRect.height * coordinates.y;\n break;\n }\n case 'pixel': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + coordinates.x;\n anchor.y = context.plotRect.y + coordinates.y;\n break;\n }\n default:\n return undefined;\n }\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\n const [measurements, setMeasurements] = React.useState<Record<string, MeasurementEntry>>({});\n\n const resolvedAnnotations = React.useMemo(\n () =>\n (annotationsProp ?? []).map((annotation, index) => ({ annotation, key: getAnnotationKey(annotation, index) })),\n [annotationsProp],\n );\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 }\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","getAnnotationKey","annotation","index","id","text","String","undefined","decodeSimpleMarkupInput","input","namedEntities","amp","quot","apos","nbsp","withBasicEntitiesDecoded","replace","match","entity","lower","toLowerCase","startsWith","isHex","digits","slice","codePoint","Number","parseInt","isNaN","fromCodePoint","inner","normalized","trim","appendTextNode","nodes","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","top","pop","elementNode","unclosed","parentChildren","lastChild","nodeIndex","indexOf","splice","simpleMarkupNodesToPlainText","renderSimpleMarkupNodeList","keyPrefix","key","Fragment","br","Tag","createElement","renderSimpleMarkup","rendered","normalizeBandOffset","scale","value","position","bandwidth","clamp","min","max","Math","createMeasurementSignature","annotationContentSignature","containerStyle","contentStyle","layoutClassName","styleClassName","JSON","stringify","resolveCoordinates","context","coordinates","layout","offsetX","offsetY","anchor","x","y","yAxis","xScale","yScale","yScaleSecondary","yScalePrimary","xValue","Date","getTime","yValue","plotRect","width","height","left","clipToBounds","point","ChartAnnotationLayer","memo","props","annotations","annotationsProp","classes","idPrefix","measurements","setMeasurements","useState","resolvedAnnotations","useMemo","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","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 } = 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 }\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","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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"}