@fluentui/react-charts 0.0.0-nightly-20251210-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.
- package/CHANGELOG.md +13 -13
- package/dist/index.d.ts +25 -5
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +87 -49
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +81 -155
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +54 -38
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +87 -49
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +81 -155
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +54 -38
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/ChartAnnotation.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ChartAnnotationCoordinate
|
|
1
|
+
{"version":3,"sources":["../src/types/ChartAnnotation.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ChartAnnotationCoordinate =\n | {\n /** Cartesian data coordinates mapped through the chart scales */\n type: 'data';\n /** x-axis value in the data domain */\n x: number | string | Date;\n /** y-axis value in the data domain */\n y: number | string | Date;\n /** Use the secondary y scale when available */\n yAxis?: 'primary' | 'secondary';\n }\n | {\n /** Normalised coordinates within the plot area (0-1) */\n type: 'relative';\n /** Fractional x-position inside the plot area */\n x: number;\n /** Fractional y-position inside the plot area */\n y: number;\n }\n | {\n /** Absolute pixel position relative to the chart's plot origin */\n type: 'pixel';\n /** Horizontal pixel offset from the plot origin */\n x: number;\n /** Vertical pixel offset from the plot origin */\n y: number;\n }\n | {\n /** Mixed coordinate systems per axis (e.g., data X + relative Y) */\n type: 'mixed';\n xCoordinateType: 'data' | 'relative' | 'pixel';\n yCoordinateType: 'data' | 'relative' | 'pixel';\n x: number | string | Date;\n y: number | string | Date;\n /** Use the secondary y scale when the Y coordinate maps to data */\n yAxis?: 'primary' | 'secondary';\n };\n\nexport type ChartAnnotationHorizontalAlign = 'start' | 'center' | 'end';\nexport type ChartAnnotationVerticalAlign = 'top' | 'middle' | 'bottom';\n\nexport type ChartAnnotationArrowHead = 'none' | 'start' | 'end' | 'both';\n\nexport interface ChartAnnotationConnectorProps {\n /** Distance in pixels between the annotation element and the start of the connector. */\n startPadding?: number;\n /** Distance in pixels between the anchor point and the end of the connector. */\n endPadding?: number;\n /** Stroke colour for the connector. */\n strokeColor?: string;\n /** Stroke width in pixels. */\n strokeWidth?: number;\n /** SVG stroke dash array for dashed connectors. */\n dashArray?: string;\n /** Arrow head placement. Defaults to `'end'`. */\n arrow?: ChartAnnotationArrowHead;\n}\n\nexport interface ChartAnnotationLayoutProps {\n /** Horizontal alignment of the annotation relative to the anchor point */\n align?: ChartAnnotationHorizontalAlign;\n /** Vertical alignment of the annotation relative to the anchor point */\n verticalAlign?: ChartAnnotationVerticalAlign;\n /** Horizontal offset in pixels applied after alignment */\n offsetX?: number;\n /** Vertical offset in pixels applied after alignment */\n offsetY?: number;\n /** Optional maximum width for wrapped text */\n maxWidth?: number;\n /** Whether the annotation should remain inside the plot area */\n clipToBounds?: boolean;\n /** Additional CSS classes applied to the annotation wrapper */\n className?: string;\n}\n\nexport interface ChartAnnotationStyleProps {\n /** Text colour */\n textColor?: string;\n /** Background colour for the annotation container */\n backgroundColor?: string;\n /** Border colour */\n borderColor?: string;\n /** Border width */\n borderWidth?: number;\n /** Border style (solid, dashed, etc.) */\n borderStyle?: React.CSSProperties['borderStyle'];\n /** Border radius */\n borderRadius?: number;\n /** Box shadow applied to annotation */\n boxShadow?: string;\n /** Font size override */\n fontSize?: string;\n /** Font weight override */\n fontWeight?: React.CSSProperties['fontWeight'];\n /** Padding around the text. Accepts CSS shorthand notation */\n padding?: string;\n /** Opacity for the annotation container */\n opacity?: number;\n /** Optional class name applied to the annotation element */\n className?: string;\n /** Rotation, in degrees, applied to the annotation container */\n rotation?: number;\n}\n\nexport interface ChartAnnotationAccessibilityProps {\n /** Accessible label announced by assistive technologies */\n ariaLabel?: string;\n /** Accessible description id */\n ariaDescribedBy?: string;\n /** Custom role */\n role?: string;\n}\n\nexport interface ChartAnnotation {\n /** Optional id for React reconciliation */\n id?: string;\n /** Primary textual content */\n text: string;\n /** Coordinates describing where the annotation should be anchored */\n coordinates: ChartAnnotationCoordinate;\n /** Layout customisation */\n layout?: ChartAnnotationLayoutProps;\n /** Visual styling */\n style?: ChartAnnotationStyleProps;\n /** Optional connector line that links the annotation to its anchor. */\n connector?: ChartAnnotationConnectorProps;\n /** Accessibility metadata */\n accessibility?: ChartAnnotationAccessibilityProps;\n /** Optional application specific metadata */\n data?: Record<string, unknown>;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|
|
@@ -25,10 +25,6 @@ const ARROW_SIZE_SCALE = 0.35;
|
|
|
25
25
|
const MAX_SIMPLE_MARKUP_DEPTH = 5;
|
|
26
26
|
const CHAR_CODE_LESS_THAN = '<'.codePointAt(0);
|
|
27
27
|
const CHAR_CODE_GREATER_THAN = '>'.codePointAt(0);
|
|
28
|
-
const getAnnotationKey = (annotation, index)=>{
|
|
29
|
-
var _annotation_id, _ref;
|
|
30
|
-
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}`;
|
|
31
|
-
};
|
|
32
28
|
const decodeSimpleMarkupInput = (input)=>{
|
|
33
29
|
const namedEntities = {
|
|
34
30
|
amp: '&',
|
|
@@ -227,6 +223,40 @@ const normalizeBandOffset = (scale, value)=>{
|
|
|
227
223
|
return position;
|
|
228
224
|
};
|
|
229
225
|
const clamp = (value, min, max)=>Math.max(min, Math.min(max, value));
|
|
226
|
+
const resolveDataCoordinate = (axis, value, context, yAxis = 'primary')=>{
|
|
227
|
+
if (axis === 'x') {
|
|
228
|
+
const xScale = context.xScale;
|
|
229
|
+
if (!xScale) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
const parsedValue = value instanceof Date ? value.getTime() : value;
|
|
233
|
+
return normalizeBandOffset(xScale, parsedValue);
|
|
234
|
+
}
|
|
235
|
+
const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;
|
|
236
|
+
if (!yScale) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
const parsedValue = value instanceof Date ? value.getTime() : value;
|
|
240
|
+
return normalizeBandOffset(yScale, parsedValue);
|
|
241
|
+
};
|
|
242
|
+
const resolveAxisCoordinate = (axis, coordinateType, value, context, options = {})=>{
|
|
243
|
+
switch(coordinateType){
|
|
244
|
+
case 'data':
|
|
245
|
+
return resolveDataCoordinate(axis, value, context, options.yAxis);
|
|
246
|
+
case 'relative':
|
|
247
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
return axis === 'x' ? context.plotRect.x + context.plotRect.width * value : context.plotRect.y + context.plotRect.height * value;
|
|
251
|
+
case 'pixel':
|
|
252
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
return axis === 'x' ? context.plotRect.x + value : context.plotRect.y + value;
|
|
256
|
+
default:
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
230
260
|
const createMeasurementSignature = (annotationContentSignature, containerStyle, contentStyle, layoutClassName, styleClassName)=>JSON.stringify({
|
|
231
261
|
annotationContentSignature,
|
|
232
262
|
containerStyle,
|
|
@@ -234,58 +264,58 @@ const createMeasurementSignature = (annotationContentSignature, containerStyle,
|
|
|
234
264
|
layoutClassName: layoutClassName !== null && layoutClassName !== void 0 ? layoutClassName : '',
|
|
235
265
|
styleClassName: styleClassName !== null && styleClassName !== void 0 ? styleClassName : ''
|
|
236
266
|
});
|
|
267
|
+
const getCoordinateDescriptor = (coordinates)=>{
|
|
268
|
+
switch(coordinates.type){
|
|
269
|
+
case 'data':
|
|
270
|
+
return {
|
|
271
|
+
xType: 'data',
|
|
272
|
+
yType: 'data',
|
|
273
|
+
yAxis: coordinates.yAxis
|
|
274
|
+
};
|
|
275
|
+
case 'relative':
|
|
276
|
+
return {
|
|
277
|
+
xType: 'relative',
|
|
278
|
+
yType: 'relative'
|
|
279
|
+
};
|
|
280
|
+
case 'pixel':
|
|
281
|
+
return {
|
|
282
|
+
xType: 'pixel',
|
|
283
|
+
yType: 'pixel'
|
|
284
|
+
};
|
|
285
|
+
case 'mixed':
|
|
286
|
+
return {
|
|
287
|
+
xType: coordinates.xCoordinateType,
|
|
288
|
+
yType: coordinates.yCoordinateType,
|
|
289
|
+
yAxis: coordinates.yAxis
|
|
290
|
+
};
|
|
291
|
+
default:
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
};
|
|
237
295
|
const resolveCoordinates = (annotation, context)=>{
|
|
238
296
|
const { coordinates, layout } = annotation;
|
|
239
297
|
if (!coordinates) {
|
|
240
298
|
return undefined;
|
|
241
299
|
}
|
|
300
|
+
const descriptor = getCoordinateDescriptor(coordinates);
|
|
301
|
+
if (!descriptor) {
|
|
302
|
+
return undefined;
|
|
303
|
+
}
|
|
242
304
|
var _layout_offsetX;
|
|
243
305
|
const offsetX = (_layout_offsetX = layout === null || layout === void 0 ? void 0 : layout.offsetX) !== null && _layout_offsetX !== void 0 ? _layout_offsetX : 0;
|
|
244
306
|
var _layout_offsetY;
|
|
245
307
|
const offsetY = (_layout_offsetY = layout === null || layout === void 0 ? void 0 : layout.offsetY) !== null && _layout_offsetY !== void 0 ? _layout_offsetY : 0;
|
|
308
|
+
const anchorX = resolveAxisCoordinate('x', descriptor.xType, coordinates.x, context);
|
|
309
|
+
const anchorY = resolveAxisCoordinate('y', descriptor.yType, coordinates.y, context, {
|
|
310
|
+
yAxis: descriptor.yAxis
|
|
311
|
+
});
|
|
312
|
+
if (anchorX === undefined || anchorY === undefined) {
|
|
313
|
+
return undefined;
|
|
314
|
+
}
|
|
246
315
|
const anchor = {
|
|
247
|
-
x:
|
|
248
|
-
y:
|
|
316
|
+
x: anchorX,
|
|
317
|
+
y: anchorY
|
|
249
318
|
};
|
|
250
|
-
switch(coordinates.type){
|
|
251
|
-
case 'data':
|
|
252
|
-
{
|
|
253
|
-
const { x, y, yAxis = 'primary' } = coordinates;
|
|
254
|
-
const xScale = context.xScale;
|
|
255
|
-
const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;
|
|
256
|
-
if (!xScale || !yScale) {
|
|
257
|
-
return undefined;
|
|
258
|
-
}
|
|
259
|
-
const xValue = normalizeBandOffset(xScale, x instanceof Date ? x.getTime() : x);
|
|
260
|
-
const yValue = normalizeBandOffset(yScale, y instanceof Date ? y.getTime() : y);
|
|
261
|
-
if (typeof xValue !== 'number' || typeof yValue !== 'number') {
|
|
262
|
-
return undefined;
|
|
263
|
-
}
|
|
264
|
-
anchor.x = xValue;
|
|
265
|
-
anchor.y = yValue;
|
|
266
|
-
break;
|
|
267
|
-
}
|
|
268
|
-
case 'relative':
|
|
269
|
-
{
|
|
270
|
-
if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
anchor.x = context.plotRect.x + context.plotRect.width * coordinates.x;
|
|
274
|
-
anchor.y = context.plotRect.y + context.plotRect.height * coordinates.y;
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
case 'pixel':
|
|
278
|
-
{
|
|
279
|
-
if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {
|
|
280
|
-
return undefined;
|
|
281
|
-
}
|
|
282
|
-
anchor.x = context.plotRect.x + coordinates.x;
|
|
283
|
-
anchor.y = context.plotRect.y + coordinates.y;
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
default:
|
|
287
|
-
return undefined;
|
|
288
|
-
}
|
|
289
319
|
let left = anchor.x + offsetX;
|
|
290
320
|
let top = anchor.y + offsetY;
|
|
291
321
|
if (layout === null || layout === void 0 ? void 0 : layout.clipToBounds) {
|
|
@@ -304,12 +334,20 @@ const ChartAnnotationLayer = /*#__PURE__*/ _react.memo((props)=>{
|
|
|
304
334
|
const { annotations: annotationsProp, context } = props;
|
|
305
335
|
const classes = (0, _useChartAnnotationLayerstyles.useChartAnnotationLayerStyles)(props);
|
|
306
336
|
const idPrefix = (0, _reactutilities.useId)('chart-annotation');
|
|
337
|
+
const autoKeyPrefix = (0, _reactutilities.useId)('chart-annotation-item');
|
|
307
338
|
const [measurements, setMeasurements] = _react.useState({});
|
|
308
|
-
const resolvedAnnotations = _react.useMemo(()=>
|
|
339
|
+
const resolvedAnnotations = _react.useMemo(()=>{
|
|
340
|
+
let fallbackIndex = 0;
|
|
341
|
+
return (annotationsProp !== null && annotationsProp !== void 0 ? annotationsProp : []).map((annotation)=>{
|
|
342
|
+
var _annotation_id;
|
|
343
|
+
return {
|
|
309
344
|
annotation,
|
|
310
|
-
key:
|
|
311
|
-
}
|
|
312
|
-
|
|
345
|
+
key: (_annotation_id = annotation.id) !== null && _annotation_id !== void 0 ? _annotation_id : `${autoKeyPrefix}-${fallbackIndex++}`
|
|
346
|
+
};
|
|
347
|
+
});
|
|
348
|
+
}, [
|
|
349
|
+
annotationsProp,
|
|
350
|
+
autoKeyPrefix
|
|
313
351
|
]);
|
|
314
352
|
_react.useEffect(()=>{
|
|
315
353
|
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 '<';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '>';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/<([^;]+)>/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 '<';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '>';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/<([^;]+)>/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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"}
|