@weng-lab/visualization 2.4.0-beta.4 → 2.4.0-beta.6

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.
Files changed (1116) hide show
  1. package/dist/src/components/ScatterPlot/ScatterPlotViewport.d.ts +3 -2
  2. package/dist/src/components/ScatterPlot/ScatterPlotViewport.d.ts.map +1 -1
  3. package/dist/src/components/ScatterPlot/hooks/useCrosshair.d.ts +7 -0
  4. package/dist/src/components/ScatterPlot/hooks/useCrosshair.d.ts.map +1 -1
  5. package/dist/src/components/ScatterPlot/minimap.d.ts.map +1 -1
  6. package/dist/src/components/ScatterPlot/scatterplot.d.ts.map +1 -1
  7. package/dist/src/components/ScatterPlot/types.d.ts +12 -0
  8. package/dist/src/components/ScatterPlot/types.d.ts.map +1 -1
  9. package/dist/visualization.es10.js +11 -11
  10. package/dist/visualization.es100.js +26 -15
  11. package/dist/visualization.es100.js.map +1 -1
  12. package/dist/visualization.es101.js +68 -11
  13. package/dist/visualization.es101.js.map +1 -1
  14. package/dist/visualization.es102.js +30 -72
  15. package/dist/visualization.es102.js.map +1 -1
  16. package/dist/visualization.es103.js +42 -30
  17. package/dist/visualization.es103.js.map +1 -1
  18. package/dist/visualization.es104.js +76 -13
  19. package/dist/visualization.es104.js.map +1 -1
  20. package/dist/visualization.es105.js +25 -64
  21. package/dist/visualization.es105.js.map +1 -1
  22. package/dist/visualization.es106.js +84 -60
  23. package/dist/visualization.es106.js.map +1 -1
  24. package/dist/visualization.es107.js +36 -32
  25. package/dist/visualization.es107.js.map +1 -1
  26. package/dist/visualization.es108.js +63 -44
  27. package/dist/visualization.es108.js.map +1 -1
  28. package/dist/visualization.es109.js +61 -76
  29. package/dist/visualization.es109.js.map +1 -1
  30. package/dist/visualization.es11.js +10 -10
  31. package/dist/visualization.es110.js +222 -25
  32. package/dist/visualization.es110.js.map +1 -1
  33. package/dist/visualization.es111.js +2 -85
  34. package/dist/visualization.es111.js.map +1 -1
  35. package/dist/visualization.es112.js +556 -35
  36. package/dist/visualization.es112.js.map +1 -1
  37. package/dist/visualization.es113.js +214 -26
  38. package/dist/visualization.es113.js.map +1 -1
  39. package/dist/visualization.es114.js +2 -70
  40. package/dist/visualization.es114.js.map +1 -1
  41. package/dist/visualization.es115.js +4792 -214
  42. package/dist/visualization.es115.js.map +1 -1
  43. package/dist/visualization.es116.js +25 -2
  44. package/dist/visualization.es116.js.map +1 -1
  45. package/dist/visualization.es117.js +43 -555
  46. package/dist/visualization.es117.js.map +1 -1
  47. package/dist/visualization.es118.js +144 -214
  48. package/dist/visualization.es118.js.map +1 -1
  49. package/dist/visualization.es119.js +147 -2
  50. package/dist/visualization.es119.js.map +1 -1
  51. package/dist/visualization.es12.js +2 -2
  52. package/dist/visualization.es120.js +57 -4799
  53. package/dist/visualization.es120.js.map +1 -1
  54. package/dist/visualization.es121.js +31 -24
  55. package/dist/visualization.es121.js.map +1 -1
  56. package/dist/visualization.es122.js +18 -45
  57. package/dist/visualization.es122.js.map +1 -1
  58. package/dist/visualization.es123.js +14 -144
  59. package/dist/visualization.es123.js.map +1 -1
  60. package/dist/visualization.es124.js +26 -147
  61. package/dist/visualization.es124.js.map +1 -1
  62. package/dist/visualization.es127.js +2 -2
  63. package/dist/visualization.es129.js +18 -29
  64. package/dist/visualization.es129.js.map +1 -1
  65. package/dist/visualization.es13.js +7 -7
  66. package/dist/visualization.es130.js +26 -6
  67. package/dist/visualization.es130.js.map +1 -1
  68. package/dist/visualization.es131.js +60 -6
  69. package/dist/visualization.es131.js.map +1 -1
  70. package/dist/visualization.es132.js +38 -3
  71. package/dist/visualization.es132.js.map +1 -1
  72. package/dist/visualization.es133.js +36 -16
  73. package/dist/visualization.es133.js.map +1 -1
  74. package/dist/visualization.es134.js +83 -16
  75. package/dist/visualization.es134.js.map +1 -1
  76. package/dist/visualization.es135.js +27 -31
  77. package/dist/visualization.es135.js.map +1 -1
  78. package/dist/visualization.es136.js +6 -15
  79. package/dist/visualization.es136.js.map +1 -1
  80. package/dist/visualization.es137.js +4 -10
  81. package/dist/visualization.es137.js.map +1 -1
  82. package/dist/visualization.es138.js +3 -6
  83. package/dist/visualization.es138.js.map +1 -1
  84. package/dist/visualization.es139.js +29 -5
  85. package/dist/visualization.es139.js.map +1 -1
  86. package/dist/visualization.es140.js +7 -10
  87. package/dist/visualization.es140.js.map +1 -1
  88. package/dist/visualization.es141.js +6 -4
  89. package/dist/visualization.es141.js.map +1 -1
  90. package/dist/visualization.es142.js +3 -4
  91. package/dist/visualization.es142.js.map +1 -1
  92. package/dist/visualization.es143.js +16 -8
  93. package/dist/visualization.es143.js.map +1 -1
  94. package/dist/visualization.es144.js +16 -4
  95. package/dist/visualization.es144.js.map +1 -1
  96. package/dist/visualization.es145.js +31 -11
  97. package/dist/visualization.es145.js.map +1 -1
  98. package/dist/visualization.es146.js +15 -25
  99. package/dist/visualization.es146.js.map +1 -1
  100. package/dist/visualization.es147.js +9 -18
  101. package/dist/visualization.es147.js.map +1 -1
  102. package/dist/visualization.es148.js +6 -27
  103. package/dist/visualization.es148.js.map +1 -1
  104. package/dist/visualization.es149.js +6 -60
  105. package/dist/visualization.es149.js.map +1 -1
  106. package/dist/visualization.es15.js +8 -8
  107. package/dist/visualization.es150.js +9 -37
  108. package/dist/visualization.es150.js.map +1 -1
  109. package/dist/visualization.es151.js +4 -36
  110. package/dist/visualization.es151.js.map +1 -1
  111. package/dist/visualization.es152.js +4 -83
  112. package/dist/visualization.es152.js.map +1 -1
  113. package/dist/visualization.es153.js +8 -28
  114. package/dist/visualization.es153.js.map +1 -1
  115. package/dist/visualization.es154.js +4 -7
  116. package/dist/visualization.es154.js.map +1 -1
  117. package/dist/visualization.es155.js +12 -4
  118. package/dist/visualization.es155.js.map +1 -1
  119. package/dist/visualization.es156.js +26 -3
  120. package/dist/visualization.es156.js.map +1 -1
  121. package/dist/visualization.es157.js +71 -3
  122. package/dist/visualization.es157.js.map +1 -1
  123. package/dist/visualization.es158.js +16 -5
  124. package/dist/visualization.es158.js.map +1 -1
  125. package/dist/visualization.es159.js +11 -33
  126. package/dist/visualization.es159.js.map +1 -1
  127. package/dist/visualization.es160.js +5 -16
  128. package/dist/visualization.es160.js.map +1 -1
  129. package/dist/visualization.es161.js +2 -8
  130. package/dist/visualization.es161.js.map +1 -1
  131. package/dist/visualization.es162.js +1605 -11
  132. package/dist/visualization.es162.js.map +1 -1
  133. package/dist/visualization.es163.js +74 -9
  134. package/dist/visualization.es163.js.map +1 -1
  135. package/dist/visualization.es164.js +2 -7
  136. package/dist/visualization.es164.js.map +1 -1
  137. package/dist/visualization.es165.js +482 -7
  138. package/dist/visualization.es165.js.map +1 -1
  139. package/dist/visualization.es166.js +2 -10
  140. package/dist/visualization.es166.js.map +1 -1
  141. package/dist/visualization.es167.js +17 -5
  142. package/dist/visualization.es167.js.map +1 -1
  143. package/dist/visualization.es168.js +3 -6
  144. package/dist/visualization.es168.js.map +1 -1
  145. package/dist/visualization.es169.js +35 -5
  146. package/dist/visualization.es169.js.map +1 -1
  147. package/dist/visualization.es170.js +84 -14
  148. package/dist/visualization.es170.js.map +1 -1
  149. package/dist/visualization.es171.js +89 -5
  150. package/dist/visualization.es171.js.map +1 -1
  151. package/dist/visualization.es172.js +12 -3
  152. package/dist/visualization.es172.js.map +1 -1
  153. package/dist/visualization.es173.js +4 -5
  154. package/dist/visualization.es173.js.map +1 -1
  155. package/dist/visualization.es174.js +13 -5
  156. package/dist/visualization.es174.js.map +1 -1
  157. package/dist/visualization.es175.js +7 -10
  158. package/dist/visualization.es175.js.map +1 -1
  159. package/dist/visualization.es176.js +12 -31
  160. package/dist/visualization.es176.js.map +1 -1
  161. package/dist/visualization.es177.js +8 -115
  162. package/dist/visualization.es177.js.map +1 -1
  163. package/dist/visualization.es178.js +14 -71
  164. package/dist/visualization.es178.js.map +1 -1
  165. package/dist/visualization.es179.js +11 -23
  166. package/dist/visualization.es179.js.map +1 -1
  167. package/dist/visualization.es18.js +1 -1
  168. package/dist/visualization.es180.js +5 -22
  169. package/dist/visualization.es180.js.map +1 -1
  170. package/dist/visualization.es181.js +11 -40
  171. package/dist/visualization.es181.js.map +1 -1
  172. package/dist/visualization.es182.js +3 -7
  173. package/dist/visualization.es182.js.map +1 -1
  174. package/dist/visualization.es183.js +2 -13
  175. package/dist/visualization.es183.js.map +1 -1
  176. package/dist/visualization.es184.js +11 -18
  177. package/dist/visualization.es184.js.map +1 -1
  178. package/dist/visualization.es185.js +30 -36
  179. package/dist/visualization.es185.js.map +1 -1
  180. package/dist/visualization.es186.js +42 -24
  181. package/dist/visualization.es186.js.map +1 -1
  182. package/dist/visualization.es187.js +49 -27
  183. package/dist/visualization.es187.js.map +1 -1
  184. package/dist/visualization.es188.js +3 -85
  185. package/dist/visualization.es188.js.map +1 -1
  186. package/dist/visualization.es189.js +3 -90
  187. package/dist/visualization.es189.js.map +1 -1
  188. package/dist/visualization.es190.js +5 -12
  189. package/dist/visualization.es190.js.map +1 -1
  190. package/dist/visualization.es191.js +4 -5
  191. package/dist/visualization.es191.js.map +1 -1
  192. package/dist/visualization.es192.js +10 -14
  193. package/dist/visualization.es192.js.map +1 -1
  194. package/dist/visualization.es193.js +4 -7
  195. package/dist/visualization.es193.js.map +1 -1
  196. package/dist/visualization.es194.js +17 -13
  197. package/dist/visualization.es194.js.map +1 -1
  198. package/dist/visualization.es195.js +16 -69
  199. package/dist/visualization.es195.js.map +1 -1
  200. package/dist/visualization.es196.js +36 -16
  201. package/dist/visualization.es196.js.map +1 -1
  202. package/dist/visualization.es197.js +2 -12
  203. package/dist/visualization.es197.js.map +1 -1
  204. package/dist/visualization.es198.js +2 -5
  205. package/dist/visualization.es198.js.map +1 -1
  206. package/dist/visualization.es199.js +4 -8
  207. package/dist/visualization.es199.js.map +1 -1
  208. package/dist/visualization.es2.js +8 -8
  209. package/dist/visualization.es20.js +43 -10
  210. package/dist/visualization.es20.js.map +1 -1
  211. package/dist/visualization.es200.js +14 -15
  212. package/dist/visualization.es200.js.map +1 -1
  213. package/dist/visualization.es201.js +3 -11
  214. package/dist/visualization.es201.js.map +1 -1
  215. package/dist/visualization.es202.js +7 -6
  216. package/dist/visualization.es202.js.map +1 -1
  217. package/dist/visualization.es203.js +3 -12
  218. package/dist/visualization.es203.js.map +1 -1
  219. package/dist/visualization.es204.js +6 -3
  220. package/dist/visualization.es204.js.map +1 -1
  221. package/dist/visualization.es205.js +4 -2
  222. package/dist/visualization.es205.js.map +1 -1
  223. package/dist/visualization.es206.js +17 -10
  224. package/dist/visualization.es206.js.map +1 -1
  225. package/dist/visualization.es207.js +9 -30
  226. package/dist/visualization.es207.js.map +1 -1
  227. package/dist/visualization.es208.js +6 -42
  228. package/dist/visualization.es208.js.map +1 -1
  229. package/dist/visualization.es209.js +7 -49
  230. package/dist/visualization.es209.js.map +1 -1
  231. package/dist/visualization.es21.js +35 -54
  232. package/dist/visualization.es21.js.map +1 -1
  233. package/dist/visualization.es210.js +10 -3
  234. package/dist/visualization.es210.js.map +1 -1
  235. package/dist/visualization.es211.js +7 -3
  236. package/dist/visualization.es211.js.map +1 -1
  237. package/dist/visualization.es212.js +6 -5
  238. package/dist/visualization.es212.js.map +1 -1
  239. package/dist/visualization.es213.js +5 -4
  240. package/dist/visualization.es213.js.map +1 -1
  241. package/dist/visualization.es214.js +13 -9
  242. package/dist/visualization.es214.js.map +1 -1
  243. package/dist/visualization.es215.js +5 -3
  244. package/dist/visualization.es215.js.map +1 -1
  245. package/dist/visualization.es216.js +3 -17
  246. package/dist/visualization.es216.js.map +1 -1
  247. package/dist/visualization.es217.js +6 -18
  248. package/dist/visualization.es217.js.map +1 -1
  249. package/dist/visualization.es218.js +6 -36
  250. package/dist/visualization.es218.js.map +1 -1
  251. package/dist/visualization.es219.js +10 -2
  252. package/dist/visualization.es219.js.map +1 -1
  253. package/dist/visualization.es22.js +7 -35
  254. package/dist/visualization.es22.js.map +1 -1
  255. package/dist/visualization.es220.js +4 -2
  256. package/dist/visualization.es220.js.map +1 -1
  257. package/dist/visualization.es221.js +6 -4
  258. package/dist/visualization.es221.js.map +1 -1
  259. package/dist/visualization.es222.js +33 -14
  260. package/dist/visualization.es222.js.map +1 -1
  261. package/dist/visualization.es223.js +16 -3
  262. package/dist/visualization.es223.js.map +1 -1
  263. package/dist/visualization.es224.js +8 -7
  264. package/dist/visualization.es224.js.map +1 -1
  265. package/dist/visualization.es225.js +12 -3
  266. package/dist/visualization.es225.js.map +1 -1
  267. package/dist/visualization.es226.js +32 -6
  268. package/dist/visualization.es226.js.map +1 -1
  269. package/dist/visualization.es227.js +114 -74
  270. package/dist/visualization.es227.js.map +1 -1
  271. package/dist/visualization.es228.js +73 -2
  272. package/dist/visualization.es228.js.map +1 -1
  273. package/dist/visualization.es229.js +22 -482
  274. package/dist/visualization.es229.js.map +1 -1
  275. package/dist/visualization.es23.js +7 -43
  276. package/dist/visualization.es23.js.map +1 -1
  277. package/dist/visualization.es230.js +23 -2
  278. package/dist/visualization.es230.js.map +1 -1
  279. package/dist/visualization.es231.js +39 -122
  280. package/dist/visualization.es231.js.map +1 -1
  281. package/dist/visualization.es232.js +8 -2
  282. package/dist/visualization.es232.js.map +1 -1
  283. package/dist/visualization.es233.js +12 -1605
  284. package/dist/visualization.es233.js.map +1 -1
  285. package/dist/visualization.es234.js +14 -15
  286. package/dist/visualization.es234.js.map +1 -1
  287. package/dist/visualization.es235.js +36 -3
  288. package/dist/visualization.es235.js.map +1 -1
  289. package/dist/visualization.es236.js +24 -35
  290. package/dist/visualization.es236.js.map +1 -1
  291. package/dist/visualization.es237.js +27 -3
  292. package/dist/visualization.es237.js.map +1 -1
  293. package/dist/visualization.es238.js +123 -17
  294. package/dist/visualization.es238.js.map +1 -1
  295. package/dist/visualization.es239.js +2 -35
  296. package/dist/visualization.es239.js.map +1 -1
  297. package/dist/visualization.es24.js +69 -7
  298. package/dist/visualization.es24.js.map +1 -1
  299. package/dist/visualization.es240.js +35 -2
  300. package/dist/visualization.es240.js.map +1 -1
  301. package/dist/visualization.es241.js +2 -30
  302. package/dist/visualization.es241.js.map +1 -1
  303. package/dist/visualization.es242.js +27 -18
  304. package/dist/visualization.es242.js.map +1 -1
  305. package/dist/visualization.es243.js +20 -3
  306. package/dist/visualization.es243.js.map +1 -1
  307. package/dist/visualization.es244.js +3 -3
  308. package/dist/visualization.es244.js.map +1 -1
  309. package/dist/visualization.es245.js +3 -3
  310. package/dist/visualization.es245.js.map +1 -1
  311. package/dist/visualization.es246.js +3 -3
  312. package/dist/visualization.es246.js.map +1 -1
  313. package/dist/visualization.es247.js +3 -3
  314. package/dist/visualization.es247.js.map +1 -1
  315. package/dist/visualization.es248.js +3 -3
  316. package/dist/visualization.es248.js.map +1 -1
  317. package/dist/visualization.es249.js +3 -3
  318. package/dist/visualization.es249.js.map +1 -1
  319. package/dist/visualization.es25.js +43 -47
  320. package/dist/visualization.es25.js.map +1 -1
  321. package/dist/visualization.es250.js +2 -6
  322. package/dist/visualization.es250.js.map +1 -1
  323. package/dist/visualization.es251.js +6 -47
  324. package/dist/visualization.es251.js.map +1 -1
  325. package/dist/visualization.es252.js +48 -3
  326. package/dist/visualization.es252.js.map +1 -1
  327. package/dist/visualization.es253.js +2 -5
  328. package/dist/visualization.es253.js.map +1 -1
  329. package/dist/visualization.es254.js +6 -4
  330. package/dist/visualization.es254.js.map +1 -1
  331. package/dist/visualization.es255.js +4 -3
  332. package/dist/visualization.es255.js.map +1 -1
  333. package/dist/visualization.es256.js +3 -6
  334. package/dist/visualization.es256.js.map +1 -1
  335. package/dist/visualization.es257.js +6 -4
  336. package/dist/visualization.es257.js.map +1 -1
  337. package/dist/visualization.es258.js +5 -7
  338. package/dist/visualization.es258.js.map +1 -1
  339. package/dist/visualization.es259.js +49 -30
  340. package/dist/visualization.es259.js.map +1 -1
  341. package/dist/visualization.es26.js +11 -33
  342. package/dist/visualization.es26.js.map +1 -1
  343. package/dist/visualization.es260.js +31 -3
  344. package/dist/visualization.es260.js.map +1 -1
  345. package/dist/visualization.es261.js +33 -3
  346. package/dist/visualization.es261.js.map +1 -1
  347. package/dist/visualization.es262.js +12 -6
  348. package/dist/visualization.es262.js.map +1 -1
  349. package/dist/visualization.es263.js +9 -12
  350. package/dist/visualization.es263.js.map +1 -1
  351. package/dist/visualization.es264.js +10 -2
  352. package/dist/visualization.es264.js.map +1 -1
  353. package/dist/visualization.es265.js +6 -3
  354. package/dist/visualization.es265.js.map +1 -1
  355. package/dist/visualization.es266.js +8 -3
  356. package/dist/visualization.es266.js.map +1 -1
  357. package/dist/visualization.es267.js +6 -10
  358. package/dist/visualization.es267.js.map +1 -1
  359. package/dist/visualization.es268.js +5 -25
  360. package/dist/visualization.es268.js.map +1 -1
  361. package/dist/visualization.es269.js +14 -4
  362. package/dist/visualization.es269.js.map +1 -1
  363. package/dist/visualization.es27.js +66 -7
  364. package/dist/visualization.es27.js.map +1 -1
  365. package/dist/visualization.es270.js +5 -32
  366. package/dist/visualization.es270.js.map +1 -1
  367. package/dist/visualization.es271.js +6 -61
  368. package/dist/visualization.es271.js.map +1 -1
  369. package/dist/visualization.es272.js +6 -237
  370. package/dist/visualization.es272.js.map +1 -1
  371. package/dist/visualization.es273.js +6 -992
  372. package/dist/visualization.es273.js.map +1 -1
  373. package/dist/visualization.es274.js +3 -23
  374. package/dist/visualization.es274.js.map +1 -1
  375. package/dist/visualization.es275.js +4 -53
  376. package/dist/visualization.es275.js.map +1 -1
  377. package/dist/visualization.es276.js +9 -53
  378. package/dist/visualization.es276.js.map +1 -1
  379. package/dist/visualization.es277.js +7 -32
  380. package/dist/visualization.es277.js.map +1 -1
  381. package/dist/visualization.es278.js +31 -30
  382. package/dist/visualization.es278.js.map +1 -1
  383. package/dist/visualization.es279.js +3 -12
  384. package/dist/visualization.es279.js.map +1 -1
  385. package/dist/visualization.es28.js +113 -44
  386. package/dist/visualization.es28.js.map +1 -1
  387. package/dist/visualization.es280.js +4 -3
  388. package/dist/visualization.es280.js.map +1 -1
  389. package/dist/visualization.es281.js +6 -11
  390. package/dist/visualization.es281.js.map +1 -1
  391. package/dist/visualization.es282.js +12 -36
  392. package/dist/visualization.es282.js.map +1 -1
  393. package/dist/visualization.es283.js +2 -261
  394. package/dist/visualization.es283.js.map +1 -1
  395. package/dist/visualization.es284.js +3 -59
  396. package/dist/visualization.es284.js.map +1 -1
  397. package/dist/visualization.es285.js +3 -5
  398. package/dist/visualization.es285.js.map +1 -1
  399. package/dist/visualization.es286.js +10 -21
  400. package/dist/visualization.es286.js.map +1 -1
  401. package/dist/visualization.es287.js +24 -36
  402. package/dist/visualization.es287.js.map +1 -1
  403. package/dist/visualization.es288.js +4 -34
  404. package/dist/visualization.es288.js.map +1 -1
  405. package/dist/visualization.es289.js +32 -14
  406. package/dist/visualization.es289.js.map +1 -1
  407. package/dist/visualization.es29.js +147 -7
  408. package/dist/visualization.es29.js.map +1 -1
  409. package/dist/visualization.es290.js +24 -19
  410. package/dist/visualization.es290.js.map +1 -1
  411. package/dist/visualization.es291.js +54 -9
  412. package/dist/visualization.es291.js.map +1 -1
  413. package/dist/visualization.es292.js +3 -8
  414. package/dist/visualization.es292.js.map +1 -1
  415. package/dist/visualization.es293.js +11 -140
  416. package/dist/visualization.es293.js.map +1 -1
  417. package/dist/visualization.es294.js +36 -5
  418. package/dist/visualization.es294.js.map +1 -1
  419. package/dist/visualization.es295.js +242 -91
  420. package/dist/visualization.es295.js.map +1 -1
  421. package/dist/visualization.es296.js +58 -11
  422. package/dist/visualization.es296.js.map +1 -1
  423. package/dist/visualization.es297.js +5 -141
  424. package/dist/visualization.es297.js.map +1 -1
  425. package/dist/visualization.es298.js +21 -5
  426. package/dist/visualization.es298.js.map +1 -1
  427. package/dist/visualization.es299.js +31 -65
  428. package/dist/visualization.es299.js.map +1 -1
  429. package/dist/visualization.es3.js +12 -12
  430. package/dist/visualization.es30.js +48 -29
  431. package/dist/visualization.es30.js.map +1 -1
  432. package/dist/visualization.es300.js +31 -32
  433. package/dist/visualization.es300.js.map +1 -1
  434. package/dist/visualization.es301.js +15 -21
  435. package/dist/visualization.es301.js.map +1 -1
  436. package/dist/visualization.es302.js +19 -4
  437. package/dist/visualization.es302.js.map +1 -1
  438. package/dist/visualization.es303.js +8 -24
  439. package/dist/visualization.es303.js.map +1 -1
  440. package/dist/visualization.es304.js +7 -30
  441. package/dist/visualization.es304.js.map +1 -1
  442. package/dist/visualization.es305.js +141 -2
  443. package/dist/visualization.es305.js.map +1 -1
  444. package/dist/visualization.es306.js +6 -2
  445. package/dist/visualization.es306.js.map +1 -1
  446. package/dist/visualization.es307.js +109 -5
  447. package/dist/visualization.es307.js.map +1 -1
  448. package/dist/visualization.es308.js +12 -14
  449. package/dist/visualization.es308.js.map +1 -1
  450. package/dist/visualization.es309.js +140 -33
  451. package/dist/visualization.es309.js.map +1 -1
  452. package/dist/visualization.es31.js +20 -64
  453. package/dist/visualization.es31.js.map +1 -1
  454. package/dist/visualization.es310.js +5 -27
  455. package/dist/visualization.es310.js.map +1 -1
  456. package/dist/visualization.es311.js +71 -10
  457. package/dist/visualization.es311.js.map +1 -1
  458. package/dist/visualization.es312.js +35 -6
  459. package/dist/visualization.es312.js.map +1 -1
  460. package/dist/visualization.es313.js +20 -13
  461. package/dist/visualization.es313.js.map +1 -1
  462. package/dist/visualization.es314.js +4 -12
  463. package/dist/visualization.es314.js.map +1 -1
  464. package/dist/visualization.es315.js +25 -2
  465. package/dist/visualization.es315.js.map +1 -1
  466. package/dist/visualization.es316.js +31 -3
  467. package/dist/visualization.es316.js.map +1 -1
  468. package/dist/visualization.es317.js +2 -2
  469. package/dist/visualization.es317.js.map +1 -1
  470. package/dist/visualization.es318.js +2 -104
  471. package/dist/visualization.es318.js.map +1 -1
  472. package/dist/visualization.es319.js +5 -4
  473. package/dist/visualization.es319.js.map +1 -1
  474. package/dist/visualization.es32.js +5 -62
  475. package/dist/visualization.es32.js.map +1 -1
  476. package/dist/visualization.es320.js +15 -3
  477. package/dist/visualization.es320.js.map +1 -1
  478. package/dist/visualization.es321.js +32 -16
  479. package/dist/visualization.es321.js.map +1 -1
  480. package/dist/visualization.es322.js +27 -5
  481. package/dist/visualization.es322.js.map +1 -1
  482. package/dist/visualization.es323.js +10 -14
  483. package/dist/visualization.es323.js.map +1 -1
  484. package/dist/visualization.es324.js +6 -4
  485. package/dist/visualization.es324.js.map +1 -1
  486. package/dist/visualization.es325.js +13 -28
  487. package/dist/visualization.es325.js.map +1 -1
  488. package/dist/visualization.es326.js +12 -7
  489. package/dist/visualization.es326.js.map +1 -1
  490. package/dist/visualization.es327.js +2 -2
  491. package/dist/visualization.es327.js.map +1 -1
  492. package/dist/visualization.es328.js +3 -20
  493. package/dist/visualization.es328.js.map +1 -1
  494. package/dist/visualization.es329.js +2 -21
  495. package/dist/visualization.es329.js.map +1 -1
  496. package/dist/visualization.es33.js +33 -3
  497. package/dist/visualization.es33.js.map +1 -1
  498. package/dist/visualization.es330.js +103 -5
  499. package/dist/visualization.es330.js.map +1 -1
  500. package/dist/visualization.es331.js +4 -7
  501. package/dist/visualization.es331.js.map +1 -1
  502. package/dist/visualization.es332.js +3 -19
  503. package/dist/visualization.es332.js.map +1 -1
  504. package/dist/visualization.es333.js +18 -43
  505. package/dist/visualization.es333.js.map +1 -1
  506. package/dist/visualization.es334.js +6 -7
  507. package/dist/visualization.es334.js.map +1 -1
  508. package/dist/visualization.es335.js +14 -19
  509. package/dist/visualization.es335.js.map +1 -1
  510. package/dist/visualization.es336.js +4 -53
  511. package/dist/visualization.es336.js.map +1 -1
  512. package/dist/visualization.es337.js +27 -25
  513. package/dist/visualization.es337.js.map +1 -1
  514. package/dist/visualization.es338.js +7 -11
  515. package/dist/visualization.es338.js.map +1 -1
  516. package/dist/visualization.es339.js +2 -19
  517. package/dist/visualization.es339.js.map +1 -1
  518. package/dist/visualization.es34.js +34 -46
  519. package/dist/visualization.es34.js.map +1 -1
  520. package/dist/visualization.es340.js +20 -12
  521. package/dist/visualization.es340.js.map +1 -1
  522. package/dist/visualization.es341.js +21 -5
  523. package/dist/visualization.es341.js.map +1 -1
  524. package/dist/visualization.es342.js +6 -4
  525. package/dist/visualization.es342.js.map +1 -1
  526. package/dist/visualization.es343.js +7 -3
  527. package/dist/visualization.es343.js.map +1 -1
  528. package/dist/visualization.es344.js +18 -175
  529. package/dist/visualization.es344.js.map +1 -1
  530. package/dist/visualization.es345.js +42 -38
  531. package/dist/visualization.es345.js.map +1 -1
  532. package/dist/visualization.es346.js +7 -6
  533. package/dist/visualization.es346.js.map +1 -1
  534. package/dist/visualization.es347.js +19 -3
  535. package/dist/visualization.es347.js.map +1 -1
  536. package/dist/visualization.es348.js +54 -2
  537. package/dist/visualization.es348.js.map +1 -1
  538. package/dist/visualization.es349.js +27 -30
  539. package/dist/visualization.es349.js.map +1 -1
  540. package/dist/visualization.es35.js +54 -3
  541. package/dist/visualization.es35.js.map +1 -1
  542. package/dist/visualization.es350.js +11 -8
  543. package/dist/visualization.es350.js.map +1 -1
  544. package/dist/visualization.es351.js +18 -10
  545. package/dist/visualization.es351.js.map +1 -1
  546. package/dist/visualization.es352.js +11 -3
  547. package/dist/visualization.es352.js.map +1 -1
  548. package/dist/visualization.es353.js +4 -65
  549. package/dist/visualization.es353.js.map +1 -1
  550. package/dist/visualization.es354.js +4 -7
  551. package/dist/visualization.es354.js.map +1 -1
  552. package/dist/visualization.es355.js +3 -4
  553. package/dist/visualization.es355.js.map +1 -1
  554. package/dist/visualization.es356.js +174 -12
  555. package/dist/visualization.es356.js.map +1 -1
  556. package/dist/visualization.es357.js +39 -34
  557. package/dist/visualization.es357.js.map +1 -1
  558. package/dist/visualization.es358.js +5 -4
  559. package/dist/visualization.es358.js.map +1 -1
  560. package/dist/visualization.es359.js +3 -9
  561. package/dist/visualization.es359.js.map +1 -1
  562. package/dist/visualization.es36.js +111 -21
  563. package/dist/visualization.es36.js.map +1 -1
  564. package/dist/visualization.es360.js +2 -2
  565. package/dist/visualization.es360.js.map +1 -1
  566. package/dist/visualization.es361.js +29 -4
  567. package/dist/visualization.es361.js.map +1 -1
  568. package/dist/visualization.es362.js +8 -2
  569. package/dist/visualization.es362.js.map +1 -1
  570. package/dist/visualization.es363.js +10 -9
  571. package/dist/visualization.es363.js.map +1 -1
  572. package/dist/visualization.es364.js +4 -10
  573. package/dist/visualization.es364.js.map +1 -1
  574. package/dist/visualization.es365.js +66 -13
  575. package/dist/visualization.es365.js.map +1 -1
  576. package/dist/visualization.es366.js +7 -2
  577. package/dist/visualization.es366.js.map +1 -1
  578. package/dist/visualization.es367.js +5 -10
  579. package/dist/visualization.es367.js.map +1 -1
  580. package/dist/visualization.es368.js +13 -7
  581. package/dist/visualization.es368.js.map +1 -1
  582. package/dist/visualization.es369.js +34 -5
  583. package/dist/visualization.es369.js.map +1 -1
  584. package/dist/visualization.es37.js +7 -281
  585. package/dist/visualization.es37.js.map +1 -1
  586. package/dist/visualization.es370.js +4 -24
  587. package/dist/visualization.es370.js.map +1 -1
  588. package/dist/visualization.es371.js +10 -19
  589. package/dist/visualization.es371.js.map +1 -1
  590. package/dist/visualization.es372.js +2 -41
  591. package/dist/visualization.es372.js.map +1 -1
  592. package/dist/visualization.es373.js +5 -3
  593. package/dist/visualization.es373.js.map +1 -1
  594. package/dist/visualization.es374.js +2 -9
  595. package/dist/visualization.es374.js.map +1 -1
  596. package/dist/visualization.es375.js +9 -8
  597. package/dist/visualization.es375.js.map +1 -1
  598. package/dist/visualization.es376.js +10 -36
  599. package/dist/visualization.es376.js.map +1 -1
  600. package/dist/visualization.es377.js +13 -10
  601. package/dist/visualization.es377.js.map +1 -1
  602. package/dist/visualization.es378.js +2 -32
  603. package/dist/visualization.es378.js.map +1 -1
  604. package/dist/visualization.es379.js +10 -5
  605. package/dist/visualization.es379.js.map +1 -1
  606. package/dist/visualization.es38.js +31 -16
  607. package/dist/visualization.es38.js.map +1 -1
  608. package/dist/visualization.es380.js +8 -2
  609. package/dist/visualization.es380.js.map +1 -1
  610. package/dist/visualization.es381.js +5 -15
  611. package/dist/visualization.es381.js.map +1 -1
  612. package/dist/visualization.es382.js +23 -23
  613. package/dist/visualization.es382.js.map +1 -1
  614. package/dist/visualization.es383.js +19 -2
  615. package/dist/visualization.es383.js.map +1 -1
  616. package/dist/visualization.es384.js +39 -61
  617. package/dist/visualization.es384.js.map +1 -1
  618. package/dist/visualization.es385.js +3 -2
  619. package/dist/visualization.es385.js.map +1 -1
  620. package/dist/visualization.es386.js +9 -2
  621. package/dist/visualization.es386.js.map +1 -1
  622. package/dist/visualization.es387.js +8 -5
  623. package/dist/visualization.es387.js.map +1 -1
  624. package/dist/visualization.es388.js +34 -35
  625. package/dist/visualization.es388.js.map +1 -1
  626. package/dist/visualization.es389.js +8 -19
  627. package/dist/visualization.es389.js.map +1 -1
  628. package/dist/visualization.es39.js +52 -8
  629. package/dist/visualization.es39.js.map +1 -1
  630. package/dist/visualization.es390.js +31 -3
  631. package/dist/visualization.es390.js.map +1 -1
  632. package/dist/visualization.es391.js +4 -4
  633. package/dist/visualization.es391.js.map +1 -1
  634. package/dist/visualization.es392.js +2 -5
  635. package/dist/visualization.es392.js.map +1 -1
  636. package/dist/visualization.es393.js +14 -47
  637. package/dist/visualization.es393.js.map +1 -1
  638. package/dist/visualization.es394.js +23 -25
  639. package/dist/visualization.es394.js.map +1 -1
  640. package/dist/visualization.es395.js +2 -17
  641. package/dist/visualization.es395.js.map +1 -1
  642. package/dist/visualization.es396.js +62 -9
  643. package/dist/visualization.es396.js.map +1 -1
  644. package/dist/visualization.es397.js +2 -20
  645. package/dist/visualization.es397.js.map +1 -1
  646. package/dist/visualization.es398.js +2 -14
  647. package/dist/visualization.es398.js.map +1 -1
  648. package/dist/visualization.es399.js +5 -3
  649. package/dist/visualization.es399.js.map +1 -1
  650. package/dist/visualization.es4.js +6 -6
  651. package/dist/visualization.es40.js +54 -69
  652. package/dist/visualization.es40.js.map +1 -1
  653. package/dist/visualization.es400.js +37 -13
  654. package/dist/visualization.es400.js.map +1 -1
  655. package/dist/visualization.es401.js +18 -46
  656. package/dist/visualization.es401.js.map +1 -1
  657. package/dist/visualization.es402.js +3 -5
  658. package/dist/visualization.es402.js.map +1 -1
  659. package/dist/visualization.es403.js +4 -12
  660. package/dist/visualization.es403.js.map +1 -1
  661. package/dist/visualization.es404.js +5 -2
  662. package/dist/visualization.es404.js.map +1 -1
  663. package/dist/visualization.es405.js +48 -6
  664. package/dist/visualization.es405.js.map +1 -1
  665. package/dist/visualization.es406.js +26 -209
  666. package/dist/visualization.es406.js.map +1 -1
  667. package/dist/visualization.es407.js +16 -26
  668. package/dist/visualization.es407.js.map +1 -1
  669. package/dist/visualization.es408.js +10 -4
  670. package/dist/visualization.es408.js.map +1 -1
  671. package/dist/visualization.es409.js +18 -14
  672. package/dist/visualization.es409.js.map +1 -1
  673. package/dist/visualization.es41.js +42 -11
  674. package/dist/visualization.es41.js.map +1 -1
  675. package/dist/visualization.es410.js +13 -14
  676. package/dist/visualization.es410.js.map +1 -1
  677. package/dist/visualization.es411.js +4 -15
  678. package/dist/visualization.es411.js.map +1 -1
  679. package/dist/visualization.es412.js +13 -2
  680. package/dist/visualization.es412.js.map +1 -1
  681. package/dist/visualization.es413.js +49 -2
  682. package/dist/visualization.es413.js.map +1 -1
  683. package/dist/visualization.es414.js +6 -2
  684. package/dist/visualization.es414.js.map +1 -1
  685. package/dist/visualization.es415.js +13 -5
  686. package/dist/visualization.es415.js.map +1 -1
  687. package/dist/visualization.es416.js +2 -2
  688. package/dist/visualization.es416.js.map +1 -1
  689. package/dist/visualization.es417.js +7 -25
  690. package/dist/visualization.es417.js.map +1 -1
  691. package/dist/visualization.es418.js +209 -21
  692. package/dist/visualization.es418.js.map +1 -1
  693. package/dist/visualization.es419.js +26 -8
  694. package/dist/visualization.es419.js.map +1 -1
  695. package/dist/visualization.es42.js +5 -54
  696. package/dist/visualization.es42.js.map +1 -1
  697. package/dist/visualization.es420.js +4 -68
  698. package/dist/visualization.es420.js.map +1 -1
  699. package/dist/visualization.es421.js +15 -5
  700. package/dist/visualization.es421.js.map +1 -1
  701. package/dist/visualization.es422.js +14 -28
  702. package/dist/visualization.es422.js.map +1 -1
  703. package/dist/visualization.es423.js +15 -10
  704. package/dist/visualization.es423.js.map +1 -1
  705. package/dist/visualization.es424.js +2 -6
  706. package/dist/visualization.es424.js.map +1 -1
  707. package/dist/visualization.es425.js +2 -2
  708. package/dist/visualization.es425.js.map +1 -1
  709. package/dist/visualization.es426.js +2 -5
  710. package/dist/visualization.es426.js.map +1 -1
  711. package/dist/visualization.es427.js +5 -26
  712. package/dist/visualization.es427.js.map +1 -1
  713. package/dist/visualization.es428.js +2 -11
  714. package/dist/visualization.es428.js.map +1 -1
  715. package/dist/visualization.es429.js +25 -27
  716. package/dist/visualization.es429.js.map +1 -1
  717. package/dist/visualization.es43.js +4 -147
  718. package/dist/visualization.es43.js.map +1 -1
  719. package/dist/visualization.es430.js +21 -9
  720. package/dist/visualization.es430.js.map +1 -1
  721. package/dist/visualization.es431.js +9 -11
  722. package/dist/visualization.es431.js.map +1 -1
  723. package/dist/visualization.es432.js +68 -2
  724. package/dist/visualization.es432.js.map +1 -1
  725. package/dist/visualization.es433.js +6 -16
  726. package/dist/visualization.es433.js.map +1 -1
  727. package/dist/visualization.es434.js +29 -30
  728. package/dist/visualization.es434.js.map +1 -1
  729. package/dist/visualization.es435.js +10 -26
  730. package/dist/visualization.es435.js.map +1 -1
  731. package/dist/visualization.es436.js +6 -2
  732. package/dist/visualization.es436.js.map +1 -1
  733. package/dist/visualization.es437.js +2 -9
  734. package/dist/visualization.es437.js.map +1 -1
  735. package/dist/visualization.es438.js +4 -12
  736. package/dist/visualization.es438.js.map +1 -1
  737. package/dist/visualization.es439.js +24 -21
  738. package/dist/visualization.es439.js.map +1 -1
  739. package/dist/visualization.es44.js +18 -111
  740. package/dist/visualization.es44.js.map +1 -1
  741. package/dist/visualization.es440.js +10 -12
  742. package/dist/visualization.es440.js.map +1 -1
  743. package/dist/visualization.es441.js +27 -3
  744. package/dist/visualization.es441.js.map +1 -1
  745. package/dist/visualization.es442.js +10 -2
  746. package/dist/visualization.es442.js.map +1 -1
  747. package/dist/visualization.es443.js +10 -17
  748. package/dist/visualization.es443.js.map +1 -1
  749. package/dist/visualization.es444.js +2 -4
  750. package/dist/visualization.es444.js.map +1 -1
  751. package/dist/visualization.es445.js +16 -12
  752. package/dist/visualization.es445.js.map +1 -1
  753. package/dist/visualization.es446.js +30 -11
  754. package/dist/visualization.es446.js.map +1 -1
  755. package/dist/visualization.es447.js +26 -7
  756. package/dist/visualization.es447.js.map +1 -1
  757. package/dist/visualization.es448.js +2 -19
  758. package/dist/visualization.es448.js.map +1 -1
  759. package/dist/visualization.es449.js +8 -22
  760. package/dist/visualization.es449.js.map +1 -1
  761. package/dist/visualization.es45.js +4 -7
  762. package/dist/visualization.es45.js.map +1 -1
  763. package/dist/visualization.es450.js +12 -11
  764. package/dist/visualization.es450.js.map +1 -1
  765. package/dist/visualization.es451.js +21 -49
  766. package/dist/visualization.es451.js.map +1 -1
  767. package/dist/visualization.es452.js +12 -17
  768. package/dist/visualization.es452.js.map +1 -1
  769. package/dist/visualization.es453.js +3 -36
  770. package/dist/visualization.es453.js.map +1 -1
  771. package/dist/visualization.es454.js +2 -23
  772. package/dist/visualization.es454.js.map +1 -1
  773. package/dist/visualization.es455.js +16 -30
  774. package/dist/visualization.es455.js.map +1 -1
  775. package/dist/visualization.es456.js +3 -3
  776. package/dist/visualization.es456.js.map +1 -1
  777. package/dist/visualization.es457.js +11 -18
  778. package/dist/visualization.es457.js.map +1 -1
  779. package/dist/visualization.es458.js +11 -14
  780. package/dist/visualization.es458.js.map +1 -1
  781. package/dist/visualization.es459.js +6 -10
  782. package/dist/visualization.es459.js.map +1 -1
  783. package/dist/visualization.es46.js +26 -33
  784. package/dist/visualization.es46.js.map +1 -1
  785. package/dist/visualization.es460.js +19 -30
  786. package/dist/visualization.es460.js.map +1 -1
  787. package/dist/visualization.es461.js +23 -6
  788. package/dist/visualization.es461.js.map +1 -1
  789. package/dist/visualization.es462.js +11 -7
  790. package/dist/visualization.es462.js.map +1 -1
  791. package/dist/visualization.es463.js +51 -2
  792. package/dist/visualization.es463.js.map +1 -1
  793. package/dist/visualization.es464.js +17 -16
  794. package/dist/visualization.es464.js.map +1 -1
  795. package/dist/visualization.es465.js +34 -7
  796. package/dist/visualization.es465.js.map +1 -1
  797. package/dist/visualization.es466.js +22 -9
  798. package/dist/visualization.es466.js.map +1 -1
  799. package/dist/visualization.es467.js +24 -608
  800. package/dist/visualization.es467.js.map +1 -1
  801. package/dist/visualization.es468.js +3 -50
  802. package/dist/visualization.es468.js.map +1 -1
  803. package/dist/visualization.es469.js +18 -12
  804. package/dist/visualization.es469.js.map +1 -1
  805. package/dist/visualization.es47.js +30 -66
  806. package/dist/visualization.es47.js.map +1 -1
  807. package/dist/visualization.es470.js +14 -11
  808. package/dist/visualization.es470.js.map +1 -1
  809. package/dist/visualization.es471.js +11 -23
  810. package/dist/visualization.es471.js.map +1 -1
  811. package/dist/visualization.es472.js +27 -32
  812. package/dist/visualization.es472.js.map +1 -1
  813. package/dist/visualization.es473.js +6 -13
  814. package/dist/visualization.es473.js.map +1 -1
  815. package/dist/visualization.es474.js +7 -18
  816. package/dist/visualization.es474.js.map +1 -1
  817. package/dist/visualization.es475.js +2 -26
  818. package/dist/visualization.es475.js.map +1 -1
  819. package/dist/visualization.es476.js +14 -24
  820. package/dist/visualization.es476.js.map +1 -1
  821. package/dist/visualization.es477.js +7 -41
  822. package/dist/visualization.es477.js.map +1 -1
  823. package/dist/visualization.es478.js +9 -19
  824. package/dist/visualization.es478.js.map +1 -1
  825. package/dist/visualization.es479.js +612 -37
  826. package/dist/visualization.es479.js.map +1 -1
  827. package/dist/visualization.es48.js +38 -111
  828. package/dist/visualization.es48.js.map +1 -1
  829. package/dist/visualization.es480.js +49 -56
  830. package/dist/visualization.es480.js.map +1 -1
  831. package/dist/visualization.es481.js +13 -4
  832. package/dist/visualization.es481.js.map +1 -1
  833. package/dist/visualization.es482.js +11 -3
  834. package/dist/visualization.es482.js.map +1 -1
  835. package/dist/visualization.es483.js +23 -7
  836. package/dist/visualization.es483.js.map +1 -1
  837. package/dist/visualization.es484.js +34 -15
  838. package/dist/visualization.es484.js.map +1 -1
  839. package/dist/visualization.es485.js +13 -2
  840. package/dist/visualization.es485.js.map +1 -1
  841. package/dist/visualization.es486.js +19 -2
  842. package/dist/visualization.es486.js.map +1 -1
  843. package/dist/visualization.es487.js +26 -2
  844. package/dist/visualization.es487.js.map +1 -1
  845. package/dist/visualization.es488.js +27 -2
  846. package/dist/visualization.es488.js.map +1 -1
  847. package/dist/visualization.es489.js +41 -8
  848. package/dist/visualization.es489.js.map +1 -1
  849. package/dist/visualization.es49.js +81 -5
  850. package/dist/visualization.es49.js.map +1 -1
  851. package/dist/visualization.es490.js +19 -9
  852. package/dist/visualization.es490.js.map +1 -1
  853. package/dist/visualization.es491.js +40 -6
  854. package/dist/visualization.es491.js.map +1 -1
  855. package/dist/visualization.es492.js +57 -8
  856. package/dist/visualization.es492.js.map +1 -1
  857. package/dist/visualization.es493.js +3 -6
  858. package/dist/visualization.es493.js.map +1 -1
  859. package/dist/visualization.es494.js +3 -6
  860. package/dist/visualization.es494.js.map +1 -1
  861. package/dist/visualization.es495.js +7 -15
  862. package/dist/visualization.es495.js.map +1 -1
  863. package/dist/visualization.es496.js +15 -5
  864. package/dist/visualization.es496.js.map +1 -1
  865. package/dist/visualization.es497.js +2 -7
  866. package/dist/visualization.es497.js.map +1 -1
  867. package/dist/visualization.es498.js +2 -7
  868. package/dist/visualization.es498.js.map +1 -1
  869. package/dist/visualization.es499.js +2 -7
  870. package/dist/visualization.es499.js.map +1 -1
  871. package/dist/visualization.es5.js +10 -10
  872. package/dist/visualization.es50.js +45 -34
  873. package/dist/visualization.es50.js.map +1 -1
  874. package/dist/visualization.es500.js +61 -3
  875. package/dist/visualization.es500.js.map +1 -1
  876. package/dist/visualization.es501.js +237 -4
  877. package/dist/visualization.es501.js.map +1 -1
  878. package/dist/visualization.es502.js +990 -7
  879. package/dist/visualization.es502.js.map +1 -1
  880. package/dist/visualization.es505.js +7 -7
  881. package/dist/visualization.es506.js +1 -1
  882. package/dist/visualization.es507.js +4 -4
  883. package/dist/visualization.es508.js +6 -6
  884. package/dist/visualization.es51.js +56 -58
  885. package/dist/visualization.es51.js.map +1 -1
  886. package/dist/visualization.es512.js +1 -1
  887. package/dist/visualization.es513.js +1 -1
  888. package/dist/visualization.es514.js +1 -1
  889. package/dist/visualization.es515.js +6 -6
  890. package/dist/visualization.es516.js +1 -1
  891. package/dist/visualization.es517.js +6 -6
  892. package/dist/visualization.es518.js +8 -8
  893. package/dist/visualization.es519.js +6 -6
  894. package/dist/visualization.es52.js +7 -47
  895. package/dist/visualization.es52.js.map +1 -1
  896. package/dist/visualization.es520.js +1 -1
  897. package/dist/visualization.es53.js +13 -45
  898. package/dist/visualization.es53.js.map +1 -1
  899. package/dist/visualization.es532.js +2 -2
  900. package/dist/visualization.es533.js +5 -5
  901. package/dist/visualization.es534.js +3 -3
  902. package/dist/visualization.es535.js +3 -3
  903. package/dist/visualization.es537.js +8 -8
  904. package/dist/visualization.es539.js +1 -1
  905. package/dist/visualization.es54.js +56 -19
  906. package/dist/visualization.es54.js.map +1 -1
  907. package/dist/visualization.es542.js +16 -279
  908. package/dist/visualization.es542.js.map +1 -1
  909. package/dist/visualization.es543.js +282 -2
  910. package/dist/visualization.es543.js.map +1 -1
  911. package/dist/visualization.es544.js +2 -128
  912. package/dist/visualization.es544.js.map +1 -1
  913. package/dist/visualization.es545.js +125 -16
  914. package/dist/visualization.es545.js.map +1 -1
  915. package/dist/visualization.es546.js +3 -9
  916. package/dist/visualization.es546.js.map +1 -1
  917. package/dist/visualization.es547.js +3 -9
  918. package/dist/visualization.es547.js.map +1 -1
  919. package/dist/visualization.es548.js +14 -17
  920. package/dist/visualization.es548.js.map +1 -1
  921. package/dist/visualization.es549.js +3 -7
  922. package/dist/visualization.es549.js.map +1 -1
  923. package/dist/visualization.es55.js +64 -114
  924. package/dist/visualization.es55.js.map +1 -1
  925. package/dist/visualization.es550.js +9 -7
  926. package/dist/visualization.es550.js.map +1 -1
  927. package/dist/visualization.es551.js +4 -3
  928. package/dist/visualization.es551.js.map +1 -1
  929. package/dist/visualization.es552.js +5 -3
  930. package/dist/visualization.es552.js.map +1 -1
  931. package/dist/visualization.es553.js +8 -14
  932. package/dist/visualization.es553.js.map +1 -1
  933. package/dist/visualization.es554.js +5 -1
  934. package/dist/visualization.es554.js.map +1 -1
  935. package/dist/visualization.es555.js +4 -9
  936. package/dist/visualization.es555.js.map +1 -1
  937. package/dist/visualization.es556.js +3 -4
  938. package/dist/visualization.es556.js.map +1 -1
  939. package/dist/visualization.es557.js +4 -6
  940. package/dist/visualization.es557.js.map +1 -1
  941. package/dist/visualization.es558.js +11 -9
  942. package/dist/visualization.es558.js.map +1 -1
  943. package/dist/visualization.es559.js +9 -7
  944. package/dist/visualization.es559.js.map +1 -1
  945. package/dist/visualization.es56.js +262 -94
  946. package/dist/visualization.es56.js.map +1 -1
  947. package/dist/visualization.es560.js +30 -4
  948. package/dist/visualization.es560.js.map +1 -1
  949. package/dist/visualization.es561.js +24 -3
  950. package/dist/visualization.es561.js.map +1 -1
  951. package/dist/visualization.es562.js +52 -4
  952. package/dist/visualization.es562.js.map +1 -1
  953. package/dist/visualization.es563.js +3 -11
  954. package/dist/visualization.es563.js.map +1 -1
  955. package/dist/visualization.es564.js +8 -9
  956. package/dist/visualization.es564.js.map +1 -1
  957. package/dist/visualization.es565.js +20 -30
  958. package/dist/visualization.es565.js.map +1 -1
  959. package/dist/visualization.es566.js +7 -24
  960. package/dist/visualization.es566.js.map +1 -1
  961. package/dist/visualization.es567.js +6 -51
  962. package/dist/visualization.es567.js.map +1 -1
  963. package/dist/visualization.es568.js +5 -3
  964. package/dist/visualization.es568.js.map +1 -1
  965. package/dist/visualization.es569.js +7 -8
  966. package/dist/visualization.es569.js.map +1 -1
  967. package/dist/visualization.es57.js +102 -34
  968. package/dist/visualization.es57.js.map +1 -1
  969. package/dist/visualization.es570.js +15 -20
  970. package/dist/visualization.es570.js.map +1 -1
  971. package/dist/visualization.es571.js +4 -7
  972. package/dist/visualization.es571.js.map +1 -1
  973. package/dist/visualization.es572.js +6 -6
  974. package/dist/visualization.es572.js.map +1 -1
  975. package/dist/visualization.es573.js +34 -5
  976. package/dist/visualization.es573.js.map +1 -1
  977. package/dist/visualization.es574.js +7 -6
  978. package/dist/visualization.es574.js.map +1 -1
  979. package/dist/visualization.es575.js +9 -15
  980. package/dist/visualization.es575.js.map +1 -1
  981. package/dist/visualization.es576.js +9 -4
  982. package/dist/visualization.es576.js.map +1 -1
  983. package/dist/visualization.es577.js +18 -6
  984. package/dist/visualization.es577.js.map +1 -1
  985. package/dist/visualization.es578.js +7 -34
  986. package/dist/visualization.es578.js.map +1 -1
  987. package/dist/visualization.es579.js +6 -7
  988. package/dist/visualization.es579.js.map +1 -1
  989. package/dist/visualization.es58.js +27 -65
  990. package/dist/visualization.es58.js.map +1 -1
  991. package/dist/visualization.es580.js +1 -1
  992. package/dist/visualization.es582.js +3 -3
  993. package/dist/visualization.es583.js +1 -1
  994. package/dist/visualization.es59.js +22 -245
  995. package/dist/visualization.es59.js.map +1 -1
  996. package/dist/visualization.es595.js +11 -31
  997. package/dist/visualization.es595.js.map +1 -1
  998. package/dist/visualization.es596.js +24 -12
  999. package/dist/visualization.es596.js.map +1 -1
  1000. package/dist/visualization.es597.js +19 -24
  1001. package/dist/visualization.es597.js.map +1 -1
  1002. package/dist/visualization.es598.js +7 -20
  1003. package/dist/visualization.es598.js.map +1 -1
  1004. package/dist/visualization.es599.js +4 -5
  1005. package/dist/visualization.es599.js.map +1 -1
  1006. package/dist/visualization.es6.js +15 -15
  1007. package/dist/visualization.es60.js +17 -96
  1008. package/dist/visualization.es60.js.map +1 -1
  1009. package/dist/visualization.es600.js +4 -6
  1010. package/dist/visualization.es600.js.map +1 -1
  1011. package/dist/visualization.es601.js +64 -3
  1012. package/dist/visualization.es601.js.map +1 -1
  1013. package/dist/visualization.es602.js +30 -62
  1014. package/dist/visualization.es602.js.map +1 -1
  1015. package/dist/visualization.es603.js +4 -3
  1016. package/dist/visualization.es603.js.map +1 -1
  1017. package/dist/visualization.es604.js +7 -10
  1018. package/dist/visualization.es604.js.map +1 -1
  1019. package/dist/visualization.es605.js +5 -289
  1020. package/dist/visualization.es605.js.map +1 -1
  1021. package/dist/visualization.es606.js +290 -4
  1022. package/dist/visualization.es606.js.map +1 -1
  1023. package/dist/visualization.es607.js +16 -6
  1024. package/dist/visualization.es607.js.map +1 -1
  1025. package/dist/visualization.es608.js +13 -5
  1026. package/dist/visualization.es608.js.map +1 -1
  1027. package/dist/visualization.es609.js +3 -18
  1028. package/dist/visualization.es609.js.map +1 -1
  1029. package/dist/visualization.es61.js +18 -25
  1030. package/dist/visualization.es61.js.map +1 -1
  1031. package/dist/visualization.es610.js +11 -14
  1032. package/dist/visualization.es610.js.map +1 -1
  1033. package/dist/visualization.es611.js +5 -3
  1034. package/dist/visualization.es611.js.map +1 -1
  1035. package/dist/visualization.es612.js +3 -5
  1036. package/dist/visualization.es612.js.map +1 -1
  1037. package/dist/visualization.es62.js +68 -21
  1038. package/dist/visualization.es62.js.map +1 -1
  1039. package/dist/visualization.es63.js +78 -17
  1040. package/dist/visualization.es63.js.map +1 -1
  1041. package/dist/visualization.es64.js +10 -20
  1042. package/dist/visualization.es64.js.map +1 -1
  1043. package/dist/visualization.es65.js +57 -69
  1044. package/dist/visualization.es65.js.map +1 -1
  1045. package/dist/visualization.es66.js +46 -56
  1046. package/dist/visualization.es66.js.map +1 -1
  1047. package/dist/visualization.es67.js +43 -50
  1048. package/dist/visualization.es67.js.map +1 -1
  1049. package/dist/visualization.es68.js +19 -53
  1050. package/dist/visualization.es68.js.map +1 -1
  1051. package/dist/visualization.es69.js +115 -42
  1052. package/dist/visualization.es69.js.map +1 -1
  1053. package/dist/visualization.es7.js +11 -11
  1054. package/dist/visualization.es70.js +97 -5
  1055. package/dist/visualization.es70.js.map +1 -1
  1056. package/dist/visualization.es71.js +34 -4
  1057. package/dist/visualization.es71.js.map +1 -1
  1058. package/dist/visualization.es72.js +54 -17
  1059. package/dist/visualization.es72.js.map +1 -1
  1060. package/dist/visualization.es73.js +18701 -4
  1061. package/dist/visualization.es73.js.map +1 -1
  1062. package/dist/visualization.es74.js +5 -27
  1063. package/dist/visualization.es74.js.map +1 -1
  1064. package/dist/visualization.es75.js +5 -31
  1065. package/dist/visualization.es75.js.map +1 -1
  1066. package/dist/visualization.es76.js +42 -18684
  1067. package/dist/visualization.es76.js.map +1 -1
  1068. package/dist/visualization.es77.js +811 -5
  1069. package/dist/visualization.es77.js.map +1 -1
  1070. package/dist/visualization.es79.js +130 -59
  1071. package/dist/visualization.es79.js.map +1 -1
  1072. package/dist/visualization.es8.js +112 -112
  1073. package/dist/visualization.es8.js.map +1 -1
  1074. package/dist/visualization.es80.js +28 -810
  1075. package/dist/visualization.es80.js.map +1 -1
  1076. package/dist/visualization.es81.js +68 -0
  1077. package/dist/visualization.es81.js.map +1 -0
  1078. package/dist/visualization.es82.js +61 -130
  1079. package/dist/visualization.es82.js.map +1 -1
  1080. package/dist/visualization.es83.js +3 -39
  1081. package/dist/visualization.es83.js.map +1 -1
  1082. package/dist/visualization.es84.js +45 -79
  1083. package/dist/visualization.es84.js.map +1 -1
  1084. package/dist/visualization.es85.js +4 -46
  1085. package/dist/visualization.es85.js.map +1 -1
  1086. package/dist/visualization.es86.js +280 -54
  1087. package/dist/visualization.es86.js.map +1 -1
  1088. package/dist/visualization.es87.js +18 -6
  1089. package/dist/visualization.es87.js.map +1 -1
  1090. package/dist/visualization.es88.js +61 -10
  1091. package/dist/visualization.es88.js.map +1 -1
  1092. package/dist/visualization.es89.js +7 -57
  1093. package/dist/visualization.es89.js.map +1 -1
  1094. package/dist/visualization.es9.js +1 -1
  1095. package/dist/visualization.es90.js +7 -63
  1096. package/dist/visualization.es90.js.map +1 -1
  1097. package/dist/visualization.es91.js +13 -58
  1098. package/dist/visualization.es91.js.map +1 -1
  1099. package/dist/visualization.es92.js +74 -32
  1100. package/dist/visualization.es92.js.map +1 -1
  1101. package/dist/visualization.es93.js +33 -18
  1102. package/dist/visualization.es93.js.map +1 -1
  1103. package/dist/visualization.es94.js +13 -14
  1104. package/dist/visualization.es94.js.map +1 -1
  1105. package/dist/visualization.es95.js +5 -26
  1106. package/dist/visualization.es95.js.map +1 -1
  1107. package/dist/visualization.es96.js +5 -5
  1108. package/dist/visualization.es97.js +5 -5
  1109. package/dist/visualization.es97.js.map +1 -1
  1110. package/dist/visualization.es98.js +15 -5
  1111. package/dist/visualization.es98.js.map +1 -1
  1112. package/dist/visualization.es99.js +10 -10
  1113. package/dist/visualization.es99.js.map +1 -1
  1114. package/package.json +1 -1
  1115. package/dist/visualization.es78.js +0 -8
  1116. package/dist/visualization.es78.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es479.js","sources":["../../../node_modules/.pnpm/framer-motion@12.38.0_@emotion+is-prop-valid@1.4.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/framer-motion/dist/es/gestures/pan/index.mjs"],"sourcesContent":["import { Feature, frame } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { PanSession } from './PanSession.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.update(() => handler(event, info), false, true);\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: asyncHandler(onPan),\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n//# sourceMappingURL=index.mjs.map\n"],"names":["asyncHandler","handler","event","info","frame","PanGesture","Feature","noop","pointerDownEvent","PanSession","getContextWindow","onPanSessionStart","onPanStart","onPan","onPanEnd","addPointerEvent"],"mappings":";;;;;;AAMA,MAAMA,IAAe,CAACC,MAAY,CAACC,GAAOC,MAAS;AAC/C,EAAIF,KACAG,EAAM,OAAO,MAAMH,EAAQC,GAAOC,CAAI,GAAG,IAAO,EAAI;AAE5D;AACA,MAAME,UAAmBC,EAAQ;AAAA,EAC7B,cAAc;AACV,UAAM,GAAG,SAAS,GAClB,KAAK,4BAA4BC;AAAA,EACrC;AAAA,EACA,cAAcC,GAAkB;AAC5B,SAAK,UAAU,IAAIC,EAAWD,GAAkB,KAAK,qBAAqB;AAAA,MACtE,oBAAoB,KAAK,KAAK,sBAAqB;AAAA,MACnD,eAAeE,EAAiB,KAAK,IAAI;AAAA,IACrD,CAAS;AAAA,EACL;AAAA,EACA,oBAAoB;AAChB,UAAM,EAAE,mBAAAC,GAAmB,YAAAC,GAAY,OAAAC,GAAO,UAAAC,EAAQ,IAAK,KAAK,KAAK,SAAQ;AAC7E,WAAO;AAAA,MACH,gBAAgBd,EAAaW,CAAiB;AAAA,MAC9C,SAASX,EAAaY,CAAU;AAAA,MAChC,QAAQZ,EAAaa,CAAK;AAAA,MAC1B,OAAO,CAACX,GAAOC,MAAS;AACpB,eAAO,KAAK,SACRW,KACAV,EAAM,WAAW,MAAMU,EAASZ,GAAOC,CAAI,CAAC;AAAA,MAEpD;AAAA,IACZ;AAAA,EACI;AAAA,EACA,QAAQ;AACJ,SAAK,4BAA4BY,EAAgB,KAAK,KAAK,SAAS,eAAe,CAACb,MAAU,KAAK,cAAcA,CAAK,CAAC;AAAA,EAC3H;AAAA,EACA,SAAS;AACL,SAAK,WAAW,KAAK,QAAQ,eAAe,KAAK,mBAAmB;AAAA,EACxE;AAAA,EACA,UAAU;AACN,SAAK,0BAAyB,GAC9B,KAAK,WAAW,KAAK,QAAQ,IAAG;AAAA,EACpC;AACJ;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"visualization.es479.js","sources":["../../../node_modules/.pnpm/motion-dom@12.38.0/node_modules/motion-dom/dist/es/projection/node/create-projection-node.mjs"],"sourcesContent":["import { SubscriptionManager, clamp, noop } from 'motion-utils';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { getValueTransition } from '../../animation/utils/get-value-transition.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { activeAnimations } from '../../stats/animation-count.mjs';\nimport { statsBuffer } from '../../stats/buffer.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { isSVGElement } from '../../utils/is-svg-element.mjs';\nimport { isSVGSVGElement } from '../../utils/is-svg-svg-element.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto, copyAxisInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcLength, calcRelativeBox, calcRelativePosition, calcBoxDelta, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, boxEquals, aspectRatio } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { FlatTree } from '../utils/flat-tree.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { frame, cancelFrame, frameData, frameSteps } from '../../frameloop/frame.mjs';\n\nconst metrics = {\n nodes: 0,\n calculatedTargetDeltas: 0,\n calculatedProjections: 0,\n};\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return;\n const { visualElement } = projectionNode.options;\n if (!visualElement)\n return;\n const appearId = getOptimisedAppearId(visualElement);\n if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n const { layout, layoutId } = projectionNode.options;\n window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n }\n const { parent } = projectionNode;\n if (parent && !parent.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(parent);\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent?.()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n this.animationCommitId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n this.layoutVersion = 0;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n if (statsBuffer.value) {\n metrics.nodes =\n metrics.calculatedTargetDeltas =\n metrics.calculatedProjections =\n 0;\n }\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n if (statsBuffer.addProjectionMetrics) {\n statsBuffer.addProjectionMetrics(metrics);\n }\n };\n /**\n * Frame calculations\n */\n this.resolvedRelativeTargetAt = 0.0;\n this.linkedParentVersion = 0;\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance) && !isSVGSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (this.root.hasTreeAnimated && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n let innerWidth = 0;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n // Set initial innerWidth in a frame.read callback to batch the read\n frame.read(() => {\n innerWidth = window.innerWidth;\n });\n attachResizeListener(instance, () => {\n const newInnerWidth = window.innerWidth;\n if (newInnerWidth === innerWidth)\n return;\n innerWidth = newInnerWidth;\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const hasTargetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout);\n /*\n * Note: Disabled to fix relative animations always triggering new\n * layout animations. If this causes further issues, we can try\n * a different approach to detecting relative target changes.\n */\n // || hasRelativeLayoutChanged\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged;\n if (this.options.layoutRoot ||\n this.resumeFrom ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (hasTargetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n /**\n * Set animation origin after starting animation to avoid layout jump\n * caused by stopping previous layout animation\n */\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never committed to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n this.eventHandlers.clear();\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.MotionCancelOptimisedAnimation &&\n !this.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(this);\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n /**\n * Percentage translates resolve against layoutBox dimensions,\n * so ancestors with them must be re-measured after transform reset.\n */\n if (typeof node.latestValues.x === \"string\" ||\n typeof node.latestValues.y === \"string\") {\n node.isLayoutDirty = true;\n }\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n const wasBlockedByResize = this.updateBlockedByResize;\n this.unblockUpdate();\n this.updateBlockedByResize = false;\n this.clearAllSnapshots();\n /**\n * When blocked by resize, still measure layouts so\n * callbacks like onLayoutMeasure fire (e.g. Reorder).\n * Skip notifyLayoutUpdate to prevent animations.\n */\n if (wasBlockedByResize) {\n this.nodes.forEach(forceLayoutMeasure);\n }\n this.nodes.forEach(clearMeasurements);\n return;\n }\n /**\n * If this is a repeat of didUpdate then ignore the animation.\n */\n if (this.animationId <= this.animationCommitId) {\n this.nodes.forEach(clearIsLayoutDirty);\n return;\n }\n this.animationCommitId = this.animationId;\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n else {\n this.isUpdating = false;\n /**\n * Ensure animation-blocked nodes (e.g. during drag)\n * get measured even when memoized (willUpdate skipped).\n */\n this.nodes.forEach(ensureDraggedNodesSnapshotted);\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n }\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n frameSteps.update.process(frameData);\n frameSteps.preRender.process(frameData);\n frameSteps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(this.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n if (this.snapshot &&\n !calcLength(this.snapshot.measuredBox.x) &&\n !calcLength(this.snapshot.measuredBox.y)) {\n this.snapshot = undefined;\n }\n }\n updateLayout() {\n if (!this.instance)\n return;\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutVersion++;\n if (!this.layoutCorrected)\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement && this.instance) {\n const isRoot = checkIsScrollRoot(this.instance);\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot,\n offset: measureScroll(this.instance),\n wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n this.instance &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n const wasInScrollRoot = this.scroll?.wasRoot || this.path.some(checkNodeWasScrollRoot);\n if (!wasInScrollRoot) {\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n }\n return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n if (this.scroll?.wasRoot) {\n return boxWithoutScroll;\n }\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.wasRoot) {\n copyBoxInto(boxWithoutScroll, box);\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false, output) {\n const withTransforms = output || createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n translateAxis(withTransforms.x, -node.scroll.offset.x);\n translateAxis(withTransforms.y, -node.scroll.offset.y);\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues, node.layout?.layoutBox);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues, this.layout?.layoutBox);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!hasTransform(node.latestValues))\n continue;\n let sourceBox;\n if (node.instance) {\n hasScale(node.latestValues) && node.updateSnapshot();\n sourceBox = createBox();\n copyBoxInto(sourceBox, node.measurePageBox());\n }\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot?.layoutBox, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n this.parent?.isProjectionDirty ||\n this.attemptToResolveRelativeTarget ||\n this.root.updateBlockedByResize);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n this.linkedParentVersion !== relativeParent.layoutVersion &&\n !relativeParent.options.layoutRoot) {\n this.removeRelativeTarget();\n }\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n if (this.options.layoutAnchor !== false &&\n relativeParent &&\n relativeParent.layout) {\n this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox);\n }\n else {\n this.removeRelativeTarget();\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target, this.options.layoutAnchor || undefined);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n this.applyTransform(this.layout.layoutBox, false, this.target);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n if (this.options.layoutAnchor !== false &&\n relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.createRelativeTarget(relativeParent, this.target, relativeParent.target);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n if (statsBuffer.value) {\n metrics.calculatedTargetDeltas++;\n }\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n createRelativeTarget(relativeParent, layout, parentLayout) {\n this.relativeParent = relativeParent;\n this.linkedParentVersion = relativeParent.layoutVersion;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, layout, parentLayout, this.options.layoutAnchor || undefined);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n removeRelativeTarget() {\n this.relativeParent = this.relativeTarget = undefined;\n }\n calcProjection() {\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || this.parent?.isProjectionDirty) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.prevProjectionDelta) {\n this.createProjectionDeltas();\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta || !this.prevProjectionDelta) {\n this.createProjectionDeltas();\n }\n else {\n copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n }\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n if (this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY ||\n !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n if (statsBuffer.value) {\n metrics.calculatedProjections++;\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n this.options.visualElement?.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n createProjectionDeltas() {\n this.prevProjectionDelta = createDelta();\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox, this.options.layoutAnchor || undefined);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation?.stop();\n this.resumingFrom?.currentAnimation?.stop();\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n activeAnimations.layout++;\n this.motionValue || (this.motionValue = motionValue(0));\n this.motionValue.jump(0, false);\n this.currentAnimation = animateSingleValue(this.motionValue, [0, 1000], {\n ...options,\n velocity: 0,\n isSync: true,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onStop: () => {\n activeAnimations.layout--;\n },\n onComplete: () => {\n activeAnimations.layout--;\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n const { layoutId } = this.options;\n return layoutId ? this.getStack()?.lead || this : this;\n }\n getPrevLead() {\n const { layoutId } = this.options;\n return layoutId ? this.getStack()?.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n applyProjectionStyles(targetStyle, // CSSStyleDeclaration - doesn't allow numbers to be assigned to properties\n styleProp) {\n if (!this.instance || this.isSVG)\n return;\n if (!this.isVisible) {\n targetStyle.visibility = \"hidden\";\n return;\n }\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n targetStyle.visibility = \"\";\n targetStyle.opacity = \"\";\n targetStyle.pointerEvents =\n resolveMotionValue(styleProp?.pointerEvents) || \"\";\n targetStyle.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n if (this.options.layoutId) {\n targetStyle.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n targetStyle.pointerEvents =\n resolveMotionValue(styleProp?.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n targetStyle.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return;\n }\n targetStyle.visibility = \"\";\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n let transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n transform = transformTemplate(valuesToRender, transform);\n }\n targetStyle.transform = transform;\n const { x, y } = this.projectionDelta;\n targetStyle.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n targetStyle.opacity =\n lead === this\n ? valuesToRender.opacity ??\n this.latestValues.opacity ??\n 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n targetStyle.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo, isCSSVariable } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n targetStyle[applyTo[i]] = corrected;\n }\n }\n else {\n // If this is a CSS variable, set it directly on the instance.\n // Replacing this function from creating styles to setting them\n // would be a good place to remove per frame object creation\n if (isCSSVariable) {\n this.options.visualElement.renderState.vars[key] = corrected;\n }\n else {\n targetStyle[key] = corrected;\n }\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n targetStyle.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp?.pointerEvents) || \"\"\n : \"none\";\n }\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => node.currentAnimation?.stop());\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n const snapshot = node.resumeFrom?.snapshot || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (animationType === \"x\" || animationType === \"y\") {\n const snapAxis = animationType === \"x\" ? \"y\" : \"x\";\n copyAxisInto(isShared\n ? snapshot.measuredBox[snapAxis]\n : snapshot.layoutBox[snapAxis], layout[snapAxis]);\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeLayoutChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const anchor = node.options.layoutAnchor || undefined;\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox, anchor);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox, anchor);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeLayoutChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeLayoutChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n if (statsBuffer.value) {\n metrics.nodes++;\n }\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction forceLayoutMeasure(node) {\n node.isLayoutDirty = true;\n node.updateLayout();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\n/**\n * When a node is animation-blocked (e.g. during drag) and its component\n * didn't re-render (memoized), willUpdate() is never called so there's\n * no snapshot. Use the previous layout as a snapshot and mark dirty so\n * resetTransform/updateLayout/notifyLayoutUpdate process it normally.\n */\nfunction ensureDraggedNodesSnapshotted(node) {\n if (node.isAnimationBlocked && node.layout && !node.isLayoutDirty) {\n node.snapshot = node.layout;\n node.isLayoutDirty = true;\n }\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n return node !== node.root && node.scroll?.wasRoot;\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n//# sourceMappingURL=create-projection-node.mjs.map\n"],"names":["transformAxes","animationTarget","id","resetDistortingTransform","key","visualElement","values","sharedAnimationValues","latestValues","cancelTreeOptimisedTransformAnimations","projectionNode","appearId","getOptimisedAppearId","layout","layoutId","frame","parent","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","i","FlatTree","name","handler","SubscriptionManager","args","subscriptionManager","instance","isSVGElement","isSVGSVGElement","cancelDelay","innerWidth","resizeUnblockUpdate","newInnerWidth","delay","globalProjectionState","finishAnimation","delta","hasLayoutChanged","hasRelativeLayoutChanged","newLayout","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","hasTargetChanged","boxEqualsRounded","hasOnlyRelativeTargetChanged","animationOptions","getValueTransition","stack","cancelFrame","resetSkewAndRotation","shouldNotifyListeners","node","transformTemplate","wasBlockedByResize","forceLayoutMeasure","clearMeasurements","clearIsLayoutDirty","ensureDraggedNodesSnapshotted","resetTransformStyle","updateLayout","notifyLayoutUpdate","now","time","frameData","clamp","frameSteps","microtask","clearSnapshot","removeLeadSnapshots","calcLength","prevLayout","createBox","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","isDeltaZero","transformTemplateValue","transformTemplateHasChanged","hasTransform","removeTransform","pageBox","layoutBox","roundBox","box","checkNodeWasScrollRoot","scroll","translateAxis","boxWithoutScroll","copyBoxInto","options","transformOnly","output","withTransforms","transformBox","boxWithoutTransform","sourceBox","hasScale","removeBoxTransforms","forceRecalculation","lead","isShared","relativeParent","calcRelativeBox","applyBoxDelta","has2DTranslate","parentLayout","calcRelativePosition","canSkip","prevTreeScaleX","prevTreeScaleY","applyTreeDeltas","target","copyAxisDeltaInto","calcBoxDelta","axisDeltaEquals","notifyAll","createDelta","snapshot","snapshotLatestValues","mixedValues","targetDelta","relativeLayout","snapshotSource","layoutSource","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","prevRelativeTarget","latest","progress","mixAxisDelta","mixBox","boxEquals","mixValues","motionValue","animateSingleValue","targetWithTransforms","shouldAnimatePositionOnly","xLength","yLength","NodeStack","config","needsReset","transition","preserveFollowOpacity","hasDistortingTransform","resetValues","targetStyle","styleProp","resolveMotionValue","valuesToRender","transform","buildProjectionTransform","x","y","scaleCorrectors","correct","applyTo","isCSSVariable","corrected","num","measuredLayout","animationType","eachAxis","axis","axisSnapshot","length","snapAxis","copyAxisInto","layoutDelta","visualDelta","parentSnapshot","anchor","relativeSnapshot","onExitComplete","p","mixNumber","mixAxis","from","to","userAgentContains","string","roundPoint","noop","roundAxis","isNear","aspectRatio"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,116 +1,43 @@
1
- import { jsxs as S, jsx as p, Fragment as oe } from "react/jsx-runtime";
2
- import ce, { useMemo as z, useCallback as ne } from "react";
3
- import se from "./visualization.es102.js";
4
- import { calculateBoxStats as re, scottRule as me, silvermanRule as he, kernelDensityEstimator as pe, seededRandom as ue, gaussian as fe } from "./visualization.es47.js";
5
- import de from "./visualization.es103.js";
6
- import ie from "./visualization.es22.js";
7
- import ve from "./visualization.es87.js";
8
- import ye from "./visualization.es24.js";
9
- import ke from "./visualization.es104.js";
10
- import { line as ge } from "./visualization.es88.js";
11
- import xe from "./visualization.es20.js";
12
- import $e from "./visualization.es89.js";
13
- const Re = ({
14
- distribution: t,
15
- distIndex: $,
16
- violinProps: l,
17
- crossProps: D,
18
- valueScale: m,
19
- labelScale: C,
20
- offset: Q,
21
- labels: R,
22
- disableCrossPlot: P,
23
- disableViolinPlot: H,
24
- horizontal: o,
25
- pointTooltipBody: k,
26
- onViolinClicked: b,
27
- onPointClicked: A
28
- }) => {
1
+ import { jsxs as p, jsx as a } from "react/jsx-runtime";
2
+ import { c as w } from "react/compiler-runtime";
3
+ import x from "./visualization.es31.js";
4
+ const g = 18, l = 12, u = 6, r = 8;
5
+ function G(n) {
6
+ const t = Math.max(...n.map((h) => h.label.length)) * 7 + l + u + r * 2, e = n.length * g + r * 2;
7
+ return {
8
+ width: t,
9
+ height: e
10
+ };
11
+ }
12
+ const W = (n) => {
13
+ const t = w(11), {
14
+ series: e,
15
+ xMax: h
16
+ } = n;
17
+ let s;
18
+ t[0] !== e ? (s = G(e), t[0] = e, t[1] = s) : s = t[1];
29
19
  const {
30
- tooltipData: a,
31
- tooltipLeft: X,
32
- tooltipTop: N,
33
- tooltipOpen: V,
34
- showTooltip: Y,
35
- hideTooltip: _
36
- } = ie(), u = t.data.flatMap((e) => e.value), {
37
- min: w,
38
- max: T,
39
- firstQuartile: F,
40
- thirdQuartile: j,
41
- median: E,
42
- outliers: q
43
- } = re(u, D?.outliers ?? "all"), ee = t.data.filter((e) => q.includes(e.value)).map((e) => ({
44
- ...e,
45
- outlier: !0
46
- })), te = t.data.filter((e) => !q.includes(e.value)), G = z(() => {
47
- const e = (T - w) / Math.max(100, u.length), s = ve(w, T, e), r = typeof l?.bandwidth == "number" ? l.bandwidth : typeof l?.bandwidth == "function" ? l.bandwidth(u) : l?.bandwidth === "scott" ? me(u) : he(u);
48
- return [...pe(fe(r), s)(u)].sort((d, c) => d.value - c.value);
49
- }, [u, T, w, l]), W = Math.min(C.bandwidth(), 50), ae = D?.medianWidth ?? W * 0.25, L = z(() => ({
50
- label: t.label,
51
- sampleSize: t.data.length,
52
- median: E.toFixed(2),
53
- firstQuartile: F.toFixed(2),
54
- thirdQuartile: j.toFixed(2)
55
- }), [t.label, t.data.length, E, F, j]), M = ne((e, s, r) => {
56
- Y({
57
- tooltipData: r && k ? {
58
- point: r
59
- } : s,
60
- tooltipLeft: e.pageX,
61
- tooltipTop: e.pageY
62
- });
63
- }, [k, Y]), J = () => {
64
- !b || !a || a && b(t);
65
- }, O = (e) => {
66
- !A || !a || a && A(e);
67
- }, n = o ? (C(R[$]) ?? 0) + W / 2 : (C(R[$]) ?? 0) + Q + C.bandwidth() / 2, K = ye().domain([0, ke(G, (e) => Math.abs(e.count)) || 1]).range([0, W / 2]), U = G.filter((e) => e && e.count != null && e.value != null);
68
- let g = [...U.map((e) => ({
69
- x: n + K(e.count),
70
- y: m(e.value)
71
- })), ...U.slice().reverse().map((e) => ({
72
- x: n - K(e.count),
73
- y: m(e.value)
74
- }))];
75
- if (g.length > 2) {
76
- const e = g.slice(1);
77
- e.push(g[0]), e.push(g[1]), g = e;
78
- }
79
- const Z = ge().x((e) => o ? e.y : e.x).y((e) => o ? e.x : e.y).curve($e)(g) ?? null;
80
- return /* @__PURE__ */ S(ce.Fragment, {
81
- //display plots if enough data provided
82
- children: [
83
- /* @__PURE__ */ S("g", { onMouseLeave: _, transform: o ? `translate(${Q}, 0)` : "translate(0, 0)", children: [
84
- t.data.length >= (l?.pointDisplayThreshold ?? 3) && !H && Z && /* @__PURE__ */ p(oe, { children: /* @__PURE__ */ p("path", { d: Z, fill: t.violinColor ?? "none", fillOpacity: t.opacity ?? 0.3, stroke: t.violinColor ?? "black", strokeOpacity: t.opacity ?? 1, strokeWidth: a === L ? (l?.stroke ?? 1) + 1 : l?.stroke ?? 1, pointerEvents: "all", onMouseMove: (e) => M(e, L), onClick: J }) }),
85
- t.data.length >= (l?.pointDisplayThreshold ?? 3) && !P && /* @__PURE__ */ p(se, { crossProps: D, left: o ? 0 : n, top: o ? n : 0, median: E, firstQuartile: F, thirdQuartile: j, valueScale: m, medianWidth: ae, tooltipData: a ?? {}, handleMouseMove: M, handleCrossClick: J, disableViolinPlot: H, tooltip: L, horizontal: o }),
86
- ee.map((e, s) => {
87
- const r = m(e.value), x = m(e.value), f = o ? x : n, d = o ? n : r, c = {
88
- outlier: !0,
89
- label: t.label,
90
- value: e.value.toFixed(2)
91
- }, h = k ? a?.point === e : a?.label === c.label && a?.value === c.value, i = e.radius ?? 4;
92
- return /* @__PURE__ */ p("circle", { cx: f, cy: d, r: h ? i + 1 : i, stroke: h ? "#000000" : e.stroke ?? "none", fill: e.color ?? t.violinColor ?? "#000000", opacity: e.opacity ?? t.opacity ?? 1, pointerEvents: "all", onMouseMove: (v) => M(v, c, e), onClick: () => O(e) }, `outlier-${s}`);
93
- }),
94
- t.data.length >= (l?.pointDisplayThreshold ?? 3) && l?.showAllPoints && te.map((e, s) => {
95
- const r = m(e.value), x = m(e.value), f = l?.jitter ?? 0, d = `${t.label}-${e}-${s}`, c = f > 0 ? (ue(d) - 0.5) * 2 * f : 0, h = o ? x : n + c, i = o ? n + c : r, v = {
96
- label: t.label,
97
- value: e.value.toFixed(2)
98
- }, B = k ? a?.point === e : a?.label === v.label && a?.value === v.value, I = e.radius ?? 2, y = B ? I + 1 : I;
99
- return /* @__PURE__ */ p("path", { d: `M ${h},${i} m -${y},0 a ${y},${y} 0 1,0 ${2 * y},0 a ${y},${y} 0 1,0 -${2 * y},0`, stroke: B ? "black" : e.stroke ?? "none", fill: e.color ?? t.violinColor ?? "black", opacity: e.opacity ?? t.opacity ?? 1, pointerEvents: "all", onMouseMove: (le) => M(le, v, e), onClick: () => O(e) }, `${$}-point-${s}`);
100
- }),
101
- t.data.length < (l?.pointDisplayThreshold ?? 3) && t.data.map((e, s) => {
102
- const r = m(e.value), x = m(e.value), f = o ? x : n, d = o ? n : r, c = e.radius ?? 2, h = {
103
- label: t.label,
104
- value: e.value.toFixed(2)
105
- }, i = k ? a?.point === e : a?.label === h.label && a?.value === h.value;
106
- return /* @__PURE__ */ p("circle", { cx: f, cy: d, r: i ? c + 1 : c, stroke: i ? "black" : e.stroke ?? "none", fill: e.color ?? t.violinColor ?? "black", opacity: e.opacity ?? t.opacity ?? 1, pointerEvents: "all", onMouseMove: (v) => M(v, h, e), onClick: () => O(e) }, `thresh-${s}`);
107
- })
108
- ] }, `group-${$}`),
109
- V && a && /* @__PURE__ */ p(xe, { children: /* @__PURE__ */ p(de, { left: X ?? 0, top: N ?? 0, data: a, open: V, pointTooltipBody: k }, `${X}-${N}`) })
110
- ]
111
- }, `frag-${$}`);
20
+ width: c,
21
+ height: f
22
+ } = s, m = h - c - 4;
23
+ let o;
24
+ t[2] !== f || t[3] !== c ? (o = /* @__PURE__ */ a("rect", { width: c, height: f, fill: "white", stroke: "#d4d4d4", strokeWidth: 1, rx: 3 }), t[2] = f, t[3] = c, t[4] = o) : o = t[4];
25
+ let i;
26
+ t[5] !== e ? (i = e.map(H), t[5] = e, t[6] = i) : i = t[6];
27
+ let d;
28
+ return t[7] !== m || t[8] !== o || t[9] !== i ? (d = /* @__PURE__ */ p(x, { left: m, top: 4, children: [
29
+ o,
30
+ i
31
+ ] }), t[7] = m, t[8] = o, t[9] = i, t[10] = d) : d = t[10], d;
112
32
  };
33
+ function H(n, t) {
34
+ return /* @__PURE__ */ p(x, { top: r + t * g, children: [
35
+ /* @__PURE__ */ a("rect", { x: r, y: 2, width: l, height: l, fill: n.color, opacity: 0.85, rx: 2 }),
36
+ /* @__PURE__ */ a("text", { x: r + l + u, y: l / 2 + 2, dominantBaseline: "middle", fontSize: 11, children: n.label })
37
+ ] }, `legend-${t}`);
38
+ }
113
39
  export {
114
- Re as default
40
+ W as default,
41
+ G as legendDimensions
115
42
  };
116
43
  //# sourceMappingURL=visualization.es48.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es48.js","sources":["../src/components/ViolinPlot/singleViolin.tsx"],"sourcesContent":["import { scaleLinear } from '@visx/scale';\nimport { max as d3max } from '@visx/vendor/d3-array';\nimport { curveBasis } from '@visx/curve';\nimport { line } from '@visx/shape';\nimport { range } from '@visx/vendor/d3-array';\nimport React, { useCallback, useMemo } from \"react\";\nimport CrossPlot from \"./crossPlot\";\nimport { calculateBoxStats, scottRule, silvermanRule, kernelDensityEstimator, gaussian, seededRandom } from \"./helpers\";\nimport { ViolinPoint, SingleViolinProps, TooltipData } from \"./types\";\nimport ViolinTooltip from \"./violinTooltip\";\nimport { Portal, useTooltip } from \"@visx/tooltip\";\n\nconst SingleViolin = <T,>({\n distribution,\n distIndex,\n violinProps,\n crossProps,\n valueScale,\n labelScale,\n offset,\n labels,\n disableCrossPlot,\n disableViolinPlot,\n horizontal,\n pointTooltipBody,\n onViolinClicked,\n onPointClicked\n}: SingleViolinProps<T>) => {\n\n const {\n tooltipData,\n tooltipLeft,\n tooltipTop,\n tooltipOpen,\n showTooltip,\n hideTooltip,\n } = useTooltip<TooltipData<T>>();\n\n const data = distribution.data.flatMap(d => d.value)\n\n //get all the stats for the box plot\n const { min, max, firstQuartile, thirdQuartile, median, outliers } = calculateBoxStats(data, crossProps?.outliers ?? \"all\");\n\n const outlierPoints: ViolinPoint<T>[] = distribution.data\n .filter(d => outliers.includes(d.value))\n .map(d => ({\n ...d,\n outlier: true\n }));\n const pointsNoOutliers: ViolinPoint<T>[] = distribution.data.filter(d => !outliers.includes(d.value))\n\n const violinData = useMemo(() => {\n const step = (max - min) / Math.max(100, data.length);\n const ticks = range(min, max, step);\n\n //bandwidth / binwidth for smoothing, based on user input\n const bandwidth = typeof violinProps?.bandwidth === \"number\"\n ? violinProps.bandwidth\n : typeof violinProps?.bandwidth === \"function\"\n ? violinProps.bandwidth(data)\n : violinProps?.bandwidth === \"scott\"\n ? scottRule(data)\n : silvermanRule(data);\n\n const kde = kernelDensityEstimator(gaussian(bandwidth), ticks);\n\n const densityData = kde(data);\n\n return [...densityData].sort((a, b) => a.value - b.value)\n }, [data, max, min, violinProps])\n\n const violinWidth = Math.min(labelScale.bandwidth(), 50);\n const boxWidth = crossProps?.medianWidth ?? violinWidth * .25;\n\n const violinTooltip: TooltipData<T> = useMemo(() => ({\n label: distribution.label,\n sampleSize: distribution.data.length,\n median: median.toFixed(2),\n firstQuartile: firstQuartile.toFixed(2),\n thirdQuartile: thirdQuartile.toFixed(2)\n }), [distribution.label, distribution.data.length, median, firstQuartile, thirdQuartile]);\n\n const handleMouseMove = useCallback((event: React.MouseEvent<SVGPathElement>, data: TooltipData<T>, point?: ViolinPoint<T>) => {\n showTooltip({\n tooltipData: point && pointTooltipBody ? { point: point } : data,\n tooltipLeft: event.pageX,\n tooltipTop: event.pageY,\n });\n }, [pointTooltipBody, showTooltip]);\n\n const handleViolinClick = () => {\n if (!onViolinClicked || !tooltipData) return;\n\n if (tooltipData) {\n onViolinClicked(distribution);\n }\n };\n\n const handlePointClick = (point: ViolinPoint<T>) => {\n if (!onPointClicked || !tooltipData) return;\n\n if (tooltipData) {\n onPointClicked(point);\n }\n };\n\n //center of each Violin\n const violinCenter = horizontal ? (labelScale(labels[distIndex]) ?? 0) + violinWidth / 2 : (labelScale(labels[distIndex]) ?? 0) + offset + labelScale.bandwidth() / 2;\n const widthScale = scaleLinear()\n .domain([0, d3max(violinData, d => Math.abs(d.count)) || 1])\n .range([0, violinWidth / 2]);\n\n //filter out nan values if any\n const filteredData = violinData.filter(d => d && d.count != null && d.value != null);\n\n //mirror the data so that both sides are drawn\n let points = [\n ...filteredData.map(d => ({\n x: violinCenter + (widthScale(d.count) as number),\n y: valueScale(d.value),\n })),\n ...filteredData.slice().reverse().map(d => ({\n x: violinCenter - (widthScale(d.count) as number),\n y: valueScale(d.value),\n }))\n ];\n\n // close the path at the second point instead of the first since points 0,1 are closer together\n if (points.length > 2) {\n const modifiedPoints = points.slice(1);\n modifiedPoints.push(points[0]);\n modifiedPoints.push(points[1]);\n points = modifiedPoints;\n }\n\n const violinPath = line<{ x: number; y: number }>()\n .x(d => horizontal ? d.y : d.x)\n .y(d => horizontal ? d.x : d.y)\n .curve(curveBasis)(points) ?? null;\n\n return (\n <React.Fragment key={`frag-${distIndex}`}>\n {\n //display plots if enough data provided\n <g\n key={`group-${distIndex}`}\n onMouseLeave={hideTooltip}\n transform={horizontal ? `translate(${offset}, 0)` : `translate(0, 0)`}\n >\n {distribution.data.length >= (violinProps?.pointDisplayThreshold ?? 3) && !disableViolinPlot && violinPath && (\n <>\n <path\n d={violinPath}\n fill={distribution.violinColor ?? 'none'}\n fillOpacity={distribution.opacity ?? 0.3}\n stroke={distribution.violinColor ?? 'black'}\n strokeOpacity={distribution.opacity ?? 1}\n strokeWidth={\n tooltipData === violinTooltip\n ? (violinProps?.stroke ?? 1) + 1\n : violinProps?.stroke ?? 1\n }\n pointerEvents=\"all\"\n onMouseMove={(e) => handleMouseMove(e, violinTooltip)}\n onClick={handleViolinClick}\n />\n </>\n )\n }\n {distribution.data.length >= (violinProps?.pointDisplayThreshold ?? 3) && !disableCrossPlot &&\n <CrossPlot\n crossProps={crossProps}\n left={horizontal ? 0 : violinCenter}\n top={horizontal ? violinCenter : 0}\n median={median}\n firstQuartile={firstQuartile}\n thirdQuartile={thirdQuartile}\n valueScale={valueScale}\n medianWidth={boxWidth}\n tooltipData={tooltipData ?? {}}\n handleMouseMove={handleMouseMove}\n handleCrossClick={handleViolinClick}\n disableViolinPlot={disableViolinPlot}\n tooltip={violinTooltip}\n horizontal={horizontal}\n />\n }\n {/* Outliers */}\n {outlierPoints.map((outlier, index) => {\n const vertcy = valueScale(outlier.value);\n const horizoncx = valueScale(outlier.value)\n const cx = horizontal ? horizoncx : violinCenter\n const cy = horizontal ? violinCenter : vertcy\n\n const pointTooltip = {\n outlier: true,\n label: distribution.label,\n value: outlier.value.toFixed(2),\n };\n\n const isHighlighted = pointTooltipBody\n ? tooltipData?.point === outlier :\n tooltipData?.label === pointTooltip.label &&\n tooltipData?.value === pointTooltip.value;\n\n const radius = outlier.radius ?? 4\n\n return (\n <circle\n key={`outlier-${index}`}\n cx={cx}\n cy={cy}\n r={isHighlighted ? radius + 1 : radius}\n stroke={isHighlighted ? \"#000000\" : (outlier.stroke ?? \"none\")}\n fill={outlier.color ?? distribution.violinColor ?? \"#000000\"}\n opacity={outlier.opacity ?? distribution.opacity ?? 1}\n pointerEvents=\"all\"\n onMouseMove={(e) => handleMouseMove(e, pointTooltip, outlier)}\n onClick={() => handlePointClick(outlier)}\n />\n )\n })}\n {/* show all poionts for each distribution */}\n {distribution.data.length >= (violinProps?.pointDisplayThreshold ?? 3) && violinProps?.showAllPoints &&\n pointsNoOutliers.map((point: ViolinPoint<T>, index: number) => {\n\n const vertcy = valueScale(point.value);\n const horizoncx = valueScale(point.value)\n\n const jitterAmount = violinProps?.jitter ?? 0;\n const seed = `${distribution.label}-${point}-${index}`;\n const jitterX = jitterAmount > 0\n ? (seededRandom(seed) - 0.5) * 2 * jitterAmount\n : 0;\n\n const cx = horizontal ? horizoncx : violinCenter + jitterX;\n const cy = horizontal ? violinCenter + jitterX : vertcy\n\n const pointTooltip = {\n label: distribution.label,\n value: point.value.toFixed(2),\n };\n\n const isHighlighted = pointTooltipBody\n ? tooltipData?.point === point :\n tooltipData?.label === pointTooltip.label &&\n tooltipData?.value === pointTooltip.value;\n\n const r = point.radius ?? 2\n const radius = isHighlighted ? r + 1 : r;\n\n return (\n <path\n key={`${distIndex}-point-${index}`}\n d={`M ${cx},${cy} m -${radius},0 a ${radius},${radius} 0 1,0 ${2 * radius},0 a ${radius},${radius} 0 1,0 -${2 * radius},0`}\n stroke={isHighlighted ? \"black\" : (point.stroke ?? \"none\")}\n fill={point.color ?? distribution.violinColor ?? \"black\"}\n opacity={point.opacity ?? distribution.opacity ?? 1}\n pointerEvents=\"all\"\n onMouseMove={(e) => handleMouseMove(e, pointTooltip, point)}\n onClick={() => handlePointClick(point)}\n />\n );\n })\n }\n {/* display points if data points are less than threshold (3) */}\n {distribution.data.length < (violinProps?.pointDisplayThreshold ?? 3) &&\n distribution.data.map((point: ViolinPoint<T>, index: number) => {\n const vertcy = valueScale(point.value);\n const horizoncx = valueScale(point.value)\n const cx = horizontal ? horizoncx : violinCenter\n const cy = horizontal ? violinCenter : vertcy\n const radius = point.radius ?? 2;\n\n const pointTooltip = {\n label: distribution.label,\n value: point.value.toFixed(2),\n };\n\n const isHighlighted = pointTooltipBody\n ? tooltipData?.point === point :\n tooltipData?.label === pointTooltip.label &&\n tooltipData?.value === pointTooltip.value;\n\n return (\n <circle\n key={`thresh-${index}`}\n cx={cx}\n cy={cy}\n r={isHighlighted ? radius + 1 : radius}\n stroke={isHighlighted ? \"black\" : (point.stroke ?? \"none\")}\n fill={point.color ?? distribution.violinColor ?? \"black\"}\n opacity={point.opacity ?? distribution.opacity ?? 1}\n pointerEvents=\"all\"\n onMouseMove={(e) => handleMouseMove(e, pointTooltip, point)}\n onClick={() => handlePointClick(point)}\n />\n );\n })}\n\n </g>\n }\n {tooltipOpen && tooltipData && (\n <Portal>\n <ViolinTooltip\n left={tooltipLeft ?? 0}\n top={tooltipTop ?? 0}\n data={tooltipData}\n open={tooltipOpen}\n key={`${tooltipLeft}-${tooltipTop}`}\n pointTooltipBody={pointTooltipBody}\n />\n </Portal>\n )}\n </React.Fragment>\n )\n}\n\nexport default SingleViolin;"],"names":["SingleViolin","distribution","distIndex","violinProps","crossProps","valueScale","labelScale","offset","labels","disableCrossPlot","disableViolinPlot","horizontal","pointTooltipBody","onViolinClicked","onPointClicked","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","showTooltip","hideTooltip","useTooltip","data","flatMap","d","value","min","max","firstQuartile","thirdQuartile","median","outliers","calculateBoxStats","outlierPoints","filter","includes","map","outlier","pointsNoOutliers","violinData","useMemo","step","Math","length","ticks","range","bandwidth","scottRule","silvermanRule","kernelDensityEstimator","gaussian","sort","a","b","violinWidth","boxWidth","medianWidth","violinTooltip","label","sampleSize","toFixed","handleMouseMove","useCallback","event","point","pageX","pageY","handleViolinClick","handlePointClick","violinCenter","widthScale","scaleLinear","domain","d3max","abs","count","filteredData","points","x","y","slice","reverse","modifiedPoints","push","violinPath","line","curve","curveBasis","jsxs","React","pointDisplayThreshold","jsx","Fragment","violinColor","opacity","stroke","e","CrossPlot","index","vertcy","horizoncx","cx","cy","pointTooltip","isHighlighted","radius","color","showAllPoints","jitterAmount","jitter","seed","jitterX","seededRandom","r","Portal","ViolinTooltip"],"mappings":"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"}
1
+ {"version":3,"file":"visualization.es48.js","sources":["../src/components/Histogram/HistogramLegend.tsx"],"sourcesContent":["import React from 'react';\nimport { Group } from '@visx/group';\nimport { HistogramSeries } from './types';\n\nconst ROW_HEIGHT = 18;\nconst SWATCH = 12;\nconst GAP = 6;\nconst PADDING = 8;\n\ninterface HistogramLegendProps {\n series: HistogramSeries[];\n xMax: number;\n}\n\nexport function legendDimensions(series: HistogramSeries[]) {\n const width = Math.max(...series.map((s) => s.label.length)) * 7 + SWATCH + GAP + PADDING * 2;\n const height = series.length * ROW_HEIGHT + PADDING * 2;\n return { width, height };\n}\n\nconst HistogramLegend = ({ series, xMax }: HistogramLegendProps) => {\n const { width, height } = legendDimensions(series);\n\n return (\n <Group left={xMax - width - 4} top={4}>\n <rect width={width} height={height} fill=\"white\" stroke=\"#d4d4d4\" strokeWidth={1} rx={3} />\n {series.map((s, i) => (\n <Group key={`legend-${i}`} top={PADDING + i * ROW_HEIGHT}>\n <rect x={PADDING} y={2} width={SWATCH} height={SWATCH} fill={s.color} opacity={0.85} rx={2} />\n <text\n x={PADDING + SWATCH + GAP}\n y={SWATCH / 2 + 2}\n dominantBaseline=\"middle\"\n fontSize={11}\n >\n {s.label}\n </text>\n </Group>\n ))}\n </Group>\n );\n};\n\nexport default HistogramLegend;\n"],"names":["ROW_HEIGHT","SWATCH","GAP","PADDING","legendDimensions","series","width","Math","max","map","s","label","length","height","HistogramLegend","t0","$","_c","xMax","t1","t2","t3","jsx","t4","_temp","t5","jsxs","Group","i","color"],"mappings":";;;AAIA,MAAMA,IAAa,IACbC,IAAS,IACTC,IAAM,GACNC,IAAU;AAOT,SAASC,EAAiBC,GAA2B;AACxD,QAAMC,IAAQC,KAAKC,IAAI,GAAGH,EAAOI,IAAKC,CAAAA,MAAMA,EAAEC,MAAMC,MAAM,CAAC,IAAI,IAAIX,IAASC,IAAMC,IAAU,GACtFU,IAASR,EAAOO,SAASZ,IAAaG,IAAU;AACtD,SAAO;AAAA,IAAEG,OAAAA;AAAAA,IAAOO,QAAAA;AAAAA,EAAAA;AACpB;AAEA,MAAMC,IAAkBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAC;AAAA,IAAAZ,QAAAA;AAAAA,IAAAa,MAAAA;AAAAA,EAAAA,IAAAH;AAAsC,MAAAI;AAAA,EAAAH,SAAAX,KACjCc,IAAAf,EAAiBC,CAAM,GAACW,OAAAX,GAAAW,OAAAG,KAAAA,IAAAH,EAAA,CAAA;AAAlD,QAAA;AAAA,IAAAV,OAAAA;AAAAA,IAAAO,QAAAA;AAAAA,EAAAA,IAA0BM,GAGTC,IAAAF,IAAOZ,IAAQ;AAAC,MAAAe;AAAA,EAAAL,EAAA,CAAA,MAAAH,KAAAG,SAAAV,KACzBe,IAAA,gBAAAC,EAAA,QAAA,EAAahB,OAAAA,GAAeO,QAAAA,GAAa,MAAA,SAAe,QAAA,WAAuB,aAAA,GAAO,IAAA,EAAA,CAAC,GAAIG,OAAAH,GAAAG,OAAAV,GAAAU,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAO;AAAA,EAAAP,SAAAX,KAC1FkB,IAAAlB,EAAMI,IAAKe,CAYX,GAACR,OAAAX,GAAAW,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,EAAA,CAAA,MAAAI,KAAAJ,SAAAK,KAAAL,EAAA,CAAA,MAAAO,KAdNE,IAAA,gBAAAC,EAACC,GAAA,EAAY,MAAAP,GAAuB,KAAA,GAChCC,UAAAA;AAAAA,IAAAA;AAAAA,IACCE;AAAAA,EAAAA,GAaL,GAAQP,OAAAI,GAAAJ,OAAAK,GAAAL,OAAAO,GAAAP,QAAAS,KAAAA,IAAAT,EAAA,EAAA,GAfRS;AAeQ;AAnBQ,SAAAD,EAAAd,GAAAkB,GAAA;AAAA,SAOR,gBAAAF,EAACC,GAAA,EAA+B,KAAAxB,IAAUyB,IAAI5B,GAC1C,UAAA;AAAA,IAAA,gBAAAsB,EAAA,QAAA,EAASnB,GAAAA,GAAY,MAAUF,OAAAA,GAAgBA,QAAAA,GAAc,MAAAS,EAACmB,OAAiB,SAAA,MAAU,IAAA,GAAC;AAAA,IAC1F,gBAAAP,YACO,GAAAnB,IAAUF,IAASC,GACnB,GAAAD,IAAS,IAAI,GACC,kBAAA,UACP,UAAA,IAETS,YAACC,MAAAA,CACN;AAAA,EAAA,EAAA,GATQ,UAAUiB,CAAC,EAUvB;AAAQ;"}
@@ -1,61 +1,54 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import { useContext as u, Component as l } from "react";
3
- import { usePresence as c } from "./visualization.es222.js";
4
- import { LayoutGroupContext as f } from "./visualization.es223.js";
5
- import { SwitchLayoutGroupContext as d } from "./visualization.es225.js";
6
- import { frame as h } from "./visualization.es334.js";
7
- import { microtask as y } from "./visualization.es373.js";
8
- import { globalProjectionState as g } from "./visualization.es469.js";
9
- let i = !1;
10
- class v extends l {
11
- /**
12
- * This only mounts projection nodes for components that
13
- * need measuring, we might want to do it for all components
14
- * in order to incorporate transforms
15
- */
16
- componentDidMount() {
17
- const { visualElement: t, layoutGroup: o, switchLayoutGroup: e, layoutId: s } = this.props, { projection: n } = t;
18
- n && (o.group && o.group.add(n), e && e.register && s && e.register(n), i && n.root.didUpdate(), n.addEventListener("animationComplete", () => {
19
- this.safeToRemove();
20
- }), n.setOptions({
21
- ...n.options,
22
- layoutDependency: this.props.layoutDependency,
23
- onExitComplete: () => this.safeToRemove()
24
- })), g.hasEverUpdated = !0;
25
- }
26
- getSnapshotBeforeUpdate(t) {
27
- const { layoutDependency: o, visualElement: e, drag: s, isPresent: n } = this.props, { projection: r } = e;
28
- return r && (r.isPresent = n, t.layoutDependency !== o && r.setOptions({
29
- ...r.options,
30
- layoutDependency: o
31
- }), i = !0, s || t.layoutDependency !== o || o === void 0 || t.isPresent !== n ? r.willUpdate() : this.safeToRemove(), t.isPresent !== n && (n ? r.promote() : r.relegate() || h.postRender(() => {
32
- const p = r.getStack();
33
- (!p || !p.members.length) && this.safeToRemove();
34
- }))), null;
35
- }
36
- componentDidUpdate() {
37
- const { visualElement: t, layoutAnchor: o } = this.props, { projection: e } = t;
38
- e && (e.options.layoutAnchor = o, e.root.didUpdate(), y.postRender(() => {
39
- !e.currentAnimation && e.isLead() && this.safeToRemove();
40
- }));
41
- }
42
- componentWillUnmount() {
43
- const { visualElement: t, layoutGroup: o, switchLayoutGroup: e } = this.props, { projection: s } = t;
44
- i = !0, s && (s.scheduleCheckAfterUnmount(), o && o.group && o.group.remove(s), e && e.deregister && e.deregister(s));
45
- }
46
- safeToRemove() {
47
- const { safeToRemove: t } = this.props;
48
- t && t();
49
- }
50
- render() {
51
- return null;
1
+ import { addUniqueItem as a, removeItem as r } from "./visualization.es477.js";
2
+ class h {
3
+ constructor() {
4
+ this.members = [];
5
+ }
6
+ add(e) {
7
+ a(this.members, e);
8
+ for (let t = this.members.length - 1; t >= 0; t--) {
9
+ const s = this.members[t];
10
+ if (s === e || s === this.lead || s === this.prevLead)
11
+ continue;
12
+ const i = s.instance;
13
+ (!i || i.isConnected === !1) && !s.snapshot && (r(this.members, s), s.unmount());
14
+ }
15
+ e.scheduleRender();
16
+ }
17
+ remove(e) {
18
+ if (r(this.members, e), e === this.prevLead && (this.prevLead = void 0), e === this.lead) {
19
+ const t = this.members[this.members.length - 1];
20
+ t && this.promote(t);
21
+ }
22
+ }
23
+ relegate(e) {
24
+ for (let t = this.members.indexOf(e) - 1; t >= 0; t--) {
25
+ const s = this.members[t];
26
+ if (s.isPresent !== !1 && s.instance?.isConnected !== !1)
27
+ return this.promote(s), !0;
28
+ }
29
+ return !1;
30
+ }
31
+ promote(e, t) {
32
+ const s = this.lead;
33
+ if (e !== s && (this.prevLead = s, this.lead = e, e.show(), s)) {
34
+ s.updateSnapshot(), e.scheduleRender();
35
+ const { layoutDependency: i } = s.options, { layoutDependency: n } = e.options;
36
+ (i === void 0 || i !== n) && (e.resumeFrom = s, t && (s.preserveOpacity = !0), s.snapshot && (e.snapshot = s.snapshot, e.snapshot.latestValues = s.animationValues || s.latestValues), e.root?.isUpdating && (e.isLayoutDirty = !0)), e.options.crossfade === !1 && s.hide();
37
+ }
38
+ }
39
+ exitAnimationComplete() {
40
+ this.members.forEach((e) => {
41
+ e.options.onExitComplete?.(), e.resumingFrom?.options.onExitComplete?.();
42
+ });
43
+ }
44
+ scheduleRender() {
45
+ this.members.forEach((e) => e.instance && e.scheduleRender(!1));
46
+ }
47
+ removeLeadSnapshot() {
48
+ this.lead?.snapshot && (this.lead.snapshot = void 0);
52
49
  }
53
- }
54
- function E(a) {
55
- const [t, o] = c(), e = u(f);
56
- return m(v, { ...a, layoutGroup: e, switchLayoutGroup: u(d), isPresent: t, safeToRemove: o });
57
50
  }
58
51
  export {
59
- E as MeasureLayout
52
+ h as NodeStack
60
53
  };
61
54
  //# sourceMappingURL=visualization.es480.js.map