@neural-charts/native 0.0.0-stage → 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/README.md +58 -2
  2. package/THIRD-PARTY-NOTICES.md +15 -0
  3. package/docs/guide.md +783 -0
  4. package/library/annular-hit.d.ts +10 -0
  5. package/library/annular-hit.d.ts.map +1 -0
  6. package/library/annular-hit.js +43 -0
  7. package/library/annular-hit.js.map +1 -0
  8. package/library/chart-capabilities.d.ts +326 -0
  9. package/library/chart-capabilities.d.ts.map +1 -0
  10. package/library/chart-capabilities.js +39 -0
  11. package/library/chart-capabilities.js.map +1 -0
  12. package/library/circular-scene.d.ts +55 -0
  13. package/library/circular-scene.d.ts.map +1 -0
  14. package/library/circular-scene.js +39 -0
  15. package/library/circular-scene.js.map +1 -0
  16. package/library/comparison-render.d.ts +18 -0
  17. package/library/comparison-render.d.ts.map +1 -0
  18. package/library/comparison-render.js +33 -0
  19. package/library/comparison-render.js.map +1 -0
  20. package/library/comparison-scene.d.ts +40 -0
  21. package/library/comparison-scene.d.ts.map +1 -0
  22. package/library/comparison-scene.js +77 -0
  23. package/library/comparison-scene.js.map +1 -0
  24. package/library/composition-scene.d.ts +35 -0
  25. package/library/composition-scene.d.ts.map +1 -0
  26. package/library/composition-scene.js +55 -0
  27. package/library/composition-scene.js.map +1 -0
  28. package/library/contour-hit-index.d.ts +15 -0
  29. package/library/contour-hit-index.d.ts.map +1 -0
  30. package/library/contour-hit-index.js +75 -0
  31. package/library/contour-hit-index.js.map +1 -0
  32. package/library/contour-label-anchors.d.ts +9 -0
  33. package/library/contour-label-anchors.d.ts.map +1 -0
  34. package/library/contour-label-anchors.js +20 -0
  35. package/library/contour-label-anchors.js.map +1 -0
  36. package/library/contour-scene.d.ts +10 -0
  37. package/library/contour-scene.d.ts.map +1 -0
  38. package/library/contour-scene.js +76 -0
  39. package/library/contour-scene.js.map +1 -0
  40. package/library/contracts.d.ts +445 -0
  41. package/library/contracts.d.ts.map +1 -0
  42. package/library/contracts.js +2 -0
  43. package/library/contracts.js.map +1 -0
  44. package/library/dendrogram-scene.d.ts +7 -0
  45. package/library/dendrogram-scene.d.ts.map +1 -0
  46. package/library/dendrogram-scene.js +28 -0
  47. package/library/dendrogram-scene.js.map +1 -0
  48. package/library/empty-state.d.ts +8 -0
  49. package/library/empty-state.d.ts.map +1 -0
  50. package/library/empty-state.js +30 -0
  51. package/library/empty-state.js.map +1 -0
  52. package/library/heatmap-hit.d.ts +27 -0
  53. package/library/heatmap-hit.d.ts.map +1 -0
  54. package/library/heatmap-hit.js +56 -0
  55. package/library/heatmap-hit.js.map +1 -0
  56. package/library/heatmap-scene.d.ts +17 -0
  57. package/library/heatmap-scene.d.ts.map +1 -0
  58. package/library/heatmap-scene.js +85 -0
  59. package/library/heatmap-scene.js.map +1 -0
  60. package/library/index.d.ts +14 -0
  61. package/library/index.d.ts.map +1 -0
  62. package/library/index.js +4 -0
  63. package/library/index.js.map +1 -0
  64. package/library/interaction-content.d.ts +4 -0
  65. package/library/interaction-content.d.ts.map +1 -0
  66. package/library/interaction-content.js +28 -0
  67. package/library/interaction-content.js.map +1 -0
  68. package/library/interaction.d.ts +75 -0
  69. package/library/interaction.d.ts.map +1 -0
  70. package/library/interaction.js +523 -0
  71. package/library/interaction.js.map +1 -0
  72. package/library/marker-style.d.ts +24 -0
  73. package/library/marker-style.d.ts.map +1 -0
  74. package/library/marker-style.js +43 -0
  75. package/library/marker-style.js.map +1 -0
  76. package/library/parallel-scene.d.ts +11 -0
  77. package/library/parallel-scene.d.ts.map +1 -0
  78. package/library/parallel-scene.js +44 -0
  79. package/library/parallel-scene.js.map +1 -0
  80. package/library/path-validation.d.ts +3 -0
  81. package/library/path-validation.d.ts.map +1 -0
  82. package/library/path-validation.js +78 -0
  83. package/library/path-validation.js.map +1 -0
  84. package/library/pictorial-hit.d.ts +19 -0
  85. package/library/pictorial-hit.d.ts.map +1 -0
  86. package/library/pictorial-hit.js +73 -0
  87. package/library/pictorial-hit.js.map +1 -0
  88. package/library/pictorial-scene.d.ts +16 -0
  89. package/library/pictorial-scene.d.ts.map +1 -0
  90. package/library/pictorial-scene.js +73 -0
  91. package/library/pictorial-scene.js.map +1 -0
  92. package/library/point-label-placement.d.ts +34 -0
  93. package/library/point-label-placement.d.ts.map +1 -0
  94. package/library/point-label-placement.js +24 -0
  95. package/library/point-label-placement.js.map +1 -0
  96. package/library/polar-grid.d.ts +5 -0
  97. package/library/polar-grid.d.ts.map +1 -0
  98. package/library/polar-grid.js +28 -0
  99. package/library/polar-grid.js.map +1 -0
  100. package/library/polygon-hit.d.ts +18 -0
  101. package/library/polygon-hit.d.ts.map +1 -0
  102. package/library/polygon-hit.js +98 -0
  103. package/library/polygon-hit.js.map +1 -0
  104. package/library/profile-scene.d.ts +11 -0
  105. package/library/profile-scene.d.ts.map +1 -0
  106. package/library/profile-scene.js +51 -0
  107. package/library/profile-scene.js.map +1 -0
  108. package/library/relationship-hit-index.d.ts +12 -0
  109. package/library/relationship-hit-index.d.ts.map +1 -0
  110. package/library/relationship-hit-index.js +87 -0
  111. package/library/relationship-hit-index.js.map +1 -0
  112. package/library/relationship-scene.d.ts +12 -0
  113. package/library/relationship-scene.d.ts.map +1 -0
  114. package/library/relationship-scene.js +62 -0
  115. package/library/relationship-scene.js.map +1 -0
  116. package/library/scene-paint.d.ts +29 -0
  117. package/library/scene-paint.d.ts.map +1 -0
  118. package/library/scene-paint.js +123 -0
  119. package/library/scene-paint.js.map +1 -0
  120. package/library/scene-styles.d.ts +13 -0
  121. package/library/scene-styles.d.ts.map +1 -0
  122. package/library/scene-styles.js +135 -0
  123. package/library/scene-styles.js.map +1 -0
  124. package/library/scene.d.ts +49 -0
  125. package/library/scene.d.ts.map +1 -0
  126. package/library/scene.js +533 -0
  127. package/library/scene.js.map +1 -0
  128. package/library/temporal-hit-index.d.ts +13 -0
  129. package/library/temporal-hit-index.d.ts.map +1 -0
  130. package/library/temporal-hit-index.js +71 -0
  131. package/library/temporal-hit-index.js.map +1 -0
  132. package/library/temporal-scene.d.ts +6 -0
  133. package/library/temporal-scene.d.ts.map +1 -0
  134. package/library/temporal-scene.js +70 -0
  135. package/library/temporal-scene.js.map +1 -0
  136. package/library/tile-index.d.ts +11 -0
  137. package/library/tile-index.d.ts.map +1 -0
  138. package/library/tile-index.js +37 -0
  139. package/library/tile-index.js.map +1 -0
  140. package/library/tilemap-hit.d.ts +11 -0
  141. package/library/tilemap-hit.d.ts.map +1 -0
  142. package/library/tilemap-hit.js +63 -0
  143. package/library/tilemap-hit.js.map +1 -0
  144. package/library/tilemap-scene.d.ts +24 -0
  145. package/library/tilemap-scene.d.ts.map +1 -0
  146. package/library/tilemap-scene.js +125 -0
  147. package/library/tilemap-scene.js.map +1 -0
  148. package/library/uncertainty-scene.d.ts +11 -0
  149. package/library/uncertainty-scene.d.ts.map +1 -0
  150. package/library/uncertainty-scene.js +61 -0
  151. package/library/uncertainty-scene.js.map +1 -0
  152. package/library/venn-hit.d.ts +21 -0
  153. package/library/venn-hit.d.ts.map +1 -0
  154. package/library/venn-hit.js +37 -0
  155. package/library/venn-hit.js.map +1 -0
  156. package/library/venn-scene.d.ts +14 -0
  157. package/library/venn-scene.d.ts.map +1 -0
  158. package/library/venn-scene.js +84 -0
  159. package/library/venn-scene.js.map +1 -0
  160. package/library/wordcloud-scene.d.ts +19 -0
  161. package/library/wordcloud-scene.d.ts.map +1 -0
  162. package/library/wordcloud-scene.js +58 -0
  163. package/library/wordcloud-scene.js.map +1 -0
  164. package/native/activity.d.ts +14 -0
  165. package/native/activity.d.ts.map +1 -0
  166. package/native/activity.js +31 -0
  167. package/native/activity.js.map +1 -0
  168. package/native/bar-labels.d.ts +4 -0
  169. package/native/bar-labels.d.ts.map +1 -0
  170. package/native/bar-labels.js +16 -0
  171. package/native/bar-labels.js.map +1 -0
  172. package/native/bubble-entrance.d.ts +15 -0
  173. package/native/bubble-entrance.d.ts.map +1 -0
  174. package/native/bubble-entrance.js +27 -0
  175. package/native/bubble-entrance.js.map +1 -0
  176. package/native/chart-drilldown.d.ts +57 -0
  177. package/native/chart-drilldown.d.ts.map +1 -0
  178. package/native/chart-drilldown.js +118 -0
  179. package/native/chart-drilldown.js.map +1 -0
  180. package/native/chart-motion.d.ts +69 -0
  181. package/native/chart-motion.d.ts.map +1 -0
  182. package/native/chart-motion.js +165 -0
  183. package/native/chart-motion.js.map +1 -0
  184. package/native/chart-panels-options.d.ts +77 -0
  185. package/native/chart-panels-options.d.ts.map +1 -0
  186. package/native/chart-panels-options.js +2 -0
  187. package/native/chart-panels-options.js.map +1 -0
  188. package/native/chart-panels-state.d.ts +34 -0
  189. package/native/chart-panels-state.d.ts.map +1 -0
  190. package/native/chart-panels-state.js +198 -0
  191. package/native/chart-panels-state.js.map +1 -0
  192. package/native/chart-panels.d.ts +43 -0
  193. package/native/chart-panels.d.ts.map +1 -0
  194. package/native/chart-panels.js +107 -0
  195. package/native/chart-panels.js.map +1 -0
  196. package/native/chart-presentation.d.ts +40 -0
  197. package/native/chart-presentation.d.ts.map +1 -0
  198. package/native/chart-presentation.js +16 -0
  199. package/native/chart-presentation.js.map +1 -0
  200. package/native/chart-type.d.ts +65 -0
  201. package/native/chart-type.d.ts.map +1 -0
  202. package/native/chart-type.js +66 -0
  203. package/native/chart-type.js.map +1 -0
  204. package/native/chart.d.ts +571 -0
  205. package/native/chart.d.ts.map +1 -0
  206. package/native/chart.js +1417 -0
  207. package/native/chart.js.map +1 -0
  208. package/native/circular-options.d.ts +17 -0
  209. package/native/circular-options.d.ts.map +1 -0
  210. package/native/circular-options.js +2 -0
  211. package/native/circular-options.js.map +1 -0
  212. package/native/comparison-data.d.ts +64 -0
  213. package/native/comparison-data.d.ts.map +1 -0
  214. package/native/comparison-data.js +2 -0
  215. package/native/comparison-data.js.map +1 -0
  216. package/native/comparison-format.d.ts +16 -0
  217. package/native/comparison-format.d.ts.map +1 -0
  218. package/native/comparison-format.js +26 -0
  219. package/native/comparison-format.js.map +1 -0
  220. package/native/composition-options.d.ts +18 -0
  221. package/native/composition-options.d.ts.map +1 -0
  222. package/native/composition-options.js +2 -0
  223. package/native/composition-options.js.map +1 -0
  224. package/native/contour-data.d.ts +48 -0
  225. package/native/contour-data.d.ts.map +1 -0
  226. package/native/contour-data.js +2 -0
  227. package/native/contour-data.js.map +1 -0
  228. package/native/contour-format.d.ts +3 -0
  229. package/native/contour-format.d.ts.map +1 -0
  230. package/native/contour-format.js +11 -0
  231. package/native/contour-format.js.map +1 -0
  232. package/native/control-accessibility.d.ts +7 -0
  233. package/native/control-accessibility.d.ts.map +1 -0
  234. package/native/control-accessibility.js +9 -0
  235. package/native/control-accessibility.js.map +1 -0
  236. package/native/data-chart.d.ts +179 -0
  237. package/native/data-chart.d.ts.map +1 -0
  238. package/native/data-chart.js +415 -0
  239. package/native/data-chart.js.map +1 -0
  240. package/native/data-identities.d.ts +10 -0
  241. package/native/data-identities.d.ts.map +1 -0
  242. package/native/data-identities.js +50 -0
  243. package/native/data-identities.js.map +1 -0
  244. package/native/data-options.d.ts +566 -0
  245. package/native/data-options.d.ts.map +1 -0
  246. package/native/data-options.js +2 -0
  247. package/native/data-options.js.map +1 -0
  248. package/native/data-planning.d.ts +84 -0
  249. package/native/data-planning.d.ts.map +1 -0
  250. package/native/data-planning.js +174 -0
  251. package/native/data-planning.js.map +1 -0
  252. package/native/dendrogram-data.d.ts +27 -0
  253. package/native/dendrogram-data.d.ts.map +1 -0
  254. package/native/dendrogram-data.js +2 -0
  255. package/native/dendrogram-data.js.map +1 -0
  256. package/native/dendrogram-labels.d.ts +13 -0
  257. package/native/dendrogram-labels.d.ts.map +1 -0
  258. package/native/dendrogram-labels.js +12 -0
  259. package/native/dendrogram-labels.js.map +1 -0
  260. package/native/drilldown-options.d.ts +62 -0
  261. package/native/drilldown-options.d.ts.map +1 -0
  262. package/native/drilldown-options.js +2 -0
  263. package/native/drilldown-options.js.map +1 -0
  264. package/native/drilldown-state.d.ts +18 -0
  265. package/native/drilldown-state.d.ts.map +1 -0
  266. package/native/drilldown-state.js +130 -0
  267. package/native/drilldown-state.js.map +1 -0
  268. package/native/gauge-entrance.d.ts +8 -0
  269. package/native/gauge-entrance.d.ts.map +1 -0
  270. package/native/gauge-entrance.js +42 -0
  271. package/native/gauge-entrance.js.map +1 -0
  272. package/native/haptics.d.ts +21 -0
  273. package/native/haptics.d.ts.map +1 -0
  274. package/native/haptics.js +66 -0
  275. package/native/haptics.js.map +1 -0
  276. package/native/heatmap-data.d.ts +56 -0
  277. package/native/heatmap-data.d.ts.map +1 -0
  278. package/native/heatmap-data.js +2 -0
  279. package/native/heatmap-data.js.map +1 -0
  280. package/native/index.d.ts +26 -0
  281. package/native/index.d.ts.map +1 -0
  282. package/native/index.js +11 -0
  283. package/native/index.js.map +1 -0
  284. package/native/input-bridge.d.ts +32 -0
  285. package/native/input-bridge.d.ts.map +1 -0
  286. package/native/input-bridge.js +3 -0
  287. package/native/input-bridge.js.map +1 -0
  288. package/native/input-lease.d.ts +23 -0
  289. package/native/input-lease.d.ts.map +1 -0
  290. package/native/input-lease.js +28 -0
  291. package/native/input-lease.js.map +1 -0
  292. package/native/label-contrast.d.ts +7 -0
  293. package/native/label-contrast.d.ts.map +1 -0
  294. package/native/label-contrast.js +33 -0
  295. package/native/label-contrast.js.map +1 -0
  296. package/native/label-halo.d.ts +9 -0
  297. package/native/label-halo.d.ts.map +1 -0
  298. package/native/label-halo.js +23 -0
  299. package/native/label-halo.js.map +1 -0
  300. package/native/label-ink.d.ts +3 -0
  301. package/native/label-ink.d.ts.map +1 -0
  302. package/native/label-ink.js +6 -0
  303. package/native/label-ink.js.map +1 -0
  304. package/native/legend.d.ts +21 -0
  305. package/native/legend.d.ts.map +1 -0
  306. package/native/legend.js +66 -0
  307. package/native/legend.js.map +1 -0
  308. package/native/log-axis-labels.d.ts +6 -0
  309. package/native/log-axis-labels.d.ts.map +1 -0
  310. package/native/log-axis-labels.js +16 -0
  311. package/native/log-axis-labels.js.map +1 -0
  312. package/native/log-options.d.ts +5 -0
  313. package/native/log-options.d.ts.map +1 -0
  314. package/native/log-options.js +6 -0
  315. package/native/log-options.js.map +1 -0
  316. package/native/number-format.d.ts +5 -0
  317. package/native/number-format.d.ts.map +1 -0
  318. package/native/number-format.js +24 -0
  319. package/native/number-format.js.map +1 -0
  320. package/native/observation-format.d.ts +8 -0
  321. package/native/observation-format.d.ts.map +1 -0
  322. package/native/observation-format.js +80 -0
  323. package/native/observation-format.js.map +1 -0
  324. package/native/options-validation.d.ts +8 -0
  325. package/native/options-validation.d.ts.map +1 -0
  326. package/native/options-validation.js +612 -0
  327. package/native/options-validation.js.map +1 -0
  328. package/native/panel-viewport-contract.d.ts +15 -0
  329. package/native/panel-viewport-contract.d.ts.map +1 -0
  330. package/native/panel-viewport-contract.js +86 -0
  331. package/native/panel-viewport-contract.js.map +1 -0
  332. package/native/panel-viewport-sync.d.ts +27 -0
  333. package/native/panel-viewport-sync.d.ts.map +1 -0
  334. package/native/panel-viewport-sync.js +96 -0
  335. package/native/panel-viewport-sync.js.map +1 -0
  336. package/native/parallel-data.d.ts +49 -0
  337. package/native/parallel-data.d.ts.map +1 -0
  338. package/native/parallel-data.js +2 -0
  339. package/native/parallel-data.js.map +1 -0
  340. package/native/parallel-labels.d.ts +20 -0
  341. package/native/parallel-labels.d.ts.map +1 -0
  342. package/native/parallel-labels.js +54 -0
  343. package/native/parallel-labels.js.map +1 -0
  344. package/native/pictorial-data.d.ts +78 -0
  345. package/native/pictorial-data.d.ts.map +1 -0
  346. package/native/pictorial-data.js +2 -0
  347. package/native/pictorial-data.js.map +1 -0
  348. package/native/pictorial-format.d.ts +8 -0
  349. package/native/pictorial-format.d.ts.map +1 -0
  350. package/native/pictorial-format.js +14 -0
  351. package/native/pictorial-format.js.map +1 -0
  352. package/native/pictorial-options.d.ts +2 -0
  353. package/native/pictorial-options.d.ts.map +1 -0
  354. package/native/pictorial-options.js +61 -0
  355. package/native/pictorial-options.js.map +1 -0
  356. package/native/pictorial-paint.d.ts +19 -0
  357. package/native/pictorial-paint.d.ts.map +1 -0
  358. package/native/pictorial-paint.js +31 -0
  359. package/native/pictorial-paint.js.map +1 -0
  360. package/native/plan.d.ts +45 -0
  361. package/native/plan.d.ts.map +1 -0
  362. package/native/plan.js +109 -0
  363. package/native/plan.js.map +1 -0
  364. package/native/profile-data.d.ts +82 -0
  365. package/native/profile-data.d.ts.map +1 -0
  366. package/native/profile-data.js +2 -0
  367. package/native/profile-data.js.map +1 -0
  368. package/native/profile-labels.d.ts +5 -0
  369. package/native/profile-labels.d.ts.map +1 -0
  370. package/native/profile-labels.js +19 -0
  371. package/native/profile-labels.js.map +1 -0
  372. package/native/radial-entrance.d.ts +24 -0
  373. package/native/radial-entrance.d.ts.map +1 -0
  374. package/native/radial-entrance.js +25 -0
  375. package/native/radial-entrance.js.map +1 -0
  376. package/native/radial-layer.d.ts +26 -0
  377. package/native/radial-layer.d.ts.map +1 -0
  378. package/native/radial-layer.js +76 -0
  379. package/native/radial-layer.js.map +1 -0
  380. package/native/reference-labels.d.ts +21 -0
  381. package/native/reference-labels.d.ts.map +1 -0
  382. package/native/reference-labels.js +36 -0
  383. package/native/reference-labels.js.map +1 -0
  384. package/native/reference-options.d.ts +23 -0
  385. package/native/reference-options.d.ts.map +1 -0
  386. package/native/reference-options.js +58 -0
  387. package/native/reference-options.js.map +1 -0
  388. package/native/relationship-data.d.ts +63 -0
  389. package/native/relationship-data.d.ts.map +1 -0
  390. package/native/relationship-data.js +2 -0
  391. package/native/relationship-data.js.map +1 -0
  392. package/native/relationship-format.d.ts +13 -0
  393. package/native/relationship-format.d.ts.map +1 -0
  394. package/native/relationship-format.js +26 -0
  395. package/native/relationship-format.js.map +1 -0
  396. package/native/selection-outlines.d.ts +12 -0
  397. package/native/selection-outlines.d.ts.map +1 -0
  398. package/native/selection-outlines.js +20 -0
  399. package/native/selection-outlines.js.map +1 -0
  400. package/native/temporal-format.d.ts +29 -0
  401. package/native/temporal-format.d.ts.map +1 -0
  402. package/native/temporal-format.js +41 -0
  403. package/native/temporal-format.js.map +1 -0
  404. package/native/text-style.d.ts +16 -0
  405. package/native/text-style.d.ts.map +1 -0
  406. package/native/text-style.js +14 -0
  407. package/native/text-style.js.map +1 -0
  408. package/native/tilemap-color-axis.d.ts +23 -0
  409. package/native/tilemap-color-axis.d.ts.map +1 -0
  410. package/native/tilemap-color-axis.js +77 -0
  411. package/native/tilemap-color-axis.js.map +1 -0
  412. package/native/tilemap-data.d.ts +71 -0
  413. package/native/tilemap-data.d.ts.map +1 -0
  414. package/native/tilemap-data.js +2 -0
  415. package/native/tilemap-data.js.map +1 -0
  416. package/native/tilemap-format.d.ts +3 -0
  417. package/native/tilemap-format.d.ts.map +1 -0
  418. package/native/tilemap-format.js +14 -0
  419. package/native/tilemap-format.js.map +1 -0
  420. package/native/tilemap-selection.d.ts +12 -0
  421. package/native/tilemap-selection.d.ts.map +1 -0
  422. package/native/tilemap-selection.js +8 -0
  423. package/native/tilemap-selection.js.map +1 -0
  424. package/native/time-axis-labels.d.ts +5 -0
  425. package/native/time-axis-labels.d.ts.map +1 -0
  426. package/native/time-axis-labels.js +38 -0
  427. package/native/time-axis-labels.js.map +1 -0
  428. package/native/tooltip-layout.d.ts +16 -0
  429. package/native/tooltip-layout.d.ts.map +1 -0
  430. package/native/tooltip-layout.js +33 -0
  431. package/native/tooltip-layout.js.map +1 -0
  432. package/native/tooltip-metrics.d.ts +4 -0
  433. package/native/tooltip-metrics.d.ts.map +1 -0
  434. package/native/tooltip-metrics.js +11 -0
  435. package/native/tooltip-metrics.js.map +1 -0
  436. package/native/tooltip-motion.d.ts +35 -0
  437. package/native/tooltip-motion.d.ts.map +1 -0
  438. package/native/tooltip-motion.js +36 -0
  439. package/native/tooltip-motion.js.map +1 -0
  440. package/native/tooltip-occupancy.d.ts +21 -0
  441. package/native/tooltip-occupancy.d.ts.map +1 -0
  442. package/native/tooltip-occupancy.js +67 -0
  443. package/native/tooltip-occupancy.js.map +1 -0
  444. package/native/tooltip.d.ts +144 -0
  445. package/native/tooltip.d.ts.map +1 -0
  446. package/native/tooltip.js +146 -0
  447. package/native/tooltip.js.map +1 -0
  448. package/native/uncertainty-data.d.ts +110 -0
  449. package/native/uncertainty-data.d.ts.map +1 -0
  450. package/native/uncertainty-data.js +2 -0
  451. package/native/uncertainty-data.js.map +1 -0
  452. package/native/uncertainty-format.d.ts +3 -0
  453. package/native/uncertainty-format.d.ts.map +1 -0
  454. package/native/uncertainty-format.js +10 -0
  455. package/native/uncertainty-format.js.map +1 -0
  456. package/native/value-labels.d.ts +30 -0
  457. package/native/value-labels.d.ts.map +1 -0
  458. package/native/value-labels.js +206 -0
  459. package/native/value-labels.js.map +1 -0
  460. package/native/variwide-labels.d.ts +14 -0
  461. package/native/variwide-labels.d.ts.map +1 -0
  462. package/native/variwide-labels.js +22 -0
  463. package/native/variwide-labels.js.map +1 -0
  464. package/native/venn-data.d.ts +29 -0
  465. package/native/venn-data.d.ts.map +1 -0
  466. package/native/venn-data.js +2 -0
  467. package/native/venn-data.js.map +1 -0
  468. package/native/viewport-gestures.d.ts +32 -0
  469. package/native/viewport-gestures.d.ts.map +1 -0
  470. package/native/viewport-gestures.js +43 -0
  471. package/native/viewport-gestures.js.map +1 -0
  472. package/native/viewport-motion.d.ts +67 -0
  473. package/native/viewport-motion.d.ts.map +1 -0
  474. package/native/viewport-motion.js +182 -0
  475. package/native/viewport-motion.js.map +1 -0
  476. package/native/viewport-state.d.ts +20 -0
  477. package/native/viewport-state.d.ts.map +1 -0
  478. package/native/viewport-state.js +14 -0
  479. package/native/viewport-state.js.map +1 -0
  480. package/native/waterfall-appearance.d.ts +8 -0
  481. package/native/waterfall-appearance.d.ts.map +1 -0
  482. package/native/waterfall-appearance.js +18 -0
  483. package/native/waterfall-appearance.js.map +1 -0
  484. package/native/wordcloud-data.d.ts +40 -0
  485. package/native/wordcloud-data.d.ts.map +1 -0
  486. package/native/wordcloud-data.js +2 -0
  487. package/native/wordcloud-data.js.map +1 -0
  488. package/native/wordcloud-layer.d.ts +29 -0
  489. package/native/wordcloud-layer.d.ts.map +1 -0
  490. package/native/wordcloud-layer.js +58 -0
  491. package/native/wordcloud-layer.js.map +1 -0
  492. package/native/wordcloud-measurements.d.ts +47 -0
  493. package/native/wordcloud-measurements.d.ts.map +1 -0
  494. package/native/wordcloud-measurements.js +137 -0
  495. package/native/wordcloud-measurements.js.map +1 -0
  496. package/native/wordcloud-planning.d.ts +23 -0
  497. package/native/wordcloud-planning.d.ts.map +1 -0
  498. package/native/wordcloud-planning.js +25 -0
  499. package/native/wordcloud-planning.js.map +1 -0
  500. package/native/wordcloud-probes.d.ts +48 -0
  501. package/native/wordcloud-probes.d.ts.map +1 -0
  502. package/native/wordcloud-probes.js +111 -0
  503. package/native/wordcloud-probes.js.map +1 -0
  504. package/native/wordcloud-text-backend.d.ts +16 -0
  505. package/native/wordcloud-text-backend.d.ts.map +1 -0
  506. package/native/wordcloud-text-backend.js +3 -0
  507. package/native/wordcloud-text-backend.js.map +1 -0
  508. package/package.json +58 -4
@@ -0,0 +1,43 @@
1
+ const shapes = ['circle', 'square', 'diamond', 'triangle'];
2
+ const color = /^#[\da-f]{6}$/i;
3
+ /** Constant-size presentation validation. It never projects data or changes hit targets. */
4
+ export function resolveMarkerStyle(input) {
5
+ if (input !== undefined && (!input || typeof input !== 'object' || Array.isArray(input)))
6
+ throw Error('Invalid marker style');
7
+ const descriptors = input ? Object.getOwnPropertyDescriptors(input) : {};
8
+ for (const key of Reflect.ownKeys(descriptors)) {
9
+ if (typeof key !== 'string' || !['shape', 'fillColor', 'borderColor', 'borderWidth'].includes(key) || descriptors[key]?.get || descriptors[key]?.set)
10
+ throw Error('Invalid marker style property');
11
+ }
12
+ const shape = descriptors['shape']?.value ?? 'circle', fillColor = descriptors['fillColor']?.value, borderColor = descriptors['borderColor']?.value, borderWidth = descriptors['borderWidth']?.value ?? 0;
13
+ if (!shapes.includes(shape) || fillColor !== undefined && (typeof fillColor !== 'string' || !color.test(fillColor)) || borderColor !== undefined && (typeof borderColor !== 'string' || !color.test(borderColor)) || typeof borderWidth !== 'number' || !Number.isFinite(borderWidth) || borderWidth < 0 || borderWidth > 6)
14
+ throw Error('Invalid marker style value');
15
+ return { shape, fillColor, borderColor, borderWidth };
16
+ }
17
+ export function sameMarkerStyle(a, b) {
18
+ return a.shape === b.shape && a.fillColor === b.fillColor && a.borderColor === b.borderColor && a.borderWidth === b.borderWidth;
19
+ }
20
+ /** Geometry here is the display symbol around an already projected point. */
21
+ export function markerSvg(x, y, diameter, pointColor, style) {
22
+ const radius = diameter / 2, paint = `fill="${style.fillColor ?? pointColor}"${style.borderWidth ? ` stroke="${style.borderColor ?? pointColor}" stroke-width="${style.borderWidth}" stroke-linejoin="round"` : ''}`;
23
+ if (style.shape === 'square')
24
+ return `<rect x="${x - radius}" y="${y - radius}" width="${diameter}" height="${diameter}" ${paint}/>`;
25
+ if (style.shape === 'diamond')
26
+ return `<path d="M${x} ${y - radius}L${x + radius} ${y}L${x} ${y + radius}L${x - radius} ${y}Z" ${paint}/>`;
27
+ if (style.shape === 'triangle')
28
+ return `<path d="M${x} ${y - radius}L${x + radius} ${y + radius}L${x - radius} ${y + radius}Z" ${paint}/>`;
29
+ return `<circle cx="${x}" cy="${y}" r="${radius}" ${paint}/>`;
30
+ }
31
+ /** Bounded point clouds keep every source symbol while batching by paint, not by SVG node. */
32
+ export function markerBatchSvg(points, transform, diameter, style) {
33
+ const paths = new Map(), r = diameter / 2;
34
+ for (const p of points) {
35
+ const x = transform.x + p.x * transform.sx, y = transform.y + p.y * transform.sy, color = style.fillColor ?? p.color;
36
+ const contour = style.shape === 'square' ? `M${x - r} ${y - r}h${diameter}v${diameter}h${-diameter}Z` : style.shape === 'diamond' ? `M${x} ${y - r}L${x + r} ${y}L${x} ${y + r}L${x - r} ${y}Z` : style.shape === 'triangle' ? `M${x} ${y - r}L${x + r} ${y + r}L${x - r} ${y + r}Z` : `M${x - r} ${y}A${r} ${r} 0 1 0 ${x + r} ${y}A${r} ${r} 0 1 0 ${x - r} ${y}Z`;
37
+ const key = color + ':' + (style.borderColor ?? p.color), segments = paths.get(key) ?? [];
38
+ segments.push(contour);
39
+ paths.set(key, segments);
40
+ }
41
+ return [...paths].map(([key, segments]) => { const [fill, border] = key.split(':'); return `<path d="${segments.join('')}" fill="${fill}"${style.borderWidth ? ` stroke="${border}" stroke-width="${style.borderWidth}" stroke-linejoin="round"` : ''}/>`; }).join('');
42
+ }
43
+ //# sourceMappingURL=marker-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker-style.js","sourceRoot":"","sources":["../../src/library/marker-style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { PlanParallelLayout, PlanParallelValue } from '@neural-charts/core/plan';
2
+ import type { NativeScene } from './contracts.js';
3
+ export type NativeParallelValue = PlanParallelValue;
4
+ export interface NativeParallelLayout extends Omit<PlanParallelLayout, 'commands'> {
5
+ readonly path: string;
6
+ }
7
+ /** Own the projected roles only; independent-axis scales remain exclusively in Core. */
8
+ export declare function ownParallel(value: NativeParallelLayout, scene: Pick<NativeScene, 'family' | 'width' | 'height' | 'observations' | 'polarGrid'>): NativeParallelLayout;
9
+ export declare function ownParallelValue(value: NativeParallelValue): NativeParallelValue;
10
+ export declare function parallelGridSvg(layout: NativeParallelLayout, color: string, ticks?: boolean): string;
11
+ //# sourceMappingURL=parallel-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-scene.d.ts","sourceRoot":"","sources":["../../src/library/parallel-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAC,iBAAiB,CAAC;AAClD,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,kBAAkB,EAAC,UAAU,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;CAAC;AAEzG,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,KAAK,EAAC,oBAAoB,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,QAAQ,GAAC,OAAO,GAAC,QAAQ,GAAC,cAAc,GAAC,WAAW,CAAC,GAAE,oBAAoB,CAoBxJ;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAC,mBAAmB,GAAE,mBAAmB,CAE9E;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAC,oBAAoB,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,UAAK,GAAE,MAAM,CAAgN"}
@@ -0,0 +1,44 @@
1
+ import { validateNativePath } from './path-validation.js';
2
+ const text = (v, max) => typeof v === 'string' && v.length <= max;
3
+ /** Own the projected roles only; independent-axis scales remain exclusively in Core. */
4
+ export function ownParallel(value, scene) {
5
+ const point = (p) => p && typeof p === 'object' && Number.isFinite(p.x) && Number.isFinite(p.y) && p.x >= -1e-8 && p.y >= -1e-8 && p.x <= scene.width + 1e-8 && p.y <= scene.height + 1e-8;
6
+ if (scene.family !== 'parallel' || !value || !['cartesian', 'polar'].includes(value.coordinates) || !Array.isArray(value.axes) || value.axes.length < (value.coordinates === 'polar' ? 3 : 2) || value.axes.length > 16 || !text(value.path, 32000))
7
+ throw Error('Invalid parallel layout');
8
+ if (value.coordinates === 'polar' && !scene.polarGrid || value.coordinates === 'cartesian' && scene.polarGrid)
9
+ throw Error('Invalid parallel coordinate pivot');
10
+ validateNativePath(value.path, scene.width, scene.height);
11
+ const ids = new Set();
12
+ const axes = value.axes.map(a => {
13
+ if (!a || !text(a.id, 128) || !a.id || ids.has(a.id) || !text(a.label, 200) || !text(a.unit, 64) || !Number.isInteger(a.sourceCount) || a.sourceCount < 0 || a.sourceCount > 16 || !point(a.from) || !point(a.to) || !point(a.labelAnchor) || !Array.isArray(a.ticks) || a.ticks.length > 32)
14
+ throw Error('Invalid parallel dimension');
15
+ if (a.domain && (!Array.isArray(a.domain) || a.domain.length !== 2 || !a.domain.every(Number.isFinite) || a.domain[0] >= a.domain[1]))
16
+ throw Error('Invalid parallel domain');
17
+ if (!a.domain && a.ticks.length)
18
+ throw Error('Unscaled dimension cannot invent ticks');
19
+ ids.add(a.id);
20
+ const ticks = a.ticks.map((t) => { if (!Number.isFinite(t.value) || !text(t.label, 64) || !point(t) || !a.domain || t.value < a.domain[0] || t.value > a.domain[1])
21
+ throw Error('Invalid parallel tick'); return Object.freeze({ value: t.value, label: t.label, x: t.x, y: t.y }); });
22
+ return Object.freeze({ id: a.id, label: a.label, unit: a.unit, sourceCount: a.sourceCount, ...(a.domain ? { domain: Object.freeze([...a.domain]) } : {}), from: Object.freeze({ ...a.from }), to: Object.freeze({ ...a.to }), labelAnchor: Object.freeze({ ...a.labelAnchor }), ticks: Object.freeze(ticks) });
23
+ });
24
+ const expectedPath = axes.map(a => 'M' + a.from.x + ' ' + a.from.y + 'L' + a.to.x + ' ' + a.to.y).join('');
25
+ if (value.path !== expectedPath)
26
+ throw Error('Parallel grid does not match its dimension endpoints');
27
+ const byId = new Map(axes.map(a => [a.id, a]));
28
+ for (const p of scene.observations) {
29
+ const role = p.parallel, a = role ? byId.get(role.axisId) : undefined;
30
+ if (!role || !a || role.axisLabel !== a.label || role.unit !== a.unit || !a.domain || p.value < a.domain[0] || p.value > a.domain[1])
31
+ throw Error('Invalid parallel observation ownership');
32
+ const dx = a.to.x - a.from.x, dy = a.to.y - a.from.y, length = dx * dx + dy * dy, px = p.x - a.from.x, py = p.y - a.from.y, dot = px * dx + py * dy;
33
+ if (length <= 0 || Math.abs(px * dy - py * dx) > Math.sqrt(length) * 1e-7 || dot < -1e-7 || dot > length + 1e-7 || p.hit?.type !== 'circle' || p.hit.cx !== p.x || p.hit.cy !== p.y)
34
+ throw Error('Parallel observation is not on its declared dimension');
35
+ }
36
+ return Object.freeze({ coordinates: value.coordinates, path: value.path, axes: Object.freeze(axes) });
37
+ }
38
+ export function ownParallelValue(value) {
39
+ if (!value || !text(value.axisId, 128) || !value.axisId || !text(value.axisLabel, 200) || !text(value.unit, 64))
40
+ throw Error('Invalid parallel observation');
41
+ return { axisId: value.axisId, axisLabel: value.axisLabel, unit: value.unit };
42
+ }
43
+ export function parallelGridSvg(layout, color, ticks = true) { return `<path d="${layout.path}" fill="none" stroke="${color}" stroke-width="1.25"/>` + (ticks ? layout.axes.flatMap(a => a.ticks.map(t => `<circle cx="${t.x}" cy="${t.y}" r="1.4" fill="${color}"/>`)).join('') : ''); }
44
+ //# sourceMappingURL=parallel-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-scene.js","sourceRoot":"","sources":["../../src/library/parallel-scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Bounded SVG grammar. Geometry may exceed the plot for clipping of explicit domains. */
2
+ export declare function validateNativePath(path: string, width: number, height: number): void;
3
+ //# sourceMappingURL=path-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/library/path-validation.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAmCpF"}
@@ -0,0 +1,78 @@
1
+ /** Bounded SVG grammar. Geometry may exceed the plot for clipping of explicit domains. */
2
+ export function validateNativePath(path, width, height) {
3
+ const number = /[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y;
4
+ const arity = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7 };
5
+ const values = new Array(7);
6
+ const space = /\s/;
7
+ const letter = /[a-z]/i;
8
+ const coordinateLimit = Math.max(width, height) * 1024;
9
+ let index = 0, command = '', x = 0, y = 0, startX = 0, startY = 0, started = false, commaAllowed = false;
10
+ const fail = () => { throw new Error('Invalid native path geometry'); };
11
+ const whitespace = () => { while (index < path.length && space.test(path[index]))
12
+ index++; };
13
+ const read = () => {
14
+ whitespace();
15
+ if (path[index] === ',') {
16
+ if (!commaAllowed)
17
+ fail();
18
+ index++;
19
+ whitespace();
20
+ }
21
+ number.lastIndex = index;
22
+ const match = number.exec(path);
23
+ if (!match)
24
+ fail();
25
+ index = number.lastIndex;
26
+ commaAllowed = true;
27
+ const value = Number(match[0]);
28
+ if (!Number.isFinite(value))
29
+ throw new Error('Nonfinite native path geometry');
30
+ if (Math.abs(value) > coordinateLimit)
31
+ fail();
32
+ return value;
33
+ };
34
+ while (index < path.length) {
35
+ whitespace();
36
+ if (index === path.length)
37
+ break;
38
+ const token = path[index];
39
+ if (letter.test(token)) {
40
+ command = token;
41
+ index++;
42
+ commaAllowed = false;
43
+ if (!started && command.toUpperCase() !== 'M')
44
+ fail();
45
+ if (command.toUpperCase() === 'Z') {
46
+ x = startX;
47
+ y = startY;
48
+ command = '';
49
+ continue;
50
+ }
51
+ }
52
+ const upper = command.toUpperCase(), count = arity[upper];
53
+ if (!count)
54
+ fail();
55
+ for (let i = 0; i < count; i++)
56
+ values[i] = read();
57
+ const relative = command !== upper, baseX = relative ? x : 0, baseY = relative ? y : 0;
58
+ if (upper === 'A' && (values[0] < 0 || values[1] < 0 || ![0, 1].includes(values[3]) || ![0, 1].includes(values[4])))
59
+ fail();
60
+ if (upper === 'H')
61
+ x = baseX + values[0];
62
+ else if (upper === 'V')
63
+ y = baseY + values[0];
64
+ else {
65
+ x = baseX + values[count - 2];
66
+ y = baseY + values[count - 1];
67
+ }
68
+ if (!Number.isFinite(x) || !Number.isFinite(y) || Math.abs(x) > coordinateLimit || Math.abs(y) > coordinateLimit)
69
+ fail();
70
+ if (upper === 'M') {
71
+ started = true;
72
+ startX = x;
73
+ startY = y;
74
+ command = relative ? 'l' : 'L';
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=path-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validation.js","sourceRoot":"","sources":["../../src/library/path-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { PlanCompoundPolygonHit } from '@neural-charts/core/plan';
2
+ type HitPoint = Readonly<{
3
+ hit?: PlanCompoundPolygonHit;
4
+ }>;
5
+ /** Defensive ownership precedes indexing; consumer arrays never become cached geometry. */
6
+ export declare function ownPictorialHit(hit: PlanCompoundPolygonHit, width: number, height: number): PlanCompoundPolygonHit;
7
+ /** Construct once per immutable scene. No candidate arrays or polygon wrappers are
8
+ * allocated during a move. Only actual filled pieces participate, never holes,
9
+ * empty silhouettes or bounding-box fallback hits. */
10
+ export declare class PictorialHitIndex<T extends HitPoint> {
11
+ private readonly width;
12
+ private readonly height;
13
+ private readonly cells;
14
+ constructor(points: readonly T[], width: number, height: number);
15
+ private cell;
16
+ pick(x: number, y: number): T | null;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=pictorial-hit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial-hit.d.ts","sourceRoot":"","sources":["../../src/library/pictorial-hit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAIrE,KAAK,QAAQ,GAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAC,sBAAsB,CAAA;CAAC,CAAC,CAAC;AAKtD,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,GAAG,EAAC,sBAAsB,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,GAAE,sBAAsB,CAW5G;AAED;;sDAEsD;AACtD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ;IAEf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM;IADrF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;gBACxD,MAAM,EAAC,SAAS,CAAC,EAAE,EAAkB,KAAK,EAAC,MAAM,EAAkB,MAAM,EAAC,MAAM;IAmB5F,OAAO,CAAC,IAAI;IACZ,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,GAAE,CAAC,GAAC,IAAI;CAU/B"}
@@ -0,0 +1,73 @@
1
+ import { containsPolygon, ownPolygon } from './polygon-hit.js';
2
+ const owned = new WeakSet();
3
+ /** Defensive ownership precedes indexing; consumer arrays never become cached geometry. */
4
+ export function ownPictorialHit(hit, width, height) {
5
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0 || width > 10000 || height > 10000)
6
+ throw Error('Invalid pictorial hit frame');
7
+ if (!hit || hit.type !== 'compoundPolygon' || !Array.isArray(hit.polygons) || hit.polygons.length < 1 || hit.polygons.length > 64)
8
+ throw Error('Invalid compound pictorial hit');
9
+ // Revalidate extents even for an already owned hit: it may come from another scene.
10
+ const polygons = hit.polygons.map(vertices => {
11
+ const polygon = ownPolygon({ type: 'polygon', vertices }, { family: 'pictorial', width, height });
12
+ return Object.freeze(polygon.vertices.map(vertex => Object.freeze(vertex)));
13
+ });
14
+ const result = Object.freeze({ type: 'compoundPolygon', polygons: Object.freeze(polygons) });
15
+ owned.add(result);
16
+ return result;
17
+ }
18
+ /** Construct once per immutable scene. No candidate arrays or polygon wrappers are
19
+ * allocated during a move. Only actual filled pieces participate, never holes,
20
+ * empty silhouettes or bounding-box fallback hits. */
21
+ export class PictorialHitIndex {
22
+ width;
23
+ height;
24
+ cells = Array.from({ length: 144 }, () => []);
25
+ constructor(points, width, height) {
26
+ this.width = width;
27
+ this.height = height;
28
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0 || width > 10000 || height > 10000 || points.length > 64)
29
+ throw Error('Invalid pictorial hit frame');
30
+ let polygonCount = 0;
31
+ for (const point of points) {
32
+ const hit = point.hit;
33
+ if (!hit)
34
+ continue;
35
+ if (!owned.has(hit))
36
+ throw Error('Pictorial hit must be owned before indexing');
37
+ let left = Infinity, right = -Infinity, top = Infinity, bottom = -Infinity;
38
+ const polygons = hit.polygons.map(vertices => {
39
+ if (++polygonCount > 4096)
40
+ throw Error('Pictorial polygon budget exceeded');
41
+ for (const vertex of vertices) {
42
+ if (vertex.x < 0 || vertex.x > width || vertex.y < 0 || vertex.y > height)
43
+ throw Error('Pictorial hit belongs to another frame');
44
+ left = Math.min(left, vertex.x);
45
+ right = Math.max(right, vertex.x);
46
+ top = Math.min(top, vertex.y);
47
+ bottom = Math.max(bottom, vertex.y);
48
+ }
49
+ return { type: 'polygon', vertices };
50
+ });
51
+ const entry = { point, polygons, left, right, top, bottom };
52
+ for (let cy = this.cell(top, height); cy <= this.cell(bottom, height); cy++)
53
+ for (let cx = this.cell(left, width); cx <= this.cell(right, width); cx++)
54
+ this.cells[cy * 12 + cx].push(entry);
55
+ }
56
+ }
57
+ cell(value, extent) { return Math.max(0, Math.min(11, Math.floor(value / extent * 12))); }
58
+ pick(x, y) {
59
+ if (!Number.isFinite(x) || !Number.isFinite(y) || x < 0 || y < 0 || x > this.width || y > this.height)
60
+ return null;
61
+ const entries = this.cells[this.cell(y, this.height) * 12 + this.cell(x, this.width)];
62
+ for (let i = entries.length - 1; i >= 0; i--) {
63
+ const entry = entries[i];
64
+ if (x < entry.left || x > entry.right || y < entry.top || y > entry.bottom)
65
+ continue;
66
+ for (const polygon of entry.polygons)
67
+ if (containsPolygon(polygon, x, y))
68
+ return entry.point;
69
+ }
70
+ return null;
71
+ }
72
+ }
73
+ //# sourceMappingURL=pictorial-hit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial-hit.js","sourceRoot":"","sources":["../../src/library/pictorial-hit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { PlanPictorialGlyph, PlanPictorialSummary, PlanPictorialLayoutSummary, PlanPictorialValue } from '@neural-charts/core/plan';
2
+ import type { NativeScene, Observation, ChartFamily } from './contracts.js';
3
+ export interface NativePictorialGeometry {
4
+ readonly backgroundPath: string;
5
+ readonly glyphs: readonly Omit<PlanPictorialGlyph, 'backgroundCommands'>[];
6
+ readonly data: readonly PlanPictorialSummary[];
7
+ readonly layout: PlanPictorialLayoutSummary;
8
+ }
9
+ export declare function ownPictorialPoint(point: Observation, family: ChartFamily): Readonly<{
10
+ pictorial?: PlanPictorialValue;
11
+ }>;
12
+ /** Own bounded public roles without retaining the Core's command arrays twice. */
13
+ export declare function ownPictorialScene(scene: NativeScene): Readonly<{
14
+ pictorial?: NativePictorialGeometry;
15
+ }>;
16
+ //# sourceMappingURL=pictorial-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial-scene.d.ts","sourceRoot":"","sources":["../../src/library/pictorial-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAsB,oBAAoB,EAAC,0BAA0B,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AACzJ,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGxE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAC,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAC,SAAS,IAAI,CAAC,kBAAkB,EAAC,oBAAoB,CAAC,EAAE,CAAC;IACzE,QAAQ,CAAC,IAAI,EAAC,SAAS,oBAAoB,EAAE,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAC,0BAA0B,CAAC;CAC5C;AAcD,wBAAgB,iBAAiB,CAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAC,WAAW,GAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAC,kBAAkB,CAAA;CAAC,CAAC,CAWhH;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,KAAK,EAAC,WAAW,GAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAC,uBAAuB,CAAA;CAAC,CAAC,CA6BlG"}
@@ -0,0 +1,73 @@
1
+ import { validateNativePath } from './path-validation.js';
2
+ const finite = (value) => typeof value === 'number' && Number.isFinite(value);
3
+ const nonnegative = (value) => finite(value) && value >= 0;
4
+ const nullable = (value) => value === null || nonnegative(value);
5
+ const text = (value) => typeof value === 'string' && value.length > 0 && value.length <= 256;
6
+ const validPath = /^[MLZmlz\d.,+\-\seE]*$/;
7
+ function glyphId(id) {
8
+ if (!id || !text(id.categoryId))
9
+ throw Error('Invalid pictorial glyph identity');
10
+ if (id.type === 'stacked')
11
+ return { type: 'stacked', categoryId: id.categoryId };
12
+ if (id.type === 'grouped' && text(id.seriesId))
13
+ return { type: 'grouped', categoryId: id.categoryId, seriesId: id.seriesId };
14
+ throw Error('Invalid pictorial glyph identity');
15
+ }
16
+ export function ownPictorialPoint(point, family) {
17
+ const p = point.pictorial;
18
+ if (family !== 'pictorial') {
19
+ if (p !== undefined || point.hit?.type === 'compoundPolygon')
20
+ throw Error('Pictorial roles require pictorial family');
21
+ return {};
22
+ }
23
+ if (!p || !text(p.categoryId) || !text(p.shapeId) || !['displayed', 'zero', 'noInk'].includes(p.status) || !nonnegative(p.low) || !nonnegative(p.high) || p.low > p.high || !nullable(p.capacity) || !nullable(p.total) || !['known', 'overflow'].includes(p.totalStatus) || typeof p.incomplete !== 'boolean')
24
+ throw Error('Invalid pictorial observation');
25
+ if (p.status === 'zero' && point.value !== 0 || p.status !== 'zero' && !(point.value > 0) || p.status === 'displayed' && point.hit?.type !== 'compoundPolygon' || p.status !== 'displayed' && point.hit !== undefined)
26
+ throw Error('Invalid pictorial value/hit state');
27
+ const id = glyphId(p.glyphId);
28
+ if (id.categoryId !== p.categoryId || id.type === 'grouped' && id.seriesId !== point.id.seriesId)
29
+ throw Error('Pictorial glyph/source identity mismatch');
30
+ return { pictorial: { categoryId: p.categoryId, glyphId: id, shapeId: p.shapeId, status: p.status, low: p.low, high: p.high, capacity: p.capacity, total: p.total, totalStatus: p.totalStatus, incomplete: p.incomplete } };
31
+ }
32
+ /** Own bounded public roles without retaining the Core's command arrays twice. */
33
+ export function ownPictorialScene(scene) {
34
+ const source = scene.pictorial;
35
+ if (scene.family !== 'pictorial') {
36
+ if (source !== undefined)
37
+ throw Error('Unexpected pictorial scene metadata');
38
+ return {};
39
+ }
40
+ if (!source || typeof source.backgroundPath !== 'string' || source.backgroundPath.length > 1_000_000 || !validPath.test(source.backgroundPath) || !Array.isArray(source.glyphs) || source.glyphs.length > 256 || !Array.isArray(source.data) || source.data.length > 64 || scene.observations.length > 64 || scene.series.length > 8)
41
+ throw Error('Invalid or unbounded pictorial scene');
42
+ validateNativePath(source.backgroundPath, scene.width, scene.height);
43
+ const ids = new Set();
44
+ const glyphs = source.glyphs.map(g => {
45
+ const id = glyphId(g.id), key = JSON.stringify(id), b = g.bounds;
46
+ if (ids.has(key) || !text(g.categoryId) || !text(g.shapeId) || g.categoryId !== id.categoryId || !b || ![b.x, b.y, b.width, b.height].every(nonnegative) || b.x + b.width > scene.width + 1e-8 || b.y + b.height > scene.height + 1e-8)
47
+ throw Error('Invalid pictorial glyph');
48
+ ids.add(key);
49
+ return { id, categoryId: g.categoryId, shapeId: g.shapeId, bounds: { x: b.x, y: b.y, width: b.width, height: b.height } };
50
+ });
51
+ const sourceIds = new Set();
52
+ const data = source.data.map(p => {
53
+ if (!p || !p.id || !text(p.id.seriesId) || !text(p.id.pointId) || !text(p.categoryId) || !nullable(p.y) || !nullable(p.low) || !nullable(p.high) || !nullable(p.total) || !['known', 'overflow'].includes(p.totalStatus) || typeof p.visible !== 'boolean' || typeof p.incomplete !== 'boolean' || !['displayed', 'zero', 'null', 'hidden', 'noInk'].includes(p.status) || p.percentage !== undefined && (!nonnegative(p.percentage) || p.percentage > 100 + 1e-8))
54
+ throw Error('Invalid pictorial source summary');
55
+ const key = JSON.stringify([p.id.seriesId, p.id.pointId]);
56
+ if (sourceIds.has(key))
57
+ throw Error('Duplicate pictorial source identity');
58
+ sourceIds.add(key);
59
+ if (p.y === null && p.status !== 'null' && p.status !== 'hidden' || p.status === 'zero' && p.y !== 0 || p.status === 'null' && p.y !== null)
60
+ throw Error('Invalid pictorial summary state');
61
+ return { id: { seriesId: p.id.seriesId, pointId: p.id.pointId }, categoryId: p.categoryId, y: p.y, visible: p.visible, status: p.status, low: p.low, high: p.high, total: p.total, totalStatus: p.totalStatus, incomplete: p.incomplete, ...(p.percentage === undefined ? {} : { percentage: p.percentage }) };
62
+ });
63
+ const l = source.layout;
64
+ if (!l || !['grouped', 'sum', 'percent'].includes(l.mode) || !nullable(l.capacity) || !nonnegative(l.layoutCapacity) || !['domain', 'source', 'none'].includes(l.capacitySource) || l.emptyReason !== undefined && !['noSource', 'noPositiveValues', 'hidden'].includes(l.emptyReason) || l.capacityRoundoff !== undefined && (!nonnegative(l.capacityRoundoff.maxExcess) || !nonnegative(l.capacityRoundoff.tolerance)))
65
+ throw Error('Invalid pictorial layout summary');
66
+ for (const p of scene.observations) {
67
+ const owned = ownPictorialPoint(p, 'pictorial').pictorial;
68
+ if (!sourceIds.has(JSON.stringify([p.id.seriesId, p.id.pointId])) || !ids.has(JSON.stringify(owned.glyphId)))
69
+ throw Error('Unmatched pictorial observation identity');
70
+ }
71
+ return { pictorial: { backgroundPath: source.backgroundPath, glyphs, data, layout: { mode: l.mode, capacity: l.capacity, layoutCapacity: l.layoutCapacity, capacitySource: l.capacitySource, ...(l.emptyReason === undefined ? {} : { emptyReason: l.emptyReason }), ...(l.capacityRoundoff ? { capacityRoundoff: { maxExcess: l.capacityRoundoff.maxExcess, tolerance: l.capacityRoundoff.tolerance } } : {}) } } };
72
+ }
73
+ //# sourceMappingURL=pictorial-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial-scene.js","sourceRoot":"","sources":["../../src/library/pictorial-scene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAQxD,MAAM,MAAM,GAAC,CAAC,KAAa,EAAiB,EAAE,CAAA,OAAO,KAAK,KAAG,QAAQ,IAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,MAAM,WAAW,GAAC,CAAC,KAAa,EAAiB,EAAE,CAAA,MAAM,CAAC,KAAK,CAAC,IAAE,KAAK,IAAE,CAAC,CAAC;AAC3E,MAAM,QAAQ,GAAC,CAAC,KAAa,EAAsB,EAAE,CAAA,KAAK,KAAG,IAAI,IAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AACtF,MAAM,IAAI,GAAC,CAAC,KAAa,EAAiB,EAAE,CAAA,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,MAAM,GAAC,CAAC,IAAE,KAAK,CAAC,MAAM,IAAE,GAAG,CAAC;AACvG,MAAM,SAAS,GAAC,wBAAwB,CAAC;AAEzC,SAAS,OAAO,CAAC,EAAuB;IACtC,IAAG,CAAC,EAAE,IAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QAAC,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC7E,IAAG,EAAE,CAAC,IAAI,KAAG,SAAS;QAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAC,EAAE,CAAC,UAAU,EAAC,CAAC;IACxE,IAAG,EAAE,CAAC,IAAI,KAAG,SAAS,IAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAC,EAAE,CAAC,UAAU,EAAC,QAAQ,EAAC,EAAE,CAAC,QAAQ,EAAC,CAAC;IAChH,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAiB,EAAC,MAAkB;IACpE,MAAM,CAAC,GAAC,KAAK,CAAC,SAAS,CAAC;IACxB,IAAG,MAAM,KAAG,WAAW,EAAC,CAAC;QACvB,IAAG,CAAC,KAAG,SAAS,IAAE,KAAK,CAAC,GAAG,EAAE,IAAI,KAAG,iBAAiB;YAAC,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9G,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAG,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,WAAW,EAAC,MAAM,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,GAAG,GAAC,CAAC,CAAC,IAAI,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,OAAO,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAE,OAAO,CAAC,CAAC,UAAU,KAAG,SAAS;QAAC,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAChU,IAAG,CAAC,CAAC,MAAM,KAAG,MAAM,IAAE,KAAK,CAAC,KAAK,KAAG,CAAC,IAAE,CAAC,CAAC,MAAM,KAAG,MAAM,IAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,IAAE,CAAC,CAAC,MAAM,KAAG,WAAW,IAAE,KAAK,CAAC,GAAG,EAAE,IAAI,KAAG,iBAAiB,IAAE,CAAC,CAAC,MAAM,KAAG,WAAW,IAAE,KAAK,CAAC,GAAG,KAAG,SAAS;QAAC,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACxO,MAAM,EAAE,GAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAG,EAAE,CAAC,UAAU,KAAG,CAAC,CAAC,UAAU,IAAE,EAAE,CAAC,IAAI,KAAG,SAAS,IAAE,EAAE,CAAC,QAAQ,KAAG,KAAK,CAAC,EAAE,CAAC,QAAQ;QAAC,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9I,OAAO,EAAC,SAAS,EAAC,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,OAAO,EAAC,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,WAAW,EAAC,CAAC,CAAC,WAAW,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,EAAC,CAAC;AACtM,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IACjD,MAAM,MAAM,GAAC,KAAK,CAAC,SAAS,CAAC;IAC7B,IAAG,KAAK,CAAC,MAAM,KAAG,WAAW,EAAC,CAAC;QAC7B,IAAG,MAAM,KAAG,SAAS;YAAC,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAG,CAAC,MAAM,IAAE,OAAO,MAAM,CAAC,cAAc,KAAG,QAAQ,IAAE,MAAM,CAAC,cAAc,CAAC,MAAM,GAAC,SAAS,IAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAC,GAAG,IAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAC,EAAE,IAAE,KAAK,CAAC,YAAY,CAAC,MAAM,GAAC,EAAE,IAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC;QAAC,MAAM,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1V,kBAAkB,CAAC,MAAM,CAAC,cAAc,EAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,GAAG,GAAC,IAAI,GAAG,EAAU,CAAC;IAC5B,MAAM,MAAM,GAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE;QAChC,MAAM,EAAE,GAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,GAAG,GAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAC,CAAC,GAAC,CAAC,CAAC,MAAM,CAAC;QACzD,IAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,UAAU,KAAG,EAAE,CAAC,UAAU,IAAE,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,GAAC,KAAK,CAAC,KAAK,GAAC,IAAI,IAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,MAAM,GAAC,KAAK,CAAC,MAAM,GAAC,IAAI;YAAC,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9O,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,EAAC,EAAE,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,MAAM,EAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAAC,EAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAC,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,IAAI,GAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE;QAC5B,IAAG,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,EAAE,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,OAAO,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAE,OAAO,CAAC,CAAC,OAAO,KAAG,SAAS,IAAE,OAAO,CAAC,CAAC,UAAU,KAAG,SAAS,IAAE,CAAC,CAAC,WAAW,EAAC,MAAM,EAAC,MAAM,EAAC,QAAQ,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,UAAU,KAAG,SAAS,IAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,CAAC,UAAU,GAAC,GAAG,GAAC,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrc,MAAM,GAAG,GAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAAA,IAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAC,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnJ,IAAG,CAAC,CAAC,CAAC,KAAG,IAAI,IAAE,CAAC,CAAC,MAAM,KAAG,MAAM,IAAE,CAAC,CAAC,MAAM,KAAG,QAAQ,IAAE,CAAC,CAAC,MAAM,KAAG,MAAM,IAAE,CAAC,CAAC,CAAC,KAAG,CAAC,IAAE,CAAC,CAAC,MAAM,KAAG,MAAM,IAAE,CAAC,CAAC,CAAC,KAAG,IAAI;YAAC,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAChK,OAAO,EAAC,EAAE,EAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAC,OAAO,EAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAC,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC,GAAG,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,EAAC,WAAW,EAAC,CAAC,CAAC,WAAW,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,GAAG,CAAC,CAAC,CAAC,UAAU,KAAG,SAAS,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,EAAC,UAAU,EAAC,CAAC,CAAC,UAAU,EAAC,CAAC,EAAC,CAAC;IAC7Q,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAC,MAAM,CAAC,MAAM,CAAC;IACtB,IAAG,CAAC,CAAC,IAAE,CAAC,CAAC,SAAS,EAAC,KAAK,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,IAAE,CAAC,CAAC,QAAQ,EAAC,QAAQ,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAE,CAAC,CAAC,WAAW,KAAG,SAAS,IAAE,CAAC,CAAC,UAAU,EAAC,kBAAkB,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAE,CAAC,CAAC,gBAAgB,KAAG,SAAS,IAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAE,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAAC,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5a,KAAI,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,EAAC,CAAC;QACjC,MAAM,KAAK,GAAC,iBAAiB,CAAC,CAAC,EAAC,WAAW,CAAC,CAAC,SAAU,CAAC;QACxD,IAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACnK,CAAC;IACD,OAAO,EAAC,SAAS,EAAC,EAAC,cAAc,EAAC,MAAM,CAAC,cAAc,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,QAAQ,EAAC,cAAc,EAAC,CAAC,CAAC,cAAc,EAAC,cAAc,EAAC,CAAC,CAAC,cAAc,EAAC,GAAG,CAAC,CAAC,CAAC,WAAW,KAAG,SAAS,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,EAAC,WAAW,EAAC,CAAC,CAAC,WAAW,EAAC,CAAC,EAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAA,CAAC,CAAA,EAAC,gBAAgB,EAAC,EAAC,SAAS,EAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAC,SAAS,EAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAC,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,EAAC,EAAC,CAAC;AAC7W,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { NativeScene } from './contracts.js';
2
+ export interface LabelPoint {
3
+ readonly x: number;
4
+ readonly y: number;
5
+ readonly radius: number;
6
+ }
7
+ export interface LabelBounds {
8
+ readonly left: number;
9
+ readonly right: number;
10
+ readonly height: number;
11
+ }
12
+ /** Paint geometry, never the larger invisible touch target. Work is bounded by
13
+ * the label budget; dense charts keep their values in the tooltip. */
14
+ export declare function labelPoints(scene: NativeScene, t: Readonly<{
15
+ x: number;
16
+ y: number;
17
+ sx: number;
18
+ sy: number;
19
+ }>, diameter?: number): readonly LabelPoint[];
20
+ export declare function labelCoversPoint(box: Readonly<{
21
+ x: number;
22
+ y: number;
23
+ width: number;
24
+ height: number;
25
+ }>, points: readonly LabelPoint[]): boolean;
26
+ /** Keep the complete text above its mark. Omit it when headroom runs out rather
27
+ * than clamping it back over the point. */
28
+ export declare function labelAbovePoint(x: number, y: number, width: number, height: number, bounds: LabelBounds, points?: readonly LabelPoint[]): {
29
+ x: number;
30
+ y: number;
31
+ width: number;
32
+ height: number;
33
+ } | undefined;
34
+ //# sourceMappingURL=point-label-placement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-label-placement.d.ts","sourceRoot":"","sources":["../../src/library/point-label-placement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,UAAU;IAAE,QAAQ,CAAC,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;CAAC;AACzF,MAAM,WAAW,WAAW;IAAE,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;CAAC;AACjG;sEACsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,CAAC,EAAC,QAAQ,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,CAAC,EAAC,QAAQ,SAAE,GAAE,SAAS,UAAU,EAAE,CAKlI;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAC,QAAQ,CAAC;IAAC,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC,CAAC,EAAC,MAAM,EAAC,SAAS,UAAU,EAAE,GAAE,OAAO,CAElI;AACD;2CAC2C;AAC3C,wBAAgB,eAAe,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,GAAC,SAAS,UAAU,EAAK;;;;;cAK9H"}
@@ -0,0 +1,24 @@
1
+ /** Paint geometry, never the larger invisible touch target. Work is bounded by
2
+ * the label budget; dense charts keep their values in the tooltip. */
3
+ export function labelPoints(scene, t, diameter = 6) {
4
+ if (scene.observations.length > 64)
5
+ return [];
6
+ if (scene.family === 'bubble' || scene.family === 'scatter')
7
+ return scene.series.flatMap(s => (s.circles ?? []).map(c => ({ x: t.x + c.cx * t.sx, y: t.y + c.cy * t.sy, radius: c.radius * Math.max(t.sx, t.sy) + 1 })));
8
+ if (!['line', 'spline', 'area', 'areaspline', 'mixed', 'radar', 'fan', 'regression', 'pareto', 'lollipop', 'dumbbell'].includes(scene.family))
9
+ return [];
10
+ return scene.observations.map(p => ({ x: t.x + p.x * t.sx, y: t.y + p.y * t.sy, radius: Math.max(0, diameter) / 2 + 1 }));
11
+ }
12
+ export function labelCoversPoint(box, points) {
13
+ return points.some(p => Math.hypot(p.x - Math.max(box.x, Math.min(box.x + box.width, p.x)), p.y - Math.max(box.y, Math.min(box.y + box.height, p.y))) < p.radius + 2);
14
+ }
15
+ /** Keep the complete text above its mark. Omit it when headroom runs out rather
16
+ * than clamping it back over the point. */
17
+ export function labelAbovePoint(x, y, width, height, bounds, points = []) {
18
+ const radius = points.reduce((r, p) => Math.abs(p.x - x) < .01 && Math.abs(p.y - y) < .01 ? Math.max(r, p.radius) : r, 0);
19
+ const box = { x: Math.max(bounds.left + 2, Math.min(bounds.right - width - 2, x - width / 2)), y: y - radius - 4 - height, width, height };
20
+ if (box.x < bounds.left || box.x + width > bounds.right || box.y < 2 || box.y + height > bounds.height - 2 || labelCoversPoint(box, points))
21
+ return undefined;
22
+ return box;
23
+ }
24
+ //# sourceMappingURL=point-label-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-label-placement.js","sourceRoot":"","sources":["../../src/library/point-label-placement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { NativeScene } from './contracts.js';
2
+ /** Own the small, bounded radial grid produced by Core. No projection occurs here. */
3
+ export declare function ownPolarGrid(scene: NativeScene): NonNullable<NativeScene['polarGrid']>;
4
+ export declare function polarGridSvg(g: NonNullable<NativeScene['polarGrid']>, color: string): string;
5
+ //# sourceMappingURL=polar-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polar-grid.d.ts","sourceRoot":"","sources":["../../src/library/polar-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAC,WAAW,GAAE,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAgBpF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,KAAK,EAAC,MAAM,GAAE,MAAM,CAExF"}
@@ -0,0 +1,28 @@
1
+ import { validateNativePath } from './path-validation.js';
2
+ /** Own the small, bounded radial grid produced by Core. No projection occurs here. */
3
+ export function ownPolarGrid(scene) {
4
+ const g = scene.polarGrid;
5
+ const finite = (v) => typeof v === 'number' && Number.isFinite(v);
6
+ const label = (v) => typeof v === 'string' && v.length <= 200;
7
+ if (!['parallel', 'radar', 'polar', 'windrose', 'radialbar'].includes(scene.family) || !g || ![g.cx, g.cy, g.radius].every(finite) || g.radius <= 0 || g.cx - g.radius < 0 || g.cy - g.radius < 0 || g.cx + g.radius > scene.width || g.cy + g.radius > scene.height || !Array.isArray(g.rings) || g.rings.length > 32 || !Array.isArray(g.spokes) || g.spokes.length > 32)
8
+ throw Error('Invalid polar grid');
9
+ const ids = new Set();
10
+ const rings = g.rings.map(r => {
11
+ if (!finite(r.radius) || r.radius < 0 || r.radius > g.radius + 1e-8 || !label(r.label) || r.path !== undefined && (typeof r.path !== 'string' || r.path.length > 16000))
12
+ throw Error('Invalid polar ring');
13
+ if (r.path !== undefined)
14
+ validateNativePath(r.path, scene.width, scene.height);
15
+ return { radius: r.radius, label: r.label, ...(r.path === undefined ? {} : { path: r.path }) };
16
+ });
17
+ const spokes = g.spokes.map(s => {
18
+ if (typeof s.id !== 'string' || !s.id || s.id.length > 128 || ids.has(s.id) || !label(s.label) || ![s.x, s.y].every(finite) || s.x < 0 || s.x > scene.width || s.y < 0 || s.y > scene.height)
19
+ throw Error('Invalid polar spoke');
20
+ ids.add(s.id);
21
+ return { id: s.id, label: s.label, x: s.x, y: s.y };
22
+ });
23
+ return { cx: g.cx, cy: g.cy, radius: g.radius, rings, spokes };
24
+ }
25
+ export function polarGridSvg(g, color) {
26
+ return g.rings.filter(r => r.radius > 0).map(r => r.path ? `<path d="${r.path}" fill="none" stroke="${color}" stroke-width="1"/>` : `<circle cx="${g.cx}" cy="${g.cy}" r="${r.radius}" fill="none" stroke="${color}" stroke-width="1"/>`).join('') + g.spokes.map(s => `<path d="M${g.cx} ${g.cy}L${s.x} ${s.y}" stroke="${color}" stroke-width="1"/>`).join('');
27
+ }
28
+ //# sourceMappingURL=polar-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polar-grid.js","sourceRoot":"","sources":["../../src/library/polar-grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { HitRegion, NativeScene, Observation } from './contracts.js';
2
+ type Polygon = Extract<HitRegion, {
3
+ type: 'polygon';
4
+ }>;
5
+ /** Bounded ownership/validation. Neck-crossing funnel polygons may be concave. */
6
+ export declare function ownPolygon(hit: Polygon, scene: Readonly<{
7
+ family: NativeScene['family'] | 'pictorial';
8
+ width: number;
9
+ height: number;
10
+ stackGroups?: NativeScene['stackGroups'];
11
+ }>): Polygon;
12
+ export declare function containsPolygon(hit: Polygon, x: number, y: number): boolean;
13
+ /** Each candidate has at most six edges; callers bound the candidate set. */
14
+ export declare function polygonObservation(points: readonly Observation[], x: number, y: number): Observation | null;
15
+ /** Cache bounds on immutable scene polygons; no arrays are allocated per move. */
16
+ export declare function sankeyObservation(points: readonly Observation[], x: number, y: number): Observation | null;
17
+ export {};
18
+ //# sourceMappingURL=polygon-hit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon-hit.d.ts","sourceRoot":"","sources":["../../src/library/polygon-hit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACtE,KAAK,OAAO,GAAC,OAAO,CAAC,SAAS,EAAC;IAAC,IAAI,EAAC,SAAS,CAAA;CAAC,CAAC,CAAC;AAYjD,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,GAAG,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,CAAC;IAAC,MAAM,EAAC,WAAW,CAAC,QAAQ,CAAC,GAAC,WAAW,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,WAAW,CAAC,EAAC,WAAW,CAAC,aAAa,CAAC,CAAA;CAAC,CAAC,GAAE,OAAO,CAqB5K;AACD,wBAAgB,eAAe,CAAC,GAAG,EAAC,OAAO,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,GAAE,OAAO,CAOrE;AACD,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,MAAM,EAAC,SAAS,WAAW,EAAE,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,GAAE,WAAW,GAAC,IAAI,CAEnG;AAGD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,MAAM,EAAC,SAAS,WAAW,EAAE,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,GAAE,WAAW,GAAC,IAAI,CAWlG"}