@trdrs/quickcharts 1.3.0 → 2.0.1
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 +94 -0
- package/README.md +209 -200
- package/THIRD-PARTY-NOTICES.md +4 -4
- package/dist/adapters/rest.d.ts +3 -3
- package/dist/adapters/rest.js +2 -2
- package/dist/adapters/rest.js.map +1 -1
- package/dist/{ar-G7MVXRE4.js → ar-KSXQ2USS.js} +20 -20
- package/dist/ar-KSXQ2USS.js.map +1 -0
- package/dist/{assets-ySndlUS3.d.ts → assets-DOuBBsOp.d.ts} +50 -50
- package/dist/{ca_ES-EUSRU4VG.js → ca_ES-JG4FM55E.js} +20 -20
- package/dist/ca_ES-JG4FM55E.js.map +1 -0
- package/dist/{chunk-KFBQSPNA.js → chunk-D3S26ARP.js} +2 -2
- package/dist/chunk-D3S26ARP.js.map +1 -0
- package/dist/{chunk-AKXIFHQN.js → chunk-KLPTCWA2.js} +1 -1
- package/dist/{chunk-AKXIFHQN.js.map → chunk-KLPTCWA2.js.map} +1 -1
- package/dist/{chunk-AA7XKXH4.js → chunk-YR7NT5ZW.js} +67 -33
- package/dist/chunk-YR7NT5ZW.js.map +1 -0
- package/dist/{de-2SVTG25S.js → de-VSW2LHNF.js} +20 -20
- package/dist/de-VSW2LHNF.js.map +1 -0
- package/dist/drawings.d.ts +16 -16
- package/dist/drawings.js +12 -12
- package/dist/{es-UDHZM4W7.js → es-5ZXIPVOB.js} +20 -20
- package/dist/es-5ZXIPVOB.js.map +1 -0
- package/dist/feature-manifest.json +3 -3
- package/dist/{fr-35VN4G4S.js → fr-4F6DAWGD.js} +20 -20
- package/dist/fr-4F6DAWGD.js.map +1 -0
- package/dist/{he_IL-JPZMCURP.js → he_IL-B7PBQUEV.js} +20 -20
- package/dist/he_IL-B7PBQUEV.js.map +1 -0
- package/dist/{id_ID-XSTFHHJQ.js → id_ID-CYJRMXPC.js} +20 -20
- package/dist/id_ID-CYJRMXPC.js.map +1 -0
- package/dist/index.d.ts +167 -163
- package/dist/index.js +342 -268
- package/dist/index.js.map +1 -1
- package/dist/{it-EIY6JESQ.js → it-KTX4SG5P.js} +20 -20
- package/dist/it-KTX4SG5P.js.map +1 -0
- package/dist/{ja-42N4XRCW.js → ja-V7OURU5D.js} +20 -20
- package/dist/ja-V7OURU5D.js.map +1 -0
- package/dist/{ko-3VRPTIP3.js → ko-2RNEBYVE.js} +20 -20
- package/dist/ko-2RNEBYVE.js.map +1 -0
- package/dist/{ms_MY-SKN7O6M5.js → ms_MY-EY235E7Q.js} +20 -20
- package/dist/ms_MY-EY235E7Q.js.map +1 -0
- package/dist/{pl-TYARHCLT.js → pl-ADNVRP55.js} +20 -20
- package/dist/pl-ADNVRP55.js.map +1 -0
- package/dist/{pt-72IIFLL4.js → pt-OL2DR3DO.js} +20 -20
- package/dist/pt-OL2DR3DO.js.map +1 -0
- package/dist/quickcharts.css +97 -96
- package/dist/{resources-Ch8eA1Mw.d.ts → resources-Le6flcEn.d.ts} +3 -3
- package/dist/rest-openapi.json +11 -11
- package/dist/{ru-TPH4F7IB.js → ru-V6YFEPAF.js} +20 -20
- package/dist/ru-V6YFEPAF.js.map +1 -0
- package/dist/{sv-DC5RS67Z.js → sv-TORXQVE7.js} +20 -20
- package/dist/sv-TORXQVE7.js.map +1 -0
- package/dist/{th-I6H6AOZ3.js → th-K6SJSYSY.js} +20 -20
- package/dist/th-K6SJSYSY.js.map +1 -0
- package/dist/theme-manifest.json +10 -10
- package/dist/{tr-7FSUVCNW.js → tr-4AEM66KW.js} +20 -20
- package/dist/tr-4AEM66KW.js.map +1 -0
- package/dist/{vi-DLRPHLLH.js → vi-YU5XCEUU.js} +20 -20
- package/dist/vi-YU5XCEUU.js.map +1 -0
- package/dist/{zh-ZXIQBBEP.js → zh-QXKRYHU5.js} +20 -20
- package/dist/zh-QXKRYHU5.js.map +1 -0
- package/dist/{zh_TW-TYNUJU7U.js → zh_TW-AYPDKG4Q.js} +20 -20
- package/dist/zh_TW-AYPDKG4Q.js.map +1 -0
- package/package.json +2 -2
- package/dist/ar-G7MVXRE4.js.map +0 -1
- package/dist/ca_ES-EUSRU4VG.js.map +0 -1
- package/dist/chunk-AA7XKXH4.js.map +0 -1
- package/dist/chunk-KFBQSPNA.js.map +0 -1
- package/dist/de-2SVTG25S.js.map +0 -1
- package/dist/es-UDHZM4W7.js.map +0 -1
- package/dist/fr-35VN4G4S.js.map +0 -1
- package/dist/he_IL-JPZMCURP.js.map +0 -1
- package/dist/id_ID-XSTFHHJQ.js.map +0 -1
- package/dist/it-EIY6JESQ.js.map +0 -1
- package/dist/ja-42N4XRCW.js.map +0 -1
- package/dist/ko-3VRPTIP3.js.map +0 -1
- package/dist/ms_MY-SKN7O6M5.js.map +0 -1
- package/dist/pl-TYARHCLT.js.map +0 -1
- package/dist/pt-72IIFLL4.js.map +0 -1
- package/dist/ru-TPH4F7IB.js.map +0 -1
- package/dist/sv-DC5RS67Z.js.map +0 -1
- package/dist/th-I6H6AOZ3.js.map +0 -1
- package/dist/tr-7FSUVCNW.js.map +0 -1
- package/dist/vi-DLRPHLLH.js.map +0 -1
- package/dist/zh-ZXIQBBEP.js.map +0 -1
- package/dist/zh_TW-TYNUJU7U.js.map +0 -1
package/dist/quickcharts.css
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* Quick Charts stylesheet.
|
|
2
2
|
* Generated from the typed theme source. Do not edit by hand.
|
|
3
3
|
* Every rule is scoped to [data-qc-theme], the widget root element, and sits in a cascade
|
|
4
|
-
* layer: the built-in palettes in
|
|
4
|
+
* layer: the built-in palettes in quickcharts.tokens, every recipe in quickcharts.chart.
|
|
5
5
|
* The custom-property names below are private implementation, not API. The supported class
|
|
6
6
|
* names are listed in the theme manifest under hooks; every other class is private.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
@layer
|
|
9
|
+
@layer quickcharts.tokens, quickcharts.chart;
|
|
10
10
|
|
|
11
|
-
@layer
|
|
11
|
+
@layer quickcharts.tokens {
|
|
12
12
|
[data-qc-theme="light"] {
|
|
13
13
|
--qc-canvas-background: #ffffff;
|
|
14
14
|
--qc-canvas-paneBorder: #ebebeb;
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
@layer
|
|
205
|
+
@layer quickcharts.chart {
|
|
206
206
|
/* Quick Charts component recipes.
|
|
207
207
|
*
|
|
208
208
|
* Every rule is scoped to the widget's own root element, which carries `data-qc-theme`. Nothing
|
|
@@ -286,8 +286,8 @@
|
|
|
286
286
|
background: var(--qc-state-pressed);
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
-
/* A held button wears the neutral held fill in the primary ink, the held state the
|
|
290
|
-
*
|
|
289
|
+
/* A held button wears the neutral held fill in the primary ink, the held state the top bar, the
|
|
290
|
+
* bottom bar and the drawing toolbar show too. */
|
|
291
291
|
[data-qc-theme] .qc-button[aria-pressed='true'],
|
|
292
292
|
[data-qc-theme] .qc-button[data-qc-active='true'] {
|
|
293
293
|
color: var(--qc-text-primary);
|
|
@@ -456,8 +456,8 @@
|
|
|
456
456
|
font-variant-numeric: tabular-nums;
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
/* A hidden
|
|
460
|
-
* as switched off rather than as a different kind of row. */
|
|
459
|
+
/* A hidden indicator keeps its ink and stands the WHOLE row back, controls included, so the row
|
|
460
|
+
* reads as switched off rather than as a different kind of row. */
|
|
461
461
|
[data-qc-theme] .qc-legend-row[data-qc-hidden='true'] {
|
|
462
462
|
opacity: 0.5;
|
|
463
463
|
}
|
|
@@ -570,8 +570,8 @@
|
|
|
570
570
|
display: contents;
|
|
571
571
|
}
|
|
572
572
|
|
|
573
|
-
/* An external
|
|
574
|
-
* the widget's own dialogs. */
|
|
573
|
+
/* An external drawing toolbar's flyout stands here, over anything the page stacks beside the widget
|
|
574
|
+
* and under the widget's own dialogs. */
|
|
575
575
|
[data-qc-theme].qc-layer > .qc-drawing-popover {
|
|
576
576
|
position: fixed;
|
|
577
577
|
z-index: 2147483001;
|
|
@@ -677,7 +677,7 @@
|
|
|
677
677
|
}
|
|
678
678
|
|
|
679
679
|
/* The market and its facts stand as one 24px band, in the legend's ink at a size up from the
|
|
680
|
-
* chrome's: the mark, the name 4px past it, then the
|
|
680
|
+
* chrome's: the mark, the name 4px past it, then the timeframe and the venue, each in a 12px cell
|
|
681
681
|
* that carries its separating dot. The reading beside it wraps whole to its own line, so the two
|
|
682
682
|
* are separate hover targets and only the band under the pointer takes the chip. */
|
|
683
683
|
[data-qc-theme] .qc-legend-identity {
|
|
@@ -747,7 +747,8 @@
|
|
|
747
747
|
background: var(--qc-state-pressed);
|
|
748
748
|
}
|
|
749
749
|
|
|
750
|
-
/* The
|
|
750
|
+
/* The timeframe and the venue, each behind its own separator dot, in the name's own ink and
|
|
751
|
+
* size. */
|
|
751
752
|
[data-qc-theme] .qc-legend-fact {
|
|
752
753
|
white-space: nowrap;
|
|
753
754
|
}
|
|
@@ -810,8 +811,8 @@
|
|
|
810
811
|
|
|
811
812
|
/* Step 3: a slim pane sheds the venue and its separator, in the header and in every market row
|
|
812
813
|
* under it — one answer for the whole legend, because a row that kept its venue while the header
|
|
813
|
-
* above it dropped one would read as two different markets. The
|
|
814
|
-
* of a layout has nowhere else to say what
|
|
814
|
+
* above it dropped one would read as two different markets. The timeframe stays, because one chart
|
|
815
|
+
* of a layout has nowhere else to say what timeframe it is on. */
|
|
815
816
|
[data-qc-theme] .qc-legend[data-qc-slim='true'] [data-role='legend-exchange'],
|
|
816
817
|
[data-qc-theme] .qc-legend[data-qc-slim='true'] [data-role='legend-exchange-sep'],
|
|
817
818
|
[data-qc-theme] .qc-legend[data-qc-slim='true'] .qc-legend-row-venue {
|
|
@@ -883,7 +884,7 @@
|
|
|
883
884
|
opacity: 1;
|
|
884
885
|
}
|
|
885
886
|
|
|
886
|
-
/* A hidden
|
|
887
|
+
/* A hidden indicator says so whether or not the pointer is on it, so its eye stands on its own. */
|
|
887
888
|
[data-qc-theme] .qc-legend-row[data-qc-hidden='true'] .qc-legend-eye {
|
|
888
889
|
opacity: 1;
|
|
889
890
|
}
|
|
@@ -902,8 +903,8 @@
|
|
|
902
903
|
margin-inline: -4px;
|
|
903
904
|
padding-inline: 4px;
|
|
904
905
|
color: var(--qc-text-primary);
|
|
905
|
-
/* The
|
|
906
|
-
* ordinary weight rather than the header's. */
|
|
906
|
+
/* The indicator rows are their own stack over the plot, not part of the header band, so they take
|
|
907
|
+
* the ordinary weight rather than the header's. */
|
|
907
908
|
font-weight: 400;
|
|
908
909
|
border-radius: 4px;
|
|
909
910
|
pointer-events: auto;
|
|
@@ -997,7 +998,7 @@
|
|
|
997
998
|
height: 14px;
|
|
998
999
|
}
|
|
999
1000
|
|
|
1000
|
-
/* A
|
|
1001
|
+
/* A comparison's own name is a door to symbol search, so it is a button. It reads as text and takes
|
|
1001
1002
|
* the same wash box the market's name does, never a rule under the words. */
|
|
1002
1003
|
[data-qc-theme] .qc-legend-title {
|
|
1003
1004
|
width: auto;
|
|
@@ -1017,7 +1018,7 @@
|
|
|
1017
1018
|
height: 18px;
|
|
1018
1019
|
}
|
|
1019
1020
|
|
|
1020
|
-
/* The rows' own toggler, standing under the stack. It carries the
|
|
1021
|
+
/* The rows' own toggler, standing under the stack. It carries the indicator/compare rows away and
|
|
1021
1022
|
* leaves the identity and the reading in place. Its box is set here, AFTER the shared action
|
|
1022
1023
|
* recipe, because it is the one action that is not a row control and does not take that geometry. */
|
|
1023
1024
|
[data-qc-theme] .qc-legend-collapse {
|
|
@@ -1064,7 +1065,7 @@
|
|
|
1064
1065
|
/* The drawing toolbar, the selected drawing's surfaces and their fields are recipes of their own
|
|
1065
1066
|
* under styles/components/drawings-*.css, which the build concatenates after this file. */
|
|
1066
1067
|
|
|
1067
|
-
/*
|
|
1068
|
+
/* Context menu --------------------------------------------------------------------------------- */
|
|
1068
1069
|
|
|
1069
1070
|
[data-qc-theme] .qc-menu-backdrop {
|
|
1070
1071
|
position: fixed;
|
|
@@ -1084,7 +1085,7 @@
|
|
|
1084
1085
|
pointer-events: auto;
|
|
1085
1086
|
}
|
|
1086
1087
|
|
|
1087
|
-
/* The
|
|
1088
|
+
/* The context menu's rows restate the row rhythm: 32px tall, square-cornered and running edge to
|
|
1088
1089
|
* edge of the box (the surface's clip rounds them off), the glyph 6px from the label and 20px of
|
|
1089
1090
|
* room at the end for a chord. */
|
|
1090
1091
|
[data-qc-theme] .qc-menu .qc-menu-row {
|
|
@@ -1389,11 +1390,11 @@
|
|
|
1389
1390
|
* ancestor with a transform, a filter or containment changes nothing: a panel is positioned in the
|
|
1390
1391
|
* root's own coordinates.
|
|
1391
1392
|
*
|
|
1392
|
-
* The chrome's stacking ladder, all inside the root: legend and
|
|
1393
|
+
* The chrome's stacking ladder, all inside the root: legend and drawing toolbar 3, navigation 4,
|
|
1393
1394
|
* the chart chrome layer 5, notices 6, the overlay layer 20, a menu panel 21, a dialog scrim 22.
|
|
1394
1395
|
* The replay transport takes no rung: it is an in-flow row of the root's column, not a float.
|
|
1395
1396
|
* The chart chrome layer is a stacking context of its own, and the drawing surfaces inside it
|
|
1396
|
-
* keep their own rungs: the toolbar on
|
|
1397
|
+
* keep their own rungs: the drawing toolbar on 3, the floating bars 7, the inline text
|
|
1397
1398
|
* editor 8, a flyout or palette 9, a drawing dialog's scrim 10.
|
|
1398
1399
|
* A host that must stack something above the widget gives its own element a stacking context
|
|
1399
1400
|
* above the root; nothing here reaches the top of the integer range. */
|
|
@@ -1482,8 +1483,8 @@
|
|
|
1482
1483
|
background: var(--qc-state-hover);
|
|
1483
1484
|
}
|
|
1484
1485
|
|
|
1485
|
-
/* A chosen
|
|
1486
|
-
* open fills its whole cell, square, in the hover fill. */
|
|
1486
|
+
/* A chosen timeframe or a held toggle takes the pressed fill, a step past hover; a door whose menu
|
|
1487
|
+
* is open fills its whole cell, square, in the hover fill. */
|
|
1487
1488
|
[data-qc-theme] .qc-toolbar-button[aria-pressed='true'],
|
|
1488
1489
|
[data-qc-theme] .qc-toolbar-button[aria-expanded='true'],
|
|
1489
1490
|
[data-qc-theme] .qc-toolbar-button[data-qc-active='true'] {
|
|
@@ -1507,7 +1508,7 @@
|
|
|
1507
1508
|
}
|
|
1508
1509
|
|
|
1509
1510
|
/* A HELD MODE is not a chosen option. A chip chosen among its siblings takes the quiet pressed
|
|
1510
|
-
* wash above; a mode the chart is IN until the
|
|
1511
|
+
* wash above; a mode the chart is IN until the viewer leaves it says so the way this product says
|
|
1511
1512
|
* "on" everywhere else, in the emphasis fill with the ink cut out of it. */
|
|
1512
1513
|
[data-qc-theme] .qc-toolbar-button[data-qc-mode='held'][aria-pressed='true'] {
|
|
1513
1514
|
color: var(--qc-text-inverse);
|
|
@@ -2002,7 +2003,7 @@
|
|
|
2002
2003
|
|
|
2003
2004
|
/* The settings field primitives: rows, checkbox rows, selects, number fields with their steppers,
|
|
2004
2005
|
* swatches and the palette, the custom color panel, the opacity slider, line-end pickers, the
|
|
2005
|
-
* dialog tab strip and the
|
|
2006
|
+
* dialog tab strip and the timeframe-visibility rows. Every color a control paints with is either
|
|
2006
2007
|
* a generated custom property or the drawing's own value, carried in `--qcd-swatch`. */
|
|
2007
2008
|
|
|
2008
2009
|
[data-qc-theme] .qc-drawing-row {
|
|
@@ -2445,7 +2446,7 @@
|
|
|
2445
2446
|
}
|
|
2446
2447
|
|
|
2447
2448
|
/* The readout is a FIELD beside the track: outlined rather than washed, because it is a number a
|
|
2448
|
-
*
|
|
2449
|
+
* viewer types over and not a chip the panel is showing them. */
|
|
2449
2450
|
[data-qc-theme] .qc-drawing-opacity-field {
|
|
2450
2451
|
position: relative;
|
|
2451
2452
|
flex: 0 0 auto;
|
|
@@ -2849,7 +2850,7 @@
|
|
|
2849
2850
|
}
|
|
2850
2851
|
|
|
2851
2852
|
/* The bar's menus: a 4px-padded column of 34px rows, sized by content, or 240px wide for the
|
|
2852
|
-
* templates, More and
|
|
2853
|
+
* templates, More and timeframe lists, or 176px for the stacking moves. */
|
|
2853
2854
|
[data-qc-theme] .qc-drawing-bar-menu {
|
|
2854
2855
|
min-width: 0;
|
|
2855
2856
|
width: max-content;
|
|
@@ -3028,12 +3029,12 @@
|
|
|
3028
3029
|
white-space: nowrap;
|
|
3029
3030
|
}
|
|
3030
3031
|
|
|
3031
|
-
/* The drawing toolbar: the
|
|
3032
|
+
/* The drawing toolbar: the column down the chart's inline-start edge, its split cells, its flyouts
|
|
3032
3033
|
* and menus, and the favorites bar. Every rule is scoped to the widget root like the rest of the
|
|
3033
3034
|
* package stylesheet, every value comes from a generated custom property, and geometry is stated
|
|
3034
|
-
* with logical properties so the
|
|
3035
|
+
* with logical properties so the toolbar flips with the reading direction.
|
|
3035
3036
|
*
|
|
3036
|
-
* The chrome layer is inert. The
|
|
3037
|
+
* The chrome layer is inert. The toolbar is a surface the pointer must stop at, so it opts in as a
|
|
3037
3038
|
* whole; the gaps between its buttons must not let a drag through to the canvas underneath. */
|
|
3038
3039
|
|
|
3039
3040
|
[data-qc-theme].qc-drawing-toolbar-host {
|
|
@@ -3062,7 +3063,7 @@
|
|
|
3062
3063
|
pointer-events: auto;
|
|
3063
3064
|
}
|
|
3064
3065
|
|
|
3065
|
-
/* The chart and its overlays share a reserved content box. Only the
|
|
3066
|
+
/* The chart and its overlays share a reserved content box. Only the toolbar reaches back into the
|
|
3066
3067
|
* leading column, so axis labels and drawing coordinates never pass underneath its buttons. */
|
|
3067
3068
|
[data-qc-theme] .qc-chrome[data-qc-drawing-toolbar='true'] .qc-drawing-toolbar {
|
|
3068
3069
|
inset-inline-start: -52px;
|
|
@@ -3102,7 +3103,7 @@
|
|
|
3102
3103
|
width: 100%;
|
|
3103
3104
|
}
|
|
3104
3105
|
|
|
3105
|
-
[data-qc-theme] .qc-drawing-
|
|
3106
|
+
[data-qc-theme] .qc-drawing-toolbar-button {
|
|
3106
3107
|
position: relative;
|
|
3107
3108
|
z-index: 0;
|
|
3108
3109
|
display: flex;
|
|
@@ -3117,8 +3118,8 @@
|
|
|
3117
3118
|
border-radius: var(--qc-chrome-radius);
|
|
3118
3119
|
}
|
|
3119
3120
|
|
|
3120
|
-
/* Keep the full
|
|
3121
|
-
[data-qc-theme] .qc-drawing-
|
|
3121
|
+
/* Keep the full toolbar width as the hit area; the inset square is only its visual feedback. */
|
|
3122
|
+
[data-qc-theme] .qc-drawing-toolbar-button::before {
|
|
3122
3123
|
position: absolute;
|
|
3123
3124
|
z-index: -1;
|
|
3124
3125
|
inset-block-start: 50%;
|
|
@@ -3132,64 +3133,64 @@
|
|
|
3132
3133
|
transition: background-color var(--qc-motion-durationFast) var(--qc-motion-easingLinear);
|
|
3133
3134
|
}
|
|
3134
3135
|
|
|
3135
|
-
[data-qc-theme] .qc-drawing-
|
|
3136
|
-
[data-qc-theme] .qc-drawing-
|
|
3137
|
-
[data-qc-theme] .qc-drawing-
|
|
3136
|
+
[data-qc-theme] .qc-drawing-toolbar-button:hover,
|
|
3137
|
+
[data-qc-theme] .qc-drawing-toolbar-button:active,
|
|
3138
|
+
[data-qc-theme] .qc-drawing-toolbar-button:focus-visible {
|
|
3138
3139
|
color: var(--qc-text-primary);
|
|
3139
3140
|
background: none;
|
|
3140
3141
|
}
|
|
3141
3142
|
|
|
3142
3143
|
/* The tool's inset square and the arrow's strip share the hover fill, so where they meet no seam
|
|
3143
3144
|
* forms. */
|
|
3144
|
-
[data-qc-theme] .qc-drawing-
|
|
3145
|
-
[data-qc-theme] .qc-drawing-
|
|
3146
|
-
[data-qc-theme] .qc-drawing-
|
|
3145
|
+
[data-qc-theme] .qc-drawing-toolbar-button:hover::before,
|
|
3146
|
+
[data-qc-theme] .qc-drawing-toolbar-button:focus-visible::before,
|
|
3147
|
+
[data-qc-theme] .qc-drawing-toolbar-button:active::before {
|
|
3147
3148
|
background: var(--qc-state-hover);
|
|
3148
3149
|
}
|
|
3149
3150
|
|
|
3150
|
-
[data-qc-theme] .qc-drawing-
|
|
3151
|
+
[data-qc-theme] .qc-drawing-toolbar-button[data-qc-active='true'] {
|
|
3151
3152
|
color: var(--qc-text-primary);
|
|
3152
3153
|
background: none;
|
|
3153
3154
|
}
|
|
3154
3155
|
|
|
3155
|
-
/* The armed tool wears a NEUTRAL inset wash and the primary ink, the pinned
|
|
3156
|
-
* accent-tinted selected role belongs to a chosen row, not to a tool the
|
|
3157
|
-
[data-qc-theme] .qc-drawing-
|
|
3156
|
+
/* The armed tool wears a NEUTRAL inset wash and the primary ink, the pinned toolbar recipe. The
|
|
3157
|
+
* accent-tinted selected role belongs to a chosen row, not to a tool the toolbar is holding. */
|
|
3158
|
+
[data-qc-theme] .qc-drawing-toolbar-button[data-qc-active='true']::before {
|
|
3158
3159
|
background: var(--qc-state-pressed);
|
|
3159
3160
|
}
|
|
3160
3161
|
|
|
3161
|
-
[data-qc-theme] .qc-drawing-
|
|
3162
|
+
[data-qc-theme] .qc-drawing-toolbar-button[data-qc-active='true']:hover::before {
|
|
3162
3163
|
background: var(--qc-state-pressedHover);
|
|
3163
3164
|
}
|
|
3164
3165
|
|
|
3165
|
-
/* A mode the
|
|
3166
|
-
* behind the inverse ink, a step apart under the pointer. */
|
|
3167
|
-
[data-qc-theme] .qc-drawing-
|
|
3166
|
+
/* A mode the toolbar holds, staying in drawing mode or showing the favorites bar, inverts: the on
|
|
3167
|
+
* fill behind the inverse ink, a step apart under the pointer. */
|
|
3168
|
+
[data-qc-theme] .qc-drawing-toolbar-mode[data-qc-active='true'] {
|
|
3168
3169
|
color: var(--qc-text-inverse);
|
|
3169
3170
|
}
|
|
3170
3171
|
|
|
3171
|
-
[data-qc-theme] .qc-drawing-
|
|
3172
|
+
[data-qc-theme] .qc-drawing-toolbar-mode[data-qc-active='true']::before {
|
|
3172
3173
|
background: var(--qc-control-on);
|
|
3173
3174
|
}
|
|
3174
3175
|
|
|
3175
|
-
[data-qc-theme] .qc-drawing-
|
|
3176
|
+
[data-qc-theme] .qc-drawing-toolbar-mode[data-qc-active='true']:hover::before {
|
|
3176
3177
|
background: var(--qc-control-onHover);
|
|
3177
3178
|
}
|
|
3178
3179
|
|
|
3179
|
-
[data-qc-theme] .qc-drawing-
|
|
3180
|
+
[data-qc-theme] .qc-drawing-toolbar-button:focus-visible {
|
|
3180
3181
|
outline-offset: -3px;
|
|
3181
3182
|
}
|
|
3182
3183
|
|
|
3183
|
-
[data-qc-theme] .qc-drawing-
|
|
3184
|
+
[data-qc-theme] .qc-drawing-toolbar-button[disabled] {
|
|
3184
3185
|
color: var(--qc-text-disabled);
|
|
3185
3186
|
background: none;
|
|
3186
3187
|
}
|
|
3187
3188
|
|
|
3188
|
-
[data-qc-theme] .qc-drawing-
|
|
3189
|
+
[data-qc-theme] .qc-drawing-toolbar-button[disabled]::before {
|
|
3189
3190
|
background: none;
|
|
3190
3191
|
}
|
|
3191
3192
|
|
|
3192
|
-
[data-qc-theme] .qc-drawing-
|
|
3193
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow {
|
|
3193
3194
|
position: absolute;
|
|
3194
3195
|
inset-block: 2px;
|
|
3195
3196
|
inset-inline-end: 0;
|
|
@@ -3202,7 +3203,7 @@
|
|
|
3202
3203
|
color: var(--qc-chrome-caret);
|
|
3203
3204
|
background: none;
|
|
3204
3205
|
border: 0;
|
|
3205
|
-
/* Rounded on the inboard side only. The strip ends flush against the
|
|
3206
|
+
/* Rounded on the inboard side only. The strip ends flush against the toolbar's own edge, so a
|
|
3206
3207
|
* radius there would round a corner that has nothing to round away from. */
|
|
3207
3208
|
border-start-start-radius: 4px;
|
|
3208
3209
|
border-end-start-radius: 4px;
|
|
@@ -3213,40 +3214,40 @@
|
|
|
3213
3214
|
}
|
|
3214
3215
|
|
|
3215
3216
|
/* The chevron turns to face the panel: pointing out at where the flyout will appear while closed,
|
|
3216
|
-
* back at the
|
|
3217
|
-
[data-qc-theme] .qc-drawing-
|
|
3217
|
+
* back at the toolbar once it is open. */
|
|
3218
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow svg {
|
|
3218
3219
|
transition: transform var(--qc-motion-durationSlower) var(--qc-motion-easingSpring);
|
|
3219
3220
|
}
|
|
3220
3221
|
|
|
3221
|
-
[data-qc-theme] .qc-drawing-
|
|
3222
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow[aria-expanded='true'] svg {
|
|
3222
3223
|
transform: rotate(180deg);
|
|
3223
3224
|
}
|
|
3224
3225
|
|
|
3225
|
-
[data-qc-theme] [dir='rtl'] .qc-drawing-
|
|
3226
|
-
[data-qc-theme][dir='rtl'] .qc-drawing-
|
|
3226
|
+
[data-qc-theme] [dir='rtl'] .qc-drawing-toolbar-arrow svg,
|
|
3227
|
+
[data-qc-theme][dir='rtl'] .qc-drawing-toolbar-arrow svg {
|
|
3227
3228
|
transform: scaleX(-1);
|
|
3228
3229
|
}
|
|
3229
3230
|
|
|
3230
|
-
[data-qc-theme] [dir='rtl'] .qc-drawing-
|
|
3231
|
-
[data-qc-theme][dir='rtl'] .qc-drawing-
|
|
3231
|
+
[data-qc-theme] [dir='rtl'] .qc-drawing-toolbar-arrow[aria-expanded='true'] svg,
|
|
3232
|
+
[data-qc-theme][dir='rtl'] .qc-drawing-toolbar-arrow[aria-expanded='true'] svg {
|
|
3232
3233
|
transform: scaleX(-1) rotate(180deg);
|
|
3233
3234
|
}
|
|
3234
3235
|
|
|
3235
|
-
[data-qc-theme] .qc-drawing-cell:hover .qc-drawing-
|
|
3236
|
-
[data-qc-theme] .qc-drawing-
|
|
3237
|
-
[data-qc-theme] .qc-drawing-
|
|
3236
|
+
[data-qc-theme] .qc-drawing-cell:hover .qc-drawing-toolbar-arrow,
|
|
3237
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow:focus-visible,
|
|
3238
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow[aria-expanded='true'] {
|
|
3238
3239
|
opacity: 1;
|
|
3239
3240
|
}
|
|
3240
3241
|
|
|
3241
3242
|
/* The arrow keeps its caret ink; its strip takes the hover fill under the pointer and while its
|
|
3242
3243
|
* flyout is open. */
|
|
3243
|
-
[data-qc-theme] .qc-drawing-
|
|
3244
|
-
[data-qc-theme] .qc-drawing-
|
|
3244
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow:hover,
|
|
3245
|
+
[data-qc-theme] .qc-drawing-toolbar-arrow[aria-expanded='true'] {
|
|
3245
3246
|
background: var(--qc-state-hover);
|
|
3246
3247
|
}
|
|
3247
3248
|
|
|
3248
|
-
/* Three rules, three recipes. The
|
|
3249
|
-
* flyout's section rule and a menu's rule span the content area inside the panel's 6px side
|
|
3249
|
+
/* Three rules, three recipes. The TOOLBAR's spans 36px of the toolbar with 6px above and below. A
|
|
3250
|
+
* tool flyout's section rule and a menu's rule span the content area inside the panel's 6px side
|
|
3250
3251
|
* padding, with 6px above and below. */
|
|
3251
3252
|
[data-qc-theme] .qc-drawing-divider {
|
|
3252
3253
|
flex: 0 0 auto;
|
|
@@ -3535,14 +3536,14 @@
|
|
|
3535
3536
|
cursor: grabbing;
|
|
3536
3537
|
}
|
|
3537
3538
|
|
|
3538
|
-
/* Forced colors: a row or tab the
|
|
3539
|
+
/* Forced colors: a row or tab the viewer has chosen reads as the system highlight, since the
|
|
3539
3540
|
* accent fill it wears otherwise is discarded. */
|
|
3540
3541
|
@media (forced-colors: active) {
|
|
3541
|
-
[data-qc-theme] .qc-drawing-
|
|
3542
|
+
[data-qc-theme] .qc-drawing-toolbar-button[data-qc-active='true'] {
|
|
3542
3543
|
color: HighlightText;
|
|
3543
3544
|
}
|
|
3544
3545
|
|
|
3545
|
-
[data-qc-theme] .qc-drawing-
|
|
3546
|
+
[data-qc-theme] .qc-drawing-toolbar-button[data-qc-active='true']::before,
|
|
3546
3547
|
[data-qc-theme] .qc-drawing-favorite[data-qc-active='true']::before {
|
|
3547
3548
|
background: Highlight;
|
|
3548
3549
|
forced-color-adjust: none;
|
|
@@ -3565,7 +3566,7 @@
|
|
|
3565
3566
|
}
|
|
3566
3567
|
}
|
|
3567
3568
|
|
|
3568
|
-
/* The
|
|
3569
|
+
/* The indicator picker, drawn with the chart's own tokens. */
|
|
3569
3570
|
[data-qc-theme] .qc-picker-dialog {
|
|
3570
3571
|
height: 638px;
|
|
3571
3572
|
max-height: min(85vh, calc(100% - 32px));
|
|
@@ -3833,7 +3834,7 @@
|
|
|
3833
3834
|
So the rail lies DOWN. It becomes a row of chips above the list, scrolling sideways the way every
|
|
3834
3835
|
other run of choices on a phone does, and the table sheds the columns a phone has no room to
|
|
3835
3836
|
spend: the author and the count go, the star and the actions stay, and the name takes what is
|
|
3836
|
-
left. The GROUP headings go with the rail's column — "
|
|
3837
|
+
left. The GROUP headings go with the rail's column — "Saved" over "Shared" reads as
|
|
3837
3838
|
structure in a list and as noise in a row, and the chips say what they are. */
|
|
3838
3839
|
@media (max-width: 560px) {
|
|
3839
3840
|
[data-qc-theme] .qc-picker-body {
|
|
@@ -4449,8 +4450,8 @@
|
|
|
4449
4450
|
* scrim left every surface beside it live: a press on the page's own header landed on that header
|
|
4450
4451
|
* instead of dismissing the dialog, so the one gesture every modal answers to did nothing over most
|
|
4451
4452
|
* of the screen. Fixed, a press anywhere outside the box closes it, which is what `aria-modal` on
|
|
4452
|
-
* the box already promises. The z-index is the
|
|
4453
|
-
* host stacks above its own page may paint over a surface that has taken the keyboard. */
|
|
4453
|
+
* the box already promises. The z-index is the context menu's, for the same reason it is: nothing
|
|
4454
|
+
* the host stacks above its own page may paint over a surface that has taken the keyboard. */
|
|
4454
4455
|
[data-qc-theme] .qc-dialog-scrim {
|
|
4455
4456
|
position: fixed;
|
|
4456
4457
|
inset: 0;
|
|
@@ -4470,7 +4471,7 @@
|
|
|
4470
4471
|
font-size: var(--qc-text-fontSizeBase);
|
|
4471
4472
|
}
|
|
4472
4473
|
|
|
4473
|
-
/* The modal motion,
|
|
4474
|
+
/* The modal motion, which every modal dialog opens and closes with (its scrim carries `data-state`):
|
|
4474
4475
|
* the backdrop fades in, and the box fades in and grows from the entrance scale, over one duration.
|
|
4475
4476
|
* Closing runs the same motion in reverse. Under a reduced-motion preference the duration is zero,
|
|
4476
4477
|
* so both are instant. */
|
|
@@ -4672,7 +4673,7 @@
|
|
|
4672
4673
|
*
|
|
4673
4674
|
* The row is in the root's own flow and positions nothing: it reserves 49px of the column between
|
|
4674
4675
|
* the charts grid and the bottom range and timezone band (a 48px row under the pane's own hairline),
|
|
4675
|
-
* so the plot and the time axis stay unobscured and the drawing
|
|
4676
|
+
* so the plot and the time axis stay unobscured and the drawing toolbar keeps its column beside it.
|
|
4676
4677
|
* Entry reserves that height and exit returns it. Everything inside is placed by the strip's logical
|
|
4677
4678
|
* grid, so a right-to-left chart mirrors without a transform, and a long translation scrolls the
|
|
4678
4679
|
* strip rather than overlapping a neighbour. */
|
|
@@ -4765,7 +4766,7 @@
|
|
|
4765
4766
|
}
|
|
4766
4767
|
|
|
4767
4768
|
[data-qc-theme] .qc-replay-speed,
|
|
4768
|
-
[data-qc-theme] .qc-replay-
|
|
4769
|
+
[data-qc-theme] .qc-replay-timeframe {
|
|
4769
4770
|
justify-content: center;
|
|
4770
4771
|
min-width: 38px;
|
|
4771
4772
|
font-variant-numeric: tabular-nums;
|
|
@@ -4833,8 +4834,8 @@
|
|
|
4833
4834
|
padding-inline: 12px 10px;
|
|
4834
4835
|
}
|
|
4835
4836
|
|
|
4836
|
-
/* The starting points carry the same 28-grid marks the
|
|
4837
|
-
* width; a list whose rows carry no mark keeps no gutter for one. */
|
|
4837
|
+
/* The starting points carry the same 28-grid marks the drawing toolbar does, so the gutter is the
|
|
4838
|
+
* mark's own width; a list whose rows carry no mark keeps no gutter for one. */
|
|
4838
4839
|
[data-qc-theme] .qc-replay-menu .qc-menu-icon {
|
|
4839
4840
|
flex: 0 0 28px;
|
|
4840
4841
|
width: 28px;
|
|
@@ -5360,8 +5361,8 @@
|
|
|
5360
5361
|
white-space: nowrap;
|
|
5361
5362
|
}
|
|
5362
5363
|
|
|
5363
|
-
/* The source cell: what kind of market a row is and where its data comes from, then the
|
|
5364
|
-
*
|
|
5364
|
+
/* The source cell: what kind of market a row is and where its data comes from, then the mark of
|
|
5365
|
+
* the venue or the data source, set against the row's end. */
|
|
5365
5366
|
[data-qc-theme] .qc-search-source {
|
|
5366
5367
|
display: inline-flex;
|
|
5367
5368
|
flex: 0 0 auto;
|
|
@@ -5370,7 +5371,7 @@
|
|
|
5370
5371
|
padding-inline-end: 20px;
|
|
5371
5372
|
}
|
|
5372
5373
|
|
|
5373
|
-
[data-qc-theme] .qc-search-
|
|
5374
|
+
[data-qc-theme] .qc-search-source-name {
|
|
5374
5375
|
color: var(--qc-text-primary);
|
|
5375
5376
|
font-size: var(--qc-text-fontSizeBase);
|
|
5376
5377
|
line-height: 21px;
|
|
@@ -5384,8 +5385,8 @@
|
|
|
5384
5385
|
}
|
|
5385
5386
|
|
|
5386
5387
|
/* The source's mark: an 18px disc in a 20px cell. The package ships no brand artwork and fetches
|
|
5387
|
-
* none: a host paints the venue's own mark, or a
|
|
5388
|
-
* in the one letter it is known by on the neutral fill. */
|
|
5388
|
+
* none: a host paints the venue's own mark, or a data source's, and without one the source is
|
|
5389
|
+
* written in the one letter it is known by on the neutral fill. */
|
|
5389
5390
|
[data-qc-theme] .qc-search-mark {
|
|
5390
5391
|
display: inline-flex;
|
|
5391
5392
|
flex: 0 0 auto;
|
|
@@ -5402,8 +5403,8 @@
|
|
|
5402
5403
|
border-radius: 50%;
|
|
5403
5404
|
}
|
|
5404
5405
|
|
|
5405
|
-
/* A host's venue or
|
|
5406
|
-
* artwork fills the round box. */
|
|
5406
|
+
/* A host's venue or data source mark IS the disc: the package's ground stands down under it, and
|
|
5407
|
+
* the artwork fills the round box. */
|
|
5407
5408
|
[data-qc-theme] .qc-search-mark[data-qc-host='true'] {
|
|
5408
5409
|
background: none;
|
|
5409
5410
|
}
|
|
@@ -5461,11 +5462,11 @@
|
|
|
5461
5462
|
line-height: 21px;
|
|
5462
5463
|
}
|
|
5463
5464
|
|
|
5464
|
-
[data-qc-theme] .qc-search-table .qc-search-
|
|
5465
|
+
[data-qc-theme] .qc-search-table .qc-search-source-name {
|
|
5465
5466
|
margin-inline-end: 8px;
|
|
5466
5467
|
}
|
|
5467
5468
|
|
|
5468
|
-
/* COMPARE stacks the ticker over its description and the
|
|
5469
|
+
/* COMPARE stacks the ticker over its description and the source over the kind, on 52px rows, and
|
|
5469
5470
|
* keeps 6px of air at the list's two ends. */
|
|
5470
5471
|
[data-qc-theme] .qc-search-dialog--compare .qc-search-row {
|
|
5471
5472
|
height: 52px;
|
|
@@ -5634,8 +5635,8 @@
|
|
|
5634
5635
|
font-size: var(--qc-text-fontSizeSmall);
|
|
5635
5636
|
}
|
|
5636
5637
|
|
|
5637
|
-
/* Chart settings
|
|
5638
|
-
*
|
|
5638
|
+
/* Chart settings is a centered, two-column dialog: a fixed title and footer around a section rail
|
|
5639
|
+
* and one roomy settings page. */
|
|
5639
5640
|
[data-qc-theme] .qc-chart-settings-dialog {
|
|
5640
5641
|
box-sizing: border-box;
|
|
5641
5642
|
height: min(612px, calc(100vh - 32px));
|
|
@@ -5763,8 +5764,8 @@
|
|
|
5763
5764
|
border-radius: 4px;
|
|
5764
5765
|
}
|
|
5765
5766
|
|
|
5766
|
-
/*
|
|
5767
|
-
*
|
|
5767
|
+
/* This dialog paints its switches as compact square checks before the label, and each keeps the
|
|
5768
|
+
* accessible switch role. */
|
|
5768
5769
|
[data-qc-theme] .qc-settings-menu .qc-switch-row {
|
|
5769
5770
|
display: flex;
|
|
5770
5771
|
flex-direction: row-reverse;
|
|
@@ -53,7 +53,7 @@ interface DrawingGroup {
|
|
|
53
53
|
members: readonly string[];
|
|
54
54
|
}
|
|
55
55
|
/** A deletion, kept. A document that listed only what survives lets a concurrent save, a reconnect
|
|
56
|
-
* or a reload resurrect what the
|
|
56
|
+
* or a reload resurrect what the viewer deleted: the other side still holds the row and a merge
|
|
57
57
|
* takes it back. A tombstone says the deletion happened, and at which document revision, so the
|
|
58
58
|
* merge drops it instead. */
|
|
59
59
|
interface DrawingTombstone {
|
|
@@ -188,9 +188,9 @@ interface LayoutBody {
|
|
|
188
188
|
interface DrawingsMeta extends ResourceRef {
|
|
189
189
|
updatedAt: number;
|
|
190
190
|
}
|
|
191
|
-
type TemplateKind = '
|
|
191
|
+
type TemplateKind = 'indicator' | 'drawing' | 'palette';
|
|
192
192
|
/** A named template's listing row. `tool` scopes DRAWING templates to their tool (a trend-line
|
|
193
|
-
* template is meaningless on a rectangle);
|
|
193
|
+
* template is meaningless on a rectangle); indicator and palette templates carry no tool. */
|
|
194
194
|
interface TemplateMeta extends ResourceRef {
|
|
195
195
|
name: string;
|
|
196
196
|
tool?: string;
|
package/dist/rest-openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Quick Charts saved resources",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "2",
|
|
6
6
|
"description": "The service contract behind `createRestSaveLoadAdapter` from `@trdrs/quickcharts/adapters/rest`. Every path is relative to the base URL the host configures. Authorization, cookies, CORS, retries and tenancy belong to the host request function, so no path, header or field here carries a credential. Saved charts, layouts, drawing documents and templates share one revisioned rule: a read answers the ref a row stands at, a write quotes that revision in `If-Match`, and a write against a revision the service has moved past answers 409 with the ref that stands."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
@@ -852,12 +852,12 @@
|
|
|
852
852
|
"schema": {
|
|
853
853
|
"type": "string",
|
|
854
854
|
"enum": [
|
|
855
|
-
"
|
|
855
|
+
"indicator",
|
|
856
856
|
"drawing",
|
|
857
857
|
"palette"
|
|
858
858
|
]
|
|
859
859
|
},
|
|
860
|
-
"description": "Which template collection: appearance palettes, indicator
|
|
860
|
+
"description": "Which template collection: appearance palettes, indicator settings, or drawings."
|
|
861
861
|
}
|
|
862
862
|
],
|
|
863
863
|
"responses": {
|
|
@@ -886,12 +886,12 @@
|
|
|
886
886
|
"schema": {
|
|
887
887
|
"type": "string",
|
|
888
888
|
"enum": [
|
|
889
|
-
"
|
|
889
|
+
"indicator",
|
|
890
890
|
"drawing",
|
|
891
891
|
"palette"
|
|
892
892
|
]
|
|
893
893
|
},
|
|
894
|
-
"description": "Which template collection: appearance palettes, indicator
|
|
894
|
+
"description": "Which template collection: appearance palettes, indicator settings, or drawings."
|
|
895
895
|
}
|
|
896
896
|
],
|
|
897
897
|
"requestBody": {
|
|
@@ -952,12 +952,12 @@
|
|
|
952
952
|
"schema": {
|
|
953
953
|
"type": "string",
|
|
954
954
|
"enum": [
|
|
955
|
-
"
|
|
955
|
+
"indicator",
|
|
956
956
|
"drawing",
|
|
957
957
|
"palette"
|
|
958
958
|
]
|
|
959
959
|
},
|
|
960
|
-
"description": "Which template collection: appearance palettes, indicator
|
|
960
|
+
"description": "Which template collection: appearance palettes, indicator settings, or drawings."
|
|
961
961
|
},
|
|
962
962
|
{
|
|
963
963
|
"name": "id",
|
|
@@ -1004,12 +1004,12 @@
|
|
|
1004
1004
|
"schema": {
|
|
1005
1005
|
"type": "string",
|
|
1006
1006
|
"enum": [
|
|
1007
|
-
"
|
|
1007
|
+
"indicator",
|
|
1008
1008
|
"drawing",
|
|
1009
1009
|
"palette"
|
|
1010
1010
|
]
|
|
1011
1011
|
},
|
|
1012
|
-
"description": "Which template collection: appearance palettes, indicator
|
|
1012
|
+
"description": "Which template collection: appearance palettes, indicator settings, or drawings."
|
|
1013
1013
|
},
|
|
1014
1014
|
{
|
|
1015
1015
|
"name": "id",
|
|
@@ -1095,12 +1095,12 @@
|
|
|
1095
1095
|
"schema": {
|
|
1096
1096
|
"type": "string",
|
|
1097
1097
|
"enum": [
|
|
1098
|
-
"
|
|
1098
|
+
"indicator",
|
|
1099
1099
|
"drawing",
|
|
1100
1100
|
"palette"
|
|
1101
1101
|
]
|
|
1102
1102
|
},
|
|
1103
|
-
"description": "Which template collection: appearance palettes, indicator
|
|
1103
|
+
"description": "Which template collection: appearance palettes, indicator settings, or drawings."
|
|
1104
1104
|
},
|
|
1105
1105
|
{
|
|
1106
1106
|
"name": "id",
|