@explorable-viz/fluid 0.7.29 → 0.7.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/README.md +31 -16
  2. package/dist/fluid/fluid/dataset/ssp126-2081-2100.fld +194 -0
  3. package/dist/fluid/fluid/example/dict-list-comp.fld +1 -1
  4. package/dist/fluid/fluid/example/slicing/qcut.expect.fld +0 -0
  5. package/dist/fluid/fluid/example/slicing/qcut.fld +2 -0
  6. package/dist/fluid/fluid/lib/prelude.fld +10 -0
  7. package/dist/fluid/fluid/lib/stats.fld +57 -0
  8. package/dist/fluid/fluid.mjs +48 -45
  9. package/dist/fluid/{load-fig.js → load-figure.js} +4 -4
  10. package/dist/fluid/puppeteer-lib.js +278712 -0
  11. package/package.json +3 -2
  12. package/script/bundle-website.sh +23 -64
  13. package/dist/fluid/css/css/styles.css +0 -343
  14. package/dist/fluid/css/css/view-styles.css +0 -182
  15. package/dist/fluid/css/styles.css +0 -343
  16. package/dist/fluid/css/view-styles.css +0 -182
  17. package/dist/fluid/favicon.ico +0 -0
  18. package/dist/fluid/font/GraphikLight.woff2 +0 -0
  19. package/dist/fluid/font/GraphikLightItalic.woff2 +0 -0
  20. package/dist/fluid/font/GraphikMedium.woff2 +0 -0
  21. package/dist/fluid/font/GraphikMediumItalic.woff2 +0 -0
  22. package/dist/fluid/font/OdiseanTech.woff2 +0 -0
  23. package/dist/fluid/font/font/GraphikLight.woff2 +0 -0
  24. package/dist/fluid/font/font/GraphikLightItalic.woff2 +0 -0
  25. package/dist/fluid/font/font/GraphikMedium.woff2 +0 -0
  26. package/dist/fluid/font/font/GraphikMediumItalic.woff2 +0 -0
  27. package/dist/fluid/font/font/OdiseanTech.woff2 +0 -0
  28. package/dist/fluid/image/fluid-logo.png +0 -0
  29. package/dist/fluid/image/iccs-full-logo.png +0 -0
  30. package/dist/fluid/image/schmidtsciences_primary_color.png +0 -0
  31. package/dist/fluid/shared/footer.html +0 -6
  32. package/dist/fluid/shared/header.html +0 -26
  33. package/dist/fluid/shared/shared/footer.html +0 -6
  34. package/dist/fluid/shared/shared/header.html +0 -26
  35. package/dist/fluid/shared/shared/sub-header.html +0 -12
  36. package/dist/fluid/shared/shared/util.js +0 -72
  37. package/dist/fluid/shared/sub-header.html +0 -12
  38. package/dist/fluid/shared/util.js +0 -72
  39. package/index.js +0 -44294
@@ -1,343 +0,0 @@
1
- @charset "UTF-8";
2
- @import url("https://fonts.googleapis.com/css2?family=Fira+Code&display=swap");
3
- @import url('https://fonts.googleapis.com/css2?family=Ubuntu+Mono&display=swap');
4
-
5
- @font-face {
6
- font-family: 'OdiseanTech';
7
- src: url('/font/OdiseanTech.woff2') format('woff2');
8
- font-weight: normal;
9
- font-style: normal;
10
- }
11
-
12
- @font-face {
13
- font-family: 'GraphikLight';
14
- src: url('/font/GraphikLight.woff2') format('woff2');
15
- font-weight: 300;
16
- font-style: normal;
17
- }
18
-
19
- @font-face {
20
- font-family: 'GraphikLightItalic';
21
- src: url('/font/GraphikLightItalic.woff2') format('woff2');
22
- font-weight: 300;
23
- font-style: italic;
24
- }
25
-
26
- @font-face {
27
- font-family: 'GraphikMedium';
28
- src: url('/font/GraphikMedium.woff2') format('woff2');
29
- font-weight: 500;
30
- font-style: normal;
31
- }
32
-
33
- @font-face {
34
- font-family: 'GraphikMediumItalic';
35
- src: url('/font/GraphikMediumItalic.woff2') format('woff2');
36
- font-weight: 500;
37
- font-style: italic;
38
- }
39
-
40
- .fluid-logo {
41
- margin-bottom: 0;
42
- }
43
-
44
- .fluid-subtitle {
45
- margin-bottom: 0;
46
- margin-top: 0;
47
- font-size: 12pt;
48
- }
49
-
50
- a:link {
51
- color: darkslategray;
52
- }
53
-
54
- a:visited {
55
- color: #004d40;
56
- }
57
-
58
- a:hover {
59
- color: #009688;
60
- }
61
-
62
- a:active {
63
- color: #003d33;
64
- }
65
-
66
- .right-justified {
67
- margin-left: auto;
68
- width: fit-content;
69
- }
70
-
71
- .nowrap {
72
- white-space: nowrap;
73
- }
74
-
75
- code {
76
- font-family: 'Ubuntu Mono', monospace;
77
- }
78
-
79
- body {
80
- font-size: 12pt;
81
- font-family: "GraphikLight", sans-serif;
82
- font-weight: 300;
83
- line-height: 1.25;
84
- padding: 0;
85
- margin: 0;
86
- background-color: #FFFFFF;
87
- color: #404040;
88
- margin-bottom: 10em;
89
- }
90
-
91
- p {
92
- margin-top: 1em;
93
- margin-bottom: 1em;
94
- }
95
-
96
- p + p {
97
- margin-top: 0;
98
- }
99
-
100
- .faq-question {
101
- font-family: 'GraphikMedium';
102
- color: darkslategrey;
103
- }
104
-
105
- .highlight {
106
- font-family: 'GraphikMedium';
107
- }
108
-
109
- .align-right {
110
- text-align: right;
111
- }
112
-
113
- h2 {
114
- font-size: 18pt;
115
- }
116
-
117
- h3 {
118
- width: 100%;
119
- font-size: 16pt;
120
- font-weight: bold;
121
- margin-top: 10pt;
122
- margin-bottom: 4pt;
123
- border-bottom: 0.5px solid lightgray;
124
- }
125
-
126
- h4 {
127
- font-size: 16pt;
128
- font-weight: bold;
129
- margin-top: 0.4em;
130
- margin-bottom: 0;
131
- }
132
-
133
- .sub-header * {
134
- font-size: 16pt;
135
- margin-bottom: 4px;
136
- }
137
-
138
- ul {
139
- padding-left: 20px;
140
- margin-top: 0;
141
- margin-bottom: 0;
142
- }
143
-
144
- li {
145
- margin-bottom: 1ex;
146
- }
147
-
148
- li:last-child {
149
- margin-bottom: 0;
150
- }
151
-
152
- .table-caption {
153
- text-align: left;
154
- }
155
-
156
- nav ul {
157
- padding-left: 0;
158
- list-style: none;
159
- }
160
-
161
- nav ul li {
162
- float: left;
163
- overflow: hidden;
164
- margin-bottom: 0;
165
- }
166
-
167
- nav ul li:not(:last-child)::after {
168
- content: "•";
169
- margin-right: 5px;
170
- margin-left: 5px;
171
- }
172
-
173
- nav ul li.active-page a {
174
- pointer-events: none;
175
- color: inherit;
176
- text-decoration: none;
177
- cursor: default;
178
- font-weight: bold;
179
- color: rgb(135, 129, 255);
180
- }
181
-
182
- .cm-editor {
183
- background: #2D2D2D;
184
- color: #F0F0F0;
185
- }
186
-
187
- .cm-line {
188
- font-family: 'Ubuntu Mono';
189
- font-size: 10pt;
190
- }
191
-
192
- .cm-gutter {
193
- background-color: #232323;
194
- }
195
-
196
- .cm-gutterElement {
197
- font-family: 'Ubuntu Mono';
198
- font-size: 10pt;
199
- color: #88C0D0;
200
- }
201
-
202
- .right-border {
203
- border-right: 0.5px solid lightgray;
204
- padding-right: 6px;
205
- }
206
-
207
- .right-border + div {
208
- padding-left: 4px
209
- }
210
-
211
- .header-grid-container {
212
- display: grid;
213
- background-color: #f0f0f0;
214
- width: 100%;
215
- grid-template-columns: 35% 1fr;
216
- padding-top: 7px;
217
- padding-bottom: 7px;
218
- }
219
-
220
- .footer-grid-container {
221
- display: grid;
222
- background-color: #f0f0f0;
223
- width: 100%;
224
- grid-template-columns: 35% 1fr;
225
- margin-top: 10px;
226
- }
227
-
228
- :root {
229
- --toggle-button-width: 24px;
230
- --text-pane-width: 800px;
231
- }
232
-
233
- .grid-container {
234
- display: grid;
235
- grid-template-columns: auto var(--toggle-button-width) var(--text-pane-width);
236
- justify-content: center;
237
- }
238
-
239
- .grid-container.data-pane-hidden {
240
- grid-template-columns: 0 var(--toggle-button-width) var(--text-pane-width);
241
- }
242
-
243
- .grid-container.double-size {
244
- max-width: 66.7vw; /* undo effect of transform: scale(1.5) for layout purposes */
245
- }
246
-
247
- .grid-container > :last-child {
248
- padding-right: 10px;
249
- }
250
-
251
- .flex-bottom-align {
252
- display: flex;
253
- flex-direction: row;
254
- }
255
-
256
- .flex-bottom-align:first-child {
257
- margin-top: auto;
258
- }
259
-
260
- .flex-left-align {
261
- display: flex;
262
- flex-direction: column;
263
- align-items: start;
264
- }
265
-
266
- .flex-right-align {
267
- display: flex;
268
- flex-direction: column;
269
- align-items: flex-end;
270
- }
271
-
272
- .flex-bottom-align {
273
- display: flex;
274
- flex-direction: row;
275
- align-items: flex-end;
276
- }
277
-
278
- .data-pane-button {
279
- font-size: 10pt;
280
- }
281
-
282
- .toggle-button {
283
- color: #CCCCCC;
284
- user-select: none;
285
- }
286
-
287
- .toggle-button:hover {
288
- color: #999999;
289
- cursor: pointer;
290
- }
291
-
292
- .data-pane {
293
- border-right: 1px dotted #CCCCCC;
294
- }
295
-
296
- .data-pane-hidden .data-pane {
297
- visibility: hidden;
298
- }
299
-
300
- .data-pane-hidden .data-pane * {
301
- display: none;
302
- }
303
-
304
- .data-pane * {
305
- font-size: 10pt;
306
- }
307
-
308
- .data-pane p {
309
- margin-right: 3px;
310
- }
311
-
312
- /* Not actually double-size any more.. */
313
- .double-size {
314
- transform: scale(1.5);
315
- transform-origin: top;
316
- --text-pane-width: 600px;
317
- }
318
-
319
- body.standalone {
320
- height: 100%;
321
- display: grid;
322
- justify-items: center;
323
- align-items: start;
324
- }
325
-
326
- /* Needed for contained height specifications to work */
327
- html {
328
- height: 100%;
329
- }
330
-
331
- @keyframes fadeIn {
332
- from { opacity: 0; }
333
- to { opacity: 1; }
334
- }
335
-
336
- .fig-loading:only-child {
337
- color: fuchsia;
338
- animation: fadeIn 2s ease-in-out infinite alternate;
339
- }
340
-
341
- .fig-loading:not(:only-child) {
342
- display: none;
343
- }
@@ -1,182 +0,0 @@
1
- .legend-box {
2
- stroke: lightgray;
3
- stroke-width: 0.5px;
4
- fill: none;
5
- }
6
-
7
- .legend-text {
8
- font-size: 9pt;
9
- }
10
-
11
- .title-text {
12
- fill: Black;
13
- font-size: 9pt;
14
- }
15
-
16
- .table-view th {
17
- font-size: 11px;
18
- text-align: left;
19
- border-bottom: 'thin solid';
20
- }
21
-
22
- .table-view td {
23
- font-size: 11px;
24
- }
25
-
26
- .table-view td:nth-child(1) {
27
- color: lightgray;
28
- }
29
-
30
- table {
31
- border-collapse: collapse;
32
- }
33
-
34
- thead {
35
- border-top: 0.5px solid lightgray;
36
- }
37
-
38
- .table-cell {
39
- border-radius: 0px;
40
- }
41
-
42
- td.table-cell {
43
- background-color: white;
44
- }
45
-
46
- .table-cell.inert {
47
- color: lightgrey;
48
- }
49
-
50
- .table-cell.selected-primary-persistent {
51
- background-color: #93E9BE;
52
- }
53
-
54
- .table-cell.selected-secondary-persistent {
55
- background-color: rgb(226, 226, 226);
56
- }
57
-
58
- .table-cell.selected-primary-transient {
59
- color: blue;
60
- }
61
-
62
- .table-cell.selected-secondary-transient {
63
- color: royalblue;
64
- }
65
-
66
- .table-row {
67
- display: table-row;
68
- }
69
-
70
- .table-row.hidden {
71
- visibility: collapse;
72
- }
73
-
74
- .linked-text {
75
- border-radius: 0px;
76
- background-color: White;
77
- border-bottom-style: solid;
78
- border-bottom-color: white;
79
- border-bottom-width: 1px;
80
- display: inline;
81
- }
82
-
83
- .linked-text.inert {
84
- fill: lightgrey;
85
- }
86
-
87
- .linked-text.selected-primary-persistent {
88
- background-color: #93E9BE;
89
- }
90
-
91
- .linked-text.selected-primary-transient {
92
- border-bottom-color: blue;
93
- }
94
-
95
- .linked-text.selected-secondary-persistent {
96
- background-color: rgb(226, 226, 226);
97
- }
98
-
99
- .linked-text.selected-secondary-transient {
100
- border-bottom-color: lightblue;
101
- }
102
-
103
- .matrix-cell {
104
- stroke: DarkGray;
105
- fill: White;
106
- }
107
-
108
- .matrix-cell.inert {
109
- stroke: DarkGray;
110
- fill: rgb(185, 185, 185);
111
- }
112
-
113
- .matrix-cell.selected-primary-persistent {
114
- fill: LightGreen;
115
- }
116
-
117
- .matrix-cell.selected-secondary-persistent {
118
- fill: rgb(214, 240, 214)
119
- }
120
-
121
- .matrix-cell.selected-primary-transient {
122
- }
123
-
124
- .matrix-cell.selected-secondary-transient {
125
- }
126
-
127
- .matrix-cell-text {
128
- font-size: 10pt;
129
- font-family: "GraphikLight", sans-serif;
130
- color: rgb(205, 205, 205)
131
- }
132
-
133
- .matrix-cell-text.selected-primary-persistent {
134
- font-weight: 400;
135
- color: darkgreen
136
- }
137
-
138
- .matrix-cell-text.selected-secondary-persistent {
139
- color: green
140
- }
141
-
142
- .matrix-cell-text.selected-primary-transient {
143
- font-weight: 400;
144
- color: blue
145
- }
146
-
147
- .matrix-cell-text.selected-secondary-transient {
148
- color: royalblue
149
- }
150
-
151
- .scatterplot-point {
152
- fill: white;
153
- stroke: black;
154
- }
155
-
156
- .scatterplot-point.inert {
157
- fill: rgb(185,185,185);
158
- stroke: black;
159
- }
160
-
161
- .scatterplot-point.selected-primary-persistent {
162
- fill: LightGreen;
163
- stroke: teal;
164
- }
165
-
166
- .scatterplot-point.selected-secondary-transient {
167
- stroke: blue;
168
- stroke-width: 1;
169
- }
170
-
171
- .scatterplot-point.selected-primary-transient {
172
- stroke: blue;
173
- stroke-width: 1;
174
- }
175
-
176
- .scatterplot-point.selected-secondary-persistent {
177
- fill: rgb(226, 226, 226);
178
- }
179
-
180
- .scatterplot-point.selected-secondary-transient {
181
- stroke-width: 1;
182
- }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +0,0 @@
1
- <div class="footer-grid-container">
2
- <div></div>
3
- <div class="flex-left-align">
4
- <p>© Fluid Contributors 2019–2024</p>
5
- </div>
6
- </div>
@@ -1,26 +0,0 @@
1
- <div class="header-grid-container">
2
- <div class="flex-right-align right-border">
3
- <img class="fluid-logo" src="/image/fluid-logo.png" width="150px">
4
- <h2 class="fluid-subtitle">explorable, self-explanatory research outputs</h2>
5
- </div>
6
- <div class="flex-left-align" style="justify-content: center; margin-left: 5px;">
7
- <nav>
8
- <ul>
9
- <li><a href="https://github.com/explorable-viz/fluid">GitHub</a></li>
10
- <li><a href="https://dl.acm.org/doi/10.1145/3498668">POPL 2022 paper</a></li>
11
- <li><a href="https://www.youtube.com/watch?v=M_ePrtD9axk">POPL 2022 talk</a></li>
12
- <li><a href="https://www.youtube.com/watch?v=2-S6yVyzypU">PROPL 2024</a></li>
13
- <li><a href="https://www.youtube.com/watch?v=F3JaftEnFfM">ICCS Summer School</a></li>
14
- <li><a href="https://arxiv.org/abs/2403.04403">ESOP 2025 preprint</a></li>
15
- </ul>
16
- </nav>
17
- <nav>
18
- <ul>
19
- <li><a href="/">Overview</a></li>
20
- <li><a href="/faq">FAQ</a></li>
21
- <li><a href="/contributors">Contributors &amp; Funding</a></li>
22
- </ul>
23
- </nav>
24
- <div></div>
25
- </div>
26
- </div>
@@ -1,6 +0,0 @@
1
- <div class="footer-grid-container">
2
- <div></div>
3
- <div class="flex-left-align">
4
- <p>© Fluid Contributors 2019–2024</p>
5
- </div>
6
- </div>
@@ -1,26 +0,0 @@
1
- <div class="header-grid-container">
2
- <div class="flex-right-align right-border">
3
- <img class="fluid-logo" src="/image/fluid-logo.png" width="150px">
4
- <h2 class="fluid-subtitle">explorable, self-explanatory research outputs</h2>
5
- </div>
6
- <div class="flex-left-align" style="justify-content: center; margin-left: 5px;">
7
- <nav>
8
- <ul>
9
- <li><a href="https://github.com/explorable-viz/fluid">GitHub</a></li>
10
- <li><a href="https://dl.acm.org/doi/10.1145/3498668">POPL 2022 paper</a></li>
11
- <li><a href="https://www.youtube.com/watch?v=M_ePrtD9axk">POPL 2022 talk</a></li>
12
- <li><a href="https://www.youtube.com/watch?v=2-S6yVyzypU">PROPL 2024</a></li>
13
- <li><a href="https://www.youtube.com/watch?v=F3JaftEnFfM">ICCS Summer School</a></li>
14
- <li><a href="https://arxiv.org/abs/2403.04403">ESOP 2025 preprint</a></li>
15
- </ul>
16
- </nav>
17
- <nav>
18
- <ul>
19
- <li><a href="/">Overview</a></li>
20
- <li><a href="/faq">FAQ</a></li>
21
- <li><a href="/contributors">Contributors &amp; Funding</a></li>
22
- </ul>
23
- </nav>
24
- <div></div>
25
- </div>
26
- </div>
@@ -1,12 +0,0 @@
1
- <div></div>
2
- <div></div>
3
- <div>
4
- <h3 class="title">Overview</h3>
5
- <nav class="sub-header">
6
- <ul>
7
- <li><a href="/">Transparent research outputs</a></li>
8
- <li><a href="/convolution">Matrix convolution</a></li>
9
- <li><a href="/moving-average">Moving average</a></li>
10
- </ul>
11
- </nav>
12
- </div>
@@ -1,72 +0,0 @@
1
- function loadHeader () {
2
- fetch('/shared/header.html')
3
- .then(response => response.text())
4
- .then(data => {
5
- const header = document.createElement('div')
6
- header.innerHTML = data
7
- activateCurrentLink(header)
8
- const divElement = header.children[0]
9
- const grid = document.getElementById('grid')
10
- grid.parentNode.insertBefore(divElement, grid)
11
- })
12
- .catch(error => console.error('Error loading shared HTML:', error))
13
-
14
- fetch('/shared/footer.html')
15
- .then(response => response.text())
16
- .then(data => {
17
- const footer = document.createElement('div')
18
- footer.innerHTML = data
19
- const divElement = footer.children[0]
20
- const grid = document.getElementById('grid')
21
- grid.parentNode.appendChild(divElement)
22
- })
23
- .catch(error => console.error('Error loading shared HTML:', error))
24
- }
25
-
26
- function eqPaths (path1, path2) {
27
- const trailingSlashes = /\/+$/
28
- return path1.replace(trailingSlashes, '') === path2.replace(trailingSlashes, '')
29
- }
30
-
31
- function activateCurrentLink (el) {
32
- const listItems = el.querySelectorAll('li')
33
- const n_ = Array.from(listItems).findIndex(li => {
34
- const link = li.querySelector('a')
35
- return link && eqPaths(link.getAttribute('href'), window.location.pathname)
36
- })
37
- if (n_ !== -1) {
38
- listItems[n_].classList.add('active-page')
39
- }
40
- }
41
-
42
- function loadSubHeader () {
43
- fetch('/shared/sub-header.html')
44
- .then(response => response.text())
45
- .then(data => {
46
- const header = document.createElement('div')
47
- header.innerHTML = data
48
- activateCurrentLink(header)
49
- const divElements = header.children
50
- const grid = document.getElementById('grid')
51
- for (let i = Math.min(3, divElements.length - 1); i >= 0; --i) {
52
- grid.insertBefore(divElements[i], grid.firstChild)
53
- }
54
- })
55
- .catch(error => console.error('Error loading shared HTML:', error))
56
- }
57
-
58
- function toggleDataPane(gridId) {
59
- const grid = document.getElementById(gridId)
60
- const hidden = grid.classList.contains('data-pane-hidden')
61
- const dataPaneButton = document.querySelector('.data-pane-button')
62
-
63
- if (hidden) {
64
- grid.classList.remove('data-pane-hidden')
65
- dataPaneButton.classList.remove('fa-eye-slash')
66
- dataPaneButton.classList.add('fa-eye')
67
- } else {
68
- grid.classList.add('data-pane-hidden')
69
- dataPaneButton.classList.remove('fa-eye')
70
- dataPaneButton.classList.add('fa-eye-slash')
71
- }
72
- }