@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.
- package/CHANGELOG.md +13 -13
- package/dist/index.d.ts +26 -6
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +87 -49
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +84 -158
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +1 -1
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +60 -40
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +6 -2
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib/utilities/utilities.js +18 -9
- package/lib/utilities/utilities.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/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +84 -158
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +60 -40
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +6 -2
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +18 -9
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +13 -13
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/CommonComponents/CartesianChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { LegendsProps } from '../Legends/index';\nimport {\n AccessibilityProps,\n Chart,\n Margins,\n DataPoint,\n ChartAnnotation,\n HorizontalBarChartWithAxisDataPoint,\n GroupedVerticalBarChartData,\n HeatMapChartDataPoint,\n LineChartPoints,\n VerticalBarChartDataPoint,\n VerticalStackedBarDataPoint,\n ScatterChartPoints,\n GanttChartDataPoint,\n AxisCategoryOrder,\n AxisProps,\n AxisScaleType,\n} from '../../types/index';\nimport { TimeLocaleDefinition } from 'd3-time-format';\nimport { ChartPopoverProps } from './ChartPopover.types';\nimport { ChartTypes, IAxisData, IDomainNRange, IYAxisParams, XAxisTypes, YAxisType } from '../../utilities/utilities';\nimport { ScaleBand, ScaleLinear } from 'd3-scale';\n/**\n * Cartesian Chart style properties\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width?: number;\n\n /**\n * Height of the chart.\n */\n height?: number;\n\n /**\n * Color of the chart.\n */\n color?: string;\n\n /**\n * Link to redirect if click action for graph\n */\n href?: string;\n\n /**\n * prop to check if the chart is selected or hovered upon to determine opacity\n */\n shouldHighlight?: boolean;\n\n /**\n * prop to check if the Page is in Rtl\n */\n useRtl?: boolean;\n\n /**\n * color of the line\n */\n lineColor?: string;\n\n /**\n * boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @deprecated Use `reflowProps` instead.\n */\n enableReflow?: boolean;\n}\n\n/**\n * Cartesian Chart styles\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartStyles {\n /**\n * Style for the root element.\n */\n root?: string;\n\n /**\n * Style for the element containing the x-axis.\n */\n xAxis?: string;\n\n /**\n * Style for the element containing the y-axis.\n */\n yAxis?: string;\n\n /**\n * Style for legend container\n */\n legendContainer?: string;\n\n /**\n * line hover box css\n */\n hover?: string;\n\n /**\n * styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * styles for tooltip\n */\n tooltip?: string;\n\n /**\n * styles for axis title\n */\n axisTitle?: string;\n\n /**\n * styles for axis annotation\n */\n axisAnnotation?: string;\n\n /**\n * Style for the chart Title.\n */\n chartTitle?: string;\n\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: string;\n\n /**\n * styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n\n /**\n * Styles for the element wrapping the svg and overlays for annotation\n */\n plotContainer?: string;\n\n /**\n * Styles for the svg tooltip\n */\n svgTooltip?: string;\n\n /**\n * Styles applied to the annotation layer root element\n */\n annotationLayer?: string;\n\n /**\n * Styles for the chart svg element\n */\n chart?: string;\n}\n\n/**\n * Cartesian Chart properties\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartProps {\n /**\n * Below height used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n height?: number;\n\n /**\n * Below width used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n width?: number;\n\n /**\n * this prop takes its parent as a HTML element to define the width and height of the chart\n */\n parentRef?: HTMLElement | null;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Margins for the chart\n * @default `{ top: 20, bottom: 35, left: 40, right: 20 }`\n * To avoid edge cuttings to the chart, we recommend you use default values or greater then default values\n */\n margins?: Margins;\n\n /** decides wether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Do not show tooltips in chart\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * this prop takes values that you want the chart to render on x-axis\n * This is a optional parameter if not specified D3 will decide which values appear on the x-axis for you\n * Please look at https://github.com/d3/d3-scale for more information on how D3 decides what data to appear on the axis of chart\n */\n tickValues?: number[] | Date[] | string[] | undefined;\n\n /**\n * the format for the data on x-axis. For date object this can be specified to your requirement. Eg: '%m/%d', '%d'\n * Please look at https://github.com/d3/d3-time-format for all the formats supported for date axis\n * Only applicable for date axis. For y-axis format use yAxisTickFormat prop.\n */\n tickFormat?: string;\n\n /**\n * Width of line stroke\n */\n strokeWidth?: number;\n\n /**\n * x Axis labels tick padding. This defines the gap between tick labels and tick lines.\n * @default 10\n */\n xAxisTickPadding?: number;\n\n /**\n * the format in for the data on y-axis. For data object this can be specified to your requirement.\n * Eg: d3.format(\".0%\")(0.123),d3.format(\"+20\")(42);\n * Please look at https://github.com/d3/d3-format for all the formats supported\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n\n /**\n * Secondary y-scale options\n * By default this is not defined, meaning there will be no secondary y-scale.\n */\n secondaryYScaleOptions?: {\n /** Minimum value (0 by default) */\n yMinValue?: number;\n /** Maximum value (100 by default) */\n yMaxValue?: number;\n };\n\n /**\n * minimum data value point in y-axis\n */\n yMinValue?: number;\n\n /**\n * maximum data value point in y-axis\n */\n yMaxValue?: number;\n\n /**\n * minimum data value point in x-axis (for numeric x-axis)\n */\n xMinValue?: number;\n\n /**\n * maximum data value point in x-axis (for numeric x-axis)\n */\n xMaxValue?: number;\n\n /**\n * Number of ticks on the y-axis.\n * Tick count should be factor of difference between (yMinValue, yMaxValue)?\n * @default 4\n */\n yAxisTickCount?: number;\n\n /**\n * defines the number of ticks on the x-axis. Tries to match the nearest interval satisfying the count.\n * Does not work for string axis.\n * @default 6\n */\n xAxisTickCount?: number;\n\n /**\n * define the size of the tick lines on the x-axis\n * @default 10\n */\n xAxistickSize?: number;\n\n /**\n * Text annotations rendered on top of the chart area\n */\n annotations?: ChartAnnotation[];\n\n /**\n * defines the space between the tick line and the data label\n * @default 10\n */\n tickPadding?: number;\n\n /**\n * Url that the data-viz needs to redirect to upon clicking on it\n */\n href?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n legendsOverflowText?: any;\n\n /**\n * Enable the legends to wrap lines if there is not enough space to show all legends on a single line\n */\n enabledLegendsWrapLines?: boolean;\n\n /*\n * props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n *@default false\n *Used for to elipse x axis labes and show tooltip on x axis labels\n */\n showXAxisLablesTooltip?: boolean;\n\n /**\n * @default 4\n * Used for X axis labels\n * While Giving showXAxisLablesTooltip prop, need to define after how many chars, we need to truncate the word.\n */\n noOfCharsToTruncate?: number;\n\n /**\n * @default false\n * Used to wrap x axis labels values (whole value)\n */\n wrapXAxisLables?: boolean;\n\n /**\n * @default false\n * Used to rotate x axis labels by 45 degrees\n */\n rotateXAxisLables?: boolean;\n\n /**\n * The prop used to define the date time localization options\n */\n dateLocalizeOptions?: Intl.DateTimeFormatOptions;\n\n /**\n * The prop used to define a custom locale for the date time format.\n */\n timeFormatLocale?: TimeLocaleDefinition;\n\n /**\n * The prop used to define a custom datetime formatter for date axis.\n */\n customDateTimeFormatter?: (dateTime: Date) => string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: CartesianChartStyles;\n\n /**\n * Callout customization props\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * props for the svg; use this to include aria-* or other attributes on the tag\n */\n svgProps?: React.SVGProps<SVGSVGElement>;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @deprecated Use `reflowProps` instead.\n */\n enableReflow?: boolean;\n\n /**\n * Props related to reflow behavior of the chart\n */\n reflowProps?: {\n /**\n * Determines the reflow behavior of the chart.\n * When set to `'min-width'`, the chart will not shrink below a certain width and will enable scrolling if it overflows.\n * @default 'none'\n */\n mode: 'none' | 'min-width';\n };\n\n /**\n * Prop to set the x axis title\n * @default undefined\n * Minimum bottom margin required for x axis title is 55px\n */\n\n xAxisTitle?: string;\n\n /**\n * Prop to set the y axis title\n * @default undefined\n * Minimum left margin required for y axis title is 60px and for RTL is 40px\n * Minimum right margin required for y axis title is 40px and for RTL is 60px\n */\n yAxisTitle?: string;\n\n /**\n * Prop to set the secondary y axis title\n * @default undefined\n * If RTL is enabled, minimum left and right margins required for secondary y axis title is 60px\n */\n secondaryYAxistitle?: string;\n\n /**\n * Whether to use UTC time for axis scale, ticks, and the time display in callouts.\n * When set to `true`, time is displayed equally, regardless of the user's timezone settings.\n * @default true\n */\n useUTC?: string | boolean;\n\n /**\n * @default false\n * The prop used to decide rounded ticks on y axis\n */\n roundedTicks?: boolean;\n\n /**\n * Determines whether overlapping x-axis tick labels should be hidden.\n * @default true\n */\n hideTickOverlap?: boolean;\n\n /**\n * Define a custom callout props override\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPropsPerDataPoint?: (dataPointCalloutProps: any) => ChartPopoverProps;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n\n /**\n * Prop to set the x axis annotation. Used to display additional information on the x-axis.\n * This is shown on the top of the chart.\n * @default undefined\n */\n xAxisAnnotation?: string;\n\n /**\n * Prop to set the y axis annotation. Used to display additional information on the y-axis.\n * This is shown on the right side of the chart. Not shown if secondary y-axis is enabled.\n * @default undefined\n */\n yAxisAnnotation?: string;\n\n /**\n * Specifies the ordering logic for categories (or string tick labels) on the x-axis.\n * @default 'default'\n */\n xAxisCategoryOrder?: AxisCategoryOrder;\n\n /**\n * Specifies the ordering logic for categories (or string tick labels) on the y-axis.\n * @default 'default'\n */\n yAxisCategoryOrder?: AxisCategoryOrder;\n\n /**\n * Defines the scale type for the x-axis.\n * @default 'default'\n */\n xScaleType?: AxisScaleType;\n\n /**\n * Defines the scale type for the primary y-axis.\n * @default 'default'\n */\n yScaleType?: AxisScaleType;\n\n /**\n * Defines the scale type for the secondary y-axis.\n * @default 'default'\n */\n secondaryYScaleType?: AxisScaleType;\n\n /**\n * Explicit set of tick values for the y-axis.\n * If provided, these values override automatic tick generation.\n */\n yAxisTickValues?: number[] | Date[] | string[];\n\n /**\n * Configuration for the x-axis.\n * Use this to control `tickStep`, `tick0`, etc.\n */\n xAxis?: AxisProps;\n\n /**\n * Configuration for the y-axis.\n * Use this to control `tickStep`, `tick0`, etc.\n */\n yAxis?: AxisProps;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n}\n\nexport interface YValueHover {\n legend?: string;\n y?: number | string;\n color?: string;\n data?: string | number;\n shouldDrawBorderBottom?: boolean;\n yAxisCalloutData?: string | { [id: string]: number };\n index?: number;\n callOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface ChildProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any;\n containerHeight?: number;\n containerWidth?: number;\n optimizeLargeData?: boolean;\n}\n\n// Only used for Cartesian chart base\nexport interface ModifiedCartesianChartProps extends CartesianChartProps {\n /**\n * Define the chart title\n */\n chartTitle?: string;\n\n /**\n * Only used for Area chart\n * Value used to draw y axis of that chart.\n */\n maxOfYVal?: number;\n\n /**\n * Data of the chart\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any;\n\n /**\n * Define type of the chart\n */\n chartType: ChartTypes;\n\n /** X axis type */\n xAxisType: XAxisTypes;\n\n /** Y axis type */\n yAxisType?: YAxisType;\n\n /**\n * Legends of the chart.\n */\n legendBars: JSXElement | null;\n\n /**\n * Callout props\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Callback method used for to get margins to the chart.\n */\n getmargins?: (margins: Margins) => void;\n\n /**\n * This is a call back method to the chart from cartesian chart.\n * params are xScale, yScale, containerHeight, containerWidth. These values were used to draw the graph.\n * It also contians an optional param xAxisElement - defines as x axis scale element.\n * This param used to enable feature word wrap of Xaxis.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getGraphData?: any;\n\n /**\n * Used for bar chart graphs.\n * To define width of the bar\n */\n barwidth?: number;\n\n /**\n * Used for tick styles of the x axis of the chart\n * Tick params are applicable for date axis only.\n */\n tickParams?: {\n tickValues?: number[] | Date[] | string[];\n tickFormat?: string;\n };\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n yAxisPadding?: number;\n\n /**\n * Children elements specific to derived chart types.\n */\n children(props: ChildProps): React.ReactNode;\n\n /**\n * To enable callout for individual bar or complete stack. Using for only Vertical stacked bar chart.\n * @default false\n * @type \\{boolean \\}\n */\n isCalloutForStack?: boolean;\n\n /** dataset values to find out domain of the String axis\n * Present using for only vertical stacked bar chart and grouped vertical bar chart\n */\n datasetForXAxisDomain?: string[];\n\n /** Own callout design */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customizedCallout?: any;\n\n /**\n * if the data points for the y-axis is of type string, then we need to give this\n * prop to construct the y-axis\n */\n stringDatasetForYAxisDomain?: string[];\n\n /**\n * The prop used to define the culture to localize the numbers and date\n */\n culture?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getAxisData?: any;\n\n /**\n * Callback method used when mouse leaves the chart boundary.\n */\n onChartMouseLeave?: () => void;\n\n /** Callback method to get extra margins for domain */\n getDomainMargins?: (containerWidth: number) => Margins;\n\n /** Callback method to get extra margins for Y-axis domain */\n getYDomainMargins?: (containerHeight: number) => Margins;\n\n /** Padding between each bar/line-point */\n xAxisInnerPadding?: number;\n\n /** Padding before first bar/line-point and after last bar/line-point */\n xAxisOuterPadding?: number;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n * @default false\n * Used to control the first render cycle Performance optimization code.\n */\n enableFirstRenderOptimization?: boolean;\n\n /**\n * Get the min and max values of the y-axis\n */\n getMinMaxOfYAxis: (\n points:\n | LineChartPoints[]\n | HorizontalBarChartWithAxisDataPoint[]\n | VerticalBarChartDataPoint[]\n | DataPoint[]\n | ScatterChartPoints[]\n | GanttChartDataPoint[],\n yAxisType: YAxisType | undefined,\n useSecondaryYScale?: boolean,\n ) => { startValue: number; endValue: number };\n\n /**\n * Create the y-axis\n */\n createYAxis: (\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n isIntegralDataset: boolean,\n chartType: ChartTypes,\n useSecondaryYScale?: boolean,\n roundedTicks?: boolean,\n scaleType?: AxisScaleType,\n _useRtl?: boolean,\n ) => ScaleLinear<number, number, never>;\n\n /**\n * Get the domain and range values\n */\n getDomainNRangeValues: (\n points:\n | LineChartPoints[]\n | VerticalBarChartDataPoint[]\n | VerticalStackedBarDataPoint[]\n | HorizontalBarChartWithAxisDataPoint[]\n | GroupedVerticalBarChartData[]\n | HeatMapChartDataPoint[]\n | GanttChartDataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | string[] | undefined,\n ) => IDomainNRange;\n\n /**\n * Create the string y-axis\n */\n createStringYAxis: (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n axisData: IAxisData,\n barWidth: number | undefined,\n chartType?: ChartTypes,\n ) => ScaleBand<string>;\n\n /**\n * Controls whether the numeric x-axis domain should be extended to start and end at nice rounded values.\n * @default true\n */\n showRoundOffXTickValues?: boolean;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
|
|
1
|
+
{"version":3,"sources":["../src/components/CommonComponents/CartesianChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { LegendsProps } from '../Legends/index';\nimport {\n AccessibilityProps,\n Chart,\n Margins,\n DataPoint,\n ChartAnnotation,\n HorizontalBarChartWithAxisDataPoint,\n GroupedVerticalBarChartData,\n HeatMapChartDataPoint,\n LineChartPoints,\n VerticalBarChartDataPoint,\n VerticalStackedBarDataPoint,\n ScatterChartPoints,\n GanttChartDataPoint,\n AxisCategoryOrder,\n AxisProps,\n AxisScaleType,\n} from '../../types/index';\nimport { TimeLocaleDefinition } from 'd3-time-format';\nimport { ChartPopoverProps } from './ChartPopover.types';\nimport { ChartTypes, IAxisData, IDomainNRange, IYAxisParams, XAxisTypes, YAxisType } from '../../utilities/utilities';\nimport { ScaleBand, ScaleLinear } from 'd3-scale';\n/**\n * Cartesian Chart style properties\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width?: number;\n\n /**\n * Height of the chart.\n */\n height?: number;\n\n /**\n * Color of the chart.\n */\n color?: string;\n\n /**\n * Link to redirect if click action for graph\n */\n href?: string;\n\n /**\n * prop to check if the chart is selected or hovered upon to determine opacity\n */\n shouldHighlight?: boolean;\n\n /**\n * prop to check if the Page is in Rtl\n */\n useRtl?: boolean;\n\n /**\n * color of the line\n */\n lineColor?: string;\n\n /**\n * boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @deprecated Use `reflowProps` instead.\n */\n enableReflow?: boolean;\n}\n\n/**\n * Cartesian Chart styles\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartStyles {\n /**\n * Style for the root element.\n */\n root?: string;\n\n /**\n * Style for the element containing the x-axis.\n */\n xAxis?: string;\n\n /**\n * Style for the element containing the y-axis.\n */\n yAxis?: string;\n\n /**\n * Style for legend container\n */\n legendContainer?: string;\n\n /**\n * line hover box css\n */\n hover?: string;\n\n /**\n * styles for description message\n */\n descriptionMessage?: string;\n\n /**\n * styles for tooltip\n */\n tooltip?: string;\n\n /**\n * styles for axis title\n */\n axisTitle?: string;\n\n /**\n * styles for axis annotation\n */\n axisAnnotation?: string;\n\n /**\n * Style for the chart Title.\n */\n chartTitle?: string;\n\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: string;\n\n /**\n * styles for the shape object in the callout\n */\n shapeStyles?: string;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: string;\n\n /**\n * Styles for the element wrapping the svg and overlays for annotation\n */\n plotContainer?: string;\n\n /**\n * Styles for the svg tooltip\n */\n svgTooltip?: string;\n\n /**\n * Styles applied to the annotation layer root element\n */\n annotationLayer?: string;\n\n /**\n * Styles for the chart svg element\n */\n chart?: string;\n}\n\n/**\n * Cartesian Chart properties\n * {@docCategory CartesianChart}\n */\nexport interface CartesianChartProps {\n /**\n * Below height used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n height?: number;\n\n /**\n * Below width used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n width?: number;\n\n /**\n * this prop takes its parent as a HTML element to define the width and height of the chart\n */\n parentRef?: HTMLElement | null;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Margins for the chart\n * @default `{ top: 20, bottom: 35, left: 40, right: 20 }`\n * To avoid edge cuttings to the chart, we recommend you use default values or greater then default values\n */\n margins?: Margins;\n\n /** decides wether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Do not show tooltips in chart\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * this prop takes values that you want the chart to render on x-axis\n * This is a optional parameter if not specified D3 will decide which values appear on the x-axis for you\n * Please look at https://github.com/d3/d3-scale for more information on how D3 decides what data to appear on the axis of chart\n */\n tickValues?: number[] | Date[] | string[] | undefined;\n\n /**\n * the format for the data on x-axis. For date object this can be specified to your requirement. Eg: '%m/%d', '%d'\n * Please look at https://github.com/d3/d3-time-format for all the formats supported for date axis\n * Only applicable for date axis. For y-axis format use yAxisTickFormat prop.\n */\n tickFormat?: string;\n\n /**\n * Width of line stroke\n */\n strokeWidth?: number;\n\n /**\n * x Axis labels tick padding. This defines the gap between tick labels and tick lines.\n * @default 10\n */\n xAxisTickPadding?: number;\n\n /**\n * the format in for the data on y-axis. For data object this can be specified to your requirement.\n * Eg: d3.format(\".0%\")(0.123),d3.format(\"+20\")(42);\n * Please look at https://github.com/d3/d3-format for all the formats supported\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n\n /**\n * Secondary y-scale options\n * By default this is not defined, meaning there will be no secondary y-scale.\n */\n secondaryYScaleOptions?: {\n /** Minimum value (0 by default) */\n yMinValue?: number;\n /** Maximum value (100 by default) */\n yMaxValue?: number;\n };\n\n /**\n * minimum data value point in y-axis\n */\n yMinValue?: number;\n\n /**\n * maximum data value point in y-axis\n */\n yMaxValue?: number;\n\n /**\n * minimum data value point in x-axis (for numeric x-axis)\n */\n xMinValue?: number;\n\n /**\n * maximum data value point in x-axis\n */\n xMaxValue?: number;\n\n /**\n * Number of ticks on the y-axis.\n * Tick count should be factor of difference between (yMinValue, yMaxValue)?\n * @default 4\n */\n yAxisTickCount?: number;\n\n /**\n * defines the number of ticks on the x-axis. Tries to match the nearest interval satisfying the count.\n * Does not work for string axis.\n * @default 6\n */\n xAxisTickCount?: number;\n\n /**\n * define the size of the tick lines on the x-axis\n * @default 10\n */\n xAxistickSize?: number;\n\n /**\n * Text annotations rendered on top of the chart area\n */\n annotations?: ChartAnnotation[];\n\n /**\n * defines the space between the tick line and the data label\n * @default 10\n */\n tickPadding?: number;\n\n /**\n * Url that the data-viz needs to redirect to upon clicking on it\n */\n href?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n legendsOverflowText?: any;\n\n /**\n * Enable the legends to wrap lines if there is not enough space to show all legends on a single line\n */\n enabledLegendsWrapLines?: boolean;\n\n /*\n * props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n *@default false\n *Used for to elipse x axis labes and show tooltip on x axis labels\n */\n showXAxisLablesTooltip?: boolean;\n\n /**\n * @default 4\n * Used for X axis labels\n * While Giving showXAxisLablesTooltip prop, need to define after how many chars, we need to truncate the word.\n */\n noOfCharsToTruncate?: number;\n\n /**\n * @default false\n * Used to wrap x axis labels values (whole value)\n */\n wrapXAxisLables?: boolean;\n\n /**\n * @default false\n * Used to rotate x axis labels by 45 degrees\n */\n rotateXAxisLables?: boolean;\n\n /**\n * The prop used to define the date time localization options\n */\n dateLocalizeOptions?: Intl.DateTimeFormatOptions;\n\n /**\n * The prop used to define a custom locale for the date time format.\n */\n timeFormatLocale?: TimeLocaleDefinition;\n\n /**\n * The prop used to define a custom datetime formatter for date axis.\n */\n customDateTimeFormatter?: (dateTime: Date) => string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: CartesianChartStyles;\n\n /**\n * Callout customization props\n */\n calloutProps?: Partial<ChartPopoverProps>;\n\n /**\n * props for the svg; use this to include aria-* or other attributes on the tag\n */\n svgProps?: React.SVGProps<SVGSVGElement>;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @deprecated Use `reflowProps` instead.\n */\n enableReflow?: boolean;\n\n /**\n * Props related to reflow behavior of the chart\n */\n reflowProps?: {\n /**\n * Determines the reflow behavior of the chart.\n * When set to `'min-width'`, the chart will not shrink below a certain width and will enable scrolling if it overflows.\n * @default 'none'\n */\n mode: 'none' | 'min-width';\n };\n\n /**\n * Prop to set the x axis title\n * @default undefined\n * Minimum bottom margin required for x axis title is 55px\n */\n\n xAxisTitle?: string;\n\n /**\n * Prop to set the y axis title\n * @default undefined\n * Minimum left margin required for y axis title is 60px and for RTL is 40px\n * Minimum right margin required for y axis title is 40px and for RTL is 60px\n */\n yAxisTitle?: string;\n\n /**\n * Prop to set the secondary y axis title\n * @default undefined\n * If RTL is enabled, minimum left and right margins required for secondary y axis title is 60px\n */\n secondaryYAxistitle?: string;\n\n /**\n * Whether to use UTC time for axis scale, ticks, and the time display in callouts.\n * When set to `true`, time is displayed equally, regardless of the user's timezone settings.\n * @default true\n */\n useUTC?: string | boolean;\n\n /**\n * @default false\n * The prop used to decide rounded ticks on y axis\n */\n roundedTicks?: boolean;\n\n /**\n * Determines whether overlapping x-axis tick labels should be hidden.\n * @default true\n */\n hideTickOverlap?: boolean;\n\n /**\n * Define a custom callout props override\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPropsPerDataPoint?: (dataPointCalloutProps: any) => ChartPopoverProps;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<Chart>;\n\n /**\n * Prop to set the x axis annotation. Used to display additional information on the x-axis.\n * This is shown on the top of the chart.\n * @default undefined\n */\n xAxisAnnotation?: string;\n\n /**\n * Prop to set the y axis annotation. Used to display additional information on the y-axis.\n * This is shown on the right side of the chart. Not shown if secondary y-axis is enabled.\n * @default undefined\n */\n yAxisAnnotation?: string;\n\n /**\n * Specifies the ordering logic for categories (or string tick labels) on the x-axis.\n * @default 'default'\n */\n xAxisCategoryOrder?: AxisCategoryOrder;\n\n /**\n * Specifies the ordering logic for categories (or string tick labels) on the y-axis.\n * @default 'default'\n */\n yAxisCategoryOrder?: AxisCategoryOrder;\n\n /**\n * Defines the scale type for the x-axis.\n * @default 'default'\n */\n xScaleType?: AxisScaleType;\n\n /**\n * Defines the scale type for the primary y-axis.\n * @default 'default'\n */\n yScaleType?: AxisScaleType;\n\n /**\n * Defines the scale type for the secondary y-axis.\n * @default 'default'\n */\n secondaryYScaleType?: AxisScaleType;\n\n /**\n * Explicit set of tick values for the y-axis.\n * If provided, these values override automatic tick generation.\n */\n yAxisTickValues?: number[] | Date[] | string[];\n\n /**\n * Configuration for the x-axis.\n * Use this to control `tickStep`, `tick0`, etc.\n */\n xAxis?: AxisProps;\n\n /**\n * Configuration for the y-axis.\n * Use this to control `tickStep`, `tick0`, etc.\n */\n yAxis?: AxisProps;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n}\n\nexport interface YValueHover {\n legend?: string;\n y?: number | string;\n color?: string;\n data?: string | number;\n shouldDrawBorderBottom?: boolean;\n yAxisCalloutData?: string | { [id: string]: number };\n index?: number;\n callOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface ChildProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any;\n containerHeight?: number;\n containerWidth?: number;\n optimizeLargeData?: boolean;\n}\n\n// Only used for Cartesian chart base\nexport interface ModifiedCartesianChartProps extends CartesianChartProps {\n /**\n * Define the chart title\n */\n chartTitle?: string;\n\n /**\n * Only used for Area chart\n * Value used to draw y axis of that chart.\n */\n maxOfYVal?: number;\n\n /**\n * Data of the chart\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any;\n\n /**\n * Define type of the chart\n */\n chartType: ChartTypes;\n\n /** X axis type */\n xAxisType: XAxisTypes;\n\n /** Y axis type */\n yAxisType?: YAxisType;\n\n /**\n * Legends of the chart.\n */\n legendBars: JSXElement | null;\n\n /**\n * Callout props\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Callback method used for to get margins to the chart.\n */\n getmargins?: (margins: Margins) => void;\n\n /**\n * This is a call back method to the chart from cartesian chart.\n * params are xScale, yScale, containerHeight, containerWidth. These values were used to draw the graph.\n * It also contians an optional param xAxisElement - defines as x axis scale element.\n * This param used to enable feature word wrap of Xaxis.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getGraphData?: any;\n\n /**\n * Used for bar chart graphs.\n * To define width of the bar\n */\n barwidth?: number;\n\n /**\n * Used for tick styles of the x axis of the chart\n * Tick params are applicable for date axis only.\n */\n tickParams?: {\n tickValues?: number[] | Date[] | string[];\n tickFormat?: string;\n };\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n yAxisPadding?: number;\n\n /**\n * Children elements specific to derived chart types.\n */\n children(props: ChildProps): React.ReactNode;\n\n /**\n * To enable callout for individual bar or complete stack. Using for only Vertical stacked bar chart.\n * @default false\n * @type \\{boolean \\}\n */\n isCalloutForStack?: boolean;\n\n /** dataset values to find out domain of the String axis\n * Present using for only vertical stacked bar chart and grouped vertical bar chart\n */\n datasetForXAxisDomain?: string[];\n\n /** Own callout design */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customizedCallout?: any;\n\n /**\n * if the data points for the y-axis is of type string, then we need to give this\n * prop to construct the y-axis\n */\n stringDatasetForYAxisDomain?: string[];\n\n /**\n * The prop used to define the culture to localize the numbers and date\n */\n culture?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getAxisData?: any;\n\n /**\n * Callback method used when mouse leaves the chart boundary.\n */\n onChartMouseLeave?: () => void;\n\n /** Callback method to get extra margins for domain */\n getDomainMargins?: (containerWidth: number) => Margins;\n\n /** Callback method to get extra margins for Y-axis domain */\n getYDomainMargins?: (containerHeight: number) => Margins;\n\n /** Padding between each bar/line-point */\n xAxisInnerPadding?: number;\n\n /** Padding before first bar/line-point and after last bar/line-point */\n xAxisOuterPadding?: number;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n * @default false\n * Used to control the first render cycle Performance optimization code.\n */\n enableFirstRenderOptimization?: boolean;\n\n /**\n * Get the min and max values of the y-axis\n */\n getMinMaxOfYAxis: (\n points:\n | LineChartPoints[]\n | HorizontalBarChartWithAxisDataPoint[]\n | VerticalBarChartDataPoint[]\n | DataPoint[]\n | ScatterChartPoints[]\n | GanttChartDataPoint[],\n yAxisType: YAxisType | undefined,\n useSecondaryYScale?: boolean,\n ) => { startValue: number; endValue: number };\n\n /**\n * Create the y-axis\n */\n createYAxis: (\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n isIntegralDataset: boolean,\n chartType: ChartTypes,\n useSecondaryYScale?: boolean,\n roundedTicks?: boolean,\n scaleType?: AxisScaleType,\n _useRtl?: boolean,\n ) => ScaleLinear<number, number, never>;\n\n /**\n * Get the domain and range values\n */\n getDomainNRangeValues: (\n points:\n | LineChartPoints[]\n | VerticalBarChartDataPoint[]\n | VerticalStackedBarDataPoint[]\n | HorizontalBarChartWithAxisDataPoint[]\n | GroupedVerticalBarChartData[]\n | HeatMapChartDataPoint[]\n | GanttChartDataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | string[] | undefined,\n ) => IDomainNRange;\n\n /**\n * Create the string y-axis\n */\n createStringYAxis: (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n axisData: IAxisData,\n barWidth: number | undefined,\n chartType?: ChartTypes,\n ) => ScaleBand<string>;\n\n /**\n * Controls whether the numeric x-axis domain should be extended to start and end at nice rounded values.\n * @default true\n */\n showRoundOffXTickValues?: boolean;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
|