juxscript 1.1.402 → 1.1.404

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.
Files changed (133) hide show
  1. package/dist/{components → containers}/c.d.ts.map +1 -1
  2. package/dist/{components → containers}/c.js.map +1 -1
  3. package/dist/containers/flex.d.ts +49 -0
  4. package/dist/containers/flex.d.ts.map +1 -0
  5. package/dist/containers/flex.js +122 -0
  6. package/dist/containers/flex.js.map +1 -0
  7. package/dist/{components → containers}/g.d.ts.map +1 -1
  8. package/dist/{components → containers}/g.js.map +1 -1
  9. package/dist/index.d.ts +6 -4
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/widgets/canvas.d.ts +31 -55
  14. package/dist/widgets/canvas.d.ts.map +1 -1
  15. package/dist/widgets/canvas.js +690 -539
  16. package/dist/widgets/canvas.js.map +1 -1
  17. package/package.json +1 -1
  18. package/dist/components/barChart.d.ts +0 -119
  19. package/dist/components/barChart.d.ts.map +0 -1
  20. package/dist/components/barChart.js +0 -555
  21. package/dist/components/barChart.js.map +0 -1
  22. package/dist/components/container.d.ts +0 -58
  23. package/dist/components/container.d.ts.map +0 -1
  24. package/dist/components/container.js +0 -152
  25. package/dist/components/container.js.map +0 -1
  26. package/dist/components/grid.d.ts +0 -58
  27. package/dist/components/grid.d.ts.map +0 -1
  28. package/dist/components/grid.js +0 -128
  29. package/dist/components/grid.js.map +0 -1
  30. package/dist/components/lineChart.d.ts +0 -104
  31. package/dist/components/lineChart.d.ts.map +0 -1
  32. package/dist/components/lineChart.js +0 -466
  33. package/dist/components/lineChart.js.map +0 -1
  34. package/dist/components/pieChart.d.ts +0 -93
  35. package/dist/components/pieChart.d.ts.map +0 -1
  36. package/dist/components/pieChart.js +0 -397
  37. package/dist/components/pieChart.js.map +0 -1
  38. package/dist/components/stack.d.ts +0 -42
  39. package/dist/components/stack.d.ts.map +0 -1
  40. package/dist/components/stack.js +0 -109
  41. package/dist/components/stack.js.map +0 -1
  42. package/dist/devtools/devtools.d.ts +0 -3
  43. package/dist/devtools/devtools.d.ts.map +0 -1
  44. package/dist/devtools/devtools.js +0 -182
  45. package/dist/devtools/devtools.js.map +0 -1
  46. package/dist/primitives/button.d.ts +0 -53
  47. package/dist/primitives/button.d.ts.map +0 -1
  48. package/dist/primitives/button.js +0 -170
  49. package/dist/primitives/button.js.map +0 -1
  50. package/dist/primitives/c.d.ts +0 -53
  51. package/dist/primitives/c.d.ts.map +0 -1
  52. package/dist/primitives/c.js +0 -127
  53. package/dist/primitives/c.js.map +0 -1
  54. package/dist/primitives/checkbox.d.ts +0 -92
  55. package/dist/primitives/checkbox.d.ts.map +0 -1
  56. package/dist/primitives/checkbox.js +0 -217
  57. package/dist/primitives/checkbox.js.map +0 -1
  58. package/dist/primitives/data.d.ts +0 -58
  59. package/dist/primitives/data.d.ts.map +0 -1
  60. package/dist/primitives/data.js +0 -131
  61. package/dist/primitives/data.js.map +0 -1
  62. package/dist/primitives/grid.d.ts +0 -58
  63. package/dist/primitives/grid.d.ts.map +0 -1
  64. package/dist/primitives/grid.js +0 -128
  65. package/dist/primitives/grid.js.map +0 -1
  66. package/dist/primitives/include.d.ts +0 -86
  67. package/dist/primitives/include.d.ts.map +0 -1
  68. package/dist/primitives/include.js +0 -239
  69. package/dist/primitives/include.js.map +0 -1
  70. package/dist/primitives/indexDb.d.ts +0 -80
  71. package/dist/primitives/indexDb.d.ts.map +0 -1
  72. package/dist/primitives/indexDb.js +0 -253
  73. package/dist/primitives/indexDb.js.map +0 -1
  74. package/dist/primitives/input.d.ts +0 -88
  75. package/dist/primitives/input.d.ts.map +0 -1
  76. package/dist/primitives/input.js +0 -216
  77. package/dist/primitives/input.js.map +0 -1
  78. package/dist/primitives/link.d.ts +0 -51
  79. package/dist/primitives/link.d.ts.map +0 -1
  80. package/dist/primitives/link.js +0 -178
  81. package/dist/primitives/link.js.map +0 -1
  82. package/dist/primitives/list.d.ts +0 -66
  83. package/dist/primitives/list.d.ts.map +0 -1
  84. package/dist/primitives/list.js +0 -233
  85. package/dist/primitives/list.js.map +0 -1
  86. package/dist/primitives/nav.d.ts +0 -64
  87. package/dist/primitives/nav.d.ts.map +0 -1
  88. package/dist/primitives/nav.js +0 -236
  89. package/dist/primitives/nav.js.map +0 -1
  90. package/dist/primitives/radio.d.ts +0 -58
  91. package/dist/primitives/radio.d.ts.map +0 -1
  92. package/dist/primitives/radio.js +0 -135
  93. package/dist/primitives/radio.js.map +0 -1
  94. package/dist/primitives/routes.d.ts +0 -15
  95. package/dist/primitives/routes.d.ts.map +0 -1
  96. package/dist/primitives/routes.js +0 -34
  97. package/dist/primitives/routes.js.map +0 -1
  98. package/dist/primitives/select.d.ts +0 -67
  99. package/dist/primitives/select.d.ts.map +0 -1
  100. package/dist/primitives/select.js +0 -160
  101. package/dist/primitives/select.js.map +0 -1
  102. package/dist/primitives/style.d.ts +0 -27
  103. package/dist/primitives/style.d.ts.map +0 -1
  104. package/dist/primitives/style.js +0 -53
  105. package/dist/primitives/style.js.map +0 -1
  106. package/dist/primitives/table.d.ts +0 -83
  107. package/dist/primitives/table.d.ts.map +0 -1
  108. package/dist/primitives/table.js +0 -264
  109. package/dist/primitives/table.js.map +0 -1
  110. package/dist/primitives/tabs.d.ts +0 -75
  111. package/dist/primitives/tabs.d.ts.map +0 -1
  112. package/dist/primitives/tabs.js +0 -263
  113. package/dist/primitives/tabs.js.map +0 -1
  114. package/dist/primitives/tag.d.ts +0 -92
  115. package/dist/primitives/tag.d.ts.map +0 -1
  116. package/dist/primitives/tag.js +0 -151
  117. package/dist/primitives/tag.js.map +0 -1
  118. package/dist/services/db.d.ts +0 -44
  119. package/dist/services/db.d.ts.map +0 -1
  120. package/dist/services/db.js +0 -59
  121. package/dist/services/db.js.map +0 -1
  122. package/dist/services/email.d.ts +0 -50
  123. package/dist/services/email.d.ts.map +0 -1
  124. package/dist/services/email.js +0 -60
  125. package/dist/services/email.js.map +0 -1
  126. package/dist/services/s3.d.ts +0 -61
  127. package/dist/services/s3.d.ts.map +0 -1
  128. package/dist/services/s3.js +0 -79
  129. package/dist/services/s3.js.map +0 -1
  130. /package/dist/{components → containers}/c.d.ts +0 -0
  131. /package/dist/{components → containers}/c.js +0 -0
  132. /package/dist/{components → containers}/g.d.ts +0 -0
  133. /package/dist/{components → containers}/g.js +0 -0
@@ -1,555 +0,0 @@
1
- import { pageState } from '../state/pageState.js';
2
- import generateId from '../utils/idgen.js';
3
- import { showTooltip, moveTooltip, hideTooltip, formatTooltipRow } from '../utils/tooltip.js';
4
- import { computeTrend } from '../utils/trend.js';
5
- // --- Design tokens ---
6
- const FONT_FAMILY = `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif`;
7
- const TOKENS = {
8
- muted: 'hsl(215, 16%, 47%)',
9
- border: 'hsl(220, 13%, 91%)',
10
- grid: 'hsl(220, 13%, 93%)',
11
- bg: '#ffffff',
12
- title: 'hsl(222, 47%, 11%)',
13
- hoverBg: 'rgba(0,0,0,0.04)',
14
- activeBg: 'rgba(0,0,0,0.08)',
15
- linkColor: 'hsl(217, 91%, 60%)',
16
- };
17
- const RATIOS = {
18
- '16:9': 16 / 9,
19
- '4:3': 4 / 3,
20
- '3:2': 3 / 2,
21
- '1:1': 1,
22
- '2:1': 2,
23
- '21:9': 21 / 9,
24
- };
25
- // --- Bar animation styles (injected once) ---
26
- let animInjected = false;
27
- function injectBarAnimations() {
28
- if (animInjected)
29
- return;
30
- animInjected = true;
31
- const el = document.createElement('style');
32
- el.id = 'jux-bar-anims';
33
- el.textContent = `
34
- @keyframes jux-bar-grow-h {
35
- from { transform: scaleX(0); opacity: 0; }
36
- to { transform: scaleX(1); opacity: 0.85; }
37
- }
38
- @keyframes jux-bar-grow-v {
39
- from { transform: scaleY(0); opacity: 0; }
40
- to { transform: scaleY(1); opacity: 0.85; }
41
- }
42
- @keyframes jux-bar-fade-in {
43
- from { opacity: 0; }
44
- to { opacity: 1; }
45
- }
46
- .jux-bar-h {
47
- transform-origin: left center;
48
- animation: jux-bar-grow-h 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;
49
- }
50
- .jux-bar-v {
51
- transform-origin: center bottom;
52
- animation: jux-bar-grow-v 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;
53
- }
54
- .jux-bar-label {
55
- animation: jux-bar-fade-in 0.3s ease-out both;
56
- }
57
- .jux-bar-clickable {
58
- cursor: pointer;
59
- transition: background-color 0.15s ease, transform 0.1s ease;
60
- }
61
- .jux-bar-clickable:hover {
62
- background-color: rgba(0,0,0,0.04);
63
- }
64
- .jux-bar-clickable:active {
65
- background-color: rgba(0,0,0,0.08);
66
- transform: scale(0.98);
67
- }
68
- .jux-bar-selected {
69
- outline: 2px solid hsl(217, 91%, 60%);
70
- outline-offset: 2px;
71
- }
72
- `;
73
- document.head.appendChild(el);
74
- }
75
- function resolvePalette(colors) {
76
- if (Array.isArray(colors))
77
- return colors;
78
- // Fallback palettes
79
- const palettes = {
80
- green: ['hsl(142, 71%, 45%)', 'hsl(142, 71%, 35%)', 'hsl(142, 71%, 55%)', 'hsl(142, 71%, 25%)', 'hsl(142, 71%, 65%)', 'hsl(142, 71%, 40%)'],
81
- blue: ['hsl(217, 91%, 60%)', 'hsl(217, 91%, 50%)', 'hsl(217, 91%, 70%)', 'hsl(217, 91%, 40%)', 'hsl(217, 91%, 75%)', 'hsl(217, 91%, 55%)'],
82
- warm: ['hsl(25, 95%, 53%)', 'hsl(15, 95%, 53%)', 'hsl(35, 95%, 53%)', 'hsl(5, 95%, 53%)', 'hsl(45, 95%, 53%)', 'hsl(20, 95%, 53%)'],
83
- cool: ['hsl(199, 89%, 48%)', 'hsl(210, 89%, 48%)', 'hsl(188, 89%, 48%)', 'hsl(220, 89%, 48%)', 'hsl(195, 89%, 48%)', 'hsl(205, 89%, 48%)'],
84
- };
85
- return palettes[colors] || palettes['green'];
86
- }
87
- function computeLayout(values, opts) {
88
- const { orientation, width, aspectRatio, labelWidth: labelWidthOverride, barThickness: barThicknessOverride } = opts;
89
- const rows = values.length;
90
- const maxVal = Math.max(...values.map(v => v.x));
91
- const ratio = typeof aspectRatio === 'string' ? (RATIOS[aspectRatio] || 16 / 9) : (aspectRatio || 16 / 9);
92
- const scale = width / 500;
93
- const padding = Math.round(20 * scale);
94
- const gap = Math.max(2, Math.round(6 * scale));
95
- const barRadius = Math.max(3, Math.round(6 * scale));
96
- const titleSize = Math.max(14, Math.round(18 * scale));
97
- const subtitleSize = Math.max(11, Math.round(13 * scale));
98
- const labelSize = Math.max(9, Math.round(12 * scale));
99
- const tickSize = Math.max(8, Math.round(10 * scale));
100
- let cardWidth, cardHeight, barThickness, labelWidth, maxBarLength, yAxisWidth;
101
- const headerEstimate = padding + Math.round(titleSize * 1.4) + Math.round(subtitleSize * 1.4);
102
- if (orientation === 'vertical') {
103
- cardWidth = width;
104
- barThickness = barThicknessOverride || Math.max(16, Math.round(28 * scale));
105
- yAxisWidth = Math.round(36 * scale);
106
- labelWidth = 0;
107
- const labelRowHeight = Math.round(labelSize * 2) + Math.round(6 * scale);
108
- const ratioHeight = Math.round(width / ratio);
109
- maxBarLength = Math.max(ratioHeight - headerEstimate - labelRowHeight - padding * 2, 100);
110
- cardHeight = headerEstimate + maxBarLength + labelRowHeight + padding * 2;
111
- const barsNeeded = rows * (barThickness + gap);
112
- if (barsNeeded + yAxisWidth + padding * 2 > cardWidth) {
113
- barThickness = Math.max(8, Math.floor((cardWidth - yAxisWidth - padding * 2) / rows - gap));
114
- }
115
- }
116
- else {
117
- cardWidth = width;
118
- barThickness = barThicknessOverride || Math.max(16, Math.round(28 * scale));
119
- labelWidth = labelWidthOverride || Math.max(40, Math.round(70 * scale));
120
- yAxisWidth = 0;
121
- maxBarLength = cardWidth - labelWidth - padding * 3;
122
- const rowHeight = barThickness + gap + gap + 1;
123
- const tickRowHeight = Math.round(tickSize * 2);
124
- const minContentHeight = headerEstimate + rows * rowHeight + tickRowHeight + padding * 2;
125
- const ratioHeight = Math.round(width / ratio);
126
- cardHeight = Math.max(ratioHeight, minContentHeight);
127
- }
128
- return { rows, maxVal, cardWidth, cardHeight, barThickness, labelWidth, maxBarLength, yAxisWidth, padding, gap, barRadius, titleSize, subtitleSize, labelSize, tickSize, scale };
129
- }
130
- function formatTick(val) {
131
- if (val >= 1000)
132
- return `${(val / 1000).toFixed(1)}k`;
133
- return String(Math.round(val));
134
- }
135
- function mkDiv(id, css, className) {
136
- const el = document.createElement('div');
137
- el.id = id;
138
- if (css)
139
- el.setAttribute('style', css);
140
- if (className)
141
- el.className = className;
142
- return el;
143
- }
144
- class BarChart {
145
- constructor(id, values, options = {}) {
146
- this._listeners = { click: [], select: [], drill: [] };
147
- this._selectedIndex = -1;
148
- this._lastClickDetail = null;
149
- this._resizeObserver = null;
150
- this._onChange = null;
151
- this.id = id || generateId('bar');
152
- this._values = values;
153
- this._opts = {
154
- orientation: options.orientation || 'horizontal',
155
- colors: options.colors || 'green',
156
- title: options.title || '',
157
- subtitle: options.subtitle || '',
158
- aspectRatio: options.aspectRatio || '16:9',
159
- showValues: options.showValues ?? false,
160
- showLegend: options.showLegend ?? undefined,
161
- ticks: options.ticks ?? 4,
162
- animate: options.animate ?? true,
163
- stagger: options.stagger ?? 80,
164
- responsive: options.responsive ?? true,
165
- maintainAspectRatio: options.maintainAspectRatio ?? true,
166
- selectable: options.selectable ?? false,
167
- ...options,
168
- };
169
- this._seriesKeys = detectSeriesKeys(values, options.series);
170
- if (this._opts.showLegend === undefined) {
171
- this._opts.showLegend = this._seriesKeys.length > 1;
172
- }
173
- if (this._opts.animate)
174
- injectBarAnimations();
175
- this._palette = this._seriesKeys.length > 1
176
- ? this._seriesKeys.map((s, i) => s.color || DEFAULT_SERIES_COLORS[i % DEFAULT_SERIES_COLORS.length])
177
- : resolvePalette(this._opts.colors || 'green');
178
- this._isInteractive = true; // always interactive — tooltips on all charts
179
- this._wrapperEl = mkDiv(`${id}-wrapper`, `width: 100%; position: relative; box-sizing: border-box;`);
180
- this._stateEl = document.createElement('button');
181
- this._stateEl.id = id;
182
- this._stateEl.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none;';
183
- this._wrapperEl.appendChild(this._stateEl);
184
- }
185
- // ═══════════════════════════════════════════════════════════
186
- // PAGESTATE INTEGRATION
187
- // ═══════════════════════════════════════════════════════════
188
- getValue() { return this._lastClickDetail; }
189
- setValue(val) { return this; }
190
- getElement() { return this._stateEl; }
191
- getSelectedIndex() { return this._selectedIndex; }
192
- getOrientation() { return this._opts.orientation; }
193
- getTitle() { return this._opts.title; }
194
- getSubtitle() { return this._opts.subtitle; }
195
- getSelectable() { return this._opts.selectable; }
196
- setSelectedIndex(idx) { return this.select(idx); }
197
- setTitle(val) { this._opts.title = val; return this; }
198
- setSubtitle(val) { this._opts.subtitle = val; return this; }
199
- setContent(val) { this._opts.title = val; return this; }
200
- title(val) { this._opts.title = val; return this; }
201
- subtitle(val) { this._opts.subtitle = val; return this; }
202
- onChange(fn) {
203
- this._onChange = fn;
204
- return this;
205
- }
206
- get state() { return pageState[this.id]; }
207
- get element() { return this._wrapperEl; }
208
- // ═══════════════════════════════════════════════════════════
209
- // CLICK HANDLING
210
- // ═══════════════════════════════════════════════════════════
211
- _makeClickEvent(i, seriesIdx = 0) {
212
- const v = this._values[i];
213
- const sk = this._seriesKeys[seriesIdx];
214
- return {
215
- chartId: this.id, index: i, seriesKey: sk.key,
216
- label: v.label || `#${i + 1}`, value: v[sk.key] ?? v.x ?? 0,
217
- drillKey: v.drill || null, href: v.href || null,
218
- item: v, orientation: this._opts.orientation,
219
- };
220
- }
221
- _handleBarClick(i, seriesIdx = 0) {
222
- const detail = this._makeClickEvent(i, seriesIdx);
223
- if (this._opts.selectable) {
224
- const prev = this._selectedIndex;
225
- this._selectedIndex = (this._selectedIndex === i) ? -1 : i;
226
- this._updateSelection(prev, this._selectedIndex);
227
- detail.selected = this._selectedIndex === i;
228
- this._emit('select', detail);
229
- }
230
- this._lastClickDetail = detail;
231
- if (this._opts.onClick)
232
- this._opts.onClick(detail);
233
- if (this._onChange)
234
- this._onChange(detail);
235
- this._emit('click', detail);
236
- if (this._opts.stateKey) {
237
- pageState[this.id][this._opts.stateKey] = detail;
238
- this._emit('drill', detail);
239
- }
240
- this._stateEl.click();
241
- if (detail.href) {
242
- this._wrapperEl.dispatchEvent(new CustomEvent('jux:navigate', { bubbles: true, detail }));
243
- }
244
- this._wrapperEl.dispatchEvent(new CustomEvent('jux:bar-click', { bubbles: true, detail }));
245
- }
246
- _emit(type, detail) {
247
- (this._listeners[type] || []).forEach(fn => fn(detail));
248
- }
249
- _updateSelection(prevIdx, newIdx) {
250
- if (prevIdx >= 0) {
251
- const prevEl = document.getElementById(`${this.id}-bar-${prevIdx}`);
252
- if (prevEl)
253
- prevEl.classList.remove('jux-bar-selected');
254
- }
255
- if (newIdx >= 0) {
256
- const newEl = document.getElementById(`${this.id}-bar-${newIdx}`);
257
- if (newEl)
258
- newEl.classList.add('jux-bar-selected');
259
- }
260
- }
261
- _wireInteractivity(containerEl, barEl, index, seriesIdx = 0) {
262
- containerEl.classList.add('jux-bar-clickable');
263
- containerEl.setAttribute('role', 'button');
264
- containerEl.setAttribute('tabindex', '0');
265
- const sk = this._seriesKeys[seriesIdx];
266
- const v = this._values[index];
267
- const label = v.label || `Item ${index + 1}`;
268
- const val = v[sk.key] ?? v.x ?? 0;
269
- containerEl.setAttribute('aria-label', `${label}: ${val}`);
270
- containerEl.addEventListener('click', () => this._handleBarClick(index, seriesIdx));
271
- containerEl.addEventListener('keydown', (e) => {
272
- if (e.key === 'Enter' || e.key === ' ') {
273
- e.preventDefault();
274
- this._handleBarClick(index, seriesIdx);
275
- }
276
- });
277
- const color = this._palette[seriesIdx % this._palette.length];
278
- containerEl.addEventListener('mouseenter', (e) => {
279
- barEl.style.opacity = '1';
280
- let html = `<div style="font-weight:600;margin-bottom:2px;">${label}</div>`;
281
- if (this._seriesKeys.length > 1) {
282
- this._seriesKeys.forEach((s, si) => {
283
- const c = this._palette[si % this._palette.length];
284
- html += formatTooltipRow(s.label || s.key, v[s.key] ?? 0, c);
285
- });
286
- }
287
- else {
288
- html += formatTooltipRow('Value', val, color);
289
- }
290
- showTooltip(e, html);
291
- });
292
- containerEl.addEventListener('mousemove', (e) => moveTooltip(e));
293
- containerEl.addEventListener('mouseleave', () => {
294
- if (this._selectedIndex !== index)
295
- barEl.style.opacity = '0.85';
296
- hideTooltip();
297
- });
298
- }
299
- _buildVertical(cardEl, L, id, values, palette, ticks, animate, stagger, showValues, numSeries, seriesKeys) {
300
- // Vertical bar chart implementation
301
- const barsContainer = mkDiv(`${id}-bars`, `display:flex;flex-direction:column;justify-content:flex-end;height:${L.maxBarLength}px;gap:${L.gap}px;`);
302
- cardEl.appendChild(barsContainer);
303
- }
304
- _buildHorizontal(cardEl, L, id, values, palette, ticks, animate, stagger, showValues, numSeries, seriesKeys) {
305
- // Horizontal bar chart implementation
306
- const barsContainer = mkDiv(`${id}-bars`, `display:flex;flex-direction:column;gap:${L.gap}px;`);
307
- cardEl.appendChild(barsContainer);
308
- }
309
- // ═══════════════════════════════════════════════════════════
310
- // BUILD CHART
311
- // ═══════════════════════════════════════════════════════════
312
- _hasTrend() {
313
- const { trendTitle, trendSubtitle, autoTrend } = this._opts;
314
- return !!(trendTitle || trendSubtitle || autoTrend);
315
- }
316
- _buildChart(resolvedWidth) {
317
- this._wrapperEl.innerHTML = '';
318
- this._wrapperEl.appendChild(this._stateEl);
319
- const { orientation, aspectRatio, title, subtitle, showValues, showLegend, ticks, animate, stagger, maintainAspectRatio, labelWidth: labelWidthOverride, barThickness: barThicknessOverride } = this._opts;
320
- const values = this._values;
321
- const palette = this._palette;
322
- const seriesKeys = this._seriesKeys;
323
- const numSeries = seriesKeys.length;
324
- const id = this.id;
325
- // Compute global max across all series
326
- let globalMax = 0;
327
- for (const sk of seriesKeys) {
328
- for (const v of values) {
329
- const val = v[sk.key] ?? 0;
330
- if (val > globalMax)
331
- globalMax = val;
332
- }
333
- }
334
- if (globalMax === 0)
335
- globalMax = 1;
336
- const ratio = typeof aspectRatio === 'string' ? (RATIOS[aspectRatio] || 16 / 9) : (aspectRatio || 16 / 9);
337
- const effectiveWidth = resolvedWidth;
338
- const prelimL = computeLayout(values, { orientation, width: effectiveWidth, aspectRatio, labelWidth: labelWidthOverride, barThickness: barThicknessOverride });
339
- const ratioHeight = Math.round(effectiveWidth / ratio);
340
- const scale = prelimL.scale;
341
- const labelSize = Math.max(9, Math.round(11 * scale));
342
- const legendH = showLegend ? Math.round(labelSize * 2) + prelimL.padding : 0;
343
- const trendH = this._hasTrend() ? Math.round(56 * prelimL.scale) : 0;
344
- let minContentHeight;
345
- const headerEstimate = prelimL.padding + Math.round(prelimL.titleSize * 1.4) + Math.round(prelimL.subtitleSize * 1.4);
346
- if (orientation === 'vertical') {
347
- const labelRowHeight = Math.round(prelimL.labelSize * 2) + Math.round(6 * prelimL.scale);
348
- const minBarArea = Math.max(100, values.length * 20);
349
- minContentHeight = headerEstimate + minBarArea + labelRowHeight + prelimL.padding * 2 + legendH + trendH;
350
- }
351
- else {
352
- const rowHeight = prelimL.barThickness + prelimL.gap + prelimL.gap + 1;
353
- const tickRowHeight = Math.round(prelimL.tickSize * 2);
354
- minContentHeight = headerEstimate + values.length * rowHeight + tickRowHeight + prelimL.padding * 2 + legendH + trendH;
355
- }
356
- const effectiveHeight = maintainAspectRatio
357
- ? Math.max(ratioHeight + trendH, minContentHeight)
358
- : Math.max(this._wrapperEl.clientHeight || ratioHeight + trendH, minContentHeight);
359
- this._wrapperEl.style.height = `${effectiveHeight}px`;
360
- const L = computeLayout(values, { orientation, width: effectiveWidth, aspectRatio, labelWidth: labelWidthOverride, barThickness: barThicknessOverride });
361
- L.cardWidth = effectiveWidth;
362
- L.cardHeight = effectiveHeight;
363
- L.maxVal = globalMax;
364
- const finalHeaderEstimate = L.padding + Math.round(L.titleSize * 1.4) + Math.round(L.subtitleSize * 1.4);
365
- if (orientation === 'vertical') {
366
- const labelRowHeight = Math.round(L.labelSize * 2) + Math.round(6 * L.scale);
367
- L.maxBarLength = Math.max(100, effectiveHeight - finalHeaderEstimate - labelRowHeight - L.padding * 2 - legendH - trendH);
368
- }
369
- else {
370
- L.maxBarLength = effectiveWidth - L.labelWidth - L.padding * 3;
371
- }
372
- const cardEl = mkDiv(`${id}-card`, `background: ${TOKENS.bg}; border: 1px solid ${TOKENS.border}; border-radius: ${Math.round(12 * L.scale)}px; padding: ${L.padding}px; font-family: ${FONT_FAMILY}; box-shadow: 0 1px 3px rgba(0,0,0,0.04); width: 100%; height: 100%; box-sizing: border-box;`);
373
- this._wrapperEl.appendChild(cardEl);
374
- if (title) {
375
- const titleEl = mkDiv(`${id}-title`, `font-size: ${L.titleSize}px; font-weight: 600; color: ${TOKENS.title}; letter-spacing: -0.025em; margin-bottom: 2px; line-height: 1.3;`);
376
- titleEl.textContent = title;
377
- cardEl.appendChild(titleEl);
378
- }
379
- if (subtitle) {
380
- const subEl = mkDiv(`${id}-sub`, `font-size: ${L.subtitleSize}px; color: ${TOKENS.muted}; margin-bottom: ${L.padding}px; line-height: 1.3;`);
381
- subEl.textContent = subtitle;
382
- cardEl.appendChild(subEl);
383
- }
384
- if (orientation === 'vertical') {
385
- this._buildVertical(cardEl, L, id, values, palette, ticks, animate, stagger, showValues, numSeries, seriesKeys);
386
- }
387
- else {
388
- this._buildHorizontal(cardEl, L, id, values, palette, ticks, animate, stagger, showValues, numSeries, seriesKeys);
389
- }
390
- // Legend
391
- if (showLegend && numSeries > 1) {
392
- const legendDiv = document.createElement('div');
393
- legendDiv.style.cssText = `display:flex;flex-wrap:wrap;gap:${Math.round(8 * L.scale)}px ${Math.round(16 * L.scale)}px;padding-top:${Math.round(8 * L.scale)}px;justify-content:center;`;
394
- seriesKeys.forEach((sk, i) => {
395
- const item = document.createElement('div');
396
- item.style.cssText = `display:flex;align-items:center;gap:4px;font-size:${labelSize}px;color:${TOKENS.muted};`;
397
- const dot = document.createElement('span');
398
- dot.style.cssText = `width:${Math.round(10 * L.scale)}px;height:${Math.round(10 * L.scale)}px;border-radius:2px;background:${palette[i % palette.length]};flex-shrink:0;`;
399
- item.appendChild(dot);
400
- const lbl = document.createElement('span');
401
- lbl.textContent = sk.label || sk.key;
402
- item.appendChild(lbl);
403
- legendDiv.appendChild(item);
404
- });
405
- cardEl.appendChild(legendDiv);
406
- }
407
- // Trend footer
408
- this._renderTrend(cardEl, L.scale, L.padding);
409
- }
410
- _renderTrend(card, scale, padding) {
411
- const { trendTitle, trendSubtitle, trendIcon, autoTrend } = this._opts;
412
- let title = trendTitle;
413
- let subtitle = trendSubtitle;
414
- let icon = trendIcon;
415
- if (autoTrend && !title) {
416
- const sk = this._seriesKeys[0];
417
- const vals = this._values.map(v => v[sk.key] ?? 0);
418
- const labels = this._values.map(v => v.label || '');
419
- const trend = computeTrend(vals, labels);
420
- title = trend.title;
421
- subtitle = subtitle || trend.subtitle;
422
- icon = icon || trend.icon;
423
- }
424
- if (!title && !subtitle)
425
- return;
426
- const fontSize = Math.max(11, Math.round(13 * scale));
427
- const subFontSize = Math.max(10, Math.round(11 * scale));
428
- const footer = document.createElement('div');
429
- footer.style.cssText = `padding-top:${Math.round(8 * scale)}px;border-top:1px solid hsl(220,13%,93%);margin-top:${Math.round(8 * scale)}px;`;
430
- if (title) {
431
- const titleEl = document.createElement('div');
432
- titleEl.style.cssText = `font-size:${fontSize}px;font-weight:500;color:hsl(222,47%,11%);line-height:1.4;`;
433
- titleEl.textContent = `${title}${icon ? ' ' + icon : ''}`;
434
- footer.appendChild(titleEl);
435
- }
436
- if (subtitle) {
437
- const subEl = document.createElement('div');
438
- subEl.style.cssText = `font-size:${subFontSize}px;color:hsl(215,16%,47%);line-height:1.4;margin-top:1px;`;
439
- subEl.textContent = subtitle;
440
- footer.appendChild(subEl);
441
- }
442
- card.appendChild(footer);
443
- }
444
- // ═══════════════════════════════════════════════════════════
445
- // PUBLIC API
446
- // ═══════════════════════════════════════════════════════════
447
- render(target) {
448
- let parent = null;
449
- if (target && typeof target === 'object' && 'element' in target) {
450
- parent = target.element;
451
- }
452
- else if (target instanceof HTMLElement) {
453
- parent = target;
454
- }
455
- else if (typeof target === 'string') {
456
- parent = document.getElementById(target) || document.querySelector(target);
457
- }
458
- else {
459
- parent = document.getElementById('app');
460
- }
461
- if (!parent)
462
- return this;
463
- parent.appendChild(this._wrapperEl);
464
- const containerWidth = this._opts.responsive
465
- ? (this._wrapperEl.clientWidth || parent.clientWidth || this._opts.width || 500)
466
- : (this._opts.width || 500);
467
- this._buildChart(containerWidth);
468
- if (this._opts.responsive && typeof ResizeObserver !== 'undefined') {
469
- let resizeTimer;
470
- let skipCount = 2;
471
- const ro = new ResizeObserver(() => {
472
- if (skipCount > 0) {
473
- skipCount--;
474
- return;
475
- }
476
- clearTimeout(resizeTimer);
477
- resizeTimer = setTimeout(() => {
478
- const newWidth = this._wrapperEl.clientWidth;
479
- if (newWidth > 0)
480
- this._buildChart(newWidth);
481
- }, 200);
482
- });
483
- ro.observe(this._wrapperEl);
484
- this._resizeObserver = ro;
485
- }
486
- return this;
487
- }
488
- into(target) { return this.render(target); }
489
- on(event, fn) {
490
- if (!this._listeners[event])
491
- this._listeners[event] = [];
492
- this._listeners[event].push(fn);
493
- return this;
494
- }
495
- off(event, fn) {
496
- if (this._listeners[event])
497
- this._listeners[event] = this._listeners[event].filter(f => f !== fn);
498
- return this;
499
- }
500
- select(index) {
501
- if (!this._opts.selectable)
502
- return this;
503
- const prev = this._selectedIndex;
504
- this._selectedIndex = index;
505
- this._updateSelection(prev, index);
506
- return this;
507
- }
508
- clearSelection() {
509
- const prev = this._selectedIndex;
510
- this._selectedIndex = -1;
511
- this._updateSelection(prev, -1);
512
- return this;
513
- }
514
- destroy() {
515
- if (this._resizeObserver)
516
- this._resizeObserver.disconnect();
517
- pageState.__unregister(this.id);
518
- this._wrapperEl.remove();
519
- }
520
- }
521
- // ═══════════════════════════════════════════════════════════
522
- // FACTORY
523
- // ═══════════════════════════════════════════════════════════
524
- export function barChart(id, values, options = {}) {
525
- const chart = new BarChart(id, values, options);
526
- pageState.__register(chart);
527
- return chart;
528
- }
529
- export { BarChart, RATIOS, TOKENS };
530
- export default barChart;
531
- function detectSeriesKeys(values, series) {
532
- if (series && series.length > 0) {
533
- return series;
534
- }
535
- if (values.length === 0) {
536
- return [{ key: 'x', label: 'Value' }];
537
- }
538
- const firstItem = values[0];
539
- const numericKeys = Object.keys(firstItem).filter(key => key !== 'label' && key !== 'drill' && key !== 'href' && typeof firstItem[key] === 'number');
540
- if (numericKeys.length === 0) {
541
- return [{ key: 'x', label: 'Value' }];
542
- }
543
- return numericKeys.map(key => ({
544
- key,
545
- label: key.charAt(0).toUpperCase() + key.slice(1),
546
- }));
547
- }
548
- const DEFAULT_SERIES_COLORS = [
549
- 'hsl(217, 91%, 60%)',
550
- 'hsl(142, 71%, 45%)',
551
- 'hsl(25, 95%, 53%)',
552
- 'hsl(271, 81%, 56%)',
553
- 'hsl(48, 96%, 53%)',
554
- ];
555
- //# sourceMappingURL=barChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"barChart.js","sourceRoot":"","sources":["../../lib/components/barChart.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- interface ContainerOptions {
2
- layout?: 'flex' | 'grid' | 'block';
3
- direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
4
- wrap?: boolean;
5
- gap?: string;
6
- padding?: string;
7
- align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';
8
- justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
9
- columns?: number | string;
10
- width?: string;
11
- height?: string;
12
- maxWidth?: string;
13
- minHeight?: string;
14
- class?: string;
15
- style?: string;
16
- target?: string;
17
- tag?: string;
18
- content?: string;
19
- [key: string]: any;
20
- }
21
- declare class Container {
22
- id: string;
23
- opts: ContainerOptions;
24
- private _element;
25
- constructor(id: string, options?: ContainerOptions);
26
- private _buildStyles;
27
- getValue(): string;
28
- getContent(): string;
29
- setValue(val: string): this;
30
- setContent(val: string): this;
31
- setClass(val: string): this;
32
- setStyle(val: string): this;
33
- setInnerHTML(val: string): this;
34
- getElement(): HTMLElement;
35
- }
36
- /**
37
- * Create a layout container.
38
- *
39
- * @example
40
- * // Flex column (default)
41
- * jux.container('main', { gap: '16px', padding: '24px' });
42
- *
43
- * // Flex row
44
- * jux.container('toolbar', { direction: 'row', gap: '8px', align: 'center' });
45
- *
46
- * // Grid
47
- * jux.container('grid', { layout: 'grid', columns: 3, gap: '16px' });
48
- *
49
- * // Centered page wrapper
50
- * jux.container('page', { maxWidth: '960px', padding: '24px 16px', align: 'center' });
51
- *
52
- * // Nested
53
- * jux.container('card', { gap: '8px', padding: '16px', target: 'grid' });
54
- */
55
- export declare function container(id: string, options?: ContainerOptions): Container;
56
- export { Container, ContainerOptions };
57
- export default container;
58
- //# sourceMappingURL=container.d.ts.map