@trdrs/quickcharts 4.0.0 → 5.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 +106 -0
- package/README.md +325 -79
- package/dist/adapters/rest.d.ts +4 -4
- package/dist/adapters/rest.js +1 -1
- package/dist/adapters/rest.js.map +1 -1
- package/dist/ar-TG26ZCCE.js +1322 -0
- package/dist/ar-TG26ZCCE.js.map +1 -0
- package/dist/{assets-Gg-UquDA.d.ts → assets-DF3nozNV.d.ts} +167 -18
- package/dist/ca_ES-WJWH5BXU.js +1322 -0
- package/dist/ca_ES-WJWH5BXU.js.map +1 -0
- package/dist/{chunk-D3S26ARP.js → chunk-EXJAJZTN.js} +1 -1
- package/dist/chunk-EXJAJZTN.js.map +1 -0
- package/dist/{chunk-C4MEVUNK.js → chunk-Q3DCXQDW.js} +992 -284
- package/dist/chunk-Q3DCXQDW.js.map +1 -0
- package/dist/de-SUDTTPQ3.js +1322 -0
- package/dist/de-SUDTTPQ3.js.map +1 -0
- package/dist/drawings.d.ts +18 -7
- package/dist/drawings.js +7 -1
- package/dist/es-FOBXUK2X.js +1322 -0
- package/dist/es-FOBXUK2X.js.map +1 -0
- package/dist/feature-manifest.json +105 -9
- package/dist/fr-7KQC4IJH.js +1322 -0
- package/dist/fr-7KQC4IJH.js.map +1 -0
- package/dist/he_IL-2T6XBA6D.js +1322 -0
- package/dist/he_IL-2T6XBA6D.js.map +1 -0
- package/dist/id_ID-SI25N57C.js +1322 -0
- package/dist/id_ID-SI25N57C.js.map +1 -0
- package/dist/index.d.ts +952 -176
- package/dist/index.js +11905 -7472
- package/dist/index.js.map +1 -1
- package/dist/it-PMSTWZDL.js +1322 -0
- package/dist/it-PMSTWZDL.js.map +1 -0
- package/dist/ja-PABDRAXV.js +1322 -0
- package/dist/ja-PABDRAXV.js.map +1 -0
- package/dist/ko-JHRYYFCV.js +1322 -0
- package/dist/ko-JHRYYFCV.js.map +1 -0
- package/dist/ms_MY-U4EE5Q4V.js +1322 -0
- package/dist/ms_MY-U4EE5Q4V.js.map +1 -0
- package/dist/pl-4HCG3T3J.js +1322 -0
- package/dist/pl-4HCG3T3J.js.map +1 -0
- package/dist/pt-6LTNN653.js +1322 -0
- package/dist/pt-6LTNN653.js.map +1 -0
- package/dist/quickcharts.css +627 -208
- package/dist/{resources-Le6flcEn.d.ts → resources-XglhzzW0.d.ts} +5 -3
- package/dist/rest-openapi.json +16 -11
- package/dist/ru-LFHCSDBV.js +1322 -0
- package/dist/ru-LFHCSDBV.js.map +1 -0
- package/dist/sv-4XVUXYK6.js +1322 -0
- package/dist/sv-4XVUXYK6.js.map +1 -0
- package/dist/{symbols-6V22WaRX.d.ts → symbols-DdHLHQFC.d.ts} +77 -8
- package/dist/symbols.d.ts +1 -1
- package/dist/th-WM2PVA24.js +1322 -0
- package/dist/th-WM2PVA24.js.map +1 -0
- package/dist/theme-manifest.json +105 -21
- package/dist/tr-HMAZXSJM.js +1322 -0
- package/dist/tr-HMAZXSJM.js.map +1 -0
- package/dist/vi-ITFBV5B7.js +1322 -0
- package/dist/vi-ITFBV5B7.js.map +1 -0
- package/dist/zh-ZGU2RI7K.js +1322 -0
- package/dist/zh-ZGU2RI7K.js.map +1 -0
- package/dist/zh_TW-PNINSQ6F.js +1322 -0
- package/dist/zh_TW-PNINSQ6F.js.map +1 -0
- package/package.json +1 -1
- package/dist/ar-FXZ5QJUR.js +0 -1178
- package/dist/ar-FXZ5QJUR.js.map +0 -1
- package/dist/ca_ES-3WVKFBIF.js +0 -1178
- package/dist/ca_ES-3WVKFBIF.js.map +0 -1
- package/dist/chunk-C4MEVUNK.js.map +0 -1
- package/dist/chunk-D3S26ARP.js.map +0 -1
- package/dist/de-V72Q3OI7.js +0 -1178
- package/dist/de-V72Q3OI7.js.map +0 -1
- package/dist/es-CNQ3OJ6E.js +0 -1178
- package/dist/es-CNQ3OJ6E.js.map +0 -1
- package/dist/fr-5WQBCGR4.js +0 -1178
- package/dist/fr-5WQBCGR4.js.map +0 -1
- package/dist/he_IL-WXKA77UE.js +0 -1178
- package/dist/he_IL-WXKA77UE.js.map +0 -1
- package/dist/id_ID-XPBAYSWK.js +0 -1178
- package/dist/id_ID-XPBAYSWK.js.map +0 -1
- package/dist/it-DR2EBNWX.js +0 -1178
- package/dist/it-DR2EBNWX.js.map +0 -1
- package/dist/ja-URB2CPXO.js +0 -1178
- package/dist/ja-URB2CPXO.js.map +0 -1
- package/dist/ko-OE47NYVP.js +0 -1178
- package/dist/ko-OE47NYVP.js.map +0 -1
- package/dist/ms_MY-BKCFRK2K.js +0 -1178
- package/dist/ms_MY-BKCFRK2K.js.map +0 -1
- package/dist/pl-3IKQRG3Y.js +0 -1178
- package/dist/pl-3IKQRG3Y.js.map +0 -1
- package/dist/pt-PZHV5EZE.js +0 -1178
- package/dist/pt-PZHV5EZE.js.map +0 -1
- package/dist/ru-BAL6RQUV.js +0 -1178
- package/dist/ru-BAL6RQUV.js.map +0 -1
- package/dist/sv-Y6GBGDHM.js +0 -1178
- package/dist/sv-Y6GBGDHM.js.map +0 -1
- package/dist/th-MAMLMZKU.js +0 -1178
- package/dist/th-MAMLMZKU.js.map +0 -1
- package/dist/tr-3LQHINUZ.js +0 -1178
- package/dist/tr-3LQHINUZ.js.map +0 -1
- package/dist/vi-GR4PSDKP.js +0 -1178
- package/dist/vi-GR4PSDKP.js.map +0 -1
- package/dist/zh-2RJ5VNAI.js +0 -1178
- package/dist/zh-2RJ5VNAI.js.map +0 -1
- package/dist/zh_TW-XEBSACHU.js +0 -1178
- package/dist/zh_TW-XEBSACHU.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as ChartDatafeed, F as FeedBar, S as SymbolRow, D as DatafeedSearchOptions, a as SearchPage, b as SearchClassNode } from './symbols-
|
|
2
|
-
export { B as BarMark, c as BarsEvent, d as DatafeedConfig, e as FeedUnavailableError, H as HistoryPage,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export {
|
|
1
|
+
import { C as ChartDatafeed, M as MarkIconId, F as FeedBar, S as SymbolRow, D as DatafeedSearchOptions, a as SearchPage, b as SearchClassNode } from './symbols-DdHLHQFC.js';
|
|
2
|
+
export { B as BarMark, c as BarsEvent, d as DatafeedConfig, e as FeedUnavailableError, H as HistoryPage, f as MarkColor, g as MarkColorPair, h as MarkColorRole, i as MarkLine, j as MarkLineStyle, k as MarkPlacement, l as MarkShape, O as OlderPageVerdict, P as PricesHandlers, m as SubscribeHandlers, n as SymbolNames, o as SymbolPrices, T as TimescaleMark, p as olderPageVerdict, s as symbolNames } from './symbols-DdHLHQFC.js';
|
|
3
|
+
import { ao as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, Q as TextEditFrame, N as TextDraft, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, $ as VisibilityPreset, X as ToolPreset, Y as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-DF3nozNV.js';
|
|
4
|
+
import { b as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, h as DrawingResourceContext, R as ResourceStore, u as DrawingsMeta, j as DrawingsBody, T as TemplateMeta, a as TemplateBody, v as LayoutMeta, w as LayoutBody, e as DrawingContextKind } from './resources-XglhzzW0.js';
|
|
5
|
+
export { c as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, d as DRAWING_DOCUMENT_VERSION, f as DrawingEntry, g as DrawingGroup, i 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-XglhzzW0.js';
|
|
6
6
|
import { LineData, UTCTimestamp, HistogramData, WhitespaceData, IChartApi, ISeriesApi, CreatePriceLineOptions, PriceLineOptions, ISeriesPrimitive, Time, PriceScaleMode, SeriesType, SeriesAttachedParameter, TickMarkType } from 'lightweight-charts';
|
|
7
7
|
import { D as DataStatus, S as SymbolInfo, P as PriceFormat } from './symbology-D3SLclrU.js';
|
|
8
8
|
export { a as Subsession, b as SubsessionId, T as TickBand, p as parseTickBands, t as tickBandFor } from './symbology-D3SLclrU.js';
|
|
@@ -55,6 +55,11 @@ declare const THEME_ROLES: readonly [{
|
|
|
55
55
|
readonly family: "canvas";
|
|
56
56
|
readonly kind: "color";
|
|
57
57
|
readonly description: "The divider between stacked panes and around the plot area.";
|
|
58
|
+
}, {
|
|
59
|
+
readonly id: "canvas.watermark";
|
|
60
|
+
readonly family: "canvas";
|
|
61
|
+
readonly kind: "color";
|
|
62
|
+
readonly description: "The text a watermark writes large behind the bars.";
|
|
58
63
|
}, {
|
|
59
64
|
readonly id: "series.up";
|
|
60
65
|
readonly family: "series";
|
|
@@ -183,6 +188,15 @@ declare const THEME_ROLES: readonly [{
|
|
|
183
188
|
readonly over: "control.neutral";
|
|
184
189
|
readonly min: 4.5;
|
|
185
190
|
}];
|
|
191
|
+
}, {
|
|
192
|
+
readonly id: "text.caption";
|
|
193
|
+
readonly family: "text";
|
|
194
|
+
readonly kind: "color";
|
|
195
|
+
readonly description: "Ink of a dialog's section heading and of the hint line under a setting, which stand on the dialog's own surface and never under the pointer.";
|
|
196
|
+
readonly contrast: readonly [{
|
|
197
|
+
readonly over: "overlay.surface";
|
|
198
|
+
readonly min: 4.5;
|
|
199
|
+
}];
|
|
186
200
|
}, {
|
|
187
201
|
readonly id: "text.disabled";
|
|
188
202
|
readonly family: "text";
|
|
@@ -242,7 +256,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
242
256
|
readonly id: "text.fontSizeAxis";
|
|
243
257
|
readonly family: "text";
|
|
244
258
|
readonly kind: "length";
|
|
245
|
-
readonly description: "Size of
|
|
259
|
+
readonly description: "Size of the legend's reading of the bar. The price and time scales take their text size from the chart settings.";
|
|
246
260
|
}, {
|
|
247
261
|
readonly id: "text.fontSizeTitle";
|
|
248
262
|
readonly family: "text";
|
|
@@ -341,6 +355,20 @@ declare const THEME_ROLES: readonly [{
|
|
|
341
355
|
readonly family: "overlay";
|
|
342
356
|
readonly kind: "color";
|
|
343
357
|
readonly description: "The backdrop that dims the chart behind a modal dialog.";
|
|
358
|
+
}, {
|
|
359
|
+
readonly id: "overlay.tooltip";
|
|
360
|
+
readonly family: "overlay";
|
|
361
|
+
readonly kind: "color";
|
|
362
|
+
readonly description: "The fill of a short tooltip line.";
|
|
363
|
+
}, {
|
|
364
|
+
readonly id: "overlay.tooltipInk";
|
|
365
|
+
readonly family: "overlay";
|
|
366
|
+
readonly kind: "color";
|
|
367
|
+
readonly description: "The ink of a tooltip line.";
|
|
368
|
+
readonly contrast: readonly [{
|
|
369
|
+
readonly over: "overlay.tooltip";
|
|
370
|
+
readonly min: 4.5;
|
|
371
|
+
}];
|
|
344
372
|
}, {
|
|
345
373
|
readonly id: "state.accent";
|
|
346
374
|
readonly family: "state";
|
|
@@ -542,6 +570,20 @@ declare const THEME_ROLES: readonly [{
|
|
|
542
570
|
readonly family: "control";
|
|
543
571
|
readonly kind: "color";
|
|
544
572
|
readonly description: "The fill of a field that is read-only or disabled.";
|
|
573
|
+
}, {
|
|
574
|
+
readonly id: "control.tipMark";
|
|
575
|
+
readonly family: "control";
|
|
576
|
+
readonly kind: "color";
|
|
577
|
+
readonly description: "The mark of a tip beside a setting's label, such as a question mark, at rest.";
|
|
578
|
+
}, {
|
|
579
|
+
readonly id: "control.tipMarkHover";
|
|
580
|
+
readonly family: "control";
|
|
581
|
+
readonly kind: "color";
|
|
582
|
+
readonly description: "The mark of a tip under the pointer.";
|
|
583
|
+
readonly contrast: readonly [{
|
|
584
|
+
readonly over: "overlay.surface";
|
|
585
|
+
readonly min: 3;
|
|
586
|
+
}];
|
|
545
587
|
}, {
|
|
546
588
|
readonly id: "status.positive";
|
|
547
589
|
readonly family: "status";
|
|
@@ -871,9 +913,16 @@ interface DictionaryLoader<Source extends Catalog, Code extends string = ChartLo
|
|
|
871
913
|
has(code: Code): boolean;
|
|
872
914
|
}
|
|
873
915
|
|
|
916
|
+
declare const KEYS_ADDED_IN_MAJOR: readonly ["chrome.autoScale", "chrome.autoScaleMark", "chrome.currencyAndUnit", "chrome.deletePane", "chrome.logScale", "chrome.logScaleMark", "chrome.paneButtons", "chrome.priceLevelMenu", "chrome.scaleAsk", "chrome.scaleBid", "chrome.scaleHigh", "chrome.scaleLow", "chrome.scaleModes", "command.drawingPlaceHorizontalLine", "command.marksRefresh", "history.changeMovePane", "legend.movePaneDown", "legend.movePaneUp", "menu.drawHorizontalLine"];
|
|
917
|
+
type KeyAddedInMajor = (typeof KEYS_ADDED_IN_MAJOR)[number];
|
|
918
|
+
|
|
874
919
|
type ChartTranslate = Translate<typeof en>;
|
|
875
|
-
/** The widget's catalog in one language
|
|
876
|
-
|
|
920
|
+
/** The widget's catalog in one language, as a dictionary of your own supplies it: the keys of the
|
|
921
|
+
* English source in the same shape, a string for a string and a plural for a plural. Every key of
|
|
922
|
+
* the major's first release is required. A key the catalog gains within the major is optional:
|
|
923
|
+
* until your dictionary carries it, the chart reads it in English and reports it to `onMissing`,
|
|
924
|
+
* and the next major makes it required. Each built-in language carries every key. */
|
|
925
|
+
type ChartDictionary = Omit<Translation<typeof en>, KeyAddedInMajor> & Partial<Pick<Translation<typeof en>, KeyAddedInMajor>>;
|
|
877
926
|
/** A locale a host adds beyond the built-in inventory: its stable code, canonical BCP 47 tag,
|
|
878
927
|
* reading direction, endonym, and the dictionary chunk to fetch the first time it is chosen. */
|
|
879
928
|
interface ChartCustomLocale extends LocaleDefinition {
|
|
@@ -885,8 +934,9 @@ interface ChartI18nOptions {
|
|
|
885
934
|
/** Locales registered beside the built-in inventory. A code or tag the inventory already holds
|
|
886
935
|
* is refused: the built-in dictionaries are not overridden through this door. */
|
|
887
936
|
locales?: readonly ChartCustomLocale[];
|
|
888
|
-
/** Hears every key a loaded dictionary is missing; the text falls back to English.
|
|
889
|
-
*
|
|
937
|
+
/** Hears every key a loaded dictionary is missing; the text falls back to English. A built-in
|
|
938
|
+
* language carries every key, so this reports a dictionary of your own: one loaded from data,
|
|
939
|
+
* or one without a key the catalog gained within the major. */
|
|
890
940
|
onMissing?: (key: ChartMessageKey, locale: string) => void;
|
|
891
941
|
}
|
|
892
942
|
interface ChartI18n {
|
|
@@ -917,19 +967,143 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
917
967
|
readonly other: "{count} indicators in this saved chart are not available here and were left out.";
|
|
918
968
|
};
|
|
919
969
|
readonly 'settings.menu': "Chart settings";
|
|
920
|
-
readonly 'settings.
|
|
970
|
+
readonly 'settings.pageSymbol': "Symbol";
|
|
971
|
+
readonly 'settings.pageStatusLine': "Status line";
|
|
972
|
+
readonly 'settings.pageScales': "Scales and lines";
|
|
973
|
+
readonly 'settings.pageCanvas': "Canvas";
|
|
974
|
+
readonly 'settings.pageEvents': "Events";
|
|
975
|
+
readonly 'settings.headingCandles': "Candles";
|
|
976
|
+
readonly 'settings.headingHollowCandles': "Hollow candles";
|
|
977
|
+
readonly 'settings.headingBars': "Bars";
|
|
978
|
+
readonly 'settings.headingLine': "Line";
|
|
979
|
+
readonly 'settings.headingStepLine': "Step line";
|
|
980
|
+
readonly 'settings.headingArea': "Area";
|
|
981
|
+
readonly 'settings.headingBaseline': "Baseline";
|
|
982
|
+
readonly 'settings.colorOnPreviousClose': "Color bars based on previous close";
|
|
983
|
+
readonly 'settings.body': "Body";
|
|
984
|
+
readonly 'settings.borders': "Borders";
|
|
985
|
+
readonly 'settings.wick': "Wick";
|
|
986
|
+
readonly 'settings.hlcBars': "HLC bars";
|
|
987
|
+
readonly 'settings.upColor': "Up color";
|
|
988
|
+
readonly 'settings.downColor': "Down color";
|
|
989
|
+
readonly 'settings.thinBars': "Thin bars";
|
|
990
|
+
readonly 'settings.priceSource': "Price source";
|
|
991
|
+
readonly 'settings.sourceOpen': "Open";
|
|
992
|
+
readonly 'settings.sourceHigh': "High";
|
|
993
|
+
readonly 'settings.sourceLow': "Low";
|
|
994
|
+
readonly 'settings.sourceClose': "Close";
|
|
995
|
+
readonly 'settings.sourceHl2': "(H + L)/2";
|
|
996
|
+
readonly 'settings.sourceHlc3': "(H + L + C)/3";
|
|
997
|
+
readonly 'settings.sourceOhlc4': "(O + H + L + C)/4";
|
|
998
|
+
readonly 'settings.sourceHlcc4': "(H + L + C + C)/4";
|
|
999
|
+
readonly 'settings.lineRow': "Line";
|
|
1000
|
+
readonly 'settings.colorSolid': "Solid";
|
|
1001
|
+
readonly 'settings.colorGradient': "Gradient";
|
|
1002
|
+
readonly 'settings.fill': "Fill";
|
|
1003
|
+
readonly 'settings.topLine': "Top line";
|
|
1004
|
+
readonly 'settings.bottomLine': "Bottom line";
|
|
1005
|
+
readonly 'settings.fillTopArea': "Fill top area";
|
|
1006
|
+
readonly 'settings.fillBottomArea': "Fill bottom area";
|
|
1007
|
+
readonly 'settings.baseLevel': "Base level";
|
|
1008
|
+
readonly 'settings.headingDataModification': "Data modification";
|
|
1009
|
+
readonly 'settings.session': "Session";
|
|
1010
|
+
readonly 'settings.sessionRegular': "Regular";
|
|
1011
|
+
readonly 'settings.sessionExtended': "Extended";
|
|
1012
|
+
readonly 'settings.sessionAllHours': "24 hours";
|
|
1013
|
+
readonly 'settings.extendedHoursBackground': "Pre/post market hours background";
|
|
1014
|
+
readonly 'settings.allHoursBackground': "Pre/post/night market hours background";
|
|
1015
|
+
readonly 'settings.preMarket': "Pre-market";
|
|
1016
|
+
readonly 'settings.postMarket': "Post-market";
|
|
1017
|
+
readonly 'settings.night': "Night";
|
|
1018
|
+
readonly 'settings.precision': "Precision";
|
|
1019
|
+
readonly 'settings.precisionDefault': "Default";
|
|
1020
|
+
readonly 'settings.precisionInteger': "Integer";
|
|
1021
|
+
readonly 'settings.precisionDecimals': {
|
|
1022
|
+
readonly one: "{count} decimal";
|
|
1023
|
+
readonly other: "{count} decimals";
|
|
1024
|
+
};
|
|
1025
|
+
readonly 'settings.headingInstrument': "Instrument";
|
|
1026
|
+
readonly 'settings.logo': "Logo";
|
|
1027
|
+
readonly 'settings.title': "Title";
|
|
1028
|
+
readonly 'settings.titleName': "Name";
|
|
1029
|
+
readonly 'settings.titleSymbol': "Symbol";
|
|
1030
|
+
readonly 'settings.titleSymbolAndName': "Symbol and name";
|
|
1031
|
+
readonly 'settings.chartValues': "Chart values";
|
|
1032
|
+
readonly 'settings.barChangeValues': "Bar change values";
|
|
1033
|
+
readonly 'settings.volume': "Volume";
|
|
1034
|
+
readonly 'settings.lastDayChangeValues': "Last day change values";
|
|
1035
|
+
readonly 'settings.headingIndicators': "Indicators";
|
|
1036
|
+
readonly 'settings.indicatorTitles': "Titles";
|
|
1037
|
+
readonly 'settings.indicatorInputs': "Inputs";
|
|
1038
|
+
readonly 'settings.indicatorValues': "Values";
|
|
921
1039
|
readonly 'settings.background': "Background";
|
|
922
|
-
readonly 'settings.upCandles': "Up candles";
|
|
923
|
-
readonly 'settings.downCandles': "Down candles";
|
|
924
|
-
readonly 'settings.upBorders': "Up borders";
|
|
925
|
-
readonly 'settings.downBorders': "Down borders";
|
|
926
|
-
readonly 'settings.upWicks': "Up wicks";
|
|
927
|
-
readonly 'settings.downWicks': "Down wicks";
|
|
928
|
-
readonly 'settings.sectionDisplay': "Display";
|
|
929
|
-
readonly 'settings.gridLines': "Grid lines";
|
|
930
|
-
readonly 'settings.sessionShading': "Session shading";
|
|
931
1040
|
readonly 'settings.sectionScale': "Price scale";
|
|
932
|
-
readonly 'settings.
|
|
1041
|
+
readonly 'settings.currencyAndUnit': "Currency and Unit";
|
|
1042
|
+
readonly 'settings.scaleModes': "Scale modes (A and L)";
|
|
1043
|
+
readonly 'settings.visibleOnMouseOver': "Visible on mouse over";
|
|
1044
|
+
readonly 'settings.alwaysVisible': "Always visible";
|
|
1045
|
+
readonly 'settings.alwaysInvisible': "Always invisible";
|
|
1046
|
+
readonly 'settings.lockPriceToBarRatio': "Lock price to bar ratio";
|
|
1047
|
+
readonly 'settings.scalesPlacement': "Scales placement";
|
|
1048
|
+
readonly 'settings.placementLeft': "Stack on the left";
|
|
1049
|
+
readonly 'settings.placementRight': "Stack on the right";
|
|
1050
|
+
readonly 'settings.placementAuto': "Auto";
|
|
1051
|
+
readonly 'settings.headingPriceLabels': "Price labels & lines";
|
|
1052
|
+
readonly 'settings.noOverlappingLabels': "No overlapping labels";
|
|
1053
|
+
readonly 'settings.plusButton': "Plus button";
|
|
1054
|
+
readonly 'settings.plusButtonTip': "Shows a plus beside the price under the crosshair, which opens the menu for that price";
|
|
1055
|
+
readonly 'settings.countdown': "Countdown to bar close";
|
|
1056
|
+
readonly 'settings.symbolLabel': "Symbol";
|
|
1057
|
+
readonly 'settings.labelName': "Name";
|
|
1058
|
+
readonly 'settings.labelValue': "Value";
|
|
1059
|
+
readonly 'settings.labelLine': "Line";
|
|
1060
|
+
readonly 'settings.hidden': "Hidden";
|
|
1061
|
+
readonly 'settings.lastValueMode': "Last value label";
|
|
1062
|
+
readonly 'settings.valueByScale': "Value according to scale";
|
|
1063
|
+
readonly 'settings.priceAndPercent': "Price and percentage value";
|
|
1064
|
+
readonly 'settings.indicatorsAndFinancials': "Indicators and financials";
|
|
1065
|
+
readonly 'settings.extendedHoursLabels': "Pre/post/night market";
|
|
1066
|
+
readonly 'settings.previousDayClose': "Previous day close";
|
|
1067
|
+
readonly 'settings.highAndLow': "High and low";
|
|
1068
|
+
readonly 'settings.bidAndAsk': "Bid and ask";
|
|
1069
|
+
readonly 'settings.bid': "Bid";
|
|
1070
|
+
readonly 'settings.ask': "Ask";
|
|
1071
|
+
readonly 'settings.headingTimeScale': "Time scale";
|
|
1072
|
+
readonly 'settings.dayOfWeek': "Day of week on labels";
|
|
1073
|
+
readonly 'settings.dateFormat': "Date format";
|
|
1074
|
+
readonly 'settings.timeHoursFormat': "Time hours format";
|
|
1075
|
+
readonly 'settings.hours24': "24-hours";
|
|
1076
|
+
readonly 'settings.hours12': "12-hours";
|
|
1077
|
+
readonly 'settings.keepLeftEdge': "Save chart left edge position when changing interval";
|
|
1078
|
+
readonly 'settings.headingChartStyles': "Chart basic styles";
|
|
1079
|
+
readonly 'settings.verticalGrid': "Vertical grid lines";
|
|
1080
|
+
readonly 'settings.horizontalGrid': "Horizontal grid lines";
|
|
1081
|
+
readonly 'settings.crosshair': "Crosshair";
|
|
1082
|
+
readonly 'settings.watermark': "Watermark";
|
|
1083
|
+
readonly 'settings.watermarkTicker': "Ticker";
|
|
1084
|
+
readonly 'settings.watermarkInterval': "Interval";
|
|
1085
|
+
readonly 'settings.watermarkDescription': "Description";
|
|
1086
|
+
readonly 'settings.watermarkReplay': "Replay mode";
|
|
1087
|
+
readonly 'settings.headingScales': "Scales";
|
|
1088
|
+
readonly 'settings.scaleText': "Text";
|
|
1089
|
+
readonly 'settings.scaleLines': "Lines";
|
|
1090
|
+
readonly 'settings.headingButtons': "Buttons";
|
|
1091
|
+
readonly 'settings.navigationButtons': "Navigation";
|
|
1092
|
+
readonly 'settings.paneButtons': "Pane";
|
|
1093
|
+
readonly 'settings.headingMargins': "Margins";
|
|
1094
|
+
readonly 'settings.marginTop': "Top";
|
|
1095
|
+
readonly 'settings.marginBottom': "Bottom";
|
|
1096
|
+
readonly 'settings.marginRight': "Right";
|
|
1097
|
+
readonly 'settings.unitPercent': "%";
|
|
1098
|
+
readonly 'settings.unitBars': "bars";
|
|
1099
|
+
readonly 'settings.sessionBreaks': "Session breaks";
|
|
1100
|
+
readonly 'settings.upColorOf': "{name} up color";
|
|
1101
|
+
readonly 'settings.downColorOf': "{name} down color";
|
|
1102
|
+
readonly 'settings.topColorOf': "{name} top color";
|
|
1103
|
+
readonly 'settings.bottomColorOf': "{name} bottom color";
|
|
1104
|
+
readonly 'settings.learnMore': "Learn more";
|
|
1105
|
+
readonly 'settings.saveTemplate': "Save chart template";
|
|
1106
|
+
readonly 'settings.deleteTemplateBody': "Doing this will permanently delete your \"{name}\" chart template.";
|
|
933
1107
|
readonly 'settings.indicatorTitle': "{name} settings";
|
|
934
1108
|
readonly 'settings.tabInputs': "Inputs";
|
|
935
1109
|
readonly 'settings.tabStyle': "Style";
|
|
@@ -944,8 +1118,6 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
944
1118
|
readonly 'settings.lineStyleSolid': "Solid";
|
|
945
1119
|
readonly 'settings.lineStyleDashed': "Dashed";
|
|
946
1120
|
readonly 'settings.lineStyleDotted': "Dotted";
|
|
947
|
-
readonly 'settings.precision': "Precision";
|
|
948
|
-
readonly 'settings.precisionDefault': "Default";
|
|
949
1121
|
readonly 'settings.labelsOnPriceScale': "Labels on price scale";
|
|
950
1122
|
readonly 'settings.showIndicator': "Show this indicator";
|
|
951
1123
|
readonly 'picker.title': "Indicators";
|
|
@@ -971,13 +1143,14 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
971
1143
|
readonly 'history.changeTimeframe': "timeframe change";
|
|
972
1144
|
readonly 'history.changeChartStyle': "chart style change";
|
|
973
1145
|
readonly 'history.changePriceScale': "price scale change";
|
|
974
|
-
readonly 'history.
|
|
1146
|
+
readonly 'history.changeSettings': "settings change";
|
|
975
1147
|
readonly 'history.changeAddCompare': "add comparison";
|
|
976
1148
|
readonly 'history.changeRemoveCompare': "remove comparison";
|
|
977
1149
|
readonly 'history.changeCompare': "comparison change";
|
|
978
1150
|
readonly 'history.changeAddIndicator': "add indicator";
|
|
979
1151
|
readonly 'history.changeRemoveIndicator': "remove indicator";
|
|
980
1152
|
readonly 'history.changeIndicator': "indicator change";
|
|
1153
|
+
readonly 'history.changeMovePane': "move pane";
|
|
981
1154
|
readonly 'history.changeAddDrawing': "add drawing";
|
|
982
1155
|
readonly 'history.changeRemoveDrawing': "remove drawing";
|
|
983
1156
|
readonly 'history.changeDrawing': "drawing change";
|
|
@@ -994,6 +1167,19 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
994
1167
|
readonly 'chrome.sessionsHeading': "Sessions";
|
|
995
1168
|
readonly 'chrome.navigation': "Chart navigation";
|
|
996
1169
|
readonly 'chrome.activeChart': "{symbol}, {timeframe}";
|
|
1170
|
+
readonly 'chrome.scaleHigh': "High";
|
|
1171
|
+
readonly 'chrome.scaleLow': "Low";
|
|
1172
|
+
readonly 'chrome.scaleBid': "Bid";
|
|
1173
|
+
readonly 'chrome.scaleAsk': "Ask";
|
|
1174
|
+
readonly 'chrome.scaleModes': "Scale modes";
|
|
1175
|
+
readonly 'chrome.autoScale': "Auto scale";
|
|
1176
|
+
readonly 'chrome.autoScaleMark': "A";
|
|
1177
|
+
readonly 'chrome.logScale': "Logarithmic scale";
|
|
1178
|
+
readonly 'chrome.logScaleMark': "L";
|
|
1179
|
+
readonly 'chrome.currencyAndUnit': "{currency} · {unit}";
|
|
1180
|
+
readonly 'chrome.priceLevelMenu': "Price actions";
|
|
1181
|
+
readonly 'chrome.paneButtons': "Pane";
|
|
1182
|
+
readonly 'chrome.deletePane': "Delete pane";
|
|
997
1183
|
readonly 'command.extension': "Host command";
|
|
998
1184
|
readonly 'command.viewReset': "Reset view";
|
|
999
1185
|
readonly 'command.viewGoLive': "Go to the live edge";
|
|
@@ -1002,6 +1188,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1002
1188
|
readonly 'command.viewScrollLeft': "Scroll back";
|
|
1003
1189
|
readonly 'command.viewScrollRight': "Scroll forward";
|
|
1004
1190
|
readonly 'command.priceCopy': "Copy price";
|
|
1191
|
+
readonly 'command.marksRefresh': "Refresh marks";
|
|
1005
1192
|
readonly 'command.symbolSet': "Change symbol";
|
|
1006
1193
|
readonly 'command.styleCandles': "Candles";
|
|
1007
1194
|
readonly 'command.styleHollow': "Hollow candles";
|
|
@@ -1010,8 +1197,8 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1010
1197
|
readonly 'command.styleArea': "Area";
|
|
1011
1198
|
readonly 'command.styleBaseline': "Baseline";
|
|
1012
1199
|
readonly 'command.styleStepline': "Step line";
|
|
1013
|
-
readonly 'command.
|
|
1014
|
-
readonly 'command.
|
|
1200
|
+
readonly 'command.settingsApply': "Apply chart settings";
|
|
1201
|
+
readonly 'command.settingsReset': "Apply defaults";
|
|
1015
1202
|
readonly 'command.scaleNormal': "Regular price scale";
|
|
1016
1203
|
readonly 'command.scaleLog': "Logarithmic price scale";
|
|
1017
1204
|
readonly 'command.scalePercent': "Percentage price scale";
|
|
@@ -1051,6 +1238,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1051
1238
|
readonly 'command.drawingSettings': "Drawing settings";
|
|
1052
1239
|
readonly 'command.drawingCommitEdit': "Apply drawing settings";
|
|
1053
1240
|
readonly 'command.drawingPlaceImage': "Place image";
|
|
1241
|
+
readonly 'command.drawingPlaceHorizontalLine': "Place horizontal line";
|
|
1054
1242
|
readonly 'command.drawingTemplateApply': "Apply drawing template";
|
|
1055
1243
|
readonly 'command.drawingTemplateSave': "Save drawing template";
|
|
1056
1244
|
readonly 'command.drawingTemplateRemove': "Remove drawing template";
|
|
@@ -1083,6 +1271,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1083
1271
|
readonly 'command.themeDark': "Dark theme";
|
|
1084
1272
|
readonly 'command.themeToggle': "Switch theme";
|
|
1085
1273
|
readonly 'command.themeSet': "Set theme";
|
|
1274
|
+
readonly 'command.settingsOpen': "Chart settings";
|
|
1086
1275
|
readonly 'command.localeSet': "Language";
|
|
1087
1276
|
readonly 'command.fullscreenEnter': "Fullscreen";
|
|
1088
1277
|
readonly 'command.fullscreenExit': "Exit fullscreen";
|
|
@@ -1207,6 +1396,8 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1207
1396
|
readonly 'drawing.modifierCommand': "Cmd";
|
|
1208
1397
|
readonly 'drawing.hintClone': "{modifier} + Drag";
|
|
1209
1398
|
readonly 'drawing.hintCopy': "{modifier} + C";
|
|
1399
|
+
readonly 'drawing.hintRemove': "Del";
|
|
1400
|
+
readonly 'drawing.drawingMenu': "Drawing menu";
|
|
1210
1401
|
readonly 'drawing.hintPaste': "{modifier} + V";
|
|
1211
1402
|
readonly 'drawing.deleteWithKey': "Delete (Del)";
|
|
1212
1403
|
readonly 'drawing.statusDrawingsHidden': "Drawings hidden";
|
|
@@ -1297,6 +1488,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1297
1488
|
readonly 'drawing.sectionInfo': "Info";
|
|
1298
1489
|
readonly 'drawing.priceRange': "Price range";
|
|
1299
1490
|
readonly 'drawing.barsRange': "Bars range";
|
|
1491
|
+
readonly 'drawing.distance': "Distance";
|
|
1300
1492
|
readonly 'drawing.angle': "Angle";
|
|
1301
1493
|
readonly 'drawing.statsPosition': "Stats position";
|
|
1302
1494
|
readonly 'drawing.statsHidden': "Hidden";
|
|
@@ -1641,6 +1833,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1641
1833
|
readonly 'range.restoreChart': "Restore chart";
|
|
1642
1834
|
readonly 'timezone.title': "Chart timezone";
|
|
1643
1835
|
readonly 'timezone.exchange': "Exchange";
|
|
1836
|
+
readonly 'timezone.quarter': "Q{quarter}";
|
|
1644
1837
|
readonly 'timeframe.title': "Timeframe";
|
|
1645
1838
|
readonly 'timeframe.all': "All timeframes";
|
|
1646
1839
|
readonly 'timeframe.unitTicks': "Ticks";
|
|
@@ -1936,6 +2129,7 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
1936
2129
|
readonly other: "Remove {count} drawings";
|
|
1937
2130
|
};
|
|
1938
2131
|
readonly 'menu.settings': "Settings…";
|
|
2132
|
+
readonly 'menu.drawHorizontalLine': "Draw horizontal line at {price}";
|
|
1939
2133
|
readonly 'tool.trend_line': "Trend line";
|
|
1940
2134
|
readonly 'tool.ray': "Ray";
|
|
1941
2135
|
readonly 'tool.info_line': "Info line";
|
|
@@ -2030,12 +2224,15 @@ declare const chartDictionaries: DictionaryLoader<{
|
|
|
2030
2224
|
readonly 'legend.low': "L";
|
|
2031
2225
|
readonly 'legend.close': "C";
|
|
2032
2226
|
readonly 'legend.change': "{change} ({percent}%)";
|
|
2227
|
+
readonly 'legend.volume': "Vol";
|
|
2033
2228
|
readonly 'legend.indicatorSettings': "Indicator settings";
|
|
2034
2229
|
readonly 'legend.showRows': "Show indicator rows";
|
|
2035
2230
|
readonly 'legend.hideRows': "Hide indicator rows";
|
|
2036
2231
|
readonly 'legend.restorePane': "Restore pane";
|
|
2037
2232
|
readonly 'legend.collapsePane': "Collapse pane";
|
|
2038
2233
|
readonly 'legend.maximizePane': "Maximize pane";
|
|
2234
|
+
readonly 'legend.movePaneUp': "Move pane up";
|
|
2235
|
+
readonly 'legend.movePaneDown': "Move pane down";
|
|
2039
2236
|
readonly 'legend.showIndicator': "Show indicator";
|
|
2040
2237
|
readonly 'legend.hideIndicator': "Hide indicator";
|
|
2041
2238
|
readonly 'legend.scaleNormal': "Reg";
|
|
@@ -2244,42 +2441,246 @@ interface Glyph {
|
|
|
2244
2441
|
size?: number;
|
|
2245
2442
|
}
|
|
2246
2443
|
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2444
|
+
/** When an on-chart control shows: while the pointer is over its area, always, or never. */
|
|
2445
|
+
type ChartControlVisibility = 'hover' | 'always' | 'never';
|
|
2446
|
+
/** How a line is stroked. */
|
|
2447
|
+
type ChartStrokeStyle = 'solid' | 'dashed' | 'dotted';
|
|
2448
|
+
/** Which bar value a single-value style draws. */
|
|
2449
|
+
type ChartPriceSource = 'open' | 'high' | 'low' | 'close' | 'hl2' | 'hlc3' | 'ohlc4' | 'hlcc4';
|
|
2450
|
+
/** How prices are written: the symbol's own precision, a fixed count of decimals (0 to 15), or a
|
|
2451
|
+
* fraction of a whole (halves through 320ths). */
|
|
2452
|
+
type ChartPricePrecision = 'default' | `${0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15}` | `1/${2 | 4 | 8 | 16 | 32 | 64 | 128 | 320}`;
|
|
2453
|
+
/** The text a legend titles the symbol with. */
|
|
2454
|
+
type ChartTitleSource = 'name' | 'symbol' | 'symbolAndName';
|
|
2455
|
+
/** What the symbol's last-value label on the price scale holds: the value as the scale states it,
|
|
2456
|
+
* or the price with its percentage change beneath it. */
|
|
2457
|
+
type ChartLastValueMode = 'scale' | 'priceAndPercent';
|
|
2458
|
+
/** Where the price scales stand: stacked on the left, stacked on the right, or wherever each
|
|
2459
|
+
* series' scale belongs. */
|
|
2460
|
+
type ChartScalePlacement = 'left' | 'right' | 'auto';
|
|
2461
|
+
/** How the crosshair's time label writes a date, in the date's own order and separators. `qq` is the
|
|
2462
|
+
* quarter (Q3), `MMM` the month's short name, `MM` and `dd` two-digit numbers, `d` the day without a
|
|
2463
|
+
* leading zero, `yyyy` the whole year and `'yy` an apostrophe before its last two digits. The
|
|
2464
|
+
* weekday is not a part of any pattern: `timeScale.dayOfWeek` writes it before the date. */
|
|
2465
|
+
type ChartDateFormat = "qq 'yy" | 'qq yyyy' | "dd MMM 'yy" | "MMM 'yy" | 'MMM dd, yyyy' | 'MMM d, yyyy' | 'MMM yyyy' | 'MMM dd' | 'dd MMM' | 'yyyy-MM-dd' | 'yy-MM-dd' | 'yy/MM/dd' | 'yyyy/MM/dd' | 'dd-MM-yyyy' | 'dd-MM-yy' | 'dd/MM/yy' | 'dd/MM/yyyy' | 'MM/dd/yy' | 'MM/dd/yyyy';
|
|
2466
|
+
/** The date formats the time label writes, in the order a picker offers them. */
|
|
2467
|
+
declare const CHART_DATE_FORMATS: readonly ChartDateFormat[];
|
|
2468
|
+
/** A clock of 24 hours or of 12 with a day half. */
|
|
2469
|
+
type ChartHoursFormat = '24' | '12';
|
|
2470
|
+
/** The chart's background: one color, or a vertical gradient from the top color to the bottom. */
|
|
2471
|
+
type ChartBackgroundType = 'solid' | 'gradient';
|
|
2472
|
+
/** How a single-value line is colored: one color, or a vertical gradient from the top color at the
|
|
2473
|
+
* highest price on screen to the bottom color at the lowest. */
|
|
2474
|
+
type ChartLineColorType = 'solid' | 'gradient';
|
|
2475
|
+
/** Which trading hours an intraday chart shows: regular hours alone, regular hours with the pre-
|
|
2476
|
+
* and post-market stretches, or every stretch the symbol trades including the overnight one. */
|
|
2477
|
+
type ChartSessionHours = 'regular' | 'extended' | 'allHours';
|
|
2478
|
+
/** A single-value line style: the line and the step line share it. */
|
|
2479
|
+
interface LineStyleSettings {
|
|
2480
|
+
priceSource: ChartPriceSource;
|
|
2481
|
+
colorType: ChartLineColorType;
|
|
2482
|
+
/** The solid color. */
|
|
2483
|
+
color: string;
|
|
2484
|
+
/** The gradient's color at the highest price on screen. */
|
|
2485
|
+
gradientTopColor: string;
|
|
2486
|
+
/** The gradient's color at the lowest price on screen. */
|
|
2487
|
+
gradientBottomColor: string;
|
|
2488
|
+
lineStyle: ChartStrokeStyle;
|
|
2489
|
+
lineWidth: number;
|
|
2490
|
+
}
|
|
2491
|
+
/** The candle family: candles and hollow candles share it. */
|
|
2492
|
+
interface CandleStyleSettings {
|
|
2493
|
+
/** Color each bar by its close against the previous bar's close, rather than against its own open. */
|
|
2494
|
+
colorOnPreviousClose: boolean;
|
|
2495
|
+
/** Fill the body. Off leaves the body hollow, so only its border and wick stand. */
|
|
2496
|
+
body: boolean;
|
|
2497
|
+
upColor: string;
|
|
2498
|
+
downColor: string;
|
|
2499
|
+
borders: boolean;
|
|
2500
|
+
borderUpColor: string;
|
|
2501
|
+
borderDownColor: string;
|
|
2502
|
+
wick: boolean;
|
|
2503
|
+
wickUpColor: string;
|
|
2504
|
+
wickDownColor: string;
|
|
2505
|
+
}
|
|
2506
|
+
/** Every setting of a chart. */
|
|
2507
|
+
interface ChartSettings {
|
|
2508
|
+
candles: CandleStyleSettings;
|
|
2509
|
+
hollowCandles: Omit<CandleStyleSettings, 'colorOnPreviousClose'>;
|
|
2510
|
+
bars: {
|
|
2511
|
+
colorOnPreviousClose: boolean;
|
|
2512
|
+
/** Draw high, low and close only: the open tick is left off. */
|
|
2513
|
+
hlcBars: boolean;
|
|
2250
2514
|
upColor: string;
|
|
2251
2515
|
downColor: string;
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
/**
|
|
2516
|
+
thinBars: boolean;
|
|
2517
|
+
};
|
|
2518
|
+
line: LineStyleSettings;
|
|
2519
|
+
stepLine: LineStyleSettings;
|
|
2520
|
+
area: {
|
|
2521
|
+
priceSource: ChartPriceSource;
|
|
2522
|
+
lineColor: string;
|
|
2523
|
+
lineStyle: ChartStrokeStyle;
|
|
2524
|
+
lineWidth: number;
|
|
2525
|
+
/** The fill's color at the line, fading to `bottomColor` at the pane's foot. */
|
|
2526
|
+
topColor: string;
|
|
2527
|
+
bottomColor: string;
|
|
2528
|
+
};
|
|
2529
|
+
baseline: {
|
|
2530
|
+
priceSource: ChartPriceSource;
|
|
2531
|
+
topLineColor: string;
|
|
2532
|
+
topLineWidth: number;
|
|
2533
|
+
/** The fill above the base level: its color at the line, fading to the second at the base. */
|
|
2534
|
+
topFillColor1: string;
|
|
2535
|
+
topFillColor2: string;
|
|
2536
|
+
bottomLineColor: string;
|
|
2537
|
+
bottomLineWidth: number;
|
|
2538
|
+
/** The fill below the base level: its color at the base, deepening to the second at the line. */
|
|
2539
|
+
bottomFillColor1: string;
|
|
2540
|
+
bottomFillColor2: string;
|
|
2541
|
+
/** Where the base level stands, as a percentage of the pane's height from its foot. */
|
|
2542
|
+
baseLevelPercentage: number;
|
|
2543
|
+
};
|
|
2544
|
+
/** Settings of the charted symbol that hold whatever its style. */
|
|
2545
|
+
symbol: {
|
|
2546
|
+
/** Which trading hours an intraday chart shows. A stretch outside regular hours is shaded in its
|
|
2547
|
+
* own color below. */
|
|
2548
|
+
session: ChartSessionHours;
|
|
2549
|
+
/** The shading over the pre-market stretch. */
|
|
2550
|
+
preMarketColor: string;
|
|
2551
|
+
/** The shading over the post-market stretch. */
|
|
2552
|
+
postMarketColor: string;
|
|
2553
|
+
/** The shading over the overnight stretch, under `allHours`. */
|
|
2554
|
+
nightColor: string;
|
|
2555
|
+
precision: ChartPricePrecision;
|
|
2556
|
+
};
|
|
2557
|
+
/** The legend over the pane that names the symbol and states its values. */
|
|
2558
|
+
statusLine: {
|
|
2559
|
+
logo: boolean;
|
|
2560
|
+
title: boolean;
|
|
2561
|
+
titleSource: ChartTitleSource;
|
|
2562
|
+
/** The bar's open, high, low and close. */
|
|
2563
|
+
chartValues: boolean;
|
|
2564
|
+
/** The bar's change and percentage change. */
|
|
2565
|
+
barChange: boolean;
|
|
2566
|
+
volume: boolean;
|
|
2567
|
+
/** The change since the previous session's close, from the datafeed's quotes. */
|
|
2568
|
+
lastDayChange: boolean;
|
|
2569
|
+
/** An indicator row's title. */
|
|
2570
|
+
indicatorTitles: boolean;
|
|
2571
|
+
/** An indicator row's inputs, after its title. */
|
|
2572
|
+
indicatorInputs: boolean;
|
|
2573
|
+
/** An indicator row's values. */
|
|
2574
|
+
indicatorValues: boolean;
|
|
2575
|
+
background: boolean;
|
|
2576
|
+
/** The background's opacity, 0 to 100. */
|
|
2577
|
+
backgroundOpacity: number;
|
|
2578
|
+
};
|
|
2579
|
+
priceScale: {
|
|
2580
|
+
/** The currency and unit box at the top of the price scale. */
|
|
2581
|
+
currencyAndUnit: ChartControlVisibility;
|
|
2582
|
+
/** The auto-scale and logarithmic buttons at the foot of the price scale. */
|
|
2583
|
+
scaleModeButtons: ChartControlVisibility;
|
|
2584
|
+
/** Hold the price-to-bar ratio while the time scale zooms. */
|
|
2585
|
+
lockPriceToBarRatio: boolean;
|
|
2586
|
+
/** The held ratio, or null to take the ratio the chart shows when the lock engages. */
|
|
2587
|
+
priceToBarRatio: number | null;
|
|
2588
|
+
placement: ChartScalePlacement;
|
|
2589
|
+
};
|
|
2590
|
+
priceLabels: {
|
|
2591
|
+
/** Move price-scale labels apart so none overlaps another. */
|
|
2592
|
+
noOverlappingLabels: boolean;
|
|
2593
|
+
/** The add button beside the crosshair's price label, opening the price-level menu. */
|
|
2594
|
+
plusButton: boolean;
|
|
2595
|
+
/** The time left until the bar closes, under the last-value label. */
|
|
2262
2596
|
countdown: boolean;
|
|
2597
|
+
symbolName: boolean;
|
|
2598
|
+
symbolValue: boolean;
|
|
2599
|
+
symbolLine: boolean;
|
|
2600
|
+
/** Null follows the last bar's color. */
|
|
2601
|
+
symbolLineColor: string | null;
|
|
2602
|
+
symbolLineWidth: number;
|
|
2603
|
+
symbolValueMode: ChartLastValueMode;
|
|
2604
|
+
/** An indicator's name label on the price scale. */
|
|
2605
|
+
indicatorLabelName: boolean;
|
|
2606
|
+
/** An indicator's value label on the price scale. */
|
|
2607
|
+
indicatorLabelValue: boolean;
|
|
2608
|
+
/** The last value of the pre-market, post-market or overnight stretch on the price scale. */
|
|
2609
|
+
extendedHoursValue: boolean;
|
|
2610
|
+
extendedHoursLine: boolean;
|
|
2611
|
+
preMarketLabelColor: string;
|
|
2612
|
+
postMarketLabelColor: string;
|
|
2613
|
+
nightLabelColor: string;
|
|
2614
|
+
previousCloseValue: boolean;
|
|
2615
|
+
previousCloseLine: boolean;
|
|
2616
|
+
previousCloseColor: string;
|
|
2617
|
+
previousCloseLineWidth: number;
|
|
2618
|
+
highLowValue: boolean;
|
|
2619
|
+
highLowLine: boolean;
|
|
2620
|
+
/** One color for the high and low lines and labels, or null for the factory pair: grey lines
|
|
2621
|
+
* and navy labels. */
|
|
2622
|
+
highLowColor: string | null;
|
|
2623
|
+
highLowLineWidth: number;
|
|
2624
|
+
/** Bid and ask come from the datafeed's quotes. */
|
|
2625
|
+
bidAskValue: boolean;
|
|
2626
|
+
bidAskLine: boolean;
|
|
2627
|
+
bidColor: string;
|
|
2628
|
+
askColor: string;
|
|
2629
|
+
};
|
|
2630
|
+
timeScale: {
|
|
2631
|
+
dayOfWeek: boolean;
|
|
2632
|
+
dateFormat: ChartDateFormat;
|
|
2633
|
+
hoursFormat: ChartHoursFormat;
|
|
2634
|
+
/** Keep the chart's left edge at the same time when the timeframe changes. */
|
|
2635
|
+
keepLeftEdge: boolean;
|
|
2636
|
+
};
|
|
2637
|
+
canvas: {
|
|
2638
|
+
backgroundType: ChartBackgroundType;
|
|
2639
|
+
/** The solid color, or the gradient's top. */
|
|
2640
|
+
background: string;
|
|
2641
|
+
/** The gradient's bottom. */
|
|
2642
|
+
backgroundBottom: string;
|
|
2643
|
+
verticalGrid: boolean;
|
|
2644
|
+
verticalGridColor: string;
|
|
2645
|
+
verticalGridStyle: ChartStrokeStyle;
|
|
2646
|
+
horizontalGrid: boolean;
|
|
2647
|
+
horizontalGridColor: string;
|
|
2648
|
+
horizontalGridStyle: ChartStrokeStyle;
|
|
2649
|
+
crosshairColor: string;
|
|
2650
|
+
crosshairStyle: ChartStrokeStyle;
|
|
2651
|
+
crosshairWidth: number;
|
|
2652
|
+
/** The watermark's parts, written large behind the bars. */
|
|
2653
|
+
watermarkTicker: boolean;
|
|
2654
|
+
watermarkInterval: boolean;
|
|
2655
|
+
watermarkDescription: boolean;
|
|
2656
|
+
/** Name bar replay in the watermark while it runs. */
|
|
2657
|
+
watermarkReplay: boolean;
|
|
2658
|
+
watermarkColor: string;
|
|
2659
|
+
scaleTextColor: string;
|
|
2660
|
+
scaleTextSize: number;
|
|
2661
|
+
scaleLineColor: string;
|
|
2662
|
+
navigationButtons: ChartControlVisibility;
|
|
2663
|
+
paneButtons: ChartControlVisibility;
|
|
2664
|
+
/** Space above the highest bar, as a percentage of the pane's height. */
|
|
2665
|
+
marginTop: number;
|
|
2666
|
+
/** Space below the lowest bar, as a percentage of the pane's height. */
|
|
2667
|
+
marginBottom: number;
|
|
2668
|
+
/** Empty bar slots after the last bar. */
|
|
2669
|
+
marginRight: number;
|
|
2670
|
+
};
|
|
2671
|
+
events: {
|
|
2672
|
+
sessionBreaks: boolean;
|
|
2673
|
+
sessionBreaksColor: string;
|
|
2674
|
+
sessionBreaksStyle: ChartStrokeStyle;
|
|
2675
|
+
sessionBreaksWidth: number;
|
|
2263
2676
|
};
|
|
2264
2677
|
}
|
|
2265
|
-
/**
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
declare const DEFAULT_OVERRIDES: ChartOverrides;
|
|
2271
|
-
/** A recursive partial of the tree — what a host supplies. */
|
|
2272
|
-
type PartialOverrides = {
|
|
2273
|
-
[S in keyof ChartOverrides]?: Partial<ChartOverrides[S]>;
|
|
2678
|
+
/** A section's name. */
|
|
2679
|
+
type ChartSettingsSection = keyof ChartSettings;
|
|
2680
|
+
/** What a host or a viewer supplies: any leaves of any sections. */
|
|
2681
|
+
type PartialChartSettings = {
|
|
2682
|
+
[S in ChartSettingsSection]?: Partial<ChartSettings[S]>;
|
|
2274
2683
|
};
|
|
2275
|
-
/** Deep-fill a partial over the defaults. One level of nesting by design — the tree is two levels
|
|
2276
|
-
* (section → leaf) and stays that way; new leaves are additive. */
|
|
2277
|
-
declare function mergeOverrides(partial?: PartialOverrides | null): ChartOverrides;
|
|
2278
|
-
/** The precedence composer: deep-fill any number of partials over an explicit BASE, later layers
|
|
2279
|
-
* winning leaf by leaf. The widget's look resolves through this — its theme-derived floor, then
|
|
2280
|
-
* the host's constructor partial, then runtime applyAppearance calls: one ladder where runtime
|
|
2281
|
-
* beats constructor beats theme, expressed as one pure function. */
|
|
2282
|
-
declare function layerOverrides(base: ChartOverrides, ...partials: (PartialOverrides | null | undefined)[]): ChartOverrides;
|
|
2283
2684
|
|
|
2284
2685
|
/** One resolved role as it is written to the DOM. */
|
|
2285
2686
|
interface ThemeDeclaration {
|
|
@@ -2299,12 +2700,14 @@ interface ThemeRootStyle {
|
|
|
2299
2700
|
/** One entry per role, ordered by role id. */
|
|
2300
2701
|
declarations: readonly ThemeDeclaration[];
|
|
2301
2702
|
}
|
|
2302
|
-
/** The theme values the canvas renderer draws with. The chart
|
|
2303
|
-
*
|
|
2304
|
-
* for anything the
|
|
2703
|
+
/** The theme values the canvas renderer draws with. The chart settings sit above these: a host or a
|
|
2704
|
+
* viewer setting of a series color wins over `up` and `down` here, which are the mode's defaults
|
|
2705
|
+
* for anything the settings do not name. */
|
|
2305
2706
|
interface CanvasTheme {
|
|
2306
2707
|
background: string;
|
|
2307
2708
|
paneBorder: string;
|
|
2709
|
+
/** The ink a watermark writes behind the bars. */
|
|
2710
|
+
watermark: string;
|
|
2308
2711
|
grid: string;
|
|
2309
2712
|
axisText: string;
|
|
2310
2713
|
axisBackground: string;
|
|
@@ -2530,13 +2933,14 @@ interface ChartIconDiagnostic {
|
|
|
2530
2933
|
}
|
|
2531
2934
|
|
|
2532
2935
|
/** The glyphs of the chart's own controls, by meaning, each with every drawing that carries it. */
|
|
2533
|
-
declare const CONTROL_ICONS: Readonly<Record<"info" | "search" | "bold" | "
|
|
2936
|
+
declare const CONTROL_ICONS: Readonly<Record<"info" | "search" | "bold" | "open" | "close" | "volume" | "indicators" | "copy" | "textColor" | "visible" | "lineColor" | "template" | "fillColor" | "italic" | "locked" | "sync" | "caret" | "tip" | "measure" | "image" | "eraser" | "delete" | "remove" | "hidden" | "pause" | "play" | "reset" | "scroll" | "magnet" | "collapse" | "paneCollapse" | "paneRestore" | "paneMaximize" | "marketStatus" | "replayStatus" | "replayMark" | "replayCut" | "replay" | "undo" | "redo" | "settings" | "fullscreen" | "tileMaximize" | "tileRestore" | "download" | "chevronDown" | "chevronUp" | "chevronLeft" | "chevronRight" | "check" | "clear" | "goLive" | "stepForward" | "stepBack" | "calendar" | "selectBar" | "firstAvailable" | "randomBar" | "clock" | "cursorCross" | "cursorDot" | "cursorArrow" | "magnetStrong" | "drawingsShown" | "drawingsHidden" | "indicatorsShown" | "indicatorsHidden" | "allShown" | "allHidden" | "zoomIn" | "grip" | "tableAddColumn" | "tableAddRow" | "favoritesBar" | "lineSolid" | "lineDashed" | "lineDotted" | "lineThickness1" | "lineThickness2" | "lineThickness3" | "lineThickness4" | "lineEndNormal" | "lineEndArrow" | "settingsSymbol" | "settingsStatusLine" | "settingsScales" | "settingsCanvas" | "settingsEvents" | "compare" | "fullscreenExit" | "paneMoveUp" | "paneMoveDown" | "zoomOut" | "add" | "rename" | "duplicate" | "favorite" | "favorited" | "sortAscending" | "sortDescending" | "flyout" | "submenu" | "more" | "emptySearch" | "emptyCompare" | "operatorsShow" | "operatorsHide" | "operatorAdd" | "operatorSubtract" | "operatorMultiply" | "operatorDivide" | "operatorPower" | "operatorReciprocal" | "selectDate" | "zoomTool" | "stayInMode" | "stayInModeOn" | "unlocked" | "hide" | "glyphTools" | "visualOrder" | "volumeMuted", readonly Glyph[]>>;
|
|
2534
2937
|
/** An icon of one of the chart's own controls. */
|
|
2535
2938
|
type ControlIconId = keyof typeof CONTROL_ICONS;
|
|
2536
2939
|
/** Every icon a host may draw: a control's glyph by its meaning, a chart style by its id, a drawing
|
|
2537
|
-
* tool by its registry type,
|
|
2538
|
-
* `CHART_ICON_IDS`, so an id the chart does not draw is a type error
|
|
2539
|
-
|
|
2940
|
+
* tool by its registry type, a layout arrangement by its code, and a time-scale mark's glyph by its
|
|
2941
|
+
* shape. Exactly the ids in `CHART_ICON_IDS`, so an id the chart does not draw is a type error
|
|
2942
|
+
* before it is a refusal. */
|
|
2943
|
+
type ChartIconId = ControlIconId | `style.${ChartStyleId}` | `tool.${MiniatureTool}` | `layout.${ArrangementGlyphCode}` | MarkIconId;
|
|
2540
2944
|
/** A host's drawings for the chart's icons, by id. An icon left out keeps the chart's own. */
|
|
2541
2945
|
type ChartIcons = {
|
|
2542
2946
|
readonly [K in ChartIconId]?: ChartIconFactory;
|
|
@@ -2545,7 +2949,7 @@ type ChartIcons = {
|
|
|
2545
2949
|
* draws the left-to-right form of these. */
|
|
2546
2950
|
declare const MIRRORED_ICONS: ReadonlySet<ChartIconId>;
|
|
2547
2951
|
/** Every published icon id, in catalog order: the controls, then the styles, the tools and the
|
|
2548
|
-
* layouts in their registries' orders. */
|
|
2952
|
+
* layouts in their registries' orders, then the mark glyphs. */
|
|
2549
2953
|
declare const CHART_ICON_IDS: readonly ChartIconId[];
|
|
2550
2954
|
/** The chart's own drawing of an icon, as markup a host draws without the chart: a toolbar of its
|
|
2551
2955
|
* own, a native view. */
|
|
@@ -2689,6 +3093,8 @@ interface IndicatorPlots {
|
|
|
2689
3093
|
valuesInStatusLine?: boolean;
|
|
2690
3094
|
inputsInStatusLine?: boolean;
|
|
2691
3095
|
};
|
|
3096
|
+
/** The name written beside each plot's value label on the price scale. Absent writes none. */
|
|
3097
|
+
scaleTitle?: string;
|
|
2692
3098
|
/** Set when the indicator can't be computed from the current feed (e.g. no volume) — no plots
|
|
2693
3099
|
* are drawn and the host may surface the note. */
|
|
2694
3100
|
unavailable?: string;
|
|
@@ -2794,8 +3200,187 @@ declare function attachIndicators(chart: IChartApi, options?: {
|
|
|
2794
3200
|
* live, so a theme switch repaints the levels with everything else; the built-in dark palette's
|
|
2795
3201
|
* neutral stands in for a host that supplies none. */
|
|
2796
3202
|
neutral?: () => string;
|
|
3203
|
+
/** The index of the pane the main series stands in, where overlays are drawn and which is never
|
|
3204
|
+
* swept. A viewer may move it below another pane; the first pane when absent. */
|
|
3205
|
+
mainPane?: () => number;
|
|
2797
3206
|
}): IndicatorsRenderer;
|
|
2798
3207
|
|
|
3208
|
+
/** The chart's own pages, in rail order. */
|
|
3209
|
+
type ChartSettingsPageId = 'symbol' | 'statusLine' | 'scales' | 'canvas' | 'events';
|
|
3210
|
+
/** Paints an icon into a box and answers the disposer that empties it. */
|
|
3211
|
+
type ChartSettingsIconPainter = (box: HTMLElement) => () => void;
|
|
3212
|
+
/** One choice of a select. */
|
|
3213
|
+
interface ChartSettingsOption<V extends string> {
|
|
3214
|
+
value: V;
|
|
3215
|
+
label: string;
|
|
3216
|
+
}
|
|
3217
|
+
/** A tip beside a label: a short line on hover, or a card with a title and a body. */
|
|
3218
|
+
type ChartSettingsTip = {
|
|
3219
|
+
kind: 'hint';
|
|
3220
|
+
text: string;
|
|
3221
|
+
href?: string;
|
|
3222
|
+
} | {
|
|
3223
|
+
kind: 'card';
|
|
3224
|
+
title: string;
|
|
3225
|
+
body: string;
|
|
3226
|
+
href?: string;
|
|
3227
|
+
};
|
|
3228
|
+
/** A row's handle, for a row whose state another row decides. */
|
|
3229
|
+
interface ChartSettingsRowHandle {
|
|
3230
|
+
setDisabled(disabled: boolean): void;
|
|
3231
|
+
}
|
|
3232
|
+
/** The form a page is built with. Every builder appends a row to the page in call order, and the
|
|
3233
|
+
* row's `id` names it for a contribution placed before it. The chart's own rows are named by the
|
|
3234
|
+
* leaf they edit (`background` on the Status line page, for one), and a section the chart shows
|
|
3235
|
+
* only in some contexts by its own name (`indicators` on the Status line page).
|
|
3236
|
+
*
|
|
3237
|
+
* A checkbox row that is unchecked disables its own controls and every row indented under it, and
|
|
3238
|
+
* a disabled row stands its checkbox and its label back. */
|
|
3239
|
+
interface ChartSettingsForm {
|
|
3240
|
+
/** A section heading, written in capitals. Every heading after a page's first stands clear of the
|
|
3241
|
+
* section before it. */
|
|
3242
|
+
heading(text: string): void;
|
|
3243
|
+
/** A checkbox row. `indent` makes it a sub-row of the row above, and `hint` is the grey line
|
|
3244
|
+
* under it. `controls` builds the row's controls after its label. */
|
|
3245
|
+
check(row: {
|
|
3246
|
+
id: string;
|
|
3247
|
+
label: string;
|
|
3248
|
+
checked: boolean;
|
|
3249
|
+
onChange(checked: boolean): void;
|
|
3250
|
+
hint?: string;
|
|
3251
|
+
tip?: ChartSettingsTip;
|
|
3252
|
+
indent?: boolean;
|
|
3253
|
+
disabled?: boolean;
|
|
3254
|
+
controls?(controls: ChartSettingsControls): void;
|
|
3255
|
+
}): ChartSettingsRowHandle;
|
|
3256
|
+
/** A labelled row whose label is plain text and whose controls follow it. */
|
|
3257
|
+
field(row: {
|
|
3258
|
+
id: string;
|
|
3259
|
+
label: string;
|
|
3260
|
+
tip?: ChartSettingsTip;
|
|
3261
|
+
indent?: boolean;
|
|
3262
|
+
disabled?: boolean;
|
|
3263
|
+
controls(controls: ChartSettingsControls): void;
|
|
3264
|
+
}): ChartSettingsRowHandle;
|
|
3265
|
+
}
|
|
3266
|
+
/** The controls a row holds, laid out after its label in call order. A control is named for a
|
|
3267
|
+
* reader by its row's label unless `label` names it, as each of two colors on one row needs. */
|
|
3268
|
+
interface ChartSettingsControls {
|
|
3269
|
+
/** A color swatch. `opacity` adds the picker's opacity slider; `lineStyle` and `lineWidth` make
|
|
3270
|
+
* it a color and line swatch whose picker also sets them. A null color follows the bars. */
|
|
3271
|
+
color(control: {
|
|
3272
|
+
color: string | null;
|
|
3273
|
+
onColor(color: string): void;
|
|
3274
|
+
opacity?: boolean;
|
|
3275
|
+
lineStyle?: {
|
|
3276
|
+
value: 'solid' | 'dashed' | 'dotted';
|
|
3277
|
+
onChange(style: 'solid' | 'dashed' | 'dotted'): void;
|
|
3278
|
+
};
|
|
3279
|
+
lineWidth?: {
|
|
3280
|
+
value: number;
|
|
3281
|
+
options: readonly number[];
|
|
3282
|
+
onChange(width: number): void;
|
|
3283
|
+
};
|
|
3284
|
+
label?: string;
|
|
3285
|
+
disabled?: boolean;
|
|
3286
|
+
}): void;
|
|
3287
|
+
select<V extends string>(control: {
|
|
3288
|
+
value: V;
|
|
3289
|
+
options: readonly ChartSettingsOption<V>[];
|
|
3290
|
+
width: number;
|
|
3291
|
+
onChange(value: V): void;
|
|
3292
|
+
label?: string;
|
|
3293
|
+
disabled?: boolean;
|
|
3294
|
+
}): void;
|
|
3295
|
+
/** A select whose list checks any number of its options, and whose button joins the checked
|
|
3296
|
+
* labels or reads `none` when none is checked. The labels after the first are joined in lower
|
|
3297
|
+
* case unless `asWritten`. */
|
|
3298
|
+
multiSelect<V extends string>(control: {
|
|
3299
|
+
values: readonly V[];
|
|
3300
|
+
options: readonly ChartSettingsOption<V>[];
|
|
3301
|
+
width: number;
|
|
3302
|
+
none: string;
|
|
3303
|
+
onChange(values: readonly V[]): void;
|
|
3304
|
+
asWritten?: boolean;
|
|
3305
|
+
label?: string;
|
|
3306
|
+
disabled?: boolean;
|
|
3307
|
+
}): void;
|
|
3308
|
+
/** A number field, 100 pixels wide unless `width` says otherwise, and the unit after it. The value
|
|
3309
|
+
* is reported when the field is left or a stepper is pressed. NaN leaves the field empty. */
|
|
3310
|
+
number(control: {
|
|
3311
|
+
value: number;
|
|
3312
|
+
min: number;
|
|
3313
|
+
max: number;
|
|
3314
|
+
step: number;
|
|
3315
|
+
suffix?: string;
|
|
3316
|
+
width?: number;
|
|
3317
|
+
onChange(value: number): void;
|
|
3318
|
+
label?: string;
|
|
3319
|
+
disabled?: boolean;
|
|
3320
|
+
}): void;
|
|
3321
|
+
/** A line's thickness on its own, as a field wearing the thickness, whose list offers `options`. */
|
|
3322
|
+
lineWidth(control: {
|
|
3323
|
+
value: number;
|
|
3324
|
+
options: readonly number[];
|
|
3325
|
+
onChange(width: number): void;
|
|
3326
|
+
label?: string;
|
|
3327
|
+
disabled?: boolean;
|
|
3328
|
+
}): void;
|
|
3329
|
+
/** A level from 0 to 1, as a volume with a speaker before it or as an opacity over its color. A
|
|
3330
|
+
* drag reports every step it passes. */
|
|
3331
|
+
slider(control: {
|
|
3332
|
+
value: number;
|
|
3333
|
+
kind: 'volume' | {
|
|
3334
|
+
opacity: string;
|
|
3335
|
+
};
|
|
3336
|
+
onChange(value: number): void;
|
|
3337
|
+
label?: string;
|
|
3338
|
+
disabled?: boolean;
|
|
3339
|
+
}): void;
|
|
3340
|
+
/** Start a second line of controls under the first, in the controls' column. */
|
|
3341
|
+
nextLine(): void;
|
|
3342
|
+
}
|
|
3343
|
+
/** A host's contribution to the settings dialog. */
|
|
3344
|
+
interface ChartSettingsContribution {
|
|
3345
|
+
/** Either a page of the host's own, placed after another page (or last), or rows appended to one
|
|
3346
|
+
* of the chart's pages, before one of its rows (or at its end). `before` may name several rows or
|
|
3347
|
+
* sections: the rows land before the first of them the page holds, so a placement survives a
|
|
3348
|
+
* section the page shows only in some contexts (the Status line page's `indicators`).
|
|
3349
|
+
*
|
|
3350
|
+
* `after` names the page to follow: one of the chart's (a `ChartSettingsPageId`) or another
|
|
3351
|
+
* contributed page's id. A list names several, and the first of them the dialog holds wins, so
|
|
3352
|
+
* `after: ['trading', 'canvas']` follows a contributed `trading` page where there is one and the
|
|
3353
|
+
* Canvas page otherwise. The order is read once every contribution is known, so a page stands
|
|
3354
|
+
* after the contributed page it names whichever attached first. Pages that name the same
|
|
3355
|
+
* page stand after it in the order their extensions attach, each followed by the pages that name
|
|
3356
|
+
* it: the order of the widget's `extensions` (an extension attached again on a symbol switch
|
|
3357
|
+
* keeps its place), and one extension's pages in the order it contributes them. A page whose
|
|
3358
|
+
* `after` names no page the dialog holds, or is absent, stands last in the same order. */
|
|
3359
|
+
place: {
|
|
3360
|
+
page: {
|
|
3361
|
+
id: string;
|
|
3362
|
+
label: string;
|
|
3363
|
+
icon: ChartSettingsIconPainter;
|
|
3364
|
+
after?: string | readonly string[];
|
|
3365
|
+
};
|
|
3366
|
+
} | {
|
|
3367
|
+
into: ChartSettingsPageId;
|
|
3368
|
+
before?: string | readonly string[];
|
|
3369
|
+
};
|
|
3370
|
+
/** Build the rows. The dialog calls it whenever the page is drawn, including after every change
|
|
3371
|
+
* a row reports, so it reads the host's current state each time. */
|
|
3372
|
+
build(form: ChartSettingsForm): void;
|
|
3373
|
+
/** The dialog opened: answer the state that Cancel restores. */
|
|
3374
|
+
open?(): unknown;
|
|
3375
|
+
/** The viewer cancelled: restore the state `open` answered. Changes preview as they are made, so
|
|
3376
|
+
* this is the only undo. */
|
|
3377
|
+
cancel?(state: unknown): void;
|
|
3378
|
+
/** The viewer pressed Ok. */
|
|
3379
|
+
commit?(): void;
|
|
3380
|
+
/** The viewer chose "Apply defaults": return every setting this contribution owns to its default. */
|
|
3381
|
+
applyDefaults?(): void;
|
|
3382
|
+
}
|
|
3383
|
+
|
|
2799
3384
|
/** Price display as an extension reads it — the chart's own formatter, so an overlay's label and the
|
|
2800
3385
|
* axis beside it can never disagree about what a number looks like. */
|
|
2801
3386
|
interface ChartPriceFormatter {
|
|
@@ -2870,6 +3455,12 @@ interface ChartExtensionMenuContext {
|
|
|
2870
3455
|
/** Viewport coordinates of the press. */
|
|
2871
3456
|
clientX: number;
|
|
2872
3457
|
clientY: number;
|
|
3458
|
+
/** The table the press landed on, and whether a cell of it is being typed in; absent where it
|
|
3459
|
+
* landed on none. A press on a drawing raises that drawing's own menu, which carries the rows a
|
|
3460
|
+
* host contributes here in the places the chart's menu gives them. */
|
|
3461
|
+
table?: {
|
|
3462
|
+
cell: boolean;
|
|
3463
|
+
};
|
|
2873
3464
|
}
|
|
2874
3465
|
/** One filled or stroked shape of a contributed glyph, on the menu's own 28-unit grid. Path data
|
|
2875
3466
|
* and a closed set of paint values are the whole vocabulary: a contribution carries no markup, no
|
|
@@ -2907,9 +3498,10 @@ interface ChartExtensionMenuItem {
|
|
|
2907
3498
|
checked?: boolean;
|
|
2908
3499
|
/** The row's glyph. Omitted leaves the gutter empty and the label still aligned. */
|
|
2909
3500
|
icon?: ChartExtensionIcon;
|
|
2910
|
-
/** Where the row sits. `level` (the default) is an action on the price the pointer landed on
|
|
2911
|
-
* joins the group under Copy price and Paste
|
|
2912
|
-
*
|
|
3501
|
+
/** Where the row sits. `level` (the default) is an action on the price the pointer landed on: it
|
|
3502
|
+
* joins the group under Copy price and Paste, and the price menu the price scale's plus opens,
|
|
3503
|
+
* where each extension's rows stand together; `view` is a switch over what the chart shows and
|
|
3504
|
+
* joins the group under the remove rows, and the price menu leaves it out. */
|
|
2913
3505
|
group?: 'level' | 'view';
|
|
2914
3506
|
run(): void;
|
|
2915
3507
|
}
|
|
@@ -2942,6 +3534,42 @@ interface ChartExtensionHideLayerHandle {
|
|
|
2942
3534
|
/** Withdraw the layer from the eye. Detach withdraws it either way. */
|
|
2943
3535
|
remove(): void;
|
|
2944
3536
|
}
|
|
3537
|
+
/** A row of an extension's own in the pane's legend: an element the extension builds and keeps,
|
|
3538
|
+
* which the chart places under the symbol's reading and above the indicator rows. The row wears the
|
|
3539
|
+
* status line's backdrop like the legend's own parts, and takes the pointer, so its controls are
|
|
3540
|
+
* pressed rather than the chart under them. Whether it shows, and what it holds, is the
|
|
3541
|
+
* extension's own state: it hides or fills the element as it likes. */
|
|
3542
|
+
interface ChartExtensionLegendRow {
|
|
3543
|
+
element: HTMLElement;
|
|
3544
|
+
/** Where the row stands among contributed rows: a lower rank first, then the rows of one rank
|
|
3545
|
+
* as they were contributed. Absent reads as 0. */
|
|
3546
|
+
rank?: number;
|
|
3547
|
+
}
|
|
3548
|
+
/** The frame a contribution paints an image of the chart in. */
|
|
3549
|
+
interface ChartExtensionCaptureFrame {
|
|
3550
|
+
/** The chart element's width in CSS pixels. */
|
|
3551
|
+
width: number;
|
|
3552
|
+
/** The chart element's height in CSS pixels. */
|
|
3553
|
+
height: number;
|
|
3554
|
+
/** Image pixels per CSS pixel. */
|
|
3555
|
+
pixelRatio: number;
|
|
3556
|
+
}
|
|
3557
|
+
/** An extension's part in an image of the chart. Every image the chart produces of itself (a
|
|
3558
|
+
* download, a copy, `image.capture()`) is taken through the contributions of the extensions
|
|
3559
|
+
* attached to it: each `before` runs, the renderer draws the image, each `paint` paints over it,
|
|
3560
|
+
* and each restore runs, the last answered first. A contribution that throws is contained: the
|
|
3561
|
+
* image is still produced and every restore still runs. */
|
|
3562
|
+
interface ChartExtensionCapture {
|
|
3563
|
+
/** Runs synchronously before the chart draws into the image; answer the restore, run after it is
|
|
3564
|
+
* taken. The renderer draws every pending change before it takes the image, so what a `before`
|
|
3565
|
+
* changed through the chart's capabilities (a price line it updated, a primitive it asked to
|
|
3566
|
+
* redraw) is drawn as it now stands. */
|
|
3567
|
+
before?(): (() => void) | void;
|
|
3568
|
+
/** Runs after the bitmap is taken: paint over it. The origin is the chart element's top left,
|
|
3569
|
+
* which is the top left of the context's `container`; pixelRatio is image pixels per CSS pixel.
|
|
3570
|
+
* The context arrives untransformed, and the chart puts back its state after each paint. */
|
|
3571
|
+
paint?(target: CanvasRenderingContext2D, frame: ChartExtensionCaptureFrame): void;
|
|
3572
|
+
}
|
|
2945
3573
|
/** Builds an extension's context menu rows. The chart calls it on every raise with that moment's
|
|
2946
3574
|
* context, so the rows can depend on the level that was pressed. An empty list contributes nothing
|
|
2947
3575
|
* and costs nothing. */
|
|
@@ -2970,8 +3598,8 @@ interface ChartExtensionContext {
|
|
|
2970
3598
|
* over every pane and over whatever the page stacks around the widget mounts HERE, at viewport
|
|
2971
3599
|
* coordinates; the context menu does the same. */
|
|
2972
3600
|
layer: HTMLElement;
|
|
2973
|
-
/** The chart's effective canvas palette: the mode's resolved theme
|
|
2974
|
-
*
|
|
3601
|
+
/** The chart's effective canvas palette: the mode's resolved theme under the chart settings
|
|
3602
|
+
* in effect, projected onto the values a canvas draws with. */
|
|
2975
3603
|
theme(): CanvasTheme;
|
|
2976
3604
|
formatter(): ChartPriceFormatter;
|
|
2977
3605
|
/** The name symbology gives the charted market, for a surface that prints it; `chart.symbol()`
|
|
@@ -3003,6 +3631,21 @@ interface ChartExtensionContext {
|
|
|
3003
3631
|
contributeContextMenu(build: ChartExtensionMenuBuilder): () => void;
|
|
3004
3632
|
contributeCommands(commands: readonly ChartExtensionCommand[]): () => void;
|
|
3005
3633
|
contributeHideLayer(layer: ChartExtensionHideLayer): ChartExtensionHideLayerHandle;
|
|
3634
|
+
/** Add a page of the extension's own to the chart settings dialog, or rows to one of the chart's
|
|
3635
|
+
* pages. The dialog lists what the active chart's extensions contribute when it opens; the
|
|
3636
|
+
* returned function withdraws the contribution, and detach withdraws it either way. */
|
|
3637
|
+
contributeSettings(contribution: ChartSettingsContribution): () => void;
|
|
3638
|
+
/** Place a row of the extension's own in the pane's legend. The returned function takes it out,
|
|
3639
|
+
* and detach takes it out either way; the element is the extension's to keep. */
|
|
3640
|
+
contributeLegendRow(row: ChartExtensionLegendRow): () => void;
|
|
3641
|
+
/** Ask the datafeed for the chart's bar marks and time-scale marks again, now, and draw what it
|
|
3642
|
+
* answers: for an extension whose own setting changes what the feed serves, such as a row it
|
|
3643
|
+
* contributes to the settings dialog, so the change shows while the dialog is open. */
|
|
3644
|
+
refreshMarks(): void;
|
|
3645
|
+
/** Take part in every image of the chart: hold out what the extension draws while the image is
|
|
3646
|
+
* taken, or paint over the image what the chart's canvases do not carry. The returned function
|
|
3647
|
+
* withdraws the contribution, and detach withdraws it either way. */
|
|
3648
|
+
contributeCapture(capture: ChartExtensionCapture): () => void;
|
|
3006
3649
|
}
|
|
3007
3650
|
/** What an extension gives back at attach. `detach` is required; the two state methods are the
|
|
3008
3651
|
* opt-in for anything the viewer would expect a saved chart to bring back. */
|
|
@@ -3145,8 +3788,10 @@ declare function clipToWindow(bars: readonly FeedBar[], window: {
|
|
|
3145
3788
|
to: number;
|
|
3146
3789
|
} | null): FeedBar[];
|
|
3147
3790
|
/** Placement → where the series goes. Pane index for 'new-pane' is resolved at add time (the
|
|
3148
|
-
* chart's CURRENT pane count), matching the indicator renderer's rule.
|
|
3149
|
-
|
|
3791
|
+
* chart's CURRENT pane count), matching the indicator renderer's rule. A 'new-scale' series takes
|
|
3792
|
+
* the side the main series does not stand on, the left unless named. The other two stand in the
|
|
3793
|
+
* main pane, the first unless a viewer moved it. */
|
|
3794
|
+
declare function seriesTargetOf(placement: ComparePlacement, paneCount: number, secondScale?: 'left' | 'right', mainPane?: number): {
|
|
3150
3795
|
paneIndex: number;
|
|
3151
3796
|
priceScaleId?: string;
|
|
3152
3797
|
};
|
|
@@ -3162,6 +3807,12 @@ interface CompareDeps {
|
|
|
3162
3807
|
} | null;
|
|
3163
3808
|
/** How many bars a fresh compare asks for when the main window is not yet known. */
|
|
3164
3809
|
seedCountBack?: number;
|
|
3810
|
+
/** The side the main series' price scale stands on; the right when absent. A 'new-scale'
|
|
3811
|
+
* comparison takes the other side. */
|
|
3812
|
+
mainScale?(): 'left' | 'right';
|
|
3813
|
+
/** The index of the pane the main series stands in, which a 'same-percent' or 'new-scale'
|
|
3814
|
+
* comparison shares; the first pane when absent. */
|
|
3815
|
+
mainPane?(): number;
|
|
3165
3816
|
/** Entries changed (add/remove/visibility/color) or a comparison's latest value moved — hosts
|
|
3166
3817
|
* re-render their legend from `list()` / `latest()`. */
|
|
3167
3818
|
onChange?(): void;
|
|
@@ -3191,9 +3842,9 @@ interface CompareHandle {
|
|
|
3191
3842
|
list(): CompareEntry[];
|
|
3192
3843
|
/** The latest clipped close for one comparison, or null (no bars in window / unknown symbol). */
|
|
3193
3844
|
latest(symbol: string): number | null;
|
|
3194
|
-
/** The pane the comparison's series currently lives on
|
|
3195
|
-
*
|
|
3196
|
-
*
|
|
3845
|
+
/** The pane the comparison's series currently lives on, or null for an unknown symbol: how a host
|
|
3846
|
+
* places the comparison's legend row in the right pane's group. Read live from the series,
|
|
3847
|
+
* because pane indices shift as other panes come, go and move. */
|
|
3197
3848
|
paneIndexOf(symbol: string): number | null;
|
|
3198
3849
|
/** Percent change across the clipped window (last close vs the window's FIRST in-window close —
|
|
3199
3850
|
* the loaded-window approximation of the percent scale's first-visible-bar base), or null with
|
|
@@ -3207,6 +3858,9 @@ interface CompareHandle {
|
|
|
3207
3858
|
sync(): void;
|
|
3208
3859
|
/** The chart's timeframe changed: every comparison refetches at the new bucket size. */
|
|
3209
3860
|
setTimeframe(): void;
|
|
3861
|
+
/** The main series' price scale moved to the other side: every 'new-scale' comparison moves to
|
|
3862
|
+
* the side it left, and that side shows while one lives. */
|
|
3863
|
+
scaleMoved(): void;
|
|
3210
3864
|
serialize(): CompareSnapshot[];
|
|
3211
3865
|
/** Replace the whole set from a snapshot (restore path). Unknown placements are dropped. */
|
|
3212
3866
|
restore(snapshot: readonly unknown[]): void;
|
|
@@ -3502,7 +4156,7 @@ interface ChartSaveLoadApi {
|
|
|
3502
4156
|
}
|
|
3503
4157
|
|
|
3504
4158
|
/** What one step says changed, in the order a diff asks. */
|
|
3505
|
-
type HistoryChange = 'symbol' | 'timeframe' | 'style' | 'priceScale' | '
|
|
4159
|
+
type HistoryChange = 'symbol' | 'timeframe' | 'style' | 'priceScale' | 'settings' | 'compareAdd' | 'compareRemove' | 'compareChange' | 'indicatorAdd' | 'indicatorRemove' | 'indicatorChange' | 'paneMove' | 'drawingAdd' | 'drawingRemove' | 'drawingChange';
|
|
3506
4160
|
/** The undo surface a control and a command read. */
|
|
3507
4161
|
interface ChartHistoryApi {
|
|
3508
4162
|
canUndo(): boolean;
|
|
@@ -3596,8 +4250,12 @@ interface CommandSpec {
|
|
|
3596
4250
|
labelText?: string;
|
|
3597
4251
|
/** The default shortcut, in `KeyboardEvent` terms (e.g. `Alt+KeyR`). */
|
|
3598
4252
|
shortcut?: string;
|
|
3599
|
-
/** Whether the command can run right now, from capability and chart state.
|
|
3600
|
-
|
|
4253
|
+
/** Whether the command can run right now, from capability and chart state. A command whose one id
|
|
4254
|
+
* spans many subjects reads the argument it would run with, and answers for that subject: the
|
|
4255
|
+
* top pane cannot move up. Asked with none, it answers whether any subject could, unless a run
|
|
4256
|
+
* with none acts on a subject of its own, as the horizontal line at the crosshair's price does,
|
|
4257
|
+
* and then for that subject. */
|
|
4258
|
+
available(arg?: unknown): boolean;
|
|
3601
4259
|
/** Whether the access policy refuses this argument, for a command whose one id spans many
|
|
3602
4260
|
* subjects (the tool to arm). A refused argument answers `denied`, as a refused id does. */
|
|
3603
4261
|
refuses?(arg: unknown): boolean;
|
|
@@ -3626,8 +4284,8 @@ interface CommandRegistry {
|
|
|
3626
4284
|
/** Every registered command, in registration order. Unavailable and denied commands are listed:
|
|
3627
4285
|
* a menu decides whether to draw a disabled row, and hiding one would leave the host guessing. */
|
|
3628
4286
|
list(): readonly CommandSpec[];
|
|
3629
|
-
/** Whether `execute` would run this command right now. */
|
|
3630
|
-
available(id: string): boolean;
|
|
4287
|
+
/** Whether `execute` would run this command right now, with this argument where it takes one. */
|
|
4288
|
+
available(id: string, arg?: unknown): boolean;
|
|
3631
4289
|
execute(id: string, arg?: unknown): CommandResult;
|
|
3632
4290
|
/** Remap a shortcut, or clear it with null. */
|
|
3633
4291
|
setShortcut(id: string, shortcut: string | null): void;
|
|
@@ -3982,6 +4640,8 @@ interface DrawingsHandle {
|
|
|
3982
4640
|
setVisibilityPreset(preset: VisibilityPreset): void;
|
|
3983
4641
|
/** Drop a ready picture onto the chart, centred in view, selected. */
|
|
3984
4642
|
placeImage(image: PlacedImage): void;
|
|
4643
|
+
/** Place a horizontal line at a price in the tool's default look, selected. */
|
|
4644
|
+
placeHorizontalLine(price: number): void;
|
|
3985
4645
|
/** Blank every drawing (the eye), without touching any drawing's own switch. */
|
|
3986
4646
|
setAllHidden(hidden: boolean): void;
|
|
3987
4647
|
allHidden(): boolean;
|
|
@@ -4066,11 +4726,81 @@ interface ChartReplayApi {
|
|
|
4066
4726
|
/** Off, waiting to be told where to start, or running. */
|
|
4067
4727
|
type ReplayPhase = 'off' | 'arming' | 'on';
|
|
4068
4728
|
|
|
4729
|
+
/** Every action the menu can offer. A host handles the ids it supports and passes `has` flags for
|
|
4730
|
+
* the rest — an unsupported action simply never becomes a row. */
|
|
4731
|
+
type ChartMenuAction = 'table-add-column' | 'table-add-row' | 'table-remove-row' | 'table-remove-column' | 'reset-view' | 'copy-price' | 'paste' | 'remove-indicators' | 'remove-drawings' | 'settings';
|
|
4732
|
+
/** The glyph a row wears, named rather than drawn — the host owns the artwork. */
|
|
4733
|
+
type ChartMenuIcon = 'reset' | 'settings' | 'check' | 'table-add-column' | 'table-add-row' | 'delete';
|
|
4734
|
+
type ChartMenuRow = {
|
|
4735
|
+
kind: 'separator';
|
|
4736
|
+
} | {
|
|
4737
|
+
kind: 'item';
|
|
4738
|
+
id: ChartMenuAction;
|
|
4739
|
+
label: string;
|
|
4740
|
+
shortcut?: string;
|
|
4741
|
+
icon?: ChartMenuIcon;
|
|
4742
|
+
/** A CHECKABLE row: state is marked with a checkmark in the icon cell and never by
|
|
4743
|
+
* rewording the label, so "Lock vertical cursor line by time" reads the same either way. */
|
|
4744
|
+
checked?: boolean;
|
|
4745
|
+
};
|
|
4746
|
+
interface ChartMenuContext {
|
|
4747
|
+
/** The level the pointer landed on, already formatted in the pane's own precision. */
|
|
4748
|
+
priceText: string;
|
|
4749
|
+
/** The pane's display symbol — a contributed row that acts on the market names it. */
|
|
4750
|
+
symbol: string;
|
|
4751
|
+
/** Counts drive both the wording and whether the row appears at all. */
|
|
4752
|
+
indicatorCount: number;
|
|
4753
|
+
drawingCount: number;
|
|
4754
|
+
/** A drawing clipboard exists. Default true: Paste is offered whether or not anything
|
|
4755
|
+
* is copied, and pasting nothing is a no-op — but a host with no clipboard at all omits it. */
|
|
4756
|
+
canPaste?: boolean;
|
|
4757
|
+
/** A settings surface exists to open. Default true; a host without one omits the row. */
|
|
4758
|
+
canSettings?: boolean;
|
|
4759
|
+
/** The level lies on a table. Its rows add a column right of the cell being typed in and a row
|
|
4760
|
+
* below it, or at the table's ends where no cell is, and with a cell, remove its row and its
|
|
4761
|
+
* column. Omitted where the level lies on none. */
|
|
4762
|
+
table?: {
|
|
4763
|
+
cell: boolean;
|
|
4764
|
+
};
|
|
4765
|
+
/** The widget's language for the row labels. Omitted ⇒ English. */
|
|
4766
|
+
t?: ChartTranslate;
|
|
4767
|
+
}
|
|
4768
|
+
/** The menu a level offers, in one fixed order. */
|
|
4769
|
+
declare function chartContextMenu(c: ChartMenuContext): ChartMenuRow[];
|
|
4770
|
+
|
|
4771
|
+
/** A row the HOST contributed for this raise (through the chart's extension seam). It carries its
|
|
4772
|
+
* own action, so the painter routes nothing and a contributed row can never collide with a
|
|
4773
|
+
* built-in id. Structural on purpose: the menu has no dependency on who contributed or why. */
|
|
4774
|
+
interface ContextMenuExtraRow {
|
|
4775
|
+
label: string;
|
|
4776
|
+
shortcut?: string;
|
|
4777
|
+
checked?: boolean;
|
|
4778
|
+
/** An inert vector glyph for the shared gutter. */
|
|
4779
|
+
icon?: ChartExtensionIcon;
|
|
4780
|
+
/** `level` rows (the default) group under Copy price and Paste; `view` rows under the removes. */
|
|
4781
|
+
group?: 'level' | 'view';
|
|
4782
|
+
run(): void;
|
|
4783
|
+
}
|
|
4784
|
+
interface ContextMenuHandle {
|
|
4785
|
+
/** Raise the menu at a viewport point, for the level the caller resolved. `extra` places the
|
|
4786
|
+
* contributed rows by their group between the built-ins; an empty list adds no separator. */
|
|
4787
|
+
open(at: {
|
|
4788
|
+
clientX: number;
|
|
4789
|
+
clientY: number;
|
|
4790
|
+
}, ctx: ChartMenuContext, extra?: readonly ContextMenuExtraRow[]): void;
|
|
4791
|
+
close(): void;
|
|
4792
|
+
destroy(): void;
|
|
4793
|
+
}
|
|
4794
|
+
/** `strings` is the chart's language: the rows are built through it every time the menu is raised,
|
|
4795
|
+
* and an open menu re-labels in place if the language changes under it. `icons` are the host's
|
|
4796
|
+
* drawings for the menu's own glyphs, as a chart takes them. */
|
|
4797
|
+
declare function mountContextMenu(container: HTMLElement, run: (id: ChartMenuAction) => void, strings?: ChartI18n, icons?: ChartIcons): ContextMenuHandle;
|
|
4798
|
+
|
|
4069
4799
|
/** The drawing surface a host drives: the layer's handle minus what the chart owns (symbol,
|
|
4070
4800
|
* timeframe, tick, price format, teardown) and minus the session verbs only the package's own
|
|
4071
4801
|
* surfaces use (the live `IDrawing`, the preview and edit session, the inline text session, the
|
|
4072
4802
|
* presets). The public surface grows on demand, not by exposure. */
|
|
4073
|
-
type ChartDrawingsApi = Omit<DrawingsHandle, 'setSymbol' | 'setTimeframe' | 'setTick' | 'setCurrency' | 'setPriceFormatter' | 'destroy' | 'selectedDrawing' | 'commitEdit' | 'beginPreview' | 'endPreview' | 'textEdit' | 'commitText' | 'cancelText' | 'presets'>;
|
|
4803
|
+
type ChartDrawingsApi = Omit<DrawingsHandle, 'setSymbol' | 'setTimeframe' | 'setTick' | 'setCurrency' | 'setPriceFormatter' | 'destroy' | 'selectedDrawing' | 'commitEdit' | 'beginPreview' | 'endPreview' | 'textEdit' | 'commitText' | 'cancelText' | 'presets' | 'placeHorizontalLine'>;
|
|
4074
4804
|
|
|
4075
4805
|
/** What a preset frames: seconds of history, the year to date, or everything loaded. */
|
|
4076
4806
|
type RangeSpan = number | 'ytd' | 'all';
|
|
@@ -4249,14 +4979,24 @@ interface ChartHandle {
|
|
|
4249
4979
|
/** Stepping back and forward through this chart's own content. Each step is one reading of the
|
|
4250
4980
|
* content, so a step back puts the whole reading back rather than reversing one verb. */
|
|
4251
4981
|
history: ChartHistoryApi;
|
|
4252
|
-
/** The EFFECTIVE
|
|
4253
|
-
*
|
|
4254
|
-
|
|
4255
|
-
/** Apply
|
|
4256
|
-
* over earlier ones leaf by leaf, so two
|
|
4257
|
-
|
|
4982
|
+
/** The EFFECTIVE settings tree: the theme's factory values, the host's constructor partial, then
|
|
4983
|
+
* the viewer's own leaves. */
|
|
4984
|
+
settings(): ChartSettings;
|
|
4985
|
+
/** Apply a partial to the viewer's own leaves: the top of the precedence ladder. Later calls layer
|
|
4986
|
+
* over earlier ones leaf by leaf, so two callers compose instead of clobbering. A leaf the tree
|
|
4987
|
+
* does not have, or a value its leaf cannot hold, is ignored. The change is a content change: it
|
|
4988
|
+
* marks the chart for saving and is a step of its history. */
|
|
4989
|
+
applySettings(partial: PartialChartSettings): void;
|
|
4990
|
+
/** Drop the viewer's own leaves and put the price scale back to normal. The theme's values and the
|
|
4991
|
+
* host's partial stand; the viewport and every other preference are untouched. */
|
|
4992
|
+
resetSettings(): void;
|
|
4258
4993
|
/** The chart's one price formatter, in the chart's language and on the symbol's own grid. */
|
|
4259
4994
|
formatter(): PriceFormatter;
|
|
4995
|
+
/** Ask the datafeed for this chart's bar marks and time-scale marks again, now, over the window
|
|
4996
|
+
* the chart holds, and draw what it answers in place of what is drawn. A host calls it when a
|
|
4997
|
+
* change of its own changes what its feed serves, so the change shows at once. A chart that draws
|
|
4998
|
+
* no marks, or holds no bars yet, asks nothing. */
|
|
4999
|
+
refreshMarks(): void;
|
|
4260
5000
|
saveLoad: ChartSaveLoadApi;
|
|
4261
5001
|
/** Pane-composition sync primitives, which a layout drives. */
|
|
4262
5002
|
sync: ChartPaneSyncApi;
|
|
@@ -4652,6 +5392,8 @@ interface Capabilities {
|
|
|
4652
5392
|
/** The feed serves neutral bar marks / time-scale marks. */
|
|
4653
5393
|
marks: boolean;
|
|
4654
5394
|
timescaleMarks: boolean;
|
|
5395
|
+
/** The feed serves a symbol's live prices: its bid, ask, last and previous close. */
|
|
5396
|
+
prices: boolean;
|
|
4655
5397
|
/** How live the active symbol's data is; null until it resolves. */
|
|
4656
5398
|
dataStatus: DataStatus | null;
|
|
4657
5399
|
/** Which saved-resource families the adapter carries. All false without an adapter. */
|
|
@@ -4985,10 +5727,11 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4985
5727
|
drawingPersistence?: DrawingPersistenceOptions;
|
|
4986
5728
|
/** The product theme: which built-in mode, and any custom semantic palettes. */
|
|
4987
5729
|
theme?: ThemeOptions;
|
|
4988
|
-
/**
|
|
4989
|
-
* precedence ladder, and it wins over the palette
|
|
4990
|
-
*
|
|
4991
|
-
|
|
5730
|
+
/** The chart settings this host opens every chart with: any leaves of any sections, over the
|
|
5731
|
+
* theme's factory values. This is the other precedence ladder, and it wins over the palette
|
|
5732
|
+
* wherever both could reach the same pixel: the viewer's own settings (`applySettings`, the
|
|
5733
|
+
* settings dialog, a saved chart) beat this, and this beats what the theme resolves to. */
|
|
5734
|
+
settings?: PartialChartSettings;
|
|
4992
5735
|
/** Which chart behavior exists. */
|
|
4993
5736
|
features?: FeatureConfig;
|
|
4994
5737
|
/** Which of the chart's own controls render. */
|
|
@@ -5334,6 +6077,9 @@ interface PaneState {
|
|
|
5334
6077
|
heights: Readonly<Record<number, number>>;
|
|
5335
6078
|
/** Heights remembered from BEFORE the pane's current collapse/maximize, by pane index. */
|
|
5336
6079
|
remembered: Readonly<Record<number, number>>;
|
|
6080
|
+
/** The index of the main pane, which a viewer may move below another pane. The first when
|
|
6081
|
+
* absent. */
|
|
6082
|
+
main?: number;
|
|
5337
6083
|
}
|
|
5338
6084
|
interface PanePlan {
|
|
5339
6085
|
/** Heights to apply, by pane index (only entries that change). */
|
|
@@ -5342,7 +6088,7 @@ interface PanePlan {
|
|
|
5342
6088
|
remembered: Record<number, number>;
|
|
5343
6089
|
}
|
|
5344
6090
|
/** Plan one pane operation. The TOTAL height is conserved exactly — the space a pane gives up goes
|
|
5345
|
-
* to the main pane
|
|
6091
|
+
* to the main pane and vice versa, because the chart's own height is fixed by its container;
|
|
5346
6092
|
* handing back a different sum would make the renderer redistribute unpredictably. */
|
|
5347
6093
|
declare function planPaneOp(state: PaneState, op: PaneOp): PanePlan;
|
|
5348
6094
|
/** Whether a pane currently reads as collapsed (drives which control the legend shows).
|
|
@@ -5355,76 +6101,6 @@ declare function planPaneOp(state: PaneState, op: PaneOp): PanePlan;
|
|
|
5355
6101
|
* not collapsed anything. */
|
|
5356
6102
|
declare function isCollapsed(height: number | undefined): boolean;
|
|
5357
6103
|
|
|
5358
|
-
/** Every action the menu can offer. A host handles the ids it supports and passes `has` flags for
|
|
5359
|
-
* the rest — an unsupported action simply never becomes a row. */
|
|
5360
|
-
type ChartMenuAction = 'table-add-column' | 'table-add-row' | 'table-remove-row' | 'table-remove-column' | 'reset-view' | 'copy-price' | 'paste' | 'remove-indicators' | 'remove-drawings' | 'settings';
|
|
5361
|
-
/** The glyph a row wears, named rather than drawn — the host owns the artwork. */
|
|
5362
|
-
type ChartMenuIcon = 'reset' | 'settings' | 'check' | 'table-add-column' | 'table-add-row' | 'delete';
|
|
5363
|
-
type ChartMenuRow = {
|
|
5364
|
-
kind: 'separator';
|
|
5365
|
-
} | {
|
|
5366
|
-
kind: 'item';
|
|
5367
|
-
id: ChartMenuAction;
|
|
5368
|
-
label: string;
|
|
5369
|
-
shortcut?: string;
|
|
5370
|
-
icon?: ChartMenuIcon;
|
|
5371
|
-
/** A CHECKABLE row: state is marked with a checkmark in the icon cell and never by
|
|
5372
|
-
* rewording the label, so "Lock vertical cursor line by time" reads the same either way. */
|
|
5373
|
-
checked?: boolean;
|
|
5374
|
-
};
|
|
5375
|
-
interface ChartMenuContext {
|
|
5376
|
-
/** The level the pointer landed on, already formatted in the pane's own precision. */
|
|
5377
|
-
priceText: string;
|
|
5378
|
-
/** The pane's display symbol — a contributed row that acts on the market names it. */
|
|
5379
|
-
symbol: string;
|
|
5380
|
-
/** Counts drive both the wording and whether the row appears at all. */
|
|
5381
|
-
indicatorCount: number;
|
|
5382
|
-
drawingCount: number;
|
|
5383
|
-
/** A drawing clipboard exists. Default true: Paste is offered whether or not anything
|
|
5384
|
-
* is copied, and pasting nothing is a no-op — but a host with no clipboard at all omits it. */
|
|
5385
|
-
canPaste?: boolean;
|
|
5386
|
-
/** A settings surface exists to open. Default true; a host without one omits the row. */
|
|
5387
|
-
canSettings?: boolean;
|
|
5388
|
-
/** The level lies on a table. Its rows add a column right of the cell being typed in and a row
|
|
5389
|
-
* below it, or at the table's ends where no cell is, and with a cell, remove its row and its
|
|
5390
|
-
* column. Omitted where the level lies on none. */
|
|
5391
|
-
table?: {
|
|
5392
|
-
cell: boolean;
|
|
5393
|
-
};
|
|
5394
|
-
/** The widget's language for the row labels. Omitted ⇒ English. */
|
|
5395
|
-
t?: ChartTranslate;
|
|
5396
|
-
}
|
|
5397
|
-
/** The menu a level offers, in one fixed order. */
|
|
5398
|
-
declare function chartContextMenu(c: ChartMenuContext): ChartMenuRow[];
|
|
5399
|
-
|
|
5400
|
-
/** A row the HOST contributed for this raise (through the chart's extension seam). It carries its
|
|
5401
|
-
* own action, so the painter routes nothing and a contributed row can never collide with a
|
|
5402
|
-
* built-in id. Structural on purpose: the menu has no dependency on who contributed or why. */
|
|
5403
|
-
interface ContextMenuExtraRow {
|
|
5404
|
-
label: string;
|
|
5405
|
-
shortcut?: string;
|
|
5406
|
-
checked?: boolean;
|
|
5407
|
-
/** An inert vector glyph for the shared gutter. */
|
|
5408
|
-
icon?: ChartExtensionIcon;
|
|
5409
|
-
/** `level` rows (the default) group under Copy price and Paste; `view` rows under the removes. */
|
|
5410
|
-
group?: 'level' | 'view';
|
|
5411
|
-
run(): void;
|
|
5412
|
-
}
|
|
5413
|
-
interface ContextMenuHandle {
|
|
5414
|
-
/** Raise the menu at a viewport point, for the level the caller resolved. `extra` places the
|
|
5415
|
-
* contributed rows by their group between the built-ins; an empty list adds no separator. */
|
|
5416
|
-
open(at: {
|
|
5417
|
-
clientX: number;
|
|
5418
|
-
clientY: number;
|
|
5419
|
-
}, ctx: ChartMenuContext, extra?: readonly ContextMenuExtraRow[]): void;
|
|
5420
|
-
close(): void;
|
|
5421
|
-
destroy(): void;
|
|
5422
|
-
}
|
|
5423
|
-
/** `strings` is the chart's language: the rows are built through it every time the menu is raised,
|
|
5424
|
-
* and an open menu re-labels in place if the language changes under it. `icons` are the host's
|
|
5425
|
-
* drawings for the menu's own glyphs, as a chart takes them. */
|
|
5426
|
-
declare function mountContextMenu(container: HTMLElement, run: (id: ChartMenuAction) => void, strings?: ChartI18n, icons?: ChartIcons): ContextMenuHandle;
|
|
5427
|
-
|
|
5428
6104
|
/** The session's name in English — what a host renders when it shows status text of its own. The
|
|
5429
6105
|
* widget's catalog carries the same five under `session.<state>`, keyed by these very names, so a
|
|
5430
6106
|
* host reading the catalog and a host reading this table always say the same thing. */
|
|
@@ -5433,14 +6109,32 @@ declare const SESSION_LABEL: Readonly<Record<SessionState, string>>;
|
|
|
5433
6109
|
* against the theme in effect, so the marker follows light or dark and a host's custom palette
|
|
5434
6110
|
* instead of carrying a color of its own. */
|
|
5435
6111
|
declare const SESSION_DOT: Readonly<Record<SessionState, ThemeRoleId>>;
|
|
5436
|
-
/**
|
|
5437
|
-
* read
|
|
5438
|
-
*
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
*
|
|
5442
|
-
*
|
|
5443
|
-
|
|
6112
|
+
/** The bar times among `times` (ascending) that open a new trading day: each bar whose trading day,
|
|
6113
|
+
* read in the exchange zone, differs from the bar before it. The first bar opens nothing, because
|
|
6114
|
+
* the day before it is not on screen. */
|
|
6115
|
+
declare function sessionBreakTimes(model: SessionModel, times: readonly number[]): number[];
|
|
6116
|
+
/** How the bands look under the chart settings: the shading of each stretch outside regular hours
|
|
6117
|
+
* (null leaves it clear) and the line at each session's start (null draws none). The closed
|
|
6118
|
+
* stretch keeps its theme role. */
|
|
6119
|
+
interface SessionLook {
|
|
6120
|
+
pre: string | null;
|
|
6121
|
+
after: string | null;
|
|
6122
|
+
extended: string | null;
|
|
6123
|
+
breaks: {
|
|
6124
|
+
color: string;
|
|
6125
|
+
width: number;
|
|
6126
|
+
style: ChartStrokeStyle;
|
|
6127
|
+
} | null;
|
|
6128
|
+
}
|
|
6129
|
+
/** A series primitive that shades every non-regular-hours stretch of the visible chart and draws a
|
|
6130
|
+
* vertical line where each trading day starts. Bars are read back from the price series (no
|
|
6131
|
+
* second feed), classified under the symbol's CURRENT session model, merged into runs, and drawn as
|
|
6132
|
+
* full-height rects UNDER the main series (zOrder bottom). Re-renders with every chart paint, so it
|
|
6133
|
+
* tracks pan/zoom for free. An UNKNOWN model (null) draws nothing: drawing nothing is the only
|
|
6134
|
+
* honest render before the symbol resolves. A continuous market never bands (it is always open),
|
|
6135
|
+
* though its days still break. Both render on INTRADAY timeframes only: a daily or larger bar spans
|
|
6136
|
+
* whole sessions, so classifying its single timestamp would shade entire days by whichever session
|
|
6137
|
+
* that instant fell in, and every bar would start a day. */
|
|
5444
6138
|
interface SessionBandsPrimitive {
|
|
5445
6139
|
paneViews(): unknown[];
|
|
5446
6140
|
attached(param: {
|
|
@@ -5453,9 +6147,14 @@ interface SessionBandsPrimitive {
|
|
|
5453
6147
|
* repaint (on a quiet market: never). */
|
|
5454
6148
|
refresh(): void;
|
|
5455
6149
|
}
|
|
5456
|
-
declare function createSessionBands(chart: IChartApi, series: ISeriesApi<SeriesType>,
|
|
6150
|
+
declare function createSessionBands(chart: IChartApi, series: ISeriesApi<SeriesType>,
|
|
6151
|
+
/** Whether the stretches outside regular hours are shaded. */
|
|
6152
|
+
enabled: () => boolean, model: () => SessionModel | null, intraday: () => boolean,
|
|
5457
6153
|
/** The theme in effect. Read at draw time, so a mode switch repaints the bands with the pane. */
|
|
5458
|
-
theme: () => SemanticTheme
|
|
6154
|
+
theme: () => SemanticTheme,
|
|
6155
|
+
/** The colors and the session breaks the chart settings ask for. Without it each stretch wears
|
|
6156
|
+
* its theme role and no break is drawn. */
|
|
6157
|
+
look?: () => SessionLook): SessionBandsPrimitive;
|
|
5459
6158
|
|
|
5460
6159
|
/** The compact editor beside `rect` inside `container`, its glyphs drawn from the chart's own
|
|
5461
6160
|
* artwork. */
|
|
@@ -5469,6 +6168,61 @@ declare function openInputsEditor(container: HTMLElement, rect: {
|
|
|
5469
6168
|
* field's name and an enum's options are the manifest's own vocabulary and are not translated. */
|
|
5470
6169
|
strings?: ChartI18n): void;
|
|
5471
6170
|
|
|
6171
|
+
/** The chart settings a chart opens with under a resolved theme, before any host or viewer names a
|
|
6172
|
+
* leaf. */
|
|
6173
|
+
declare function chartSettingsDefaults(theme: SemanticTheme): ChartSettings;
|
|
6174
|
+
/** Every section of the tree, in its order. */
|
|
6175
|
+
declare const CHART_SETTINGS_SECTIONS: readonly ChartSettingsSection[];
|
|
6176
|
+
/** What reading a stored partial kept, and the `section.leaf` paths it had to drop because the value
|
|
6177
|
+
* was not one the leaf can hold. A path the tree does not have at all is ignored rather than
|
|
6178
|
+
* reported: it is a leaf this build does not know, not a broken one. */
|
|
6179
|
+
interface ReadChartSettings {
|
|
6180
|
+
settings: PartialChartSettings;
|
|
6181
|
+
rejected: string[];
|
|
6182
|
+
}
|
|
6183
|
+
/** Read a stored or supplied partial. `isColor` decides whether a string is a color the renderer can
|
|
6184
|
+
* paint; the portable parser is the default. */
|
|
6185
|
+
declare function readPartialChartSettings(raw: unknown, isColor?: (value: string) => boolean): ReadChartSettings;
|
|
6186
|
+
/** Layer partials over a complete tree, later partials winning leaf by leaf. A leaf the tree does
|
|
6187
|
+
* not have is ignored. */
|
|
6188
|
+
declare function layerChartSettings(base: ChartSettings, ...partials: (PartialChartSettings | null | undefined)[]): ChartSettings;
|
|
6189
|
+
|
|
6190
|
+
/** The chart settings' factory colors that are the same in both modes. */
|
|
6191
|
+
interface ChartFactoryColors {
|
|
6192
|
+
/** A single-value line drawn in one color, and the area style's line. */
|
|
6193
|
+
line: string;
|
|
6194
|
+
/** A single-value line drawn as a gradient: its color at the highest price on screen. */
|
|
6195
|
+
lineGradientTop: string;
|
|
6196
|
+
/** Its color at the lowest price on screen. */
|
|
6197
|
+
lineGradientBottom: string;
|
|
6198
|
+
/** The area style's fill at its line, fading to the second at the pane's foot. */
|
|
6199
|
+
areaTop: string;
|
|
6200
|
+
areaBottom: string;
|
|
6201
|
+
/** The vertical line at each session's start. */
|
|
6202
|
+
sessionBreaks: string;
|
|
6203
|
+
/** The previous session's close on the price scale. */
|
|
6204
|
+
previousClose: string;
|
|
6205
|
+
/** The visible range's high and low: their lines across the plot, and their labels on the scale,
|
|
6206
|
+
* while the setting names no color of its own. */
|
|
6207
|
+
highLowLine: string;
|
|
6208
|
+
highLowLabel: string;
|
|
6209
|
+
bid: string;
|
|
6210
|
+
ask: string;
|
|
6211
|
+
/** The text on every colored value label the price scale wears, and on the tag beside it. */
|
|
6212
|
+
scaleLabelText: string;
|
|
6213
|
+
/** The last values of the pre-market, post-market and overnight stretches on the price scale. */
|
|
6214
|
+
preMarketLabel: string;
|
|
6215
|
+
postMarketLabel: string;
|
|
6216
|
+
nightLabel: string;
|
|
6217
|
+
}
|
|
6218
|
+
/** The factory colors of the chart settings that do not change with the mode. */
|
|
6219
|
+
declare const CHART_FACTORY_COLORS: Readonly<ChartFactoryColors>;
|
|
6220
|
+
/** The brand pair: what a host's own surfaces on the chart read, an extension's lines among them,
|
|
6221
|
+
* so a rebrand edits two strings. The candles keep the series pair, because candles are the market
|
|
6222
|
+
* and the brand pair marks what a host draws on top of it. */
|
|
6223
|
+
declare const BRAND_UP = "#4c98fb";
|
|
6224
|
+
declare const BRAND_DOWN = "#f23645";
|
|
6225
|
+
|
|
5472
6226
|
/** The `/symbols` fields this mapping reads. A server may send more; anything not listed here has
|
|
5473
6227
|
* no place in symbology. */
|
|
5474
6228
|
interface UdfSymbolResponse {
|
|
@@ -5651,12 +6405,34 @@ declare function timezoneLabel(zone: string, at?: Date): string;
|
|
|
5651
6405
|
* `tag`. */
|
|
5652
6406
|
declare function formatClock(tag: string, zone: string, at?: Date): string;
|
|
5653
6407
|
/** The time-axis tick-mark formatter for lightweight-charts: each mark granularity written in the
|
|
5654
|
-
* zone and the language. Assign it to
|
|
5655
|
-
|
|
6408
|
+
* zone and the language, the times on a clock of 24 hours or of 12. Assign it to
|
|
6409
|
+
* `timeScale.tickMarkFormatter`. */
|
|
6410
|
+
declare function makeTickMarkFormatter(tag: string, zone: string, hours?: ChartHoursFormat): (time: Time, tickMarkType: TickMarkType) => string;
|
|
6411
|
+
/** How the crosshair's time label writes a moment: the date's pattern, whether the weekday leads it,
|
|
6412
|
+
* the clock, and the words the quarter of a year is written with. */
|
|
6413
|
+
interface TimeLabelFormat {
|
|
6414
|
+
dateFormat: ChartDateFormat;
|
|
6415
|
+
dayOfWeek: boolean;
|
|
6416
|
+
hoursFormat: ChartHoursFormat;
|
|
6417
|
+
/** The quarter, 1 to 4, as the reader's language writes it (Q3). */
|
|
6418
|
+
quarter(quarter: number): string;
|
|
6419
|
+
}
|
|
6420
|
+
/** A date written by a pattern, in the zone and the language: the month's name from the language,
|
|
6421
|
+
* every number in Latin digits. */
|
|
6422
|
+
declare function formatChartDate(at: Date, zone: string, tag: string, pattern: ChartDateFormat, quarter: (quarter: number) => string): string;
|
|
6423
|
+
/** A pattern written on the sample date, in the reader's language, with or without the weekday:
|
|
6424
|
+
* what a date-format picker shows for each choice ("Mon 29 Sep '97"). */
|
|
6425
|
+
declare function chartDateSample(format: ChartDateFormat, options: {
|
|
6426
|
+
locale: string;
|
|
6427
|
+
dayOfWeek: boolean;
|
|
6428
|
+
t: ChartTranslate;
|
|
6429
|
+
}): string;
|
|
5656
6430
|
/** The crosshair time label for lightweight-charts: the date always, the wall time only when
|
|
5657
6431
|
* `withTime` (an intraday chart). A daily or larger bar's timestamp is a session date, and a
|
|
5658
|
-
* shifted midnight would misread as a fill time.
|
|
5659
|
-
|
|
6432
|
+
* shifted midnight would misread as a fill time. With a `format` the date follows its pattern,
|
|
6433
|
+
* weekday and clock; without one it is the language's own short date with its weekday, on a clock
|
|
6434
|
+
* of 24 hours. Assign it to `localization.timeFormatter`. */
|
|
6435
|
+
declare function makeCrosshairTimeFormatter(tag: string, zone: string, withTime: boolean, format?: TimeLabelFormat): (time: Time) => string;
|
|
5660
6436
|
/** One row of the timezone picker: the choice it selects and the text it wears. */
|
|
5661
6437
|
interface TimezoneRow {
|
|
5662
6438
|
readonly id: string;
|
|
@@ -5793,4 +6569,4 @@ declare function mountTimeframePicker(options: TimeframePickerOptions & {
|
|
|
5793
6569
|
container: HTMLElement;
|
|
5794
6570
|
}): MountedTimeframePicker;
|
|
5795
6571
|
|
|
5796
|
-
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, 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 ChartIconArtwork, 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
|
|
6572
|
+
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BuiltInIndicator, CHART_DATE_FORMATS, CHART_FACTORY_COLORS, CHART_ICON_IDS, CHART_SETTINGS_SECTIONS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CandleStyleSettings, type CanvasTheme, type Capabilities, type ChartBackgroundType, ChartBody, type ChartChrome, type ChartCompareApi, type ChartControlVisibility, type ChartCustomLocale, ChartDatafeed, type ChartDateFormat, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionCapture, type ChartExtensionCaptureFrame, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionLegendRow, type ChartExtensionMenuBuilder, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartFactoryColors, type ChartHandle, type ChartHistoryApi, type ChartHoursFormat, type ChartI18n, type ChartI18nOptions, type ChartIconArtwork, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLastValueMode, type ChartLegendRow, type ChartLineColorType, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartPricePrecision, type ChartPriceSource, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartScalePlacement, type ChartSessionHours, type ChartSettings, type ChartSettingsContribution, type ChartSettingsControls, type ChartSettingsForm, type ChartSettingsIconPainter, type ChartSettingsOption, type ChartSettingsPageId, type ChartSettingsRowHandle, type ChartSettingsSection, type ChartSettingsTip, type ChartStorage, type ChartStrokeStyle, type ChartStyleId, type ChartTimezone, type ChartTitleSource, 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 CrosshairUi, type CustomThemes, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataSourceMarkPainter, DataStatus, DatafeedSearchOptions, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingInks, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, FeedBar, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, 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 LineStyleSettings, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, MarkIconId, type MarkPainters, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialChartSettings, type PlacedImage, type PlotArea, type PlotPoint, PriceFormat, PriceFormatter, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type ReadChartSettings, 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, SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, SearchPage, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionLook, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubsessionSource, SymbolInfo, type SymbolMarkPainter, type SymbolPriceFormat, 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, TextDraft, TextEditFrame, type TextEditSession, type TextInlineEdit, 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 TimeLabelFormat, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type TouchOptions, type TransitionOptions, 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, chartDateSample, chartDictionaries, chartIconArtwork, chartSettingsDefaults, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatChartDate, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerChartSettings, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, readPartialChartSettings, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionBreakTimes, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subTimeframesFor, subsessionBarFilter, tfSeconds, tfToUdfResolution, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };
|