@trdrs/quickcharts 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/README.md +209 -200
- package/dist/adapters/rest.d.ts +3 -3
- package/dist/adapters/rest.js +2 -2
- package/dist/adapters/rest.js.map +1 -1
- package/dist/{ar-G7MVXRE4.js → ar-KSXQ2USS.js} +20 -20
- package/dist/ar-KSXQ2USS.js.map +1 -0
- package/dist/{assets-ySndlUS3.d.ts → assets-DOuBBsOp.d.ts} +50 -50
- package/dist/{ca_ES-EUSRU4VG.js → ca_ES-JG4FM55E.js} +20 -20
- package/dist/ca_ES-JG4FM55E.js.map +1 -0
- package/dist/{chunk-AA7XKXH4.js → chunk-6S6TO2N6.js} +33 -33
- package/dist/chunk-6S6TO2N6.js.map +1 -0
- package/dist/{chunk-KFBQSPNA.js → chunk-D3S26ARP.js} +2 -2
- package/dist/chunk-D3S26ARP.js.map +1 -0
- package/dist/{chunk-AKXIFHQN.js → chunk-KLPTCWA2.js} +1 -1
- package/dist/{chunk-AKXIFHQN.js.map → chunk-KLPTCWA2.js.map} +1 -1
- package/dist/{de-2SVTG25S.js → de-VSW2LHNF.js} +20 -20
- package/dist/de-VSW2LHNF.js.map +1 -0
- package/dist/drawings.d.ts +16 -16
- package/dist/drawings.js +12 -12
- package/dist/{es-UDHZM4W7.js → es-5ZXIPVOB.js} +20 -20
- package/dist/es-5ZXIPVOB.js.map +1 -0
- package/dist/feature-manifest.json +3 -3
- package/dist/{fr-35VN4G4S.js → fr-4F6DAWGD.js} +20 -20
- package/dist/fr-4F6DAWGD.js.map +1 -0
- package/dist/{he_IL-JPZMCURP.js → he_IL-B7PBQUEV.js} +20 -20
- package/dist/he_IL-B7PBQUEV.js.map +1 -0
- package/dist/{id_ID-XSTFHHJQ.js → id_ID-CYJRMXPC.js} +20 -20
- package/dist/id_ID-CYJRMXPC.js.map +1 -0
- package/dist/index.d.ts +167 -163
- package/dist/index.js +248 -237
- package/dist/index.js.map +1 -1
- package/dist/{it-EIY6JESQ.js → it-KTX4SG5P.js} +20 -20
- package/dist/it-KTX4SG5P.js.map +1 -0
- package/dist/{ja-42N4XRCW.js → ja-V7OURU5D.js} +20 -20
- package/dist/ja-V7OURU5D.js.map +1 -0
- package/dist/{ko-3VRPTIP3.js → ko-2RNEBYVE.js} +20 -20
- package/dist/ko-2RNEBYVE.js.map +1 -0
- package/dist/{ms_MY-SKN7O6M5.js → ms_MY-EY235E7Q.js} +20 -20
- package/dist/ms_MY-EY235E7Q.js.map +1 -0
- package/dist/{pl-TYARHCLT.js → pl-ADNVRP55.js} +20 -20
- package/dist/pl-ADNVRP55.js.map +1 -0
- package/dist/{pt-72IIFLL4.js → pt-OL2DR3DO.js} +20 -20
- package/dist/pt-OL2DR3DO.js.map +1 -0
- package/dist/quickcharts.css +97 -96
- package/dist/{resources-Ch8eA1Mw.d.ts → resources-Le6flcEn.d.ts} +3 -3
- package/dist/rest-openapi.json +11 -11
- package/dist/{ru-TPH4F7IB.js → ru-V6YFEPAF.js} +20 -20
- package/dist/ru-V6YFEPAF.js.map +1 -0
- package/dist/{sv-DC5RS67Z.js → sv-TORXQVE7.js} +20 -20
- package/dist/sv-TORXQVE7.js.map +1 -0
- package/dist/{th-I6H6AOZ3.js → th-K6SJSYSY.js} +20 -20
- package/dist/th-K6SJSYSY.js.map +1 -0
- package/dist/theme-manifest.json +10 -10
- package/dist/{tr-7FSUVCNW.js → tr-4AEM66KW.js} +20 -20
- package/dist/tr-4AEM66KW.js.map +1 -0
- package/dist/{vi-DLRPHLLH.js → vi-YU5XCEUU.js} +20 -20
- package/dist/vi-YU5XCEUU.js.map +1 -0
- package/dist/{zh-ZXIQBBEP.js → zh-QXKRYHU5.js} +20 -20
- package/dist/zh-QXKRYHU5.js.map +1 -0
- package/dist/{zh_TW-TYNUJU7U.js → zh_TW-AYPDKG4Q.js} +20 -20
- package/dist/zh_TW-AYPDKG4Q.js.map +1 -0
- package/package.json +1 -1
- package/dist/ar-G7MVXRE4.js.map +0 -1
- package/dist/ca_ES-EUSRU4VG.js.map +0 -1
- package/dist/chunk-AA7XKXH4.js.map +0 -1
- package/dist/chunk-KFBQSPNA.js.map +0 -1
- package/dist/de-2SVTG25S.js.map +0 -1
- package/dist/es-UDHZM4W7.js.map +0 -1
- package/dist/fr-35VN4G4S.js.map +0 -1
- package/dist/he_IL-JPZMCURP.js.map +0 -1
- package/dist/id_ID-XSTFHHJQ.js.map +0 -1
- package/dist/it-EIY6JESQ.js.map +0 -1
- package/dist/ja-42N4XRCW.js.map +0 -1
- package/dist/ko-3VRPTIP3.js.map +0 -1
- package/dist/ms_MY-SKN7O6M5.js.map +0 -1
- package/dist/pl-TYARHCLT.js.map +0 -1
- package/dist/pt-72IIFLL4.js.map +0 -1
- package/dist/ru-TPH4F7IB.js.map +0 -1
- package/dist/sv-DC5RS67Z.js.map +0 -1
- package/dist/th-I6H6AOZ3.js.map +0 -1
- package/dist/tr-7FSUVCNW.js.map +0 -1
- package/dist/vi-DLRPHLLH.js.map +0 -1
- package/dist/zh-ZXIQBBEP.js.map +0 -1
- package/dist/zh_TW-TYNUJU7U.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { al as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, Y as VisibilityPreset, U as ToolPreset, V as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-
|
|
2
|
-
import { R as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, f as DrawingResourceContext, i as ResourceStore, u as DrawingsMeta, h as DrawingsBody, j as TemplateMeta, T as TemplateBody, v as LayoutMeta, w as LayoutBody, c as DrawingContextKind } from './resources-
|
|
3
|
-
export { a as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, b as DRAWING_DOCUMENT_VERSION, d as DrawingEntry, e as DrawingGroup, g as DrawingTombstone, L as LayoutSharedDrawingContext, M as MemoryResourcesOptions, x as ResourceAbortError, S as SymbolGlobalDrawingContext, y as TemplateKind, W as WriteOutcome, k as drawingContextKey, l as emptyDrawingDocument, m as liveDrawingEntries, n as liveDrawingGroups, z as memorySaveLoadAdapter, o as mergeDrawingDocuments, p as parseDrawingDocument, r as reviseDrawingDocument, s as sameDrawingContext } from './resources-
|
|
1
|
+
import { al as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, Y as VisibilityPreset, U as ToolPreset, V as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-DOuBBsOp.js';
|
|
2
|
+
import { R as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, f as DrawingResourceContext, i as ResourceStore, u as DrawingsMeta, h as DrawingsBody, j as TemplateMeta, T as TemplateBody, v as LayoutMeta, w as LayoutBody, c as DrawingContextKind } from './resources-Le6flcEn.js';
|
|
3
|
+
export { a as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, b as DRAWING_DOCUMENT_VERSION, d as DrawingEntry, e as DrawingGroup, g as DrawingTombstone, L as LayoutSharedDrawingContext, M as MemoryResourcesOptions, x as ResourceAbortError, S as SymbolGlobalDrawingContext, y as TemplateKind, W as WriteOutcome, k as drawingContextKey, l as emptyDrawingDocument, m as liveDrawingEntries, n as liveDrawingGroups, z as memorySaveLoadAdapter, o as mergeDrawingDocuments, p as parseDrawingDocument, r as reviseDrawingDocument, s as sameDrawingContext } from './resources-Le6flcEn.js';
|
|
4
4
|
import { LineData, UTCTimestamp, HistogramData, WhitespaceData, IChartApi, ISeriesApi, CreatePriceLineOptions, PriceLineOptions, ISeriesPrimitive, Time, PriceScaleMode, SeriesType, SeriesAttachedParameter, TickMarkType } from 'lightweight-charts';
|
|
5
5
|
|
|
6
6
|
/** How one symbol's prices are WRITTEN, in five facts. Together they express
|
|
@@ -147,15 +147,15 @@ interface FeedBar {
|
|
|
147
147
|
c: number;
|
|
148
148
|
v: number;
|
|
149
149
|
}
|
|
150
|
-
/** A symbol-search result row. `
|
|
151
|
-
* a row names
|
|
150
|
+
/** A symbol-search result row. `exchange` names the venue the market lists on. `dataSource` names
|
|
151
|
+
* where the market's data comes from, and a row names one only when that source publishes the
|
|
152
|
+
* symbol's data. The row's source cell shows the venue, or the data source for a row with none. */
|
|
152
153
|
interface SymbolRow {
|
|
153
154
|
symbol: string;
|
|
154
155
|
name: string;
|
|
155
156
|
exchange: string;
|
|
156
157
|
type: string;
|
|
157
|
-
|
|
158
|
-
via?: string | null;
|
|
158
|
+
dataSource?: string | null;
|
|
159
159
|
/** What the market is priced in, when the feed knows it here. A PAIR market writes itself as
|
|
160
160
|
* `BASE / QUOTE` wherever it is named, and a ticker alone cannot say what the quote is; a row
|
|
161
161
|
* without it keeps the name the feed sent instead. `resolve()` states the same fact for the
|
|
@@ -217,11 +217,11 @@ interface SubscribeHandlers {
|
|
|
217
217
|
* (the chart shows "market data unavailable" and closes the live subscription), unlike a transient
|
|
218
218
|
* fetch failure which is retried. */
|
|
219
219
|
declare class FeedUnavailableError extends Error {
|
|
220
|
-
/** The server's typed refusal (e.g.
|
|
220
|
+
/** The server's typed refusal (e.g. not_entitled / feed_down),
|
|
221
221
|
* when it sent one — lets the host name the actual cause instead of a generic "unavailable". */
|
|
222
222
|
readonly code: string | null;
|
|
223
223
|
constructor(message?: string,
|
|
224
|
-
/** The server's typed refusal (e.g.
|
|
224
|
+
/** The server's typed refusal (e.g. not_entitled / feed_down),
|
|
225
225
|
* when it sent one — lets the host name the actual cause instead of a generic "unavailable". */
|
|
226
226
|
code?: string | null);
|
|
227
227
|
}
|
|
@@ -247,8 +247,8 @@ interface DatafeedSearchOptions {
|
|
|
247
247
|
offset?: number;
|
|
248
248
|
}
|
|
249
249
|
/** A feed's coarse, feed-LEVEL capability declaration. Everything optional and the method itself
|
|
250
|
-
* optional: an ABSENT declaration means unconstrained
|
|
251
|
-
* declare what is true — a finite `resolutions` list from a feed that serves any
|
|
250
|
+
* optional: an ABSENT declaration means unconstrained, and a feed must only
|
|
251
|
+
* declare what is true — a finite `resolutions` list from a feed that serves any timeframe would
|
|
252
252
|
* be a lie the chart then enforces. Symbol-level truth (price format, resolutions, session) stays
|
|
253
253
|
* on {@link SymbolInfo}. */
|
|
254
254
|
interface DatafeedConfig {
|
|
@@ -294,7 +294,7 @@ interface ChartDatafeed {
|
|
|
294
294
|
earliestBar?(symbol: string): Promise<number | null>;
|
|
295
295
|
/** OPTIONAL neutral bar marks over a window (epoch seconds, inclusive of both ends). A mark is a
|
|
296
296
|
* note about a moment: its color is a theme role, its words are the host's, and the chart
|
|
297
|
-
*
|
|
297
|
+
* draws it as given. Omit it entirely when the feed serves none. */
|
|
298
298
|
marks?(symbol: string, from: number, to: number, resolution: string): Promise<readonly BarMark[]>;
|
|
299
299
|
/** OPTIONAL neutral time-scale marks over the same window. */
|
|
300
300
|
timescaleMarks?(symbol: string, from: number, to: number, resolution: string): Promise<readonly TimescaleMark[]>;
|
|
@@ -380,8 +380,7 @@ interface LocaleDefinition<Code extends string = string> {
|
|
|
380
380
|
type ChartLocaleCode = 'en' | 'de' | 'fr' | 'es' | 'it' | 'ca_ES' | 'pl' | 'sv' | 'tr' | 'ru' | 'pt' | 'id_ID' | 'ms_MY' | 'th' | 'vi' | 'ja' | 'ko' | 'zh' | 'zh_TW' | 'ar' | 'he_IL';
|
|
381
381
|
type ChartLocale = LocaleDefinition<ChartLocaleCode>;
|
|
382
382
|
/** English first, then the Latin-script languages, then the others. Endonyms let every reader find
|
|
383
|
-
* their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape
|
|
384
|
-
* `scripts/test/i18n-inventory.test.ts` pins it equal to the app runtime's inventory. */
|
|
383
|
+
* their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape. */
|
|
385
384
|
declare const BUILT_IN_LOCALES: readonly ChartLocale[];
|
|
386
385
|
|
|
387
386
|
type PluralCategory = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
|
|
@@ -599,7 +598,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
599
598
|
readonly 'command.drawingBringForward': "Bring drawing forward";
|
|
600
599
|
readonly 'command.drawingSendBackward': "Send drawing backward";
|
|
601
600
|
readonly 'command.drawingHideSelected': "Hide drawing";
|
|
602
|
-
readonly 'command.drawingVisibility': "Drawing visibility on
|
|
601
|
+
readonly 'command.drawingVisibility': "Drawing visibility on timeframes";
|
|
603
602
|
readonly 'command.drawingSettings': "Drawing settings";
|
|
604
603
|
readonly 'command.drawingCommitEdit': "Apply drawing settings";
|
|
605
604
|
readonly 'command.drawingPlaceImage': "Place image";
|
|
@@ -623,7 +622,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
623
622
|
readonly 'command.replayStepBack': "Step back";
|
|
624
623
|
readonly 'command.replayGoLive': "Replay to the live edge";
|
|
625
624
|
readonly 'command.replaySpeed': "Replay speed";
|
|
626
|
-
readonly 'command.
|
|
625
|
+
readonly 'command.replayTimeframe': "Replay update timeframe";
|
|
627
626
|
readonly 'command.timeframeSet': "Timeframe";
|
|
628
627
|
readonly 'command.subsessionRegular': "Regular hours";
|
|
629
628
|
readonly 'command.subsessionExtended': "Extended hours";
|
|
@@ -752,7 +751,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
752
751
|
readonly 'drawing.more': "More";
|
|
753
752
|
readonly 'drawing.moreActions': "More drawing actions";
|
|
754
753
|
readonly 'drawing.visualOrder': "Visual order";
|
|
755
|
-
readonly 'drawing.
|
|
754
|
+
readonly 'drawing.visibilityOnTimeframes': "Visibility on timeframes";
|
|
756
755
|
readonly 'drawing.clone': "Clone";
|
|
757
756
|
readonly 'drawing.copy': "Copy";
|
|
758
757
|
readonly 'drawing.modifierControl': "Ctrl";
|
|
@@ -774,10 +773,10 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
774
773
|
readonly 'drawing.sendToBack': "Send to back";
|
|
775
774
|
readonly 'drawing.bringForward': "Bring forward";
|
|
776
775
|
readonly 'drawing.sendBackward': "Send backward";
|
|
777
|
-
readonly 'drawing.visCurrentAndAbove': "Current
|
|
778
|
-
readonly 'drawing.visCurrentAndBelow': "Current
|
|
779
|
-
readonly 'drawing.visCurrentOnly': "Current
|
|
780
|
-
readonly 'drawing.visAll': "All
|
|
776
|
+
readonly 'drawing.visCurrentAndAbove': "Current timeframe and above";
|
|
777
|
+
readonly 'drawing.visCurrentAndBelow': "Current timeframe and below";
|
|
778
|
+
readonly 'drawing.visCurrentOnly': "Current timeframe only";
|
|
779
|
+
readonly 'drawing.visAll': "All timeframes";
|
|
781
780
|
readonly 'drawing.saveTemplate': "Save drawing template";
|
|
782
781
|
readonly 'drawing.templateName': "Template name";
|
|
783
782
|
readonly 'drawing.save': "Save";
|
|
@@ -936,7 +935,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
936
935
|
readonly 'drawing.unitDays': "Days";
|
|
937
936
|
readonly 'drawing.unitWeeks': "Weeks";
|
|
938
937
|
readonly 'drawing.unitMonths': "Months";
|
|
939
|
-
readonly 'drawing.
|
|
938
|
+
readonly 'drawing.timeframePinnedNote': "A drawing stays on at least one timeframe, so it can always be reached again.";
|
|
940
939
|
readonly 'drawing.colorSwatch': "Color {hex}";
|
|
941
940
|
readonly 'drawing.customColor': "Custom color";
|
|
942
941
|
readonly 'drawing.saturationValue': "Saturation and brightness";
|
|
@@ -1045,7 +1044,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1045
1044
|
readonly 'range.oneYear': "1 Year";
|
|
1046
1045
|
readonly 'range.fiveYears': "5 Years";
|
|
1047
1046
|
readonly 'range.all': "All data";
|
|
1048
|
-
readonly 'range.tip': "{range} · {
|
|
1047
|
+
readonly 'range.tip': "{range} · {timeframe} bars";
|
|
1049
1048
|
readonly 'range.zoomIn': "Zoom in";
|
|
1050
1049
|
readonly 'range.zoomOut': "Zoom out";
|
|
1051
1050
|
readonly 'range.scrollLeft': "Scroll left";
|
|
@@ -1213,17 +1212,17 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1213
1212
|
readonly 'layouts.arrangement': "Chart arrangement";
|
|
1214
1213
|
readonly 'layouts.syncInLayout': "Sync in layout";
|
|
1215
1214
|
readonly 'layouts.syncSymbol': "Symbol";
|
|
1216
|
-
readonly 'layouts.
|
|
1215
|
+
readonly 'layouts.syncTimeframe': "Timeframe";
|
|
1217
1216
|
readonly 'layouts.syncCrosshair': "Crosshair";
|
|
1218
1217
|
readonly 'layouts.syncTime': "Time";
|
|
1219
1218
|
readonly 'layouts.syncDateRange': "Date range";
|
|
1220
1219
|
readonly 'layouts.syncSymbolTip': "Symbol changes on all charts within the layout";
|
|
1221
|
-
readonly 'layouts.
|
|
1220
|
+
readonly 'layouts.syncTimeframeTip': "Timeframe changes on all charts within the layout";
|
|
1222
1221
|
readonly 'layouts.syncCrosshairTip': "Crosshair is synced across all charts within the layout";
|
|
1223
1222
|
readonly 'layouts.syncTimeTip': "When a chart is clicked, all charts within the layout display the same point of time";
|
|
1224
1223
|
readonly 'layouts.syncDateRangeTip': "Date range changes on all charts within the layout";
|
|
1225
1224
|
readonly 'layouts.syncSymbolToggle': "Sync symbol";
|
|
1226
|
-
readonly 'layouts.
|
|
1225
|
+
readonly 'layouts.syncTimeframeToggle': "Sync timeframe";
|
|
1227
1226
|
readonly 'layouts.syncCrosshairToggle': "Sync crosshair";
|
|
1228
1227
|
readonly 'layouts.syncTimeToggle': "Sync time";
|
|
1229
1228
|
readonly 'layouts.syncDateRangeToggle': "Sync date range";
|
|
@@ -1255,7 +1254,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1255
1254
|
readonly 'layouts.loading': "Loading";
|
|
1256
1255
|
readonly 'layouts.emptyNone': "No saved layouts yet.";
|
|
1257
1256
|
readonly 'layouts.openLayoutRow': "Open layout…";
|
|
1258
|
-
readonly 'layouts.listingFacts': "{symbol}, {
|
|
1257
|
+
readonly 'layouts.listingFacts': "{symbol}, {timeframe}";
|
|
1259
1258
|
readonly 'layouts.listingDated': "{facts} ({date})";
|
|
1260
1259
|
readonly 'layouts.dialogTitle': "Layouts";
|
|
1261
1260
|
readonly 'layouts.search': "Search";
|
|
@@ -1320,11 +1319,11 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1320
1319
|
readonly one: "1 update per {count} second";
|
|
1321
1320
|
readonly other: "1 update per {count} seconds";
|
|
1322
1321
|
};
|
|
1323
|
-
readonly 'replay.
|
|
1324
|
-
readonly 'replay.
|
|
1325
|
-
readonly 'replay.
|
|
1322
|
+
readonly 'replay.timeframe': "Update timeframe";
|
|
1323
|
+
readonly 'replay.timeframeHelp': "How much time each replay update advances. Finer than the chart timeframe, each bar forms from real finer bars.";
|
|
1324
|
+
readonly 'replay.timeframeNone': "No finer timeframe for this chart timeframe";
|
|
1326
1325
|
readonly 'replay.auto': "Auto";
|
|
1327
|
-
readonly 'replay.
|
|
1326
|
+
readonly 'replay.autoSelectTimeframe': "Auto select timeframe";
|
|
1328
1327
|
readonly 'menu.resetView': "Reset chart view";
|
|
1329
1328
|
readonly 'menu.copyPrice': "Copy price {price}";
|
|
1330
1329
|
readonly 'menu.paste': "Paste";
|
|
@@ -1433,8 +1432,8 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1433
1432
|
readonly 'legend.close': "C";
|
|
1434
1433
|
readonly 'legend.change': "{change} ({percent}%)";
|
|
1435
1434
|
readonly 'legend.indicatorSettings': "Indicator settings";
|
|
1436
|
-
readonly 'legend.showRows': "Show
|
|
1437
|
-
readonly 'legend.hideRows': "Hide
|
|
1435
|
+
readonly 'legend.showRows': "Show indicator rows";
|
|
1436
|
+
readonly 'legend.hideRows': "Hide indicator rows";
|
|
1438
1437
|
readonly 'legend.restorePane': "Restore pane";
|
|
1439
1438
|
readonly 'legend.collapsePane': "Collapse pane";
|
|
1440
1439
|
readonly 'legend.maximizePane': "Maximize pane";
|
|
@@ -1445,7 +1444,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1445
1444
|
readonly 'legend.scalePercent': "%";
|
|
1446
1445
|
readonly 'legend.scaleIndexed': "100";
|
|
1447
1446
|
readonly 'legend.changeSymbol': "Change symbol";
|
|
1448
|
-
readonly 'legend.removeCompare': "Remove
|
|
1447
|
+
readonly 'legend.removeCompare': "Remove comparison";
|
|
1449
1448
|
readonly 'legend.removeIndicator': "Remove indicator";
|
|
1450
1449
|
}, ChartLocaleCode>;
|
|
1451
1450
|
/** A drawing tool's display name for a registry `type`: the catalog's when it knows the type, else
|
|
@@ -1481,7 +1480,7 @@ interface PriceFormatterOptions {
|
|
|
1481
1480
|
interface PriceFormatter {
|
|
1482
1481
|
/** The price as the symbol writes it. */
|
|
1483
1482
|
format(price: number): string;
|
|
1484
|
-
/** The number a
|
|
1483
|
+
/** The number a viewer typed, or null when the text is not a price in this symbol's format. */
|
|
1485
1484
|
parse(text: string): number | null;
|
|
1486
1485
|
/** How many digits `format` writes after the decimal sign. 0 for a fractional format, which
|
|
1487
1486
|
* writes none; the widest band's width for a variable-tick format, so a column sized from it
|
|
@@ -1558,8 +1557,8 @@ declare const DEFAULT_SUBSESSION: ActiveSubsession;
|
|
|
1558
1557
|
declare function hasExtendedHours(model: SessionModel): boolean;
|
|
1559
1558
|
/** The bar filter for the active subsession: under `regular`, on a symbol with extended hours,
|
|
1560
1559
|
* keep the bars whose open falls in regular hours; otherwise nothing is filtered (null). For
|
|
1561
|
-
* intraday
|
|
1562
|
-
* intraday
|
|
1560
|
+
* intraday timeframes only: a daily bar spans whole sessions, so a caller applies the filter on
|
|
1561
|
+
* intraday timeframes and shows every daily bar. */
|
|
1563
1562
|
declare function subsessionBarFilter(model: SessionModel, active: ActiveSubsession): ((epochSecs: number) => boolean) | null;
|
|
1564
1563
|
/** The session state at an instant (epoch seconds), under the symbol's exchange clock. */
|
|
1565
1564
|
declare function sessionStateAt(model: SessionModel, epochSecs: number): SessionState;
|
|
@@ -1633,9 +1632,9 @@ type VenueMarkPainter = (request: {
|
|
|
1633
1632
|
host: HTMLElement;
|
|
1634
1633
|
size: number;
|
|
1635
1634
|
}) => (() => void) | void;
|
|
1636
|
-
/** Paints the mark of a data
|
|
1637
|
-
type
|
|
1638
|
-
|
|
1635
|
+
/** Paints the mark of a data source, where a row names a data source rather than a venue. */
|
|
1636
|
+
type DataSourceMarkPainter = (request: {
|
|
1637
|
+
dataSource: string;
|
|
1639
1638
|
host: HTMLElement;
|
|
1640
1639
|
size: number;
|
|
1641
1640
|
}) => (() => void) | void;
|
|
@@ -1643,7 +1642,7 @@ type ProviderMarkPainter = (request: {
|
|
|
1643
1642
|
interface MarkPainters {
|
|
1644
1643
|
readonly symbol: SymbolMarkPainter | null;
|
|
1645
1644
|
readonly venue: VenueMarkPainter | null;
|
|
1646
|
-
readonly
|
|
1645
|
+
readonly dataSource: DataSourceMarkPainter | null;
|
|
1647
1646
|
}
|
|
1648
1647
|
/** The host's hooks, as an entry point takes them. Each is the host's to lend or withhold, and
|
|
1649
1648
|
* every entry point that paints marks takes exactly these, so a host writes them once and hands
|
|
@@ -1651,7 +1650,7 @@ interface MarkPainters {
|
|
|
1651
1650
|
interface MarkPainterHooks {
|
|
1652
1651
|
/** The host's mark for a market, called WHEREVER the chart names one: each chart's legend, the
|
|
1653
1652
|
* compare rows under it, every row of the symbol search and compare dialogs, and the market tag
|
|
1654
|
-
*
|
|
1653
|
+
* an extension's notice wears. It receives the element to paint into and the symbol it stands for,
|
|
1655
1654
|
* and returns a disposer that takes the mark down again.
|
|
1656
1655
|
*
|
|
1657
1656
|
* One hook rather than one per surface, so a market wears the same mark everywhere it appears and
|
|
@@ -1663,9 +1662,9 @@ interface MarkPainterHooks {
|
|
|
1663
1662
|
* into and the size of the box, and returns a disposer; absent, a venue wears its initial on the
|
|
1664
1663
|
* neutral disc the package draws itself. */
|
|
1665
1664
|
venueMark?: VenueMarkPainter;
|
|
1666
|
-
/** The host's mark for the data
|
|
1667
|
-
* row's source cell the same way. Absent,
|
|
1668
|
-
|
|
1665
|
+
/** The host's mark for the data source a row names where it names no venue, painted in that
|
|
1666
|
+
* row's source cell the same way. Absent, a data source wears its initial on a neutral disc. */
|
|
1667
|
+
dataSourceMark?: DataSourceMarkPainter;
|
|
1669
1668
|
}
|
|
1670
1669
|
|
|
1671
1670
|
/** One glyph: its own grid and the inner markup drawn on it. */
|
|
@@ -1697,9 +1696,9 @@ interface ChartOverrides {
|
|
|
1697
1696
|
countdown: boolean;
|
|
1698
1697
|
};
|
|
1699
1698
|
}
|
|
1700
|
-
/** The brand palette, single-sourced:
|
|
1701
|
-
* extension's
|
|
1702
|
-
*
|
|
1699
|
+
/** The brand palette, single-sourced: a host's own surfaces on the chart read these (an
|
|
1700
|
+
* extension's lines among them), and a rebrand edits two strings. The candle bodies keep their
|
|
1701
|
+
* own pair; see the note on DEFAULT_OVERRIDES for why. */
|
|
1703
1702
|
declare const BRAND_UP = "#4c98fb";
|
|
1704
1703
|
declare const BRAND_DOWN = "#f23645";
|
|
1705
1704
|
declare const DEFAULT_OVERRIDES: ChartOverrides;
|
|
@@ -1774,17 +1773,17 @@ declare const THEME_ROLES: readonly [{
|
|
|
1774
1773
|
readonly id: "series.up";
|
|
1775
1774
|
readonly family: "series";
|
|
1776
1775
|
readonly kind: "color";
|
|
1777
|
-
readonly description: "A rising value: up volume, a rising
|
|
1776
|
+
readonly description: "A rising value: up volume, a rising indicator tint, a positive series default.";
|
|
1778
1777
|
}, {
|
|
1779
1778
|
readonly id: "series.down";
|
|
1780
1779
|
readonly family: "series";
|
|
1781
1780
|
readonly kind: "color";
|
|
1782
|
-
readonly description: "A falling value: down volume, a falling
|
|
1781
|
+
readonly description: "A falling value: down volume, a falling indicator tint, a negative series default.";
|
|
1783
1782
|
}, {
|
|
1784
1783
|
readonly id: "series.neutral";
|
|
1785
1784
|
readonly family: "series";
|
|
1786
1785
|
readonly kind: "color";
|
|
1787
|
-
readonly description: "A series or level with no direction, such as
|
|
1786
|
+
readonly description: "A series or level with no direction, such as an indicator level line.";
|
|
1788
1787
|
}, {
|
|
1789
1788
|
readonly id: "scale.grid";
|
|
1790
1789
|
readonly family: "scale";
|
|
@@ -1979,7 +1978,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
1979
1978
|
readonly id: "chrome.surface";
|
|
1980
1979
|
readonly family: "chrome";
|
|
1981
1980
|
readonly kind: "color";
|
|
1982
|
-
readonly description: "The fill of toolbars,
|
|
1981
|
+
readonly description: "The fill of toolbars, bars, and panels.";
|
|
1983
1982
|
}, {
|
|
1984
1983
|
readonly id: "chrome.surfaceRaised";
|
|
1985
1984
|
readonly family: "chrome";
|
|
@@ -2312,7 +2311,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
2312
2311
|
readonly id: "motion.durationSlower";
|
|
2313
2312
|
readonly family: "motion";
|
|
2314
2313
|
readonly kind: "duration";
|
|
2315
|
-
readonly description: "A larger mark turning, such as the drawing
|
|
2314
|
+
readonly description: "A larger mark turning, such as the drawing toolbar's chevron.";
|
|
2316
2315
|
}, {
|
|
2317
2316
|
readonly id: "motion.easingStandard";
|
|
2318
2317
|
readonly family: "motion";
|
|
@@ -2940,7 +2939,7 @@ declare function indicatorHidden(ov: IndicatorOverrides | undefined): boolean;
|
|
|
2940
2939
|
/** The manifest's default input values ({ period: 20, source: 0, … }). */
|
|
2941
2940
|
declare function manifestInputDefaults(m: IndicatorManifest): Record<string, number>;
|
|
2942
2941
|
/** The effective color of a plot spec under an instance: override → declared → the instance's
|
|
2943
|
-
* rotated color. A legend dot and a save-as-default snapshot both read THIS, so what the
|
|
2942
|
+
* rotated color. A legend dot and a save-as-default snapshot both read THIS, so what the viewer
|
|
2944
2943
|
* sees is what persists. */
|
|
2945
2944
|
declare function effectivePlotColor(m: IndicatorManifest, key: string, ov: IndicatorOverrides | undefined, instanceColor: string): string;
|
|
2946
2945
|
/** A manifest with an instance's STYLE overrides folded into its declared specs — colors, widths,
|
|
@@ -2960,8 +2959,8 @@ interface ManifestRun {
|
|
|
2960
2959
|
shadeColors?: readonly (string | null)[];
|
|
2961
2960
|
barColors?: readonly (string | null)[];
|
|
2962
2961
|
}
|
|
2963
|
-
/** The ONE walker from a computed run to the render-agnostic spec
|
|
2964
|
-
*
|
|
2962
|
+
/** The ONE walker from a computed run to the render-agnostic spec: built-ins and host
|
|
2963
|
+
* definitions all render through this, so plot semantics can never drift between them.
|
|
2965
2964
|
* `fallbackColor` is the instance's rotated color, used by any plot channel that doesn't declare
|
|
2966
2965
|
* its own. */
|
|
2967
2966
|
declare function buildManifestPlots(run: ManifestRun, times: readonly UTCTimestamp[], title: string, fallbackColor: string): IndicatorPlots;
|
|
@@ -2970,7 +2969,7 @@ declare function buildManifestPlots(run: ManifestRun, times: readonly UTCTimesta
|
|
|
2970
2969
|
* defensively. */
|
|
2971
2970
|
declare function latestPlotValue(data: readonly unknown[] | undefined): number | null;
|
|
2972
2971
|
|
|
2973
|
-
/** The symbol's price format, as
|
|
2972
|
+
/** The symbol's price format, as an indicator scale falls back to it when the manifest declares no
|
|
2974
2973
|
* precision: the formatter writes the scale labels, `minMove` is the symbol's smallest move, and
|
|
2975
2974
|
* `key` changes whenever either does so the scale re-applies. */
|
|
2976
2975
|
interface SymbolPriceFormat {
|
|
@@ -2997,8 +2996,8 @@ interface IndicatorsRenderer {
|
|
|
2997
2996
|
}
|
|
2998
2997
|
declare function attachIndicators(chart: IChartApi, options?: {
|
|
2999
2998
|
candles?: () => ISeriesApi<'Candlestick'> | null;
|
|
3000
|
-
/** The symbol's price format for
|
|
3001
|
-
* leaves those scales on the library's own default formatting. */
|
|
2999
|
+
/** The symbol's price format for indicators that declare no precision. A host that supplies
|
|
3000
|
+
* none leaves those scales on the library's own default formatting. */
|
|
3002
3001
|
symbolPriceFormat?: () => SymbolPriceFormat;
|
|
3003
3002
|
/** The undirected ink a level line takes when the manifest declares no color of its own. Read
|
|
3004
3003
|
* live, so a theme switch repaints the levels with everything else; the built-in dark palette's
|
|
@@ -3051,8 +3050,8 @@ interface ChartExtensionReplayState {
|
|
|
3051
3050
|
cursor: number;
|
|
3052
3051
|
total: number;
|
|
3053
3052
|
}
|
|
3054
|
-
/** The chart an extension is attached to, read-only. It answers what is on screen
|
|
3055
|
-
*
|
|
3053
|
+
/** The chart an extension is attached to, read-only. It answers what is on screen, and a host
|
|
3054
|
+
* steers the chart through the widget it already holds. */
|
|
3056
3055
|
interface ChartExtensionChart {
|
|
3057
3056
|
/** Same value as `pane().id` — the chart and its pane are one thing to an extension. */
|
|
3058
3057
|
id: string;
|
|
@@ -3108,7 +3107,7 @@ interface ChartExtensionIcon {
|
|
|
3108
3107
|
* the row reads exactly as a row that contributed no glyph at all. */
|
|
3109
3108
|
paths: readonly ChartExtensionIconPath[];
|
|
3110
3109
|
}
|
|
3111
|
-
/** A row an extension adds to the chart's
|
|
3110
|
+
/** A row an extension adds to the chart's context menu. It carries its own action: the chart routes
|
|
3112
3111
|
* nothing, so a contributed row cannot collide with a built-in id. */
|
|
3113
3112
|
interface ChartExtensionMenuItem {
|
|
3114
3113
|
id: string;
|
|
@@ -3123,9 +3122,9 @@ interface ChartExtensionMenuItem {
|
|
|
3123
3122
|
group?: 'level' | 'view';
|
|
3124
3123
|
run(): void;
|
|
3125
3124
|
}
|
|
3126
|
-
/** A layer an extension draws that the
|
|
3127
|
-
* chart's own layers and before "Hide all", which blanks it too, and it wears the
|
|
3128
|
-
* marks on the eye while it is the chosen subject. */
|
|
3125
|
+
/** A layer an extension draws that the drawing toolbar's eye can blank. It joins the eye's menu
|
|
3126
|
+
* after the chart's own layers and before "Hide all", which blanks it too, and it wears the
|
|
3127
|
+
* layer's own two marks on the eye while it is the chosen subject. */
|
|
3129
3128
|
interface ChartExtensionHideLayer {
|
|
3130
3129
|
/** Unique within one chart; the mode the hide command names for this layer. */
|
|
3131
3130
|
id: string;
|
|
@@ -3144,16 +3143,18 @@ interface ChartExtensionHideLayer {
|
|
|
3144
3143
|
apply(hidden: boolean): void;
|
|
3145
3144
|
}
|
|
3146
3145
|
/** The chart's side of a contributed layer: read whether it is blanked and flip it, through the
|
|
3147
|
-
* same eye the
|
|
3146
|
+
* same eye the drawing toolbar drives, so a switch on the extension's own surface and the eye
|
|
3147
|
+
* agree. */
|
|
3148
3148
|
interface ChartExtensionHideLayerHandle {
|
|
3149
3149
|
hidden(): boolean;
|
|
3150
3150
|
setHidden(hidden: boolean): void;
|
|
3151
3151
|
/** Withdraw the layer from the eye. Detach withdraws it either way. */
|
|
3152
3152
|
remove(): void;
|
|
3153
3153
|
}
|
|
3154
|
-
/**
|
|
3155
|
-
*
|
|
3156
|
-
|
|
3154
|
+
/** Builds an extension's context menu rows. The chart calls it on every raise with that moment's
|
|
3155
|
+
* context, so the rows can depend on the level that was pressed. An empty list contributes nothing
|
|
3156
|
+
* and costs nothing. */
|
|
3157
|
+
type ChartExtensionMenuBuilder = (context: ChartExtensionMenuContext) => readonly ChartExtensionMenuItem[];
|
|
3157
3158
|
/** A named action an extension offers the host. The minimal shape: an id, a label, whether it can
|
|
3158
3159
|
* run now, and how to run it. */
|
|
3159
3160
|
interface ChartExtensionCommand {
|
|
@@ -3176,7 +3177,7 @@ interface ChartExtensionContext {
|
|
|
3176
3177
|
overlay: HTMLElement;
|
|
3177
3178
|
/** The widget's layer on the document body, themed as the root is. A popover that must stand
|
|
3178
3179
|
* over every pane and over whatever the page stacks around the widget mounts HERE, at viewport
|
|
3179
|
-
* coordinates; the
|
|
3180
|
+
* coordinates; the context menu does the same. */
|
|
3180
3181
|
layer: HTMLElement;
|
|
3181
3182
|
/** The chart's effective canvas palette: the mode's resolved theme with any applied appearance
|
|
3182
3183
|
* overrides on top, projected onto the values a canvas draws with. */
|
|
@@ -3208,7 +3209,7 @@ interface ChartExtensionContext {
|
|
|
3208
3209
|
onActiveChange(callback: (active: boolean) => void): () => void;
|
|
3209
3210
|
/** The chart is going away. Fires before the handle's own `detach()`. */
|
|
3210
3211
|
onDispose(callback: () => void): () => void;
|
|
3211
|
-
contributeContextMenu(
|
|
3212
|
+
contributeContextMenu(build: ChartExtensionMenuBuilder): () => void;
|
|
3212
3213
|
contributeCommands(commands: readonly ChartExtensionCommand[]): () => void;
|
|
3213
3214
|
contributeHideLayer(layer: ChartExtensionHideLayer): ChartExtensionHideLayerHandle;
|
|
3214
3215
|
}
|
|
@@ -3236,7 +3237,7 @@ interface ChartExtension {
|
|
|
3236
3237
|
attach(context: ChartExtensionContext): ChartExtensionHandle;
|
|
3237
3238
|
}
|
|
3238
3239
|
|
|
3239
|
-
/** Localized metadata for one optional collection in the chart-owned indicator
|
|
3240
|
+
/** Localized metadata for one optional collection in the chart-owned indicator picker. */
|
|
3240
3241
|
interface IndicatorPickerCollection {
|
|
3241
3242
|
/** Stable opaque id. `builtin` and `favorites` belong to the chart. */
|
|
3242
3243
|
id: string;
|
|
@@ -3246,7 +3247,7 @@ interface IndicatorPickerCollection {
|
|
|
3246
3247
|
/** Catalog columns by default; a personal list can omit author and favorite columns. */
|
|
3247
3248
|
layout?: 'table' | 'list';
|
|
3248
3249
|
}
|
|
3249
|
-
/** A host action is an opaque verb
|
|
3250
|
+
/** A host action is an opaque verb: the source's `act` runs it, and the chart only names it. */
|
|
3250
3251
|
interface IndicatorPickerAction {
|
|
3251
3252
|
/** Unique within its row. `add` and `favorite` belong to the chart. */
|
|
3252
3253
|
id: string;
|
|
@@ -3278,7 +3279,7 @@ interface IndicatorPickerBuiltInState {
|
|
|
3278
3279
|
interface IndicatorPickerSource {
|
|
3279
3280
|
collections: readonly IndicatorPickerCollection[];
|
|
3280
3281
|
/** The host supplies localized text. A new query or collection aborts the previous read.
|
|
3281
|
-
* `builtInIds` are the built-ins the
|
|
3282
|
+
* `builtInIds` are the built-ins the picker lists: every one, or those `builtInIndicators`
|
|
3282
3283
|
* offers. */
|
|
3283
3284
|
list(request: {
|
|
3284
3285
|
collection: string;
|
|
@@ -3316,21 +3317,21 @@ interface CompareSymbol {
|
|
|
3316
3317
|
symbol: string;
|
|
3317
3318
|
title: string;
|
|
3318
3319
|
}
|
|
3319
|
-
/** One active
|
|
3320
|
+
/** One active comparison, as hosts read it (legend rows, dialogs, serialization). */
|
|
3320
3321
|
interface CompareEntry {
|
|
3321
3322
|
symbol: string;
|
|
3322
3323
|
placement: ComparePlacement;
|
|
3323
3324
|
color: string;
|
|
3324
3325
|
visible: boolean;
|
|
3325
3326
|
/** Style beyond the palette color, absent until a settings edit sets it (2 / solid are the
|
|
3326
|
-
* series defaults). Carried here so a styled
|
|
3327
|
+
* series defaults). Carried here so a styled comparison round-trips through the snapshot. */
|
|
3327
3328
|
lineWidth?: number;
|
|
3328
3329
|
lineStyle?: 'solid' | 'dashed' | 'dotted';
|
|
3329
3330
|
}
|
|
3330
3331
|
/** The serialized form carried inside the chart content blob — and the shape host STATE holds.
|
|
3331
|
-
* Only the identity is required: color and visibility are the
|
|
3332
|
+
* Only the identity is required: color and visibility are the MODULE's to deal (the palette pick,
|
|
3332
3333
|
* the eye's default), so a host can state membership — "compare MSFT on a new scale" — before
|
|
3333
|
-
* the
|
|
3334
|
+
* the module has dealt them, and the module's report back fills them in. `serialize` always emits
|
|
3334
3335
|
* the dealt fields; `restore`/`apply` accept either form. */
|
|
3335
3336
|
interface CompareSnapshot {
|
|
3336
3337
|
symbol: string;
|
|
@@ -3341,13 +3342,13 @@ interface CompareSnapshot {
|
|
|
3341
3342
|
lineStyle?: 'solid' | 'dashed' | 'dotted';
|
|
3342
3343
|
}
|
|
3343
3344
|
/** The compare line palette, in assignment order. Assigned by first
|
|
3344
|
-
* unused slot, so removing a
|
|
3345
|
+
* unused slot, so removing a comparison frees its color for the next one. */
|
|
3345
3346
|
declare const COMPARE_COLORS: readonly string[];
|
|
3346
3347
|
/** First palette color not already worn; wraps past the palette by reuse (better a repeat than an
|
|
3347
3348
|
* invented hue the theme never approved). */
|
|
3348
3349
|
declare function pickCompareColor(used: readonly string[], palette?: readonly string[]): string;
|
|
3349
3350
|
/** Clip bars to the main series' window (inclusive). Null window ⇒ nothing renders yet — the main
|
|
3350
|
-
* series has no bars, and a
|
|
3351
|
+
* series has no bars, and a comparison must never be the thing that gives the axis its range. */
|
|
3351
3352
|
declare function clipToWindow(bars: readonly FeedBar[], window: {
|
|
3352
3353
|
from: number;
|
|
3353
3354
|
to: number;
|
|
@@ -3363,14 +3364,14 @@ interface CompareDeps {
|
|
|
3363
3364
|
/** The chart's CURRENT timeframe — read per fetch, never captured. */
|
|
3364
3365
|
tf(): string;
|
|
3365
3366
|
/** The MAIN series' loaded bar window (epoch seconds, inclusive), or null before first paint.
|
|
3366
|
-
* The
|
|
3367
|
+
* The module clips every comparison to it; the host calls `sync()` whenever it changes shape. */
|
|
3367
3368
|
mainWindow(): {
|
|
3368
3369
|
from: number;
|
|
3369
3370
|
to: number;
|
|
3370
3371
|
} | null;
|
|
3371
3372
|
/** How many bars a fresh compare asks for when the main window is not yet known. */
|
|
3372
3373
|
seedCountBack?: number;
|
|
3373
|
-
/** Entries changed (add/remove/visibility/color) or a
|
|
3374
|
+
/** Entries changed (add/remove/visibility/color) or a comparison's latest value moved — hosts
|
|
3374
3375
|
* re-render their legend from `list()` / `latest()`. */
|
|
3375
3376
|
onChange?(): void;
|
|
3376
3377
|
}
|
|
@@ -3384,11 +3385,11 @@ interface CompareHandle {
|
|
|
3384
3385
|
}): void;
|
|
3385
3386
|
remove(symbol: string): void;
|
|
3386
3387
|
setVisible(symbol: string, visible: boolean): void;
|
|
3387
|
-
/** A host-side hide ANDed with the eye (
|
|
3388
|
+
/** A host-side hide ANDed with the eye (timeframe visibility, a plot-visibility override) —
|
|
3388
3389
|
* never serialized and never touching `visible`, so a timeframe switch that suppresses a
|
|
3389
|
-
* compare cannot flip the
|
|
3390
|
+
* compare cannot flip the viewer's eye state. */
|
|
3390
3391
|
suppress(symbol: string, on: boolean): void;
|
|
3391
|
-
/** Restyle one
|
|
3392
|
+
/** Restyle one comparison's line (a settings edit). Omitted fields keep their current value;
|
|
3392
3393
|
* `priceLabel` is the price-scale label+line pair. Identical values are a no-op (no notify). */
|
|
3393
3394
|
restyle(symbol: string, style: {
|
|
3394
3395
|
color?: string;
|
|
@@ -3397,11 +3398,11 @@ interface CompareHandle {
|
|
|
3397
3398
|
priceLabel?: boolean;
|
|
3398
3399
|
}): void;
|
|
3399
3400
|
list(): CompareEntry[];
|
|
3400
|
-
/** The latest clipped close for one
|
|
3401
|
+
/** The latest clipped close for one comparison, or null (no bars in window / unknown symbol). */
|
|
3401
3402
|
latest(symbol: string): number | null;
|
|
3402
|
-
/** The pane the
|
|
3403
|
-
* symbol — how a host places the
|
|
3404
|
-
* the series, because 'new-pane' indices shift as other panes come and go. */
|
|
3403
|
+
/** The pane the comparison's series currently lives on (0 = the main pane), or null for an
|
|
3404
|
+
* unknown symbol — how a host places the comparison's legend row in the right pane's group. Read
|
|
3405
|
+
* live from the series, because 'new-pane' indices shift as other panes come and go. */
|
|
3405
3406
|
paneIndexOf(symbol: string): number | null;
|
|
3406
3407
|
/** Percent change across the clipped window (last close vs the window's FIRST in-window close —
|
|
3407
3408
|
* the loaded-window approximation of the percent scale's first-visible-bar base), or null with
|
|
@@ -3413,7 +3414,7 @@ interface CompareHandle {
|
|
|
3413
3414
|
* reshaped nothing): re-clip, and fetch older compare history only where the window now starts
|
|
3414
3415
|
* earlier than anything already asked for. */
|
|
3415
3416
|
sync(): void;
|
|
3416
|
-
/** The chart's timeframe changed: every
|
|
3417
|
+
/** The chart's timeframe changed: every comparison refetches at the new bucket size. */
|
|
3417
3418
|
setTimeframe(): void;
|
|
3418
3419
|
serialize(): CompareSnapshot[];
|
|
3419
3420
|
/** Replace the whole set from a snapshot (restore path). Unknown placements are dropped. */
|
|
@@ -3425,7 +3426,7 @@ declare function attachCompare(chart: IChartApi, deps: CompareDeps): CompareHand
|
|
|
3425
3426
|
type ScaleMode = 'normal' | 'log' | 'percent' | 'indexed';
|
|
3426
3427
|
declare const SCALE_MODES: readonly ScaleMode[];
|
|
3427
3428
|
/** Settings-control chips, in render order. Each names its own catalog key, so a control that
|
|
3428
|
-
* renders them reads the
|
|
3429
|
+
* renders them reads the viewer's language rather than an English word compiled into a public
|
|
3429
3430
|
* export. */
|
|
3430
3431
|
declare const SCALE_MODE_OPTIONS: readonly {
|
|
3431
3432
|
id: ScaleMode;
|
|
@@ -3443,24 +3444,24 @@ type ReplaySpeed = (typeof REPLAY_SPEEDS)[number];
|
|
|
3443
3444
|
* nominal seconds; 0 for ticks and for a token the grammar cannot read. A tick bar has no fixed
|
|
3444
3445
|
* duration, so it can neither be subdivided nor stand as a subdivision of a time bar. */
|
|
3445
3446
|
declare function tfSeconds(tf: string): number;
|
|
3446
|
-
/** The update
|
|
3447
|
+
/** The update timeframes a chart timeframe offers.
|
|
3447
3448
|
*
|
|
3448
|
-
* A rung qualifies when it divides the chart's
|
|
3449
|
+
* A rung qualifies when it divides the chart's timeframe evenly and is no coarser than it, drawn
|
|
3449
3450
|
* from the chart's OWN unit group and the group below it. That bound is what keeps the list
|
|
3450
3451
|
* readable: every minute rung divides a day evenly, but a day played a minute at a time is 1,440
|
|
3451
3452
|
* updates per bar, so a daily chart offers hours. Seconds join any intraday chart, which is how a
|
|
3452
3453
|
* minute chart gets a grain at all. A week or a month plays in whole days and nothing else.
|
|
3453
3454
|
*
|
|
3454
|
-
* The chart's own
|
|
3455
|
+
* The chart's own timeframe is ON the list when it is a rung, and choosing it is how a viewer asks
|
|
3455
3456
|
* for whole-bar updates. A timeframe that is not a rung (17m, say) simply has no rung of its own,
|
|
3456
3457
|
* and the list is whatever divides it. */
|
|
3457
|
-
declare function
|
|
3458
|
+
declare function subTimeframesFor(chartTf: string): {
|
|
3458
3459
|
tf: string;
|
|
3459
3460
|
sec: number;
|
|
3460
3461
|
}[];
|
|
3461
|
-
/** Auto = the COARSEST
|
|
3462
|
+
/** Auto = the COARSEST timeframe on offer, which is the chart's own whenever that is a rung. Replay
|
|
3462
3463
|
* then advances a whole bar per update until a viewer asks for a finer grain. */
|
|
3463
|
-
declare function
|
|
3464
|
+
declare function autoTimeframeFor(chartTf: string): {
|
|
3464
3465
|
tf: string;
|
|
3465
3466
|
sec: number;
|
|
3466
3467
|
} | null;
|
|
@@ -3754,7 +3755,7 @@ type ThemeChangeListener = (theme: SemanticTheme, mode: ThemeMode) => void;
|
|
|
3754
3755
|
interface ThemeController {
|
|
3755
3756
|
/** The mode in effect. */
|
|
3756
3757
|
mode(): ThemeMode;
|
|
3757
|
-
/** Switch modes. The chart keeps its symbol, timeframe, range, drawings, and
|
|
3758
|
+
/** Switch modes. The chart keeps its symbol, timeframe, range, drawings, and indicators. */
|
|
3758
3759
|
setMode(mode: ThemeMode): void;
|
|
3759
3760
|
/** The complete resolved theme in effect. */
|
|
3760
3761
|
get(): SemanticTheme;
|
|
@@ -3799,7 +3800,8 @@ interface CommandSpec {
|
|
|
3799
3800
|
execute(arg?: unknown): void | Promise<void>;
|
|
3800
3801
|
}
|
|
3801
3802
|
/** What running a command answers. A refusal is a value, never a throw: a menu row, a shortcut and
|
|
3802
|
-
* an
|
|
3803
|
+
* an automation adapter all need to tell "nothing by that name" from "not allowed" without a try
|
|
3804
|
+
* block. */
|
|
3803
3805
|
type CommandResult = {
|
|
3804
3806
|
kind: 'ok';
|
|
3805
3807
|
} | {
|
|
@@ -3933,7 +3935,7 @@ interface DrawingPresets {
|
|
|
3933
3935
|
subscribe(listener: () => void): () => void;
|
|
3934
3936
|
}
|
|
3935
3937
|
/** Why a low-level document operation refused. Machine-readable on purpose: these answer a host's
|
|
3936
|
-
* code, not a
|
|
3938
|
+
* code, not a viewer, so nothing here is a sentence to render. */
|
|
3937
3939
|
type DrawingDocumentRefusal =
|
|
3938
3940
|
/** The widget runs in combined mode: its drawings ride whatever saves the chart, and there is no
|
|
3939
3941
|
* separate document to get, apply or reload. */
|
|
@@ -3945,7 +3947,7 @@ type DrawingDocumentRefusal =
|
|
|
3945
3947
|
* layout, chart or symbol that has moved on. Nothing was changed. */
|
|
3946
3948
|
| 'stale';
|
|
3947
3949
|
/** Why one drawing in a document was not applied. The rest of the document still applies: one
|
|
3948
|
-
* unusable row is not a reason to leave the
|
|
3950
|
+
* unusable row is not a reason to leave the viewer with an empty chart. */
|
|
3949
3951
|
type DrawingRejectionReason =
|
|
3950
3952
|
/** Its owning source is not on this chart (an indicator that is gone, a series never added). */
|
|
3951
3953
|
'missing-source'
|
|
@@ -4007,7 +4009,7 @@ interface DrawingsEvents {
|
|
|
4007
4009
|
onSelectionChange?: (id: string | null) => void;
|
|
4008
4010
|
/** A write of a symbol's document was refused: the stored document moved on (`current` is the
|
|
4009
4011
|
* ref that stands now) or vanished (null). The layer merges the stored document over its own
|
|
4010
|
-
* work and writes again at the adopted ref; the host decides what to tell the
|
|
4012
|
+
* work and writes again at the adopted ref; the host decides what to tell the viewer. */
|
|
4011
4013
|
onSaveConflict?: (info: {
|
|
4012
4014
|
symbol: string;
|
|
4013
4015
|
current: ResourceRef | null;
|
|
@@ -4027,7 +4029,7 @@ interface AttachDrawingsOptions {
|
|
|
4027
4029
|
* the keyboard verbs stay scoped to this widget instead of the whole page. */
|
|
4028
4030
|
container: HTMLElement;
|
|
4029
4031
|
symbol: string;
|
|
4030
|
-
/** Timeframe token ('5m', '1d', ...), which drives per-
|
|
4032
|
+
/** Timeframe token ('5m', '1d', ...), which drives per-timeframe drawing visibility. */
|
|
4031
4033
|
timeframe?: string;
|
|
4032
4034
|
/** SEPARATE-drawing persistence: which drawing-resource context a symbol's document is keyed by,
|
|
4033
4035
|
* and the store for that context. Absent is the COMBINED mode: the layer keeps its documents in
|
|
@@ -4133,7 +4135,7 @@ interface DrawingsHandle {
|
|
|
4133
4135
|
};
|
|
4134
4136
|
/** Hide the selection (its own `visible` switch) and deselect it. */
|
|
4135
4137
|
hideSelected(): void;
|
|
4136
|
-
/** Apply one of the quick per-
|
|
4138
|
+
/** Apply one of the quick per-timeframe visibility rules to the selection, against the current
|
|
4137
4139
|
* timeframe. */
|
|
4138
4140
|
setVisibilityPreset(preset: VisibilityPreset): void;
|
|
4139
4141
|
/** Drop a ready picture onto the chart, centred in view, selected. */
|
|
@@ -4188,16 +4190,16 @@ interface ChartReplayApi {
|
|
|
4188
4190
|
setSpeed(speed: ReplaySpeed): void;
|
|
4189
4191
|
/** Jump the cursor to the live edge. Playback pauses; replay stays on. */
|
|
4190
4192
|
goLive(): void;
|
|
4191
|
-
/** The update grain: `auto`, or one of the finer timeframe tokens `
|
|
4192
|
-
|
|
4193
|
+
/** The update grain: `auto`, or one of the finer timeframe tokens `subTimeframes()` lists. */
|
|
4194
|
+
timeframe(): string;
|
|
4193
4195
|
/** Set the grain. A token the chart timeframe cannot form from is refused. */
|
|
4194
|
-
|
|
4196
|
+
setTimeframe(token: string): void;
|
|
4195
4197
|
/** The grain updates actually use, with `auto` resolved to the token it chose. Empty when the
|
|
4196
4198
|
* chart's timeframe has nothing finer to form from, so updates advance whole bars. */
|
|
4197
|
-
|
|
4199
|
+
resolvedTimeframe(): string;
|
|
4198
4200
|
/** The finer timeframe tokens the chart timeframe can form bars from; empty means whole-bar
|
|
4199
4201
|
* updates only. */
|
|
4200
|
-
|
|
4202
|
+
subTimeframes(): readonly string[];
|
|
4201
4203
|
state(): {
|
|
4202
4204
|
on: boolean;
|
|
4203
4205
|
playing: boolean;
|
|
@@ -4259,7 +4261,7 @@ interface RangeFrameTarget {
|
|
|
4259
4261
|
}
|
|
4260
4262
|
/** Frame a pane on a span, anchored on its LAST REAL bar: a series also carries a future
|
|
4261
4263
|
* whitespace horizon for right-margin drawing, so fitting to content would frame a screen of
|
|
4262
|
-
* empty space. The bar count comes from the pane's own
|
|
4264
|
+
* empty space. The bar count comes from the pane's own timeframe, because the same span is a
|
|
4263
4265
|
* different number of bars on a one-minute pane than on a daily one. An empty series, or a token
|
|
4264
4266
|
* the grammar cannot read, frames nothing rather than a bogus window. */
|
|
4265
4267
|
declare function frameRange(chart: RangeFrameTarget, series: {
|
|
@@ -4285,7 +4287,7 @@ interface ChartCompareApi {
|
|
|
4285
4287
|
remove(symbol: string): void;
|
|
4286
4288
|
setVisible(symbol: string, visible: boolean): void;
|
|
4287
4289
|
list(): CompareEntry[];
|
|
4288
|
-
/** Latest in-window close for one
|
|
4290
|
+
/** Latest in-window close for one comparison, or null. */
|
|
4289
4291
|
latest(symbol: string): number | null;
|
|
4290
4292
|
/** The host-supplied curated quick-add list, for the compare dialog. */
|
|
4291
4293
|
symbols(): CompareSymbol[];
|
|
@@ -4302,7 +4304,7 @@ declare function applyBar(bars: FeedBar[], bar: FeedBar): FeedBar[] | null;
|
|
|
4302
4304
|
* viewer's, so a later feed that serves the preferred timeframe gets it back. Exported for tests. */
|
|
4303
4305
|
declare function resolveInitialTf(sticky: string, declared: readonly string[] | undefined): string;
|
|
4304
4306
|
/** Pane-composition primitives: the raw mirrors a layout syncs charts with. Subscriptions report
|
|
4305
|
-
*
|
|
4307
|
+
* VIEWER-driven changes only, so a chart being driven through the setters never re-reports the
|
|
4306
4308
|
* change and two mirrored charts cannot echo each other into a loop. Times are the feed's unix
|
|
4307
4309
|
* seconds. */
|
|
4308
4310
|
interface ChartPaneSyncApi {
|
|
@@ -4508,7 +4510,7 @@ interface ChartEvents {
|
|
|
4508
4510
|
/** Which changes replay across the layout. All off by default. */
|
|
4509
4511
|
interface LayoutSyncFlags {
|
|
4510
4512
|
symbol: boolean;
|
|
4511
|
-
|
|
4513
|
+
timeframe: boolean;
|
|
4512
4514
|
crosshair: boolean;
|
|
4513
4515
|
time: boolean;
|
|
4514
4516
|
dateRange: boolean;
|
|
@@ -4606,7 +4608,7 @@ interface UiConfig {
|
|
|
4606
4608
|
topBar?: boolean | TopBarUi;
|
|
4607
4609
|
/** The bottom bar: range presets, the clock, the timezone picker and the session view. */
|
|
4608
4610
|
bottomBar?: boolean;
|
|
4609
|
-
/** The drawing
|
|
4611
|
+
/** The drawing toolbar: the tool groups, cursor, measure and zoom, magnet, lock, the eye, sync,
|
|
4610
4612
|
* remove and the favorites star. */
|
|
4611
4613
|
drawingToolbar?: boolean;
|
|
4612
4614
|
/** The floating favorite-tools bar. */
|
|
@@ -4615,7 +4617,7 @@ interface UiConfig {
|
|
|
4615
4617
|
legend?: boolean | LegendUi;
|
|
4616
4618
|
/** The on-chart navigation cluster: zoom, scroll and reset. */
|
|
4617
4619
|
navigation?: boolean;
|
|
4618
|
-
/** The chart's own right-click
|
|
4620
|
+
/** The chart's own right-click context menu. */
|
|
4619
4621
|
contextMenu?: boolean;
|
|
4620
4622
|
/** The replay transport row: play, pause, step, speed and exit. */
|
|
4621
4623
|
replayTransport?: boolean;
|
|
@@ -4625,7 +4627,7 @@ interface UiConfig {
|
|
|
4625
4627
|
* and `chart.symbol.search`. Off, the symbol still changes through `chart.symbol.set`. The
|
|
4626
4628
|
* compare dialog belongs to `features.compare`. */
|
|
4627
4629
|
symbolSearch?: boolean;
|
|
4628
|
-
/** The indicator
|
|
4630
|
+
/** The indicator picker, and its doors: the Indicators button and `chart.indicators.open`. Off,
|
|
4629
4631
|
* indicators are still added through `chart.indicators.add`. */
|
|
4630
4632
|
indicatorPicker?: boolean;
|
|
4631
4633
|
/** The full indicator settings dialog. Off, the legend's gear opens the inputs-only editor, and
|
|
@@ -4705,9 +4707,9 @@ interface AccessPolicy {
|
|
|
4705
4707
|
indicator?(id: string): boolean;
|
|
4706
4708
|
/** How the chart's own controls present what the predicates refuse. `'disable'` (the default)
|
|
4707
4709
|
* draws a refused control disabled, which suits an offer the viewer can unlock. `'hide'` leaves
|
|
4708
|
-
* it out: a refused drawing tool is not in the
|
|
4709
|
-
* glyph picker, and a section or group it empties goes with it; a refused indicator is
|
|
4710
|
-
* the indicator
|
|
4710
|
+
* it out: a refused drawing tool is not in the drawing toolbar's flyouts, on the favorites bar
|
|
4711
|
+
* or in the glyph picker, and a section or group it empties goes with it; a refused indicator is
|
|
4712
|
+
* not in the indicator picker; and a control or menu row whose command is refused is not drawn.
|
|
4711
4713
|
*
|
|
4712
4714
|
* Only a refusal hides. A permitted command that cannot run now (nothing to undo, no bars
|
|
4713
4715
|
* loaded, nothing selected) is still drawn disabled. Like the predicates it is read whenever a
|
|
@@ -4738,9 +4740,9 @@ interface ChartPreferences {
|
|
|
4738
4740
|
hiddenIndicators: readonly string[];
|
|
4739
4741
|
replaySpeed: ReplaySpeed;
|
|
4740
4742
|
/** The replay update grain: `auto` or a finer timeframe token. */
|
|
4741
|
-
|
|
4742
|
-
/** The standing drawing choices: cursor, magnet, stay-in-mode, favorites, per-group
|
|
4743
|
-
* The drawing models own what each one means; the chart only persists the record. */
|
|
4743
|
+
replayTimeframe: string;
|
|
4744
|
+
/** The standing drawing choices: cursor, magnet, stay-in-mode, favorites, per-group toolbar
|
|
4745
|
+
* tools. The drawing models own what each one means; the chart only persists the record. */
|
|
4744
4746
|
drawings: DrawingPreferences;
|
|
4745
4747
|
/** The timeframe tokens the top bar shows as quick-select chips. */
|
|
4746
4748
|
savedTimeframes: readonly string[];
|
|
@@ -4804,7 +4806,7 @@ interface ImageOptions {
|
|
|
4804
4806
|
header?: boolean;
|
|
4805
4807
|
}
|
|
4806
4808
|
/** ── DRAWING PERSISTENCE ─────────────────────────────────────────────────────────────────────
|
|
4807
|
-
* Where the
|
|
4809
|
+
* Where the viewer's drawings are stored. Two modes, and the host picks one HERE, at construction:
|
|
4808
4810
|
*
|
|
4809
4811
|
* combined (the default) the drawings ride the chart's own saved content, so saving a chart or
|
|
4810
4812
|
* a layout saves the drawings that are on it.
|
|
@@ -4861,8 +4863,8 @@ interface IndicatorInstance {
|
|
|
4861
4863
|
title?: string;
|
|
4862
4864
|
overrides?: IndicatorOverrides;
|
|
4863
4865
|
}
|
|
4864
|
-
/** The set of symbols a search answers from, as the host names it: a portfolio, a
|
|
4865
|
-
*
|
|
4866
|
+
/** The set of symbols a search answers from, as the host names it: a portfolio, a watchlist or
|
|
4867
|
+
* any other scope its datafeed applies. `mark` paints the scope's own mark into the
|
|
4866
4868
|
* box the chart owns and returns what takes it down; absent, the scope wears its initial. */
|
|
4867
4869
|
interface SearchScope {
|
|
4868
4870
|
readonly label: string;
|
|
@@ -4927,7 +4929,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4927
4929
|
/** The main-series styles the chart offers, in this order. Absent, every style in `CHART_STYLES`
|
|
4928
4930
|
* is offered and the picker groups them by family.
|
|
4929
4931
|
*
|
|
4930
|
-
* A style left out
|
|
4932
|
+
* A style left out stays off this chart: it has no `chart.style.<id>` command, so no
|
|
4931
4933
|
* menu, shortcut or host control reaches it, and `setStyle` ignores it. The picker lists the
|
|
4932
4934
|
* offered styles in the order given, and is not shown when one style is offered, since there is
|
|
4933
4935
|
* nothing to choose. `ui.topBar.styles: false` hides the picker on its own terms.
|
|
@@ -4942,7 +4944,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4942
4944
|
* preset or not (`2m`). The order given does not matter: the picker lists each unit's group
|
|
4943
4945
|
* smallest first.
|
|
4944
4946
|
*
|
|
4945
|
-
* A token left out
|
|
4947
|
+
* A token left out stays off this chart. A preset left out has no
|
|
4946
4948
|
* `chart.timeframe.<token>` command, `chart.timeframe.set` and `setTimeframe` ignore a token
|
|
4947
4949
|
* left out, and the picker shows no chip and no row for it. A group with no listed token is not
|
|
4948
4950
|
* shown, a listed token beyond the presets sits in its unit's group, and there is no
|
|
@@ -4950,8 +4952,8 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4950
4952
|
* leaves none of them, the chips are the first five listed tokens, and the viewer's stored chips
|
|
4951
4953
|
* are kept unchanged for a chart that offers them. The picker is not shown when one timeframe is
|
|
4952
4954
|
* offered, since there is nothing to choose. `ui.topBar.timeframes: false` hides the picker on
|
|
4953
|
-
* its own terms. A range preset whose
|
|
4954
|
-
* timeframe at or above that
|
|
4955
|
+
* its own terms. A range preset whose timeframe is left out reads its span at the smallest
|
|
4956
|
+
* listed timeframe at or above that timeframe, else at the largest listed.
|
|
4955
4957
|
*
|
|
4956
4958
|
* A saved layout, saved chart or stored preference that names a token outside the list opens on
|
|
4957
4959
|
* the SMALLEST listed timeframe, and the rest of it restores. An empty list, a token the grammar
|
|
@@ -4972,11 +4974,11 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4972
4974
|
* (`1D`, `5D`, `1M`, `3M`, `6M`, `YTD`, `1Y`, `5Y`, `All`), in this order. Absent, all nine
|
|
4973
4975
|
* are offered in their own order.
|
|
4974
4976
|
*
|
|
4975
|
-
* A preset left out
|
|
4977
|
+
* A preset left out stays off this chart: it has no `chart.range.<key>` command, so no
|
|
4976
4978
|
* menu, shortcut or host control reaches it, `chart.range.set` ignores its key, and the bottom
|
|
4977
4979
|
* bar draws no button for it. An empty list offers no preset: the bottom bar keeps its clock,
|
|
4978
4980
|
* timezone picker and session view, and `chart.range.set` still takes an explicit window.
|
|
4979
|
-
* `ui.bottomBar: false` removes the whole bar. A preset whose
|
|
4981
|
+
* `ui.bottomBar: false` removes the whole bar. A preset whose timeframe `timeframes` leaves out
|
|
4980
4982
|
* reads its span at the nearest coarser timeframe the chart offers. A non-list, a key that names
|
|
4981
4983
|
* no preset and a repeated key are setup errors thrown from `createChart`. */
|
|
4982
4984
|
ranges?: readonly string[];
|
|
@@ -4985,7 +4987,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4985
4987
|
* timezone picker keeps its own order (UTC, the exchange choice, then every zone by its current
|
|
4986
4988
|
* offset); the order given decides only which choice is first.
|
|
4987
4989
|
*
|
|
4988
|
-
* A choice left out
|
|
4990
|
+
* A choice left out stays off this chart: it has no `chart.timezone.<id>` command (or
|
|
4989
4991
|
* `chart.timezone.exchange`), `chart.timezone.set` and `setTimezone` ignore it, and the picker
|
|
4990
4992
|
* lists no row for it. With one choice offered the picker is not shown, since there is nothing to
|
|
4991
4993
|
* choose, and the bottom bar's clock still reads the time in that zone.
|
|
@@ -5004,7 +5006,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
5004
5006
|
* keeps its own rows by chart count and shows only the listed arrangements, and the order given
|
|
5005
5007
|
* breaks ties when a saved layout falls back (below).
|
|
5006
5008
|
*
|
|
5007
|
-
* An arrangement left out
|
|
5009
|
+
* An arrangement left out stays off this chart: no tile shows it, and
|
|
5008
5010
|
* `widget.layout.setArrangement` and the `widget.layout.setArrangement` command ignore it. With
|
|
5009
5011
|
* one arrangement offered the layout setup menu is not shown, since there is nothing to choose,
|
|
5010
5012
|
* unless that arrangement holds several charts and a sync switch is offered (`layoutSync`): the
|
|
@@ -5025,7 +5027,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
5025
5027
|
* An empty list, an unknown code, a repeated code and a `layout.arrangement` outside the list
|
|
5026
5028
|
* are setup errors thrown from `createChart`. */
|
|
5027
5029
|
layouts?: readonly string[];
|
|
5028
|
-
/** The sync switches the viewer may change (`symbol`, `
|
|
5030
|
+
/** The sync switches the viewer may change (`symbol`, `timeframe`, `crosshair`, `time`,
|
|
5029
5031
|
* `dateRange`). Absent, every one. A switch left out holds the value `layout.sync` gives it, or
|
|
5030
5032
|
* off: the layout setup menu does not show it, `widget.layout.setSync` and its command leave it
|
|
5031
5033
|
* as it is, and a saved layout cannot change it. An empty list fixes every switch and leaves the
|
|
@@ -5034,11 +5036,12 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
5034
5036
|
layoutSync?: readonly (keyof LayoutSyncFlags)[];
|
|
5035
5037
|
/** The drawing tools the chart offers, by the type `access.drawingTool` and the `tool.<type>`
|
|
5036
5038
|
* icon ids use: any type `drawingTools.all()` lists, `zoom` or `eraser`. Absent, every tool is
|
|
5037
|
-
* offered. The order given does not matter: the
|
|
5039
|
+
* offered. The order given does not matter: the drawing toolbar keeps its own groups and
|
|
5040
|
+
* sections.
|
|
5038
5041
|
*
|
|
5039
|
-
* A tool left out
|
|
5040
|
-
*
|
|
5041
|
-
*
|
|
5042
|
+
* A tool left out stays off this chart for creating drawings, and every place a tool is chosen
|
|
5043
|
+
* leaves it out: its group's flyout, a group's face (which wears the first tool the group
|
|
5044
|
+
* offers), the favorites bar and the drawing toolbar (`measure`, `zoom`). A section
|
|
5042
5045
|
* or group it empties goes with it. The glyph picker's kinds are the `emoji`, `sticker` and
|
|
5043
5046
|
* `icon` tools, and a kind left out has no tab. `chart.drawings.arm`, `armTool`, `placeImage` and
|
|
5044
5047
|
* an image pasted over the chart refuse it. A copy of a drawing of it is refused too, since a
|
|
@@ -5080,20 +5083,20 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
5080
5083
|
access?: AccessPolicy;
|
|
5081
5084
|
/** Initial viewer preferences, for a first-run chart. A stored value wins once there is one. */
|
|
5082
5085
|
preferences?: Partial<ChartPreferences>;
|
|
5083
|
-
/** Optional localized content and actions in the chart-owned indicator
|
|
5086
|
+
/** Optional localized content and actions in the chart-owned indicator picker. */
|
|
5084
5087
|
indicatorPicker?: IndicatorPickerSource;
|
|
5085
5088
|
/** Indicator instances on the chart at mount. */
|
|
5086
5089
|
indicators?: IndicatorInstance[];
|
|
5087
5090
|
/** The built-in indicators the chart offers, by the definition id `access.indicator` receives:
|
|
5088
5091
|
* any id `BUILT_IN_INDICATORS` lists, such as `sma`. Absent, every built-in is offered. The order
|
|
5089
|
-
* given does not matter: the indicator
|
|
5092
|
+
* given does not matter: the indicator picker keeps its own.
|
|
5090
5093
|
*
|
|
5091
|
-
* A built-in left out
|
|
5092
|
-
*
|
|
5093
|
-
*
|
|
5094
|
+
* A built-in left out stays off this chart. The indicator picker leaves it out of the built-ins,
|
|
5095
|
+
* the favorites (a starred one keeps its star in storage) and the search results, and the host's
|
|
5096
|
+
* `indicatorPicker` listing is handed only the offered ids. Every
|
|
5094
5097
|
* door that would add one refuses: `chart.indicators.add` answers `denied`, `indicators.add`
|
|
5095
5098
|
* adds nothing, `indicators.set` leaves out an instance of it the chart does not already hold,
|
|
5096
|
-
* and a new pane a re-tile adds copies the first chart's
|
|
5099
|
+
* and a new pane a re-tile adds copies the first chart's indicators without it. There is no
|
|
5097
5100
|
* duplicate verb for an indicator; adding a second instance is adding.
|
|
5098
5101
|
*
|
|
5099
5102
|
* Instances of a built-in left out that are already on the chart (from a saved chart or layout,
|
|
@@ -5142,7 +5145,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
5142
5145
|
marks?: boolean;
|
|
5143
5146
|
}
|
|
5144
5147
|
|
|
5145
|
-
/** Host-owned activity, displayed with
|
|
5148
|
+
/** Host-owned activity, displayed with indicators but never saved as an indicator or plotted. */
|
|
5146
5149
|
interface ChartLegendRow {
|
|
5147
5150
|
id: string;
|
|
5148
5151
|
title: string;
|
|
@@ -5281,7 +5284,8 @@ type TopBarSlot = (typeof TOP_BAR_SLOTS)[number];
|
|
|
5281
5284
|
* A slot is live for as long as the widget is. A host appends its own node and takes that node back
|
|
5282
5285
|
* out again; the slot itself belongs to the chart and is never removed or replaced. */
|
|
5283
5286
|
interface ChartChrome {
|
|
5284
|
-
/** Transient host activity in this chart's native
|
|
5287
|
+
/** Transient host activity in this chart's native indicator list. Does not affect chart
|
|
5288
|
+
* content. */
|
|
5285
5289
|
legendRows(chartId: string, rows: readonly ChartLegendRow[]): void;
|
|
5286
5290
|
/** One named place in the top bar. Null when the top bar is hidden, which is the answer a host
|
|
5287
5291
|
* checks before composing a door it would have nowhere to put. */
|
|
@@ -5319,10 +5323,10 @@ interface ChartWidget {
|
|
|
5319
5323
|
chrome: ChartChrome;
|
|
5320
5324
|
/** Ask the access policy again, now. The chart's own controls read `access` whenever they sync
|
|
5321
5325
|
* and whenever a menu opens; call this when the policy's answers changed with nothing on the
|
|
5322
|
-
* chart changing (a viewer's plan changed mid-session). Every control, menu row,
|
|
5323
|
-
* group, the favorites bar, the glyph picker, the legend's row controls and every menu,
|
|
5324
|
-
* and dialog that is open (the indicator
|
|
5325
|
-
* left out under `access.refused`, enabled or disabled. Listeners of `commands.onChange` hear
|
|
5326
|
+
* chart changing (a viewer's plan changed mid-session). Every control, menu row, drawing toolbar
|
|
5327
|
+
* tool and group, the favorites bar, the glyph picker, the legend's row controls and every menu,
|
|
5328
|
+
* flyout and dialog that is open (the indicator picker among them) read the policy again: shown
|
|
5329
|
+
* or left out under `access.refused`, enabled or disabled. Listeners of `commands.onChange` hear
|
|
5326
5330
|
* it too, so a host's own controls can read `commands.available` again. Nothing stored and
|
|
5327
5331
|
* nothing on the chart changes. Inert after `dispose`. */
|
|
5328
5332
|
refreshAccess(): void;
|
|
@@ -5361,7 +5365,7 @@ declare class FillBetweenPrimitive implements ISeriesPrimitive<Time> {
|
|
|
5361
5365
|
private lower;
|
|
5362
5366
|
private colors;
|
|
5363
5367
|
/** Nothing until the first `setData`, which every render path makes before a draw. A tint chosen
|
|
5364
|
-
* here would be a second
|
|
5368
|
+
* here would be a second indicator default with no owner. */
|
|
5365
5369
|
private color;
|
|
5366
5370
|
attached(param: SeriesAttachedParameter<Time>): void;
|
|
5367
5371
|
detached(): void;
|
|
@@ -5390,7 +5394,7 @@ declare class ShadePrimitive implements ISeriesPrimitive<Time> {
|
|
|
5390
5394
|
* isCollapsed would deny the restore affordance forever. */
|
|
5391
5395
|
declare const COLLAPSED_H = 30;
|
|
5392
5396
|
/** The main pane never shrinks below this, whatever a maximize asks for: an unreadable price pane
|
|
5393
|
-
* is worse than an unmaximized
|
|
5397
|
+
* is worse than an unmaximized indicator. */
|
|
5394
5398
|
declare const MAIN_MIN_H = 80;
|
|
5395
5399
|
type PaneOp = {
|
|
5396
5400
|
kind: 'collapse';
|
|
@@ -5505,7 +5509,7 @@ declare const SESSION_DOT: Readonly<Record<SessionState, ThemeRoleId>>;
|
|
|
5505
5509
|
* model, merged into runs, and drawn as full-height rects UNDER the main series (zOrder bottom).
|
|
5506
5510
|
* Re-renders with every chart paint, so it tracks pan/zoom for free. An UNKNOWN model (null)
|
|
5507
5511
|
* never bands: drawing nothing is the only honest render before the symbol resolves. A continuous
|
|
5508
|
-
* market never bands (it is always open), and bands render on INTRADAY
|
|
5512
|
+
* market never bands (it is always open), and bands render on INTRADAY timeframes only: a daily or
|
|
5509
5513
|
* larger bar spans whole sessions, so classifying its single timestamp would shade entire days by
|
|
5510
5514
|
* whichever session that instant fell in. */
|
|
5511
5515
|
interface SessionBandsPrimitive {
|
|
@@ -5622,9 +5626,9 @@ interface Timeframe {
|
|
|
5622
5626
|
readonly count: number;
|
|
5623
5627
|
readonly unit: TimeframeUnit;
|
|
5624
5628
|
}
|
|
5625
|
-
/** Every unit, smallest first: the custom-
|
|
5629
|
+
/** Every unit, smallest first: the custom-timeframe picker's unit rows and the sort order. */
|
|
5626
5630
|
declare const TIMEFRAME_UNITS: readonly TimeframeUnit[];
|
|
5627
|
-
/** The inclusive per-unit count ceiling. A token past it parses as null, so a custom-
|
|
5631
|
+
/** The inclusive per-unit count ceiling. A token past it parses as null, so a custom-timeframe
|
|
5628
5632
|
* input disables Add and a feed is never asked for it. */
|
|
5629
5633
|
declare const TIMEFRAME_MAX: Readonly<Record<TimeframeUnit, number>>;
|
|
5630
5634
|
/** Nominal seconds per unit: exact for the fixed-duration units (s/m/h/d/w), a coarse nominal for
|
|
@@ -5640,7 +5644,7 @@ declare function formatTimeframe(tf: Timeframe): string | null;
|
|
|
5640
5644
|
* count). */
|
|
5641
5645
|
declare function timeframeSeconds(tf: Timeframe): number;
|
|
5642
5646
|
/** True for a sub-daily token (ticks, seconds, minutes, hours). Session bands and the
|
|
5643
|
-
* regular-hours filter engage on intraday
|
|
5647
|
+
* regular-hours filter engage on intraday timeframes only, because a daily or larger bar spans
|
|
5644
5648
|
* whole sessions. A token the grammar cannot read is NOT intraday: mis-shading a chart is worse
|
|
5645
5649
|
* than not shading it. */
|
|
5646
5650
|
declare function isIntradayTimeframe(token: string): boolean;
|
|
@@ -5664,18 +5668,18 @@ interface TimeframeGroup {
|
|
|
5664
5668
|
/** The 26 preset timeframes, grouped as the picker shows them. Weeks and months share the Days
|
|
5665
5669
|
* group. The count is a release inventory: it moves only by decision. */
|
|
5666
5670
|
declare const TIMEFRAME_PRESETS: readonly TimeframeGroup[];
|
|
5667
|
-
/** Every preset token across the groups. A custom
|
|
5671
|
+
/** Every preset token across the groups. A custom timeframe that already exists as a preset is
|
|
5668
5672
|
* refused rather than listed twice. */
|
|
5669
5673
|
declare const TIMEFRAME_PRESET_TOKENS: ReadonlySet<string>;
|
|
5670
|
-
/** The unit's own name in the chart catalog: a picker group's heading and the custom-
|
|
5674
|
+
/** The unit's own name in the chart catalog: a picker group's heading and the custom-timeframe
|
|
5671
5675
|
* unit rows. */
|
|
5672
5676
|
declare const TIMEFRAME_UNIT_NAME: Readonly<Record<TimeframeUnit, ChartMessageKey>>;
|
|
5673
5677
|
/** A readable label for a token in the chart's language: '5t' reads "5 Ticks", '1h' reads
|
|
5674
5678
|
* "1 Hour". A token the grammar cannot read is returned as written, which is what the feed calls
|
|
5675
5679
|
* it, never a blank. */
|
|
5676
5680
|
declare function timeframeLabel(t: ChartTranslate, token: string): string;
|
|
5677
|
-
/** What a symbol and its feed declare about the
|
|
5678
|
-
* an EMPTY list is no restriction: a feed or symbol that serves any
|
|
5681
|
+
/** What a symbol and its feed declare about the timeframes they serve. Both lists are optional and
|
|
5682
|
+
* an EMPTY list is no restriction: a feed or symbol that serves any timeframe says nothing rather
|
|
5679
5683
|
* than listing everything. `supportedResolutions` is the symbol's own list (`SymbolInfo`);
|
|
5680
5684
|
* `resolutions` is the feed-level list (`DatafeedConfig`). A token must pass every list given. */
|
|
5681
5685
|
interface TimeframeRestrictions {
|
|
@@ -5695,10 +5699,10 @@ interface ChartTimezone {
|
|
|
5695
5699
|
/** The display city, as the timezone picker writes it. */
|
|
5696
5700
|
readonly city: string;
|
|
5697
5701
|
}
|
|
5698
|
-
/** The selectable zones: one city per offset region a
|
|
5702
|
+
/** The selectable zones: one city per offset region a viewer picks. The count is a release
|
|
5699
5703
|
* inventory: it moves only by decision. */
|
|
5700
5704
|
declare const TIMEZONES: readonly ChartTimezone[];
|
|
5701
|
-
/** The zone a chart displays in before a host or a
|
|
5705
|
+
/** The zone a chart displays in before a host or a viewer chooses one. */
|
|
5702
5706
|
declare const DEFAULT_TIMEZONE = "Etc/UTC";
|
|
5703
5707
|
/** The timezone choice that follows the charted symbol's exchange: a display preference resolves
|
|
5704
5708
|
* it per symbol through {@link resolveDisplayTimezone}. */
|
|
@@ -5881,4 +5885,4 @@ declare function mountTimeframePicker(options: TimeframePickerOptions & {
|
|
|
5881
5885
|
container: HTMLElement;
|
|
5882
5886
|
}): MountedTimeframePicker;
|
|
5883
5887
|
|
|
5884
|
-
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BarMark, type BarsEvent, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, type ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type
|
|
5888
|
+
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BarMark, type BarsEvent, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, type ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionMenuBuilder, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartHandle, type ChartHistoryApi, type ChartI18n, type ChartI18nOptions, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLegendRow, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartOverrides, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartStorage, type ChartStyleId, type ChartTimezone, type ChartTranslate, type ChartWidget, type ChartWidgetOptions, type CommandRegistry, type CommandResult, type CommandScope, type CommandSpec, type CompareDeps, type CompareEntry, type CompareHandle, type ComparePlacement, type CompareSnapshot, type CompareSymbol, type ContextMenuHandle, type CustomThemes, DEFAULT_OVERRIDES, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataSourceMarkPainter, type DataStatus, type DatafeedConfig, type DatafeedSearchOptions, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, type FeedBar, FeedUnavailableError, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, type HistoryPage, IMAGE_HEADER_H, type ImageApi, type ImageEvent, type ImageHeader, type ImageOptions, type ImageTextRun, type ImageTile, type IndicatorCategory, type IndicatorDefinition, type IndicatorEvent, type IndicatorFill, type IndicatorInstance, type IndicatorLevel, type IndicatorManifest, type IndicatorOverrides, type IndicatorPickerAction, type IndicatorPickerBuiltInState, type IndicatorPickerCollection, type IndicatorPickerItem, type IndicatorPickerSource, type IndicatorPlot, type IndicatorPlots, type IndicatorsApi, type IndicatorsRenderer, LAYOUT_MENU_ROWS, type LayoutApi, LayoutBody, type LayoutEvent, LayoutMeta, type LayoutOptions, type LayoutSaveLoadApi, type LayoutSyncFlags, type LegendUi, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, type MarkColorRole, type MarkPainters, type MarkPlacement, type MarkShape, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type NumericPunctuation, type OlderPageVerdict, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialOverrides, type PlacedImage, type PlotPoint, type PriceFormat, type PriceFormatter, type PriceFormatterOptions, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type RecentsPort, type ReplayEventState, type ReplaySpeed, type ResourceLoadOutcome, ResourceRef, type ResourceRemoveOutcome, type ResourceSaveOutcome, ResourceStore, SCALE_MODES, SCALE_MODE_OPTIONS, SCROLL_STEP_BARS, SESSION_DOT, SESSION_LABEL, SESSION_STATE_TITLE, SPREAD_OPERATORS, type SaveConflictInfo, type ScaleMode, type SearchClassFilter, type SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, type SearchPage, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubscribeHandlers, type Subsession, type SubsessionId, type SubsessionSource, type SymbolInfo, type SymbolMarkPainter, type SymbolNames, type SymbolPriceFormat, type SymbolRow, type SymbolSearchCache, type SymbolSearchHandle, type SymbolSearchOptions, THEME_ROLES, TIMEFRAME_MAX, TIMEFRAME_PRESETS, TIMEFRAME_PRESET_TOKENS, TIMEFRAME_UNITS, TIMEFRAME_UNIT_NAME, TIMEFRAME_UNIT_SECONDS, TIMEZONES, TOP_BAR_SLOTS, TemplateBody, TemplateMeta, type TextEditSession, type ThemeChangeListener, type ThemeController, type ThemeControllerOptions, type ThemeDeclaration, type ThemeDiagnostic, type ThemeDiagnosticCode, type ThemeMode, type ThemeOptions, type ThemeRole, type ThemeRoleFamily, type ThemeRoleId, type ThemeRoleKind, type ThemeRootStyle, type TickBand, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimescaleMark, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type UdfDatafeedOptions, type UdfSymbolResponse, type UiConfig, type VenueMarkPainter, type WidgetEvents, ZOOM_FACTOR, type ZoneClock, allowedTimeframes, applyBar, applyPlotOverrides, arrangementName, arrangementOf, attachCompare, attachDrawings, attachIndicators, autoTimeframeFor, buildManifestPlots, canvasTheme, canvasToBlob, chartContextMenu, chartDictionaries, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createPriceFormatter, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerOverrides, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mergeOverrides, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, olderPageVerdict, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTickBands, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subTimeframesFor, subsessionBarFilter, symbolNames, tfSeconds, tfToUdfResolution, tickBandFor, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };
|