@forgecharts/sdk 1.1.23 → 1.1.28
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/dist/__tests__/backwardCompatibility.test.d.ts +14 -0
- package/dist/__tests__/backwardCompatibility.test.d.ts.map +1 -0
- package/dist/__tests__/backwardCompatibility.test.js +159 -0
- package/dist/__tests__/backwardCompatibility.test.js.map +1 -0
- package/dist/__tests__/candleInvariant.test.d.ts +20 -0
- package/dist/__tests__/candleInvariant.test.d.ts.map +1 -0
- package/dist/__tests__/candleInvariant.test.js +415 -0
- package/dist/__tests__/candleInvariant.test.js.map +1 -0
- package/dist/__tests__/public-api-surface.d.ts +13 -0
- package/dist/__tests__/public-api-surface.d.ts.map +1 -0
- package/{src/__tests__/public-api-surface.ts → dist/__tests__/public-api-surface.js} +4 -42
- package/dist/__tests__/public-api-surface.js.map +1 -0
- package/dist/__tests__/timeframeBoundary.test.d.ts +17 -0
- package/dist/__tests__/timeframeBoundary.test.d.ts.map +1 -0
- package/dist/__tests__/timeframeBoundary.test.js +452 -0
- package/dist/__tests__/timeframeBoundary.test.js.map +1 -0
- package/dist/api/DrawingManager.d.ts +20 -0
- package/dist/api/DrawingManager.d.ts.map +1 -0
- package/dist/api/DrawingManager.js +190 -0
- package/dist/api/DrawingManager.js.map +1 -0
- package/dist/api/EventBus.d.ts +19 -0
- package/dist/api/EventBus.d.ts.map +1 -0
- package/dist/api/EventBus.js +44 -0
- package/dist/api/EventBus.js.map +1 -0
- package/dist/api/IndicatorDAG.d.ts +85 -0
- package/dist/api/IndicatorDAG.d.ts.map +1 -0
- package/dist/api/IndicatorDAG.js +316 -0
- package/dist/api/IndicatorDAG.js.map +1 -0
- package/dist/api/IndicatorRegistry.d.ts +22 -0
- package/dist/api/IndicatorRegistry.d.ts.map +1 -0
- package/dist/api/IndicatorRegistry.js +39 -0
- package/dist/api/IndicatorRegistry.js.map +1 -0
- package/dist/api/LayoutManager.d.ts +30 -0
- package/dist/api/LayoutManager.d.ts.map +1 -0
- package/dist/api/LayoutManager.js +51 -0
- package/dist/api/LayoutManager.js.map +1 -0
- package/dist/api/PaneManager.d.ts +42 -0
- package/dist/api/PaneManager.d.ts.map +1 -0
- package/dist/api/PaneManager.js +119 -0
- package/dist/api/PaneManager.js.map +1 -0
- package/dist/api/ReferenceAPI.d.ts +78 -0
- package/dist/api/ReferenceAPI.d.ts.map +1 -0
- package/dist/api/ReferenceAPI.js +153 -0
- package/dist/api/ReferenceAPI.js.map +1 -0
- package/dist/api/TChart.d.ts +345 -0
- package/dist/api/TChart.d.ts.map +1 -0
- package/dist/api/TChart.js +765 -0
- package/dist/api/TChart.js.map +1 -0
- package/{src/api/createChart.ts → dist/api/createChart.d.ts} +2 -7
- package/dist/api/createChart.d.ts.map +1 -0
- package/dist/api/createChart.js +42 -0
- package/dist/api/createChart.js.map +1 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts +4 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.js +22 -0
- package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +1 -0
- package/dist/api/drawing tools/lines menu/crossLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/crossLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/crossLine.js +16 -0
- package/dist/api/drawing tools/lines menu/crossLine.js.map +1 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.d.ts +17 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.js +59 -0
- package/dist/api/drawing tools/lines menu/disjointChannel.js.map +1 -0
- package/dist/api/drawing tools/lines menu/extendedLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/extendedLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/extendedLine.js +17 -0
- package/dist/api/drawing tools/lines menu/extendedLine.js.map +1 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.js +41 -0
- package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontal.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/horizontal.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontal.js +19 -0
- package/dist/api/drawing tools/lines menu/horizontal.js.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.js +20 -0
- package/dist/api/drawing tools/lines menu/horizontalRay.js.map +1 -0
- package/dist/api/drawing tools/lines menu/infoLine.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/infoLine.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/infoLine.js +107 -0
- package/dist/api/drawing tools/lines menu/infoLine.js.map +1 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.js +31 -0
- package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +1 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +15 -0
- package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +1 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.js +43 -0
- package/dist/api/drawing tools/lines menu/parallelChannel.js.map +1 -0
- package/dist/api/drawing tools/lines menu/pitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/pitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/pitchfork.js +12 -0
- package/dist/api/drawing tools/lines menu/pitchfork.js.map +1 -0
- package/dist/api/drawing tools/lines menu/ray.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/ray.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/ray.js +23 -0
- package/dist/api/drawing tools/lines menu/ray.js.map +1 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.js +127 -0
- package/dist/api/drawing tools/lines menu/regressionTrend.js.map +1 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.js +15 -0
- package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +1 -0
- package/dist/api/drawing tools/lines menu/trendAngle.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/trendAngle.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/trendAngle.js +51 -0
- package/dist/api/drawing tools/lines menu/trendAngle.js.map +1 -0
- package/dist/api/drawing tools/lines menu/trendline.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/trendline.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/trendline.js +11 -0
- package/dist/api/drawing tools/lines menu/trendline.js.map +1 -0
- package/dist/api/drawing tools/lines menu/vertical.d.ts +4 -0
- package/dist/api/drawing tools/lines menu/vertical.d.ts.map +1 -0
- package/dist/api/drawing tools/lines menu/vertical.js +11 -0
- package/dist/api/drawing tools/lines menu/vertical.js.map +1 -0
- package/dist/api/drawing tools/pointers menu/crosshair.d.ts +16 -0
- package/dist/api/drawing tools/pointers menu/crosshair.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/crosshair.ts → dist/api/drawing tools/pointers menu/crosshair.js } +6 -7
- package/dist/api/drawing tools/pointers menu/crosshair.js.map +1 -0
- package/dist/api/drawing tools/pointers menu/cursor.d.ts +15 -0
- package/dist/api/drawing tools/pointers menu/cursor.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/cursor.ts → dist/api/drawing tools/pointers menu/cursor.js } +7 -8
- package/dist/api/drawing tools/pointers menu/cursor.js.map +1 -0
- package/dist/api/drawing tools/pointers menu/demonstration.d.ts +30 -0
- package/dist/api/drawing tools/pointers menu/demonstration.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/demonstration.ts → dist/api/drawing tools/pointers menu/demonstration.js } +9 -14
- package/dist/api/drawing tools/pointers menu/demonstration.js.map +1 -0
- package/dist/api/drawing tools/pointers menu/dot.d.ts +23 -0
- package/dist/api/drawing tools/pointers menu/dot.d.ts.map +1 -0
- package/{src/api/drawing tools/pointers menu/dot.ts → dist/api/drawing tools/pointers menu/dot.js } +8 -11
- package/dist/api/drawing tools/pointers menu/dot.js.map +1 -0
- package/dist/api/drawing tools/shapes menu/rectangle.d.ts +4 -0
- package/dist/api/drawing tools/shapes menu/rectangle.d.ts.map +1 -0
- package/dist/api/drawing tools/shapes menu/rectangle.js +19 -0
- package/dist/api/drawing tools/shapes menu/rectangle.js.map +1 -0
- package/dist/api/drawing tools/shapes menu/text.d.ts +4 -0
- package/dist/api/drawing tools/shapes menu/text.d.ts.map +1 -0
- package/dist/api/drawing tools/shapes menu/text.js +25 -0
- package/dist/api/drawing tools/shapes menu/text.js.map +1 -0
- package/dist/api/drawingUtils.d.ts +22 -0
- package/dist/api/drawingUtils.d.ts.map +1 -0
- package/dist/api/drawingUtils.js +83 -0
- package/dist/api/drawingUtils.js.map +1 -0
- package/dist/core/CanvasLayer.d.ts +26 -0
- package/dist/core/CanvasLayer.d.ts.map +1 -0
- package/dist/core/CanvasLayer.js +56 -0
- package/dist/core/CanvasLayer.js.map +1 -0
- package/dist/core/Chart.d.ts +164 -0
- package/dist/core/Chart.d.ts.map +1 -0
- package/dist/core/Chart.js +839 -0
- package/dist/core/Chart.js.map +1 -0
- package/dist/core/CoordTransform.d.ts +168 -0
- package/dist/core/CoordTransform.d.ts.map +1 -0
- package/dist/core/CoordTransform.js +224 -0
- package/dist/core/CoordTransform.js.map +1 -0
- package/dist/core/Crosshair.d.ts +30 -0
- package/dist/core/Crosshair.d.ts.map +1 -0
- package/dist/core/Crosshair.js +186 -0
- package/dist/core/Crosshair.js.map +1 -0
- package/dist/core/IndicatorEngine.d.ts +51 -0
- package/dist/core/IndicatorEngine.d.ts.map +1 -0
- package/dist/core/IndicatorEngine.js +181 -0
- package/dist/core/IndicatorEngine.js.map +1 -0
- package/dist/core/InteractionManager.d.ts +197 -0
- package/dist/core/InteractionManager.d.ts.map +1 -0
- package/dist/core/InteractionManager.js +698 -0
- package/dist/core/InteractionManager.js.map +1 -0
- package/dist/core/PriceScale.d.ts +27 -0
- package/dist/core/PriceScale.d.ts.map +1 -0
- package/dist/core/PriceScale.js +113 -0
- package/dist/core/PriceScale.js.map +1 -0
- package/dist/core/Series.d.ts +40 -0
- package/dist/core/Series.d.ts.map +1 -0
- package/dist/core/Series.js +114 -0
- package/dist/core/Series.js.map +1 -0
- package/dist/core/TimeScale.d.ts +43 -0
- package/dist/core/TimeScale.d.ts.map +1 -0
- package/dist/core/TimeScale.js +150 -0
- package/dist/core/TimeScale.js.map +1 -0
- package/dist/datafeed/DatafeedConnector.d.ts +89 -0
- package/dist/datafeed/DatafeedConnector.d.ts.map +1 -0
- package/dist/datafeed/DatafeedConnector.js +268 -0
- package/dist/datafeed/DatafeedConnector.js.map +1 -0
- package/dist/engine/CandleEngine.d.ts +207 -0
- package/dist/engine/CandleEngine.d.ts.map +1 -0
- package/dist/engine/CandleEngine.js +318 -0
- package/dist/engine/CandleEngine.js.map +1 -0
- package/dist/engine/__tests__/CandleEngine.test.d.ts +2 -0
- package/dist/engine/__tests__/CandleEngine.test.d.ts.map +1 -0
- package/dist/engine/__tests__/CandleEngine.test.js +300 -0
- package/dist/engine/__tests__/CandleEngine.test.js.map +1 -0
- package/dist/engine/candleInvariants.d.ts +66 -0
- package/dist/engine/candleInvariants.d.ts.map +1 -0
- package/dist/engine/candleInvariants.js +134 -0
- package/dist/engine/candleInvariants.js.map +1 -0
- package/{src/engine/mergeUtils.ts → dist/engine/mergeUtils.d.ts} +15 -52
- package/dist/engine/mergeUtils.d.ts.map +1 -0
- package/dist/engine/mergeUtils.js +64 -0
- package/dist/engine/mergeUtils.js.map +1 -0
- package/dist/engine/timeframeUtils.d.ts +80 -0
- package/dist/engine/timeframeUtils.d.ts.map +1 -0
- package/{src/engine/timeframeUtils.ts → dist/engine/timeframeUtils.js} +30 -48
- package/dist/engine/timeframeUtils.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +29 -0
- package/dist/internal.d.ts.map +1 -0
- package/{src/internal.ts → dist/internal.js} +2 -11
- package/dist/internal.js.map +1 -0
- package/dist/licensing/ChartRuntimeResolver.d.ts +233 -0
- package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -0
- package/dist/licensing/ChartRuntimeResolver.js +310 -0
- package/dist/licensing/ChartRuntimeResolver.js.map +1 -0
- package/dist/licensing/LicenseManager.d.ts +55 -0
- package/dist/licensing/LicenseManager.d.ts.map +1 -0
- package/dist/licensing/LicenseManager.js +114 -0
- package/dist/licensing/LicenseManager.js.map +1 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +13 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +177 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +1 -0
- package/dist/licensing/__tests__/LicenseManager.test.d.ts +12 -0
- package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -0
- package/dist/licensing/__tests__/LicenseManager.test.js +153 -0
- package/dist/licensing/__tests__/LicenseManager.test.js.map +1 -0
- package/dist/licensing/licenseTypes.d.ts +18 -0
- package/dist/licensing/licenseTypes.d.ts.map +1 -0
- package/dist/licensing/licenseTypes.js +2 -0
- package/dist/licensing/licenseTypes.js.map +1 -0
- package/dist/pine/PineCompiler.d.ts +35 -0
- package/dist/pine/PineCompiler.d.ts.map +1 -0
- package/dist/pine/PineCompiler.js +44 -0
- package/dist/pine/PineCompiler.js.map +1 -0
- package/dist/pine/diagnostics.d.ts +20 -0
- package/dist/pine/diagnostics.d.ts.map +1 -0
- package/dist/pine/diagnostics.js +11 -0
- package/dist/pine/diagnostics.js.map +1 -0
- package/{src/pine/index.ts → dist/pine/index.d.ts} +4 -3
- package/dist/pine/index.d.ts.map +1 -0
- package/dist/pine/index.js +5 -0
- package/dist/pine/index.js.map +1 -0
- package/dist/pine/pine-ast.d.ts +142 -0
- package/dist/pine/pine-ast.d.ts.map +1 -0
- package/dist/pine/pine-ast.js +19 -0
- package/dist/pine/pine-ast.js.map +1 -0
- package/dist/pine/pine-lexer.d.ts +41 -0
- package/dist/pine/pine-lexer.d.ts.map +1 -0
- package/dist/pine/pine-lexer.js +249 -0
- package/dist/pine/pine-lexer.js.map +1 -0
- package/dist/pine/pine-parser.d.ts +51 -0
- package/dist/pine/pine-parser.d.ts.map +1 -0
- package/dist/pine/pine-parser.js +416 -0
- package/dist/pine/pine-parser.js.map +1 -0
- package/dist/pine/pine-transpiler.d.ts +33 -0
- package/dist/pine/pine-transpiler.d.ts.map +1 -0
- package/dist/pine/pine-transpiler.js +260 -0
- package/dist/pine/pine-transpiler.js.map +1 -0
- package/dist/pixi/LayerName.d.ts +18 -0
- package/dist/pixi/LayerName.d.ts.map +1 -0
- package/dist/pixi/LayerName.js +35 -0
- package/dist/pixi/LayerName.js.map +1 -0
- package/dist/pixi/PixiCandlestickRenderer.d.ts +23 -0
- package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiCandlestickRenderer.js +107 -0
- package/dist/pixi/PixiCandlestickRenderer.js.map +1 -0
- package/dist/pixi/PixiChart.d.ts +72 -0
- package/dist/pixi/PixiChart.d.ts.map +1 -0
- package/dist/pixi/PixiChart.js +367 -0
- package/dist/pixi/PixiChart.js.map +1 -0
- package/dist/pixi/PixiCrosshairRenderer.d.ts +29 -0
- package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiCrosshairRenderer.js +110 -0
- package/dist/pixi/PixiCrosshairRenderer.js.map +1 -0
- package/dist/pixi/PixiDrawingRenderer.d.ts +17 -0
- package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiDrawingRenderer.js +111 -0
- package/dist/pixi/PixiDrawingRenderer.js.map +1 -0
- package/dist/pixi/PixiGridRenderer.d.ts +22 -0
- package/dist/pixi/PixiGridRenderer.d.ts.map +1 -0
- package/dist/pixi/PixiGridRenderer.js +114 -0
- package/dist/pixi/PixiGridRenderer.js.map +1 -0
- package/dist/pixi/PixiLayerManager.d.ts +56 -0
- package/dist/pixi/PixiLayerManager.d.ts.map +1 -0
- package/dist/pixi/PixiLayerManager.js +92 -0
- package/dist/pixi/PixiLayerManager.js.map +1 -0
- package/dist/react/canvas/ChartCanvas.d.ts +85 -0
- package/dist/react/canvas/ChartCanvas.d.ts.map +1 -0
- package/dist/react/canvas/ChartCanvas.js +604 -0
- package/dist/react/canvas/ChartCanvas.js.map +1 -0
- package/dist/react/canvas/ChartContextMenu.d.ts +18 -0
- package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -0
- package/dist/react/canvas/ChartContextMenu.js +5 -0
- package/dist/react/canvas/ChartContextMenu.js.map +1 -0
- package/dist/react/canvas/ChartSettingsDialog.d.ts +25 -0
- package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -0
- package/dist/react/canvas/ChartSettingsDialog.js +28 -0
- package/dist/react/canvas/ChartSettingsDialog.js.map +1 -0
- package/dist/react/canvas/IndicatorLabel.d.ts +21 -0
- package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -0
- package/dist/react/canvas/IndicatorLabel.js +196 -0
- package/dist/react/canvas/IndicatorLabel.js.map +1 -0
- package/dist/react/canvas/IndicatorPane.d.ts +32 -0
- package/dist/react/canvas/IndicatorPane.d.ts.map +1 -0
- package/dist/react/canvas/IndicatorPane.js +395 -0
- package/dist/react/canvas/IndicatorPane.js.map +1 -0
- package/dist/react/canvas/PointerOverlay.d.ts +23 -0
- package/dist/react/canvas/PointerOverlay.d.ts.map +1 -0
- package/dist/react/canvas/PointerOverlay.js +61 -0
- package/dist/react/canvas/PointerOverlay.js.map +1 -0
- package/dist/react/canvas/toolbars/LeftToolbar.d.ts +19 -0
- package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -0
- package/dist/react/canvas/toolbars/LeftToolbar.js +407 -0
- package/dist/react/canvas/toolbars/LeftToolbar.js.map +1 -0
- package/dist/react/hooks/useChartCapabilities.d.ts +21 -0
- package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -0
- package/dist/react/hooks/useChartCapabilities.js +66 -0
- package/dist/react/hooks/useChartCapabilities.js.map +1 -0
- package/dist/react/index.d.ts +30 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +28 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/internal.d.ts +38 -0
- package/dist/react/internal.d.ts.map +1 -0
- package/dist/react/internal.js +44 -0
- package/dist/react/internal.js.map +1 -0
- package/dist/react/shell/ManagedAppShell.d.ts +91 -0
- package/dist/react/shell/ManagedAppShell.d.ts.map +1 -0
- package/dist/react/shell/ManagedAppShell.js +440 -0
- package/dist/react/shell/ManagedAppShell.js.map +1 -0
- package/dist/react/trading/TradingBridge.d.ts +86 -0
- package/dist/react/trading/TradingBridge.d.ts.map +1 -0
- package/dist/react/trading/TradingBridge.js +73 -0
- package/dist/react/trading/TradingBridge.js.map +1 -0
- package/dist/react/workspace/ChartWorkspace.d.ts +73 -0
- package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -0
- package/dist/react/workspace/ChartWorkspace.js +42 -0
- package/dist/react/workspace/ChartWorkspace.js.map +1 -0
- package/dist/react/workspace/FloatingPanel.d.ts +18 -0
- package/dist/react/workspace/FloatingPanel.d.ts.map +1 -0
- package/dist/react/workspace/FloatingPanel.js +82 -0
- package/dist/react/workspace/FloatingPanel.js.map +1 -0
- package/dist/react/workspace/IndicatorsDialog.d.ts +8 -0
- package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -0
- package/dist/react/workspace/IndicatorsDialog.js +121 -0
- package/dist/react/workspace/IndicatorsDialog.js.map +1 -0
- package/dist/react/workspace/LayoutMenu.d.ts +33 -0
- package/dist/react/workspace/LayoutMenu.d.ts.map +1 -0
- package/dist/react/workspace/LayoutMenu.js +113 -0
- package/dist/react/workspace/LayoutMenu.js.map +1 -0
- package/dist/react/workspace/SymbolSearchDialog.d.ts +10 -0
- package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -0
- package/dist/react/workspace/SymbolSearchDialog.js +245 -0
- package/dist/react/workspace/SymbolSearchDialog.js.map +1 -0
- package/dist/react/workspace/TabBar.d.ts +17 -0
- package/dist/react/workspace/TabBar.d.ts.map +1 -0
- package/dist/react/workspace/TabBar.js +29 -0
- package/dist/react/workspace/TabBar.js.map +1 -0
- package/dist/react/workspace/toolbars/BottomToolbar.d.ts +19 -0
- package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/BottomToolbar.js +236 -0
- package/dist/react/workspace/toolbars/BottomToolbar.js.map +1 -0
- package/dist/react/workspace/toolbars/RightToolbar.d.ts +8 -0
- package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/RightToolbar.js +18 -0
- package/dist/react/workspace/toolbars/RightToolbar.js.map +1 -0
- package/dist/react/workspace/toolbars/TopToolbar.d.ts +41 -0
- package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -0
- package/dist/react/workspace/toolbars/TopToolbar.js +82 -0
- package/dist/react/workspace/toolbars/TopToolbar.js.map +1 -0
- package/dist/renderers/CandlestickRenderer.d.ts +13 -0
- package/dist/renderers/CandlestickRenderer.d.ts.map +1 -0
- package/dist/renderers/CandlestickRenderer.js +98 -0
- package/dist/renderers/CandlestickRenderer.js.map +1 -0
- package/dist/renderers/HistogramRenderer.d.ts +11 -0
- package/dist/renderers/HistogramRenderer.d.ts.map +1 -0
- package/dist/renderers/HistogramRenderer.js +50 -0
- package/dist/renderers/HistogramRenderer.js.map +1 -0
- package/dist/renderers/LineRenderer.d.ts +12 -0
- package/dist/renderers/LineRenderer.d.ts.map +1 -0
- package/dist/renderers/LineRenderer.js +64 -0
- package/dist/renderers/LineRenderer.js.map +1 -0
- package/dist/theme/colors.d.ts +4 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +19 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/tools/barDivergenceCheck.d.ts +120 -0
- package/dist/tools/barDivergenceCheck.d.ts.map +1 -0
- package/dist/tools/barDivergenceCheck.js +200 -0
- package/dist/tools/barDivergenceCheck.js.map +1 -0
- package/dist/trading/TradingOverlayStore.d.ts +86 -0
- package/dist/trading/TradingOverlayStore.d.ts.map +1 -0
- package/dist/trading/TradingOverlayStore.js +139 -0
- package/dist/trading/TradingOverlayStore.js.map +1 -0
- package/dist/trading/UnmanagedIngestion.d.ts +91 -0
- package/dist/trading/UnmanagedIngestion.d.ts.map +1 -0
- package/dist/trading/UnmanagedIngestion.js +114 -0
- package/dist/trading/UnmanagedIngestion.js.map +1 -0
- package/dist/trading/__tests__/ManagedTradingController.test.d.ts +18 -0
- package/dist/trading/__tests__/ManagedTradingController.test.d.ts.map +1 -0
- package/dist/trading/__tests__/ManagedTradingController.test.js +271 -0
- package/dist/trading/__tests__/ManagedTradingController.test.js.map +1 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.d.ts +16 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.d.ts.map +1 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.js +267 -0
- package/dist/trading/__tests__/TradingOverlayStore.test.js.map +1 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts +16 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts.map +1 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.js +170 -0
- package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +1 -0
- package/dist/trading/managed/ManagedTradingController.d.ts +110 -0
- package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -0
- package/dist/trading/managed/ManagedTradingController.js +247 -0
- package/dist/trading/managed/ManagedTradingController.js.map +1 -0
- package/dist/trading/managed/managedCapabilities.d.ts +45 -0
- package/dist/trading/managed/managedCapabilities.d.ts.map +1 -0
- package/dist/trading/managed/managedCapabilities.js +79 -0
- package/dist/trading/managed/managedCapabilities.js.map +1 -0
- package/dist/trading/managed/managedTypes.d.ts +122 -0
- package/dist/trading/managed/managedTypes.d.ts.map +1 -0
- package/dist/trading/managed/managedTypes.js +13 -0
- package/dist/trading/managed/managedTypes.js.map +1 -0
- package/dist/trading/tradingTypes.d.ts +89 -0
- package/dist/trading/tradingTypes.d.ts.map +1 -0
- package/dist/trading/tradingTypes.js +8 -0
- package/dist/trading/tradingTypes.js.map +1 -0
- package/dist/tscript/TScriptIndicator.d.ts +41 -0
- package/dist/tscript/TScriptIndicator.d.ts.map +1 -0
- package/dist/tscript/TScriptIndicator.js +47 -0
- package/dist/tscript/TScriptIndicator.js.map +1 -0
- package/dist/tscript/ast.d.ts +89 -0
- package/dist/tscript/ast.d.ts.map +1 -0
- package/dist/tscript/ast.js +22 -0
- package/dist/tscript/ast.js.map +1 -0
- package/dist/tscript/lexer.d.ts +36 -0
- package/dist/tscript/lexer.d.ts.map +1 -0
- package/dist/tscript/lexer.js +187 -0
- package/dist/tscript/lexer.js.map +1 -0
- package/dist/tscript/parser.d.ts +50 -0
- package/dist/tscript/parser.d.ts.map +1 -0
- package/dist/tscript/parser.js +318 -0
- package/dist/tscript/parser.js.map +1 -0
- package/dist/tscript/runtime.d.ts +123 -0
- package/dist/tscript/runtime.d.ts.map +1 -0
- package/dist/tscript/runtime.js +475 -0
- package/dist/tscript/runtime.js.map +1 -0
- package/dist/tscript/series.d.ts +49 -0
- package/dist/tscript/series.d.ts.map +1 -0
- package/dist/tscript/series.js +79 -0
- package/dist/tscript/series.js.map +1 -0
- package/dist/types/IChart.d.ts +48 -0
- package/dist/types/IChart.d.ts.map +1 -0
- package/dist/types/IChart.js +2 -0
- package/dist/types/IChart.js.map +1 -0
- package/{src/types/IRenderer.ts → dist/types/IRenderer.d.ts} +2 -8
- package/dist/types/IRenderer.d.ts.map +1 -0
- package/dist/types/IRenderer.js +2 -0
- package/dist/types/IRenderer.js.map +1 -0
- package/dist/types/ISeries.d.ts +26 -0
- package/dist/types/ISeries.d.ts.map +1 -0
- package/dist/types/ISeries.js +2 -0
- package/dist/types/ISeries.js.map +1 -0
- package/package.json +32 -4
- package/src/__tests__/backwardCompatibility.test.ts +0 -191
- package/src/__tests__/candleInvariant.test.ts +0 -500
- package/src/__tests__/timeframeBoundary.test.ts +0 -583
- package/src/api/DrawingManager.ts +0 -188
- package/src/api/EventBus.ts +0 -53
- package/src/api/IndicatorDAG.ts +0 -389
- package/src/api/IndicatorRegistry.ts +0 -47
- package/src/api/LayoutManager.ts +0 -72
- package/src/api/PaneManager.ts +0 -129
- package/src/api/ReferenceAPI.ts +0 -195
- package/src/api/TChart.ts +0 -881
- package/src/api/drawing tools/fib gann menu/fibRetracement.ts +0 -27
- package/src/api/drawing tools/lines menu/crossLine.ts +0 -21
- package/src/api/drawing tools/lines menu/disjointChannel.ts +0 -74
- package/src/api/drawing tools/lines menu/extendedLine.ts +0 -22
- package/src/api/drawing tools/lines menu/flatTopBottom.ts +0 -45
- package/src/api/drawing tools/lines menu/horizontal.ts +0 -24
- package/src/api/drawing tools/lines menu/horizontalRay.ts +0 -25
- package/src/api/drawing tools/lines menu/infoLine.ts +0 -127
- package/src/api/drawing tools/lines menu/insidePitchfork.ts +0 -21
- package/src/api/drawing tools/lines menu/modifiedSchiffPitchfork.ts +0 -18
- package/src/api/drawing tools/lines menu/parallelChannel.ts +0 -47
- package/src/api/drawing tools/lines menu/pitchfork.ts +0 -15
- package/src/api/drawing tools/lines menu/ray.ts +0 -28
- package/src/api/drawing tools/lines menu/regressionTrend.ts +0 -157
- package/src/api/drawing tools/lines menu/schiffPitchfork.ts +0 -18
- package/src/api/drawing tools/lines menu/trendAngle.ts +0 -64
- package/src/api/drawing tools/lines menu/trendline.ts +0 -16
- package/src/api/drawing tools/lines menu/vertical.ts +0 -16
- package/src/api/drawing tools/shapes menu/rectangle.ts +0 -24
- package/src/api/drawing tools/shapes menu/text.ts +0 -30
- package/src/api/drawingUtils.ts +0 -82
- package/src/core/CanvasLayer.ts +0 -77
- package/src/core/Chart.ts +0 -917
- package/src/core/CoordTransform.ts +0 -282
- package/src/core/Crosshair.ts +0 -207
- package/src/core/IndicatorEngine.ts +0 -216
- package/src/core/InteractionManager.ts +0 -899
- package/src/core/PriceScale.ts +0 -133
- package/src/core/Series.ts +0 -132
- package/src/core/TimeScale.ts +0 -175
- package/src/datafeed/DatafeedConnector.ts +0 -300
- package/src/engine/CandleEngine.ts +0 -458
- package/src/engine/__tests__/CandleEngine.test.ts +0 -402
- package/src/engine/candleInvariants.ts +0 -172
- package/src/index.ts +0 -190
- package/src/licensing/ChartRuntimeResolver.ts +0 -380
- package/src/licensing/LicenseManager.ts +0 -131
- package/src/licensing/__tests__/ChartRuntimeResolver.test.ts +0 -207
- package/src/licensing/__tests__/LicenseManager.test.ts +0 -180
- package/src/licensing/licenseTypes.ts +0 -19
- package/src/pine/PineCompiler.ts +0 -68
- package/src/pine/diagnostics.ts +0 -30
- package/src/pine/pine-ast.ts +0 -163
- package/src/pine/pine-lexer.ts +0 -265
- package/src/pine/pine-parser.ts +0 -439
- package/src/pine/pine-transpiler.ts +0 -301
- package/src/pixi/LayerName.ts +0 -35
- package/src/pixi/PixiCandlestickRenderer.ts +0 -125
- package/src/pixi/PixiChart.ts +0 -425
- package/src/pixi/PixiCrosshairRenderer.ts +0 -134
- package/src/pixi/PixiDrawingRenderer.ts +0 -121
- package/src/pixi/PixiGridRenderer.ts +0 -136
- package/src/pixi/PixiLayerManager.ts +0 -102
- package/src/renderers/CandlestickRenderer.ts +0 -130
- package/src/renderers/HistogramRenderer.ts +0 -63
- package/src/renderers/LineRenderer.ts +0 -77
- package/src/theme/colors.ts +0 -21
- package/src/tools/barDivergenceCheck.ts +0 -305
- package/src/trading/TradingOverlayStore.ts +0 -161
- package/src/trading/UnmanagedIngestion.ts +0 -156
- package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
- package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
- package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
- package/src/trading/managed/ManagedTradingController.ts +0 -292
- package/src/trading/managed/managedCapabilities.ts +0 -98
- package/src/trading/managed/managedTypes.ts +0 -151
- package/src/trading/tradingTypes.ts +0 -135
- package/src/tscript/TScriptIndicator.ts +0 -54
- package/src/tscript/ast.ts +0 -105
- package/src/tscript/lexer.ts +0 -190
- package/src/tscript/parser.ts +0 -334
- package/src/tscript/runtime.ts +0 -525
- package/src/tscript/series.ts +0 -84
- package/src/types/IChart.ts +0 -56
- package/src/types/ISeries.ts +0 -30
- package/tsconfig.json +0 -22
- package/tsup.config.ts +0 -15
- package/vitest.config.ts +0 -25
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pine Script → TScript transpiler.
|
|
3
|
+
*
|
|
4
|
+
* Walks a `PineProgram` AST and emits a TScript source string that is
|
|
5
|
+
* directly executable by the existing `TScriptRuntime`.
|
|
6
|
+
*/
|
|
7
|
+
// ─── Namespace → TScript function mappings ───────────────────────────────────
|
|
8
|
+
const TA_MAP = {
|
|
9
|
+
sma: 'sma',
|
|
10
|
+
ema: 'ema',
|
|
11
|
+
rsi: 'rsi',
|
|
12
|
+
wma: 'wma',
|
|
13
|
+
rma: 'rma',
|
|
14
|
+
stdev: 'stdev',
|
|
15
|
+
highest: 'highest',
|
|
16
|
+
lowest: 'lowest',
|
|
17
|
+
change: 'change',
|
|
18
|
+
mom: 'mom',
|
|
19
|
+
atr: 'atr',
|
|
20
|
+
crossover: 'crossover',
|
|
21
|
+
crossunder: 'crossunder',
|
|
22
|
+
barssince: 'barssince',
|
|
23
|
+
};
|
|
24
|
+
const MATH_MAP = {
|
|
25
|
+
abs: 'abs',
|
|
26
|
+
max: 'max',
|
|
27
|
+
min: 'min',
|
|
28
|
+
round: 'round',
|
|
29
|
+
floor: 'floor',
|
|
30
|
+
ceil: 'ceil',
|
|
31
|
+
sqrt: 'sqrt',
|
|
32
|
+
log: 'log',
|
|
33
|
+
pow: 'pow',
|
|
34
|
+
sign: 'sign',
|
|
35
|
+
exp: 'exp',
|
|
36
|
+
};
|
|
37
|
+
const COLOR_MAP = {
|
|
38
|
+
red: '"#f23645"',
|
|
39
|
+
green: '"#26a69a"',
|
|
40
|
+
blue: '"#2196f3"',
|
|
41
|
+
white: '"#ffffff"',
|
|
42
|
+
black: '"#000000"',
|
|
43
|
+
yellow: '"#ffeb3b"',
|
|
44
|
+
orange: '"#ff9800"',
|
|
45
|
+
purple: '"#9c27b0"',
|
|
46
|
+
aqua: '"#00bcd4"',
|
|
47
|
+
gray: '"#787b86"',
|
|
48
|
+
silver: '"#b2b5be"',
|
|
49
|
+
lime: '"#4caf50"',
|
|
50
|
+
maroon: '"#880000"',
|
|
51
|
+
navy: '"#000080"',
|
|
52
|
+
olive: '"#808000"',
|
|
53
|
+
teal: '"#008080"',
|
|
54
|
+
fuchsia: '"#ff00ff"',
|
|
55
|
+
};
|
|
56
|
+
/** Functions that produce no useful TScript equivalent — emit a warning. */
|
|
57
|
+
const UNSUPPORTED_FN = new Set([
|
|
58
|
+
'plotshape', 'plotarrow', 'plotbar', 'plotcandle',
|
|
59
|
+
'barcolor', 'bgcolor', 'alertcondition', 'alert',
|
|
60
|
+
'strategy', 'label', 'line', 'box', 'table',
|
|
61
|
+
'request',
|
|
62
|
+
]);
|
|
63
|
+
export class PineTranspiler {
|
|
64
|
+
_diag;
|
|
65
|
+
_indent = 0;
|
|
66
|
+
_out = [];
|
|
67
|
+
constructor(diag) {
|
|
68
|
+
this._diag = diag;
|
|
69
|
+
}
|
|
70
|
+
transpile(prog) {
|
|
71
|
+
this._out = [];
|
|
72
|
+
this._indent = 0;
|
|
73
|
+
for (const stmt of prog.stmts) {
|
|
74
|
+
this._stmt(stmt);
|
|
75
|
+
}
|
|
76
|
+
return this._out.join('');
|
|
77
|
+
}
|
|
78
|
+
// ─── Statements ─────────────────────────────────────────────────────────────
|
|
79
|
+
_stmt(s) {
|
|
80
|
+
switch (s.kind) {
|
|
81
|
+
case 'PineIndicatorDecl': return this._indicatorDecl(s);
|
|
82
|
+
case 'PineVarDecl': return this._varDecl(s);
|
|
83
|
+
case 'PineAssign': return this._assign(s);
|
|
84
|
+
case 'PineExprStmt': return this._exprStmt(s);
|
|
85
|
+
case 'PineIf': return this._ifStmt(s);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
_indicatorDecl(s) {
|
|
89
|
+
// indicator("Title", overlay=true) → indicator("Title")
|
|
90
|
+
const title = s.args[0];
|
|
91
|
+
const titleStr = title ? this._expr(title) : '"Script"';
|
|
92
|
+
this._line(`indicator(${titleStr})`);
|
|
93
|
+
}
|
|
94
|
+
_varDecl(s) {
|
|
95
|
+
// var x = expr → x = expr (TScript vars persist by default)
|
|
96
|
+
this._line(`${s.name} = ${this._expr(s.value)}`);
|
|
97
|
+
}
|
|
98
|
+
_assign(s) {
|
|
99
|
+
// := and = both map to = in TScript
|
|
100
|
+
this._line(`${s.name} = ${this._expr(s.value)}`);
|
|
101
|
+
}
|
|
102
|
+
_exprStmt(s) {
|
|
103
|
+
const expr = s.expr;
|
|
104
|
+
// Check for unsupported top-level calls before emitting
|
|
105
|
+
if ((expr.kind === 'PineCall' || expr.kind === 'PineNsCall') &&
|
|
106
|
+
UNSUPPORTED_FN.has(expr.kind === 'PineCall' ? expr.fn : expr.fn)) {
|
|
107
|
+
const name = expr.kind === 'PineCall' ? expr.fn : `${expr.namespace}.${expr.fn}`;
|
|
108
|
+
this._diag.add('warning', `'${name}()' is not supported and will be ignored`, s.loc, 'PINE_UNSUPPORTED_FN');
|
|
109
|
+
this._line(`// ${name}() not supported`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this._line(this._expr(expr));
|
|
113
|
+
}
|
|
114
|
+
_ifStmt(s) {
|
|
115
|
+
this._line(`if ${this._expr(s.condition)}`);
|
|
116
|
+
this._indent++;
|
|
117
|
+
for (const st of s.then)
|
|
118
|
+
this._stmt(st);
|
|
119
|
+
if (s.then.length === 0)
|
|
120
|
+
this._line('0'); // empty block guard
|
|
121
|
+
this._indent--;
|
|
122
|
+
if (s.else_.length > 0) {
|
|
123
|
+
this._line('else');
|
|
124
|
+
this._indent++;
|
|
125
|
+
for (const st of s.else_)
|
|
126
|
+
this._stmt(st);
|
|
127
|
+
this._indent--;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ─── Expressions ────────────────────────────────────────────────────────────
|
|
131
|
+
_expr(e) {
|
|
132
|
+
switch (e.kind) {
|
|
133
|
+
case 'PineNumberLit': return this._numLit(e);
|
|
134
|
+
case 'PineStringLit': return `"${e.value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
135
|
+
case 'PineBoolLit': return e.value ? 'true' : 'false';
|
|
136
|
+
case 'PineNa': return 'na';
|
|
137
|
+
case 'PineIdent': return e.name;
|
|
138
|
+
case 'PineNsCall': return this._nsCall(e);
|
|
139
|
+
case 'PineCall': return this._call(e);
|
|
140
|
+
case 'PineIndex': return `${this._expr(e.series)}[${this._expr(e.index)}]`;
|
|
141
|
+
case 'PineBinary': return this._binary(e);
|
|
142
|
+
case 'PineUnary': return this._unary(e);
|
|
143
|
+
case 'PineTernary': return `${this._expr(e.condition)} ? ${this._expr(e.consequent)} : ${this._expr(e.alternate)}`;
|
|
144
|
+
case 'PineMember': return this._member(e);
|
|
145
|
+
// PineColorLit is resolved via PineMember for color.red etc
|
|
146
|
+
default: return '0';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_numLit(e) {
|
|
150
|
+
// Preserve integer formatting when possible
|
|
151
|
+
return Number.isInteger(e.value) ? String(e.value) : String(e.value);
|
|
152
|
+
}
|
|
153
|
+
_nsCall(e) {
|
|
154
|
+
const { namespace: ns, fn } = e;
|
|
155
|
+
if (ns === 'ta') {
|
|
156
|
+
const mapped = TA_MAP[fn];
|
|
157
|
+
if (mapped) {
|
|
158
|
+
const args = this._positionalArgs(e.args);
|
|
159
|
+
return `${mapped}(${args})`;
|
|
160
|
+
}
|
|
161
|
+
this._diag.add('warning', `'ta.${fn}()' is not supported`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
162
|
+
return `/* ta.${fn} not supported */ 0`;
|
|
163
|
+
}
|
|
164
|
+
if (ns === 'math') {
|
|
165
|
+
const mapped = MATH_MAP[fn];
|
|
166
|
+
if (mapped) {
|
|
167
|
+
const args = this._positionalArgs(e.args);
|
|
168
|
+
return `${mapped}(${args})`;
|
|
169
|
+
}
|
|
170
|
+
this._diag.add('warning', `'math.${fn}()' is not supported`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
171
|
+
return `/* math.${fn} not supported */ 0`;
|
|
172
|
+
}
|
|
173
|
+
if (ns === 'input') {
|
|
174
|
+
return this._inputNsCall(e);
|
|
175
|
+
}
|
|
176
|
+
if (ns === 'strategy' || ns === 'label' || ns === 'line' || ns === 'box' || ns === 'table' || ns === 'request') {
|
|
177
|
+
this._diag.add('warning', `'${ns}.${fn}()' is not supported`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
178
|
+
return `/* ${ns}.${fn} not supported */ 0`;
|
|
179
|
+
}
|
|
180
|
+
// Generic fallthrough
|
|
181
|
+
this._diag.add('warning', `'${ns}.${fn}()' is not supported`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
182
|
+
return `/* ${ns}.${fn} not supported */ 0`;
|
|
183
|
+
}
|
|
184
|
+
_inputNsCall(e) {
|
|
185
|
+
// input.int(v, ...) / input.float(v, ...) / input.bool(v, ...) → input(v)
|
|
186
|
+
// input.source(close) → the source arg value
|
|
187
|
+
if (e.fn === 'source') {
|
|
188
|
+
return e.args[0] ? this._expr(e.args[0]) : 'close';
|
|
189
|
+
}
|
|
190
|
+
const defVal = e.args[0] ?? e.namedArgs.get('defval');
|
|
191
|
+
return defVal ? `input(${this._expr(defVal)})` : 'input(0)';
|
|
192
|
+
}
|
|
193
|
+
_call(e) {
|
|
194
|
+
if (UNSUPPORTED_FN.has(e.fn)) {
|
|
195
|
+
this._diag.add('warning', `'${e.fn}()' is not supported and will be ignored`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
196
|
+
return `/* ${e.fn} not supported */ 0`;
|
|
197
|
+
}
|
|
198
|
+
if (e.fn === 'input') {
|
|
199
|
+
const defVal = e.args[0] ?? e.namedArgs.get('defval');
|
|
200
|
+
return defVal ? `input(${this._expr(defVal)})` : 'input(0)';
|
|
201
|
+
}
|
|
202
|
+
if (e.fn === 'plot') {
|
|
203
|
+
return this._plotCall(e);
|
|
204
|
+
}
|
|
205
|
+
if (e.fn === 'indicator') {
|
|
206
|
+
const title = e.args[0];
|
|
207
|
+
const titleStr = title ? this._expr(title) : '"Script"';
|
|
208
|
+
return `indicator(${titleStr})`;
|
|
209
|
+
}
|
|
210
|
+
// Generic call — drop unsupported named args, keep positional
|
|
211
|
+
const args = this._positionalArgs(e.args);
|
|
212
|
+
return `${e.fn}(${args})`;
|
|
213
|
+
}
|
|
214
|
+
_plotCall(e) {
|
|
215
|
+
// plot(series, title="...", color=..., linewidth=...) → plot(series)
|
|
216
|
+
// We only pass the first positional arg; named args are cosmetic only
|
|
217
|
+
const series = e.args[0];
|
|
218
|
+
if (!series)
|
|
219
|
+
return '/* plot() missing series */';
|
|
220
|
+
return `plot(${this._expr(series)})`;
|
|
221
|
+
}
|
|
222
|
+
_member(e) {
|
|
223
|
+
if (e.object === 'color') {
|
|
224
|
+
const hex = COLOR_MAP[e.prop];
|
|
225
|
+
if (hex)
|
|
226
|
+
return hex;
|
|
227
|
+
this._diag.add('info', `'color.${e.prop}' is not a known color`, e.loc, 'PINE_UNKNOWN_COLOR');
|
|
228
|
+
return '"#888888"';
|
|
229
|
+
}
|
|
230
|
+
if (e.object === 'line' || e.object === 'label' || e.object === 'box') {
|
|
231
|
+
// style constants — just return as string
|
|
232
|
+
return `"${e.prop}"`;
|
|
233
|
+
}
|
|
234
|
+
// bar_index, time, etc. are plain idents
|
|
235
|
+
if (e.object === 'timeframe' || e.object === 'syminfo' || e.object === 'session') {
|
|
236
|
+
this._diag.add('info', `'${e.object}.${e.prop}' is not supported`, e.loc, 'PINE_UNSUPPORTED_FN');
|
|
237
|
+
return '0';
|
|
238
|
+
}
|
|
239
|
+
return `${e.object}_${e.prop}`; // fallback
|
|
240
|
+
}
|
|
241
|
+
_binary(e) {
|
|
242
|
+
const l = this._expr(e.left);
|
|
243
|
+
const r = this._expr(e.right);
|
|
244
|
+
return `(${l} ${e.op} ${r})`;
|
|
245
|
+
}
|
|
246
|
+
_unary(e) {
|
|
247
|
+
if (e.op === 'not')
|
|
248
|
+
return `not ${this._expr(e.operand)}`;
|
|
249
|
+
return `${e.op}${this._expr(e.operand)}`;
|
|
250
|
+
}
|
|
251
|
+
_positionalArgs(args) {
|
|
252
|
+
return args.map(a => this._expr(a)).join(', ');
|
|
253
|
+
}
|
|
254
|
+
// ─── Output helpers ─────────────────────────────────────────────────────────
|
|
255
|
+
_line(code) {
|
|
256
|
+
const pad = ' '.repeat(this._indent);
|
|
257
|
+
this._out.push(`${pad}${code}\n`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=pine-transpiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pine-transpiler.js","sourceRoot":"","sources":["../../src/pine/pine-transpiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LayerName — ordered Z-index identifiers for the seven render layers.
|
|
3
|
+
*
|
|
4
|
+
* Layers are sorted ascending: lowest = farthest back, highest = topmost.
|
|
5
|
+
* The numeric values are used directly as PixiJS Container `zIndex` values.
|
|
6
|
+
*/
|
|
7
|
+
export declare const enum LayerName {
|
|
8
|
+
Background = 0,
|
|
9
|
+
PriceSeries = 1,
|
|
10
|
+
Indicator = 2,
|
|
11
|
+
Drawing = 3,
|
|
12
|
+
TradingOverlay = 4,
|
|
13
|
+
Interaction = 5,
|
|
14
|
+
UIOverlay = 6
|
|
15
|
+
}
|
|
16
|
+
export declare const LAYER_NAMES: readonly [LayerName.Background, LayerName.PriceSeries, LayerName.Indicator, LayerName.Drawing, LayerName.TradingOverlay, LayerName.Interaction, LayerName.UIOverlay];
|
|
17
|
+
export declare const LAYER_LABEL: Record<LayerName, string>;
|
|
18
|
+
//# sourceMappingURL=LayerName.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayerName.d.ts","sourceRoot":"","sources":["../../src/pixi/LayerName.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAAkB,SAAS;IACzB,UAAU,IAAM;IAChB,WAAW,IAAK;IAChB,SAAS,IAAO;IAChB,OAAO,IAAS;IAChB,cAAc,IAAI;IAClB,WAAW,IAAK;IAChB,SAAS,IAAO;CACjB;AAED,eAAO,MAAM,WAAW,sKAQd,CAAC;AAEX,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQjD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LayerName — ordered Z-index identifiers for the seven render layers.
|
|
3
|
+
*
|
|
4
|
+
* Layers are sorted ascending: lowest = farthest back, highest = topmost.
|
|
5
|
+
* The numeric values are used directly as PixiJS Container `zIndex` values.
|
|
6
|
+
*/
|
|
7
|
+
export var LayerName;
|
|
8
|
+
(function (LayerName) {
|
|
9
|
+
LayerName[LayerName["Background"] = 0] = "Background";
|
|
10
|
+
LayerName[LayerName["PriceSeries"] = 1] = "PriceSeries";
|
|
11
|
+
LayerName[LayerName["Indicator"] = 2] = "Indicator";
|
|
12
|
+
LayerName[LayerName["Drawing"] = 3] = "Drawing";
|
|
13
|
+
LayerName[LayerName["TradingOverlay"] = 4] = "TradingOverlay";
|
|
14
|
+
LayerName[LayerName["Interaction"] = 5] = "Interaction";
|
|
15
|
+
LayerName[LayerName["UIOverlay"] = 6] = "UIOverlay";
|
|
16
|
+
})(LayerName || (LayerName = {}));
|
|
17
|
+
export const LAYER_NAMES = [
|
|
18
|
+
LayerName.Background,
|
|
19
|
+
LayerName.PriceSeries,
|
|
20
|
+
LayerName.Indicator,
|
|
21
|
+
LayerName.Drawing,
|
|
22
|
+
LayerName.TradingOverlay,
|
|
23
|
+
LayerName.Interaction,
|
|
24
|
+
LayerName.UIOverlay,
|
|
25
|
+
];
|
|
26
|
+
export const LAYER_LABEL = {
|
|
27
|
+
[LayerName.Background]: 'background',
|
|
28
|
+
[LayerName.PriceSeries]: 'priceSeries',
|
|
29
|
+
[LayerName.Indicator]: 'indicator',
|
|
30
|
+
[LayerName.Drawing]: 'drawing',
|
|
31
|
+
[LayerName.TradingOverlay]: 'tradingOverlay',
|
|
32
|
+
[LayerName.Interaction]: 'interaction',
|
|
33
|
+
[LayerName.UIOverlay]: 'uiOverlay',
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=LayerName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayerName.js","sourceRoot":"","sources":["../../src/pixi/LayerName.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAkB,SAQjB;AARD,WAAkB,SAAS;IACzB,qDAAgB,CAAA;IAChB,uDAAgB,CAAA;IAChB,mDAAgB,CAAA;IAChB,+CAAgB,CAAA;IAChB,6DAAkB,CAAA;IAClB,uDAAgB,CAAA;IAChB,mDAAgB,CAAA;AAClB,CAAC,EARiB,SAAS,KAAT,SAAS,QAQ1B;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,WAAW;IACrB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,cAAc;IACxB,SAAS,CAAC,WAAW;IACrB,SAAS,CAAC,SAAS;CACX,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAM,YAAY;IACxC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAK,aAAa;IACzC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAO,WAAW;IACvC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAS,SAAS;IACrC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,gBAAgB;IAC5C,CAAC,SAAS,CAAC,WAAW,CAAC,EAAK,aAAa;IACzC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAO,WAAW;CACxC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Container } from 'pixi.js';
|
|
2
|
+
import type { OHLCV } from '@forgecharts/types';
|
|
3
|
+
import type { CoordTransform } from '../core/CoordTransform';
|
|
4
|
+
/**
|
|
5
|
+
* PixiCandlestickRenderer — renders OHLCV data as GPU-batched candlesticks.
|
|
6
|
+
*
|
|
7
|
+
* Uses a single re-used `Graphics` object that is fully cleared and redrawn
|
|
8
|
+
* on each invalidation, taking advantage of PixiJS's WebGL batching for
|
|
9
|
+
* high-performance rendering of large datasets.
|
|
10
|
+
*/
|
|
11
|
+
export declare class PixiCandlestickRenderer {
|
|
12
|
+
private readonly _upColor;
|
|
13
|
+
private readonly _downColor;
|
|
14
|
+
private readonly _gfx;
|
|
15
|
+
constructor(layer: Container, _upColor?: number, _downColor?: number);
|
|
16
|
+
draw(bars: readonly OHLCV[], transform: CoordTransform): void;
|
|
17
|
+
/**
|
|
18
|
+
* Converts OHLCV bars to Heikin-Ashi values before drawing.
|
|
19
|
+
*/
|
|
20
|
+
drawHeikinAshi(bars: readonly OHLCV[], transform: CoordTransform): void;
|
|
21
|
+
private _toHeikinAshi;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=PixiCandlestickRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiCandlestickRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiCandlestickRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAQ7D;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAKhC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;gBAG9B,KAAK,EAAE,SAAS,EACC,QAAQ,GAAE,MAAiB,EAC3B,UAAU,GAAE,MAAmB;IAMlD,IAAI,CACF,IAAI,EAAE,SAAS,KAAK,EAAE,EACtB,SAAS,EAAE,cAAc,GACxB,IAAI;IAkEP;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAIvE,OAAO,CAAC,aAAa;CAkBtB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Graphics } from 'pixi.js';
|
|
2
|
+
const UP_COLOR = 0x26a641; // green
|
|
3
|
+
const DOWN_COLOR = 0xf85149; // red
|
|
4
|
+
const MIN_BODY_H = 1;
|
|
5
|
+
const MAX_BAR_W = 20;
|
|
6
|
+
const MIN_BAR_W = 1;
|
|
7
|
+
/**
|
|
8
|
+
* PixiCandlestickRenderer — renders OHLCV data as GPU-batched candlesticks.
|
|
9
|
+
*
|
|
10
|
+
* Uses a single re-used `Graphics` object that is fully cleared and redrawn
|
|
11
|
+
* on each invalidation, taking advantage of PixiJS's WebGL batching for
|
|
12
|
+
* high-performance rendering of large datasets.
|
|
13
|
+
*/
|
|
14
|
+
export class PixiCandlestickRenderer {
|
|
15
|
+
_upColor;
|
|
16
|
+
_downColor;
|
|
17
|
+
_gfx;
|
|
18
|
+
constructor(layer, _upColor = UP_COLOR, _downColor = DOWN_COLOR) {
|
|
19
|
+
this._upColor = _upColor;
|
|
20
|
+
this._downColor = _downColor;
|
|
21
|
+
this._gfx = new Graphics();
|
|
22
|
+
layer.addChild(this._gfx);
|
|
23
|
+
}
|
|
24
|
+
draw(bars, transform) {
|
|
25
|
+
const gfx = this._gfx;
|
|
26
|
+
gfx.clear();
|
|
27
|
+
if (bars.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
const { plotWidth: pw, plotHeight: ph } = transform;
|
|
30
|
+
const { from, to } = transform.timeRange;
|
|
31
|
+
// Infer candle interval from median gap between consecutive bars (seconds)
|
|
32
|
+
let candleInterval = 0;
|
|
33
|
+
if (bars.length >= 2) {
|
|
34
|
+
const deltas = [];
|
|
35
|
+
for (let i = 1; i < Math.min(bars.length, 20); i++) {
|
|
36
|
+
const d = bars[i].time - bars[i - 1].time;
|
|
37
|
+
if (d > 0)
|
|
38
|
+
deltas.push(d);
|
|
39
|
+
}
|
|
40
|
+
if (deltas.length > 0) {
|
|
41
|
+
deltas.sort((a, b) => a - b);
|
|
42
|
+
candleInterval = deltas[Math.floor(deltas.length / 2)];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const visibleSpan = to - from;
|
|
46
|
+
const pps = visibleSpan > 0 ? pw / visibleSpan : 1;
|
|
47
|
+
const barPitch = candleInterval > 0
|
|
48
|
+
? candleInterval * pps
|
|
49
|
+
: pw / Math.max(1, bars.length);
|
|
50
|
+
const gap = Math.max(1, Math.round(barPitch * 0.15));
|
|
51
|
+
const barW = Math.min(MAX_BAR_W, Math.max(MIN_BAR_W, Math.floor(barPitch) - gap));
|
|
52
|
+
const halfW = Math.max(0.5, barW / 2);
|
|
53
|
+
for (const bar of bars) {
|
|
54
|
+
const x = transform.timeToX(bar.time);
|
|
55
|
+
// Skip entirely off-screen bars
|
|
56
|
+
if (x < -barW || x > pw + barW)
|
|
57
|
+
continue;
|
|
58
|
+
const yOpen = transform.priceToY(bar.open);
|
|
59
|
+
const yClose = transform.priceToY(bar.close);
|
|
60
|
+
const yHigh = transform.priceToY(bar.high);
|
|
61
|
+
const yLow = transform.priceToY(bar.low);
|
|
62
|
+
const bullish = bar.close >= bar.open;
|
|
63
|
+
const color = bullish ? this._upColor : this._downColor;
|
|
64
|
+
const bodyTop = Math.min(yOpen, yClose);
|
|
65
|
+
const bodyH = Math.max(MIN_BODY_H, Math.abs(yClose - yOpen));
|
|
66
|
+
// Clip to plot area
|
|
67
|
+
if (bodyTop > ph || bodyTop + bodyH < 0)
|
|
68
|
+
continue;
|
|
69
|
+
// Wick
|
|
70
|
+
gfx
|
|
71
|
+
.moveTo(x, yHigh)
|
|
72
|
+
.lineTo(x, bodyTop)
|
|
73
|
+
.moveTo(x, bodyTop + bodyH)
|
|
74
|
+
.lineTo(x, yLow)
|
|
75
|
+
.stroke({ color, width: 1 });
|
|
76
|
+
// Body
|
|
77
|
+
gfx
|
|
78
|
+
.rect(x - halfW, bodyTop, barW, bodyH)
|
|
79
|
+
.fill({ color });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Converts OHLCV bars to Heikin-Ashi values before drawing.
|
|
84
|
+
*/
|
|
85
|
+
drawHeikinAshi(bars, transform) {
|
|
86
|
+
this.draw(this._toHeikinAshi(bars), transform);
|
|
87
|
+
}
|
|
88
|
+
_toHeikinAshi(bars) {
|
|
89
|
+
const result = [];
|
|
90
|
+
for (let i = 0; i < bars.length; i++) {
|
|
91
|
+
const bar = bars[i];
|
|
92
|
+
const prev = result[i - 1] ?? bar;
|
|
93
|
+
const haClose = (bar.open + bar.high + bar.low + bar.close) / 4;
|
|
94
|
+
const haOpen = (prev.open + prev.close) / 2;
|
|
95
|
+
result.push({
|
|
96
|
+
time: bar.time,
|
|
97
|
+
open: haOpen,
|
|
98
|
+
high: Math.max(bar.high, haOpen, haClose),
|
|
99
|
+
low: Math.min(bar.low, haOpen, haClose),
|
|
100
|
+
close: haClose,
|
|
101
|
+
volume: bar.volume,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=PixiCandlestickRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiCandlestickRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiCandlestickRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ChartOptions, Drawing } from '@forgecharts/types';
|
|
2
|
+
import type { IChart, IChartPlugin } from '../types/IChart';
|
|
3
|
+
import type { ISeries } from '../types/ISeries';
|
|
4
|
+
import { CoordTransform } from '../core/CoordTransform';
|
|
5
|
+
/**
|
|
6
|
+
* PixiChart — GPU-accelerated chart engine built on PixiJS v8.
|
|
7
|
+
*
|
|
8
|
+
* Implements `IChart` identically to the Canvas 2D `Chart` class, so it is
|
|
9
|
+
* a drop-in replacement. Rendering is performed inside a PixiJS `Application`
|
|
10
|
+
* (WebGL / WebGPU auto-detected) using seven sortable `Container` layers.
|
|
11
|
+
*
|
|
12
|
+
* Selective redraw:
|
|
13
|
+
* - `DirtyFlags` tracks which layers need painting.
|
|
14
|
+
* - Each layer's renderer is called only when its flag is set.
|
|
15
|
+
* - Viewport changes (zoom/pan) mark all layers dirty via `_markViewportDirty()`.
|
|
16
|
+
* - Data changes only mark `PriceSeries` dirty.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const chart = new PixiChart(container, { theme: 'dark' });
|
|
21
|
+
* const series = chart.addSeries({ type: 'candlestick' });
|
|
22
|
+
* series.setData(bars);
|
|
23
|
+
*
|
|
24
|
+
* // Access the transform for drawing tools or plugins
|
|
25
|
+
* const { x, y } = chart.transform().toPixel(bar.time, bar.close);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class PixiChart implements IChart {
|
|
29
|
+
private readonly _app;
|
|
30
|
+
private readonly _stage;
|
|
31
|
+
private readonly _container;
|
|
32
|
+
private readonly _options;
|
|
33
|
+
private _colors;
|
|
34
|
+
private readonly _timeScale;
|
|
35
|
+
private readonly _priceScale;
|
|
36
|
+
private readonly _transform;
|
|
37
|
+
private readonly _layers;
|
|
38
|
+
private readonly _gridRenderer;
|
|
39
|
+
private readonly _candleRenderer;
|
|
40
|
+
private readonly _crosshairRenderer;
|
|
41
|
+
private readonly _drawingRenderer;
|
|
42
|
+
private _series;
|
|
43
|
+
private _drawings;
|
|
44
|
+
private _plugins;
|
|
45
|
+
private _resizeObserver;
|
|
46
|
+
private _initPromise;
|
|
47
|
+
private _ready;
|
|
48
|
+
private _interaction;
|
|
49
|
+
constructor(container: HTMLElement, options?: ChartOptions);
|
|
50
|
+
addSeries(options: Parameters<IChart['addSeries']>[0]): ISeries;
|
|
51
|
+
removeSeries(series: ISeries): void;
|
|
52
|
+
addPlugin(plugin: IChartPlugin): void;
|
|
53
|
+
removePlugin(plugin: IChartPlugin): void;
|
|
54
|
+
applyOptions(options: Partial<ChartOptions>): void;
|
|
55
|
+
setInterval(tf: string): void;
|
|
56
|
+
resize(width: number, height: number): void;
|
|
57
|
+
transform(): CoordTransform;
|
|
58
|
+
destroy(): void;
|
|
59
|
+
/** @internal Used by PixiChart when DrawingManager pushes an update. */
|
|
60
|
+
setDrawings(drawings: readonly Drawing[]): void;
|
|
61
|
+
private _renderFrame;
|
|
62
|
+
private _getVisibleBars;
|
|
63
|
+
private _autoFitPriceRange;
|
|
64
|
+
private _markViewportDirty;
|
|
65
|
+
private _onResize;
|
|
66
|
+
private _handleKeyAction;
|
|
67
|
+
/** Pans the viewport so the latest bar sits near the right edge. */
|
|
68
|
+
private _scrollToLatestBar;
|
|
69
|
+
private _resolveOptions;
|
|
70
|
+
private _resolveColors;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=PixiChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiChart.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiChart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAA0C,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AAC/H,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAWxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAsB;gBAE9B,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB;IA8G9D,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAe/D,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAKnC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKrC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAiBlD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM3C,SAAS,IAAI,cAAc;IAI3B,OAAO,IAAI,IAAI;IAYf,wEAAwE;IACxE,WAAW,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAO/C,OAAO,CAAC,YAAY;IAwEpB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,gBAAgB;IAoBxB,oEAAoE;IACpE,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;CAOvB"}
|