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,397 +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
- const FONT_FAMILY = `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif`;
5
- const TOKENS = {
6
- muted: 'hsl(215, 16%, 47%)',
7
- border: 'hsl(220, 13%, 91%)',
8
- bg: '#ffffff',
9
- title: 'hsl(222, 47%, 11%)',
10
- };
11
- function resolvePalette(colors) {
12
- if (Array.isArray(colors))
13
- return colors;
14
- const palettes = {
15
- 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%)'],
16
- 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%)'],
17
- 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%)'],
18
- 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%)'],
19
- multi: ['hsl(217,91%,60%)', 'hsl(142,71%,45%)', 'hsl(25,95%,53%)', 'hsl(280,67%,55%)', 'hsl(199,89%,48%)', 'hsl(350,80%,55%)'],
20
- };
21
- return palettes[colors] || palettes['multi'];
22
- }
23
- class PieChart {
24
- constructor(id, values, options = {}) {
25
- this._resizeObserver = null;
26
- this._lastClickDetail = null;
27
- this._onChange = null;
28
- this._listeners = { click: [] };
29
- this._hasAnimated = false;
30
- this.id = id || generateId('pie');
31
- this._values = values;
32
- this._opts = {
33
- title: options.title || '',
34
- subtitle: options.subtitle || '',
35
- colors: options.colors || 'multi',
36
- donut: options.donut ?? false,
37
- donutWidth: options.donutWidth ?? 0.4,
38
- showLabels: options.showLabels ?? true,
39
- showLegend: options.showLegend ?? true,
40
- showValues: options.showValues ?? false,
41
- startAngle: options.startAngle ?? -90,
42
- padAngle: options.padAngle ?? 1,
43
- animate: options.animate ?? true,
44
- responsive: options.responsive ?? true,
45
- ...options,
46
- };
47
- this._palette = resolvePalette(this._opts.colors || 'multi');
48
- this._wrapperEl = document.createElement('div');
49
- this._wrapperEl.id = `${id}-wrapper`;
50
- this._wrapperEl.style.cssText = 'width:100%;position:relative;box-sizing:border-box;';
51
- this._stateEl = document.createElement('button');
52
- this._stateEl.id = id;
53
- this._stateEl.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none;';
54
- this._wrapperEl.appendChild(this._stateEl);
55
- }
56
- // ═══════════════════════════════════════════════════════════
57
- // FLUENT BUILDER API
58
- // ═══════════════════════════════════════════════════════════
59
- title(val) { this._opts.title = val; return this; }
60
- subtitle(val) { this._opts.subtitle = val; return this; }
61
- content(val) { this._opts.title = val; return this; }
62
- disabled(val) { return this; }
63
- style(val) { this._wrapperEl.setAttribute('style', this._wrapperEl.getAttribute('style') + ';' + val); return this; }
64
- class(val) { this._wrapperEl.className = val; return this; }
65
- // ═══════════════════════════════════════════════════════════
66
- // PAGESTATE INTEGRATION
67
- // ═══════════════════════════════════════════════════════════
68
- getValue() { return this._lastClickDetail; }
69
- setValue(val) { return this; }
70
- getElement() { return this._stateEl; }
71
- setContent(val) { return this.content(val); }
72
- getTitle() { return this._opts.title; }
73
- getSubtitle() { return this._opts.subtitle; }
74
- getContent() { return this._opts.title; }
75
- getDisabled() { return false; }
76
- getClass() { return this._wrapperEl.className; }
77
- getStyle() { return this._wrapperEl.getAttribute('style') ?? ''; }
78
- setTitle(val) { return this.title(val); }
79
- setSubtitle(val) { return this.subtitle(val); }
80
- setDisabled(val) { return this.disabled(val); }
81
- setClass(val) { return this.class(val); }
82
- setStyle(val) { return this.style(val); }
83
- onChange(fn) { this._onChange = fn; return this; }
84
- get state() { return pageState[this.id]; }
85
- get element() { return this._wrapperEl; }
86
- // ═══════════════════════════════════════════════════════════
87
- // CLICK
88
- // ═══════════════════════════════════════════════════════════
89
- _handleSliceClick(i) {
90
- const v = this._values[i];
91
- const total = this._values.reduce((s, d) => s + d.x, 0);
92
- const detail = {
93
- chartId: this.id, index: i,
94
- label: v.label || `#${i + 1}`, value: v.x,
95
- percentage: Math.round((v.x / total) * 1000) / 10,
96
- item: v,
97
- };
98
- this._lastClickDetail = detail;
99
- if (this._opts.onClick)
100
- this._opts.onClick(detail);
101
- if (this._onChange)
102
- this._onChange(detail);
103
- (this._listeners['click'] || []).forEach(fn => fn(detail));
104
- this._stateEl.click();
105
- }
106
- // ═══════════════════════════════════════════════════════════
107
- // BUILD
108
- // ═══════════════════════════════════════════════════════════
109
- _hasTrend() {
110
- const { trendTitle, trendSubtitle, autoTrend } = this._opts;
111
- return !!(trendTitle || trendSubtitle || autoTrend);
112
- }
113
- _buildChart(resolvedWidth) {
114
- this._wrapperEl.innerHTML = '';
115
- this._wrapperEl.appendChild(this._stateEl);
116
- const { title, subtitle, donut, donutWidth, showLabels, showLegend, showValues, startAngle, padAngle, animate } = this._opts;
117
- const shouldAnimate = animate && !this._hasAnimated;
118
- const values = this._values;
119
- const palette = this._palette;
120
- const id = this.id;
121
- const total = values.reduce((s, d) => s + d.x, 0);
122
- const scale = resolvedWidth / 500;
123
- const padding = Math.round(20 * scale);
124
- const titleSize = Math.max(14, Math.round(18 * scale));
125
- const subtitleSize = Math.max(11, Math.round(13 * scale));
126
- const labelSize = Math.max(9, Math.round(11 * scale));
127
- const headerH = (title ? Math.round(titleSize * 1.4) : 0) + (subtitle ? Math.round(subtitleSize * 1.4) : 0) + padding;
128
- const legendH = showLegend ? Math.round(labelSize * 2 * Math.ceil(values.length / 3)) + padding : 0;
129
- const trendH = this._hasTrend() ? Math.round(56 * scale) : 0;
130
- const chartSize = Math.min(resolvedWidth - padding * 2, resolvedWidth - padding * 2);
131
- const totalHeight = headerH + chartSize + legendH + padding + trendH;
132
- this._wrapperEl.style.height = `${totalHeight}px`;
133
- const card = document.createElement('div');
134
- card.id = `${id}-card`;
135
- card.style.cssText = `background:${TOKENS.bg};border:1px solid ${TOKENS.border};border-radius:${Math.round(12 * scale)}px;padding:${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;overflow:hidden;`;
136
- this._wrapperEl.appendChild(card);
137
- if (title) {
138
- const t = document.createElement('div');
139
- t.style.cssText = `font-size:${titleSize}px;font-weight:600;color:${TOKENS.title};margin-bottom:2px;line-height:1.3;`;
140
- t.textContent = title;
141
- card.appendChild(t);
142
- }
143
- if (subtitle) {
144
- const s = document.createElement('div');
145
- s.style.cssText = `font-size:${subtitleSize}px;color:${TOKENS.muted};margin-bottom:${padding}px;line-height:1.3;`;
146
- s.textContent = subtitle;
147
- card.appendChild(s);
148
- }
149
- // SVG
150
- const svgNS = 'http://www.w3.org/2000/svg';
151
- const svgSize = chartSize;
152
- const svg = document.createElementNS(svgNS, 'svg');
153
- svg.setAttribute('width', '100%');
154
- svg.setAttribute('viewBox', `0 0 ${svgSize} ${svgSize}`);
155
- svg.style.cssText = `display:block;margin:0 auto;${shouldAnimate ? 'transform:scale(0);opacity:0;transition:transform 0.5s cubic-bezier(0.34,1.56,0.64,1),opacity 0.4s ease;' : ''}`;
156
- card.appendChild(svg);
157
- const cx = svgSize / 2;
158
- const cy = svgSize / 2;
159
- const outerR = svgSize / 2 - Math.round(20 * scale);
160
- const innerR = donut ? outerR * (1 - donutWidth) : 0;
161
- const padRad = (padAngle * Math.PI) / 180;
162
- let currentAngle = (startAngle * Math.PI) / 180;
163
- const slicePaths = [];
164
- values.forEach((v, i) => {
165
- const sliceAngle = (v.x / total) * Math.PI * 2;
166
- const startA = currentAngle + padRad / 2;
167
- const endA = currentAngle + sliceAngle - padRad / 2;
168
- const color = palette[i % palette.length];
169
- const x1 = cx + outerR * Math.cos(startA);
170
- const y1 = cy + outerR * Math.sin(startA);
171
- const x2 = cx + outerR * Math.cos(endA);
172
- const y2 = cy + outerR * Math.sin(endA);
173
- const largeArc = sliceAngle > Math.PI ? 1 : 0;
174
- let d;
175
- if (donut) {
176
- const ix1 = cx + innerR * Math.cos(startA);
177
- const iy1 = cy + innerR * Math.sin(startA);
178
- const ix2 = cx + innerR * Math.cos(endA);
179
- const iy2 = cy + innerR * Math.sin(endA);
180
- d = `M ${x1} ${y1} A ${outerR} ${outerR} 0 ${largeArc} 1 ${x2} ${y2} L ${ix2} ${iy2} A ${innerR} ${innerR} 0 ${largeArc} 0 ${ix1} ${iy1} Z`;
181
- }
182
- else {
183
- d = `M ${cx} ${cy} L ${x1} ${y1} A ${outerR} ${outerR} 0 ${largeArc} 1 ${x2} ${y2} Z`;
184
- }
185
- const path = document.createElementNS(svgNS, 'path');
186
- path.setAttribute('d', d);
187
- path.setAttribute('fill', color);
188
- path.style.cssText = `cursor:pointer;opacity:0.85;transition:opacity 0.15s ease,transform 0.15s ease;transform-origin:${cx}px ${cy}px;`;
189
- path.addEventListener('mouseenter', (e) => {
190
- path.style.opacity = '1';
191
- path.style.transform = 'scale(1.03)';
192
- const lbl = v.label || `#${i + 1}`;
193
- const pct = Math.round((v.x / total) * 1000) / 10;
194
- let html = `<div style="font-weight:600;margin-bottom:2px;">${lbl}</div>`;
195
- html += formatTooltipRow('Value', v.x, color);
196
- html += formatTooltipRow('Share', `${pct}%`);
197
- showTooltip(e, html);
198
- });
199
- path.addEventListener('mousemove', (e) => moveTooltip(e));
200
- path.addEventListener('mouseleave', () => {
201
- path.style.opacity = '0.85';
202
- path.style.transform = 'scale(1)';
203
- hideTooltip();
204
- });
205
- path.addEventListener('click', () => this._handleSliceClick(i));
206
- svg.appendChild(path);
207
- // Labels on slices
208
- if (showLabels) {
209
- const midA = startA + sliceAngle / 2;
210
- const labelR = donut ? (outerR + innerR) / 2 : outerR * 0.65;
211
- const lx = cx + labelR * Math.cos(midA);
212
- const ly = cy + labelR * Math.sin(midA);
213
- const pct = Math.round((v.x / total) * 100);
214
- if (pct > 5) {
215
- const nameText = document.createElementNS(svgNS, 'text');
216
- nameText.setAttribute('x', String(lx));
217
- nameText.setAttribute('y', String(ly - labelSize * 0.5));
218
- nameText.setAttribute('text-anchor', 'middle');
219
- nameText.setAttribute('dominant-baseline', 'central');
220
- nameText.setAttribute('font-size', String(labelSize));
221
- nameText.setAttribute('fill', '#fff');
222
- nameText.setAttribute('font-weight', '600');
223
- nameText.textContent = v.label || `#${i + 1}`;
224
- nameText.style.pointerEvents = 'none';
225
- svg.appendChild(nameText);
226
- const valText = document.createElementNS(svgNS, 'text');
227
- valText.setAttribute('x', String(lx));
228
- valText.setAttribute('y', String(ly + labelSize * 0.8));
229
- valText.setAttribute('text-anchor', 'middle');
230
- valText.setAttribute('dominant-baseline', 'central');
231
- valText.setAttribute('font-size', String(Math.max(8, labelSize - 1)));
232
- valText.setAttribute('fill', 'rgba(255,255,255,0.85)');
233
- valText.setAttribute('font-weight', '400');
234
- valText.textContent = showValues ? String(v.x) : `${pct}%`;
235
- valText.style.pointerEvents = 'none';
236
- svg.appendChild(valText);
237
- }
238
- else if (pct > 2) {
239
- const text = document.createElementNS(svgNS, 'text');
240
- text.setAttribute('x', String(lx));
241
- text.setAttribute('y', String(ly));
242
- text.setAttribute('text-anchor', 'middle');
243
- text.setAttribute('dominant-baseline', 'central');
244
- text.setAttribute('font-size', String(Math.max(7, labelSize - 2)));
245
- text.setAttribute('fill', '#fff');
246
- text.setAttribute('font-weight', '600');
247
- text.textContent = `${pct}%`;
248
- text.style.pointerEvents = 'none';
249
- svg.appendChild(text);
250
- }
251
- }
252
- currentAngle += sliceAngle;
253
- });
254
- // Inner label for donut
255
- if (donut && this._opts.innerLabel) {
256
- const text = document.createElementNS(svgNS, 'text');
257
- text.setAttribute('x', String(cx));
258
- text.setAttribute('y', String(cy));
259
- text.setAttribute('text-anchor', 'middle');
260
- text.setAttribute('dominant-baseline', 'central');
261
- text.setAttribute('font-size', String(Math.round(18 * scale)));
262
- text.setAttribute('fill', TOKENS.title);
263
- text.setAttribute('font-weight', '600');
264
- text.textContent = this._opts.innerLabel;
265
- svg.appendChild(text);
266
- }
267
- // Legend
268
- if (showLegend) {
269
- const legendDiv = document.createElement('div');
270
- legendDiv.style.cssText = `display:flex;flex-wrap:wrap;gap:${Math.round(8 * scale)}px ${Math.round(16 * scale)}px;padding-top:${padding}px;justify-content:center;`;
271
- values.forEach((v, i) => {
272
- const item = document.createElement('div');
273
- item.style.cssText = `display:flex;align-items:center;gap:4px;font-size:${labelSize}px;color:${TOKENS.muted};`;
274
- const dot = document.createElement('span');
275
- dot.style.cssText = `width:${Math.round(10 * scale)}px;height:${Math.round(10 * scale)}px;border-radius:50%;background:${palette[i % palette.length]};flex-shrink:0;`;
276
- item.appendChild(dot);
277
- const lbl = document.createElement('span');
278
- lbl.textContent = v.label || `#${i + 1}`;
279
- item.appendChild(lbl);
280
- legendDiv.appendChild(item);
281
- });
282
- card.appendChild(legendDiv);
283
- }
284
- // Trend footer
285
- this._renderTrend(card, scale, padding);
286
- // Single scale-up animation for the whole chart
287
- if (shouldAnimate) {
288
- this._hasAnimated = true;
289
- requestAnimationFrame(() => {
290
- svg.style.transform = 'scale(1)';
291
- svg.style.opacity = '1';
292
- });
293
- }
294
- }
295
- _renderTrend(card, scale, padding) {
296
- const { trendTitle, trendSubtitle, trendIcon, autoTrend } = this._opts;
297
- let title = trendTitle;
298
- let subtitle = trendSubtitle;
299
- let icon = trendIcon;
300
- if (autoTrend && !title) {
301
- const vals = this._values.map(v => v.x);
302
- const labels = this._values.map(v => v.label || '');
303
- const total = vals.reduce((s, v) => s + v, 0);
304
- const maxItem = this._values.reduce((a, b) => a.x > b.x ? a : b);
305
- const pct = Math.round((maxItem.x / total) * 100);
306
- title = `${maxItem.label || 'Top'} leads with ${pct}%`;
307
- subtitle = subtitle || `Total: ${total.toLocaleString()} across ${vals.length} categories`;
308
- icon = icon || '🥇';
309
- }
310
- if (!title && !subtitle)
311
- return;
312
- const fontSize = Math.max(11, Math.round(13 * scale));
313
- const subFontSize = Math.max(10, Math.round(11 * scale));
314
- const footer = document.createElement('div');
315
- 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;`;
316
- if (title) {
317
- const titleEl = document.createElement('div');
318
- titleEl.style.cssText = `font-size:${fontSize}px;font-weight:500;color:hsl(222,47%,11%);line-height:1.4;`;
319
- titleEl.textContent = `${title}${icon ? ' ' + icon : ''}`;
320
- footer.appendChild(titleEl);
321
- }
322
- if (subtitle) {
323
- const subEl = document.createElement('div');
324
- subEl.style.cssText = `font-size:${subFontSize}px;color:hsl(215,16%,47%);line-height:1.4;margin-top:1px;`;
325
- subEl.textContent = subtitle;
326
- footer.appendChild(subEl);
327
- }
328
- card.appendChild(footer);
329
- }
330
- // ═══════════════════════════════════════════════════════════
331
- // PUBLIC API
332
- // ═══════════════════════════════════════════════════════════
333
- render(target) {
334
- let parent = null;
335
- if (target && typeof target === 'object' && 'element' in target)
336
- parent = target.element;
337
- else if (target instanceof HTMLElement)
338
- parent = target;
339
- else if (typeof target === 'string')
340
- parent = document.getElementById(target) || document.querySelector(target);
341
- else
342
- parent = document.getElementById('app');
343
- if (!parent)
344
- return this;
345
- parent.appendChild(this._wrapperEl);
346
- const w = this._opts.responsive ? (this._wrapperEl.clientWidth || parent.clientWidth || this._opts.width || 500) : (this._opts.width || 500);
347
- this._buildChart(w);
348
- if (this._opts.responsive && typeof ResizeObserver !== 'undefined') {
349
- let t;
350
- let skipCount = 2; // skip initial observer fires
351
- const ro = new ResizeObserver(() => {
352
- if (skipCount > 0) {
353
- skipCount--;
354
- return;
355
- }
356
- clearTimeout(t);
357
- t = setTimeout(() => {
358
- const nw = this._wrapperEl.clientWidth;
359
- if (nw > 0)
360
- this._buildChart(nw);
361
- }, 200);
362
- });
363
- ro.observe(this._wrapperEl);
364
- this._resizeObserver = ro;
365
- }
366
- return this;
367
- }
368
- into(target) { return this.render(target); }
369
- on(event, fn) {
370
- if (!this._listeners[event])
371
- this._listeners[event] = [];
372
- this._listeners[event].push(fn);
373
- return this;
374
- }
375
- off(event, fn) {
376
- if (this._listeners[event])
377
- this._listeners[event] = this._listeners[event].filter(f => f !== fn);
378
- return this;
379
- }
380
- destroy() {
381
- if (this._resizeObserver)
382
- this._resizeObserver.disconnect();
383
- pageState.__unregister(this.id);
384
- this._wrapperEl.remove();
385
- }
386
- }
387
- // ═══════════════════════════════════════════════════════════
388
- // FACTORY
389
- // ═══════════════════════════════════════════════════════════
390
- export function pieChart(id, values, options = {}) {
391
- const chart = new PieChart(id, values, options);
392
- pageState.__register(chart);
393
- return chart;
394
- }
395
- export { PieChart };
396
- export default pieChart;
397
- //# sourceMappingURL=pieChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pieChart.js","sourceRoot":"","sources":["../../lib/components/pieChart.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- interface cOptions {
2
- id?: string;
3
- class?: string;
4
- style?: string;
5
- padding?: string;
6
- target?: string;
7
- [key: string]: any;
8
- }
9
- interface rOptions {
10
- id?: string;
11
- class?: string;
12
- style?: string;
13
- target?: string;
14
- [key: string]: any;
15
- }
16
- declare class Stack {
17
- private _element;
18
- opts: cOptions & rOptions;
19
- constructor(id?: string);
20
- get element(): HTMLElement;
21
- id(value: string): this;
22
- class(value: string): this;
23
- style(css: string): this;
24
- padding(value: string): this;
25
- target(value: string): this;
26
- getId(): string;
27
- getClass(): string;
28
- getStyle(): string;
29
- getPadding(): string;
30
- getTarget(): string;
31
- getElement(): HTMLElement;
32
- setId(val: string): this;
33
- setClass(val: string): this;
34
- setStyle(val: string): this;
35
- setPadding(val: string): this;
36
- setTarget(val: string): this;
37
- render(target?: string | HTMLElement | Stack): this;
38
- }
39
- export declare function r(height?: string, options?: rOptions): Stack;
40
- export declare function c(width: string, height?: string, options?: cOptions): Stack;
41
- export { Stack as stack };
42
- //# sourceMappingURL=stack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../lib/components/stack.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,UAAU,QAAQ;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,cAAM,KAAK;IACP,OAAO,CAAC,QAAQ,CAAc;IAC9B,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;gBAEd,EAAE,CAAC,EAAE,MAAM;IAMvB,IAAI,OAAO,IAAI,WAAW,CAEzB;IAMD,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,KAAK,IAAI,MAAM;IACf,QAAQ,IAAI,MAAM;IAClB,QAAQ,IAAI,MAAM;IAClB,UAAU,IAAI,MAAM;IACpB,SAAS,IAAI,MAAM;IACnB,UAAU,IAAI,WAAW;IAEzB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAC3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAE5B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK;CAY/C;AAED,wBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAc5D;AAED,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAgB3E;AAED,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC"}
@@ -1,109 +0,0 @@
1
- import generateId from "../utils/idgen.js";
2
- class Stack {
3
- constructor(id) {
4
- this._element = document.createElement('div');
5
- this._element.id = id || generateId('stk');
6
- this.opts = {};
7
- }
8
- get element() {
9
- return this._element;
10
- }
11
- // ═══════════════════════════════════════════════════════════
12
- // FLUENT BUILDER API
13
- // ═══════════════════════════════════════════════════════════
14
- id(value) {
15
- this.opts.id = value;
16
- this._element.id = value;
17
- return this;
18
- }
19
- class(value) {
20
- this.opts.class = value;
21
- this._element.className = value;
22
- return this;
23
- }
24
- style(css) {
25
- this.opts.style = css;
26
- const existing = this._element.getAttribute('style') || '';
27
- this._element.setAttribute('style', existing + ';' + css);
28
- return this;
29
- }
30
- padding(value) {
31
- this.opts.padding = value;
32
- this._element.style.padding = value;
33
- return this;
34
- }
35
- target(value) {
36
- this.opts.target = value;
37
- return this;
38
- }
39
- // ═══════════════════════════════════════════════════════════
40
- // GETTERS / SETTERS (delegators)
41
- // ═══════════════════════════════════════════════════════════
42
- getId() { return this.opts.id ?? this._element.id; }
43
- getClass() { return this.opts.class ?? ''; }
44
- getStyle() { return this.opts.style ?? ''; }
45
- getPadding() { return this.opts.padding ?? ''; }
46
- getTarget() { return this.opts.target ?? ''; }
47
- getElement() { return this._element; }
48
- setId(val) { return this.id(val); }
49
- setClass(val) { return this.class(val); }
50
- setStyle(val) { return this.style(val); }
51
- setPadding(val) { return this.padding(val); }
52
- setTarget(val) { return this.target(val); }
53
- render(target) {
54
- let parent;
55
- if (target instanceof Stack) {
56
- parent = target.element;
57
- }
58
- else if (typeof target === 'string') {
59
- parent = document.getElementById(target);
60
- }
61
- else {
62
- parent = target || document.getElementById('app');
63
- }
64
- parent?.appendChild(this._element);
65
- return this;
66
- }
67
- }
68
- export function r(height, options) {
69
- const s = new Stack(options?.id);
70
- const el = s.element;
71
- el.style.width = '100%';
72
- el.style.overflow = 'hidden'; // clearfix for floated children
73
- if (height)
74
- el.style.height = height;
75
- if (options?.class)
76
- el.className = options.class;
77
- if (options?.style)
78
- el.setAttribute('style', el.getAttribute('style') + ';' + options.style);
79
- if (options?.target) {
80
- s.render(options.target);
81
- }
82
- else {
83
- s.render();
84
- }
85
- return s;
86
- }
87
- export function c(width, height, options) {
88
- const s = new Stack(options?.id);
89
- const el = s.element;
90
- el.style.boxSizing = 'border-box';
91
- el.style.float = 'left';
92
- el.style.width = width;
93
- el.style.height = height || 'inherit';
94
- if (options?.padding)
95
- el.style.padding = options.padding;
96
- if (options?.class)
97
- el.className = options.class;
98
- if (options?.style)
99
- el.setAttribute('style', el.getAttribute('style') + ';' + options.style);
100
- if (options?.target) {
101
- s.render(options.target);
102
- }
103
- else {
104
- s.render();
105
- }
106
- return s;
107
- }
108
- export { Stack as stack };
109
- //# sourceMappingURL=stack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../lib/components/stack.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function devtools(show?: boolean): void;
2
- export default devtools;
3
- //# sourceMappingURL=devtools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../lib/devtools/devtools.ts"],"names":[],"mappings":"AAoJA,wBAAgB,QAAQ,CAAC,IAAI,GAAE,OAAc,GAAG,IAAI,CA0CnD;AAED,eAAe,QAAQ,CAAC"}