@trdrs/quickcharts 2.4.0 → 4.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 +121 -0
- package/README.md +326 -25
- package/dist/adapters/rest.d.ts +1 -1
- package/dist/{ar-KSXQ2USS.js → ar-FXZ5QJUR.js} +206 -56
- package/dist/ar-FXZ5QJUR.js.map +1 -0
- package/dist/{assets-M5emOz5c.d.ts → assets-Gg-UquDA.d.ts} +285 -61
- package/dist/{ca_ES-JG4FM55E.js → ca_ES-3WVKFBIF.js} +206 -56
- package/dist/ca_ES-3WVKFBIF.js.map +1 -0
- package/dist/chunk-C4MEVUNK.js +11449 -0
- package/dist/chunk-C4MEVUNK.js.map +1 -0
- package/dist/{de-VSW2LHNF.js → de-V72Q3OI7.js} +206 -56
- package/dist/de-V72Q3OI7.js.map +1 -0
- package/dist/drawings.d.ts +24 -13
- package/dist/drawings.js +5 -1
- package/dist/{es-5ZXIPVOB.js → es-CNQ3OJ6E.js} +206 -56
- package/dist/es-CNQ3OJ6E.js.map +1 -0
- package/dist/feature-manifest.json +94 -11
- package/dist/{fr-4F6DAWGD.js → fr-5WQBCGR4.js} +206 -56
- package/dist/fr-5WQBCGR4.js.map +1 -0
- package/dist/{he_IL-B7PBQUEV.js → he_IL-WXKA77UE.js} +206 -56
- package/dist/he_IL-WXKA77UE.js.map +1 -0
- package/dist/{id_ID-CYJRMXPC.js → id_ID-XPBAYSWK.js} +206 -56
- package/dist/id_ID-XPBAYSWK.js.map +1 -0
- package/dist/index.d.ts +1834 -1671
- package/dist/index.js +5405 -2619
- package/dist/index.js.map +1 -1
- package/dist/{it-KTX4SG5P.js → it-DR2EBNWX.js} +206 -56
- package/dist/it-DR2EBNWX.js.map +1 -0
- package/dist/{ja-V7OURU5D.js → ja-URB2CPXO.js} +206 -56
- package/dist/ja-URB2CPXO.js.map +1 -0
- package/dist/{ko-2RNEBYVE.js → ko-OE47NYVP.js} +206 -56
- package/dist/ko-OE47NYVP.js.map +1 -0
- package/dist/{ms_MY-EY235E7Q.js → ms_MY-BKCFRK2K.js} +206 -56
- package/dist/ms_MY-BKCFRK2K.js.map +1 -0
- package/dist/{pl-ADNVRP55.js → pl-3IKQRG3Y.js} +206 -56
- package/dist/pl-3IKQRG3Y.js.map +1 -0
- package/dist/{pt-OL2DR3DO.js → pt-PZHV5EZE.js} +206 -56
- package/dist/pt-PZHV5EZE.js.map +1 -0
- package/dist/quickcharts.css +2060 -717
- package/dist/{resources-C0cYryO9.d.ts → resources-Le6flcEn.d.ts} +1 -1
- package/dist/{ru-V6YFEPAF.js → ru-BAL6RQUV.js} +206 -56
- package/dist/ru-BAL6RQUV.js.map +1 -0
- package/dist/{sv-TORXQVE7.js → sv-Y6GBGDHM.js} +206 -56
- package/dist/sv-Y6GBGDHM.js.map +1 -0
- package/dist/{symbols-BL1fD4CS.d.ts → symbols-6V22WaRX.d.ts} +1 -1
- package/dist/symbols.d.ts +1 -1
- package/dist/{th-K6SJSYSY.js → th-MAMLMZKU.js} +206 -56
- package/dist/th-MAMLMZKU.js.map +1 -0
- package/dist/theme-manifest.json +204 -16
- package/dist/{tr-4AEM66KW.js → tr-3LQHINUZ.js} +206 -56
- package/dist/tr-3LQHINUZ.js.map +1 -0
- package/dist/{vi-YU5XCEUU.js → vi-GR4PSDKP.js} +206 -56
- package/dist/vi-GR4PSDKP.js.map +1 -0
- package/dist/{zh-QXKRYHU5.js → zh-2RJ5VNAI.js} +206 -56
- package/dist/zh-2RJ5VNAI.js.map +1 -0
- package/dist/{zh_TW-AYPDKG4Q.js → zh_TW-XEBSACHU.js} +206 -56
- package/dist/zh_TW-XEBSACHU.js.map +1 -0
- package/package.json +1 -1
- package/dist/ar-KSXQ2USS.js.map +0 -1
- package/dist/ca_ES-JG4FM55E.js.map +0 -1
- package/dist/chunk-YR7NT5ZW.js +0 -6997
- package/dist/chunk-YR7NT5ZW.js.map +0 -1
- package/dist/de-VSW2LHNF.js.map +0 -1
- package/dist/es-5ZXIPVOB.js.map +0 -1
- package/dist/fr-4F6DAWGD.js.map +0 -1
- package/dist/he_IL-B7PBQUEV.js.map +0 -1
- package/dist/id_ID-CYJRMXPC.js.map +0 -1
- package/dist/it-KTX4SG5P.js.map +0 -1
- package/dist/ja-V7OURU5D.js.map +0 -1
- package/dist/ko-2RNEBYVE.js.map +0 -1
- package/dist/ms_MY-EY235E7Q.js.map +0 -1
- package/dist/pl-ADNVRP55.js.map +0 -1
- package/dist/pt-OL2DR3DO.js.map +0 -1
- package/dist/ru-V6YFEPAF.js.map +0 -1
- package/dist/sv-TORXQVE7.js.map +0 -1
- package/dist/th-K6SJSYSY.js.map +0 -1
- package/dist/tr-4AEM66KW.js.map +0 -1
- package/dist/vi-YU5XCEUU.js.map +0 -1
- package/dist/zh-QXKRYHU5.js.map +0 -1
- package/dist/zh_TW-AYPDKG4Q.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,126 @@
|
|
|
1
1
|
# @trdrs/quickcharts
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 4.0.0
|
|
6
|
+
|
|
7
|
+
Settled settings dialogs and factory looks for every drawing tool, words typed on the chart, a rebuilt replay date picker, glyphs drawn as the chart's own artwork, recent picks narrowed by the selected class, and drawings the catalog cannot restore named as unreadable. 4.0 removes the content card and the catalog keys the settled dialogs do not read, and gives drawing props new names and meanings, so a host upgrades as the guide below says. A drawing saved by 3.x restores with the look it was saved with.
|
|
8
|
+
|
|
9
|
+
The built-in palettes retune their dialog and status colors: the veil behind a light modal is `rgba(156, 156, 156, 0.5)`, a select's chevron and a flyout's arrow read in `chrome.caret` (`#707070` light, `#8c8c8c` dark), the muted ink is `#6a6a6a` light and `#9b9b9b` dark, the status inks are `#078671`, `#df323f` and `#ac6600` in light and `#089981`, `#f34452` and `#ff9800` in dark, `drawing.line` is `#2962ff` in both modes, and `drawing.selected`, the ring of a selected drawing's handles, is `#2962ff` light and `#1e53e5` dark. Every ink reads at the WCAG 2.2 AA ratio on each ground it is drawn over.
|
|
10
|
+
|
|
11
|
+
The drawing settings dialog is a card at least 380px wide under a 68px header that carries the drawing's name at 20px, a pencil that renames it in place, and the close; a page strip of 16px tabs over a 4px track, the shown page carried by a bar that slides to the next; a two-column page whose labels share one column and whose rows stand 50px; list buttons that open their choices under them, several at once where a row takes several; and a footer with the Template list button, Cancel and Ok. `DrawingOptions.name` holds the name a viewer gives a drawing, saved with it, and a drawing without one is called by its tool's name.
|
|
12
|
+
|
|
13
|
+
A color in the drawing settings dialog opens one popover directly under its button, past the dialog's edge where it needs to, and keeps its whole width and height wherever it opens, moving left or above its button to stay in view rather than narrowing or scrolling; the settings bar's color panels keep theirs the same way: the offered colors on a ten-wide grid (the greys and ten hues, then six ramps of them), the colors the viewer added after a rule with the plus that adds one, the opacity as a track and a percent field, and for a stroke the Thickness and Line style rows as joined segments. Every choice applies to the drawing at once and the popover stays up for the next one, while Cancel still puts back everything from before the dialog opened. The plus opens a custom color editor with a hex field that takes three or six digits, a saturation and brightness area and a hue strip; a color added there joins the viewer's own colors, kept with the drawing preferences in `ChartStorage`, and is chosen. The arrows move over the grid and the rows, Enter or Space chooses, Tab stays in the popover, and Escape returns to the button. The line-end list is as wide as its rows, and both line-end marks are the chart's own drawing.
|
|
14
|
+
|
|
15
|
+
The line, shape and curve tools open with their factory looks: the line tools in `#2962ff` at 2px with 14px words (12px for a trend angle and the horizontal lines), and each shape and curve in its own hue at 2px with a background of that hue at a fifth, switched off on a curve. Their settings pages carry the rows their kinds offer: a line's ends, extensions, middle point, price labels and stats under Info, with `showPipsChange` counting the change in the symbol's smallest price move, `statsPosition` taking `auto`, and `alwaysShowStats` keeping them on screen when the line is not selected, since they otherwise show only while it is; a level's price label and a time line's time label; a rectangle's middle line in a stroke of its own; a shape's background switched by `fillBackground`; a curve's ends and its extensions along its end tangents; and a Text page whose words stand where `textVAlign` and `textHAlign` put them, with `textOrientation` turning a vertical line's words to run up it. `NO_COORDINATES_TAB` and `PRICE_ONLY_COORDS` join the settings capabilities, and the `bold` and `italic` icons draw the Text page's weight and slant toggles.
|
|
16
|
+
|
|
17
|
+
A Fibonacci retracement, a trend-based extension and a fib channel open on twenty-four levels, the eleven classic ratios shown and thirteen more to switch on, each in its own color, drawn at 2px with 12px labels over bands at a fifth; a retracement and an extension draw their trend line dashed in grey. Their Style pages carry the trend line, the levels' thickness and style, the extensions, the level grid two to a line, one color for every level, the bands' switch and opacity, Reverse, Prices, the labels' reading and place, the levels' own words and their place, the labels' size, and log price levels: `trendLine`, `trendLineColor`, `trendLineWidth`, `trendLineStyle`, `fillBackground`, `backgroundOpacity`, `coeffsAsPercents`, `labelsHAlign`, `labelsVAlign`, `showText`, `textHAlign`, `textVAlign` and `levelsOnLogScale`, with `Viewport.logScale` saying whether the price scale is logarithmic. A fib saved with its earlier `background` switch keeps its setting as `fillBackground`. A number field's stepper keeps every digit the value carries.
|
|
18
|
+
|
|
19
|
+
A fib time zone, a trend-based fib time, fib circles, speed resistance arcs, a fib wedge and a pitchfan open on their own levels, each in its own color and stroke, and their Style pages stand the levels one to a line, each level's switch, value and stroke (`FibLevel.width` and `FibLevel.style`), under the trend line or the median and over the one color, the bands' switch and opacity, and the rows of their own: a time zone's and a trend-based time's Labels and where they stand, a circle fib's Levels and Coeffs as percents, an arc fib's Levels and Full circles, and a wedge's Levels. A wedge has no Coordinates page. A speed resistance fan and a gann box divide their box on seven price and seven time divisions, `priceLevels` and `timeLevels`, each side under its section with its labels' switches; a fan adds its bands, a grid in a stroke of its own and Reverse, and a gann box its price and time bands on their own switches and opacities, its angles in a color of their own, and Reverse. A fan saved with one set of levels reads them as its price divisions and a gann box as both its price and its time divisions, and the settings bar's stroke color recolors every set of levels a tool holds.
|
|
20
|
+
|
|
21
|
+
The four pitchforks open on nine line pairs, the half in `#089981` and the tines in `#2962ff` shown and seven more to switch on, each pair in its own color at 2px, with a red median and bands at a fifth. Their Style pages carry Extend lines, the median's stroke (`medianColor`, `medianWidth`, `medianStyle`), the pairs one to a line with each pair's switch, value and stroke, the one color, the bands' switch and opacity (`fillBackground`, `backgroundOpacity`) and the construction in a Style list that switches it in place. A fork saved with its earlier `background` switch keeps its setting as `fillBackground`.
|
|
22
|
+
|
|
23
|
+
A fib spiral opens in `#00bcd4` at 2px, and its Style page carries its line and Counterclockwise, `counterclockwise` winding it the other way about its first point.
|
|
24
|
+
|
|
25
|
+
A gann square and a gann square fixed open on six grid lines, eleven fan lines (2x1, 1x1 and 1x2 shown) and eleven arcs, each in its own color at 2px over bands at a fifth, and their Style pages set the Levels, Fans and Arcs two to a line, each its switch with its place or its ratio and its stroke, then the one color, the bands' switch and opacity, and Reverse: `levels`, `fans` and `arcs` hold the lines, with `fillBackground`, `backgroundOpacity` and `reverse`. A gann square holds its second corner at `scaleRatio` price per bar, taken from the pane when it is first drawn, which its Price/bar ratio field shows and sets, and reads its ranges and ratio under it while `showLabels` is on, in the size, weight and slant its Ranges and ratio row sets. A gann fan opens on nine rays, 1/8 to 8/1, each in its own color and stroke over bands at a fifth, its page a line for each ray named by its ratio, the one color, the bands and Labels. A square or a fan saved with its earlier `background` switch keeps its setting as `fillBackground`, a square saved with its earlier levels paints them as it was saved until its settings change and then takes its factory lines, and the settings bar's stroke color recolors a square's fans and arcs with its grid.
|
|
26
|
+
|
|
27
|
+
A regression trend fits through any of nine sources (`BAR_PRICE_SOURCES`: open, high, low, close, volume, `hl2`, `hlc3`, `ohlc4`, `hlcc4`), opens with its line dashed red at 1px and its bands blue at 2px two deviations either side, and its pages carry Upper Deviation, Lower Deviation (counted down from the line, so a saved trend's lower deviation reads as its negative), their switches and the source on Inputs, and the line's and bands' switches and strokes, Extend lines and Pearson's R on Style: `baseLine`, `baseColor`, `baseWidth`, `baseStyle`, the same for `up` and `down`, `extendLines` and `showPearsons`. A parallel channel opens on seven levels, 0 and 1 shown at 2px and the half dashed at 1px, each in its own stroke, its page carrying them one to a line with the extensions and the background, and its Coordinates page its parallel's Price offset. A flat top/bottom and a disjoint channel open in `#ff9800` and `#089981` with no Coordinates page, their pages carrying the line and its ends, the extensions, the sides' prices in a text style of their own (`showPrices`, `pricesColor`, `pricesFontSize`, `pricesBold`, `pricesItalic`) and the background. Every channel opens with its body at a fifth and 14px words, and stands them above, inside or below it.
|
|
28
|
+
|
|
29
|
+
The six chart patterns open in their factory looks: an XABCD and a cypher pattern in `#2962ff`, an ABCD and a head and shoulders in `#089981`, a three drives and a triangle pattern in `#673ab7`, each at 2px with white 12px letters, the shaded ones shading their legs in their hue at fifteen percent. Their Style pages carry a Label row (the letters' color, size, weight and slant), the border, and for the shaded ones the background, switched by `fillBackground`; a pattern carries no words of its own and has no Text page unless a save brings some, and a pill grows with its letters. A three drives pattern stands on seven points, the reversal after its third drive the last, and one saved on six completes with its reversal on its third drive, drawing as it was saved.
|
|
30
|
+
|
|
31
|
+
The five Elliott wave counts open in their colors at 2px (an impulse and a correction in `#3d85c6`, a triangle in `#ff9800`, the combos in `#6aa84f`), and their Style pages carry the wave's color, the wave's switch and thickness (`showWave`) and the count's degree (`degree`, one of fifteen from supermillennium to minuscule), which writes each label ringed, in parentheses or bare, in roman numerals or figures, and in capitals or small letters. The labels take the wave's color, and `LABELED_PATTERNS` lists the six chart patterns alone.
|
|
32
|
+
|
|
33
|
+
Cyclic lines open in `#80ccdb` and the sine line and time cycles in `#159980`, each at 2px, the cyclic lines' and the sine line's Style pages naming their stroke Lines; a time cycle shades its humps in `#6aa84f` at half, switched by `fillBackground` on its Background row.
|
|
34
|
+
|
|
35
|
+
A forecast opens in `#2962ff` at 2px, its source a tenth see-through and its verdicts green and red, and its Style page sets the line and each of its ten colors on a row of its own. A sector shades the two halves of its slice in `color1` and `color2`, blue and purple at a fifth, inside a grey 2px border, with `fillBackground` switching them, and has no Coordinates page. A bars pattern paints its bars as their high-low or open-close ranges or as a line through one price of each (`mode`: `hl`, `oc`, `close`, `open`, `high`, `low`, `hl2`, `BARS_PATTERN_MODES`), a pattern saved painting candle sticks painting them (`candles`) until a mode is chosen, and has no Coordinates page. A ghost feed's page writes its candles' average span in the symbol's minimum ticks, its borders and wick on switches of their own, and its transparency on a track. `FILLABLE` leaves out the sector, whose backgrounds are its own.
|
|
36
|
+
|
|
37
|
+
A long and a short position open with grey 1px lines, white 12px words and a leverage of 10000, so the risk sets their quantity, and have no Coordinates page: their Inputs page carries the account size, the lot size, the risk as a percent or an amount in the symbol's currency, the entry price, the leverage, the target and the stop each as ticks from the entry and as a price, and how the quantity is written (`qtyPrecision`); their Style page the lines, the stop and target colors, the words' color and size, Price labels, the stats the tags read (`stats`, thirteen to choose from, all but the two levels' P&L at first), Compact stats mode and Always show stats (`alwaysShowStats`): the tags read while the position is hovered or selected, and at rest only while their stats always show. A drawing layer's `setCurrency` tells its drawings the currency the symbol is quoted in, and the widget passes it from the symbol's `currencyCode`.
|
|
38
|
+
|
|
39
|
+
An anchored VWAP weighs any of nine sources (`source`, the typical price at first) and stands up to three bands off its average in volume-weighted standard deviations or percents (`bandsMode`, `bandMultipliers`, `bandsOn`), each band's upper and lower line in a stroke of its own (`upperBands`, `lowerBands`), the first band's body in the drawing's fill (`fillBackground`) and its latest average on the price scale (`showPriceLabel`); its Inputs page carries the bands and the source, its Style page the average, each band line, the body and Price label, and it has no Coordinates page. A volume profile's pages carry Rows Layout, Row Size, Volume, Value Area Volume and, for a fixed range, Extend Right on Inputs, and on Style the histogram's switch (`showProfile`), its values (`showValues`, `valuesColor`), its width and edge, its four colors, VAH, VAL, POC, Developing POC and Developing VA each on a switch in a stroke of its own, the box's background (`boxColor`) and, for an anchored profile, its lines on the price scale (`showLabelsOnPriceScale`). A price range, a date range and a date and price range read the stats their Stats list chooses (`showPriceRange`, `showPercentChange`, `showPipsChange`, `showBarsRange`, `showDateTimeRange`, `showVolume`) in a label of their own (`labelColor`, `labelFontSize`, `fillLabelBackground`, `labelBackgroundColor`), switch their span's background, run a price range on to the left or right and a date range to the top or bottom, and border a date and price range on its switch (`drawBorder`, `borderColor`, `borderWidth`); a meter saved with its earlier stats keeps them.
|
|
40
|
+
|
|
41
|
+
The text and annotation tools open in their factory looks and pages. A text opens blue at 14px with no Coordinates page, its Text page carrying its background and border each on a switch (`fillBackground`, `drawBorder`) and Text wrap (`wordWrap`, `wordWrapWidth`); a text saved with its words centered keeps them so. A comment opens white on blue at 16px, its words' row named Text without weight or slant; a callout white on teal at 14px with a 2px border, its border's width on its Border row and Text wrap after it; a price label white and bold on blue, its Style page carrying its Text, Background and Border. A note stands on two points, the point it notes and its label, a line between them: its Style page carries Label background and Label border on their switches (`fillBackground`, `drawBorder`, `borderColor`) and Line color, and a note saved on one point keeps that point and stands its label's corner on it as it was drawn, the line showing once the label is moved off. A price note's Style page carries its tag's Label text, Label background and Label border (`labelTextColor`, `labelFontSize`, `labelBold`, `labelItalic`, `labelBackgroundColor`, `labelBorderColor`) and Line color, and its Text page where its words stand. A pin's Style page carries its marker's color under Label and its Text page its box's background and border. A signpost's Style page carries Emoji pin (`showImage`, with an emoji picker for `emoji`) and its plate's color, and its Coordinates page its vertical position over its bar (`position`) and its bar. A table opens on three by three dark cells, its dialog its Style and Visibility pages alone, the Style page carrying Background, Border, Text and Text alignment (`textHAlign`), its header band off at first; its cells, rows and columns are set on the chart, and `INERT_PROPS` lists its `cells` and `headerRow`. The arrow marks, the arrow marker and the flag open in their own colors, each named on its Style page for what it paints. `NO_STYLE_TAB` lists the text, the comment and the callout, `NO_STROKE` leaves out the comment, the callout and the price label, whose borders take the stroke, `NO_LINE_DECOR` lists the price label and `NO_DASH` the callout.
|
|
42
|
+
|
|
43
|
+
A brush opens teal at 2px with its background off (`fillBackground`) and its ends plain, and a path blue at 2px with an arrow at its last point, each stroke's ends set on its Line row (`leftEnd`, `rightEnd`); a brush saved with a fill shows it, its background switched on. A highlighter opens red at a fifth, 20px wide, its page carrying its color and its width in pixels. An emoji and a sticker open at 72px and an icon in blue at 40px, its page carrying its tint. The strokes, the glyphs and the image have no Coordinates page, and the emoji and the sticker open on their Visibility page. An image's page chooses its picture from a box that names the formats and the size the intake takes, and sets its transparency on a track.
|
|
44
|
+
|
|
45
|
+
`THEME_ROLES` gains five roles, each in both built-in palettes: `control.outline` outlines a dialog's Cancel at rest (`#2e2e2e` light, `#ffffff` dark), `control.onInk` inks a mark cut from the emphasis fill, such as a chosen thickness, line style or line end (`#ffffff` light, `#000000` dark), `control.selectEdgeHover` is a list button's edge under the pointer (`#a8a8a8` light, `#808080` dark), and `motion.durationGlide` (`100ms`) and `motion.easingInOut` (`ease-in-out`) time the drawing settings dialog's tab bar sliding to the page shown, the opacity knob gliding on `motion.durationGlide` too.
|
|
46
|
+
|
|
47
|
+
A drawing saves at `v: 3` (`SerializedDrawing.v`). A save at `v: 2` restores with the look it was saved with: each tool whose factory values, prop meanings or paint rules differ writes, as it restores, the values that paint the save as it was painted, and saves at `v: 3` with them, a pin's words on their dark plate, a price label's pill in its stroke color at 18% and a brush's fill among them. The looks a tool's pages do not set ride in props they do not offer, which `INERT_PROPS` lists: `bodyColor` on a regression trend, `textAtStart` on the channels, `bandsByPane`, `wordsInLabels` and `labelsAtStart` on a retracement, an extension and a fib channel, `roundPercents` on fib circles, `shadedBands` on the pitchforks, `tint` on a gann box, `pillRadius` on the patterns and the wave counts, `labelPills` on the wave counts, `candles` on a bars pattern, `outline` on the volume profiles, `borderWidth` on a callout, `labelTextStyle` on the range meters, and `extendLeft` and `extendRight` on a date and price range. They stay with the drawing: its tool's remembered default and the templates saved from it leave them out, and Apply defaults sets them to the tool's own. A gann square, a gann square fixed, a speed resistance fan, a pitchfan, a price note and a signpost saved at `v: 2` paint as they were saved, their settings held in `savedLook`, until their settings change, when they take their present design; Cancel puts the saved look back with the drawing's points. A trend angle draws the ends and words a save carries, and a pattern or a wave count draws the words a save carries above it, its Text page offered for them alone. A remembered default or a template written by an earlier format applies the setup it names as its tool reads a save's, a regression trend's lower deviation counted down from its line and a bars pattern's candles among them. A host that writes drawings itself writes `v: 3` for the tools' present looks.
|
|
48
|
+
|
|
49
|
+
The image tool takes a WEBP as well as a JPG or a PNG (`IMAGE_TYPES`, `IMAGE_ACCEPT`), its box reading "JPG, PNG or WEBP" and its refusal naming the three. `DrawingAssetPort.intakeImage` stores a PNG or a JPEG whatever the picked file was, so a saved chart opens everywhere: a host whose intake stores the picked file's own data URL decodes a WEBP and re-encodes it on a canvas, as a PNG where it has transparency and a JPEG otherwise.
|
|
50
|
+
|
|
51
|
+
The drawing settings dialog opens in place over an undimmed chart: it appears and leaves at once, and a press beside it still closes it. Its lists hang under the controls that open them, past the dialog's edge where they need to: a list of choices as wide as its longest choice and never narrower than its button, so no choice is cut short, a list of switches as wide as its button, each row ticking the checkbox the settings rows wear on the list's own ground rather than inverting, the keyboard ringing a row inside its own edge, and the Template menu sized to its words with the button ringed while it is open; a select's chevron turns on the standard timing. Apply defaults puts the tool's own look and setup on the drawing at once and keeps its words, and "Save as…" reads with an ellipsis. The Image tool's picker is a 380px card under the settings dialog's header, its drop box 8px under the header, its transparency a 180px track at the end of its own line, and its footer the settings dialog's, Cancel and Ok at its end in the same 34px buttons.
|
|
52
|
+
|
|
53
|
+
The drawing settings pages settle their geometry: a number field keeps 63px for its words and a 22 by 28 slot for its steppers whether they show or not, and a field that cannot be used keeps no slot; a price in a field (a point's, a position's entry, target and stop, a channel's offset) is written with as many decimals as the symbol's tick, cents where the host states none; a color or emoji well beside a switch that is off stands dimmed on the field's fill; a text, a note and a callout take a 172px text box; a list of inputs (a regression trend's, an anchored VWAP's and a volume profile's) sets its switches at 34px, nests a profile's histogram rows 26px under its switch and stands each VWAP band on one line; a level grid stands 412px across; a position's and a range meter's groups end with the room a group keeps; and an image's drop box states its call at 16px and its limits at 14px on a 4px corner. Every control in the chart reads in the chart's own font rather than the browser's control font, and a field that cannot be used reads in `text.disabled`.
|
|
54
|
+
|
|
55
|
+
The text, the comment, the note, the signpost, the callout and the pin type their words on the chart. The drawing paints the words as they are typed, with their caret, selection and placeholder, while a field nobody sees, laid exactly over them in their own type and line height, takes the keys: `TextEditSession.inline` (`TextInlineEdit`) says where the words stand (`TextEditFrame`), hears what the field holds (`TextDraft`), answers a double-click that opens the drawing's settings and Tab where the words take turns, and hears the viewer end the edit. Enter and Shift with Enter break the line; Escape, Ctrl or Cmd with Enter, and a press elsewhere commit the words exactly as typed, the drawing still selected after Escape. A click on the words of the selected drawing types again, and a double-click opens its settings. A text, a comment, a note or a signpost left without words stays while it is selected and goes once it is not, a callout left without words goes as its edit ends, and a pin keeps its place without words. `AttachDrawingsOptions.placeholder` names the words an empty drawing shows, read as it paints, and `AttachDrawingsOptions.inks` the chart's own inks (`DrawingInks`: a handle's ring and center, words and a quiet edge in the chart's ink, and its accent). A caret stands as tall as its type, and drawings paint their words in the chart's own font stack.
|
|
56
|
+
|
|
57
|
+
The text and annotation tools paint as measured. A text stands its words two pixels in from its point, a 2px frame just outside them while it is selected; a comment's bubble has its corner on its point and its others rounded at 21; a note's box stands centred on its label point under a soft shadow, its noted point dotted and tied to it; a signpost's plate is outlined below or above its bar on a grey post, a square handle on its point moving it up and down, and a preview follows the pointer while its tool is armed; a callout's box stands left of its point with a tail let into its outline toward its tip; a price label's body stands up and to the right of its point with a tail and a dot to it; a price note dots its first point and stands its tag on its second; a pin's marker is a holed head over a tip on its point, its box of words over it while it is hovered, selected or typed into; a flag stands on a grey pole; the arrow marks hang their tips on their points; and an arrow marker runs from its tail at its first point to a broad head at its second. A drawing of these saved at `v: 2` keeps the look it was saved with until its settings change (`savedLook`), an arrow marker's points turning to the present order. A price note opens no text editor as it lands (its `hasText` is off): its words, like the marks', are typed in its settings, which a double-click on any of these opens.
|
|
58
|
+
|
|
59
|
+
A table types into the cell a click on the selected table lands in, framed inside its grid lines, Tab moving on to the next cell and from the last to the first; each row stands as tall as its words, lines 1.3 times their size, and a table opens on three by three cells 120px wide. Its floating bar and the chart's menu over it add a column right of the cell last typed in and a row below it, or at the table's ends where no cell is, and the menu removes that cell's row and column: `chart.drawings.tableRemoveRow`, `chart.drawings.tableRemoveColumn`, `ChartMenuContext.table` and the `table-add-column`, `table-add-row`, `table-remove-row` and `table-remove-column` menu actions, with the `tableAddColumn` and `tableAddRow` icons. A hovered grid line wears a band and resizes its column or row, and the corners carry round handles that scale the table, no row shorter than its words.
|
|
60
|
+
|
|
61
|
+
Selection handles paint as rings in the chart's handle inks, round at a radius of 5.5 with a 2px ring or a rounded square, and a price label, a pin, a flag and the arrow marks wear a small ring on their points; the handle under a mouse stands in a halo. A right-click selects the drawing it lands on, and a right-click while a drawing is half placed takes it back and puts the tool down. The floating bar carries the text tools', the notes', the marks' and the table's own controls in their order. `IDrawing` gains `pointer` and `setPointer`, `hovered` and `setHovered`, and the members a drawing typed on the chart answers through: `textDraft`, `setTextDraft`, `textFrame`, `setTextPlaceholder`, `grabbedAnchors`, `wordsAt` and `dragAnchorTo`.
|
|
62
|
+
|
|
63
|
+
The content card drawing tool (`content_card`) leaves the catalog, which holds 89 tools, and its row in the Content section of the Text and notes group, its `tool.content_card` icon, the Link field of its settings dialog and its two catalog strings go with it. A saved chart or layout, a drawings document or a drawing list that carries a content card loads without it, quietly: the card is skipped, as a drawing of any type the catalog does not hold is; nothing throws, no notice is shown, and every other drawing loads as it was saved. The next save writes the chart without the card. A content card a viewer starred draws no arm on the favorites bar, and a bar with no other star stays hidden.
|
|
64
|
+
|
|
65
|
+
`DrawingDocumentApi.apply` and `reload`, a chart's `drawingResources`, name every drawing the catalog does not restore among the drawings they do not attach, with the reason `unreadable`, and leave it out of `applied`: a drawing of a type the catalog does not hold, and one whose anchors are not a list or whose options are null. The chart does not paint it, and every write of the document carries it as it was written, so a build that reads it still finds it.
|
|
66
|
+
|
|
67
|
+
A class chip in the symbol search narrows the recent picks the list leads with, as it narrows the feed's answer. With a class selected and nothing typed, the dialog lists only the recent picks whose `type` is that class or a narrower class offered beneath it. The All chip lists every recent pick, and the scope's own recents follow the same rule while its chip is on.
|
|
68
|
+
|
|
69
|
+
The chart's own glyphs are drawn from lines, arcs, circles and walled outlines on their grids, each at the size, weight and place it stands at: the controls, the chart styles, the empty-state illustrations, the spread operators, the highlighter and fixed gann square miniatures, and the layout arrangements. `chartIconArtwork` answers these drawings. A layout arrangement's glyph is drawn from the arrangement's own panes, so each tile shows the split it opens (`12c4` shows four columns of three rows), and every arrangement stands on the one frame the 21 by 19 glyph holds. No icon id or public name changes.
|
|
70
|
+
|
|
71
|
+
The replay bar's Select date dialog stands over the undimmed chart, a 302px card that appears and leaves at once and is carried by its title. Its date field opens with the keyboard in it, and on an intraday chart its time field's clock lists the day in quarter hours under the field. Its calendar shows one month of 34px days with no day of another month, the chosen day on the emphasis fill, today underlined and every day the loaded window does not cover disabled, and its heading turns the days into the months of the year and then into twenty years. Picking a day moves the choice and the dialog stays up, a chip moves the choice to the first available day and time, and Select starts replay at the first bar at or after them. The arrows walk the days, Page Up and Page Down turn the month (Shift for a year), Enter picks and Escape closes. Choosing Date… leaves replay asking where to start, so Cancel and Escape close the dialog and leave the question and the transport as they were; the starting-point menu marks the current starting point in the ink cut from its fill. The `calendar` and `clock` icons draw the dialog's field marks.
|
|
72
|
+
|
|
73
|
+
`THEME_ROLES` gains the quiet fill in both built-in palettes: `control.neutral` (`#f2f2f2` light, `#2e2e2e` dark) under a dialog's shortcut chip, the band over a calendar's columns and a chosen month or year, `control.neutralHover` (`#ebebeb`, `#3d3d3d`) and `control.neutralPressed` (`#dbdbdb`, `#4a4a4a`) under the pointer and while pressed, and `control.neutralInk` (`#000000`, `#ffffff`) for the words on it and the words and mark a quiet control brightens to under the pointer.
|
|
74
|
+
|
|
75
|
+
### Upgrading to 4.0
|
|
76
|
+
|
|
77
|
+
A major version may remove public names, and this guide lists each one. 4.0 removes the content card and the names that exist only for it, so drop each from what your page lists, offers or creates:
|
|
78
|
+
|
|
79
|
+
- The drawing tool type `content_card`: `drawingTools` does not hold it, `CARD_TYPES` holds `image` alone, and the feature manifest's `drawings` leave it out. A `drawingTools` list that names it is a setup error from `createChart`, and `armTool('content_card')` throws, as it does for any type the catalog does not hold.
|
|
80
|
+
- The icon id `tool.content_card`: `ChartIconId`, `CHART_ICON_IDS` and the feature manifest's `icons` leave it out, and an `icons` entry for it is a setup error from `createChart`.
|
|
81
|
+
- The catalog keys `tool.content_card` and `drawing.link`: `ChartMessageKey` leaves both out, and so does a dictionary of your own (`ChartCustomLocale`, `ChartDictionary`). The chart reads neither.
|
|
82
|
+
|
|
83
|
+
Saved state needs nothing from you: a save that carries a content card loads without it, as above. A drawings document keeps its content cards as they were written, unread, and so do the drawing templates and tool defaults your store keeps for `content_card`.
|
|
84
|
+
|
|
85
|
+
4.0 also settles the drawing settings dialogs, which narrows the catalog keys they read and gives drawing props new names and meanings. Change each where your code names it:
|
|
86
|
+
|
|
87
|
+
- The catalog keys `drawing.addColumn`, `drawing.addColumnShort`, `drawing.addRow`, `drawing.addRowShort`, `drawing.alignment`, `drawing.avgHl`, `drawing.bars`, `drawing.body`, `drawing.chooseEllipsis`, `drawing.customColor`, `drawing.drawBorders`, `drawing.drawWicks`, `drawing.failure`, `drawing.glyph`, `drawing.headerRow`, `drawing.lower`, `drawing.pointOfControl`, `drawing.priceChange`, `drawing.replaceEllipsis`, `drawing.sectionDeviation`, `drawing.size`, `drawing.success`, `drawing.tabTable`, `drawing.tableCell`, `drawing.target`, `drawing.upDownVolume`, `drawing.upper`, `drawing.valueAreaHigh`, `drawing.valueAreaLow`, `drawing.valueAreaUpDown`, `drawing.weight` and `drawing.width`: `ChartMessageKey` leaves them out, and so does a dictionary of your own (`ChartCustomLocale`, `ChartDictionary`), so a dictionary that sets one stops type-checking until it drops the key. The chart reads none of them.
|
|
88
|
+
- The drawing props that take new names. Code that reads or writes a drawing's props, through `updateProps`, the `chart.drawings.props` command, a template's or a tool default's props, or a `SerializedDrawing` it writes itself, uses the new names:
|
|
89
|
+
- `background` is `fillBackground` on a fib retracement, a trend-based fib extension, a fib channel, a fib time zone, a trend-based fib time, fib circles, speed resistance arcs, a fib wedge, a pitchfan, a speed resistance fan, the four pitchforks, a gann square, a gann square fixed and a gann fan.
|
|
90
|
+
- A gann box's `background` is `fillPriceBackground` and `fillTimeBackground`, its `levels` are `priceLevels` and `timeLevels`, and its `showLabels` is `showLeftLabels`, `showRightLabels`, `showTopLabels` and `showBottomLabels`. A speed resistance fan's `levels` are `priceLevels`, beside its `timeLevels`.
|
|
91
|
+
- A price range's, a date range's and a date and price range's `showPriceDelta`, `showPercent`, `showBars` and `showTimeSpan` are `showPriceRange`, `showPercentChange`, `showBarsRange` and `showDateTimeRange`, and their `extend` is `extendLeft` and `extendRight`, a date range's `extendTop` and `extendBottom`.
|
|
92
|
+
- A parallel channel's `showMiddle` is its half level's `visible`, in its `levels`.
|
|
93
|
+
- The drawing props whose meaning changes:
|
|
94
|
+
- A regression trend's `lowerDeviation` counts from its line in signed deviations, so the band two deviations below the line is `-2`, where 3.x wrote `2`.
|
|
95
|
+
- A bars pattern's `mode` takes `hl`, `oc`, `close`, `open`, `high`, `low` or `hl2` (`BARS_PATTERN_MODES`), and `bars` goes: candle sticks are `candles`, beside the mode.
|
|
96
|
+
- A gann square's and a gann square fixed's `levels` hold their grid lines, each its switch, place and stroke, with their `fans` and `arcs` beside them, rather than one set of fib levels.
|
|
97
|
+
- A note stands on two points, the point it notes and its label, and a three drives pattern on seven, its reversal the last (`anchors` in `drawingTools`).
|
|
98
|
+
- The drawing props that go: a comment's `align`, its words reading from its left; a flat top/bottom's and a disjoint channel's `showMiddle`; the `text` the chart patterns and the Elliott waves carried empty, since they carry words only where a save names some; a fib channel's `reverse`; the `extendLeft`, `extendRight`, `reverse` and `showPrices` of a fib time zone, a trend-based fib time, fib circles, speed resistance arcs, a fib wedge and a pitchfan, with a pitchfan's `showLevels`; a speed resistance fan's `extendLeft`, `extendRight`, `showLevels` and `showPrices`; and a gann square fixed's `showLabels`.
|
|
99
|
+
- The capability sets that narrow: `LABELED_PATTERNS` holds the six chart patterns alone, the Elliott waves leaving it; `FILLABLE` leaves out the sector, whose halves carry their own colors (`color1`, `color2`); `NO_STROKE` leaves out the comment, the callout and the price label, whose borders take the stroke; `NO_LINE_DECOR` leaves out the callout; and `NO_STYLE_TAB` leaves out the note, which has a Style page.
|
|
100
|
+
- `SerializedDrawing.v` is `2 | 3`, and a drawing saves at `v: 3` (`SERIAL_VERSION`). Code that reads `v` takes both, and code that writes a drawing itself writes `v: 3` with the present names and meanings.
|
|
101
|
+
|
|
102
|
+
A drawing saved by 3.x needs nothing from you: a save at `v: 2` restores with the look it was saved with, reading its earlier names and meanings as it restores, and saves at `v: 3`. A template or a tool default saved by 3.x applies the setup it names as its tool reads a save.
|
|
103
|
+
|
|
104
|
+
## 3.0.0
|
|
105
|
+
|
|
106
|
+
A search scope the viewer turns on and off, one box for the chart's dialog fields, and a drawing dialog that follows its drag. Each `SearchScope` carries the search within it, a required `search`, so a host that offers a scope upgrades as the guide below says. No public name changes.
|
|
107
|
+
|
|
108
|
+
`search.scope` offers a part of the catalog the viewer can limit the symbol search to, as a toggle chip at the far edge of the class strip wearing the scope's `mark` and `label`, and a `SearchScope` carries the search within it: `search`, which is required, `recents` and `on`. The chip is on each time the dialog opens, unless the scope sets `on: false`. While it is on, the dialog searches with the scope's `search`, which the chart's search controller asks exactly as it asks the datafeed's (the query after the debounce, the selected classes, a page at a time, and a newer question retiring an older one's answer), and the list leads with the scope's `recents`, or with none. While it is off, the dialog searches the datafeed and leads with the chart's recents. Pressing the chip asks the other source the query and classes the dialog holds, and an answer that arrives for the state the viewer left is dropped. A pick is recorded in `search.recents` either way, and in the scope's `recents` while the chip is on. The chip is a toggle button (`aria-pressed`) in the strip's tab order after the class chips, which form a labelled group of their own beside it, and its accessible name says what a press does in every built-in language (`search.limitToScope`). The compare dialog, adding a comparison or changing one, offers no scope.
|
|
109
|
+
|
|
110
|
+
Every field in the chart's dialogs and settings other than a search field is one box, whether a text field, a select, a number field or a color well: 34px tall with an 8px corner and a 1px edge in the `control.fieldEdge` role, which steps to `control.fieldEdgeHover` under the pointer, a 2px focus ring in `state.focusRing` drawn over the edge, an edge and ring in `control.fieldInvalid` for a value the field refuses, and a `control.fieldFill` ground when the field is read-only or disabled. A select ends in an 18px chevron, and both built-in palettes carry the four new roles. A search field keeps its own outline in `chrome.fieldBorder`.
|
|
111
|
+
|
|
112
|
+
A drawing's settings dialog follows the pointer while its header is held, over the dialog as well as beside it, and lets go on the release wherever it lands, on a cancelled press, or when the window loses focus.
|
|
113
|
+
|
|
114
|
+
### Upgrading to 3.0
|
|
115
|
+
|
|
116
|
+
Give each `SearchScope` its `search`: the search within the scope, asked as your datafeed's `search` is. Your datafeed's `search` answers what the viewer reaches with the chip off, so a limit it applied on its own while a scope named it moves into the scope's `search`. Recents your page listed only while that limit stood go in the scope's `recents`; leave `recents` out and the list leads with none while the chip is on. A scope that should open off sets `on: false`. A datafeed that is always limited leaves the chip nothing to turn off, so it offers no scope.
|
|
117
|
+
|
|
118
|
+
A dictionary of your own (`ChartCustomLocale`, `ChartDictionary`) carries `search.limitToScope`, the chip's accessible name, with `{scope}` where the scope's label goes; one that arrives without it reads English for that key and reports it to `onMissing`.
|
|
119
|
+
|
|
120
|
+
A palette of your own that sets `chrome.fieldBorder` to color the name prompt's field or a drawing setting's color well sets `control.fieldEdge` for them, and `control.fieldEdgeHover` for their edge under the pointer; `chrome.fieldBorder` outlines the symbol search field alone. A palette that leaves the four field roles out keeps the built-in ones.
|
|
121
|
+
|
|
122
|
+
Nothing saved changes.
|
|
123
|
+
|
|
3
124
|
## 2.4.0
|
|
4
125
|
|
|
5
126
|
Bar replay that starts where the viewer chose, and a chart a host can hold in place, show without its price scale, give a crosshair of chosen parts, and morph between bar and close styles. No public name changes.
|