@invinite-org/chartlang-runtime 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +245 -0
- package/README.md +1 -2
- package/dist/barPoint.d.ts +20 -0
- package/dist/barPoint.d.ts.map +1 -0
- package/dist/barPoint.js +72 -0
- package/dist/barPoint.js.map +1 -0
- package/dist/bufferSnapshot.d.ts +102 -0
- package/dist/bufferSnapshot.d.ts.map +1 -0
- package/dist/bufferSnapshot.js +119 -0
- package/dist/bufferSnapshot.js.map +1 -0
- package/dist/buildComputeContext.js.map +1 -1
- package/dist/createScriptRunner.d.ts +6 -3
- package/dist/createScriptRunner.d.ts.map +1 -1
- package/dist/createScriptRunner.js +29 -5
- package/dist/createScriptRunner.js.map +1 -1
- package/dist/dep/DepOutputStore.js.map +1 -1
- package/dist/dep/DepRunner.d.ts.map +1 -1
- package/dist/dep/DepRunner.js +1 -0
- package/dist/dep/DepRunner.js.map +1 -1
- package/dist/dep/depOutput.js.map +1 -1
- package/dist/dep/emissionFilter.js.map +1 -1
- package/dist/dep/index.js.map +1 -1
- package/dist/emit/alert.js.map +1 -1
- package/dist/emit/alertConditionEmission.js.map +1 -1
- package/dist/emit/applyPlotOverride.js.map +1 -1
- package/dist/emit/draw/annotations/arrow.js +1 -1
- package/dist/emit/draw/annotations/arrow.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarkDown.js +1 -1
- package/dist/emit/draw/annotations/arrowMarkDown.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarkUp.js +1 -1
- package/dist/emit/draw/annotations/arrowMarkUp.js.map +1 -1
- package/dist/emit/draw/annotations/arrowMarker.js +1 -1
- package/dist/emit/draw/annotations/arrowMarker.js.map +1 -1
- package/dist/emit/draw/annotations/text.js +1 -1
- package/dist/emit/draw/annotations/text.js.map +1 -1
- package/dist/emit/draw/boxes/circle.js +1 -1
- package/dist/emit/draw/boxes/circle.js.map +1 -1
- package/dist/emit/draw/boxes/ellipse.d.ts +1 -1
- package/dist/emit/draw/boxes/ellipse.js +1 -1
- package/dist/emit/draw/boxes/ellipse.js.map +1 -1
- package/dist/emit/draw/boxes/fillBetween.d.ts +45 -0
- package/dist/emit/draw/boxes/fillBetween.d.ts.map +1 -0
- package/dist/emit/draw/boxes/fillBetween.js +36 -0
- package/dist/emit/draw/boxes/fillBetween.js.map +1 -0
- package/dist/emit/draw/boxes/marker.js +1 -1
- package/dist/emit/draw/boxes/marker.js.map +1 -1
- package/dist/emit/draw/boxes/path.d.ts +1 -1
- package/dist/emit/draw/boxes/path.js +1 -1
- package/dist/emit/draw/boxes/path.js.map +1 -1
- package/dist/emit/draw/boxes/polyline.d.ts +1 -1
- package/dist/emit/draw/boxes/polyline.js +1 -1
- package/dist/emit/draw/boxes/polyline.js.map +1 -1
- package/dist/emit/draw/boxes/rectangle.js +1 -1
- package/dist/emit/draw/boxes/rectangle.js.map +1 -1
- package/dist/emit/draw/boxes/rotatedRectangle.js +1 -1
- package/dist/emit/draw/boxes/rotatedRectangle.js.map +1 -1
- package/dist/emit/draw/boxes/triangle.d.ts +1 -1
- package/dist/emit/draw/boxes/triangle.js +1 -1
- package/dist/emit/draw/boxes/triangle.js.map +1 -1
- package/dist/emit/draw/channels/disjointChannel.js +1 -1
- package/dist/emit/draw/channels/disjointChannel.js.map +1 -1
- package/dist/emit/draw/channels/flatTopBottom.d.ts +1 -2
- package/dist/emit/draw/channels/flatTopBottom.d.ts.map +1 -1
- package/dist/emit/draw/channels/flatTopBottom.js +1 -1
- package/dist/emit/draw/channels/flatTopBottom.js.map +1 -1
- package/dist/emit/draw/channels/regressionTrend.d.ts +3 -4
- package/dist/emit/draw/channels/regressionTrend.d.ts.map +1 -1
- package/dist/emit/draw/channels/regressionTrend.js +1 -1
- package/dist/emit/draw/channels/regressionTrend.js.map +1 -1
- package/dist/emit/draw/channels/trendChannel.js +1 -1
- package/dist/emit/draw/channels/trendChannel.js.map +1 -1
- package/dist/emit/draw/containers/frame.d.ts +1 -1
- package/dist/emit/draw/containers/frame.js +2 -2
- package/dist/emit/draw/containers/frame.js.map +1 -1
- package/dist/emit/draw/containers/group.d.ts +1 -2
- package/dist/emit/draw/containers/group.d.ts.map +1 -1
- package/dist/emit/draw/containers/group.js +2 -2
- package/dist/emit/draw/containers/group.js.map +1 -1
- package/dist/emit/draw/curves/arc.js +1 -1
- package/dist/emit/draw/curves/arc.js.map +1 -1
- package/dist/emit/draw/curves/brush.js +1 -1
- package/dist/emit/draw/curves/brush.js.map +1 -1
- package/dist/emit/draw/curves/curve.js +1 -1
- package/dist/emit/draw/curves/curve.js.map +1 -1
- package/dist/emit/draw/curves/doubleCurve.js +1 -1
- package/dist/emit/draw/curves/doubleCurve.js.map +1 -1
- package/dist/emit/draw/curves/highlighter.js +1 -1
- package/dist/emit/draw/curves/highlighter.js.map +1 -1
- package/dist/emit/draw/curves/pen.js +1 -1
- package/dist/emit/draw/curves/pen.js.map +1 -1
- package/dist/emit/draw/cycles/cyclicLines.js +1 -1
- package/dist/emit/draw/cycles/cyclicLines.js.map +1 -1
- package/dist/emit/draw/cycles/sineLine.js +1 -1
- package/dist/emit/draw/cycles/sineLine.js.map +1 -1
- package/dist/emit/draw/cycles/timeCycles.js +1 -1
- package/dist/emit/draw/cycles/timeCycles.js.map +1 -1
- package/dist/emit/draw/elliott/elliottCorrectionWave.js +1 -1
- package/dist/emit/draw/elliott/elliottCorrectionWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottDoubleCombo.js +1 -1
- package/dist/emit/draw/elliott/elliottDoubleCombo.js.map +1 -1
- package/dist/emit/draw/elliott/elliottImpulseWave.js +1 -1
- package/dist/emit/draw/elliott/elliottImpulseWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottTriangleWave.js +1 -1
- package/dist/emit/draw/elliott/elliottTriangleWave.js.map +1 -1
- package/dist/emit/draw/elliott/elliottTripleCombo.js +1 -1
- package/dist/emit/draw/elliott/elliottTripleCombo.js.map +1 -1
- package/dist/emit/draw/fibA/fibChannel.js +1 -1
- package/dist/emit/draw/fibA/fibChannel.js.map +1 -1
- package/dist/emit/draw/fibA/fibRetracement.js +1 -1
- package/dist/emit/draw/fibA/fibRetracement.js.map +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.d.ts +1 -2
- package/dist/emit/draw/fibA/fibTimeZone.d.ts.map +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.js +1 -1
- package/dist/emit/draw/fibA/fibTimeZone.js.map +1 -1
- package/dist/emit/draw/fibA/fibTrendExtension.js +1 -1
- package/dist/emit/draw/fibA/fibTrendExtension.js.map +1 -1
- package/dist/emit/draw/fibA/fibWedge.js +1 -1
- package/dist/emit/draw/fibA/fibWedge.js.map +1 -1
- package/dist/emit/draw/fibB/fibCircles.d.ts +1 -2
- package/dist/emit/draw/fibB/fibCircles.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibCircles.js +1 -1
- package/dist/emit/draw/fibB/fibCircles.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpeedArcs.js +1 -1
- package/dist/emit/draw/fibB/fibSpeedArcs.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpeedFan.js +1 -1
- package/dist/emit/draw/fibB/fibSpeedFan.js.map +1 -1
- package/dist/emit/draw/fibB/fibSpiral.d.ts +1 -2
- package/dist/emit/draw/fibB/fibSpiral.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibSpiral.js +1 -1
- package/dist/emit/draw/fibB/fibSpiral.js.map +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.d.ts +1 -2
- package/dist/emit/draw/fibB/fibTrendTime.d.ts.map +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.js +1 -1
- package/dist/emit/draw/fibB/fibTrendTime.js.map +1 -1
- package/dist/emit/draw/gann/gannBox.js +1 -1
- package/dist/emit/draw/gann/gannBox.js.map +1 -1
- package/dist/emit/draw/gann/gannFan.js +1 -1
- package/dist/emit/draw/gann/gannFan.js.map +1 -1
- package/dist/emit/draw/gann/gannSquare.js +1 -1
- package/dist/emit/draw/gann/gannSquare.js.map +1 -1
- package/dist/emit/draw/gann/gannSquareFixed.js +1 -1
- package/dist/emit/draw/gann/gannSquareFixed.js.map +1 -1
- package/dist/emit/draw/handle.d.ts +11 -2
- package/dist/emit/draw/handle.d.ts.map +1 -1
- package/dist/emit/draw/handle.js +67 -12
- package/dist/emit/draw/handle.js.map +1 -1
- package/dist/emit/draw/index.js.map +1 -1
- package/dist/emit/draw/lines/crossLine.js +1 -1
- package/dist/emit/draw/lines/crossLine.js.map +1 -1
- package/dist/emit/draw/lines/horizontalLine.d.ts +1 -1
- package/dist/emit/draw/lines/horizontalLine.js +1 -1
- package/dist/emit/draw/lines/horizontalLine.js.map +1 -1
- package/dist/emit/draw/lines/horizontalRay.js +1 -1
- package/dist/emit/draw/lines/horizontalRay.js.map +1 -1
- package/dist/emit/draw/lines/line.d.ts +1 -1
- package/dist/emit/draw/lines/line.d.ts.map +1 -1
- package/dist/emit/draw/lines/line.js +2 -3
- package/dist/emit/draw/lines/line.js.map +1 -1
- package/dist/emit/draw/lines/trendAngle.js +1 -1
- package/dist/emit/draw/lines/trendAngle.js.map +1 -1
- package/dist/emit/draw/lines/verticalLine.js +1 -1
- package/dist/emit/draw/lines/verticalLine.js.map +1 -1
- package/dist/emit/draw/namespace.d.ts +5 -4
- package/dist/emit/draw/namespace.d.ts.map +1 -1
- package/dist/emit/draw/namespace.js +7 -4
- package/dist/emit/draw/namespace.js.map +1 -1
- package/dist/emit/draw/patterns/abcdPattern.js +1 -1
- package/dist/emit/draw/patterns/abcdPattern.js.map +1 -1
- package/dist/emit/draw/patterns/cypherPattern.d.ts +1 -2
- package/dist/emit/draw/patterns/cypherPattern.d.ts.map +1 -1
- package/dist/emit/draw/patterns/cypherPattern.js +1 -1
- package/dist/emit/draw/patterns/cypherPattern.js.map +1 -1
- package/dist/emit/draw/patterns/headAndShoulders.js +1 -1
- package/dist/emit/draw/patterns/headAndShoulders.js.map +1 -1
- package/dist/emit/draw/patterns/threeDrivesPattern.js +1 -1
- package/dist/emit/draw/patterns/threeDrivesPattern.js.map +1 -1
- package/dist/emit/draw/patterns/trianglePattern.d.ts +1 -1
- package/dist/emit/draw/patterns/trianglePattern.js +1 -1
- package/dist/emit/draw/patterns/trianglePattern.js.map +1 -1
- package/dist/emit/draw/patterns/xabcdPattern.js +1 -1
- package/dist/emit/draw/patterns/xabcdPattern.js.map +1 -1
- package/dist/emit/draw/pitchforks/pitchfan.js +1 -1
- package/dist/emit/draw/pitchforks/pitchfan.js.map +1 -1
- package/dist/emit/draw/pitchforks/pitchfork.d.ts +1 -1
- package/dist/emit/draw/pitchforks/pitchfork.js +2 -2
- package/dist/emit/draw/pitchforks/pitchfork.js.map +1 -1
- package/dist/emit/draw/pushDrawing.js.map +1 -1
- package/dist/emit/draw/subIdAllocator.d.ts +1 -1
- package/dist/emit/draw/subIdAllocator.js +1 -1
- package/dist/emit/draw/subIdAllocator.js.map +1 -1
- package/dist/emit/draw/table/table.d.ts +1 -1
- package/dist/emit/draw/table/table.js.map +1 -1
- package/dist/emit/emissionsQueue.js.map +1 -1
- package/dist/emit/hash.js.map +1 -1
- package/dist/emit/hline.js.map +1 -1
- package/dist/emit/index.js.map +1 -1
- package/dist/emit/logEmission.js.map +1 -1
- package/dist/emit/paneResolver.js.map +1 -1
- package/dist/emit/plot.d.ts +7 -0
- package/dist/emit/plot.d.ts.map +1 -1
- package/dist/emit/plot.js +13 -0
- package/dist/emit/plot.js.map +1 -1
- package/dist/emit/runtimeError.js.map +1 -1
- package/dist/execution/dispose.d.ts.map +1 -1
- package/dist/execution/dispose.js +16 -0
- package/dist/execution/dispose.js.map +1 -1
- package/dist/execution/drain.js.map +1 -1
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/onBarClose.js.map +1 -1
- package/dist/execution/onBarTick.js.map +1 -1
- package/dist/execution/onHistory.js.map +1 -1
- package/dist/execution/runComputeStep.d.ts.map +1 -1
- package/dist/execution/runComputeStep.js +10 -1
- package/dist/execution/runComputeStep.js.map +1 -1
- package/dist/execution/secondaryStream.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inputs/index.js.map +1 -1
- package/dist/inputs/resolveInputs.js.map +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/persistentStateStore.js.map +1 -1
- package/dist/persistentStateStore.runtime.d.ts.map +1 -1
- package/dist/persistentStateStore.runtime.js +21 -7
- package/dist/persistentStateStore.runtime.js.map +1 -1
- package/dist/persistentStateStore.validate.js.map +1 -1
- package/dist/primitives.js.map +1 -1
- package/dist/request/alignHtfSeriesCache.js.map +1 -1
- package/dist/request/alignHtfSeriesToLtf.d.ts +2 -2
- package/dist/request/alignHtfSeriesToLtf.js +2 -2
- package/dist/request/alignHtfSeriesToLtf.js.map +1 -1
- package/dist/request/bucketLtfBarsByMainContainment.js.map +1 -1
- package/dist/request/bucketLtfBarsCache.js.map +1 -1
- package/dist/request/index.d.ts +2 -1
- package/dist/request/index.d.ts.map +1 -1
- package/dist/request/index.js +2 -1
- package/dist/request/index.js.map +1 -1
- package/dist/request/lowerTf.js.map +1 -1
- package/dist/request/pushOnce.js.map +1 -1
- package/dist/request/requestNamespace.d.ts.map +1 -1
- package/dist/request/requestNamespace.js +16 -3
- package/dist/request/requestNamespace.js.map +1 -1
- package/dist/request/security.d.ts +20 -1
- package/dist/request/security.d.ts.map +1 -1
- package/dist/request/security.js +62 -23
- package/dist/request/security.js.map +1 -1
- package/dist/request/securityExprRunner.d.ts +133 -0
- package/dist/request/securityExprRunner.d.ts.map +1 -0
- package/dist/request/securityExprRunner.js +235 -0
- package/dist/request/securityExprRunner.js.map +1 -0
- package/dist/request/streamBars.d.ts +14 -1
- package/dist/request/streamBars.d.ts.map +1 -1
- package/dist/request/streamBars.js +39 -1
- package/dist/request/streamBars.js.map +1 -1
- package/dist/ringBuffer.d.ts +2 -2
- package/dist/ringBuffer.js +1 -1
- package/dist/ringBuffer.js.map +1 -1
- package/dist/runtimeContext.d.ts +51 -3
- package/dist/runtimeContext.d.ts.map +1 -1
- package/dist/runtimeContext.js.map +1 -1
- package/dist/seriesView.d.ts +43 -18
- package/dist/seriesView.d.ts.map +1 -1
- package/dist/seriesView.js +66 -43
- package/dist/seriesView.js.map +1 -1
- package/dist/state/index.d.ts +2 -1
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +2 -1
- package/dist/state/index.js.map +1 -1
- package/dist/state/lifecycle.d.ts +40 -0
- package/dist/state/lifecycle.d.ts.map +1 -1
- package/dist/state/lifecycle.js +53 -0
- package/dist/state/lifecycle.js.map +1 -1
- package/dist/state/seriesPersistence.d.ts +48 -0
- package/dist/state/seriesPersistence.d.ts.map +1 -0
- package/dist/state/seriesPersistence.js +87 -0
- package/dist/state/seriesPersistence.js.map +1 -0
- package/dist/state/seriesSlot.d.ts +105 -0
- package/dist/state/seriesSlot.d.ts.map +1 -0
- package/dist/state/seriesSlot.js +123 -0
- package/dist/state/seriesSlot.js.map +1 -0
- package/dist/state/stateNamespace.d.ts.map +1 -1
- package/dist/state/stateNamespace.js +28 -0
- package/dist/state/stateNamespace.js.map +1 -1
- package/dist/state/stateSlot.js.map +1 -1
- package/dist/stateStore.d.ts +2 -2
- package/dist/stateStore.js.map +1 -1
- package/dist/streamState.d.ts +26 -20
- package/dist/streamState.d.ts.map +1 -1
- package/dist/streamState.js +41 -67
- package/dist/streamState.js.map +1 -1
- package/dist/ta/adl.js +2 -2
- package/dist/ta/adl.js.map +1 -1
- package/dist/ta/adr.d.ts +3 -3
- package/dist/ta/adr.js +5 -5
- package/dist/ta/adr.js.map +1 -1
- package/dist/ta/adx.d.ts +3 -2
- package/dist/ta/adx.d.ts.map +1 -1
- package/dist/ta/adx.js +5 -4
- package/dist/ta/adx.js.map +1 -1
- package/dist/ta/alma.d.ts +6 -4
- package/dist/ta/alma.d.ts.map +1 -1
- package/dist/ta/alma.js +21 -8
- package/dist/ta/alma.js.map +1 -1
- package/dist/ta/anchoredVolumeProfile.js.map +1 -1
- package/dist/ta/anchoredVwap.d.ts +1 -1
- package/dist/ta/anchoredVwap.js +3 -3
- package/dist/ta/anchoredVwap.js.map +1 -1
- package/dist/ta/ao.js +2 -2
- package/dist/ta/ao.js.map +1 -1
- package/dist/ta/aroon.js +2 -2
- package/dist/ta/aroon.js.map +1 -1
- package/dist/ta/aroonOsc.js +2 -2
- package/dist/ta/aroonOsc.js.map +1 -1
- package/dist/ta/atr.d.ts +3 -2
- package/dist/ta/atr.d.ts.map +1 -1
- package/dist/ta/atr.js +5 -4
- package/dist/ta/atr.js.map +1 -1
- package/dist/ta/barssince.js +1 -1
- package/dist/ta/barssince.js.map +1 -1
- package/dist/ta/bb.d.ts +3 -2
- package/dist/ta/bb.d.ts.map +1 -1
- package/dist/ta/bb.js +5 -4
- package/dist/ta/bb.js.map +1 -1
- package/dist/ta/bbPercentB.js +2 -2
- package/dist/ta/bbPercentB.js.map +1 -1
- package/dist/ta/bbw.js +2 -2
- package/dist/ta/bbw.js.map +1 -1
- package/dist/ta/bop.js +2 -2
- package/dist/ta/bop.js.map +1 -1
- package/dist/ta/cci.js +2 -2
- package/dist/ta/cci.js.map +1 -1
- package/dist/ta/chaikinOsc.d.ts +3 -2
- package/dist/ta/chaikinOsc.d.ts.map +1 -1
- package/dist/ta/chaikinOsc.js +5 -4
- package/dist/ta/chaikinOsc.js.map +1 -1
- package/dist/ta/chandeKrollStop.d.ts +1 -1
- package/dist/ta/chandeKrollStop.js +3 -3
- package/dist/ta/chandeKrollStop.js.map +1 -1
- package/dist/ta/chandelier.d.ts +1 -1
- package/dist/ta/chandelier.js +3 -3
- package/dist/ta/chandelier.js.map +1 -1
- package/dist/ta/change.js +1 -1
- package/dist/ta/change.js.map +1 -1
- package/dist/ta/chop.js +2 -2
- package/dist/ta/chop.js.map +1 -1
- package/dist/ta/cmf.js +2 -2
- package/dist/ta/cmf.js.map +1 -1
- package/dist/ta/cmo.js +2 -2
- package/dist/ta/cmo.js.map +1 -1
- package/dist/ta/connorsRsi.d.ts +1 -1
- package/dist/ta/connorsRsi.js +3 -3
- package/dist/ta/connorsRsi.js.map +1 -1
- package/dist/ta/coppock.js +2 -2
- package/dist/ta/coppock.js.map +1 -1
- package/dist/ta/crossover.d.ts +3 -2
- package/dist/ta/crossover.d.ts.map +1 -1
- package/dist/ta/crossover.js +4 -3
- package/dist/ta/crossover.js.map +1 -1
- package/dist/ta/crossunder.d.ts +3 -2
- package/dist/ta/crossunder.d.ts.map +1 -1
- package/dist/ta/crossunder.js +4 -3
- package/dist/ta/crossunder.js.map +1 -1
- package/dist/ta/dema.js +2 -2
- package/dist/ta/dema.js.map +1 -1
- package/dist/ta/dmi.d.ts +4 -3
- package/dist/ta/dmi.d.ts.map +1 -1
- package/dist/ta/dmi.js +6 -5
- package/dist/ta/dmi.js.map +1 -1
- package/dist/ta/donchian.js +2 -2
- package/dist/ta/donchian.js.map +1 -1
- package/dist/ta/dpo.js +2 -2
- package/dist/ta/dpo.js.map +1 -1
- package/dist/ta/ema.d.ts +3 -2
- package/dist/ta/ema.d.ts.map +1 -1
- package/dist/ta/ema.js +5 -4
- package/dist/ta/ema.js.map +1 -1
- package/dist/ta/envelope.js +2 -2
- package/dist/ta/envelope.js.map +1 -1
- package/dist/ta/eom.d.ts +3 -1
- package/dist/ta/eom.d.ts.map +1 -1
- package/dist/ta/eom.js +5 -3
- package/dist/ta/eom.js.map +1 -1
- package/dist/ta/fisher.js +2 -2
- package/dist/ta/fisher.js.map +1 -1
- package/dist/ta/fixedRangeVolumeProfile.js.map +1 -1
- package/dist/ta/highest.js +1 -1
- package/dist/ta/highest.js.map +1 -1
- package/dist/ta/highestbars.d.ts +25 -0
- package/dist/ta/highestbars.d.ts.map +1 -0
- package/dist/ta/highestbars.js +106 -0
- package/dist/ta/highestbars.js.map +1 -0
- package/dist/ta/historicalVolatility.d.ts +3 -2
- package/dist/ta/historicalVolatility.d.ts.map +1 -1
- package/dist/ta/historicalVolatility.js +5 -4
- package/dist/ta/historicalVolatility.js.map +1 -1
- package/dist/ta/hma.js +2 -2
- package/dist/ta/hma.js.map +1 -1
- package/dist/ta/ichimoku.d.ts +3 -1
- package/dist/ta/ichimoku.d.ts.map +1 -1
- package/dist/ta/ichimoku.js +5 -3
- package/dist/ta/ichimoku.js.map +1 -1
- package/dist/ta/index.js.map +1 -1
- package/dist/ta/kama.js +2 -2
- package/dist/ta/kama.js.map +1 -1
- package/dist/ta/keltner.js +2 -2
- package/dist/ta/keltner.js.map +1 -1
- package/dist/ta/klinger.js +2 -2
- package/dist/ta/klinger.js.map +1 -1
- package/dist/ta/kst.js +2 -2
- package/dist/ta/kst.js.map +1 -1
- package/dist/ta/lib/adxFromDi.js +2 -2
- package/dist/ta/lib/adxFromDi.js.map +1 -1
- package/dist/ta/lib/computeMa.js +2 -2
- package/dist/ta/lib/computeMa.js.map +1 -1
- package/dist/ta/lib/computeMaOfFloat64.js +2 -2
- package/dist/ta/lib/computeMaOfFloat64.js.map +1 -1
- package/dist/ta/lib/directionalState.js +2 -2
- package/dist/ta/lib/directionalState.js.map +1 -1
- package/dist/ta/lib/donchianMid.js +2 -2
- package/dist/ta/lib/donchianMid.js.map +1 -1
- package/dist/ta/lib/emaFloat64.js +2 -2
- package/dist/ta/lib/emaFloat64.js.map +1 -1
- package/dist/ta/lib/linearRegression.js +2 -2
- package/dist/ta/lib/linearRegression.js.map +1 -1
- package/dist/ta/lib/maTypes.js.map +1 -1
- package/dist/ta/lib/pearson.js +2 -2
- package/dist/ta/lib/pearson.js.map +1 -1
- package/dist/ta/lib/pickCandleSource.js +2 -2
- package/dist/ta/lib/pickCandleSource.js.map +1 -1
- package/dist/ta/lib/readSourceField.js +2 -2
- package/dist/ta/lib/readSourceField.js.map +1 -1
- package/dist/ta/lib/rollingStddev.js +2 -2
- package/dist/ta/lib/rollingStddev.js.map +1 -1
- package/dist/ta/lib/smaFloat64.js +2 -2
- package/dist/ta/lib/smaFloat64.js.map +1 -1
- package/dist/ta/lib/smmaFloat64.js +2 -2
- package/dist/ta/lib/smmaFloat64.js.map +1 -1
- package/dist/ta/lib/sourceValue.js.map +1 -1
- package/dist/ta/lib/trSeries.js +2 -2
- package/dist/ta/lib/trSeries.js.map +1 -1
- package/dist/ta/lib/volume-profile/bucketEdges.js.map +1 -1
- package/dist/ta/lib/volume-profile/bucketizeVolume.js.map +1 -1
- package/dist/ta/lib/volume-profile/developingSeries.js.map +1 -1
- package/dist/ta/lib/volume-profile/index.js.map +1 -1
- package/dist/ta/lib/volume-profile/intercept.js.map +1 -1
- package/dist/ta/lib/volume-profile/scaffold.js.map +1 -1
- package/dist/ta/lib/volume-profile/tooHeavy.js.map +1 -1
- package/dist/ta/lib/volume-profile/types.js.map +1 -1
- package/dist/ta/lib/volume-profile/valueArea.js.map +1 -1
- package/dist/ta/lib/volume-profile/volumeProfileShared.js.map +1 -1
- package/dist/ta/lib/vwmaFloat64.js +2 -2
- package/dist/ta/lib/vwmaFloat64.js.map +1 -1
- package/dist/ta/lib/wilderDirectional.js +2 -2
- package/dist/ta/lib/wilderDirectional.js.map +1 -1
- package/dist/ta/lib/wilderSmoothing.js +2 -2
- package/dist/ta/lib/wilderSmoothing.js.map +1 -1
- package/dist/ta/lib/wmaFloat64.js +2 -2
- package/dist/ta/lib/wmaFloat64.js.map +1 -1
- package/dist/ta/lowest.js +1 -1
- package/dist/ta/lowest.js.map +1 -1
- package/dist/ta/lowestbars.d.ts +25 -0
- package/dist/ta/lowestbars.d.ts.map +1 -0
- package/dist/ta/lowestbars.js +102 -0
- package/dist/ta/lowestbars.js.map +1 -0
- package/dist/ta/lsma.js +2 -2
- package/dist/ta/lsma.js.map +1 -1
- package/dist/ta/maRibbon.js +2 -2
- package/dist/ta/maRibbon.js.map +1 -1
- package/dist/ta/macd.d.ts +3 -2
- package/dist/ta/macd.d.ts.map +1 -1
- package/dist/ta/macd.js +6 -5
- package/dist/ta/macd.js.map +1 -1
- package/dist/ta/massIndex.d.ts +3 -2
- package/dist/ta/massIndex.d.ts.map +1 -1
- package/dist/ta/massIndex.js +5 -4
- package/dist/ta/massIndex.js.map +1 -1
- package/dist/ta/mcginley.js +2 -2
- package/dist/ta/mcginley.js.map +1 -1
- package/dist/ta/median.js +2 -2
- package/dist/ta/median.js.map +1 -1
- package/dist/ta/mfi.d.ts +3 -1
- package/dist/ta/mfi.d.ts.map +1 -1
- package/dist/ta/mfi.js +5 -3
- package/dist/ta/mfi.js.map +1 -1
- package/dist/ta/momentum.js +2 -2
- package/dist/ta/momentum.js.map +1 -1
- package/dist/ta/netVolume.d.ts +3 -1
- package/dist/ta/netVolume.d.ts.map +1 -1
- package/dist/ta/netVolume.js +5 -3
- package/dist/ta/netVolume.js.map +1 -1
- package/dist/ta/nvi.d.ts +3 -1
- package/dist/ta/nvi.d.ts.map +1 -1
- package/dist/ta/nvi.js +5 -3
- package/dist/ta/nvi.js.map +1 -1
- package/dist/ta/nz.js +1 -1
- package/dist/ta/nz.js.map +1 -1
- package/dist/ta/obv.js +2 -2
- package/dist/ta/obv.js.map +1 -1
- package/dist/ta/persistence.d.ts.map +1 -1
- package/dist/ta/persistence.js +1 -40
- package/dist/ta/persistence.js.map +1 -1
- package/dist/ta/pivotsHighLow.js +2 -2
- package/dist/ta/pivotsHighLow.js.map +1 -1
- package/dist/ta/pivotsStandard.d.ts +1 -1
- package/dist/ta/pivotsStandard.js +3 -3
- package/dist/ta/pivotsStandard.js.map +1 -1
- package/dist/ta/pmo.js +2 -2
- package/dist/ta/pmo.js.map +1 -1
- package/dist/ta/ppo.d.ts +3 -2
- package/dist/ta/ppo.d.ts.map +1 -1
- package/dist/ta/ppo.js +5 -4
- package/dist/ta/ppo.js.map +1 -1
- package/dist/ta/psar.js +2 -2
- package/dist/ta/psar.js.map +1 -1
- package/dist/ta/pvi.d.ts +3 -1
- package/dist/ta/pvi.d.ts.map +1 -1
- package/dist/ta/pvi.js +5 -3
- package/dist/ta/pvi.js.map +1 -1
- package/dist/ta/pvo.d.ts +3 -1
- package/dist/ta/pvo.d.ts.map +1 -1
- package/dist/ta/pvo.js +5 -3
- package/dist/ta/pvo.js.map +1 -1
- package/dist/ta/pvt.d.ts +3 -1
- package/dist/ta/pvt.d.ts.map +1 -1
- package/dist/ta/pvt.js +5 -3
- package/dist/ta/pvt.js.map +1 -1
- package/dist/ta/registry.d.ts +7 -1
- package/dist/ta/registry.d.ts.map +1 -1
- package/dist/ta/registry.js +4 -0
- package/dist/ta/registry.js.map +1 -1
- package/dist/ta/roc.js +2 -2
- package/dist/ta/roc.js.map +1 -1
- package/dist/ta/rsi.d.ts +3 -2
- package/dist/ta/rsi.d.ts.map +1 -1
- package/dist/ta/rsi.js +5 -4
- package/dist/ta/rsi.js.map +1 -1
- package/dist/ta/rvgi.js +2 -2
- package/dist/ta/rvgi.js.map +1 -1
- package/dist/ta/rvi.d.ts +3 -2
- package/dist/ta/rvi.d.ts.map +1 -1
- package/dist/ta/rvi.js +5 -4
- package/dist/ta/rvi.js.map +1 -1
- package/dist/ta/sessionVolumeProfile.js.map +1 -1
- package/dist/ta/sma.d.ts +6 -3
- package/dist/ta/sma.d.ts.map +1 -1
- package/dist/ta/sma.js +8 -5
- package/dist/ta/sma.js.map +1 -1
- package/dist/ta/smi.js +2 -2
- package/dist/ta/smi.js.map +1 -1
- package/dist/ta/smma.js +2 -2
- package/dist/ta/smma.js.map +1 -1
- package/dist/ta/stdev.d.ts +3 -2
- package/dist/ta/stdev.d.ts.map +1 -1
- package/dist/ta/stdev.js +5 -4
- package/dist/ta/stdev.js.map +1 -1
- package/dist/ta/stoch.js +2 -2
- package/dist/ta/stoch.js.map +1 -1
- package/dist/ta/stochRsi.js +2 -2
- package/dist/ta/stochRsi.js.map +1 -1
- package/dist/ta/supertrend.d.ts +1 -1
- package/dist/ta/supertrend.js +3 -3
- package/dist/ta/supertrend.js.map +1 -1
- package/dist/ta/tema.js +2 -2
- package/dist/ta/tema.js.map +1 -1
- package/dist/ta/trendStrengthIndex.d.ts +4 -3
- package/dist/ta/trendStrengthIndex.d.ts.map +1 -1
- package/dist/ta/trendStrengthIndex.js +6 -5
- package/dist/ta/trendStrengthIndex.js.map +1 -1
- package/dist/ta/trix.d.ts +4 -3
- package/dist/ta/trix.d.ts.map +1 -1
- package/dist/ta/trix.js +6 -5
- package/dist/ta/trix.js.map +1 -1
- package/dist/ta/tsi.js +2 -2
- package/dist/ta/tsi.js.map +1 -1
- package/dist/ta/ulcerIndex.js +2 -2
- package/dist/ta/ulcerIndex.js.map +1 -1
- package/dist/ta/ultimateOsc.js +2 -2
- package/dist/ta/ultimateOsc.js.map +1 -1
- package/dist/ta/valuewhen.js +1 -1
- package/dist/ta/valuewhen.js.map +1 -1
- package/dist/ta/visibleRangeVolumeProfile.d.ts +2 -2
- package/dist/ta/visibleRangeVolumeProfile.js +2 -2
- package/dist/ta/visibleRangeVolumeProfile.js.map +1 -1
- package/dist/ta/vol.js +2 -2
- package/dist/ta/vol.js.map +1 -1
- package/dist/ta/volatilityStop.d.ts +1 -1
- package/dist/ta/volatilityStop.js +3 -3
- package/dist/ta/volatilityStop.js.map +1 -1
- package/dist/ta/vortex.d.ts +3 -2
- package/dist/ta/vortex.d.ts.map +1 -1
- package/dist/ta/vortex.js +5 -4
- package/dist/ta/vortex.js.map +1 -1
- package/dist/ta/vwap.d.ts +3 -3
- package/dist/ta/vwap.js +5 -5
- package/dist/ta/vwap.js.map +1 -1
- package/dist/ta/vwma.js +2 -2
- package/dist/ta/vwma.js.map +1 -1
- package/dist/ta/williamsFractal.js +2 -2
- package/dist/ta/williamsFractal.js.map +1 -1
- package/dist/ta/williamsR.js +2 -2
- package/dist/ta/williamsR.js.map +1 -1
- package/dist/ta/wma.js +2 -2
- package/dist/ta/wma.js.map +1 -1
- package/dist/ta/zigZag.js +2 -2
- package/dist/ta/zigZag.js.map +1 -1
- package/dist/views/barstateView.js.map +1 -1
- package/dist/views/index.js.map +1 -1
- package/dist/views/refreshRuntimeViews.js.map +1 -1
- package/dist/views/symInfoView.js.map +1 -1
- package/dist/views/timeframeView.js.map +1 -1
- package/package.json +3 -3
- package/dist/ta/lib/applyOffset.d.ts +0 -19
- package/dist/ta/lib/applyOffset.d.ts.map +0 -1
- package/dist/ta/lib/applyOffset.js +0 -38
- package/dist/ta/lib/applyOffset.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibCircles.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EAEb,OAAO,EACP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC
|
|
1
|
+
{"version":3,"file":"fibCircles.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EAEb,OAAO,EACP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACxF;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/fib-circles-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// Re-licensed MIT for chartlang.
|
|
11
11
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
12
12
|
import { createDrawingHandle } from "../handle.js";
|
|
13
13
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibCircles.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"fibCircles.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibCircles.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,kCAAkC;AAClC,4DAA4D;AAC5D,iBAAiB;AACjB,qEAAqE;AACrE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,SAAS,cAAc,CACnB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAoB;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACtB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibCirclesDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-circles-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibCirclesState,\n FibOpts,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibCircles called outside an active script step\";\n\nfunction fibCirclesImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibCirclesState = {\n kind: \"fib-circles\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-circles\", state);\n}\n\n/**\n * Draw concentric Fibonacci circles centred at `a` (the centre) passing\n * through fib-ratio multiples of `|b - a|` (the radius-point distance).\n * Mirrors invinite's `fib-circles-tool.ts` shape. Renderer uses\n * `style.levels ?? FIB_LEVELS` (the ratio array, NOT the integer\n * Fibonacci sequence).\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, radius-point)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibCircles demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibCircles(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibCircles(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibCircles = fibCircles;\n * // void fn;\n */\nexport function fibCircles(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibCircles}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibCircles = fibCircles;\n * // void fn;\n */\nexport function fibCircles(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibCirclesImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/fib-speed-arcs-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// Re-licensed MIT for chartlang.
|
|
11
11
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
12
12
|
import { createDrawingHandle } from "../handle.js";
|
|
13
13
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibSpeedArcs.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedArcs.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"fibSpeedArcs.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedArcs.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpeedArcsDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-speed-arcs-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpeedArcsState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpeedArcs called outside an active script step\";\n\nfunction fibSpeedArcsImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpeedArcsState = {\n kind: \"fib-speed-arcs\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-speed-arcs\", state);\n}\n\n/**\n * Draw a set of Fibonacci speed-arcs — concentric circular arcs centred\n * at `a` with radii `level * |b - a|` for each `level` in\n * `opts.levels ?? FIB_LEVELS`. Mirrors invinite's\n * `fib-speed-arcs-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, edge)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpeedArcs demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpeedArcs(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibSpeedArcs(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpeedArcs = fibSpeedArcs;\n * // void fn;\n */\nexport function fibSpeedArcs(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpeedArcs}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpeedArcs = fibSpeedArcs;\n * // void fn;\n */\nexport function fibSpeedArcs(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpeedArcsImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/fib-speed-fan-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// Re-licensed MIT for chartlang.
|
|
11
11
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
12
12
|
import { createDrawingHandle } from "../handle.js";
|
|
13
13
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibSpeedFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"fibSpeedFan.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpeedFan.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,mCAAmC;AACnC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,uDAAuD,CAAC;AAEpF,SAAS,eAAe,CACpB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAa;IAEb,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAqB;QAC5B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA4CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpeedFanDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-speed-fan-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpeedFanState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpeedFan called outside an active script step\";\n\nfunction fibSpeedFanImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: FibOpts,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpeedFanState = {\n kind: \"fib-speed-fan\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-speed-fan\", state);\n}\n\n/**\n * Draw a Fibonacci speed-fan — a fan of rays from `a` whose slopes are\n * fib-ratio scalings of the (a→b) slope. Levels default to the\n * canonical `FIB_LEVELS` array when `opts.levels` is omitted. Mirrors\n * invinite's `fib-speed-fan-tool.ts` shape.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (pivot, reference)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpeedFan demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpeedFan(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 30_000, price: bar.high },\n * { showLabels: true },\n * );\n * },\n * });\n */\nexport function fibSpeedFan(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpeedFan = fibSpeedFan;\n * // void fn;\n */\nexport function fibSpeedFan(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpeedFan}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpeedFan = fibSpeedFan;\n * // void fn;\n */\nexport function fibSpeedFan(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpeedFanImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -4,8 +4,7 @@ import type { DrawingHandle, FibOpts, WorldPoint } from "@invinite-org/chartlang
|
|
|
4
4
|
* Beziers, one per quarter-turn. The spiral starts at `a` (centre) with
|
|
5
5
|
* initial radius `|b - a|` and scales by φ ≈ 1.618 per quarter-turn.
|
|
6
6
|
* Mirrors invinite's `fib-spiral-tool.ts` shape. The `counterClockwise`
|
|
7
|
-
* flag from the invinite tool is deferred
|
|
8
|
-
* `tasks/phase-3-drawing-parity/12-fibonacci-b.plan.md` §2); the
|
|
7
|
+
* flag from the invinite tool is deferred; the
|
|
9
8
|
* landed renderer is clockwise-only.
|
|
10
9
|
*
|
|
11
10
|
* @anchors `a`, `b` — two `WorldPoint`s (centre, initial-radius edge)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibSpiral.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,OAAO,EAEP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAoBtC
|
|
1
|
+
{"version":3,"file":"fibSpiral.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,OAAO,EAEP,UAAU,EACb,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACvF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,OAAO,GACf,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/fib-spiral-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// Re-licensed MIT for chartlang.
|
|
11
11
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
12
12
|
import { createDrawingHandle } from "../handle.js";
|
|
13
13
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibSpiral.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"fibSpiral.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibSpiral.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,oEAAoE;AACpE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,aAAa,CAAC,MAAc,EAAE,CAAa,EAAE,CAAa,EAAE,IAAa;IAC9E,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAmB;QAC1B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiB,EACjB,IAA2B,EAC3B,IAAc;IAEd,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FibSpiralDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/fib-spiral-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FibOpts,\n FibSpiralState,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.fibSpiral called outside an active script step\";\n\nfunction fibSpiralImpl(slotId: string, a: WorldPoint, b: WorldPoint, opts: FibOpts): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: FibSpiralState = {\n kind: \"fib-spiral\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"fib-spiral\", state);\n}\n\n/**\n * Draw a Fibonacci (golden) spiral approximated by chained cubic\n * Beziers, one per quarter-turn. The spiral starts at `a` (centre) with\n * initial radius `|b - a|` and scales by φ ≈ 1.618 per quarter-turn.\n * Mirrors invinite's `fib-spiral-tool.ts` shape. The `counterClockwise`\n * flag from the invinite tool is deferred; the\n * landed renderer is clockwise-only.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (centre, initial-radius edge)\n * @anchorCount 2\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.fibSpiral demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.fibSpiral(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.high },\n * );\n * },\n * });\n */\nexport function fibSpiral(a: WorldPoint, b: WorldPoint, opts?: FibOpts): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fibSpiral = fibSpiral;\n * // void fn;\n */\nexport function fibSpiral(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FibOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fibSpiral}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof fibSpiral = fibSpiral;\n * // void fn;\n */\nexport function fibSpiral(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FibOpts,\n arg4?: FibOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fibSpiralImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -4,8 +4,7 @@ import type { AnchorTriple, DrawingHandle, FibOpts } from "@invinite-org/chartla
|
|
|
4
4
|
* `level` in `opts.levels ?? FIB_LEVELS`, paints a vertical line at
|
|
5
5
|
* `t = anchors[2].time + level * (anchors[1].time - anchors[0].time)`.
|
|
6
6
|
* Mirrors invinite's `fib-trend-time-tool.ts` shape using the ratio
|
|
7
|
-
* array
|
|
8
|
-
* `tasks/phase-3-drawing-parity/12-fibonacci-b.plan.md` §8).
|
|
7
|
+
* array.
|
|
9
8
|
*
|
|
10
9
|
* @anchors `anchors` — `[A, B, C]` triple (A→B leg defines the time
|
|
11
10
|
* delta; C is the projection origin)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibTrendTime.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,OAAO,EAEV,MAAM,8BAA8B,CAAC;AAoBtC
|
|
1
|
+
{"version":3,"file":"fibTrendTime.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EACb,OAAO,EAEV,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;AACnF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/fib-trend-time-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// Re-licensed MIT for chartlang.
|
|
11
11
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
12
12
|
import { createDrawingHandle } from "../handle.js";
|
|
13
13
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibTrendTime.js","sourceRoot":"","sources":["../../../../src/emit/draw/fibB/fibTrendTime.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,wEAAwE;AACxE,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
1
|
+
{"version":3,"file":"gannSquareFixed.js","sourceRoot":"","sources":["../../../../src/emit/draw/gann/gannSquareFixed.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,2EAA2E;AAC3E,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,2DAA2D,CAAC;AAExF,SAAS,mBAAmB,CACxB,MAAc,EACd,MAAkB,EAClB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAyB;QAChC,IAAI,EAAE,mBAAmB;QACzB,MAAM;QACN,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAuCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GannSquareFixedDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/gann-square-fixed-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n GannSquareFixedState,\n LineDrawStyle,\n WorldPoint,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.gannSquareFixed called outside an active script step\";\n\nfunction gannSquareFixedImpl(\n slotId: string,\n anchor: WorldPoint,\n opts: LineDrawStyle,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n const subId = nextSubId(ctx, slotId);\n const state: GannSquareFixedState = {\n kind: \"gann-square-fixed\",\n anchor,\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"gann-square-fixed\", state);\n}\n\n/**\n * Draw a Gann square-of-nine with a fixed pixel side anchored at a\n * single world point. The renderer paints a `80×80` pixel square\n * subdivided by `GANN_LEVELS`. Mirrors invinite's\n * `gann-square-fixed-tool.ts` shape.\n *\n * @anchors `anchor` — a single `WorldPoint`\n * @anchorCount 1\n * @bucket other\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.gannSquareFixed demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.gannSquareFixed({ time: bar.time, price: bar.close });\n * },\n * });\n */\nexport function gannSquareFixed(anchor: WorldPoint, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof gannSquareFixed = gannSquareFixed;\n * // void fn;\n */\nexport function gannSquareFixed(\n slotId: string,\n anchor: WorldPoint,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link gannSquareFixed}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // const fn: typeof gannSquareFixed = gannSquareFixed;\n * // void fn;\n */\nexport function gannSquareFixed(\n arg1: string | WorldPoint,\n arg2?: WorldPoint | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return gannSquareFixedImpl(arg1, arg2 as WorldPoint, arg3 ?? {});\n}\n"]}
|
|
@@ -7,13 +7,22 @@ import type { DrawingHandle, DrawingKind, DrawingState } from "@invinite-org/cha
|
|
|
7
7
|
* full merged state.
|
|
8
8
|
*
|
|
9
9
|
* `update(patch)` merges the patch with the current slot state and
|
|
10
|
-
* re-emits the FULL merged state under `op: "update"`
|
|
11
|
-
*
|
|
10
|
+
* re-emits the FULL merged state under `op: "update"`. `remove()`
|
|
11
|
+
* emits one final `op: "remove"` with the
|
|
12
12
|
* last-known state and flags the slot `removed: true`; subsequent
|
|
13
13
|
* `update` / `remove` calls on the returned handle are no-ops.
|
|
14
14
|
*
|
|
15
15
|
* The handle's `id` is `slotId#subId` — stable across bars.
|
|
16
16
|
*
|
|
17
|
+
* `z` is the presentation-only render-order key the `draw.*` opts bag
|
|
18
|
+
* carried (core's `ZOrdered` mixin) folded into `state.style`. It is
|
|
19
|
+
* {@link splitZ | lifted out} of `state.style` so it rides the wire as
|
|
20
|
+
* the top-level {@link DrawingEmission.z} field, **never** inside
|
|
21
|
+
* `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on
|
|
22
|
+
* the slot. An `update` that does not re-specify a non-zero `z` retains
|
|
23
|
+
* the last value; a re-specified non-zero `z` overrides; `remove`
|
|
24
|
+
* carries the last-known `z`.
|
|
25
|
+
*
|
|
17
26
|
* @since 0.3
|
|
18
27
|
* @stable
|
|
19
28
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAyE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,YAAY,GAC3B,aAAa,CAoEf"}
|
package/dist/emit/draw/handle.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
2
|
// See the LICENSE file in the repo root for full license text.
|
|
3
|
-
import { ACTIVE_RUNTIME_CONTEXT } from "../../runtimeContext.js";
|
|
3
|
+
import { ACTIVE_RUNTIME_CONTEXT, } from "../../runtimeContext.js";
|
|
4
4
|
import { pushDrawing } from "./pushDrawing.js";
|
|
5
5
|
const OUTSIDE_CTX_MESSAGE = "draw called outside an active script step";
|
|
6
6
|
function mergeState(prev, patch) {
|
|
@@ -13,7 +13,34 @@ function mergeState(prev, patch) {
|
|
|
13
13
|
// discriminants stay pinned to `prev.kind`.
|
|
14
14
|
return { ...prev, ...patch, kind: prev.kind };
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Lift the presentation-only `z` (render-order key) **out** of a
|
|
18
|
+
* drawing's `state.style` and hand it back to the caller, returning a
|
|
19
|
+
* state with `z` removed from a **shallow clone** of `style` (the
|
|
20
|
+
* caller's style object is never mutated). Every `draw.*` option bag
|
|
21
|
+
* carries `z` via core's `ZOrdered` mixin, and the per-kind impls fold
|
|
22
|
+
* that bag into `state.style`, so `z` arrives nested at `state.style.z`.
|
|
23
|
+
* `z` is a **top-level** `DrawingEmission` field, not part of
|
|
24
|
+
* `DrawingState`, so it must not ride the wire inside `state` — strip it
|
|
25
|
+
* here. Returns `z: 0` (the omit-when-`0` default) for states with no
|
|
26
|
+
* `style` (e.g. `group`) or no `z`, leaving the state object **untouched**
|
|
27
|
+
* in that case so a no-`z` drawing stays byte-identical to the
|
|
28
|
+
* pre-feature baseline.
|
|
29
|
+
*/
|
|
30
|
+
function splitZ(state) {
|
|
31
|
+
if (!("style" in state) || state.style === undefined) {
|
|
32
|
+
return { state, z: 0 };
|
|
33
|
+
}
|
|
34
|
+
const style = state.style;
|
|
35
|
+
if (style.z === undefined) {
|
|
36
|
+
return { state, z: 0 };
|
|
37
|
+
}
|
|
38
|
+
// Shallow-clone style with `z` removed — never mutate the caller's
|
|
39
|
+
// object. `rest` is z-free, so the wire `state.style` carries no `z`.
|
|
40
|
+
const { z, ...rest } = style;
|
|
41
|
+
return { state: { ...state, style: rest }, z };
|
|
42
|
+
}
|
|
43
|
+
function emit(ctx, handleId, kind, op, state, z) {
|
|
17
44
|
pushDrawing(ctx, {
|
|
18
45
|
kind: "drawing",
|
|
19
46
|
handleId,
|
|
@@ -22,6 +49,10 @@ function emit(ctx, handleId, kind, op, state) {
|
|
|
22
49
|
state,
|
|
23
50
|
bar: ctx.barIndex(),
|
|
24
51
|
time: ctx.stream.bar.time,
|
|
52
|
+
// `z` is presentation-only and top-level (never inside `state`);
|
|
53
|
+
// omit it when `0` so a no-`z` drawing is byte-identical to the
|
|
54
|
+
// pre-feature baseline — mirrors `PlotEmission.xShift` / `.z`.
|
|
55
|
+
...(z === 0 ? {} : { z }),
|
|
25
56
|
});
|
|
26
57
|
}
|
|
27
58
|
/**
|
|
@@ -32,13 +63,22 @@ function emit(ctx, handleId, kind, op, state) {
|
|
|
32
63
|
* full merged state.
|
|
33
64
|
*
|
|
34
65
|
* `update(patch)` merges the patch with the current slot state and
|
|
35
|
-
* re-emits the FULL merged state under `op: "update"`
|
|
36
|
-
*
|
|
66
|
+
* re-emits the FULL merged state under `op: "update"`. `remove()`
|
|
67
|
+
* emits one final `op: "remove"` with the
|
|
37
68
|
* last-known state and flags the slot `removed: true`; subsequent
|
|
38
69
|
* `update` / `remove` calls on the returned handle are no-ops.
|
|
39
70
|
*
|
|
40
71
|
* The handle's `id` is `slotId#subId` — stable across bars.
|
|
41
72
|
*
|
|
73
|
+
* `z` is the presentation-only render-order key the `draw.*` opts bag
|
|
74
|
+
* carried (core's `ZOrdered` mixin) folded into `state.style`. It is
|
|
75
|
+
* {@link splitZ | lifted out} of `state.style` so it rides the wire as
|
|
76
|
+
* the top-level {@link DrawingEmission.z} field, **never** inside
|
|
77
|
+
* `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on
|
|
78
|
+
* the slot. An `update` that does not re-specify a non-zero `z` retains
|
|
79
|
+
* the last value; a re-specified non-zero `z` overrides; `remove`
|
|
80
|
+
* carries the last-known `z`.
|
|
81
|
+
*
|
|
42
82
|
* @since 0.3
|
|
43
83
|
* @stable
|
|
44
84
|
* @example
|
|
@@ -64,23 +104,30 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
|
|
|
64
104
|
throw new Error(OUTSIDE_CTX_MESSAGE);
|
|
65
105
|
const handleId = `${slotId}#${subId}`;
|
|
66
106
|
const existing = ctx.drawingSlots.get(handleId);
|
|
107
|
+
// Lift `z` out of `state.style` so it rides the emission top-level,
|
|
108
|
+
// not inside `DrawingState`. The remaining `style` (z removed) is
|
|
109
|
+
// what persists in the slot.
|
|
110
|
+
const initial = splitZ(initialState);
|
|
67
111
|
let slot;
|
|
68
112
|
let op;
|
|
69
113
|
if (existing === undefined) {
|
|
70
|
-
slot = { handleId, kind, state:
|
|
114
|
+
slot = { handleId, kind, state: initial.state, z: initial.z, removed: false };
|
|
71
115
|
ctx.drawingSlots.set(handleId, slot);
|
|
72
116
|
op = "create";
|
|
73
117
|
}
|
|
74
118
|
else {
|
|
75
119
|
// Cross-bar re-entry. Merge initialState into the existing slot
|
|
76
120
|
// (script-author may pass new anchors / style); resurrect if it
|
|
77
|
-
// was previously removed.
|
|
78
|
-
|
|
121
|
+
// was previously removed. A re-specified `z` (non-default)
|
|
122
|
+
// overrides the retained one; an omitted/`0` `z` keeps the last.
|
|
123
|
+
existing.state = mergeState(existing.state, initial.state);
|
|
124
|
+
if (initial.z !== 0)
|
|
125
|
+
existing.z = initial.z;
|
|
79
126
|
existing.removed = false;
|
|
80
127
|
slot = existing;
|
|
81
128
|
op = "update";
|
|
82
129
|
}
|
|
83
|
-
emit(ctx, handleId, kind, op, slot.state);
|
|
130
|
+
emit(ctx, handleId, kind, op, slot.state, slot.z);
|
|
84
131
|
return {
|
|
85
132
|
id: handleId,
|
|
86
133
|
update(patch) {
|
|
@@ -95,8 +142,15 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
|
|
|
95
142
|
const s = liveCtx.drawingSlots.get(handleId);
|
|
96
143
|
if (s === undefined || s.removed)
|
|
97
144
|
return;
|
|
98
|
-
|
|
99
|
-
|
|
145
|
+
// A patch may re-specify `z` inside `style`; split it out so
|
|
146
|
+
// it never merges into `state.style`. A re-specified
|
|
147
|
+
// non-default `z` overrides; an omitted/`0` `z` retains the
|
|
148
|
+
// slot's last value.
|
|
149
|
+
const split = splitZ(mergeState(s.state, patch));
|
|
150
|
+
s.state = split.state;
|
|
151
|
+
if (split.z !== 0)
|
|
152
|
+
s.z = split.z;
|
|
153
|
+
emit(liveCtx, handleId, kind, "update", s.state, s.z);
|
|
100
154
|
},
|
|
101
155
|
remove() {
|
|
102
156
|
const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;
|
|
@@ -109,9 +163,10 @@ export function createDrawingHandle(slotId, subId, kind, initialState) {
|
|
|
109
163
|
// mid-run, so a previously-created handle's "remove" always
|
|
110
164
|
// reaches `pushDrawing`. The slot stays flagged even if a
|
|
111
165
|
// future drop path swallows the emission — a removed handle
|
|
112
|
-
// must never re-emit.
|
|
166
|
+
// must never re-emit. `remove` carries the last-known `z`
|
|
167
|
+
// (harmless — no render).
|
|
113
168
|
s.removed = true;
|
|
114
|
-
emit(liveCtx, handleId, kind, "remove", s.state);
|
|
169
|
+
emit(liveCtx, handleId, kind, "remove", s.state, s.z);
|
|
115
170
|
},
|
|
116
171
|
};
|
|
117
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/emit/draw/handle.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { DrawingHandle, DrawingKind, DrawingState } from \"@invinite-org/chartlang-core\";\n\nimport {\n ACTIVE_RUNTIME_CONTEXT,\n type DrawingSlot,\n type RuntimeContext,\n} from \"../../runtimeContext.js\";\nimport { pushDrawing } from \"./pushDrawing.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw called outside an active script step\";\n\nfunction mergeState(prev: DrawingState, patch: Partial<DrawingState>): DrawingState {\n // Spread the patch over `prev` and force `kind` back to the\n // previous variant. A cross-variant patch from a script is a type\n // error at the script's callsite — the runtime defends against it\n // here so the runtime cannot accidentally emit a drift between\n // `drawingKind` and `state.kind`. The cast is safe because every\n // variant of `DrawingState` shares the shape `{ kind, ... }` and\n // discriminants stay pinned to `prev.kind`.\n return { ...prev, ...patch, kind: prev.kind } as DrawingState;\n}\n\n/**\n * Lift the presentation-only `z` (render-order key) **out** of a\n * drawing's `state.style` and hand it back to the caller, returning a\n * state with `z` removed from a **shallow clone** of `style` (the\n * caller's style object is never mutated). Every `draw.*` option bag\n * carries `z` via core's `ZOrdered` mixin, and the per-kind impls fold\n * that bag into `state.style`, so `z` arrives nested at `state.style.z`.\n * `z` is a **top-level** `DrawingEmission` field, not part of\n * `DrawingState`, so it must not ride the wire inside `state` — strip it\n * here. Returns `z: 0` (the omit-when-`0` default) for states with no\n * `style` (e.g. `group`) or no `z`, leaving the state object **untouched**\n * in that case so a no-`z` drawing stays byte-identical to the\n * pre-feature baseline.\n */\nfunction splitZ(state: DrawingState): { state: DrawingState; z: number } {\n if (!(\"style\" in state) || state.style === undefined) {\n return { state, z: 0 };\n }\n const style: { z?: number } = state.style;\n if (style.z === undefined) {\n return { state, z: 0 };\n }\n // Shallow-clone style with `z` removed — never mutate the caller's\n // object. `rest` is z-free, so the wire `state.style` carries no `z`.\n const { z, ...rest } = style;\n return { state: { ...state, style: rest } as DrawingState, z };\n}\n\nfunction emit(\n ctx: RuntimeContext,\n handleId: string,\n kind: DrawingKind,\n op: \"create\" | \"update\" | \"remove\",\n state: DrawingState,\n z: number,\n): void {\n pushDrawing(ctx, {\n kind: \"drawing\",\n handleId,\n drawingKind: kind,\n op,\n state,\n bar: ctx.barIndex(),\n time: ctx.stream.bar.time,\n // `z` is presentation-only and top-level (never inside `state`);\n // omit it when `0` so a no-`z` drawing is byte-identical to the\n // pre-feature baseline — mirrors `PlotEmission.xShift` / `.z`.\n ...(z === 0 ? {} : { z }),\n });\n}\n\n/**\n * Construct a {@link DrawingHandle} for `slotId#subId` in the active\n * runtime context. Allocates the slot in `ctx.drawingSlots` on the\n * first call (`op: \"create\"`); subsequent calls at the same callsite\n * across bars find the existing slot and emit `op: \"update\"` with the\n * full merged state.\n *\n * `update(patch)` merges the patch with the current slot state and\n * re-emits the FULL merged state under `op: \"update\"`. `remove()`\n * emits one final `op: \"remove\"` with the\n * last-known state and flags the slot `removed: true`; subsequent\n * `update` / `remove` calls on the returned handle are no-ops.\n *\n * The handle's `id` is `slotId#subId` — stable across bars.\n *\n * `z` is the presentation-only render-order key the `draw.*` opts bag\n * carried (core's `ZOrdered` mixin) folded into `state.style`. It is\n * {@link splitZ | lifted out} of `state.style` so it rides the wire as\n * the top-level {@link DrawingEmission.z} field, **never** inside\n * `DrawingState` (Task 3 forbids `z` in `state`), and is persisted on\n * the slot. An `update` that does not re-specify a non-zero `z` retains\n * the last value; a re-specified non-zero `z` overrides; `remove`\n * carries the last-known `z`.\n *\n * @since 0.3\n * @stable\n * @example\n * // import {\n * // createDrawingHandle,\n * // } from \"@invinite-org/chartlang-runtime\";\n * // const h = createDrawingHandle(\n * // \"demo.chart.ts:5:13#0\",\n * // 0,\n * // \"line\",\n * // {\n * // kind: \"line\",\n * // anchors: [{ time: 0, price: 0 }, { time: 1, price: 1 }],\n * // style: {},\n * // },\n * // );\n * // h.update({ style: { color: \"#3b82f6\" } });\n * // h.remove();\n */\nexport function createDrawingHandle(\n slotId: string,\n subId: number,\n kind: DrawingKind,\n initialState: DrawingState,\n): DrawingHandle {\n const ctx = ACTIVE_RUNTIME_CONTEXT.current;\n if (ctx === null) throw new Error(OUTSIDE_CTX_MESSAGE);\n\n const handleId = `${slotId}#${subId}`;\n const existing = ctx.drawingSlots.get(handleId);\n\n // Lift `z` out of `state.style` so it rides the emission top-level,\n // not inside `DrawingState`. The remaining `style` (z removed) is\n // what persists in the slot.\n const initial = splitZ(initialState);\n\n let slot: DrawingSlot;\n let op: \"create\" | \"update\";\n if (existing === undefined) {\n slot = { handleId, kind, state: initial.state, z: initial.z, removed: false };\n ctx.drawingSlots.set(handleId, slot);\n op = \"create\";\n } else {\n // Cross-bar re-entry. Merge initialState into the existing slot\n // (script-author may pass new anchors / style); resurrect if it\n // was previously removed. A re-specified `z` (non-default)\n // overrides the retained one; an omitted/`0` `z` keeps the last.\n existing.state = mergeState(existing.state, initial.state);\n if (initial.z !== 0) existing.z = initial.z;\n existing.removed = false;\n slot = existing;\n op = \"update\";\n }\n\n emit(ctx, handleId, kind, op, slot.state, slot.z);\n\n return {\n id: handleId,\n update(patch: Partial<DrawingState>): void {\n // `ACTIVE_RUNTIME_CONTEXT.current` can be null when the\n // host calls `handle.update(...)` outside a compute step\n // (e.g. from an async callback). Drop silently in that\n // case — the handle's slot still persists and the next\n // in-step `update` will fire.\n const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;\n if (liveCtx === null) return;\n const s = liveCtx.drawingSlots.get(handleId);\n if (s === undefined || s.removed) return;\n // A patch may re-specify `z` inside `style`; split it out so\n // it never merges into `state.style`. A re-specified\n // non-default `z` overrides; an omitted/`0` `z` retains the\n // slot's last value.\n const split = splitZ(mergeState(s.state, patch));\n s.state = split.state;\n if (split.z !== 0) s.z = split.z;\n emit(liveCtx, handleId, kind, \"update\", s.state, s.z);\n },\n remove(): void {\n const liveCtx = ACTIVE_RUNTIME_CONTEXT.current;\n if (liveCtx === null) return;\n const s = liveCtx.drawingSlots.get(handleId);\n if (s === undefined || s.removed) return;\n // Flag-before-emit is safe: capabilities are invariant\n // mid-run, so a previously-created handle's \"remove\" always\n // reaches `pushDrawing`. The slot stays flagged even if a\n // future drop path swallows the emission — a removed handle\n // must never re-emit. `remove` carries the last-known `z`\n // (harmless — no render).\n s.removed = true;\n emit(liveCtx, handleId, kind, \"remove\", s.state, s.z);\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emit/draw/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,oEAAoE;AACpE,iEAAiE;AACjE,6CAA6C;AAC7C,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emit/draw/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,oEAAoE;AACpE,iEAAiE;AACjE,6CAA6C;AAC7C,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nexport { createDrawingHandle } from \"./handle.js\";\nexport { pushDrawing } from \"./pushDrawing.js\";\nexport { nextSubId, resetSubIdCounters } from \"./subIdAllocator.js\";\n// Phase-3 Task 5 swaps the bare core re-export for the runtime-side\n// `DRAW_NAMESPACE` that wires real per-kind impls (Task 5 lands the 6\n// line-family kinds; Tasks 6–18 extend the namespace as their kinds\n// ship). The namespace falls back to core's throwing-stub Proxy for\n// every kind that hasn't shipped yet — same swap-seam pattern as\n// Phase-2 `TA_REGISTRY` via `primitives.ts`.\nexport { DRAW_NAMESPACE as draw } from \"./namespace.js\";\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/cross-line-tool.ts.
|
|
10
|
-
// Re-licensed MIT for chartlang.
|
|
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,
|
|
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
|
|
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.
|
|
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,
|
|
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.
|
|
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";
|