From 1392b7d8f77087fcb8592a3697e3eadae8db1f33 Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Fri, 29 Jan 2021 15:03:48 +0100 Subject: [PATCH] feat(xy): support multiple point shapes on line, area and bubble charts (#988) This commit adds the support for rendering different shapes on line, area and bubble charts points --- api/charts.api.md | 16 ++ ...ne-chart-visually-looks-correct-1-snap.png | Bin 20674 -> 20670 bytes ...-styling-visually-looks-correct-1-snap.png | Bin 20574 -> 20575 bytes ...and-area-visually-looks-correct-1-snap.png | Bin 85363 -> 85375 bytes ...g-values-visually-looks-correct-1-snap.png | Bin 31070 -> 31067 bytes ...g-y-axis-visually-looks-correct-1-snap.png | Bin 33986 -> 33985 bytes ...ive-band-visually-looks-correct-1-snap.png | Bin 31092 -> 31082 bytes ...nd-lines-visually-looks-correct-1-snap.png | Bin 22954 -> 22954 bytes ...m-domain-visually-looks-correct-1-snap.png | Bin 24605 -> 24604 bytes ...om-mixed-visually-looks-correct-1-snap.png | Bin 23270 -> 23270 bytes ...ormatter-visually-looks-correct-1-snap.png | Bin 20289 -> 20289 bytes ...-tooltip-visually-looks-correct-1-snap.png | Bin 30193 -> 30189 bytes ...te-ticks-visually-looks-correct-1-snap.png | Bin 17460 -> 17460 bytes ...t-domain-visually-looks-correct-1-snap.png | Bin 54892 -> 54927 bytes ...ar-chart-visually-looks-correct-1-snap.png | Bin 46232 -> 46239 bytes ...e-linear-visually-looks-correct-1-snap.png | Bin 15493 -> 15494 bytes ...ha-mixed-visually-looks-correct-1-snap.png | Bin 153505 -> 153682 bytes ...multiple-visually-looks-correct-1-snap.png | Bin 80183 -> 79890 bytes ...-ordinal-visually-looks-correct-1-snap.png | Bin 46188 -> 46142 bytes ...a-simple-visually-looks-correct-1-snap.png | Bin 34173 -> 34187 bytes ...ug-state-visually-looks-correct-1-snap.png | Bin 57616 -> 57629 bytes ...position-visually-looks-correct-1-snap.png | Bin 16406 -> 16408 bytes ...l-x-axis-visually-looks-correct-1-snap.png | Bin 16040 -> 16041 bytes ...e-charts-visually-looks-correct-1-snap.png | Bin 22272 -> 22269 bytes ...ne-chart-visually-looks-correct-1-snap.png | Bin 50300 -> 50301 bytes ...ed-chart-visually-looks-correct-1-snap.png | Bin 19423 -> 19424 bytes ...ime-axis-visually-looks-correct-1-snap.png | Bin 22502 -> 22507 bytes ...d-hovers-visually-looks-correct-1-snap.png | Bin 25583 -> 25593 bytes ...d-hovers-visually-looks-correct-1-snap.png | Bin 24381 -> 24383 bytes ...y-series-visually-looks-correct-1-snap.png | Bin 19423 -> 19424 bytes ...rt-basic-visually-looks-correct-1-snap.png | Bin 32017 -> 32007 bytes ...d-legend-visually-looks-correct-1-snap.png | Bin 57689 -> 57688 bytes ...a-points-visually-looks-correct-1-snap.png | Bin 20915 -> 20916 bytes ...accessor-visually-looks-correct-1-snap.png | Bin 29963 -> 30006 bytes ...ith-axis-visually-looks-correct-1-snap.png | Bin 17722 -> 17724 bytes ...g-values-visually-looks-correct-1-snap.png | Bin 115445 -> 115439 bytes ...d-legend-visually-looks-correct-1-snap.png | Bin 59467 -> 59404 bytes ...ith-axis-visually-looks-correct-1-snap.png | Bin 16350 -> 16348 bytes ...t-shapes-visually-looks-correct-1-snap.png | Bin 0 -> 67424 bytes ...d-legend-visually-looks-correct-1-snap.png | Bin 64839 -> 64774 bytes ...a-points-visually-looks-correct-1-snap.png | Bin 13360 -> 13355 bytes ...ordering-visually-looks-correct-1-snap.png | Bin 43173 -> 43164 bytes ...d-legend-visually-looks-correct-1-snap.png | Bin 39446 -> 39473 bytes ...ith-axis-visually-looks-correct-1-snap.png | Bin 17488 -> 17490 bytes ...nd-lines-visually-looks-correct-1-snap.png | Bin 19275 -> 19267 bytes ...d-series-visually-looks-correct-1-snap.png | Bin 15893 -> 15891 bytes ...d-series-visually-looks-correct-1-snap.png | Bin 37492 -> 37491 bytes ...nd-areas-visually-looks-correct-1-snap.png | Bin 28247 -> 28246 bytes ...accessor-visually-looks-correct-1-snap.png | Bin 74490 -> 74518 bytes ...s-linear-visually-looks-correct-1-snap.png | Bin 22443 -> 22443 bytes ...nes-time-visually-looks-correct-1-snap.png | Bin 21702 -> 21698 bytes ...ate-axis-visually-looks-correct-1-snap.png | Bin 17161 -> 17163 bytes ...timezone-visually-looks-correct-1-snap.png | Bin 20067 -> 20067 bytes ...guration-visually-looks-correct-1-snap.png | Bin 19425 -> 19424 bytes ...timezone-visually-looks-correct-1-snap.png | Bin 19425 -> 19424 bytes ...p-in-utc-visually-looks-correct-1-snap.png | Bin 19425 -> 19424 bytes ...ogeneous-visually-looks-correct-1-snap.png | Bin 24821 -> 24826 bytes ...function-visually-looks-correct-1-snap.png | Bin 40466 -> 40470 bytes ...rk-theme-visually-looks-correct-1-snap.png | Bin 56743 -> 56749 bytes ...verrides-visually-looks-correct-1-snap.png | Bin 28817 -> 28818 bytes ...-styling-visually-looks-correct-1-snap.png | Bin 53068 -> 53077 bytes ...rmats-should-show-custom-format-1-snap.png | Bin 85253 -> 85272 bytes ...s-render-correctly-fit-function-1-snap.png | Bin 13553 -> 13553 bytes ...ous-data-points-no-fit-function-1-snap.png | Bin 20841 -> 20841 bytes ...ide-consecutive-duplicate-ticks-1-snap.png | Bin 16350 -> 16354 bytes ...-render-with-domain-constraints-1-snap.png | Bin 20685 -> 20685 bytes ...y-1-accessors-and-y-0-accessors-1-snap.png | Bin 46232 -> 46239 bytes ...togram-mode-is-false-rotation-0-1-snap.png | Bin 15493 -> 15494 bytes ...gram-mode-is-false-rotation-180-1-snap.png | Bin 15405 -> 15407 bytes ...ogram-mode-is-false-rotation-90-1-snap.png | Bin 15164 -> 15165 bytes ...e-is-false-rotation-negative-90-1-snap.png | Bin 15043 -> 15042 bytes ...stogram-mode-is-true-rotation-0-1-snap.png | Bin 15767 -> 15767 bytes ...ogram-mode-is-true-rotation-180-1-snap.png | Bin 15730 -> 15729 bytes ...togram-mode-is-true-rotation-90-1-snap.png | Bin 14333 -> 14334 bytes ...de-is-true-rotation-negative-90-1-snap.png | Bin 14032 -> 14033 bytes ...ize-legends-with-ordinal-x-axis-1-snap.png | Bin 31916 -> 31915 bytes ...-use-all-custom-tick-formatters-1-snap.png | Bin 31230 -> 31230 bytes ...matter-with-no-header-formatter-1-snap.png | Bin 30971 -> 30973 bytes ...ould-use-custom-mark-formatters-1-snap.png | Bin 79320 -> 79334 bytes ...-formatter-nor-header-formatter-1-snap.png | Bin 29380 -> 29424 bytes ...atter-nor-series-tick-formatter-1-snap.png | Bin 23092 -> 23091 bytes ...use-header-formatter-for-x-axis-1-snap.png | Bin 31230 -> 31230 bytes ...ter-with-no-axis-tick-formatter-1-snap.png | Bin 34445 -> 34442 bytes ...r-missing-series-tick-formatter-1-snap.png | Bin 31803 -> 31803 bytes ...w-synced-extra-values-in-legend-1-snap.png | Bin 58083 -> 58099 bytes ...r-corrent-tooltip-in-dark-theme-1-snap.png | Bin 62719 -> 62723 bytes ...uld-hide-bar-series-legend-item-1-snap.png | Bin 18049 -> 18049 bytes ...ld-hide-line-series-legend-item-1-snap.png | Bin 18202 -> 18204 bytes ...r-correct-line-path-non-stacked-1-snap.png | Bin 33799 -> 33800 bytes ...ender-correct-line-path-stacked-1-snap.png | Bin 43173 -> 43164 bytes ...ous-data-points-no-fit-function-1-snap.png | Bin 20105 -> 20130 bytes ...continuous-data-points-with-fit-1-snap.png | Bin 20915 -> 20916 bytes ...ies-stories-rotation-rotation-0-1-snap.png | Bin 16350 -> 16348 bytes ...s-stories-rotation-rotation-180-1-snap.png | Bin 16292 -> 16283 bytes ...es-stories-rotation-rotation-90-1-snap.png | Bin 16807 -> 16806 bytes ...s-rotation-rotation-negative-90-1-snap.png | Bin 17122 -> 17123 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 18477 -> 18478 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 15694 -> 15691 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 19934 -> 19933 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 18914 -> 18916 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 17409 -> 17411 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 15349 -> 15350 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12614 -> 12616 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 23356 -> 23358 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 16019 -> 16019 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 15324 -> 15324 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 19934 -> 19933 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 16465 -> 16466 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 15380 -> 15381 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 15349 -> 15350 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12614 -> 12616 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 23356 -> 23358 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 15893 -> 15891 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 15279 -> 15276 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 19934 -> 19933 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 16394 -> 16391 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 15385 -> 15382 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 15349 -> 15350 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12614 -> 12616 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 23356 -> 23358 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 15283 -> 15284 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 14706 -> 14700 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 19443 -> 19440 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 15642 -> 15646 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 14737 -> 14735 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 14801 -> 14797 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12063 -> 12064 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 22749 -> 22751 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 18477 -> 18478 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 15694 -> 15691 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 19934 -> 19933 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 18914 -> 18916 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 17409 -> 17411 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 15349 -> 15350 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12614 -> 12616 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 23356 -> 23358 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 16847 -> 16836 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 14570 -> 14565 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 17789 -> 17781 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 17327 -> 17322 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 16025 -> 16018 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 14345 -> 14340 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12494 -> 12485 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 20899 -> 20895 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 14703 -> 14711 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 14275 -> 14266 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 17789 -> 17781 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 15169 -> 15175 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 14343 -> 14332 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 14345 -> 14340 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12494 -> 12485 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 20899 -> 20895 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 16847 -> 16836 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 14570 -> 14565 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 17789 -> 17781 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 17327 -> 17322 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 16025 -> 16018 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 14345 -> 14340 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 12494 -> 12485 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 20899 -> 20895 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 37622 -> 37626 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35849 -> 35855 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 37767 -> 37759 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 37683 -> 37686 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 37070 -> 37068 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35941 -> 35944 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 36609 -> 36611 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 37592 -> 37592 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 36160 -> 36152 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35935 -> 35940 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 37767 -> 37759 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 36104 -> 36105 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 35714 -> 35714 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35941 -> 35944 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 36609 -> 36611 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 37592 -> 37592 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 37492 -> 37491 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35484 -> 35479 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 37767 -> 37759 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 37569 -> 37566 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 37517 -> 37492 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35941 -> 35944 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 36609 -> 36611 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 37592 -> 37592 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 36283 -> 36259 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 34039 -> 34044 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 36517 -> 36518 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 36304 -> 36304 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 36295 -> 36293 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 34458 -> 34462 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 35254 -> 35260 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 36368 -> 36376 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 37622 -> 37626 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35849 -> 35855 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 37767 -> 37759 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 37683 -> 37686 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 37070 -> 37068 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35941 -> 35944 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 36609 -> 36611 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 37592 -> 37592 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 35819 -> 35819 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35609 -> 35601 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 35785 -> 35788 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 35718 -> 35717 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 35537 -> 35527 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35448 -> 35437 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 35719 -> 35716 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 36976 -> 36963 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 35284 -> 35286 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35628 -> 35618 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 35785 -> 35788 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 35199 -> 35198 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 35021 -> 35015 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35448 -> 35437 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 35719 -> 35716 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 36976 -> 36963 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 36061 -> 36063 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35774 -> 35771 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 35785 -> 35788 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 36084 -> 36077 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 35725 -> 35717 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35448 -> 35437 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 35719 -> 35716 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 36976 -> 36963 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 32751 -> 32741 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 32652 -> 32638 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 32524 -> 32519 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 32715 -> 32716 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 32421 -> 32430 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 32119 -> 32128 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 32518 -> 32519 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 33825 -> 33826 bytes ...ay-correct-fit-for-type-average-1-snap.png | Bin 35819 -> 35819 bytes ...play-correct-fit-for-type-carry-1-snap.png | Bin 35609 -> 35601 bytes ...y-correct-fit-for-type-explicit-1-snap.png | Bin 35785 -> 35788 bytes ...lay-correct-fit-for-type-linear-1-snap.png | Bin 35718 -> 35717 bytes ...-correct-fit-for-type-lookahead-1-snap.png | Bin 35537 -> 35527 bytes ...ay-correct-fit-for-type-nearest-1-snap.png | Bin 35448 -> 35437 bytes ...splay-correct-fit-for-type-none-1-snap.png | Bin 35719 -> 35716 bytes ...splay-correct-fit-for-type-zero-1-snap.png | Bin 36976 -> 36963 bytes .../annotations/line/dimensions.test.ts | 2 +- .../xy_chart/annotations/line/dimensions.ts | 2 +- .../xy_chart/annotations/line/line.test.tsx | 2 +- .../renderer/canvas/annotations/index.ts | 5 +- .../xy_chart/renderer/canvas/areas.ts | 2 +- .../xy_chart/renderer/canvas/lines.ts | 2 +- .../xy_chart/renderer/canvas/points.ts | 92 ++++----- .../renderer/canvas/primitives/arc.ts | 16 +- .../points.test.ts => primitives/shapes.ts} | 44 ++-- .../renderer/canvas/primitives/utils.ts | 48 +++++ .../renderer/canvas/styles/point.test.ts | 193 ------------------ .../xy_chart/renderer/canvas/styles/point.ts | 67 ------ .../xy_chart/renderer/dom/highlighter.tsx | 81 +++++--- .../xy_chart/renderer/shapes_paths.ts | 58 ++++++ src/chart_types/xy_chart/rendering/area.ts | 1 + src/chart_types/xy_chart/rendering/bubble.ts | 1 + src/chart_types/xy_chart/rendering/line.ts | 1 + .../xy_chart/rendering/point_style.ts | 43 ++++ src/chart_types/xy_chart/rendering/points.ts | 16 +- .../rendering/rendering.areas.test.ts | 30 +-- .../rendering/rendering.bands.test.ts | 9 - .../rendering/rendering.bubble.test.ts | 21 -- .../rendering/rendering.lines.test.ts | 43 ++-- .../xy_chart/specs/line_annotation.tsx | 2 +- .../xy_chart/specs/rect_annotation.tsx | 2 +- .../state/chart_state.timescales.test.ts | 2 +- .../xy_chart/state/utils/utils.test.ts | 3 + .../xy_chart/utils/interactions.test.ts | 177 +--------------- .../xy_chart/utils/interactions.ts | 45 ---- .../__snapshots__/chart.test.tsx.snap | 1 - src/index.ts | 1 + src/mocks/geometries.ts | 43 +++- src/state/selectors/get_chart_theme.ts | 3 +- src/utils/geometry.ts | 23 +-- src/utils/themes/dark_theme.ts | 5 +- src/utils/themes/light_theme.ts | 5 +- src/utils/themes/merge_utils.ts | 96 +++++++++ src/utils/themes/theme.test.ts | 41 +++- src/utils/themes/theme.ts | 94 ++------- stories/bubble/1_simple.tsx | 25 ++- stories/bubble/2_ordinal.tsx | 8 + stories/bubble/3_multiple.tsx | 8 + stories/bubble/4_mixed.tsx | 8 + stories/line/14_point_shapes.tsx | 84 ++++++++ stories/line/line.stories.tsx | 1 + 285 files changed, 666 insertions(+), 806 deletions(-) create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-line-chart-point-shapes-visually-looks-correct-1-snap.png rename src/chart_types/xy_chart/renderer/canvas/{styles/points.test.ts => primitives/shapes.ts} (50%) create mode 100644 src/chart_types/xy_chart/renderer/canvas/primitives/utils.ts delete mode 100644 src/chart_types/xy_chart/renderer/canvas/styles/point.test.ts delete mode 100644 src/chart_types/xy_chart/renderer/canvas/styles/point.ts create mode 100644 src/chart_types/xy_chart/renderer/shapes_paths.ts create mode 100644 src/chart_types/xy_chart/rendering/point_style.ts create mode 100644 src/utils/themes/merge_utils.ts create mode 100644 stories/line/14_point_shapes.tsx diff --git a/api/charts.api.md b/api/charts.api.md index 0ae309dab0..82eeb82951 100644 --- a/api/charts.api.md +++ b/api/charts.api.md @@ -1361,6 +1361,21 @@ export interface PointerOverEvent extends BasePointerEvent { // @public (undocumented) export type PointerUpdateListener = (event: PointerEvent) => void; +// Warning: (ae-missing-release-tag) "PointShape" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const PointShape: Readonly<{ + Circle: "circle"; + Square: "square"; + Diamond: "diamond"; + Plus: "plus"; + X: "x"; + Triangle: "triangle"; +}>; + +// @public (undocumented) +export type PointShape = $Values; + // Warning: (ae-missing-release-tag) "PointStyle" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1368,6 +1383,7 @@ export interface PointStyle { fill?: Color | ColorVariant; opacity: number; radius: number; + shape?: PointShape; stroke?: Color | ColorVariant; strokeWidth: number; visible: boolean; diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-annotations-rects-linear-line-chart-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-annotations-rects-linear-line-chart-visually-looks-correct-1-snap.png index c2ca755a9d214f7e3ed829846e16e81317970350..5509766b7752b17df89befa4a47b2c1bcb08eaf7 100644 GIT binary patch literal 20670 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 My85}Sb4q9e0P88@HUIzs literal 20674 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