@invinite-org/chartlang-runtime 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.md +10 -2
  3. package/dist/buildComputeContext.js.map +1 -1
  4. package/dist/createScriptRunner.d.ts +55 -4
  5. package/dist/createScriptRunner.d.ts.map +1 -1
  6. package/dist/createScriptRunner.js +103 -35
  7. package/dist/createScriptRunner.js.map +1 -1
  8. package/dist/dep/DepOutputStore.d.ts +92 -0
  9. package/dist/dep/DepOutputStore.d.ts.map +1 -0
  10. package/dist/dep/DepOutputStore.js +0 -0
  11. package/dist/dep/DepOutputStore.js.map +1 -0
  12. package/dist/dep/DepRunner.d.ts +146 -0
  13. package/dist/dep/DepRunner.d.ts.map +1 -0
  14. package/dist/dep/DepRunner.js +243 -0
  15. package/dist/dep/DepRunner.js.map +1 -0
  16. package/dist/dep/depOutput.d.ts +50 -0
  17. package/dist/dep/depOutput.d.ts.map +1 -0
  18. package/dist/dep/depOutput.js +92 -0
  19. package/dist/dep/depOutput.js.map +1 -0
  20. package/dist/dep/emissionFilter.d.ts +70 -0
  21. package/dist/dep/emissionFilter.d.ts.map +1 -0
  22. package/dist/dep/emissionFilter.js +105 -0
  23. package/dist/dep/emissionFilter.js.map +1 -0
  24. package/dist/dep/index.d.ts +8 -0
  25. package/dist/dep/index.d.ts.map +1 -0
  26. package/dist/dep/index.js +7 -0
  27. package/dist/dep/index.js.map +1 -0
  28. package/dist/emit/alert.js.map +1 -1
  29. package/dist/emit/alertConditionEmission.js.map +1 -1
  30. package/dist/emit/applyPlotOverride.d.ts +24 -0
  31. package/dist/emit/applyPlotOverride.d.ts.map +1 -0
  32. package/dist/emit/applyPlotOverride.js +48 -0
  33. package/dist/emit/applyPlotOverride.js.map +1 -0
  34. package/dist/emit/draw/annotations/arrow.js +1 -1
  35. package/dist/emit/draw/annotations/arrow.js.map +1 -1
  36. package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
  37. package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
  38. package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
  39. package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
  40. package/dist/emit/draw/annotations/arrowMarker.js +1 -1
  41. package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
  42. package/dist/emit/draw/annotations/text.js +1 -1
  43. package/dist/emit/draw/annotations/text.js.map +1 -1
  44. package/dist/emit/draw/boxes/circle.js +1 -1
  45. package/dist/emit/draw/boxes/circle.js.map +1 -1
  46. package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
  47. package/dist/emit/draw/boxes/ellipse.js +1 -1
  48. package/dist/emit/draw/boxes/ellipse.js.map +1 -1
  49. package/dist/emit/draw/boxes/marker.js +1 -1
  50. package/dist/emit/draw/boxes/marker.js.map +1 -1
  51. package/dist/emit/draw/boxes/path.d.ts +1 -1
  52. package/dist/emit/draw/boxes/path.js +1 -1
  53. package/dist/emit/draw/boxes/path.js.map +1 -1
  54. package/dist/emit/draw/boxes/polyline.d.ts +1 -1
  55. package/dist/emit/draw/boxes/polyline.js +1 -1
  56. package/dist/emit/draw/boxes/polyline.js.map +1 -1
  57. package/dist/emit/draw/boxes/rectangle.js +1 -1
  58. package/dist/emit/draw/boxes/rectangle.js.map +1 -1
  59. package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
  60. package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
  61. package/dist/emit/draw/boxes/triangle.d.ts +1 -1
  62. package/dist/emit/draw/boxes/triangle.js +1 -1
  63. package/dist/emit/draw/boxes/triangle.js.map +1 -1
  64. package/dist/emit/draw/channels/disjointChannel.js +1 -1
  65. package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
  66. package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
  67. package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
  68. package/dist/emit/draw/channels/flatTopBottom.js +1 -1
  69. package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
  70. package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
  71. package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
  72. package/dist/emit/draw/channels/regressionTrend.js +1 -1
  73. package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
  74. package/dist/emit/draw/channels/trendChannel.js +1 -1
  75. package/dist/emit/draw/channels/trendChannel.js.map +1 -1
  76. package/dist/emit/draw/containers/frame.d.ts +1 -1
  77. package/dist/emit/draw/containers/frame.js +2 -2
  78. package/dist/emit/draw/containers/frame.js.map +1 -1
  79. package/dist/emit/draw/containers/group.d.ts +1 -2
  80. package/dist/emit/draw/containers/group.d.ts.map +1 -1
  81. package/dist/emit/draw/containers/group.js +2 -2
  82. package/dist/emit/draw/containers/group.js.map +1 -1
  83. package/dist/emit/draw/curves/arc.js +1 -1
  84. package/dist/emit/draw/curves/arc.js.map +1 -1
  85. package/dist/emit/draw/curves/brush.js +1 -1
  86. package/dist/emit/draw/curves/brush.js.map +1 -1
  87. package/dist/emit/draw/curves/curve.js +1 -1
  88. package/dist/emit/draw/curves/curve.js.map +1 -1
  89. package/dist/emit/draw/curves/doubleCurve.js +1 -1
  90. package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
  91. package/dist/emit/draw/curves/highlighter.js +1 -1
  92. package/dist/emit/draw/curves/highlighter.js.map +1 -1
  93. package/dist/emit/draw/curves/pen.js +1 -1
  94. package/dist/emit/draw/curves/pen.js.map +1 -1
  95. package/dist/emit/draw/cycles/cyclicLines.js +1 -1
  96. package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
  97. package/dist/emit/draw/cycles/sineLine.js +1 -1
  98. package/dist/emit/draw/cycles/sineLine.js.map +1 -1
  99. package/dist/emit/draw/cycles/timeCycles.js +1 -1
  100. package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
  101. package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
  102. package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
  103. package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
  104. package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
  105. package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
  106. package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
  107. package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
  108. package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
  109. package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
  110. package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
  111. package/dist/emit/draw/fibA/fibChannel.js +1 -1
  112. package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
  113. package/dist/emit/draw/fibA/fibRetracement.js +1 -1
  114. package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
  115. package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
  116. package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
  117. package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
  118. package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
  119. package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
  120. package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
  121. package/dist/emit/draw/fibA/fibWedge.js +1 -1
  122. package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
  123. package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
  124. package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
  125. package/dist/emit/draw/fibB/fibCircles.js +1 -1
  126. package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
  127. package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
  128. package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
  129. package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
  130. package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
  131. package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
  132. package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
  133. package/dist/emit/draw/fibB/fibSpiral.js +1 -1
  134. package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
  135. package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
  136. package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
  137. package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
  138. package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
  139. package/dist/emit/draw/gann/gannBox.js +1 -1
  140. package/dist/emit/draw/gann/gannBox.js.map +1 -1
  141. package/dist/emit/draw/gann/gannFan.js +1 -1
  142. package/dist/emit/draw/gann/gannFan.js.map +1 -1
  143. package/dist/emit/draw/gann/gannSquare.js +1 -1
  144. package/dist/emit/draw/gann/gannSquare.js.map +1 -1
  145. package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
  146. package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
  147. package/dist/emit/draw/handle.d.ts +2 -2
  148. package/dist/emit/draw/handle.js +2 -2
  149. package/dist/emit/draw/handle.js.map +1 -1
  150. package/dist/emit/draw/index.js.map +1 -1
  151. package/dist/emit/draw/lines/crossLine.js +1 -1
  152. package/dist/emit/draw/lines/crossLine.js.map +1 -1
  153. package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
  154. package/dist/emit/draw/lines/horizontalLine.js +1 -1
  155. package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
  156. package/dist/emit/draw/lines/horizontalRay.js +1 -1
  157. package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
  158. package/dist/emit/draw/lines/line.d.ts +1 -1
  159. package/dist/emit/draw/lines/line.d.ts.map +1 -1
  160. package/dist/emit/draw/lines/line.js +2 -3
  161. package/dist/emit/draw/lines/line.js.map +1 -1
  162. package/dist/emit/draw/lines/trendAngle.js +1 -1
  163. package/dist/emit/draw/lines/trendAngle.js.map +1 -1
  164. package/dist/emit/draw/lines/verticalLine.js +1 -1
  165. package/dist/emit/draw/lines/verticalLine.js.map +1 -1
  166. package/dist/emit/draw/namespace.d.ts +1 -1
  167. package/dist/emit/draw/namespace.js +1 -1
  168. package/dist/emit/draw/namespace.js.map +1 -1
  169. package/dist/emit/draw/patterns/abcdPattern.js +1 -1
  170. package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
  171. package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
  172. package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
  173. package/dist/emit/draw/patterns/cypherPattern.js +1 -1
  174. package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
  175. package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
  176. package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
  177. package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
  178. package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
  179. package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
  180. package/dist/emit/draw/patterns/trianglePattern.js +1 -1
  181. package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
  182. package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
  183. package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
  184. package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
  185. package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
  186. package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
  187. package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
  188. package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
  189. package/dist/emit/draw/pushDrawing.js.map +1 -1
  190. package/dist/emit/draw/subIdAllocator.d.ts +1 -1
  191. package/dist/emit/draw/subIdAllocator.js +1 -1
  192. package/dist/emit/draw/subIdAllocator.js.map +1 -1
  193. package/dist/emit/draw/table/table.d.ts +1 -1
  194. package/dist/emit/draw/table/table.js.map +1 -1
  195. package/dist/emit/emissionsQueue.js.map +1 -1
  196. package/dist/emit/hash.js.map +1 -1
  197. package/dist/emit/hline.d.ts +6 -4
  198. package/dist/emit/hline.d.ts.map +1 -1
  199. package/dist/emit/hline.js +5 -2
  200. package/dist/emit/hline.js.map +1 -1
  201. package/dist/emit/index.d.ts +2 -1
  202. package/dist/emit/index.d.ts.map +1 -1
  203. package/dist/emit/index.js +2 -1
  204. package/dist/emit/index.js.map +1 -1
  205. package/dist/emit/logEmission.js.map +1 -1
  206. package/dist/emit/paneResolver.d.ts +52 -11
  207. package/dist/emit/paneResolver.d.ts.map +1 -1
  208. package/dist/emit/paneResolver.js +69 -26
  209. package/dist/emit/paneResolver.js.map +1 -1
  210. package/dist/emit/plot.d.ts.map +1 -1
  211. package/dist/emit/plot.js +2 -1
  212. package/dist/emit/plot.js.map +1 -1
  213. package/dist/emit/runtimeError.js.map +1 -1
  214. package/dist/execution/dispose.d.ts.map +1 -1
  215. package/dist/execution/dispose.js +7 -0
  216. package/dist/execution/dispose.js.map +1 -1
  217. package/dist/execution/drain.js.map +1 -1
  218. package/dist/execution/index.js.map +1 -1
  219. package/dist/execution/onBarClose.d.ts +9 -13
  220. package/dist/execution/onBarClose.d.ts.map +1 -1
  221. package/dist/execution/onBarClose.js +28 -59
  222. package/dist/execution/onBarClose.js.map +1 -1
  223. package/dist/execution/onBarTick.d.ts +4 -10
  224. package/dist/execution/onBarTick.d.ts.map +1 -1
  225. package/dist/execution/onBarTick.js +24 -57
  226. package/dist/execution/onBarTick.js.map +1 -1
  227. package/dist/execution/onHistory.js.map +1 -1
  228. package/dist/execution/runComputeStep.d.ts +68 -0
  229. package/dist/execution/runComputeStep.d.ts.map +1 -0
  230. package/dist/execution/runComputeStep.js +96 -0
  231. package/dist/execution/runComputeStep.js.map +1 -0
  232. package/dist/execution/secondaryStream.js.map +1 -1
  233. package/dist/index.d.ts +3 -1
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +2 -1
  236. package/dist/index.js.map +1 -1
  237. package/dist/inputs/index.js.map +1 -1
  238. package/dist/inputs/resolveInputs.js.map +1 -1
  239. package/dist/internal.d.ts +12 -0
  240. package/dist/internal.d.ts.map +1 -0
  241. package/dist/internal.js +14 -0
  242. package/dist/internal.js.map +1 -0
  243. package/dist/persistentStateStore.js.map +1 -1
  244. package/dist/persistentStateStore.runtime.d.ts +18 -4
  245. package/dist/persistentStateStore.runtime.d.ts.map +1 -1
  246. package/dist/persistentStateStore.runtime.js +111 -18
  247. package/dist/persistentStateStore.runtime.js.map +1 -1
  248. package/dist/persistentStateStore.validate.d.ts +11 -1
  249. package/dist/persistentStateStore.validate.d.ts.map +1 -1
  250. package/dist/persistentStateStore.validate.js +32 -3
  251. package/dist/persistentStateStore.validate.js.map +1 -1
  252. package/dist/primitives.js.map +1 -1
  253. package/dist/request/alignHtfSeriesCache.js.map +1 -1
  254. package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
  255. package/dist/request/alignHtfSeriesToLtf.js +2 -2
  256. package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
  257. package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
  258. package/dist/request/bucketLtfBarsCache.js.map +1 -1
  259. package/dist/request/index.js.map +1 -1
  260. package/dist/request/lowerTf.js.map +1 -1
  261. package/dist/request/pushOnce.js.map +1 -1
  262. package/dist/request/requestNamespace.js.map +1 -1
  263. package/dist/request/security.js.map +1 -1
  264. package/dist/request/streamBars.js.map +1 -1
  265. package/dist/ringBuffer.d.ts +2 -2
  266. package/dist/ringBuffer.js +1 -1
  267. package/dist/ringBuffer.js.map +1 -1
  268. package/dist/runtimeContext.d.ts +65 -7
  269. package/dist/runtimeContext.d.ts.map +1 -1
  270. package/dist/runtimeContext.js.map +1 -1
  271. package/dist/seriesView.d.ts +1 -1
  272. package/dist/seriesView.js +1 -1
  273. package/dist/seriesView.js.map +1 -1
  274. package/dist/state/index.js.map +1 -1
  275. package/dist/state/lifecycle.js.map +1 -1
  276. package/dist/state/stateNamespace.d.ts.map +1 -1
  277. package/dist/state/stateNamespace.js +13 -2
  278. package/dist/state/stateNamespace.js.map +1 -1
  279. package/dist/state/stateSlot.js.map +1 -1
  280. package/dist/stateStore.d.ts +7 -4
  281. package/dist/stateStore.d.ts.map +1 -1
  282. package/dist/stateStore.js.map +1 -1
  283. package/dist/streamState.d.ts +1 -1
  284. package/dist/streamState.js +1 -1
  285. package/dist/streamState.js.map +1 -1
  286. package/dist/ta/adl.js +2 -2
  287. package/dist/ta/adl.js.map +1 -1
  288. package/dist/ta/adr.d.ts +3 -3
  289. package/dist/ta/adr.js +5 -5
  290. package/dist/ta/adr.js.map +1 -1
  291. package/dist/ta/adx.d.ts +1 -1
  292. package/dist/ta/adx.js +3 -3
  293. package/dist/ta/adx.js.map +1 -1
  294. package/dist/ta/alma.d.ts +3 -3
  295. package/dist/ta/alma.js +5 -5
  296. package/dist/ta/alma.js.map +1 -1
  297. package/dist/ta/anchoredVolumeProfile.js.map +1 -1
  298. package/dist/ta/anchoredVwap.d.ts +1 -1
  299. package/dist/ta/anchoredVwap.js +3 -3
  300. package/dist/ta/anchoredVwap.js.map +1 -1
  301. package/dist/ta/ao.js +2 -2
  302. package/dist/ta/ao.js.map +1 -1
  303. package/dist/ta/aroon.js +2 -2
  304. package/dist/ta/aroon.js.map +1 -1
  305. package/dist/ta/aroonOsc.js +2 -2
  306. package/dist/ta/aroonOsc.js.map +1 -1
  307. package/dist/ta/atr.d.ts +1 -1
  308. package/dist/ta/atr.js +3 -3
  309. package/dist/ta/atr.js.map +1 -1
  310. package/dist/ta/barssince.js +1 -1
  311. package/dist/ta/barssince.js.map +1 -1
  312. package/dist/ta/bb.d.ts +1 -1
  313. package/dist/ta/bb.js +3 -3
  314. package/dist/ta/bb.js.map +1 -1
  315. package/dist/ta/bbPercentB.js +2 -2
  316. package/dist/ta/bbPercentB.js.map +1 -1
  317. package/dist/ta/bbw.js +2 -2
  318. package/dist/ta/bbw.js.map +1 -1
  319. package/dist/ta/bop.js +2 -2
  320. package/dist/ta/bop.js.map +1 -1
  321. package/dist/ta/cci.js +2 -2
  322. package/dist/ta/cci.js.map +1 -1
  323. package/dist/ta/chaikinOsc.d.ts +1 -1
  324. package/dist/ta/chaikinOsc.js +3 -3
  325. package/dist/ta/chaikinOsc.js.map +1 -1
  326. package/dist/ta/chandeKrollStop.d.ts +1 -1
  327. package/dist/ta/chandeKrollStop.js +3 -3
  328. package/dist/ta/chandeKrollStop.js.map +1 -1
  329. package/dist/ta/chandelier.d.ts +1 -1
  330. package/dist/ta/chandelier.js +3 -3
  331. package/dist/ta/chandelier.js.map +1 -1
  332. package/dist/ta/change.js +1 -1
  333. package/dist/ta/change.js.map +1 -1
  334. package/dist/ta/chop.js +2 -2
  335. package/dist/ta/chop.js.map +1 -1
  336. package/dist/ta/cmf.js +2 -2
  337. package/dist/ta/cmf.js.map +1 -1
  338. package/dist/ta/cmo.js +2 -2
  339. package/dist/ta/cmo.js.map +1 -1
  340. package/dist/ta/connorsRsi.d.ts +1 -1
  341. package/dist/ta/connorsRsi.js +3 -3
  342. package/dist/ta/connorsRsi.js.map +1 -1
  343. package/dist/ta/coppock.js +2 -2
  344. package/dist/ta/coppock.js.map +1 -1
  345. package/dist/ta/crossover.d.ts +1 -1
  346. package/dist/ta/crossover.js +2 -2
  347. package/dist/ta/crossover.js.map +1 -1
  348. package/dist/ta/crossunder.d.ts +1 -1
  349. package/dist/ta/crossunder.js +2 -2
  350. package/dist/ta/crossunder.js.map +1 -1
  351. package/dist/ta/dema.js +2 -2
  352. package/dist/ta/dema.js.map +1 -1
  353. package/dist/ta/dmi.d.ts +1 -1
  354. package/dist/ta/dmi.js +3 -3
  355. package/dist/ta/dmi.js.map +1 -1
  356. package/dist/ta/donchian.js +2 -2
  357. package/dist/ta/donchian.js.map +1 -1
  358. package/dist/ta/dpo.js +2 -2
  359. package/dist/ta/dpo.js.map +1 -1
  360. package/dist/ta/ema.d.ts +1 -1
  361. package/dist/ta/ema.js +3 -3
  362. package/dist/ta/ema.js.map +1 -1
  363. package/dist/ta/envelope.js +2 -2
  364. package/dist/ta/envelope.js.map +1 -1
  365. package/dist/ta/eom.d.ts +1 -1
  366. package/dist/ta/eom.js +3 -3
  367. package/dist/ta/eom.js.map +1 -1
  368. package/dist/ta/fisher.js +2 -2
  369. package/dist/ta/fisher.js.map +1 -1
  370. package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
  371. package/dist/ta/highest.js +1 -1
  372. package/dist/ta/highest.js.map +1 -1
  373. package/dist/ta/historicalVolatility.d.ts +1 -1
  374. package/dist/ta/historicalVolatility.js +3 -3
  375. package/dist/ta/historicalVolatility.js.map +1 -1
  376. package/dist/ta/hma.js +2 -2
  377. package/dist/ta/hma.js.map +1 -1
  378. package/dist/ta/ichimoku.d.ts +1 -1
  379. package/dist/ta/ichimoku.js +3 -3
  380. package/dist/ta/ichimoku.js.map +1 -1
  381. package/dist/ta/index.js.map +1 -1
  382. package/dist/ta/kama.js +2 -2
  383. package/dist/ta/kama.js.map +1 -1
  384. package/dist/ta/keltner.js +2 -2
  385. package/dist/ta/keltner.js.map +1 -1
  386. package/dist/ta/klinger.js +2 -2
  387. package/dist/ta/klinger.js.map +1 -1
  388. package/dist/ta/kst.js +2 -2
  389. package/dist/ta/kst.js.map +1 -1
  390. package/dist/ta/lib/adxFromDi.js +2 -2
  391. package/dist/ta/lib/adxFromDi.js.map +1 -1
  392. package/dist/ta/lib/applyOffset.js +2 -2
  393. package/dist/ta/lib/applyOffset.js.map +1 -1
  394. package/dist/ta/lib/computeMa.js +2 -2
  395. package/dist/ta/lib/computeMa.js.map +1 -1
  396. package/dist/ta/lib/computeMaOfFloat64.js +2 -2
  397. package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
  398. package/dist/ta/lib/directionalState.js +2 -2
  399. package/dist/ta/lib/directionalState.js.map +1 -1
  400. package/dist/ta/lib/donchianMid.js +2 -2
  401. package/dist/ta/lib/donchianMid.js.map +1 -1
  402. package/dist/ta/lib/emaFloat64.js +2 -2
  403. package/dist/ta/lib/emaFloat64.js.map +1 -1
  404. package/dist/ta/lib/linearRegression.js +2 -2
  405. package/dist/ta/lib/linearRegression.js.map +1 -1
  406. package/dist/ta/lib/maTypes.js.map +1 -1
  407. package/dist/ta/lib/pearson.js +2 -2
  408. package/dist/ta/lib/pearson.js.map +1 -1
  409. package/dist/ta/lib/pickCandleSource.js +2 -2
  410. package/dist/ta/lib/pickCandleSource.js.map +1 -1
  411. package/dist/ta/lib/readSourceField.js +2 -2
  412. package/dist/ta/lib/readSourceField.js.map +1 -1
  413. package/dist/ta/lib/rollingStddev.js +2 -2
  414. package/dist/ta/lib/rollingStddev.js.map +1 -1
  415. package/dist/ta/lib/smaFloat64.js +2 -2
  416. package/dist/ta/lib/smaFloat64.js.map +1 -1
  417. package/dist/ta/lib/smmaFloat64.js +2 -2
  418. package/dist/ta/lib/smmaFloat64.js.map +1 -1
  419. package/dist/ta/lib/sourceValue.js.map +1 -1
  420. package/dist/ta/lib/trSeries.js +2 -2
  421. package/dist/ta/lib/trSeries.js.map +1 -1
  422. package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
  423. package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
  424. package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
  425. package/dist/ta/lib/volume-profile/index.js.map +1 -1
  426. package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
  427. package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
  428. package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
  429. package/dist/ta/lib/volume-profile/types.js.map +1 -1
  430. package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
  431. package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
  432. package/dist/ta/lib/vwmaFloat64.js +2 -2
  433. package/dist/ta/lib/vwmaFloat64.js.map +1 -1
  434. package/dist/ta/lib/wilderDirectional.js +2 -2
  435. package/dist/ta/lib/wilderDirectional.js.map +1 -1
  436. package/dist/ta/lib/wilderSmoothing.js +2 -2
  437. package/dist/ta/lib/wilderSmoothing.js.map +1 -1
  438. package/dist/ta/lib/wmaFloat64.js +2 -2
  439. package/dist/ta/lib/wmaFloat64.js.map +1 -1
  440. package/dist/ta/lowest.js +1 -1
  441. package/dist/ta/lowest.js.map +1 -1
  442. package/dist/ta/lsma.js +2 -2
  443. package/dist/ta/lsma.js.map +1 -1
  444. package/dist/ta/maRibbon.js +2 -2
  445. package/dist/ta/maRibbon.js.map +1 -1
  446. package/dist/ta/macd.d.ts +1 -1
  447. package/dist/ta/macd.js +4 -4
  448. package/dist/ta/macd.js.map +1 -1
  449. package/dist/ta/massIndex.d.ts +1 -1
  450. package/dist/ta/massIndex.js +3 -3
  451. package/dist/ta/massIndex.js.map +1 -1
  452. package/dist/ta/mcginley.js +2 -2
  453. package/dist/ta/mcginley.js.map +1 -1
  454. package/dist/ta/median.js +2 -2
  455. package/dist/ta/median.js.map +1 -1
  456. package/dist/ta/mfi.d.ts +1 -1
  457. package/dist/ta/mfi.js +3 -3
  458. package/dist/ta/mfi.js.map +1 -1
  459. package/dist/ta/momentum.js +2 -2
  460. package/dist/ta/momentum.js.map +1 -1
  461. package/dist/ta/netVolume.d.ts +1 -1
  462. package/dist/ta/netVolume.js +3 -3
  463. package/dist/ta/netVolume.js.map +1 -1
  464. package/dist/ta/nvi.d.ts +1 -1
  465. package/dist/ta/nvi.js +3 -3
  466. package/dist/ta/nvi.js.map +1 -1
  467. package/dist/ta/nz.js +1 -1
  468. package/dist/ta/nz.js.map +1 -1
  469. package/dist/ta/obv.js +2 -2
  470. package/dist/ta/obv.js.map +1 -1
  471. package/dist/ta/persistence.js.map +1 -1
  472. package/dist/ta/pivotsHighLow.js +2 -2
  473. package/dist/ta/pivotsHighLow.js.map +1 -1
  474. package/dist/ta/pivotsStandard.d.ts +1 -1
  475. package/dist/ta/pivotsStandard.js +3 -3
  476. package/dist/ta/pivotsStandard.js.map +1 -1
  477. package/dist/ta/pmo.js +2 -2
  478. package/dist/ta/pmo.js.map +1 -1
  479. package/dist/ta/ppo.d.ts +1 -1
  480. package/dist/ta/ppo.js +3 -3
  481. package/dist/ta/ppo.js.map +1 -1
  482. package/dist/ta/psar.js +2 -2
  483. package/dist/ta/psar.js.map +1 -1
  484. package/dist/ta/pvi.d.ts +1 -1
  485. package/dist/ta/pvi.js +3 -3
  486. package/dist/ta/pvi.js.map +1 -1
  487. package/dist/ta/pvo.d.ts +1 -1
  488. package/dist/ta/pvo.js +3 -3
  489. package/dist/ta/pvo.js.map +1 -1
  490. package/dist/ta/pvt.d.ts +1 -1
  491. package/dist/ta/pvt.js +3 -3
  492. package/dist/ta/pvt.js.map +1 -1
  493. package/dist/ta/registry.js.map +1 -1
  494. package/dist/ta/roc.js +2 -2
  495. package/dist/ta/roc.js.map +1 -1
  496. package/dist/ta/rsi.d.ts +1 -1
  497. package/dist/ta/rsi.js +3 -3
  498. package/dist/ta/rsi.js.map +1 -1
  499. package/dist/ta/rvgi.js +2 -2
  500. package/dist/ta/rvgi.js.map +1 -1
  501. package/dist/ta/rvi.d.ts +1 -1
  502. package/dist/ta/rvi.js +3 -3
  503. package/dist/ta/rvi.js.map +1 -1
  504. package/dist/ta/sessionVolumeProfile.js.map +1 -1
  505. package/dist/ta/sma.d.ts +1 -1
  506. package/dist/ta/sma.js +3 -3
  507. package/dist/ta/sma.js.map +1 -1
  508. package/dist/ta/smi.js +2 -2
  509. package/dist/ta/smi.js.map +1 -1
  510. package/dist/ta/smma.js +2 -2
  511. package/dist/ta/smma.js.map +1 -1
  512. package/dist/ta/stdev.d.ts +1 -1
  513. package/dist/ta/stdev.js +3 -3
  514. package/dist/ta/stdev.js.map +1 -1
  515. package/dist/ta/stoch.js +2 -2
  516. package/dist/ta/stoch.js.map +1 -1
  517. package/dist/ta/stochRsi.js +2 -2
  518. package/dist/ta/stochRsi.js.map +1 -1
  519. package/dist/ta/supertrend.d.ts +1 -1
  520. package/dist/ta/supertrend.js +3 -3
  521. package/dist/ta/supertrend.js.map +1 -1
  522. package/dist/ta/tema.js +2 -2
  523. package/dist/ta/tema.js.map +1 -1
  524. package/dist/ta/trendStrengthIndex.d.ts +2 -2
  525. package/dist/ta/trendStrengthIndex.js +4 -4
  526. package/dist/ta/trendStrengthIndex.js.map +1 -1
  527. package/dist/ta/trix.d.ts +1 -1
  528. package/dist/ta/trix.js +3 -3
  529. package/dist/ta/trix.js.map +1 -1
  530. package/dist/ta/tsi.js +2 -2
  531. package/dist/ta/tsi.js.map +1 -1
  532. package/dist/ta/ulcerIndex.js +2 -2
  533. package/dist/ta/ulcerIndex.js.map +1 -1
  534. package/dist/ta/ultimateOsc.js +2 -2
  535. package/dist/ta/ultimateOsc.js.map +1 -1
  536. package/dist/ta/valuewhen.js +1 -1
  537. package/dist/ta/valuewhen.js.map +1 -1
  538. package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
  539. package/dist/ta/visibleRangeVolumeProfile.js +2 -2
  540. package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
  541. package/dist/ta/vol.js +2 -2
  542. package/dist/ta/vol.js.map +1 -1
  543. package/dist/ta/volatilityStop.d.ts +1 -1
  544. package/dist/ta/volatilityStop.js +3 -3
  545. package/dist/ta/volatilityStop.js.map +1 -1
  546. package/dist/ta/vortex.d.ts +1 -1
  547. package/dist/ta/vortex.js +3 -3
  548. package/dist/ta/vortex.js.map +1 -1
  549. package/dist/ta/vwap.d.ts +3 -3
  550. package/dist/ta/vwap.js +5 -5
  551. package/dist/ta/vwap.js.map +1 -1
  552. package/dist/ta/vwma.js +2 -2
  553. package/dist/ta/vwma.js.map +1 -1
  554. package/dist/ta/williamsFractal.js +2 -2
  555. package/dist/ta/williamsFractal.js.map +1 -1
  556. package/dist/ta/williamsR.js +2 -2
  557. package/dist/ta/williamsR.js.map +1 -1
  558. package/dist/ta/wma.js +2 -2
  559. package/dist/ta/wma.js.map +1 -1
  560. package/dist/ta/zigZag.js +2 -2
  561. package/dist/ta/zigZag.js.map +1 -1
  562. package/dist/views/barstateView.js.map +1 -1
  563. package/dist/views/index.js.map +1 -1
  564. package/dist/views/refreshRuntimeViews.js.map +1 -1
  565. package/dist/views/symInfoView.js.map +1 -1
  566. package/dist/views/timeframeView.js.map +1 -1
  567. package/package.json +7 -3
@@ -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,8 +7,8 @@ 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
  *
@@ -32,8 +32,8 @@ function emit(ctx, handleId, kind, op, state) {
32
32
  * full merged state.
33
33
  *
34
34
  * `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
35
+ * re-emits the FULL merged state under `op: "update"`. `remove()`
36
+ * emits one final `op: "remove"` with the
37
37
  * last-known state and flags the slot `removed: true`; subsequent
38
38
  * `update` / `remove` calls on the returned handle are no-ops.
39
39
  *
@@ -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 { ACTIVE_RUNTIME_CONTEXT, type RuntimeContext } 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\nfunction emit(\n ctx: RuntimeContext,\n handleId: string,\n kind: DrawingKind,\n op: \"create\" | \"update\" | \"remove\",\n state: DrawingState,\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 });\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 * @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 let slot: { handleId: string; kind: DrawingKind; state: DrawingState; removed: boolean };\n let op: \"create\" | \"update\";\n if (existing === undefined) {\n slot = { handleId, kind, state: initialState, 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.\n existing.state = mergeState(existing.state, initialState);\n existing.removed = false;\n slot = existing;\n op = \"update\";\n }\n\n emit(ctx, handleId, kind, op, slot.state);\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 s.state = mergeState(s.state, patch);\n emit(liveCtx, handleId, kind, \"update\", s.state);\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.\n s.removed = true;\n emit(liveCtx, handleId, kind, \"remove\", s.state);\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";
@@ -1 +1 @@
1
- {"version":3,"file":"horizontalRay.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/horizontalRay.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,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,yDAAyD,CAAC;AAEtF,SAAS,iBAAiB,CAAC,MAAc,EAAE,MAAkB,EAAE,IAAmB;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,GAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AAwCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,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,iBAAiB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"horizontalRay.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/horizontalRay.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,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,yDAAyD,CAAC;AAEtF,SAAS,iBAAiB,CAAC,MAAc,EAAE,MAAkB,EAAE,IAAmB;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,GAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AAwCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,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,iBAAiB,CAAC,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// (HorizontalRayDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/horizontal-ray-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n HorizontalRayState,\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.horizontalRay called outside an active script step\";\n\nfunction horizontalRayImpl(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: HorizontalRayState = { kind: \"horizontal-ray\", anchor, style: opts };\n return createDrawingHandle(slotId, subId, \"horizontal-ray\", state);\n}\n\n/**\n * Draw a horizontal ray starting at `anchor` and extending to the\n * right edge of the viewport at constant price.\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.horizontalRay demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.horizontalRay(\n * { time: bar.time, price: bar.close },\n * { color: \"#10b981\" },\n * );\n * },\n * });\n */\nexport function horizontalRay(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 horizontalRay = horizontalRay;\n * // void fn;\n */\nexport function horizontalRay(\n slotId: string,\n anchor: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link horizontalRay}. 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 horizontalRay = horizontalRay;\n * // void fn;\n */\nexport function horizontalRay(\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 horizontalRayImpl(arg1, arg2 as WorldPoint, arg3 ?? {});\n}\n"]}
@@ -3,7 +3,7 @@ import type { DrawingHandle, LineDrawStyle, WorldPoint } from "@invinite-org/cha
3
3
  * Draw a straight line between two world anchors. The invinite `ray`
4
4
  * tool collapses into this kind via `style.extendRight: true`; the
5
5
  * `extended-line` tool collapses via `extendLeft: true` + `extendRight:
6
- * true` per PLAN.md §3.1. The handle is stable across bars per §10.3 —
6
+ * true`. The handle is stable across bars per §10.3 —
7
7
  * subsequent in-bar `update(patch)` calls merge into the slot's state
8
8
  * and re-emit the full payload under `op: "update"`.
9
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/lines/line.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EAEb,UAAU,EACb,MAAM,8BAA8B,CAAC;AAqBtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;AACxF;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAChB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,aAAa,GACrB,aAAa,CAAC"}
1
+ {"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/lines/line.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EAEb,UAAU,EACb,MAAM,8BAA8B,CAAC;AAqBtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;AACxF;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAChB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,aAAa,GACrB,aAAa,CAAC"}
@@ -8,9 +8,8 @@
8
8
  // invinite/src/components/trading-chart/tools/line-tool.ts (base),
9
9
  // invinite/src/components/trading-chart/tools/ray-tool.ts (extendRight),
10
10
  // invinite/src/components/trading-chart/tools/extended-line-tool.ts
11
- // (extendLeft + extendRight). Re-licensed MIT for chartlang. See
12
- // PLAN.md §3.1 + §22.10. Per PLAN.md §3.1 the three invinite tools
13
- // collapse into one `line` kind on the wire.
11
+ // (extendLeft + extendRight). Re-licensed MIT for chartlang.
12
+ // The three invinite tools collapse into one `line` kind on the wire.
14
13
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
15
14
  import { createDrawingHandle } from "../handle.js";
16
15
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/line.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,4EAA4E;AAC5E,iEAAiE;AACjE,iBAAiB;AACjB,qEAAqE;AACrE,2EAA2E;AAC3E,sEAAsE;AACtE,qEAAqE;AACrE,mEAAmE;AACnE,6CAA6C;AAS7C,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,gDAAgD,CAAC;AAE7E,SAAS,QAAQ,CACb,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,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAgDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAChB,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,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/line.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,4EAA4E;AAC5E,iEAAiE;AACjE,iBAAiB;AACjB,qEAAqE;AACrE,2EAA2E;AAC3E,sEAAsE;AACtE,iEAAiE;AACjE,sEAAsE;AAStE,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,gDAAgD,CAAC;AAE7E,SAAS,QAAQ,CACb,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,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAgDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAChB,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,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,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 (LineDrawing),\n// commit 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/line-tool.ts (base),\n// invinite/src/components/trading-chart/tools/ray-tool.ts (extendRight),\n// invinite/src/components/trading-chart/tools/extended-line-tool.ts\n// (extendLeft + extendRight). Re-licensed MIT for chartlang.\n// The three invinite tools collapse into one `line` kind on the wire.\n\nimport type {\n DrawingHandle,\n LineDrawStyle,\n LineState,\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.line called outside an active script step\";\n\nfunction lineImpl(\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: LineState = { kind: \"line\", anchors: [a, b], style: opts };\n return createDrawingHandle(slotId, subId, \"line\", state);\n}\n\n/**\n * Draw a straight line between two world anchors. The invinite `ray`\n * tool collapses into this kind via `style.extendRight: true`; the\n * `extended-line` tool collapses via `extendLeft: true` + `extendRight:\n * true`. The handle is stable across bars per §10.3 —\n * subsequent in-bar `update(patch)` calls merge into the slot's state\n * and re-emit the full payload under `op: \"update\"`.\n *\n * @anchors `a`, `b` — two `WorldPoint`s\n * @anchorCount 2\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.line demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.line(\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.low },\n * { color: \"#3b82f6\" },\n * );\n * },\n * });\n */\nexport function line(a: WorldPoint, b: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload — Task 2's callsite-id transformer\n * rewrites every script-side `draw.line(a, b, opts)` into\n * `draw.line(slotId, a, b, opts)`.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof line = line;\n * // void fn;\n */\nexport function line(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link line}. 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 line = line;\n * // void fn;\n */\nexport function line(\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 lineImpl(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/trend-angle-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":"trendAngle.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/trendAngle.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,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrF,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":"trendAngle.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/trendAngle.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,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrF,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// (TrendAngleDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/trend-angle-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n LineDrawStyle,\n TrendAngleState,\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.trendAngle called outside an active script step\";\n\nfunction trendAngleImpl(\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: TrendAngleState = { kind: \"trend-angle\", anchors: [a, b], style: opts };\n return createDrawingHandle(slotId, subId, \"trend-angle\", state);\n}\n\n/**\n * Draw a line between two anchors plus a small arc + angle label at\n * the `a` anchor. The angle is the screen-space slope between `a`\n * and `b`, formatted as `${value.toFixed(1)}°`.\n *\n * @anchors `a`, `b` — two `WorldPoint`s\n * @anchorCount 2\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.trendAngle demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.trendAngle(\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { color: \"#22c55e\" },\n * );\n * },\n * });\n */\nexport function trendAngle(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 trendAngle = trendAngle;\n * // void fn;\n */\nexport function trendAngle(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link trendAngle}. 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 trendAngle = trendAngle;\n * // void fn;\n */\nexport function trendAngle(\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 trendAngleImpl(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/vertical-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":"verticalLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/verticalLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,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,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CAAC,MAAc,EAAE,IAAU,EAAE,IAAmB;IACrE,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,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAiCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAAmB,EACnB,IAA2B,EAC3B,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,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"verticalLine.js","sourceRoot":"","sources":["../../../../src/emit/draw/lines/verticalLine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,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,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CAAC,MAAc,EAAE,IAAU,EAAE,IAAmB;IACrE,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,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAiCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAAmB,EACnB,IAA2B,EAC3B,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,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpD,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// (VerticalLineDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/vertical-line-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n LineDrawStyle,\n Time,\n VerticalLineState,\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.verticalLine called outside an active script step\";\n\nfunction verticalLineImpl(slotId: string, time: Time, 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: VerticalLineState = { kind: \"vertical-line\", time, style: opts };\n return createDrawingHandle(slotId, subId, \"vertical-line\", state);\n}\n\n/**\n * Draw a vertical line at the supplied `time` that spans the full\n * viewport height.\n *\n * @anchors `time` — a single `Time`\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.verticalLine demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.verticalLine(bar.time, { color: \"#f97316\" });\n * },\n * });\n */\nexport function verticalLine(time: Time, 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 verticalLine = verticalLine;\n * // void fn;\n */\nexport function verticalLine(slotId: string, time: Time, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Implementation signature for {@link verticalLine}. 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 verticalLine = verticalLine;\n * // void fn;\n */\nexport function verticalLine(\n arg1: string | Time,\n arg2?: Time | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || typeof arg2 !== \"number\") {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return verticalLineImpl(arg1, arg2, arg3 ?? {});\n}\n"]}
@@ -13,7 +13,7 @@ import type { DrawNamespace } from "@invinite-org/chartlang-core";
13
13
  * slot-id-prefixed compiler form from the bare script-facing form
14
14
  * which always throws. This is the Phase-3 swap seam for the
15
15
  * `primitives.ts:draw` re-export, mirroring how `TA_REGISTRY` swaps
16
- * in Phase 2 (PLAN.md §5.5).
16
+ * in Phase 2.
17
17
  *
18
18
  * @since 0.3
19
19
  * @stable
@@ -158,7 +158,7 @@ const IMPL_KIND_NAMES = new Set(Object.keys(KIND_IMPLS));
158
158
  * slot-id-prefixed compiler form from the bare script-facing form
159
159
  * which always throws. This is the Phase-3 swap seam for the
160
160
  * `primitives.ts:draw` re-export, mirroring how `TA_REGISTRY` swaps
161
- * in Phase 2 (PLAN.md §5.5).
161
+ * in Phase 2.
162
162
  *
163
163
  * @since 0.3
164
164
  * @stable
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/emit/draw/namespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/emit/draw/namespace.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 { DrawNamespace } from \"@invinite-org/chartlang-core\";\nimport { draw as CORE_DRAW_STUB } from \"@invinite-org/chartlang-core\";\n\nimport { arrow } from \"./annotations/arrow.js\";\nimport { arrowMarkDown } from \"./annotations/arrowMarkDown.js\";\nimport { arrowMarkUp } from \"./annotations/arrowMarkUp.js\";\nimport { arrowMarker } from \"./annotations/arrowMarker.js\";\nimport { text } from \"./annotations/text.js\";\nimport { circle } from \"./boxes/circle.js\";\nimport { ellipse } from \"./boxes/ellipse.js\";\nimport { marker } from \"./boxes/marker.js\";\nimport { path } from \"./boxes/path.js\";\nimport { polyline } from \"./boxes/polyline.js\";\nimport { rectangle } from \"./boxes/rectangle.js\";\nimport { rotatedRectangle } from \"./boxes/rotatedRectangle.js\";\nimport { triangle } from \"./boxes/triangle.js\";\nimport { disjointChannel } from \"./channels/disjointChannel.js\";\nimport { flatTopBottom } from \"./channels/flatTopBottom.js\";\nimport { regressionTrend } from \"./channels/regressionTrend.js\";\nimport { trendChannel } from \"./channels/trendChannel.js\";\nimport { frame } from \"./containers/frame.js\";\nimport { group } from \"./containers/group.js\";\nimport { arc } from \"./curves/arc.js\";\nimport { brush } from \"./curves/brush.js\";\nimport { curve } from \"./curves/curve.js\";\nimport { doubleCurve } from \"./curves/doubleCurve.js\";\nimport { highlighter } from \"./curves/highlighter.js\";\nimport { pen } from \"./curves/pen.js\";\nimport { cyclicLines } from \"./cycles/cyclicLines.js\";\nimport { sineLine } from \"./cycles/sineLine.js\";\nimport { timeCycles } from \"./cycles/timeCycles.js\";\nimport { elliottCorrectionWave } from \"./elliott/elliottCorrectionWave.js\";\nimport { elliottDoubleCombo } from \"./elliott/elliottDoubleCombo.js\";\nimport { elliottImpulseWave } from \"./elliott/elliottImpulseWave.js\";\nimport { elliottTriangleWave } from \"./elliott/elliottTriangleWave.js\";\nimport { elliottTripleCombo } from \"./elliott/elliottTripleCombo.js\";\nimport { fibChannel } from \"./fibA/fibChannel.js\";\nimport { fibRetracement } from \"./fibA/fibRetracement.js\";\nimport { fibTimeZone } from \"./fibA/fibTimeZone.js\";\nimport { fibTrendExtension } from \"./fibA/fibTrendExtension.js\";\nimport { fibWedge } from \"./fibA/fibWedge.js\";\nimport { fibCircles } from \"./fibB/fibCircles.js\";\nimport { fibSpeedArcs } from \"./fibB/fibSpeedArcs.js\";\nimport { fibSpeedFan } from \"./fibB/fibSpeedFan.js\";\nimport { fibSpiral } from \"./fibB/fibSpiral.js\";\nimport { fibTrendTime } from \"./fibB/fibTrendTime.js\";\nimport { gannBox } from \"./gann/gannBox.js\";\nimport { gannFan } from \"./gann/gannFan.js\";\nimport { gannSquare } from \"./gann/gannSquare.js\";\nimport { gannSquareFixed } from \"./gann/gannSquareFixed.js\";\nimport { crossLine } from \"./lines/crossLine.js\";\nimport { horizontalLine } from \"./lines/horizontalLine.js\";\nimport { horizontalRay } from \"./lines/horizontalRay.js\";\nimport { line } from \"./lines/line.js\";\nimport { trendAngle } from \"./lines/trendAngle.js\";\nimport { verticalLine } from \"./lines/verticalLine.js\";\nimport { abcdPattern } from \"./patterns/abcdPattern.js\";\nimport { cypherPattern } from \"./patterns/cypherPattern.js\";\nimport { headAndShoulders } from \"./patterns/headAndShoulders.js\";\nimport { threeDrivesPattern } from \"./patterns/threeDrivesPattern.js\";\nimport { trianglePattern } from \"./patterns/trianglePattern.js\";\nimport { xabcdPattern } from \"./patterns/xabcdPattern.js\";\nimport { pitchfan } from \"./pitchforks/pitchfan.js\";\nimport { pitchfork } from \"./pitchforks/pitchfork.js\";\nimport { table } from \"./table/table.js\";\n\nconst KIND_IMPLS = {\n // Task 5 — Lines/Rays\n line,\n horizontalLine,\n horizontalRay,\n verticalLine,\n crossLine,\n trendAngle,\n // Task 6 — Boxes A\n rectangle,\n rotatedRectangle,\n triangle,\n polyline,\n // Task 7 — Boxes B\n circle,\n ellipse,\n path,\n marker,\n // Task 8 — Curves\n arc,\n curve,\n doubleCurve,\n // Task 8 — Freehand\n pen,\n highlighter,\n brush,\n // Task 9 — Annotations\n text,\n arrow,\n arrowMarker,\n arrowMarkUp,\n arrowMarkDown,\n // Task 10 — Channels\n trendChannel,\n flatTopBottom,\n disjointChannel,\n regressionTrend,\n // Task 11 — Fibonacci A\n fibRetracement,\n fibTrendExtension,\n fibChannel,\n fibTimeZone,\n fibWedge,\n // Task 12 — Fibonacci B\n fibSpeedFan,\n fibSpeedArcs,\n fibSpiral,\n fibCircles,\n fibTrendTime,\n // Task 13 — Gann\n gannBox,\n gannSquareFixed,\n gannSquare,\n gannFan,\n // Task 14 — Pitchforks\n pitchfork,\n pitchfan,\n // Task 15 — Harmonic Patterns\n xabcdPattern,\n cypherPattern,\n headAndShoulders,\n abcdPattern,\n trianglePattern,\n threeDrivesPattern,\n // Task 16 — Elliott Waves\n elliottImpulseWave,\n elliottCorrectionWave,\n elliottTriangleWave,\n elliottDoubleCombo,\n elliottTripleCombo,\n // Task 17 — Cycles\n cyclicLines,\n timeCycles,\n sineLine,\n // Task 18 — Containers\n group,\n frame,\n // Phase 5 — Viewport overlays\n table,\n} as const;\n\nconst IMPL_KIND_NAMES: ReadonlySet<string> = new Set(Object.keys(KIND_IMPLS));\n\n/**\n * Runtime `draw` namespace. After Task 18 every one of the 61\n * `DrawingKind`s has a real per-kind impl wired into `KIND_IMPLS`;\n * Phase 5 adds the viewport-anchored `table` kind.\n * the Proxy's `else` branch (fall-through to the core throwing-stub\n * Proxy) is dead code at runtime — kept as defence-in-depth for\n * unknown property access (e.g. JS code accessing a property name\n * outside the `DrawNamespace` type surface).\n *\n * Each per-kind impl is the compiler-injected overload — the\n * dispatch branches on `typeof arg1 === \"string\"` to discriminate the\n * slot-id-prefixed compiler form from the bare script-facing form\n * which always throws. This is the Phase-3 swap seam for the\n * `primitives.ts:draw` re-export, mirroring how `TA_REGISTRY` swaps\n * in Phase 2.\n *\n * @since 0.3\n * @stable\n * @example\n * import { draw } from \"@invinite-org/chartlang-runtime\";\n * // type S = typeof draw;\n * void draw;\n */\nexport const DRAW_NAMESPACE: DrawNamespace = new Proxy(KIND_IMPLS as unknown as DrawNamespace, {\n get(target, property): unknown {\n const name = String(property);\n if (IMPL_KIND_NAMES.has(name)) {\n return Reflect.get(target, property);\n }\n // After Task 18 every `DrawingKind` has a real impl in\n // `KIND_IMPLS` so this branch is unreachable through the\n // `DrawNamespace` type surface — it stays as defence-in-depth\n // for non-kind property access (e.g. JS code that reads\n // `draw[\"foo\"]` through a typed-erased view). Falling through\n // to core's throwing-stub keeps the failure mode consistent\n // with the pre-Task-18 behaviour.\n return Reflect.get(CORE_DRAW_STUB, property);\n },\n});\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/abcd-pattern-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":"abcdPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/abcdPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,sEAAsE;AACtE,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,CAAC,MAAc,EAAE,OAAmB,EAAE,IAAmB;IAC7E,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,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,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,eAAe,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"abcdPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/abcdPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,sEAAsE;AACtE,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,CAAC,MAAc,EAAE,OAAmB,EAAE,IAAmB;IAC7E,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,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,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,eAAe,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,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// (AbcdPatternDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/abcd-pattern-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AbcdPatternState,\n AnchorQuad,\n DrawingHandle,\n LineDrawStyle,\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.abcdPattern called outside an active script step\";\n\nfunction abcdPatternImpl(slotId: string, anchors: AnchorQuad, 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: AbcdPatternState = { kind: \"abcd-pattern\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"abcd-pattern\", state);\n}\n\n/**\n * Draw an ABCD measured-move pattern through 4 world anchors `[A, B,\n * C, D]`. The renderer strokes the connecting legs (A-B, B-C, C-D)\n * and labels each pivot. Mirrors invinite's `abcd-pattern-tool.ts`\n * shape.\n *\n * @anchors `anchors` — `[A, B, C, D]` quad of world points\n * @anchorCount 4\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.abcdPattern demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.abcdPattern([\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 20_000, price: bar.high },\n * { time: bar.time + 40_000, price: bar.close },\n * { time: bar.time + 60_000, price: bar.high + 1 },\n * ]);\n * },\n * });\n */\nexport function abcdPattern(anchors: AnchorQuad, 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 abcdPattern = abcdPattern;\n * // void fn;\n */\nexport function abcdPattern(\n slotId: string,\n anchors: AnchorQuad,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link abcdPattern}. 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 abcdPattern = abcdPattern;\n * // void fn;\n */\nexport function abcdPattern(\n arg1: string | AnchorQuad,\n arg2?: AnchorQuad | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return abcdPatternImpl(arg1, arg2 as AnchorQuad, arg3 ?? {});\n}\n"]}
@@ -4,8 +4,7 @@ import type { AnchorQuint, DrawingHandle, LineDrawStyle } from "@invinite-org/ch
4
4
  * D]`. The renderer strokes the connecting legs (X-A, A-B, B-C, C-D)
5
5
  * and labels each pivot. Mirrors invinite's `CypherPatternDrawing`
6
6
  * schema — `cypher-pattern` has no standalone tool in invinite, only
7
- * the y-doc-bridge type; the UI surface lives in `defineDrawing`
8
- * (Task 20).
7
+ * the y-doc-bridge type; the UI surface lives in `defineDrawing`.
9
8
  *
10
9
  * @anchors `anchors` — `[X, A, B, C, D]` quint of world points
11
10
  * @anchorCount 5
@@ -1 +1 @@
1
- {"version":3,"file":"cypherPattern.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/cypherPattern.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACR,WAAW,EAEX,aAAa,EACb,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;AACzF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,aAAa,GACrB,aAAa,CAAC"}
1
+ {"version":3,"file":"cypherPattern.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/cypherPattern.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACR,WAAW,EAEX,aAAa,EACb,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;AACzF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,aAAa,GACrB,aAAa,CAAC"}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // `cypher-pattern` has no standalone invinite tool — the UI surface
9
9
  // lives in `defineDrawing` (Task 20) only. Hence the provenance
10
- // header cites only y-doc-bridge.ts (see PLAN.md §3.1).
10
+ // header cites only y-doc-bridge.ts.
11
11
  // Re-licensed MIT for chartlang.
12
12
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
13
13
  import { createDrawingHandle } from "../handle.js";
@@ -1 +1 @@
1
- {"version":3,"file":"cypherPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/cypherPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,4DAA4D;AAC5D,oEAAoE;AACpE,gEAAgE;AAChE,wDAAwD;AACxD,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,yDAAyD,CAAC;AAEtF,SAAS,iBAAiB,CACtB,MAAc,EACd,OAAoB,EACpB,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,GAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,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,iBAAiB,CAAC,IAAI,EAAE,IAAmB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"cypherPattern.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/cypherPattern.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,4DAA4D;AAC5D,oEAAoE;AACpE,gEAAgE;AAChE,qCAAqC;AACrC,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,yDAAyD,CAAC;AAEtF,SAAS,iBAAiB,CACtB,MAAc,EACd,OAAoB,EACpB,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,GAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,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,iBAAiB,CAAC,IAAI,EAAE,IAAmB,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// (CypherPatternDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// `cypher-pattern` has no standalone invinite tool — the UI surface\n// lives in `defineDrawing` (Task 20) only. Hence the provenance\n// header cites only y-doc-bridge.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorQuint,\n CypherPatternState,\n DrawingHandle,\n LineDrawStyle,\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.cypherPattern called outside an active script step\";\n\nfunction cypherPatternImpl(\n slotId: string,\n anchors: AnchorQuint,\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: CypherPatternState = { kind: \"cypher-pattern\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"cypher-pattern\", state);\n}\n\n/**\n * Draw a Cypher harmonic pattern through 5 world anchors `[X, A, B, C,\n * D]`. The renderer strokes the connecting legs (X-A, A-B, B-C, C-D)\n * and labels each pivot. Mirrors invinite's `CypherPatternDrawing`\n * schema — `cypher-pattern` has no standalone tool in invinite, only\n * the y-doc-bridge type; the UI surface lives in `defineDrawing`.\n *\n * @anchors `anchors` — `[X, A, B, C, D]` quint of world points\n * @anchorCount 5\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.cypherPattern demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.cypherPattern([\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 15_000, price: bar.high },\n * { time: bar.time + 30_000, price: bar.close },\n * { time: bar.time + 45_000, price: bar.high - 1 },\n * { time: bar.time + 60_000, price: bar.low + 1 },\n * ]);\n * },\n * });\n */\nexport function cypherPattern(anchors: AnchorQuint, 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 cypherPattern = cypherPattern;\n * // void fn;\n */\nexport function cypherPattern(\n slotId: string,\n anchors: AnchorQuint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link cypherPattern}. 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 cypherPattern = cypherPattern;\n * // void fn;\n */\nexport function cypherPattern(\n arg1: string | AnchorQuint,\n arg2?: AnchorQuint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return cypherPatternImpl(arg1, arg2 as AnchorQuint, arg3 ?? {});\n}\n"]}
@@ -12,7 +12,7 @@
12
12
  // `HeadAndShouldersState.anchors: AnchorQuint` is a 5-anchor shell
13
13
  // (leftShoulder, leftLow, head, rightLow, rightShoulder) — start/end
14
14
  // projection is flagged as a Task-1 reshape follow-up.
15
- // Re-licensed MIT for chartlang. See PLAN.md §3.1 + §22.10.
15
+ // Re-licensed MIT for chartlang.
16
16
  import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
17
17
  import { createDrawingHandle } from "../handle.js";
18
18
  import { nextSubId } from "../subIdAllocator.js";
@@ -1 +1 @@
1
- {"version":3,"file":"headAndShoulders.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/headAndShoulders.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,wCAAwC;AACxC,4DAA4D;AAC5D,iBAAiB;AACjB,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,qEAAqE;AACrE,uDAAuD;AACvD,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,4DAA4D,CAAC;AAEzF,SAAS,oBAAoB,CACzB,MAAc,EACd,OAAoB,EACpB,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,GAA0B;QACjC,IAAI,EAAE,oBAAoB;QAC1B,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC5B,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,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,oBAAoB,CAAC,IAAI,EAAE,IAAmB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"headAndShoulders.js","sourceRoot":"","sources":["../../../../src/emit/draw/patterns/headAndShoulders.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,wCAAwC;AACxC,4DAA4D;AAC5D,iBAAiB;AACjB,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,qEAAqE;AACrE,uDAAuD;AACvD,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,4DAA4D,CAAC;AAEzF,SAAS,oBAAoB,CACzB,MAAc,EACd,OAAoB,EACpB,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,GAA0B;QACjC,IAAI,EAAE,oBAAoB;QAC1B,OAAO;QACP,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC5B,IAA0B,EAC1B,IAAkC,EAClC,IAAoB;IAEpB,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,oBAAoB,CAAC,IAAI,EAAE,IAAmB,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// (HeadAndShouldersDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/head-and-shoulders-tool.ts.\n// Note: invinite's full schema carries 7 anchors (start, leftShoulder,\n// leftTrough, head, rightTrough, rightShoulder, end). The landed Task-1\n// `HeadAndShouldersState.anchors: AnchorQuint` is a 5-anchor shell\n// (leftShoulder, leftLow, head, rightLow, rightShoulder) — start/end\n// projection is flagged as a Task-1 reshape follow-up.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorQuint,\n DrawingHandle,\n HeadAndShouldersState,\n LineDrawStyle,\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.headAndShoulders called outside an active script step\";\n\nfunction headAndShouldersImpl(\n slotId: string,\n anchors: AnchorQuint,\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: HeadAndShouldersState = {\n kind: \"head-and-shoulders\",\n anchors,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"head-and-shoulders\", state);\n}\n\n/**\n * Draw a head-and-shoulders reversal pattern through 5 world anchors\n * `[leftShoulder, leftLow, head, rightLow, rightShoulder]`. The\n * renderer strokes the connecting polyline plus the neckline between\n * the two trough anchors. Mirrors invinite's\n * `head-and-shoulders-tool.ts` shape.\n *\n * @anchors `anchors` — `[leftShoulder, leftLow, head, rightLow, rightShoulder]`\n * @anchorCount 5\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.headAndShoulders demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.headAndShoulders([\n * { time: bar.time, price: bar.high },\n * { time: bar.time + 15_000, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high + 1 },\n * { time: bar.time + 45_000, price: bar.low },\n * { time: bar.time + 60_000, price: bar.high },\n * ]);\n * },\n * });\n */\nexport function headAndShoulders(anchors: AnchorQuint, 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 headAndShoulders = headAndShoulders;\n * // void fn;\n */\nexport function headAndShoulders(\n slotId: string,\n anchors: AnchorQuint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link headAndShoulders}. 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 headAndShoulders = headAndShoulders;\n * // void fn;\n */\nexport function headAndShoulders(\n arg1: string | AnchorQuint,\n arg2?: AnchorQuint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return headAndShouldersImpl(arg1, arg2 as AnchorQuint, arg3 ?? {});\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  // 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
8
8
  // Behaviour from
9
9
  // invinite/src/components/trading-chart/tools/three-drives-pattern-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";