allotaxonometer-ui 0.1.3 → 0.1.5

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