allotaxonometer-ui 0.1.3 → 0.1.4

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/dist/index.js CHANGED
@@ -1,23 +1,74 @@
1
1
  import 'svelte/internal/disclose-version';
2
2
  import * as $ from 'svelte/internal/client';
3
3
  import * as d3 from 'd3';
4
- import { map, extent, InternSet, range, rollup, scaleLinear, scaleBand, rgb, interpolateInferno, scaleOrdinal, max, scaleLog } from 'd3';
4
+ import { map, extent, InternSet, range, rollup, scaleLinear, scaleBand, rgb, interpolateInferno, scaleOrdinal } from 'd3';
5
5
  import { descending, sum, group, extent as extent$1 } from 'd3-array';
6
6
 
7
- var root_1$7 = $.from_svg(`<g class="xtick"><line x1="0" x2="0" y1="0" y2="6" stroke="hsla(212, 10%, 53%, 1)"></line></g><g class="tick-text"><text font-size="10" dx="13" dy="13"> </text></g>`, 1);
8
- var root$8 = $.from_svg(`<g class="axis x"><!><g class="xlab svelte-1y8xk6i"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">more →</text><text dy="75" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">frequent</text><text dy="60" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">← less</text><text dy="75" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">frequent</text></g></g>`);
7
+ const colors = {
8
+ darkgrey: "rgb(140, 140, 140)",
9
+ darkergrey: "rgb(89, 89, 89)"};
10
+
11
+ const fonts = {
12
+ family: '"EB Garamond", "Garamond", "Century Schoolbook L", "URW Bookman L", "Bookman Old Style", "Times", serif',
13
+ sizes: {
14
+ sm: "12px",
15
+ lg: "16px"}
16
+ };
17
+
18
+ // Style builder function
19
+ function style(props) {
20
+ return Object.entries(props)
21
+ .map(([key, value]) => `${key.replace(/([A-Z])/g, '-$1').toLowerCase()}: ${value}`)
22
+ .join('; ');
23
+ }
24
+
25
+ // Axis styles
26
+ const axisStyles = {
27
+ label: () => style({
28
+ fontFamily: fonts.family,
29
+ fontSize: fonts.sizes.lg,
30
+ fill: colors.darkergrey,
31
+ textAnchor: "middle"
32
+ }),
33
+
34
+ tickLabel: () => style({
35
+ fontFamily: fonts.family,
36
+ fontSize: fonts.sizes.sm,
37
+ fill: colors.darkergrey,
38
+ }),
39
+
40
+ helperText: () => style({
41
+ fontFamily: fonts.family,
42
+ fontSize: fonts.sizes.sm,
43
+ fill: colors.darkgrey,
44
+ textAnchor: "middle",
45
+ opacity: "0.8"
46
+ }),
47
+
48
+ tickLine: () => style({
49
+ stroke: colors.darkgrey,
50
+ strokeWidth: "0.5"
51
+ })
52
+ };
53
+
54
+ var root_1$7 = $.from_svg(`<g><line x1="0" x2="0" y1="0" y2="6"></line></g><g><text dx="5" dy="13" text-anchor="start"> </text></g>`, 1);
55
+ var root$8 = $.from_svg(`<g class="axis x"><!><g class="xlab"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60">more →</text><text dy="75">frequent</text><text dy="60">← less</text><text dy="75">frequent</text></g></g>`);
9
56
 
10
57
  function AxisX($$anchor, $$props) {
11
58
  $.push($$props, true);
12
59
 
13
- let logFormat10 = $$props.scale.tickFormat();
14
- let xTicks = $$props.scale.ticks();
60
+ let logFormat10 = $.derived(() => $$props.scale.tickFormat());
61
+ let xTicks = $.derived(() => $$props.scale.ticks().filter((t) => t >= 1 && Number.isInteger(Math.log10(t))));
15
62
  var g = root$8();
16
63
  var node = $.child(g);
17
64
 
18
- $.each(node, 17, () => xTicks, $.index, ($$anchor, tick) => {
65
+ $.each(node, 17, () => $.get(xTicks), $.index, ($$anchor, tick) => {
19
66
  var fragment = root_1$7();
20
67
  var g_1 = $.first_child(fragment);
68
+ var line = $.child(g_1);
69
+
70
+ $.reset(g_1);
71
+
21
72
  var g_2 = $.sibling(g_1);
22
73
  var text = $.child(g_2);
23
74
  var text_1 = $.child(text, true);
@@ -26,15 +77,19 @@ function AxisX($$anchor, $$props) {
26
77
  $.reset(g_2);
27
78
 
28
79
  $.template_effect(
29
- ($0, $1, $2) => {
80
+ ($0, $1, $2, $3, $4) => {
30
81
  $.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, 0)`);
31
- $.set_attribute(g_2, 'transform', `translate(${$1 ?? ''}, 0) scale(-1,1) rotate(45)`);
32
- $.set_text(text_1, $2);
82
+ $.set_style(line, $1);
83
+ $.set_attribute(g_2, 'transform', `translate(${$2 ?? ''}, 0) scale(-1,1) rotate(45)`);
84
+ $.set_style(text, $3);
85
+ $.set_text(text_1, $4);
33
86
  },
34
87
  [
35
88
  () => $$props.scale($.get(tick)),
89
+ () => axisStyles.tickLine(),
36
90
  () => $$props.scale($.get(tick)),
37
- () => logFormat10($.get(tick))
91
+ () => axisStyles.tickLabel(),
92
+ () => $.get(logFormat10)($.get(tick))
38
93
  ]
39
94
  );
40
95
 
@@ -61,35 +116,63 @@ function AxisX($$anchor, $$props) {
61
116
  $.reset(g_3);
62
117
  $.reset(g);
63
118
 
64
- $.template_effect(() => {
65
- $.set_attribute(g, 'transform', `translate(0, ${$$props.height ?? ''})`);
66
- $.set_attribute(g_3, 'transform', `scale(-1,1) translate(-${$$props.height ?? ''}, 0)`);
67
- $.set_attribute(text_2, 'x', $$props.height / 2);
68
- $.set_attribute(text_3, 'x', $$props.height / 2);
69
- $.set_attribute(text_4, 'x', $$props.height / 2);
70
- $.set_text(text_5, $$props.title[1]);
71
- $.set_attribute(text_6, 'x', $$props.height - 40);
72
- $.set_attribute(text_7, 'x', $$props.height - 40);
73
- });
119
+ $.template_effect(
120
+ ($0, $1, $2, $3, $4, $5, $6) => {
121
+ $.set_attribute(g, 'transform', `translate(0, ${$$props.innerHeight ?? ''})`);
122
+ $.set_attribute(text_2, 'x', $$props.innerHeight / 2);
123
+ $.set_attribute(text_2, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
124
+ $.set_style(text_2, $0);
125
+ $.set_attribute(text_3, 'x', $$props.innerHeight / 2);
126
+ $.set_attribute(text_3, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
127
+ $.set_style(text_3, $1);
128
+ $.set_attribute(text_4, 'x', $$props.innerHeight / 2);
129
+ $.set_attribute(text_4, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
130
+ $.set_style(text_4, $2);
131
+ $.set_text(text_5, $$props.title[1]);
132
+ $.set_attribute(text_6, 'x', $$props.innerHeight - 40);
133
+ $.set_attribute(text_6, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
134
+ $.set_style(text_6, $3);
135
+ $.set_attribute(text_7, 'x', $$props.innerHeight - 40);
136
+ $.set_attribute(text_7, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
137
+ $.set_style(text_7, $4);
138
+ $.set_attribute(text_8, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
139
+ $.set_style(text_8, $5);
140
+ $.set_attribute(text_9, 'transform', `scale(-1,1) translate(-${$$props.innerHeight ?? ''}, 0)`);
141
+ $.set_style(text_9, $6);
142
+ },
143
+ [
144
+ () => axisStyles.label(),
145
+ () => axisStyles.label(),
146
+ () => axisStyles.label(),
147
+ () => axisStyles.helperText(),
148
+ () => axisStyles.helperText(),
149
+ () => axisStyles.helperText(),
150
+ () => axisStyles.helperText()
151
+ ]
152
+ );
74
153
 
75
154
  $.append($$anchor, g);
76
155
  $.pop();
77
156
  }
78
157
 
79
- var root_1$6 = $.from_svg(`<g class="ytick"><line x1="0" x2="-6" y1="0" y2="0" stroke="hsla(212, 10%, 53%, 1)"></line></g><g class="tick-text"><text font-size="10" dx="-23" dy="10"> </text></g>`, 1);
80
- var root$7 = $.from_svg(`<g class="axis y"><!><g class="ylab svelte-1y8visx" transform="rotate(90)"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">more →</text><text dy="75" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">frequent</text><text dy="60" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">← less</text><text dy="75" fill="hsla(212, 10%, 53%, 1)" opacity="0.7">frequent</text></g></g>`);
158
+ var root_1$6 = $.from_svg(`<g><line x1="0" x2="-6" y1="0" y2="0"></line></g><g><text dx="-5" dy="13" text-anchor="end"> </text></g>`, 1);
159
+ var root$7 = $.from_svg(`<g class="axis y"><!><g class="ylab" transform="rotate(90)"><text dy="45">Rank r</text><text dy="63">for</text><text dy="80"> </text><text dy="60">less →</text><text dy="75">frequent</text><text dy="60">← more</text><text dy="75">frequent</text></g></g>`);
81
160
 
82
161
  function AxisY($$anchor, $$props) {
83
162
  $.push($$props, true);
84
163
 
85
- let logFormat10 = $$props.scale.tickFormat();
86
- let yTicks = $.derived(() => $$props.scale.ticks());
164
+ let logFormat10 = $.derived(() => $$props.scale.tickFormat());
165
+ let yTicks = $.derived(() => $$props.scale.ticks().filter((t) => t >= 1 && Number.isInteger(Math.log10(t))));
87
166
  var g = root$7();
88
167
  var node = $.child(g);
89
168
 
90
169
  $.each(node, 17, () => $.get(yTicks), $.index, ($$anchor, tick) => {
91
170
  var fragment = root_1$6();
92
171
  var g_1 = $.first_child(fragment);
172
+ var line = $.child(g_1);
173
+
174
+ $.reset(g_1);
175
+
93
176
  var g_2 = $.sibling(g_1);
94
177
  var text = $.child(g_2);
95
178
  var text_1 = $.child(text, true);
@@ -98,15 +181,19 @@ function AxisY($$anchor, $$props) {
98
181
  $.reset(g_2);
99
182
 
100
183
  $.template_effect(
101
- ($0, $1, $2) => {
184
+ ($0, $1, $2, $3, $4) => {
102
185
  $.set_attribute(g_1, 'transform', `translate(0, ${$0 ?? ''})`);
103
- $.set_attribute(g_2, 'transform', `translate(0, ${$1 ?? ''}) rotate(45)`);
104
- $.set_text(text_1, $2);
186
+ $.set_style(line, $1);
187
+ $.set_attribute(g_2, 'transform', `translate(0, ${$2 ?? ''}) rotate(45)`);
188
+ $.set_style(text, $3);
189
+ $.set_text(text_1, $4);
105
190
  },
106
191
  [
107
192
  () => $$props.scale($.get(tick)),
193
+ () => axisStyles.tickLine(),
108
194
  () => $$props.scale($.get(tick)),
109
- () => logFormat10($.get(tick))
195
+ () => axisStyles.tickLabel(),
196
+ () => $.get(logFormat10)($.get(tick))
110
197
  ]
111
198
  );
112
199
 
@@ -133,15 +220,33 @@ function AxisY($$anchor, $$props) {
133
220
  $.reset(g_3);
134
221
  $.reset(g);
135
222
 
136
- $.template_effect(() => {
137
- $.set_attribute(g, 'transform', `translate(${$$props.height ?? ''}, 0) scale(-1, 1)`);
138
- $.set_attribute(text_2, 'x', $$props.height / 2);
139
- $.set_attribute(text_3, 'x', $$props.height / 2);
140
- $.set_attribute(text_4, 'x', $$props.height / 2);
141
- $.set_text(text_5, $$props.title[0]);
142
- $.set_attribute(text_6, 'x', $$props.height - 40);
143
- $.set_attribute(text_7, 'x', $$props.height - 40);
144
- });
223
+ $.template_effect(
224
+ ($0, $1, $2, $3, $4, $5, $6) => {
225
+ $.set_attribute(g, 'transform', `translate(${$$props.innerHeight ?? ''}, 0) scale(-1, 1)`);
226
+ $.set_attribute(text_2, 'x', $$props.innerHeight / 2);
227
+ $.set_style(text_2, $0);
228
+ $.set_attribute(text_3, 'x', $$props.innerHeight / 2);
229
+ $.set_style(text_3, $1);
230
+ $.set_attribute(text_4, 'x', $$props.innerHeight / 2);
231
+ $.set_style(text_4, $2);
232
+ $.set_text(text_5, $$props.title[0]);
233
+ $.set_attribute(text_6, 'x', $$props.innerHeight - 40);
234
+ $.set_style(text_6, $3);
235
+ $.set_attribute(text_7, 'x', $$props.innerHeight - 40);
236
+ $.set_style(text_7, $4);
237
+ $.set_style(text_8, $5);
238
+ $.set_style(text_9, $6);
239
+ },
240
+ [
241
+ () => axisStyles.label(),
242
+ () => axisStyles.label(),
243
+ () => axisStyles.label(),
244
+ () => axisStyles.helperText(),
245
+ () => axisStyles.helperText(),
246
+ () => axisStyles.helperText(),
247
+ () => axisStyles.helperText()
248
+ ]
249
+ );
145
250
 
146
251
  $.append($$anchor, g);
147
252
  $.pop();
@@ -298,9 +403,63 @@ function Contours($$anchor, $$props) {
298
403
  $.pop();
299
404
  }
300
405
 
301
- var root_1$3 = $.from_svg(`<rect stroke="black"></rect>`);
302
- var root_2$3 = $.from_svg(`<g class="diamond-lab"><text dy="20" font-size="10"> </text></g>`);
303
- var root$4 = $.from_svg(`<g class="diamond-chart"><polygon fill="#89CFF0" fill-opacity="0.2" stroke="black" stroke-width="0.5"></polygon><polygon fill="grey" fill-opacity="0.2" stroke="black" stroke-width="0.5"></polygon><!><!><!><!><!><!></g>`);
406
+ // Helper: convert [0–1, 0–1, 0–1] → "rgb(R, G, B)"
407
+ function rgbArrayToCss(rgbArray) {
408
+ const [r, g, b] = rgbArray.map(v => Math.round(v * 255));
409
+ return `rgb(${r}, ${g}, ${b})`;
410
+ }
411
+
412
+ // // imported from matlab version. Normalized RGB color definitions
413
+ const rawColors = {
414
+ blue: [43, 103, 198].map(v => v / 255),
415
+ red: [198, 43, 103].map(v => v / 255),
416
+
417
+ paleblue: [195, 230, 243].map(v => v / 255),
418
+ palered: [255, 204, 204].map(v => v / 255),
419
+
420
+ lightergrey: [1, 1, 1].map(v => v * 0.96),
421
+ lightishgrey: [1, 1, 1].map(v => v * 0.93),
422
+ lightgrey: [1, 1, 1].map(v => v * 0.90),
423
+
424
+ lightgreyer: [1, 1, 1].map(v => v * 0.85),
425
+ lightgreyish: [1, 1, 1].map(v => v * 0.80),
426
+
427
+ grey: [1, 1, 1].map(v => v * 0.75),
428
+ darkgrey: [1, 1, 1].map(v => v * 0.55),
429
+ darkergrey: [1, 1, 1].map(v => v * 0.35),
430
+ verydarkgrey: [1, 1, 1].map(v => v * 0.15),
431
+ superdarkgrey: [1, 1, 1].map(v => v * 0.10),
432
+ reallyverdarkgrey: [1, 1, 1].map(v => v * 0.05),
433
+
434
+ orange: [255, 116, 0].map(v => v / 255)
435
+ };
436
+
437
+ // Create CSS strings for each
438
+ const cssColors = {};
439
+ for (const [key, rgb] of Object.entries(rawColors)) {
440
+ cssColors[key] = rgbArrayToCss(rgb);
441
+ }
442
+
443
+ // Export both raw RGB arrays and CSS strings
444
+ const alloColors = {
445
+ css: cssColors // e.g., colors.css.blue → "rgb(43, 103, 198)"
446
+ };
447
+
448
+ // System font stack in order of preference
449
+ const alloFonts = `"EB Garamond", "Garamond", "Century Schoolbook L", "URW Bookman L", "Bookman Old Style", "Times", serif`;
450
+
451
+ function updateTooltipPosition(event, tooltipVisible, tooltipX, tooltipY) {
452
+ if ($.get(tooltipVisible)) {
453
+ $.set(tooltipX, event.clientX + 15);
454
+ $.set(tooltipY, event.clientY - 10);
455
+ }
456
+ }
457
+
458
+ var root_1$3 = $.from_svg(`<rect class="diamond-cell"></rect>`);
459
+ var root_2$3 = $.from_svg(`<rect></rect>`);
460
+ var root_3$1 = $.from_svg(`<text dy="5"> </text>`);
461
+ var root_4$1 = $.from_html(`<div><!></div>`);
462
+ var root$4 = $.from_html(`<div style="position: relative;"><svg xmlns="http://www.w3.org/2000/svg" style="overflow: visible; display: block;"><polygon class="diamond-background grey-triangle" fill-opacity="0.8" stroke="black" stroke-width="0.5"></polygon><polygon class="diamond-background blue-triangle" fill-opacity="0.8" stroke="black" stroke-width="0.5"></polygon><!><!><!><!><!><!><line x1="0" y1="0"></line><!></svg> <!></div>`);
304
463
 
305
464
  function Diamond($$anchor, $$props) {
306
465
  $.push($$props, true);
@@ -312,12 +471,11 @@ function Diamond($$anchor, $$props) {
312
471
  // Extract data from dat object
313
472
  let diamond_dat = $.derived(() => $$props.dat.counts);
314
473
  $.derived(() => $$props.dat.deltas);
315
- // Calculate derived dimensions (matching D3 version)
474
+ // Calculate derived dimensions (matching D3 version exactly)
316
475
  let innerHeight = $.derived(() => DiamondHeight() - marginInner());
317
476
  let diamondHeight = $.derived(() => $.get(innerHeight) - marginDiamond());
318
477
 
319
478
  function get_relevant_types(diamond_dat) {
320
- // Use the logic from your D3 version instead
321
479
  const ncells = d3.max(diamond_dat, (d) => d.x1);
322
480
  const cumbin = d3.range(0, ncells, 1.5);
323
481
  const relevant_types = [];
@@ -330,7 +488,6 @@ function Diamond($$anchor, $$props) {
330
488
  const cos_dists = filtered_dat.map((d) => d.cos_dist);
331
489
  const max_dist = cos_dists.reduce((a, b) => Math.max(a, b));
332
490
  const max_dist_idx = cos_dists.indexOf(max_dist);
333
- // SSR-safe random selection
334
491
  const types = filtered_dat[max_dist_idx]['types'].split(",");
335
492
  const name = types[Math.floor(Math.random() * types.length)];
336
493
 
@@ -346,7 +503,7 @@ function Diamond($$anchor, $$props) {
346
503
  return Array.from(arr1, (x) => arr2.indexOf(x) !== -1);
347
504
  }
348
505
 
349
- // Wrangling data - Fixed variable references
506
+ // Wrangling data
350
507
  let relevant_types = $.derived(() => get_relevant_types($.get(diamond_dat)));
351
508
  let ncells = $.derived(() => d3.max($.get(diamond_dat), (d) => d.x1));
352
509
  let max_rank = $.derived(() => d3.max($.get(diamond_dat), (d) => d.rank_L[1]));
@@ -359,7 +516,7 @@ function Diamond($$anchor, $$props) {
359
516
  let wxy = $.derived(() => d3.scaleBand().domain(d3.range($.get(ncells))).range([0, $.get(innerHeight)]));
360
517
  let color_scale = d3.scaleSequentialLog().domain([$.get(rounded_max_rank), 1]).interpolator(d3.interpolateInferno);
361
518
 
362
- // Background triangles (using innerHeight like D3 version)
519
+ // Background triangles
363
520
  let blue_triangle = $.derived(() => [
364
521
  [
365
522
  $.get(innerHeight),
@@ -382,13 +539,39 @@ function Diamond($$anchor, $$props) {
382
539
  return rin(relevant_types, d.types.split(",")).some((x) => x === true);
383
540
  }
384
541
 
385
- var g = root$4();
386
- var polygon = $.child(g);
542
+ // TOOLTIP
543
+ let tooltipVisible = $.state(false);
544
+ let tooltipContent = $.state('');
545
+ let tooltipX = $.state(0);
546
+ let tooltipY = $.state(0);
547
+
548
+ function showTooltip(event, d) {
549
+ if (d.value === 0) return;
550
+
551
+ const tokens = d.types.split(",");
552
+ const displayTokens = tokens.length < 50 ? tokens.slice(0, 8).join(", ") : tokens.slice(0, 8).join(", ") + " ...";
553
+
554
+ $.set(tooltipContent, `
555
+ <div style="color: rgb(89, 89, 89); font-size: 11px;">Types: ${displayTokens}</div>
556
+ `);
557
+
558
+ $.set(tooltipX, event.clientX + 15);
559
+ $.set(tooltipY, event.clientY - 10);
560
+ $.set(tooltipVisible, true);
561
+ }
562
+
563
+ function hideTooltip() {
564
+ $.set(tooltipVisible, false);
565
+ }
566
+
567
+ var div = root$4();
568
+ var svg = $.child(div);
569
+ var polygon = $.child(svg);
387
570
  var polygon_1 = $.sibling(polygon);
388
571
  var node = $.sibling(polygon_1);
389
572
 
390
573
  AxisX(node, {
391
- get height() {
574
+ get innerHeight() {
392
575
  return $.get(innerHeight);
393
576
  },
394
577
  get scale() {
@@ -402,7 +585,7 @@ function Diamond($$anchor, $$props) {
402
585
  var node_1 = $.sibling(node);
403
586
 
404
587
  AxisY(node_1, {
405
- get height() {
588
+ get innerHeight() {
406
589
  return $.get(innerHeight);
407
590
  },
408
591
  get scale() {
@@ -442,16 +625,13 @@ function Diamond($$anchor, $$props) {
442
625
  $.set_attribute(rect, 'width', $2);
443
626
  $.set_attribute(rect, 'height', $3);
444
627
  $.set_attribute(rect, 'fill', $4);
445
- $.set_attribute(rect, 'opacity', $.get(d).value === 0 ? 0 : 1);
446
- $.set_attribute(rect, 'stroke-width', $.get(d).value === 0 ? 0 : 0.1);
447
- $.set_attribute(rect, 'stroke-opacity', $.get(d).value === 0 ? 0 : 0.9);
448
628
  },
449
629
  [
450
630
  () => $.get(xy)($.get(d).x1),
451
631
  () => $.get(xy)($.get(d).y1),
452
632
  () => $.get(xy).bandwidth(),
453
633
  () => $.get(xy).bandwidth(),
454
- () => color_scale($.get(d).value)
634
+ () => $.get(d).value === 0 ? "none" : color_scale($.get(d).value)
455
635
  ]
456
636
  );
457
637
 
@@ -460,44 +640,76 @@ function Diamond($$anchor, $$props) {
460
640
 
461
641
  var node_4 = $.sibling(node_3);
462
642
 
463
- $.each(node_4, 17, () => $.get(diamond_dat).filter((d) => filter_labs(d, $.get(relevant_types))), $.index, ($$anchor, d) => {
464
- var g_1 = root_2$3();
465
- var text = $.child(g_1);
643
+ $.each(node_4, 17, () => $.get(diamond_dat), $.index, ($$anchor, d) => {
644
+ var rect_1 = root_2$3();
645
+
646
+ rect_1.__mousemove = [
647
+ updateTooltipPosition,
648
+ tooltipVisible,
649
+ tooltipX,
650
+ tooltipY
651
+ ];
652
+
653
+ $.template_effect(
654
+ ($0, $1, $2, $3) => {
655
+ $.set_attribute(rect_1, 'x', $0);
656
+ $.set_attribute(rect_1, 'y', $1);
657
+ $.set_attribute(rect_1, 'width', $2);
658
+ $.set_attribute(rect_1, 'height', $3);
659
+ $.set_attribute(rect_1, 'fill', $.get(d).value > 0 ? 'rgba(255,255,255,0.001)' : 'none');
660
+ $.set_attribute(rect_1, 'stroke', $.get(d).value > 0 ? alloColors.css.darkergrey : 'none');
661
+ $.set_attribute(rect_1, 'stroke-width', $.get(d).value > 0 ? '1.18' : '0');
662
+ $.set_attribute(rect_1, 'stroke-opacity', $.get(d).value > 0 ? '0.4' : '0');
663
+ $.set_style(rect_1, `cursor: ${$.get(d).value > 0 ? 'pointer' : 'default'};`);
664
+ },
665
+ [
666
+ () => $.get(xy)($.get(d).x1),
667
+ () => $.get(xy)($.get(d).y1),
668
+ () => $.get(xy).bandwidth(),
669
+ () => $.get(xy).bandwidth()
670
+ ]
671
+ );
672
+
673
+ $.event('mouseenter', rect_1, (e) => showTooltip(e, $.get(d)));
674
+ $.event('mouseleave', rect_1, hideTooltip);
675
+ $.append($$anchor, rect_1);
676
+ });
677
+
678
+ var node_5 = $.sibling(node_4);
679
+
680
+ $.each(node_5, 17, () => $.get(diamond_dat).filter((d) => filter_labs(d, $.get(relevant_types))), $.index, ($$anchor, d) => {
681
+ var text = root_3$1();
466
682
  var text_1 = $.child(text, true);
467
683
 
468
684
  $.reset(text);
469
- $.reset(g_1);
470
685
 
471
686
  $.template_effect(
472
687
  ($0, $1, $2, $3, $4, $5) => {
473
- $.set_attribute(g_1, 'transform', `
474
- scale(1,-1)
475
- rotate(-90)
476
- rotate(-45, ${$0 ?? ''}, ${$1 ?? ''})
477
- translate(${$2 ?? ''}, 0)
478
- `);
479
-
480
- $.set_attribute(text, 'x', $3);
481
- $.set_attribute(text, 'y', $4);
688
+ $.set_attribute(text, 'x', $0);
689
+ $.set_attribute(text, 'y', $1);
690
+ $.set_attribute(text, 'dx', $.get(d).x1 - $.get(d).y1 <= 0 ? 5 : -5);
482
691
  $.set_attribute(text, 'text-anchor', $.get(d).x1 - $.get(d).y1 <= 0 ? "start" : "end");
692
+ $.set_attribute(text, 'transform', `scale(1,-1) rotate(-90) rotate(-45, ${$2 ?? ''}, ${$3 ?? ''}) translate(${$4 ?? ''}, 0)`);
693
+ $.set_style(text, `font-family: ${alloFonts}; font-size: 12px; fill: ${alloColors.css.darkergrey ?? ''};`);
483
694
  $.set_text(text_1, $5);
484
695
  },
485
696
  [
697
+ () => $.get(xy)($.get(d).x1),
698
+ () => Number.isInteger($.get(d).coord_on_diag) ? $.get(xy)($.get(d).y1) : $.get(xy)($.get(d).y1) - 1,
486
699
  () => $.get(xy)($.get(d).x1),
487
700
  () => $.get(xy)($.get(d).y1),
488
701
  () => $.get(d).which_sys === "right" ? $.get(xy)(Math.sqrt($.get(d).cos_dist)) * 1.5 : -$.get(xy)(Math.sqrt($.get(d).cos_dist)) * 1.5,
489
- () => $.get(xy)($.get(d).x1),
490
- () => Number.isInteger($.get(d).coord_on_diag) ? $.get(xy)($.get(d).y1) : $.get(xy)($.get(d).y1) - 1,
491
702
  () => $.get(d).types.split(",")[0]
492
703
  ]
493
704
  );
494
705
 
495
- $.append($$anchor, g_1);
706
+ $.append($$anchor, text);
496
707
  });
497
708
 
498
- var node_5 = $.sibling(node_4);
709
+ var line = $.sibling(node_5);
710
+ var node_6 = $.sibling(line);
499
711
 
500
- Contours(node_5, {
712
+ Contours(node_6, {
501
713
  get alpha() {
502
714
  return $$props.alpha;
503
715
  },
@@ -512,57 +724,111 @@ function Diamond($$anchor, $$props) {
512
724
  }
513
725
  });
514
726
 
515
- $.reset(g);
727
+ $.reset(svg);
728
+
729
+ var node_7 = $.sibling(svg, 2);
730
+
731
+ {
732
+ var consequent = ($$anchor) => {
733
+ var div_1 = root_4$1();
734
+ var node_8 = $.child(div_1);
735
+
736
+ $.html(node_8, () => $.get(tooltipContent));
737
+ $.reset(div_1);
738
+
739
+ $.template_effect(() => $.set_style(div_1, `
740
+ position: fixed;
741
+ left: ${$.get(tooltipX) ?? ''}px;
742
+ top: ${$.get(tooltipY) ?? ''}px;
743
+ background: white;
744
+ border: 1px solid rgb(200, 200, 200);
745
+ border-radius: 6px;
746
+ padding: 10px 12px;
747
+ font-family: 'EB Garamond', serif;
748
+ font-size: 12px;
749
+ line-height: 1.5;
750
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
751
+ pointer-events: none;
752
+ z-index: 1000;
753
+ max-width: 280px;
754
+ `));
755
+
756
+ $.append($$anchor, div_1);
757
+ };
758
+
759
+ $.if(node_7, ($$render) => {
760
+ if ($.get(tooltipVisible)) $$render(consequent);
761
+ });
762
+ }
763
+
764
+ $.reset(div);
516
765
 
517
766
  $.template_effect(() => {
518
- $.set_attribute(g, 'transform', `translate(360, 0) scale (-1,1) rotate(45) translate(${$.get(innerHeight) / 4}, ${$.get(innerHeight) / 4})`);
519
- $.set_attribute(polygon, 'points', $.get(blue_triangle));
520
- $.set_attribute(polygon_1, 'points', $.get(grey_triangle));
767
+ $.set_attribute(svg, 'width', DiamondHeight());
768
+ $.set_attribute(svg, 'height', DiamondHeight());
769
+ $.set_attribute(svg, 'viewBox', `0 0 ${DiamondHeight() ?? ''} ${DiamondHeight() ?? ''}`);
770
+ $.set_attribute(svg, 'transform', `scale(-1,1) rotate(45) translate(${$.get(innerHeight) / 4}, ${$.get(innerHeight) / 4})`);
771
+ $.set_attribute(polygon, 'points', $.get(grey_triangle));
772
+ $.set_attribute(polygon, 'fill', alloColors.css.lightgrey);
773
+ $.set_attribute(polygon_1, 'points', $.get(blue_triangle));
774
+ $.set_attribute(polygon_1, 'fill', alloColors.css.paleblue);
775
+ $.set_attribute(line, 'x2', $.get(innerHeight) - 7);
776
+ $.set_attribute(line, 'y2', $.get(innerHeight) - 7);
777
+ $.set_style(line, `stroke: ${alloColors.css.verydarkgrey ?? ''}; stroke-width: 0.5;`);
521
778
  });
522
779
 
523
- $.append($$anchor, g);
780
+ $.append($$anchor, div);
524
781
  $.pop();
525
782
  }
526
783
 
527
- var root_1$2 = $.from_svg(`<g class="tick"><line y1="0" stroke="currentColor" stroke-opacity="0.1"></line><text y="-12" font-size="0.8em" text-anchor="middle"> </text></g>`);
528
- var root_2$2 = $.from_svg(`<rect></rect>`);
529
- var root_3$2 = $.from_svg(`<text dy="0.35em" font-size="0.7em"> </text>`);
530
- var root$3 = $.from_svg(`<g class="wordshift-container svelte-48jn79"><g class="axis x"><!><text y="-22" fill="currentColor" text-anchor="center" font-size="0.9em"> </text></g><!><g class="y-axis"></g></g>`);
784
+ $.delegate(['mousemove']);
785
+
786
+ var root_1$2 = $.from_svg(`<line y1="0" y2="6" style="stroke: currentColor; stroke-width: 1;"></line><line class="wordshift-grid-line" y1="0"></line><text y="-12" text-anchor="middle"> </text>`, 1);
787
+ var root_2$2 = $.from_svg(`<rect class="wordshift-bar" style="mix-blend-mode: multiply;"></rect>`);
788
+ var root_4 = $.from_svg(`<text dy="0.32em"> </text>`);
789
+ var root_3 = $.from_svg(`<g class="wordshift-label-group"><text dy="0.32em"> </text><!></g>`);
790
+ var root$3 = $.from_svg(`<svg style="overflow: visible; display: block;"><g class="wordshift-container"><g class="wordshift-axis x"><!><text y="-35" text-anchor="middle"> </text></g><!><g class="wordshift-y-axis"></g></g></svg>`);
531
791
 
532
792
  function Wordshift($$anchor, $$props) {
533
793
  $.push($$props, true);
534
794
 
535
795
  let x = $.prop($$props, 'x', 3, (d) => d.metric),
536
796
  y = $.prop($$props, 'y', 3, (d) => d.type),
537
- marginTop = $.prop($$props, 'marginTop', 3, 30),
538
- marginRight = $.prop($$props, 'marginRight', 3, 40),
539
- marginBottom = $.prop($$props, 'marginBottom', 3, 10),
540
- marginLeft = $.prop($$props, 'marginLeft', 3, 40),
541
- width = $.prop($$props, 'width', 3, 300);
542
- $.prop($$props, 'height', 3, 680);
543
- let xFormat = $.prop($$props, 'xFormat', 3, '%'),
797
+ marginTop = $.prop($$props, 'marginTop', 3, 50),
798
+ marginRight = $.prop($$props, 'marginRight', 3, 60),
799
+ marginBottom = $.prop($$props, 'marginBottom', 3, 40),
800
+ marginLeft = $.prop($$props, 'marginLeft', 3, 70),
801
+ width = $.prop($$props, 'width', 3, 360),
802
+ xFormat = $.prop($$props, 'xFormat', 3, '%'),
544
803
  xLabel = $.prop($$props, 'xLabel', 3, '← System 1 · Divergence contribution · System 2 →'),
545
- yPadding = $.prop($$props, 'yPadding', 3, 0.2),
546
- colors = $.prop($$props, 'colors', 19, () => ['lightgrey', 'lightblue']);
804
+ yPadding = $.prop($$props, 'yPadding', 3, 0),
805
+ colors = $.prop($$props, 'colors', 19, () => [
806
+ alloColors.css.lightgrey,
807
+ alloColors.css.paleblue
808
+ ]),
809
+ barHeightFactor = $.prop($$props, 'barHeightFactor', 3, 0.7);
547
810
 
548
- // Compute values (matching D3 version)
811
+ // Compute values (matching D3 version exactly)
549
812
  let X = $.derived(() => d3.map($$props.barData, x()));
550
813
  let Y = $.derived(() => d3.map($$props.barData, y()));
551
814
  // Compute domains
552
815
  let computedXDomain = $.derived(() => $$props.xDomain || d3.extent($.get(X)));
553
816
  let yDomain = $.derived(() => new d3.InternSet($.get(Y)));
554
-
555
- // Compute dimensions
556
- let xRange = $.derived(() => [
557
- marginLeft(),
558
- width() - marginRight()
559
- ]);
560
-
561
- let computedHeight = $.derived(() => Math.ceil(($.get(yDomain).size + yPadding()) * 25) + marginTop() + marginBottom());
817
+ // Match D3 dimensions exactly
818
+ const xAxisYOffset = 10; // Space below x-axis (from original)
819
+ const bandHeight = 18; // Fixed band height (from original)
820
+ const shiftSvgBy = 12; // shift svg up to align with system titles
821
+ const barYOffset = 10; // Additional offset just for bars
822
+ let compactHeight = $.derived(() => $.get(yDomain).size * bandHeight);
823
+ let innerWidth = $.derived(() => width() - marginLeft() - marginRight());
824
+ let innerHeight = $.derived(() => $.get(compactHeight) + xAxisYOffset);
825
+ let computedHeight = $.derived(() => $.get(innerHeight) + marginTop() + marginBottom());
826
+ // Compute ranges exactly like D3
827
+ let xRange = $.derived(() => [0, $.get(innerWidth)]);
562
828
 
563
829
  let yRange = $.derived(() => [
564
- marginTop(),
565
- $.get(computedHeight) - marginBottom()
830
+ xAxisYOffset + barYOffset,
831
+ xAxisYOffset + barYOffset + $.get(compactHeight)
566
832
  ]);
567
833
 
568
834
  // Filter indices and create lookup
@@ -573,31 +839,61 @@ function Wordshift($$anchor, $$props) {
573
839
  let yScale = $.derived(() => d3.scaleBand().domain($.get(yDomain)).range($.get(yRange)).padding(yPadding()));
574
840
  let format = $.derived(() => $.get(xScale).tickFormat(100, xFormat()));
575
841
  let xTicks = $.derived(() => $.get(xScale).ticks(width() / 80));
576
- // Position the chart (matching your current positioning)
577
- let chartX = $.derived(() => $$props.DashboardWidth - width() + marginLeft());
578
- let chartY = $.derived(marginTop);
579
- var g = root$3();
842
+
843
+ // Helper function matching D3 logic exactly
844
+ function parseLabelData(label) {
845
+ const splitIndex = label.indexOf(' ');
846
+ let name_y, numbers_y;
847
+
848
+ if (splitIndex === -1) {
849
+ name_y = label;
850
+ numbers_y = "";
851
+ } else {
852
+ name_y = label.slice(0, splitIndex);
853
+ numbers_y = label.slice(splitIndex + 1).trim();
854
+
855
+ // Strip first and last characters from numbers_y if possible
856
+ if (numbers_y.length > 2) {
857
+ numbers_y = numbers_y.slice(1, numbers_y.length - 1);
858
+ }
859
+ }
860
+
861
+ return { name_y, numbers_y };
862
+ }
863
+
864
+ let finalHeight = $.derived(() => $$props.height || $.get(computedHeight));
865
+ var svg = root$3();
866
+ var g = $.child(svg);
580
867
  var g_1 = $.child(g);
868
+
869
+ $.set_attribute(g_1, 'transform', 'translate(0, 10)');
870
+
581
871
  var node = $.child(g_1);
582
872
 
583
873
  $.each(node, 17, () => $.get(xTicks), $.index, ($$anchor, tick) => {
584
- var g_2 = root_1$2();
585
- var line = $.child(g_2);
586
- var text = $.sibling(line);
874
+ var fragment = root_1$2();
875
+ var line = $.first_child(fragment);
876
+ var line_1 = $.sibling(line);
877
+ var text = $.sibling(line_1);
587
878
  var text_1 = $.child(text, true);
588
879
 
589
880
  $.reset(text);
590
- $.reset(g_2);
591
881
 
592
882
  $.template_effect(
593
- ($0, $1, $2, $3) => {
883
+ ($0, $1, $2, $3, $4, $5) => {
594
884
  $.set_attribute(line, 'x1', $0);
595
885
  $.set_attribute(line, 'x2', $1);
596
- $.set_attribute(line, 'y2', $.get(computedHeight) - marginTop() - marginBottom());
597
- $.set_attribute(text, 'x', $2);
598
- $.set_text(text_1, $3);
886
+ $.set_attribute(line_1, 'x1', $2);
887
+ $.set_attribute(line_1, 'x2', $3);
888
+ $.set_attribute(line_1, 'y2', $.get(innerHeight) - xAxisYOffset + barYOffset);
889
+ $.set_style(line_1, $.get(tick) === 0 ? `stroke: ${alloColors.css.verydarkgrey}; stroke-width: 1; stroke-opacity: 0.8;` : `stroke: currentColor; stroke-opacity: 0.1;`);
890
+ $.set_attribute(text, 'x', $4);
891
+ $.set_style(text, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
892
+ $.set_text(text_1, $5);
599
893
  },
600
894
  [
895
+ () => $.get(xScale)($.get(tick)),
896
+ () => $.get(xScale)($.get(tick)),
601
897
  () => $.get(xScale)($.get(tick)),
602
898
  () => $.get(xScale)($.get(tick)),
603
899
  () => $.get(xScale)($.get(tick)),
@@ -605,7 +901,7 @@ function Wordshift($$anchor, $$props) {
605
901
  ]
606
902
  );
607
903
 
608
- $.append($$anchor, g_2);
904
+ $.append($$anchor, fragment);
609
905
  });
610
906
 
611
907
  var text_2 = $.sibling(node);
@@ -629,50 +925,82 @@ function Wordshift($$anchor, $$props) {
629
925
  },
630
926
  [
631
927
  () => Math.min($.get(xScale)(0), $.get(xScale)($.get(X)[$.get(i)])),
632
- () => $.get(yScale)($.get(Y)[$.get(i)]),
928
+ () => $.get(yScale)($.get(Y)[$.get(i)]) + ($.get(yScale).bandwidth() - $.get(yScale).bandwidth() * barHeightFactor()) / 2,
633
929
  () => Math.abs($.get(xScale)($.get(X)[$.get(i)]) - $.get(xScale)(0)),
634
- () => $.get(yScale).bandwidth()
930
+ () => $.get(yScale).bandwidth() * barHeightFactor()
635
931
  ]
636
932
  );
637
933
 
638
934
  $.append($$anchor, rect);
639
935
  });
640
936
 
641
- var g_3 = $.sibling(node_1);
937
+ var g_2 = $.sibling(node_1);
642
938
 
643
- $.each(g_3, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
644
- var text_4 = root_3$2();
939
+ $.each(g_2, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
940
+ var g_3 = root_3();
941
+ const labelData = $.derived(() => parseLabelData($.get(label)));
942
+ const xValue = $.derived(() => $.get(YX).get($.get(label)));
943
+ var text_4 = $.child(g_3);
645
944
  var text_5 = $.child(text_4, true);
646
945
 
647
946
  $.reset(text_4);
648
947
 
948
+ var node_2 = $.sibling(text_4);
949
+
950
+ {
951
+ var consequent = ($$anchor) => {
952
+ var text_6 = root_4();
953
+ var text_7 = $.child(text_6, true);
954
+
955
+ $.reset(text_6);
956
+
957
+ $.template_effect(() => {
958
+ $.set_attribute(text_6, 'x', $.get(xValue) > 0 ? -6 : 6);
959
+ $.set_attribute(text_6, 'text-anchor', $.get(xValue) > 0 ? "end" : "start");
960
+ $.set_style(text_6, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.darkergrey ?? ''}; opacity: 0.5;`);
961
+ $.set_text(text_7, $.get(labelData).numbers_y);
962
+ });
963
+
964
+ $.append($$anchor, text_6);
965
+ };
966
+
967
+ $.if(node_2, ($$render) => {
968
+ if ($.get(labelData).numbers_y) $$render(consequent);
969
+ });
970
+ }
971
+
972
+ $.reset(g_3);
973
+
649
974
  $.template_effect(
650
- ($0, $1, $2) => {
651
- $.set_attribute(text_4, 'x', $0);
652
- $.set_attribute(text_4, 'y', $1);
653
- $.set_attribute(text_4, 'text-anchor', $2);
654
- $.set_text(text_5, $.get(label));
975
+ ($0) => {
976
+ $.set_attribute(g_3, 'transform', `translate(0, ${$0 ?? ''})`);
977
+ $.set_attribute(text_4, 'x', $.get(xValue) > 0 ? 6 : -6);
978
+ $.set_attribute(text_4, 'text-anchor', $.get(xValue) > 0 ? "start" : "end");
979
+ $.set_style(text_4, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
980
+ $.set_text(text_5, $.get(labelData).name_y);
655
981
  },
656
982
  [
657
- () => $.get(YX).get($.get(label)) > 0 ? 6 : -6,
658
- () => $.get(yScale)($.get(label)) + $.get(yScale).bandwidth() / 2,
659
- () => $.get(YX).get($.get(label)) > 0 ? "start" : "end"
983
+ () => $.get(yScale)($.get(label)) + $.get(yScale).bandwidth() / 2
660
984
  ]
661
985
  );
662
986
 
663
- $.append($$anchor, text_4);
987
+ $.append($$anchor, g_3);
664
988
  });
665
989
 
666
- $.reset(g_3);
990
+ $.reset(g_2);
667
991
  $.reset(g);
992
+ $.reset(svg);
668
993
 
669
994
  $.template_effect(
670
995
  ($0, $1) => {
671
- $.set_attribute(g, 'transform', `translate(${$.get(chartX) ?? ''}, ${$.get(chartY) ?? ''})`);
672
- $.set_attribute(g_1, 'transform', `translate(0, ${marginTop() ?? ''})`);
996
+ $.set_attribute(svg, 'width', width());
997
+ $.set_attribute(svg, 'height', $.get(finalHeight));
998
+ $.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${$.get(finalHeight) ?? ''}`);
999
+ $.set_attribute(g, 'transform', `translate(${marginLeft() ?? ''}, ${marginTop() - shiftSvgBy})`);
673
1000
  $.set_attribute(text_2, 'x', $0);
1001
+ $.set_style(text_2, `font-family: ${alloFonts}; font-size: 16px; fill: ${alloColors.css.verydarkgrey ?? ''};`);
674
1002
  $.set_text(text_3, xLabel());
675
- $.set_attribute(g_3, 'transform', `translate(${$1 ?? ''}, 0)`);
1003
+ $.set_attribute(g_2, 'transform', `translate(${$1 ?? ''}, 0)`);
676
1004
  },
677
1005
  [
678
1006
  () => $.get(xScale)(0),
@@ -680,14 +1008,13 @@ function Wordshift($$anchor, $$props) {
680
1008
  ]
681
1009
  );
682
1010
 
683
- $.append($$anchor, g);
1011
+ $.append($$anchor, svg);
684
1012
  $.pop();
685
1013
  }
686
1014
 
687
- var root_1$1 = $.from_svg(`<line y1="0" stroke="currentColor" stroke-opacity="0.1"></line>`);
688
- var root_2$1 = $.from_svg(`<rect></rect><text opacity="0.5" dy="0.35em" font-size="10" font-family="sans-serif"> </text>`, 1);
689
- var root_3$1 = $.from_svg(`<text x="0" dy="0.35em" font-size="10" font-family="sans-serif" text-anchor="middle"> </text>`);
690
- var root$2 = $.from_svg(`<g class="balance-chart"><g class="grid"></g><!><g class="y-axis"></g></g>`);
1015
+ var root_1$1 = $.from_svg(`<rect></rect><text dy="0.35em"> </text>`, 1);
1016
+ var root_2$1 = $.from_svg(`<text x="0" dy="0.35em" text-anchor="middle"> </text>`);
1017
+ var root$2 = $.from_svg(`<svg style="overflow: visible; display: block;"><g class="balance-chart"><!><g class="y-axis"></g></g></svg>`);
691
1018
 
692
1019
  function DivergingBarChart($$anchor, $$props) {
693
1020
  $.push($$props, true);
@@ -700,7 +1027,10 @@ function DivergingBarChart($$anchor, $$props) {
700
1027
  marginLeft = $.prop($$props, 'marginLeft', 3, 40),
701
1028
  width = $.prop($$props, 'width', 3, 200),
702
1029
  yPadding = $.prop($$props, 'yPadding', 3, 0.5),
703
- colors = $.prop($$props, 'colors', 19, () => ["lightgrey", "lightblue"]);
1030
+ colors = $.prop($$props, 'colors', 19, () => [
1031
+ alloColors.css.lightgrey,
1032
+ alloColors.css.paleblue
1033
+ ]);
704
1034
 
705
1035
  // Compute values (matching D3 version exactly)
706
1036
  let X = $.derived(() => map($$props.data, x()));
@@ -729,33 +1059,12 @@ function DivergingBarChart($$anchor, $$props) {
729
1059
  let xScale = $.derived(() => scaleLinear($.get(xDomain), $.get(xRange)));
730
1060
  let yScale = $.derived(() => scaleBand().domain($.get(yDomain)).range($.get(yRange)).padding(yPadding()));
731
1061
  let format = $.derived(() => $.get(xScale).tickFormat(100, "%"));
732
- var g = root$2();
733
- var g_1 = $.child(g);
734
-
735
- $.each(g_1, 21, () => $.get(xScale).ticks(width() / 80), $.index, ($$anchor, tick) => {
736
- var line = root_1$1();
737
-
738
- $.template_effect(
739
- ($0, $1) => {
740
- $.set_attribute(line, 'x1', $0);
741
- $.set_attribute(line, 'x2', $1);
742
- $.set_attribute(line, 'y2', $.get(height) - marginTop() - marginBottom());
743
- },
744
- [
745
- () => $.get(xScale)($.get(tick)),
746
- () => $.get(xScale)($.get(tick))
747
- ]
748
- );
749
-
750
- $.append($$anchor, line);
751
- });
752
-
753
- $.reset(g_1);
754
-
755
- var node = $.sibling(g_1);
1062
+ var svg = root$2();
1063
+ var g = $.child(svg);
1064
+ var node = $.child(g);
756
1065
 
757
1066
  $.each(node, 17, () => $.get(I), $.index, ($$anchor, i) => {
758
- var fragment = root_2$1();
1067
+ var fragment = root_1$1();
759
1068
  var rect = $.first_child(fragment);
760
1069
  var text = $.sibling(rect);
761
1070
  var text_1 = $.child(text, true);
@@ -772,6 +1081,7 @@ function DivergingBarChart($$anchor, $$props) {
772
1081
  $.set_attribute(text, 'x', $4);
773
1082
  $.set_attribute(text, 'y', $5);
774
1083
  $.set_attribute(text, 'text-anchor', $.get(X)[$.get(i)] < 0 ? "end" : "start");
1084
+ $.set_style(text, `font-family: ${alloFonts}; font-size: 10px; fill: ${alloColors.css.darkergrey ?? ''}; opacity: 0.5;`);
775
1085
  $.set_text(text_1, $6);
776
1086
  },
777
1087
  [
@@ -788,10 +1098,10 @@ function DivergingBarChart($$anchor, $$props) {
788
1098
  $.append($$anchor, fragment);
789
1099
  });
790
1100
 
791
- var g_2 = $.sibling(node);
1101
+ var g_1 = $.sibling(node);
792
1102
 
793
- $.each(g_2, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
794
- var text_2 = root_3$1();
1103
+ $.each(g_1, 21, () => $.get(yScale).domain(), $.index, ($$anchor, label) => {
1104
+ var text_2 = root_2$1();
795
1105
  var text_3 = $.child(text_2, true);
796
1106
 
797
1107
  $.reset(text_2);
@@ -800,6 +1110,7 @@ function DivergingBarChart($$anchor, $$props) {
800
1110
  ($0, $1) => {
801
1111
  $.set_attribute(text_2, 'y', $0);
802
1112
  $.set_attribute(text_2, 'opacity', $1);
1113
+ $.set_style(text_2, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.darkergrey ?? ''};`);
803
1114
  $.set_text(text_3, $.get(label));
804
1115
  },
805
1116
  [
@@ -811,60 +1122,61 @@ function DivergingBarChart($$anchor, $$props) {
811
1122
  $.append($$anchor, text_2);
812
1123
  });
813
1124
 
814
- $.reset(g_2);
1125
+ $.reset(g_1);
815
1126
  $.reset(g);
1127
+ $.reset(svg);
816
1128
 
817
1129
  $.template_effect(
818
1130
  ($0) => {
819
- $.set_attribute(g, 'transform', `translate(${$$props.DiamondWidth - 75}, ${$$props.DiamondHeight + 75})`);
820
- $.set_attribute(g_1, 'transform', `translate(0,${marginTop() ?? ''})`);
821
- $.set_attribute(g_2, 'transform', `translate(${$0 ?? ''},-12)`);
1131
+ $.set_attribute(svg, 'width', width());
1132
+ $.set_attribute(svg, 'height', $.get(height));
1133
+ $.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${$.get(height) ?? ''}`);
1134
+ $.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, -12)`);
822
1135
  },
823
1136
  [() => $.get(xScale)(0)]
824
1137
  );
825
1138
 
826
- $.append($$anchor, g);
1139
+ $.append($$anchor, svg);
827
1140
  $.pop();
828
1141
  }
829
1142
 
830
- var root_1 = $.from_svg(`<rect stroke="whitesmoke" stroke-width="1"></rect>`);
831
- var root_3 = $.from_svg(`<g class="legend-title"><text font-size="13">Counts per cell</text></g>`);
832
- var root_2 = $.from_svg(`<g class="legend-text"><text font-size="10" dx="20"> </text></g><!>`, 1);
833
- var root$1 = $.from_svg(`<g class="legend-container"></g><!>`, 1);
1143
+ var root_1 = $.from_svg(`<rect transform="rotate(-90) translate(-70,0)" style="stroke: black; stroke-width: 0.65; shape-rendering: crispEdges;"></rect>`);
1144
+ var root_2 = $.from_svg(`<g class="tick"><text dx="30" dy="-30" transform="rotate(90)"> </text></g>`);
1145
+ var root$1 = $.from_svg(`<svg style="overflow: visible; display: block;"><!><g transform="rotate(-90) translate(-60,5)"><!><text class="title" dx="30" dy="-5" transform="rotate(90)">Counts per cell</text></g></svg>`);
834
1146
 
835
1147
  function Legend($$anchor, $$props) {
836
1148
  $.push($$props, true);
837
1149
 
838
- const N_CATEGO = 20;
839
- const myramp = range(N_CATEGO).map((i) => rgb(interpolateInferno(i / (N_CATEGO - 1))).hex());
840
- const color = scaleOrdinal(range(N_CATEGO), myramp);
841
- let height = 370;
842
- const margin = { right: 40, top: 65, left: 10 };
843
- let innerHeight = $.derived(() => height - margin.top - margin.right);
844
- let max_rank = $.derived(() => max($$props.diamond_dat, (d) => d.rank_L[1]));
845
- let y = $.derived(() => scaleBand().domain(color.domain().reverse()).rangeRound([0, $.get(innerHeight)]));
846
- // Use max_count_log if provided, otherwise calculate from data
847
- let logDomain = $.derived(() => $$props.max_count_log || 10 ** Math.ceil(Math.log10($.get(max_rank)) - 1));
848
- let logY = $.derived(() => scaleLog().domain([1, $.get(logDomain)]).rangeRound([0, $.get(innerHeight)]).nice());
849
- let logFormat10 = $.derived(() => $.get(logY).tickFormat());
850
- let yTicks = $.derived(() => $.get(logY).ticks());
851
- var fragment = root$1();
852
- var g = $.first_child(fragment);
853
-
854
- $.each(g, 21, () => color.domain(), $.index, ($$anchor, d) => {
855
- var rect = root_1();
1150
+ let tickSize = $.prop($$props, 'tickSize', 3, 0),
1151
+ height = $.prop($$props, 'height', 19, () => 44 + tickSize()),
1152
+ width = $.prop($$props, 'width', 3, 300),
1153
+ marginTop = $.prop($$props, 'marginTop', 3, 13),
1154
+ marginBottom = $.prop($$props, 'marginBottom', 19, () => 16 + tickSize()),
1155
+ marginLeft = $.prop($$props, 'marginLeft', 3, 0),
1156
+ N_CATEGO = $.prop($$props, 'N_CATEGO', 3, 20);
1157
+
1158
+ const myramp = range(N_CATEGO()).map((i) => rgb(interpolateInferno(i / (N_CATEGO() - 1))).hex());
1159
+ const color = scaleOrdinal(range(N_CATEGO()), myramp);
1160
+ let x = $.derived(() => scaleBand().domain(color.domain()).rangeRound([marginLeft(), width() - 100]));
1161
+ let x2 = $.derived(() => scaleBand().domain(range($$props.max_count_log).map((i) => 10 ** i).sort((a, b) => b - a)).rangeRound([marginLeft() - 40, width() - 90]));
1162
+ var svg = root$1();
1163
+ var node = $.child(svg);
856
1164
 
857
- $.set_attribute(rect, 'x', 0);
858
- $.set_attribute(rect, 'width', 14);
859
- $.set_attribute(rect, 'height', 13);
1165
+ $.each(node, 17, () => color.domain(), $.index, ($$anchor, d) => {
1166
+ var rect = root_1();
860
1167
 
861
1168
  $.template_effect(
862
- ($0, $1) => {
863
- $.set_attribute(rect, 'y', $0);
864
- $.set_attribute(rect, 'fill', $1);
1169
+ ($0, $1, $2, $3) => {
1170
+ $.set_attribute(rect, 'x', $0);
1171
+ $.set_attribute(rect, 'y', marginTop());
1172
+ $.set_attribute(rect, 'width', $1);
1173
+ $.set_attribute(rect, 'height', $2);
1174
+ $.set_attribute(rect, 'fill', $3);
865
1175
  },
866
1176
  [
867
- () => $.get(y)($.get(d)),
1177
+ () => $.get(x)($.get(d)),
1178
+ () => Math.max(0, $.get(x).bandwidth()),
1179
+ () => $.get(x).bandwidth(),
868
1180
  () => color($.get(d))
869
1181
  ]
870
1182
  );
@@ -872,62 +1184,48 @@ function Legend($$anchor, $$props) {
872
1184
  $.append($$anchor, rect);
873
1185
  });
874
1186
 
875
- $.reset(g);
1187
+ var g = $.sibling(node);
1188
+ var node_1 = $.child(g);
876
1189
 
877
- var node = $.sibling(g);
878
-
879
- $.each(node, 17, () => $.get(yTicks), $.index, ($$anchor, tick, i) => {
880
- var fragment_1 = root_2();
881
- var g_1 = $.first_child(fragment_1);
1190
+ $.each(node_1, 17, () => $.get(x2).domain(), $.index, ($$anchor, tick) => {
1191
+ var g_1 = root_2();
882
1192
  var text = $.child(g_1);
883
1193
  var text_1 = $.child(text, true);
884
1194
 
885
1195
  $.reset(text);
886
1196
  $.reset(g_1);
887
1197
 
888
- var node_1 = $.sibling(g_1);
889
-
890
- {
891
- var consequent = ($$anchor) => {
892
- var g_2 = root_3();
893
- var text_2 = $.child(g_2);
894
-
895
- $.set_attribute(text_2, 'dy', "9");
896
- $.reset(g_2);
897
-
898
- $.template_effect(($0) => $.set_attribute(g_2, 'transform', `translate(${margin.left}, ${$0 ?? ''})`), [
899
- () => $$props.DiamondHeight + $.get(logY)($.get(tick)) - margin.top
900
- ]);
901
-
902
- $.append($$anchor, g_2);
903
- };
904
-
905
- $.if(node_1, ($$render) => {
906
- if (i === $.get(yTicks).length - 1) $$render(consequent);
907
- });
908
- }
909
-
910
1198
  $.template_effect(
911
- ($0, $1) => {
912
- $.set_attribute(g_1, 'transform', `translate(${margin.left}, ${$0 ?? ''})`);
913
- $.set_attribute(text, 'dy', $.get(yTicks).length - 1 == i ? "-3" : "13");
914
- $.set_text(text_1, $1);
1199
+ ($0) => {
1200
+ $.set_attribute(g_1, 'transform', `translate(${$0 ?? ''}, 0)`);
1201
+ $.set_style(text, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''}; text-anchor: start;`);
1202
+ $.set_text(text_1, $.get(tick));
915
1203
  },
916
- [
917
- () => $$props.DiamondHeight + $.get(logY)($.get(tick)) - margin.top,
918
- () => $.get(logFormat10)($.get(tick))
919
- ]
1204
+ [() => $.get(x2)($.get(tick))]
920
1205
  );
921
1206
 
922
- $.append($$anchor, fragment_1);
1207
+ $.append($$anchor, g_1);
1208
+ });
1209
+
1210
+ var text_2 = $.sibling(node_1);
1211
+
1212
+ $.reset(g);
1213
+ $.reset(svg);
1214
+
1215
+ $.template_effect(() => {
1216
+ $.set_attribute(svg, 'width', width());
1217
+ $.set_attribute(svg, 'height', height());
1218
+ $.set_attribute(svg, 'viewBox', `0 0 ${width() ?? ''} ${height() ?? ''}`);
1219
+ $.set_attribute(text_2, 'x', marginLeft() - 25);
1220
+ $.set_attribute(text_2, 'y', marginTop() + marginBottom());
1221
+ $.set_style(text_2, `font-family: ${alloFonts}; font-size: 14px; fill: ${alloColors.css.verydarkgrey ?? ''}; text-anchor: start;`);
923
1222
  });
924
1223
 
925
- $.template_effect(() => $.set_attribute(g, 'transform', `translate(${margin.left}, ${$$props.DiamondHeight - margin.top})`));
926
- $.append($$anchor, fragment);
1224
+ $.append($$anchor, svg);
927
1225
  $.pop();
928
1226
  }
929
1227
 
930
- var root = $.from_html(`<div><svg id="allotaxonometer-svg" class="svelte-n6o6ey"><!><!><!><!></svg></div>`);
1228
+ var root = $.from_html(`<div class="allotaxonometer-dashboard" style="position: relative; margin: 0; padding: 0;"><div style="display:flex; flex-wrap: wrap; align-items:center; justify-content: center; row-gap: 50px;"><div style="margin-top:20px"><div style="display:flex; gap: 10em; justify-content: center; margin-bottom: -70px; margin-right: 70px; position: relative;"><div style="position: relative;"><div> </div> <div> </div> <div> </div></div> <div> </div></div> <div id="diamondplot"><!></div> <div style="display: flex; gap: 13em; justify-content: center;"><div id="legend" style="margin-left: -50px;"><!></div> <div id="balance"><!></div></div></div> <div style="margin-top:60px; overflow: visible;"><div id="wordshift" style="overflow: visible;"><!></div></div></div></div>`);
931
1229
 
932
1230
  function Dashboard($$anchor, $$props) {
933
1231
  $.push($$props, true);
@@ -938,24 +1236,25 @@ function Dashboard($$anchor, $$props) {
938
1236
  barData = $.prop($$props, 'barData', 19, () => []),
939
1237
  balanceData = $.prop($$props, 'balanceData', 19, () => []),
940
1238
  xDomain = $.prop($$props, 'xDomain', 3, undefined),
1239
+ instrumentText = $.prop($$props, 'instrumentText', 3, 'Instrument: Rank-Turbulence Divergence'),
941
1240
  title = $.prop($$props, 'title', 19, () => ['System 1', 'System 2']),
942
- maxlog10 = $.prop($$props, 'maxlog10', 3, 0),
943
- height = $.prop($$props, 'height', 3, 815),
944
- width = $.prop($$props, 'width', 3, 1200),
945
- DashboardHeight = $.prop($$props, 'DashboardHeight', 3, 815),
1241
+ maxlog10 = $.prop($$props, 'maxlog10', 3, 0);
1242
+ $.prop($$props, 'height', 3, 815);
1243
+ $.prop($$props, 'width', 3, 1200);
1244
+ let DashboardHeight = $.prop($$props, 'DashboardHeight', 3, 815),
946
1245
  DashboardWidth = $.prop($$props, 'DashboardWidth', 3, 1200),
947
1246
  DiamondHeight = $.prop($$props, 'DiamondHeight', 3, 600),
948
1247
  DiamondWidth = $.prop($$props, 'DiamondWidth', 3, 600),
949
1248
  marginInner = $.prop($$props, 'marginInner', 3, 160),
950
1249
  marginDiamond = $.prop($$props, 'marginDiamond', 3, 40),
951
- max_count_log = $.prop($$props, 'max_count_log', 3, undefined),
952
- className = $.prop($$props, 'class', 3, ''),
953
- style = $.prop($$props, 'style', 3, ''),
954
- showDiamond = $.prop($$props, 'showDiamond', 3, true),
955
- showWordshift = $.prop($$props, 'showWordshift', 3, true),
956
- showDivergingBar = $.prop($$props, 'showDivergingBar', 3, true),
957
- showLegend = $.prop($$props, 'showLegend', 3, true),
958
- restProps = $.rest_props($$props, [
1250
+ max_count_log = $.prop($$props, 'max_count_log', 3, undefined);
1251
+ $.prop($$props, 'class', 3, '');
1252
+ $.prop($$props, 'style', 3, '');
1253
+ $.prop($$props, 'showDiamond', 3, true);
1254
+ $.prop($$props, 'showWordshift', 3, true);
1255
+ $.prop($$props, 'showDivergingBar', 3, true);
1256
+ $.prop($$props, 'showLegend', 3, true);
1257
+ $.rest_props($$props, [
959
1258
  '$$slots',
960
1259
  '$$events',
961
1260
  '$$legacy',
@@ -965,6 +1264,7 @@ function Dashboard($$anchor, $$props) {
965
1264
  'barData',
966
1265
  'balanceData',
967
1266
  'xDomain',
1267
+ 'instrumentText',
968
1268
  'title',
969
1269
  'maxlog10',
970
1270
  'height',
@@ -992,133 +1292,137 @@ function Dashboard($$anchor, $$props) {
992
1292
  ]);
993
1293
 
994
1294
  var div = root();
1295
+ var div_1 = $.child(div);
1296
+ var div_2 = $.child(div_1);
1297
+ var div_3 = $.child(div_2);
1298
+ var div_4 = $.child(div_3);
1299
+ var div_5 = $.child(div_4);
1300
+ var text = $.child(div_5, true);
995
1301
 
996
- $.attribute_effect(
997
- div,
998
- () => ({
999
- class: `allotaxonometer-dashboard ${className() ?? ''}`,
1000
- style: style(),
1001
- ...restProps
1002
- }),
1003
- undefined,
1004
- 'svelte-n6o6ey'
1005
- );
1302
+ $.reset(div_5);
1006
1303
 
1007
- var svg = $.child(div);
1008
- var node = $.child(svg);
1304
+ var div_6 = $.sibling(div_5, 2);
1305
+ var text_1 = $.child(div_6, true);
1009
1306
 
1010
- {
1011
- var consequent = ($$anchor) => {
1012
- Diamond($$anchor, {
1013
- get dat() {
1014
- return dat();
1015
- },
1016
- get alpha() {
1017
- return alpha();
1018
- },
1019
- get divnorm() {
1020
- return divnorm();
1021
- },
1022
- get title() {
1023
- return title();
1024
- },
1025
- get maxlog10() {
1026
- return maxlog10();
1027
- },
1028
- get DiamondHeight() {
1029
- return DiamondHeight();
1030
- },
1031
- get marginInner() {
1032
- return marginInner();
1033
- },
1034
- get marginDiamond() {
1035
- return marginDiamond();
1036
- }
1037
- });
1038
- };
1307
+ $.reset(div_6);
1039
1308
 
1040
- $.if(node, ($$render) => {
1041
- if (showDiamond() && dat()) $$render(consequent);
1042
- });
1043
- }
1309
+ var div_7 = $.sibling(div_6, 2);
1310
+ var text_2 = $.child(div_7);
1044
1311
 
1045
- var node_1 = $.sibling(node);
1312
+ $.reset(div_7);
1313
+ $.reset(div_4);
1046
1314
 
1047
- {
1048
- var consequent_1 = ($$anchor) => {
1049
- Wordshift($$anchor, {
1050
- get barData() {
1051
- return barData();
1052
- },
1053
- get DashboardHeight() {
1054
- return DashboardHeight();
1055
- },
1056
- get DashboardWidth() {
1057
- return DashboardWidth();
1058
- },
1059
- get xDomain() {
1060
- return $.get(wordshiftXDomain);
1061
- },
1062
- width: 640,
1063
- marginLeft: 140
1064
- });
1065
- };
1315
+ var div_8 = $.sibling(div_4, 2);
1316
+ var text_3 = $.child(div_8, true);
1066
1317
 
1067
- $.if(node_1, ($$render) => {
1068
- if (showWordshift() && barData().length > 0) $$render(consequent_1);
1069
- });
1070
- }
1318
+ $.reset(div_8);
1319
+ $.reset(div_3);
1071
1320
 
1072
- var node_2 = $.sibling(node_1);
1321
+ var div_9 = $.sibling(div_3, 2);
1322
+ var node = $.child(div_9);
1073
1323
 
1074
- {
1075
- var consequent_2 = ($$anchor) => {
1076
- DivergingBarChart($$anchor, {
1077
- get data() {
1078
- return balanceData();
1079
- },
1080
- get DiamondHeight() {
1081
- return DiamondHeight();
1082
- },
1083
- get DiamondWidth() {
1084
- return DiamondWidth();
1085
- }
1086
- });
1087
- };
1324
+ Diamond(node, {
1325
+ get dat() {
1326
+ return dat();
1327
+ },
1328
+ get alpha() {
1329
+ return alpha();
1330
+ },
1331
+ get divnorm() {
1332
+ return divnorm();
1333
+ },
1334
+ get title() {
1335
+ return title();
1336
+ },
1337
+ get maxlog10() {
1338
+ return maxlog10();
1339
+ },
1340
+ get DiamondHeight() {
1341
+ return DiamondHeight();
1342
+ },
1343
+ get marginInner() {
1344
+ return marginInner();
1345
+ },
1346
+ get marginDiamond() {
1347
+ return marginDiamond();
1348
+ }
1349
+ });
1088
1350
 
1089
- $.if(node_2, ($$render) => {
1090
- if (showDivergingBar() && balanceData().length > 0) $$render(consequent_2);
1091
- });
1092
- }
1351
+ $.reset(div_9);
1093
1352
 
1094
- var node_3 = $.sibling(node_2);
1353
+ var div_10 = $.sibling(div_9, 2);
1354
+ var div_11 = $.child(div_10);
1355
+ var node_1 = $.child(div_11);
1356
+ const expression = $.derived(() => max_count_log() || 5);
1095
1357
 
1096
- {
1097
- var consequent_3 = ($$anchor) => {
1098
- Legend($$anchor, {
1099
- get diamond_dat() {
1100
- return dat().counts;
1101
- },
1102
- get DiamondHeight() {
1103
- return DiamondHeight();
1104
- },
1105
- get max_count_log() {
1106
- return max_count_log();
1107
- }
1108
- });
1109
- };
1358
+ Legend(node_1, {
1359
+ get diamond_dat() {
1360
+ return dat().counts;
1361
+ },
1362
+ get DiamondHeight() {
1363
+ return DiamondHeight();
1364
+ },
1365
+ get max_count_log() {
1366
+ return $.get(expression);
1367
+ }
1368
+ });
1110
1369
 
1111
- $.if(node_3, ($$render) => {
1112
- if (showLegend() && dat()) $$render(consequent_3);
1113
- });
1114
- }
1370
+ $.reset(div_11);
1115
1371
 
1116
- $.reset(svg);
1372
+ var div_12 = $.sibling(div_11, 2);
1373
+ var node_2 = $.child(div_12);
1374
+
1375
+ DivergingBarChart(node_2, {
1376
+ get data() {
1377
+ return balanceData();
1378
+ },
1379
+ get DiamondHeight() {
1380
+ return DiamondHeight();
1381
+ },
1382
+ get DiamondWidth() {
1383
+ return DiamondWidth();
1384
+ }
1385
+ });
1386
+
1387
+ $.reset(div_12);
1388
+ $.reset(div_10);
1389
+ $.reset(div_2);
1390
+
1391
+ var div_13 = $.sibling(div_2, 2);
1392
+ var div_14 = $.child(div_13);
1393
+ var node_3 = $.child(div_14);
1394
+
1395
+ Wordshift(node_3, {
1396
+ get barData() {
1397
+ return barData();
1398
+ },
1399
+ get DashboardHeight() {
1400
+ return DashboardHeight();
1401
+ },
1402
+ get DashboardWidth() {
1403
+ return DashboardWidth();
1404
+ },
1405
+ get xDomain() {
1406
+ return $.get(wordshiftXDomain);
1407
+ },
1408
+ width: 640,
1409
+ marginLeft: 140
1410
+ });
1411
+
1412
+ $.reset(div_14);
1413
+ $.reset(div_13);
1414
+ $.reset(div_1);
1117
1415
  $.reset(div);
1118
1416
 
1119
1417
  $.template_effect(() => {
1120
- $.set_attribute(svg, 'height', height());
1121
- $.set_attribute(svg, 'width', width());
1418
+ $.set_style(div_5, `font-family: ${alloFonts}; font-size: 16px; color: ${alloColors.css.superdarkgrey ?? ''};`);
1419
+ $.set_text(text, title()[0]);
1420
+ $.set_style(div_6, `position: absolute; top: 100%; left: -12em; margin-top: 2.5em; font-family: ${alloFonts}; font-size: 14px; color: ${alloColors.css.darkgrey ?? ''};`);
1421
+ $.set_text(text_1, instrumentText());
1422
+ $.set_style(div_7, `position: absolute; top: 100%; left: -12em; margin-top: 3.5em; font-family: ${alloFonts}; font-size: 14px; color: ${alloColors.css.darkgrey ?? ''};`);
1423
+ $.set_text(text_2, `α = ${alpha() ?? ''}`);
1424
+ $.set_style(div_8, `font-family: ${alloFonts}; font-size: 16px; color: ${alloColors.css.superdarkgrey ?? ''};`);
1425
+ $.set_text(text_3, title()[1]);
1122
1426
  });
1123
1427
 
1124
1428
  $.append($$anchor, div);