@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
|
@@ -4,7 +4,7 @@ import type { DrawingHandle, ShapeStyle, WorldPoint } from "@invinite-org/chartl
|
|
|
4
4
|
* world anchors. The renderer derives `(centerX, centerY, radiusX,
|
|
5
5
|
* radiusY)` from the projected bbox and paints a polyline
|
|
6
6
|
* approximation. Rotated ellipses (invinite's `widthOffset` form)
|
|
7
|
-
* are out of scope for
|
|
7
|
+
* are out of scope for now.
|
|
8
8
|
*
|
|
9
9
|
* @anchors `a`, `b` — two `WorldPoint`s (opposite bbox corners)
|
|
10
10
|
* @anchorCount 2
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/ellipse-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":"ellipse.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/ellipse.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,iEAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"ellipse.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/ellipse.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,iEAAiE;AACjE,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,IAAgB;IAEhB,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,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9E,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACnB,IAAyB,EACzB,IAAiB,EACjB,IAA8B,EAC9B,IAAiB;IAEjB,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// (EllipseDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/ellipse-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n EllipseState,\n ShapeStyle,\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.ellipse called outside an active script step\";\n\nfunction ellipseImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: ShapeStyle,\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: EllipseState = { kind: \"ellipse\", anchors: [a, b], style: opts };\n return createDrawingHandle(slotId, subId, \"ellipse\", state);\n}\n\n/**\n * Draw an axis-aligned ellipse inscribed in the bounding box of two\n * world anchors. The renderer derives `(centerX, centerY, radiusX,\n * radiusY)` from the projected bbox and paints a polyline\n * approximation. Rotated ellipses (invinite's `widthOffset` form)\n * are out of scope for now.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (opposite bbox corners)\n * @anchorCount 2\n * @bucket boxes\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.ellipse demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.ellipse(\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { stroke: \"#22c55e\", fill: \"#dcfce7\", fillAlpha: 0.3 },\n * );\n * },\n * });\n */\nexport function ellipse(a: WorldPoint, b: WorldPoint, opts?: ShapeStyle): DrawingHandle;\n/**\n * Compiler-injected overload — the callsite-id transformer rewrites\n * every script-side `draw.ellipse(a, b, opts)` into\n * `draw.ellipse(slotId, a, b, opts)`.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof ellipse = ellipse;\n * // void fn;\n */\nexport function ellipse(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: ShapeStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link ellipse}. 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 ellipse = ellipse;\n * // void fn;\n */\nexport function ellipse(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | ShapeStyle,\n arg4?: ShapeStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return ellipseImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DrawingHandle, FillBetweenStyle, WorldPoint } from "@invinite-org/chartlang-core";
|
|
2
|
+
/**
|
|
3
|
+
* Fill the ribbon between two edges. The native equivalent of Pine
|
|
4
|
+
* `linefill.new(line1, line2, color)` and `fill(plot1, plot2, color)`.
|
|
5
|
+
* The filled region is the closed polygon `edgeA` forward then `edgeB`
|
|
6
|
+
* reversed; the two edges need not share x-coordinates or length.
|
|
7
|
+
*
|
|
8
|
+
* @anchors `edgeA`, `edgeB` — two `WorldPoint` lists (the band edges)
|
|
9
|
+
* @anchorCount variable — each edge needs 2..10000 finite anchors
|
|
10
|
+
* @bucket polylines
|
|
11
|
+
* @warmup none — guard warmup in-script: an edge with fewer than 2 finite
|
|
12
|
+
* anchors (empty, single-point, or a `NaN` coordinate) is dropped with a
|
|
13
|
+
* `malformed-emission` diagnostic, so accumulate then gate on `length >= 2`
|
|
14
|
+
* as the example does.
|
|
15
|
+
* @since 0.4
|
|
16
|
+
* @stable
|
|
17
|
+
* @example
|
|
18
|
+
* import { type WorldPoint, defineIndicator } from "@invinite-org/chartlang-core";
|
|
19
|
+
* const top: WorldPoint[] = [];
|
|
20
|
+
* const bottom: WorldPoint[] = [];
|
|
21
|
+
* export default defineIndicator({
|
|
22
|
+
* name: "draw.fillBetween demo",
|
|
23
|
+
* apiVersion: 1,
|
|
24
|
+
* compute({ bar, draw }) {
|
|
25
|
+
* top.push({ time: bar.time, price: bar.high });
|
|
26
|
+
* bottom.push({ time: bar.time, price: bar.low });
|
|
27
|
+
* if (top.length >= 2) {
|
|
28
|
+
* draw.fillBetween(top, bottom, { fill: "#3b82f6", fillAlpha: 0.2 });
|
|
29
|
+
* }
|
|
30
|
+
* },
|
|
31
|
+
* });
|
|
32
|
+
*/
|
|
33
|
+
export declare function fillBetween(edgeA: ReadonlyArray<WorldPoint>, edgeB: ReadonlyArray<WorldPoint>, opts?: FillBetweenStyle): DrawingHandle;
|
|
34
|
+
/**
|
|
35
|
+
* Compiler-injected overload.
|
|
36
|
+
*
|
|
37
|
+
* @since 0.4
|
|
38
|
+
* @stable
|
|
39
|
+
* @example
|
|
40
|
+
* // Internal — the compiler rewrites every script callsite.
|
|
41
|
+
* // const fn: typeof fillBetween = fillBetween;
|
|
42
|
+
* // void fn;
|
|
43
|
+
*/
|
|
44
|
+
export declare function fillBetween(slotId: string, edgeA: ReadonlyArray<WorldPoint>, edgeB: ReadonlyArray<WorldPoint>, opts?: FillBetweenStyle): DrawingHandle;
|
|
45
|
+
//# sourceMappingURL=fillBetween.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fillBetween.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/fillBetween.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,aAAa,EAEb,gBAAgB,EAChB,UAAU,EACb,MAAM,8BAA8B,CAAC;AAqBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CACvB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,IAAI,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAAC;AACjB;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,IAAI,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) 2026 Invinite. Licensed under the MIT License.
|
|
2
|
+
// See the LICENSE file in the repo root for full license text.
|
|
3
|
+
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
4
|
+
import { createDrawingHandle } from "../handle.js";
|
|
5
|
+
import { nextSubId } from "../subIdAllocator.js";
|
|
6
|
+
const OUTSIDE_CTX_MESSAGE = "draw.fillBetween called outside an active script step";
|
|
7
|
+
function fillBetweenImpl(slotId, edgeA, edgeB, opts) {
|
|
8
|
+
const ctx = ACTIVE_RUNTIME_CONTEXT.current;
|
|
9
|
+
if (ctx === null)
|
|
10
|
+
throw new Error(OUTSIDE_CTX_MESSAGE);
|
|
11
|
+
const subId = nextSubId(ctx, slotId);
|
|
12
|
+
const state = { kind: "fill-between", edgeA, edgeB, style: opts };
|
|
13
|
+
return createDrawingHandle(slotId, subId, "fill-between", state);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Implementation signature for {@link fillBetween}. Branches on
|
|
17
|
+
* `typeof arg1 === "string"` to dispatch the script-facing vs
|
|
18
|
+
* compiler-injected overload.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.4
|
|
21
|
+
* @stable
|
|
22
|
+
* @example
|
|
23
|
+
* // const fn: typeof fillBetween = fillBetween;
|
|
24
|
+
* // void fn;
|
|
25
|
+
*/
|
|
26
|
+
export function fillBetween(arg1, arg2, arg3, arg4) {
|
|
27
|
+
if (typeof arg1 !== "string" ||
|
|
28
|
+
arg2 === undefined ||
|
|
29
|
+
!Array.isArray(arg2) ||
|
|
30
|
+
arg3 === undefined ||
|
|
31
|
+
!Array.isArray(arg3)) {
|
|
32
|
+
throw new Error(OUTSIDE_CTX_MESSAGE);
|
|
33
|
+
}
|
|
34
|
+
return fillBetweenImpl(arg1, arg2, arg3, arg4 ?? {});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=fillBetween.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fillBetween.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/fillBetween.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAS/D,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,KAAgC,EAChC,KAAgC,EAChC,IAAsB;IAEtB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAsDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACvB,IAAwC,EACxC,IAAgC,EAChC,IAAmD,EACnD,IAAuB;IAEvB,IACI,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,SAAS;QAClB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,SAAS;QAClB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EACtB,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAiC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACtF,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\nimport type {\n DrawingHandle,\n FillBetweenState,\n FillBetweenStyle,\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.fillBetween called outside an active script step\";\n\nfunction fillBetweenImpl(\n slotId: string,\n edgeA: ReadonlyArray<WorldPoint>,\n edgeB: ReadonlyArray<WorldPoint>,\n opts: FillBetweenStyle,\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: FillBetweenState = { kind: \"fill-between\", edgeA, edgeB, style: opts };\n return createDrawingHandle(slotId, subId, \"fill-between\", state);\n}\n\n/**\n * Fill the ribbon between two edges. The native equivalent of Pine\n * `linefill.new(line1, line2, color)` and `fill(plot1, plot2, color)`.\n * The filled region is the closed polygon `edgeA` forward then `edgeB`\n * reversed; the two edges need not share x-coordinates or length.\n *\n * @anchors `edgeA`, `edgeB` — two `WorldPoint` lists (the band edges)\n * @anchorCount variable — each edge needs 2..10000 finite anchors\n * @bucket polylines\n * @warmup none — guard warmup in-script: an edge with fewer than 2 finite\n * anchors (empty, single-point, or a `NaN` coordinate) is dropped with a\n * `malformed-emission` diagnostic, so accumulate then gate on `length >= 2`\n * as the example does.\n * @since 0.4\n * @stable\n * @example\n * import { type WorldPoint, defineIndicator } from \"@invinite-org/chartlang-core\";\n * const top: WorldPoint[] = [];\n * const bottom: WorldPoint[] = [];\n * export default defineIndicator({\n * name: \"draw.fillBetween demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * top.push({ time: bar.time, price: bar.high });\n * bottom.push({ time: bar.time, price: bar.low });\n * if (top.length >= 2) {\n * draw.fillBetween(top, bottom, { fill: \"#3b82f6\", fillAlpha: 0.2 });\n * }\n * },\n * });\n */\nexport function fillBetween(\n edgeA: ReadonlyArray<WorldPoint>,\n edgeB: ReadonlyArray<WorldPoint>,\n opts?: FillBetweenStyle,\n): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.4\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof fillBetween = fillBetween;\n * // void fn;\n */\nexport function fillBetween(\n slotId: string,\n edgeA: ReadonlyArray<WorldPoint>,\n edgeB: ReadonlyArray<WorldPoint>,\n opts?: FillBetweenStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link fillBetween}. Branches on\n * `typeof arg1 === \"string\"` to dispatch the script-facing vs\n * compiler-injected overload.\n *\n * @since 0.4\n * @stable\n * @example\n * // const fn: typeof fillBetween = fillBetween;\n * // void fn;\n */\nexport function fillBetween(\n arg1: string | ReadonlyArray<WorldPoint>,\n arg2?: ReadonlyArray<WorldPoint>,\n arg3?: ReadonlyArray<WorldPoint> | FillBetweenStyle,\n arg4?: FillBetweenStyle,\n): DrawingHandle {\n if (\n typeof arg1 !== \"string\" ||\n arg2 === undefined ||\n !Array.isArray(arg2) ||\n arg3 === undefined ||\n !Array.isArray(arg3)\n ) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return fillBetweenImpl(arg1, arg2, arg3 as ReadonlyArray<WorldPoint>, arg4 ?? {});\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/marker-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":"marker.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/marker.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,8BAA8B;AAC9B,4DAA4D;AAC5D,iBAAiB;AACjB,gEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"marker.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/marker.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,8BAA8B;AAC9B,4DAA4D;AAC5D,iBAAiB;AACjB,gEAAgE;AAChE,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,kDAAkD,CAAC;AAO/E,SAAS,UAAU,CAAC,MAAc,EAAE,MAAkB,EAAE,IAAgB;IACpE,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,oEAAoE;IACpE,2DAA2D;IAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IACvC,MAAM,KAAK,GAAgB;QACvB,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK;KACR,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAsCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAClB,IAAyB,EACzB,IAA8B,EAC9B,IAAiB;IAEjB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5D,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// (MarkerDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/marker-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n MarkerState,\n TextOpts,\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.marker called outside an active script step\";\n\ntype MarkerOpts = TextOpts & {\n readonly text?: string;\n readonly value?: number;\n};\n\nfunction markerImpl(slotId: string, anchor: WorldPoint, opts: MarkerOpts): 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 // Split the merged opts bag: top-level `text` / `value` live on the\n // state; the remaining TextOpts fields nest under `style`.\n const { text, value, ...style } = opts;\n const state: MarkerState = {\n kind: \"marker\",\n anchor,\n ...(text !== undefined ? { text } : {}),\n ...(value !== undefined ? { value } : {}),\n style,\n };\n return createDrawingHandle(slotId, subId, \"marker\", state);\n}\n\n/**\n * Draw a single-anchor marker glyph with an optional text label and\n * numeric value. The renderer projects `anchor` to canvas pixel space\n * and paints the `text` (if any) at that position using the\n * {@link TextOpts}-derived font + alignment.\n *\n * @anchors `anchor` — one `WorldPoint`\n * @anchorCount 1\n * @bucket labels\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.marker demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.marker(\n * { time: bar.time, price: bar.close },\n * { text: \"B\", size: \"large\", color: \"#10b981\" },\n * );\n * },\n * });\n */\nexport function marker(anchor: WorldPoint, opts?: MarkerOpts): 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 marker = marker;\n * // void fn;\n */\nexport function marker(slotId: string, anchor: WorldPoint, opts?: MarkerOpts): DrawingHandle;\n/**\n * Implementation signature for {@link marker}. 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 marker = marker;\n * // void fn;\n */\nexport function marker(\n arg1: string | WorldPoint,\n arg2?: WorldPoint | MarkerOpts,\n arg3?: MarkerOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return markerImpl(arg1, arg2 as WorldPoint, arg3 ?? {});\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DrawingHandle, PathOpts, WorldPoint } from "@invinite-org/chartlang-core";
|
|
2
2
|
/**
|
|
3
3
|
* Draw an OPEN polyline through N world anchors. Distinct from
|
|
4
|
-
* `draw.polyline`
|
|
4
|
+
* `draw.polyline` which is CLOSED — `path` does NOT
|
|
5
5
|
* auto-connect the last anchor back to the first. Use
|
|
6
6
|
* `opts.closed === true` to override and close the path explicitly.
|
|
7
7
|
* Supply 2..20 anchors (validator pins this range, mirroring
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/path-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":"path.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/path.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,4BAA4B;AAC5B,4DAA4D;AAC5D,iBAAiB;AACjB,8DAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/path.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,4BAA4B;AAC5B,4DAA4D;AAC5D,iBAAiB;AACjB,8DAA8D;AAC9D,iCAAiC;AAIjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,gDAAgD,CAAC;AAE7E,SAAS,QAAQ,CACb,MAAc,EACd,OAAkC,EAClC,IAAc;IAEd,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAChB,IAAwC,EACxC,IAA2C,EAC3C,IAAe;IAEf,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,QAAQ,CAAC,IAAI,EAAE,IAAiC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACzE,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// (PathDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/path-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type { DrawingHandle, PathOpts, PathState, WorldPoint } 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.path called outside an active script step\";\n\nfunction pathImpl(\n slotId: string,\n anchors: ReadonlyArray<WorldPoint>,\n opts: PathOpts,\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: PathState = { kind: \"path\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"path\", state);\n}\n\n/**\n * Draw an OPEN polyline through N world anchors. Distinct from\n * `draw.polyline` which is CLOSED — `path` does NOT\n * auto-connect the last anchor back to the first. Use\n * `opts.closed === true` to override and close the path explicitly.\n * Supply 2..20 anchors (validator pins this range, mirroring\n * invinite's 20-point cap).\n *\n * @anchors `anchors` — `ReadonlyArray<WorldPoint>` of length 2..20\n * @anchorCount 2..20\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.path demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.path(\n * [\n * { time: bar.time, price: bar.open },\n * { time: bar.time, price: bar.close },\n * ],\n * { color: \"#3b82f6\", lineWidth: 2 },\n * );\n * },\n * });\n */\nexport function path(anchors: ReadonlyArray<WorldPoint>, opts?: PathOpts): 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 path = path;\n * // void fn;\n */\nexport function path(\n slotId: string,\n anchors: ReadonlyArray<WorldPoint>,\n opts?: PathOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link path}. 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 path = path;\n * // void fn;\n */\nexport function path(\n arg1: string | ReadonlyArray<WorldPoint>,\n arg2?: ReadonlyArray<WorldPoint> | PathOpts,\n arg3?: PathOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return pathImpl(arg1, arg2 as ReadonlyArray<WorldPoint>, arg3 ?? {});\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import type { DrawingHandle, LineDrawStyle, WorldPoint } from "@invinite-org/cha
|
|
|
4
4
|
* auto-connects the last anchor back to the first to close the
|
|
5
5
|
* polygon; supply between 3 and 20 anchors (validator pins this
|
|
6
6
|
* range, mirroring the invinite tool's 20-point cap). The open
|
|
7
|
-
* polyline equivalent will ship as `draw.path
|
|
7
|
+
* polyline equivalent will ship as `draw.path`.
|
|
8
8
|
*
|
|
9
9
|
* @anchors `anchors` — `ReadonlyArray<WorldPoint>` of length 3..20
|
|
10
10
|
* @anchorCount 3..20
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/polyline-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":"polyline.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/polyline.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"polyline.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/polyline.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,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,oDAAoD,CAAC;AAEjF,SAAS,YAAY,CACjB,MAAc,EACd,OAAkC,EAClC,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,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CACpB,IAAwC,EACxC,IAAgD,EAChD,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAiC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC7E,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// (PolylineDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/polyline-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n LineDrawStyle,\n PolylineState,\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.polyline called outside an active script step\";\n\nfunction polylineImpl(\n slotId: string,\n anchors: ReadonlyArray<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: PolylineState = { kind: \"polyline\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"polyline\", state);\n}\n\n/**\n * Draw a closed polyline through N world anchors. The renderer\n * auto-connects the last anchor back to the first to close the\n * polygon; supply between 3 and 20 anchors (validator pins this\n * range, mirroring the invinite tool's 20-point cap). The open\n * polyline equivalent will ship as `draw.path`.\n *\n * @anchors `anchors` — `ReadonlyArray<WorldPoint>` of length 3..20\n * @anchorCount 3..20\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.polyline demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.polyline(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.open },\n * { time: bar.time, price: bar.high },\n * ],\n * { color: \"#a855f7\", lineWidth: 2 },\n * );\n * },\n * });\n */\nexport function polyline(anchors: ReadonlyArray<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 polyline = polyline;\n * // void fn;\n */\nexport function polyline(\n slotId: string,\n anchors: ReadonlyArray<WorldPoint>,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link polyline}. 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 polyline = polyline;\n * // void fn;\n */\nexport function polyline(\n arg1: string | ReadonlyArray<WorldPoint>,\n arg2?: ReadonlyArray<WorldPoint> | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return polylineImpl(arg1, arg2 as ReadonlyArray<WorldPoint>, arg3 ?? {});\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/rectangle-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":"rectangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/rectangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,mEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"rectangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/rectangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,iCAAiC;AACjC,4DAA4D;AAC5D,iBAAiB;AACjB,mEAAmE;AACnE,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,CAClB,MAAc,EACd,CAAa,EACb,CAAa,EACb,IAAgB;IAEhB,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,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AA6CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACrB,IAAyB,EACzB,IAAiB,EACjB,IAA8B,EAC9B,IAAiB;IAEjB,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// (RectangleDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/rectangle-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n RectangleState,\n ShapeStyle,\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.rectangle called outside an active script step\";\n\nfunction rectangleImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: ShapeStyle,\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: RectangleState = { kind: \"rectangle\", anchors: [a, b], style: opts };\n return createDrawingHandle(slotId, subId, \"rectangle\", state);\n}\n\n/**\n * Draw an axis-aligned rectangle defined by two opposite world corners.\n * The renderer projects each anchor with the adapter's viewport\n * transform; degenerate (zero-area) inputs render as a single line.\n *\n * @anchors `a`, `b` — two `WorldPoint`s (opposite corners)\n * @anchorCount 2\n * @bucket boxes\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.rectangle demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.rectangle(\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { stroke: \"#3b82f6\", fill: \"#dbeafe\", fillAlpha: 0.4 },\n * );\n * },\n * });\n */\nexport function rectangle(a: WorldPoint, b: WorldPoint, opts?: ShapeStyle): DrawingHandle;\n/**\n * Compiler-injected overload — the callsite-id transformer rewrites\n * every script-side `draw.rectangle(a, b, opts)` into\n * `draw.rectangle(slotId, a, b, opts)`.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof rectangle = rectangle;\n * // void fn;\n */\nexport function rectangle(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: ShapeStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link rectangle}. 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 rectangle = rectangle;\n * // void fn;\n */\nexport function rectangle(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | ShapeStyle,\n arg4?: ShapeStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return rectangleImpl(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/rotated-rectangle-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":"rotatedRectangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/rotatedRectangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,wCAAwC;AACxC,4DAA4D;AAC5D,iBAAiB;AACjB,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"rotatedRectangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/rotatedRectangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,wCAAwC;AACxC,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,4DAA4D,CAAC;AAEzF,SAAS,oBAAoB,CACzB,MAAc,EACd,OAAmB,EACnB,IAAgB;IAEhB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAA0B,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAiDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC5B,IAAyB,EACzB,IAA8B,EAC9B,IAAiB;IAEjB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,EAAE,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// (RotatedRectangleDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/rotated-rectangle-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorQuad,\n DrawingHandle,\n RotatedRectangleState,\n ShapeStyle,\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.rotatedRectangle called outside an active script step\";\n\nfunction rotatedRectangleImpl(\n slotId: string,\n anchors: AnchorQuad,\n opts: ShapeStyle,\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: RotatedRectangleState = { kind: \"rotated-rectangle\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"rotated-rectangle\", state);\n}\n\n/**\n * Draw a rotated rectangle by its four world-space corners. The four\n * anchors should be supplied in stroke order (CW or CCW); the renderer\n * walks them as a closed polygon so any non-self-intersecting quad\n * paints correctly. Pure square / axis-aligned input is supported —\n * use {@link rectangle} for that case if you prefer the 2-anchor\n * ergonomics.\n *\n * @anchors `anchors` — 4 `WorldPoint`s in stroke order\n * @anchorCount 4\n * @bucket boxes\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.rotatedRectangle demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.rotatedRectangle(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.high + 1 },\n * { time: bar.time, price: bar.low + 1 },\n * ],\n * { stroke: \"#22c55e\" },\n * );\n * },\n * });\n */\nexport function rotatedRectangle(anchors: AnchorQuad, opts?: ShapeStyle): 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 rotatedRectangle = rotatedRectangle;\n * // void fn;\n */\nexport function rotatedRectangle(\n slotId: string,\n anchors: AnchorQuad,\n opts?: ShapeStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link rotatedRectangle}. 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 rotatedRectangle = rotatedRectangle;\n * // void fn;\n */\nexport function rotatedRectangle(\n arg1: string | AnchorQuad,\n arg2?: AnchorQuad | ShapeStyle,\n arg3?: ShapeStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return rotatedRectangleImpl(arg1, arg2 as AnchorQuad, arg3 ?? {});\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import type { AnchorTriple, DrawingHandle, ShapeStyle } from "@invinite-org/char
|
|
|
2
2
|
/**
|
|
3
3
|
* Draw a triangle as a closed three-vertex polygon. Vertices may be
|
|
4
4
|
* supplied CW or CCW; the renderer walks them as a closed path. Not to
|
|
5
|
-
* be confused with `draw.trianglePattern`
|
|
5
|
+
* be confused with `draw.trianglePattern` — that variant is
|
|
6
6
|
* the harmonic five-anchor triangle pattern.
|
|
7
7
|
*
|
|
8
8
|
* @anchors `anchors` — 3 `WorldPoint`s
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/triangle-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":"triangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/triangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,4DAA4D;AAC5D,iBAAiB;AACjB,kEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"triangle.js","sourceRoot":"","sources":["../../../../src/emit/draw/boxes/triangle.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,gCAAgC;AAChC,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,oDAAoD,CAAC;AAEjF,SAAS,YAAY,CAAC,MAAc,EAAE,OAAqB,EAAE,IAAgB;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,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AA0CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CACpB,IAA2B,EAC3B,IAAgC,EAChC,IAAiB;IAEjB,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,YAAY,CAAC,IAAI,EAAE,IAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// Anchors + state shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (TriangleDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/triangle-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n ShapeStyle,\n TriangleState,\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.triangle called outside an active script step\";\n\nfunction triangleImpl(slotId: string, anchors: AnchorTriple, opts: ShapeStyle): 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: TriangleState = { kind: \"triangle\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"triangle\", state);\n}\n\n/**\n * Draw a triangle as a closed three-vertex polygon. Vertices may be\n * supplied CW or CCW; the renderer walks them as a closed path. Not to\n * be confused with `draw.trianglePattern` — that variant is\n * the harmonic five-anchor triangle pattern.\n *\n * @anchors `anchors` — 3 `WorldPoint`s\n * @anchorCount 3\n * @bucket boxes\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.triangle demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.triangle(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.close },\n * ],\n * { stroke: \"#ef4444\", fill: \"#fee2e2\", fillAlpha: 0.5 },\n * );\n * },\n * });\n */\nexport function triangle(anchors: AnchorTriple, opts?: ShapeStyle): 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 triangle = triangle;\n * // void fn;\n */\nexport function triangle(slotId: string, anchors: AnchorTriple, opts?: ShapeStyle): DrawingHandle;\n/**\n * Implementation signature for {@link triangle}. 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 triangle = triangle;\n * // void fn;\n */\nexport function triangle(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | ShapeStyle,\n arg3?: ShapeStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return triangleImpl(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/disjoint-channel-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":"disjointChannel.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/disjointChannel.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"disjointChannel.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/disjointChannel.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,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,OAAmB,EACnB,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,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAyB,EACzB,IAAiC,EACjC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,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// (DisjointChannelDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/disjoint-channel-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorQuad,\n DisjointChannelState,\n DrawingHandle,\n LineDrawStyle,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.disjointChannel called outside an active script step\";\n\nfunction disjointChannelImpl(\n slotId: string,\n anchors: AnchorQuad,\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: DisjointChannelState = { kind: \"disjoint-channel\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"disjoint-channel\", state);\n}\n\n/**\n * Draw a disjoint channel — two independent line segments. Anchors\n * `[A, B, C, D]`: segment 1 from A to B, segment 2 from C to D, with\n * no shared geometry constraint. Mirrors invinite's\n * `disjoint-channel-tool.ts` shape.\n *\n * @anchors `anchors` — `[A, B, C, D]` quad\n * @anchorCount 4\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.disjointChannel demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.disjointChannel(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.open },\n * { time: bar.time, price: bar.close },\n * ],\n * { color: \"#3b82f6\", lineWidth: 2 },\n * );\n * },\n * });\n */\nexport function disjointChannel(anchors: AnchorQuad, opts?: LineDrawStyle): DrawingHandle;\n/**\n * Compiler-injected overload.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof disjointChannel = disjointChannel;\n * // void fn;\n */\nexport function disjointChannel(\n slotId: string,\n anchors: AnchorQuad,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link disjointChannel}. 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 disjointChannel = disjointChannel;\n * // void fn;\n */\nexport function disjointChannel(\n arg1: string | AnchorQuad,\n arg2?: AnchorQuad | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return disjointChannelImpl(arg1, arg2 as AnchorQuad, arg3 ?? {});\n}\n"]}
|
|
@@ -4,8 +4,7 @@ import type { AnchorTriple, DrawingHandle, LineDrawStyle } from "@invinite-org/c
|
|
|
4
4
|
* rails. Anchors `[leftEdge, rightEdge, oppositeHook]`: leftEdge and
|
|
5
5
|
* rightEdge fix the time range; the opposite-edge price comes from
|
|
6
6
|
* `oppositeHook.price`. Mirrors invinite's `flat-top-bottom-tool.ts`
|
|
7
|
-
* shape — note the landed core shape persists 3 anchors
|
|
8
|
-
* `tasks/phase-3-drawing-parity/10-channels.plan.md` §1).
|
|
7
|
+
* shape — note the landed core shape persists 3 anchors.
|
|
9
8
|
*
|
|
10
9
|
* @anchors `anchors` — `[leftEdge, rightEdge, oppositeHook]` triple
|
|
11
10
|
* @anchorCount 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatTopBottom.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/channels/flatTopBottom.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EAEb,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAoBtC
|
|
1
|
+
{"version":3,"file":"flatTopBottom.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/channels/flatTopBottom.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,YAAY,EACZ,aAAa,EAEb,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;AAC1F;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,aAAa,GACrB,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/flat-top-bottom-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":"flatTopBottom.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/flatTopBottom.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,4DAA4D;AAC5D,iBAAiB;AACjB,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"flatTopBottom.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/flatTopBottom.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,qCAAqC;AACrC,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,yDAAyD,CAAC;AAEtF,SAAS,iBAAiB,CACtB,MAAc,EACd,OAAqB,EACrB,IAAmB;IAEnB,MAAM,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAoB,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// (FlatTopBottomDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/flat-top-bottom-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n FlatTopBottomState,\n LineDrawStyle,\n} from \"@invinite-org/chartlang-core\";\n\nimport { ACTIVE_RUNTIME_CONTEXT } from \"../../../runtimeContext.js\";\nimport { createDrawingHandle } from \"../handle.js\";\nimport { nextSubId } from \"../subIdAllocator.js\";\n\nconst OUTSIDE_CTX_MESSAGE = \"draw.flatTopBottom called outside an active script step\";\n\nfunction flatTopBottomImpl(\n slotId: string,\n anchors: AnchorTriple,\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: FlatTopBottomState = { kind: \"flat-top-bottom\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"flat-top-bottom\", state);\n}\n\n/**\n * Draw a flat-top / flat-bottom channel — two parallel horizontal\n * rails. Anchors `[leftEdge, rightEdge, oppositeHook]`: leftEdge and\n * rightEdge fix the time range; the opposite-edge price comes from\n * `oppositeHook.price`. Mirrors invinite's `flat-top-bottom-tool.ts`\n * shape — note the landed core shape persists 3 anchors.\n *\n * @anchors `anchors` — `[leftEdge, rightEdge, oppositeHook]` triple\n * @anchorCount 3\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.flatTopBottom demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.flatTopBottom(\n * [\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.low },\n * ],\n * { color: \"#3b82f6\", lineStyle: \"dashed\" },\n * );\n * },\n * });\n */\nexport function flatTopBottom(anchors: AnchorTriple, 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 flatTopBottom = flatTopBottom;\n * // void fn;\n */\nexport function flatTopBottom(\n slotId: string,\n anchors: AnchorTriple,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link flatTopBottom}. 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 flatTopBottom = flatTopBottom;\n * // void fn;\n */\nexport function flatTopBottom(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return flatTopBottomImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { DrawingHandle, RegressionTrendOpts, WorldPoint } from "@invinite-org/chartlang-core";
|
|
2
2
|
/**
|
|
3
3
|
* Draw an OLS regression-trend line between two world anchors with
|
|
4
|
-
* optional ±σ bands. The
|
|
4
|
+
* optional ±σ bands. The runtime emits the anchor pair + opts;
|
|
5
5
|
* the actual OLS fit is computed by the adapter — consumer adapters
|
|
6
6
|
* can use {@link import("@invinite-org/chartlang-runtime").linearRegression}
|
|
7
|
-
*
|
|
7
|
+
* without duplicating math. The reference
|
|
8
8
|
* canvas2d adapter renders a placeholder anchor-to-anchor line because
|
|
9
|
-
* `Viewport` does not expose a bar accessor
|
|
10
|
-
* `tasks/phase-3-drawing-parity/10-channels.plan.md` §3. Mirrors
|
|
9
|
+
* `Viewport` does not expose a bar accessor. Mirrors
|
|
11
10
|
* invinite's `regression-trend-tool.ts` shape.
|
|
12
11
|
*
|
|
13
12
|
* @anchors `a`, `b` — start and end `WorldPoint`s (a.time < b.time)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regressionTrend.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/channels/regressionTrend.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EAEnB,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC
|
|
1
|
+
{"version":3,"file":"regressionTrend.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/channels/regressionTrend.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EAEnB,UAAU,EACb,MAAM,8BAA8B,CAAC;AAyBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,eAAe,CAC3B,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,mBAAmB,GAC3B,aAAa,CAAC;AACjB;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,IAAI,CAAC,EAAE,mBAAmB,GAC3B,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/regression-trend-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":"regressionTrend.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/regressionTrend.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"regressionTrend.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/regressionTrend.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,uCAAuC;AACvC,4DAA4D;AAC5D,iBAAiB;AACjB,0EAA0E;AAC1E,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,CAAa,EACb,CAAa,EACb,IAAyB;IAEzB,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,kBAAkB;QACxB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC;AAyDD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC3B,IAAyB,EACzB,IAAiB,EACjB,IAAuC,EACvC,IAA0B;IAE1B,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,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3E,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// (RegressionTrendDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/regression-trend-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n RegressionTrendOpts,\n RegressionTrendState,\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.regressionTrend called outside an active script step\";\n\nfunction regressionTrendImpl(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts: RegressionTrendOpts,\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: RegressionTrendState = {\n kind: \"regression-trend\",\n anchors: [a, b],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"regression-trend\", state);\n}\n\n/**\n * Draw an OLS regression-trend line between two world anchors with\n * optional ±σ bands. The runtime emits the anchor pair + opts;\n * the actual OLS fit is computed by the adapter — consumer adapters\n * can use {@link import(\"@invinite-org/chartlang-runtime\").linearRegression}\n * without duplicating math. The reference\n * canvas2d adapter renders a placeholder anchor-to-anchor line because\n * `Viewport` does not expose a bar accessor. Mirrors\n * invinite's `regression-trend-tool.ts` shape.\n *\n * @anchors `a`, `b` — start and end `WorldPoint`s (a.time < b.time)\n * @anchorCount 2\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.regressionTrend demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.regressionTrend(\n * { time: bar.time, price: bar.close },\n * { time: bar.time + 30_000, price: bar.close },\n * {\n * source: \"close\",\n * stdevMultiplier: 2,\n * showUpperBand: true,\n * showLowerBand: true,\n * },\n * );\n * },\n * });\n */\nexport function regressionTrend(\n a: WorldPoint,\n b: WorldPoint,\n opts?: RegressionTrendOpts,\n): 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 regressionTrend = regressionTrend;\n * // void fn;\n */\nexport function regressionTrend(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: RegressionTrendOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link regressionTrend}. 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 regressionTrend = regressionTrend;\n * // void fn;\n */\nexport function regressionTrend(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | RegressionTrendOpts,\n arg4?: RegressionTrendOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return regressionTrendImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// Behaviour from
|
|
9
9
|
// invinite/src/components/trading-chart/tools/trend-channel-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":"trendChannel.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/trendChannel.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"trendChannel.js","sourceRoot":"","sources":["../../../../src/emit/draw/channels/trendChannel.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,oCAAoC;AACpC,6DAA6D;AAC7D,oCAAoC;AACpC,4DAA4D;AAC5D,iBAAiB;AACjB,uEAAuE;AACvE,iCAAiC;AASjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,wDAAwD,CAAC;AAErF,SAAS,gBAAgB,CACrB,MAAc,EACd,OAAqB,EACrB,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,GAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CACxB,IAA2B,EAC3B,IAAmC,EACnC,IAAoB;IAEpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,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// (TrendChannelDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// Behaviour from\n// invinite/src/components/trading-chart/tools/trend-channel-tool.ts.\n// Re-licensed MIT for chartlang.\n\nimport type {\n AnchorTriple,\n DrawingHandle,\n LineDrawStyle,\n TrendChannelState,\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.trendChannel called outside an active script step\";\n\nfunction trendChannelImpl(\n slotId: string,\n anchors: AnchorTriple,\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: TrendChannelState = { kind: \"trend-channel\", anchors, style: opts };\n return createDrawingHandle(slotId, subId, \"trend-channel\", state);\n}\n\n/**\n * Draw a parallel-line trend channel from three world anchors\n * `[primaryA, primaryB, parallelHook]`. The first two define the\n * primary trend line; the third is offset perpendicular to that line\n * to determine the parallel rail. Mirrors invinite's\n * `trend-channel-tool.ts` shape.\n *\n * @anchors `anchors` — `[primaryA, primaryB, parallelHook]` triple\n * @anchorCount 3\n * @bucket polylines\n * @since 0.3\n * @stable\n * @example\n * import { defineIndicator } from \"@invinite-org/chartlang-core\";\n * export default defineIndicator({\n * name: \"draw.trendChannel demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.trendChannel(\n * [\n * { time: bar.time, price: bar.low },\n * { time: bar.time, price: bar.high },\n * { time: bar.time, price: bar.close },\n * ],\n * { color: \"#3b82f6\", lineWidth: 2 },\n * );\n * },\n * });\n */\nexport function trendChannel(anchors: AnchorTriple, 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 trendChannel = trendChannel;\n * // void fn;\n */\nexport function trendChannel(\n slotId: string,\n anchors: AnchorTriple,\n opts?: LineDrawStyle,\n): DrawingHandle;\n/**\n * Implementation signature for {@link trendChannel}. 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 trendChannel = trendChannel;\n * // void fn;\n */\nexport function trendChannel(\n arg1: string | AnchorTriple,\n arg2?: AnchorTriple | LineDrawStyle,\n arg3?: LineDrawStyle,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || !Array.isArray(arg2)) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return trendChannelImpl(arg1, arg2 as AnchorTriple, arg3 ?? {});\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import type { DrawingHandle, FrameOpts, WorldPoint } from "@invinite-org/chartla
|
|
|
3
3
|
* Draw a labelled rectangular frame between two world anchors
|
|
4
4
|
* `[topLeft, bottomRight]`. The frame renders an outlined rectangle
|
|
5
5
|
* plus an optional background fill (`opts.bgColor`) and label
|
|
6
|
-
* (`opts.label`)
|
|
6
|
+
* (`opts.label`). Children of the frame render
|
|
7
7
|
* themselves — the frame is a visual envelope, not a re-render layer.
|
|
8
8
|
*
|
|
9
9
|
* @anchors `a`, `b` — two `WorldPoint`s `(topLeft, bottomRight)`
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
// No standalone tool source exists in invinite — frames are
|
|
9
9
|
// metadata-only collab containers; the chartlang port adds the
|
|
10
10
|
// `anchors: AnchorPair` payload so frames render as a visible
|
|
11
|
-
// rectangle at the wire level
|
|
12
|
-
// Re-licensed MIT for chartlang.
|
|
11
|
+
// rectangle at the wire level.
|
|
12
|
+
// Re-licensed MIT for chartlang.
|
|
13
13
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
14
14
|
import { createDrawingHandle } from "../handle.js";
|
|
15
15
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../src/emit/draw/containers/frame.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,0BAA0B;AAC1B,6DAA6D;AAC7D,6BAA6B;AAC7B,4DAA4D;AAC5D,4DAA4D;AAC5D,+DAA+D;AAC/D,8DAA8D;AAC9D
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../src/emit/draw/containers/frame.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,0BAA0B;AAC1B,6DAA6D;AAC7D,6BAA6B;AAC7B,4DAA4D;AAC5D,4DAA4D;AAC5D,+DAA+D;AAC/D,8DAA8D;AAC9D,+BAA+B;AAC/B,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,iDAAiD,CAAC;AAE9E,SAAS,SAAS,CAAC,MAAc,EAAE,CAAa,EAAE,CAAa,EAAE,IAAe;IAC5E,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,GAAe;QACtB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,IAAI;KACd,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC;AA+CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CACjB,IAAyB,EACzB,IAAiB,EACjB,IAA6B,EAC7B,IAAgB;IAEhB,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,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n//\n// State shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (FrameDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// No standalone tool source exists in invinite — frames are\n// metadata-only collab containers; the chartlang port adds the\n// `anchors: AnchorPair` payload so frames render as a visible\n// rectangle at the wire level.\n// Re-licensed MIT for chartlang.\n\nimport type {\n DrawingHandle,\n FrameOpts,\n FrameState,\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.frame called outside an active script step\";\n\nfunction frameImpl(slotId: string, a: WorldPoint, b: WorldPoint, opts: FrameOpts): 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: FrameState = {\n kind: \"frame\",\n anchors: [a, b],\n childHandleIds: [],\n style: opts,\n };\n return createDrawingHandle(slotId, subId, \"frame\", state);\n}\n\n/**\n * Draw a labelled rectangular frame between two world anchors\n * `[topLeft, bottomRight]`. The frame renders an outlined rectangle\n * plus an optional background fill (`opts.bgColor`) and label\n * (`opts.label`). Children of the frame render\n * themselves — the frame is a visual envelope, not a re-render layer.\n *\n * @anchors `a`, `b` — two `WorldPoint`s `(topLeft, bottomRight)`\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.frame demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * draw.frame(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 60_000, price: bar.high },\n * { label: \"Trade idea\", bgColor: \"#f1f5f9\" },\n * );\n * },\n * });\n */\nexport function frame(a: WorldPoint, b: WorldPoint, opts?: FrameOpts): DrawingHandle;\n/**\n * Compiler-injected overload — the callsite-id transformer rewrites\n * every script-side `draw.frame(a, b, opts)` into\n * `draw.frame(slotId, a, b, opts)`.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof frame = frame;\n * // void fn;\n */\nexport function frame(\n slotId: string,\n a: WorldPoint,\n b: WorldPoint,\n opts?: FrameOpts,\n): DrawingHandle;\n/**\n * Implementation signature for {@link frame}. 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 frame = frame;\n * // void fn;\n */\nexport function frame(\n arg1: string | WorldPoint,\n arg2?: WorldPoint,\n arg3?: WorldPoint | FrameOpts,\n arg4?: FrameOpts,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined || arg3 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return frameImpl(arg1, arg2, arg3 as WorldPoint, arg4 ?? {});\n}\n"]}
|
|
@@ -4,8 +4,7 @@ import type { DrawingHandle } from "@invinite-org/chartlang-core";
|
|
|
4
4
|
* logical container. The script-author passes the handle ids
|
|
5
5
|
* collected from earlier `draw.<kind>(...).id` calls; the runtime
|
|
6
6
|
* carries the list on the wire as a `GroupState`, and the adapter
|
|
7
|
-
* renders nothing of its own — children render themselves
|
|
8
|
-
* PLAN.md §10.4.
|
|
7
|
+
* renders nothing of its own — children render themselves.
|
|
9
8
|
*
|
|
10
9
|
* @anchors `childHandleIds` — a `ReadonlyArray<string>` of handle ids
|
|
11
10
|
* @anchorCount 0 (metadata-only container)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/containers/group.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,8BAA8B,CAAC;AAmB9E
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../../src/emit/draw/containers/group.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,8BAA8B,CAAC;AAmB9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;AAC5E;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.
|
|
8
8
|
// No standalone tool source exists in invinite — groups are
|
|
9
9
|
// metadata-only containers; their parent / child linkage is collab
|
|
10
|
-
// state stripped
|
|
11
|
-
// Re-licensed MIT for chartlang.
|
|
10
|
+
// state stripped.
|
|
11
|
+
// Re-licensed MIT for chartlang.
|
|
12
12
|
import { ACTIVE_RUNTIME_CONTEXT } from "../../../runtimeContext.js";
|
|
13
13
|
import { createDrawingHandle } from "../handle.js";
|
|
14
14
|
import { nextSubId } from "../subIdAllocator.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/emit/draw/containers/group.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,0BAA0B;AAC1B,6DAA6D;AAC7D,6BAA6B;AAC7B,4DAA4D;AAC5D,4DAA4D;AAC5D,mEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/emit/draw/containers/group.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,EAAE;AACF,0BAA0B;AAC1B,6DAA6D;AAC7D,6BAA6B;AAC7B,4DAA4D;AAC5D,4DAA4D;AAC5D,mEAAmE;AACnE,kBAAkB;AAClB,iCAAiC;AAIjC,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,iDAAiD,CAAC;AAE9E,SAAS,SAAS,CAAC,MAAc,EAAE,cAAqC;IACpE,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,GAAe;QACtB,IAAI,EAAE,OAAO;QACb,cAAc;KACjB,CAAC;IACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC;AA8CD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CACjB,IAAoC,EACpC,IAA4B;IAE5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,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// State shape ported from\n// invinite/shared/trading-chart-collab-yjs/y-doc-bridge.ts\n// (GroupDrawing), commit\n// 078f41fe2569d659d5aba726da8bcb5d3e2ced02, © Invinite.\n// No standalone tool source exists in invinite — groups are\n// metadata-only containers; their parent / child linkage is collab\n// state stripped.\n// Re-licensed MIT for chartlang.\n\nimport type { DrawingHandle, GroupState } 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.group called outside an active script step\";\n\nfunction groupImpl(slotId: string, childHandleIds: ReadonlyArray<string>): 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: GroupState = {\n kind: \"group\",\n childHandleIds,\n };\n return createDrawingHandle(slotId, subId, \"group\", state);\n}\n\n/**\n * Group a set of previously emitted drawing handles under a single\n * logical container. The script-author passes the handle ids\n * collected from earlier `draw.<kind>(...).id` calls; the runtime\n * carries the list on the wire as a `GroupState`, and the adapter\n * renders nothing of its own — children render themselves.\n *\n * @anchors `childHandleIds` — a `ReadonlyArray<string>` of handle ids\n * @anchorCount 0 (metadata-only container)\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.group demo\",\n * apiVersion: 1,\n * compute({ bar, draw }) {\n * const a = draw.line(\n * { time: bar.time, price: bar.low },\n * { time: bar.time + 60_000, price: bar.high },\n * );\n * const b = draw.line(\n * { time: bar.time, price: bar.high },\n * { time: bar.time + 60_000, price: bar.low },\n * );\n * draw.group([a.id, b.id]);\n * },\n * });\n */\nexport function group(childHandleIds: ReadonlyArray<string>): DrawingHandle;\n/**\n * Compiler-injected overload — the callsite-id transformer rewrites\n * every script-side `draw.group(childHandleIds)` into\n * `draw.group(slotId, childHandleIds)`.\n *\n * @since 0.3\n * @stable\n * @example\n * // Internal — the compiler rewrites every script callsite.\n * // const fn: typeof group = group;\n * // void fn;\n */\nexport function group(slotId: string, childHandleIds: ReadonlyArray<string>): DrawingHandle;\n/**\n * Implementation signature for {@link group}. 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 group = group;\n * // void fn;\n */\nexport function group(\n arg1: string | ReadonlyArray<string>,\n arg2?: ReadonlyArray<string>,\n): DrawingHandle {\n if (typeof arg1 !== \"string\" || arg2 === undefined) {\n throw new Error(OUTSIDE_CTX_MESSAGE);\n }\n return groupImpl(arg1, arg2);\n}\n"]}
|