@pibbl/core 0.0.2 → 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 (549) hide show
  1. package/THIRD_PARTY_NOTICES.txt +81 -0
  2. package/dist/features/physics/2d-testing.d.ts +1 -1
  3. package/dist/features/physics/2d-testing.js +2 -2
  4. package/dist/features/physics/2d-testing.js.map +2 -2
  5. package/dist/features/physics/lib/2d/canvas/components.js +25 -21
  6. package/dist/features/physics/lib/2d/canvas/components.js.map +2 -2
  7. package/dist/features/physics/lib/2d/canvas/presentation.js +1 -2
  8. package/dist/features/physics/lib/2d/canvas/presentation.js.map +2 -2
  9. package/dist/features/physics/lib/2d/collision/casts.js +4 -2
  10. package/dist/features/physics/lib/2d/collision/casts.js.map +2 -2
  11. package/dist/features/physics/lib/2d/runtime/controller.js +1 -1
  12. package/dist/features/physics/lib/2d/runtime/controller.js.map +2 -2
  13. package/dist/features/physics/lib/2d/runtime/obstacles.js +9 -11
  14. package/dist/features/physics/lib/2d/runtime/obstacles.js.map +2 -2
  15. package/dist/features/physics/lib/2d/shapes.js +8 -9
  16. package/dist/features/physics/lib/2d/shapes.js.map +2 -2
  17. package/dist/features/physics/lib/2d/world/rapier.js +22 -26
  18. package/dist/features/physics/lib/2d/world/rapier.js.map +2 -2
  19. package/dist/features/sprites/loader.js +6 -3
  20. package/dist/features/sprites/loader.js.map +2 -2
  21. package/dist/features/textures/index.d.ts +12 -2
  22. package/dist/features/textures/index.js +33 -1
  23. package/dist/features/textures/index.js.map +2 -2
  24. package/dist/features/textures/lib/chemical-field.d.ts +56 -0
  25. package/dist/features/textures/lib/chemical-field.js +154 -0
  26. package/dist/features/textures/lib/chemical-field.js.map +7 -0
  27. package/dist/features/textures/lib/chemical-recipes.d.ts +119 -0
  28. package/dist/features/textures/lib/chemical-recipes.js +275 -0
  29. package/dist/features/textures/lib/chemical-recipes.js.map +7 -0
  30. package/dist/features/textures/lib/definitions.d.ts +3 -18
  31. package/dist/features/textures/lib/definitions.js +17 -24
  32. package/dist/features/textures/lib/definitions.js.map +2 -2
  33. package/dist/features/textures/lib/geometric-patterns.d.ts +149 -0
  34. package/dist/features/textures/lib/geometric-patterns.js +305 -0
  35. package/dist/features/textures/lib/geometric-patterns.js.map +7 -0
  36. package/dist/features/textures/lib/gray-scott.d.ts +55 -0
  37. package/dist/features/textures/lib/gray-scott.js +37 -0
  38. package/dist/features/textures/lib/gray-scott.js.map +7 -0
  39. package/dist/features/textures/lib/palette.js +1 -3
  40. package/dist/features/textures/lib/palette.js.map +2 -2
  41. package/dist/features/textures/lib/patterns.d.ts +123 -0
  42. package/dist/features/textures/lib/patterns.js +344 -0
  43. package/dist/features/textures/lib/patterns.js.map +7 -0
  44. package/dist/features/textures/lib/rain-drops.js +2 -1
  45. package/dist/features/textures/lib/rain-drops.js.map +2 -2
  46. package/dist/features/textures/lib/reaction-diffusion.d.ts +3 -2
  47. package/dist/features/textures/lib/reaction-diffusion.js +9 -20
  48. package/dist/features/textures/lib/reaction-diffusion.js.map +2 -2
  49. package/dist/features/textures/lib/simulation.d.ts +10 -4
  50. package/dist/features/textures/lib/simulation.js +23 -13
  51. package/dist/features/textures/lib/simulation.js.map +2 -2
  52. package/dist/features/textures/lib/wasm/electric.js +8 -1
  53. package/dist/features/textures/lib/wasm/electric.js.map +2 -2
  54. package/dist/features/textures/lib/water-surface.js +1 -3
  55. package/dist/features/textures/lib/water-surface.js.map +2 -2
  56. package/dist/features/viz/index.d.ts +68 -6
  57. package/dist/features/viz/index.js +164 -2
  58. package/dist/features/viz/index.js.map +2 -2
  59. package/dist/features/viz/inspection/bar.d.ts +79 -0
  60. package/dist/features/viz/inspection/bar.js +49 -0
  61. package/dist/features/viz/inspection/bar.js.map +7 -0
  62. package/dist/features/viz/inspection/candle.d.ts +156 -0
  63. package/dist/features/viz/inspection/candle.js +120 -0
  64. package/dist/features/viz/inspection/candle.js.map +7 -0
  65. package/dist/features/viz/inspection/capture-types.d.ts +65 -0
  66. package/dist/features/viz/inspection/capture.d.ts +16 -0
  67. package/dist/features/viz/inspection/capture.js +49 -0
  68. package/dist/features/viz/inspection/capture.js.map +7 -0
  69. package/dist/features/viz/inspection/handler.d.ts +36 -0
  70. package/dist/features/viz/inspection/handler.js +91 -0
  71. package/dist/features/viz/inspection/handler.js.map +7 -0
  72. package/dist/features/viz/inspection/ohlc-bar.d.ts +132 -0
  73. package/dist/features/viz/inspection/ohlc-bar.js +118 -0
  74. package/dist/features/viz/inspection/ohlc-bar.js.map +7 -0
  75. package/dist/features/viz/inspection/owned-ref.d.ts +16 -0
  76. package/dist/features/viz/inspection/owned-ref.js +99 -0
  77. package/dist/features/viz/inspection/owned-ref.js.map +7 -0
  78. package/dist/features/viz/inspection/painted-point.d.ts +22 -0
  79. package/dist/features/viz/inspection/painted-point.js +29 -0
  80. package/dist/features/viz/inspection/painted-point.js.map +7 -0
  81. package/dist/features/viz/inspection/queries.d.ts +100 -0
  82. package/dist/features/viz/inspection/queries.js +192 -0
  83. package/dist/features/viz/inspection/queries.js.map +7 -0
  84. package/dist/features/viz/inspection/query-types.d.ts +177 -0
  85. package/dist/features/viz/inspection/volume.d.ts +104 -0
  86. package/dist/features/viz/inspection/volume.js +95 -0
  87. package/dist/features/viz/inspection/volume.js.map +7 -0
  88. package/dist/features/viz/inspection.d.ts +19 -0
  89. package/dist/features/viz/inspection.js +54 -0
  90. package/dist/features/viz/inspection.js.map +7 -0
  91. package/dist/features/viz/inspection.mjs +1 -0
  92. package/dist/features/viz/lib/area-series.d.ts +62 -0
  93. package/dist/features/viz/lib/area-series.js +120 -0
  94. package/dist/features/viz/lib/area-series.js.map +7 -0
  95. package/dist/features/viz/lib/axis-title.js +2 -1
  96. package/dist/features/viz/lib/axis-title.js.map +2 -2
  97. package/dist/features/viz/lib/axis.js +1 -1
  98. package/dist/features/viz/lib/axis.js.map +2 -2
  99. package/dist/features/viz/lib/bar-series.d.ts +3 -1
  100. package/dist/features/viz/lib/bar-series.js +16 -1
  101. package/dist/features/viz/lib/bar-series.js.map +2 -2
  102. package/dist/features/viz/lib/baseline-series.d.ts +55 -0
  103. package/dist/features/viz/lib/baseline-series.js +136 -0
  104. package/dist/features/viz/lib/baseline-series.js.map +7 -0
  105. package/dist/features/viz/lib/candlestick-series.d.ts +62 -0
  106. package/dist/features/viz/lib/candlestick-series.js +150 -0
  107. package/dist/features/viz/lib/candlestick-series.js.map +7 -0
  108. package/dist/features/viz/lib/censored-point-series.d.ts +71 -0
  109. package/dist/features/viz/lib/censored-point-series.js +129 -0
  110. package/dist/features/viz/lib/censored-point-series.js.map +7 -0
  111. package/dist/features/viz/lib/color-context.d.ts +4 -0
  112. package/dist/features/viz/lib/color-context.js +41 -0
  113. package/dist/features/viz/lib/color-context.js.map +7 -0
  114. package/dist/features/viz/lib/color-math.d.ts +4 -0
  115. package/dist/features/viz/lib/color-math.js +31 -0
  116. package/dist/features/viz/lib/color-math.js.map +7 -0
  117. package/dist/features/viz/lib/color-types.d.ts +53 -0
  118. package/dist/features/viz/lib/curve-definition.d.ts +49 -0
  119. package/dist/features/viz/lib/curve-definition.js +142 -0
  120. package/dist/features/viz/lib/curve-definition.js.map +7 -0
  121. package/dist/features/viz/lib/diverging-color-scale.d.ts +11 -0
  122. package/dist/features/viz/lib/diverging-color-scale.js +51 -0
  123. package/dist/features/viz/lib/diverging-color-scale.js.map +7 -0
  124. package/dist/features/viz/lib/domain-navigation.d.ts +40 -0
  125. package/dist/features/viz/lib/domain-navigation.js +77 -0
  126. package/dist/features/viz/lib/domain-navigation.js.map +7 -0
  127. package/dist/features/viz/lib/editable-chart-elements.d.ts +178 -0
  128. package/dist/features/viz/lib/editable-chart-elements.js +733 -0
  129. package/dist/features/viz/lib/editable-chart-elements.js.map +7 -0
  130. package/dist/features/viz/lib/financial-aggregation.d.ts +127 -0
  131. package/dist/features/viz/lib/financial-aggregation.js +116 -0
  132. package/dist/features/viz/lib/financial-aggregation.js.map +7 -0
  133. package/dist/features/viz/lib/financial-autoscale.d.ts +64 -0
  134. package/dist/features/viz/lib/financial-autoscale.js +61 -0
  135. package/dist/features/viz/lib/financial-autoscale.js.map +7 -0
  136. package/dist/features/viz/lib/financial-comparison.d.ts +62 -0
  137. package/dist/features/viz/lib/financial-comparison.js +98 -0
  138. package/dist/features/viz/lib/financial-comparison.js.map +7 -0
  139. package/dist/features/viz/lib/financial-geometry.d.ts +77 -0
  140. package/dist/features/viz/lib/financial-geometry.js +67 -0
  141. package/dist/features/viz/lib/financial-geometry.js.map +7 -0
  142. package/dist/features/viz/lib/financial-indicators.d.ts +114 -0
  143. package/dist/features/viz/lib/financial-indicators.js +135 -0
  144. package/dist/features/viz/lib/financial-indicators.js.map +7 -0
  145. package/dist/features/viz/lib/financial-oscillators.d.ts +171 -0
  146. package/dist/features/viz/lib/financial-oscillators.js +265 -0
  147. package/dist/features/viz/lib/financial-oscillators.js.map +7 -0
  148. package/dist/features/viz/lib/graph/bipartite.d.ts +14 -0
  149. package/dist/features/viz/lib/graph/bipartite.js +250 -0
  150. package/dist/features/viz/lib/graph/bipartite.js.map +7 -0
  151. package/dist/features/viz/lib/graph/chord.d.ts +44 -0
  152. package/dist/features/viz/lib/graph/chord.js +348 -0
  153. package/dist/features/viz/lib/graph/chord.js.map +7 -0
  154. package/dist/features/viz/lib/graph/dependency.d.ts +26 -0
  155. package/dist/features/viz/lib/graph/dependency.js +140 -0
  156. package/dist/features/viz/lib/graph/dependency.js.map +7 -0
  157. package/dist/features/viz/lib/graph/force.d.ts +28 -0
  158. package/dist/features/viz/lib/graph/force.js +580 -0
  159. package/dist/features/viz/lib/graph/force.js.map +7 -0
  160. package/dist/features/viz/lib/graph/hierarchy.d.ts +21 -0
  161. package/dist/features/viz/lib/graph/hierarchy.js +112 -0
  162. package/dist/features/viz/lib/graph/hierarchy.js.map +7 -0
  163. package/dist/features/viz/lib/graph/icicle.d.ts +16 -0
  164. package/dist/features/viz/lib/graph/icicle.js +153 -0
  165. package/dist/features/viz/lib/graph/icicle.js.map +7 -0
  166. package/dist/features/viz/lib/graph/matrix.d.ts +30 -0
  167. package/dist/features/viz/lib/graph/matrix.js +243 -0
  168. package/dist/features/viz/lib/graph/matrix.js.map +7 -0
  169. package/dist/features/viz/lib/graph/neighborhood.d.ts +11 -0
  170. package/dist/features/viz/lib/graph/neighborhood.js +281 -0
  171. package/dist/features/viz/lib/graph/neighborhood.js.map +7 -0
  172. package/dist/features/viz/lib/graph/routes.d.ts +35 -0
  173. package/dist/features/viz/lib/graph/routes.js +101 -0
  174. package/dist/features/viz/lib/graph/routes.js.map +7 -0
  175. package/dist/features/viz/lib/graph/sankey.d.ts +44 -0
  176. package/dist/features/viz/lib/graph/sankey.js +341 -0
  177. package/dist/features/viz/lib/graph/sankey.js.map +7 -0
  178. package/dist/features/viz/lib/graph/shared.d.ts +59 -0
  179. package/dist/features/viz/lib/graph/shared.js +301 -0
  180. package/dist/features/viz/lib/graph/shared.js.map +7 -0
  181. package/dist/features/viz/lib/graph/tree.d.ts +11 -0
  182. package/dist/features/viz/lib/graph/tree.js +232 -0
  183. package/dist/features/viz/lib/graph/tree.js.map +7 -0
  184. package/dist/features/viz/lib/graph/treemap.d.ts +20 -0
  185. package/dist/features/viz/lib/graph/treemap.js +227 -0
  186. package/dist/features/viz/lib/graph/treemap.js.map +7 -0
  187. package/dist/features/viz/lib/graph/types.d.ts +1097 -0
  188. package/dist/features/viz/lib/hover-card.js +8 -9
  189. package/dist/features/viz/lib/hover-card.js.map +2 -2
  190. package/dist/features/viz/lib/hover-data.d.ts +1 -1
  191. package/dist/features/viz/lib/hover-data.js +5 -2
  192. package/dist/features/viz/lib/hover-data.js.map +2 -2
  193. package/dist/features/viz/lib/interval-band-series.d.ts +49 -0
  194. package/dist/features/viz/lib/interval-band-series.js +136 -0
  195. package/dist/features/viz/lib/interval-band-series.js.map +7 -0
  196. package/dist/features/viz/lib/interval-diamond-series.d.ts +43 -0
  197. package/dist/features/viz/lib/interval-diamond-series.js +122 -0
  198. package/dist/features/viz/lib/interval-diamond-series.js.map +7 -0
  199. package/dist/features/viz/lib/interval-series.d.ts +79 -0
  200. package/dist/features/viz/lib/interval-series.js +158 -0
  201. package/dist/features/viz/lib/interval-series.js.map +7 -0
  202. package/dist/features/viz/lib/layout-pie.js +9 -13
  203. package/dist/features/viz/lib/layout-pie.js.map +2 -2
  204. package/dist/features/viz/lib/line-series.d.ts +1 -1
  205. package/dist/features/viz/lib/line-series.js +47 -28
  206. package/dist/features/viz/lib/line-series.js.map +2 -2
  207. package/dist/features/viz/lib/linear-scale.js +1 -1
  208. package/dist/features/viz/lib/linear-scale.js.map +2 -2
  209. package/dist/features/viz/lib/monotone-curve.d.ts +11 -0
  210. package/dist/features/viz/lib/monotone-curve.js +63 -0
  211. package/dist/features/viz/lib/monotone-curve.js.map +7 -0
  212. package/dist/features/viz/lib/numeric-range-interpolation.d.ts +15 -0
  213. package/dist/features/viz/lib/numeric-range-interpolation.js +36 -0
  214. package/dist/features/viz/lib/numeric-range-interpolation.js.map +7 -0
  215. package/dist/features/viz/lib/ohlc-bar-series.d.ts +55 -0
  216. package/dist/features/viz/lib/ohlc-bar-series.js +168 -0
  217. package/dist/features/viz/lib/ohlc-bar-series.js.map +7 -0
  218. package/dist/features/viz/lib/paired-series.d.ts +44 -0
  219. package/dist/features/viz/lib/paired-series.js +93 -0
  220. package/dist/features/viz/lib/paired-series.js.map +7 -0
  221. package/dist/features/viz/lib/pie-layout.js +2 -1
  222. package/dist/features/viz/lib/pie-layout.js.map +2 -2
  223. package/dist/features/viz/lib/plot-series.js +11 -6
  224. package/dist/features/viz/lib/plot-series.js.map +2 -2
  225. package/dist/features/viz/lib/plot-types.d.ts +4 -3
  226. package/dist/features/viz/lib/point-series.d.ts +1 -1
  227. package/dist/features/viz/lib/point-series.js +36 -9
  228. package/dist/features/viz/lib/point-series.js.map +2 -2
  229. package/dist/features/viz/lib/point-types.d.ts +5 -2
  230. package/dist/features/viz/lib/reference-band.js +4 -1
  231. package/dist/features/viz/lib/reference-band.js.map +2 -2
  232. package/dist/features/viz/lib/scale-context.d.ts +1 -1
  233. package/dist/features/viz/lib/scale-ticks.js +21 -6
  234. package/dist/features/viz/lib/scale-ticks.js.map +2 -2
  235. package/dist/features/viz/lib/sequential-color-scale.d.ts +11 -0
  236. package/dist/features/viz/lib/sequential-color-scale.js +49 -0
  237. package/dist/features/viz/lib/sequential-color-scale.js.map +7 -0
  238. package/dist/features/viz/lib/series-position.d.ts +12 -0
  239. package/dist/features/viz/lib/series-position.js +44 -0
  240. package/dist/features/viz/lib/series-position.js.map +7 -0
  241. package/dist/features/viz/lib/step-curves.d.ts +19 -0
  242. package/dist/features/viz/lib/step-curves.js +53 -0
  243. package/dist/features/viz/lib/step-curves.js.map +7 -0
  244. package/dist/features/viz/lib/threshold-color-scale.d.ts +43 -0
  245. package/dist/features/viz/lib/threshold-color-scale.js +59 -0
  246. package/dist/features/viz/lib/threshold-color-scale.js.map +7 -0
  247. package/dist/features/viz/lib/trading-time-mapping.d.ts +32 -0
  248. package/dist/features/viz/lib/trading-time-mapping.js +89 -0
  249. package/dist/features/viz/lib/trading-time-mapping.js.map +7 -0
  250. package/dist/features/viz/lib/trading-time-scale.d.ts +83 -0
  251. package/dist/features/viz/lib/trading-time-scale.js +96 -0
  252. package/dist/features/viz/lib/trading-time-scale.js.map +7 -0
  253. package/dist/features/viz/lib/trajectory-series.d.ts +71 -0
  254. package/dist/features/viz/lib/trajectory-series.js +111 -0
  255. package/dist/features/viz/lib/trajectory-series.js.map +7 -0
  256. package/dist/features/viz/lib/types.d.ts +20 -4
  257. package/dist/features/viz/lib/use-continuous-scale.js +6 -1
  258. package/dist/features/viz/lib/use-continuous-scale.js.map +2 -2
  259. package/dist/features/viz/lib/utc-scale.js +11 -10
  260. package/dist/features/viz/lib/utc-scale.js.map +2 -2
  261. package/dist/features/viz/lib/volume-series.d.ts +59 -0
  262. package/dist/features/viz/lib/volume-series.js +117 -0
  263. package/dist/features/viz/lib/volume-series.js.map +7 -0
  264. package/dist/features/viz/lib/weighted-point-series.d.ts +71 -0
  265. package/dist/features/viz/lib/weighted-point-series.js +169 -0
  266. package/dist/features/viz/lib/weighted-point-series.js.map +7 -0
  267. package/dist/filters/backdrop-contrast-gpu.d.ts +5 -0
  268. package/dist/filters/backdrop-contrast-gpu.js +33 -0
  269. package/dist/filters/backdrop-contrast-gpu.js.map +7 -0
  270. package/dist/filters/backdrop-contrast.d.ts +21 -0
  271. package/dist/filters/backdrop-contrast.js +61 -0
  272. package/dist/filters/backdrop-contrast.js.map +7 -0
  273. package/dist/filters/displacement.js +1 -1
  274. package/dist/filters/displacement.js.map +2 -2
  275. package/dist/filters/emboss-gpu.d.ts +4 -0
  276. package/dist/filters/emboss-gpu.js +39 -0
  277. package/dist/filters/emboss-gpu.js.map +7 -0
  278. package/dist/filters/emboss.d.ts +32 -0
  279. package/dist/filters/emboss.js +104 -0
  280. package/dist/filters/emboss.js.map +7 -0
  281. package/dist/filters/filter-executor.d.ts +11 -4
  282. package/dist/filters/filter-executor.js +104 -49
  283. package/dist/filters/filter-executor.js.map +2 -2
  284. package/dist/filters/reflected-light.js +1 -1
  285. package/dist/filters/reflected-light.js.map +2 -2
  286. package/dist/filters/reflection-gpu.d.ts +3 -1
  287. package/dist/filters/reflection-gpu.js +5 -2
  288. package/dist/filters/reflection-gpu.js.map +2 -2
  289. package/dist/filters/render-backdrop-contrast-boundary.d.ts +31 -0
  290. package/dist/filters/render-backdrop-contrast-boundary.js +116 -0
  291. package/dist/filters/render-backdrop-contrast-boundary.js.map +7 -0
  292. package/dist/filters/render-emboss-boundary.d.ts +13 -0
  293. package/dist/filters/render-emboss-boundary.js +131 -0
  294. package/dist/filters/render-emboss-boundary.js.map +7 -0
  295. package/dist/filters.d.ts +9 -5
  296. package/dist/filters.js +4 -0
  297. package/dist/filters.js.map +2 -2
  298. package/dist/index.d.ts +9 -5
  299. package/dist/index.js +18 -2
  300. package/dist/index.js.map +2 -2
  301. package/dist/internal.d.ts +4 -0
  302. package/dist/internal.js +6 -0
  303. package/dist/internal.js.map +2 -2
  304. package/dist/layout-kernel.d.ts +12 -0
  305. package/dist/layout-kernel.js +11 -0
  306. package/dist/layout-kernel.js.map +7 -0
  307. package/dist/layout-kernel.mjs +1 -0
  308. package/dist/lib/backend/types.d.ts +13 -1
  309. package/dist/lib/backend/types.js.map +2 -2
  310. package/dist/lib/components/arc-geometry.js +2 -1
  311. package/dist/lib/components/arc-geometry.js.map +2 -2
  312. package/dist/lib/components/g.js +2 -0
  313. package/dist/lib/components/g.js.map +2 -2
  314. package/dist/lib/components/html-box.js +2 -1
  315. package/dist/lib/components/html-box.js.map +2 -2
  316. package/dist/lib/components/img.js +3 -3
  317. package/dist/lib/components/img.js.map +2 -2
  318. package/dist/lib/components/layer.js +98 -16
  319. package/dist/lib/components/layer.js.map +3 -3
  320. package/dist/lib/components/text.d.ts +16 -0
  321. package/dist/lib/components/text.js +131 -24
  322. package/dist/lib/components/text.js.map +2 -2
  323. package/dist/lib/define-primitive.d.ts +4 -2
  324. package/dist/lib/define-primitive.js +3 -1
  325. package/dist/lib/define-primitive.js.map +2 -2
  326. package/dist/lib/element/metadata.d.ts +9 -0
  327. package/dist/lib/element/metadata.js +19 -0
  328. package/dist/lib/element/metadata.js.map +2 -2
  329. package/dist/lib/element/resolve-primitive-inputs.d.ts +2 -0
  330. package/dist/lib/element/resolve-primitive-inputs.js +17 -4
  331. package/dist/lib/element/resolve-primitive-inputs.js.map +2 -2
  332. package/dist/lib/events/event-facade.d.ts +18 -0
  333. package/dist/lib/events/event-facade.js +28 -2
  334. package/dist/lib/events/event-facade.js.map +2 -2
  335. package/dist/lib/events/hit-test.js +2 -1
  336. package/dist/lib/events/hit-test.js.map +2 -2
  337. package/dist/lib/events/propagation.d.ts +2 -1
  338. package/dist/lib/events/propagation.js +22 -16
  339. package/dist/lib/events/propagation.js.map +2 -2
  340. package/dist/lib/events/registrations.d.ts +10 -0
  341. package/dist/lib/events/registrations.js +160 -5
  342. package/dist/lib/events/registrations.js.map +2 -2
  343. package/dist/lib/execute-render.js +25 -1
  344. package/dist/lib/execute-render.js.map +2 -2
  345. package/dist/lib/filter/filter-region.js +3 -10
  346. package/dist/lib/filter/filter-region.js.map +2 -2
  347. package/dist/lib/focus/focus-manager.d.ts +8 -1
  348. package/dist/lib/focus/focus-manager.js +87 -43
  349. package/dist/lib/focus/focus-manager.js.map +2 -2
  350. package/dist/lib/focus/geometry.d.ts +2 -0
  351. package/dist/lib/focus/geometry.js +6 -0
  352. package/dist/lib/focus/geometry.js.map +2 -2
  353. package/dist/lib/geometry/path-bend-guide.js +1 -1
  354. package/dist/lib/geometry/path-bend-guide.js.map +2 -2
  355. package/dist/lib/geometry/path-geometry.js +12 -11
  356. package/dist/lib/geometry/path-geometry.js.map +2 -2
  357. package/dist/lib/geometry/path-transforms.js +17 -21
  358. package/dist/lib/geometry/path-transforms.js.map +2 -2
  359. package/dist/lib/geometry/path-warp-bezier.js +3 -1
  360. package/dist/lib/geometry/path-warp-bezier.js.map +2 -2
  361. package/dist/lib/geometry/path-warp.js +1 -1
  362. package/dist/lib/geometry/path-warp.js.map +2 -2
  363. package/dist/lib/global-state.js +2 -0
  364. package/dist/lib/global-state.js.map +2 -2
  365. package/dist/lib/html/html-events.d.ts +32 -0
  366. package/dist/lib/html/html-events.js +179 -0
  367. package/dist/lib/html/html-events.js.map +7 -0
  368. package/dist/lib/html/html-service.d.ts +8 -2
  369. package/dist/lib/html/html-service.js +198 -65
  370. package/dist/lib/html/html-service.js.map +2 -2
  371. package/dist/lib/html/overlay-config.js +7 -6
  372. package/dist/lib/html/overlay-config.js.map +2 -2
  373. package/dist/lib/html/types.d.ts +29 -2
  374. package/dist/lib/layout/absolute.d.ts +11 -5
  375. package/dist/lib/layout/absolute.js +329 -55
  376. package/dist/lib/layout/absolute.js.map +3 -3
  377. package/dist/lib/layout/allocation-checkpoint-owner.d.ts +11 -0
  378. package/dist/lib/layout/allocation-checkpoint-owner.js +86 -0
  379. package/dist/lib/layout/allocation-checkpoint-owner.js.map +7 -0
  380. package/dist/lib/layout/allocation-checkpoint.d.ts +53 -0
  381. package/dist/lib/layout/allocation-checkpoint.js +463 -0
  382. package/dist/lib/layout/allocation-checkpoint.js.map +7 -0
  383. package/dist/lib/layout/allocation-dependencies.d.ts +30 -0
  384. package/dist/lib/layout/allocation-dependencies.js +90 -0
  385. package/dist/lib/layout/allocation-dependencies.js.map +7 -0
  386. package/dist/lib/layout/allocation-revision.d.ts +13 -0
  387. package/dist/lib/layout/allocation-revision.js +67 -0
  388. package/dist/lib/layout/allocation-revision.js.map +7 -0
  389. package/dist/lib/layout/box-insets.d.ts +17 -0
  390. package/dist/lib/layout/box-insets.js +138 -0
  391. package/dist/lib/layout/box-insets.js.map +7 -0
  392. package/dist/lib/layout/box-sizing.d.ts +16 -0
  393. package/dist/lib/layout/box-sizing.js +77 -0
  394. package/dist/lib/layout/box-sizing.js.map +7 -0
  395. package/dist/lib/layout/box.js +42 -12
  396. package/dist/lib/layout/box.js.map +2 -2
  397. package/dist/lib/layout/canvas-measurement.d.ts +13 -0
  398. package/dist/lib/layout/canvas-measurement.js +57 -0
  399. package/dist/lib/layout/canvas-measurement.js.map +7 -0
  400. package/dist/lib/layout/context.d.ts +35 -6
  401. package/dist/lib/layout/context.js +72 -3
  402. package/dist/lib/layout/context.js.map +2 -2
  403. package/dist/lib/layout/define-layout-component.d.ts +23 -0
  404. package/dist/lib/layout/define-layout-component.js +84 -0
  405. package/dist/lib/layout/define-layout-component.js.map +7 -0
  406. package/dist/lib/layout/flex-allocation-cache.d.ts +42 -0
  407. package/dist/lib/layout/flex-baseline-mode.d.ts +2 -0
  408. package/dist/lib/layout/flex-baseline-mode.js +7 -0
  409. package/dist/lib/layout/flex-baseline-mode.js.map +7 -0
  410. package/dist/lib/layout/flex.d.ts +50 -15
  411. package/dist/lib/layout/flex.js +2124 -195
  412. package/dist/lib/layout/flex.js.map +3 -3
  413. package/dist/lib/layout/flow.js +225 -49
  414. package/dist/lib/layout/flow.js.map +2 -2
  415. package/dist/lib/layout/geometry-publication.d.ts +53 -0
  416. package/dist/lib/layout/geometry-publication.js +244 -0
  417. package/dist/lib/layout/geometry-publication.js.map +7 -0
  418. package/dist/lib/layout/grid-kernel.d.ts +63 -0
  419. package/dist/lib/layout/grid-kernel.js +168 -0
  420. package/dist/lib/layout/grid-kernel.js.map +7 -0
  421. package/dist/lib/layout/grid.d.ts +63 -4
  422. package/dist/lib/layout/grid.js +767 -171
  423. package/dist/lib/layout/grid.js.map +3 -3
  424. package/dist/lib/layout/measure.d.ts +55 -3
  425. package/dist/lib/layout/measure.js +448 -15
  426. package/dist/lib/layout/measure.js.map +2 -2
  427. package/dist/lib/layout/overlay.js +81 -23
  428. package/dist/lib/layout/overlay.js.map +2 -2
  429. package/dist/lib/layout/participation.d.ts +27 -0
  430. package/dist/lib/layout/participation.js +188 -0
  431. package/dist/lib/layout/participation.js.map +7 -0
  432. package/dist/lib/layout/place-child.js +1 -1
  433. package/dist/lib/layout/place-child.js.map +2 -2
  434. package/dist/lib/layout/positioning-diagnostics.d.ts +1 -1
  435. package/dist/lib/layout/positioning-diagnostics.js +13 -2
  436. package/dist/lib/layout/positioning-diagnostics.js.map +2 -2
  437. package/dist/lib/layout/prepared-root.d.ts +121 -0
  438. package/dist/lib/layout/prepared-root.js +360 -0
  439. package/dist/lib/layout/prepared-root.js.map +7 -0
  440. package/dist/lib/layout/standalone-kernel.d.ts +60 -0
  441. package/dist/lib/layout/standalone-kernel.js +722 -0
  442. package/dist/lib/layout/standalone-kernel.js.map +7 -0
  443. package/dist/lib/layout/topology.d.ts +21 -0
  444. package/dist/lib/layout/topology.js +113 -0
  445. package/dist/lib/layout/topology.js.map +7 -0
  446. package/dist/lib/layout/types.d.ts +5 -0
  447. package/dist/lib/layout/wasm/artifact.d.ts +1 -0
  448. package/dist/lib/layout/wasm/artifact.js +5 -0
  449. package/dist/lib/layout/wasm/artifact.js.map +7 -0
  450. package/dist/lib/layout/wasm/bytes.d.ts +1 -0
  451. package/dist/lib/layout/wasm/bytes.js +5 -0
  452. package/dist/lib/layout/wasm/bytes.js.map +7 -0
  453. package/dist/lib/layout/wasm/embedded.d.ts +2 -0
  454. package/dist/lib/layout/wasm/embedded.js +12 -0
  455. package/dist/lib/layout/wasm/embedded.js.map +7 -0
  456. package/dist/lib/layout/wasm/layout.wasm +0 -0
  457. package/dist/lib/layout/wasm/module.d.ts +8 -0
  458. package/dist/lib/layout/wasm/module.js +70 -0
  459. package/dist/lib/layout/wasm/module.js.map +7 -0
  460. package/dist/lib/layout/wasm/region.d.ts +267 -0
  461. package/dist/lib/layout/wasm/region.js +1018 -0
  462. package/dist/lib/layout/wasm/region.js.map +7 -0
  463. package/dist/lib/manipulation/controller.js +4 -7
  464. package/dist/lib/manipulation/controller.js.map +2 -2
  465. package/dist/lib/manipulation/frame.js +1 -1
  466. package/dist/lib/manipulation/frame.js.map +2 -2
  467. package/dist/lib/manipulation/handles.js +32 -33
  468. package/dist/lib/manipulation/handles.js.map +2 -2
  469. package/dist/lib/manipulation/solve.js +12 -10
  470. package/dist/lib/manipulation/solve.js.map +2 -2
  471. package/dist/lib/mount-pibbl.js +1 -0
  472. package/dist/lib/mount-pibbl.js.map +2 -2
  473. package/dist/lib/mount-prepared-pibbl.d.ts +5 -0
  474. package/dist/lib/mount-prepared-pibbl.js +29 -0
  475. package/dist/lib/mount-prepared-pibbl.js.map +7 -0
  476. package/dist/lib/mount-request.d.ts +8 -0
  477. package/dist/lib/mount-request.js +41 -0
  478. package/dist/lib/mount-request.js.map +7 -0
  479. package/dist/lib/pibbl.d.ts +21 -13
  480. package/dist/lib/pibbl.js +18 -16
  481. package/dist/lib/pibbl.js.map +2 -2
  482. package/dist/lib/recording/recording.d.ts +43 -0
  483. package/dist/lib/recording/recording.js +555 -0
  484. package/dist/lib/recording/recording.js.map +7 -0
  485. package/dist/lib/recording/types.d.ts +118 -0
  486. package/dist/lib/recording/wasm-bytes.d.ts +1 -0
  487. package/dist/lib/recording/wasm-bytes.js +5 -0
  488. package/dist/lib/recording/wasm-bytes.js.map +7 -0
  489. package/dist/lib/recording/worker-source.d.ts +1 -0
  490. package/dist/lib/recording/worker-source.js +5 -0
  491. package/dist/lib/recording/worker-source.js.map +7 -0
  492. package/dist/lib/render-layer/controller.d.ts +9 -3
  493. package/dist/lib/render-layer/controller.js +259 -110
  494. package/dist/lib/render-layer/controller.js.map +2 -2
  495. package/dist/lib/render-transaction.d.ts +12 -2
  496. package/dist/lib/render-transaction.js +69 -1
  497. package/dist/lib/render-transaction.js.map +2 -2
  498. package/dist/lib/render.js +32 -8
  499. package/dist/lib/render.js.map +2 -2
  500. package/dist/lib/scheduler/realm-scheduler.d.ts +2 -0
  501. package/dist/lib/scheduler/realm-scheduler.js +55 -26
  502. package/dist/lib/scheduler/realm-scheduler.js.map +2 -2
  503. package/dist/lib/scheduler/renderer-participant.js +1 -0
  504. package/dist/lib/scheduler/renderer-participant.js.map +2 -2
  505. package/dist/lib/series-inspection-frame.d.ts +18 -0
  506. package/dist/lib/series-inspection-frame.js +70 -0
  507. package/dist/lib/series-inspection-frame.js.map +7 -0
  508. package/dist/lib/signals/edge.d.ts +7 -4
  509. package/dist/lib/signals/edge.js +25 -3
  510. package/dist/lib/signals/edge.js.map +2 -2
  511. package/dist/lib/signals/graph.d.ts +16 -2
  512. package/dist/lib/signals/graph.js +54 -12
  513. package/dist/lib/signals/graph.js.map +2 -2
  514. package/dist/lib/signals/input-provision.d.ts +15 -0
  515. package/dist/lib/signals/input-provision.js +53 -3
  516. package/dist/lib/signals/input-provision.js.map +2 -2
  517. package/dist/lib/signals/render-consumer.d.ts +3 -0
  518. package/dist/lib/signals/render-consumer.js +22 -14
  519. package/dist/lib/signals/render-consumer.js.map +2 -2
  520. package/dist/lib/style/positioning.d.ts +50 -2
  521. package/dist/lib/style/positioning.js +28 -4
  522. package/dist/lib/style/positioning.js.map +2 -2
  523. package/dist/lib/style/resolve-built-in.d.ts +4 -3
  524. package/dist/lib/style/resolve-built-in.js +17 -3
  525. package/dist/lib/style/resolve-built-in.js.map +2 -2
  526. package/dist/lib/style/resolve-dispatch.d.ts +3 -0
  527. package/dist/lib/style/resolve-dispatch.js +77 -4
  528. package/dist/lib/style/resolve-dispatch.js.map +2 -2
  529. package/dist/lib/style/resolve-length.d.ts +2 -0
  530. package/dist/lib/style/resolve-length.js +13 -9
  531. package/dist/lib/style/resolve-length.js.map +2 -2
  532. package/dist/lib/style/sizing-length.d.ts +51 -0
  533. package/dist/lib/style/sizing-length.js +77 -0
  534. package/dist/lib/style/sizing-length.js.map +7 -0
  535. package/dist/lib/style/types.d.ts +63 -25
  536. package/dist/lib/surface/root-surface.js +10 -6
  537. package/dist/lib/surface/root-surface.js.map +2 -2
  538. package/dist/lib/textures/texture.js +10 -8
  539. package/dist/lib/textures/texture.js.map +2 -2
  540. package/dist/lib/transitions/capture.js +4 -1
  541. package/dist/lib/transitions/capture.js.map +2 -2
  542. package/dist/lib/transitions/embers-physics.js +17 -10
  543. package/dist/lib/transitions/embers-physics.js.map +2 -2
  544. package/dist/lib/types.d.ts +110 -1
  545. package/dist/sync.d.ts +16 -0
  546. package/dist/sync.js +13 -0
  547. package/dist/sync.js.map +7 -0
  548. package/dist/sync.mjs +1 -0
  549. package/package.json +26 -3
@@ -0,0 +1,171 @@
1
+ import type { LineAccessor } from "./types.js";
2
+ /**
3
+ * Shared inputs for source-aligned closing-price oscillators.
4
+ *
5
+ * @see {@link RelativeStrengthIndexPoint}
6
+ * @see {@link MovingAverageConvergenceDivergencePoint}
7
+ */
8
+ export interface OscillatorOptions<D> {
9
+ /**
10
+ * Numeric property or callback that supplies each closing observation.
11
+ *
12
+ * @see {@link LineAccessor}
13
+ */
14
+ readonly value: LineAccessor<D>;
15
+ /**
16
+ * Excludes a row before its accessor runs and resets the current warmup.
17
+ *
18
+ * @param datum - Source observation under consideration.
19
+ * @param index - Zero-based source index.
20
+ * @param data - Complete caller-supplied source data.
21
+ * @returns Whether the observation participates in the consecutive calculation.
22
+ * @see {@link LineAccessor}
23
+ */
24
+ readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;
25
+ }
26
+ /**
27
+ * Inputs for Wilder's relative strength index.
28
+ *
29
+ * @see {@link OscillatorOptions}
30
+ * @see {@link RelativeStrengthIndexPoint}
31
+ */
32
+ export interface RelativeStrengthIndexOptions<D> extends OscillatorOptions<D> {
33
+ /**
34
+ * Positive safe number of consecutive price changes used by Wilder smoothing.
35
+ *
36
+ * @see {@link relativeStrengthIndex}
37
+ */
38
+ readonly period: number;
39
+ }
40
+ /**
41
+ * Inputs for moving average convergence/divergence.
42
+ *
43
+ * @see {@link OscillatorOptions}
44
+ * @see {@link MovingAverageConvergenceDivergencePoint}
45
+ */
46
+ export interface MovingAverageConvergenceDivergenceOptions<D> extends OscillatorOptions<D> {
47
+ /** Positive safe EMA period shorter than slowPeriod. */
48
+ readonly fastPeriod: number;
49
+ /** Positive safe EMA period longer than fastPeriod. */
50
+ readonly slowPeriod: number;
51
+ /** Positive safe EMA period used to smooth available MACD observations. */
52
+ readonly signalPeriod: number;
53
+ }
54
+ /**
55
+ * Inputs for the rolling stochastic oscillator.
56
+ *
57
+ * @see {@link StochasticOscillatorPoint}
58
+ * @see {@link LineAccessor}
59
+ */
60
+ export interface StochasticOscillatorOptions<D> {
61
+ /** Numeric property or callback that supplies each high. See {@link LineAccessor}. */
62
+ readonly high: LineAccessor<D>;
63
+ /** Numeric property or callback that supplies each low. See {@link LineAccessor}. */
64
+ readonly low: LineAccessor<D>;
65
+ /** Numeric property or callback that supplies each close. See {@link LineAccessor}. */
66
+ readonly close: LineAccessor<D>;
67
+ /** Positive safe count of consecutive OHLC rows in the raw %K range. */
68
+ readonly lookbackPeriod: number;
69
+ /** Positive safe count of raw %K values in the smoothed %K average. */
70
+ readonly kPeriod: number;
71
+ /** Positive safe count of smoothed %K values in the %D average. */
72
+ readonly dPeriod: number;
73
+ /**
74
+ * Excludes a row before its accessors run and resets all oscillator warmup.
75
+ *
76
+ * @param datum - Source observation under consideration.
77
+ * @param index - Zero-based source index.
78
+ * @param data - Complete caller-supplied source data.
79
+ * @returns Whether the observation participates in consecutive windows.
80
+ * @see {@link LineAccessor}
81
+ */
82
+ readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;
83
+ }
84
+ /**
85
+ * One source-aligned relative strength index observation.
86
+ *
87
+ * @see {@link RelativeStrengthIndexOptions}
88
+ */
89
+ export interface RelativeStrengthIndexPoint<D> {
90
+ /** Caller-owned original observation. */
91
+ readonly datum: D;
92
+ /** Original source index, including rows that become gaps. */
93
+ readonly sourceIndex: number;
94
+ /** Wilder RSI from zero through 100, or null during warmup and gaps. */
95
+ readonly rsi: number | null;
96
+ }
97
+ /**
98
+ * One source-aligned moving average convergence/divergence observation.
99
+ *
100
+ * @see {@link MovingAverageConvergenceDivergenceOptions}
101
+ */
102
+ export interface MovingAverageConvergenceDivergencePoint<D> {
103
+ /** Caller-owned original observation. */
104
+ readonly datum: D;
105
+ /** Original source index, including rows that become gaps. */
106
+ readonly sourceIndex: number;
107
+ /** Fast EMA minus slow EMA, or null before both are seeded. */
108
+ readonly macd: number | null;
109
+ /** EMA of available MACD values, or null during signal warmup. */
110
+ readonly signal: number | null;
111
+ /** MACD minus its signal, or null before the signal is available. */
112
+ readonly histogram: number | null;
113
+ }
114
+ /**
115
+ * One source-aligned stochastic oscillator observation.
116
+ *
117
+ * @see {@link StochasticOscillatorOptions}
118
+ */
119
+ export interface StochasticOscillatorPoint<D> {
120
+ /** Caller-owned original observation. */
121
+ readonly datum: D;
122
+ /** Original source index, including rows that become gaps. */
123
+ readonly sourceIndex: number;
124
+ /** Unsmoothed %K from zero through 100, or null during warmup/a zero range. */
125
+ readonly rawK: number | null;
126
+ /** SMA-smoothed %K, or null during warmup/a zero range. */
127
+ readonly k: number | null;
128
+ /** SMA of smoothed %K, or null during warmup/a zero range. */
129
+ readonly d: number | null;
130
+ }
131
+ /**
132
+ * Derives source-aligned Wilder relative strength index observations.
133
+ *
134
+ * The first RSI follows a full `period` of consecutive price changes, requiring `period + 1`
135
+ * consecutive prices. Flat average gain/loss yields 50; gain-only yields 100 and loss-only yields
136
+ * 0. Missing, nonfinite, and excluded rows produce null and reset the seed.
137
+ *
138
+ * @param data - Source observations, retained in their original order.
139
+ * @param options - Closing value accessor, Wilder period, and optional participation callback.
140
+ * @returns Frozen source-aligned RSI observations.
141
+ * @see {@link RelativeStrengthIndexOptions}
142
+ * @see {@link RelativeStrengthIndexPoint}
143
+ */
144
+ export declare function relativeStrengthIndex<D>(data: readonly D[], options: RelativeStrengthIndexOptions<D>): readonly RelativeStrengthIndexPoint<D>[];
145
+ /**
146
+ * Derives source-aligned MACD, signal, and histogram observations from SMA-seeded EMAs.
147
+ *
148
+ * Missing, nonfinite, and excluded rows produce null fields and reset all EMA warmup. The MACD
149
+ * value appears once both price EMAs are seeded; signal and histogram wait for their own EMA seed.
150
+ *
151
+ * @param data - Source observations, retained in their original order.
152
+ * @param options - Closing value accessor, ordered EMA periods, and participation callback.
153
+ * @returns Frozen source-aligned MACD observations.
154
+ * @see {@link MovingAverageConvergenceDivergenceOptions}
155
+ * @see {@link MovingAverageConvergenceDivergencePoint}
156
+ */
157
+ export declare function movingAverageConvergenceDivergence<D>(data: readonly D[], options: MovingAverageConvergenceDivergenceOptions<D>): readonly MovingAverageConvergenceDivergencePoint<D>[];
158
+ /**
159
+ * Derives source-aligned rolling stochastic %K, smoothed %K, and %D observations.
160
+ *
161
+ * %K uses the trailing high/low range. A zero range yields null raw %K and resets only the %K/%D
162
+ * smoothing warmup, while its complete OHLC row remains in the rolling range. Missing, nonfinite,
163
+ * and excluded rows reset every window; malformed finite candles reject.
164
+ *
165
+ * @param data - Source OHLC observations, retained in their original order.
166
+ * @param options - OHLC accessors, rolling periods, and optional participation callback.
167
+ * @returns Frozen source-aligned stochastic oscillator observations.
168
+ * @see {@link StochasticOscillatorOptions}
169
+ * @see {@link StochasticOscillatorPoint}
170
+ */
171
+ export declare function stochasticOscillator<D>(data: readonly D[], options: StochasticOscillatorOptions<D>): readonly StochasticOscillatorPoint<D>[];
@@ -0,0 +1,265 @@
1
+ import { finiteCoordinate, pointAccessor, pointData } from "./point-data.js";
2
+ function positivePeriod(period, name) {
3
+ if (!Number.isSafeInteger(period) || period <= 0)
4
+ throw new RangeError(`${name} must be a positive safe integer.`);
5
+ }
6
+ function mean(values) {
7
+ let scale = 0;
8
+ for (const value of values) scale = Math.max(scale, Math.abs(value));
9
+ if (scale === 0) return 0;
10
+ let sum = 0;
11
+ for (const value of values) sum += value / scale;
12
+ const result = sum / values.length * scale;
13
+ if (!Number.isFinite(result))
14
+ throw new RangeError("oscillator derived value must be finite.");
15
+ return result;
16
+ }
17
+ function weighted(previous, next, alpha) {
18
+ const scale = Math.max(Math.abs(previous), Math.abs(next));
19
+ if (scale === 0) return 0;
20
+ const result = (previous / scale * (1 - alpha) + next / scale * alpha) * scale;
21
+ if (!Number.isFinite(result))
22
+ throw new RangeError("oscillator derived value must be finite.");
23
+ return result;
24
+ }
25
+ function rollingPush(values, value, period) {
26
+ values.push(value);
27
+ if (values.length > period) values.shift();
28
+ }
29
+ function oscillatorValues(data, options) {
30
+ const rows = pointData(data, "oscillator");
31
+ const value = pointAccessor(options.value);
32
+ return Object.freeze(
33
+ rows.map((datum, index) => {
34
+ if (!(options.defined?.(datum, index, rows) ?? true)) return null;
35
+ const observed = value(datum, index, rows);
36
+ return finiteCoordinate(observed) ? observed : null;
37
+ })
38
+ );
39
+ }
40
+ function relativeStrengthIndex(data, options) {
41
+ positivePeriod(options.period, "RSI period");
42
+ const values = oscillatorValues(data, options);
43
+ const gains = [], losses = [];
44
+ let previous;
45
+ let averageGain, averageLoss;
46
+ return Object.freeze(
47
+ data.map((datum, sourceIndex) => {
48
+ const value = values[sourceIndex];
49
+ if (value === null) {
50
+ gains.length = 0;
51
+ losses.length = 0;
52
+ previous = void 0;
53
+ averageGain = void 0;
54
+ averageLoss = void 0;
55
+ return Object.freeze({ datum, sourceIndex, rsi: null });
56
+ }
57
+ if (previous === void 0) {
58
+ previous = value;
59
+ return Object.freeze({ datum, sourceIndex, rsi: null });
60
+ }
61
+ const change = value - previous;
62
+ if (!Number.isFinite(change))
63
+ throw new RangeError("RSI change must be finite.");
64
+ previous = value;
65
+ const gain = Math.max(change, 0), loss = Math.max(-change, 0);
66
+ if (averageGain === void 0 || averageLoss === void 0) {
67
+ gains.push(gain);
68
+ losses.push(loss);
69
+ if (gains.length < options.period)
70
+ return Object.freeze({ datum, sourceIndex, rsi: null });
71
+ averageGain = mean(gains);
72
+ averageLoss = mean(losses);
73
+ } else {
74
+ averageGain = weighted(averageGain, gain, 1 / options.period);
75
+ averageLoss = weighted(averageLoss, loss, 1 / options.period);
76
+ }
77
+ const rsi = averageGain === 0 && averageLoss === 0 ? 50 : averageLoss === 0 ? 100 : averageGain === 0 ? 0 : 100 - 100 / (1 + averageGain / averageLoss);
78
+ if (!Number.isFinite(rsi))
79
+ throw new RangeError("RSI derived value must be finite.");
80
+ return Object.freeze({ datum, sourceIndex, rsi });
81
+ })
82
+ );
83
+ }
84
+ function movingAverageConvergenceDivergence(data, options) {
85
+ positivePeriod(options.fastPeriod, "MACD fastPeriod");
86
+ positivePeriod(options.slowPeriod, "MACD slowPeriod");
87
+ positivePeriod(options.signalPeriod, "MACD signalPeriod");
88
+ if (options.fastPeriod >= options.slowPeriod)
89
+ throw new RangeError("MACD fastPeriod must be less than slowPeriod.");
90
+ const values = oscillatorValues(data, options);
91
+ const fastSeed = [], slowSeed = [], signalSeed = [];
92
+ const fastAlpha = 2 / (options.fastPeriod + 1), slowAlpha = 2 / (options.slowPeriod + 1);
93
+ const signalAlpha = 2 / (options.signalPeriod + 1);
94
+ let fast, slow, signal;
95
+ const reset = () => {
96
+ fastSeed.length = 0;
97
+ slowSeed.length = 0;
98
+ signalSeed.length = 0;
99
+ fast = void 0;
100
+ slow = void 0;
101
+ signal = void 0;
102
+ };
103
+ return Object.freeze(
104
+ data.map((datum, sourceIndex) => {
105
+ const value = values[sourceIndex];
106
+ if (value === null) {
107
+ reset();
108
+ return Object.freeze({
109
+ datum,
110
+ sourceIndex,
111
+ macd: null,
112
+ signal: null,
113
+ histogram: null
114
+ });
115
+ }
116
+ if (fast === void 0) {
117
+ fastSeed.push(value);
118
+ if (fastSeed.length === options.fastPeriod) fast = mean(fastSeed);
119
+ } else fast = weighted(fast, value, fastAlpha);
120
+ if (slow === void 0) {
121
+ slowSeed.push(value);
122
+ if (slowSeed.length === options.slowPeriod) slow = mean(slowSeed);
123
+ } else slow = weighted(slow, value, slowAlpha);
124
+ if (fast === void 0 || slow === void 0)
125
+ return Object.freeze({
126
+ datum,
127
+ sourceIndex,
128
+ macd: null,
129
+ signal: null,
130
+ histogram: null
131
+ });
132
+ const macd = fast - slow;
133
+ if (!Number.isFinite(macd))
134
+ throw new RangeError("MACD derived value must be finite.");
135
+ if (signal === void 0) {
136
+ signalSeed.push(macd);
137
+ if (signalSeed.length === options.signalPeriod)
138
+ signal = mean(signalSeed);
139
+ } else signal = weighted(signal, macd, signalAlpha);
140
+ const histogram = signal === void 0 ? null : macd - signal;
141
+ if (histogram !== null && !Number.isFinite(histogram))
142
+ throw new RangeError("MACD histogram must be finite.");
143
+ return Object.freeze({
144
+ datum,
145
+ sourceIndex,
146
+ macd,
147
+ signal: signal ?? null,
148
+ histogram
149
+ });
150
+ })
151
+ );
152
+ }
153
+ function stochasticValues(data, options) {
154
+ const rows = pointData(data, "stochastic oscillator");
155
+ const high = pointAccessor(options.high), low = pointAccessor(options.low), close = pointAccessor(options.close);
156
+ return Object.freeze(
157
+ rows.map((datum, index) => {
158
+ if (!(options.defined?.(datum, index, rows) ?? true)) return null;
159
+ const highValue = high(datum, index, rows);
160
+ const lowValue = low(datum, index, rows);
161
+ const closeValue = close(datum, index, rows);
162
+ if (!finiteCoordinate(highValue) || !finiteCoordinate(lowValue) || !finiteCoordinate(closeValue))
163
+ return null;
164
+ const values = {
165
+ high: highValue,
166
+ low: lowValue,
167
+ close: closeValue
168
+ };
169
+ if (values.low > values.high || values.close < values.low || values.close > values.high)
170
+ throw new RangeError(
171
+ "stochastic oscillator requires low <= close <= high."
172
+ );
173
+ return Object.freeze(values);
174
+ })
175
+ );
176
+ }
177
+ function stochasticOscillator(data, options) {
178
+ positivePeriod(options.lookbackPeriod, "stochastic lookbackPeriod");
179
+ positivePeriod(options.kPeriod, "stochastic kPeriod");
180
+ positivePeriod(options.dPeriod, "stochastic dPeriod");
181
+ const values = stochasticValues(data, options);
182
+ const window = [], kValues = [], dValues = [];
183
+ const reset = () => {
184
+ window.length = 0;
185
+ kValues.length = 0;
186
+ dValues.length = 0;
187
+ };
188
+ const resetSmoothing = () => {
189
+ kValues.length = 0;
190
+ dValues.length = 0;
191
+ };
192
+ return Object.freeze(
193
+ data.map((datum, sourceIndex) => {
194
+ const value = values[sourceIndex];
195
+ if (value === null) {
196
+ reset();
197
+ return Object.freeze({
198
+ datum,
199
+ sourceIndex,
200
+ rawK: null,
201
+ k: null,
202
+ d: null
203
+ });
204
+ }
205
+ window.push(value);
206
+ if (window.length > options.lookbackPeriod) window.shift();
207
+ if (window.length < options.lookbackPeriod)
208
+ return Object.freeze({
209
+ datum,
210
+ sourceIndex,
211
+ rawK: null,
212
+ k: null,
213
+ d: null
214
+ });
215
+ let high = -Infinity, low = Infinity;
216
+ for (const row of window) {
217
+ high = Math.max(high, row.high);
218
+ low = Math.min(low, row.low);
219
+ }
220
+ const scale = Math.max(
221
+ Math.abs(high),
222
+ Math.abs(low),
223
+ Math.abs(value.close)
224
+ );
225
+ if (scale === 0) {
226
+ resetSmoothing();
227
+ return Object.freeze({
228
+ datum,
229
+ sourceIndex,
230
+ rawK: null,
231
+ k: null,
232
+ d: null
233
+ });
234
+ }
235
+ const scaledLow = low / scale;
236
+ const scaledRange = high / scale - scaledLow;
237
+ if (scaledRange === 0) {
238
+ resetSmoothing();
239
+ return Object.freeze({
240
+ datum,
241
+ sourceIndex,
242
+ rawK: null,
243
+ k: null,
244
+ d: null
245
+ });
246
+ }
247
+ const rawK = (value.close / scale - scaledLow) / scaledRange * 100;
248
+ if (!Number.isFinite(rawK))
249
+ throw new RangeError("stochastic %K must be finite.");
250
+ rollingPush(kValues, rawK, options.kPeriod);
251
+ const k = kValues.length === options.kPeriod ? mean(kValues) : null;
252
+ if (k === null)
253
+ return Object.freeze({ datum, sourceIndex, rawK, k: null, d: null });
254
+ rollingPush(dValues, k, options.dPeriod);
255
+ const d = dValues.length === options.dPeriod ? mean(dValues) : null;
256
+ return Object.freeze({ datum, sourceIndex, rawK, k, d });
257
+ })
258
+ );
259
+ }
260
+ export {
261
+ movingAverageConvergenceDivergence,
262
+ relativeStrengthIndex,
263
+ stochasticOscillator
264
+ };
265
+ //# sourceMappingURL=financial-oscillators.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/features/viz/lib/financial-oscillators.ts"],
4
+ "sourcesContent": ["import type { LineAccessor } from \"./types.js\";\nimport { finiteCoordinate, pointAccessor, pointData } from \"./point-data.js\";\n\n/**\n * Shared inputs for source-aligned closing-price oscillators.\n *\n * @see {@link RelativeStrengthIndexPoint}\n * @see {@link MovingAverageConvergenceDivergencePoint}\n */\nexport interface OscillatorOptions<D> {\n /**\n * Numeric property or callback that supplies each closing observation.\n *\n * @see {@link LineAccessor}\n */\n readonly value: LineAccessor<D>;\n /**\n * Excludes a row before its accessor runs and resets the current warmup.\n *\n * @param datum - Source observation under consideration.\n * @param index - Zero-based source index.\n * @param data - Complete caller-supplied source data.\n * @returns Whether the observation participates in the consecutive calculation.\n * @see {@link LineAccessor}\n */\n readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;\n}\n\n/**\n * Inputs for Wilder's relative strength index.\n *\n * @see {@link OscillatorOptions}\n * @see {@link RelativeStrengthIndexPoint}\n */\nexport interface RelativeStrengthIndexOptions<D> extends OscillatorOptions<D> {\n /**\n * Positive safe number of consecutive price changes used by Wilder smoothing.\n *\n * @see {@link relativeStrengthIndex}\n */\n readonly period: number;\n}\n\n/**\n * Inputs for moving average convergence/divergence.\n *\n * @see {@link OscillatorOptions}\n * @see {@link MovingAverageConvergenceDivergencePoint}\n */\nexport interface MovingAverageConvergenceDivergenceOptions<\n D,\n> extends OscillatorOptions<D> {\n /** Positive safe EMA period shorter than slowPeriod. */\n readonly fastPeriod: number;\n /** Positive safe EMA period longer than fastPeriod. */\n readonly slowPeriod: number;\n /** Positive safe EMA period used to smooth available MACD observations. */\n readonly signalPeriod: number;\n}\n\n/**\n * Inputs for the rolling stochastic oscillator.\n *\n * @see {@link StochasticOscillatorPoint}\n * @see {@link LineAccessor}\n */\nexport interface StochasticOscillatorOptions<D> {\n /** Numeric property or callback that supplies each high. See {@link LineAccessor}. */\n readonly high: LineAccessor<D>;\n /** Numeric property or callback that supplies each low. See {@link LineAccessor}. */\n readonly low: LineAccessor<D>;\n /** Numeric property or callback that supplies each close. See {@link LineAccessor}. */\n readonly close: LineAccessor<D>;\n /** Positive safe count of consecutive OHLC rows in the raw %K range. */\n readonly lookbackPeriod: number;\n /** Positive safe count of raw %K values in the smoothed %K average. */\n readonly kPeriod: number;\n /** Positive safe count of smoothed %K values in the %D average. */\n readonly dPeriod: number;\n /**\n * Excludes a row before its accessors run and resets all oscillator warmup.\n *\n * @param datum - Source observation under consideration.\n * @param index - Zero-based source index.\n * @param data - Complete caller-supplied source data.\n * @returns Whether the observation participates in consecutive windows.\n * @see {@link LineAccessor}\n */\n readonly defined?: (datum: D, index: number, data: readonly D[]) => boolean;\n}\n\n/**\n * One source-aligned relative strength index observation.\n *\n * @see {@link RelativeStrengthIndexOptions}\n */\nexport interface RelativeStrengthIndexPoint<D> {\n /** Caller-owned original observation. */\n readonly datum: D;\n /** Original source index, including rows that become gaps. */\n readonly sourceIndex: number;\n /** Wilder RSI from zero through 100, or null during warmup and gaps. */\n readonly rsi: number | null;\n}\n\n/**\n * One source-aligned moving average convergence/divergence observation.\n *\n * @see {@link MovingAverageConvergenceDivergenceOptions}\n */\nexport interface MovingAverageConvergenceDivergencePoint<D> {\n /** Caller-owned original observation. */\n readonly datum: D;\n /** Original source index, including rows that become gaps. */\n readonly sourceIndex: number;\n /** Fast EMA minus slow EMA, or null before both are seeded. */\n readonly macd: number | null;\n /** EMA of available MACD values, or null during signal warmup. */\n readonly signal: number | null;\n /** MACD minus its signal, or null before the signal is available. */\n readonly histogram: number | null;\n}\n\n/**\n * One source-aligned stochastic oscillator observation.\n *\n * @see {@link StochasticOscillatorOptions}\n */\nexport interface StochasticOscillatorPoint<D> {\n /** Caller-owned original observation. */\n readonly datum: D;\n /** Original source index, including rows that become gaps. */\n readonly sourceIndex: number;\n /** Unsmoothed %K from zero through 100, or null during warmup/a zero range. */\n readonly rawK: number | null;\n /** SMA-smoothed %K, or null during warmup/a zero range. */\n readonly k: number | null;\n /** SMA of smoothed %K, or null during warmup/a zero range. */\n readonly d: number | null;\n}\n\nfunction positivePeriod(period: number, name: string): void {\n if (!Number.isSafeInteger(period) || period <= 0)\n throw new RangeError(`${name} must be a positive safe integer.`);\n}\n\nfunction mean(values: readonly number[]): number {\n let scale = 0;\n for (const value of values) scale = Math.max(scale, Math.abs(value));\n if (scale === 0) return 0;\n let sum = 0;\n for (const value of values) sum += value / scale;\n const result = (sum / values.length) * scale;\n if (!Number.isFinite(result))\n throw new RangeError(\"oscillator derived value must be finite.\");\n return result;\n}\n\nfunction weighted(previous: number, next: number, alpha: number): number {\n const scale = Math.max(Math.abs(previous), Math.abs(next));\n if (scale === 0) return 0;\n const result =\n ((previous / scale) * (1 - alpha) + (next / scale) * alpha) * scale;\n if (!Number.isFinite(result))\n throw new RangeError(\"oscillator derived value must be finite.\");\n return result;\n}\n\nfunction rollingPush(values: number[], value: number, period: number): void {\n values.push(value);\n if (values.length > period) values.shift();\n}\n\nfunction oscillatorValues<D>(\n data: readonly D[],\n options: OscillatorOptions<D>,\n): readonly (number | null)[] {\n const rows = pointData(data, \"oscillator\");\n const value = pointAccessor(options.value);\n return Object.freeze(\n rows.map((datum, index) => {\n if (!(options.defined?.(datum, index, rows) ?? true)) return null;\n const observed = value(datum, index, rows);\n return finiteCoordinate(observed) ? observed : null;\n }),\n );\n}\n\n/**\n * Derives source-aligned Wilder relative strength index observations.\n *\n * The first RSI follows a full `period` of consecutive price changes, requiring `period + 1`\n * consecutive prices. Flat average gain/loss yields 50; gain-only yields 100 and loss-only yields\n * 0. Missing, nonfinite, and excluded rows produce null and reset the seed.\n *\n * @param data - Source observations, retained in their original order.\n * @param options - Closing value accessor, Wilder period, and optional participation callback.\n * @returns Frozen source-aligned RSI observations.\n * @see {@link RelativeStrengthIndexOptions}\n * @see {@link RelativeStrengthIndexPoint}\n */\nexport function relativeStrengthIndex<D>(\n data: readonly D[],\n options: RelativeStrengthIndexOptions<D>,\n): readonly RelativeStrengthIndexPoint<D>[] {\n positivePeriod(options.period, \"RSI period\");\n const values = oscillatorValues(data, options);\n const gains: number[] = [],\n losses: number[] = [];\n let previous: number | undefined;\n let averageGain: number | undefined, averageLoss: number | undefined;\n return Object.freeze(\n data.map((datum, sourceIndex) => {\n const value = values[sourceIndex];\n if (value === null) {\n gains.length = 0;\n losses.length = 0;\n previous = undefined;\n averageGain = undefined;\n averageLoss = undefined;\n return Object.freeze({ datum, sourceIndex, rsi: null });\n }\n if (previous === undefined) {\n previous = value;\n return Object.freeze({ datum, sourceIndex, rsi: null });\n }\n const change = value - previous;\n if (!Number.isFinite(change))\n throw new RangeError(\"RSI change must be finite.\");\n previous = value;\n const gain = Math.max(change, 0),\n loss = Math.max(-change, 0);\n if (averageGain === undefined || averageLoss === undefined) {\n gains.push(gain);\n losses.push(loss);\n if (gains.length < options.period)\n return Object.freeze({ datum, sourceIndex, rsi: null });\n averageGain = mean(gains);\n averageLoss = mean(losses);\n } else {\n averageGain = weighted(averageGain, gain, 1 / options.period);\n averageLoss = weighted(averageLoss, loss, 1 / options.period);\n }\n const rsi =\n averageGain === 0 && averageLoss === 0\n ? 50\n : averageLoss === 0\n ? 100\n : averageGain === 0\n ? 0\n : 100 - 100 / (1 + averageGain / averageLoss);\n if (!Number.isFinite(rsi))\n throw new RangeError(\"RSI derived value must be finite.\");\n return Object.freeze({ datum, sourceIndex, rsi });\n }),\n );\n}\n\n/**\n * Derives source-aligned MACD, signal, and histogram observations from SMA-seeded EMAs.\n *\n * Missing, nonfinite, and excluded rows produce null fields and reset all EMA warmup. The MACD\n * value appears once both price EMAs are seeded; signal and histogram wait for their own EMA seed.\n *\n * @param data - Source observations, retained in their original order.\n * @param options - Closing value accessor, ordered EMA periods, and participation callback.\n * @returns Frozen source-aligned MACD observations.\n * @see {@link MovingAverageConvergenceDivergenceOptions}\n * @see {@link MovingAverageConvergenceDivergencePoint}\n */\nexport function movingAverageConvergenceDivergence<D>(\n data: readonly D[],\n options: MovingAverageConvergenceDivergenceOptions<D>,\n): readonly MovingAverageConvergenceDivergencePoint<D>[] {\n positivePeriod(options.fastPeriod, \"MACD fastPeriod\");\n positivePeriod(options.slowPeriod, \"MACD slowPeriod\");\n positivePeriod(options.signalPeriod, \"MACD signalPeriod\");\n if (options.fastPeriod >= options.slowPeriod)\n throw new RangeError(\"MACD fastPeriod must be less than slowPeriod.\");\n const values = oscillatorValues(data, options);\n const fastSeed: number[] = [],\n slowSeed: number[] = [],\n signalSeed: number[] = [];\n const fastAlpha = 2 / (options.fastPeriod + 1),\n slowAlpha = 2 / (options.slowPeriod + 1);\n const signalAlpha = 2 / (options.signalPeriod + 1);\n let fast: number | undefined,\n slow: number | undefined,\n signal: number | undefined;\n const reset = () => {\n fastSeed.length = 0;\n slowSeed.length = 0;\n signalSeed.length = 0;\n fast = undefined;\n slow = undefined;\n signal = undefined;\n };\n return Object.freeze(\n data.map((datum, sourceIndex) => {\n const value = values[sourceIndex];\n if (value === null) {\n reset();\n return Object.freeze({\n datum,\n sourceIndex,\n macd: null,\n signal: null,\n histogram: null,\n });\n }\n if (fast === undefined) {\n fastSeed.push(value);\n if (fastSeed.length === options.fastPeriod) fast = mean(fastSeed);\n } else fast = weighted(fast, value, fastAlpha);\n if (slow === undefined) {\n slowSeed.push(value);\n if (slowSeed.length === options.slowPeriod) slow = mean(slowSeed);\n } else slow = weighted(slow, value, slowAlpha);\n if (fast === undefined || slow === undefined)\n return Object.freeze({\n datum,\n sourceIndex,\n macd: null,\n signal: null,\n histogram: null,\n });\n const macd = fast - slow;\n if (!Number.isFinite(macd))\n throw new RangeError(\"MACD derived value must be finite.\");\n if (signal === undefined) {\n signalSeed.push(macd);\n if (signalSeed.length === options.signalPeriod)\n signal = mean(signalSeed);\n } else signal = weighted(signal, macd, signalAlpha);\n const histogram = signal === undefined ? null : macd - signal;\n if (histogram !== null && !Number.isFinite(histogram))\n throw new RangeError(\"MACD histogram must be finite.\");\n return Object.freeze({\n datum,\n sourceIndex,\n macd,\n signal: signal ?? null,\n histogram,\n });\n }),\n );\n}\n\ninterface OhlcValue {\n readonly high: number;\n readonly low: number;\n readonly close: number;\n}\n\nfunction stochasticValues<D>(\n data: readonly D[],\n options: StochasticOscillatorOptions<D>,\n): readonly (OhlcValue | null)[] {\n const rows = pointData(data, \"stochastic oscillator\");\n const high = pointAccessor(options.high),\n low = pointAccessor(options.low),\n close = pointAccessor(options.close);\n return Object.freeze(\n rows.map((datum, index) => {\n if (!(options.defined?.(datum, index, rows) ?? true)) return null;\n const highValue = high(datum, index, rows);\n const lowValue = low(datum, index, rows);\n const closeValue = close(datum, index, rows);\n if (\n !finiteCoordinate(highValue) ||\n !finiteCoordinate(lowValue) ||\n !finiteCoordinate(closeValue)\n )\n return null;\n const values: OhlcValue = {\n high: highValue,\n low: lowValue,\n close: closeValue,\n };\n if (\n values.low > values.high ||\n values.close < values.low ||\n values.close > values.high\n )\n throw new RangeError(\n \"stochastic oscillator requires low <= close <= high.\",\n );\n return Object.freeze(values);\n }),\n );\n}\n\n/**\n * Derives source-aligned rolling stochastic %K, smoothed %K, and %D observations.\n *\n * %K uses the trailing high/low range. A zero range yields null raw %K and resets only the %K/%D\n * smoothing warmup, while its complete OHLC row remains in the rolling range. Missing, nonfinite,\n * and excluded rows reset every window; malformed finite candles reject.\n *\n * @param data - Source OHLC observations, retained in their original order.\n * @param options - OHLC accessors, rolling periods, and optional participation callback.\n * @returns Frozen source-aligned stochastic oscillator observations.\n * @see {@link StochasticOscillatorOptions}\n * @see {@link StochasticOscillatorPoint}\n */\nexport function stochasticOscillator<D>(\n data: readonly D[],\n options: StochasticOscillatorOptions<D>,\n): readonly StochasticOscillatorPoint<D>[] {\n positivePeriod(options.lookbackPeriod, \"stochastic lookbackPeriod\");\n positivePeriod(options.kPeriod, \"stochastic kPeriod\");\n positivePeriod(options.dPeriod, \"stochastic dPeriod\");\n const values = stochasticValues(data, options);\n const window: OhlcValue[] = [],\n kValues: number[] = [],\n dValues: number[] = [];\n const reset = () => {\n window.length = 0;\n kValues.length = 0;\n dValues.length = 0;\n };\n const resetSmoothing = () => {\n kValues.length = 0;\n dValues.length = 0;\n };\n return Object.freeze(\n data.map((datum, sourceIndex) => {\n const value = values[sourceIndex];\n if (value === null) {\n reset();\n return Object.freeze({\n datum,\n sourceIndex,\n rawK: null,\n k: null,\n d: null,\n });\n }\n window.push(value);\n if (window.length > options.lookbackPeriod) window.shift();\n if (window.length < options.lookbackPeriod)\n return Object.freeze({\n datum,\n sourceIndex,\n rawK: null,\n k: null,\n d: null,\n });\n let high = -Infinity,\n low = Infinity;\n for (const row of window) {\n high = Math.max(high, row.high);\n low = Math.min(low, row.low);\n }\n const scale = Math.max(\n Math.abs(high),\n Math.abs(low),\n Math.abs(value.close),\n );\n if (scale === 0) {\n resetSmoothing();\n return Object.freeze({\n datum,\n sourceIndex,\n rawK: null,\n k: null,\n d: null,\n });\n }\n const scaledLow = low / scale;\n const scaledRange = high / scale - scaledLow;\n if (scaledRange === 0) {\n resetSmoothing();\n return Object.freeze({\n datum,\n sourceIndex,\n rawK: null,\n k: null,\n d: null,\n });\n }\n const rawK = ((value.close / scale - scaledLow) / scaledRange) * 100;\n if (!Number.isFinite(rawK))\n throw new RangeError(\"stochastic %K must be finite.\");\n rollingPush(kValues, rawK, options.kPeriod);\n const k = kValues.length === options.kPeriod ? mean(kValues) : null;\n if (k === null)\n return Object.freeze({ datum, sourceIndex, rawK, k: null, d: null });\n rollingPush(dValues, k, options.dPeriod);\n const d = dValues.length === options.dPeriod ? mean(dValues) : null;\n return Object.freeze({ datum, sourceIndex, rawK, k, d });\n }),\n );\n}\n"],
5
+ "mappings": "AACA,SAAS,kBAAkB,eAAe,iBAAiB;AA4I3D,SAAS,eAAe,QAAgB,MAAoB;AAC1D,MAAI,CAAC,OAAO,cAAc,MAAM,KAAK,UAAU;AAC7C,UAAM,IAAI,WAAW,GAAG,IAAI,mCAAmC;AACnE;AAEA,SAAS,KAAK,QAAmC;AAC/C,MAAI,QAAQ;AACZ,aAAW,SAAS,OAAQ,SAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,KAAK,CAAC;AACnE,MAAI,UAAU,EAAG,QAAO;AACxB,MAAI,MAAM;AACV,aAAW,SAAS,OAAQ,QAAO,QAAQ;AAC3C,QAAM,SAAU,MAAM,OAAO,SAAU;AACvC,MAAI,CAAC,OAAO,SAAS,MAAM;AACzB,UAAM,IAAI,WAAW,0CAA0C;AACjE,SAAO;AACT;AAEA,SAAS,SAAS,UAAkB,MAAc,OAAuB;AACvE,QAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC;AACzD,MAAI,UAAU,EAAG,QAAO;AACxB,QAAM,UACF,WAAW,SAAU,IAAI,SAAU,OAAO,QAAS,SAAS;AAChE,MAAI,CAAC,OAAO,SAAS,MAAM;AACzB,UAAM,IAAI,WAAW,0CAA0C;AACjE,SAAO;AACT;AAEA,SAAS,YAAY,QAAkB,OAAe,QAAsB;AAC1E,SAAO,KAAK,KAAK;AACjB,MAAI,OAAO,SAAS,OAAQ,QAAO,MAAM;AAC3C;AAEA,SAAS,iBACP,MACA,SAC4B;AAC5B,QAAM,OAAO,UAAU,MAAM,YAAY;AACzC,QAAM,QAAQ,cAAc,QAAQ,KAAK;AACzC,SAAO,OAAO;AAAA,IACZ,KAAK,IAAI,CAAC,OAAO,UAAU;AACzB,UAAI,EAAE,QAAQ,UAAU,OAAO,OAAO,IAAI,KAAK,MAAO,QAAO;AAC7D,YAAM,WAAW,MAAM,OAAO,OAAO,IAAI;AACzC,aAAO,iBAAiB,QAAQ,IAAI,WAAW;AAAA,IACjD,CAAC;AAAA,EACH;AACF;AAeO,SAAS,sBACd,MACA,SAC0C;AAC1C,iBAAe,QAAQ,QAAQ,YAAY;AAC3C,QAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,QAAM,QAAkB,CAAC,GACvB,SAAmB,CAAC;AACtB,MAAI;AACJ,MAAI,aAAiC;AACrC,SAAO,OAAO;AAAA,IACZ,KAAK,IAAI,CAAC,OAAO,gBAAgB;AAC/B,YAAM,QAAQ,OAAO,WAAW;AAChC,UAAI,UAAU,MAAM;AAClB,cAAM,SAAS;AACf,eAAO,SAAS;AAChB,mBAAW;AACX,sBAAc;AACd,sBAAc;AACd,eAAO,OAAO,OAAO,EAAE,OAAO,aAAa,KAAK,KAAK,CAAC;AAAA,MACxD;AACA,UAAI,aAAa,QAAW;AAC1B,mBAAW;AACX,eAAO,OAAO,OAAO,EAAE,OAAO,aAAa,KAAK,KAAK,CAAC;AAAA,MACxD;AACA,YAAM,SAAS,QAAQ;AACvB,UAAI,CAAC,OAAO,SAAS,MAAM;AACzB,cAAM,IAAI,WAAW,4BAA4B;AACnD,iBAAW;AACX,YAAM,OAAO,KAAK,IAAI,QAAQ,CAAC,GAC7B,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC5B,UAAI,gBAAgB,UAAa,gBAAgB,QAAW;AAC1D,cAAM,KAAK,IAAI;AACf,eAAO,KAAK,IAAI;AAChB,YAAI,MAAM,SAAS,QAAQ;AACzB,iBAAO,OAAO,OAAO,EAAE,OAAO,aAAa,KAAK,KAAK,CAAC;AACxD,sBAAc,KAAK,KAAK;AACxB,sBAAc,KAAK,MAAM;AAAA,MAC3B,OAAO;AACL,sBAAc,SAAS,aAAa,MAAM,IAAI,QAAQ,MAAM;AAC5D,sBAAc,SAAS,aAAa,MAAM,IAAI,QAAQ,MAAM;AAAA,MAC9D;AACA,YAAM,MACJ,gBAAgB,KAAK,gBAAgB,IACjC,KACA,gBAAgB,IACd,MACA,gBAAgB,IACd,IACA,MAAM,OAAO,IAAI,cAAc;AACzC,UAAI,CAAC,OAAO,SAAS,GAAG;AACtB,cAAM,IAAI,WAAW,mCAAmC;AAC1D,aAAO,OAAO,OAAO,EAAE,OAAO,aAAa,IAAI,CAAC;AAAA,IAClD,CAAC;AAAA,EACH;AACF;AAcO,SAAS,mCACd,MACA,SACuD;AACvD,iBAAe,QAAQ,YAAY,iBAAiB;AACpD,iBAAe,QAAQ,YAAY,iBAAiB;AACpD,iBAAe,QAAQ,cAAc,mBAAmB;AACxD,MAAI,QAAQ,cAAc,QAAQ;AAChC,UAAM,IAAI,WAAW,+CAA+C;AACtE,QAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,QAAM,WAAqB,CAAC,GAC1B,WAAqB,CAAC,GACtB,aAAuB,CAAC;AAC1B,QAAM,YAAY,KAAK,QAAQ,aAAa,IAC1C,YAAY,KAAK,QAAQ,aAAa;AACxC,QAAM,cAAc,KAAK,QAAQ,eAAe;AAChD,MAAI,MACF,MACA;AACF,QAAM,QAAQ,MAAM;AAClB,aAAS,SAAS;AAClB,aAAS,SAAS;AAClB,eAAW,SAAS;AACpB,WAAO;AACP,WAAO;AACP,aAAS;AAAA,EACX;AACA,SAAO,OAAO;AAAA,IACZ,KAAK,IAAI,CAAC,OAAO,gBAAgB;AAC/B,YAAM,QAAQ,OAAO,WAAW;AAChC,UAAI,UAAU,MAAM;AAClB,cAAM;AACN,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AACA,UAAI,SAAS,QAAW;AACtB,iBAAS,KAAK,KAAK;AACnB,YAAI,SAAS,WAAW,QAAQ,WAAY,QAAO,KAAK,QAAQ;AAAA,MAClE,MAAO,QAAO,SAAS,MAAM,OAAO,SAAS;AAC7C,UAAI,SAAS,QAAW;AACtB,iBAAS,KAAK,KAAK;AACnB,YAAI,SAAS,WAAW,QAAQ,WAAY,QAAO,KAAK,QAAQ;AAAA,MAClE,MAAO,QAAO,SAAS,MAAM,OAAO,SAAS;AAC7C,UAAI,SAAS,UAAa,SAAS;AACjC,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,WAAW;AAAA,QACb,CAAC;AACH,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,OAAO,SAAS,IAAI;AACvB,cAAM,IAAI,WAAW,oCAAoC;AAC3D,UAAI,WAAW,QAAW;AACxB,mBAAW,KAAK,IAAI;AACpB,YAAI,WAAW,WAAW,QAAQ;AAChC,mBAAS,KAAK,UAAU;AAAA,MAC5B,MAAO,UAAS,SAAS,QAAQ,MAAM,WAAW;AAClD,YAAM,YAAY,WAAW,SAAY,OAAO,OAAO;AACvD,UAAI,cAAc,QAAQ,CAAC,OAAO,SAAS,SAAS;AAClD,cAAM,IAAI,WAAW,gCAAgC;AACvD,aAAO,OAAO,OAAO;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAQA,SAAS,iBACP,MACA,SAC+B;AAC/B,QAAM,OAAO,UAAU,MAAM,uBAAuB;AACpD,QAAM,OAAO,cAAc,QAAQ,IAAI,GACrC,MAAM,cAAc,QAAQ,GAAG,GAC/B,QAAQ,cAAc,QAAQ,KAAK;AACrC,SAAO,OAAO;AAAA,IACZ,KAAK,IAAI,CAAC,OAAO,UAAU;AACzB,UAAI,EAAE,QAAQ,UAAU,OAAO,OAAO,IAAI,KAAK,MAAO,QAAO;AAC7D,YAAM,YAAY,KAAK,OAAO,OAAO,IAAI;AACzC,YAAM,WAAW,IAAI,OAAO,OAAO,IAAI;AACvC,YAAM,aAAa,MAAM,OAAO,OAAO,IAAI;AAC3C,UACE,CAAC,iBAAiB,SAAS,KAC3B,CAAC,iBAAiB,QAAQ,KAC1B,CAAC,iBAAiB,UAAU;AAE5B,eAAO;AACT,YAAM,SAAoB;AAAA,QACxB,MAAM;AAAA,QACN,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AACA,UACE,OAAO,MAAM,OAAO,QACpB,OAAO,QAAQ,OAAO,OACtB,OAAO,QAAQ,OAAO;AAEtB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AACF,aAAO,OAAO,OAAO,MAAM;AAAA,IAC7B,CAAC;AAAA,EACH;AACF;AAeO,SAAS,qBACd,MACA,SACyC;AACzC,iBAAe,QAAQ,gBAAgB,2BAA2B;AAClE,iBAAe,QAAQ,SAAS,oBAAoB;AACpD,iBAAe,QAAQ,SAAS,oBAAoB;AACpD,QAAM,SAAS,iBAAiB,MAAM,OAAO;AAC7C,QAAM,SAAsB,CAAC,GAC3B,UAAoB,CAAC,GACrB,UAAoB,CAAC;AACvB,QAAM,QAAQ,MAAM;AAClB,WAAO,SAAS;AAChB,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA,EACnB;AACA,QAAM,iBAAiB,MAAM;AAC3B,YAAQ,SAAS;AACjB,YAAQ,SAAS;AAAA,EACnB;AACA,SAAO,OAAO;AAAA,IACZ,KAAK,IAAI,CAAC,OAAO,gBAAgB;AAC/B,YAAM,QAAQ,OAAO,WAAW;AAChC,UAAI,UAAU,MAAM;AAClB,cAAM;AACN,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AACA,aAAO,KAAK,KAAK;AACjB,UAAI,OAAO,SAAS,QAAQ,eAAgB,QAAO,MAAM;AACzD,UAAI,OAAO,SAAS,QAAQ;AAC1B,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AACH,UAAI,OAAO,WACT,MAAM;AACR,iBAAW,OAAO,QAAQ;AACxB,eAAO,KAAK,IAAI,MAAM,IAAI,IAAI;AAC9B,cAAM,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,MAC7B;AACA,YAAM,QAAQ,KAAK;AAAA,QACjB,KAAK,IAAI,IAAI;AAAA,QACb,KAAK,IAAI,GAAG;AAAA,QACZ,KAAK,IAAI,MAAM,KAAK;AAAA,MACtB;AACA,UAAI,UAAU,GAAG;AACf,uBAAe;AACf,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AACA,YAAM,YAAY,MAAM;AACxB,YAAM,cAAc,OAAO,QAAQ;AACnC,UAAI,gBAAgB,GAAG;AACrB,uBAAe;AACf,eAAO,OAAO,OAAO;AAAA,UACnB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAG;AAAA,UACH,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AACA,YAAM,QAAS,MAAM,QAAQ,QAAQ,aAAa,cAAe;AACjE,UAAI,CAAC,OAAO,SAAS,IAAI;AACvB,cAAM,IAAI,WAAW,+BAA+B;AACtD,kBAAY,SAAS,MAAM,QAAQ,OAAO;AAC1C,YAAM,IAAI,QAAQ,WAAW,QAAQ,UAAU,KAAK,OAAO,IAAI;AAC/D,UAAI,MAAM;AACR,eAAO,OAAO,OAAO,EAAE,OAAO,aAAa,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACrE,kBAAY,SAAS,GAAG,QAAQ,OAAO;AACvC,YAAM,IAAI,QAAQ,WAAW,QAAQ,UAAU,KAAK,OAAO,IAAI;AAC/D,aAAO,OAAO,OAAO,EAAE,OAAO,aAAa,MAAM,GAAG,EAAE,CAAC;AAAA,IACzD,CAAC;AAAA,EACH;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,14 @@
1
+ import type { PibblNode } from "@pibbl/core";
2
+ import type { BipartiteData, BipartiteGraphProps, BipartiteLayout, BipartiteOptions } from "./types.js";
3
+ /** Arranges two explicit entity sets in columns, retaining side-qualified identity.
4
+ * @param graph - Explicit left and right entities with cross-set edges. See {@link BipartiteData}.
5
+ * @param options - Accessors, dimensions, and column spacing. See {@link BipartiteOptions}.
6
+ * @returns Immutable side-aware nodes and routed edges. See {@link BipartiteLayout}.
7
+ */
8
+ export declare function layoutBipartite<L, R, E>(graph: BipartiteData<L, R, E>, options: BipartiteOptions<L, R, E>): BipartiteLayout<L, R, E>;
9
+ /** Render left/right entity sets and their cross-set relationships.
10
+ * @param props - Entity data and presentation.
11
+ * @returns Canvas node.
12
+ * @see {@link layoutBipartite}
13
+ */
14
+ export declare function BipartiteGraph<L, R, E>(props: BipartiteGraphProps<L, R, E>): PibblNode;