@invinite-org/chartlang-runtime 1.1.0 → 1.2.0

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 (616) hide show
  1. package/CHANGELOG.md +245 -0
  2. package/README.md +1 -2
  3. package/dist/barPoint.d.ts +20 -0
  4. package/dist/barPoint.d.ts.map +1 -0
  5. package/dist/barPoint.js +72 -0
  6. package/dist/barPoint.js.map +1 -0
  7. package/dist/bufferSnapshot.d.ts +102 -0
  8. package/dist/bufferSnapshot.d.ts.map +1 -0
  9. package/dist/bufferSnapshot.js +119 -0
  10. package/dist/bufferSnapshot.js.map +1 -0
  11. package/dist/buildComputeContext.js.map +1 -1
  12. package/dist/createScriptRunner.d.ts +6 -3
  13. package/dist/createScriptRunner.d.ts.map +1 -1
  14. package/dist/createScriptRunner.js +29 -5
  15. package/dist/createScriptRunner.js.map +1 -1
  16. package/dist/dep/DepOutputStore.js.map +1 -1
  17. package/dist/dep/DepRunner.d.ts.map +1 -1
  18. package/dist/dep/DepRunner.js +1 -0
  19. package/dist/dep/DepRunner.js.map +1 -1
  20. package/dist/dep/depOutput.js.map +1 -1
  21. package/dist/dep/emissionFilter.js.map +1 -1
  22. package/dist/dep/index.js.map +1 -1
  23. package/dist/emit/alert.js.map +1 -1
  24. package/dist/emit/alertConditionEmission.js.map +1 -1
  25. package/dist/emit/applyPlotOverride.js.map +1 -1
  26. package/dist/emit/draw/annotations/arrow.js +1 -1
  27. package/dist/emit/draw/annotations/arrow.js.map +1 -1
  28. package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
  29. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
  30. package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
  31. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
  32. package/dist/emit/draw/annotations/arrowMarker.js +1 -1
  33. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
  34. package/dist/emit/draw/annotations/text.js +1 -1
  35. package/dist/emit/draw/annotations/text.js.map +1 -1
  36. package/dist/emit/draw/boxes/circle.js +1 -1
  37. package/dist/emit/draw/boxes/circle.js.map +1 -1
  38. package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
  39. package/dist/emit/draw/boxes/ellipse.js +1 -1
  40. package/dist/emit/draw/boxes/ellipse.js.map +1 -1
  41. package/dist/emit/draw/boxes/fillBetween.d.ts +45 -0
  42. package/dist/emit/draw/boxes/fillBetween.d.ts.map +1 -0
  43. package/dist/emit/draw/boxes/fillBetween.js +36 -0
  44. package/dist/emit/draw/boxes/fillBetween.js.map +1 -0
  45. package/dist/emit/draw/boxes/marker.js +1 -1
  46. package/dist/emit/draw/boxes/marker.js.map +1 -1
  47. package/dist/emit/draw/boxes/path.d.ts +1 -1
  48. package/dist/emit/draw/boxes/path.js +1 -1
  49. package/dist/emit/draw/boxes/path.js.map +1 -1
  50. package/dist/emit/draw/boxes/polyline.d.ts +1 -1
  51. package/dist/emit/draw/boxes/polyline.js +1 -1
  52. package/dist/emit/draw/boxes/polyline.js.map +1 -1
  53. package/dist/emit/draw/boxes/rectangle.js +1 -1
  54. package/dist/emit/draw/boxes/rectangle.js.map +1 -1
  55. package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
  56. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
  57. package/dist/emit/draw/boxes/triangle.d.ts +1 -1
  58. package/dist/emit/draw/boxes/triangle.js +1 -1
  59. package/dist/emit/draw/boxes/triangle.js.map +1 -1
  60. package/dist/emit/draw/channels/disjointChannel.js +1 -1
  61. package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
  62. package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
  63. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
  64. package/dist/emit/draw/channels/flatTopBottom.js +1 -1
  65. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
  66. package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
  67. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
  68. package/dist/emit/draw/channels/regressionTrend.js +1 -1
  69. package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
  70. package/dist/emit/draw/channels/trendChannel.js +1 -1
  71. package/dist/emit/draw/channels/trendChannel.js.map +1 -1
  72. package/dist/emit/draw/containers/frame.d.ts +1 -1
  73. package/dist/emit/draw/containers/frame.js +2 -2
  74. package/dist/emit/draw/containers/frame.js.map +1 -1
  75. package/dist/emit/draw/containers/group.d.ts +1 -2
  76. package/dist/emit/draw/containers/group.d.ts.map +1 -1
  77. package/dist/emit/draw/containers/group.js +2 -2
  78. package/dist/emit/draw/containers/group.js.map +1 -1
  79. package/dist/emit/draw/curves/arc.js +1 -1
  80. package/dist/emit/draw/curves/arc.js.map +1 -1
  81. package/dist/emit/draw/curves/brush.js +1 -1
  82. package/dist/emit/draw/curves/brush.js.map +1 -1
  83. package/dist/emit/draw/curves/curve.js +1 -1
  84. package/dist/emit/draw/curves/curve.js.map +1 -1
  85. package/dist/emit/draw/curves/doubleCurve.js +1 -1
  86. package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
  87. package/dist/emit/draw/curves/highlighter.js +1 -1
  88. package/dist/emit/draw/curves/highlighter.js.map +1 -1
  89. package/dist/emit/draw/curves/pen.js +1 -1
  90. package/dist/emit/draw/curves/pen.js.map +1 -1
  91. package/dist/emit/draw/cycles/cyclicLines.js +1 -1
  92. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
  93. package/dist/emit/draw/cycles/sineLine.js +1 -1
  94. package/dist/emit/draw/cycles/sineLine.js.map +1 -1
  95. package/dist/emit/draw/cycles/timeCycles.js +1 -1
  96. package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
  97. package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
  98. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
  99. package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
  100. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
  101. package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
  102. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
  103. package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
  104. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
  105. package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
  106. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
  107. package/dist/emit/draw/fibA/fibChannel.js +1 -1
  108. package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
  109. package/dist/emit/draw/fibA/fibRetracement.js +1 -1
  110. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
  111. package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
  112. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
  113. package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
  114. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
  115. package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
  116. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
  117. package/dist/emit/draw/fibA/fibWedge.js +1 -1
  118. package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
  119. package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
  120. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
  121. package/dist/emit/draw/fibB/fibCircles.js +1 -1
  122. package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
  123. package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
  124. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
  125. package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
  126. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
  127. package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
  128. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
  129. package/dist/emit/draw/fibB/fibSpiral.js +1 -1
  130. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
  131. package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
  132. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
  133. package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
  134. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
  135. package/dist/emit/draw/gann/gannBox.js +1 -1
  136. package/dist/emit/draw/gann/gannBox.js.map +1 -1
  137. package/dist/emit/draw/gann/gannFan.js +1 -1
  138. package/dist/emit/draw/gann/gannFan.js.map +1 -1
  139. package/dist/emit/draw/gann/gannSquare.js +1 -1
  140. package/dist/emit/draw/gann/gannSquare.js.map +1 -1
  141. package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
  142. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
  143. package/dist/emit/draw/handle.d.ts +11 -2
  144. package/dist/emit/draw/handle.d.ts.map +1 -1
  145. package/dist/emit/draw/handle.js +67 -12
  146. package/dist/emit/draw/handle.js.map +1 -1
  147. package/dist/emit/draw/index.js.map +1 -1
  148. package/dist/emit/draw/lines/crossLine.js +1 -1
  149. package/dist/emit/draw/lines/crossLine.js.map +1 -1
  150. package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
  151. package/dist/emit/draw/lines/horizontalLine.js +1 -1
  152. package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
  153. package/dist/emit/draw/lines/horizontalRay.js +1 -1
  154. package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
  155. package/dist/emit/draw/lines/line.d.ts +1 -1
  156. package/dist/emit/draw/lines/line.d.ts.map +1 -1
  157. package/dist/emit/draw/lines/line.js +2 -3
  158. package/dist/emit/draw/lines/line.js.map +1 -1
  159. package/dist/emit/draw/lines/trendAngle.js +1 -1
  160. package/dist/emit/draw/lines/trendAngle.js.map +1 -1
  161. package/dist/emit/draw/lines/verticalLine.js +1 -1
  162. package/dist/emit/draw/lines/verticalLine.js.map +1 -1
  163. package/dist/emit/draw/namespace.d.ts +5 -4
  164. package/dist/emit/draw/namespace.d.ts.map +1 -1
  165. package/dist/emit/draw/namespace.js +7 -4
  166. package/dist/emit/draw/namespace.js.map +1 -1
  167. package/dist/emit/draw/patterns/abcdPattern.js +1 -1
  168. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
  169. package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
  170. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
  171. package/dist/emit/draw/patterns/cypherPattern.js +1 -1
  172. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
  173. package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
  174. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
  175. package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
  176. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
  177. package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
  178. package/dist/emit/draw/patterns/trianglePattern.js +1 -1
  179. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
  180. package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
  181. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
  182. package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
  183. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
  184. package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
  185. package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
  186. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
  187. package/dist/emit/draw/pushDrawing.js.map +1 -1
  188. package/dist/emit/draw/subIdAllocator.d.ts +1 -1
  189. package/dist/emit/draw/subIdAllocator.js +1 -1
  190. package/dist/emit/draw/subIdAllocator.js.map +1 -1
  191. package/dist/emit/draw/table/table.d.ts +1 -1
  192. package/dist/emit/draw/table/table.js.map +1 -1
  193. package/dist/emit/emissionsQueue.js.map +1 -1
  194. package/dist/emit/hash.js.map +1 -1
  195. package/dist/emit/hline.js.map +1 -1
  196. package/dist/emit/index.js.map +1 -1
  197. package/dist/emit/logEmission.js.map +1 -1
  198. package/dist/emit/paneResolver.js.map +1 -1
  199. package/dist/emit/plot.d.ts +7 -0
  200. package/dist/emit/plot.d.ts.map +1 -1
  201. package/dist/emit/plot.js +13 -0
  202. package/dist/emit/plot.js.map +1 -1
  203. package/dist/emit/runtimeError.js.map +1 -1
  204. package/dist/execution/dispose.d.ts.map +1 -1
  205. package/dist/execution/dispose.js +16 -0
  206. package/dist/execution/dispose.js.map +1 -1
  207. package/dist/execution/drain.js.map +1 -1
  208. package/dist/execution/index.js.map +1 -1
  209. package/dist/execution/onBarClose.js.map +1 -1
  210. package/dist/execution/onBarTick.js.map +1 -1
  211. package/dist/execution/onHistory.js.map +1 -1
  212. package/dist/execution/runComputeStep.d.ts.map +1 -1
  213. package/dist/execution/runComputeStep.js +10 -1
  214. package/dist/execution/runComputeStep.js.map +1 -1
  215. package/dist/execution/secondaryStream.js.map +1 -1
  216. package/dist/index.d.ts +1 -1
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +1 -1
  219. package/dist/index.js.map +1 -1
  220. package/dist/inputs/index.js.map +1 -1
  221. package/dist/inputs/resolveInputs.js.map +1 -1
  222. package/dist/internal.js.map +1 -1
  223. package/dist/persistentStateStore.js.map +1 -1
  224. package/dist/persistentStateStore.runtime.d.ts.map +1 -1
  225. package/dist/persistentStateStore.runtime.js +21 -7
  226. package/dist/persistentStateStore.runtime.js.map +1 -1
  227. package/dist/persistentStateStore.validate.js.map +1 -1
  228. package/dist/primitives.js.map +1 -1
  229. package/dist/request/alignHtfSeriesCache.js.map +1 -1
  230. package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
  231. package/dist/request/alignHtfSeriesToLtf.js +2 -2
  232. package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
  233. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
  234. package/dist/request/bucketLtfBarsCache.js.map +1 -1
  235. package/dist/request/index.d.ts +2 -1
  236. package/dist/request/index.d.ts.map +1 -1
  237. package/dist/request/index.js +2 -1
  238. package/dist/request/index.js.map +1 -1
  239. package/dist/request/lowerTf.js.map +1 -1
  240. package/dist/request/pushOnce.js.map +1 -1
  241. package/dist/request/requestNamespace.d.ts.map +1 -1
  242. package/dist/request/requestNamespace.js +16 -3
  243. package/dist/request/requestNamespace.js.map +1 -1
  244. package/dist/request/security.d.ts +20 -1
  245. package/dist/request/security.d.ts.map +1 -1
  246. package/dist/request/security.js +62 -23
  247. package/dist/request/security.js.map +1 -1
  248. package/dist/request/securityExprRunner.d.ts +133 -0
  249. package/dist/request/securityExprRunner.d.ts.map +1 -0
  250. package/dist/request/securityExprRunner.js +235 -0
  251. package/dist/request/securityExprRunner.js.map +1 -0
  252. package/dist/request/streamBars.d.ts +14 -1
  253. package/dist/request/streamBars.d.ts.map +1 -1
  254. package/dist/request/streamBars.js +39 -1
  255. package/dist/request/streamBars.js.map +1 -1
  256. package/dist/ringBuffer.d.ts +2 -2
  257. package/dist/ringBuffer.js +1 -1
  258. package/dist/ringBuffer.js.map +1 -1
  259. package/dist/runtimeContext.d.ts +51 -3
  260. package/dist/runtimeContext.d.ts.map +1 -1
  261. package/dist/runtimeContext.js.map +1 -1
  262. package/dist/seriesView.d.ts +43 -18
  263. package/dist/seriesView.d.ts.map +1 -1
  264. package/dist/seriesView.js +66 -43
  265. package/dist/seriesView.js.map +1 -1
  266. package/dist/state/index.d.ts +2 -1
  267. package/dist/state/index.d.ts.map +1 -1
  268. package/dist/state/index.js +2 -1
  269. package/dist/state/index.js.map +1 -1
  270. package/dist/state/lifecycle.d.ts +40 -0
  271. package/dist/state/lifecycle.d.ts.map +1 -1
  272. package/dist/state/lifecycle.js +53 -0
  273. package/dist/state/lifecycle.js.map +1 -1
  274. package/dist/state/seriesPersistence.d.ts +48 -0
  275. package/dist/state/seriesPersistence.d.ts.map +1 -0
  276. package/dist/state/seriesPersistence.js +87 -0
  277. package/dist/state/seriesPersistence.js.map +1 -0
  278. package/dist/state/seriesSlot.d.ts +105 -0
  279. package/dist/state/seriesSlot.d.ts.map +1 -0
  280. package/dist/state/seriesSlot.js +123 -0
  281. package/dist/state/seriesSlot.js.map +1 -0
  282. package/dist/state/stateNamespace.d.ts.map +1 -1
  283. package/dist/state/stateNamespace.js +28 -0
  284. package/dist/state/stateNamespace.js.map +1 -1
  285. package/dist/state/stateSlot.js.map +1 -1
  286. package/dist/stateStore.d.ts +2 -2
  287. package/dist/stateStore.js.map +1 -1
  288. package/dist/streamState.d.ts +26 -20
  289. package/dist/streamState.d.ts.map +1 -1
  290. package/dist/streamState.js +41 -67
  291. package/dist/streamState.js.map +1 -1
  292. package/dist/ta/adl.js +2 -2
  293. package/dist/ta/adl.js.map +1 -1
  294. package/dist/ta/adr.d.ts +3 -3
  295. package/dist/ta/adr.js +5 -5
  296. package/dist/ta/adr.js.map +1 -1
  297. package/dist/ta/adx.d.ts +3 -2
  298. package/dist/ta/adx.d.ts.map +1 -1
  299. package/dist/ta/adx.js +5 -4
  300. package/dist/ta/adx.js.map +1 -1
  301. package/dist/ta/alma.d.ts +6 -4
  302. package/dist/ta/alma.d.ts.map +1 -1
  303. package/dist/ta/alma.js +21 -8
  304. package/dist/ta/alma.js.map +1 -1
  305. package/dist/ta/anchoredVolumeProfile.js.map +1 -1
  306. package/dist/ta/anchoredVwap.d.ts +1 -1
  307. package/dist/ta/anchoredVwap.js +3 -3
  308. package/dist/ta/anchoredVwap.js.map +1 -1
  309. package/dist/ta/ao.js +2 -2
  310. package/dist/ta/ao.js.map +1 -1
  311. package/dist/ta/aroon.js +2 -2
  312. package/dist/ta/aroon.js.map +1 -1
  313. package/dist/ta/aroonOsc.js +2 -2
  314. package/dist/ta/aroonOsc.js.map +1 -1
  315. package/dist/ta/atr.d.ts +3 -2
  316. package/dist/ta/atr.d.ts.map +1 -1
  317. package/dist/ta/atr.js +5 -4
  318. package/dist/ta/atr.js.map +1 -1
  319. package/dist/ta/barssince.js +1 -1
  320. package/dist/ta/barssince.js.map +1 -1
  321. package/dist/ta/bb.d.ts +3 -2
  322. package/dist/ta/bb.d.ts.map +1 -1
  323. package/dist/ta/bb.js +5 -4
  324. package/dist/ta/bb.js.map +1 -1
  325. package/dist/ta/bbPercentB.js +2 -2
  326. package/dist/ta/bbPercentB.js.map +1 -1
  327. package/dist/ta/bbw.js +2 -2
  328. package/dist/ta/bbw.js.map +1 -1
  329. package/dist/ta/bop.js +2 -2
  330. package/dist/ta/bop.js.map +1 -1
  331. package/dist/ta/cci.js +2 -2
  332. package/dist/ta/cci.js.map +1 -1
  333. package/dist/ta/chaikinOsc.d.ts +3 -2
  334. package/dist/ta/chaikinOsc.d.ts.map +1 -1
  335. package/dist/ta/chaikinOsc.js +5 -4
  336. package/dist/ta/chaikinOsc.js.map +1 -1
  337. package/dist/ta/chandeKrollStop.d.ts +1 -1
  338. package/dist/ta/chandeKrollStop.js +3 -3
  339. package/dist/ta/chandeKrollStop.js.map +1 -1
  340. package/dist/ta/chandelier.d.ts +1 -1
  341. package/dist/ta/chandelier.js +3 -3
  342. package/dist/ta/chandelier.js.map +1 -1
  343. package/dist/ta/change.js +1 -1
  344. package/dist/ta/change.js.map +1 -1
  345. package/dist/ta/chop.js +2 -2
  346. package/dist/ta/chop.js.map +1 -1
  347. package/dist/ta/cmf.js +2 -2
  348. package/dist/ta/cmf.js.map +1 -1
  349. package/dist/ta/cmo.js +2 -2
  350. package/dist/ta/cmo.js.map +1 -1
  351. package/dist/ta/connorsRsi.d.ts +1 -1
  352. package/dist/ta/connorsRsi.js +3 -3
  353. package/dist/ta/connorsRsi.js.map +1 -1
  354. package/dist/ta/coppock.js +2 -2
  355. package/dist/ta/coppock.js.map +1 -1
  356. package/dist/ta/crossover.d.ts +3 -2
  357. package/dist/ta/crossover.d.ts.map +1 -1
  358. package/dist/ta/crossover.js +4 -3
  359. package/dist/ta/crossover.js.map +1 -1
  360. package/dist/ta/crossunder.d.ts +3 -2
  361. package/dist/ta/crossunder.d.ts.map +1 -1
  362. package/dist/ta/crossunder.js +4 -3
  363. package/dist/ta/crossunder.js.map +1 -1
  364. package/dist/ta/dema.js +2 -2
  365. package/dist/ta/dema.js.map +1 -1
  366. package/dist/ta/dmi.d.ts +4 -3
  367. package/dist/ta/dmi.d.ts.map +1 -1
  368. package/dist/ta/dmi.js +6 -5
  369. package/dist/ta/dmi.js.map +1 -1
  370. package/dist/ta/donchian.js +2 -2
  371. package/dist/ta/donchian.js.map +1 -1
  372. package/dist/ta/dpo.js +2 -2
  373. package/dist/ta/dpo.js.map +1 -1
  374. package/dist/ta/ema.d.ts +3 -2
  375. package/dist/ta/ema.d.ts.map +1 -1
  376. package/dist/ta/ema.js +5 -4
  377. package/dist/ta/ema.js.map +1 -1
  378. package/dist/ta/envelope.js +2 -2
  379. package/dist/ta/envelope.js.map +1 -1
  380. package/dist/ta/eom.d.ts +3 -1
  381. package/dist/ta/eom.d.ts.map +1 -1
  382. package/dist/ta/eom.js +5 -3
  383. package/dist/ta/eom.js.map +1 -1
  384. package/dist/ta/fisher.js +2 -2
  385. package/dist/ta/fisher.js.map +1 -1
  386. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
  387. package/dist/ta/highest.js +1 -1
  388. package/dist/ta/highest.js.map +1 -1
  389. package/dist/ta/highestbars.d.ts +25 -0
  390. package/dist/ta/highestbars.d.ts.map +1 -0
  391. package/dist/ta/highestbars.js +106 -0
  392. package/dist/ta/highestbars.js.map +1 -0
  393. package/dist/ta/historicalVolatility.d.ts +3 -2
  394. package/dist/ta/historicalVolatility.d.ts.map +1 -1
  395. package/dist/ta/historicalVolatility.js +5 -4
  396. package/dist/ta/historicalVolatility.js.map +1 -1
  397. package/dist/ta/hma.js +2 -2
  398. package/dist/ta/hma.js.map +1 -1
  399. package/dist/ta/ichimoku.d.ts +3 -1
  400. package/dist/ta/ichimoku.d.ts.map +1 -1
  401. package/dist/ta/ichimoku.js +5 -3
  402. package/dist/ta/ichimoku.js.map +1 -1
  403. package/dist/ta/index.js.map +1 -1
  404. package/dist/ta/kama.js +2 -2
  405. package/dist/ta/kama.js.map +1 -1
  406. package/dist/ta/keltner.js +2 -2
  407. package/dist/ta/keltner.js.map +1 -1
  408. package/dist/ta/klinger.js +2 -2
  409. package/dist/ta/klinger.js.map +1 -1
  410. package/dist/ta/kst.js +2 -2
  411. package/dist/ta/kst.js.map +1 -1
  412. package/dist/ta/lib/adxFromDi.js +2 -2
  413. package/dist/ta/lib/adxFromDi.js.map +1 -1
  414. package/dist/ta/lib/computeMa.js +2 -2
  415. package/dist/ta/lib/computeMa.js.map +1 -1
  416. package/dist/ta/lib/computeMaOfFloat64.js +2 -2
  417. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
  418. package/dist/ta/lib/directionalState.js +2 -2
  419. package/dist/ta/lib/directionalState.js.map +1 -1
  420. package/dist/ta/lib/donchianMid.js +2 -2
  421. package/dist/ta/lib/donchianMid.js.map +1 -1
  422. package/dist/ta/lib/emaFloat64.js +2 -2
  423. package/dist/ta/lib/emaFloat64.js.map +1 -1
  424. package/dist/ta/lib/linearRegression.js +2 -2
  425. package/dist/ta/lib/linearRegression.js.map +1 -1
  426. package/dist/ta/lib/maTypes.js.map +1 -1
  427. package/dist/ta/lib/pearson.js +2 -2
  428. package/dist/ta/lib/pearson.js.map +1 -1
  429. package/dist/ta/lib/pickCandleSource.js +2 -2
  430. package/dist/ta/lib/pickCandleSource.js.map +1 -1
  431. package/dist/ta/lib/readSourceField.js +2 -2
  432. package/dist/ta/lib/readSourceField.js.map +1 -1
  433. package/dist/ta/lib/rollingStddev.js +2 -2
  434. package/dist/ta/lib/rollingStddev.js.map +1 -1
  435. package/dist/ta/lib/smaFloat64.js +2 -2
  436. package/dist/ta/lib/smaFloat64.js.map +1 -1
  437. package/dist/ta/lib/smmaFloat64.js +2 -2
  438. package/dist/ta/lib/smmaFloat64.js.map +1 -1
  439. package/dist/ta/lib/sourceValue.js.map +1 -1
  440. package/dist/ta/lib/trSeries.js +2 -2
  441. package/dist/ta/lib/trSeries.js.map +1 -1
  442. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
  443. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
  444. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
  445. package/dist/ta/lib/volume-profile/index.js.map +1 -1
  446. package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
  447. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
  448. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
  449. package/dist/ta/lib/volume-profile/types.js.map +1 -1
  450. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
  451. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
  452. package/dist/ta/lib/vwmaFloat64.js +2 -2
  453. package/dist/ta/lib/vwmaFloat64.js.map +1 -1
  454. package/dist/ta/lib/wilderDirectional.js +2 -2
  455. package/dist/ta/lib/wilderDirectional.js.map +1 -1
  456. package/dist/ta/lib/wilderSmoothing.js +2 -2
  457. package/dist/ta/lib/wilderSmoothing.js.map +1 -1
  458. package/dist/ta/lib/wmaFloat64.js +2 -2
  459. package/dist/ta/lib/wmaFloat64.js.map +1 -1
  460. package/dist/ta/lowest.js +1 -1
  461. package/dist/ta/lowest.js.map +1 -1
  462. package/dist/ta/lowestbars.d.ts +25 -0
  463. package/dist/ta/lowestbars.d.ts.map +1 -0
  464. package/dist/ta/lowestbars.js +102 -0
  465. package/dist/ta/lowestbars.js.map +1 -0
  466. package/dist/ta/lsma.js +2 -2
  467. package/dist/ta/lsma.js.map +1 -1
  468. package/dist/ta/maRibbon.js +2 -2
  469. package/dist/ta/maRibbon.js.map +1 -1
  470. package/dist/ta/macd.d.ts +3 -2
  471. package/dist/ta/macd.d.ts.map +1 -1
  472. package/dist/ta/macd.js +6 -5
  473. package/dist/ta/macd.js.map +1 -1
  474. package/dist/ta/massIndex.d.ts +3 -2
  475. package/dist/ta/massIndex.d.ts.map +1 -1
  476. package/dist/ta/massIndex.js +5 -4
  477. package/dist/ta/massIndex.js.map +1 -1
  478. package/dist/ta/mcginley.js +2 -2
  479. package/dist/ta/mcginley.js.map +1 -1
  480. package/dist/ta/median.js +2 -2
  481. package/dist/ta/median.js.map +1 -1
  482. package/dist/ta/mfi.d.ts +3 -1
  483. package/dist/ta/mfi.d.ts.map +1 -1
  484. package/dist/ta/mfi.js +5 -3
  485. package/dist/ta/mfi.js.map +1 -1
  486. package/dist/ta/momentum.js +2 -2
  487. package/dist/ta/momentum.js.map +1 -1
  488. package/dist/ta/netVolume.d.ts +3 -1
  489. package/dist/ta/netVolume.d.ts.map +1 -1
  490. package/dist/ta/netVolume.js +5 -3
  491. package/dist/ta/netVolume.js.map +1 -1
  492. package/dist/ta/nvi.d.ts +3 -1
  493. package/dist/ta/nvi.d.ts.map +1 -1
  494. package/dist/ta/nvi.js +5 -3
  495. package/dist/ta/nvi.js.map +1 -1
  496. package/dist/ta/nz.js +1 -1
  497. package/dist/ta/nz.js.map +1 -1
  498. package/dist/ta/obv.js +2 -2
  499. package/dist/ta/obv.js.map +1 -1
  500. package/dist/ta/persistence.d.ts.map +1 -1
  501. package/dist/ta/persistence.js +1 -40
  502. package/dist/ta/persistence.js.map +1 -1
  503. package/dist/ta/pivotsHighLow.js +2 -2
  504. package/dist/ta/pivotsHighLow.js.map +1 -1
  505. package/dist/ta/pivotsStandard.d.ts +1 -1
  506. package/dist/ta/pivotsStandard.js +3 -3
  507. package/dist/ta/pivotsStandard.js.map +1 -1
  508. package/dist/ta/pmo.js +2 -2
  509. package/dist/ta/pmo.js.map +1 -1
  510. package/dist/ta/ppo.d.ts +3 -2
  511. package/dist/ta/ppo.d.ts.map +1 -1
  512. package/dist/ta/ppo.js +5 -4
  513. package/dist/ta/ppo.js.map +1 -1
  514. package/dist/ta/psar.js +2 -2
  515. package/dist/ta/psar.js.map +1 -1
  516. package/dist/ta/pvi.d.ts +3 -1
  517. package/dist/ta/pvi.d.ts.map +1 -1
  518. package/dist/ta/pvi.js +5 -3
  519. package/dist/ta/pvi.js.map +1 -1
  520. package/dist/ta/pvo.d.ts +3 -1
  521. package/dist/ta/pvo.d.ts.map +1 -1
  522. package/dist/ta/pvo.js +5 -3
  523. package/dist/ta/pvo.js.map +1 -1
  524. package/dist/ta/pvt.d.ts +3 -1
  525. package/dist/ta/pvt.d.ts.map +1 -1
  526. package/dist/ta/pvt.js +5 -3
  527. package/dist/ta/pvt.js.map +1 -1
  528. package/dist/ta/registry.d.ts +7 -1
  529. package/dist/ta/registry.d.ts.map +1 -1
  530. package/dist/ta/registry.js +4 -0
  531. package/dist/ta/registry.js.map +1 -1
  532. package/dist/ta/roc.js +2 -2
  533. package/dist/ta/roc.js.map +1 -1
  534. package/dist/ta/rsi.d.ts +3 -2
  535. package/dist/ta/rsi.d.ts.map +1 -1
  536. package/dist/ta/rsi.js +5 -4
  537. package/dist/ta/rsi.js.map +1 -1
  538. package/dist/ta/rvgi.js +2 -2
  539. package/dist/ta/rvgi.js.map +1 -1
  540. package/dist/ta/rvi.d.ts +3 -2
  541. package/dist/ta/rvi.d.ts.map +1 -1
  542. package/dist/ta/rvi.js +5 -4
  543. package/dist/ta/rvi.js.map +1 -1
  544. package/dist/ta/sessionVolumeProfile.js.map +1 -1
  545. package/dist/ta/sma.d.ts +6 -3
  546. package/dist/ta/sma.d.ts.map +1 -1
  547. package/dist/ta/sma.js +8 -5
  548. package/dist/ta/sma.js.map +1 -1
  549. package/dist/ta/smi.js +2 -2
  550. package/dist/ta/smi.js.map +1 -1
  551. package/dist/ta/smma.js +2 -2
  552. package/dist/ta/smma.js.map +1 -1
  553. package/dist/ta/stdev.d.ts +3 -2
  554. package/dist/ta/stdev.d.ts.map +1 -1
  555. package/dist/ta/stdev.js +5 -4
  556. package/dist/ta/stdev.js.map +1 -1
  557. package/dist/ta/stoch.js +2 -2
  558. package/dist/ta/stoch.js.map +1 -1
  559. package/dist/ta/stochRsi.js +2 -2
  560. package/dist/ta/stochRsi.js.map +1 -1
  561. package/dist/ta/supertrend.d.ts +1 -1
  562. package/dist/ta/supertrend.js +3 -3
  563. package/dist/ta/supertrend.js.map +1 -1
  564. package/dist/ta/tema.js +2 -2
  565. package/dist/ta/tema.js.map +1 -1
  566. package/dist/ta/trendStrengthIndex.d.ts +4 -3
  567. package/dist/ta/trendStrengthIndex.d.ts.map +1 -1
  568. package/dist/ta/trendStrengthIndex.js +6 -5
  569. package/dist/ta/trendStrengthIndex.js.map +1 -1
  570. package/dist/ta/trix.d.ts +4 -3
  571. package/dist/ta/trix.d.ts.map +1 -1
  572. package/dist/ta/trix.js +6 -5
  573. package/dist/ta/trix.js.map +1 -1
  574. package/dist/ta/tsi.js +2 -2
  575. package/dist/ta/tsi.js.map +1 -1
  576. package/dist/ta/ulcerIndex.js +2 -2
  577. package/dist/ta/ulcerIndex.js.map +1 -1
  578. package/dist/ta/ultimateOsc.js +2 -2
  579. package/dist/ta/ultimateOsc.js.map +1 -1
  580. package/dist/ta/valuewhen.js +1 -1
  581. package/dist/ta/valuewhen.js.map +1 -1
  582. package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
  583. package/dist/ta/visibleRangeVolumeProfile.js +2 -2
  584. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
  585. package/dist/ta/vol.js +2 -2
  586. package/dist/ta/vol.js.map +1 -1
  587. package/dist/ta/volatilityStop.d.ts +1 -1
  588. package/dist/ta/volatilityStop.js +3 -3
  589. package/dist/ta/volatilityStop.js.map +1 -1
  590. package/dist/ta/vortex.d.ts +3 -2
  591. package/dist/ta/vortex.d.ts.map +1 -1
  592. package/dist/ta/vortex.js +5 -4
  593. package/dist/ta/vortex.js.map +1 -1
  594. package/dist/ta/vwap.d.ts +3 -3
  595. package/dist/ta/vwap.js +5 -5
  596. package/dist/ta/vwap.js.map +1 -1
  597. package/dist/ta/vwma.js +2 -2
  598. package/dist/ta/vwma.js.map +1 -1
  599. package/dist/ta/williamsFractal.js +2 -2
  600. package/dist/ta/williamsFractal.js.map +1 -1
  601. package/dist/ta/williamsR.js +2 -2
  602. package/dist/ta/williamsR.js.map +1 -1
  603. package/dist/ta/wma.js +2 -2
  604. package/dist/ta/wma.js.map +1 -1
  605. package/dist/ta/zigZag.js +2 -2
  606. package/dist/ta/zigZag.js.map +1 -1
  607. package/dist/views/barstateView.js.map +1 -1
  608. package/dist/views/index.js.map +1 -1
  609. package/dist/views/refreshRuntimeViews.js.map +1 -1
  610. package/dist/views/symInfoView.js.map +1 -1
  611. package/dist/views/timeframeView.js.map +1 -1
  612. package/package.json +3 -3
  613. package/dist/ta/lib/applyOffset.d.ts +0 -19
  614. package/dist/ta/lib/applyOffset.d.ts.map +0 -1
  615. package/dist/ta/lib/applyOffset.js +0 -38
  616. package/dist/ta/lib/applyOffset.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fibCircles.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EAEb,OAAO,EACP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACxF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
1
+ {"version":3,"file":"fibCircles.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EAEb,OAAO,EACP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACxF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/fib-circles-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fibCircles.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,SAAS,cAAc,CACnB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACtB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"fibCircles.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,SAAS,cAAc,CACnB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACtB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibCirclesDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-circles-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibCirclesState,\n FibOpts,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibCircles called outside an active script step\";\n\nfunction fibCirclesImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibCirclesState = {\n kind: \"fib-circles\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-circles\", state);\n}\n\n/**\n * Draw concentric Fibonacci circles centred at `a` (the centre) passing\n * through fib-ratio multiples of `|b - a|` (the radius-point distance).\n * Mirrors invinite's `fib-circles-tool.ts` shape. Renderer uses\n * `style.levels ?? FIB_LEVELS` (the ratio array, NOT the integer\n * Fibonacci sequence).\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, radius-point)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibCircles demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibCircles(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibCircles(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibCircles = fibCircles;\n * // void fn;\n */\nexport function fibCircles(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibCircles}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibCircles = fibCircles;\n * // void fn;\n */\nexport function fibCircles(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibCirclesImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/fib-speed-arcs-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fibSpeedArcs.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedArcs.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"fibSpeedArcs.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedArcs.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpeedArcsDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-speed-arcs-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpeedArcsState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpeedArcs called outside an active script step\";\n\nfunction fibSpeedArcsImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpeedArcsState = {\n kind: \"fib-speed-arcs\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-speed-arcs\", state);\n}\n\n/**\n * Draw a set of Fibonacci speed-arcs — concentric circular arcs centred\n * at `a` with radii `level * |b - a|` for each `level` in\n * `opts.levels ?? FIB_LEVELS`. Mirrors invinite's\n * `fib-speed-arcs-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, edge)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpeedArcs demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpeedArcs(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibSpeedArcs(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpeedArcs = fibSpeedArcs;\n * // void fn;\n */\nexport function fibSpeedArcs(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpeedArcs}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpeedArcs = fibSpeedArcs;\n * // void fn;\n */\nexport function fibSpeedArcs(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpeedArcsImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/fib-speed-fan-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fibSpeedFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,uDAAuD,CAAC;AAEpF,SAAS,eAAe,CACpB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAqB;QAC5B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"fibSpeedFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,uDAAuD,CAAC;AAEpF,SAAS,eAAe,CACpB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAqB;QAC5B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpeedFanDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-speed-fan-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpeedFanState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpeedFan called outside an active script step\";\n\nfunction fibSpeedFanImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpeedFanState = {\n kind: \"fib-speed-fan\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-speed-fan\", state);\n}\n\n/**\n * Draw a Fibonacci speed-fan — a fan of rays from `a` whose slopes are\n * fib-ratio scalings of the (a→b) slope. Levels default to the\n * canonical `FIB_LEVELS` array when `opts.levels` is omitted. Mirrors\n * invinite's `fib-speed-fan-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (pivot, reference)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpeedFan demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpeedFan(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibSpeedFan(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpeedFan = fibSpeedFan;\n * // void fn;\n */\nexport function fibSpeedFan(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpeedFan}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpeedFan = fibSpeedFan;\n * // void fn;\n */\nexport function fibSpeedFan(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpeedFanImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -4,8 +4,7 @@ import type { DrawingHandle, FibOpts, WorldPoint } from "@invinite-org/chartlang
4
4
  * Beziers, one per quarter-turn. The spiral starts at `a` (centre) with
5
5
  * initial radius `|b - a|` and scales by φ ≈ 1.618 per quarter-turn.
6
6
  * Mirrors invinite's `fib-spiral-tool.ts` shape. The `counterClockwise`
7
- * flag from the invinite tool is deferred to a Task-1 reshape (see
8
- * `tasks/phase-3-drawing-parity/12-fibonacci-b.plan.md` §2); the
7
+ * flag from the invinite tool is deferred; the
9
8
  * landed renderer is clockwise-only.
10
9
  *
11
10
  * @anchors `a`, `b` — two `WorldPoint`s (centre, initial-radius edge)
@@ -1 +1 @@
1
- {"version":3,"file":"fibSpiral.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,OAAO,EAEP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACvF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
1
+ {"version":3,"file":"fibSpiral.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,OAAO,EAEP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACvF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/fib-spiral-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fibSpiral.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,aAAa,CAAC,MAAc,EAAE,CAAa,EAAE,CAAa,EAAE,IAAa;IAC9E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAmB;QAC1B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"fibSpiral.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,aAAa,CAAC,MAAc,EAAE,CAAa,EAAE,CAAa,EAAE,IAAa;IAC9E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAmB;QAC1B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpiralDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-spiral-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpiralState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpiral called outside an active script step\";\n\nfunction fibSpiralImpl(slotId: string, a: WorldPoint, b: WorldPoint, opts: FibOpts): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpiralState = {\n kind: \"fib-spiral\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-spiral\", state);\n}\n\n/**\n * Draw a Fibonacci (golden) spiral approximated by chained cubic\n * Beziers, one per quarter-turn. The spiral starts at `a` (centre) with\n * initial radius `|b - a|` and scales by φ ≈ 1.618 per quarter-turn.\n * Mirrors invinite's `fib-spiral-tool.ts` shape. The `counterClockwise`\n * flag from the invinite tool is deferred; the\n * landed renderer is clockwise-only.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, initial-radius edge)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpiral demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpiral(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * );\n * },\n * });\n */\nexport function fibSpiral(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpiral = fibSpiral;\n * // void fn;\n */\nexport function fibSpiral(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpiral}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpiral = fibSpiral;\n * // void fn;\n */\nexport function fibSpiral(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpiralImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -4,8 +4,7 @@ import type { AnchorTriple, DrawingHandle, FibOpts } from "@invinite-org/chartla
4
4
  * `level` in `opts.levels ?? FIB_LEVELS`, paints a vertical line at
5
5
  * `t = anchors[2].time + level * (anchors[1].time - anchors[0].time)`.
6
6
  * Mirrors invinite's `fib-trend-time-tool.ts` shape using the ratio
7
- * array (see Task-1 reshape follow-up in
8
- * `tasks/phase-3-drawing-parity/12-fibonacci-b.plan.md` §8).
7
+ * array.
9
8
  *
10
9
  * @anchors `anchors` — `[A, B, C]` triple (A→B leg defines the time
11
10
  * delta; C is the projection origin)
@@ -1 +1 @@
1
- {"version":3,"file":"fibTrendTime.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,OAAO,EAEV,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACnF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"fibTrendTime.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,OAAO,EAEV,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACnF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC"}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/fib-trend-time-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"fibTrendTime.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAa;IAC1E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAA2B,EAC3B,IAA6B,EAC7B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"fibTrendTime.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAa;IAC1E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAA2B,EAC3B,IAA6B,EAC7B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibTrendTimeDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-trend-time-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n FibOpts,\n FibTrendTimeState,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibTrendTime called outside an active script step\";\n\nfunction fibTrendTimeImpl(slotId: string, anchors: AnchorTriple, opts: FibOpts): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibTrendTimeState = {\n kind: \"fib-trend-time\",\n anchors,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-trend-time\", state);\n}\n\n/**\n * Draw fib-spaced vertical time projections from a swing leg. For each\n * `level` in `opts.levels ?? FIB_LEVELS`, paints a vertical line at\n * `t = anchors[2].time + level * (anchors[1].time - anchors[0].time)`.\n * Mirrors invinite's `fib-trend-time-tool.ts` shape using the ratio\n * array.\n *\n * @anchors `anchors` — `[A, B, C]` triple (A→B leg defines the time\n * delta; C is the projection origin)\n * @anchorCount 3\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibTrendTime demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibTrendTime(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * { time: bar.time + 60_000, price: bar.close },\n * ],\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibTrendTime(anchors: AnchorTriple, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibTrendTime = fibTrendTime;\n * // void fn;\n */\nexport function fibTrendTime(slotId: string, anchors: AnchorTriple, opts?: FibOpts): DrawingHandle;\n/**\n * Implementation signature for {@link fibTrendTime}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibTrendTime = fibTrendTime;\n * // void fn;\n */\nexport function fibTrendTime(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | FibOpts,\n arg3?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibTrendTimeImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/gann-box-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"gannBox.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannBox.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,+BAA+B;AAC/B,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,mDAAmD,CAAC;AAEhF,SAAS,WAAW,CAChB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAiB;QACxB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"gannBox.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannBox.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,+BAA+B;AAC/B,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,mDAAmD,CAAC;AAEhF,SAAS,WAAW,CAChB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAiB;QACxB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GannBoxDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/gann-box-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n GannBoxState,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.gannBox called outside an active script step\";\n\nfunction gannBoxImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: GannBoxState = {\n kind: \"gann-box\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"gann-box\", state);\n}\n\n/**\n * Draw a Gann box — a ratio grid spanning the bounding rectangle of\n * two world anchors. The renderer paints internal horizontal +\n * vertical subdivisions at the shared `GANN_LEVELS` ratios\n * (`[0, 0.25, 0.5, 0.75, 1.0]`). Mirrors invinite's `gann-box-tool.ts`\n * shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s defining the box corners\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.gannBox demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.gannBox(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * );\n * },\n * });\n */\nexport function gannBox(a: WorldPoint, b: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof gannBox = gannBox;\n * // void fn;\n */\nexport function gannBox(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link gannBox}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof gannBox = gannBox;\n * // void fn;\n */\nexport function gannBox(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | LineDrawStyle,\n arg4?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return gannBoxImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/gann-fan-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"gannFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,+BAA+B;AAC/B,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,mDAAmD,CAAC;AAEhF,SAAS,WAAW,CAChB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAiB;QACxB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"gannFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,+BAA+B;AAC/B,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,mDAAmD,CAAC;AAEhF,SAAS,WAAW,CAChB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAiB;QACxB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GannFanDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/gann-fan-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n GannFanState,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.gannFan called outside an active script step\";\n\nfunction gannFanImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: GannFanState = {\n kind: \"gann-fan\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"gann-fan\", state);\n}\n\n/**\n * Draw a Gann fan — 9 rays emanating from `a` at the canonical Gann\n * angles (`1x1`, `1x2`, `1x3`, `2x1`, `3x1`, `1x4`, `4x1`, `1x8`,\n * `8x1`). The 1×1 ray points directly at `b`; the other 8 are slope\n * scalings of the (a→b) direction vector. Mirrors invinite's\n * `gann-fan-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (pivot, reference)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.gannFan demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.gannFan(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * );\n * },\n * });\n */\nexport function gannFan(a: WorldPoint, b: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof gannFan = gannFan;\n * // void fn;\n */\nexport function gannFan(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link gannFan}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof gannFan = gannFan;\n * // void fn;\n */\nexport function gannFan(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | LineDrawStyle,\n arg4?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return gannFanImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/gann-square-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"gannSquare.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannSquare.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,SAAS,cAAc,CACnB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AA2CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACtB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"gannSquare.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannSquare.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,SAAS,cAAc,CACnB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AA2CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACtB,IAAyB,EACzB,IAAiB,EACjB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GannSquareDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/gann-square-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n GannSquareState,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.gannSquare called outside an active script step\";\n\nfunction gannSquareImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: GannSquareState = {\n kind: \"gann-square\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"gann-square\", state);\n}\n\n/**\n * Draw a Gann square-of-nine sized by two world anchors. The renderer\n * paints a canvas-space square whose side is `max(|dx|, |dy|)` between\n * the anchors, subdivided by `GANN_LEVELS`. Mirrors invinite's\n * `gann-square-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.gannSquare demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.gannSquare(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * );\n * },\n * });\n */\nexport function gannSquare(a: WorldPoint, b: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof gannSquare = gannSquare;\n * // void fn;\n */\nexport function gannSquare(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link gannSquare}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof gannSquare = gannSquare;\n * // void fn;\n */\nexport function gannSquare(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | LineDrawStyle,\n arg4?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return gannSquareImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/gann-square-fixed-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"gannSquareFixed.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannSquareFixed.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,2EAA2E;AAC3E,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,2DAA2D,CAAC;AAExF,SAAS,mBAAmB,CACxB,MAAc,EACd,MAAkB,EAClB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB;QAChC,IAAI,EAAE,mBAAmB;QACzB,MAAM;QACN,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAuCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"gannSquareFixed.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannSquareFixed.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,2EAA2E;AAC3E,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,2DAA2D,CAAC;AAExF,SAAS,mBAAmB,CACxB,MAAc,EACd,MAAkB,EAClB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB;QAChC,IAAI,EAAE,mBAAmB;QACzB,MAAM;QACN,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAuCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GannSquareFixedDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/gann-square-fixed-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n GannSquareFixedState,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.gannSquareFixed called outside an active script step\";\n\nfunction gannSquareFixedImpl(\n slotId: string,\n anchor: WorldPoint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: GannSquareFixedState = {\n kind: \"gann-square-fixed\",\n anchor,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"gann-square-fixed\", state);\n}\n\n/**\n * Draw a Gann square-of-nine with a fixed pixel side anchored at a\n * single world point. The renderer paints a `80×80` pixel square\n * subdivided by `GANN_LEVELS`. Mirrors invinite's\n * `gann-square-fixed-tool.ts` shape.\n *\n * @anchors `anchor` — a single `WorldPoint`\n * @anchorCount 1\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.gannSquareFixed demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.gannSquareFixed({ time: bar.time, price: bar.close });\n * },\n * });\n */\nexport function gannSquareFixed(anchor: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof gannSquareFixed = gannSquareFixed;\n * // void fn;\n */\nexport function gannSquareFixed(\n slotId: string,\n anchor: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link gannSquareFixed}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof gannSquareFixed = gannSquareFixed;\n * // void fn;\n */\nexport function gannSquareFixed(\n arg1: string | WorldPoint,\n arg2?: WorldPoint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return gannSquareFixedImpl(arg1, arg2 as WorldPoint, arg3 ?? {});\n}\n"]}
@@ -7,13 +7,22 @@ import type { DrawingHandle, DrawingKind, DrawingState } from "@invinite-org/cha
7
7
  * full merged state.
8
8
  *
9
9
  * `update(patch)` merges the patch with the current slot state and
10
- * re-emits the FULL merged state under `op: "update"` per PLAN.md
11
- * §10.3. `remove()` emits one final `op: "remove"` with the
10
+ * re-emits the FULL merged state under `op: "update"`. `remove()`
11
+ * emits one final `op: "remove"` with the
12
12
  * last-known state and flags the slot `removed: true`; subsequent
13
13
  * `update` / `remove` calls on the returned handle are no-ops.
14
14
  *
15
15
  * The handle's `id` is `slotId#subId` — stable across bars.
16
16
  *
17
+ * `z` is the presentation-only render-order key the `draw.*` opts bag
18
+ * carried (core's `ZOrdered` mixin) folded into `state.style`. It is
19
+ * {@link splitZ | lifted out} of `state.style` so it rides the wire as
20
+ * the top-level {@link DrawingEmission.z} field, **never** inside
21
+ * `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on
22
+ * the slot. An `update` that does not re-specify a non-zero `z` retains
23
+ * the last value; a re-specified non-zero `z` overrides; `remove`
24
+ * carries the last-known `z`.
25
+ *
17
26
  * @since 0.3
18
27
  * @stable
19
28
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAoC7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,YAAY,GAC3B,aAAa,CAsDf"}
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAyE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,YAAY,GAC3B,aAAa,CAoEf"}
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) 2026 Invinite. Licensed under the MIT License.
2
2
  // See the LICENSE file in the repo root for full license text.
3
- import { ACTIVE_RUNTIME_CONTEXT } from "../../runtimeContext.js";
3
+ import { ACTIVE_RUNTIME_CONTEXT, } from "../../runtimeContext.js";
4
4
  import { pushDrawing } from "./pushDrawing.js";
5
5
  const OUTSIDE_CTX_MESSAGE = "draw called outside an active script step";
6
6
  function mergeState(prev, patch) {
@@ -13,7 +13,34 @@ function mergeState(prev, patch) {
13
13
  // discriminants stay pinned to `prev.kind`.
14
14
  return { ...prev, ...patch, kind: prev.kind };
15
15
  }
16
- function emit(ctx, handleId, kind, op, state) {
16
+ /**
17
+ * Lift the presentation-only `z` (render-order key) **out** of a
18
+ * drawing's `state.style` and hand it back to the caller, returning a
19
+ * state with `z` removed from a **shallow clone** of `style` (the
20
+ * caller's style object is never mutated). Every `draw.*` option bag
21
+ * carries `z` via core's `ZOrdered` mixin, and the per-kind impls fold
22
+ * that bag into `state.style`, so `z` arrives nested at `state.style.z`.
23
+ * `z` is a **top-level** `DrawingEmission` field, not part of
24
+ * `DrawingState`, so it must not ride the wire inside `state` — strip it
25
+ * here. Returns `z: 0` (the omit-when-`0` default) for states with no
26
+ * `style` (e.g. `group`) or no `z`, leaving the state object **untouched**
27
+ * in that case so a no-`z` drawing stays byte-identical to the
28
+ * pre-feature baseline.
29
+ */
30
+ function splitZ(state) {
31
+ if (!("style" in state) || state.style === undefined) {
32
+ return { state, z: 0 };
33
+ }
34
+ const style = state.style;
35
+ if (style.z === undefined) {
36
+ return { state, z: 0 };
37
+ }
38
+ // Shallow-clone style with `z` removed — never mutate the caller's
39
+ // object. `rest` is z-free, so the wire `state.style` carries no `z`.
40
+ const { z, ...rest } = style;
41
+ return { state: { ...state, style: rest }, z };
42
+ }
43
+ function emit(ctx, handleId, kind, op, state, z) {
17
44
  pushDrawing(ctx, {
18
45
  kind: "drawing",
19
46
  handleId,
@@ -22,6 +49,10 @@ function emit(ctx, handleId, kind, op, state) {
22
49
  state,
23
50
  bar: ctx.barIndex(),
24
51
  time: ctx.stream.bar.time,
52
+ // `z` is presentation-only and top-level (never inside `state`);
53
+ // omit it when `0` so a no-`z` drawing is byte-identical to the
54
+ // pre-feature baseline — mirrors `PlotEmission.xShift` / `.z`.
55
+ ...(z === 0 ? {} : { z }),
25
56
  });
26
57
  }
27
58
  /**
@@ -32,13 +63,22 @@ function emit(ctx, handleId, kind, op, state) {
32
63
  * full merged state.
33
64
  *
34
65
  * `update(patch)` merges the patch with the current slot state and
35
- * re-emits the FULL merged state under `op: "update"` per PLAN.md
36
- * §10.3. `remove()` emits one final `op: "remove"` with the
66
+ * re-emits the FULL merged state under `op: "update"`. `remove()`
67
+ * emits one final `op: "remove"` with the
37
68
  * last-known state and flags the slot `removed: true`; subsequent
38
69
  * `update` / `remove` calls on the returned handle are no-ops.
39
70
  *
40
71
  * The handle's `id` is `slotId#subId` — stable across bars.
41
72
  *
73
+ * `z` is the presentation-only render-order key the `draw.*` opts bag
74
+ * carried (core's `ZOrdered` mixin) folded into `state.style`. It is
75
+ * {@link splitZ | lifted out} of `state.style` so it rides the wire as
76
+ * the top-level {@link DrawingEmission.z} field, **never** inside
77
+ * `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on
78
+ * the slot. An `update` that does not re-specify a non-zero `z` retains
79
+ * the last value; a re-specified non-zero `z` overrides; `remove`
80
+ * carries the last-known `z`.
81
+ *
42
82
  * @since 0.3
43
83
  * @stable
44
84
  * @example
@@ -64,23 +104,30 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
64
104
  throw new Error(OUTSIDE_CTX_MESSAGE);
65
105
  const handleId = `${slotId}#${subId}`;
66
106
  const existing = ctx.drawingSlots.get(handleId);
107
+ // Lift `z` out of `state.style` so it rides the emission top-level,
108
+ // not inside `DrawingState`. The remaining `style` (z removed) is
109
+ // what persists in the slot.
110
+ const initial = splitZ(initialState);
67
111
  let slot;
68
112
  let op;
69
113
  if (existing === undefined) {
70
- slot = { handleId, kind, state: initialState, removed: false };
114
+ slot = { handleId, kind, state: initial.state, z: initial.z, removed: false };
71
115
  ctx.drawingSlots.set(handleId, slot);
72
116
  op = "create";
73
117
  }
74
118
  else {
75
119
  // Cross-bar re-entry. Merge initialState into the existing slot
76
120
  // (script-author may pass new anchors / style); resurrect if it
77
- // was previously removed.
78
- existing.state = mergeState(existing.state, initialState);
121
+ // was previously removed. A re-specified `z` (non-default)
122
+ // overrides the retained one; an omitted/`0` `z` keeps the last.
123
+ existing.state = mergeState(existing.state, initial.state);
124
+ if (initial.z !== 0)
125
+ existing.z = initial.z;
79
126
  existing.removed = false;
80
127
  slot = existing;
81
128
  op = "update";
82
129
  }
83
- emit(ctx, handleId, kind, op, slot.state);
130
+ emit(ctx, handleId, kind, op, slot.state, slot.z);
84
131
  return {
85
132
  id: handleId,
86
133
  update(patch) {
@@ -95,8 +142,15 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
95
142
  const s = liveCtx.drawingSlots.get(handleId);
96
143
  if (s === undefined || s.removed)
97
144
  return;
98
- s.state = mergeState(s.state, patch);
99
- emit(liveCtx, handleId, kind, "update", s.state);
145
+ // A patch may re-specify `z` inside `style`; split it out so
146
+ // it never merges into `state.style`. A re-specified
147
+ // non-default `z` overrides; an omitted/`0` `z` retains the
148
+ // slot's last value.
149
+ const split = splitZ(mergeState(s.state, patch));
150
+ s.state = split.state;
151
+ if (split.z !== 0)
152
+ s.z = split.z;
153
+ emit(liveCtx, handleId, kind, "update", s.state, s.z);
100
154
  },
101
155
  remove() {
102
156
  const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;
@@ -109,9 +163,10 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
109
163
  // mid-run, so a previously-created handle's "remove" always
110
164
  // reaches `pushDrawing`. The slot stays flagged even if a
111
165
  // future drop path swallows the emission — a removed handle
112
- // must never re-emit.
166
+ // must never re-emit. `remove` carries the last-known `z`
167
+ // (harmless — no render).
113
168
  s.removed = true;
114
- emit(liveCtx, handleId, kind, "remove", s.state);
169
+ emit(liveCtx, handleId, kind, "remove", s.state, s.z);
115
170
  },
116
171
  };
117
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { DrawingHandle, DrawingKind, DrawingState } from \"@invinite-org/chartlang-core\";\n\nimport {\n ACTIVE_RUNTIME_CONTEXT,\n type DrawingSlot,\n type RuntimeContext,\n} from \"../../runtimeContext.js\";\nimport { pushDrawing } from \"./pushDrawing.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw called outside an active script step\";\n\nfunction mergeState(prev: DrawingState, patch: Partial<DrawingState>): DrawingState {\n // Spread the patch over `prev` and force `kind` back to the\n // previous variant. A cross-variant patch from a script is a type\n // error at the script's callsite — the runtime defends against it\n // here so the runtime cannot accidentally emit a drift between\n // `drawingKind` and `state.kind`. The cast is safe because every\n // variant of `DrawingState` shares the shape `{ kind, ... }` and\n // discriminants stay pinned to `prev.kind`.\n return { ...prev, ...patch, kind: prev.kind } as DrawingState;\n}\n\n/**\n * Lift the presentation-only `z` (render-order key) **out** of a\n * drawing's `state.style` and hand it back to the caller, returning a\n * state with `z` removed from a **shallow clone** of `style` (the\n * caller's style object is never mutated). Every `draw.*` option bag\n * carries `z` via core's `ZOrdered` mixin, and the per-kind impls fold\n * that bag into `state.style`, so `z` arrives nested at `state.style.z`.\n * `z` is a **top-level** `DrawingEmission` field, not part of\n * `DrawingState`, so it must not ride the wire inside `state` — strip it\n * here. Returns `z: 0` (the omit-when-`0` default) for states with no\n * `style` (e.g. `group`) or no `z`, leaving the state object **untouched**\n * in that case so a no-`z` drawing stays byte-identical to the\n * pre-feature baseline.\n */\nfunction splitZ(state: DrawingState): { state: DrawingState; z: number } {\n if (!(\"style\" in state) || state.style === undefined) {\n return { state, z: 0 };\n }\n const style: { z?: number } = state.style;\n if (style.z === undefined) {\n return { state, z: 0 };\n }\n // Shallow-clone style with `z` removed — never mutate the caller's\n // object. `rest` is z-free, so the wire `state.style` carries no `z`.\n const { z, ...rest } = style;\n return { state: { ...state, style: rest } as DrawingState, z };\n}\n\nfunction emit(\n ctx: RuntimeContext,\n handleId: string,\n kind: DrawingKind,\n op: \"create\" | \"update\" | \"remove\",\n state: DrawingState,\n z: number,\n): void {\n pushDrawing(ctx, {\n kind: \"drawing\",\n handleId,\n drawingKind: kind,\n op,\n state,\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n // `z` is presentation-only and top-level (never inside `state`);\n // omit it when `0` so a no-`z` drawing is byte-identical to the\n // pre-feature baseline — mirrors `PlotEmission.xShift` / `.z`.\n ...(z === 0 ? {} : { z }),\n });\n}\n\n/**\n * Construct a {@link DrawingHandle} for `slotId#subId` in the active\n * runtime context. Allocates the slot in `ctx.drawingSlots` on the\n * first call (`op: \"create\"`); subsequent calls at the same callsite\n * across bars find the existing slot and emit `op: \"update\"` with the\n * full merged state.\n *\n * `update(patch)` merges the patch with the current slot state and\n * re-emits the FULL merged state under `op: \"update\"`. `remove()`\n * emits one final `op: \"remove\"` with the\n * last-known state and flags the slot `removed: true`; subsequent\n * `update` / `remove` calls on the returned handle are no-ops.\n *\n * The handle's `id` is `slotId#subId` — stable across bars.\n *\n * `z` is the presentation-only render-order key the `draw.*` opts bag\n * carried (core's `ZOrdered` mixin) folded into `state.style`. It is\n * {@link splitZ | lifted out} of `state.style` so it rides the wire as\n * the top-level {@link DrawingEmission.z} field, **never** inside\n * `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on\n * the slot. An `update` that does not re-specify a non-zero `z` retains\n * the last value; a re-specified non-zero `z` overrides; `remove`\n * carries the last-known `z`.\n *\n * @since 0.3\n * @stable\n * @example\n * // import {\n * // createDrawingHandle,\n * // } from \"@invinite-org/chartlang-runtime\";\n * // const h = createDrawingHandle(\n * // \"demo.chart.ts:5:13#0\",\n * // 0,\n * // \"line\",\n * // {\n * // kind: \"line\",\n * // anchors: [{ time: 0, price: 0 }, { time: 1, price: 1 }],\n * // style: {},\n * // },\n * // );\n * // h.update({ style: { color: \"#3b82f6\" } });\n * // h.remove();\n */\nexport function createDrawingHandle(\n slotId: string,\n subId: number,\n kind: DrawingKind,\n initialState: DrawingState,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n\n const handleId = `${slotId}#${subId}`;\n const existing = ctx.drawingSlots.get(handleId);\n\n // Lift `z` out of `state.style` so it rides the emission top-level,\n // not inside `DrawingState`. The remaining `style` (z removed) is\n // what persists in the slot.\n const initial = splitZ(initialState);\n\n let slot: DrawingSlot;\n let op: \"create\" | \"update\";\n if (existing === undefined) {\n slot = { handleId, kind, state: initial.state, z: initial.z, removed: false };\n ctx.drawingSlots.set(handleId, slot);\n op = \"create\";\n } else {\n // Cross-bar re-entry. Merge initialState into the existing slot\n // (script-author may pass new anchors / style); resurrect if it\n // was previously removed. A re-specified `z` (non-default)\n // overrides the retained one; an omitted/`0` `z` keeps the last.\n existing.state = mergeState(existing.state, initial.state);\n if (initial.z !== 0) existing.z = initial.z;\n existing.removed = false;\n slot = existing;\n op = \"update\";\n }\n\n emit(ctx, handleId, kind, op, slot.state, slot.z);\n\n return {\n id: handleId,\n update(patch: Partial<DrawingState>): void {\n // `ACTIVE_RUNTIME_CONTEXT.current` can be null when the\n // host calls `handle.update(...)` outside a compute step\n // (e.g. from an async callback). Drop silently in that\n // case — the handle's slot still persists and the next\n // in-step `update` will fire.\n const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;\n if (liveCtx === null) return;\n const s = liveCtx.drawingSlots.get(handleId);\n if (s === undefined || s.removed) return;\n // A patch may re-specify `z` inside `style`; split it out so\n // it never merges into `state.style`. A re-specified\n // non-default `z` overrides; an omitted/`0` `z` retains the\n // slot's last value.\n const split = splitZ(mergeState(s.state, patch));\n s.state = split.state;\n if (split.z !== 0) s.z = split.z;\n emit(liveCtx, handleId, kind, \"update\", s.state, s.z);\n },\n remove(): void {\n const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;\n if (liveCtx === null) return;\n const s = liveCtx.drawingSlots.get(handleId);\n if (s === undefined || s.removed) return;\n // Flag-before-emit is safe: capabilities are invariant\n // mid-run, so a previously-created handle's \"remove\" always\n // reaches `pushDrawing`. The slot stays flagged even if a\n // future drop path swallows the emission — a removed handle\n // must never re-emit. `remove` carries the last-known `z`\n // (harmless — no render).\n s.removed = true;\n emit(liveCtx, handleId, kind, \"remove\", s.state, s.z);\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emit/draw/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,oEAAoE;AACpE,iEAAiE;AACjE,6CAA6C;AAC7C,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emit/draw/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,oEAAoE;AACpE,iEAAiE;AACjE,6CAA6C;AAC7C,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nexport { createDrawingHandle } from \"./handle.js\";\nexport { pushDrawing } from \"./pushDrawing.js\";\nexport { nextSubId, resetSubIdCounters } from \"./subIdAllocator.js\";\n// Phase-3 Task 5 swaps the bare core re-export for the runtime-side\n// `DRAW_NAMESPACE` that wires real per-kind impls (Task 5 lands the 6\n// line-family kinds; Tasks 6–18 extend the namespace as their kinds\n// ship). The namespace falls back to core's throwing-stub Proxy for\n// every kind that hasn't shipped yet — same swap-seam pattern as\n// Phase-2 `TA_REGISTRY` via `primitives.ts`.\nexport { DRAW_NAMESPACE as draw } from \"./namespace.js\";\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/cross-line-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"crossLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/crossLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,aAAa,CAAC,MAAc,EAAE,MAAkB,EAAE,IAAmB;IAC1E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAqCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"crossLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/crossLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,aAAa,CAAC,MAAc,EAAE,MAAkB,EAAE,IAAmB;IAC1E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAqCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (CrossLineDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/cross-line-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n CrossLineState,\n DrawingHandle,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.crossLine called outside an active script step\";\n\nfunction crossLineImpl(slotId: string, anchor: WorldPoint, opts: LineDrawStyle): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: CrossLineState = { kind: \"cross-line\", anchor, style: opts };\n return createDrawingHandle(slotId, subId, \"cross-line\", state);\n}\n\n/**\n * Draw an orthogonal cross — horizontal + vertical line — through\n * `anchor`. Both strokes span the full viewport in their respective\n * axes.\n *\n * @anchors `anchor` — one `WorldPoint`\n * @anchorCount 1\n * @bucket lines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.crossLine demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.crossLine(\n * { time: bar.time, price: bar.close },\n * { color: \"#a855f7\", lineStyle: \"dotted\" },\n * );\n * },\n * });\n */\nexport function crossLine(anchor: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof crossLine = crossLine;\n * // void fn;\n */\nexport function crossLine(slotId: string, anchor: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Implementation signature for {@link crossLine}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof crossLine = crossLine;\n * // void fn;\n */\nexport function crossLine(\n arg1: string | WorldPoint,\n arg2?: WorldPoint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || typeof arg2 !== \"object\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return crossLineImpl(arg1, arg2 as WorldPoint, arg3 ?? {});\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { DrawingHandle, LineDrawStyle, Price } from "@invinite-org/chartlang-core";
2
2
  /**
3
3
  * Draw a horizontal line at the supplied `price` that spans the full
4
- * viewport width. The handle is stable across bars per PLAN.md §10.3.
4
+ * viewport width. The handle is stable across bars.
5
5
  *
6
6
  * @anchors `price` — a single `Price`
7
7
  * @anchorCount 1
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/horizontal-line-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"horizontalLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/horizontalLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,sCAAsC;AACtC,4DAA4D;AAC5D,iBAAiB;AACjB,yEAAyE;AACzE,4DAA4D;AAS5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AAEvF,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAY,EAAE,IAAmB;IACzE,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC;AAiCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC1B,IAAoB,EACpB,IAA4B,EAC5B,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"horizontalLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/horizontalLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,sCAAsC;AACtC,4DAA4D;AAC5D,iBAAiB;AACjB,yEAAyE;AACzE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AAEvF,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAY,EAAE,IAAmB;IACzE,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC;AAiCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC1B,IAAoB,EACpB,IAA4B,EAC5B,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (HorizontalLineDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/horizontal-line-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n HorizontalLineState,\n LineDrawStyle,\n Price,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.horizontalLine called outside an active script step\";\n\nfunction horizontalLineImpl(slotId: string, price: Price, opts: LineDrawStyle): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: HorizontalLineState = { kind: \"horizontal-line\", price, style: opts };\n return createDrawingHandle(slotId, subId, \"horizontal-line\", state);\n}\n\n/**\n * Draw a horizontal line at the supplied `price` that spans the full\n * viewport width. The handle is stable across bars.\n *\n * @anchors `price` — a single `Price`\n * @anchorCount 1\n * @bucket lines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.horizontalLine demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.horizontalLine(bar.close, { color: \"#ef4444\", lineStyle: \"dashed\" });\n * },\n * });\n */\nexport function horizontalLine(price: Price, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof horizontalLine = horizontalLine;\n * // void fn;\n */\nexport function horizontalLine(slotId: string, price: Price, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Implementation signature for {@link horizontalLine}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof horizontalLine = horizontalLine;\n * // void fn;\n */\nexport function horizontalLine(\n arg1: string | Price,\n arg2?: Price | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || typeof arg2 !== \"number\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return horizontalLineImpl(arg1, arg2, arg3 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/horizontal-ray-tool.ts.
10
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
10
+ // Re-licensed MIT for chartlang.
11
11
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
12
12
  import { createDrawingHandle } from "../handle.js";
13
13
  import { nextSubId } from "../subIdAllocator.js";