@weng-lab/visualization 2.4.0-beta.1 → 2.4.0-beta.3
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/dist/src/components/ScatterPlot/ScatterPlotViewport.d.ts.map +1 -1
- package/dist/src/components/ScatterPlot/helpers.d.ts +3 -1
- package/dist/src/components/ScatterPlot/helpers.d.ts.map +1 -1
- package/dist/src/components/ScatterPlot/hooks/useHoverTooltip.d.ts +2 -1
- package/dist/src/components/ScatterPlot/hooks/useHoverTooltip.d.ts.map +1 -1
- package/dist/src/components/ScatterPlot/scatterplot.d.ts.map +1 -1
- package/dist/src/components/ScatterPlot/types.d.ts +16 -0
- package/dist/src/components/ScatterPlot/types.d.ts.map +1 -1
- package/dist/visualization.es10.js +11 -11
- package/dist/visualization.es100.js +14 -32
- package/dist/visualization.es100.js.map +1 -1
- package/dist/visualization.es101.js +32 -13
- package/dist/visualization.es101.js.map +1 -1
- package/dist/visualization.es102.js +42 -55
- package/dist/visualization.es102.js.map +1 -1
- package/dist/visualization.es103.js +75 -31
- package/dist/visualization.es103.js.map +1 -1
- package/dist/visualization.es104.js +25 -18
- package/dist/visualization.es104.js.map +1 -1
- package/dist/visualization.es105.js +85 -14
- package/dist/visualization.es105.js.map +1 -1
- package/dist/visualization.es106.js +36 -26
- package/dist/visualization.es106.js.map +1 -1
- package/dist/visualization.es107.js +12 -221
- package/dist/visualization.es107.js.map +1 -1
- package/dist/visualization.es108.js +74 -2
- package/dist/visualization.es108.js.map +1 -1
- package/dist/visualization.es109.js +32 -556
- package/dist/visualization.es109.js.map +1 -1
- package/dist/visualization.es11.js +10 -10
- package/dist/visualization.es110.js +12 -213
- package/dist/visualization.es110.js.map +1 -1
- package/dist/visualization.es111.js +222 -2
- package/dist/visualization.es111.js.map +1 -1
- package/dist/visualization.es112.js +2 -4800
- package/dist/visualization.es112.js.map +1 -1
- package/dist/visualization.es113.js +557 -25
- package/dist/visualization.es113.js.map +1 -1
- package/dist/visualization.es114.js +212 -43
- package/dist/visualization.es114.js.map +1 -1
- package/dist/visualization.es115.js +2 -144
- package/dist/visualization.es115.js.map +1 -1
- package/dist/visualization.es116.js +4797 -144
- package/dist/visualization.es116.js.map +1 -1
- package/dist/visualization.es117.js +25 -32
- package/dist/visualization.es117.js.map +1 -1
- package/dist/visualization.es118.js +44 -44
- package/dist/visualization.es118.js.map +1 -1
- package/dist/visualization.es119.js +138 -70
- package/dist/visualization.es119.js.map +1 -1
- package/dist/visualization.es12.js +2 -2
- package/dist/visualization.es120.js +146 -24
- package/dist/visualization.es120.js.map +1 -1
- package/dist/visualization.es121.js +25 -84
- package/dist/visualization.es121.js.map +1 -1
- package/dist/visualization.es122.js +69 -35
- package/dist/visualization.es122.js.map +1 -1
- package/dist/visualization.es123.js +1 -1
- package/dist/visualization.es124.js +1 -1
- package/dist/visualization.es127.js +62 -16
- package/dist/visualization.es127.js.map +1 -1
- package/dist/visualization.es128.js +7 -85
- package/dist/visualization.es128.js.map +1 -1
- package/dist/visualization.es129.js +1 -1
- package/dist/visualization.es13.js +7 -7
- package/dist/visualization.es130.js +41 -88
- package/dist/visualization.es130.js.map +1 -1
- package/dist/visualization.es131.js +71 -12
- package/dist/visualization.es131.js.map +1 -1
- package/dist/visualization.es132.js +16 -5
- package/dist/visualization.es132.js.map +1 -1
- package/dist/visualization.es133.js +11 -14
- package/dist/visualization.es133.js.map +1 -1
- package/dist/visualization.es134.js +5 -7
- package/dist/visualization.es134.js.map +1 -1
- package/dist/visualization.es135.js +59 -12
- package/dist/visualization.es135.js.map +1 -1
- package/dist/visualization.es136.js +38 -4
- package/dist/visualization.es136.js.map +1 -1
- package/dist/visualization.es137.js +36 -7
- package/dist/visualization.es137.js.map +1 -1
- package/dist/visualization.es138.js +83 -60
- package/dist/visualization.es138.js.map +1 -1
- package/dist/visualization.es139.js +27 -37
- package/dist/visualization.es139.js.map +1 -1
- package/dist/visualization.es140.js +7 -36
- package/dist/visualization.es140.js.map +1 -1
- package/dist/visualization.es141.js +4 -83
- package/dist/visualization.es141.js.map +1 -1
- package/dist/visualization.es142.js +3 -28
- package/dist/visualization.es142.js.map +1 -1
- package/dist/visualization.es143.js +84 -3
- package/dist/visualization.es143.js.map +1 -1
- package/dist/visualization.es144.js +88 -70
- package/dist/visualization.es144.js.map +1 -1
- package/dist/visualization.es145.js +11 -15
- package/dist/visualization.es145.js.map +1 -1
- package/dist/visualization.es146.js +5 -11
- package/dist/visualization.es146.js.map +1 -1
- package/dist/visualization.es147.js +14 -4
- package/dist/visualization.es147.js.map +1 -1
- package/dist/visualization.es148.js +7 -64
- package/dist/visualization.es148.js.map +1 -1
- package/dist/visualization.es149.js +14 -7
- package/dist/visualization.es149.js.map +1 -1
- package/dist/visualization.es15.js +8 -8
- package/dist/visualization.es150.js +71 -41
- package/dist/visualization.es150.js.map +1 -1
- package/dist/visualization.es151.js +18 -68
- package/dist/visualization.es151.js.map +1 -1
- package/dist/visualization.es152.js +17 -17
- package/dist/visualization.es152.js.map +1 -1
- package/dist/visualization.es153.js +35 -17
- package/dist/visualization.es153.js.map +1 -1
- package/dist/visualization.es154.js +7 -40
- package/dist/visualization.es154.js.map +1 -1
- package/dist/visualization.es155.js +12 -7
- package/dist/visualization.es155.js.map +1 -1
- package/dist/visualization.es156.js +14 -9
- package/dist/visualization.es156.js.map +1 -1
- package/dist/visualization.es157.js +34 -15
- package/dist/visualization.es157.js.map +1 -1
- package/dist/visualization.es158.js +22 -34
- package/dist/visualization.es158.js.map +1 -1
- package/dist/visualization.es159.js +22 -19
- package/dist/visualization.es159.js.map +1 -1
- package/dist/visualization.es160.js +28 -25
- package/dist/visualization.es160.js.map +1 -1
- package/dist/visualization.es161.js +7 -18
- package/dist/visualization.es161.js.map +1 -1
- package/dist/visualization.es162.js +6 -3
- package/dist/visualization.es162.js.map +1 -1
- package/dist/visualization.es163.js +3 -35
- package/dist/visualization.es163.js.map +1 -1
- package/dist/visualization.es164.js +17 -8
- package/dist/visualization.es164.js.map +1 -1
- package/dist/visualization.es165.js +16 -15
- package/dist/visualization.es165.js.map +1 -1
- package/dist/visualization.es166.js +33 -11
- package/dist/visualization.es166.js.map +1 -1
- package/dist/visualization.es167.js +16 -5
- package/dist/visualization.es167.js.map +1 -1
- package/dist/visualization.es168.js +9 -10
- package/dist/visualization.es168.js.map +1 -1
- package/dist/visualization.es169.js +6 -3
- package/dist/visualization.es169.js.map +1 -1
- package/dist/visualization.es17.js +30 -30
- package/dist/visualization.es17.js.map +1 -1
- package/dist/visualization.es170.js +7 -2
- package/dist/visualization.es170.js.map +1 -1
- package/dist/visualization.es171.js +10 -10
- package/dist/visualization.es171.js.map +1 -1
- package/dist/visualization.es172.js +4 -30
- package/dist/visualization.es172.js.map +1 -1
- package/dist/visualization.es173.js +4 -42
- package/dist/visualization.es173.js.map +1 -1
- package/dist/visualization.es174.js +8 -49
- package/dist/visualization.es174.js.map +1 -1
- package/dist/visualization.es175.js +5 -3
- package/dist/visualization.es175.js.map +1 -1
- package/dist/visualization.es176.js +13 -3
- package/dist/visualization.es176.js.map +1 -1
- package/dist/visualization.es177.js +26 -5
- package/dist/visualization.es177.js.map +1 -1
- package/dist/visualization.es178.js +32 -4
- package/dist/visualization.es178.js.map +1 -1
- package/dist/visualization.es179.js +113 -9
- package/dist/visualization.es179.js.map +1 -1
- package/dist/visualization.es18.js +1 -1
- package/dist/visualization.es180.js +3 -3
- package/dist/visualization.es180.js.map +1 -1
- package/dist/visualization.es181.js +5 -17
- package/dist/visualization.es181.js.map +1 -1
- package/dist/visualization.es182.js +32 -17
- package/dist/visualization.es182.js.map +1 -1
- package/dist/visualization.es183.js +15 -36
- package/dist/visualization.es183.js.map +1 -1
- package/dist/visualization.es184.js +8 -2
- package/dist/visualization.es184.js.map +1 -1
- package/dist/visualization.es185.js +12 -2
- package/dist/visualization.es185.js.map +1 -1
- package/dist/visualization.es186.js +20 -4
- package/dist/visualization.es186.js.map +1 -1
- package/dist/visualization.es187.js +27 -14
- package/dist/visualization.es187.js.map +1 -1
- package/dist/visualization.es188.js +4 -3
- package/dist/visualization.es188.js.map +1 -1
- package/dist/visualization.es189.js +7 -6
- package/dist/visualization.es189.js.map +1 -1
- package/dist/visualization.es190.js +16 -3
- package/dist/visualization.es190.js.map +1 -1
- package/dist/visualization.es191.js +11 -7
- package/dist/visualization.es191.js.map +1 -1
- package/dist/visualization.es192.js +5 -30
- package/dist/visualization.es192.js.map +1 -1
- package/dist/visualization.es193.js +11 -7
- package/dist/visualization.es193.js.map +1 -1
- package/dist/visualization.es194.js +3 -6
- package/dist/visualization.es194.js.map +1 -1
- package/dist/visualization.es195.js +2 -4
- package/dist/visualization.es195.js.map +1 -1
- package/dist/visualization.es196.js +10 -16
- package/dist/visualization.es196.js.map +1 -1
- package/dist/visualization.es197.js +30 -16
- package/dist/visualization.es197.js.map +1 -1
- package/dist/visualization.es198.js +41 -31
- package/dist/visualization.es198.js.map +1 -1
- package/dist/visualization.es199.js +45 -12
- package/dist/visualization.es199.js.map +1 -1
- package/dist/visualization.es2.js +8 -8
- package/dist/visualization.es20.js +33 -61
- package/dist/visualization.es20.js.map +1 -1
- package/dist/visualization.es200.js +3 -11
- package/dist/visualization.es200.js.map +1 -1
- package/dist/visualization.es201.js +3 -7
- package/dist/visualization.es201.js.map +1 -1
- package/dist/visualization.es202.js +5 -6
- package/dist/visualization.es202.js.map +1 -1
- package/dist/visualization.es203.js +4 -10
- package/dist/visualization.es203.js.map +1 -1
- package/dist/visualization.es204.js +10 -4
- package/dist/visualization.es204.js.map +1 -1
- package/dist/visualization.es205.js +3 -4
- package/dist/visualization.es205.js.map +1 -1
- package/dist/visualization.es206.js +17 -8
- package/dist/visualization.es206.js.map +1 -1
- package/dist/visualization.es207.js +18 -4
- package/dist/visualization.es207.js.map +1 -1
- package/dist/visualization.es208.js +36 -12
- package/dist/visualization.es208.js.map +1 -1
- package/dist/visualization.es209.js +2 -27
- package/dist/visualization.es209.js.map +1 -1
- package/dist/visualization.es21.js +40 -32
- package/dist/visualization.es21.js.map +1 -1
- package/dist/visualization.es210.js +2 -10
- package/dist/visualization.es210.js.map +1 -1
- package/dist/visualization.es211.js +4 -7
- package/dist/visualization.es211.js.map +1 -1
- package/dist/visualization.es212.js +14 -7
- package/dist/visualization.es212.js.map +1 -1
- package/dist/visualization.es213.js +3 -10
- package/dist/visualization.es213.js.map +1 -1
- package/dist/visualization.es214.js +7 -7
- package/dist/visualization.es214.js.map +1 -1
- package/dist/visualization.es215.js +3 -7
- package/dist/visualization.es215.js.map +1 -1
- package/dist/visualization.es216.js +6 -5
- package/dist/visualization.es216.js.map +1 -1
- package/dist/visualization.es217.js +8 -13
- package/dist/visualization.es217.js.map +1 -1
- package/dist/visualization.es218.js +6 -5
- package/dist/visualization.es218.js.map +1 -1
- package/dist/visualization.es219.js +7 -3
- package/dist/visualization.es219.js.map +1 -1
- package/dist/visualization.es22.js +7 -43
- package/dist/visualization.es22.js.map +1 -1
- package/dist/visualization.es220.js +9 -6
- package/dist/visualization.es220.js.map +1 -1
- package/dist/visualization.es221.js +6 -6
- package/dist/visualization.es221.js.map +1 -1
- package/dist/visualization.es222.js +5 -8
- package/dist/visualization.es222.js.map +1 -1
- package/dist/visualization.es223.js +5 -32
- package/dist/visualization.es223.js.map +1 -1
- package/dist/visualization.es224.js +14 -114
- package/dist/visualization.es224.js.map +1 -1
- package/dist/visualization.es225.js +4 -2
- package/dist/visualization.es225.js.map +1 -1
- package/dist/visualization.es226.js +3 -5
- package/dist/visualization.es226.js.map +1 -1
- package/dist/visualization.es227.js +6 -33
- package/dist/visualization.es227.js.map +1 -1
- package/dist/visualization.es228.js +6 -15
- package/dist/visualization.es228.js.map +1 -1
- package/dist/visualization.es229.js +9 -7
- package/dist/visualization.es229.js.map +1 -1
- package/dist/visualization.es23.js +47 -7
- package/dist/visualization.es23.js.map +1 -1
- package/dist/visualization.es230.js +74 -11
- package/dist/visualization.es230.js.map +1 -1
- package/dist/visualization.es231.js +2 -4
- package/dist/visualization.es231.js.map +1 -1
- package/dist/visualization.es232.js +480 -72
- package/dist/visualization.es232.js.map +1 -1
- package/dist/visualization.es234.js +122 -481
- package/dist/visualization.es234.js.map +1 -1
- package/dist/visualization.es235.js +19 -2
- package/dist/visualization.es235.js.map +1 -1
- package/dist/visualization.es236.js +3 -123
- package/dist/visualization.es236.js.map +1 -1
- package/dist/visualization.es237.js +34 -18
- package/dist/visualization.es237.js.map +1 -1
- package/dist/visualization.es238.js +17 -27
- package/dist/visualization.es238.js.map +1 -1
- package/dist/visualization.es24.js +31 -45
- package/dist/visualization.es24.js.map +1 -1
- package/dist/visualization.es242.js +53 -23
- package/dist/visualization.es242.js.map +1 -1
- package/dist/visualization.es243.js +31 -53
- package/dist/visualization.es243.js.map +1 -1
- package/dist/visualization.es244.js +30 -17
- package/dist/visualization.es244.js.map +1 -1
- package/dist/visualization.es245.js +12 -3
- package/dist/visualization.es245.js.map +1 -1
- package/dist/visualization.es246.js +3 -3
- package/dist/visualization.es246.js.map +1 -1
- package/dist/visualization.es247.js +3 -3
- package/dist/visualization.es247.js.map +1 -1
- package/dist/visualization.es248.js +3 -3
- package/dist/visualization.es248.js.map +1 -1
- package/dist/visualization.es249.js +3 -3
- package/dist/visualization.es249.js.map +1 -1
- package/dist/visualization.es25.js +5 -31
- package/dist/visualization.es25.js.map +1 -1
- package/dist/visualization.es250.js +3 -3
- package/dist/visualization.es250.js.map +1 -1
- package/dist/visualization.es251.js +3 -3
- package/dist/visualization.es251.js.map +1 -1
- package/dist/visualization.es252.js +2 -6
- package/dist/visualization.es252.js.map +1 -1
- package/dist/visualization.es253.js +6 -47
- package/dist/visualization.es253.js.map +1 -1
- package/dist/visualization.es254.js +48 -3
- package/dist/visualization.es254.js.map +1 -1
- package/dist/visualization.es255.js +2 -5
- package/dist/visualization.es255.js.map +1 -1
- package/dist/visualization.es256.js +6 -4
- package/dist/visualization.es256.js.map +1 -1
- package/dist/visualization.es257.js +4 -3
- package/dist/visualization.es257.js.map +1 -1
- package/dist/visualization.es258.js +3 -6
- package/dist/visualization.es258.js.map +1 -1
- package/dist/visualization.es259.js +6 -4
- package/dist/visualization.es259.js.map +1 -1
- package/dist/visualization.es26.js +43 -7
- package/dist/visualization.es26.js.map +1 -1
- package/dist/visualization.es260.js +4 -53
- package/dist/visualization.es260.js.map +1 -1
- package/dist/visualization.es261.js +23 -31
- package/dist/visualization.es261.js.map +1 -1
- package/dist/visualization.es262.js +53 -33
- package/dist/visualization.es262.js.map +1 -1
- package/dist/visualization.es263.js +20 -12
- package/dist/visualization.es263.js.map +1 -1
- package/dist/visualization.es264.js +7 -10
- package/dist/visualization.es264.js.map +1 -1
- package/dist/visualization.es265.js +34 -9
- package/dist/visualization.es265.js.map +1 -1
- package/dist/visualization.es266.js +3 -6
- package/dist/visualization.es266.js.map +1 -1
- package/dist/visualization.es267.js +3 -8
- package/dist/visualization.es267.js.map +1 -1
- package/dist/visualization.es268.js +6 -6
- package/dist/visualization.es268.js.map +1 -1
- package/dist/visualization.es269.js +12 -5
- package/dist/visualization.es269.js.map +1 -1
- package/dist/visualization.es27.js +8 -44
- package/dist/visualization.es27.js.map +1 -1
- package/dist/visualization.es270.js +2 -15
- package/dist/visualization.es270.js.map +1 -1
- package/dist/visualization.es271.js +3 -5
- package/dist/visualization.es271.js.map +1 -1
- package/dist/visualization.es272.js +3 -6
- package/dist/visualization.es272.js.map +1 -1
- package/dist/visualization.es273.js +10 -6
- package/dist/visualization.es273.js.map +1 -1
- package/dist/visualization.es274.js +25 -6
- package/dist/visualization.es274.js.map +1 -1
- package/dist/visualization.es275.js +4 -3
- package/dist/visualization.es275.js.map +1 -1
- package/dist/visualization.es276.js +32 -4
- package/dist/visualization.es276.js.map +1 -1
- package/dist/visualization.es277.js +235 -7
- package/dist/visualization.es277.js.map +1 -1
- package/dist/visualization.es278.js +993 -3
- package/dist/visualization.es278.js.map +1 -1
- package/dist/visualization.es279.js +61 -11
- package/dist/visualization.es279.js.map +1 -1
- package/dist/visualization.es28.js +10 -7
- package/dist/visualization.es28.js.map +1 -1
- package/dist/visualization.es280.js +27 -34
- package/dist/visualization.es280.js.map +1 -1
- package/dist/visualization.es281.js +3 -261
- package/dist/visualization.es281.js.map +1 -1
- package/dist/visualization.es282.js +11 -59
- package/dist/visualization.es282.js.map +1 -1
- package/dist/visualization.es283.js +36 -5
- package/dist/visualization.es283.js.map +1 -1
- package/dist/visualization.es284.js +260 -21
- package/dist/visualization.es284.js.map +1 -1
- package/dist/visualization.es285.js +56 -34
- package/dist/visualization.es285.js.map +1 -1
- package/dist/visualization.es286.js +5 -34
- package/dist/visualization.es286.js.map +1 -1
- package/dist/visualization.es287.js +7 -14
- package/dist/visualization.es287.js.map +1 -1
- package/dist/visualization.es288.js +140 -18
- package/dist/visualization.es288.js.map +1 -1
- package/dist/visualization.es289.js +6 -9
- package/dist/visualization.es289.js.map +1 -1
- package/dist/visualization.es29.js +52 -145
- package/dist/visualization.es29.js.map +1 -1
- package/dist/visualization.es290.js +21 -7
- package/dist/visualization.es290.js.map +1 -1
- package/dist/visualization.es291.js +33 -136
- package/dist/visualization.es291.js.map +1 -1
- package/dist/visualization.es292.js +34 -5
- package/dist/visualization.es292.js.map +1 -1
- package/dist/visualization.es293.js +14 -109
- package/dist/visualization.es293.js.map +1 -1
- package/dist/visualization.es294.js +17 -11
- package/dist/visualization.es294.js.map +1 -1
- package/dist/visualization.es295.js +8 -141
- package/dist/visualization.es295.js.map +1 -1
- package/dist/visualization.es296.js +109 -5
- package/dist/visualization.es296.js.map +1 -1
- package/dist/visualization.es297.js +11 -70
- package/dist/visualization.es297.js.map +1 -1
- package/dist/visualization.es298.js +135 -29
- package/dist/visualization.es298.js.map +1 -1
- package/dist/visualization.es299.js +5 -20
- package/dist/visualization.es299.js.map +1 -1
- package/dist/visualization.es3.js +12 -12
- package/dist/visualization.es30.js +29 -8
- package/dist/visualization.es30.js.map +1 -1
- package/dist/visualization.es300.js +71 -3
- package/dist/visualization.es300.js.map +1 -1
- package/dist/visualization.es301.js +30 -19
- package/dist/visualization.es301.js.map +1 -1
- package/dist/visualization.es302.js +19 -29
- package/dist/visualization.es302.js.map +1 -1
- package/dist/visualization.es303.js +4 -2
- package/dist/visualization.es303.js.map +1 -1
- package/dist/visualization.es304.js +25 -2
- package/dist/visualization.es304.js.map +1 -1
- package/dist/visualization.es305.js +30 -5
- package/dist/visualization.es305.js.map +1 -1
- package/dist/visualization.es306.js +2 -15
- package/dist/visualization.es306.js.map +1 -1
- package/dist/visualization.es307.js +2 -35
- package/dist/visualization.es307.js.map +1 -1
- package/dist/visualization.es308.js +5 -27
- package/dist/visualization.es308.js.map +1 -1
- package/dist/visualization.es309.js +15 -11
- package/dist/visualization.es309.js.map +1 -1
- package/dist/visualization.es31.js +64 -34
- package/dist/visualization.es31.js.map +1 -1
- package/dist/visualization.es310.js +34 -6
- package/dist/visualization.es310.js.map +1 -1
- package/dist/visualization.es311.js +27 -13
- package/dist/visualization.es311.js.map +1 -1
- package/dist/visualization.es312.js +11 -12
- package/dist/visualization.es312.js.map +1 -1
- package/dist/visualization.es313.js +7 -2
- package/dist/visualization.es313.js.map +1 -1
- package/dist/visualization.es314.js +14 -3
- package/dist/visualization.es314.js.map +1 -1
- package/dist/visualization.es315.js +12 -2
- package/dist/visualization.es315.js.map +1 -1
- package/dist/visualization.es316.js +2 -104
- package/dist/visualization.es316.js.map +1 -1
- package/dist/visualization.es317.js +3 -5
- package/dist/visualization.es317.js.map +1 -1
- package/dist/visualization.es318.js +2 -3
- package/dist/visualization.es318.js.map +1 -1
- package/dist/visualization.es319.js +103 -18
- package/dist/visualization.es319.js.map +1 -1
- package/dist/visualization.es32.js +61 -34
- package/dist/visualization.es32.js.map +1 -1
- package/dist/visualization.es320.js +4 -5
- package/dist/visualization.es320.js.map +1 -1
- package/dist/visualization.es321.js +3 -15
- package/dist/visualization.es321.js.map +1 -1
- package/dist/visualization.es322.js +18 -4
- package/dist/visualization.es322.js.map +1 -1
- package/dist/visualization.es323.js +5 -28
- package/dist/visualization.es323.js.map +1 -1
- package/dist/visualization.es324.js +14 -6
- package/dist/visualization.es324.js.map +1 -1
- package/dist/visualization.es325.js +5 -2
- package/dist/visualization.es325.js.map +1 -1
- package/dist/visualization.es326.js +29 -20
- package/dist/visualization.es326.js.map +1 -1
- package/dist/visualization.es327.js +7 -21
- package/dist/visualization.es327.js.map +1 -1
- package/dist/visualization.es328.js +2 -6
- package/dist/visualization.es328.js.map +1 -1
- package/dist/visualization.es329.js +20 -8
- package/dist/visualization.es329.js.map +1 -1
- package/dist/visualization.es33.js +3 -20
- package/dist/visualization.es33.js.map +1 -1
- package/dist/visualization.es330.js +21 -19
- package/dist/visualization.es330.js.map +1 -1
- package/dist/visualization.es331.js +6 -44
- package/dist/visualization.es331.js.map +1 -1
- package/dist/visualization.es332.js +8 -7
- package/dist/visualization.es332.js.map +1 -1
- package/dist/visualization.es333.js +18 -19
- package/dist/visualization.es333.js.map +1 -1
- package/dist/visualization.es334.js +42 -52
- package/dist/visualization.es334.js.map +1 -1
- package/dist/visualization.es335.js +7 -27
- package/dist/visualization.es335.js.map +1 -1
- package/dist/visualization.es336.js +20 -11
- package/dist/visualization.es336.js.map +1 -1
- package/dist/visualization.es337.js +51 -16
- package/dist/visualization.es337.js.map +1 -1
- package/dist/visualization.es338.js +26 -11
- package/dist/visualization.es338.js.map +1 -1
- package/dist/visualization.es339.js +11 -5
- package/dist/visualization.es339.js.map +1 -1
- package/dist/visualization.es34.js +45 -9
- package/dist/visualization.es34.js.map +1 -1
- package/dist/visualization.es340.js +19 -4
- package/dist/visualization.es340.js.map +1 -1
- package/dist/visualization.es341.js +11 -3
- package/dist/visualization.es341.js.map +1 -1
- package/dist/visualization.es342.js +4 -175
- package/dist/visualization.es342.js.map +1 -1
- package/dist/visualization.es343.js +4 -40
- package/dist/visualization.es343.js.map +1 -1
- package/dist/visualization.es344.js +3 -5
- package/dist/visualization.es344.js.map +1 -1
- package/dist/visualization.es345.js +175 -3
- package/dist/visualization.es345.js.map +1 -1
- package/dist/visualization.es346.js +40 -2
- package/dist/visualization.es346.js.map +1 -1
- package/dist/visualization.es347.js +6 -30
- package/dist/visualization.es347.js.map +1 -1
- package/dist/visualization.es348.js +4 -8
- package/dist/visualization.es348.js.map +1 -1
- package/dist/visualization.es349.js +2 -11
- package/dist/visualization.es349.js.map +1 -1
- package/dist/visualization.es35.js +3 -54
- package/dist/visualization.es35.js.map +1 -1
- package/dist/visualization.es350.js +30 -4
- package/dist/visualization.es350.js.map +1 -1
- package/dist/visualization.es351.js +8 -66
- package/dist/visualization.es351.js.map +1 -1
- package/dist/visualization.es352.js +11 -7
- package/dist/visualization.es352.js.map +1 -1
- package/dist/visualization.es353.js +3 -4
- package/dist/visualization.es353.js.map +1 -1
- package/dist/visualization.es354.js +64 -12
- package/dist/visualization.es354.js.map +1 -1
- package/dist/visualization.es355.js +7 -35
- package/dist/visualization.es355.js.map +1 -1
- package/dist/visualization.es356.js +4 -4
- package/dist/visualization.es356.js.map +1 -1
- package/dist/visualization.es357.js +12 -8
- package/dist/visualization.es357.js.map +1 -1
- package/dist/visualization.es358.js +35 -2
- package/dist/visualization.es358.js.map +1 -1
- package/dist/visualization.es359.js +5 -5
- package/dist/visualization.es359.js.map +1 -1
- package/dist/visualization.es36.js +21 -52
- package/dist/visualization.es36.js.map +1 -1
- package/dist/visualization.es360.js +10 -2
- package/dist/visualization.es360.js.map +1 -1
- package/dist/visualization.es361.js +2 -10
- package/dist/visualization.es361.js.map +1 -1
- package/dist/visualization.es362.js +5 -10
- package/dist/visualization.es362.js.map +1 -1
- package/dist/visualization.es363.js +2 -13
- package/dist/visualization.es363.js.map +1 -1
- package/dist/visualization.es364.js +10 -2
- package/dist/visualization.es364.js.map +1 -1
- package/dist/visualization.es365.js +10 -10
- package/dist/visualization.es365.js.map +1 -1
- package/dist/visualization.es366.js +13 -8
- package/dist/visualization.es366.js.map +1 -1
- package/dist/visualization.es367.js +2 -6
- package/dist/visualization.es367.js.map +1 -1
- package/dist/visualization.es368.js +10 -25
- package/dist/visualization.es368.js.map +1 -1
- package/dist/visualization.es369.js +8 -19
- package/dist/visualization.es369.js.map +1 -1
- package/dist/visualization.es37.js +281 -54
- package/dist/visualization.es37.js.map +1 -1
- package/dist/visualization.es370.js +5 -40
- package/dist/visualization.es370.js.map +1 -1
- package/dist/visualization.es371.js +25 -3
- package/dist/visualization.es371.js.map +1 -1
- package/dist/visualization.es372.js +19 -9
- package/dist/visualization.es372.js.map +1 -1
- package/dist/visualization.es373.js +40 -8
- package/dist/visualization.es373.js.map +1 -1
- package/dist/visualization.es374.js +3 -36
- package/dist/visualization.es374.js.map +1 -1
- package/dist/visualization.es375.js +8 -9
- package/dist/visualization.es375.js.map +1 -1
- package/dist/visualization.es376.js +8 -31
- package/dist/visualization.es376.js.map +1 -1
- package/dist/visualization.es377.js +35 -4
- package/dist/visualization.es377.js.map +1 -1
- package/dist/visualization.es378.js +10 -2
- package/dist/visualization.es378.js.map +1 -1
- package/dist/visualization.es379.js +30 -14
- package/dist/visualization.es379.js.map +1 -1
- package/dist/visualization.es38.js +17 -41
- package/dist/visualization.es38.js.map +1 -1
- package/dist/visualization.es380.js +4 -24
- package/dist/visualization.es380.js.map +1 -1
- package/dist/visualization.es381.js +2 -2
- package/dist/visualization.es381.js.map +1 -1
- package/dist/visualization.es382.js +14 -61
- package/dist/visualization.es382.js.map +1 -1
- package/dist/visualization.es383.js +25 -2
- package/dist/visualization.es383.js.map +1 -1
- package/dist/visualization.es384.js +2 -2
- package/dist/visualization.es384.js.map +1 -1
- package/dist/visualization.es385.js +62 -5
- package/dist/visualization.es385.js.map +1 -1
- package/dist/visualization.es386.js +2 -37
- package/dist/visualization.es386.js.map +1 -1
- package/dist/visualization.es387.js +2 -21
- package/dist/visualization.es387.js.map +1 -1
- package/dist/visualization.es388.js +5 -3
- package/dist/visualization.es388.js.map +1 -1
- package/dist/visualization.es389.js +36 -4
- package/dist/visualization.es389.js.map +1 -1
- package/dist/visualization.es39.js +54 -5
- package/dist/visualization.es39.js.map +1 -1
- package/dist/visualization.es390.js +20 -4
- package/dist/visualization.es390.js.map +1 -1
- package/dist/visualization.es391.js +3 -48
- package/dist/visualization.es391.js.map +1 -1
- package/dist/visualization.es392.js +4 -26
- package/dist/visualization.es392.js.map +1 -1
- package/dist/visualization.es393.js +4 -16
- package/dist/visualization.es393.js.map +1 -1
- package/dist/visualization.es394.js +48 -9
- package/dist/visualization.es394.js.map +1 -1
- package/dist/visualization.es395.js +26 -19
- package/dist/visualization.es395.js.map +1 -1
- package/dist/visualization.es396.js +16 -13
- package/dist/visualization.es396.js.map +1 -1
- package/dist/visualization.es397.js +10 -4
- package/dist/visualization.es397.js.map +1 -1
- package/dist/visualization.es398.js +19 -12
- package/dist/visualization.es398.js.map +1 -1
- package/dist/visualization.es399.js +13 -48
- package/dist/visualization.es399.js.map +1 -1
- package/dist/visualization.es4.js +6 -6
- package/dist/visualization.es40.js +147 -4
- package/dist/visualization.es40.js.map +1 -1
- package/dist/visualization.es400.js +3 -5
- package/dist/visualization.es400.js.map +1 -1
- package/dist/visualization.es401.js +12 -12
- package/dist/visualization.es401.js.map +1 -1
- package/dist/visualization.es402.js +49 -2
- package/dist/visualization.es402.js.map +1 -1
- package/dist/visualization.es403.js +5 -6
- package/dist/visualization.es403.js.map +1 -1
- package/dist/visualization.es404.js +12 -209
- package/dist/visualization.es404.js.map +1 -1
- package/dist/visualization.es405.js +2 -27
- package/dist/visualization.es405.js.map +1 -1
- package/dist/visualization.es406.js +6 -3
- package/dist/visualization.es406.js.map +1 -1
- package/dist/visualization.es407.js +210 -16
- package/dist/visualization.es407.js.map +1 -1
- package/dist/visualization.es408.js +27 -15
- package/dist/visualization.es408.js.map +1 -1
- package/dist/visualization.es409.js +4 -15
- package/dist/visualization.es409.js.map +1 -1
- package/dist/visualization.es41.js +111 -18
- package/dist/visualization.es41.js.map +1 -1
- package/dist/visualization.es410.js +16 -2
- package/dist/visualization.es410.js.map +1 -1
- package/dist/visualization.es411.js +15 -2
- package/dist/visualization.es411.js.map +1 -1
- package/dist/visualization.es412.js +15 -2
- package/dist/visualization.es412.js.map +1 -1
- package/dist/visualization.es413.js +2 -5
- package/dist/visualization.es413.js.map +1 -1
- package/dist/visualization.es414.js +2 -2
- package/dist/visualization.es414.js.map +1 -1
- package/dist/visualization.es415.js +2 -25
- package/dist/visualization.es415.js.map +1 -1
- package/dist/visualization.es416.js +4 -21
- package/dist/visualization.es416.js.map +1 -1
- package/dist/visualization.es417.js +2 -9
- package/dist/visualization.es417.js.map +1 -1
- package/dist/visualization.es418.js +24 -67
- package/dist/visualization.es418.js.map +1 -1
- package/dist/visualization.es419.js +21 -5
- package/dist/visualization.es419.js.map +1 -1
- package/dist/visualization.es42.js +7 -4
- package/dist/visualization.es42.js.map +1 -1
- package/dist/visualization.es420.js +7 -27
- package/dist/visualization.es420.js.map +1 -1
- package/dist/visualization.es421.js +68 -10
- package/dist/visualization.es421.js.map +1 -1
- package/dist/visualization.es422.js +6 -6
- package/dist/visualization.es422.js.map +1 -1
- package/dist/visualization.es423.js +29 -2
- package/dist/visualization.es423.js.map +1 -1
- package/dist/visualization.es424.js +9 -4
- package/dist/visualization.es424.js.map +1 -1
- package/dist/visualization.es425.js +6 -26
- package/dist/visualization.es425.js.map +1 -1
- package/dist/visualization.es426.js +2 -11
- package/dist/visualization.es426.js.map +1 -1
- package/dist/visualization.es427.js +4 -26
- package/dist/visualization.es427.js.map +1 -1
- package/dist/visualization.es428.js +25 -9
- package/dist/visualization.es428.js.map +1 -1
- package/dist/visualization.es429.js +10 -10
- package/dist/visualization.es429.js.map +1 -1
- package/dist/visualization.es43.js +7 -26
- package/dist/visualization.es43.js.map +1 -1
- package/dist/visualization.es430.js +27 -2
- package/dist/visualization.es430.js.map +1 -1
- package/dist/visualization.es431.js +10 -16
- package/dist/visualization.es431.js.map +1 -1
- package/dist/visualization.es432.js +10 -29
- package/dist/visualization.es432.js.map +1 -1
- package/dist/visualization.es433.js +2 -26
- package/dist/visualization.es433.js.map +1 -1
- package/dist/visualization.es434.js +16 -2
- package/dist/visualization.es434.js.map +1 -1
- package/dist/visualization.es435.js +29 -8
- package/dist/visualization.es435.js.map +1 -1
- package/dist/visualization.es436.js +26 -13
- package/dist/visualization.es436.js.map +1 -1
- package/dist/visualization.es437.js +2 -23
- package/dist/visualization.es437.js.map +1 -1
- package/dist/visualization.es438.js +8 -12
- package/dist/visualization.es438.js.map +1 -1
- package/dist/visualization.es439.js +13 -3
- package/dist/visualization.es439.js.map +1 -1
- package/dist/visualization.es44.js +33 -30
- package/dist/visualization.es44.js.map +1 -1
- package/dist/visualization.es440.js +23 -2
- package/dist/visualization.es440.js.map +1 -1
- package/dist/visualization.es441.js +12 -17
- package/dist/visualization.es441.js.map +1 -1
- package/dist/visualization.es442.js +3 -4
- package/dist/visualization.es442.js.map +1 -1
- package/dist/visualization.es443.js +2 -12
- package/dist/visualization.es443.js.map +1 -1
- package/dist/visualization.es444.js +18 -11
- package/dist/visualization.es444.js.map +1 -1
- package/dist/visualization.es445.js +3 -6
- package/dist/visualization.es445.js.map +1 -1
- package/dist/visualization.es446.js +12 -19
- package/dist/visualization.es446.js.map +1 -1
- package/dist/visualization.es447.js +11 -23
- package/dist/visualization.es447.js.map +1 -1
- package/dist/visualization.es448.js +6 -11
- package/dist/visualization.es448.js.map +1 -1
- package/dist/visualization.es449.js +19 -51
- package/dist/visualization.es449.js.map +1 -1
- package/dist/visualization.es45.js +70 -5
- package/dist/visualization.es45.js.map +1 -1
- package/dist/visualization.es450.js +20 -15
- package/dist/visualization.es450.js.map +1 -1
- package/dist/visualization.es451.js +9 -33
- package/dist/visualization.es451.js.map +1 -1
- package/dist/visualization.es452.js +47 -19
- package/dist/visualization.es452.js.map +1 -1
- package/dist/visualization.es453.js +13 -27
- package/dist/visualization.es453.js.map +1 -1
- package/dist/visualization.es454.js +35 -3
- package/dist/visualization.es454.js.map +1 -1
- package/dist/visualization.es455.js +22 -18
- package/dist/visualization.es455.js.map +1 -1
- package/dist/visualization.es456.js +32 -14
- package/dist/visualization.es456.js.map +1 -1
- package/dist/visualization.es457.js +3 -10
- package/dist/visualization.es457.js.map +1 -1
- package/dist/visualization.es458.js +18 -29
- package/dist/visualization.es458.js.map +1 -1
- package/dist/visualization.es459.js +14 -6
- package/dist/visualization.es459.js.map +1 -1
- package/dist/visualization.es46.js +11 -54
- package/dist/visualization.es46.js.map +1 -1
- package/dist/visualization.es460.js +10 -7
- package/dist/visualization.es460.js.map +1 -1
- package/dist/visualization.es461.js +30 -2
- package/dist/visualization.es461.js.map +1 -1
- package/dist/visualization.es462.js +6 -17
- package/dist/visualization.es462.js.map +1 -1
- package/dist/visualization.es463.js +7 -8
- package/dist/visualization.es463.js.map +1 -1
- package/dist/visualization.es464.js +2 -10
- package/dist/visualization.es464.js.map +1 -1
- package/dist/visualization.es465.js +14 -613
- package/dist/visualization.es465.js.map +1 -1
- package/dist/visualization.es466.js +8 -50
- package/dist/visualization.es466.js.map +1 -1
- package/dist/visualization.es467.js +10 -13
- package/dist/visualization.es467.js.map +1 -1
- package/dist/visualization.es468.js +616 -11
- package/dist/visualization.es468.js.map +1 -1
- package/dist/visualization.es469.js +50 -22
- package/dist/visualization.es469.js.map +1 -1
- package/dist/visualization.es47.js +65 -110
- package/dist/visualization.es47.js.map +1 -1
- package/dist/visualization.es470.js +13 -35
- package/dist/visualization.es470.js.map +1 -1
- package/dist/visualization.es471.js +11 -13
- package/dist/visualization.es471.js.map +1 -1
- package/dist/visualization.es472.js +23 -19
- package/dist/visualization.es472.js.map +1 -1
- package/dist/visualization.es473.js +32 -23
- package/dist/visualization.es473.js.map +1 -1
- package/dist/visualization.es474.js +12 -26
- package/dist/visualization.es474.js.map +1 -1
- package/dist/visualization.es475.js +14 -38
- package/dist/visualization.es475.js.map +1 -1
- package/dist/visualization.es476.js +20 -14
- package/dist/visualization.es476.js.map +1 -1
- package/dist/visualization.es477.js +22 -36
- package/dist/visualization.es477.js.map +1 -1
- package/dist/visualization.es478.js +36 -51
- package/dist/visualization.es478.js.map +1 -1
- package/dist/visualization.es479.js +19 -3
- package/dist/visualization.es479.js.map +1 -1
- package/dist/visualization.es48.js +240 -8
- package/dist/visualization.es48.js.map +1 -1
- package/dist/visualization.es480.js +41 -3
- package/dist/visualization.es480.js.map +1 -1
- package/dist/visualization.es481.js +58 -7
- package/dist/visualization.es481.js.map +1 -1
- package/dist/visualization.es482.js +3 -15
- package/dist/visualization.es482.js.map +1 -1
- package/dist/visualization.es483.js +3 -2
- package/dist/visualization.es483.js.map +1 -1
- package/dist/visualization.es484.js +7 -2
- package/dist/visualization.es484.js.map +1 -1
- package/dist/visualization.es485.js +16 -2
- package/dist/visualization.es485.js.map +1 -1
- package/dist/visualization.es486.js +2 -7
- package/dist/visualization.es486.js.map +1 -1
- package/dist/visualization.es487.js +2 -35
- package/dist/visualization.es487.js.map +1 -1
- package/dist/visualization.es488.js +2 -4
- package/dist/visualization.es488.js.map +1 -1
- package/dist/visualization.es489.js +29 -4
- package/dist/visualization.es489.js.map +1 -1
- package/dist/visualization.es49.js +96 -33
- package/dist/visualization.es49.js.map +1 -1
- package/dist/visualization.es490.js +119 -6
- package/dist/visualization.es490.js.map +1 -1
- package/dist/visualization.es491.js +29 -12
- package/dist/visualization.es491.js.map +1 -1
- package/dist/visualization.es492.js +11 -2
- package/dist/visualization.es492.js.map +1 -1
- package/dist/visualization.es493.js +13 -3
- package/dist/visualization.es493.js.map +1 -1
- package/dist/visualization.es494.js +32 -3
- package/dist/visualization.es494.js.map +1 -1
- package/dist/visualization.es495.js +27 -9
- package/dist/visualization.es495.js.map +1 -1
- package/dist/visualization.es496.js +10 -25
- package/dist/visualization.es496.js.map +1 -1
- package/dist/visualization.es497.js +12 -4
- package/dist/visualization.es497.js.map +1 -1
- package/dist/visualization.es498.js +15 -30
- package/dist/visualization.es498.js.map +1 -1
- package/dist/visualization.es499.js +22 -236
- package/dist/visualization.es499.js.map +1 -1
- package/dist/visualization.es5.js +10 -10
- package/dist/visualization.es50.js +27 -66
- package/dist/visualization.es50.js.map +1 -1
- package/dist/visualization.es500.js +14 -990
- package/dist/visualization.es500.js.map +1 -1
- package/dist/visualization.es501.js +91 -56
- package/dist/visualization.es501.js.map +1 -1
- package/dist/visualization.es502.js +29 -29
- package/dist/visualization.es502.js.map +1 -1
- package/dist/visualization.es503.js +67 -115
- package/dist/visualization.es503.js.map +1 -1
- package/dist/visualization.es504.js +48 -26
- package/dist/visualization.es504.js.map +1 -1
- package/dist/visualization.es505.js +34 -10
- package/dist/visualization.es505.js.map +1 -1
- package/dist/visualization.es506.js +41 -13
- package/dist/visualization.es506.js.map +1 -1
- package/dist/visualization.es507.js +8 -31
- package/dist/visualization.es507.js.map +1 -1
- package/dist/visualization.es508.js +9 -28
- package/dist/visualization.es508.js.map +1 -1
- package/dist/visualization.es509.js +6 -10
- package/dist/visualization.es509.js.map +1 -1
- package/dist/visualization.es51.js +22 -112
- package/dist/visualization.es51.js.map +1 -1
- package/dist/visualization.es510.js +8 -12
- package/dist/visualization.es510.js.map +1 -1
- package/dist/visualization.es511.js +6 -17
- package/dist/visualization.es511.js.map +1 -1
- package/dist/visualization.es512.js +5 -23
- package/dist/visualization.es512.js.map +1 -1
- package/dist/visualization.es513.js +14 -16
- package/dist/visualization.es513.js.map +1 -1
- package/dist/visualization.es514.js +5 -96
- package/dist/visualization.es514.js.map +1 -1
- package/dist/visualization.es515.js +6 -28
- package/dist/visualization.es515.js.map +1 -1
- package/dist/visualization.es516.js +6 -71
- package/dist/visualization.es516.js.map +1 -1
- package/dist/visualization.es517.js +6 -51
- package/dist/visualization.es517.js.map +1 -1
- package/dist/visualization.es518.js +3 -34
- package/dist/visualization.es518.js.map +1 -1
- package/dist/visualization.es519.js +4 -41
- package/dist/visualization.es519.js.map +1 -1
- package/dist/visualization.es52.js +18 -29
- package/dist/visualization.es52.js.map +1 -1
- package/dist/visualization.es520.js +8 -28
- package/dist/visualization.es520.js.map +1 -1
- package/dist/visualization.es522.js +1 -1
- package/dist/visualization.es53.js +20 -64
- package/dist/visualization.es53.js.map +1 -1
- package/dist/visualization.es532.js +2 -2
- package/dist/visualization.es533.js +5 -5
- package/dist/visualization.es534.js +3 -3
- package/dist/visualization.es535.js +3 -3
- package/dist/visualization.es537.js +8 -8
- package/dist/visualization.es539.js +1 -1
- package/dist/visualization.es54.js +69 -61
- package/dist/visualization.es54.js.map +1 -1
- package/dist/visualization.es542.js +279 -16
- package/dist/visualization.es542.js.map +1 -1
- package/dist/visualization.es543.js +2 -282
- package/dist/visualization.es543.js.map +1 -1
- package/dist/visualization.es544.js +128 -2
- package/dist/visualization.es544.js.map +1 -1
- package/dist/visualization.es545.js +16 -125
- package/dist/visualization.es545.js.map +1 -1
- package/dist/visualization.es546.js +20 -3
- package/dist/visualization.es546.js.map +1 -1
- package/dist/visualization.es547.js +7 -3
- package/dist/visualization.es547.js.map +1 -1
- package/dist/visualization.es548.js +3 -15
- package/dist/visualization.es548.js.map +1 -1
- package/dist/visualization.es549.js +6 -3
- package/dist/visualization.es549.js.map +1 -1
- package/dist/visualization.es55.js +57 -4
- package/dist/visualization.es55.js.map +1 -1
- package/dist/visualization.es550.js +7 -9
- package/dist/visualization.es550.js.map +1 -1
- package/dist/visualization.es551.js +5 -4
- package/dist/visualization.es551.js.map +1 -1
- package/dist/visualization.es552.js +4 -6
- package/dist/visualization.es552.js.map +1 -1
- package/dist/visualization.es553.js +7 -9
- package/dist/visualization.es553.js.map +1 -1
- package/dist/visualization.es554.js +14 -6
- package/dist/visualization.es554.js.map +1 -1
- package/dist/visualization.es555.js +9 -4
- package/dist/visualization.es555.js.map +1 -1
- package/dist/visualization.es556.js +4 -3
- package/dist/visualization.es556.js.map +1 -1
- package/dist/visualization.es557.js +5 -4
- package/dist/visualization.es557.js.map +1 -1
- package/dist/visualization.es558.js +6 -11
- package/dist/visualization.es558.js.map +1 -1
- package/dist/visualization.es559.js +30 -9
- package/dist/visualization.es559.js.map +1 -1
- package/dist/visualization.es56.js +18689 -34
- package/dist/visualization.es56.js.map +1 -1
- package/dist/visualization.es560.js +34 -30
- package/dist/visualization.es560.js.map +1 -1
- package/dist/visualization.es561.js +51 -24
- package/dist/visualization.es561.js.map +1 -1
- package/dist/visualization.es562.js +8 -51
- package/dist/visualization.es562.js.map +1 -1
- package/dist/visualization.es563.js +4 -3
- package/dist/visualization.es563.js.map +1 -1
- package/dist/visualization.es564.js +5 -8
- package/dist/visualization.es564.js.map +1 -1
- package/dist/visualization.es565.js +3 -20
- package/dist/visualization.es565.js.map +1 -1
- package/dist/visualization.es566.js +3 -7
- package/dist/visualization.es566.js.map +1 -1
- package/dist/visualization.es567.js +14 -5
- package/dist/visualization.es567.js.map +1 -1
- package/dist/visualization.es568.js +3 -5
- package/dist/visualization.es568.js.map +1 -1
- package/dist/visualization.es569.js +9 -7
- package/dist/visualization.es569.js.map +1 -1
- package/dist/visualization.es57.js +5 -4
- package/dist/visualization.es57.js.map +1 -1
- package/dist/visualization.es570.js +11 -15
- package/dist/visualization.es570.js.map +1 -1
- package/dist/visualization.es571.js +8 -3
- package/dist/visualization.es571.js.map +1 -1
- package/dist/visualization.es572.js +24 -6
- package/dist/visualization.es572.js.map +1 -1
- package/dist/visualization.es573.js +3 -34
- package/dist/visualization.es573.js.map +1 -1
- package/dist/visualization.es574.js +8 -8
- package/dist/visualization.es574.js.map +1 -1
- package/dist/visualization.es575.js +32 -9
- package/dist/visualization.es575.js.map +1 -1
- package/dist/visualization.es576.js +9 -9
- package/dist/visualization.es576.js.map +1 -1
- package/dist/visualization.es577.js +9 -18
- package/dist/visualization.es577.js.map +1 -1
- package/dist/visualization.es578.js +18 -7
- package/dist/visualization.es578.js.map +1 -1
- package/dist/visualization.es579.js +4 -4
- package/dist/visualization.es579.js.map +1 -1
- package/dist/visualization.es58.js +5 -282
- package/dist/visualization.es58.js.map +1 -1
- package/dist/visualization.es580.js +7 -32
- package/dist/visualization.es580.js.map +1 -1
- package/dist/visualization.es582.js +1 -1
- package/dist/visualization.es583.js +1 -1
- package/dist/visualization.es59.js +59 -18
- package/dist/visualization.es59.js.map +1 -1
- package/dist/visualization.es595.js +31 -11
- package/dist/visualization.es595.js.map +1 -1
- package/dist/visualization.es596.js +12 -24
- package/dist/visualization.es596.js.map +1 -1
- package/dist/visualization.es597.js +24 -19
- package/dist/visualization.es597.js.map +1 -1
- package/dist/visualization.es598.js +20 -7
- package/dist/visualization.es598.js.map +1 -1
- package/dist/visualization.es599.js +5 -4
- package/dist/visualization.es599.js.map +1 -1
- package/dist/visualization.es6.js +15 -15
- package/dist/visualization.es60.js +730 -18621
- package/dist/visualization.es60.js.map +1 -1
- package/dist/visualization.es600.js +6 -4
- package/dist/visualization.es600.js.map +1 -1
- package/dist/visualization.es601.js +3 -64
- package/dist/visualization.es601.js.map +1 -1
- package/dist/visualization.es602.js +62 -30
- package/dist/visualization.es602.js.map +1 -1
- package/dist/visualization.es603.js +1 -1
- package/dist/visualization.es604.js +1 -1
- package/dist/visualization.es606.js +3 -3
- package/dist/visualization.es607.js +4 -4
- package/dist/visualization.es62.js +131 -5
- package/dist/visualization.es62.js.map +1 -1
- package/dist/visualization.es63.js +62 -55
- package/dist/visualization.es63.js.map +1 -1
- package/dist/visualization.es64.js +112 -810
- package/dist/visualization.es64.js.map +1 -1
- package/dist/visualization.es65.js +8 -0
- package/dist/visualization.es65.js.map +1 -0
- package/dist/visualization.es66.js +34 -130
- package/dist/visualization.es66.js.map +1 -1
- package/dist/visualization.es67.js +57 -65
- package/dist/visualization.es67.js.map +1 -1
- package/dist/visualization.es68.js +47 -304
- package/dist/visualization.es68.js.map +1 -1
- package/dist/visualization.es69.js +42 -94
- package/dist/visualization.es69.js.map +1 -1
- package/dist/visualization.es7.js +11 -11
- package/dist/visualization.es70.js +21 -28
- package/dist/visualization.es70.js.map +1 -1
- package/dist/visualization.es71.js +115 -22
- package/dist/visualization.es71.js.map +1 -1
- package/dist/visualization.es72.js +97 -17
- package/dist/visualization.es72.js.map +1 -1
- package/dist/visualization.es73.js +51 -20
- package/dist/visualization.es73.js.map +1 -1
- package/dist/visualization.es74.js +54 -63
- package/dist/visualization.es74.js.map +1 -1
- package/dist/visualization.es75.js +43 -57
- package/dist/visualization.es75.js.map +1 -1
- package/dist/visualization.es76.js +5 -69
- package/dist/visualization.es76.js.map +1 -1
- package/dist/visualization.es77.js +4 -11
- package/dist/visualization.es77.js.map +1 -1
- package/dist/visualization.es78.js +18 -40
- package/dist/visualization.es78.js.map +1 -1
- package/dist/visualization.es79.js +4 -80
- package/dist/visualization.es79.js.map +1 -1
- package/dist/visualization.es8.js +50 -49
- package/dist/visualization.es8.js.map +1 -1
- package/dist/visualization.es80.js +27 -46
- package/dist/visualization.es80.js.map +1 -1
- package/dist/visualization.es81.js +28 -53
- package/dist/visualization.es81.js.map +1 -1
- package/dist/visualization.es82.js +39 -6
- package/dist/visualization.es82.js.map +1 -1
- package/dist/visualization.es83.js +80 -12
- package/dist/visualization.es83.js.map +1 -1
- package/dist/visualization.es84.js +46 -58
- package/dist/visualization.es84.js.map +1 -1
- package/dist/visualization.es85.js +56 -58
- package/dist/visualization.es85.js.map +1 -1
- package/dist/visualization.es86.js +7 -47
- package/dist/visualization.es86.js.map +1 -1
- package/dist/visualization.es87.js +13 -45
- package/dist/visualization.es87.js.map +1 -1
- package/dist/visualization.es88.js +56 -19
- package/dist/visualization.es88.js.map +1 -1
- package/dist/visualization.es89.js +61 -113
- package/dist/visualization.es89.js.map +1 -1
- package/dist/visualization.es9.js +1 -1
- package/dist/visualization.es90.js +33 -96
- package/dist/visualization.es90.js.map +1 -1
- package/dist/visualization.es91.js +55 -23
- package/dist/visualization.es91.js.map +1 -1
- package/dist/visualization.es92.js +32 -70
- package/dist/visualization.es92.js.map +1 -1
- package/dist/visualization.es93.js +18 -5
- package/dist/visualization.es93.js.map +1 -1
- package/dist/visualization.es94.js +14 -5
- package/dist/visualization.es94.js.map +1 -1
- package/dist/visualization.es95.js +26 -5
- package/dist/visualization.es95.js.map +1 -1
- package/dist/visualization.es96.js +5 -15
- package/dist/visualization.es96.js.map +1 -1
- package/dist/visualization.es97.js +5 -15
- package/dist/visualization.es97.js.map +1 -1
- package/dist/visualization.es98.js +5 -13
- package/dist/visualization.es98.js.map +1 -1
- package/dist/visualization.es99.js +15 -74
- package/dist/visualization.es99.js.map +1 -1
- package/package.json +1 -1
- package/dist/visualization.es61.js +0 -8
- package/dist/visualization.es61.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualization.es68.js","sources":["../src/components/ScatterPlot/ScatterPlotViewport.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { Box, Stack } from \"@mui/material\";\nimport { Group } from \"@visx/group\";\nimport { AxisBottom, AxisLeft, AxisRight, AxisTop } from \"@visx/axis\";\nimport { LinePath } from \"@visx/shape\";\nimport { Text } from \"@visx/text\";\nimport { curveBasis } from \"@visx/curve\";\nimport { localPoint } from \"@visx/event\";\nimport { ScaleLinear } from \"@visx/vendor/d3-scale\";\nimport { BackgroundGradient, ChartProps, CrosshairPosition, Point, SelectionMode, ZoomType } from \"./types\";\nimport { drawCanvasPoint, getTicks, isPointVisible, partitionPointsByHover, prepareCanvas, rescaleX, rescaleY } from \"./helpers\";\nimport AnimatedPoints from \"./AnimatedPoints\";\nimport PointLabels from \"./PointLabels\";\nimport GradientLegend from \"./GradientLegend\";\nimport Crosshair from \"./Crosshair\";\nimport { useDragSelection } from \"./hooks/useDragSelection\";\n\ntype ScatterPlotViewportProps<T extends object> = {\n size: number;\n margin: { top: number; left: number };\n boundedWidth: number;\n boundedHeight: number;\n loading: boolean;\n pointData: Point<T>[];\n animation?: ChartProps<T, boolean | undefined, boolean | undefined>[\"animation\"];\n animationGroupSize?: number;\n animationBuffer?: number;\n xScale: ScaleLinear<number, number, never>;\n yScale: ScaleLinear<number, number, never>;\n zoom: ZoomType;\n selectMode: SelectionMode;\n selectable: boolean;\n disableZoom?: boolean;\n groupPointsAnchor?: keyof Point<T> | keyof T;\n hoveredPoint: Point<T> | null;\n handleMouseMove: (event: React.MouseEvent<SVGElement>, zoom: ZoomType) => void;\n handleMouseLeave: () => void;\n onDisplayedPointsChange?: (points: Point<T>[]) => void;\n onSelectionChange?: (selectedPoints: Point<T>[]) => void;\n onPointClicked?: (point: Point<T>) => void;\n leftAxisLabel?: string;\n bottomAxisLabel?: string;\n border: boolean;\n originLine?: boolean;\n backgroundGradient?: BackgroundGradient;\n /** Crosshair position in data coordinates, or null for no crosshair. */\n crosshair?: CrosshairPosition | null;\n divRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst ScatterPlotViewport = <T extends object>({\n size,\n margin,\n boundedWidth,\n boundedHeight,\n loading,\n pointData,\n animation,\n animationGroupSize,\n animationBuffer,\n xScale,\n yScale,\n zoom,\n selectMode,\n selectable,\n disableZoom,\n groupPointsAnchor,\n hoveredPoint,\n handleMouseMove,\n handleMouseLeave,\n onDisplayedPointsChange,\n onSelectionChange,\n onPointClicked,\n leftAxisLabel,\n bottomAxisLabel,\n border,\n originLine,\n backgroundGradient,\n crosshair,\n divRef,\n}: ScatterPlotViewportProps<T>) => {\n const graphRef = useRef<SVGRectElement | null>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n\n // Animation state — viewport owns what it renders\n const [showPointAnimation, setShowPointAnimation] = useState(Boolean(animation));\n\n useEffect(() => {\n if (!animation) return;\n if (pointData.length > 2500) {\n setShowPointAnimation(false);\n return;\n }\n const duration = 450;\n const buffer = (animationBuffer ?? 0.03) * 1000;\n const groups = Math.ceil(pointData.length / (animationGroupSize ?? 1));\n const total = duration + groups * buffer;\n\n const t = window.setTimeout(() => setShowPointAnimation(false), total);\n return () => window.clearTimeout(t);\n }, [animation, animationBuffer, animationGroupSize, pointData.length]);\n\n const { lines, isDragging, x, y, dx, dy, dragStart, dragMove, dragEnd, completeSelection } =\n useDragSelection({ pointData, margin, xScale, yScale, onSelectionChange });\n\n // Passive event listeners to prevent default scroll/touch behavior on the chart surface\n useEffect(() => {\n const graphElement = graphRef.current;\n\n const handleWheel = (event: WheelEvent) => { event.preventDefault(); };\n const handleTouchMove = (event: TouchEvent) => { event.preventDefault(); };\n const handleTouchStart = (event: TouchEvent) => { event.preventDefault(); };\n\n if (graphElement) {\n graphElement.addEventListener('wheel', handleWheel, { passive: false });\n graphElement.addEventListener('touchstart', handleTouchStart, { passive: false });\n graphElement.addEventListener('touchmove', handleTouchMove, { passive: false });\n }\n\n return () => {\n if (graphElement) {\n graphElement.removeEventListener('wheel', handleWheel);\n graphElement.removeEventListener('touchstart', handleTouchStart);\n graphElement.removeEventListener('touchmove', handleTouchMove);\n }\n };\n }, []);\n\n const xScaleTransformed = useMemo(\n () => rescaleX(xScale, zoom.transformMatrix.translateX, zoom.transformMatrix.scaleX),\n [xScale, zoom.transformMatrix]\n );\n const yScaleTransformed = useMemo(\n () => rescaleY(yScale, zoom.transformMatrix.translateY, zoom.transformMatrix.scaleY),\n [yScale, zoom.transformMatrix]\n );\n\n const groupedPoints: Point<T>[] = useMemo(() => {\n const anchor = groupPointsAnchor;\n if (anchor && hoveredPoint) {\n return pointData.filter((point) => {\n if (anchor in point) {\n return point[anchor as keyof Point<T>] === hoveredPoint[anchor as keyof Point<T>];\n }\n if (point.metaData && hoveredPoint.metaData) {\n return point.metaData[anchor as keyof T] === hoveredPoint.metaData[anchor as keyof T];\n }\n return false;\n });\n }\n return hoveredPoint ? [hoveredPoint] : [];\n }, [hoveredPoint, groupPointsAnchor, pointData]);\n\n const hoveredPointKeys = useMemo(\n () => new Set(groupedPoints.map((point) => `${point.x},${point.y}`)),\n [groupedPoints]\n );\n\n const currentDisplayedPoints = useMemo(\n () => pointData.filter((point) => {\n const tx = xScaleTransformed(point.x);\n const ty = yScaleTransformed(point.y);\n return tx >= 0 && tx <= boundedWidth && ty >= 0 && ty <= boundedHeight;\n }),\n [pointData, xScaleTransformed, yScaleTransformed, boundedWidth, boundedHeight]\n );\n\n const drawPoints = useCallback((\n xST: ScaleLinear<number, number, never>,\n yST: ScaleLinear<number, number, never>,\n canvas: HTMLCanvasElement\n ) => {\n const context = canvas.getContext('2d');\n if (!context) return;\n\n prepareCanvas(context, boundedWidth, boundedHeight);\n\n if (backgroundGradient) {\n const [colorLow, colorMid, colorHigh] = backgroundGradient.colorScale ?? [\"red\", \"white\", \"blue\"];\n const W = boundedWidth;\n const H = boundedHeight;\n const x0 = xST(0);\n const y0 = yST(0);\n const fraction = Math.max(0.001, Math.min(0.999, (x0 * W - y0 * H + H * H) / (W * W + H * H)));\n const gradient = context.createLinearGradient(0, H, W, 0);\n gradient.addColorStop(0, colorLow);\n gradient.addColorStop(fraction, colorMid);\n gradient.addColorStop(1, colorHigh);\n context.globalAlpha = backgroundGradient.opacity ?? 1;\n context.fillStyle = gradient;\n context.fillRect(0, 0, W, H);\n context.globalAlpha = 1;\n }\n\n const { nonHovered, hovered } = partitionPointsByHover(pointData, hoveredPointKeys);\n\n const drawRenderedPoint = (point: Point<T>, isHovered: boolean) => {\n const transformedX = xST(point.x);\n const transformedY = yST(point.y);\n if (!isPointVisible(transformedX, transformedY, boundedWidth, boundedHeight)) return;\n drawCanvasPoint(context, point, transformedX, transformedY, isHovered);\n };\n\n nonHovered.forEach((point) => drawRenderedPoint(point, false));\n hovered.forEach((point) => drawRenderedPoint(point, true));\n }, [boundedHeight, boundedWidth, hoveredPointKeys, pointData, backgroundGradient]);\n\n useEffect(() => {\n if (canvasRef.current && !showPointAnimation) {\n drawPoints(xScaleTransformed, yScaleTransformed, canvasRef.current);\n }\n }, [drawPoints, xScaleTransformed, yScaleTransformed, showPointAnimation]);\n\n const handlePointClick = useCallback(() => {\n if (hoveredPoint) onPointClicked?.(hoveredPoint);\n }, [hoveredPoint, onPointClicked]);\n\n const surfaceCursor = disableZoom\n ? selectable\n ? isDragging ? 'none' : 'crosshair'\n : isDragging ? 'none' : 'default'\n : hoveredPoint\n ? 'default'\n : selectMode === 'select'\n ? isDragging ? 'none' : 'crosshair'\n : zoom.isDragging\n ? 'grabbing'\n : 'grab';\n\n const handleSelectionEnd = (event: React.MouseEvent<SVGRectElement> | React.TouchEvent<SVGRectElement>) => {\n dragEnd(event);\n completeSelection(zoom);\n };\n\n const onSurfaceMouseDown = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? dragStart\n : disableZoom ? undefined : zoom.dragStart;\n const onSurfaceMouseUp = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : zoom.dragEnd;\n const onSurfaceMouseMove = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? (isDragging ? dragMove : undefined)\n : disableZoom ? undefined : zoom.dragMove;\n const onSurfaceMouseLeave = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : zoom.dragEnd;\n const onSurfaceTouchStart = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? dragStart\n : disableZoom ? undefined : zoom.dragStart;\n const onSurfaceTouchEnd = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : zoom.dragEnd;\n const onSurfaceTouchMove = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? (isDragging ? dragMove : undefined)\n : disableZoom ? undefined : zoom.dragMove;\n const onSurfaceWheel: React.WheelEventHandler<SVGRectElement> = (event) => {\n setShowPointAnimation(false);\n if (!disableZoom) {\n const point = localPoint(event) || { x: 0, y: 0 };\n const zoomDirection = event.deltaY < 0 ? 1.1 : 0.9;\n zoom.scale({ scaleX: zoomDirection, scaleY: zoomDirection, point });\n }\n };\n\n const previousDisplayedPoints = useRef<Point<T>[]>([]);\n\n useEffect(() => {\n const haveDisplayedPointsChanged = (prevPoints: Point<T>[], nextPoints: Point<T>[]) => {\n if (prevPoints.length !== nextPoints.length) return true;\n return !prevPoints.every((point, index) => {\n const nextPoint = nextPoints[index];\n return (\n point.x === nextPoint.x &&\n point.y === nextPoint.y &&\n point.r === nextPoint.r &&\n point.shape === nextPoint.shape &&\n point.color === nextPoint.color &&\n point.opacity === nextPoint.opacity\n );\n });\n };\n\n if (haveDisplayedPointsChanged(previousDisplayedPoints.current, currentDisplayedPoints)) {\n onDisplayedPointsChange?.(currentDisplayedPoints);\n previousDisplayedPoints.current = currentDisplayedPoints;\n }\n }, [currentDisplayedPoints, onDisplayedPointsChange]);\n\n return (\n <Stack justifyContent=\"center\" alignItems=\"center\" direction=\"row\" sx={{ position: \"relative\" }}>\n <Box sx={{ width: size, height: size }}>\n {loading ? (\n <Box display=\"flex\" width=\"100%\" height=\"100%\" sx={{ justifyContent: \"center\", alignItems: \"center\" }}>\n <CircularProgress />\n </Box>\n ) : (\n <div style={{ position: \"relative\" }} ref={divRef}>\n <canvas\n ref={canvasRef}\n width={boundedWidth * 2}\n height={boundedHeight * 2}\n style={{\n userSelect: \"none\",\n position: \"absolute\",\n top: margin.top,\n left: margin.left,\n width: boundedWidth,\n height: boundedHeight,\n backgroundColor: \"transparent\",\n }}\n />\n <svg\n width={size}\n height={size}\n overflow=\"visible\"\n style={{ position: \"absolute\", userSelect: \"none\" }}\n onMouseMove={(event) => {\n if (isDragging) handleMouseLeave();\n else handleMouseMove(event, zoom);\n }}\n onMouseLeave={handleMouseLeave}\n >\n <Group top={margin.top} left={margin.left}>\n {showPointAnimation && animation && (\n <AnimatedPoints\n pointData={pointData}\n animation={animation}\n animationGroupSize={animationGroupSize}\n animationBuffer={animationBuffer}\n xScaleTransformed={xScaleTransformed}\n yScaleTransformed={yScaleTransformed}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n />\n )}\n {selectMode === \"select\" && (\n <>\n {lines.map((line, index) => (\n <LinePath\n key={`line-${index}`}\n fill=\"transparent\"\n stroke=\"black\"\n strokeWidth={3}\n data={line}\n curve={curveBasis}\n x={(datum) => datum.x}\n y={(datum) => datum.y}\n />\n ))}\n {isDragging && (\n <g>\n <line x1={x - margin.left + dx - 6} y1={y - margin.top + dy} x2={x - margin.left + dx + 6} y2={y - margin.top + dy} stroke=\"black\" strokeWidth={1} />\n <line x1={x - margin.left + dx} y1={y - margin.top + dy - 6} x2={x - margin.left + dx} y2={y - margin.top + dy + 6} stroke=\"black\" strokeWidth={1} />\n <circle cx={x - margin.left} cy={y - margin.top} r={4} fill=\"transparent\" stroke=\"black\" pointerEvents=\"none\" />\n </g>\n )}\n </>\n )}\n {originLine && (() => {\n const x0 = xScaleTransformed(0);\n const y0 = yScaleTransformed(0);\n return (\n <>\n {y0 >= 0 && y0 <= boundedHeight && (\n <line x1={0} x2={boundedWidth} y1={y0} y2={y0} stroke=\"#000\" strokeWidth={1} strokeDasharray=\"4,4\" pointerEvents=\"none\" />\n )}\n {x0 >= 0 && x0 <= boundedWidth && (\n <line x1={x0} x2={x0} y1={0} y2={boundedHeight} stroke=\"#000\" strokeWidth={1} strokeDasharray=\"4,4\" pointerEvents=\"none\" />\n )}\n </>\n );\n })()}\n <rect\n ref={graphRef}\n fill=\"transparent\"\n width={boundedWidth}\n height={boundedHeight}\n style={{ cursor: surfaceCursor }}\n onMouseDown={onSurfaceMouseDown}\n onMouseUp={onSurfaceMouseUp}\n onMouseMove={onSurfaceMouseMove}\n onMouseLeave={onSurfaceMouseLeave}\n onTouchStart={onSurfaceTouchStart}\n onTouchEnd={onSurfaceTouchEnd}\n onTouchMove={onSurfaceTouchMove}\n onWheel={onSurfaceWheel}\n onClick={handlePointClick}\n />\n {crosshair && !isDragging && (\n <Crosshair\n position={{\n x: xScaleTransformed(crosshair.x),\n y: yScaleTransformed(crosshair.y),\n }}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n />\n )}\n </Group>\n <Group top={margin.top} left={margin.left}>\n <AxisLeft\n scale={yScaleTransformed}\n tickLabelProps={() => ({\n fill: \"#1c1917\",\n fontSize: 10,\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: -10,\n })}\n tickValues={getTicks(yScaleTransformed, 5)}\n />\n <AxisBottom\n top={boundedHeight}\n scale={xScaleTransformed}\n tickLabelProps={() => ({\n fill: \"#1c1917\",\n fontSize: 11,\n textAnchor: \"middle\",\n })}\n tickValues={getTicks(xScaleTransformed, 5)}\n />\n {border && (\n <>\n <AxisTop top={0} scale={xScaleTransformed} tickValues={[]} />\n <AxisRight scale={yScaleTransformed} tickValues={[]} left={boundedWidth} />\n </>\n )}\n <Text textAnchor=\"middle\" verticalAnchor=\"end\" angle={-90} fontSize={15} y={boundedHeight / 2} x={0} dx={-50}>\n {leftAxisLabel}\n </Text>\n <Text textAnchor=\"middle\" verticalAnchor=\"start\" fontSize={15} y={boundedHeight} x={boundedWidth / 2} dy={50}>\n {bottomAxisLabel}\n </Text>\n </Group>\n <PointLabels\n pointData={pointData}\n xScaleTransformed={xScaleTransformed}\n yScaleTransformed={yScaleTransformed}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n margin={margin}\n />\n {backgroundGradient?.legend && (\n <GradientLegend\n backgroundGradient={backgroundGradient}\n boundedHeight={boundedHeight}\n barLeft={margin.left + boundedWidth + 25}\n marginTop={margin.top}\n />\n )}\n </svg>\n </div>\n )}\n </Box>\n </Stack>\n );\n};\n\nexport default ScatterPlotViewport;\n"],"names":["ScatterPlotViewport","t0","$","_c","size","margin","boundedWidth","boundedHeight","loading","pointData","animation","animationGroupSize","animationBuffer","xScale","yScale","zoom","selectMode","selectable","disableZoom","groupPointsAnchor","hoveredPoint","handleMouseMove","handleMouseLeave","onDisplayedPointsChange","onSelectionChange","onPointClicked","leftAxisLabel","bottomAxisLabel","border","originLine","backgroundGradient","crosshair","divRef","graphRef","useRef","canvasRef","showPointAnimation","setShowPointAnimation","useState","Boolean","t1","t2","length","buffer","total","Math","ceil","t","window","setTimeout","clearTimeout","useEffect","t3","lines","isDragging","x","y","dx","dy","dragStart","dragMove","dragEnd","completeSelection","useDragSelection","t4","t5","Symbol","for","graphElement","current","handleWheel","_temp","handleTouchMove","_temp2","handleTouchStart","_temp3","addEventListener","passive","removeEventListener","t6","transformMatrix","scaleX","translateX","rescaleX","xScaleTransformed","t7","scaleY","translateY","rescaleY","yScaleTransformed","t8","bb0","anchor","t9","t10","point","metaData","filter","groupedPoints","Set","map","_temp4","hoveredPointKeys","t11","point_1","tx","ty","currentDisplayedPoints","xST","yST","canvas","context","getContext","prepareCanvas","colorLow","colorMid","colorHigh","colorScale","W","H","x0","y0","fraction","max","min","gradient","createLinearGradient","addColorStop","globalAlpha","opacity","fillStyle","fillRect","nonHovered","hovered","partitionPointsByHover","drawRenderedPoint","point_2","isHovered","transformedX","transformedY","isPointVisible","drawCanvasPoint","forEach","point_3","point_4","drawPoints","t12","t13","t14","handlePointClick","surfaceCursor","t15","event_2","event","handleSelectionEnd","onSurfaceMouseDown","undefined","onSurfaceMouseUp","onSurfaceMouseMove","onSurfaceMouseLeave","onSurfaceTouchStart","onSurfaceTouchEnd","onSurfaceTouchMove","t16","event_3","point_5","localPoint","zoomDirection","deltaY","scale","onSurfaceWheel","t17","previousDisplayedPoints","t18","t19","_temp5","t20","position","t21","width","height","t22","Box","justifyContent","alignItems","jsx","CircularProgress","jsxs","userSelect","top","left","backgroundColor","event_4","Group","AnimatedPoints","Fragment","_temp8","x0_0","y0_0","cursor","Crosshair","AxisLeft","_temp9","getTicks","AxisBottom","_temp0","AxisTop","AxisRight","Text","PointLabels","legend","GradientLegend","t23","Stack","preventDefault","event_0","event_1","point_0","prevPoints","nextPoints","every","point_6","index","nextPoint","r","shape","color","_temp6","datum","_temp7","datum_0","line","index_0","LinePath","curveBasis","fill","fontSize","textAnchor","verticalAnchor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"visualization.es68.js","sources":["../src/components/Heatmap/HeatmapCell.tsx"],"sourcesContent":["import { memo, MouseEvent } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { getAnimationProps } from \"../../utility\";\nimport type { AnimationType } from \"../../utility\";\nimport type { AnyBin } from \"./HeatmapCells\";\nimport type { PlotTooltipRef } from \"../../tooltip\";\n\n/** Class on the <g> wrapping each cell. The hover rule keys off this. */\nexport const CELL_CLASS = \"visx-heatmap-cell\";\n/** Class on the <rect>/<circle> inside each cell. */\nexport const CELL_SHAPE_CLASS = \"visx-heatmap-cell-shape\";\n\n/**\n * Hover styling is plain CSS rather than React state: `:hover` costs no render at all, while\n * tracking hover in state re-renders on every cell the pointer crosses. Rendered once per chart\n * by Heatmap, inside the <svg> so it survives the SVG/PNG download serialization.\n *\n * The stroke is always painted in the cell's own fill color, so hovering only has to give it a\n * width. `strokeWidth={0}` below is a presentation attribute, which loses to any CSS rule - so\n * the hover rule wins without needing !important.\n *\n * `pointer-events: all` because cells with a null count render with fill=\"none\", and SVG's\n * default (visiblePainted) only treats painted area as a hit target - without this the pointer\n * falls through such a cell to the <svg> and it can never show its \"no data\" tooltip.\n */\nexport const heatmapCellStyles = `\n.${CELL_CLASS} { cursor: pointer; }\n.${CELL_SHAPE_CLASS} { transition: stroke-width 0.2s; pointer-events: all; }\n.${CELL_CLASS}:hover .${CELL_SHAPE_CLASS} { stroke-width: 2; }\n`;\n\nexport interface HeatmapCellProps {\n bin: AnyBin;\n isRect: boolean;\n binWidth: number;\n fill: string;\n fillOpacity: number;\n colIndex: number;\n animationType?: AnimationType;\n /** Stable for the life of the plot, so it never invalidates this cell's memoization. */\n tooltipRef: PlotTooltipRef<AnyBin>;\n onClick?: (bin: AnyBin) => void;\n}\n\n/**\n * visx rebuilds every bin object inside its own render, so `bin` always arrives with a fresh\n * identity and memo's default shallow compare can never bail out. Comparing the bin's fields\n * instead lets untouched cells skip re-rendering, which is what makes selection changes cheap:\n * only the cells whose appearance actually changed re-render, rather than the whole grid.\n *\n * `bin.bin` and `bin.datum` are the caller's own row/column data, which do keep identity, so a\n * reference check on those covers data and metadata changes.\n */\nconst binsEqual = (a: AnyBin, b: AnyBin): boolean => {\n if (\n a.row !== b.row ||\n a.column !== b.column ||\n a.count !== b.count ||\n a.gap !== b.gap ||\n a.color !== b.color ||\n a.opacity !== b.opacity ||\n a.bin !== b.bin ||\n a.datum !== b.datum\n ) {\n return false;\n }\n // Rect and circle cells carry different geometry fields\n if (\"x\" in a) {\n return \"x\" in b && a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n }\n return \"cy\" in b && a.cy === b.cy && a.r === b.r && a.radius === b.radius;\n};\n\n/**\n * Must compare every prop in HeatmapCellProps - one left out here would silently stop updating.\n */\nconst cellPropsEqual = (prev: HeatmapCellProps, next: HeatmapCellProps): boolean =>\n prev.fill === next.fill &&\n prev.fillOpacity === next.fillOpacity &&\n prev.isRect === next.isRect &&\n prev.binWidth === next.binWidth &&\n prev.colIndex === next.colIndex &&\n prev.animationType === next.animationType &&\n prev.tooltipRef === next.tooltipRef &&\n prev.onClick === next.onClick &&\n binsEqual(prev.bin, next.bin);\n\nconst HeatmapCell = memo(function HeatmapCell({\n bin, isRect, binWidth, fill, fillOpacity, colIndex,\n animationType, tooltipRef, onClick,\n}: HeatmapCellProps) {\n const isRectCell = isRect && \"width\" in bin && \"height\" in bin && \"x\" in bin && \"y\" in bin;\n const isCircleCell = !isRect && \"cy\" in bin && \"r\" in bin;\n\n const sharedProps = { fill, fillOpacity, stroke: fill, strokeWidth: 0 };\n\n const Wrapper = animationType ? motion.g : \"g\";\n const animProps = getAnimationProps(animationType as AnimationType, colIndex);\n\n return (\n <Wrapper\n {...animProps}\n className={CELL_CLASS}\n onMouseMove={(event: MouseEvent<SVGElement>) => tooltipRef.current?.show(bin, event)}\n onMouseLeave={() => tooltipRef.current?.hide()}\n onClick={() => onClick?.(bin)}\n >\n {isRectCell ? (\n <rect\n className={`visx-heatmap-rect ${CELL_SHAPE_CLASS}`}\n width={bin.width}\n height={bin.height}\n x={bin.x}\n y={bin.y}\n {...sharedProps}\n />\n ) : isCircleCell ? (\n <circle\n className={`visx-heatmap-circle ${CELL_SHAPE_CLASS}`}\n cx={bin.column * binWidth + binWidth / 2}\n cy={bin.cy}\n r={bin.r}\n {...sharedProps}\n />\n ) : null}\n </Wrapper>\n );\n}, cellPropsEqual);\n\nexport default HeatmapCell;\n"],"names":["CELL_CLASS","CELL_SHAPE_CLASS","heatmapCellStyles","binsEqual","a","b","row","column","count","gap","color","opacity","bin","datum","x","y","width","height","cy","r","radius","cellPropsEqual","prev","next","fill","fillOpacity","isRect","binWidth","colIndex","animationType","tooltipRef","onClick","HeatmapCell","memo","t0","$","_c","isRectCell","isCircleCell","t1","stroke","strokeWidth","sharedProps","Wrapper","motion","g","t2","t3","getAnimationProps","animProps","t4","event","current","show","t5","hide","t6","t7","jsx","t8"],"mappings":"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"}
|
|
@@ -1,100 +1,48 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { c as
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
bottom: D,
|
|
19
|
-
right: H
|
|
20
|
-
}, t[0] = D, t[1] = H, t[2] = c) : c = t[2];
|
|
21
|
-
const T = r * a, O = s * a;
|
|
22
|
-
let f;
|
|
23
|
-
t[3] !== s || t[4] !== r || t[5] !== A || t[6] !== X || t[7] !== Y ? (f = (i) => {
|
|
24
|
-
if (i) {
|
|
25
|
-
const o = i.getContext("2d"), j = r * a, K = s * a;
|
|
26
|
-
o && (o.clearRect(0, 0, i.width, i.height), o.fillStyle = "white", o.fillRect(0, 0, j, K), o.strokeStyle = "grey", o.lineWidth = 4, o.strokeRect(0, 0, j, K), A.forEach((P) => {
|
|
27
|
-
const q = X(P.x) * a, B = Y(P.y) * a;
|
|
28
|
-
o.beginPath(), o.arc(q, B, 3 * a, 0, Math.PI * 2), o.fillStyle = P.color ?? "black", o.fill();
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
}, t[3] = s, t[4] = r, t[5] = A, t[6] = X, t[7] = Y, t[8] = f) : f = t[8];
|
|
32
|
-
let I;
|
|
33
|
-
t[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (I = {
|
|
34
|
-
display: "block"
|
|
35
|
-
}, t[9] = I) : I = t[9];
|
|
36
|
-
let h;
|
|
37
|
-
t[10] !== T || t[11] !== O || t[12] !== f ? (h = /* @__PURE__ */ p("canvas", { width: T, height: O, ref: f, style: I }), t[10] = T, t[11] = O, t[12] = f, t[13] = h) : h = t[13];
|
|
38
|
-
const C = r * a, W = s * a;
|
|
39
|
-
let _;
|
|
40
|
-
t[14] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (_ = {
|
|
41
|
-
position: "absolute",
|
|
42
|
-
top: 0,
|
|
43
|
-
left: 0
|
|
44
|
-
}, t[14] = _) : _ = t[14];
|
|
45
|
-
let m;
|
|
46
|
-
t[15] !== e ? (m = e.toStringInvert(), t[15] = e, t[16] = m) : m = t[16];
|
|
47
|
-
const v = e.isDragging ? "grabbing" : "grab";
|
|
1
|
+
import { jsx as i, jsxs as g } from "react/jsx-runtime";
|
|
2
|
+
import { c as S } from "react/compiler-runtime";
|
|
3
|
+
import { measureTextWidth as W } from "./visualization.es40.js";
|
|
4
|
+
import H from "./visualization.es22.js";
|
|
5
|
+
import k from "./visualization.es36.js";
|
|
6
|
+
const l = 14, _ = 6, x = 4, y = 11, A = "sans-serif", T = 5, I = (n) => n % 1 === 0 ? String(n) : n.toFixed(1), L = (n, t) => Array.from({
|
|
7
|
+
length: T
|
|
8
|
+
}, (e, o) => n + o * (t - n) / (T - 1)), D = 1.15, G = 6, O = (n, t) => {
|
|
9
|
+
const e = Math.max(...L(n, t).map((o) => W(I(o), y, A)));
|
|
10
|
+
return l + x + _ + e * D + G;
|
|
11
|
+
}, R = (n) => {
|
|
12
|
+
const t = S(11), {
|
|
13
|
+
colors: e,
|
|
14
|
+
minValue: o,
|
|
15
|
+
maxValue: c,
|
|
16
|
+
height: r
|
|
17
|
+
} = n;
|
|
48
18
|
let d;
|
|
49
|
-
t[
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
t[19] !== e ? (g = (i) => {
|
|
54
|
-
e.isDragging && e.setTransformMatrix({
|
|
55
|
-
scaleX: e.transformMatrix.scaleX,
|
|
56
|
-
scaleY: e.transformMatrix.scaleY,
|
|
57
|
-
translateX: e.transformMatrix.translateX - i.movementX / 0.25 * e.transformMatrix.scaleX,
|
|
58
|
-
translateY: e.transformMatrix.translateY - i.movementY / 0.25 * e.transformMatrix.scaleY,
|
|
59
|
-
skewX: e.transformMatrix.skewX,
|
|
60
|
-
skewY: e.transformMatrix.skewY
|
|
19
|
+
if (t[0] !== e || t[1] !== r || t[2] !== c || t[3] !== o) {
|
|
20
|
+
const u = L(o, c), F = H({
|
|
21
|
+
domain: [c, o],
|
|
22
|
+
range: [0, r]
|
|
61
23
|
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let y;
|
|
82
|
-
t[36] !== n || t[37] !== s || t[38] !== r ? (y = n !== null && n >= 0 && n <= r && /* @__PURE__ */ p("line", { x1: n, x2: n, y1: 0, y2: s, stroke: L, strokeWidth: $, strokeDasharray: z, pointerEvents: "none" }), t[36] = n, t[37] = s, t[38] = r, t[39] = y) : y = t[39];
|
|
83
|
-
let k;
|
|
84
|
-
t[40] !== x || t[41] !== S || t[42] !== y ? (k = /* @__PURE__ */ N("g", { transform: `scale(${a})`, children: [
|
|
85
|
-
x,
|
|
86
|
-
S,
|
|
87
|
-
y
|
|
88
|
-
] }), t[40] = x, t[41] = S, t[42] = y, t[43] = k) : k = t[43];
|
|
89
|
-
let u;
|
|
90
|
-
t[44] !== W || t[45] !== k || t[46] !== C ? (u = /* @__PURE__ */ p("svg", { width: C, height: W, style: _, children: k }), t[44] = W, t[45] = k, t[46] = C, t[47] = u) : u = t[47];
|
|
91
|
-
let E;
|
|
92
|
-
return t[48] !== u || t[49] !== c || t[50] !== h ? (E = /* @__PURE__ */ N("div", { style: c, children: [
|
|
93
|
-
h,
|
|
94
|
-
u
|
|
95
|
-
] }), t[48] = u, t[49] = c, t[50] = h, t[51] = E) : E = t[51], E;
|
|
24
|
+
let s;
|
|
25
|
+
t[5] !== e ? (s = e.map((h, a) => /* @__PURE__ */ i("stop", { offset: `${a / (e.length - 1) * 100}%`, stopColor: e[e.length - 1 - a] }, a)), t[5] = e, t[6] = s) : s = t[6];
|
|
26
|
+
let m;
|
|
27
|
+
t[7] !== s ? (m = /* @__PURE__ */ i("defs", { children: /* @__PURE__ */ i("linearGradient", { id: "heatmap-legend-gradient", x1: "0", y1: "0", x2: "0", y2: "1", children: s }) }), t[7] = s, t[8] = m) : m = t[8];
|
|
28
|
+
let f;
|
|
29
|
+
t[9] !== r ? (f = /* @__PURE__ */ i("rect", { x: 0, y: 0, width: l, height: r, fill: "url(#heatmap-legend-gradient)", rx: 2 }), t[9] = r, t[10] = f) : f = t[10], d = /* @__PURE__ */ g(k, { children: [
|
|
30
|
+
m,
|
|
31
|
+
f,
|
|
32
|
+
u.map((h, a) => {
|
|
33
|
+
const p = F(h);
|
|
34
|
+
return /* @__PURE__ */ g("g", { children: [
|
|
35
|
+
/* @__PURE__ */ i("line", { x1: l, x2: l + x, y1: p, y2: p, stroke: "#4d4f52", strokeWidth: 1 }),
|
|
36
|
+
/* @__PURE__ */ i("text", { x: l + x + _, y: p, dominantBaseline: "middle", fontSize: y, fontFamily: A, fill: "#4d4f52", children: I(h) })
|
|
37
|
+
] }, a);
|
|
38
|
+
})
|
|
39
|
+
] }), t[0] = e, t[1] = r, t[2] = c, t[3] = o, t[4] = d;
|
|
40
|
+
} else
|
|
41
|
+
d = t[4];
|
|
42
|
+
return d;
|
|
96
43
|
};
|
|
97
44
|
export {
|
|
98
|
-
|
|
45
|
+
R as default,
|
|
46
|
+
O as getHeatmapLegendWidth
|
|
99
47
|
};
|
|
100
48
|
//# sourceMappingURL=visualization.es69.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualization.es69.js","sources":["../src/components/ScatterPlot/minimap.tsx"],"sourcesContent":["import { MapProps } from \"./types\";\nimport { CROSSHAIR_DASH, CROSSHAIR_STROKE, CROSSHAIR_STROKE_WIDTH } from \"./Crosshair\";\n\nconst MINIMAP_SCALE_FACTOR = 0.25;\n// The crosshair is drawn inside the scaled group, so its stroke and dashes shrink with it.\n// Scale them back up so it renders identically to the crosshair on the plot itself.\nconst MINIMAP_CROSSHAIR_STROKE_WIDTH = CROSSHAIR_STROKE_WIDTH / MINIMAP_SCALE_FACTOR;\nconst MINIMAP_CROSSHAIR_DASH = CROSSHAIR_DASH.map((dash) => dash / MINIMAP_SCALE_FACTOR).join(\",\");\n\nconst MiniMap = <T,>({\n miniMap,\n width,\n height,\n pointData,\n xScale,\n yScale,\n zoom,\n crosshair\n}: MapProps<T>) => {\n // The minimap frame is the whole plot area untransformed, so a data coordinate maps onto it\n // through the base scales - no need to undo the current zoom.\n const crosshairX = crosshair ? xScale(crosshair.x) : null;\n const crosshairY = crosshair ? yScale(crosshair.y) : null;\n const frameWidth = width - 100;\n const frameHeight = height - 100;\n\n return (\n <div\n style={{\n position: 'absolute',\n bottom: miniMap.position ? miniMap.position.bottom : 10,\n right: miniMap.position ? miniMap.position.right : 10,\n }}\n >\n {/* Canvas for rendering points on minimap */}\n <canvas\n width={frameWidth * MINIMAP_SCALE_FACTOR}\n height={frameHeight * MINIMAP_SCALE_FACTOR}\n ref={(canvas) => {\n if (canvas) {\n const context = canvas.getContext('2d');\n const scaleFactor = MINIMAP_SCALE_FACTOR;\n const scaledWidth = frameWidth * scaleFactor;\n const scaledHeight = frameHeight * scaleFactor;\n if (context) {\n // Clear canvas\n context.clearRect(0, 0, canvas.width, canvas.height);\n\n // Draw background and outline\n context.fillStyle = 'white';\n context.fillRect(0, 0, scaledWidth, scaledHeight);\n context.strokeStyle = 'grey';\n context.lineWidth = 4;\n context.strokeRect(0, 0, scaledWidth, scaledHeight);\n\n // Draw points\n pointData.forEach(point => {\n const transformedX = xScale(point.x) * scaleFactor;\n const transformedY = yScale(point.y) * scaleFactor;\n context.beginPath();\n context.arc(transformedX, transformedY, 3 * scaleFactor, 0, Math.PI * 2);\n context.fillStyle = point.color ?? \"black\";\n context.fill();\n });\n }\n }\n }}\n style={{ display: 'block' }}\n />\n\n {/* SVG for rendering the zoom window */}\n <svg\n width={frameWidth * MINIMAP_SCALE_FACTOR}\n height={frameHeight * MINIMAP_SCALE_FACTOR}\n style={{ position: 'absolute', top: 0, left: 0 }}\n >\n <g transform={`scale(${MINIMAP_SCALE_FACTOR})`}>\n <rect\n width={frameWidth}\n height={frameHeight}\n fill=\"#0d0f98\"\n fillOpacity={0.2}\n stroke=\"#0d0f98\"\n strokeWidth={4}\n rx={8}\n transform={zoom.toStringInvert()}\n //drag functionality for window, must invert zoom and take the scale into account\n style={{ cursor: zoom.isDragging ? \"grabbing\" : \"grab\" }}\n onMouseDown={zoom.dragStart}\n onMouseUp={zoom.dragEnd}\n onMouseMove={(event) => {\n if (zoom.isDragging) {\n zoom.setTransformMatrix({\n scaleX: zoom.transformMatrix.scaleX,\n scaleY: zoom.transformMatrix.scaleY,\n translateX: zoom.transformMatrix.translateX - event.movementX / .25 * zoom.transformMatrix.scaleX,\n translateY: zoom.transformMatrix.translateY - event.movementY / .25 * zoom.transformMatrix.scaleY,\n skewX: zoom.transformMatrix.skewX,\n skewY: zoom.transformMatrix.skewY\n });\n }\n }}\n onMouseLeave={zoom.dragEnd}\n onTouchStart={zoom.dragStart}\n onTouchEnd={zoom.dragEnd}\n onTouchMove={(event) => {\n if (zoom.isDragging && event.touches.length === 1) {\n const touch = event.touches[0];\n zoom.setTransformMatrix({\n scaleX: zoom.transformMatrix.scaleX,\n scaleY: zoom.transformMatrix.scaleY,\n translateX: zoom.transformMatrix.translateX - touch.clientX / .25,\n translateY: zoom.transformMatrix.translateY - touch.clientY / .25,\n skewX: zoom.transformMatrix.skewX,\n skewY: zoom.transformMatrix.skewY\n });\n }\n }}\n />\n {crosshairY !== null && crosshairY >= 0 && crosshairY <= frameHeight && (\n <line\n x1={0}\n x2={frameWidth}\n y1={crosshairY}\n y2={crosshairY}\n stroke={CROSSHAIR_STROKE}\n strokeWidth={MINIMAP_CROSSHAIR_STROKE_WIDTH}\n strokeDasharray={MINIMAP_CROSSHAIR_DASH}\n pointerEvents=\"none\"\n />\n )}\n {crosshairX !== null && crosshairX >= 0 && crosshairX <= frameWidth && (\n <line\n x1={crosshairX}\n x2={crosshairX}\n y1={0}\n y2={frameHeight}\n stroke={CROSSHAIR_STROKE}\n strokeWidth={MINIMAP_CROSSHAIR_STROKE_WIDTH}\n strokeDasharray={MINIMAP_CROSSHAIR_DASH}\n pointerEvents=\"none\"\n />\n )}\n </g>\n </svg>\n </div>\n );\n};\n\nexport default MiniMap;"],"names":["MINIMAP_SCALE_FACTOR","MINIMAP_CROSSHAIR_STROKE_WIDTH","CROSSHAIR_STROKE_WIDTH","MINIMAP_CROSSHAIR_DASH","CROSSHAIR_DASH","map","dash","join","MiniMap","t0","$","_c","miniMap","width","height","pointData","xScale","yScale","zoom","crosshair","crosshairX","x","crosshairY","y","frameWidth","frameHeight","t1","position","bottom","t2","right","t3","t4","t5","t6","canvas","context","getContext","scaledWidth","scaledHeight","clearRect","fillStyle","fillRect","strokeStyle","lineWidth","strokeRect","forEach","point","transformedX","transformedY","beginPath","arc","Math","PI","color","fill","t7","Symbol","for","display","t8","jsx","t9","t10","t11","top","left","t12","toStringInvert","t13","isDragging","t14","cursor","t15","event","setTransformMatrix","scaleX","transformMatrix","scaleY","translateX","movementX","translateY","movementY","skewX","skewY","t16","event_0","touches","length","touch","clientX","clientY","t17","dragEnd","dragStart","t18","CROSSHAIR_STROKE","t19","t20","t21","t22","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"visualization.es69.js","sources":["../src/components/Heatmap/HeatmapLegend.tsx"],"sourcesContent":["import { Group } from \"@visx/group\";\nimport { scaleLinear } from \"@visx/scale\";\nimport { measureTextWidth } from \"../../utility\";\n\nconst BAR_WIDTH = 14;\nconst LABEL_GAP = 6;\nconst TICK_WIDTH = 4;\nconst FONT_SIZE = 11;\nconst FONT_FAMILY = \"sans-serif\";\nconst NUM_TICKS = 5;\n\ninterface HeatmapLegendProps {\n colors: [string, string, ...string[]];\n minValue: number;\n maxValue: number;\n height: number;\n}\n\nconst formatTick = (value: number) =>\n value % 1 === 0 ? String(value) : value.toFixed(1);\n\nconst getTickValues = (minValue: number, maxValue: number) =>\n Array.from({ length: NUM_TICKS }, (_, i) =>\n minValue + (i * (maxValue - minValue)) / (NUM_TICKS - 1)\n );\n\n// Canvas's measureText and the browser's actual SVG text layout don't agree to the sub-pixel,\n// and the gap widens with string length - pad generously so longer labels (more digits) don't\n// creep past the reserved width and get clipped by the svg's default overflow:hidden.\nconst LABEL_WIDTH_SAFETY_FACTOR = 1.15;\nconst RIGHT_PADDING = 6;\n\n// Full width needed to render the legend (color bar + ticks + tick labels) without\n// clipping, based on the widest formatted tick label for the given value range.\nexport const getHeatmapLegendWidth = (minValue: number, maxValue: number): number => {\n const maxLabelWidth = Math.max(\n ...getTickValues(minValue, maxValue).map((value) =>\n measureTextWidth(formatTick(value), FONT_SIZE, FONT_FAMILY)\n )\n );\n return BAR_WIDTH + TICK_WIDTH + LABEL_GAP + maxLabelWidth * LABEL_WIDTH_SAFETY_FACTOR + RIGHT_PADDING;\n};\n\nconst HeatmapLegend = ({ colors, minValue, maxValue, height }: HeatmapLegendProps) => {\n const gradientId = \"heatmap-legend-gradient\";\n\n const tickValues = getTickValues(minValue, maxValue);\n\n const yScale = scaleLinear<number>({\n domain: [maxValue, minValue],\n range: [0, height],\n });\n\n return (\n <Group>\n <defs>\n {/* The bar reads top (max) to bottom (min), so the gradient stops run in reverse\n color order to match how colors map to values in the heatmap cells. */}\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n {colors.map((_, i) => (\n <stop\n key={i}\n offset={`${(i / (colors.length - 1)) * 100}%`}\n stopColor={colors[colors.length - 1 - i]}\n />\n ))}\n </linearGradient>\n </defs>\n <rect\n x={0}\n y={0}\n width={BAR_WIDTH}\n height={height}\n fill={`url(#${gradientId})`}\n rx={2}\n />\n {tickValues.map((value, i) => {\n const y = yScale(value);\n return (\n <g key={i}>\n <line\n x1={BAR_WIDTH}\n x2={BAR_WIDTH + TICK_WIDTH}\n y1={y}\n y2={y}\n stroke=\"#4d4f52\"\n strokeWidth={1}\n />\n <text\n x={BAR_WIDTH + TICK_WIDTH + LABEL_GAP}\n y={y}\n dominantBaseline=\"middle\"\n fontSize={FONT_SIZE}\n fontFamily={FONT_FAMILY}\n fill=\"#4d4f52\"\n >\n {formatTick(value)}\n </text>\n </g>\n );\n })}\n </Group>\n );\n};\n\nexport default HeatmapLegend;\nexport type { HeatmapLegendProps };\n"],"names":["BAR_WIDTH","LABEL_GAP","TICK_WIDTH","FONT_SIZE","FONT_FAMILY","NUM_TICKS","formatTick","value","String","toFixed","getTickValues","minValue","maxValue","Array","from","length","_","i","LABEL_WIDTH_SAFETY_FACTOR","RIGHT_PADDING","getHeatmapLegendWidth","maxLabelWidth","Math","max","map","measureTextWidth","HeatmapLegend","t0","$","_c","colors","height","t1","tickValues","yScale","scaleLinear","domain","range","t2","jsx","t3","gradientId","t4","Group","i_0","y"],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { jsx as N, jsxs as oe } from "react/jsx-runtime";
|
|
2
2
|
import { useState as G, useMemo as f, useRef as U, useCallback as R } from "react";
|
|
3
|
-
import { ZoomFrame as ce } from "./visualization.
|
|
4
|
-
import { RenderTree as re } from "./visualization.
|
|
5
|
-
import ie from "./visualization.
|
|
6
|
-
import le from "./visualization.
|
|
7
|
-
import de from "./visualization.
|
|
8
|
-
import ue from "./visualization.
|
|
9
|
-
import he from "./visualization.
|
|
10
|
-
import S from "./visualization.
|
|
11
|
-
import pe from "./visualization.
|
|
12
|
-
import me from "./visualization.
|
|
13
|
-
import { pathRadialStep as J } from "./visualization.
|
|
3
|
+
import { ZoomFrame as ce } from "./visualization.es30.js";
|
|
4
|
+
import { RenderTree as re } from "./visualization.es31.js";
|
|
5
|
+
import ie from "./visualization.es20.js";
|
|
6
|
+
import le from "./visualization.es21.js";
|
|
7
|
+
import de from "./visualization.es32.js";
|
|
8
|
+
import ue from "./visualization.es33.js";
|
|
9
|
+
import he from "./visualization.es34.js";
|
|
10
|
+
import S from "./visualization.es35.js";
|
|
11
|
+
import pe from "./visualization.es36.js";
|
|
12
|
+
import me from "./visualization.es37.js";
|
|
13
|
+
import { pathRadialStep as J } from "./visualization.es38.js";
|
|
14
14
|
const we = {
|
|
15
15
|
duration: 0.3,
|
|
16
16
|
ease: "easeInOut"
|
|
@@ -1,31 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}, h = m, d = (r) => {
|
|
17
|
-
const t = n(6), {
|
|
18
|
-
width: s,
|
|
19
|
-
height: a,
|
|
20
|
-
children: l
|
|
21
|
-
} = r;
|
|
22
|
-
let e;
|
|
23
|
-
t[0] !== l ? (e = (c) => l(c), t[0] = l, t[1] = e) : e = t[1];
|
|
24
|
-
let o;
|
|
25
|
-
return t[2] !== a || t[3] !== e || t[4] !== s ? (o = /* @__PURE__ */ i(h, { width: s, height: a, ...M, initialTransformMatrix: f, children: e }), t[2] = a, t[3] = e, t[4] = s, t[5] = o) : o = t[5], o;
|
|
26
|
-
};
|
|
1
|
+
import o from "./visualization.es22.js";
|
|
2
|
+
const L = "#d1d5db", r = 0.5, E = "none", i = (n) => `${n.row}-${n.column}`;
|
|
3
|
+
function u(n, a) {
|
|
4
|
+
return o({
|
|
5
|
+
range: n,
|
|
6
|
+
domain: n.map((e, t) => t * a / (n.length - 1))
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
function p(n, a, e, t) {
|
|
10
|
+
const l = n == null;
|
|
11
|
+
return {
|
|
12
|
+
fill: l ? E : e ? t : a ?? t,
|
|
13
|
+
fillOpacity: l ? 0 : e ? r : 1
|
|
14
|
+
};
|
|
15
|
+
}
|
|
27
16
|
export {
|
|
28
|
-
|
|
29
|
-
|
|
17
|
+
L as DEFAULT_DESELECTED_COLOR,
|
|
18
|
+
r as DESELECTED_OPACITY,
|
|
19
|
+
E as NULL_VALUE_COLOR,
|
|
20
|
+
i as cellKey,
|
|
21
|
+
u as getHeatmapColorScale,
|
|
22
|
+
p as resolveCellAppearance
|
|
30
23
|
};
|
|
31
24
|
//# sourceMappingURL=visualization.es70.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualization.es70.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"visualization.es70.js","sources":["../src/components/Heatmap/heatmapCellAppearance.ts"],"sourcesContent":["import { scaleLinear } from \"@visx/scale\";\nimport type { HeatmapCellId } from \"./types\";\n\nexport const DEFAULT_DESELECTED_COLOR = \"#d1d5db\";\nexport const DESELECTED_OPACITY = 0.5;\nexport const NULL_VALUE_COLOR = \"none\";\n\nexport const cellKey = (cell: HeatmapCellId) => `${cell.row}-${cell.column}`;\n\nexport function getHeatmapColorScale(colors: [string, string, ...string[]], maxValue: number) {\n return scaleLinear<string>({\n range: colors,\n domain: colors.map((_, i) => (i * maxValue) / (colors.length - 1)),\n });\n}\n\n/**\n * Shared by the SVG cell renderer (HeatmapCells.tsx, used for non-scrollable mode and export)\n * and the canvas cell renderer (HeatmapCanvasCells.ts, used on-screen in scrollable mode) so the\n * two can never drift apart on what a cell actually looks like.\n */\nexport function resolveCellAppearance(\n count: number | null | undefined,\n color: string | undefined,\n isDeselected: boolean,\n deselectedColor: string\n): { fill: string; fillOpacity: number } {\n const isNullValue = count == null;\n return {\n fill: isNullValue ? NULL_VALUE_COLOR : isDeselected ? deselectedColor : color ?? deselectedColor,\n fillOpacity: isNullValue ? 0 : isDeselected ? DESELECTED_OPACITY : 1,\n };\n}\n"],"names":["DEFAULT_DESELECTED_COLOR","DESELECTED_OPACITY","NULL_VALUE_COLOR","cellKey","cell","row","column","getHeatmapColorScale","colors","maxValue","scaleLinear","range","domain","map","_","i","length","resolveCellAppearance","count","color","isDeselected","deselectedColor","isNullValue","fill","fillOpacity"],"mappings":";AAGO,MAAMA,IAA2B,WAC3BC,IAAqB,KACrBC,IAAmB,QAEnBC,IAAUA,CAACC,MAAwB,GAAGA,EAAKC,GAAG,IAAID,EAAKE,MAAM;AAEnE,SAASC,EAAqBC,GAAuCC,GAAkB;AAC5F,SAAOC,EAAoB;AAAA,IACzBC,OAAOH;AAAAA,IACPI,QAAQJ,EAAOK,IAAI,CAACC,GAAGC,MAAOA,IAAIN,KAAaD,EAAOQ,SAAS,EAAE;AAAA,EAAA,CAClE;AACH;AAOO,SAASC,EACdC,GACAC,GACAC,GACAC,GACuC;AACvC,QAAMC,IAAcJ,KAAS;AAC7B,SAAO;AAAA,IACLK,MAAMD,IAAcpB,IAAmBkB,IAAeC,IAAkBF,KAASE;AAAAA,IACjFG,aAAaF,IAAc,IAAIF,IAAenB,IAAqB;AAAA,EAAA;AAEvE;"}
|
|
@@ -1,26 +1,119 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import { cellKey as x, resolveCellAppearance as S } from "./visualization.es70.js";
|
|
2
|
+
const m = (t, o, n) => Math.min(Math.max(t, o), n);
|
|
3
|
+
function y(t, o, n) {
|
|
4
|
+
const {
|
|
5
|
+
xScale: a,
|
|
6
|
+
cellYScale: u,
|
|
7
|
+
gap: e,
|
|
8
|
+
isRect: l,
|
|
9
|
+
binWidth: c,
|
|
10
|
+
binHeight: i
|
|
11
|
+
} = t;
|
|
12
|
+
if (l)
|
|
13
|
+
return {
|
|
14
|
+
isRect: !0,
|
|
15
|
+
x: a(o),
|
|
16
|
+
y: u(n) + e,
|
|
17
|
+
width: c - e,
|
|
18
|
+
height: i - e
|
|
19
|
+
};
|
|
20
|
+
const r = Math.min(c, i) / 2;
|
|
21
|
+
return {
|
|
22
|
+
isRect: !1,
|
|
23
|
+
cx: o * c + c / 2,
|
|
24
|
+
cy: u(n) + e + r,
|
|
25
|
+
r: r - e,
|
|
26
|
+
radius: r
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function R(t, o, n, a, u, e) {
|
|
30
|
+
const {
|
|
31
|
+
data: l,
|
|
32
|
+
numRows: c,
|
|
33
|
+
binWidth: i,
|
|
34
|
+
binHeight: r,
|
|
35
|
+
yMax: h
|
|
36
|
+
} = t;
|
|
37
|
+
return {
|
|
38
|
+
colStart: m(Math.floor(o / i) - e, 0, Math.max(0, l.length - 1)),
|
|
39
|
+
colEnd: m(Math.ceil((o + a) / i) + e, 0, Math.max(0, l.length - 1)),
|
|
40
|
+
rowStart: m(Math.floor((h - (n + u)) / r) - e, 0, Math.max(0, c - 1)),
|
|
41
|
+
rowEnd: m(Math.floor((h - n) / r) + e, 0, Math.max(0, c - 1))
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function D(t, o, n, a) {
|
|
45
|
+
const {
|
|
46
|
+
data: u,
|
|
47
|
+
colorScale: e,
|
|
48
|
+
selectedKeys: l,
|
|
49
|
+
deselectedColor: c
|
|
50
|
+
} = o;
|
|
51
|
+
for (let i = n.colStart; i <= n.colEnd; i++) {
|
|
52
|
+
const r = u[i];
|
|
53
|
+
if (r)
|
|
54
|
+
for (let h = n.rowStart; h <= n.rowEnd; h++) {
|
|
55
|
+
const f = r.rows[h];
|
|
56
|
+
if (!f) continue;
|
|
57
|
+
const d = f.count, M = d == null ? void 0 : e(d), b = !!l && !l.has(x({
|
|
58
|
+
row: h,
|
|
59
|
+
column: i
|
|
60
|
+
})), {
|
|
61
|
+
fill: w,
|
|
62
|
+
fillOpacity: g
|
|
63
|
+
} = S(d, M, b, c);
|
|
64
|
+
if (g <= 0) continue;
|
|
65
|
+
const s = y(o, i, h);
|
|
66
|
+
t.globalAlpha = g, t.fillStyle = w, t.beginPath(), s.isRect ? t.rect(s.x, s.y, Math.max(s.width, 0), Math.max(s.height, 0)) : t.arc(s.cx, s.cy, Math.max(s.r, 0), 0, Math.PI * 2), t.fill(), a && a.row === h && a.column === i && (t.globalAlpha = 1, t.lineWidth = 2, t.strokeStyle = w, t.stroke());
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
t.globalAlpha = 1;
|
|
70
|
+
}
|
|
71
|
+
function A(t, o, n) {
|
|
72
|
+
const {
|
|
73
|
+
data: a,
|
|
74
|
+
numRows: u,
|
|
75
|
+
binWidth: e,
|
|
76
|
+
binHeight: l,
|
|
77
|
+
yMax: c
|
|
78
|
+
} = t;
|
|
79
|
+
if (o < 0 || n < 0) return null;
|
|
80
|
+
const i = Math.floor(o / e), r = Math.floor((c - n) / l);
|
|
81
|
+
return i < 0 || i >= a.length || r < 0 || r >= u || !a[i]?.rows[r] ? null : {
|
|
82
|
+
row: r,
|
|
83
|
+
column: i
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function E(t, o) {
|
|
87
|
+
const n = t.data[o.column], a = n?.rows[o.row];
|
|
88
|
+
if (!n || !a) return null;
|
|
89
|
+
const u = a.count, e = u == null ? void 0 : t.colorScale(u), l = y(t, o.column, o.row), c = {
|
|
90
|
+
bin: a,
|
|
91
|
+
row: o.row,
|
|
92
|
+
column: o.column,
|
|
93
|
+
datum: n,
|
|
94
|
+
gap: t.gap,
|
|
95
|
+
count: u,
|
|
96
|
+
color: e,
|
|
97
|
+
opacity: u == null ? void 0 : 1
|
|
98
|
+
};
|
|
99
|
+
return l.isRect ? {
|
|
100
|
+
...c,
|
|
101
|
+
x: l.x,
|
|
102
|
+
y: l.y,
|
|
103
|
+
width: l.width,
|
|
104
|
+
height: l.height
|
|
105
|
+
} : {
|
|
106
|
+
...c,
|
|
107
|
+
cx: l.cx,
|
|
108
|
+
cy: l.cy,
|
|
109
|
+
r: l.r,
|
|
110
|
+
radius: l.radius
|
|
111
|
+
};
|
|
22
112
|
}
|
|
23
113
|
export {
|
|
24
|
-
|
|
114
|
+
E as buildBin,
|
|
115
|
+
D as drawHeatmapCells,
|
|
116
|
+
R as getVisibleRange,
|
|
117
|
+
A as hitTestCell
|
|
25
118
|
};
|
|
26
119
|
//# sourceMappingURL=visualization.es71.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualization.es71.js","sources":["../src/components/ScatterPlot/tooltip.tsx"],"sourcesContent":["import { TooltipProps } from \"./types\";\n\nconst ScatterTooltip = <T,>({\n tooltipBody,\n tooltipData\n}: TooltipProps<T>) => {\n return (\n <div>\n {tooltipBody ? tooltipBody(tooltipData) : (\n <div>\n {tooltipData.metaData && Object.entries(tooltipData.metaData).map(([key, value]) => (\n <div key={key}>\n <strong>{key.charAt(0).toUpperCase() + key.slice(1)}: </strong>\n {typeof value === 'string'\n ? (value.length > 45\n ? `${value.replace(/_/g, \" \").slice(0, 45)}...`\n : value.replace(/_/g, \" \"))\n : String(value)}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport default ScatterTooltip;"],"names":["ScatterTooltip","t0","$","_c","tooltipBody","tooltipData","t1","metaData","Object","entries","map","_temp","t2","key","value","jsxs","charAt","toUpperCase","slice","length","replace","String"],"mappings":";;AAEA,MAAMA,IAAiBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAK;AAAA,IAAAC,aAAAA;AAAAA,IAAAC,aAAAA;AAAAA,EAAAA,IAAAJ;AAGV,MAAAK;AAAA,EAAAJ,EAAA,CAAA,MAAAE,KAAAF,SAAAG,KAGLC,IAAAF,IAAcA,EAAYC,CAa3B,sBAZI,OAAA,EACKA,UAAAA,EAAWE,YAAaC,OAAMC,QAASJ,EAAWE,QAAS,EAACG,IAAKC,CASjE,GACL,GACHT,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAU;AAAA,SAAAV,SAAAI,KAdLM,+BACKN,UAAAA,EAAAA,CAcL,GAAMJ,OAAAI,GAAAJ,OAAAU,KAAAA,IAAAV,EAAA,CAAA,GAfNU;AAeM;AApBS,SAAAD,EAAAV,GAAA;AAQgE,QAAA,CAAAY,GAAAC,CAAA,IAAAb;AAAY,2BAC3E,OAAA,EACI,UAAA;AAAA,IAAA,gBAAAc,EAAA,UAAA,EAASF,UAAAA;AAAAA,MAAAA,EAAGG,OAAQ,CAAC,EAACC,gBAAiBJ,EAAGK,MAAO,CAAC;AAAA,MAAE;AAAA,IAAA,GAAE;AAAA,IACrD,OAAOJ,KAAU,WACXA,EAAKK,SAAU,KAAf,GACML,EAAKM,QAAS,MAAM,GAAG,EAACF,MAAO,GAAG,EAAE,CAAC,QACxCJ,EAAKM,QAAS,MAAM,GAAG,IAC3BC,OAAOP,CAAK;AAAA,EAAA,EAAA,IACtB;AAAM;"}
|
|
1
|
+
{"version":3,"file":"visualization.es71.js","sources":["../src/components/Heatmap/HeatmapCanvasCells.ts"],"sourcesContent":["import type { ColumnDatum, HeatmapCellId } from \"./types\";\nimport type { AnyBin } from \"./HeatmapCells\";\nimport { cellKey, resolveCellAppearance } from \"./heatmapCellAppearance\";\n\n/**\n * Everything the canvas draw loop and hit-testing need to place a cell exactly where the SVG\n * path (HeatmapCells.tsx, via @visx/heatmap's HeatmapRect/HeatmapCircle) would. xScale/cellYScale\n * are the same functions Heatmap.tsx already builds and passes to HeatmapCells.\n */\nexport interface CanvasCellParams {\n data: ColumnDatum[];\n numRows: number;\n xScale: (column: number) => number;\n cellYScale: (row: number) => number;\n colorScale: (count: number) => string | undefined;\n gap: number;\n isRect: boolean;\n binWidth: number;\n binHeight: number;\n yMax: number;\n selectedKeys: Set<string> | null;\n deselectedColor: string;\n}\n\nexport interface CanvasDrawRange {\n colStart: number;\n colEnd: number;\n rowStart: number;\n rowEnd: number;\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\n// Mirrors @visx/heatmap's HeatmapRect/HeatmapCircle bin geometry exactly (see their source:\n// node_modules/@visx/heatmap/lib/heatmaps/{HeatmapRect,HeatmapCircle}.js) so canvas-drawn cells\n// land on the same pixels the SVG path (export, non-scrollable mode) would draw them at. The\n// circle center's x mirrors HeatmapCell.tsx's own recomputation (col*binWidth + binWidth/2)\n// rather than @visx/heatmap's raw cx, for the same reason that file does it: keeps circles\n// centered in their cell regardless of the configured radius.\ntype CellGeometry =\n | { isRect: true; x: number; y: number; width: number; height: number }\n | { isRect: false; cx: number; cy: number; r: number; radius: number };\n\nfunction getCellGeometry(params: CanvasCellParams, col: number, row: number): CellGeometry {\n const { xScale, cellYScale, gap, isRect, binWidth, binHeight } = params;\n if (isRect) {\n return { isRect: true, x: xScale(col), y: cellYScale(row) + gap, width: binWidth - gap, height: binHeight - gap };\n }\n const radius = Math.min(binWidth, binHeight) / 2;\n return { isRect: false, cx: col * binWidth + binWidth / 2, cy: cellYScale(row) + gap + radius, r: radius - gap, radius };\n}\n\n/**\n * Column/row index bounds (inclusive) that intersect the given scroll viewport, plus a small\n * overscan so a cell is already drawn just before it scrolls into view rather than popping in a\n * frame late. Row bounds are derived from cellYScale's own convention (row 0 at the bottom of\n * the grid, row numRows-1 at the top): a cell at row r occupies content-y band\n * [yMax-(r+1)*binHeight, yMax-r*binHeight), so the row under a given y is\n * floor((yMax-y)/binHeight).\n */\nexport function getVisibleRange(\n params: CanvasCellParams,\n scrollLeft: number,\n scrollTop: number,\n viewportWidth: number,\n viewportHeight: number,\n overscan: number\n): CanvasDrawRange {\n const { data, numRows, binWidth, binHeight, yMax } = params;\n return {\n colStart: clamp(Math.floor(scrollLeft / binWidth) - overscan, 0, Math.max(0, data.length - 1)),\n colEnd: clamp(Math.ceil((scrollLeft + viewportWidth) / binWidth) + overscan, 0, Math.max(0, data.length - 1)),\n rowStart: clamp(Math.floor((yMax - (scrollTop + viewportHeight)) / binHeight) - overscan, 0, Math.max(0, numRows - 1)),\n rowEnd: clamp(Math.floor((yMax - scrollTop) / binHeight) + overscan, 0, Math.max(0, numRows - 1)),\n };\n}\n\n/** Paints the cells in `range` onto `ctx`, whose origin is already at content-space (0,0). */\nexport function drawHeatmapCells(\n ctx: CanvasRenderingContext2D,\n params: CanvasCellParams,\n range: CanvasDrawRange,\n hoveredCell: HeatmapCellId | null\n) {\n const { data, colorScale, selectedKeys, deselectedColor } = params;\n for (let col = range.colStart; col <= range.colEnd; col++) {\n const columnDatum = data[col];\n if (!columnDatum) continue;\n for (let row = range.rowStart; row <= range.rowEnd; row++) {\n const rowDatum = columnDatum.rows[row];\n if (!rowDatum) continue;\n const count = rowDatum.count;\n const color = count == null ? undefined : colorScale(count);\n const isDeselected = !!selectedKeys && !selectedKeys.has(cellKey({ row, column: col }));\n const { fill, fillOpacity } = resolveCellAppearance(count, color, isDeselected, deselectedColor);\n if (fillOpacity <= 0) continue;\n\n const geometry = getCellGeometry(params, col, row);\n ctx.globalAlpha = fillOpacity;\n ctx.fillStyle = fill;\n ctx.beginPath();\n if (geometry.isRect) {\n ctx.rect(geometry.x, geometry.y, Math.max(geometry.width, 0), Math.max(geometry.height, 0));\n } else {\n ctx.arc(geometry.cx, geometry.cy, Math.max(geometry.r, 0), 0, Math.PI * 2);\n }\n ctx.fill();\n\n if (hoveredCell && hoveredCell.row === row && hoveredCell.column === col) {\n ctx.globalAlpha = 1;\n ctx.lineWidth = 2;\n ctx.strokeStyle = fill;\n ctx.stroke();\n }\n }\n }\n ctx.globalAlpha = 1;\n}\n\n/** Content-space (post-scroll-offset) coordinates -> the cell under them, or null if none. */\nexport function hitTestCell(params: CanvasCellParams, contentX: number, contentY: number): HeatmapCellId | null {\n const { data, numRows, binWidth, binHeight, yMax } = params;\n if (contentX < 0 || contentY < 0) return null;\n const column = Math.floor(contentX / binWidth);\n const row = Math.floor((yMax - contentY) / binHeight);\n if (column < 0 || column >= data.length || row < 0 || row >= numRows) return null;\n if (!data[column]?.rows[row]) return null;\n return { row, column };\n}\n\n/** Builds the same bin shape @visx/heatmap's RectCell/CircleCell provide, for onClick/tooltipBody. */\nexport function buildBin(params: CanvasCellParams, cell: HeatmapCellId): AnyBin | null {\n const columnDatum = params.data[cell.column];\n const rowDatum = columnDatum?.rows[cell.row];\n if (!columnDatum || !rowDatum) return null;\n\n const count = rowDatum.count;\n const color = count == null ? undefined : params.colorScale(count);\n const geometry = getCellGeometry(params, cell.column, cell.row);\n const shared = { bin: rowDatum, row: cell.row, column: cell.column, datum: columnDatum, gap: params.gap, count, color, opacity: count == null ? undefined : 1 };\n\n return geometry.isRect\n ? ({ ...shared, x: geometry.x, y: geometry.y, width: geometry.width, height: geometry.height } as AnyBin)\n : ({ ...shared, cx: geometry.cx, cy: geometry.cy, r: geometry.r, radius: geometry.radius } as AnyBin);\n}\n"],"names":["clamp","value","min","max","Math","getCellGeometry","params","col","row","xScale","cellYScale","gap","isRect","binWidth","binHeight","x","y","width","height","radius","cx","cy","r","getVisibleRange","scrollLeft","scrollTop","viewportWidth","viewportHeight","overscan","data","numRows","yMax","colStart","floor","length","colEnd","ceil","rowStart","rowEnd","drawHeatmapCells","ctx","range","hoveredCell","colorScale","selectedKeys","deselectedColor","columnDatum","rowDatum","rows","count","color","undefined","isDeselected","has","cellKey","column","fill","fillOpacity","resolveCellAppearance","geometry","globalAlpha","fillStyle","beginPath","rect","arc","PI","lineWidth","strokeStyle","stroke","hitTestCell","contentX","contentY","buildBin","cell","shared","bin","datum","opacity"],"mappings":";AA+BA,MAAMA,IAAQA,CAACC,GAAeC,GAAaC,MAAgBC,KAAKF,IAAIE,KAAKD,IAAIF,GAAOC,CAAG,GAAGC,CAAG;AAY7F,SAASE,EAAgBC,GAA0BC,GAAaC,GAA2B;AACzF,QAAM;AAAA,IAAEC,QAAAA;AAAAA,IAAQC,YAAAA;AAAAA,IAAYC,KAAAA;AAAAA,IAAKC,QAAAA;AAAAA,IAAQC,UAAAA;AAAAA,IAAUC,WAAAA;AAAAA,EAAAA,IAAcR;AACjE,MAAIM;AACF,WAAO;AAAA,MAAEA,QAAQ;AAAA,MAAMG,GAAGN,EAAOF,CAAG;AAAA,MAAGS,GAAGN,EAAWF,CAAG,IAAIG;AAAAA,MAAKM,OAAOJ,IAAWF;AAAAA,MAAKO,QAAQJ,IAAYH;AAAAA,IAAAA;AAE9G,QAAMQ,IAASf,KAAKF,IAAIW,GAAUC,CAAS,IAAI;AAC/C,SAAO;AAAA,IAAEF,QAAQ;AAAA,IAAOQ,IAAIb,IAAMM,IAAWA,IAAW;AAAA,IAAGQ,IAAIX,EAAWF,CAAG,IAAIG,IAAMQ;AAAAA,IAAQG,GAAGH,IAASR;AAAAA,IAAKQ,QAAAA;AAAAA,EAAAA;AAClH;AAUO,SAASI,EACdjB,GACAkB,GACAC,GACAC,GACAC,GACAC,GACiB;AACjB,QAAM;AAAA,IAAEC,MAAAA;AAAAA,IAAMC,SAAAA;AAAAA,IAASjB,UAAAA;AAAAA,IAAUC,WAAAA;AAAAA,IAAWiB,MAAAA;AAAAA,EAAAA,IAASzB;AACrD,SAAO;AAAA,IACL0B,UAAUhC,EAAMI,KAAK6B,MAAMT,IAAaX,CAAQ,IAAIe,GAAU,GAAGxB,KAAKD,IAAI,GAAG0B,EAAKK,SAAS,CAAC,CAAC;AAAA,IAC7FC,QAAQnC,EAAMI,KAAKgC,MAAMZ,IAAaE,KAAiBb,CAAQ,IAAIe,GAAU,GAAGxB,KAAKD,IAAI,GAAG0B,EAAKK,SAAS,CAAC,CAAC;AAAA,IAC5GG,UAAUrC,EAAMI,KAAK6B,OAAOF,KAAQN,IAAYE,MAAmBb,CAAS,IAAIc,GAAU,GAAGxB,KAAKD,IAAI,GAAG2B,IAAU,CAAC,CAAC;AAAA,IACrHQ,QAAQtC,EAAMI,KAAK6B,OAAOF,IAAON,KAAaX,CAAS,IAAIc,GAAU,GAAGxB,KAAKD,IAAI,GAAG2B,IAAU,CAAC,CAAC;AAAA,EAAA;AAEpG;AAGO,SAASS,EACdC,GACAlC,GACAmC,GACAC,GACA;AACA,QAAM;AAAA,IAAEb,MAAAA;AAAAA,IAAMc,YAAAA;AAAAA,IAAYC,cAAAA;AAAAA,IAAcC,iBAAAA;AAAAA,EAAAA,IAAoBvC;AAC5D,WAASC,IAAMkC,EAAMT,UAAUzB,KAAOkC,EAAMN,QAAQ5B,KAAO;AACzD,UAAMuC,IAAcjB,EAAKtB,CAAG;AAC5B,QAAKuC;AACL,eAAStC,IAAMiC,EAAMJ,UAAU7B,KAAOiC,EAAMH,QAAQ9B,KAAO;AACzD,cAAMuC,IAAWD,EAAYE,KAAKxC,CAAG;AACrC,YAAI,CAACuC,EAAU;AACf,cAAME,IAAQF,EAASE,OACjBC,IAAQD,KAAS,OAAOE,SAAYR,EAAWM,CAAK,GACpDG,IAAe,CAAC,CAACR,KAAgB,CAACA,EAAaS,IAAIC,EAAQ;AAAA,UAAE9C,KAAAA;AAAAA,UAAK+C,QAAQhD;AAAAA,QAAAA,CAAK,CAAC,GAChF;AAAA,UAAEiD,MAAAA;AAAAA,UAAMC,aAAAA;AAAAA,QAAAA,IAAgBC,EAAsBT,GAAOC,GAAOE,GAAcP,CAAe;AAC/F,YAAIY,KAAe,EAAG;AAEtB,cAAME,IAAWtD,EAAgBC,GAAQC,GAAKC,CAAG;AACjDgC,QAAAA,EAAIoB,cAAcH,GAClBjB,EAAIqB,YAAYL,GAChBhB,EAAIsB,UAAAA,GACAH,EAAS/C,SACX4B,EAAIuB,KAAKJ,EAAS5C,GAAG4C,EAAS3C,GAAGZ,KAAKD,IAAIwD,EAAS1C,OAAO,CAAC,GAAGb,KAAKD,IAAIwD,EAASzC,QAAQ,CAAC,CAAC,IAE1FsB,EAAIwB,IAAIL,EAASvC,IAAIuC,EAAStC,IAAIjB,KAAKD,IAAIwD,EAASrC,GAAG,CAAC,GAAG,GAAGlB,KAAK6D,KAAK,CAAC,GAE3EzB,EAAIgB,KAAAA,GAEAd,KAAeA,EAAYlC,QAAQA,KAAOkC,EAAYa,WAAWhD,MACnEiC,EAAIoB,cAAc,GAClBpB,EAAI0B,YAAY,GAChB1B,EAAI2B,cAAcX,GAClBhB,EAAI4B,OAAAA;AAAAA,MAER;AAAA,EACF;AACA5B,EAAAA,EAAIoB,cAAc;AACpB;AAGO,SAASS,EAAY/D,GAA0BgE,GAAkBC,GAAwC;AAC9G,QAAM;AAAA,IAAE1C,MAAAA;AAAAA,IAAMC,SAAAA;AAAAA,IAASjB,UAAAA;AAAAA,IAAUC,WAAAA;AAAAA,IAAWiB,MAAAA;AAAAA,EAAAA,IAASzB;AACrD,MAAIgE,IAAW,KAAKC,IAAW,EAAG,QAAO;AACzC,QAAMhB,IAASnD,KAAK6B,MAAMqC,IAAWzD,CAAQ,GACvCL,IAAMJ,KAAK6B,OAAOF,IAAOwC,KAAYzD,CAAS;AAEpD,SADIyC,IAAS,KAAKA,KAAU1B,EAAKK,UAAU1B,IAAM,KAAKA,KAAOsB,KACzD,CAACD,EAAK0B,CAAM,GAAGP,KAAKxC,CAAG,IAAU,OAC9B;AAAA,IAAEA,KAAAA;AAAAA,IAAK+C,QAAAA;AAAAA,EAAAA;AAChB;AAGO,SAASiB,EAASlE,GAA0BmE,GAAoC;AACrF,QAAM3B,IAAcxC,EAAOuB,KAAK4C,EAAKlB,MAAM,GACrCR,IAAWD,GAAaE,KAAKyB,EAAKjE,GAAG;AAC3C,MAAI,CAACsC,KAAe,CAACC,EAAU,QAAO;AAEtC,QAAME,IAAQF,EAASE,OACjBC,IAAQD,KAAS,OAAOE,SAAY7C,EAAOqC,WAAWM,CAAK,GAC3DU,IAAWtD,EAAgBC,GAAQmE,EAAKlB,QAAQkB,EAAKjE,GAAG,GACxDkE,IAAS;AAAA,IAAEC,KAAK5B;AAAAA,IAAUvC,KAAKiE,EAAKjE;AAAAA,IAAK+C,QAAQkB,EAAKlB;AAAAA,IAAQqB,OAAO9B;AAAAA,IAAanC,KAAKL,EAAOK;AAAAA,IAAKsC,OAAAA;AAAAA,IAAOC,OAAAA;AAAAA,IAAO2B,SAAS5B,KAAS,OAAOE,SAAY;AAAA,EAAA;AAE5J,SAAOQ,EAAS/C,SACX;AAAA,IAAE,GAAG8D;AAAAA,IAAQ3D,GAAG4C,EAAS5C;AAAAA,IAAGC,GAAG2C,EAAS3C;AAAAA,IAAGC,OAAO0C,EAAS1C;AAAAA,IAAOC,QAAQyC,EAASzC;AAAAA,EAAAA,IACnF;AAAA,IAAE,GAAGwD;AAAAA,IAAQtD,IAAIuC,EAASvC;AAAAA,IAAIC,IAAIsC,EAAStC;AAAAA,IAAIC,GAAGqC,EAASrC;AAAAA,IAAGH,QAAQwC,EAASxC;AAAAA,EAAAA;AACtF;"}
|