@fluentui/react-charting 5.25.0 → 5.25.2
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.json +87 -1
- package/CHANGELOG.md +28 -2
- package/dist/react-charting.d.ts +48 -45
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/etc/react-charting.api.md +24 -11
- package/lib/AnnotationOnlyChart.d.ts +1 -0
- package/lib/AnnotationOnlyChart.js +2 -0
- package/lib/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +158 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +2 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib/components/AnnotationOnlyChart/index.js +3 -0
- package/lib/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.base.js +2 -2
- package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.base.js +5 -3
- package/lib/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +199 -42
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib/components/CommonComponents/Annotations/index.js +3 -0
- package/lib/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +85 -51
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +169 -48
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.base.js +5 -3
- package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.base.js +15 -18
- package/lib/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.base.js +6 -6
- package/lib/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.base.js +5 -3
- package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -3
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.base.js +3 -3
- package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +4 -4
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/Legends/Legends.base.d.ts +1 -1
- package/lib/components/Legends/Legends.base.js +6 -2
- package/lib/components/Legends/Legends.base.js.map +1 -1
- package/lib/components/Legends/Legends.types.d.ts +1 -1
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/LineChart/LineChart.base.js +3 -3
- package/lib/components/LineChart/LineChart.base.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.base.js +5 -3
- package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.base.js +4 -4
- package/lib/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js +6 -4
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +15 -7
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/IChartAnnotation.d.ts +2 -0
- package/lib/types/IChartAnnotation.js.map +1 -1
- package/lib/utilities/image-export-utils.d.ts +7 -2
- package/lib/utilities/image-export-utils.js +174 -86
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.d.ts +5 -4
- package/lib/utilities/utilities.js +18 -17
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-amd/AnnotationOnlyChart.d.ts +1 -0
- package/lib-amd/AnnotationOnlyChart.js +6 -0
- package/lib-amd/AnnotationOnlyChart.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js +159 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +5 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib-amd/components/AnnotationOnlyChart/index.js +7 -0
- package/lib-amd/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-amd/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-amd/components/ChartTable/ChartTable.base.js +4 -2
- package/lib-amd/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js +198 -41
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-amd/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib-amd/components/CommonComponents/Annotations/index.js +7 -0
- package/lib-amd/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-amd/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib-amd/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +80 -50
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib-amd/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +171 -49
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-amd/components/DonutChart/DonutChart.base.js +4 -2
- package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib-amd/components/FunnelChart/FunnelChart.base.js +13 -16
- package/lib-amd/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib-amd/components/GanttChart/GanttChart.base.js +5 -5
- package/lib-amd/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib-amd/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib-amd/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-amd/components/GaugeChart/GaugeChart.base.js +4 -2
- package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +2 -2
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +2 -2
- package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib-amd/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib-amd/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +3 -3
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-amd/components/Legends/Legends.base.d.ts +1 -1
- package/lib-amd/components/Legends/Legends.base.js +6 -2
- package/lib-amd/components/Legends/Legends.base.js.map +1 -1
- package/lib-amd/components/Legends/Legends.types.d.ts +1 -1
- package/lib-amd/components/Legends/Legends.types.js.map +1 -1
- package/lib-amd/components/LineChart/LineChart.base.js +2 -2
- package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-amd/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-amd/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib-amd/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-amd/components/SankeyChart/SankeyChart.base.js +4 -2
- package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-amd/components/ScatterChart/ScatterChart.base.js +3 -3
- package/lib-amd/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib-amd/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib-amd/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +5 -3
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +14 -6
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-amd/index.d.ts +2 -0
- package/lib-amd/index.js +3 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/types/IChartAnnotation.d.ts +2 -0
- package/lib-amd/types/IChartAnnotation.js.map +1 -1
- package/lib-amd/utilities/image-export-utils.d.ts +7 -2
- package/lib-amd/utilities/image-export-utils.js +173 -85
- package/lib-amd/utilities/image-export-utils.js.map +1 -1
- package/lib-amd/utilities/utilities.d.ts +5 -4
- package/lib-amd/utilities/utilities.js +18 -17
- package/lib-amd/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AnnotationOnlyChart.d.ts +1 -0
- package/lib-commonjs/AnnotationOnlyChart.js +5 -0
- package/lib-commonjs/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +162 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +3 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js +6 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.base.js +4 -2
- package/lib-commonjs/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +198 -41
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js +6 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +83 -49
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +171 -49
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.base.js +4 -2
- package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.base.js +13 -16
- package/lib-commonjs/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.base.js +5 -5
- package/lib-commonjs/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +4 -2
- package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +2 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +2 -2
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +3 -3
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.base.d.ts +1 -1
- package/lib-commonjs/components/Legends/Legends.base.js +6 -2
- package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.d.ts +1 -1
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.base.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +4 -2
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.base.js +3 -3
- package/lib-commonjs/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +5 -3
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +14 -6
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/index.d.ts +2 -0
- package/lib-commonjs/index.js +3 -1
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/IChartAnnotation.d.ts +2 -0
- package/lib-commonjs/types/IChartAnnotation.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.d.ts +7 -2
- package/lib-commonjs/utilities/image-export-utils.js +173 -85
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.d.ts +5 -4
- package/lib-commonjs/utilities/utilities.js +18 -17
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +5 -5
- package/src/components/AnnotationOnlyChart/AnnotationOnlyChart.types.ts +34 -0
- package/src/components/CommonComponents/CartesianChart.types.ts +12 -1
- package/src/components/GanttChart/GanttChart.types.ts +0 -13
- package/src/components/HeatMapChart/HeatMapChart.types.ts +0 -11
- package/src/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.ts +0 -11
- package/src/components/Legends/Legends.types.ts +1 -1
- package/src/components/ScatterChart/ScatterChart.types.ts +0 -5
- package/src/components/VerticalStackedBarChart/VerticalStackedBarChart.types.ts +0 -11
|
@@ -13,41 +13,191 @@ var DEFAULT_FOREIGN_OBJECT_HEIGHT = 60;
|
|
|
13
13
|
var MIN_ARROW_SIZE = 6;
|
|
14
14
|
var MAX_ARROW_SIZE = 24;
|
|
15
15
|
var ARROW_SIZE_SCALE = 0.35;
|
|
16
|
+
var MAX_SIMPLE_MARKUP_DEPTH = 5;
|
|
17
|
+
var CHAR_CODE_LESS_THAN = '<'.codePointAt(0);
|
|
18
|
+
var CHAR_CODE_GREATER_THAN = '>'.codePointAt(0);
|
|
16
19
|
var getAnnotationKey = function (annotation, index) {
|
|
17
20
|
var _a, _b;
|
|
18
21
|
return (_b = (_a = annotation.id) !== null && _a !== void 0 ? _a : (typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined)) !== null && _b !== void 0 ? _b : "annotation-".concat(index);
|
|
19
22
|
};
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
var decodeSimpleMarkupInput = function (input) {
|
|
24
|
+
var namedEntities = {
|
|
25
|
+
amp: '&',
|
|
26
|
+
quot: '"',
|
|
27
|
+
apos: "'",
|
|
28
|
+
nbsp: '\u00a0',
|
|
29
|
+
};
|
|
30
|
+
var withBasicEntitiesDecoded = input.replace(/&(#x?[0-9a-f]+|#\d+|[a-z][\w-]*);/gi, function (match, entity) {
|
|
31
|
+
var _a;
|
|
32
|
+
var lower = entity.toLowerCase();
|
|
33
|
+
if (lower === 'lt' || lower === 'gt') {
|
|
34
|
+
return "&".concat(lower, ";");
|
|
35
|
+
}
|
|
36
|
+
if (lower.startsWith('#')) {
|
|
37
|
+
var isHex = lower[1] === 'x';
|
|
38
|
+
var digits = lower.slice(isHex ? 2 : 1);
|
|
39
|
+
var codePoint = Number.parseInt(digits, isHex ? 16 : 10);
|
|
40
|
+
if (Number.isNaN(codePoint)) {
|
|
41
|
+
return match;
|
|
42
|
+
}
|
|
43
|
+
if (codePoint === CHAR_CODE_LESS_THAN) {
|
|
44
|
+
return '<';
|
|
45
|
+
}
|
|
46
|
+
if (codePoint === CHAR_CODE_GREATER_THAN) {
|
|
47
|
+
return '>';
|
|
48
|
+
}
|
|
49
|
+
return String.fromCodePoint(codePoint);
|
|
50
|
+
}
|
|
51
|
+
return (_a = namedEntities[lower]) !== null && _a !== void 0 ? _a : match;
|
|
52
|
+
});
|
|
53
|
+
return withBasicEntitiesDecoded.replace(/<([^;]+)>/gi, function (match, inner) {
|
|
54
|
+
var normalized = inner.trim().replace(/\s+/g, ' ');
|
|
55
|
+
var lower = normalized.toLowerCase();
|
|
56
|
+
switch (lower) {
|
|
57
|
+
case 'b':
|
|
58
|
+
return '<b>';
|
|
59
|
+
case '/b':
|
|
60
|
+
return '</b>';
|
|
61
|
+
case 'i':
|
|
62
|
+
return '<i>';
|
|
63
|
+
case '/i':
|
|
64
|
+
return '</i>';
|
|
65
|
+
case 'br':
|
|
66
|
+
case 'br/':
|
|
67
|
+
case 'br /':
|
|
68
|
+
return '<br />';
|
|
69
|
+
default:
|
|
70
|
+
return match;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
var appendTextNode = function (nodes, text) {
|
|
75
|
+
if (text.length === 0) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
var last = nodes[nodes.length - 1];
|
|
79
|
+
if (last && last.type === 'text') {
|
|
80
|
+
last.content += text;
|
|
24
81
|
}
|
|
25
|
-
|
|
26
|
-
|
|
82
|
+
else {
|
|
83
|
+
nodes.push({ type: 'text', content: text });
|
|
27
84
|
}
|
|
28
|
-
var workingDocument = documentRef.implementation.createHTMLDocument('');
|
|
29
|
-
workingDocument.body.innerHTML = html;
|
|
30
|
-
return (_b = workingDocument.body.textContent) !== null && _b !== void 0 ? _b : '';
|
|
31
85
|
};
|
|
32
|
-
var
|
|
86
|
+
var serializeSimpleMarkup = function (nodes) {
|
|
87
|
+
return nodes
|
|
88
|
+
.map(function (node) {
|
|
89
|
+
if (node.type === 'text') {
|
|
90
|
+
return node.content;
|
|
91
|
+
}
|
|
92
|
+
if (node.type === 'br') {
|
|
93
|
+
return '<br />';
|
|
94
|
+
}
|
|
95
|
+
return "<".concat(node.tag, ">").concat(serializeSimpleMarkup(node.children), "</").concat(node.tag, ">");
|
|
96
|
+
})
|
|
97
|
+
.join('');
|
|
98
|
+
};
|
|
99
|
+
var parseSimpleMarkup = function (input) {
|
|
33
100
|
var _a, _b;
|
|
34
|
-
if (!
|
|
35
|
-
return
|
|
101
|
+
if (!input) {
|
|
102
|
+
return [];
|
|
36
103
|
}
|
|
37
|
-
|
|
38
|
-
|
|
104
|
+
var decodedInput = decodeSimpleMarkupInput(input);
|
|
105
|
+
var rootChildren = [];
|
|
106
|
+
var stack = [{ node: null }];
|
|
107
|
+
var currentChildren = function () { var _a, _b; return (_b = (_a = stack[stack.length - 1].node) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : rootChildren; };
|
|
108
|
+
var tagRegex = /<\/?([a-z]+)\s*\/?\s*>/gi;
|
|
109
|
+
var lastIndex = 0;
|
|
110
|
+
var match;
|
|
111
|
+
while ((match = tagRegex.exec(decodedInput)) !== null) {
|
|
112
|
+
var fullMatch = match[0], rawTagName = match[1];
|
|
113
|
+
var tagName = rawTagName.toLowerCase();
|
|
114
|
+
var isClosing = fullMatch.startsWith('</');
|
|
115
|
+
var isSelfClosing = /\/\s*>$/.test(fullMatch);
|
|
116
|
+
appendTextNode(currentChildren(), decodedInput.slice(lastIndex, match.index));
|
|
117
|
+
lastIndex = match.index + fullMatch.length;
|
|
118
|
+
if (tagName === 'br' && !isClosing) {
|
|
119
|
+
currentChildren().push({ type: 'br' });
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if ((tagName === 'b' || tagName === 'i') && !isSelfClosing) {
|
|
123
|
+
if (isClosing) {
|
|
124
|
+
var top_1 = stack[stack.length - 1].node;
|
|
125
|
+
if (stack.length > 1 && (top_1 === null || top_1 === void 0 ? void 0 : top_1.tag) === tagName) {
|
|
126
|
+
stack.pop();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
appendTextNode(currentChildren(), fullMatch);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (stack.length - 1 >= MAX_SIMPLE_MARKUP_DEPTH) {
|
|
134
|
+
appendTextNode(currentChildren(), fullMatch);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
var elementNode = {
|
|
138
|
+
type: 'element',
|
|
139
|
+
tag: tagName,
|
|
140
|
+
children: [],
|
|
141
|
+
};
|
|
142
|
+
currentChildren().push(elementNode);
|
|
143
|
+
stack.push({ node: elementNode });
|
|
144
|
+
}
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
appendTextNode(currentChildren(), fullMatch);
|
|
39
148
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
149
|
+
appendTextNode(currentChildren(), decodedInput.slice(lastIndex));
|
|
150
|
+
while (stack.length > 1) {
|
|
151
|
+
var unclosed = stack.pop();
|
|
152
|
+
var elementNode = unclosed.node;
|
|
153
|
+
if (!elementNode) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
var parentChildren = (_b = (_a = stack[stack.length - 1].node) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : rootChildren;
|
|
157
|
+
var lastChild = parentChildren[parentChildren.length - 1];
|
|
158
|
+
if (lastChild === elementNode) {
|
|
159
|
+
parentChildren.pop();
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
var nodeIndex = parentChildren.indexOf(elementNode);
|
|
163
|
+
if (nodeIndex !== -1) {
|
|
164
|
+
parentChildren.splice(nodeIndex, 1);
|
|
47
165
|
}
|
|
48
|
-
}
|
|
166
|
+
}
|
|
167
|
+
appendTextNode(parentChildren, "<".concat(elementNode.tag, ">").concat(serializeSimpleMarkup(elementNode.children), "</").concat(elementNode.tag, ">"));
|
|
168
|
+
}
|
|
169
|
+
return rootChildren;
|
|
170
|
+
};
|
|
171
|
+
var simpleMarkupNodesToPlainText = function (nodes) {
|
|
172
|
+
return nodes
|
|
173
|
+
.map(function (node) {
|
|
174
|
+
if (node.type === 'text') {
|
|
175
|
+
return node.content;
|
|
176
|
+
}
|
|
177
|
+
if (node.type === 'br') {
|
|
178
|
+
return '\n';
|
|
179
|
+
}
|
|
180
|
+
return simpleMarkupNodesToPlainText(node.children);
|
|
181
|
+
})
|
|
182
|
+
.join('');
|
|
183
|
+
};
|
|
184
|
+
var renderSimpleMarkupNodeList = function (nodes, keyPrefix) {
|
|
185
|
+
return nodes.map(function (node, index) {
|
|
186
|
+
var key = "".concat(keyPrefix, "-").concat(index);
|
|
187
|
+
if (node.type === 'text') {
|
|
188
|
+
return React.createElement(React.Fragment, { key: key }, node.content);
|
|
189
|
+
}
|
|
190
|
+
if (node.type === 'br') {
|
|
191
|
+
return React.createElement("br", { key: key });
|
|
192
|
+
}
|
|
193
|
+
var Tag = node.tag === 'b' ? 'strong' : 'em';
|
|
194
|
+
return React.createElement.apply(React, tslib_1.__spreadArray([Tag, { key: key }], renderSimpleMarkupNodeList(node.children, key), false));
|
|
49
195
|
});
|
|
50
|
-
|
|
196
|
+
};
|
|
197
|
+
var renderSimpleMarkup = function (nodes, keyPrefix) {
|
|
198
|
+
var _a;
|
|
199
|
+
var rendered = renderSimpleMarkupNodeList(nodes, keyPrefix);
|
|
200
|
+
return rendered.length <= 1 ? (_a = rendered[0]) !== null && _a !== void 0 ? _a : null : rendered;
|
|
51
201
|
};
|
|
52
202
|
var normalizeBandOffset = function (scale, value) {
|
|
53
203
|
var position = scale === null || scale === void 0 ? void 0 : scale(value);
|
|
@@ -60,9 +210,9 @@ var normalizeBandOffset = function (scale, value) {
|
|
|
60
210
|
return position;
|
|
61
211
|
};
|
|
62
212
|
var clamp = function (value, min, max) { return Math.max(min, Math.min(max, value)); };
|
|
63
|
-
var createMeasurementSignature = function (
|
|
213
|
+
var createMeasurementSignature = function (annotationContentSignature, containerStyle, contentStyle, layoutClassName, styleClassName) {
|
|
64
214
|
return JSON.stringify({
|
|
65
|
-
|
|
215
|
+
annotationContentSignature: annotationContentSignature,
|
|
66
216
|
containerStyle: containerStyle,
|
|
67
217
|
contentStyle: contentStyle,
|
|
68
218
|
layoutClassName: layoutClassName !== null && layoutClassName !== void 0 ? layoutClassName : '',
|
|
@@ -184,29 +334,36 @@ exports.ChartAnnotationLayer = React.memo(function (props) {
|
|
|
184
334
|
var measurementElements = [];
|
|
185
335
|
var connectors = [];
|
|
186
336
|
resolvedAnnotations.forEach(function (_a) {
|
|
187
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12;
|
|
337
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13;
|
|
188
338
|
var annotation = _a.annotation, key = _a.key;
|
|
189
339
|
var resolved = resolveCoordinates(annotation, context);
|
|
190
340
|
if (!resolved) {
|
|
191
341
|
return;
|
|
192
342
|
}
|
|
193
|
-
var
|
|
343
|
+
var rawAnnotationText = annotation.text === undefined || annotation.text === null ? '' : String(annotation.text);
|
|
344
|
+
var annotationMarkupNodes = parseSimpleMarkup(rawAnnotationText);
|
|
345
|
+
var annotationMarkupSignature = JSON.stringify(annotationMarkupNodes);
|
|
346
|
+
var annotationPlainText = simpleMarkupNodesToPlainText(annotationMarkupNodes);
|
|
194
347
|
var layout = annotation.layout;
|
|
195
|
-
var horizontalAlign = (
|
|
196
|
-
var verticalAlign = (
|
|
197
|
-
var backgroundOpacity = (
|
|
198
|
-
var baseBackgroundColor = (
|
|
199
|
-
var hasCustomBackground = ((
|
|
348
|
+
var horizontalAlign = (_b = layout === null || layout === void 0 ? void 0 : layout.align) !== null && _b !== void 0 ? _b : DEFAULT_HORIZONTAL_ALIGN;
|
|
349
|
+
var verticalAlign = (_c = layout === null || layout === void 0 ? void 0 : layout.verticalAlign) !== null && _c !== void 0 ? _c : DEFAULT_VERTICAL_ALIGN;
|
|
350
|
+
var backgroundOpacity = (_e = (_d = annotation.style) === null || _d === void 0 ? void 0 : _d.opacity) !== null && _e !== void 0 ? _e : ChartAnnotationLayer_styles_1.DEFAULT_ANNOTATION_BACKGROUND_OPACITY;
|
|
351
|
+
var baseBackgroundColor = (_g = (_f = annotation.style) === null || _f === void 0 ? void 0 : _f.backgroundColor) !== null && _g !== void 0 ? _g : theme.semanticColors.bodyBackground;
|
|
352
|
+
var hasCustomBackground = ((_h = annotation.style) === null || _h === void 0 ? void 0 : _h.backgroundColor) !== undefined || ((_j = annotation.style) === null || _j === void 0 ? void 0 : _j.opacity) !== undefined;
|
|
200
353
|
var containerStyle = tslib_1.__assign(tslib_1.__assign({ maxWidth: layout === null || layout === void 0 ? void 0 : layout.maxWidth }, (hasCustomBackground && {
|
|
201
354
|
backgroundColor: (0, ChartAnnotationLayer_styles_1.applyOpacityToColor)(baseBackgroundColor, backgroundOpacity),
|
|
202
|
-
})), { borderColor: (
|
|
355
|
+
})), { borderColor: (_k = annotation.style) === null || _k === void 0 ? void 0 : _k.borderColor, borderWidth: (_l = annotation.style) === null || _l === void 0 ? void 0 : _l.borderWidth, borderStyle: (_o = (_m = annotation.style) === null || _m === void 0 ? void 0 : _m.borderStyle) !== null && _o !== void 0 ? _o : (((_p = annotation.style) === null || _p === void 0 ? void 0 : _p.borderColor) ? 'solid' : undefined), borderRadius: (_q = annotation.style) === null || _q === void 0 ? void 0 : _q.borderRadius, padding: (_r = annotation.style) === null || _r === void 0 ? void 0 : _r.padding, boxShadow: (_s = annotation.style) === null || _s === void 0 ? void 0 : _s.boxShadow });
|
|
203
356
|
var contentStyle = {
|
|
204
|
-
color: (
|
|
205
|
-
fontSize: (
|
|
206
|
-
fontWeight: (
|
|
357
|
+
color: (_t = annotation.style) === null || _t === void 0 ? void 0 : _t.textColor,
|
|
358
|
+
fontSize: (_u = annotation.style) === null || _u === void 0 ? void 0 : _u.fontSize,
|
|
359
|
+
fontWeight: (_v = annotation.style) === null || _v === void 0 ? void 0 : _v.fontWeight,
|
|
207
360
|
opacity: 1,
|
|
208
361
|
};
|
|
209
|
-
|
|
362
|
+
if (typeof ((_w = annotation.style) === null || _w === void 0 ? void 0 : _w.rotation) === 'number' && !Number.isNaN(annotation.style.rotation)) {
|
|
363
|
+
containerStyle.transform = "rotate(".concat(annotation.style.rotation, "deg)");
|
|
364
|
+
containerStyle.transformOrigin = '50% 50%';
|
|
365
|
+
}
|
|
366
|
+
var measurementSignature = createMeasurementSignature(annotationMarkupSignature, containerStyle, contentStyle, layout === null || layout === void 0 ? void 0 : layout.className, (_x = annotation.style) === null || _x === void 0 ? void 0 : _x.className);
|
|
210
367
|
var measurementEntry = measurements[key];
|
|
211
368
|
var isMeasurementValid = (measurementEntry === null || measurementEntry === void 0 ? void 0 : measurementEntry.signature) === measurementSignature;
|
|
212
369
|
var measuredSize = isMeasurementValid ? measurementEntry : undefined;
|
|
@@ -257,7 +414,7 @@ exports.ChartAnnotationLayer = React.memo(function (props) {
|
|
|
257
414
|
};
|
|
258
415
|
}
|
|
259
416
|
}
|
|
260
|
-
var measurementStyle = tslib_1.__assign({ left: topLeftX, top: topLeftY, pointerEvents: 'none' }, containerStyle);
|
|
417
|
+
var measurementStyle = tslib_1.__assign({ position: 'absolute', left: topLeftX, top: topLeftY, pointerEvents: 'none', visibility: 'hidden' }, containerStyle);
|
|
261
418
|
if (!isMeasurementValid) {
|
|
262
419
|
measurementElements.push(React.createElement("div", { key: "".concat(key, "-measurement"), ref: function (node) {
|
|
263
420
|
if (node) {
|
|
@@ -267,13 +424,13 @@ exports.ChartAnnotationLayer = React.memo(function (props) {
|
|
|
267
424
|
}
|
|
268
425
|
}
|
|
269
426
|
}, className: (0, Utilities_1.css)(classNames.annotation, classNames.measurement, layout === null || layout === void 0 ? void 0 : layout.className, (_5 = annotation.style) === null || _5 === void 0 ? void 0 : _5.className), style: measurementStyle, "aria-hidden": true, "data-annotation-key": key, "data-chart-annotation-measurement": "true" },
|
|
270
|
-
React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, layout === null || layout === void 0 ? void 0 : layout.className, (_6 = annotation.style) === null || _6 === void 0 ? void 0 : _6.className), style: contentStyle,
|
|
427
|
+
React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, layout === null || layout === void 0 ? void 0 : layout.className, (_6 = annotation.style) === null || _6 === void 0 ? void 0 : _6.className), style: contentStyle }, renderSimpleMarkup(annotationMarkupNodes, "".concat(key, "-measurement")))));
|
|
271
428
|
}
|
|
272
429
|
annotationForeignObjects.push(React.createElement("foreignObject", { key: "".concat(key, "-annotation"), x: topLeftX, y: topLeftY, width: width, height: height, className: (0, Utilities_1.css)(classNames.annotationForeignObject), "data-annotation-key": key },
|
|
273
430
|
React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotation, layout === null || layout === void 0 ? void 0 : layout.className, (_7 = annotation.style) === null || _7 === void 0 ? void 0 : _7.className), style: containerStyle, "data-annotation-key": key },
|
|
274
|
-
React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, (_8 = annotation.style) === null || _8 === void 0 ? void 0 : _8.className), style: contentStyle, role: (_10 = (_9 = annotation.accessibility) === null || _9 === void 0 ? void 0 : _9.role) !== null && _10 !== void 0 ? _10 : 'note', "aria-label": (_11 = annotation.accessibility) === null || _11 === void 0 ? void 0 : _11.ariaLabel, "aria-describedby": (
|
|
431
|
+
React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, (_8 = annotation.style) === null || _8 === void 0 ? void 0 : _8.className), style: contentStyle, role: (_10 = (_9 = annotation.accessibility) === null || _9 === void 0 ? void 0 : _9.role) !== null && _10 !== void 0 ? _10 : 'note', "aria-label": (_12 = (_11 = annotation.accessibility) === null || _11 === void 0 ? void 0 : _11.ariaLabel) !== null && _12 !== void 0 ? _12 : (annotationPlainText ? annotationPlainText : undefined), "aria-describedby": (_13 = annotation.accessibility) === null || _13 === void 0 ? void 0 : _13.ariaDescribedBy, "data-chart-annotation": "true", "data-annotation-key": key }, renderSimpleMarkup(annotationMarkupNodes, "".concat(key, "-content"))))));
|
|
275
432
|
if (annotation.connector) {
|
|
276
|
-
var
|
|
433
|
+
var _14 = annotation.connector, _15 = _14.startPadding, startPadding = _15 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_START_PADDING : _15, _16 = _14.endPadding, endPadding = _16 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_END_PADDING : _16, _17 = _14.strokeColor, strokeColor = _17 === void 0 ? (0, ChartAnnotationLayer_styles_1.getDefaultConnectorStrokeColor)(theme) : _17, _18 = _14.strokeWidth, strokeWidth = _18 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_STROKE_WIDTH : _18, dashArray = _14.dashArray, _19 = _14.arrow, arrow = _19 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_ARROW : _19;
|
|
277
434
|
var dx = resolved.anchor.x - displayPoint.x;
|
|
278
435
|
var dy = resolved.anchor.y - displayPoint.y;
|
|
279
436
|
var distance = Math.sqrt(dx * dx + dy * dy) || 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartAnnotationLayer.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, css, getId } from '@fluentui/react/lib/Utilities';\nimport { IChartAnnotation } from '../../../types/IChartAnnotation';\nimport {\n IAnnotationPoint,\n IChartAnnotationContext,\n IChartAnnotationLayerProps,\n ConnectorRenderData,\n IResolvedAnnotationPosition,\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 getStyles,\n IChartAnnotationLayerStyleProps,\n IChartAnnotationLayerStyles,\n} from './ChartAnnotationLayer.styles';\n\nconst getClassNames = classNamesFunction<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles>();\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 getAnnotationKey = (annotation: IChartAnnotation, index: number) =>\n annotation.id ??\n (typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined) ??\n `annotation-${index}`;\n\nconst decodeHtmlEntities = (html: string, documentRef: Document): string => {\n if (!html || html.indexOf('&') === -1) {\n return html;\n }\n\n if (!documentRef?.implementation?.createHTMLDocument) {\n return html;\n }\n\n const workingDocument = documentRef.implementation.createHTMLDocument('');\n workingDocument.body.innerHTML = html;\n return workingDocument.body.textContent ?? '';\n};\n\nconst sanitizeAnnotationHtml = (html: string): string => {\n if (!html) {\n return '';\n }\n\n if (typeof window === 'undefined' || !window.document?.implementation?.createHTMLDocument) {\n return html;\n }\n\n const workingDocument = window.document.implementation.createHTMLDocument('');\n workingDocument.body.innerHTML = decodeHtmlEntities(html, window.document);\n\n workingDocument.body.querySelectorAll('script, iframe, object, embed, link').forEach(node => node.remove());\n\n workingDocument.body.querySelectorAll('*').forEach(node => {\n Array.from(node.attributes).forEach(attr => {\n if (/^on/i.test(attr.name)) {\n node.removeAttribute(attr.name);\n }\n });\n });\n\n return workingDocument.body.innerHTML;\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 annotationHtml: string,\n containerStyle: React.CSSProperties,\n contentStyle: React.CSSProperties,\n layoutClassName?: string,\n styleClassName?: string,\n) =>\n JSON.stringify({\n annotationHtml,\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: IChartAnnotation,\n context: IChartAnnotationContext,\n): IResolvedAnnotationPosition | 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: IAnnotationPoint = { 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<IChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, theme, context, className } = props;\n\n const classNames = getClassNames(getStyles, { theme, className });\n const idPrefix = React.useMemo(() => getId('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 annotationHtml = sanitizeAnnotationHtml(annotation.text ?? '');\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 ?? theme.semanticColors.bodyBackground;\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 backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity),\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 const measurementSignature = createMeasurementSignature(\n annotationHtml,\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: IAnnotationPoint = { 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 left: topLeftX,\n top: topLeftY,\n pointerEvents: 'none',\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={css(classNames.annotation, classNames.measurement, layout?.className, annotation.style?.className)}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n {/* eslint-disable-next-line react/no-danger -- content sanitized via sanitizeAnnotationHtml */}\n <div\n className={css(classNames.annotationContent, layout?.className, annotation.style?.className)}\n style={contentStyle}\n dangerouslySetInnerHTML={{ __html: annotationHtml }}\n />\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={css(classNames.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.annotation, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n {/* eslint-disable-next-line react/no-danger -- content sanitized via sanitizeAnnotationHtml */}\n <div\n className={css(classNames.annotationContent, annotation.style?.className)}\n style={contentStyle}\n role={annotation.accessibility?.role ?? 'note'}\n aria-label={annotation.accessibility?.ariaLabel}\n aria-describedby={annotation.accessibility?.ariaDescribedBy}\n data-chart-annotation=\"true\"\n data-annotation-key={key}\n dangerouslySetInnerHTML={{ __html: annotationHtml }}\n />\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(theme),\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: IAnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: IAnnotationPoint = {\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={classNames.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classNames.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={classNames.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"]}
|
|
1
|
+
{"version":3,"file":"ChartAnnotationLayer.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"names":[],"mappings":";;;;AAAA,6BAA+B;AAC/B,2DAA+E;AAS/E,6EASuC;AAGvC,IAAM,aAAa,GAAG,IAAA,8BAAkB,GAAgE,CAAC;AAEzG,IAAM,wBAAwB,GAAG,QAAQ,CAAC;AAC1C,IAAM,sBAAsB,GAAG,QAAQ,CAAC;AACxC,IAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,IAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,IAAM,cAAc,GAAG,CAAC,CAAC;AACzB,IAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,IAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,IAAM,mBAAmB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;AAChD,IAAM,sBAAsB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;AACnD,IAAM,gBAAgB,GAAG,UAAC,UAA4B,EAAE,KAAa;;IACnE,OAAA,MAAA,MAAA,UAAU,CAAC,EAAE,mCACb,CAAC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mCAClH,qBAAc,KAAK,CAAE,CAAA;CAAA,CAAC;AAaxB,IAAM,uBAAuB,GAAG,UAAC,KAAa;IAC5C,IAAM,aAAa,GAA2B;QAC5C,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,QAAQ;KACf,CAAC;IAEF,IAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAAC,qCAAqC,EAAE,UAAC,KAAK,EAAE,MAAM;;QAClG,IAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,WAAI,KAAK,MAAG,CAAC;QACtB,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/B,IAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;gBACtC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAA,aAAa,CAAC,KAAK,CAAC,mCAAI,KAAK,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,wBAAwB,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAC,KAAK,EAAE,KAAK;QACxE,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrD,IAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAEvC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,GAAG;gBACN,OAAO,KAAK,CAAC;YACf,KAAK,IAAI;gBACP,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,KAAK,CAAC;YACf,KAAK,IAAI;gBACP,OAAO,MAAM,CAAC;YAChB,KAAK,IAAI,CAAC;YACV,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAM,cAAc,GAAG,UAAC,KAAyB,EAAE,IAAY;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC;AAEF,IAAM,qBAAqB,GAAG,UAAC,KAAyB;IACtD,OAAA,KAAK;SACF,GAAG,CAAC,UAAA,IAAI;QACP,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,WAAI,IAAI,CAAC,GAAG,cAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAK,IAAI,CAAC,GAAG,MAAG,CAAC;IAC9E,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC;AAVX,CAUW,CAAC;AAEd,IAAM,iBAAiB,GAAG,UAAC,KAAa;;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,IAAM,KAAK,GAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAM,eAAe,GAAG,0BAAM,OAAA,MAAA,MAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,0CAAE,QAAQ,mCAAI,YAAY,CAAA,EAAA,CAAC;IACrF,IAAM,QAAQ,GAAG,0BAA0B,CAAC;IAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,IAAA,SAAS,GAAgB,KAAK,GAArB,EAAE,UAAU,GAAI,KAAK,GAAT,CAAU;QACtC,IAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhD,cAAc,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;QAE3C,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3D,IAAI,SAAS,EAAE,CAAC;gBACd,IAAM,KAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAA,KAAG,aAAH,KAAG,uBAAH,KAAG,CAAE,GAAG,MAAK,OAAO,EAAE,CAAC;oBAC7C,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,uBAAuB,EAAE,CAAC;oBAChD,cAAc,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,CAAC;oBAC7C,SAAS;gBACX,CAAC;gBACD,IAAM,WAAW,GAAsB;oBACrC,IAAI,EAAE,SAAS;oBACf,GAAG,EAAE,OAAoB;oBACzB,QAAQ,EAAE,EAAE;iBACb,CAAC;gBACF,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACpC,CAAC;YACD,SAAS;QACX,CAAC;QAED,cAAc,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC9B,IAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,IAAM,cAAc,GAAG,MAAA,MAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,0CAAE,QAAQ,mCAAI,YAAY,CAAC;QAC9E,IAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,cAAc,CAAC,GAAG,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,cAAc,CACZ,cAAc,EACd,WAAI,WAAW,CAAC,GAAG,cAAI,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAK,WAAW,CAAC,GAAG,MAAG,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,IAAM,4BAA4B,GAAG,UAAC,KAAyB;IAC7D,OAAA,KAAK;SACF,GAAG,CAAC,UAAA,IAAI;QACP,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC;AAVX,CAUW,CAAC;AAEd,IAAM,0BAA0B,GAAG,UAAC,KAAyB,EAAE,SAAiB;IAC9E,OAAA,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;QACpB,IAAM,GAAG,GAAG,UAAG,SAAS,cAAI,KAAK,CAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,GAAG,IAAG,IAAI,CAAC,OAAO,CAAkB,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,4BAAI,GAAG,EAAE,GAAG,GAAI,CAAC;QAC1B,CAAC;QAED,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,OAAO,KAAK,CAAC,aAAa,OAAnB,KAAK,yBAAe,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,GAAK,0BAA0B,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAE;IAC9F,CAAC,CAAC;AAbF,CAaE,CAAC;AAEL,IAAM,kBAAkB,GAAG,UAAC,KAAyB,EAAE,SAAiB;;IACtE,IAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAA,QAAQ,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC,CAAC;AAEF,IAAM,mBAAmB,GAAG,UAC1B,KAAgF,EAChF,KAAc;IAEd,IAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,KAAc,CAAC,CAAC;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACnD,OAAO,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,IAAM,KAAK,GAAG,UAAC,KAAa,EAAE,GAAW,EAAE,GAAW,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAnC,CAAmC,CAAC;AAE/F,IAAM,0BAA0B,GAAG,UACjC,0BAAkC,EAClC,cAAmC,EACnC,YAAiC,EACjC,eAAwB,EACxB,cAAuB;IAEvB,OAAA,IAAI,CAAC,SAAS,CAAC;QACb,0BAA0B,4BAAA;QAC1B,cAAc,gBAAA;QACd,YAAY,cAAA;QACZ,eAAe,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,EAAE;QACtC,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,EAAE;KACrC,CAAC;AANF,CAME,CAAC;AAIL,IAAM,kBAAkB,GAAG,UACzB,UAA4B,EAC5B,OAAgC;;IAExB,IAAA,WAAW,GAAa,UAAU,YAAvB,EAAE,MAAM,GAAK,UAAU,OAAf,CAAgB;IAE3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,CAAC,CAAC;IACrC,IAAM,OAAO,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,CAAC,CAAC;IAErC,IAAM,MAAM,GAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhD,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,CAAC;YACJ,IAAA,CAAC,GAA2B,WAAW,EAAtC,EAAE,CAAC,GAAwB,WAAW,EAAnC,EAAE,KAAsB,WAAW,MAAhB,EAAjB,KAAK,mBAAG,SAAS,KAAA,CAAiB;YAChD,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAM,MAAM,GAAG,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;YACvF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,IAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7D,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;YAClB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;YAClB,MAAM;QACR,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;YACxE,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;IAC9B,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;IAE7B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpF,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACL,MAAM,QAAA;QACN,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,oBAAoB,GAAyC,KAAK,CAAC,IAAI,CAAC,UAAA,KAAK;IAChF,IAAa,eAAe,GAAgC,KAAK,YAArC,EAAE,KAAK,GAAyB,KAAK,MAA9B,EAAE,OAAO,GAAgB,KAAK,QAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAW;IAE1E,IAAM,UAAU,GAAG,aAAa,CAAC,uCAAS,EAAE,EAAE,KAAK,OAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;IAClE,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAM,OAAA,IAAA,iBAAK,EAAC,kBAAkB,CAAC,EAAzB,CAAyB,EAAE,EAAE,CAAC,CAAC;IAE9D,IAAA,KAAkC,KAAK,CAAC,QAAQ,CAAmC,EAAE,CAAC,EAArF,YAAY,QAAA,EAAE,eAAe,QAAwD,CAAC;IAE7F,IAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CACvC;QACE,OAAA,CAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,UAAU,EAAE,KAAK,IAAK,OAAA,CAAC,EAAE,UAAU,YAAA,EAAE,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,EAA1D,CAA0D,CAAC;IAA9G,CAA8G,EAChH,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC;QACd,eAAe,CAAC,UAAA,IAAI;YAClB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,EAAsC,CAAC;YAChD,CAAC;YAED,IAAM,IAAI,GAAqC,EAAE,CAAC;YAClD,mBAAmB,CAAC,OAAO,CAAC,UAAC,EAAO;oBAAL,GAAG,SAAA;gBAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC1D,IAAI,SAAS,GAAG,IAAI,CAAC;gBACrB,KAAkB,UAAiB,EAAjB,KAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAjB,cAAiB,EAAjB,IAAiB,EAAE,CAAC;oBAAjC,IAAM,GAAG,SAAA;oBACZ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC5B,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,UAAC,GAAW,EAAE,KAAa,EAAE,MAAc,EAAE,SAAiB;QACxG,eAAe,CAAC,UAAA,IAAI;;YAClB,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,IACE,SAAS;gBACT,SAAS,CAAC,SAAS,KAAK,SAAS;gBACjC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG;gBACvC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,EACzC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,6CACK,IAAI,gBACN,GAAG,IAAG,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,OACnC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,wBAAwB,GAAsB,EAAE,CAAC;IACvD,IAAM,mBAAmB,GAAsB,EAAE,CAAC;IAClD,IAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,mBAAmB,CAAC,OAAO,CAAC,UAAC,EAAmB;;YAAjB,UAAU,gBAAA,EAAE,GAAG,SAAA;QAC5C,IAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnH,IAAM,qBAAqB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACnE,IAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACxE,IAAM,mBAAmB,GAAG,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;QAEhF,IAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAM,eAAe,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCAAI,wBAAwB,CAAC;QAClE,IAAM,aAAa,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,mCAAI,sBAAsB,CAAC;QACtE,IAAM,iBAAiB,GAAG,MAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,mCAAI,mEAAqC,CAAC;QAC7F,IAAM,mBAAmB,GAAG,MAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,eAAe,mCAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;QACrG,IAAM,mBAAmB,GACvB,CAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,eAAe,MAAK,SAAS,IAAI,CAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,MAAK,SAAS,CAAC;QAE7F,IAAM,cAAc,uCAClB,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,IACvB,CAAC,mBAAmB,IAAI;YACzB,eAAe,EAAE,IAAA,iDAAmB,EAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC7E,CAAC,KACF,WAAW,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,WAAW,EAC1C,WAAW,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,WAAW,EAC1C,WAAW,EAAE,MAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,WAAW,mCAAI,CAAC,CAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EACnG,YAAY,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,YAAY,EAC5C,OAAO,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,EAClC,SAAS,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,GACvC,CAAC;QAEF,IAAM,YAAY,GAAwB;YACxC,KAAK,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS;YAClC,QAAQ,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,QAAQ;YACpC,UAAU,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,UAAU;YACxC,OAAO,EAAE,CAAC;SACX,CAAC;QAEF,IAAI,OAAO,CAAA,MAAA,UAAU,CAAC,KAAK,0CAAE,QAAQ,CAAA,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/F,cAAc,CAAC,SAAS,GAAG,iBAAU,UAAU,CAAC,KAAK,CAAC,QAAQ,SAAM,CAAC;YACrE,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC;QAC7C,CAAC;QAED,IAAM,oBAAoB,GAAG,0BAA0B,CACrD,yBAAyB,EACzB,cAAc,EACd,YAAY,EACZ,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EACjB,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,CAC5B,CAAC;QACF,IAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAM,kBAAkB,GAAG,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,MAAK,oBAAoB,CAAC;QAChF,IAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC;QACnG,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAElF,IAAM,OAAO,GAAG,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAM,OAAO,GAAG,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpG,IAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;QAChD,IAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;QAEhD,IAAM,aAAa,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,KAAK,CAAC;QACrD,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,OAAO,CAAC,KAAK,mCAAI,CAAC,CAAC;QAC1F,IAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC;QAE7F,IAAM,WAAW,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QACzF,IAAM,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QAE5F,IAAI,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACnH,IAAI,QAAQ,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QAEpH,IAAI,YAAY,GAAG;YACjB,CAAC,EAAE,QAAQ,GAAG,OAAO;YACrB,CAAC,EAAE,QAAQ,GAAG,OAAO;SACtB,CAAC;QAEF,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,IAAM,YAAY,GAAG,MAAA,UAAU,CAAC,SAAS,CAAC,YAAY,mCAAI,EAAE,CAAC;YAC7D,IAAM,UAAU,GAAG,MAAA,UAAU,CAAC,SAAS,CAAC,UAAU,mCAAI,CAAC,CAAC;YACxD,IAAM,iBAAiB,GAAG,CAAC,CAAC;YAC5B,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAE1F,IAAM,EAAE,GAAG,YAAY,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAM,EAAE,GAAG,YAAY,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,IAAM,iBAAiB,GAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5D,IAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC;gBAChE,IAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC;gBAEhE,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;gBAC7D,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;gBAE7D,IAAI,eAAe,GAAG,eAAe,GAAG,OAAO,CAAC;gBAChD,IAAI,eAAe,GAAG,eAAe,GAAG,OAAO,CAAC;gBAEhD,eAAe;oBACb,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC5G,eAAe;oBACb,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gBAE7G,QAAQ,GAAG,eAAe,CAAC;gBAC3B,QAAQ,GAAG,eAAe,CAAC;gBAC3B,YAAY,GAAG;oBACb,CAAC,EAAE,QAAQ,GAAG,OAAO;oBACrB,CAAC,EAAE,QAAQ,GAAG,OAAO;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAM,gBAAgB,sBACpB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,QAAQ,EACb,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,QAAQ,IACjB,cAAc,CAClB,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,mBAAmB,CAAC,IAAI,CACtB,6BACE,GAAG,EAAE,UAAG,GAAG,iBAAc,EACzB,GAAG,EAAE,UAAA,IAAI;oBACP,IAAI,IAAI,EAAE,CAAC;wBACT,IAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC1C,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;wBACxE,CAAC;oBACH,CAAC;gBACH,CAAC,EACD,SAAS,EAAE,IAAA,eAAG,EAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,CAAC,EAC7G,KAAK,EAAE,gBAAgB,iBACV,IAAI,yBACI,GAAG,uCACU,MAAM;gBAExC,6BACE,SAAS,EAAE,IAAA,eAAG,EAAC,UAAU,CAAC,iBAAiB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,CAAC,EAC5F,KAAK,EAAE,YAAY,IAElB,kBAAkB,CAAC,qBAAqB,EAAE,UAAG,GAAG,iBAAc,CAAC,CAC5D,CACF,CACP,CAAC;QACJ,CAAC;QAED,wBAAwB,CAAC,IAAI,CAC3B,uCACE,GAAG,EAAE,UAAG,GAAG,gBAAa,EACxB,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAA,eAAG,EAAC,UAAU,CAAC,uBAAuB,CAAC,yBAC7B,GAAG;YAExB,6BACE,SAAS,EAAE,IAAA,eAAG,EAAC,UAAU,CAAC,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,CAAC,EACrF,KAAK,EAAE,cAAc,yBACA,GAAG;gBAExB,6BACE,SAAS,EAAE,IAAA,eAAG,EAAC,UAAU,CAAC,iBAAiB,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,SAAS,CAAC,EACzE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,OAAA,MAAA,UAAU,CAAC,aAAa,0CAAE,IAAI,qCAAI,MAAM,gBAClC,OAAA,OAAA,UAAU,CAAC,aAAa,4CAAE,SAAS,qCAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,sBACxF,OAAA,UAAU,CAAC,aAAa,4CAAE,eAAe,2BACrC,MAAM,yBACP,GAAG,IAEvB,kBAAkB,CAAC,qBAAqB,EAAE,UAAG,GAAG,aAAU,CAAC,CACxD,CACF,CACQ,CACjB,CAAC;QAEF,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACnB,IAAA,MAOF,UAAU,CAAC,SAAS,EANtB,sBAA8C,EAA9C,YAAY,oBAAG,6DAA+B,MAAA,EAC9C,oBAA0C,EAA1C,UAAU,oBAAG,2DAA6B,MAAA,EAC1C,qBAAmD,EAAnD,WAAW,oBAAG,IAAA,4DAA8B,EAAC,KAAK,CAAC,MAAA,EACnD,qBAA4C,EAA5C,WAAW,oBAAG,4DAA8B,MAAA,EAC5C,SAAS,gBAAA,EACT,eAA+B,EAA/B,KAAK,oBAAG,qDAAuB,MACT,CAAC;YAEzB,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAC9C,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;YAC9C,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACnD,IAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;YACzB,IAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;YAEzB,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACvD,IAAM,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,CAAC;YACtD,IAAM,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;YAC7E,IAAM,aAAa,GAAG,QAAQ,GAAG,GAAG,CAAC;YACrC,IAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;YAClH,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAEhE,IAAM,KAAK,GAAqB;gBAC9B,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,YAAY;gBACrC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,YAAY;aACtC,CAAC;YAEF,IAAM,GAAG,GAAqB;gBAC5B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU;gBACtC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU;aACvC,CAAC;YAEF,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,UAAG,GAAG,eAAY;gBACvB,KAAK,OAAA;gBACL,GAAG,KAAA;gBACH,WAAW,aAAA;gBACX,WAAW,aAAA;gBACX,SAAS,WAAA;gBACT,KAAK,OAAA;gBACL,UAAU,YAAA;gBACV,iBAAiB,mBAAA;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAChD,IAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAElD,IAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,IAAM,cAAc,GAAG,UAAC,KAAa,EAAE,QAAyB,EAAE,IAAY,EAAE,iBAAyB;QACvG,IAAM,EAAE,GAAG,UAAG,QAAQ,cAAI,QAAQ,cAAI,UAAU,CAAC,MAAM,CAAE,CAAC;QAC1D,IAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAM,IAAI,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAM,OAAO,GAAG,iBAAU,IAAI,cAAI,IAAI,iBAAO,IAAI,OAAI,CAAC;QACtD,IAAM,SAAS,GAAG,YAAK,IAAI,mBAAS,IAAI,gBAAM,IAAI,cAAI,IAAI,OAAI,CAAC;QAC/D,IAAM,IAAI,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtD,UAAU,CAAC,IAAI,CACb,gCACE,GAAG,EAAE,EAAE,EACP,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,IAAI,EACjB,YAAY,EAAE,IAAI,EAClB,OAAO,EAAE,cAAO,IAAI,cAAI,IAAI,CAAE,EAC9B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,MAAM,EACb,WAAW,EAAC,gBAAgB;YAE5B,8BACE,CAAC,EAAE,IAAI,EACP,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,CACK,CACV,CAAC;QAEF,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,UAAA,SAAS;QAChD,IAAI,WAA+B,CAAC;QACpC,IAAI,SAA6B,CAAC;QAElC,IAAI,SAAS,CAAC,KAAK,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC9D,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC5D,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC9G,CAAC;QAED,OAAO,CACL,8BACE,GAAG,EAAE,SAAS,CAAC,GAAG,EAClB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EACrB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EACrB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EACnB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EACnB,MAAM,EAAE,SAAS,CAAC,WAAW,EAC7B,WAAW,EAAE,SAAS,CAAC,WAAW,EAClC,eAAe,EAAE,SAAS,CAAC,SAAS,EACpC,aAAa,EAAC,OAAO,EACrB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,eAAQ,WAAW,MAAG,CAAC,CAAC,CAAC,SAAS,EAC7D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,eAAQ,SAAS,MAAG,CAAC,CAAC,CAAC,SAAS,GACvD,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;IACrF,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAC,cAAc,iCAA6B,MAAM;QACpF,eAAe,IAAI,CAClB,6BACE,SAAS,EAAE,UAAU,CAAC,cAAc,EACpC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAE,cAAO,YAAY,cAAI,aAAa,CAAE,EAC/C,mBAAmB,EAAC,MAAM,+BACA,MAAM;YAE/B,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,kCAAO,UAAU,CAAQ;YAClD,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC/B,0CAAe,MAAM,EAAC,SAAS,EAAE,UAAU,CAAC,cAAc,IACvD,iBAAiB,CAChB,CACL;YACA,wBAAwB,CACrB,CACP;QACA,mBAAmB,CAChB,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,4BAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, css, getId } from '@fluentui/react/lib/Utilities';\nimport type { IChartAnnotation } from '../../../types/IChartAnnotation';\nimport type {\n IAnnotationPoint,\n IChartAnnotationContext,\n IChartAnnotationLayerProps,\n ConnectorRenderData,\n IResolvedAnnotationPosition,\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 getStyles,\n} from './ChartAnnotationLayer.styles';\nimport type { IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles } from './ChartAnnotationLayer.styles';\n\nconst getClassNames = classNamesFunction<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles>();\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: IChartAnnotation, 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 });\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: IChartAnnotation,\n context: IChartAnnotationContext,\n): IResolvedAnnotationPosition | 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: IAnnotationPoint = { 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<IChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, theme, context, className } = props;\n\n const classNames = getClassNames(getStyles, { theme, className });\n const idPrefix = React.useMemo(() => getId('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 ?? theme.semanticColors.bodyBackground;\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 backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity),\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: IAnnotationPoint = { 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={css(classNames.annotation, classNames.measurement, layout?.className, annotation.style?.className)}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n <div\n className={css(classNames.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={css(classNames.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.annotation, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.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(theme),\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: IAnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: IAnnotationPoint = {\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={classNames.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classNames.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={classNames.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./ChartAnnotationLayer"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./ChartAnnotationLayer.types"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,uEAA6C","sourcesContent":["export * from './ChartAnnotationLayer';\nexport * from './ChartAnnotationLayer.types';\n"]}
|
|
@@ -29,9 +29,9 @@ export declare class CartesianChartBase extends React.Component<IModifiedCartesi
|
|
|
29
29
|
private _reqID;
|
|
30
30
|
private _isRtl;
|
|
31
31
|
private _tickValues;
|
|
32
|
-
private titleMargin;
|
|
33
32
|
private _isFirstRender;
|
|
34
33
|
private _removalValueForTextTuncate;
|
|
34
|
+
private _yAxisTickText;
|
|
35
35
|
private _xScale;
|
|
36
36
|
private isIntegralDataset;
|
|
37
37
|
private _tooltipId;
|
|
@@ -64,4 +64,9 @@ export declare class CartesianChartBase extends React.Component<IModifiedCartesi
|
|
|
64
64
|
private _getAxisTitle;
|
|
65
65
|
private _calcMaxLabelWidthWithTransform;
|
|
66
66
|
private _transformXAxisLabels;
|
|
67
|
+
private _calcMargins;
|
|
68
|
+
private _getDefaultMargins;
|
|
69
|
+
private _applyTitleMargins;
|
|
70
|
+
private _applyAnnotationMargins;
|
|
71
|
+
private _swapRtlMargins;
|
|
67
72
|
}
|