@pibbl/core 0.0.1 → 0.0.3-alpha.109.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 (683) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.txt +81 -0
  3. package/dist/features/machines/animation.d.ts +64 -0
  4. package/dist/features/machines/animation.js +55 -0
  5. package/dist/features/machines/animation.js.map +7 -0
  6. package/dist/features/machines/animation.mjs +1 -0
  7. package/dist/features/machines/assign.d.ts +16 -0
  8. package/dist/features/machines/assign.js +15 -0
  9. package/dist/features/machines/assign.js.map +7 -0
  10. package/dist/features/machines/callback.d.ts +9 -0
  11. package/dist/features/machines/callback.js +7 -0
  12. package/dist/features/machines/callback.js.map +7 -0
  13. package/dist/features/machines/hook.d.ts +30 -0
  14. package/dist/features/machines/hook.js +37 -0
  15. package/dist/features/machines/hook.js.map +7 -0
  16. package/dist/features/machines/index.d.ts +6 -0
  17. package/dist/features/machines/index.js +12 -0
  18. package/dist/features/machines/index.js.map +7 -0
  19. package/dist/features/machines/index.mjs +1 -0
  20. package/dist/features/machines/runtime.d.ts +18 -0
  21. package/dist/features/machines/runtime.js +363 -0
  22. package/dist/features/machines/runtime.js.map +7 -0
  23. package/dist/features/machines/types.d.ts +164 -0
  24. package/dist/features/physics/2d-geometry.d.ts +3 -3
  25. package/dist/features/physics/2d-geometry.js.map +1 -1
  26. package/dist/features/physics/2d-testing.d.ts +1 -1
  27. package/dist/features/physics/2d-testing.js +2 -2
  28. package/dist/features/physics/2d-testing.js.map +2 -2
  29. package/dist/features/physics/2d.d.ts +115 -62
  30. package/dist/features/physics/2d.js +59 -28
  31. package/dist/features/physics/2d.js.map +2 -2
  32. package/dist/features/physics/lib/2d/canvas/components.js +25 -21
  33. package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
  34. package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
  35. package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
  36. package/dist/features/physics/lib/2d/collision/casts.js +4 -2
  37. package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
  38. package/dist/features/physics/lib/2d/query-types.d.ts +6 -0
  39. package/dist/features/physics/lib/2d/runtime/controller.d.ts +7 -6
  40. package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
  41. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  42. package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
  43. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
  44. package/dist/features/physics/lib/2d/shapes.js +8 -9
  45. package/dist/features/physics/lib/2d/shapes.js.map +2 -2
  46. package/dist/features/physics/lib/2d/types.d.ts +8 -30
  47. package/dist/features/physics/lib/2d/world/queries.d.ts +7 -6
  48. package/dist/features/physics/lib/2d/world/queries.js.map +2 -2
  49. package/dist/features/physics/lib/2d/world/rapier.js +22 -26
  50. package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
  51. package/dist/features/sprites/formats/aseprite.d.ts +5 -0
  52. package/dist/features/sprites/formats/texture-packer.d.ts +5 -0
  53. package/dist/features/sprites/index.d.ts +6 -0
  54. package/dist/features/sprites/loader.d.ts +25 -0
  55. package/dist/features/sprites/loader.js +6 -3
  56. package/dist/features/sprites/loader.js.map +2 -2
  57. package/dist/features/sprites/model.d.ts +75 -0
  58. package/dist/features/sprites/sprite.d.ts +22 -0
  59. package/dist/features/textures/index.d.ts +12 -2
  60. package/dist/features/textures/index.js +33 -1
  61. package/dist/features/textures/index.js.map +2 -2
  62. package/dist/features/textures/lib/chemical-field.d.ts +56 -0
  63. package/dist/features/textures/lib/chemical-field.js +154 -0
  64. package/dist/features/textures/lib/chemical-field.js.map +7 -0
  65. package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
  66. package/dist/features/textures/lib/chemical-recipes.js +275 -0
  67. package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
  68. package/dist/features/textures/lib/definitions.d.ts +3 -18
  69. package/dist/features/textures/lib/definitions.js +17 -24
  70. package/dist/features/textures/lib/definitions.js.map +2 -2
  71. package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
  72. package/dist/features/textures/lib/geometric-patterns.js +305 -0
  73. package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
  74. package/dist/features/textures/lib/gray-scott.d.ts +55 -0
  75. package/dist/features/textures/lib/gray-scott.js +37 -0
  76. package/dist/features/textures/lib/gray-scott.js.map +7 -0
  77. package/dist/features/textures/lib/palette.js +1 -3
  78. package/dist/features/textures/lib/palette.js.map +2 -2
  79. package/dist/features/textures/lib/patterns.d.ts +123 -0
  80. package/dist/features/textures/lib/patterns.js +344 -0
  81. package/dist/features/textures/lib/patterns.js.map +7 -0
  82. package/dist/features/textures/lib/rain-drops.js +2 -1
  83. package/dist/features/textures/lib/rain-drops.js.map +2 -2
  84. package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
  85. package/dist/features/textures/lib/reaction-diffusion.js +9 -20
  86. package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
  87. package/dist/features/textures/lib/simulation.d.ts +10 -4
  88. package/dist/features/textures/lib/simulation.js +23 -13
  89. package/dist/features/textures/lib/simulation.js.map +2 -2
  90. package/dist/features/textures/lib/wasm/electric.js +8 -1
  91. package/dist/features/textures/lib/wasm/electric.js.map +2 -2
  92. package/dist/features/textures/lib/water-surface.js +1 -3
  93. package/dist/features/textures/lib/water-surface.js.map +2 -2
  94. package/dist/features/viz/index.d.ts +92 -5
  95. package/dist/features/viz/index.js +202 -4
  96. package/dist/features/viz/index.js.map +2 -2
  97. package/dist/features/viz/inspection/bar.d.ts +79 -0
  98. package/dist/features/viz/inspection/bar.js +49 -0
  99. package/dist/features/viz/inspection/bar.js.map +7 -0
  100. package/dist/features/viz/inspection/candle.d.ts +156 -0
  101. package/dist/features/viz/inspection/candle.js +120 -0
  102. package/dist/features/viz/inspection/candle.js.map +7 -0
  103. package/dist/features/viz/inspection/capture-types.d.ts +65 -0
  104. package/dist/features/viz/inspection/capture.d.ts +16 -0
  105. package/dist/features/viz/inspection/capture.js +49 -0
  106. package/dist/features/viz/inspection/capture.js.map +7 -0
  107. package/dist/features/viz/inspection/handler.d.ts +36 -0
  108. package/dist/features/viz/inspection/handler.js +91 -0
  109. package/dist/features/viz/inspection/handler.js.map +7 -0
  110. package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
  111. package/dist/features/viz/inspection/ohlc-bar.js +118 -0
  112. package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
  113. package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
  114. package/dist/features/viz/inspection/owned-ref.js +99 -0
  115. package/dist/features/viz/inspection/owned-ref.js.map +7 -0
  116. package/dist/features/viz/inspection/painted-point.d.ts +22 -0
  117. package/dist/features/viz/inspection/painted-point.js +29 -0
  118. package/dist/features/viz/inspection/painted-point.js.map +7 -0
  119. package/dist/features/viz/inspection/queries.d.ts +100 -0
  120. package/dist/features/viz/inspection/queries.js +192 -0
  121. package/dist/features/viz/inspection/queries.js.map +7 -0
  122. package/dist/features/viz/inspection/query-types.d.ts +177 -0
  123. package/dist/features/viz/inspection/volume.d.ts +104 -0
  124. package/dist/features/viz/inspection/volume.js +95 -0
  125. package/dist/features/viz/inspection/volume.js.map +7 -0
  126. package/dist/features/viz/inspection.d.ts +19 -0
  127. package/dist/features/viz/inspection.js +54 -0
  128. package/dist/features/viz/inspection.js.map +7 -0
  129. package/dist/features/viz/inspection.mjs +1 -0
  130. package/dist/features/viz/lib/area-series.d.ts +62 -0
  131. package/dist/features/viz/lib/area-series.js +120 -0
  132. package/dist/features/viz/lib/area-series.js.map +7 -0
  133. package/dist/features/viz/lib/axis-labels.d.ts +2 -0
  134. package/dist/features/viz/lib/axis-labels.js +41 -0
  135. package/dist/features/viz/lib/axis-labels.js.map +7 -0
  136. package/dist/features/viz/lib/axis-title.d.ts +23 -0
  137. package/dist/features/viz/lib/axis-title.js +24 -0
  138. package/dist/features/viz/lib/axis-title.js.map +7 -0
  139. package/dist/features/viz/lib/axis.d.ts +1 -1
  140. package/dist/features/viz/lib/axis.js +50 -50
  141. package/dist/features/viz/lib/axis.js.map +2 -2
  142. package/dist/features/viz/lib/bar-scale.d.ts +7 -0
  143. package/dist/features/viz/lib/bar-scale.js +34 -0
  144. package/dist/features/viz/lib/bar-scale.js.map +7 -0
  145. package/dist/features/viz/lib/bar-series.d.ts +3 -1
  146. package/dist/features/viz/lib/bar-series.js +21 -5
  147. package/dist/features/viz/lib/bar-series.js.map +2 -2
  148. package/dist/features/viz/lib/baseline-series.d.ts +55 -0
  149. package/dist/features/viz/lib/baseline-series.js +136 -0
  150. package/dist/features/viz/lib/baseline-series.js.map +7 -0
  151. package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
  152. package/dist/features/viz/lib/candlestick-series.js +150 -0
  153. package/dist/features/viz/lib/candlestick-series.js.map +7 -0
  154. package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
  155. package/dist/features/viz/lib/censored-point-series.js +129 -0
  156. package/dist/features/viz/lib/censored-point-series.js.map +7 -0
  157. package/dist/features/viz/lib/chart-lines.d.ts +41 -0
  158. package/dist/features/viz/lib/chart-lines.js +32 -0
  159. package/dist/features/viz/lib/chart-lines.js.map +7 -0
  160. package/dist/features/viz/lib/color-context.d.ts +4 -0
  161. package/dist/features/viz/lib/color-context.js +41 -0
  162. package/dist/features/viz/lib/color-context.js.map +7 -0
  163. package/dist/features/viz/lib/color-math.d.ts +4 -0
  164. package/dist/features/viz/lib/color-math.js +31 -0
  165. package/dist/features/viz/lib/color-math.js.map +7 -0
  166. package/dist/features/viz/lib/color-types.d.ts +53 -0
  167. package/dist/features/viz/lib/curve-definition.d.ts +49 -0
  168. package/dist/features/viz/lib/curve-definition.js +142 -0
  169. package/dist/features/viz/lib/curve-definition.js.map +7 -0
  170. package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
  171. package/dist/features/viz/lib/diverging-color-scale.js +51 -0
  172. package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
  173. package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
  174. package/dist/features/viz/lib/domain-navigation.js +77 -0
  175. package/dist/features/viz/lib/domain-navigation.js.map +7 -0
  176. package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
  177. package/dist/features/viz/lib/editable-chart-elements.js +733 -0
  178. package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
  179. package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
  180. package/dist/features/viz/lib/financial-aggregation.js +116 -0
  181. package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
  182. package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
  183. package/dist/features/viz/lib/financial-autoscale.js +61 -0
  184. package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
  185. package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
  186. package/dist/features/viz/lib/financial-comparison.js +98 -0
  187. package/dist/features/viz/lib/financial-comparison.js.map +7 -0
  188. package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
  189. package/dist/features/viz/lib/financial-geometry.js +67 -0
  190. package/dist/features/viz/lib/financial-geometry.js.map +7 -0
  191. package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
  192. package/dist/features/viz/lib/financial-indicators.js +135 -0
  193. package/dist/features/viz/lib/financial-indicators.js.map +7 -0
  194. package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
  195. package/dist/features/viz/lib/financial-oscillators.js +265 -0
  196. package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
  197. package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
  198. package/dist/features/viz/lib/graph/bipartite.js +250 -0
  199. package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
  200. package/dist/features/viz/lib/graph/chord.d.ts +44 -0
  201. package/dist/features/viz/lib/graph/chord.js +348 -0
  202. package/dist/features/viz/lib/graph/chord.js.map +7 -0
  203. package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
  204. package/dist/features/viz/lib/graph/dependency.js +140 -0
  205. package/dist/features/viz/lib/graph/dependency.js.map +7 -0
  206. package/dist/features/viz/lib/graph/force.d.ts +28 -0
  207. package/dist/features/viz/lib/graph/force.js +580 -0
  208. package/dist/features/viz/lib/graph/force.js.map +7 -0
  209. package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
  210. package/dist/features/viz/lib/graph/hierarchy.js +112 -0
  211. package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
  212. package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
  213. package/dist/features/viz/lib/graph/icicle.js +153 -0
  214. package/dist/features/viz/lib/graph/icicle.js.map +7 -0
  215. package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
  216. package/dist/features/viz/lib/graph/matrix.js +243 -0
  217. package/dist/features/viz/lib/graph/matrix.js.map +7 -0
  218. package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
  219. package/dist/features/viz/lib/graph/neighborhood.js +281 -0
  220. package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
  221. package/dist/features/viz/lib/graph/routes.d.ts +35 -0
  222. package/dist/features/viz/lib/graph/routes.js +101 -0
  223. package/dist/features/viz/lib/graph/routes.js.map +7 -0
  224. package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
  225. package/dist/features/viz/lib/graph/sankey.js +341 -0
  226. package/dist/features/viz/lib/graph/sankey.js.map +7 -0
  227. package/dist/features/viz/lib/graph/shared.d.ts +59 -0
  228. package/dist/features/viz/lib/graph/shared.js +301 -0
  229. package/dist/features/viz/lib/graph/shared.js.map +7 -0
  230. package/dist/features/viz/lib/graph/tree.d.ts +11 -0
  231. package/dist/features/viz/lib/graph/tree.js +232 -0
  232. package/dist/features/viz/lib/graph/tree.js.map +7 -0
  233. package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
  234. package/dist/features/viz/lib/graph/treemap.js +227 -0
  235. package/dist/features/viz/lib/graph/treemap.js.map +7 -0
  236. package/dist/features/viz/lib/graph/types.d.ts +1097 -0
  237. package/dist/features/viz/lib/hover-card.js +8 -9
  238. package/dist/features/viz/lib/hover-card.js.map +2 -2
  239. package/dist/features/viz/lib/hover-data.d.ts +1 -1
  240. package/dist/features/viz/lib/hover-data.js +6 -3
  241. package/dist/features/viz/lib/hover-data.js.map +2 -2
  242. package/dist/features/viz/lib/hover-types.d.ts +5 -5
  243. package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
  244. package/dist/features/viz/lib/interval-band-series.js +136 -0
  245. package/dist/features/viz/lib/interval-band-series.js.map +7 -0
  246. package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
  247. package/dist/features/viz/lib/interval-diamond-series.js +122 -0
  248. package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
  249. package/dist/features/viz/lib/interval-series.d.ts +79 -0
  250. package/dist/features/viz/lib/interval-series.js +158 -0
  251. package/dist/features/viz/lib/interval-series.js.map +7 -0
  252. package/dist/features/viz/lib/layout-pie.js +9 -13
  253. package/dist/features/viz/lib/layout-pie.js.map +2 -2
  254. package/dist/features/viz/lib/line-series.d.ts +1 -1
  255. package/dist/features/viz/lib/line-series.js +47 -28
  256. package/dist/features/viz/lib/line-series.js.map +2 -2
  257. package/dist/features/viz/lib/linear-scale-component.d.ts +7 -0
  258. package/dist/features/viz/lib/linear-scale-component.js +18 -0
  259. package/dist/features/viz/lib/linear-scale-component.js.map +7 -0
  260. package/dist/features/viz/lib/linear-scale.js +1 -1
  261. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  262. package/dist/features/viz/lib/log-scale-component.d.ts +7 -0
  263. package/dist/features/viz/lib/log-scale-component.js +19 -0
  264. package/dist/features/viz/lib/log-scale-component.js.map +7 -0
  265. package/dist/features/viz/lib/log-scale.d.ts +2 -0
  266. package/dist/features/viz/lib/log-scale.js +53 -0
  267. package/dist/features/viz/lib/log-scale.js.map +7 -0
  268. package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
  269. package/dist/features/viz/lib/monotone-curve.js +63 -0
  270. package/dist/features/viz/lib/monotone-curve.js.map +7 -0
  271. package/dist/features/viz/lib/nearest.d.ts +9 -9
  272. package/dist/features/viz/lib/nearest.js.map +1 -1
  273. package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
  274. package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
  275. package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
  276. package/dist/features/viz/lib/numeric-ticks.d.ts +38 -0
  277. package/dist/features/viz/lib/numeric-ticks.js +54 -0
  278. package/dist/features/viz/lib/numeric-ticks.js.map +7 -0
  279. package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
  280. package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
  281. package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
  282. package/dist/features/viz/lib/paired-series.d.ts +44 -0
  283. package/dist/features/viz/lib/paired-series.js +93 -0
  284. package/dist/features/viz/lib/paired-series.js.map +7 -0
  285. package/dist/features/viz/lib/pie-layout.js +2 -1
  286. package/dist/features/viz/lib/pie-layout.js.map +2 -2
  287. package/dist/features/viz/lib/plot-series.js +11 -6
  288. package/dist/features/viz/lib/plot-series.js.map +2 -2
  289. package/dist/features/viz/lib/plot-types.d.ts +4 -3
  290. package/dist/features/viz/lib/point-scale-component.d.ts +7 -0
  291. package/dist/features/viz/lib/point-scale-component.js +19 -0
  292. package/dist/features/viz/lib/point-scale-component.js.map +7 -0
  293. package/dist/features/viz/lib/point-scale.d.ts +2 -0
  294. package/dist/features/viz/lib/point-scale.js +45 -0
  295. package/dist/features/viz/lib/point-scale.js.map +7 -0
  296. package/dist/features/viz/lib/point-series.d.ts +1 -1
  297. package/dist/features/viz/lib/point-series.js +36 -9
  298. package/dist/features/viz/lib/point-series.js.map +2 -2
  299. package/dist/features/viz/lib/point-types.d.ts +5 -2
  300. package/dist/features/viz/lib/reference-band.d.ts +16 -0
  301. package/dist/features/viz/lib/reference-band.js +30 -0
  302. package/dist/features/viz/lib/reference-band.js.map +7 -0
  303. package/dist/features/viz/lib/scale-adjust.js +9 -4
  304. package/dist/features/viz/lib/scale-adjust.js.map +2 -2
  305. package/dist/features/viz/lib/scale-context.d.ts +5 -4
  306. package/dist/features/viz/lib/scale-context.js +15 -11
  307. package/dist/features/viz/lib/scale-context.js.map +2 -2
  308. package/dist/features/viz/lib/scale-provider.d.ts +2 -0
  309. package/dist/features/viz/lib/scale-provider.js +13 -0
  310. package/dist/features/viz/lib/scale-provider.js.map +7 -0
  311. package/dist/features/viz/lib/scale-ticks.d.ts +5 -0
  312. package/dist/features/viz/lib/scale-ticks.js +64 -0
  313. package/dist/features/viz/lib/scale-ticks.js.map +7 -0
  314. package/dist/features/viz/lib/scale-view.d.ts +4 -0
  315. package/dist/features/viz/lib/scale-view.js +21 -0
  316. package/dist/features/viz/lib/scale-view.js.map +7 -0
  317. package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
  318. package/dist/features/viz/lib/sequential-color-scale.js +49 -0
  319. package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
  320. package/dist/features/viz/lib/series-position.d.ts +12 -0
  321. package/dist/features/viz/lib/series-position.js +44 -0
  322. package/dist/features/viz/lib/series-position.js.map +7 -0
  323. package/dist/features/viz/lib/step-curves.d.ts +19 -0
  324. package/dist/features/viz/lib/step-curves.js +53 -0
  325. package/dist/features/viz/lib/step-curves.js.map +7 -0
  326. package/dist/features/viz/lib/symlog-scale-component.d.ts +7 -0
  327. package/dist/features/viz/lib/symlog-scale-component.js +19 -0
  328. package/dist/features/viz/lib/symlog-scale-component.js.map +7 -0
  329. package/dist/features/viz/lib/symlog-scale.d.ts +2 -0
  330. package/dist/features/viz/lib/symlog-scale.js +38 -0
  331. package/dist/features/viz/lib/symlog-scale.js.map +7 -0
  332. package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
  333. package/dist/features/viz/lib/threshold-color-scale.js +59 -0
  334. package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
  335. package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
  336. package/dist/features/viz/lib/trading-time-mapping.js +89 -0
  337. package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
  338. package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
  339. package/dist/features/viz/lib/trading-time-scale.js +96 -0
  340. package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
  341. package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
  342. package/dist/features/viz/lib/trajectory-series.js +111 -0
  343. package/dist/features/viz/lib/trajectory-series.js.map +7 -0
  344. package/dist/features/viz/lib/types.d.ts +114 -21
  345. package/dist/features/viz/lib/use-bar-scale.d.ts +8 -0
  346. package/dist/features/viz/lib/use-bar-scale.js +9 -0
  347. package/dist/features/viz/lib/use-bar-scale.js.map +7 -0
  348. package/dist/features/viz/lib/use-continuous-scale.d.ts +8 -0
  349. package/dist/features/viz/lib/use-continuous-scale.js +14 -0
  350. package/dist/features/viz/lib/use-continuous-scale.js.map +7 -0
  351. package/dist/features/viz/lib/use-linear-scale.d.ts +8 -0
  352. package/dist/features/viz/lib/use-linear-scale.js +9 -0
  353. package/dist/features/viz/lib/use-linear-scale.js.map +7 -0
  354. package/dist/features/viz/lib/use-log-scale.d.ts +8 -0
  355. package/dist/features/viz/lib/use-log-scale.js +9 -0
  356. package/dist/features/viz/lib/use-log-scale.js.map +7 -0
  357. package/dist/features/viz/lib/use-point-scale.d.ts +8 -0
  358. package/dist/features/viz/lib/use-point-scale.js +9 -0
  359. package/dist/features/viz/lib/use-point-scale.js.map +7 -0
  360. package/dist/features/viz/lib/use-symlog-scale.d.ts +8 -0
  361. package/dist/features/viz/lib/use-symlog-scale.js +9 -0
  362. package/dist/features/viz/lib/use-symlog-scale.js.map +7 -0
  363. package/dist/features/viz/lib/use-utc-scale.d.ts +8 -0
  364. package/dist/features/viz/lib/use-utc-scale.js +9 -0
  365. package/dist/features/viz/lib/use-utc-scale.js.map +7 -0
  366. package/dist/features/viz/lib/utc-labels.d.ts +12 -0
  367. package/dist/features/viz/lib/utc-labels.js +27 -0
  368. package/dist/features/viz/lib/utc-labels.js.map +7 -0
  369. package/dist/features/viz/lib/utc-scale-component.d.ts +7 -0
  370. package/dist/features/viz/lib/utc-scale-component.js +18 -0
  371. package/dist/features/viz/lib/utc-scale-component.js.map +7 -0
  372. package/dist/features/viz/lib/utc-scale.d.ts +21 -0
  373. package/dist/features/viz/lib/utc-scale.js +124 -0
  374. package/dist/features/viz/lib/utc-scale.js.map +7 -0
  375. package/dist/features/viz/lib/volume-series.d.ts +59 -0
  376. package/dist/features/viz/lib/volume-series.js +117 -0
  377. package/dist/features/viz/lib/volume-series.js.map +7 -0
  378. package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
  379. package/dist/features/viz/lib/weighted-point-series.js +169 -0
  380. package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
  381. package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
  382. package/dist/filters/backdrop-contrast-gpu.js +33 -0
  383. package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
  384. package/dist/filters/backdrop-contrast.d.ts +21 -0
  385. package/dist/filters/backdrop-contrast.js +61 -0
  386. package/dist/filters/backdrop-contrast.js.map +7 -0
  387. package/dist/filters/displacement.js +1 -1
  388. package/dist/filters/displacement.js.map +2 -2
  389. package/dist/filters/emboss-gpu.d.ts +4 -0
  390. package/dist/filters/emboss-gpu.js +39 -0
  391. package/dist/filters/emboss-gpu.js.map +7 -0
  392. package/dist/filters/emboss.d.ts +32 -0
  393. package/dist/filters/emboss.js +104 -0
  394. package/dist/filters/emboss.js.map +7 -0
  395. package/dist/filters/filter-executor.d.ts +11 -4
  396. package/dist/filters/filter-executor.js +104 -49
  397. package/dist/filters/filter-executor.js.map +2 -2
  398. package/dist/filters/reflected-light.js +1 -1
  399. package/dist/filters/reflected-light.js.map +2 -2
  400. package/dist/filters/reflection-gpu.d.ts +3 -1
  401. package/dist/filters/reflection-gpu.js +5 -2
  402. package/dist/filters/reflection-gpu.js.map +2 -2
  403. package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
  404. package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
  405. package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
  406. package/dist/filters/render-emboss-boundary.d.ts +13 -0
  407. package/dist/filters/render-emboss-boundary.js +131 -0
  408. package/dist/filters/render-emboss-boundary.js.map +7 -0
  409. package/dist/filters.d.ts +9 -5
  410. package/dist/filters.js +4 -0
  411. package/dist/filters.js.map +2 -2
  412. package/dist/index.d.ts +10 -6
  413. package/dist/index.js +18 -2
  414. package/dist/index.js.map +2 -2
  415. package/dist/internal.d.ts +4 -0
  416. package/dist/internal.js +6 -0
  417. package/dist/internal.js.map +2 -2
  418. package/dist/layout-kernel.d.ts +12 -0
  419. package/dist/layout-kernel.js +11 -0
  420. package/dist/layout-kernel.js.map +7 -0
  421. package/dist/layout-kernel.mjs +1 -0
  422. package/dist/lib/animation/definition.d.ts +5 -3
  423. package/dist/lib/animation/definition.js +29 -4
  424. package/dist/lib/animation/definition.js.map +2 -2
  425. package/dist/lib/animation/playback.d.ts +8 -0
  426. package/dist/lib/animation/playback.js +33 -11
  427. package/dist/lib/animation/playback.js.map +2 -2
  428. package/dist/lib/animation/spring.d.ts +3 -1
  429. package/dist/lib/animation/spring.js.map +2 -2
  430. package/dist/lib/animation/types.d.ts +29 -73
  431. package/dist/lib/backend/types.d.ts +13 -1
  432. package/dist/lib/backend/types.js.map +2 -2
  433. package/dist/lib/components/arc-geometry.js +2 -1
  434. package/dist/lib/components/arc-geometry.js.map +2 -2
  435. package/dist/lib/components/g.js +2 -0
  436. package/dist/lib/components/g.js.map +2 -2
  437. package/dist/lib/components/html-box.js +2 -1
  438. package/dist/lib/components/html-box.js.map +2 -2
  439. package/dist/lib/components/img.js +3 -3
  440. package/dist/lib/components/img.js.map +2 -2
  441. package/dist/lib/components/layer.js +98 -16
  442. package/dist/lib/components/layer.js.map +3 -3
  443. package/dist/lib/components/text.d.ts +16 -0
  444. package/dist/lib/components/text.js +131 -24
  445. package/dist/lib/components/text.js.map +2 -2
  446. package/dist/lib/define-primitive.d.ts +4 -2
  447. package/dist/lib/define-primitive.js +3 -1
  448. package/dist/lib/define-primitive.js.map +2 -2
  449. package/dist/lib/element/metadata.d.ts +9 -0
  450. package/dist/lib/element/metadata.js +19 -0
  451. package/dist/lib/element/metadata.js.map +2 -2
  452. package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
  453. package/dist/lib/element/resolve-primitive-inputs.js +17 -4
  454. package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
  455. package/dist/lib/events/event-facade.d.ts +18 -0
  456. package/dist/lib/events/event-facade.js +28 -2
  457. package/dist/lib/events/event-facade.js.map +2 -2
  458. package/dist/lib/events/hit-test.js +2 -1
  459. package/dist/lib/events/hit-test.js.map +2 -2
  460. package/dist/lib/events/propagation.d.ts +2 -1
  461. package/dist/lib/events/propagation.js +22 -16
  462. package/dist/lib/events/propagation.js.map +2 -2
  463. package/dist/lib/events/registrations.d.ts +10 -0
  464. package/dist/lib/events/registrations.js +160 -5
  465. package/dist/lib/events/registrations.js.map +2 -2
  466. package/dist/lib/execute-render.js +25 -1
  467. package/dist/lib/execute-render.js.map +2 -2
  468. package/dist/lib/filter/filter-region.js +3 -10
  469. package/dist/lib/filter/filter-region.js.map +2 -2
  470. package/dist/lib/focus/focus-manager.d.ts +8 -1
  471. package/dist/lib/focus/focus-manager.js +87 -43
  472. package/dist/lib/focus/focus-manager.js.map +2 -2
  473. package/dist/lib/focus/geometry.d.ts +2 -0
  474. package/dist/lib/focus/geometry.js +6 -0
  475. package/dist/lib/focus/geometry.js.map +2 -2
  476. package/dist/lib/geometry/path-bend-guide.js +1 -1
  477. package/dist/lib/geometry/path-bend-guide.js.map +2 -2
  478. package/dist/lib/geometry/path-geometry.js +12 -11
  479. package/dist/lib/geometry/path-geometry.js.map +2 -2
  480. package/dist/lib/geometry/path-transforms.js +17 -21
  481. package/dist/lib/geometry/path-transforms.js.map +2 -2
  482. package/dist/lib/geometry/path-warp-bezier.js +3 -1
  483. package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
  484. package/dist/lib/geometry/path-warp.js +1 -1
  485. package/dist/lib/geometry/path-warp.js.map +2 -2
  486. package/dist/lib/global-state.js +2 -0
  487. package/dist/lib/global-state.js.map +2 -2
  488. package/dist/lib/hooks/use-animated-value.d.ts +11 -21
  489. package/dist/lib/hooks/use-animated-value.js +23 -70
  490. package/dist/lib/hooks/use-animated-value.js.map +3 -3
  491. package/dist/lib/hooks/use-playback.js +1 -0
  492. package/dist/lib/hooks/use-playback.js.map +2 -2
  493. package/dist/lib/html/html-events.d.ts +32 -0
  494. package/dist/lib/html/html-events.js +179 -0
  495. package/dist/lib/html/html-events.js.map +7 -0
  496. package/dist/lib/html/html-service.d.ts +8 -2
  497. package/dist/lib/html/html-service.js +198 -65
  498. package/dist/lib/html/html-service.js.map +2 -2
  499. package/dist/lib/html/overlay-config.js +7 -6
  500. package/dist/lib/html/overlay-config.js.map +2 -2
  501. package/dist/lib/html/types.d.ts +29 -2
  502. package/dist/lib/layout/absolute.d.ts +11 -5
  503. package/dist/lib/layout/absolute.js +329 -55
  504. package/dist/lib/layout/absolute.js.map +3 -3
  505. package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
  506. package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
  507. package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
  508. package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
  509. package/dist/lib/layout/allocation-checkpoint.js +463 -0
  510. package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
  511. package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
  512. package/dist/lib/layout/allocation-dependencies.js +90 -0
  513. package/dist/lib/layout/allocation-dependencies.js.map +7 -0
  514. package/dist/lib/layout/allocation-revision.d.ts +13 -0
  515. package/dist/lib/layout/allocation-revision.js +67 -0
  516. package/dist/lib/layout/allocation-revision.js.map +7 -0
  517. package/dist/lib/layout/box-insets.d.ts +17 -0
  518. package/dist/lib/layout/box-insets.js +138 -0
  519. package/dist/lib/layout/box-insets.js.map +7 -0
  520. package/dist/lib/layout/box-sizing.d.ts +16 -0
  521. package/dist/lib/layout/box-sizing.js +77 -0
  522. package/dist/lib/layout/box-sizing.js.map +7 -0
  523. package/dist/lib/layout/box.js +42 -12
  524. package/dist/lib/layout/box.js.map +2 -2
  525. package/dist/lib/layout/canvas-measurement.d.ts +13 -0
  526. package/dist/lib/layout/canvas-measurement.js +57 -0
  527. package/dist/lib/layout/canvas-measurement.js.map +7 -0
  528. package/dist/lib/layout/context.d.ts +35 -6
  529. package/dist/lib/layout/context.js +72 -3
  530. package/dist/lib/layout/context.js.map +2 -2
  531. package/dist/lib/layout/define-layout-component.d.ts +23 -0
  532. package/dist/lib/layout/define-layout-component.js +84 -0
  533. package/dist/lib/layout/define-layout-component.js.map +7 -0
  534. package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
  535. package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
  536. package/dist/lib/layout/flex-baseline-mode.js +7 -0
  537. package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
  538. package/dist/lib/layout/flex.d.ts +50 -15
  539. package/dist/lib/layout/flex.js +2124 -195
  540. package/dist/lib/layout/flex.js.map +3 -3
  541. package/dist/lib/layout/flow.js +225 -49
  542. package/dist/lib/layout/flow.js.map +2 -2
  543. package/dist/lib/layout/geometry-publication.d.ts +53 -0
  544. package/dist/lib/layout/geometry-publication.js +244 -0
  545. package/dist/lib/layout/geometry-publication.js.map +7 -0
  546. package/dist/lib/layout/grid-kernel.d.ts +63 -0
  547. package/dist/lib/layout/grid-kernel.js +168 -0
  548. package/dist/lib/layout/grid-kernel.js.map +7 -0
  549. package/dist/lib/layout/grid.d.ts +63 -4
  550. package/dist/lib/layout/grid.js +767 -171
  551. package/dist/lib/layout/grid.js.map +3 -3
  552. package/dist/lib/layout/measure.d.ts +55 -3
  553. package/dist/lib/layout/measure.js +448 -15
  554. package/dist/lib/layout/measure.js.map +2 -2
  555. package/dist/lib/layout/overlay.js +81 -23
  556. package/dist/lib/layout/overlay.js.map +2 -2
  557. package/dist/lib/layout/participation.d.ts +27 -0
  558. package/dist/lib/layout/participation.js +188 -0
  559. package/dist/lib/layout/participation.js.map +7 -0
  560. package/dist/lib/layout/place-child.js +1 -1
  561. package/dist/lib/layout/place-child.js.map +2 -2
  562. package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
  563. package/dist/lib/layout/positioning-diagnostics.js +13 -2
  564. package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
  565. package/dist/lib/layout/prepared-root.d.ts +121 -0
  566. package/dist/lib/layout/prepared-root.js +360 -0
  567. package/dist/lib/layout/prepared-root.js.map +7 -0
  568. package/dist/lib/layout/standalone-kernel.d.ts +60 -0
  569. package/dist/lib/layout/standalone-kernel.js +722 -0
  570. package/dist/lib/layout/standalone-kernel.js.map +7 -0
  571. package/dist/lib/layout/topology.d.ts +21 -0
  572. package/dist/lib/layout/topology.js +113 -0
  573. package/dist/lib/layout/topology.js.map +7 -0
  574. package/dist/lib/layout/types.d.ts +5 -0
  575. package/dist/lib/layout/wasm/artifact.d.ts +1 -0
  576. package/dist/lib/layout/wasm/artifact.js +5 -0
  577. package/dist/lib/layout/wasm/artifact.js.map +7 -0
  578. package/dist/lib/layout/wasm/bytes.d.ts +1 -0
  579. package/dist/lib/layout/wasm/bytes.js +5 -0
  580. package/dist/lib/layout/wasm/bytes.js.map +7 -0
  581. package/dist/lib/layout/wasm/embedded.d.ts +2 -0
  582. package/dist/lib/layout/wasm/embedded.js +12 -0
  583. package/dist/lib/layout/wasm/embedded.js.map +7 -0
  584. package/dist/lib/layout/wasm/layout.wasm +0 -0
  585. package/dist/lib/layout/wasm/module.d.ts +8 -0
  586. package/dist/lib/layout/wasm/module.js +70 -0
  587. package/dist/lib/layout/wasm/module.js.map +7 -0
  588. package/dist/lib/layout/wasm/region.d.ts +267 -0
  589. package/dist/lib/layout/wasm/region.js +1018 -0
  590. package/dist/lib/layout/wasm/region.js.map +7 -0
  591. package/dist/lib/manipulation/controller.js +4 -7
  592. package/dist/lib/manipulation/controller.js.map +2 -2
  593. package/dist/lib/manipulation/frame.js +1 -1
  594. package/dist/lib/manipulation/frame.js.map +2 -2
  595. package/dist/lib/manipulation/handles.js +32 -33
  596. package/dist/lib/manipulation/handles.js.map +2 -2
  597. package/dist/lib/manipulation/solve.js +12 -10
  598. package/dist/lib/manipulation/solve.js.map +2 -2
  599. package/dist/lib/mount-pibbl.js +1 -0
  600. package/dist/lib/mount-pibbl.js.map +2 -2
  601. package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
  602. package/dist/lib/mount-prepared-pibbl.js +29 -0
  603. package/dist/lib/mount-prepared-pibbl.js.map +7 -0
  604. package/dist/lib/mount-request.d.ts +8 -0
  605. package/dist/lib/mount-request.js +41 -0
  606. package/dist/lib/mount-request.js.map +7 -0
  607. package/dist/lib/pibbl.d.ts +21 -13
  608. package/dist/lib/pibbl.js +18 -16
  609. package/dist/lib/pibbl.js.map +2 -2
  610. package/dist/lib/recording/recording.d.ts +43 -0
  611. package/dist/lib/recording/recording.js +555 -0
  612. package/dist/lib/recording/recording.js.map +7 -0
  613. package/dist/lib/recording/types.d.ts +118 -0
  614. package/dist/lib/recording/wasm-bytes.d.ts +1 -0
  615. package/dist/lib/recording/wasm-bytes.js +5 -0
  616. package/dist/lib/recording/wasm-bytes.js.map +7 -0
  617. package/dist/lib/recording/worker-source.d.ts +1 -0
  618. package/dist/lib/recording/worker-source.js +5 -0
  619. package/dist/lib/recording/worker-source.js.map +7 -0
  620. package/dist/lib/render-layer/controller.d.ts +9 -3
  621. package/dist/lib/render-layer/controller.js +259 -110
  622. package/dist/lib/render-layer/controller.js.map +2 -2
  623. package/dist/lib/render-transaction.d.ts +12 -2
  624. package/dist/lib/render-transaction.js +69 -1
  625. package/dist/lib/render-transaction.js.map +2 -2
  626. package/dist/lib/render.js +32 -8
  627. package/dist/lib/render.js.map +2 -2
  628. package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
  629. package/dist/lib/scheduler/realm-scheduler.js +55 -26
  630. package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
  631. package/dist/lib/scheduler/renderer-participant.js +1 -0
  632. package/dist/lib/scheduler/renderer-participant.js.map +2 -2
  633. package/dist/lib/series-inspection-frame.d.ts +18 -0
  634. package/dist/lib/series-inspection-frame.js +70 -0
  635. package/dist/lib/series-inspection-frame.js.map +7 -0
  636. package/dist/lib/signals/edge.d.ts +7 -4
  637. package/dist/lib/signals/edge.js +25 -3
  638. package/dist/lib/signals/edge.js.map +2 -2
  639. package/dist/lib/signals/graph.d.ts +16 -2
  640. package/dist/lib/signals/graph.js +54 -12
  641. package/dist/lib/signals/graph.js.map +2 -2
  642. package/dist/lib/signals/input-provision.d.ts +15 -0
  643. package/dist/lib/signals/input-provision.js +53 -3
  644. package/dist/lib/signals/input-provision.js.map +2 -2
  645. package/dist/lib/signals/render-consumer.d.ts +3 -0
  646. package/dist/lib/signals/render-consumer.js +22 -14
  647. package/dist/lib/signals/render-consumer.js.map +2 -2
  648. package/dist/lib/style/positioning.d.ts +50 -2
  649. package/dist/lib/style/positioning.js +28 -4
  650. package/dist/lib/style/positioning.js.map +2 -2
  651. package/dist/lib/style/resolve-built-in.d.ts +4 -3
  652. package/dist/lib/style/resolve-built-in.js +17 -3
  653. package/dist/lib/style/resolve-built-in.js.map +2 -2
  654. package/dist/lib/style/resolve-dispatch.d.ts +3 -0
  655. package/dist/lib/style/resolve-dispatch.js +77 -4
  656. package/dist/lib/style/resolve-dispatch.js.map +2 -2
  657. package/dist/lib/style/resolve-length.d.ts +2 -0
  658. package/dist/lib/style/resolve-length.js +13 -9
  659. package/dist/lib/style/resolve-length.js.map +2 -2
  660. package/dist/lib/style/sizing-length.d.ts +51 -0
  661. package/dist/lib/style/sizing-length.js +77 -0
  662. package/dist/lib/style/sizing-length.js.map +7 -0
  663. package/dist/lib/style/types.d.ts +63 -25
  664. package/dist/lib/surface/root-surface.js +10 -6
  665. package/dist/lib/surface/root-surface.js.map +2 -2
  666. package/dist/lib/textures/texture.js +10 -8
  667. package/dist/lib/textures/texture.js.map +2 -2
  668. package/dist/lib/transitions/capture.js +4 -1
  669. package/dist/lib/transitions/capture.js.map +2 -2
  670. package/dist/lib/transitions/embers-physics.js +17 -10
  671. package/dist/lib/transitions/embers-physics.js.map +2 -2
  672. package/dist/lib/types.d.ts +110 -1
  673. package/dist/sync.d.ts +16 -0
  674. package/dist/sync.js +13 -0
  675. package/dist/sync.js.map +7 -0
  676. package/dist/sync.mjs +1 -0
  677. package/package.json +43 -6
  678. package/dist/features/viz/lib/scale.d.ts +0 -11
  679. package/dist/features/viz/lib/scale.js +0 -80
  680. package/dist/features/viz/lib/scale.js.map +0 -7
  681. package/dist/features/viz/lib/use-scale.d.ts +0 -20
  682. package/dist/features/viz/lib/use-scale.js +0 -10
  683. package/dist/features/viz/lib/use-scale.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ import type { LogScaleProps } from "./types.js";
2
+ /**
3
+ * Provides a named positive logarithmic mapping to descendant marks and axes.
4
+ * @param props - Identity, positive domain, range, and optional tick base. See {@link LogScaleProps}.
5
+ * @returns Descendant content within the logarithmic scale scope.
6
+ */
7
+ export declare function LogScale(props: LogScaleProps): import("@pibbl/core").PibblNode;
@@ -0,0 +1,19 @@
1
+ import { resolveSignalValue, useLayoutBox } from "@pibbl/core";
2
+ import { resolveLogScale } from "./log-scale.js";
3
+ import { useScaleProvider } from "./scale-provider.js";
4
+ function LogScale(props) {
5
+ const { width, height } = useLayoutBox();
6
+ useScaleProvider(props.id, "log", () => resolveLogScale(
7
+ resolveSignalValue(props.domain),
8
+ resolveSignalValue(props.range),
9
+ resolveSignalValue(props.reverse ?? false),
10
+ width,
11
+ height,
12
+ resolveSignalValue(props.base ?? 10)
13
+ ), [props.domain, props.range, props.reverse, props.base, width, height]);
14
+ return props.children;
15
+ }
16
+ export {
17
+ LogScale
18
+ };
19
+ //# sourceMappingURL=log-scale-component.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/log-scale-component.ts"],
4
+ "sourcesContent": ["import { resolveSignalValue, useLayoutBox } from \"@pibbl/core\";\nimport type { LogScaleProps } from \"./types.js\";\nimport { resolveLogScale } from \"./log-scale.js\";\nimport { useScaleProvider } from \"./scale-provider.js\";\n/**\n * Provides a named positive logarithmic mapping to descendant marks and axes.\n * @param props - Identity, positive domain, range, and optional tick base. See {@link LogScaleProps}.\n * @returns Descendant content within the logarithmic scale scope.\n */\nexport function LogScale(props: LogScaleProps) {\n const { width, height } = useLayoutBox();\n useScaleProvider(props.id, \"log\", () => resolveLogScale(\n resolveSignalValue(props.domain), resolveSignalValue(props.range),\n resolveSignalValue(props.reverse ?? false), width, height, resolveSignalValue(props.base ?? 10),\n ), [props.domain, props.range, props.reverse, props.base, width, height]);\n return props.children;\n}\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB,oBAAoB;AAEjD,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAM1B,SAAS,SAAS,OAAsB;AAC7C,QAAM,EAAE,OAAO,OAAO,IAAI,aAAa;AACvC,mBAAiB,MAAM,IAAI,OAAO,MAAM;AAAA,IACtC,mBAAmB,MAAM,MAAM;AAAA,IAAG,mBAAmB,MAAM,KAAK;AAAA,IAChE,mBAAmB,MAAM,WAAW,KAAK;AAAA,IAAG;AAAA,IAAO;AAAA,IAAQ,mBAAmB,MAAM,QAAQ,EAAE;AAAA,EAChG,GAAG,CAAC,MAAM,QAAQ,MAAM,OAAO,MAAM,SAAS,MAAM,MAAM,OAAO,MAAM,CAAC;AACxE,SAAO,MAAM;AACf;",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import type { LinearDomain, ResolvedLogScale, ScaleRange } from "./types.js";
2
+ export declare function resolveLogScale(domainInput: LinearDomain, range: ScaleRange, reverse: boolean, width: number, height: number, base: number): ResolvedLogScale;
@@ -0,0 +1,53 @@
1
+ import { resolveLinearScale } from "./linear-scale.js";
2
+ function positive(value, field) {
3
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0)
4
+ throw new RangeError(`LogScale ${field} must be finite and positive.`);
5
+ return value;
6
+ }
7
+ function resolveLogScale(domainInput, range, reverse, width, height, base) {
8
+ if (typeof base !== "number" || !Number.isFinite(base) || base <= 1)
9
+ throw new RangeError("LogScale base must be finite and greater than one.");
10
+ if (!Array.isArray(domainInput) || domainInput.length !== 2)
11
+ throw new RangeError("LogScale domain requires two positive endpoints.");
12
+ const domain = Object.freeze([positive(domainInput[0], "domain"), positive(domainInput[1], "domain")]);
13
+ const logarithm = (value) => Math.log(positive(value, "map input"));
14
+ const mapping = resolveLinearScale([logarithm(domain[0]), logarithm(domain[1])], range, reverse, width, height);
15
+ return Object.freeze({
16
+ ...mapping,
17
+ type: "log",
18
+ domain,
19
+ base,
20
+ map(value) {
21
+ return mapping.map(logarithm(value));
22
+ },
23
+ invert(pixel) {
24
+ if (pixel === mapping.range[0] && mapping.range[0] !== mapping.range[1]) return domain[0];
25
+ if (pixel === mapping.range[1] && mapping.range[0] !== mapping.range[1]) return domain[1];
26
+ return positive(Math.exp(mapping.invert(pixel)), "inverted output");
27
+ },
28
+ ticks(count = 5) {
29
+ if (!Number.isInteger(count) || count < 2 || count > 100)
30
+ throw new RangeError("LogScale ticks count must be an integer from 2 to 100.");
31
+ if (count === 2) return Object.freeze([...domain]);
32
+ const lo = Math.min(...domain), hi = Math.max(...domain);
33
+ const first = Math.floor(Math.log(lo) / Math.log(base)) + 1;
34
+ const last = Math.ceil(Math.log(hi) / Math.log(base)) - 1;
35
+ if (!Number.isSafeInteger(first) || !Number.isSafeInteger(last))
36
+ throw new RangeError("LogScale tick exponents exceed numeric precision; choose a larger base.");
37
+ const stride = Math.max(1, Math.ceil((last - first + 1) / (count - 2)));
38
+ const ticks = [lo];
39
+ for (let i = 0; i < count - 2; i++) {
40
+ const exponent = first + i * stride;
41
+ if (exponent > last) break;
42
+ const value = base ** exponent;
43
+ if (Number.isFinite(value) && value > ticks[ticks.length - 1] && value < hi) ticks.push(value);
44
+ }
45
+ ticks.push(hi);
46
+ return Object.freeze(domain[0] > domain[1] ? ticks.reverse() : ticks);
47
+ }
48
+ });
49
+ }
50
+ export {
51
+ resolveLogScale
52
+ };
53
+ //# sourceMappingURL=log-scale.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/log-scale.ts"],
4
+ "sourcesContent": ["import type { LinearDomain, ResolvedLogScale, ScaleRange } from \"./types.js\";\nimport { resolveLinearScale } from \"./linear-scale.js\";\nfunction positive(value: number, field: string): number {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0)\n throw new RangeError(`LogScale ${field} must be finite and positive.`);\n return value;\n}\nexport function resolveLogScale(domainInput: LinearDomain, range: ScaleRange, reverse: boolean, width: number, height: number, base: number): ResolvedLogScale {\n if (typeof base !== \"number\" || !Number.isFinite(base) || base <= 1)\n throw new RangeError(\"LogScale base must be finite and greater than one.\");\n if (!Array.isArray(domainInput) || domainInput.length !== 2)\n throw new RangeError(\"LogScale domain requires two positive endpoints.\");\n const domain = Object.freeze([positive(domainInput[0], \"domain\"), positive(domainInput[1], \"domain\")] as const);\n const logarithm = (value: number) => Math.log(positive(value, \"map input\"));\n const mapping = resolveLinearScale([logarithm(domain[0]), logarithm(domain[1])], range, reverse, width, height);\n return Object.freeze({\n ...mapping, type: \"log\", domain, base,\n map(value: number) { return mapping.map(logarithm(value)); },\n invert(pixel: number) {\n if (pixel === mapping.range[0] && mapping.range[0] !== mapping.range[1]) return domain[0];\n if (pixel === mapping.range[1] && mapping.range[0] !== mapping.range[1]) return domain[1];\n return positive(Math.exp(mapping.invert(pixel)), \"inverted output\");\n },\n ticks(count = 5) {\n if (!Number.isInteger(count) || count < 2 || count > 100)\n throw new RangeError(\"LogScale ticks count must be an integer from 2 to 100.\");\n if (count === 2) return Object.freeze([...domain]);\n const lo = Math.min(...domain), hi = Math.max(...domain);\n const first = Math.floor(Math.log(lo) / Math.log(base)) + 1;\n const last = Math.ceil(Math.log(hi) / Math.log(base)) - 1;\n if (!Number.isSafeInteger(first) || !Number.isSafeInteger(last))\n throw new RangeError(\"LogScale tick exponents exceed numeric precision; choose a larger base.\");\n const stride = Math.max(1, Math.ceil((last - first + 1) / (count - 2)));\n const ticks: number[] = [lo];\n for (let i = 0; i < count - 2; i++) {\n const exponent = first + i * stride;\n if (exponent > last) break;\n const value = base ** exponent;\n if (Number.isFinite(value) && value > ticks[ticks.length - 1] && value < hi) ticks.push(value);\n }\n ticks.push(hi);\n return Object.freeze(domain[0] > domain[1] ? ticks.reverse() : ticks);\n },\n });\n}\n"],
5
+ "mappings": "AACA,SAAS,0BAA0B;AACnC,SAAS,SAAS,OAAe,OAAuB;AACtD,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAAK,SAAS;AACnE,UAAM,IAAI,WAAW,YAAY,KAAK,+BAA+B;AACvE,SAAO;AACT;AACO,SAAS,gBAAgB,aAA2B,OAAmB,SAAkB,OAAe,QAAgB,MAAgC;AAC7J,MAAI,OAAO,SAAS,YAAY,CAAC,OAAO,SAAS,IAAI,KAAK,QAAQ;AAChE,UAAM,IAAI,WAAW,oDAAoD;AAC3E,MAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,YAAY,WAAW;AACxD,UAAM,IAAI,WAAW,kDAAkD;AACzE,QAAM,SAAS,OAAO,OAAO,CAAC,SAAS,YAAY,CAAC,GAAG,QAAQ,GAAG,SAAS,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAU;AAC9G,QAAM,YAAY,CAAC,UAAkB,KAAK,IAAI,SAAS,OAAO,WAAW,CAAC;AAC1E,QAAM,UAAU,mBAAmB,CAAC,UAAU,OAAO,CAAC,CAAC,GAAG,UAAU,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS,OAAO,MAAM;AAC9G,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG;AAAA,IAAS,MAAM;AAAA,IAAO;AAAA,IAAQ;AAAA,IACjC,IAAI,OAAe;AAAE,aAAO,QAAQ,IAAI,UAAU,KAAK,CAAC;AAAA,IAAG;AAAA,IAC3D,OAAO,OAAe;AACpB,UAAI,UAAU,QAAQ,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,EAAG,QAAO,OAAO,CAAC;AACxF,UAAI,UAAU,QAAQ,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,EAAG,QAAO,OAAO,CAAC;AACxF,aAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK,CAAC,GAAG,iBAAiB;AAAA,IACpE;AAAA,IACA,MAAM,QAAQ,GAAG;AACf,UAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ;AACnD,cAAM,IAAI,WAAW,wDAAwD;AAC/E,UAAI,UAAU,EAAG,QAAO,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;AACjD,YAAM,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,GAAG,MAAM;AACvD,YAAM,QAAQ,KAAK,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;AAC1D,YAAM,OAAO,KAAK,KAAK,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;AACxD,UAAI,CAAC,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,cAAc,IAAI;AAC5D,cAAM,IAAI,WAAW,yEAAyE;AAChG,YAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AACtE,YAAM,QAAkB,CAAC,EAAE;AAC3B,eAAS,IAAI,GAAG,IAAI,QAAQ,GAAG,KAAK;AAClC,cAAM,WAAW,QAAQ,IAAI;AAC7B,YAAI,WAAW,KAAM;AACrB,cAAM,QAAQ,QAAQ;AACtB,YAAI,OAAO,SAAS,KAAK,KAAK,QAAQ,MAAM,MAAM,SAAS,CAAC,KAAK,QAAQ,GAAI,OAAM,KAAK,KAAK;AAAA,MAC/F;AACA,YAAM,KAAK,EAAE;AACb,aAAO,OAAO,OAAO,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,MAAM,QAAQ,IAAI,KAAK;AAAA,IACtE;AAAA,EACF,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ import { type SeriesCurve } from "./curve-definition.js";
2
+ /**
3
+ * Returns the immutable monotone-X cubic Hermite definition.
4
+ *
5
+ * It uses weighted harmonic interior slopes and limited one-sided endpoint slopes, preserving every observation,
6
+ * flat segment, and local extremum without sorting data. Each run must have strictly ascending
7
+ * or strictly descending x coordinates.
8
+ *
9
+ * @returns The named {@link SeriesCurve} definition.
10
+ */
11
+ export declare function monotoneX(): SeriesCurve;
@@ -0,0 +1,63 @@
1
+ import {
2
+ createSeriesCurve
3
+ } from "./curve-definition.js";
4
+ function endpointSlope(h0, h1, first, second) {
5
+ let slope = ((2 * h0 + h1) * first - h0 * second) / (h0 + h1);
6
+ if (Math.sign(slope) !== Math.sign(first)) return 0;
7
+ if (Math.sign(first) !== Math.sign(second) && Math.abs(slope) > Math.abs(3 * first))
8
+ slope = 3 * first;
9
+ return slope;
10
+ }
11
+ function monotoneSegments(points) {
12
+ if (points.length < 2) return [];
13
+ const direction = points[1][0] > points[0][0] ? 1 : -1;
14
+ const x = points.map((point) => direction * point[0]);
15
+ const h = [];
16
+ const delta = [];
17
+ for (let i = 0; i < points.length - 1; i++) {
18
+ const width = x[i + 1] - x[i];
19
+ if (!Number.isFinite(width) || width <= 0)
20
+ throw new RangeError(
21
+ "monotoneX requires strictly ascending or descending finite x coordinates."
22
+ );
23
+ h.push(width);
24
+ delta.push((points[i + 1][1] - points[i][1]) / width);
25
+ }
26
+ const slopes = new Array(points.length);
27
+ if (points.length === 2) slopes[0] = slopes[1] = delta[0];
28
+ else {
29
+ slopes[0] = endpointSlope(h[0], h[1], delta[0], delta[1]);
30
+ slopes[points.length - 1] = endpointSlope(
31
+ h.at(-1),
32
+ h.at(-2),
33
+ delta.at(-1),
34
+ delta.at(-2)
35
+ );
36
+ for (let i = 1; i < points.length - 1; i++) {
37
+ const previous = delta[i - 1], next = delta[i];
38
+ slopes[i] = previous === 0 || next === 0 || Math.sign(previous) !== Math.sign(next) ? 0 : 3 * (h[i - 1] + h[i]) / ((2 * h[i] + h[i - 1]) / previous + (h[i] + 2 * h[i - 1]) / next);
39
+ }
40
+ }
41
+ return points.slice(1).map((end, index) => {
42
+ const start = points[index], width = h[index];
43
+ const control1 = [
44
+ start[0] + (end[0] - start[0]) / 3,
45
+ start[1] + slopes[index] * width / 3
46
+ ];
47
+ const control2 = [
48
+ end[0] - (end[0] - start[0]) / 3,
49
+ end[1] - slopes[index + 1] * width / 3
50
+ ];
51
+ if (!Number.isFinite(control1[0]) || !Number.isFinite(control1[1]) || !Number.isFinite(control2[0]) || !Number.isFinite(control2[1]) || !Number.isFinite(end[0]) || !Number.isFinite(end[1]))
52
+ throw new RangeError("monotoneX generated non-finite cubic controls.");
53
+ return Object.freeze({ end, control1, control2 });
54
+ });
55
+ }
56
+ const monotone = /* @__PURE__ */ createSeriesCurve(monotoneSegments);
57
+ function monotoneX() {
58
+ return monotone;
59
+ }
60
+ export {
61
+ monotoneX
62
+ };
63
+ //# sourceMappingURL=monotone-curve.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/monotone-curve.ts"],
4
+ "sourcesContent": ["import {\n createSeriesCurve,\n type SeriesCurve,\n type SeriesCurvePoint,\n} from \"./curve-definition.js\";\n\nfunction endpointSlope(\n h0: number,\n h1: number,\n first: number,\n second: number,\n): number {\n let slope = ((2 * h0 + h1) * first - h0 * second) / (h0 + h1);\n if (Math.sign(slope) !== Math.sign(first)) return 0;\n if (\n Math.sign(first) !== Math.sign(second) &&\n Math.abs(slope) > Math.abs(3 * first)\n )\n slope = 3 * first;\n return slope;\n}\n\nfunction monotoneSegments(points: readonly SeriesCurvePoint[]) {\n if (points.length < 2) return [];\n const direction = points[1][0] > points[0][0] ? 1 : -1;\n const x = points.map((point) => direction * point[0]);\n const h: number[] = [];\n const delta: number[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const width = x[i + 1] - x[i];\n if (!Number.isFinite(width) || width <= 0)\n throw new RangeError(\n \"monotoneX requires strictly ascending or descending finite x coordinates.\",\n );\n h.push(width);\n delta.push((points[i + 1][1] - points[i][1]) / width);\n }\n const slopes = new Array<number>(points.length);\n if (points.length === 2) slopes[0] = slopes[1] = delta[0];\n else {\n slopes[0] = endpointSlope(h[0], h[1], delta[0], delta[1]);\n slopes[points.length - 1] = endpointSlope(\n h.at(-1)!,\n h.at(-2)!,\n delta.at(-1)!,\n delta.at(-2)!,\n );\n for (let i = 1; i < points.length - 1; i++) {\n const previous = delta[i - 1],\n next = delta[i];\n slopes[i] =\n previous === 0 || next === 0 || Math.sign(previous) !== Math.sign(next)\n ? 0\n : (3 * (h[i - 1] + h[i])) /\n ((2 * h[i] + h[i - 1]) / previous + (h[i] + 2 * h[i - 1]) / next);\n }\n }\n return points.slice(1).map((end, index) => {\n const start = points[index],\n width = h[index];\n const control1: SeriesCurvePoint = [\n start[0] + (end[0] - start[0]) / 3,\n start[1] + (slopes[index] * width) / 3,\n ];\n const control2: SeriesCurvePoint = [\n end[0] - (end[0] - start[0]) / 3,\n end[1] - (slopes[index + 1] * width) / 3,\n ];\n if ((!Number.isFinite(control1[0]) || !Number.isFinite(control1[1]) || !Number.isFinite(control2[0]) || !Number.isFinite(control2[1]) || !Number.isFinite(end[0]) || !Number.isFinite(end[1])))\n throw new RangeError(\"monotoneX generated non-finite cubic controls.\");\n return Object.freeze({ end, control1, control2 });\n });\n}\n\nconst monotone = /* @__PURE__ */ createSeriesCurve(monotoneSegments);\n\n/**\n * Returns the immutable monotone-X cubic Hermite definition.\n *\n * It uses weighted harmonic interior slopes and limited one-sided endpoint slopes, preserving every observation,\n * flat segment, and local extremum without sorting data. Each run must have strictly ascending\n * or strictly descending x coordinates.\n *\n * @returns The named {@link SeriesCurve} definition.\n */\nexport function monotoneX(): SeriesCurve {\n return monotone;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,10 +1,10 @@
1
- import type { ResolvedLinearScale } from "./types.js";
1
+ import type { ResolvedContinuousScale } from "./types.js";
2
2
  import type { PointAccessor } from "./point-types.js";
3
3
  /**
4
4
  * Coordinate accessors, resolved scales, and candidate filtering for a nearest-point search.
5
5
  *
6
6
  * @see {@link PointAccessor}
7
- * @see {@link ResolvedLinearScale}
7
+ * @see {@link ResolvedContinuousScale}
8
8
  * @see {@link nearestPoint}
9
9
  */
10
10
  export interface NearestPointOptions<D> {
@@ -12,10 +12,10 @@ export interface NearestPointOptions<D> {
12
12
  readonly x: PointAccessor<D>;
13
13
  /** Property key or callback extracting the vertical domain coordinate. See {@link PointAccessor}. */
14
14
  readonly y: PointAccessor<D>;
15
- /** The scale used to map horizontal data coordinates. See {@link ResolvedLinearScale}. */
16
- readonly xScale: ResolvedLinearScale;
17
- /** The scale used to map vertical data coordinates. See {@link ResolvedLinearScale}. */
18
- readonly yScale: ResolvedLinearScale;
15
+ /** The scale used to map horizontal data coordinates. See {@link ResolvedContinuousScale}. */
16
+ readonly xScale: ResolvedContinuousScale;
17
+ /** The scale used to map vertical data coordinates. See {@link ResolvedContinuousScale}. */
18
+ readonly yScale: ResolvedContinuousScale;
19
19
  /**
20
20
  * Returns whether a datum contributes drawable or queryable coordinates. See
21
21
  * {@link NearestPointOptions}.
@@ -57,12 +57,12 @@ export interface NearestPoint<D> {
57
57
  *
58
58
  * @param values - Candidate domain values.
59
59
  * @param rangeValue - Pointer coordinate in the scale's range.
60
- * @param scale - Scale mapping candidates into range coordinates. See {@link ResolvedLinearScale}.
60
+ * @param scale - Scale mapping candidates into range coordinates. See {@link ResolvedContinuousScale}.
61
61
  * @returns The nearest domain value, or undefined when no candidate can be selected.
62
62
  *
63
- * @see {@link ResolvedLinearScale}
63
+ * @see {@link ResolvedContinuousScale}
64
64
  */
65
- export declare function nearestDomainValue(values: readonly number[], rangeValue: number, scale: ResolvedLinearScale): number | undefined;
65
+ export declare function nearestDomainValue(values: readonly number[], rangeValue: number, scale: ResolvedContinuousScale): number | undefined;
66
66
  /**
67
67
  * Finds the nearest defined datum in scaled coordinates, subject to an optional maximum distance.
68
68
  *
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/features/viz/lib/nearest.ts"],
4
- "sourcesContent": ["import type { ResolvedLinearScale } from \"./types.js\";\nimport type { PointAccessor } from \"./point-types.js\";\nimport { finiteCoordinate, pointAccessor, pointData } from \"./point-data.js\";\n/**\n * Coordinate accessors, resolved scales, and candidate filtering for a nearest-point search.\n *\n * @see {@link PointAccessor}\n * @see {@link ResolvedLinearScale}\n * @see {@link nearestPoint}\n */\nexport interface NearestPointOptions<D> {\n /** Property key or callback extracting the horizontal domain coordinate. See {@link PointAccessor}. */\n readonly x: PointAccessor<D>;\n /** Property key or callback extracting the vertical domain coordinate. See {@link PointAccessor}. */\n readonly y: PointAccessor<D>;\n /** The scale used to map horizontal data coordinates. See {@link ResolvedLinearScale}. */\n readonly xScale: ResolvedLinearScale;\n /** The scale used to map vertical data coordinates. See {@link ResolvedLinearScale}. */\n readonly yScale: ResolvedLinearScale;\n /**\n * Returns whether a datum contributes drawable or queryable coordinates. See\n * {@link NearestPointOptions}.\n * @param datum - Datum to test.\n * @param index - Zero-based index in the source data.\n * @param data - Complete source data array.\n * @returns Whether this datum should participate in the series or query.\n */\n readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;\n /** Maximum distance accepted by the query. See {@link NearestPointOptions}. */\n readonly maxDistance?: number;\n}\n/**\n * The selected datum, source index, mapped coordinates, and distance from the query point.\n *\n * @see {@link nearestPoint}\n */\nexport interface NearestPoint<D> {\n /** The original data item selected by this result. See {@link NearestPoint}. */\n readonly datum: D;\n /** Index of the selected datum in its source data. See {@link NearestPoint}. */\n readonly index: number;\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link NearestPoint}.\n */\n readonly x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link NearestPoint}.\n */\n readonly y: number;\n /** Distance measured in this query or guide's coordinate system. See {@link NearestPoint}. */\n readonly distance: number;\n}\nfunction finite(value: unknown, name: string): asserts value is number {\n if (!finiteCoordinate(value)) throw new RangeError(`${name} must be finite.`);\n}\n/**\n * Finds the domain value nearest to a logical range coordinate; returns undefined for no\n * candidate.\n *\n * @param values - Candidate domain values.\n * @param rangeValue - Pointer coordinate in the scale's range.\n * @param scale - Scale mapping candidates into range coordinates. See {@link ResolvedLinearScale}.\n * @returns The nearest domain value, or undefined when no candidate can be selected.\n *\n * @see {@link ResolvedLinearScale}\n */\nexport function nearestDomainValue(\n values: readonly number[],\n rangeValue: number,\n scale: ResolvedLinearScale,\n): number | undefined {\n pointData(values, \"nearestDomainValue\");\n finite(rangeValue, \"nearestDomainValue rangeValue\");\n let best: number | undefined,\n distance = Infinity;\n for (const value of values) {\n if (!finiteCoordinate(value)) continue;\n const next = Math.abs(scale.map(value) - rangeValue);\n finite(next, \"nearestDomainValue distance\");\n if (next < distance) {\n best = value;\n distance = next;\n }\n }\n return best;\n}\n/**\n * Finds the nearest defined datum in scaled coordinates, subject to an optional maximum distance.\n *\n * @param data - Candidate data records.\n * @param point - Query point in plotted range coordinates.\n * @param options - Accessors, scales, eligibility, and distance settings. See\n * {@link NearestPointOptions} .\n * @returns The nearest matching point, or undefined when no candidate qualifies. See\n * {@link NearestPoint} .\n *\n * @see {@link NearestPointOptions}\n * @see {@link NearestPoint}\n */\nexport function nearestPoint<D>(\n data: readonly D[],\n point: Readonly<{ x: number; y: number }>,\n options: NearestPointOptions<D>,\n): NearestPoint<D> | undefined {\n pointData(data, \"nearestPoint\");\n finite(point.x, \"nearestPoint x\");\n finite(point.y, \"nearestPoint y\");\n const max = options.maxDistance;\n if (max !== undefined) {\n finite(max, \"nearestPoint maxDistance\");\n if (max < 0)\n throw new RangeError(\"nearestPoint maxDistance must be nonnegative.\");\n }\n const x = pointAccessor(options.x),\n y = pointAccessor(options.y);\n let best: NearestPoint<D> | undefined,\n distance = Infinity;\n for (let i = 0; i < data.length; i++) {\n const datum = data[i];\n if (options.defined && !options.defined(datum, i, data)) continue;\n const xv = x(datum, i, data),\n yv = y(datum, i, data);\n if (!finiteCoordinate(xv) || !finiteCoordinate(yv)) continue;\n const px = options.xScale.map(xv),\n py = options.yScale.map(yv);\n const next = Math.hypot(px - point.x, py - point.y);\n finite(next, \"nearestPoint distance\");\n if (next < distance && (max === undefined || next <= max)) {\n distance = next;\n best = { datum, index: i, x: px, y: py, distance: next };\n }\n }\n return best;\n}\n"],
4
+ "sourcesContent": ["import type { ResolvedContinuousScale } from \"./types.js\";\nimport type { PointAccessor } from \"./point-types.js\";\nimport { finiteCoordinate, pointAccessor, pointData } from \"./point-data.js\";\n/**\n * Coordinate accessors, resolved scales, and candidate filtering for a nearest-point search.\n *\n * @see {@link PointAccessor}\n * @see {@link ResolvedContinuousScale}\n * @see {@link nearestPoint}\n */\nexport interface NearestPointOptions<D> {\n /** Property key or callback extracting the horizontal domain coordinate. See {@link PointAccessor}. */\n readonly x: PointAccessor<D>;\n /** Property key or callback extracting the vertical domain coordinate. See {@link PointAccessor}. */\n readonly y: PointAccessor<D>;\n /** The scale used to map horizontal data coordinates. See {@link ResolvedContinuousScale}. */\n readonly xScale: ResolvedContinuousScale;\n /** The scale used to map vertical data coordinates. See {@link ResolvedContinuousScale}. */\n readonly yScale: ResolvedContinuousScale;\n /**\n * Returns whether a datum contributes drawable or queryable coordinates. See\n * {@link NearestPointOptions}.\n * @param datum - Datum to test.\n * @param index - Zero-based index in the source data.\n * @param data - Complete source data array.\n * @returns Whether this datum should participate in the series or query.\n */\n readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;\n /** Maximum distance accepted by the query. See {@link NearestPointOptions}. */\n readonly maxDistance?: number;\n}\n/**\n * The selected datum, source index, mapped coordinates, and distance from the query point.\n *\n * @see {@link nearestPoint}\n */\nexport interface NearestPoint<D> {\n /** The original data item selected by this result. See {@link NearestPoint}. */\n readonly datum: D;\n /** Index of the selected datum in its source data. See {@link NearestPoint}. */\n readonly index: number;\n /**\n * Horizontal coordinate or displacement in the containing coordinate system. See\n * {@link NearestPoint}.\n */\n readonly x: number;\n /**\n * Vertical coordinate or displacement in the containing coordinate system. See\n * {@link NearestPoint}.\n */\n readonly y: number;\n /** Distance measured in this query or guide's coordinate system. See {@link NearestPoint}. */\n readonly distance: number;\n}\nfunction finite(value: unknown, name: string): asserts value is number {\n if (!finiteCoordinate(value)) throw new RangeError(`${name} must be finite.`);\n}\n/**\n * Finds the domain value nearest to a logical range coordinate; returns undefined for no\n * candidate.\n *\n * @param values - Candidate domain values.\n * @param rangeValue - Pointer coordinate in the scale's range.\n * @param scale - Scale mapping candidates into range coordinates. See {@link ResolvedContinuousScale}.\n * @returns The nearest domain value, or undefined when no candidate can be selected.\n *\n * @see {@link ResolvedContinuousScale}\n */\nexport function nearestDomainValue(\n values: readonly number[],\n rangeValue: number,\n scale: ResolvedContinuousScale,\n): number | undefined {\n pointData(values, \"nearestDomainValue\");\n finite(rangeValue, \"nearestDomainValue rangeValue\");\n let best: number | undefined,\n distance = Infinity;\n for (const value of values) {\n if (!finiteCoordinate(value)) continue;\n const next = Math.abs(scale.map(value) - rangeValue);\n finite(next, \"nearestDomainValue distance\");\n if (next < distance) {\n best = value;\n distance = next;\n }\n }\n return best;\n}\n/**\n * Finds the nearest defined datum in scaled coordinates, subject to an optional maximum distance.\n *\n * @param data - Candidate data records.\n * @param point - Query point in plotted range coordinates.\n * @param options - Accessors, scales, eligibility, and distance settings. See\n * {@link NearestPointOptions} .\n * @returns The nearest matching point, or undefined when no candidate qualifies. See\n * {@link NearestPoint} .\n *\n * @see {@link NearestPointOptions}\n * @see {@link NearestPoint}\n */\nexport function nearestPoint<D>(\n data: readonly D[],\n point: Readonly<{ x: number; y: number }>,\n options: NearestPointOptions<D>,\n): NearestPoint<D> | undefined {\n pointData(data, \"nearestPoint\");\n finite(point.x, \"nearestPoint x\");\n finite(point.y, \"nearestPoint y\");\n const max = options.maxDistance;\n if (max !== undefined) {\n finite(max, \"nearestPoint maxDistance\");\n if (max < 0)\n throw new RangeError(\"nearestPoint maxDistance must be nonnegative.\");\n }\n const x = pointAccessor(options.x),\n y = pointAccessor(options.y);\n let best: NearestPoint<D> | undefined,\n distance = Infinity;\n for (let i = 0; i < data.length; i++) {\n const datum = data[i];\n if (options.defined && !options.defined(datum, i, data)) continue;\n const xv = x(datum, i, data),\n yv = y(datum, i, data);\n if (!finiteCoordinate(xv) || !finiteCoordinate(yv)) continue;\n const px = options.xScale.map(xv),\n py = options.yScale.map(yv);\n const next = Math.hypot(px - point.x, py - point.y);\n finite(next, \"nearestPoint distance\");\n if (next < distance && (max === undefined || next <= max)) {\n distance = next;\n best = { datum, index: i, x: px, y: py, distance: next };\n }\n }\n return best;\n}\n"],
5
5
  "mappings": "AAEA,SAAS,kBAAkB,eAAe,iBAAiB;AAoD3D,SAAS,OAAO,OAAgB,MAAuC;AACrE,MAAI,CAAC,iBAAiB,KAAK,EAAG,OAAM,IAAI,WAAW,GAAG,IAAI,kBAAkB;AAC9E;AAYO,SAAS,mBACd,QACA,YACA,OACoB;AACpB,YAAU,QAAQ,oBAAoB;AACtC,SAAO,YAAY,+BAA+B;AAClD,MAAI,MACF,WAAW;AACb,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,iBAAiB,KAAK,EAAG;AAC9B,UAAM,OAAO,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,UAAU;AACnD,WAAO,MAAM,6BAA6B;AAC1C,QAAI,OAAO,UAAU;AACnB,aAAO;AACP,iBAAW;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;AAcO,SAAS,aACd,MACA,OACA,SAC6B;AAC7B,YAAU,MAAM,cAAc;AAC9B,SAAO,MAAM,GAAG,gBAAgB;AAChC,SAAO,MAAM,GAAG,gBAAgB;AAChC,QAAM,MAAM,QAAQ;AACpB,MAAI,QAAQ,QAAW;AACrB,WAAO,KAAK,0BAA0B;AACtC,QAAI,MAAM;AACR,YAAM,IAAI,WAAW,+CAA+C;AAAA,EACxE;AACA,QAAM,IAAI,cAAc,QAAQ,CAAC,GAC/B,IAAI,cAAc,QAAQ,CAAC;AAC7B,MAAI,MACF,WAAW;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,QAAQ,KAAK,CAAC;AACpB,QAAI,QAAQ,WAAW,CAAC,QAAQ,QAAQ,OAAO,GAAG,IAAI,EAAG;AACzD,UAAM,KAAK,EAAE,OAAO,GAAG,IAAI,GACzB,KAAK,EAAE,OAAO,GAAG,IAAI;AACvB,QAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAG;AACpD,UAAM,KAAK,QAAQ,OAAO,IAAI,EAAE,GAC9B,KAAK,QAAQ,OAAO,IAAI,EAAE;AAC5B,UAAM,OAAO,KAAK,MAAM,KAAK,MAAM,GAAG,KAAK,MAAM,CAAC;AAClD,WAAO,MAAM,uBAAuB;AACpC,QAAI,OAAO,aAAa,QAAQ,UAAa,QAAQ,MAAM;AACzD,iBAAW;AACX,aAAO,EAAE,OAAO,OAAO,GAAG,GAAG,IAAI,GAAG,IAAI,UAAU,KAAK;AAAA,IACzD;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,15 @@
1
+ import type { NumericDomain } from "./types.js";
2
+ /**
3
+ * Linearly interpolates both endpoints of a finite numeric range.
4
+ *
5
+ * The returned pair is frozen. It preserves ascending, descending, and flat
6
+ * endpoint order for progress within zero through one. Progress outside that
7
+ * interval deliberately extrapolates, matching Pibbl's numeric tween behavior.
8
+ *
9
+ * @param from - Starting finite endpoint pair.
10
+ * @param to - Ending finite endpoint pair.
11
+ * @param progress - Finite interpolation progress supplied by an animation definition.
12
+ * @returns A frozen finite endpoint pair.
13
+ * @see {@link NumericDomain}
14
+ */
15
+ export declare function interpolateNumericRange(from: NumericDomain, to: NumericDomain, progress: number): NumericDomain;
@@ -0,0 +1,36 @@
1
+ function endpoint(value, name) {
2
+ if (typeof value !== "number" || !Number.isFinite(value))
3
+ throw new RangeError(`Numeric range ${name} must be finite.`);
4
+ return value;
5
+ }
6
+ function range(value, name) {
7
+ if (!Array.isArray(value) || value.length !== 2)
8
+ throw new TypeError(`Numeric range ${name} requires two endpoints.`);
9
+ return [endpoint(value[0], `${name}[0]`), endpoint(value[1], `${name}[1]`)];
10
+ }
11
+ function interpolateEndpoint(from, to, progress) {
12
+ if (progress === 0 || from === to) return from;
13
+ if (progress === 1) return to;
14
+ const difference = to - from;
15
+ const direct = from + difference * progress;
16
+ if (Number.isFinite(direct)) return direct;
17
+ const scale = Math.max(Math.abs(from), Math.abs(to));
18
+ const scaled = (from / scale + (to / scale - from / scale) * progress) * scale;
19
+ if (!Number.isFinite(scaled))
20
+ throw new RangeError("Numeric range interpolation must produce finite endpoints.");
21
+ return scaled;
22
+ }
23
+ function interpolateNumericRange(from, to, progress) {
24
+ const start = range(from, "from");
25
+ const end = range(to, "to");
26
+ if (typeof progress !== "number" || !Number.isFinite(progress))
27
+ throw new RangeError("Numeric range interpolation progress must be finite.");
28
+ return Object.freeze([
29
+ interpolateEndpoint(start[0], end[0], progress),
30
+ interpolateEndpoint(start[1], end[1], progress)
31
+ ]);
32
+ }
33
+ export {
34
+ interpolateNumericRange
35
+ };
36
+ //# sourceMappingURL=numeric-range-interpolation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/numeric-range-interpolation.ts"],
4
+ "sourcesContent": ["import type { NumericDomain } from \"./types.js\";\n\nfunction endpoint(value: unknown, name: string): number {\n if (typeof value !== \"number\" || !Number.isFinite(value))\n throw new RangeError(`Numeric range ${name} must be finite.`);\n return value;\n}\n\nfunction range(value: NumericDomain, name: string): readonly [number, number] {\n if (!Array.isArray(value) || value.length !== 2)\n throw new TypeError(`Numeric range ${name} requires two endpoints.`);\n return [endpoint(value[0], `${name}[0]`), endpoint(value[1], `${name}[1]`)];\n}\n\nfunction interpolateEndpoint(from: number, to: number, progress: number): number {\n if (progress === 0 || from === to) return from;\n if (progress === 1) return to;\n const difference = to - from;\n const direct = from + difference * progress;\n if (Number.isFinite(direct)) return direct;\n\n // Scaling avoids overflow in the subtraction for opposite, very large endpoints.\n const scale = Math.max(Math.abs(from), Math.abs(to));\n const scaled =\n (from / scale + (to / scale - from / scale) * progress) * scale;\n if (!Number.isFinite(scaled))\n throw new RangeError(\"Numeric range interpolation must produce finite endpoints.\");\n return scaled;\n}\n\n/**\n * Linearly interpolates both endpoints of a finite numeric range.\n *\n * The returned pair is frozen. It preserves ascending, descending, and flat\n * endpoint order for progress within zero through one. Progress outside that\n * interval deliberately extrapolates, matching Pibbl's numeric tween behavior.\n *\n * @param from - Starting finite endpoint pair.\n * @param to - Ending finite endpoint pair.\n * @param progress - Finite interpolation progress supplied by an animation definition.\n * @returns A frozen finite endpoint pair.\n * @see {@link NumericDomain}\n */\nexport function interpolateNumericRange(\n from: NumericDomain,\n to: NumericDomain,\n progress: number,\n): NumericDomain {\n const start = range(from, \"from\");\n const end = range(to, \"to\");\n if (typeof progress !== \"number\" || !Number.isFinite(progress))\n throw new RangeError(\"Numeric range interpolation progress must be finite.\");\n return Object.freeze([\n interpolateEndpoint(start[0], end[0], progress),\n interpolateEndpoint(start[1], end[1], progress),\n ]);\n}\n"],
5
+ "mappings": "AAEA,SAAS,SAAS,OAAgB,MAAsB;AACtD,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK;AACrD,UAAM,IAAI,WAAW,iBAAiB,IAAI,kBAAkB;AAC9D,SAAO;AACT;AAEA,SAAS,MAAM,OAAsB,MAAyC;AAC5E,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAC5C,UAAM,IAAI,UAAU,iBAAiB,IAAI,0BAA0B;AACrE,SAAO,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC;AAC5E;AAEA,SAAS,oBAAoB,MAAc,IAAY,UAA0B;AAC/E,MAAI,aAAa,KAAK,SAAS,GAAI,QAAO;AAC1C,MAAI,aAAa,EAAG,QAAO;AAC3B,QAAM,aAAa,KAAK;AACxB,QAAM,SAAS,OAAO,aAAa;AACnC,MAAI,OAAO,SAAS,MAAM,EAAG,QAAO;AAGpC,QAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;AACnD,QAAM,UACH,OAAO,SAAS,KAAK,QAAQ,OAAO,SAAS,YAAY;AAC5D,MAAI,CAAC,OAAO,SAAS,MAAM;AACzB,UAAM,IAAI,WAAW,4DAA4D;AACnF,SAAO;AACT;AAeO,SAAS,wBACd,MACA,IACA,UACe;AACf,QAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,QAAM,MAAM,MAAM,IAAI,IAAI;AAC1B,MAAI,OAAO,aAAa,YAAY,CAAC,OAAO,SAAS,QAAQ;AAC3D,UAAM,IAAI,WAAW,sDAAsD;AAC7E,SAAO,OAAO,OAAO;AAAA,IACnB,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ;AAAA,IAC9C,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ;AAAA,EAChD,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,38 @@
1
+ import type { NumericDomain } from "./types.js";
2
+ /** Readable linear tick density. See {@link linearTicks}. */
3
+ export interface LinearTickOptions {
4
+ /** Target number of intervals, from 2 to 100; defaults to 5. */
5
+ readonly count?: number;
6
+ }
7
+ /**
8
+ * Generates bounded ticks at readable 1, 2, or 5 × powers-of-ten intervals.
9
+ * Endpoints are included only when aligned. Does not change scale geometry.
10
+ * @param domain - Distinct finite endpoints, ascending or descending.
11
+ * @param options - Target density; defaults to five intervals.
12
+ * @returns Frozen ticks in domain order. See {@link niceLinearDomain}.
13
+ */
14
+ export declare function linearTicks(domain: NumericDomain, options?: LinearTickOptions): readonly number[];
15
+ /**
16
+ * Expands a linear domain to readable tick boundaries, preserving direction.
17
+ * @param domain - Distinct finite numeric endpoints; never mutated.
18
+ * @param options - Target density; defaults to five intervals.
19
+ * @returns Frozen expanded endpoints. See {@link linearTicks}.
20
+ */
21
+ export declare function niceLinearDomain(domain: NumericDomain, options?: LinearTickOptions): NumericDomain;
22
+ /** Number formatting with explicit locale and literal unit affixes. See {@link formatNumber}. */
23
+ export interface NumberFormatOptions extends Intl.NumberFormatOptions {
24
+ /** Locale for formatting; defaults to en-US. */
25
+ readonly locale?: string;
26
+ /** Literal prefix; defaults to empty. */
27
+ readonly prefix?: string;
28
+ /** Literal suffix, including any desired space; defaults to empty. */
29
+ readonly suffix?: string;
30
+ }
31
+ /**
32
+ * Formats a finite number with Intl precision, currency, percent, or unit options.
33
+ * Rounded negative zero is displayed as positive zero.
34
+ * @param value - Finite numeric value.
35
+ * @param options - Intl options plus locale and literal affixes; default maximum fraction digits is 3.
36
+ * @returns Formatted text. Invalid Intl options retain native errors. See {@link NumberFormatOptions}.
37
+ */
38
+ export declare function formatNumber(value: number, options?: NumberFormatOptions): string;
@@ -0,0 +1,54 @@
1
+ function parameters(domain, options) {
2
+ const count = options.count ?? 5;
3
+ if (!Number.isInteger(count) || count < 2 || count > 100)
4
+ throw new RangeError("Linear tick count must be an integer from 2 to 100.");
5
+ if (!Array.isArray(domain) || domain.length !== 2 || !domain.every(Number.isFinite))
6
+ throw new RangeError("Linear tick domain requires two finite endpoints.");
7
+ const lo = Math.min(...domain), hi = Math.max(...domain);
8
+ const span = hi - lo;
9
+ if (!Number.isFinite(span) || span === 0)
10
+ throw new RangeError("Linear tick domain must have a finite nonzero span.");
11
+ const raw = span / count;
12
+ const power = 10 ** Math.floor(Math.log10(raw));
13
+ const error = raw / power;
14
+ let step = power * (error >= Math.sqrt(50) ? 10 : error >= Math.sqrt(10) ? 5 : error >= Math.sqrt(2) ? 2 : 1);
15
+ if (!Number.isFinite(step) || step === 0 || !Number.isSafeInteger(Math.floor(lo / step)) || !Number.isSafeInteger(Math.ceil(hi / step)))
16
+ throw new RangeError("Linear tick spacing exceeds numeric precision.");
17
+ if (Math.floor(hi / step) - Math.ceil(lo / step) + 1 > 100) {
18
+ const magnitude = 10 ** Math.floor(Math.log10(step));
19
+ const factor = step / magnitude;
20
+ step = magnitude * (factor < 1.5 ? 2 : factor < 3 ? 5 : 10);
21
+ }
22
+ return { lo, hi, step };
23
+ }
24
+ function clean(value) {
25
+ return Number(value.toPrecision(15)) || 0;
26
+ }
27
+ function linearTicks(domain, options = {}) {
28
+ const { lo, hi, step } = parameters(domain, options);
29
+ const start = Math.ceil(lo / step), end = Math.floor(hi / step);
30
+ const values = Array.from({ length: Math.max(0, end - start + 1) }, (_, i) => clean((start + i) * step)).filter((v) => v >= lo && v <= hi);
31
+ return Object.freeze(domain[0] > domain[1] ? values.reverse() : values);
32
+ }
33
+ function niceLinearDomain(domain, options = {}) {
34
+ const { lo, hi, step } = parameters(domain, options);
35
+ const a = clean(Math.floor(lo / step) * step), b = clean(Math.ceil(hi / step) * step);
36
+ if (!Number.isFinite(a) || !Number.isFinite(b)) throw new RangeError("Nice linear domain exceeds finite numeric bounds.");
37
+ return Object.freeze(domain[0] > domain[1] ? [b, a] : [a, b]);
38
+ }
39
+ function formatNumber(value, options = {}) {
40
+ if (!Number.isFinite(value)) throw new RangeError("formatNumber value must be finite.");
41
+ const { locale = "en-US", prefix = "", suffix = "", ...intl } = options;
42
+ const formatter = new Intl.NumberFormat(locale, intl);
43
+ const parts = formatter.formatToParts(value);
44
+ const zeroDigit = Array.from(formatter.formatToParts(0).find((p) => p.type === "integer").value).at(-1);
45
+ const digits = parts.filter((p) => p.type === "integer" || p.type === "fraction");
46
+ const zero = digits.length > 0 && digits.every((p) => Array.from(p.value).every((digit) => digit === zeroDigit));
47
+ return prefix + formatter.format(zero ? 0 : value) + suffix;
48
+ }
49
+ export {
50
+ formatNumber,
51
+ linearTicks,
52
+ niceLinearDomain
53
+ };
54
+ //# sourceMappingURL=numeric-ticks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/numeric-ticks.ts"],
4
+ "sourcesContent": ["import type { NumericDomain } from \"./types.js\";\n\n/** Readable linear tick density. See {@link linearTicks}. */\nexport interface LinearTickOptions {\n /** Target number of intervals, from 2 to 100; defaults to 5. */\n readonly count?: number;\n}\nfunction parameters(domain: NumericDomain, options: LinearTickOptions) {\n const count = options.count ?? 5;\n if (!Number.isInteger(count) || count < 2 || count > 100)\n throw new RangeError(\"Linear tick count must be an integer from 2 to 100.\");\n if (!Array.isArray(domain) || domain.length !== 2 || !domain.every(Number.isFinite))\n throw new RangeError(\"Linear tick domain requires two finite endpoints.\");\n const lo = Math.min(...domain), hi = Math.max(...domain);\n const span = hi - lo;\n if (!Number.isFinite(span) || span === 0)\n throw new RangeError(\"Linear tick domain must have a finite nonzero span.\");\n const raw = span / count;\n const power = 10 ** Math.floor(Math.log10(raw));\n const error = raw / power;\n let step = power * (error >= Math.sqrt(50) ? 10 : error >= Math.sqrt(10) ? 5 : error >= Math.sqrt(2) ? 2 : 1);\n if (!Number.isFinite(step) || step === 0 || !Number.isSafeInteger(Math.floor(lo / step)) || !Number.isSafeInteger(Math.ceil(hi / step)))\n throw new RangeError(\"Linear tick spacing exceeds numeric precision.\");\n if (Math.floor(hi / step) - Math.ceil(lo / step) + 1 > 100) {\n const magnitude = 10 ** Math.floor(Math.log10(step));\n const factor = step / magnitude;\n step = magnitude * (factor < 1.5 ? 2 : factor < 3 ? 5 : 10);\n }\n return { lo, hi, step };\n}\nfunction clean(value: number) { return Number(value.toPrecision(15)) || 0; }\n/**\n * Generates bounded ticks at readable 1, 2, or 5 \u00D7 powers-of-ten intervals.\n * Endpoints are included only when aligned. Does not change scale geometry.\n * @param domain - Distinct finite endpoints, ascending or descending.\n * @param options - Target density; defaults to five intervals.\n * @returns Frozen ticks in domain order. See {@link niceLinearDomain}.\n */\nexport function linearTicks(domain: NumericDomain, options: LinearTickOptions = {}): readonly number[] {\n const { lo, hi, step } = parameters(domain, options);\n const start = Math.ceil(lo / step), end = Math.floor(hi / step);\n const values = Array.from({ length: Math.max(0, end - start + 1) }, (_, i) => clean((start + i) * step)).filter(v => v >= lo && v <= hi);\n return Object.freeze(domain[0] > domain[1] ? values.reverse() : values);\n}\n/**\n * Expands a linear domain to readable tick boundaries, preserving direction.\n * @param domain - Distinct finite numeric endpoints; never mutated.\n * @param options - Target density; defaults to five intervals.\n * @returns Frozen expanded endpoints. See {@link linearTicks}.\n */\nexport function niceLinearDomain(domain: NumericDomain, options: LinearTickOptions = {}): NumericDomain {\n const { lo, hi, step } = parameters(domain, options);\n const a = clean(Math.floor(lo / step) * step), b = clean(Math.ceil(hi / step) * step);\n if (!Number.isFinite(a) || !Number.isFinite(b)) throw new RangeError(\"Nice linear domain exceeds finite numeric bounds.\");\n return Object.freeze(domain[0] > domain[1] ? [b, a] : [a, b]);\n}\n/** Number formatting with explicit locale and literal unit affixes. See {@link formatNumber}. */\nexport interface NumberFormatOptions extends Intl.NumberFormatOptions {\n /** Locale for formatting; defaults to en-US. */\n readonly locale?: string;\n /** Literal prefix; defaults to empty. */\n readonly prefix?: string;\n /** Literal suffix, including any desired space; defaults to empty. */\n readonly suffix?: string;\n}\n/**\n * Formats a finite number with Intl precision, currency, percent, or unit options.\n * Rounded negative zero is displayed as positive zero.\n * @param value - Finite numeric value.\n * @param options - Intl options plus locale and literal affixes; default maximum fraction digits is 3.\n * @returns Formatted text. Invalid Intl options retain native errors. See {@link NumberFormatOptions}.\n */\nexport function formatNumber(value: number, options: NumberFormatOptions = {}): string {\n if (!Number.isFinite(value)) throw new RangeError(\"formatNumber value must be finite.\");\n const { locale = \"en-US\", prefix = \"\", suffix = \"\", ...intl } = options;\n const formatter = new Intl.NumberFormat(locale, intl);\n const parts = formatter.formatToParts(value);\n const zeroDigit = Array.from(formatter.formatToParts(0).find(p => p.type === \"integer\")!.value).at(-1)!;\n const digits = parts.filter(p => p.type === \"integer\" || p.type === \"fraction\");\n const zero = digits.length > 0 && digits.every(p => Array.from(p.value).every(digit => digit === zeroDigit));\n return prefix + formatter.format(zero ? 0 : value) + suffix;\n}\n"],
5
+ "mappings": "AAOA,SAAS,WAAW,QAAuB,SAA4B;AACrE,QAAM,QAAQ,QAAQ,SAAS;AAC/B,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ;AACnD,UAAM,IAAI,WAAW,qDAAqD;AAC5E,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,CAAC,OAAO,MAAM,OAAO,QAAQ;AAChF,UAAM,IAAI,WAAW,mDAAmD;AAC1E,QAAM,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,GAAG,MAAM;AACvD,QAAM,OAAO,KAAK;AAClB,MAAI,CAAC,OAAO,SAAS,IAAI,KAAK,SAAS;AACrC,UAAM,IAAI,WAAW,qDAAqD;AAC5E,QAAM,MAAM,OAAO;AACnB,QAAM,QAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AAC9C,QAAM,QAAQ,MAAM;AACpB,MAAI,OAAO,SAAS,SAAS,KAAK,KAAK,EAAE,IAAI,KAAK,SAAS,KAAK,KAAK,EAAE,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI;AAC3G,MAAI,CAAC,OAAO,SAAS,IAAI,KAAK,SAAS,KAAK,CAAC,OAAO,cAAc,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,cAAc,KAAK,KAAK,KAAK,IAAI,CAAC;AACpI,UAAM,IAAI,WAAW,gDAAgD;AACvE,MAAI,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK;AAC1D,UAAM,YAAY,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,CAAC;AACnD,UAAM,SAAS,OAAO;AACtB,WAAO,aAAa,SAAS,MAAM,IAAI,SAAS,IAAI,IAAI;AAAA,EAC1D;AACA,SAAO,EAAE,IAAI,IAAI,KAAK;AACxB;AACA,SAAS,MAAM,OAAe;AAAE,SAAO,OAAO,MAAM,YAAY,EAAE,CAAC,KAAK;AAAG;AAQpE,SAAS,YAAY,QAAuB,UAA6B,CAAC,GAAsB;AACrG,QAAM,EAAE,IAAI,IAAI,KAAK,IAAI,WAAW,QAAQ,OAAO;AACnD,QAAM,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG,MAAM,KAAK,MAAM,KAAK,IAAI;AAC9D,QAAM,SAAS,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,QAAQ,KAAK,IAAI,CAAC,EAAE,OAAO,OAAK,KAAK,MAAM,KAAK,EAAE;AACvI,SAAO,OAAO,OAAO,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,QAAQ,IAAI,MAAM;AACxE;AAOO,SAAS,iBAAiB,QAAuB,UAA6B,CAAC,GAAkB;AACtG,QAAM,EAAE,IAAI,IAAI,KAAK,IAAI,WAAW,QAAQ,OAAO;AACnD,QAAM,IAAI,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI;AACpF,MAAI,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,EAAG,OAAM,IAAI,WAAW,mDAAmD;AACxH,SAAO,OAAO,OAAO,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9D;AAiBO,SAAS,aAAa,OAAe,UAA+B,CAAC,GAAW;AACrF,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,OAAM,IAAI,WAAW,oCAAoC;AACtF,QAAM,EAAE,SAAS,SAAS,SAAS,IAAI,SAAS,IAAI,GAAG,KAAK,IAAI;AAChE,QAAM,YAAY,IAAI,KAAK,aAAa,QAAQ,IAAI;AACpD,QAAM,QAAQ,UAAU,cAAc,KAAK;AAC3C,QAAM,YAAY,MAAM,KAAK,UAAU,cAAc,CAAC,EAAE,KAAK,OAAK,EAAE,SAAS,SAAS,EAAG,KAAK,EAAE,GAAG,EAAE;AACrG,QAAM,SAAS,MAAM,OAAO,OAAK,EAAE,SAAS,aAAa,EAAE,SAAS,UAAU;AAC9E,QAAM,OAAO,OAAO,SAAS,KAAK,OAAO,MAAM,OAAK,MAAM,KAAK,EAAE,KAAK,EAAE,MAAM,WAAS,UAAU,SAAS,CAAC;AAC3G,SAAO,SAAS,UAAU,OAAO,OAAO,IAAI,KAAK,IAAI;AACvD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,55 @@
1
+ import { type PibblEventHandlers, type PibblEventParticipationOptions, type PibblNode, type SignalValue, type StrokeStyle } from "@pibbl/core";
2
+ import type { OhlcBarInspectionRef } from "../inspection/ohlc-bar.js";
3
+ import type { LineAccessor, ScaleId } from "./types.js";
4
+ /** Shared stroke presentation for an OHLC bar.
5
+ * @see {@link OhlcBarSeries}
6
+ */
7
+ export interface OhlcBarSeriesStyle {
8
+ /** Positive total width, or automatic 70% spacing capped at 12; singleton fallback 8. */ readonly bandwidth?: number | "auto";
9
+ /** Stem and tick stroke; defaults to dark teal. Empty string disables painting. */ readonly stroke?: StrokeStyle;
10
+ /** Nonnegative local stroke width; default 1. */ readonly strokeWidth?: number;
11
+ /** Paint opacity from zero through one; default 1. */ readonly opacity?: number;
12
+ /** Cursor while the series owns targeting. */ readonly cursor?: string;
13
+ }
14
+ /** Source-ordered OHLC records rendered as a high/low stem with open/close ticks.
15
+ * @see {@link OhlcBarSeries}
16
+ */
17
+ export interface OhlcBarSeriesProps<D> extends PibblEventHandlers, PibblEventParticipationOptions {
18
+ /** Original records or signal; never sorted or mutated. */
19
+ readonly data: SignalValue<readonly D[]>;
20
+ /** UTC-millisecond property or callback. */
21
+ readonly time: LineAccessor<D>;
22
+ /** Opening price property or callback. */
23
+ readonly open: LineAccessor<D>;
24
+ /** High price property or callback. */
25
+ readonly high: LineAccessor<D>;
26
+ /** Low price property or callback. */
27
+ readonly low: LineAccessor<D>;
28
+ /** Closing price property or callback. */
29
+ readonly close: LineAccessor<D>;
30
+ /** Numeric, UTC, or trading-time horizontal mapping identity. */
31
+ readonly xScale: ScaleId;
32
+ /** Continuous price mapping identity. */
33
+ readonly yScale: ScaleId;
34
+ /** Tests original rows before accessor evaluation.
35
+ * @param datum - Original row.
36
+ * @param index - Source index including skipped rows.
37
+ * @param data - Complete source array.
38
+ * @returns Whether the bar participates.
39
+ */
40
+ readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;
41
+ /** Shared presentation or a hook-free original-row resolver.
42
+ * @param datum - Original row.
43
+ * @param index - Source index.
44
+ * @param data - Complete source array.
45
+ * @returns Plain OHLC-bar style.
46
+ */
47
+ readonly style?: SignalValue<OhlcBarSeriesStyle> | ((datum: D, index: number, data: readonly D[]) => OhlcBarSeriesStyle);
48
+ /** Optional committed capture; the renderer does not execute inspection queries. */ readonly inspection?: OhlcBarInspectionRef<D>;
49
+ }
50
+ /** Paints source-ordered OHLC bars with a high/low stem, left open tick, and right close tick.
51
+ * @param props - Original OHLC accessors, scales, styles, events, and optional capture.
52
+ * @returns Ordinary Pibbl composition; equal disjoint styles share paths.
53
+ * @see {@link OhlcBarSeriesProps}
54
+ */
55
+ export declare function OhlcBarSeries<D>({ data: input, time: timeInput, open: openInput, high: highInput, low: lowInput, close: closeInput, xScale, yScale, defined, style: styleInput, inspection, pointerEvents, ...events }: OhlcBarSeriesProps<D>): PibblNode;