@sentropic/design-system-svelte 0.33.0 → 0.34.20

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 (101) hide show
  1. package/dist/AppHeader.svelte +159 -1
  2. package/dist/AppHeader.svelte.d.ts +18 -1
  3. package/dist/AppHeader.svelte.d.ts.map +1 -1
  4. package/dist/ArcDiagramChart.svelte +380 -0
  5. package/dist/ArcDiagramChart.svelte.d.ts +43 -0
  6. package/dist/ArcDiagramChart.svelte.d.ts.map +1 -0
  7. package/dist/AreaRangeChart.svelte +487 -0
  8. package/dist/AreaRangeChart.svelte.d.ts +38 -0
  9. package/dist/AreaRangeChart.svelte.d.ts.map +1 -0
  10. package/dist/AreaSplineRangeChart.svelte +478 -0
  11. package/dist/AreaSplineRangeChart.svelte.d.ts +37 -0
  12. package/dist/AreaSplineRangeChart.svelte.d.ts.map +1 -0
  13. package/dist/BellCurveChart.svelte +487 -0
  14. package/dist/BellCurveChart.svelte.d.ts +40 -0
  15. package/dist/BellCurveChart.svelte.d.ts.map +1 -0
  16. package/dist/Calendar.svelte +11 -0
  17. package/dist/ChatThread.svelte +32 -1
  18. package/dist/ChatThread.svelte.d.ts +14 -0
  19. package/dist/ChatThread.svelte.d.ts.map +1 -1
  20. package/dist/ColumnPyramidChart.svelte +332 -0
  21. package/dist/ColumnPyramidChart.svelte.d.ts +35 -0
  22. package/dist/ColumnPyramidChart.svelte.d.ts.map +1 -0
  23. package/dist/ColumnRangeChart.svelte +432 -0
  24. package/dist/ColumnRangeChart.svelte.d.ts +42 -0
  25. package/dist/ColumnRangeChart.svelte.d.ts.map +1 -0
  26. package/dist/Combobox.svelte +3 -0
  27. package/dist/ContentSwitcher.svelte +1 -1
  28. package/dist/DataTable.svelte.d.ts +1 -1
  29. package/dist/DatePicker.svelte +3 -0
  30. package/dist/DependencyWheelChart.svelte +413 -0
  31. package/dist/DependencyWheelChart.svelte.d.ts +42 -0
  32. package/dist/DependencyWheelChart.svelte.d.ts.map +1 -0
  33. package/dist/DumbbellChart.svelte +403 -0
  34. package/dist/DumbbellChart.svelte.d.ts +44 -0
  35. package/dist/DumbbellChart.svelte.d.ts.map +1 -0
  36. package/dist/ErrorBarChart.svelte +428 -0
  37. package/dist/ErrorBarChart.svelte.d.ts +40 -0
  38. package/dist/ErrorBarChart.svelte.d.ts.map +1 -0
  39. package/dist/GanttChart.svelte +410 -0
  40. package/dist/GanttChart.svelte.d.ts +39 -0
  41. package/dist/GanttChart.svelte.d.ts.map +1 -0
  42. package/dist/HLCChart.svelte +330 -0
  43. package/dist/HLCChart.svelte.d.ts +32 -0
  44. package/dist/HLCChart.svelte.d.ts.map +1 -0
  45. package/dist/HeikinAshiChart.svelte +365 -0
  46. package/dist/HeikinAshiChart.svelte.d.ts +37 -0
  47. package/dist/HeikinAshiChart.svelte.d.ts.map +1 -0
  48. package/dist/HollowCandlestickChart.svelte +357 -0
  49. package/dist/HollowCandlestickChart.svelte.d.ts +34 -0
  50. package/dist/HollowCandlestickChart.svelte.d.ts.map +1 -0
  51. package/dist/Input.svelte +3 -0
  52. package/dist/ItemChart.svelte +389 -0
  53. package/dist/ItemChart.svelte.d.ts +67 -0
  54. package/dist/ItemChart.svelte.d.ts.map +1 -0
  55. package/dist/Link.svelte +12 -1
  56. package/dist/Link.svelte.d.ts +4 -0
  57. package/dist/Link.svelte.d.ts.map +1 -1
  58. package/dist/LollipopChart.svelte +1 -1
  59. package/dist/MultiSelect.svelte +3 -0
  60. package/dist/NumberInput.svelte +3 -0
  61. package/dist/OHLCChart.svelte +343 -0
  62. package/dist/OHLCChart.svelte.d.ts +33 -0
  63. package/dist/OHLCChart.svelte.d.ts.map +1 -0
  64. package/dist/OrganizationChart.svelte +284 -0
  65. package/dist/OrganizationChart.svelte.d.ts +19 -0
  66. package/dist/OrganizationChart.svelte.d.ts.map +1 -0
  67. package/dist/PasswordInput.svelte +3 -0
  68. package/dist/PolygonChart.svelte +189 -0
  69. package/dist/PolygonChart.svelte.d.ts +17 -0
  70. package/dist/PolygonChart.svelte.d.ts.map +1 -0
  71. package/dist/Search.svelte +7 -5
  72. package/dist/Select.svelte +3 -0
  73. package/dist/StreamgraphChart.svelte +283 -0
  74. package/dist/StreamgraphChart.svelte.d.ts +23 -0
  75. package/dist/StreamgraphChart.svelte.d.ts.map +1 -0
  76. package/dist/StreamingMessage.svelte +44 -2
  77. package/dist/StreamingMessage.svelte.d.ts +18 -1
  78. package/dist/StreamingMessage.svelte.d.ts.map +1 -1
  79. package/dist/TileMapChart.svelte +314 -0
  80. package/dist/TileMapChart.svelte.d.ts +45 -0
  81. package/dist/TileMapChart.svelte.d.ts.map +1 -0
  82. package/dist/TimePicker.svelte +3 -0
  83. package/dist/TimelineChart.svelte +362 -0
  84. package/dist/TimelineChart.svelte.d.ts +22 -0
  85. package/dist/TimelineChart.svelte.d.ts.map +1 -0
  86. package/dist/TreegraphChart.svelte +281 -0
  87. package/dist/TreegraphChart.svelte.d.ts +19 -0
  88. package/dist/TreegraphChart.svelte.d.ts.map +1 -0
  89. package/dist/VariablePieChart.svelte +313 -0
  90. package/dist/VariablePieChart.svelte.d.ts +52 -0
  91. package/dist/VariablePieChart.svelte.d.ts.map +1 -0
  92. package/dist/VennChart.svelte +348 -0
  93. package/dist/VennChart.svelte.d.ts +72 -0
  94. package/dist/VennChart.svelte.d.ts.map +1 -0
  95. package/dist/WordCloudChart.svelte +279 -0
  96. package/dist/WordCloudChart.svelte.d.ts +18 -0
  97. package/dist/WordCloudChart.svelte.d.ts.map +1 -0
  98. package/dist/index.d.ts +48 -0
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +24 -0
  101. package/package.json +5 -3
@@ -0,0 +1,413 @@
1
+ <script lang="ts" module>
2
+ /**
3
+ * DependencyWheelChart - API canonique (référence Svelte, React/Vue doivent s'aligner)
4
+ *
5
+ * Roue de dépendances : des nœuds sont répartis sur un cercle, chaque nœud
6
+ * occupant un arc proportionnel à la somme des poids de ses liens (entrants +
7
+ * sortants). Chaque lien pondéré est un ruban (path SVG passant par le centre)
8
+ * dont l'épaisseur croît avec le poids, coloré par le nœud SOURCE.
9
+ *
10
+ * Props obligatoires :
11
+ * data DependencyWheelChartLink[] - liens {from, to, weight}
12
+ * from/to = identifiants de nœuds (string) ;
13
+ * un nœud est créé pour chaque identifiant cité.
14
+ * label string - aria-label du graphique
15
+ *
16
+ * Props optionnelles :
17
+ * labels? Record<string,string> - libellés d'affichage par identifiant de
18
+ * nœud (sinon l'identifiant est utilisé)
19
+ * width number (défaut 480) - largeur du viewBox en px
20
+ * height number (défaut 240) - hauteur du viewBox en px
21
+ * class string - classe CSS supplémentaire
22
+ *
23
+ * Garde : seuls les liens dont `weight` est fini et > 0 sont pris en compte.
24
+ * Les liens NaN / Infinity / négatifs sont ignorés silencieusement (pas de crash).
25
+ */
26
+ export type DependencyWheelChartTone =
27
+ | "category1"
28
+ | "category2"
29
+ | "category3"
30
+ | "category4"
31
+ | "category5"
32
+ | "category6"
33
+ | "category7"
34
+ | "category8";
35
+
36
+ export type DependencyWheelChartLink = {
37
+ from: string;
38
+ to: string;
39
+ weight: number;
40
+ };
41
+ </script>
42
+
43
+ <script lang="ts">
44
+ import ChartDataList from "./ChartDataList.svelte";
45
+ import GraphLegend from "./GraphLegend.svelte";
46
+ import { contrastTextForTone } from "./chartContrast.js";
47
+
48
+ type DependencyWheelChartProps = {
49
+ data: DependencyWheelChartLink[];
50
+ label: string;
51
+ labels?: Record<string, string>;
52
+ width?: number;
53
+ height?: number;
54
+ class?: string;
55
+ };
56
+
57
+ let {
58
+ data,
59
+ label,
60
+ labels,
61
+ width = 480,
62
+ height = 240,
63
+ class: className
64
+ }: DependencyWheelChartProps = $props();
65
+
66
+ const TONES = [
67
+ "category1",
68
+ "category2",
69
+ "category3",
70
+ "category4",
71
+ "category5",
72
+ "category6",
73
+ "category7",
74
+ "category8"
75
+ ] as const;
76
+
77
+ const GAP = 0.04; // espace angulaire entre arcs (rad)
78
+ const ARC_WIDTH = 12; // épaisseur de l'anneau d'arcs
79
+
80
+ function magnitude(value: number): number {
81
+ return Number.isFinite(value) && value > 0 ? value : 0;
82
+ }
83
+
84
+ function displayLabel(id: string): string {
85
+ return labels?.[id] ?? id;
86
+ }
87
+
88
+ function polar(cx: number, cy: number, radius: number, angle: number) {
89
+ return { x: cx + radius * Math.cos(angle), y: cy + radius * Math.sin(angle) };
90
+ }
91
+
92
+ function arcPath(cx: number, cy: number, inner: number, outer: number, start: number, end: number): string {
93
+ const large = end - start > Math.PI ? 1 : 0;
94
+ const o0 = polar(cx, cy, outer, start);
95
+ const o1 = polar(cx, cy, outer, end);
96
+ const i1 = polar(cx, cy, inner, end);
97
+ const i0 = polar(cx, cy, inner, start);
98
+ return `M ${o0.x} ${o0.y} A ${outer} ${outer} 0 ${large} 1 ${o1.x} ${o1.y} L ${i1.x} ${i1.y} A ${inner} ${inner} 0 ${large} 0 ${i0.x} ${i0.y} Z`;
99
+ }
100
+
101
+ let hoveredLinkIndex: number | null = $state(null);
102
+
103
+ const layout = $derived.by(() => {
104
+ const cx = width / 2;
105
+ const cy = height / 2;
106
+ const outer = Math.max(Math.min(width, height) / 2 - 6, 1);
107
+ const inner = Math.max(outer - ARC_WIDTH, 1);
108
+ const ribbonRadius = Math.max(inner - 2, 0);
109
+
110
+ // Liens valides + ordre d'apparition des nœuds (stable).
111
+ const links = data
112
+ .map((link, index) => ({ link, index, weight: magnitude(link.weight) }))
113
+ .filter((entry) => entry.weight > 0);
114
+
115
+ const order: string[] = [];
116
+ const total = new Map<string, number>();
117
+ for (const { link, weight } of links) {
118
+ for (const id of [link.from, link.to]) {
119
+ if (!total.has(id)) {
120
+ total.set(id, 0);
121
+ order.push(id);
122
+ }
123
+ }
124
+ total.set(link.from, (total.get(link.from) ?? 0) + weight);
125
+ total.set(link.to, (total.get(link.to) ?? 0) + weight);
126
+ }
127
+
128
+ const grandTotal = order.reduce((sum, id) => sum + (total.get(id) ?? 0), 0);
129
+ if (order.length === 0 || grandTotal <= 0) {
130
+ return { cx, cy, inner, outer, arcs: [], ribbons: [], legend: [] };
131
+ }
132
+
133
+ // Répartition angulaire : part proportionnelle - gap par nœud.
134
+ const totalGap = GAP * order.length;
135
+ const usable = Math.max(Math.PI * 2 - totalGap, 0.0001);
136
+ type ArcInfo = {
137
+ id: string;
138
+ tone: DependencyWheelChartTone;
139
+ cursor: number; // avance pour positionner les rubans
140
+ };
141
+ const arcMap = new Map<string, ArcInfo>();
142
+ const arcs: Array<{
143
+ id: string;
144
+ tone: DependencyWheelChartTone;
145
+ value: number;
146
+ span: number;
147
+ path: string;
148
+ labelX: number;
149
+ labelY: number;
150
+ textColor: string;
151
+ }> = [];
152
+
153
+ let angle = -Math.PI / 2;
154
+ order.forEach((id, index) => {
155
+ const span = (usable * (total.get(id) ?? 0)) / grandTotal;
156
+ const start = angle + GAP / 2;
157
+ const end = start + span;
158
+ angle = end + GAP / 2;
159
+ const tone = TONES[index % TONES.length];
160
+ const mid = (start + end) / 2;
161
+ arcMap.set(id, { id, tone, cursor: start });
162
+ const labelRadius = (inner + outer) / 2;
163
+ const labelPoint = polar(cx, cy, labelRadius, mid);
164
+ arcs.push({
165
+ id,
166
+ tone,
167
+ value: total.get(id) ?? 0,
168
+ span,
169
+ path: arcPath(cx, cy, inner, outer, start, end),
170
+ labelX: labelPoint.x,
171
+ labelY: labelPoint.y,
172
+ textColor: contrastTextForTone(tone)
173
+ });
174
+ });
175
+
176
+ const maxWeight = Math.max(1, ...links.map((entry) => entry.weight));
177
+ const ribbons = links.map(({ link, weight, index }) => {
178
+ const source = arcMap.get(link.from)!;
179
+ const target = arcMap.get(link.to)!;
180
+ const sourceSpan = (usable * weight) / grandTotal;
181
+ const targetSpan = (usable * weight) / grandTotal;
182
+ const s0 = source.cursor;
183
+ const s1 = source.cursor + sourceSpan;
184
+ source.cursor = s1;
185
+ const t0 = target.cursor;
186
+ const t1 = target.cursor + targetSpan;
187
+ target.cursor = t1;
188
+
189
+ const ps0 = polar(cx, cy, ribbonRadius, s0);
190
+ const ps1 = polar(cx, cy, ribbonRadius, s1);
191
+ const pt0 = polar(cx, cy, ribbonRadius, t0);
192
+ const pt1 = polar(cx, cy, ribbonRadius, t1);
193
+
194
+ // Ruban : deux courbes quadratiques passant par le centre.
195
+ const path =
196
+ `M ${ps0.x} ${ps0.y} ` +
197
+ `Q ${cx} ${cy} ${pt1.x} ${pt1.y} ` +
198
+ `A ${ribbonRadius} ${ribbonRadius} 0 0 1 ${pt0.x} ${pt0.y} ` +
199
+ `Q ${cx} ${cy} ${ps1.x} ${ps1.y} ` +
200
+ `A ${ribbonRadius} ${ribbonRadius} 0 0 0 ${ps0.x} ${ps0.y} Z`;
201
+
202
+ return {
203
+ index,
204
+ from: link.from,
205
+ to: link.to,
206
+ weight,
207
+ tone: source.tone,
208
+ strokeWidth: Math.max(1, (weight / maxWeight) * 4),
209
+ path,
210
+ midX: cx,
211
+ midY: cy
212
+ };
213
+ });
214
+
215
+ const legend = arcs.map((arc) => ({
216
+ label: displayLabel(arc.id),
217
+ shape: "circle" as const,
218
+ tone: arc.tone
219
+ }));
220
+
221
+ return { cx, cy, inner, outer, arcs, ribbons, legend };
222
+ });
223
+
224
+ const dataValueItems = $derived(
225
+ data
226
+ .filter((link) => magnitude(link.weight) > 0)
227
+ .map((link) => `${displayLabel(link.from)} -> ${displayLabel(link.to)}: ${link.weight}`)
228
+ );
229
+
230
+ function handleVisualPointerMove(event: PointerEvent) {
231
+ const target = event.target;
232
+ if (!(target instanceof Element)) {
233
+ hoveredLinkIndex = null;
234
+ return;
235
+ }
236
+ const index = Number(target.getAttribute("data-link-index"));
237
+ hoveredLinkIndex = Number.isInteger(index) ? index : null;
238
+ }
239
+
240
+ const classes = () => ["st-dependencyWheelChart", className].filter(Boolean).join(" ");
241
+ </script>
242
+
243
+ <div class={classes()}>
244
+ <div
245
+ class="st-dependencyWheelChart__visual"
246
+ role="img"
247
+ aria-label={label}
248
+ onpointermove={handleVisualPointerMove}
249
+ onpointerleave={() => (hoveredLinkIndex = null)}
250
+ >
251
+ <svg
252
+ viewBox="0 0 {width} {height}"
253
+ preserveAspectRatio="xMidYMid meet"
254
+ width="100%"
255
+ height="100%"
256
+ focusable="false"
257
+ aria-hidden="true"
258
+ >
259
+ <g class="st-dependencyWheelChart__ribbons">
260
+ {#each layout.ribbons as ribbon (ribbon.index)}
261
+ <path
262
+ class="st-dependencyWheelChart__ribbon st-dependencyWheelChart__ribbon--{ribbon.tone}"
263
+ class:st-dependencyWheelChart__ribbon--dim={hoveredLinkIndex !== null && hoveredLinkIndex !== ribbon.index}
264
+ d={ribbon.path}
265
+ stroke-width={ribbon.strokeWidth}
266
+ data-link-index={ribbon.index}
267
+ />
268
+ {/each}
269
+ </g>
270
+
271
+ <g class="st-dependencyWheelChart__arcs">
272
+ {#each layout.arcs as arc (arc.id)}
273
+ <path
274
+ class="st-dependencyWheelChart__arc st-dependencyWheelChart__arc--{arc.tone}"
275
+ d={arc.path}
276
+ />
277
+ {#if arc.span > 0.34}
278
+ <text
279
+ class="st-dependencyWheelChart__arcLabel"
280
+ x={arc.labelX}
281
+ y={arc.labelY}
282
+ text-anchor="middle"
283
+ dominant-baseline="middle"
284
+ fill={arc.textColor}
285
+ >
286
+ {displayLabel(arc.id)}
287
+ </text>
288
+ {/if}
289
+ {/each}
290
+ </g>
291
+ </svg>
292
+
293
+ {#if layout.legend.length > 0}
294
+ <GraphLegend class="st-dependencyWheelChart__legend" entries={layout.legend} />
295
+ {/if}
296
+ </div>
297
+
298
+ <ChartDataList {label} items={dataValueItems} />
299
+
300
+ {#if hoveredLinkIndex !== null && layout.ribbons.find((r) => r.index === hoveredLinkIndex)}
301
+ {@const ribbon = layout.ribbons.find((r) => r.index === hoveredLinkIndex)!}
302
+ <div
303
+ class="st-dependencyWheelChart__tooltip"
304
+ role="presentation"
305
+ style="left: {(ribbon.midX / width) * 100}%; top: {(ribbon.midY / height) * 100}%"
306
+ >
307
+ <span class="st-dependencyWheelChart__tooltipLabel">{displayLabel(ribbon.from)} -> {displayLabel(ribbon.to)}</span>
308
+ <span class="st-dependencyWheelChart__tooltipValue">{ribbon.weight}</span>
309
+ </div>
310
+ {/if}
311
+ </div>
312
+
313
+ <style>
314
+ .st-dependencyWheelChart {
315
+ color: var(--st-semantic-text-secondary);
316
+ display: block;
317
+ font-family: inherit;
318
+ max-width: 100%;
319
+ position: relative;
320
+ width: 100%;
321
+ }
322
+
323
+ .st-dependencyWheelChart svg,
324
+ .st-dependencyWheelChart__visual {
325
+ display: block;
326
+ overflow: visible;
327
+ }
328
+
329
+ .st-dependencyWheelChart__visual {
330
+ position: relative;
331
+ }
332
+
333
+ .st-dependencyWheelChart__legend {
334
+ position: absolute;
335
+ right: 0;
336
+ top: 0;
337
+ }
338
+
339
+ .st-dependencyWheelChart__ribbon {
340
+ cursor: pointer;
341
+ fill-opacity: 0.4;
342
+ stroke-opacity: 0.55;
343
+ transition: opacity 120ms ease;
344
+ }
345
+
346
+ .st-dependencyWheelChart__ribbon:hover {
347
+ fill-opacity: 0.62;
348
+ }
349
+
350
+ .st-dependencyWheelChart__ribbon--dim {
351
+ opacity: 0.18;
352
+ }
353
+
354
+ @media (prefers-reduced-motion: reduce) {
355
+ .st-dependencyWheelChart__ribbon {
356
+ transition: none;
357
+ }
358
+ }
359
+
360
+ .st-dependencyWheelChart__arc {
361
+ stroke: var(--st-semantic-surface-default, Canvas);
362
+ stroke-width: 1;
363
+ }
364
+
365
+ .st-dependencyWheelChart__arc--category1,
366
+ .st-dependencyWheelChart__ribbon--category1 { fill: var(--st-semantic-data-category1); stroke: var(--st-semantic-data-category1); }
367
+ .st-dependencyWheelChart__arc--category2,
368
+ .st-dependencyWheelChart__ribbon--category2 { fill: var(--st-semantic-data-category2); stroke: var(--st-semantic-data-category2); }
369
+ .st-dependencyWheelChart__arc--category3,
370
+ .st-dependencyWheelChart__ribbon--category3 { fill: var(--st-semantic-data-category3); stroke: var(--st-semantic-data-category3); }
371
+ .st-dependencyWheelChart__arc--category4,
372
+ .st-dependencyWheelChart__ribbon--category4 { fill: var(--st-semantic-data-category4); stroke: var(--st-semantic-data-category4); }
373
+ .st-dependencyWheelChart__arc--category5,
374
+ .st-dependencyWheelChart__ribbon--category5 { fill: var(--st-semantic-data-category5); stroke: var(--st-semantic-data-category5); }
375
+ .st-dependencyWheelChart__arc--category6,
376
+ .st-dependencyWheelChart__ribbon--category6 { fill: var(--st-semantic-data-category6); stroke: var(--st-semantic-data-category6); }
377
+ .st-dependencyWheelChart__arc--category7,
378
+ .st-dependencyWheelChart__ribbon--category7 { fill: var(--st-semantic-data-category7); stroke: var(--st-semantic-data-category7); }
379
+ .st-dependencyWheelChart__arc--category8,
380
+ .st-dependencyWheelChart__ribbon--category8 { fill: var(--st-semantic-data-category8); stroke: var(--st-semantic-data-category8); }
381
+
382
+ .st-dependencyWheelChart__arcLabel {
383
+ /* fill calculé par contrastTextForTone() en inline - pas de couleur fixe */
384
+ font-size: 0.6rem;
385
+ font-weight: 600;
386
+ pointer-events: none;
387
+ }
388
+
389
+ .st-dependencyWheelChart__tooltip {
390
+ background: var(--st-semantic-surface-inverse);
391
+ border-radius: var(--st-radius-sm, 0.25rem);
392
+ color: var(--st-semantic-text-inverse);
393
+ display: inline-flex;
394
+ flex-direction: column;
395
+ font-size: 0.75rem;
396
+ gap: 0.125rem;
397
+ line-height: 1.2;
398
+ padding: 0.375rem 0.5rem;
399
+ pointer-events: none;
400
+ position: absolute;
401
+ transform: translate(-50%, -115%);
402
+ white-space: nowrap;
403
+ z-index: 1;
404
+ }
405
+
406
+ .st-dependencyWheelChart__tooltipLabel {
407
+ font-weight: 600;
408
+ }
409
+
410
+ .st-dependencyWheelChart__tooltipValue {
411
+ opacity: 0.85;
412
+ }
413
+ </style>
@@ -0,0 +1,42 @@
1
+ /**
2
+ * DependencyWheelChart - API canonique (référence Svelte, React/Vue doivent s'aligner)
3
+ *
4
+ * Roue de dépendances : des nœuds sont répartis sur un cercle, chaque nœud
5
+ * occupant un arc proportionnel à la somme des poids de ses liens (entrants +
6
+ * sortants). Chaque lien pondéré est un ruban (path SVG passant par le centre)
7
+ * dont l'épaisseur croît avec le poids, coloré par le nœud SOURCE.
8
+ *
9
+ * Props obligatoires :
10
+ * data DependencyWheelChartLink[] - liens {from, to, weight}
11
+ * from/to = identifiants de nœuds (string) ;
12
+ * un nœud est créé pour chaque identifiant cité.
13
+ * label string - aria-label du graphique
14
+ *
15
+ * Props optionnelles :
16
+ * labels? Record<string,string> - libellés d'affichage par identifiant de
17
+ * nœud (sinon l'identifiant est utilisé)
18
+ * width number (défaut 480) - largeur du viewBox en px
19
+ * height number (défaut 240) - hauteur du viewBox en px
20
+ * class string - classe CSS supplémentaire
21
+ *
22
+ * Garde : seuls les liens dont `weight` est fini et > 0 sont pris en compte.
23
+ * Les liens NaN / Infinity / négatifs sont ignorés silencieusement (pas de crash).
24
+ */
25
+ export type DependencyWheelChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
26
+ export type DependencyWheelChartLink = {
27
+ from: string;
28
+ to: string;
29
+ weight: number;
30
+ };
31
+ type DependencyWheelChartProps = {
32
+ data: DependencyWheelChartLink[];
33
+ label: string;
34
+ labels?: Record<string, string>;
35
+ width?: number;
36
+ height?: number;
37
+ class?: string;
38
+ };
39
+ declare const DependencyWheelChart: import("svelte").Component<DependencyWheelChartProps, {}, "">;
40
+ type DependencyWheelChart = ReturnType<typeof DependencyWheelChart>;
41
+ export default DependencyWheelChart;
42
+ //# sourceMappingURL=DependencyWheelChart.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependencyWheelChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/DependencyWheelChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAQF,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,wBAAwB,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA4OJ,QAAA,MAAM,oBAAoB,+DAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}