@tradecanvas/mcp 1.44.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { i as createServer, t as splitLines } from "./server.js";
3
3
  //#region src/cli.ts
4
- var server = createServer({ version: "1.44.0" });
4
+ var server = createServer({ version: "1.45.0" });
5
5
  var pending = "";
6
6
  function answer(chunk, ended) {
7
7
  const { lines, rest } = splitLines(pending, chunk, ended);
package/dist/server.js CHANGED
@@ -4534,8 +4534,8 @@ var catalog_default = {
4534
4534
  "builtIn": false
4535
4535
  }
4536
4536
  ],
4537
- options: /* @__PURE__ */ JSON.parse("{\"ChartWidget\":[{\"name\":\"symbol\",\"type\":\"string\",\"kind\":\"string\"},{\"name\":\"timeframe\",\"type\":\"TimeFrame\"},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"ui\",\"type\":\"WidgetUIPreset | WidgetUITheme\",\"doc\":\"The widget's look: its corners, sizes, type, lines, shadows and bars. A preset (`'print'`, the default; `'studio'`; `'terminal'`; `'capsule'`) or your theme over one. Colours stay with `theme`.\"},{\"name\":\"locale\",\"type\":\"string\",\"doc\":\"UI chrome language (toolbar, watchlist, indicator picker, status bar, settings panel, hotkey sheet). A built-in table ('en', the default, or 'vi'), layered under `messages` for host overrides/additions. Does not translate the data-driven indicator/drawing-tool names from `widgetConfig.ts` — see README \\\"Widget i18n\\\".\",\"kind\":\"string\"},{\"name\":\"messages\",\"type\":\"Partial<Record<MessageKey, string>>\",\"doc\":\"Override or add individual UI strings, on top of `locale`'s built-in table.\"},{\"name\":\"features\",\"type\":\"WidgetFeatures\",\"doc\":\"The widget's switches, by name (`WIDGET_FEATURES`): every one is on unless set `false` here. A name without a dot turns a whole capability off wherever it shows (`alerts`, `settings`, `hotkeys`); a dotted name, one place (`toolbar.screenshot`, `menu.chart.order`, `sidebar.magnet`). Change them while running with `setFeatures`.\"},{\"name\":\"toolbar\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"drawingTools\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"settings\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"trading\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"statusBar\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rangeBar\",\"type\":\"boolean\",\"doc\":\"Range presets (1D, 5D, 1M … All) and \\\"go to date\\\" (also Alt+G) on the status bar. Default `true`; needs the status bar.\",\"kind\":\"boolean\"},{\"name\":\"indicatorLegend\",\"type\":\"boolean\",\"doc\":\"The indicators on the chart, under the OHLCV legend and at the top of their panes, with show / settings / remove. Default `true`; `false` leaves only the toolbar's indicator count.\",\"kind\":\"boolean\"},{\"name\":\"replayRevealMarks\",\"type\":\"boolean\",\"doc\":\"In a replay, show the signal markers and trade zones only as it reaches them (a trade open until its exit). Default `true`; `false` shows them all through the replay.\",\"kind\":\"boolean\"},{\"name\":\"fullscreen\",\"type\":\"boolean\",\"doc\":\"Fullscreen button in the toolbar, where the browser allows it. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"alerts\",\"type\":\"boolean\",\"doc\":\"Price-alerts UI — a bell button in the toolbar that opens a floating panel to add / list / delete price alerts, plus a toast when one triggers. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"alertNotifications\",\"type\":\"AlertNotifyOptions\",\"doc\":\"Sound and/or desktop notification when a price alert triggers. Both off by default. `sound: true` plays a built-in beep; pass a URL for a custom one. `desktop: true` uses the Notification API (asks permission on first use).\"},{\"name\":\"objectTree\",\"type\":\"boolean\",\"doc\":\"Object-tree panel — a layers button in the toolbar that opens a manager listing active indicators and drawings, with per-item show/hide, lock, and delete. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"depthLadder\",\"type\":\"boolean\",\"doc\":\"Depth-of-market ladder: a click-to-trade order book, a page of the dock beside the chart (a sheet on a phone). Open it from the Trade menu, its rail button (the `dock.depthLadder` switch) or `widget.openPanel('depthLadder')`. Off by default (needs trading and an order-book feed via `widget.setDepth`). Clicks emit `orderPlace` intents.\",\"kind\":\"boolean\"},{\"name\":\"accountPanel\",\"type\":\"boolean\",\"doc\":\"The account panel at the bottom: open positions with their profit and loss, working orders and the fills so far, with close, reverse and cancel, and an order ticket. A toolbar button opens it. Default `true` when trading is on.\",\"kind\":\"boolean\"},{\"name\":\"layouts\",\"type\":\"boolean | WidgetLayoutsOptions\",\"doc\":\"Named layouts: a toolbar button to save the chart (symbol, interval, scale, chart type, indicators, drawings, alerts) under a name, open, rename and delete layouts, and auto-save the one open; Ctrl/Cmd+S saves. Kept in this browser's `localStorage` unless `storage` says otherwise. Default `true`.\"},{\"name\":\"indicatorTemplates\",\"type\":\"boolean\",\"doc\":\"Indicator templates: the Templates tab of the Indicators dialog saves the chart's indicators (inputs, style, levels, panes) under a name and applies them in one go. Kept in this browser's `localStorage`. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"intervalTyping\",\"type\":\"boolean\",\"doc\":\"Type a number on the chart (after using it) to change the interval: `5`, `15m`, `1h`, `1D`, then Enter. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"chartMenuItems\",\"type\":\"(context: ChartMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of the chart's right-click menus (and of the \\\"+\\\" by the price axis), after the widget's. Called each time a menu opens.\",\"kind\":\"function\"},{\"name\":\"drawingMenuItems\",\"type\":\"(context: DrawingMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of a drawing's right-click menu. Called each time it opens.\",\"kind\":\"function\"},{\"name\":\"indicatorMenuItems\",\"type\":\"(context: IndicatorMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of an indicator's \\\"more\\\" menu (on its row on the chart).\",\"kind\":\"function\"},{\"name\":\"symbols\",\"type\":\"string[]\"},{\"name\":\"timeframes\",\"type\":\"TimeFrame[]\"},{\"name\":\"customTimeframes\",\"type\":\"boolean\",\"doc\":\"Let users type their own intervals (7m, 90m, 2h…) in the timeframe menu. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"chartTypes\",\"type\":\"ChartType[]\",\"items\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"adapter\",\"type\":\"DataAdapter\"},{\"name\":\"searchSymbols\",\"type\":\"(query: string, signal: AbortSignal) => Promise<SymbolInfo[]>\",\"doc\":\"Search symbols as the user types in the symbol search (names, exchanges). Defaults to the adapter's `searchSymbols`; without either, the search filters `symbols`.\",\"kind\":\"function\"},{\"name\":\"historyLimit\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"historyPageSize\",\"type\":\"number\",\"doc\":\"Bars per request when scrolling back for older bars (adapters with `fetchHistoryBefore`). Default 500.\",\"kind\":\"number\"},{\"name\":\"chartOptions\",\"type\":\"Partial<ChartOptions>\"},{\"name\":\"watchlist\",\"type\":\"boolean | WatchlistOptions\",\"doc\":\"A watchlist sidebar on the right: lists of symbols with last price, % change and a mini sparkline; lists can be added, renamed, deleted and reordered. `true` starts with one list of `symbols`. Default `false`.\"},{\"name\":\"symbolInfo\",\"type\":\"boolean\",\"doc\":\"The symbol info panel (names, price and move, market status, the day's numbers, hours, news) and its toolbar button. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"navigation\",\"type\":\"boolean\",\"doc\":\"Buttons over the chart, shown while the pointer is on it: zoom out and in, scroll earlier and later, reset the view. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"dir\",\"type\":\"'ltr' | 'rtl' | 'auto'\",\"doc\":\"Writing direction of the widget's chrome: `'rtl'` mirrors the toolbar, drawing tools, menus and dialogs (the chart keeps time running left to right). Default `'auto'`: right to left for Arabic, Hebrew, Persian, Urdu.\",\"values\":[\"ltr\",\"rtl\",\"auto\"]},{\"name\":\"news\",\"type\":\"(symbol: string, limit: number) => Promise<NewsItem[]>\",\"doc\":\"Headlines for the symbol info panel, newest first; default the adapter's `fetchNews` when it has one. Links that aren't web pages are dropped.\",\"kind\":\"function\"},{\"name\":\"dragDropImport\",\"type\":\"boolean\",\"doc\":\"Drag-and-drop CSV / JSON file import onto the chart. Default `true`. Set to `false` to disable (e.g. if the chart sits inside a larger surface that already handles drops).\",\"kind\":\"boolean\"},{\"name\":\"resampleTimeframes\",\"type\":\"boolean\",\"doc\":\"Client-side timeframe resampling. When enabled (default `true`) and no live adapter is attached, switching to a coarser timeframe aggregates the loaded base series instead of refetching — one dataset drives every resolution. Disable to keep the timeframe buttons purely as a `onTimeframeChange` signal for the host app to refetch.\",\"kind\":\"boolean\"},{\"name\":\"weekStartsOn\",\"type\":\"0 | 1\",\"doc\":\"Anchor day for weekly resample buckets. `0` = Sunday, `1` = Monday (default).\",\"values\":[0,1]},{\"name\":\"shareUrl\",\"type\":\"boolean\",\"doc\":\"Deep-linking. When `true`, the widget restores a `#tcw=<encoded>` view from the URL hash on load, and the \\\"Share View\\\" command writes one back. Use `exportState()` / `importState()` for manual control.\",\"kind\":\"boolean\"},{\"name\":\"drawingFavorites\",\"type\":\"DrawingToolType[]\",\"doc\":\"Drawing tools to pre-pin to the favorites strip at the top of the drawing sidebar on first run. Users pin/unpin any tool by right-clicking it; the set persists to localStorage. The strip is always available (hidden while empty) — this option only seeds the initial pins.\",\"items\":[\"trendLine\",\"horizontalLine\",\"horizontalRay\",\"verticalLine\",\"ray\",\"extendedLine\",\"crossLine\",\"trendAngle\",\"infoLine\",\"parallelChannel\",\"regressionChannel\",\"fibRetracement\",\"fibExtension\",\"fibTimeZones\",\"fibChannel\",\"fibSpeedResistanceFan\",\"rectangle\",\"ellipse\",\"triangle\",\"circle\",\"pitchfork\",\"schiffPitchfork\",\"modifiedSchiffPitchfork\",\"elliottWave\",\"xabcdPattern\",\"abcdPattern\",\"headAndShoulders\",\"priceRange\",\"dateRange\",\"dateAndPriceRange\",\"measure\",\"text\",\"arrow\",\"priceLabel\",\"gannFan\",\"gannBox\",\"cyclicLines\",\"anchoredVWAP\",\"volumeProfileRange\",\"riskReward\",\"note\",\"callout\",\"flag\",\"arrowMark\",\"icon\",\"brush\",\"highlighter\",\"path\",\"polyline\",\"curve\",\"arc\",\"fibCircles\",\"fibSpiral\",\"fibArcs\",\"fibWedge\",\"pitchfan\",\"gannSquare\",\"elliottImpulse\",\"elliottCorrection\",\"elliottTriangle\",\"elliottDoubleCombo\",\"elliottTripleCombo\",\"threeDrives\",\"cypherPattern\",\"timeCycles\",\"sineLine\",\"forecast\",\"projection\",\"barsPattern\"]},{\"name\":\"persistLayouts\",\"type\":\"boolean | { keyPrefix?: string; debounceMs?: number; }\"},{\"name\":\"onSymbolChange\",\"type\":\"(symbol: string) => void\",\"kind\":\"function\"},{\"name\":\"onTimeframeChange\",\"type\":\"(tf: TimeFrame) => void\",\"kind\":\"function\"},{\"name\":\"onReady\",\"type\":\"(chart: Chart) => void\",\"kind\":\"function\"}],\"Chart\":[{\"name\":\"width\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"height\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"chartType\",\"type\":\"ChartType\",\"doc\":\"Default `'candlestick'`.\",\"values\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"autoScale\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rightMargin\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"minBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"maxBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"grid\",\"type\":\"GridOptions\",\"doc\":\"The grid's lines: shorthand for the `grid.*` overrides.\"},{\"name\":\"crosshair\",\"type\":\"CrosshairOptions\",\"doc\":\"The crosshair's mode, and its lines: shorthand for the `crosshair.*` overrides.\"},{\"name\":\"overrides\",\"type\":\"ChartStyleOverridesPatch\",\"doc\":\"Style overrides to start with, on the host's layer: any part of the chart's look, by key (`'grid.vertical.visible': false`, `'series.candlestick.upColor': '#26a69a'`). See `chart.applyOverrides`.\"},{\"name\":\"priceAxis\",\"type\":\"PriceAxisOptions\"},{\"name\":\"timeAxis\",\"type\":\"TimeAxisOptions\"},{\"name\":\"watermark\",\"type\":\"WatermarkConfig\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Start with logarithmic price scale\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"SessionBreakOptions\",\"doc\":\"Session break line configuration\"},{\"name\":\"features\",\"type\":\"FeaturesConfig\",\"doc\":\"Feature toggles — control what users can access\"},{\"name\":\"numberLocale\",\"type\":\"string\",\"doc\":\"BCP 47 locale for number formatting (e.g. 'en-US', 'de-DE', 'vi-VN'). Defaults to 'en-US'.\",\"kind\":\"string\"},{\"name\":\"freePan\",\"type\":\"boolean\",\"doc\":\"Free panning (default `true`): drag past the newest bar into empty future space, or past the oldest bar, until `panLimits.minVisibleBars` bars remain. `false` restores the pre-1.3 clamp (newest bar stops at its resting position).\",\"kind\":\"boolean\"},{\"name\":\"timeZone\",\"type\":\"string | number | null\",\"doc\":\"Timezone for the time axis, crosshair, tooltip, day breaks and range presets: an IANA zone (`'America/New_York'`, daylight saving included), a fixed offset in minutes east of UTC, or null (default) for the browser's.\"},{\"name\":\"leftPriceScale\",\"type\":\"boolean\",\"doc\":\"Show a price scale on the left too. It carries the overlays put on it (`addIndicator(…, { scale: 'left' })`), else it mirrors the price scale. It shows by itself once an overlay is on it.\",\"kind\":\"boolean\"},{\"name\":\"panLimits\",\"type\":\"{ minVisibleBars?: number; }\",\"doc\":\"Bounds for free panning.\"},{\"name\":\"maxPixelRatio\",\"type\":\"number\",\"doc\":\"The highest device pixel ratio the chart draws at. Default 2: a 3x phone screen is drawn at 2x, 56% fewer pixels and less than half the canvas memory for lines barely softer. `Infinity` draws at the screen's own.\",\"kind\":\"number\"},{\"name\":\"pauseWhenHidden\",\"type\":\"boolean\",\"doc\":\"Stop drawing while no one can see the chart: scrolled off screen, or the page hidden (another tab, the app in the background). Data, indicators and alerts keep up; the frame missed is drawn on return. Default true. `suspend()` / `resume()` pause it from the host (a WebView's app paused).\",\"kind\":\"boolean\"},{\"name\":\"pageScroll\",\"type\":\"boolean\",\"doc\":\"For a chart on a page that scrolls (an article, a phone screen): a one-finger vertical swipe and the plain mouse wheel scroll the page; a sideways swipe pans the chart, and two fingers or Ctrl + wheel (a trackpad pinch) zoom it. Presses on drawings, lines and axes stay the chart's. Default false: the chart takes every gesture over it.\",\"kind\":\"boolean\"},{\"name\":\"minBarUnit\",\"type\":\"number\",\"doc\":\"How narrow a bar slot may get to fit a long series on screen (zooming out, `fitContent`, the 'All' range), px. Default 0.25: four bars a pixel, so 26 years of daily bars don't all fit on a laptop screen. Down to 0.02 (50 bars a pixel); below a pixel bars are drawn a pixel column at a time.\",\"kind\":\"number\"},{\"name\":\"priceFormat\",\"type\":\"PriceFormatter | PriceFraction\",\"doc\":\"How prices read on the price scale and everything that prints one (axis, crosshair, last-price tag, legend, tooltip, orders, alerts, drawings): a function of yours, or fractions of a point (a bond in 32nds: `101'16`). Indicator panes keep their own numbers. Default: decimals.\"},{\"name\":\"timeFormatter\",\"type\":\"TimeFormatter\",\"doc\":\"How times read on the time axis, the crosshair and the tooltip. Default: the chart's own.\",\"kind\":\"function\"},{\"name\":\"chartTypeOptions\",\"type\":\"ChartTypeOptions\",\"doc\":\"Settings of Renko, Line Break, Kagi, Point & Figure and range bars.\"},{\"name\":\"highLowLines\",\"type\":\"boolean\",\"doc\":\"Mark the highest high and lowest low on screen with a line and a price tag.\",\"kind\":\"boolean\"},{\"name\":\"shapes\",\"type\":\"ShapeConfig\",\"doc\":\"The shapes the chart draws: price tags, axis pills and order badges square (default), rounded or pills.\"},{\"name\":\"a11y\",\"type\":\"false | { labels?: Partial<ChartA11yLabels>; }\",\"doc\":\"The chart for screen readers: a summary, what is on screen after the keys move it, comma and period to read the bars. On by default; labels in your language here; `false` leaves it out.\"},{\"name\":\"renderer\",\"type\":\"'canvas' | 'webgl' | 'auto'\",\"doc\":\"What draws the plot and panes: `'canvas'` (Canvas 2D, the default), `'webgl'` (WebGL 2 on the GPU, Canvas 2D where it can't be had) or `'auto'` (WebGL 2 where the GPU is a real one).\",\"values\":[\"canvas\",\"webgl\",\"auto\"]},{\"name\":\"extendedHours\",\"type\":\"boolean\",\"doc\":\"Show the bars outside the symbol's regular hours (`SymbolInfo.sessions`): pre- and post-market. Default true; bars a day or longer are never left out.\",\"kind\":\"boolean\"},{\"name\":\"plugins\",\"type\":\"ChartPlugin[]\",\"doc\":\"Plugins to install with the chart: indicators, drawing tools, chart types and overlays of your own.\"}],\"ChartWidgetGrid\":[{\"name\":\"layout\",\"type\":\"GridLayout\",\"doc\":\"How the charts are arranged. Default `'1x2'` (two side by side).\",\"values\":[\"1x1\",\"1x2\",\"2x1\",\"2x2\",\"1x3\",\"3x1\",\"2x3\",\"3x2\"]},{\"name\":\"layoutChoices\",\"type\":\"readonly GridLayout[]\",\"doc\":\"The arrangements the bar offers. Default all of them.\",\"items\":[\"1x1\",\"1x2\",\"2x1\",\"2x2\",\"1x3\",\"3x1\",\"2x3\",\"3x2\"]},{\"name\":\"widget\",\"type\":\"ChartWidgetOptions\",\"doc\":\"Options for every chart. Leave `adapter` out of these when there is more than one chart: an adapter keeps one stream, so each chart needs its own (see `adapter`).\"},{\"name\":\"adapter\",\"type\":\"(index: number) => DataAdapter\",\"doc\":\"Makes each chart's data adapter, `new BinanceAdapter()` say; called once per chart.\",\"kind\":\"function\"},{\"name\":\"cells\",\"type\":\"readonly ChartWidgetOptions[]\",\"doc\":\"Each chart's own options, by position (its symbol and interval, say), over `widget`.\"},{\"name\":\"sync\",\"type\":\"Partial<WidgetGridSync>\",\"doc\":\"What the charts follow from each other; see {@link DEFAULT_GRID_SYNC}.\"},{\"name\":\"layouts\",\"type\":\"boolean | WidgetLayoutsOptions\",\"doc\":\"Named layouts of the whole grid (arrangement, sync and every chart). Default `true`.\"},{\"name\":\"bar\",\"type\":\"boolean\",\"doc\":\"The bar above the charts: arrangement, sync, layouts. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"onActiveChange\",\"type\":\"(index: number, widget: ChartWidget) => void\",\"doc\":\"The chart in use changed (pressed, or the grid shrank).\",\"kind\":\"function\"},{\"name\":\"onChartAdd\",\"type\":\"(widget: ChartWidget, index: number) => void\",\"doc\":\"A chart was made: at the start, and when the grid grows. Feed it data, add indicators…\",\"kind\":\"function\"}]}"),
4538
- nested: /* @__PURE__ */ JSON.parse("{\"ChartWidget.chartOptions\":[{\"name\":\"width\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"height\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"chartType\",\"type\":\"ChartType\",\"doc\":\"Default `'candlestick'`.\",\"values\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"autoScale\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rightMargin\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"minBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"maxBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"grid\",\"type\":\"GridOptions\",\"doc\":\"The grid's lines: shorthand for the `grid.*` overrides.\"},{\"name\":\"crosshair\",\"type\":\"CrosshairOptions\",\"doc\":\"The crosshair's mode, and its lines: shorthand for the `crosshair.*` overrides.\"},{\"name\":\"overrides\",\"type\":\"ChartStyleOverridesPatch\",\"doc\":\"Style overrides to start with, on the host's layer: any part of the chart's look, by key (`'grid.vertical.visible': false`, `'series.candlestick.upColor': '#26a69a'`). See `chart.applyOverrides`.\"},{\"name\":\"priceAxis\",\"type\":\"PriceAxisOptions\"},{\"name\":\"timeAxis\",\"type\":\"TimeAxisOptions\"},{\"name\":\"watermark\",\"type\":\"WatermarkConfig\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Start with logarithmic price scale\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"SessionBreakOptions\",\"doc\":\"Session break line configuration\"},{\"name\":\"features\",\"type\":\"FeaturesConfig\",\"doc\":\"Feature toggles — control what users can access\"},{\"name\":\"numberLocale\",\"type\":\"string\",\"doc\":\"BCP 47 locale for number formatting (e.g. 'en-US', 'de-DE', 'vi-VN'). Defaults to 'en-US'.\",\"kind\":\"string\"},{\"name\":\"freePan\",\"type\":\"boolean\",\"doc\":\"Free panning (default `true`): drag past the newest bar into empty future space, or past the oldest bar, until `panLimits.minVisibleBars` bars remain. `false` restores the pre-1.3 clamp (newest bar stops at its resting position).\",\"kind\":\"boolean\"},{\"name\":\"timeZone\",\"type\":\"string | number | null\",\"doc\":\"Timezone for the time axis, crosshair, tooltip, day breaks and range presets: an IANA zone (`'America/New_York'`, daylight saving included), a fixed offset in minutes east of UTC, or null (default) for the browser's.\"},{\"name\":\"leftPriceScale\",\"type\":\"boolean\",\"doc\":\"Show a price scale on the left too. It carries the overlays put on it (`addIndicator(…, { scale: 'left' })`), else it mirrors the price scale. It shows by itself once an overlay is on it.\",\"kind\":\"boolean\"},{\"name\":\"panLimits\",\"type\":\"{ minVisibleBars?: number; }\",\"doc\":\"Bounds for free panning.\"},{\"name\":\"maxPixelRatio\",\"type\":\"number\",\"doc\":\"The highest device pixel ratio the chart draws at. Default 2: a 3x phone screen is drawn at 2x, 56% fewer pixels and less than half the canvas memory for lines barely softer. `Infinity` draws at the screen's own.\",\"kind\":\"number\"},{\"name\":\"pauseWhenHidden\",\"type\":\"boolean\",\"doc\":\"Stop drawing while no one can see the chart: scrolled off screen, or the page hidden (another tab, the app in the background). Data, indicators and alerts keep up; the frame missed is drawn on return. Default true. `suspend()` / `resume()` pause it from the host (a WebView's app paused).\",\"kind\":\"boolean\"},{\"name\":\"pageScroll\",\"type\":\"boolean\",\"doc\":\"For a chart on a page that scrolls (an article, a phone screen): a one-finger vertical swipe and the plain mouse wheel scroll the page; a sideways swipe pans the chart, and two fingers or Ctrl + wheel (a trackpad pinch) zoom it. Presses on drawings, lines and axes stay the chart's. Default false: the chart takes every gesture over it.\",\"kind\":\"boolean\"},{\"name\":\"minBarUnit\",\"type\":\"number\",\"doc\":\"How narrow a bar slot may get to fit a long series on screen (zooming out, `fitContent`, the 'All' range), px. Default 0.25: four bars a pixel, so 26 years of daily bars don't all fit on a laptop screen. Down to 0.02 (50 bars a pixel); below a pixel bars are drawn a pixel column at a time.\",\"kind\":\"number\"},{\"name\":\"priceFormat\",\"type\":\"PriceFormatter | PriceFraction\",\"doc\":\"How prices read on the price scale and everything that prints one (axis, crosshair, last-price tag, legend, tooltip, orders, alerts, drawings): a function of yours, or fractions of a point (a bond in 32nds: `101'16`). Indicator panes keep their own numbers. Default: decimals.\"},{\"name\":\"timeFormatter\",\"type\":\"TimeFormatter\",\"doc\":\"How times read on the time axis, the crosshair and the tooltip. Default: the chart's own.\",\"kind\":\"function\"},{\"name\":\"chartTypeOptions\",\"type\":\"ChartTypeOptions\",\"doc\":\"Settings of Renko, Line Break, Kagi, Point & Figure and range bars.\"},{\"name\":\"highLowLines\",\"type\":\"boolean\",\"doc\":\"Mark the highest high and lowest low on screen with a line and a price tag.\",\"kind\":\"boolean\"},{\"name\":\"shapes\",\"type\":\"ShapeConfig\",\"doc\":\"The shapes the chart draws: price tags, axis pills and order badges square (default), rounded or pills.\"},{\"name\":\"a11y\",\"type\":\"false | { labels?: Partial<ChartA11yLabels>; }\",\"doc\":\"The chart for screen readers: a summary, what is on screen after the keys move it, comma and period to read the bars. On by default; labels in your language here; `false` leaves it out.\"},{\"name\":\"renderer\",\"type\":\"'canvas' | 'webgl' | 'auto'\",\"doc\":\"What draws the plot and panes: `'canvas'` (Canvas 2D, the default), `'webgl'` (WebGL 2 on the GPU, Canvas 2D where it can't be had) or `'auto'` (WebGL 2 where the GPU is a real one).\",\"values\":[\"canvas\",\"webgl\",\"auto\"]},{\"name\":\"extendedHours\",\"type\":\"boolean\",\"doc\":\"Show the bars outside the symbol's regular hours (`SymbolInfo.sessions`): pre- and post-market. Default true; bars a day or longer are never left out.\",\"kind\":\"boolean\"}],\"Chart.features\":[{\"name\":\"drawings\",\"type\":\"boolean\",\"doc\":\"Enable drawing tools entirely. When false, no drawing tool can be activated.\",\"kind\":\"boolean\"},{\"name\":\"drawingTools\",\"type\":\"DrawingToolType[]\",\"doc\":\"Whitelist of allowed drawing tool types. When set, only these tools are available.\",\"items\":[\"trendLine\",\"horizontalLine\",\"horizontalRay\",\"verticalLine\",\"ray\",\"extendedLine\",\"crossLine\",\"trendAngle\",\"infoLine\",\"parallelChannel\",\"regressionChannel\",\"fibRetracement\",\"fibExtension\",\"fibTimeZones\",\"fibChannel\",\"fibSpeedResistanceFan\",\"rectangle\",\"ellipse\",\"triangle\",\"circle\",\"pitchfork\",\"schiffPitchfork\",\"modifiedSchiffPitchfork\",\"elliottWave\",\"xabcdPattern\",\"abcdPattern\",\"headAndShoulders\",\"priceRange\",\"dateRange\",\"dateAndPriceRange\",\"measure\",\"text\",\"arrow\",\"priceLabel\",\"gannFan\",\"gannBox\",\"cyclicLines\",\"anchoredVWAP\",\"volumeProfileRange\",\"riskReward\",\"note\",\"callout\",\"flag\",\"arrowMark\",\"icon\",\"brush\",\"highlighter\",\"path\",\"polyline\",\"curve\",\"arc\",\"fibCircles\",\"fibSpiral\",\"fibArcs\",\"fibWedge\",\"pitchfan\",\"gannSquare\",\"elliottImpulse\",\"elliottCorrection\",\"elliottTriangle\",\"elliottDoubleCombo\",\"elliottTripleCombo\",\"threeDrives\",\"cypherPattern\",\"timeCycles\",\"sineLine\",\"forecast\",\"projection\",\"barsPattern\"]},{\"name\":\"drawingMagnet\",\"type\":\"boolean\",\"doc\":\"Allow magnet/snap for drawing anchors. When false, `setDrawingMagnet(true)` is ignored.\",\"kind\":\"boolean\"},{\"name\":\"drawingUndoRedo\",\"type\":\"boolean\",\"doc\":\"Enable undo/redo for drawings (Ctrl+Z / Ctrl+Y)\",\"kind\":\"boolean\"},{\"name\":\"trading\",\"type\":\"boolean\",\"doc\":\"Enable trading features (orders, positions, context menu)\",\"kind\":\"boolean\"},{\"name\":\"tradingContextMenu\",\"type\":\"boolean\",\"doc\":\"Right-click menu for placing orders. Default `false` — opt in explicitly.\",\"kind\":\"boolean\"},{\"name\":\"priceAxisAddButton\",\"type\":\"boolean\",\"doc\":\"A \\\"+\\\" by the price axis, level with the crosshair; a click on it emits `priceAxisAdd` with the price. Default `false` (ChartWidget turns it on).\",\"kind\":\"boolean\"},{\"name\":\"indicators\",\"type\":\"boolean\",\"doc\":\"Enable indicator overlays and panels\",\"kind\":\"boolean\"},{\"name\":\"indicatorIds\",\"type\":\"string[]\",\"doc\":\"Whitelist of allowed indicator IDs. When set, only these are available.\"},{\"name\":\"panning\",\"type\":\"boolean\",\"doc\":\"Enable mouse/touch pan\",\"kind\":\"boolean\"},{\"name\":\"zooming\",\"type\":\"boolean\",\"doc\":\"Enable mouse wheel / pinch zoom\",\"kind\":\"boolean\"},{\"name\":\"crosshair\",\"type\":\"boolean\",\"doc\":\"Enable crosshair\",\"kind\":\"boolean\"},{\"name\":\"crosshairTooltip\",\"type\":\"boolean\",\"doc\":\"Show the floating OHLCV tooltip that follows the cursor on hover. Pro trading charts usually rely on the top-left legend (`legend`) instead of a cursor-following popup — set this to `false` to match that and keep only the legend updating on hover.\",\"kind\":\"boolean\"},{\"name\":\"keyboard\",\"type\":\"boolean\",\"doc\":\"Enable keyboard shortcuts (arrows, +/-, Home/End, Space)\",\"kind\":\"boolean\"},{\"name\":\"priceAxis\",\"type\":\"boolean\",\"doc\":\"Show price axis\",\"kind\":\"boolean\"},{\"name\":\"timeAxis\",\"type\":\"boolean\",\"doc\":\"Show time axis\",\"kind\":\"boolean\"},{\"name\":\"grid\",\"type\":\"boolean\",\"doc\":\"Show grid lines\",\"kind\":\"boolean\"},{\"name\":\"legend\",\"type\":\"boolean\",\"doc\":\"Show OHLCV legend overlay\",\"kind\":\"boolean\"},{\"name\":\"indicatorValueLabels\",\"type\":\"boolean\",\"doc\":\"Tag each indicator line's latest value on its value axis. Default false: the legend shows the values.\",\"kind\":\"boolean\"},{\"name\":\"volume\",\"type\":\"boolean\",\"doc\":\"Show volume bars below candles\",\"kind\":\"boolean\"},{\"name\":\"watermark\",\"type\":\"boolean\",\"doc\":\"Show watermark text\",\"kind\":\"boolean\"},{\"name\":\"saveLoad\",\"type\":\"boolean\",\"doc\":\"Enable chart state save/load\",\"kind\":\"boolean\"},{\"name\":\"screenshot\",\"type\":\"boolean\",\"doc\":\"Enable screenshot capture\",\"kind\":\"boolean\"},{\"name\":\"alerts\",\"type\":\"boolean\",\"doc\":\"Enable price alerts\",\"kind\":\"boolean\"},{\"name\":\"replay\",\"type\":\"boolean\",\"doc\":\"Enable bar replay\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"boolean\",\"doc\":\"Show session break lines (day separators)\",\"kind\":\"boolean\"},{\"name\":\"barCountdown\",\"type\":\"boolean\",\"doc\":\"Show bar countdown timer (time until current candle closes). When false it stays hidden.\",\"kind\":\"boolean\"},{\"name\":\"compareSymbols\",\"type\":\"boolean\",\"doc\":\"Enable compare/overlay symbols. When false, `addCompareSymbol` does nothing.\",\"kind\":\"boolean\"},{\"name\":\"dataExport\",\"type\":\"boolean\",\"doc\":\"Enable data export (CSV/JSON). When false, `exportVisibleData` / `exportAllData` do nothing.\",\"kind\":\"boolean\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Allow the logarithmic price scale. When false, switching to it is ignored.\",\"kind\":\"boolean\"},{\"name\":\"timeframes\",\"type\":\"TimeFrame[]\",\"doc\":\"Whitelist of timeframes. When set, `setTimeframe` ignores any other, and ChartWidget offers only these.\"},{\"name\":\"defaultTimeframeFavorites\",\"type\":\"TimeFrame[]\",\"doc\":\"ChartWidget: timeframes on the quick-access bar until the user changes them.\"}]}")
4537
+ options: /* @__PURE__ */ JSON.parse("{\"ChartWidget\":[{\"name\":\"symbol\",\"type\":\"string\",\"kind\":\"string\"},{\"name\":\"timeframe\",\"type\":\"TimeFrame\"},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"ui\",\"type\":\"WidgetUIPreset | WidgetUITheme\",\"doc\":\"The widget's look: its corners, sizes, type, lines, shadows and bars. A preset (`'print'`, the default; `'studio'`; `'terminal'`; `'capsule'`) or your theme over one. Colours stay with `theme`.\"},{\"name\":\"locale\",\"type\":\"string\",\"doc\":\"UI chrome language (toolbar, watchlist, indicator picker, status bar, settings panel, hotkey sheet). A built-in table ('en', the default, or 'vi'), layered under `messages` for host overrides/additions. Does not translate the data-driven indicator/drawing-tool names from `widgetConfig.ts` — see README \\\"Widget i18n\\\".\",\"kind\":\"string\"},{\"name\":\"messages\",\"type\":\"Partial<Record<MessageKey, string>>\",\"doc\":\"Override or add individual UI strings, on top of `locale`'s built-in table.\"},{\"name\":\"features\",\"type\":\"WidgetFeatures\",\"doc\":\"The widget's switches, by name (`WIDGET_FEATURES`): every one is on unless set `false` here. A name without a dot turns a whole capability off wherever it shows (`alerts`, `settings`, `hotkeys`); a dotted name, one place (`toolbar.screenshot`, `menu.chart.order`, `sidebar.magnet`). Change them while running with `setFeatures`.\"},{\"name\":\"toolbar\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"drawingTools\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"settings\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"trading\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"statusBar\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rangeBar\",\"type\":\"boolean\",\"doc\":\"Range presets (1D, 5D, 1M … All) and \\\"go to date\\\" (also Alt+G) on the status bar. Default `true`; needs the status bar.\",\"kind\":\"boolean\"},{\"name\":\"indicatorLegend\",\"type\":\"boolean\",\"doc\":\"The indicators on the chart, under the OHLCV legend and at the top of their panes, with show / settings / remove. Default `true`; `false` leaves only the toolbar's indicator count.\",\"kind\":\"boolean\"},{\"name\":\"replayRevealMarks\",\"type\":\"boolean\",\"doc\":\"In a replay, show the signal markers and trade zones only as it reaches them (a trade open until its exit). Default `true`; `false` shows them all through the replay.\",\"kind\":\"boolean\"},{\"name\":\"fullscreen\",\"type\":\"boolean\",\"doc\":\"Fullscreen button in the toolbar, where the browser allows it. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"alerts\",\"type\":\"boolean\",\"doc\":\"Price-alerts UI — a bell button in the toolbar that opens a floating panel to add / list / delete price alerts, plus a toast when one triggers. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"alertNotifications\",\"type\":\"AlertNotifyOptions\",\"doc\":\"Sound and/or desktop notification when a price alert triggers. Both off by default. `sound: true` plays a built-in beep; pass a URL for a custom one. `desktop: true` uses the Notification API (asks permission on first use).\"},{\"name\":\"objectTree\",\"type\":\"boolean\",\"doc\":\"Object-tree panel — a layers button in the toolbar that opens a manager listing active indicators and drawings, with per-item show/hide, lock, and delete. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"depthLadder\",\"type\":\"boolean\",\"doc\":\"Depth-of-market ladder: a click-to-trade order book, a page of the dock beside the chart (a sheet on a phone). Open it from the Trade menu, its rail button (the `dock.depthLadder` switch) or `widget.openPanel('depthLadder')`. Off by default (needs trading and an order-book feed via `widget.setDepth`). Clicks emit `orderPlace` intents.\",\"kind\":\"boolean\"},{\"name\":\"accountPanel\",\"type\":\"boolean\",\"doc\":\"The account panel at the bottom: open positions with their profit and loss, working orders and the fills so far, with close, reverse and cancel, and an order ticket. A toolbar button opens it. Default `true` when trading is on.\",\"kind\":\"boolean\"},{\"name\":\"layouts\",\"type\":\"boolean | WidgetLayoutsOptions\",\"doc\":\"Named layouts: a toolbar button to save the chart (symbol, interval, scale, chart type, indicators, drawings, alerts) under a name, open, rename and delete layouts, and auto-save the one open; Ctrl/Cmd+S saves. Kept in this browser's `localStorage` unless `storage` says otherwise. Default `true`.\"},{\"name\":\"indicatorTemplates\",\"type\":\"boolean\",\"doc\":\"Indicator templates: the Templates tab of the Indicators dialog saves the chart's indicators (inputs, style, levels, panes) under a name and applies them in one go. Kept in this browser's `localStorage`. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"intervalTyping\",\"type\":\"boolean\",\"doc\":\"Type a number on the chart (after using it) to change the interval: `5`, `15m`, `1h`, `1D`, then Enter. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"chartMenuItems\",\"type\":\"(context: ChartMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of the chart's right-click menus (and of the \\\"+\\\" by the price axis), after the widget's. Called each time a menu opens.\",\"kind\":\"function\"},{\"name\":\"drawingMenuItems\",\"type\":\"(context: DrawingMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of a drawing's right-click menu. Called each time it opens.\",\"kind\":\"function\"},{\"name\":\"indicatorMenuItems\",\"type\":\"(context: IndicatorMenuItemsContext) => readonly WidgetMenuItem[]\",\"doc\":\"Your own entries at the end of an indicator's \\\"more\\\" menu (on its row on the chart).\",\"kind\":\"function\"},{\"name\":\"symbols\",\"type\":\"string[]\"},{\"name\":\"timeframes\",\"type\":\"TimeFrame[]\"},{\"name\":\"customTimeframes\",\"type\":\"boolean\",\"doc\":\"Let users type their own intervals (7m, 90m, 2h…) in the timeframe menu. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"chartTypes\",\"type\":\"ChartType[]\",\"items\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"adapter\",\"type\":\"DataAdapter\"},{\"name\":\"searchSymbols\",\"type\":\"(query: string, signal: AbortSignal) => Promise<SymbolInfo[]>\",\"doc\":\"Search symbols as the user types in the symbol search (names, exchanges). Defaults to the adapter's `searchSymbols`; without either, the search filters `symbols`.\",\"kind\":\"function\"},{\"name\":\"historyLimit\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"historyPageSize\",\"type\":\"number\",\"doc\":\"Bars per request when scrolling back for older bars (adapters with `fetchHistoryBefore`). Default 500.\",\"kind\":\"number\"},{\"name\":\"chartOptions\",\"type\":\"Partial<ChartOptions>\"},{\"name\":\"watchlist\",\"type\":\"boolean | WatchlistOptions\",\"doc\":\"A watchlist sidebar on the right: lists of symbols with last price, % change and a mini sparkline; lists can be added, renamed, deleted and reordered. `true` starts with one list of `symbols`. Default `false`.\"},{\"name\":\"symbolInfo\",\"type\":\"boolean\",\"doc\":\"The symbol info panel (names, price and move, market status, the day's numbers, hours, news) and its toolbar button. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"navigation\",\"type\":\"boolean\",\"doc\":\"Buttons over the chart, shown while the pointer is on it: zoom out and in, scroll earlier and later, reset the view. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"dir\",\"type\":\"'ltr' | 'rtl' | 'auto'\",\"doc\":\"Writing direction of the widget's chrome: `'rtl'` mirrors the toolbar, drawing tools, menus and dialogs (the chart keeps time running left to right). Default `'auto'`: right to left for Arabic, Hebrew, Persian, Urdu.\",\"values\":[\"ltr\",\"rtl\",\"auto\"]},{\"name\":\"news\",\"type\":\"(symbol: string, limit: number) => Promise<NewsItem[]>\",\"doc\":\"Headlines for the symbol info panel, newest first; default the adapter's `fetchNews` when it has one. Links that aren't web pages are dropped.\",\"kind\":\"function\"},{\"name\":\"dragDropImport\",\"type\":\"boolean\",\"doc\":\"Drag-and-drop CSV / JSON file import onto the chart. Default `true`. Set to `false` to disable (e.g. if the chart sits inside a larger surface that already handles drops).\",\"kind\":\"boolean\"},{\"name\":\"resampleTimeframes\",\"type\":\"boolean\",\"doc\":\"Client-side timeframe resampling. When enabled (default `true`) and no live adapter is attached, switching to a coarser timeframe aggregates the loaded base series instead of refetching — one dataset drives every resolution. Disable to keep the timeframe buttons purely as a `onTimeframeChange` signal for the host app to refetch.\",\"kind\":\"boolean\"},{\"name\":\"weekStartsOn\",\"type\":\"0 | 1\",\"doc\":\"Anchor day for weekly resample buckets. `0` = Sunday, `1` = Monday (default).\",\"values\":[0,1]},{\"name\":\"shareUrl\",\"type\":\"boolean\",\"doc\":\"Deep-linking. When `true`, the widget restores a `#tcw=<encoded>` view from the URL hash on load, and the \\\"Share View\\\" command writes one back. Use `exportState()` / `importState()` for manual control.\",\"kind\":\"boolean\"},{\"name\":\"drawingFavorites\",\"type\":\"DrawingToolType[]\",\"doc\":\"Drawing tools to pre-pin to the favorites strip at the top of the drawing sidebar on first run. Users pin/unpin any tool by right-clicking it; the set persists to localStorage. The strip is always available (hidden while empty) — this option only seeds the initial pins.\",\"items\":[\"trendLine\",\"horizontalLine\",\"horizontalRay\",\"verticalLine\",\"ray\",\"extendedLine\",\"crossLine\",\"trendAngle\",\"infoLine\",\"parallelChannel\",\"regressionChannel\",\"fibRetracement\",\"fibExtension\",\"fibTimeZones\",\"fibChannel\",\"fibSpeedResistanceFan\",\"rectangle\",\"ellipse\",\"triangle\",\"circle\",\"pitchfork\",\"schiffPitchfork\",\"modifiedSchiffPitchfork\",\"elliottWave\",\"xabcdPattern\",\"abcdPattern\",\"headAndShoulders\",\"priceRange\",\"dateRange\",\"dateAndPriceRange\",\"measure\",\"text\",\"arrow\",\"priceLabel\",\"gannFan\",\"gannBox\",\"cyclicLines\",\"anchoredVWAP\",\"volumeProfileRange\",\"riskReward\",\"note\",\"callout\",\"flag\",\"arrowMark\",\"icon\",\"brush\",\"highlighter\",\"path\",\"polyline\",\"curve\",\"arc\",\"fibCircles\",\"fibSpiral\",\"fibArcs\",\"fibWedge\",\"pitchfan\",\"gannSquare\",\"elliottImpulse\",\"elliottCorrection\",\"elliottTriangle\",\"elliottDoubleCombo\",\"elliottTripleCombo\",\"threeDrives\",\"cypherPattern\",\"timeCycles\",\"sineLine\",\"forecast\",\"projection\",\"barsPattern\"]},{\"name\":\"persistLayouts\",\"type\":\"boolean | { keyPrefix?: string; debounceMs?: number; }\"},{\"name\":\"onSymbolChange\",\"type\":\"(symbol: string) => void\",\"kind\":\"function\"},{\"name\":\"onTimeframeChange\",\"type\":\"(tf: TimeFrame) => void\",\"kind\":\"function\"},{\"name\":\"onReady\",\"type\":\"(chart: Chart) => void\",\"kind\":\"function\"}],\"Chart\":[{\"name\":\"width\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"height\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"chartType\",\"type\":\"ChartType\",\"doc\":\"Default `'candlestick'`.\",\"values\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"autoScale\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rightMargin\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"minBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"maxBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"grid\",\"type\":\"GridOptions\",\"doc\":\"The grid's lines: shorthand for the `grid.*` overrides.\"},{\"name\":\"crosshair\",\"type\":\"CrosshairOptions\",\"doc\":\"The crosshair's mode, and its lines: shorthand for the `crosshair.*` overrides.\"},{\"name\":\"overrides\",\"type\":\"ChartStyleOverridesPatch\",\"doc\":\"Style overrides to start with, on the host's layer: any part of the chart's look, by key (`'grid.vertical.visible': false`, `'series.candlestick.upColor': '#26a69a'`). See `chart.applyOverrides`.\"},{\"name\":\"priceAxis\",\"type\":\"PriceAxisOptions\"},{\"name\":\"timeAxis\",\"type\":\"TimeAxisOptions\"},{\"name\":\"watermark\",\"type\":\"WatermarkConfig\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Start with logarithmic price scale\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"SessionBreakOptions\",\"doc\":\"Session break line configuration\"},{\"name\":\"features\",\"type\":\"FeaturesConfig\",\"doc\":\"Feature toggles — control what users can access\"},{\"name\":\"numberLocale\",\"type\":\"string\",\"doc\":\"BCP 47 locale for number formatting (e.g. 'en-US', 'de-DE', 'vi-VN'). Defaults to 'en-US'.\",\"kind\":\"string\"},{\"name\":\"freePan\",\"type\":\"boolean\",\"doc\":\"Free panning (default `true`): drag past the newest bar into empty future space, or past the oldest bar, until `panLimits.minVisibleBars` bars remain. `false` restores the pre-1.3 clamp (newest bar stops at its resting position).\",\"kind\":\"boolean\"},{\"name\":\"timeZone\",\"type\":\"string | number | null\",\"doc\":\"Timezone for the time axis, crosshair, tooltip, day breaks and range presets: an IANA zone (`'America/New_York'`, daylight saving included), a fixed offset in minutes east of UTC, `'exchange'` for the symbol's zone or else its market's (`setTimezone`), or null (default) for the browser's.\"},{\"name\":\"leftPriceScale\",\"type\":\"boolean\",\"doc\":\"Show a price scale on the left too. It carries the overlays put on it (`addIndicator(…, { scale: 'left' })`), else it mirrors the price scale. It shows by itself once an overlay is on it.\",\"kind\":\"boolean\"},{\"name\":\"panLimits\",\"type\":\"{ minVisibleBars?: number; }\",\"doc\":\"Bounds for free panning.\"},{\"name\":\"maxPixelRatio\",\"type\":\"number\",\"doc\":\"The highest device pixel ratio the chart draws at. Default 2: a 3x phone screen is drawn at 2x, 56% fewer pixels and less than half the canvas memory for lines barely softer. `Infinity` draws at the screen's own.\",\"kind\":\"number\"},{\"name\":\"pauseWhenHidden\",\"type\":\"boolean\",\"doc\":\"Stop drawing while no one can see the chart: scrolled off screen, or the page hidden (another tab, the app in the background). Data, indicators and alerts keep up; the frame missed is drawn on return. Default true. `suspend()` / `resume()` pause it from the host (a WebView's app paused).\",\"kind\":\"boolean\"},{\"name\":\"pageScroll\",\"type\":\"boolean\",\"doc\":\"For a chart on a page that scrolls (an article, a phone screen): a one-finger vertical swipe and the plain mouse wheel scroll the page; a sideways swipe pans the chart, and two fingers or Ctrl + wheel (a trackpad pinch) zoom it. Presses on drawings, lines and axes stay the chart's. Default false: the chart takes every gesture over it.\",\"kind\":\"boolean\"},{\"name\":\"minBarUnit\",\"type\":\"number\",\"doc\":\"How narrow a bar slot may get to fit a long series on screen (zooming out, `fitContent`, the 'All' range), px. Default 0.25: four bars a pixel, so 26 years of daily bars don't all fit on a laptop screen. Down to 0.02 (50 bars a pixel); below a pixel bars are drawn a pixel column at a time.\",\"kind\":\"number\"},{\"name\":\"priceFormat\",\"type\":\"PriceFormatter | PriceFraction\",\"doc\":\"How prices read on the price scale and everything that prints one (axis, crosshair, last-price tag, legend, tooltip, orders, alerts, drawings): a function of yours, or fractions of a point (a bond in 32nds: `101'16`). Indicator panes keep their own numbers. Default: decimals.\"},{\"name\":\"timeFormatter\",\"type\":\"TimeFormatter\",\"doc\":\"How times read on the time axis, the crosshair and the tooltip. Default: the chart's own.\",\"kind\":\"function\"},{\"name\":\"chartTypeOptions\",\"type\":\"ChartTypeOptions\",\"doc\":\"Settings of Renko, Line Break, Kagi, Point & Figure and range bars.\"},{\"name\":\"highLowLines\",\"type\":\"boolean\",\"doc\":\"Mark the highest high and lowest low on screen with a line and a price tag.\",\"kind\":\"boolean\"},{\"name\":\"shapes\",\"type\":\"ShapeConfig\",\"doc\":\"The shapes the chart draws: price tags, axis pills and order badges square (default), rounded or pills.\"},{\"name\":\"a11y\",\"type\":\"false | { labels?: Partial<ChartA11yLabels>; }\",\"doc\":\"The chart for screen readers: a summary, what is on screen after the keys move it, comma and period to read the bars. On by default; labels in your language here; `false` leaves it out.\"},{\"name\":\"renderer\",\"type\":\"'canvas' | 'webgl' | 'auto'\",\"doc\":\"What draws the plot and panes: `'canvas'` (Canvas 2D, the default), `'webgl'` (WebGL 2 on the GPU, Canvas 2D where it can't be had) or `'auto'` (WebGL 2 where the GPU is a real one).\",\"values\":[\"canvas\",\"webgl\",\"auto\"]},{\"name\":\"extendedHours\",\"type\":\"boolean\",\"doc\":\"Show the bars outside the symbol's regular hours (`SymbolInfo.sessions`): pre- and post-market. Default true; bars a day or longer are never left out.\",\"kind\":\"boolean\"},{\"name\":\"plugins\",\"type\":\"ChartPlugin[]\",\"doc\":\"Plugins to install with the chart: indicators, drawing tools, chart types and overlays of your own.\"}],\"ChartWidgetGrid\":[{\"name\":\"layout\",\"type\":\"GridLayout\",\"doc\":\"How the charts are arranged. Default `'1x2'` (two side by side).\",\"values\":[\"1x1\",\"1x2\",\"2x1\",\"2x2\",\"1x3\",\"3x1\",\"2x3\",\"3x2\"]},{\"name\":\"layoutChoices\",\"type\":\"readonly GridLayout[]\",\"doc\":\"The arrangements the bar offers. Default all of them.\",\"items\":[\"1x1\",\"1x2\",\"2x1\",\"2x2\",\"1x3\",\"3x1\",\"2x3\",\"3x2\"]},{\"name\":\"widget\",\"type\":\"ChartWidgetOptions\",\"doc\":\"Options for every chart. Leave `adapter` out of these when there is more than one chart: an adapter keeps one stream, so each chart needs its own (see `adapter`).\"},{\"name\":\"adapter\",\"type\":\"(index: number) => DataAdapter\",\"doc\":\"Makes each chart's data adapter, `new BinanceAdapter()` say; called once per chart.\",\"kind\":\"function\"},{\"name\":\"cells\",\"type\":\"readonly ChartWidgetOptions[]\",\"doc\":\"Each chart's own options, by position (its symbol and interval, say), over `widget`.\"},{\"name\":\"sync\",\"type\":\"Partial<WidgetGridSync>\",\"doc\":\"What the charts follow from each other; see {@link DEFAULT_GRID_SYNC}.\"},{\"name\":\"layouts\",\"type\":\"boolean | WidgetLayoutsOptions\",\"doc\":\"Named layouts of the whole grid (arrangement, sync and every chart). Default `true`.\"},{\"name\":\"bar\",\"type\":\"boolean\",\"doc\":\"The bar above the charts: arrangement, sync, layouts. Default `true`.\",\"kind\":\"boolean\"},{\"name\":\"onActiveChange\",\"type\":\"(index: number, widget: ChartWidget) => void\",\"doc\":\"The chart in use changed (pressed, or the grid shrank).\",\"kind\":\"function\"},{\"name\":\"onChartAdd\",\"type\":\"(widget: ChartWidget, index: number) => void\",\"doc\":\"A chart was made: at the start, and when the grid grows. Feed it data, add indicators…\",\"kind\":\"function\"}]}"),
4538
+ nested: /* @__PURE__ */ JSON.parse("{\"ChartWidget.chartOptions\":[{\"name\":\"width\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"height\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"chartType\",\"type\":\"ChartType\",\"doc\":\"Default `'candlestick'`.\",\"values\":[\"candlestick\",\"line\",\"area\",\"bar\",\"heikinAshi\",\"hollowCandle\",\"baseline\",\"renko\",\"lineBreak\",\"kagi\",\"pointAndFigure\",\"rangeBars\",\"volumeCandles\",\"hlcArea\",\"stepLine\",\"lineWithMarkers\",\"equivolume\",\"hiLo\"]},{\"name\":\"theme\",\"type\":\"ThemeName | Theme\"},{\"name\":\"autoScale\",\"type\":\"boolean\",\"kind\":\"boolean\"},{\"name\":\"rightMargin\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"minBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"maxBarSpacing\",\"type\":\"number\",\"kind\":\"number\"},{\"name\":\"grid\",\"type\":\"GridOptions\",\"doc\":\"The grid's lines: shorthand for the `grid.*` overrides.\"},{\"name\":\"crosshair\",\"type\":\"CrosshairOptions\",\"doc\":\"The crosshair's mode, and its lines: shorthand for the `crosshair.*` overrides.\"},{\"name\":\"overrides\",\"type\":\"ChartStyleOverridesPatch\",\"doc\":\"Style overrides to start with, on the host's layer: any part of the chart's look, by key (`'grid.vertical.visible': false`, `'series.candlestick.upColor': '#26a69a'`). See `chart.applyOverrides`.\"},{\"name\":\"priceAxis\",\"type\":\"PriceAxisOptions\"},{\"name\":\"timeAxis\",\"type\":\"TimeAxisOptions\"},{\"name\":\"watermark\",\"type\":\"WatermarkConfig\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Start with logarithmic price scale\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"SessionBreakOptions\",\"doc\":\"Session break line configuration\"},{\"name\":\"features\",\"type\":\"FeaturesConfig\",\"doc\":\"Feature toggles — control what users can access\"},{\"name\":\"numberLocale\",\"type\":\"string\",\"doc\":\"BCP 47 locale for number formatting (e.g. 'en-US', 'de-DE', 'vi-VN'). Defaults to 'en-US'.\",\"kind\":\"string\"},{\"name\":\"freePan\",\"type\":\"boolean\",\"doc\":\"Free panning (default `true`): drag past the newest bar into empty future space, or past the oldest bar, until `panLimits.minVisibleBars` bars remain. `false` restores the pre-1.3 clamp (newest bar stops at its resting position).\",\"kind\":\"boolean\"},{\"name\":\"timeZone\",\"type\":\"string | number | null\",\"doc\":\"Timezone for the time axis, crosshair, tooltip, day breaks and range presets: an IANA zone (`'America/New_York'`, daylight saving included), a fixed offset in minutes east of UTC, `'exchange'` for the symbol's zone or else its market's (`setTimezone`), or null (default) for the browser's.\"},{\"name\":\"leftPriceScale\",\"type\":\"boolean\",\"doc\":\"Show a price scale on the left too. It carries the overlays put on it (`addIndicator(…, { scale: 'left' })`), else it mirrors the price scale. It shows by itself once an overlay is on it.\",\"kind\":\"boolean\"},{\"name\":\"panLimits\",\"type\":\"{ minVisibleBars?: number; }\",\"doc\":\"Bounds for free panning.\"},{\"name\":\"maxPixelRatio\",\"type\":\"number\",\"doc\":\"The highest device pixel ratio the chart draws at. Default 2: a 3x phone screen is drawn at 2x, 56% fewer pixels and less than half the canvas memory for lines barely softer. `Infinity` draws at the screen's own.\",\"kind\":\"number\"},{\"name\":\"pauseWhenHidden\",\"type\":\"boolean\",\"doc\":\"Stop drawing while no one can see the chart: scrolled off screen, or the page hidden (another tab, the app in the background). Data, indicators and alerts keep up; the frame missed is drawn on return. Default true. `suspend()` / `resume()` pause it from the host (a WebView's app paused).\",\"kind\":\"boolean\"},{\"name\":\"pageScroll\",\"type\":\"boolean\",\"doc\":\"For a chart on a page that scrolls (an article, a phone screen): a one-finger vertical swipe and the plain mouse wheel scroll the page; a sideways swipe pans the chart, and two fingers or Ctrl + wheel (a trackpad pinch) zoom it. Presses on drawings, lines and axes stay the chart's. Default false: the chart takes every gesture over it.\",\"kind\":\"boolean\"},{\"name\":\"minBarUnit\",\"type\":\"number\",\"doc\":\"How narrow a bar slot may get to fit a long series on screen (zooming out, `fitContent`, the 'All' range), px. Default 0.25: four bars a pixel, so 26 years of daily bars don't all fit on a laptop screen. Down to 0.02 (50 bars a pixel); below a pixel bars are drawn a pixel column at a time.\",\"kind\":\"number\"},{\"name\":\"priceFormat\",\"type\":\"PriceFormatter | PriceFraction\",\"doc\":\"How prices read on the price scale and everything that prints one (axis, crosshair, last-price tag, legend, tooltip, orders, alerts, drawings): a function of yours, or fractions of a point (a bond in 32nds: `101'16`). Indicator panes keep their own numbers. Default: decimals.\"},{\"name\":\"timeFormatter\",\"type\":\"TimeFormatter\",\"doc\":\"How times read on the time axis, the crosshair and the tooltip. Default: the chart's own.\",\"kind\":\"function\"},{\"name\":\"chartTypeOptions\",\"type\":\"ChartTypeOptions\",\"doc\":\"Settings of Renko, Line Break, Kagi, Point & Figure and range bars.\"},{\"name\":\"highLowLines\",\"type\":\"boolean\",\"doc\":\"Mark the highest high and lowest low on screen with a line and a price tag.\",\"kind\":\"boolean\"},{\"name\":\"shapes\",\"type\":\"ShapeConfig\",\"doc\":\"The shapes the chart draws: price tags, axis pills and order badges square (default), rounded or pills.\"},{\"name\":\"a11y\",\"type\":\"false | { labels?: Partial<ChartA11yLabels>; }\",\"doc\":\"The chart for screen readers: a summary, what is on screen after the keys move it, comma and period to read the bars. On by default; labels in your language here; `false` leaves it out.\"},{\"name\":\"renderer\",\"type\":\"'canvas' | 'webgl' | 'auto'\",\"doc\":\"What draws the plot and panes: `'canvas'` (Canvas 2D, the default), `'webgl'` (WebGL 2 on the GPU, Canvas 2D where it can't be had) or `'auto'` (WebGL 2 where the GPU is a real one).\",\"values\":[\"canvas\",\"webgl\",\"auto\"]},{\"name\":\"extendedHours\",\"type\":\"boolean\",\"doc\":\"Show the bars outside the symbol's regular hours (`SymbolInfo.sessions`): pre- and post-market. Default true; bars a day or longer are never left out.\",\"kind\":\"boolean\"}],\"Chart.features\":[{\"name\":\"drawings\",\"type\":\"boolean\",\"doc\":\"Enable drawing tools entirely. When false, no drawing tool can be activated.\",\"kind\":\"boolean\"},{\"name\":\"drawingTools\",\"type\":\"DrawingToolType[]\",\"doc\":\"Whitelist of allowed drawing tool types. When set, only these tools are available.\",\"items\":[\"trendLine\",\"horizontalLine\",\"horizontalRay\",\"verticalLine\",\"ray\",\"extendedLine\",\"crossLine\",\"trendAngle\",\"infoLine\",\"parallelChannel\",\"regressionChannel\",\"fibRetracement\",\"fibExtension\",\"fibTimeZones\",\"fibChannel\",\"fibSpeedResistanceFan\",\"rectangle\",\"ellipse\",\"triangle\",\"circle\",\"pitchfork\",\"schiffPitchfork\",\"modifiedSchiffPitchfork\",\"elliottWave\",\"xabcdPattern\",\"abcdPattern\",\"headAndShoulders\",\"priceRange\",\"dateRange\",\"dateAndPriceRange\",\"measure\",\"text\",\"arrow\",\"priceLabel\",\"gannFan\",\"gannBox\",\"cyclicLines\",\"anchoredVWAP\",\"volumeProfileRange\",\"riskReward\",\"note\",\"callout\",\"flag\",\"arrowMark\",\"icon\",\"brush\",\"highlighter\",\"path\",\"polyline\",\"curve\",\"arc\",\"fibCircles\",\"fibSpiral\",\"fibArcs\",\"fibWedge\",\"pitchfan\",\"gannSquare\",\"elliottImpulse\",\"elliottCorrection\",\"elliottTriangle\",\"elliottDoubleCombo\",\"elliottTripleCombo\",\"threeDrives\",\"cypherPattern\",\"timeCycles\",\"sineLine\",\"forecast\",\"projection\",\"barsPattern\"]},{\"name\":\"drawingMagnet\",\"type\":\"boolean\",\"doc\":\"Allow magnet/snap for drawing anchors. When false, `setDrawingMagnet(true)` is ignored.\",\"kind\":\"boolean\"},{\"name\":\"drawingUndoRedo\",\"type\":\"boolean\",\"doc\":\"Enable undo/redo for drawings (Ctrl+Z / Ctrl+Y)\",\"kind\":\"boolean\"},{\"name\":\"trading\",\"type\":\"boolean\",\"doc\":\"Enable trading features (orders, positions, context menu)\",\"kind\":\"boolean\"},{\"name\":\"tradingContextMenu\",\"type\":\"boolean\",\"doc\":\"Right-click menu for placing orders. Default `false` — opt in explicitly.\",\"kind\":\"boolean\"},{\"name\":\"priceAxisAddButton\",\"type\":\"boolean\",\"doc\":\"A \\\"+\\\" by the price axis, level with the crosshair; a click on it emits `priceAxisAdd` with the price. Default `false` (ChartWidget turns it on).\",\"kind\":\"boolean\"},{\"name\":\"indicators\",\"type\":\"boolean\",\"doc\":\"Enable indicator overlays and panels\",\"kind\":\"boolean\"},{\"name\":\"indicatorIds\",\"type\":\"string[]\",\"doc\":\"Whitelist of allowed indicator IDs. When set, only these are available.\"},{\"name\":\"panning\",\"type\":\"boolean\",\"doc\":\"Enable mouse/touch pan\",\"kind\":\"boolean\"},{\"name\":\"zooming\",\"type\":\"boolean\",\"doc\":\"Enable mouse wheel / pinch zoom\",\"kind\":\"boolean\"},{\"name\":\"crosshair\",\"type\":\"boolean\",\"doc\":\"Enable crosshair\",\"kind\":\"boolean\"},{\"name\":\"crosshairTooltip\",\"type\":\"boolean\",\"doc\":\"Show the floating OHLCV tooltip that follows the cursor on hover. Pro trading charts usually rely on the top-left legend (`legend`) instead of a cursor-following popup — set this to `false` to match that and keep only the legend updating on hover.\",\"kind\":\"boolean\"},{\"name\":\"keyboard\",\"type\":\"boolean\",\"doc\":\"Enable keyboard shortcuts (arrows, +/-, Home/End, Space)\",\"kind\":\"boolean\"},{\"name\":\"priceAxis\",\"type\":\"boolean\",\"doc\":\"Show price axis\",\"kind\":\"boolean\"},{\"name\":\"timeAxis\",\"type\":\"boolean\",\"doc\":\"Show time axis\",\"kind\":\"boolean\"},{\"name\":\"grid\",\"type\":\"boolean\",\"doc\":\"Show grid lines\",\"kind\":\"boolean\"},{\"name\":\"legend\",\"type\":\"boolean\",\"doc\":\"Show OHLCV legend overlay\",\"kind\":\"boolean\"},{\"name\":\"indicatorValueLabels\",\"type\":\"boolean\",\"doc\":\"Tag each indicator line's latest value on its value axis. Default false: the legend shows the values.\",\"kind\":\"boolean\"},{\"name\":\"volume\",\"type\":\"boolean\",\"doc\":\"Show volume bars below candles\",\"kind\":\"boolean\"},{\"name\":\"watermark\",\"type\":\"boolean\",\"doc\":\"Show watermark text\",\"kind\":\"boolean\"},{\"name\":\"saveLoad\",\"type\":\"boolean\",\"doc\":\"Enable chart state save/load\",\"kind\":\"boolean\"},{\"name\":\"screenshot\",\"type\":\"boolean\",\"doc\":\"Enable screenshot capture\",\"kind\":\"boolean\"},{\"name\":\"alerts\",\"type\":\"boolean\",\"doc\":\"Enable price alerts\",\"kind\":\"boolean\"},{\"name\":\"replay\",\"type\":\"boolean\",\"doc\":\"Enable bar replay\",\"kind\":\"boolean\"},{\"name\":\"sessionBreaks\",\"type\":\"boolean\",\"doc\":\"Show session break lines (day separators)\",\"kind\":\"boolean\"},{\"name\":\"barCountdown\",\"type\":\"boolean\",\"doc\":\"Show bar countdown timer (time until current candle closes). When false it stays hidden.\",\"kind\":\"boolean\"},{\"name\":\"compareSymbols\",\"type\":\"boolean\",\"doc\":\"Enable compare/overlay symbols. When false, `addCompareSymbol` does nothing.\",\"kind\":\"boolean\"},{\"name\":\"dataExport\",\"type\":\"boolean\",\"doc\":\"Enable data export (CSV/JSON). When false, `exportVisibleData` / `exportAllData` do nothing.\",\"kind\":\"boolean\"},{\"name\":\"logScale\",\"type\":\"boolean\",\"doc\":\"Allow the logarithmic price scale. When false, switching to it is ignored.\",\"kind\":\"boolean\"},{\"name\":\"timeframes\",\"type\":\"TimeFrame[]\",\"doc\":\"Whitelist of timeframes. When set, `setTimeframe` ignores any other, and ChartWidget offers only these.\"},{\"name\":\"defaultTimeframeFavorites\",\"type\":\"TimeFrame[]\",\"doc\":\"ChartWidget: timeframes on the quick-access bar until the user changes them.\"}]}")
4539
4539
  };
4540
4540
  //#endregion
4541
4541
  //#region src/catalog.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradecanvas/mcp",
3
- "version": "1.44.0",
3
+ "version": "1.45.0",
4
4
  "type": "module",
5
5
  "description": "An MCP server for TradeCanvas: coding agents look up its indicators, drawing tools, options, feature switches and style keys, and check an options object before they use it.",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "node": ">=20.19"
44
44
  },
45
45
  "dependencies": {
46
- "@tradecanvas/commons": "1.44.0"
46
+ "@tradecanvas/commons": "1.45.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "vitest": "^2.1.8"