@aurum-grid/charts 0.0.0-stage → 0.2.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/LICENSE.md +24 -0
- package/README.md +6 -2
- package/dist/chart.d.ts +146 -0
- package/dist/chart.js +1158 -0
- package/dist/chart.js.map +1 -0
- package/dist/icons.d.ts +2 -0
- package/dist/icons.js +54 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.js +105 -0
- package/dist/index.js.map +1 -0
- package/dist/integrated.d.ts +78 -0
- package/dist/integrated.js +563 -0
- package/dist/integrated.js.map +1 -0
- package/dist/smart.d.ts +17 -0
- package/dist/smart.js +121 -0
- package/dist/smart.js.map +1 -0
- package/dist/sparkline.d.ts +14 -0
- package/dist/sparkline.js +61 -0
- package/dist/sparkline.js.map +1 -0
- package/dist/studio.d.ts +50 -0
- package/dist/studio.js +271 -0
- package/dist/studio.js.map +1 -0
- package/dist/styles.css +221 -0
- package/dist/transform.d.ts +62 -0
- package/dist/transform.js +274 -0
- package/dist/transform.js.map +1 -0
- package/package.json +37 -3
package/dist/styles.css
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/* Aurum Grid Charts. Colours derive from the shared --agr-* theme tokens. */
|
|
2
|
+
.agc-root {
|
|
3
|
+
--agc-1: #d4a72c; --agc-2: #3aa597; --agc-3: #e0704f; --agc-4: #5b8fd9;
|
|
4
|
+
--agc-5: #9b77d1; --agc-6: #8fae3c; --agc-7: #d4628f; --agc-8: #7d8b99;
|
|
5
|
+
position: relative;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: 6px;
|
|
9
|
+
color: var(--agr-fg, #222);
|
|
10
|
+
font-family: var(--agr-font, system-ui, sans-serif);
|
|
11
|
+
font-size: 12px;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
}
|
|
14
|
+
[data-agr-theme='high-contrast'] .agc-root, .agc-root[data-agr-theme='high-contrast'] {
|
|
15
|
+
--agc-1: #ffff00; --agc-2: #00ffff; --agc-3: #ff8c00; --agc-4: #7cff7c;
|
|
16
|
+
--agc-5: #ff7cff; --agc-6: #ffffff; --agc-7: #8ab4ff; --agc-8: #ffb3b3;
|
|
17
|
+
}
|
|
18
|
+
.agc-title { font-weight: 700; font-size: 13px; }
|
|
19
|
+
.agc-title[hidden] { display: none; }
|
|
20
|
+
.agc-plot { position: relative; width: 100%; min-width: 0; }
|
|
21
|
+
.agc-plot[hidden] { display: none; }
|
|
22
|
+
.agc-svg { display: block; width: 100%; height: auto; overflow: visible; }
|
|
23
|
+
.agc-fill { height: 100%; min-height: 0; }
|
|
24
|
+
.agc-fill .agc-plot { flex: 1 1 auto; min-height: 120px; }
|
|
25
|
+
.agc-fill .agc-svg { position: absolute; inset: 0; width: 100%; height: 100%; }
|
|
26
|
+
.agc-text, .agc-axis-text { fill: var(--agr-fg, #222); font-size: 11px; }
|
|
27
|
+
.agc-axis-text { fill: var(--agr-muted, #666); }
|
|
28
|
+
.agc-axis-title { fill: var(--agr-muted, #666); font-size: 11px; font-weight: 600; }
|
|
29
|
+
.agc-big { fill: var(--agr-fg, #222); font-size: 22px; font-weight: 700; }
|
|
30
|
+
.agc-on-mark { fill: #fff; font-size: 12px; font-weight: 700; paint-order: stroke; stroke: rgba(0, 0, 0, 0.55); stroke-width: 2.5px; }
|
|
31
|
+
.agc-on-mark-sub { font-weight: 500; font-size: 11px; }
|
|
32
|
+
.agc-on-accent { fill: var(--agr-accent-fg, #fff); font-size: 11px; font-weight: 600; }
|
|
33
|
+
.agc-grid { stroke: var(--agr-border, #ddd); stroke-width: 1; fill: none; }
|
|
34
|
+
.agc-zero { stroke: var(--agr-muted, #888); stroke-width: 1; }
|
|
35
|
+
.agc-line { fill: none; stroke-width: 2.25; stroke-linejoin: round; stroke-linecap: round; }
|
|
36
|
+
.agc-area { opacity: 0.22; }
|
|
37
|
+
.agc-dot { stroke: var(--agr-bg, #fff); stroke-width: 1.5; }
|
|
38
|
+
.agc-scatter-dot { opacity: 0.85; stroke: var(--agr-bg, #fff); stroke-width: 1; }
|
|
39
|
+
.agc-slice { stroke: var(--agr-bg, #fff); stroke-width: 1.5; }
|
|
40
|
+
.agc-gauge-track { fill: none; stroke: var(--agr-border, #ddd); stroke-width: 18; stroke-linecap: round; }
|
|
41
|
+
.agc-gauge-value { fill: none; stroke-width: 18; stroke-linecap: round; }
|
|
42
|
+
.agc-radar-area { fill-opacity: 0.18; stroke-width: 2; }
|
|
43
|
+
.agc-mark { transition: opacity 0.15s; outline: none; }
|
|
44
|
+
.agc-mark:hover { opacity: 0.85; }
|
|
45
|
+
.agc-mark:focus-visible { stroke: var(--agr-focus, #2457c5); stroke-width: 3; }
|
|
46
|
+
.agc-dim { opacity: 0.3; }
|
|
47
|
+
.agc-selected { stroke: var(--agr-fg, #111); stroke-width: 2; }
|
|
48
|
+
.agc-empty { display: flex; align-items: center; justify-content: center; min-height: 140px; color: var(--agr-muted, #666); border: 1px dashed var(--agr-border, #ccc); border-radius: 6px; }
|
|
49
|
+
.agc-empty[hidden] { display: none; }
|
|
50
|
+
.agc-legend { display: flex; flex-wrap: wrap; gap: 4px 12px; }
|
|
51
|
+
.agc-legend[hidden] { display: none; }
|
|
52
|
+
.agc-legend-item { display: inline-flex; align-items: center; gap: 6px; padding: 2px 4px; border: 0; background: transparent; color: inherit; font: inherit; border-radius: 4px; }
|
|
53
|
+
button.agc-legend-item { cursor: pointer; }
|
|
54
|
+
button.agc-legend-item:hover { background: var(--agr-row-hover-bg, #eee); }
|
|
55
|
+
button.agc-legend-item:focus-visible { outline: 2px solid var(--agr-focus, #2457c5); }
|
|
56
|
+
.agc-legend-off { opacity: 0.45; text-decoration: line-through; }
|
|
57
|
+
.agc-swatch { width: 10px; height: 10px; border-radius: 2px; flex: 0 0 auto; }
|
|
58
|
+
.agc-swatch-dash { width: 14px; height: 0; border-top: 2px dashed; border-radius: 0; }
|
|
59
|
+
.agc-tooltip {
|
|
60
|
+
position: absolute; z-index: 20; pointer-events: none; padding: 5px 9px; border-radius: 5px; white-space: nowrap;
|
|
61
|
+
background: var(--agr-popup-bg, #fff); color: var(--agr-fg, #222); border: 1px solid var(--agr-border, #ddd);
|
|
62
|
+
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.22); font-weight: 600;
|
|
63
|
+
}
|
|
64
|
+
.agc-tooltip[hidden] { display: none; }
|
|
65
|
+
.agc-sr-only { display: block; position: absolute; left: 0; top: 0; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
|
|
66
|
+
|
|
67
|
+
/* Toolbar: label inline with the control; groups wrap as units. */
|
|
68
|
+
.agc-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; }
|
|
69
|
+
.agc-toolbar-group { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
70
|
+
.agc-field { display: inline-flex; align-items: center; gap: 8px; margin: 0; white-space: nowrap; }
|
|
71
|
+
.agc-field-label { font-weight: 600; color: var(--agr-fg, #222); line-height: 1; }
|
|
72
|
+
.agc-control {
|
|
73
|
+
height: 32px; box-sizing: border-box; padding: 0 10px; border-radius: 6px; font: inherit; font-size: 13px; line-height: 30px;
|
|
74
|
+
border: 1px solid var(--agr-border, #ccc); background: var(--agr-input-bg, #fff); color: var(--agr-fg, #222);
|
|
75
|
+
}
|
|
76
|
+
.agc-control:focus-visible { outline: 2px solid var(--agr-focus, #2457c5); outline-offset: 1px; }
|
|
77
|
+
.agc-btn { cursor: pointer; font-weight: 600; }
|
|
78
|
+
.agc-btn:hover:not(:disabled) { background: var(--agr-row-hover-bg, #eee); }
|
|
79
|
+
.agc-btn:disabled { opacity: 0.5; cursor: default; }
|
|
80
|
+
.agc-btn-primary { background: var(--agr-accent, #2457c5); border-color: var(--agr-accent, #2457c5); color: var(--agr-accent-fg, #fff); }
|
|
81
|
+
.agc-btn-primary:hover:not(:disabled) { background: color-mix(in srgb, var(--agr-accent, #2457c5) 85%, #000); }
|
|
82
|
+
@media (prefers-reduced-motion: reduce) { .agc-mark { transition: none; } }
|
|
83
|
+
@media (forced-colors: active) { .agc-mark:focus-visible { stroke: Highlight; } }
|
|
84
|
+
|
|
85
|
+
/* ---------- smart overlays ---------- */
|
|
86
|
+
.agc-trend { stroke: var(--agr-muted, #777); stroke-width: 1.75; stroke-dasharray: 6 4; fill: none; }
|
|
87
|
+
.agc-forecast-zone { fill: color-mix(in srgb, var(--agr-fg, #222) 4%, transparent); }
|
|
88
|
+
.agc-forecast-band { opacity: 0.16; }
|
|
89
|
+
.agc-forecast-line { fill: none; stroke-width: 2.25; stroke-dasharray: 5 4; }
|
|
90
|
+
.agc-dot-forecast { fill: var(--agr-bg, #fff); stroke-width: 2; }
|
|
91
|
+
.agc-axis-future { font-style: italic; }
|
|
92
|
+
.agc-reference { stroke: var(--agr-danger, #b42318); stroke-width: 1.5; stroke-dasharray: 2 3; }
|
|
93
|
+
.agc-reference-label { fill: var(--agr-danger, #b42318); font-size: 11px; font-weight: 600; }
|
|
94
|
+
.agc-highlight { fill: none; stroke-width: 2; }
|
|
95
|
+
.agc-highlight-high { stroke: var(--agr-success, #1a7f37); }
|
|
96
|
+
.agc-highlight-low { stroke: var(--agr-danger, #b42318); }
|
|
97
|
+
.agc-callout-bg { fill: var(--agr-popup-bg, #fff); stroke: currentColor; stroke-width: 1; }
|
|
98
|
+
.agc-callout-high { color: var(--agr-success, #1a7f37); }
|
|
99
|
+
.agc-callout-low { color: var(--agr-danger, #b42318); }
|
|
100
|
+
.agc-callout-text { fill: currentColor; font-size: 11px; font-weight: 700; }
|
|
101
|
+
.agc-data-label { fill: var(--agr-fg, #222); font-size: 10.5px; font-weight: 600; }
|
|
102
|
+
.agc-axis-secondary { fill: var(--agr-muted, #666); }
|
|
103
|
+
.agc-line-secondary { stroke-dasharray: none; }
|
|
104
|
+
.agc-gauge-band { fill: none; stroke-width: 7; stroke-linecap: butt; }
|
|
105
|
+
.agc-band-bad { stroke: color-mix(in srgb, var(--agr-danger, #b42318) 70%, transparent); }
|
|
106
|
+
.agc-band-warn { stroke: color-mix(in srgb, var(--agr-warning, #9a6700) 75%, transparent); }
|
|
107
|
+
.agc-band-good { stroke: color-mix(in srgb, var(--agr-success, #1a7f37) 70%, transparent); }
|
|
108
|
+
.agc-gauge-target { stroke: var(--agr-fg, #222); stroke-width: 3; stroke-linecap: round; }
|
|
109
|
+
.agc-target-label { font-weight: 700; fill: var(--agr-fg, #222); }
|
|
110
|
+
|
|
111
|
+
/* ---------- sparklines ---------- */
|
|
112
|
+
.agc-spark { display: block; overflow: visible; }
|
|
113
|
+
.agc-spark-line { fill: none; stroke-width: 1.6; stroke-linejoin: round; }
|
|
114
|
+
.agc-spark-area { opacity: 0.14; }
|
|
115
|
+
.agc-spark-cell { display: inline-flex; align-items: center; height: 100%; }
|
|
116
|
+
|
|
117
|
+
/* ---------- chart studio ---------- */
|
|
118
|
+
.agc-studio { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
|
|
119
|
+
.agc-studio-fill { height: 100%; }
|
|
120
|
+
.agc-studio-chart { min-width: 0; }
|
|
121
|
+
.agc-studio-fill .agc-studio-chart { flex: 1 1 auto; min-height: 160px; display: flex; flex-direction: column; }
|
|
122
|
+
.agc-toolbar-smart .agc-control { height: 30px; }
|
|
123
|
+
.agc-toggle[aria-pressed='true'] { background: color-mix(in srgb, var(--agr-accent, #2457c5) 20%, var(--agr-input-bg, #fff)); border-color: var(--agr-accent, #2457c5); }
|
|
124
|
+
.agc-btn:disabled { opacity: 0.45; }
|
|
125
|
+
.agc-note { padding: 8px 10px; border-radius: 6px; font-size: 12.5px; line-height: 1.45; background: color-mix(in srgb, var(--agr-accent, #2457c5) 9%, transparent); border-left: 3px solid var(--agr-accent, #2457c5); }
|
|
126
|
+
.agc-note[data-kind='error'] { border-left-color: var(--agr-danger, #b42318); background: color-mix(in srgb, var(--agr-danger, #b42318) 9%, transparent); }
|
|
127
|
+
.agc-note[hidden] { display: none; }
|
|
128
|
+
.agc-customize { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 10px; border: 1px solid var(--agr-border, #ddd); border-radius: 6px; }
|
|
129
|
+
.agc-customize[hidden] { display: none; }
|
|
130
|
+
.agc-control-narrow { width: 70px; }
|
|
131
|
+
.agc-check { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; }
|
|
132
|
+
.agc-check input { accent-color: var(--agr-accent, #2457c5); }
|
|
133
|
+
.agc-data-wrap { max-height: 220px; overflow: auto; border: 1px solid var(--agr-border, #ddd); border-radius: 6px; }
|
|
134
|
+
.agc-data-wrap[hidden] { display: none; }
|
|
135
|
+
.agc-data-table { width: 100%; border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; }
|
|
136
|
+
.agc-data-table caption { text-align: left; padding: 6px 8px; font-weight: 700; }
|
|
137
|
+
.agc-data-table th, .agc-data-table td { padding: 4px 8px; border-top: 1px solid var(--agr-border, #ddd); text-align: left; }
|
|
138
|
+
.agc-data-table td + td, .agc-data-table th + th { text-align: right; }
|
|
139
|
+
.agc-studio-fill .agc-studio-chart > .agc-root { flex: 1 1 auto; }
|
|
140
|
+
|
|
141
|
+
/* 0.3 chart types */
|
|
142
|
+
.agc-radar-line { fill: none; stroke-width: 2; }
|
|
143
|
+
.agc-area.agc-area-stacked { opacity: 0.78; }
|
|
144
|
+
.agc-gauge-track-fill { fill: var(--agr-border, #ddd); opacity: 0.45; }
|
|
145
|
+
.agc-stat-whisker { stroke: var(--agr-muted, #777); stroke-width: 1.5; }
|
|
146
|
+
.agc-stat-box { stroke: var(--agr-fg, #222); stroke-opacity: 0.35; }
|
|
147
|
+
.agc-stat-median { stroke: var(--agr-fg, #111); stroke-width: 2.5; }
|
|
148
|
+
.agc-stat-mean { stroke: var(--agr-fg, #111); stroke-width: 2; }
|
|
149
|
+
.agc-sun-outer { stroke: var(--agr-row-bg, #fff); stroke-width: 1; }
|
|
150
|
+
.agc-sun-total { font-weight: 700; font-size: 13px; }
|
|
151
|
+
|
|
152
|
+
/* ---------- integrated chart window ---------- */
|
|
153
|
+
.agc-ic-backdrop { position: fixed; inset: 0; z-index: 1000; background: rgba(8, 10, 14, 0.45); backdrop-filter: blur(1.5px); animation: agc-fade 0.14s ease-out; }
|
|
154
|
+
@keyframes agc-fade { from { opacity: 0; } to { opacity: 1; } }
|
|
155
|
+
.agc-ic {
|
|
156
|
+
position: fixed; display: flex; flex-direction: column; min-width: 320px; min-height: 300px; overflow: hidden;
|
|
157
|
+
border: 1px solid var(--agr-border, #ccc); border-radius: 12px; background: var(--agr-row-bg, #fff); color: var(--agr-fg, #222);
|
|
158
|
+
font-family: var(--agr-font, system-ui, sans-serif); font-size: 13px; box-shadow: 0 24px 64px rgba(0, 0, 0, 0.38), 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
159
|
+
animation: agc-pop 0.16s ease-out;
|
|
160
|
+
}
|
|
161
|
+
@keyframes agc-pop { from { opacity: 0; transform: translateY(6px) scale(0.985); } to { opacity: 1; transform: none; } }
|
|
162
|
+
.agc-ic:focus { outline: none; }
|
|
163
|
+
.agc-ic-head { display: flex; align-items: center; gap: 12px; padding: 10px 10px 10px 16px; border-bottom: 1px solid var(--agr-border, #ddd); cursor: move; user-select: none; background: color-mix(in srgb, var(--agr-header-bg, #f6f6f6) 70%, var(--agr-row-bg, #fff)); }
|
|
164
|
+
.agc-ic-max .agc-ic-head { cursor: default; }
|
|
165
|
+
.agc-ic-titles { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
|
|
166
|
+
.agc-ic-title { margin: 0; font-size: 14px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
167
|
+
.agc-ic-sub { color: var(--agr-muted, #666); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
168
|
+
.agc-ic-tools { display: flex; gap: 4px; flex: 0 0 auto; }
|
|
169
|
+
.agc-ic-btn { display: inline-grid; place-items: center; min-width: 30px; height: 30px; padding: 0 8px; border: 1px solid var(--agr-border, #ccc); border-radius: 6px; background: var(--agr-input-bg, #fff); color: inherit; font: inherit; font-size: 15px; line-height: 1; cursor: pointer; }
|
|
170
|
+
.agc-ic-btn.agc-ic-text { font-size: 12px; font-weight: 700; }
|
|
171
|
+
.agc-ic-btn:hover { border-color: var(--agr-accent, #2563eb); }
|
|
172
|
+
.agc-ic-close { font-size: 20px; }
|
|
173
|
+
.agc-ic-body { position: relative; flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 0 304px; }
|
|
174
|
+
.agc-ic-panel-closed .agc-ic-body { grid-template-columns: minmax(0, 1fr) 0 0; }
|
|
175
|
+
.agc-ic-chart { min-width: 0; min-height: 0; padding: 12px 22px 12px 14px; display: flex; flex-direction: column; }
|
|
176
|
+
.agc-ic-chart > .agc-chart { flex: 1 1 auto; min-height: 0; }
|
|
177
|
+
.agc-ic-toggle {
|
|
178
|
+
position: relative; z-index: 2; align-self: center; justify-self: end; width: 22px; height: 56px; margin-right: -1px; padding: 0;
|
|
179
|
+
border: 1px solid var(--agr-border, #ccc); border-right: 0; border-radius: 8px 0 0 8px; background: var(--agr-input-bg, #fff);
|
|
180
|
+
color: var(--agr-fg, #222); font-size: 18px; font-weight: 700; line-height: 1; cursor: pointer;
|
|
181
|
+
}
|
|
182
|
+
.agc-ic-toggle:hover { color: var(--agr-accent, #2563eb); border-color: var(--agr-accent, #2563eb); }
|
|
183
|
+
.agc-ic-panel { min-width: 0; overflow: auto; border-left: 1px solid var(--agr-border, #ddd); background: color-mix(in srgb, var(--agr-fg, #000) 2.5%, var(--agr-row-bg, #fff)); }
|
|
184
|
+
.agc-ic-tabs { position: sticky; top: 0; z-index: 1; display: flex; border-bottom: 1px solid var(--agr-border, #ddd); background: inherit; }
|
|
185
|
+
.agc-ic-tab { flex: 1 1 0; height: 38px; border: 0; background: transparent; color: var(--agr-muted, #666); font: inherit; font-weight: 700; cursor: pointer; position: relative; }
|
|
186
|
+
.agc-ic-tab[aria-selected='true'] { color: var(--agr-fg, #222); }
|
|
187
|
+
.agc-ic-tab[aria-selected='true']::after { content: ''; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; background: var(--agr-accent, #2563eb); }
|
|
188
|
+
.agc-ic-pane { padding: 10px 12px 16px; display: flex; flex-direction: column; gap: 10px; }
|
|
189
|
+
.agc-ic-group-title { margin: 4px 0 6px; font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--agr-muted, #666); }
|
|
190
|
+
.agc-ic-types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
|
|
191
|
+
.agc-ic-type {
|
|
192
|
+
display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 7px 4px 6px; min-width: 0;
|
|
193
|
+
border: 1px solid var(--agr-border, #ddd); border-radius: 8px; background: var(--agr-row-bg, #fff); color: var(--agr-fg, #222); font: inherit; cursor: pointer;
|
|
194
|
+
}
|
|
195
|
+
.agc-ic-type:hover { border-color: var(--agr-accent, #2563eb); }
|
|
196
|
+
.agc-ic-type[aria-pressed='true'] { border-color: var(--agr-accent, #2563eb); box-shadow: inset 0 0 0 1px var(--agr-accent, #2563eb); background: color-mix(in srgb, var(--agr-accent, #2563eb) 10%, var(--agr-row-bg, #fff)); }
|
|
197
|
+
.agc-ic-type-label { font-size: 10.5px; line-height: 1.2; text-align: center; color: var(--agr-muted, #666); overflow: hidden; text-overflow: ellipsis; max-width: 100%; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
|
|
198
|
+
.agc-ic-type[aria-pressed='true'] .agc-ic-type-label { color: var(--agr-fg, #222); font-weight: 600; }
|
|
199
|
+
.agc-type-icon .agc-ti-fill.agc-ti-1 { fill: var(--agc-1, var(--agr-accent, #2563eb)); }
|
|
200
|
+
.agc-type-icon .agc-ti-fill.agc-ti-2 { fill: var(--agc-2, #14b8a6); }
|
|
201
|
+
.agc-type-icon .agc-ti-fill.agc-ti-3 { fill: var(--agc-3, #f97316); }
|
|
202
|
+
.agc-type-icon .agc-ti-stroke.agc-ti-1 { stroke: var(--agc-1, var(--agr-accent, #2563eb)); }
|
|
203
|
+
.agc-type-icon .agc-ti-stroke.agc-ti-2 { stroke: var(--agc-2, #14b8a6); }
|
|
204
|
+
.agc-type-icon .agc-ti-stroke.agc-ti-3 { stroke: var(--agr-muted, #999); }
|
|
205
|
+
.agc-ic-field { display: flex; flex-direction: column; gap: 5px; }
|
|
206
|
+
.agc-ic-label { font-size: 12px; font-weight: 700; }
|
|
207
|
+
.agc-ic-field .agc-control { width: 100%; }
|
|
208
|
+
.agc-ic-series { margin: 0; padding: 8px 10px; border: 1px solid var(--agr-border, #ddd); border-radius: 8px; display: grid; gap: 6px; }
|
|
209
|
+
.agc-ic-series legend { padding: 0 4px; }
|
|
210
|
+
.agc-ic-checks { display: grid; gap: 8px; }
|
|
211
|
+
.agc-check { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
|
|
212
|
+
.agc-check input { accent-color: var(--agr-accent, #2563eb); }
|
|
213
|
+
.agc-ic-note { margin: 0; color: var(--agr-muted, #666); font-size: 12px; }
|
|
214
|
+
@media (max-width: 720px) {
|
|
215
|
+
.agc-ic-body { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(220px, 1fr) auto minmax(0, 45%); }
|
|
216
|
+
.agc-ic-panel-closed .agc-ic-body { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto 0; }
|
|
217
|
+
.agc-ic-toggle { justify-self: center; width: 64px; height: 20px; border: 1px solid var(--agr-border, #ccc); border-bottom: 0; border-radius: 8px 8px 0 0; transform: rotate(90deg) translateX(0); writing-mode: horizontal-tb; }
|
|
218
|
+
.agc-ic-panel { border-left: 0; border-top: 1px solid var(--agr-border, #ddd); }
|
|
219
|
+
}
|
|
220
|
+
@media (prefers-reduced-motion: reduce) { .agc-ic, .agc-ic-backdrop { animation: none; } }
|
|
221
|
+
.agc-ic-pane[hidden], .agc-ic-panel[hidden] { display: none; }
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/** Pure data transforms used by the chart renderers (unit-tested). */
|
|
2
|
+
export type Datum = Record<string, unknown>;
|
|
3
|
+
export declare function toNumber(v: unknown): number;
|
|
4
|
+
/** "Nice" axis ticks covering [min, max]. */
|
|
5
|
+
export declare function niceTicks(min: number, max: number, count?: number): number[];
|
|
6
|
+
export declare function compactNumber(n: number): string;
|
|
7
|
+
export interface Bin {
|
|
8
|
+
x0: number;
|
|
9
|
+
x1: number;
|
|
10
|
+
count: number;
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function histogramBins(values: number[], bins?: number): Bin[];
|
|
14
|
+
/** Stack series per category. Positive and negative values stack separately. */
|
|
15
|
+
export declare function stack(values: number[][]): Array<Array<[number, number]>>;
|
|
16
|
+
export interface WaterfallStep {
|
|
17
|
+
label: string;
|
|
18
|
+
start: number;
|
|
19
|
+
end: number;
|
|
20
|
+
value: number;
|
|
21
|
+
kind: 'up' | 'down' | 'total';
|
|
22
|
+
}
|
|
23
|
+
export declare function waterfall(labels: string[], deltas: number[], totalLabel?: string): WaterfallStep[];
|
|
24
|
+
export interface Rect {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
w: number;
|
|
28
|
+
h: number;
|
|
29
|
+
}
|
|
30
|
+
/** Squarified treemap layout. Returns rects in input order. */
|
|
31
|
+
export declare function treemap(values: number[], box: Rect): Rect[];
|
|
32
|
+
export type Agg = 'sum' | 'avg' | 'count' | 'min' | 'max';
|
|
33
|
+
/** Group rows by a category and aggregate measure fields. */
|
|
34
|
+
export declare function aggregateBy(rows: Datum[], categoryKey: string, measures: Array<{
|
|
35
|
+
key: string;
|
|
36
|
+
agg: Agg;
|
|
37
|
+
}>): Datum[];
|
|
38
|
+
export interface Regression {
|
|
39
|
+
slope: number;
|
|
40
|
+
intercept: number;
|
|
41
|
+
r2: number;
|
|
42
|
+
at: (x: number) => number;
|
|
43
|
+
}
|
|
44
|
+
/** Ordinary least squares over x = 0..n-1 (or the supplied xs). */
|
|
45
|
+
export declare function linearRegression(ys: number[], xs?: number[]): Regression;
|
|
46
|
+
export interface ForecastPoint {
|
|
47
|
+
value: number;
|
|
48
|
+
low: number;
|
|
49
|
+
high: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Holt's linear (double exponential) smoothing forecast with an approximate
|
|
53
|
+
* 95% interval that widens with the horizon. Deterministic and dependency-free.
|
|
54
|
+
*/
|
|
55
|
+
export declare function holtForecast(ys: number[], periods: number, alpha?: number, beta?: number): ForecastPoint[];
|
|
56
|
+
/** Labels for future periods: continues YYYY-MM, YYYY-MM-DD, YYYY and Qn sequences; falls back to "+1". */
|
|
57
|
+
export declare function nextLabels(labels: string[], periods: number): string[];
|
|
58
|
+
/** Index of the max and min values (ignores non-finite). */
|
|
59
|
+
export declare function extremes(values: number[]): {
|
|
60
|
+
maxIndex: number;
|
|
61
|
+
minIndex: number;
|
|
62
|
+
};
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/** Pure data transforms used by the chart renderers (unit-tested). */
|
|
2
|
+
export function toNumber(v) {
|
|
3
|
+
if (typeof v === 'number')
|
|
4
|
+
return Number.isFinite(v) ? v : 0;
|
|
5
|
+
if (typeof v === 'string' && v.trim() !== '') {
|
|
6
|
+
const n = Number(v.replace(/,/g, ''));
|
|
7
|
+
return Number.isFinite(n) ? n : 0;
|
|
8
|
+
}
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
/** "Nice" axis ticks covering [min, max]. */
|
|
12
|
+
export function niceTicks(min, max, count = 5) {
|
|
13
|
+
if (!Number.isFinite(min) || !Number.isFinite(max))
|
|
14
|
+
return [0, 1];
|
|
15
|
+
if (min === max) {
|
|
16
|
+
if (min === 0)
|
|
17
|
+
return [0, 1];
|
|
18
|
+
const pad = Math.abs(min) * 0.1;
|
|
19
|
+
min -= pad;
|
|
20
|
+
max += pad;
|
|
21
|
+
}
|
|
22
|
+
const span = max - min;
|
|
23
|
+
const raw = span / Math.max(1, count);
|
|
24
|
+
const mag = 10 ** Math.floor(Math.log10(raw));
|
|
25
|
+
const norm = raw / mag;
|
|
26
|
+
const step = (norm >= 5 ? 10 : norm >= 2 ? 5 : norm >= 1 ? 2 : 1) * mag;
|
|
27
|
+
const start = Math.floor(min / step) * step;
|
|
28
|
+
const end = Math.ceil(max / step) * step;
|
|
29
|
+
const out = [];
|
|
30
|
+
for (let v = start; v <= end + step / 2; v += step)
|
|
31
|
+
out.push(Math.round(v / step) * step);
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
export function compactNumber(n) {
|
|
35
|
+
const a = Math.abs(n);
|
|
36
|
+
if (a >= 1e9)
|
|
37
|
+
return `${(n / 1e9).toFixed(a >= 1e10 ? 0 : 1)}B`;
|
|
38
|
+
if (a >= 1e6)
|
|
39
|
+
return `${(n / 1e6).toFixed(a >= 1e7 ? 0 : 1)}M`;
|
|
40
|
+
if (a >= 1e3)
|
|
41
|
+
return `${(n / 1e3).toFixed(a >= 1e4 ? 0 : 1)}K`;
|
|
42
|
+
return Number.isInteger(n) ? String(n) : n.toFixed(2);
|
|
43
|
+
}
|
|
44
|
+
export function histogramBins(values, bins = 10) {
|
|
45
|
+
const v = values.filter((x) => Number.isFinite(x));
|
|
46
|
+
if (!v.length)
|
|
47
|
+
return [];
|
|
48
|
+
let min = Math.min(...v);
|
|
49
|
+
let max = Math.max(...v);
|
|
50
|
+
if (min === max) {
|
|
51
|
+
min -= 0.5;
|
|
52
|
+
max += 0.5;
|
|
53
|
+
}
|
|
54
|
+
const width = (max - min) / bins;
|
|
55
|
+
const out = Array.from({ length: bins }, (_, i) => ({
|
|
56
|
+
x0: min + i * width, x1: min + (i + 1) * width, count: 0, label: `${compactNumber(min + i * width)}–${compactNumber(min + (i + 1) * width)}`,
|
|
57
|
+
}));
|
|
58
|
+
for (const x of v)
|
|
59
|
+
out[Math.min(bins - 1, Math.floor((x - min) / width))].count++;
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
/** Stack series per category. Positive and negative values stack separately. */
|
|
63
|
+
export function stack(values) {
|
|
64
|
+
// values[s][c]
|
|
65
|
+
const cats = values[0]?.length ?? 0;
|
|
66
|
+
const pos = new Array(cats).fill(0);
|
|
67
|
+
const neg = new Array(cats).fill(0);
|
|
68
|
+
return values.map((series) => series.map((v, c) => {
|
|
69
|
+
if (v >= 0) {
|
|
70
|
+
const r = [pos[c], pos[c] + v];
|
|
71
|
+
pos[c] += v;
|
|
72
|
+
return r;
|
|
73
|
+
}
|
|
74
|
+
const r = [neg[c] + v, neg[c]];
|
|
75
|
+
neg[c] += v;
|
|
76
|
+
return r;
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
export function waterfall(labels, deltas, totalLabel = 'Total') {
|
|
80
|
+
let run = 0;
|
|
81
|
+
const steps = labels.map((label, i) => {
|
|
82
|
+
const start = run;
|
|
83
|
+
run += deltas[i];
|
|
84
|
+
return { label, start, end: run, value: deltas[i], kind: deltas[i] >= 0 ? 'up' : 'down' };
|
|
85
|
+
});
|
|
86
|
+
steps.push({ label: totalLabel, start: 0, end: run, value: run, kind: 'total' });
|
|
87
|
+
return steps;
|
|
88
|
+
}
|
|
89
|
+
/** Squarified treemap layout. Returns rects in input order. */
|
|
90
|
+
export function treemap(values, box) {
|
|
91
|
+
const total = values.reduce((a, b) => a + Math.max(0, b), 0);
|
|
92
|
+
const out = new Array(values.length);
|
|
93
|
+
if (!total)
|
|
94
|
+
return values.map(() => ({ x: box.x, y: box.y, w: 0, h: 0 }));
|
|
95
|
+
const items = values.map((v, i) => ({ i, a: (Math.max(0, v) / total) * box.w * box.h })).sort((a, b) => b.a - a.a);
|
|
96
|
+
let rect = { ...box };
|
|
97
|
+
const worst = (row, side) => {
|
|
98
|
+
const s = row.reduce((a, b) => a + b, 0);
|
|
99
|
+
const mx = Math.max(...row);
|
|
100
|
+
const mn = Math.min(...row);
|
|
101
|
+
return Math.max((side * side * mx) / (s * s), (s * s) / (side * side * mn));
|
|
102
|
+
};
|
|
103
|
+
let row = [];
|
|
104
|
+
const layoutRow = (r) => {
|
|
105
|
+
const s = r.reduce((a, b) => a + b.a, 0);
|
|
106
|
+
if (rect.w >= rect.h) {
|
|
107
|
+
const w = s / rect.h;
|
|
108
|
+
let y = rect.y;
|
|
109
|
+
for (const it of r) {
|
|
110
|
+
const hgt = it.a / w;
|
|
111
|
+
out[it.i] = { x: rect.x, y, w, h: hgt };
|
|
112
|
+
y += hgt;
|
|
113
|
+
}
|
|
114
|
+
rect = { x: rect.x + w, y: rect.y, w: rect.w - w, h: rect.h };
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const hgt = s / rect.w;
|
|
118
|
+
let x = rect.x;
|
|
119
|
+
for (const it of r) {
|
|
120
|
+
const w = it.a / hgt;
|
|
121
|
+
out[it.i] = { x, y: rect.y, w, h: hgt };
|
|
122
|
+
x += w;
|
|
123
|
+
}
|
|
124
|
+
rect = { x: rect.x, y: rect.y + hgt, w: rect.w, h: rect.h - hgt };
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
for (const it of items) {
|
|
128
|
+
if (it.a <= 0) {
|
|
129
|
+
out[it.i] = { x: rect.x, y: rect.y, w: 0, h: 0 };
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const side = Math.min(rect.w, rect.h);
|
|
133
|
+
if (!row.length || worst([...row.map((r) => r.a), it.a], side) <= worst(row.map((r) => r.a), side))
|
|
134
|
+
row.push(it);
|
|
135
|
+
else {
|
|
136
|
+
layoutRow(row);
|
|
137
|
+
row = [it];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (row.length)
|
|
141
|
+
layoutRow(row);
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
144
|
+
/** Group rows by a category and aggregate measure fields. */
|
|
145
|
+
export function aggregateBy(rows, categoryKey, measures) {
|
|
146
|
+
const groups = new Map();
|
|
147
|
+
for (const r of rows) {
|
|
148
|
+
const k = String(r[categoryKey] ?? '(Blank)');
|
|
149
|
+
let g = groups.get(k);
|
|
150
|
+
if (!g)
|
|
151
|
+
groups.set(k, (g = []));
|
|
152
|
+
g.push(r);
|
|
153
|
+
}
|
|
154
|
+
return [...groups.entries()].map(([k, list]) => {
|
|
155
|
+
const out = { [categoryKey]: k };
|
|
156
|
+
for (const m of measures) {
|
|
157
|
+
const nums = list.map((r) => toNumber(r[m.key]));
|
|
158
|
+
out[m.key] =
|
|
159
|
+
m.agg === 'count' ? list.length
|
|
160
|
+
: m.agg === 'avg' ? (nums.length ? nums.reduce((a, b) => a + b, 0) / nums.length : 0)
|
|
161
|
+
: m.agg === 'min' ? Math.min(...nums)
|
|
162
|
+
: m.agg === 'max' ? Math.max(...nums)
|
|
163
|
+
: nums.reduce((a, b) => a + b, 0);
|
|
164
|
+
}
|
|
165
|
+
return out;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/** Ordinary least squares over x = 0..n-1 (or the supplied xs). */
|
|
169
|
+
export function linearRegression(ys, xs) {
|
|
170
|
+
const n = ys.length;
|
|
171
|
+
const X = xs ?? ys.map((_, i) => i);
|
|
172
|
+
if (n < 2)
|
|
173
|
+
return { slope: 0, intercept: ys[0] ?? 0, r2: 0, at: () => ys[0] ?? 0 };
|
|
174
|
+
const mx = X.reduce((a, b) => a + b, 0) / n;
|
|
175
|
+
const my = ys.reduce((a, b) => a + b, 0) / n;
|
|
176
|
+
let sxy = 0;
|
|
177
|
+
let sxx = 0;
|
|
178
|
+
let syy = 0;
|
|
179
|
+
for (let i = 0; i < n; i++) {
|
|
180
|
+
sxy += (X[i] - mx) * (ys[i] - my);
|
|
181
|
+
sxx += (X[i] - mx) ** 2;
|
|
182
|
+
syy += (ys[i] - my) ** 2;
|
|
183
|
+
}
|
|
184
|
+
const slope = sxx ? sxy / sxx : 0;
|
|
185
|
+
const intercept = my - slope * mx;
|
|
186
|
+
const r2 = sxx && syy ? (sxy * sxy) / (sxx * syy) : 0;
|
|
187
|
+
return { slope, intercept, r2, at: (x) => intercept + slope * x };
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Holt's linear (double exponential) smoothing forecast with an approximate
|
|
191
|
+
* 95% interval that widens with the horizon. Deterministic and dependency-free.
|
|
192
|
+
*/
|
|
193
|
+
export function holtForecast(ys, periods, alpha = 0.5, beta = 0.3) {
|
|
194
|
+
const clean = ys.filter((v) => Number.isFinite(v));
|
|
195
|
+
if (!clean.length || periods <= 0)
|
|
196
|
+
return [];
|
|
197
|
+
if (clean.length === 1)
|
|
198
|
+
return Array.from({ length: periods }, () => ({ value: clean[0], low: clean[0], high: clean[0] }));
|
|
199
|
+
let level = clean[0];
|
|
200
|
+
let trend = clean[1] - clean[0];
|
|
201
|
+
const residuals = [];
|
|
202
|
+
for (let i = 1; i < clean.length; i++) {
|
|
203
|
+
const predicted = level + trend;
|
|
204
|
+
residuals.push(clean[i] - predicted);
|
|
205
|
+
const prevLevel = level;
|
|
206
|
+
level = alpha * clean[i] + (1 - alpha) * (level + trend);
|
|
207
|
+
trend = beta * (level - prevLevel) + (1 - beta) * trend;
|
|
208
|
+
}
|
|
209
|
+
const sigma = Math.sqrt(residuals.reduce((s, r) => s + r * r, 0) / Math.max(1, residuals.length));
|
|
210
|
+
return Array.from({ length: periods }, (_, i) => {
|
|
211
|
+
const h = i + 1;
|
|
212
|
+
const value = level + h * trend;
|
|
213
|
+
const spread = 1.96 * sigma * Math.sqrt(h);
|
|
214
|
+
return { value, low: value - spread, high: value + spread };
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/** Labels for future periods: continues YYYY-MM, YYYY-MM-DD, YYYY and Qn sequences; falls back to "+1". */
|
|
218
|
+
export function nextLabels(labels, periods) {
|
|
219
|
+
const last = labels[labels.length - 1] ?? '';
|
|
220
|
+
const out = [];
|
|
221
|
+
let m = /^(\d{4})-(\d{2})$/.exec(last);
|
|
222
|
+
if (m) {
|
|
223
|
+
let y = Number(m[1]);
|
|
224
|
+
let mo = Number(m[2]);
|
|
225
|
+
for (let i = 0; i < periods; i++) {
|
|
226
|
+
mo++;
|
|
227
|
+
if (mo > 12) {
|
|
228
|
+
mo = 1;
|
|
229
|
+
y++;
|
|
230
|
+
}
|
|
231
|
+
out.push(`${y}-${String(mo).padStart(2, '0')}`);
|
|
232
|
+
}
|
|
233
|
+
return out;
|
|
234
|
+
}
|
|
235
|
+
m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(last);
|
|
236
|
+
if (m) {
|
|
237
|
+
const step = labels.length > 1 ? Date.parse(last) - Date.parse(labels[labels.length - 2]) : 86_400_000;
|
|
238
|
+
for (let i = 1; i <= periods; i++)
|
|
239
|
+
out.push(new Date(Date.parse(last) + i * (step || 86_400_000)).toISOString().slice(0, 10));
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
if (/^\d{4}$/.test(last))
|
|
243
|
+
return Array.from({ length: periods }, (_, i) => String(Number(last) + i + 1));
|
|
244
|
+
m = /^Q([1-4])\s*(\d{4})$/.exec(last);
|
|
245
|
+
if (m) {
|
|
246
|
+
let q = Number(m[1]);
|
|
247
|
+
let y = Number(m[2]);
|
|
248
|
+
for (let i = 0; i < periods; i++) {
|
|
249
|
+
q++;
|
|
250
|
+
if (q > 4) {
|
|
251
|
+
q = 1;
|
|
252
|
+
y++;
|
|
253
|
+
}
|
|
254
|
+
out.push(`Q${q} ${y}`);
|
|
255
|
+
}
|
|
256
|
+
return out;
|
|
257
|
+
}
|
|
258
|
+
return Array.from({ length: periods }, (_, i) => `+${i + 1}`);
|
|
259
|
+
}
|
|
260
|
+
/** Index of the max and min values (ignores non-finite). */
|
|
261
|
+
export function extremes(values) {
|
|
262
|
+
let maxIndex = -1;
|
|
263
|
+
let minIndex = -1;
|
|
264
|
+
values.forEach((v, i) => {
|
|
265
|
+
if (!Number.isFinite(v))
|
|
266
|
+
return;
|
|
267
|
+
if (maxIndex < 0 || v > values[maxIndex])
|
|
268
|
+
maxIndex = i;
|
|
269
|
+
if (minIndex < 0 || v < values[minIndex])
|
|
270
|
+
minIndex = i;
|
|
271
|
+
});
|
|
272
|
+
return { maxIndex, minIndex };
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aurum-grid/charts",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Aurum Grid Charts: themeable SVG charts, standalone or grid-integrated.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./styles.css": "./dist/styles.css"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"LICENSE.md",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"sideEffects": [
|
|
22
|
+
"*.css"
|
|
23
|
+
],
|
|
24
|
+
"dependencies": {},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"data grid",
|
|
30
|
+
"datagrid",
|
|
31
|
+
"table",
|
|
32
|
+
"enterprise",
|
|
33
|
+
"pivot",
|
|
34
|
+
"ag-grid alternative"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc -p tsconfig.json && node ../../scripts/copy-css.mjs",
|
|
38
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
39
|
+
}
|
|
6
40
|
}
|