@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,111 @@
|
|
|
1
|
+
import { Graphics } from 'pixi.js';
|
|
2
|
+
const DEFAULT_COLOR = 0x888888;
|
|
3
|
+
const DEFAULT_WIDTH = 1;
|
|
4
|
+
const FIB_RATIOS = [0, 0.236, 0.382, 0.5, 0.618, 0.786, 1];
|
|
5
|
+
/**
|
|
6
|
+
* PixiDrawingRenderer — renders all drawing objects via GPU-batched Graphics.
|
|
7
|
+
*
|
|
8
|
+
* All `DrawingPoint` (time, price) → pixel conversions go through
|
|
9
|
+
* `CoordTransform`, keeping drawings perfectly aligned with the price series
|
|
10
|
+
* across zoom/pan without requiring a full re-fetch of underlying data.
|
|
11
|
+
*/
|
|
12
|
+
export class PixiDrawingRenderer {
|
|
13
|
+
_gfx;
|
|
14
|
+
constructor(layer) {
|
|
15
|
+
this._gfx = new Graphics();
|
|
16
|
+
layer.addChild(this._gfx);
|
|
17
|
+
}
|
|
18
|
+
draw(drawings, transform) {
|
|
19
|
+
this._gfx.clear();
|
|
20
|
+
for (const d of drawings) {
|
|
21
|
+
if (d.visible === false)
|
|
22
|
+
continue;
|
|
23
|
+
this._drawOne(d, transform);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
_drawOne(d, t) {
|
|
27
|
+
const gfx = this._gfx;
|
|
28
|
+
const color = d.color ? parseInt(d.color.replace('#', ''), 16) : DEFAULT_COLOR;
|
|
29
|
+
const width = d.lineWidth ?? DEFAULT_WIDTH;
|
|
30
|
+
const stroke = { color, width };
|
|
31
|
+
const { points, type } = d;
|
|
32
|
+
switch (type) {
|
|
33
|
+
case 'trendline': {
|
|
34
|
+
if (points.length < 2)
|
|
35
|
+
break;
|
|
36
|
+
const p0 = t.toPixel(points[0].time, points[0].price);
|
|
37
|
+
const p1 = t.toPixel(points[1].time, points[1].price);
|
|
38
|
+
gfx.moveTo(p0.x, p0.y).lineTo(p1.x, p1.y).stroke(stroke);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case 'horizontal': {
|
|
42
|
+
if (points.length < 1)
|
|
43
|
+
break;
|
|
44
|
+
const y = t.priceToY(points[0].price);
|
|
45
|
+
gfx.moveTo(0, y).lineTo(t.plotWidth, y).stroke(stroke);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case 'vertical': {
|
|
49
|
+
if (points.length < 1)
|
|
50
|
+
break;
|
|
51
|
+
const x = t.timeToX(points[0].time);
|
|
52
|
+
gfx.moveTo(x, 0).lineTo(x, t.plotHeight).stroke(stroke);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'rectangle': {
|
|
56
|
+
if (points.length < 2)
|
|
57
|
+
break;
|
|
58
|
+
const p0 = t.toPixel(points[0].time, points[0].price);
|
|
59
|
+
const p1 = t.toPixel(points[1].time, points[1].price);
|
|
60
|
+
gfx
|
|
61
|
+
.rect(Math.min(p0.x, p1.x), Math.min(p0.y, p1.y), Math.abs(p1.x - p0.x), Math.abs(p1.y - p0.y))
|
|
62
|
+
.stroke(stroke);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'fibRetracement': {
|
|
66
|
+
if (points.length < 2)
|
|
67
|
+
break;
|
|
68
|
+
const priceHigh = Math.max(points[0].price, points[1].price);
|
|
69
|
+
const priceLow = Math.min(points[0].price, points[1].price);
|
|
70
|
+
const span = priceHigh - priceLow;
|
|
71
|
+
const x0 = Math.min(t.timeToX(points[0].time), t.timeToX(points[1].time));
|
|
72
|
+
const x1 = Math.max(t.timeToX(points[0].time), t.timeToX(points[1].time));
|
|
73
|
+
for (const ratio of FIB_RATIOS) {
|
|
74
|
+
const levelPrice = priceLow + span * (1 - ratio);
|
|
75
|
+
const y = t.priceToY(levelPrice);
|
|
76
|
+
gfx.moveTo(x0, y).lineTo(x1, y).stroke({ color, width, alpha: 0.7 });
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
// ray: rendered as a segment from p0 through p1 to the plot boundary
|
|
81
|
+
case 'ray': {
|
|
82
|
+
if (points.length < 2)
|
|
83
|
+
break;
|
|
84
|
+
const x0 = t.timeToX(points[0].time);
|
|
85
|
+
const y0 = t.priceToY(points[0].price);
|
|
86
|
+
const dx = t.timeToX(points[1].time) - x0;
|
|
87
|
+
const dy = t.priceToY(points[1].price) - y0;
|
|
88
|
+
let tMin = Infinity;
|
|
89
|
+
if (dx > 0)
|
|
90
|
+
tMin = Math.min(tMin, (t.plotWidth - x0) / dx);
|
|
91
|
+
else if (dx < 0)
|
|
92
|
+
tMin = Math.min(tMin, -x0 / dx);
|
|
93
|
+
if (dy > 0)
|
|
94
|
+
tMin = Math.min(tMin, (t.plotHeight - y0) / dy);
|
|
95
|
+
else if (dy < 0)
|
|
96
|
+
tMin = Math.min(tMin, -y0 / dy);
|
|
97
|
+
const ex = tMin === Infinity ? x0 : x0 + dx * tMin;
|
|
98
|
+
const ey = tMin === Infinity ? y0 : y0 + dy * tMin;
|
|
99
|
+
gfx.moveTo(x0, y0).lineTo(ex, ey).stroke(stroke);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
// text: PixiJS does not handle text labels — skip silently
|
|
103
|
+
case 'text':
|
|
104
|
+
break;
|
|
105
|
+
default:
|
|
106
|
+
// Fib/Gann tools and future drawing types are rendered by the canvas layer, not Pixi.
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=PixiDrawingRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiDrawingRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiDrawingRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
2
|
+
import type { ChartColors } from '@forgecharts/types';
|
|
3
|
+
import type { CoordTransform } from '../core/CoordTransform';
|
|
4
|
+
import type { TimeScale } from '../core/TimeScale';
|
|
5
|
+
/**
|
|
6
|
+
* PixiGridRenderer — draws background fill, horizontal grid lines (price),
|
|
7
|
+
* vertical grid lines (time), and the axis separator borders.
|
|
8
|
+
*
|
|
9
|
+
* All drawing uses PixiJS `Graphics` which is GPU-batched.
|
|
10
|
+
*/
|
|
11
|
+
export declare class PixiGridRenderer {
|
|
12
|
+
private readonly _colors;
|
|
13
|
+
private readonly _gfx;
|
|
14
|
+
private readonly _timeLabels;
|
|
15
|
+
private readonly _priceLabels;
|
|
16
|
+
private readonly _timeScale;
|
|
17
|
+
constructor(layer: Container, _colors: ChartColors, timeScale: TimeScale);
|
|
18
|
+
draw(transform: CoordTransform, width: number, height: number): void;
|
|
19
|
+
private _formatPrice;
|
|
20
|
+
private _niceTimeStep;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=PixiGridRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiGridRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiGridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAmB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAGrC,KAAK,EAAE,SAAS,EACC,OAAO,EAAE,WAAW,EACrC,SAAS,EAAE,SAAS;IAStB,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiFpE,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;CAgBtB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Graphics, Container, Text, TextStyle } from 'pixi.js';
|
|
2
|
+
import { computeTicks } from '../core/TimeScale';
|
|
3
|
+
import { formatTimestampLabel } from '@forgecharts/utils';
|
|
4
|
+
const TICK_LEN = 4;
|
|
5
|
+
/**
|
|
6
|
+
* PixiGridRenderer — draws background fill, horizontal grid lines (price),
|
|
7
|
+
* vertical grid lines (time), and the axis separator borders.
|
|
8
|
+
*
|
|
9
|
+
* All drawing uses PixiJS `Graphics` which is GPU-batched.
|
|
10
|
+
*/
|
|
11
|
+
export class PixiGridRenderer {
|
|
12
|
+
_colors;
|
|
13
|
+
_gfx;
|
|
14
|
+
_timeLabels;
|
|
15
|
+
_priceLabels;
|
|
16
|
+
_timeScale;
|
|
17
|
+
constructor(layer, _colors, timeScale) {
|
|
18
|
+
this._colors = _colors;
|
|
19
|
+
this._timeScale = timeScale;
|
|
20
|
+
this._gfx = new Graphics();
|
|
21
|
+
this._timeLabels = new Container();
|
|
22
|
+
this._priceLabels = new Container();
|
|
23
|
+
layer.addChild(this._gfx, this._timeLabels, this._priceLabels);
|
|
24
|
+
}
|
|
25
|
+
draw(transform, width, height) {
|
|
26
|
+
const gfx = this._gfx;
|
|
27
|
+
gfx.clear();
|
|
28
|
+
const { plotWidth: pw, plotHeight: ph, priceScaleWidth, timeScaleHeight } = transform;
|
|
29
|
+
const { min: priceMin, max: priceMax } = transform.priceRange;
|
|
30
|
+
const { from: timeFrom, to: timeTo } = transform.timeRange;
|
|
31
|
+
// ── Background ────────────────────────────────────────────────────────────
|
|
32
|
+
gfx.rect(0, 0, width, height).fill(this._colors.background);
|
|
33
|
+
// ── Horizontal price grid ─────────────────────────────────────────────────
|
|
34
|
+
const priceTicks = computeTicks(priceMin, priceMax, Math.max(2, Math.floor(ph / 50)));
|
|
35
|
+
this._priceLabels.removeChildren();
|
|
36
|
+
const labelStyle = new TextStyle({
|
|
37
|
+
fontSize: 11,
|
|
38
|
+
fontFamily: 'system-ui, sans-serif',
|
|
39
|
+
fill: this._colors.text,
|
|
40
|
+
});
|
|
41
|
+
for (const tick of priceTicks) {
|
|
42
|
+
if (tick < priceMin || tick > priceMax)
|
|
43
|
+
continue;
|
|
44
|
+
const y = transform.priceToY(tick);
|
|
45
|
+
if (y < 0 || y > ph)
|
|
46
|
+
continue;
|
|
47
|
+
gfx.moveTo(0, y).lineTo(pw, y).stroke({ color: this._colors.grid, width: 1, alpha: 0.5 });
|
|
48
|
+
// Tick mark on axis border
|
|
49
|
+
gfx.moveTo(pw, y).lineTo(pw + TICK_LEN, y).stroke({ color: this._colors.border, width: 1 });
|
|
50
|
+
// Price label
|
|
51
|
+
const t = new Text({ text: this._formatPrice(tick), style: labelStyle });
|
|
52
|
+
t.x = pw + TICK_LEN + 2;
|
|
53
|
+
t.y = y - t.height / 2;
|
|
54
|
+
this._priceLabels.addChild(t);
|
|
55
|
+
}
|
|
56
|
+
// ── Vertical time grid ────────────────────────────────────────────────────
|
|
57
|
+
const approxTicks = Math.max(2, Math.floor(pw / 100));
|
|
58
|
+
const span = timeTo - timeFrom;
|
|
59
|
+
const rawStep = span / approxTicks;
|
|
60
|
+
const step = this._niceTimeStep(rawStep);
|
|
61
|
+
const startTime = Math.ceil(timeFrom / step) * step;
|
|
62
|
+
this._timeLabels.removeChildren();
|
|
63
|
+
const timeLabelStyle = new TextStyle({
|
|
64
|
+
fontSize: 11,
|
|
65
|
+
fontFamily: 'system-ui, sans-serif',
|
|
66
|
+
fill: this._colors.text,
|
|
67
|
+
});
|
|
68
|
+
for (let t = startTime; t <= timeTo; t += step) {
|
|
69
|
+
const x = transform.timeToX(t);
|
|
70
|
+
if (x < 0 || x > pw)
|
|
71
|
+
continue;
|
|
72
|
+
gfx.moveTo(x, 0).lineTo(x, ph).stroke({ color: this._colors.grid, width: 1, alpha: 0.4 });
|
|
73
|
+
gfx.moveTo(x, ph).lineTo(x, ph + TICK_LEN).stroke({ color: this._colors.border, width: 1 });
|
|
74
|
+
const label = formatTimestampLabel(t, step);
|
|
75
|
+
const tl = new Text({ text: label, style: timeLabelStyle });
|
|
76
|
+
tl.x = x - tl.width / 2;
|
|
77
|
+
tl.y = ph + TICK_LEN + 2;
|
|
78
|
+
this._timeLabels.addChild(tl);
|
|
79
|
+
}
|
|
80
|
+
// ── Axis separator lines ──────────────────────────────────────────────────
|
|
81
|
+
gfx
|
|
82
|
+
.moveTo(0, ph).lineTo(pw, ph)
|
|
83
|
+
.stroke({ color: this._colors.border, width: 1 });
|
|
84
|
+
gfx
|
|
85
|
+
.moveTo(pw, 0).lineTo(pw, ph)
|
|
86
|
+
.stroke({ color: this._colors.border, width: 1 });
|
|
87
|
+
// ── Price axis background fill ────────────────────────────────────────────
|
|
88
|
+
gfx.rect(pw, 0, priceScaleWidth, ph).fill(this._colors.backgroundSecondary);
|
|
89
|
+
// ── Time axis background fill ─────────────────────────────────────────────
|
|
90
|
+
gfx.rect(0, ph, pw, timeScaleHeight).fill(this._colors.backgroundSecondary);
|
|
91
|
+
}
|
|
92
|
+
_formatPrice(price) {
|
|
93
|
+
const decimals = price < 1 ? 6 : price < 1000 ? 4 : 2;
|
|
94
|
+
return price.toFixed(decimals);
|
|
95
|
+
}
|
|
96
|
+
_niceTimeStep(rawSeconds) {
|
|
97
|
+
const nice = [
|
|
98
|
+
1, 5, 10, 30, 60, 300, 600, 900, 1800, 3600, 7200, 14400, 21600, 43200,
|
|
99
|
+
86400, // 1 day
|
|
100
|
+
7 * 86400, // 1 week
|
|
101
|
+
14 * 86400, // 2 weeks
|
|
102
|
+
30 * 86400, // ~1 month
|
|
103
|
+
91 * 86400, // ~quarter
|
|
104
|
+
182 * 86400, // ~half year
|
|
105
|
+
365 * 86400, // ~1 year
|
|
106
|
+
];
|
|
107
|
+
for (const s of nice) {
|
|
108
|
+
if (s >= rawSeconds)
|
|
109
|
+
return s;
|
|
110
|
+
}
|
|
111
|
+
return 365 * 86400 * Math.ceil(rawSeconds / (365 * 86400));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=PixiGridRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiGridRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiGridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAQR;IAPF,IAAI,CAAW;IACf,WAAW,CAAY;IACvB,YAAY,CAAY;IACxB,UAAU,CAAY;IAEvC,YACE,KAAgB,EACC,OAAoB,EACrC,SAAoB;QADH,YAAO,GAAP,OAAO,CAAa;QAGrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,SAAyB,EAAE,KAAa,EAAE,MAAc;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;QACtF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC;QAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;QAE3D,6EAA6E;QAC7E,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5D,6EAA6E;QAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC;YAC/B,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,uBAAuB;YACnC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ;gBAAE,SAAS;YACjD,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;gBAAE,SAAS;YAE9B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE1F,2BAA2B;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5F,cAAc;YACd,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,6EAA6E;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAEpD,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC;YACnC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,uBAAuB;YACnC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;gBAAE,SAAS;YAE9B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1F,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5F,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5D,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YACxB,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,6EAA6E;QAC7E,GAAG;aACA,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;aAC5B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,GAAG;aACA,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;aAC5B,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEpD,6EAA6E;QAC7E,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE5E,6EAA6E;QAC7E,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9E,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEO,aAAa,CAAC,UAAkB;QACtC,MAAM,IAAI,GAAG;YACX,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YACtE,KAAK,EAAY,QAAQ;YACzB,CAAC,GAAK,KAAK,EAAM,SAAS;YAC1B,EAAE,GAAI,KAAK,EAAM,UAAU;YAC3B,EAAE,GAAI,KAAK,EAAM,WAAW;YAC5B,EAAE,GAAI,KAAK,EAAM,WAAW;YAC5B,GAAG,GAAG,KAAK,EAAM,aAAa;YAC9B,GAAG,GAAG,KAAK,EAAM,UAAU;SAC5B,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,UAAU;gBAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
2
|
+
import { LayerName } from './LayerName';
|
|
3
|
+
/**
|
|
4
|
+
* DirtyFlags — bitmask that tracks which layers need to be redrawn.
|
|
5
|
+
*
|
|
6
|
+
* Call `mark(layer)` whenever data or viewport changes affecting a layer.
|
|
7
|
+
* Call `isDirty(layer)` before redrawing to skip unnecessary work.
|
|
8
|
+
* Call `clear(layer)` after the layer finishes drawing.
|
|
9
|
+
*/
|
|
10
|
+
export declare class DirtyFlags {
|
|
11
|
+
private _bits;
|
|
12
|
+
mark(layer: LayerName): void;
|
|
13
|
+
markAll(): void;
|
|
14
|
+
isDirty(layer: LayerName): boolean;
|
|
15
|
+
clear(layer: LayerName): void;
|
|
16
|
+
clearAll(): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* PixiLayerManager — owns one PixiJS `Container` per layer, stacked by z-index.
|
|
20
|
+
*
|
|
21
|
+
* Responsibilities:
|
|
22
|
+
* - Creates and names seven containers corresponding to `LayerName` values
|
|
23
|
+
* - Attaches all containers to a root `Container` already mounted in the stage
|
|
24
|
+
* - Exposes `get(layer)` so renderers can add display objects to the right layer
|
|
25
|
+
* - Owns a `DirtyFlags` instance for selective redraw signalling
|
|
26
|
+
* - `clear(layer)` removes all children from a layer without destroying the container
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const layers = new PixiLayerManager(stage);
|
|
31
|
+
*
|
|
32
|
+
* // Direct child access
|
|
33
|
+
* const seriesContainer = layers.get(LayerName.PriceSeries);
|
|
34
|
+
*
|
|
35
|
+
* // Invalidation
|
|
36
|
+
* layers.dirty.mark(LayerName.PriceSeries);
|
|
37
|
+
* if (layers.dirty.isDirty(LayerName.PriceSeries)) {
|
|
38
|
+
* // redraw…
|
|
39
|
+
* layers.dirty.clear(LayerName.PriceSeries);
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare class PixiLayerManager {
|
|
44
|
+
private readonly _containers;
|
|
45
|
+
readonly dirty: DirtyFlags;
|
|
46
|
+
constructor(stage: Container);
|
|
47
|
+
/** Returns the `Container` for the given layer. */
|
|
48
|
+
get(layer: LayerName): Container;
|
|
49
|
+
/** Removes all display objects from a layer (preserves the container itself). */
|
|
50
|
+
clear(layer: LayerName): void;
|
|
51
|
+
/** Removes all display objects from every layer. */
|
|
52
|
+
clearAll(): void;
|
|
53
|
+
/** Destroys all container children (use on chart destroy). */
|
|
54
|
+
destroy(): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=PixiLayerManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiLayerManager.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiLayerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAA4B,MAAM,aAAa,CAAC;AAElE;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAK;IAElB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI5B,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI7B,QAAQ,IAAI,IAAI;CAGjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,QAAQ,CAAC,KAAK,aAAoB;gBAEtB,KAAK,EAAE,SAAS;IAa5B,mDAAmD;IACnD,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAMhC,iFAAiF;IACjF,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI7B,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAIhB,8DAA8D;IAC9D,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Container } from 'pixi.js';
|
|
2
|
+
import { LAYER_NAMES, LAYER_LABEL } from './LayerName';
|
|
3
|
+
/**
|
|
4
|
+
* DirtyFlags — bitmask that tracks which layers need to be redrawn.
|
|
5
|
+
*
|
|
6
|
+
* Call `mark(layer)` whenever data or viewport changes affecting a layer.
|
|
7
|
+
* Call `isDirty(layer)` before redrawing to skip unnecessary work.
|
|
8
|
+
* Call `clear(layer)` after the layer finishes drawing.
|
|
9
|
+
*/
|
|
10
|
+
export class DirtyFlags {
|
|
11
|
+
_bits = 0;
|
|
12
|
+
mark(layer) {
|
|
13
|
+
this._bits |= 1 << layer;
|
|
14
|
+
}
|
|
15
|
+
markAll() {
|
|
16
|
+
this._bits = (1 << LAYER_NAMES.length) - 1;
|
|
17
|
+
}
|
|
18
|
+
isDirty(layer) {
|
|
19
|
+
return (this._bits & (1 << layer)) !== 0;
|
|
20
|
+
}
|
|
21
|
+
clear(layer) {
|
|
22
|
+
this._bits &= ~(1 << layer);
|
|
23
|
+
}
|
|
24
|
+
clearAll() {
|
|
25
|
+
this._bits = 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* PixiLayerManager — owns one PixiJS `Container` per layer, stacked by z-index.
|
|
30
|
+
*
|
|
31
|
+
* Responsibilities:
|
|
32
|
+
* - Creates and names seven containers corresponding to `LayerName` values
|
|
33
|
+
* - Attaches all containers to a root `Container` already mounted in the stage
|
|
34
|
+
* - Exposes `get(layer)` so renderers can add display objects to the right layer
|
|
35
|
+
* - Owns a `DirtyFlags` instance for selective redraw signalling
|
|
36
|
+
* - `clear(layer)` removes all children from a layer without destroying the container
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const layers = new PixiLayerManager(stage);
|
|
41
|
+
*
|
|
42
|
+
* // Direct child access
|
|
43
|
+
* const seriesContainer = layers.get(LayerName.PriceSeries);
|
|
44
|
+
*
|
|
45
|
+
* // Invalidation
|
|
46
|
+
* layers.dirty.mark(LayerName.PriceSeries);
|
|
47
|
+
* if (layers.dirty.isDirty(LayerName.PriceSeries)) {
|
|
48
|
+
* // redraw…
|
|
49
|
+
* layers.dirty.clear(LayerName.PriceSeries);
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export class PixiLayerManager {
|
|
54
|
+
_containers = new Map();
|
|
55
|
+
dirty = new DirtyFlags();
|
|
56
|
+
constructor(stage) {
|
|
57
|
+
for (const name of LAYER_NAMES) {
|
|
58
|
+
const c = new Container();
|
|
59
|
+
c.label = LAYER_LABEL[name];
|
|
60
|
+
c.zIndex = name;
|
|
61
|
+
stage.addChild(c);
|
|
62
|
+
this._containers.set(name, c);
|
|
63
|
+
}
|
|
64
|
+
// PixiJS v8: sortableChildren must be true on the stage so zIndex is respected
|
|
65
|
+
stage.sortableChildren = true;
|
|
66
|
+
}
|
|
67
|
+
/** Returns the `Container` for the given layer. */
|
|
68
|
+
get(layer) {
|
|
69
|
+
const c = this._containers.get(layer);
|
|
70
|
+
if (!c)
|
|
71
|
+
throw new Error(`[ForgeCharts] Unknown layer: ${layer}`);
|
|
72
|
+
return c;
|
|
73
|
+
}
|
|
74
|
+
/** Removes all display objects from a layer (preserves the container itself). */
|
|
75
|
+
clear(layer) {
|
|
76
|
+
this.get(layer).removeChildren();
|
|
77
|
+
}
|
|
78
|
+
/** Removes all display objects from every layer. */
|
|
79
|
+
clearAll() {
|
|
80
|
+
for (const name of LAYER_NAMES)
|
|
81
|
+
this.clear(name);
|
|
82
|
+
}
|
|
83
|
+
/** Destroys all container children (use on chart destroy). */
|
|
84
|
+
destroy() {
|
|
85
|
+
for (const name of LAYER_NAMES) {
|
|
86
|
+
const c = this._containers.get(name);
|
|
87
|
+
c?.destroy({ children: true });
|
|
88
|
+
}
|
|
89
|
+
this._containers.clear();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=PixiLayerManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PixiLayerManager.js","sourceRoot":"","sources":["../../src/pixi/PixiLayerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAa,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAG,CAAC,CAAC;IAElB,IAAI,CAAC,KAAgB;QACnB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,gBAAgB;IACV,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IACtD,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;IAElC,YAAY,KAAgB;QAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,+EAA+E;QAC/E,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,mDAAmD;IACnD,GAAG,CAAC,KAAgB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,oDAAoD;IACpD,QAAQ;QACN,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,8DAA8D;IAC9D,OAAO;QACL,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChartCanvas — stacks the main price chart above one or more indicator panes.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Creates a TChart instance and attaches any `initialIndicators`.
|
|
6
|
+
* - Each non-overlay indicator gets its own sub-pane (managed by TChart's PaneManager).
|
|
7
|
+
* - Draggable dividers let the user resize panes; the price-split fraction is
|
|
8
|
+
* reported via onPriceFractionChange (no localStorage in this package).
|
|
9
|
+
* - A requestAnimationFrame loop forwards viewport changes (pan/zoom) to the
|
|
10
|
+
* indicator canvases so they stay in sync with the main chart’s time axis.
|
|
11
|
+
*
|
|
12
|
+
* Previously exported as MultiPaneChart — that name is kept as an alias.
|
|
13
|
+
*/
|
|
14
|
+
import type { TradingOverlayStore } from '../../';
|
|
15
|
+
import type { IndicatorConfig, ChartLayout } from '@forgecharts/types';
|
|
16
|
+
import type { IDatafeed, ChartTheme } from '@forgecharts/types';
|
|
17
|
+
import type { TradingBridgeCallbacks } from '../trading/TradingBridge';
|
|
18
|
+
export type ChartCanvasHandle = {
|
|
19
|
+
/** Returns the full current chart state (indicators, drawings, viewport). */
|
|
20
|
+
getLayoutSnapshot: () => ChartLayout | null;
|
|
21
|
+
/** Replaces the chart state with the supplied layout snapshot. */
|
|
22
|
+
loadLayoutSnapshot: (layout: ChartLayout) => void;
|
|
23
|
+
/** Adds an indicator to the live chart and returns its id. */
|
|
24
|
+
addIndicator: (config: IndicatorConfig) => string | null;
|
|
25
|
+
/** Captures the visible chart area as a PNG data-URL. */
|
|
26
|
+
captureScreenshot: () => Promise<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the chart's internal TradingOverlayStore for Unmanaged mode.
|
|
29
|
+
* Use this to push confirmed order / position state into the chart.
|
|
30
|
+
* Returns null before the chart has mounted.
|
|
31
|
+
*/
|
|
32
|
+
getOverlayStore: () => TradingOverlayStore | null;
|
|
33
|
+
};
|
|
34
|
+
export type ChartCanvasProps = {
|
|
35
|
+
symbol: string;
|
|
36
|
+
timeframe: string;
|
|
37
|
+
datafeed?: IDatafeed;
|
|
38
|
+
theme?: ChartTheme;
|
|
39
|
+
/** IANA timezone for axis labels (e.g. "America/New_York"). */
|
|
40
|
+
timezone?: string | undefined;
|
|
41
|
+
/** Indicators to add on mount. Non-overlay indicators each get a sub-pane. */
|
|
42
|
+
initialIndicators?: IndicatorConfig[];
|
|
43
|
+
/**
|
|
44
|
+
* When provided the chart restores this snapshot on mount instead of
|
|
45
|
+
* reading from localStorage. Pass a snapshot captured via getLayoutSnapshot()
|
|
46
|
+
* or a ChartLayout loaded from the server.
|
|
47
|
+
*/
|
|
48
|
+
layoutToRestore?: ChartLayout | undefined;
|
|
49
|
+
/** Called whenever an indicator is added or removed, so the parent can trigger a workspace save. */
|
|
50
|
+
onIndicatorsChanged?: () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Initial price-pane fraction (0.3–0.85). Defaults to 0.6.
|
|
53
|
+
* The parent controls persistence; changes are reported via onPriceFractionChange.
|
|
54
|
+
*/
|
|
55
|
+
priceFraction?: number;
|
|
56
|
+
/** Called when the user drags the price/sub-pane divider. */
|
|
57
|
+
onPriceFractionChange?: (fraction: number) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Optional callback to resolve an exchange logo URL.
|
|
60
|
+
* Receives the exchange code (e.g. "BINANCE") and returns a URL string,
|
|
61
|
+
* or undefined/null to suppress the logo image entirely.
|
|
62
|
+
* If omitted, no exchange logo is rendered.
|
|
63
|
+
*/
|
|
64
|
+
getExchangeLogoUrl?: (exchange: string) => string | null | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Optional trading bridge callbacks for Unmanaged mode.
|
|
67
|
+
*
|
|
68
|
+
* When provided the chart will invoke these callbacks when the user performs
|
|
69
|
+
* a trading action (drag-to-place, cancel, bracket adjust, etc.).
|
|
70
|
+
* The chart never self-confirms — the host must push confirmed state back
|
|
71
|
+
* through `TradingOverlayStore` (via `upsertOrder` / `setOrders` etc.).
|
|
72
|
+
*
|
|
73
|
+
* Wrap with `createTradingBridgeLogger` during development for structured
|
|
74
|
+
* console output of every emitted intent.
|
|
75
|
+
*/
|
|
76
|
+
tradingBridge?: TradingBridgeCallbacks;
|
|
77
|
+
};
|
|
78
|
+
/** @deprecated Use ChartCanvasProps */
|
|
79
|
+
export type MultiPaneChartProps = ChartCanvasProps;
|
|
80
|
+
/** @deprecated Use ChartCanvasHandle */
|
|
81
|
+
export type MultiPaneChartHandle = ChartCanvasHandle;
|
|
82
|
+
export declare const ChartCanvas: import("react").ForwardRefExoticComponent<ChartCanvasProps & import("react").RefAttributes<ChartCanvasHandle>>;
|
|
83
|
+
/** @deprecated Use ChartCanvas */
|
|
84
|
+
export declare const MultiPaneChart: import("react").ForwardRefExoticComponent<ChartCanvasProps & import("react").RefAttributes<ChartCanvasHandle>>;
|
|
85
|
+
//# sourceMappingURL=ChartCanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,KAAK,EAAyB,eAAe,EAAkC,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA0OvE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IAC5C,kEAAkE;IAClE,kBAAkB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,8DAA8D;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD;;;;OAIG;IACH,eAAe,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACnD,wCAAwC;AACxC,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,eAAO,MAAM,WAAW,gHAmpBtB,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,cAAc,gHAAc,CAAC"}
|