@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,40 @@
1
+ import type { PlanBulletFrame, PlanVariwideFrame, PlanBulletValue, PlanVariwideValue } from '@neural-charts/core/plan';
2
+ export interface ComparisonFields {
3
+ readonly bulletData?: PlanBulletFrame['bulletData'];
4
+ readonly bulletBands?: PlanBulletFrame['bulletBands'];
5
+ /** Band IDs whose colour was omitted by the caller; renderer resolves the theme. */
6
+ readonly automaticBulletBands?: readonly string[];
7
+ readonly bulletTargets?: PlanBulletFrame['bulletTargets'];
8
+ readonly bulletOrientation?: PlanBulletFrame['bulletOrientation'];
9
+ readonly bulletGrid?: PlanBulletFrame['bulletGrid'];
10
+ readonly categoryBands?: PlanVariwideFrame['categoryBands'];
11
+ readonly variwideData?: PlanVariwideFrame['variwideData'];
12
+ readonly variwideLayout?: PlanVariwideFrame['variwideLayout'];
13
+ }
14
+ export interface ComparisonPoint {
15
+ readonly id: Readonly<{
16
+ seriesId: string;
17
+ pointId: string;
18
+ }>;
19
+ readonly value: number;
20
+ readonly bullet?: PlanBulletValue;
21
+ readonly variwide?: PlanVariwideValue;
22
+ }
23
+ export interface ComparisonScene extends ComparisonFields {
24
+ readonly family: string;
25
+ readonly width: number;
26
+ readonly height: number;
27
+ readonly series: readonly Readonly<{
28
+ id: string;
29
+ }>[];
30
+ readonly legend?: readonly Readonly<{
31
+ id: string;
32
+ visible: boolean;
33
+ }>[];
34
+ readonly observations: readonly ComparisonPoint[];
35
+ }
36
+ export declare function ownComparisonPoint(point: ComparisonPoint, family: string): Pick<ComparisonPoint, 'bullet' | 'variwide'>;
37
+ /** Defensive ownership only. The planner remains the sole owner of domains,
38
+ * weighted allocation and geometry; null source values are never zero-filled. */
39
+ export declare function ownComparisonScene(scene: ComparisonScene): ComparisonFields;
40
+ //# sourceMappingURL=comparison-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-scene.d.ts","sourceRoot":"","sources":["../../src/library/comparison-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,iBAAiB,EAAC,eAAe,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAElH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACrD,oFAAoF;IACpF,QAAQ,CAAC,oBAAoB,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,CAAC,iBAAiB,CAAC,EAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3D,QAAQ,CAAC,YAAY,CAAC,EAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CAC9D;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAC,QAAQ,CAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAC,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAC,iBAAiB,CAAC;CACtC;AACD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,KAAK,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC;IACpE,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC,EAAE,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,CAAA;KAAC,CAAC,EAAE,CAAC;IAClE,QAAQ,CAAC,YAAY,EAAC,SAAS,eAAe,EAAE,CAAC;CAClD;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,eAAe,EAAC,MAAM,EAAC,MAAM,GAAE,IAAI,CAAC,eAAe,EAAC,QAAQ,GAAC,UAAU,CAAC,CAYhH;AAED;iFACiF;AACjF,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,eAAe,GAAE,gBAAgB,CA6BzE"}
@@ -0,0 +1,77 @@
1
+ const finite = (value) => typeof value === 'number' && Number.isFinite(value);
2
+ const text = (value, max = 128) => typeof value === 'string' && value.length > 0 && value.length <= max;
3
+ const key = (id) => JSON.stringify([id.seriesId, id.pointId]);
4
+ const ink = (value) => typeof value === 'string' && /^#[0-9a-f]{6}(?:[0-9a-f]{2})?$/i.test(value);
5
+ export function ownComparisonPoint(point, family) {
6
+ if (family === 'bullet' || point.bullet !== undefined) {
7
+ const value = point.bullet;
8
+ if (family !== 'bullet' || !value || point.variwide !== undefined || !['measure', 'target'].includes(value.type) || value.measure !== null && !finite(value.measure) || value.target !== undefined && value.target !== null && !finite(value.target) || point.value !== (value.type === 'measure' ? value.measure : value.target) || value.type === 'measure' && value.measure === null || value.type === 'target' && typeof value.target !== 'number')
9
+ throw Error('Invalid bullet observation');
10
+ return { bullet: { type: value.type, measure: value.measure, ...(value.target === undefined ? {} : { target: value.target }) } };
11
+ }
12
+ if (family === 'variwide' || point.variwide !== undefined) {
13
+ const value = point.variwide;
14
+ if (family !== 'variwide' || !value || !finite(value.z) || value.z < 0 || !finite(value.share) || value.share < 0 || value.share > 1 || typeof value.zeroWidth !== 'boolean' || value.zeroWidth !== (value.z === 0) || typeof value.geometryOmitted !== 'boolean')
15
+ throw Error('Invalid proportional observation');
16
+ return { variwide: { z: value.z, share: value.share, zeroWidth: value.zeroWidth, geometryOmitted: value.geometryOmitted } };
17
+ }
18
+ return {};
19
+ }
20
+ /** Defensive ownership only. The planner remains the sole owner of domains,
21
+ * weighted allocation and geometry; null source values are never zero-filled. */
22
+ export function ownComparisonScene(scene) {
23
+ const hasBullet = scene.bulletData !== undefined || scene.bulletBands !== undefined || scene.automaticBulletBands !== undefined || scene.bulletTargets !== undefined || scene.bulletOrientation !== undefined || scene.bulletGrid !== undefined;
24
+ const hasVariwide = scene.variwideData !== undefined || scene.categoryBands !== undefined || scene.variwideLayout !== undefined;
25
+ if (!hasBullet && !hasVariwide) {
26
+ if (scene.family === 'bullet' || scene.family === 'variwide')
27
+ throw Error('Missing comparison source');
28
+ return {};
29
+ }
30
+ const visibility = new Map((scene.legend ?? scene.series.map(s => ({ id: s.id, visible: true }))).map(s => [s.id, s.visible])), ids = new Set();
31
+ const identity = (id, visible) => { if (!id || !text(id.seriesId) || !text(id.pointId) || !visibility.has(id.seriesId) || typeof visible !== 'boolean' || visibility.get(id.seriesId) !== visible || ids.has(key(id)))
32
+ throw Error('Invalid comparison source identity'); ids.add(key(id)); return { seriesId: id.seriesId, pointId: id.pointId }; };
33
+ const line = (value) => { if (!value || ![value.x1, value.y1, value.x2, value.y2].every(finite) || Math.min(value.x1, value.x2) < 0 || Math.max(value.x1, value.x2) > scene.width || Math.min(value.y1, value.y2) < 0 || Math.max(value.y1, value.y2) > scene.height)
34
+ throw Error('Invalid comparison line'); return { x1: value.x1, y1: value.y1, x2: value.x2, y2: value.y2 }; };
35
+ if (hasBullet) {
36
+ if (scene.family !== 'bullet' || hasVariwide || !Array.isArray(scene.bulletData) || scene.bulletData.length > 1024 || !Array.isArray(scene.bulletBands) || scene.bulletBands.length > 32 || !Array.isArray(scene.bulletTargets) || scene.bulletTargets.length > 1024 || !Array.isArray(scene.bulletGrid) || scene.bulletGrid.length > 32 || !['horizontal', 'vertical'].includes(scene.bulletOrientation ?? ''))
37
+ throw Error('Invalid bullet frame');
38
+ const perSeries = new Map(), categoryIds = new Set();
39
+ const bulletData = scene.bulletData.map(p => { const id = identity(p.id, p.visible), categories = perSeries.get(id.seriesId) ?? new Set(); if (!text(p.categoryId, 256) || categories.has(p.categoryId) || p.measure !== null && !finite(p.measure) || p.target !== undefined && p.target !== null && !finite(p.target))
40
+ throw Error('Invalid bullet source'); categories.add(p.categoryId); categoryIds.add(p.categoryId); perSeries.set(id.seriesId, categories); if (categories.size > 64 || categoryIds.size > 64 || perSeries.size > 16)
41
+ throw Error('Bullet source budget exceeded'); return { id, categoryId: p.categoryId, measure: p.measure, ...(p.target === undefined ? {} : { target: p.target }), visible: p.visible }; });
42
+ const source = new Map(bulletData.map(p => [key(p.id), p]));
43
+ for (const p of scene.observations) {
44
+ const s = source.get(key(p.id)), v = ownComparisonPoint(p, scene.family).bullet;
45
+ if (!s || !s.visible || !v || s.measure !== v.measure || s.target !== v.target)
46
+ throw Error('Bullet observation differs from source');
47
+ }
48
+ const bands = new Set(), targets = new Set();
49
+ const bulletBands = scene.bulletBands.map(b => { if (!text(b.id) || bands.has(b.id) || !finite(b.from) || !finite(b.to) || b.to <= b.from || typeof b.label !== 'string' || b.label.length > 256 || !ink(b.color) || !['visible', 'outside'].includes(b.status) || (b.status === 'visible') !== (b.rect !== undefined))
50
+ throw Error('Invalid bullet band'); bands.add(b.id); const r = b.rect; if (r && (![r.x, r.y, r.width, r.height].every(finite) || r.x < 0 || r.y < 0 || r.width < 0 || r.height < 0 || r.x + r.width > scene.width || r.y + r.height > scene.height))
51
+ throw Error('Invalid bullet band bounds'); return { id: b.id, from: b.from, to: b.to, label: b.label, color: b.color, status: b.status, ...(r ? { rect: { x: r.x, y: r.y, width: r.width, height: r.height } } : {}) }; });
52
+ const bulletTargets = scene.bulletTargets.map(t => { const s = source.get(key(t.id)); if (!s || !s.visible || targets.has(key(t.id)) || !finite(t.value) || s.target !== t.value || !['visible', 'outside'].includes(t.status) || (t.status === 'visible') !== (t.line !== undefined))
53
+ throw Error('Invalid bullet target'); targets.add(key(t.id)); return { id: { seriesId: t.id.seriesId, pointId: t.id.pointId }, value: t.value, status: t.status, ...(t.line ? { line: line(t.line) } : {}) }; });
54
+ const automatic = scene.automaticBulletBands;
55
+ if (automatic !== undefined && (!Array.isArray(automatic) || automatic.length > 32 || new Set(automatic).size !== automatic.length || automatic.some(id => !bands.has(id))))
56
+ throw Error('Invalid automatic bullet band IDs');
57
+ return { bulletData, bulletBands, ...(automatic ? { automaticBulletBands: [...automatic] } : {}), bulletTargets, bulletOrientation: scene.bulletOrientation, bulletGrid: scene.bulletGrid.map(line) };
58
+ }
59
+ if (scene.family !== 'variwide' || !Array.isArray(scene.variwideData) || scene.variwideData.length > 64 || !Array.isArray(scene.categoryBands) || scene.categoryBands.length > 64 || !scene.variwideLayout || !['ready', 'no-positive-width'].includes(scene.variwideLayout.status) || typeof scene.variwideLayout.incomplete !== 'boolean')
60
+ throw Error('Invalid proportional frame');
61
+ if (scene.series.length > 1 || (scene.legend?.length ?? 0) > 1)
62
+ throw Error('Proportional layout supports one source series');
63
+ const sourceCategories = new Set();
64
+ const variwideData = scene.variwideData.map(p => { const id = identity(p.id, p.visible); if (!text(p.categoryId, 256) || sourceCategories.has(p.categoryId) || p.y !== null && !finite(p.y) || p.z !== null && (!finite(p.z) || p.z < 0) || p.missingValue !== (p.y === null) || p.missingWidth !== (p.z === null))
65
+ throw Error('Invalid proportional source'); sourceCategories.add(p.categoryId); return { id, categoryId: p.categoryId, y: p.y, z: p.z, visible: p.visible, missingValue: p.missingValue, missingWidth: p.missingWidth }; });
66
+ const source = new Map(variwideData.map(p => [key(p.id), p]));
67
+ for (const p of scene.observations) {
68
+ const s = source.get(key(p.id)), v = ownComparisonPoint(p, scene.family).variwide;
69
+ if (!s || !s.visible || !v || s.y !== p.value || s.z !== v.z)
70
+ throw Error('Proportional observation differs from source');
71
+ }
72
+ const categories = new Set();
73
+ const categoryBands = scene.categoryBands.map(b => { if (!text(b.categoryId, 256) || categories.has(b.categoryId) || typeof b.label !== 'string' || b.label.length > 256 || b.pointId !== undefined && !text(b.pointId) || b.z !== null && (!finite(b.z) || b.z < 0) || !['visible', 'zero', 'unknown', 'below-precision', 'hidden', 'no-positive-width'].includes(b.status) || (b.left === null) !== (b.right === null) || b.left !== null && (!finite(b.left) || !finite(b.right) || b.left < 0 || b.right < b.left || b.right > scene.width))
74
+ throw Error('Invalid proportional band'); categories.add(b.categoryId); return { categoryId: b.categoryId, label: b.label, ...(b.pointId === undefined ? {} : { pointId: b.pointId }), z: b.z, left: b.left, right: b.right, status: b.status }; });
75
+ return { variwideData, categoryBands, variwideLayout: { status: scene.variwideLayout.status, incomplete: scene.variwideLayout.incomplete } };
76
+ }
77
+ //# sourceMappingURL=comparison-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-scene.js","sourceRoot":"","sources":["../../src/library/comparison-scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { NativeScene } from './contracts.js';
2
+ export interface NativeMixedRangesLayout {
3
+ readonly mode: 'range-line';
4
+ readonly series: readonly Readonly<{
5
+ id: string;
6
+ type: 'line' | 'arearange' | 'areasplinerange';
7
+ }>[];
8
+ }
9
+ export declare function ownMixedRanges(v: NativeMixedRangesLayout, s: NativeScene): NativeMixedRangesLayout;
10
+ export interface NativeStackGroupsLayout {
11
+ readonly groups: readonly Readonly<{
12
+ id: string;
13
+ label: string;
14
+ seriesIds: readonly string[];
15
+ }>[];
16
+ readonly placement: 'grouped';
17
+ readonly stacking: 'sum' | 'percent';
18
+ }
19
+ export interface NativeMixedYAxisFrame {
20
+ readonly domain: readonly [number, number] | null;
21
+ readonly displayed: readonly [number, number] | null;
22
+ readonly reversed: boolean;
23
+ }
24
+ export interface NativeMixedAxesLayout {
25
+ readonly mode: 'dual-y';
26
+ readonly primary: NativeMixedYAxisFrame;
27
+ readonly secondary: NativeMixedYAxisFrame;
28
+ readonly series: readonly Readonly<{
29
+ id: string;
30
+ yAxis: 'primary' | 'secondary';
31
+ }>[];
32
+ }
33
+ export declare function ownStackGroups(v: NativeStackGroupsLayout, s: NativeScene): NativeStackGroupsLayout;
34
+ export declare function ownMixedAxes(v: NativeMixedAxesLayout, s: NativeScene): NativeMixedAxesLayout;
35
+ //# sourceMappingURL=composition-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-scene.d.ts","sourceRoot":"","sources":["../../src/library/composition-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,IAAI,EAAC,YAAY,CAAC;IAAA,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,GAAC,WAAW,GAAC,iBAAiB,CAAA;KAAC,CAAC,EAAE,CAAC;CACtH;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,WAAW,GAAE,uBAAuB,CAO9F;AACD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,SAAS,MAAM,EAAE,CAAA;KAAC,CAAC,EAAE,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAC,SAAS,CAAC;IAAA,QAAQ,CAAC,QAAQ,EAAC,KAAK,GAAC,SAAS,CAAC;CAChE;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAC,SAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,GAAC,IAAI,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAC,SAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,GAAC,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAC,OAAO,CAAC;CAC3B;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAC,QAAQ,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAC,qBAAqB,CAAC;IAAA,QAAQ,CAAC,SAAS,EAAC,qBAAqB,CAAC;IAChF,QAAQ,CAAC,MAAM,EAAC,SAAS,QAAQ,CAAC;QAAC,EAAE,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,SAAS,GAAC,WAAW,CAAA;KAAC,CAAC,EAAE,CAAC;CAC9E;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,WAAW,GAAE,uBAAuB,CAQ9F;AAKD,wBAAgB,YAAY,CAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,WAAW,GAAE,qBAAqB,CAOxF"}
@@ -0,0 +1,55 @@
1
+ export function ownMixedRanges(v, s) {
2
+ if (s.family !== 'mixed' || s.mixedAxes || !v || v.mode !== 'range-line' || !Array.isArray(v.series) || v.series.length < 2 || v.series.length > 16)
3
+ throw Error('Invalid coordinated interval layout');
4
+ const known = new Set((s.legend ?? s.series).map(x => x.id)), kinds = new Map();
5
+ for (const row of v.series) {
6
+ if (!row || !known.has(row.id) || kinds.has(row.id) || !['line', 'arearange', 'areasplinerange'].includes(row.type))
7
+ throw Error('Invalid original interval series');
8
+ kinds.set(row.id, row.type);
9
+ }
10
+ if (kinds.size !== known.size || !v.series.some(s => s.type === 'line') || !v.series.some(s => s.type !== 'line') || v.series.some(s => s.type === 'arearange') && v.series.some(s => s.type === 'areasplinerange'))
11
+ throw Error('Ambiguous interval composition');
12
+ for (const p of s.observations) {
13
+ const type = kinds.get(p.id.seriesId);
14
+ if (!type || type === 'line' && (p.lowValue !== undefined || p.highValue !== undefined) || type !== 'line' && (!Number.isFinite(p.lowValue) || !Number.isFinite(p.highValue) || p.lowValue > p.highValue || p.value !== p.lowValue / 2 + p.highValue / 2))
15
+ throw Error('Original interval endpoints were lost');
16
+ }
17
+ return { mode: 'range-line', series: v.series.map(s => ({ id: s.id, type: s.type })) };
18
+ }
19
+ function domain(v) { return v === null || Array.isArray(v) && v.length === 2 && v.every(Number.isFinite) && v[0] < v[1]; }
20
+ export function ownStackGroups(v, s) {
21
+ if (!['column', 'bar'].includes(s.family) || !v || v.placement !== 'grouped' || !['sum', 'percent'].includes(v.stacking) || !Array.isArray(v.groups) || v.groups.length < 1 || v.groups.length > 8)
22
+ throw Error('Invalid grouped stack layout');
23
+ const ids = new Set(), series = new Set(), known = new Set((s.legend ?? s.series).map(x => x.id));
24
+ const groups = v.groups.map(g => {
25
+ if (!g || typeof g.id !== 'string' || !g.id || g.id.length > 64 || ids.has(g.id) || typeof g.label !== 'string' || g.label.length > 200 || !Array.isArray(g.seriesIds) || g.seriesIds.length < 1 || g.seriesIds.length > 16)
26
+ throw Error('Invalid stack group');
27
+ ids.add(g.id);
28
+ for (const id of g.seriesIds) {
29
+ if (!known.has(id) || series.has(id))
30
+ throw Error('Invalid stack partition');
31
+ series.add(id);
32
+ }
33
+ return Object.freeze({ id: g.id, label: g.label, seriesIds: Object.freeze([...g.seriesIds]) });
34
+ });
35
+ if (known.size !== series.size || s.observations.some(p => !series.has(p.id.seriesId)))
36
+ throw Error('Incomplete stack ownership');
37
+ return Object.freeze({ placement: 'grouped', stacking: v.stacking, groups: Object.freeze(groups) });
38
+ }
39
+ function ownAxis(a) {
40
+ if (!a || !domain(a.domain) || !domain(a.displayed) || typeof a.reversed !== 'boolean' || a.domain === null && a.displayed !== null || a.domain !== null && a.displayed === null || a.domain && a.displayed && (a.displayed[0] < a.domain[0] || a.displayed[1] > a.domain[1]))
41
+ throw Error('Invalid mixed value scale');
42
+ return Object.freeze({ domain: a.domain === null ? null : Object.freeze([a.domain[0], a.domain[1]]), displayed: a.displayed === null ? null : Object.freeze([a.displayed[0], a.displayed[1]]), reversed: a.reversed });
43
+ }
44
+ export function ownMixedAxes(v, s) {
45
+ if (s.family !== 'mixed' || !v || v.mode !== 'dual-y' || !Array.isArray(v.series) || v.series.length < 2 || v.series.length > 16)
46
+ throw Error('Invalid mixed scale ownership');
47
+ const primary = ownAxis(v.primary), secondary = ownAxis(v.secondary), ids = new Set(), known = new Set((s.legend ?? s.series).map(x => x.id));
48
+ const series = v.series.map(item => { if (!item || !known.has(item.id) || ids.has(item.id) || !['primary', 'secondary'].includes(item.yAxis))
49
+ throw Error('Invalid mixed series scale'); ids.add(item.id); return Object.freeze({ id: item.id, yAxis: item.yAxis }); });
50
+ const byId = new Map(series.map(s => [s.id, s.yAxis]));
51
+ if (known.size !== ids.size || !series.some(s => s.yAxis === 'primary') || !series.some(s => s.yAxis === 'secondary') || s.observations.some(p => p.valueAxis !== byId.get(p.id.seriesId)))
52
+ throw Error('Mixed source values lost their scale identity');
53
+ return Object.freeze({ mode: 'dual-y', primary, secondary, series: Object.freeze(series) });
54
+ }
55
+ //# sourceMappingURL=composition-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-scene.js","sourceRoot":"","sources":["../../src/library/composition-scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { NativeScene, Observation } from './contracts.js';
2
+ /** Bounded segment grid, built once per geometry revision. No allocation per move. */
3
+ export declare class ContourHitIndex {
4
+ private readonly scene;
5
+ private readonly bins;
6
+ private readonly seen;
7
+ private stamp;
8
+ private readonly columns;
9
+ private readonly rows;
10
+ constructor(scene: NativeScene);
11
+ private column;
12
+ private row;
13
+ pick(x: number, y: number, tolerance: number): Observation | null;
14
+ }
15
+ //# sourceMappingURL=contour-hit-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-hit-index.d.ts","sourceRoot":"","sources":["../../src/library/contour-hit-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE5D,sFAAsF;AACtF,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,KAAK,CAAG;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAI;gBACI,KAAK,EAAC,WAAW;IAwB9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IACX,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAE,WAAW,GAAC,IAAI;CAa1D"}
@@ -0,0 +1,75 @@
1
+ /** Bounded segment grid, built once per geometry revision. No allocation per move. */
2
+ export class ContourHitIndex {
3
+ scene;
4
+ bins;
5
+ seen;
6
+ stamp = 0;
7
+ columns = 32;
8
+ rows = 32;
9
+ constructor(scene) {
10
+ this.scene = scene;
11
+ const bins = Array.from({ length: this.columns * this.rows }, () => []);
12
+ this.seen = new Uint32Array(scene.observations.length);
13
+ for (let i = 0; i < scene.observations.length; i++) {
14
+ const segment = scene.observations[i].contour;
15
+ if (!segment)
16
+ continue;
17
+ const a = segment.start, b = segment.end, dx = b.x - a.x, dy = b.y - a.y;
18
+ let column = this.column(a.x), row = this.row(a.y);
19
+ const endColumn = this.column(b.x), endRow = this.row(b.y), stepX = Math.sign(dx), stepY = Math.sign(dy);
20
+ const cellWidth = scene.width / this.columns, cellHeight = scene.height / this.rows;
21
+ const deltaX = dx === 0 ? Infinity : cellWidth / Math.abs(dx), deltaY = dy === 0 ? Infinity : cellHeight / Math.abs(dy);
22
+ let boundaryX = dx === 0 ? Infinity : ((stepX > 0 ? column + 1 : column) * cellWidth - a.x) / dx;
23
+ let boundaryY = dy === 0 ? Infinity : ((stepY > 0 ? row + 1 : row) * cellHeight - a.y) / dy;
24
+ // A straight segment traverses at most columns+rows cells, even diagonally.
25
+ for (let step = 0; step <= this.columns + this.rows; step++) {
26
+ bins[row * this.columns + column].push(i);
27
+ if (column === endColumn && row === endRow)
28
+ break;
29
+ if (boundaryX < boundaryY) {
30
+ column += stepX;
31
+ boundaryX += deltaX;
32
+ }
33
+ else if (boundaryY < boundaryX) {
34
+ row += stepY;
35
+ boundaryY += deltaY;
36
+ }
37
+ else {
38
+ column += stepX;
39
+ row += stepY;
40
+ boundaryX += deltaX;
41
+ boundaryY += deltaY;
42
+ }
43
+ if (column < 0 || column >= this.columns || row < 0 || row >= this.rows)
44
+ break;
45
+ }
46
+ }
47
+ this.bins = bins;
48
+ }
49
+ column(x) { return Math.max(0, Math.min(this.columns - 1, Math.floor(x / this.scene.width * this.columns))); }
50
+ row(y) { return Math.max(0, Math.min(this.rows - 1, Math.floor(y / this.scene.height * this.rows))); }
51
+ pick(x, y, tolerance) {
52
+ const reach = Math.max(6, tolerance), left = this.column(x - reach), right = this.column(x + reach), top = this.row(y - reach), bottom = this.row(y + reach);
53
+ if (++this.stamp === 0xffffffff) {
54
+ this.seen.fill(0);
55
+ this.stamp = 1;
56
+ }
57
+ let selected = null, best = reach * reach;
58
+ for (let row = top; row <= bottom; row++)
59
+ for (let column = left; column <= right; column++)
60
+ for (const index of this.bins[row * this.columns + column]) {
61
+ if (this.seen[index] === this.stamp)
62
+ continue;
63
+ this.seen[index] = this.stamp;
64
+ const point = this.scene.observations[index], segment = point.contour, a = segment.start, b = segment.end, dx = b.x - a.x, dy = b.y - a.y, length = dx * dx + dy * dy;
65
+ const t = length ? Math.max(0, Math.min(1, ((x - a.x) * dx + (y - a.y) * dy) / length)) : 0;
66
+ const distance = (x - a.x - t * dx) ** 2 + (y - a.y - t * dy) ** 2;
67
+ if (distance < best || distance === best && selected === null) {
68
+ selected = point;
69
+ best = distance;
70
+ }
71
+ }
72
+ return selected;
73
+ }
74
+ }
75
+ //# sourceMappingURL=contour-hit-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-hit-index.js","sourceRoot":"","sources":["../../src/library/contour-hit-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { NativeScene } from './contracts.js';
2
+ /** Pick existing projected observations for decoration; never fit or smooth isolines. */
3
+ export declare function contourLabelAnchors(scene: NativeScene): readonly Readonly<{
4
+ id: string;
5
+ value: number;
6
+ x: number;
7
+ y: number;
8
+ }>[];
9
+ //# sourceMappingURL=contour-label-anchors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-label-anchors.d.ts","sourceRoot":"","sources":["../../src/library/contour-label-anchors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEhD,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAC,WAAW,GAAE,SAAS,QAAQ,CAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC,EAAE,CAarH"}
@@ -0,0 +1,20 @@
1
+ /** Pick existing projected observations for decoration; never fit or smooth isolines. */
2
+ export function contourLabelAnchors(scene) {
3
+ if (!scene.contour)
4
+ return [];
5
+ const best = new Map();
6
+ for (const point of scene.observations) {
7
+ const contour = point.contour;
8
+ if (!contour)
9
+ continue;
10
+ const score = (contour.end.x - contour.start.x) ** 2 + (contour.end.y - contour.start.y) ** 2;
11
+ if (score > (best.get(contour.levelId)?.score ?? -1))
12
+ best.set(contour.levelId, { score, x: point.x, y: point.y });
13
+ }
14
+ return scene.contour.levels.flatMap(level => {
15
+ const declared = scene.annotations?.find(label => label.box?.seriesId === level.id);
16
+ const anchor = declared ?? best.get(level.id);
17
+ return anchor ? [{ id: level.id, value: level.value, x: anchor.x, y: anchor.y }] : [];
18
+ });
19
+ }
20
+ //# sourceMappingURL=contour-label-anchors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-label-anchors.js","sourceRoot":"","sources":["../../src/library/contour-label-anchors.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,IAAG,CAAC,KAAK,CAAC,OAAO;QAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAC,IAAI,GAAG,EAA2C,CAAC;IAC9D,KAAI,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,EAAC,CAAC;QACrC,MAAM,OAAO,GAAC,KAAK,CAAC,OAAO,CAAC;QAAA,IAAG,CAAC,OAAO;YAAC,SAAS;QACjD,MAAM,KAAK,GAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAE,CAAC,GAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC;QAClF,IAAG,KAAK,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,IAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,CAAC,CAAC,EAAC,CAAC,EAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA,EAAE;QACzC,MAAM,QAAQ,GAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,GAAG,EAAE,QAAQ,KAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAC,QAAQ,IAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAA,CAAC,CAAA,CAAC,EAAC,EAAE,EAAC,KAAK,CAAC,EAAE,EAAC,KAAK,EAAC,KAAK,CAAC,KAAK,EAAC,CAAC,EAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PlanContourLayout, PlanContourValue } from '@neural-charts/core/plan';
2
+ import type { NativeScene, Observation } from './contracts.js';
3
+ export declare function ownContourSource(scene: NativeScene): Readonly<{
4
+ contour?: PlanContourLayout;
5
+ }>;
6
+ export declare function ownContourPoint(point: Observation, family: NativeScene['family']): Readonly<{
7
+ contour?: PlanContourValue;
8
+ }>;
9
+ export declare function validateContourScene(scene: NativeScene): void;
10
+ //# sourceMappingURL=contour-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-scene.d.ts","sourceRoot":"","sources":["../../src/library/contour-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAC,WAAW,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAK5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAC,WAAW,GAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAC,iBAAiB,CAAA;CAAC,CAAC,CAezF;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAC,WAAW,CAAC,QAAQ,CAAC,GAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAC,gBAAgB,CAAA;CAAC,CAAC,CAKpH;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAC,WAAW,GAAE,IAAI,CAc3D"}
@@ -0,0 +1,76 @@
1
+ const finite = (v) => typeof v === 'number' && Number.isFinite(v);
2
+ const text = (v) => typeof v === 'string' && v.length > 0 && v.length <= 128;
3
+ const integer = (v, min, max) => Number.isInteger(v) && v >= min && v <= max;
4
+ export function ownContourSource(scene) {
5
+ const c = scene.contour;
6
+ if (scene.family !== 'contour') {
7
+ if (c !== undefined)
8
+ throw Error('Contour metadata on another family');
9
+ return {};
10
+ }
11
+ if (!c || c.method !== 'marching-squares-bilinear' || !text(c.gridId) || !integer(c.columns, 2, 64) || !integer(c.rows, 2, 64) || !integer(c.segmentBudget, 1, 8192) || !integer(c.segmentCount, 0, c.segmentBudget) || !integer(c.visibleSegments, 0, c.segmentCount) || !integer(c.knownSamples, 0, c.columns * c.rows) || !integer(c.missingCells, 0, (c.columns - 1) * (c.rows - 1)) || !Array.isArray(c.samples) || c.samples.length !== c.columns * c.rows || !Array.isArray(c.levels) || c.levels.length < 1 || c.levels.length > 8 || c.emptyReason !== undefined && !['hidden', 'missing', 'noCrossings', 'outsideViewport'].includes(c.emptyReason))
12
+ throw Error('Invalid bounded contour source');
13
+ const ids = new Set();
14
+ let known = 0;
15
+ const samples = c.samples.map((sample, index) => {
16
+ if (!sample || !text(sample.id) || ids.has(sample.id) || !finite(sample.x) || !finite(sample.y) || sample.value !== null && !finite(sample.value))
17
+ throw Error('Invalid contour sample');
18
+ ids.add(sample.id);
19
+ if (sample.value !== null)
20
+ known++;
21
+ if (index % c.columns > 0 && sample.x <= c.samples[index - 1].x || index >= c.columns && sample.y <= c.samples[index - c.columns].y || index >= c.columns && sample.x !== c.samples[index % c.columns].x || index % c.columns > 0 && sample.y !== c.samples[index - index % c.columns].y)
22
+ throw Error('Invalid contour grid coordinates');
23
+ return { id: sample.id, x: sample.x, y: sample.y, value: sample.value };
24
+ });
25
+ const levels = c.levels.map((level, index) => { if (!text(level.id) || !finite(level.value) || index > 0 && level.value <= c.levels[index - 1].value || c.levels.slice(0, index).some(other => other.id === level.id))
26
+ throw Error('Invalid contour threshold'); return { id: level.id, value: level.value }; });
27
+ let missing = 0;
28
+ for (let row = 0; row < c.rows - 1; row++)
29
+ for (let column = 0; column < c.columns - 1; column++) {
30
+ const i = row * c.columns + column;
31
+ if ([i, i + 1, i + c.columns, i + c.columns + 1].some(index => samples[index].value === null))
32
+ missing++;
33
+ }
34
+ if (known !== c.knownSamples || missing !== c.missingCells || c.visibleSegments !== scene.observations.length || scene.observations.length > 0 && c.emptyReason !== undefined)
35
+ throw Error('Contour source count differs');
36
+ return { contour: { ...c, samples, levels } };
37
+ }
38
+ export function ownContourPoint(point, family) {
39
+ const c = point.contour;
40
+ if (family !== 'contour') {
41
+ if (c !== undefined)
42
+ throw Error('Contour observation on another family');
43
+ return {};
44
+ }
45
+ if (!c || c.type !== 'isoline' || !text(c.gridId) || !text(c.levelId) || !finite(c.level) || !integer(c.row, 0, 62) || !integer(c.column, 0, 62) || !Array.isArray(c.sourceIds) || c.sourceIds.length !== 4 || c.sourceIds.some(id => !text(id)) || !Array.isArray(c.sourceValues) || c.sourceValues.length !== 4 || c.sourceValues.some(v => !finite(v)) || [c.start, c.end, c.sourceStart, c.sourceEnd].some(p => !p || !finite(p.x) || !finite(p.y)) || point.hit !== undefined || point.value !== c.level || point.id.seriesId !== c.levelId)
46
+ throw Error('Invalid derived contour observation');
47
+ return { contour: { ...c, sourceIds: [c.sourceIds[0], c.sourceIds[1], c.sourceIds[2], c.sourceIds[3]], sourceValues: [c.sourceValues[0], c.sourceValues[1], c.sourceValues[2], c.sourceValues[3]], start: { ...c.start }, end: { ...c.end }, sourceStart: { ...c.sourceStart }, sourceEnd: { ...c.sourceEnd } } };
48
+ }
49
+ export function validateContourScene(scene) {
50
+ if (scene.family !== 'contour')
51
+ return;
52
+ const c = scene.contour, levels = new Map(c.levels.map(level => [level.id, level.value]));
53
+ if ((scene.legend ?? scene.series).some(level => !levels.has(level.id)))
54
+ throw Error('Unknown contour legend threshold');
55
+ for (const point of scene.observations) {
56
+ const p = point.contour;
57
+ if (p.gridId !== c.gridId || levels.get(p.levelId) !== p.level || p.row >= c.rows - 1 || p.column >= c.columns - 1)
58
+ throw Error('Contour cell differs from source');
59
+ const i = p.row * c.columns + p.column, indices = [i, i + 1, i + c.columns + 1, i + c.columns];
60
+ for (let corner = 0; corner < 4; corner++) {
61
+ const sample = c.samples[indices[corner]];
62
+ if (sample.id !== p.sourceIds[corner] || sample.value !== p.sourceValues[corner])
63
+ throw Error('Contour corners differ from source');
64
+ }
65
+ for (const endpoint of [p.start, p.end])
66
+ if (endpoint.x < 0 || endpoint.x > scene.width || endpoint.y < 0 || endpoint.y > scene.height)
67
+ throw Error('Contour segment outside plot');
68
+ const low = c.samples[i], high = c.samples[i + c.columns + 1];
69
+ for (const endpoint of [p.sourceStart, p.sourceEnd])
70
+ if (endpoint.x < low.x || endpoint.x > high.x || endpoint.y < low.y || endpoint.y > high.y)
71
+ throw Error('Contour source segment outside its cell');
72
+ if (point.x !== p.start.x / 2 + p.end.x / 2 || point.y !== p.start.y / 2 + p.end.y / 2)
73
+ throw Error('Contour anchor differs from its segment');
74
+ }
75
+ }
76
+ //# sourceMappingURL=contour-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contour-scene.js","sourceRoot":"","sources":["../../src/library/contour-scene.ts"],"names":[],"mappings":"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"}