@explorable-viz/fluid 0.7.29 → 0.7.31
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/README.md +31 -16
 - package/dist/fluid/fluid/dataset/ssp126-2081-2100.fld +194 -0
 - package/dist/fluid/fluid/example/dict-list-comp.fld +1 -1
 - package/dist/fluid/fluid/example/slicing/qcut.expect.fld +0 -0
 - package/dist/fluid/fluid/example/slicing/qcut.fld +2 -0
 - package/dist/fluid/fluid/lib/prelude.fld +10 -0
 - package/dist/fluid/fluid/lib/stats.fld +57 -0
 - package/dist/fluid/fluid.mjs +48 -45
 - package/dist/fluid/{load-fig.js → load-figure.js} +4 -4
 - package/dist/fluid/puppeteer-lib.js +278712 -0
 - package/package.json +3 -2
 - package/script/bundle-website.sh +23 -64
 - package/dist/fluid/css/css/styles.css +0 -343
 - package/dist/fluid/css/css/view-styles.css +0 -182
 - package/dist/fluid/css/styles.css +0 -343
 - package/dist/fluid/css/view-styles.css +0 -182
 - package/dist/fluid/favicon.ico +0 -0
 - package/dist/fluid/font/GraphikLight.woff2 +0 -0
 - package/dist/fluid/font/GraphikLightItalic.woff2 +0 -0
 - package/dist/fluid/font/GraphikMedium.woff2 +0 -0
 - package/dist/fluid/font/GraphikMediumItalic.woff2 +0 -0
 - package/dist/fluid/font/OdiseanTech.woff2 +0 -0
 - package/dist/fluid/font/font/GraphikLight.woff2 +0 -0
 - package/dist/fluid/font/font/GraphikLightItalic.woff2 +0 -0
 - package/dist/fluid/font/font/GraphikMedium.woff2 +0 -0
 - package/dist/fluid/font/font/GraphikMediumItalic.woff2 +0 -0
 - package/dist/fluid/font/font/OdiseanTech.woff2 +0 -0
 - package/dist/fluid/image/fluid-logo.png +0 -0
 - package/dist/fluid/image/iccs-full-logo.png +0 -0
 - package/dist/fluid/image/schmidtsciences_primary_color.png +0 -0
 - package/dist/fluid/shared/footer.html +0 -6
 - package/dist/fluid/shared/header.html +0 -26
 - package/dist/fluid/shared/shared/footer.html +0 -6
 - package/dist/fluid/shared/shared/header.html +0 -26
 - package/dist/fluid/shared/shared/sub-header.html +0 -12
 - package/dist/fluid/shared/shared/util.js +0 -72
 - package/dist/fluid/shared/sub-header.html +0 -12
 - package/dist/fluid/shared/util.js +0 -72
 - package/index.js +0 -44294
 
    
        package/README.md
    CHANGED
    
    | 
         @@ -8,35 +8,50 @@ Fluid is an experimental programming language which integrates a bidirectional d 
     | 
|
| 
       8 
8 
     | 
    
         
             
            ## Installation
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            ### Software required
         
     | 
| 
       11 
     | 
    
         
            -
            - Windows users: Ubuntu (WSL)
         
     | 
| 
       12 
11 
     | 
    
         
             
            - git
         
     | 
| 
       13 
12 
     | 
    
         
             
            - Node.js >=14.0.0
         
     | 
| 
       14 
     | 
    
         
            -
            - yarn
         
     | 
| 
      
 13 
     | 
    
         
            +
            - yarn >= 1.22
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            - Clone the repository under Ubuntu WSL
         
     | 
| 
      
 15 
     | 
    
         
            +
            Additionally, for Windows users only:
         
     | 
| 
       18 
16 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            -  
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
            - [Ubuntu WSL](https://ubuntu.com/desktop/wsl)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ### Building
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            - Clone the repository (for Windows users, do this under the Ubuntu WSL)
         
     | 
| 
      
 22 
     | 
    
         
            +
            - Run `./script/setup/dev-setup.sh` from the top-level directory
         
     | 
| 
      
 23 
     | 
    
         
            +
            - Run `yarn build`
         
     | 
| 
       26 
24 
     | 
    
         | 
| 
       27 
25 
     | 
    
         
             
            #### Running tests on command line
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            After building, tests can be run from the command line via `yarn test-all`
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
29 
     | 
    
         
             
            #### Running tests in browser
         
     | 
| 
       31 
     | 
    
         
            -
            - As per command-line tests above, but run `yarn test-browser 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
            - As per command-line tests above, but run `yarn test-browser`, which opens
         
     | 
| 
      
 31 
     | 
    
         
            +
            a browser window.
         
     | 
| 
      
 32 
     | 
    
         
            +
            - To observe the status of tests, click `Debug` in the browser window, and then open the JavaScript Console for your browser (e.g., via the Developer Tools).
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            #### Running the fluid.org website locally
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            (Assumes you have already run `yarn build`)
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            - `yarn serve fluid-org` (you may be prompted to proceed: type `y`).
         
     | 
| 
       37 
39 
     | 
    
         
             
            - Open a browser at the served URL (usually `127.0.0.1:8080`)
         
     | 
| 
       38 
40 
     | 
    
         | 
| 
       39 
41 
     | 
    
         
             
            #### Run Puppeteer tests for page Y of website X
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       40 
43 
     | 
    
         
             
            Rebuild with `puppeteerTests.headless` set to `false` to run in browser. Then:
         
     | 
| 
       41 
44 
     | 
    
         
             
            - `yarn bundle-website X`
         
     | 
| 
       42 
45 
     | 
    
         
             
            - `./script/test-page.sh X X.Y`
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            ## Development via VS Code
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            The following are some notes on developing Fluid using VS Code.
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            - Avoid having PureScript installed globally
         
     | 
| 
      
 52 
     | 
    
         
            +
            - Install the PureScript IDE extension
         
     | 
| 
      
 53 
     | 
    
         
            +
            - In the PureScript IDE extension settings, select `Add Npm Path`
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            - For Windows users:
         
     | 
| 
      
 56 
     | 
    
         
            +
            	- Launch VSCode through Ubuntu (WSL) terminal
         
     | 
| 
      
 57 
     | 
    
         
            +
            	- Install WSL extension in VSCode
         
     | 
| 
         @@ -0,0 +1,194 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            [
         
     | 
| 
      
 2 
     | 
    
         
            +
              {
         
     | 
| 
      
 3 
     | 
    
         
            +
                model: "NorESM2-LM",
         
     | 
| 
      
 4 
     | 
    
         
            +
                world: 15.76,
         
     | 
| 
      
 5 
     | 
    
         
            +
                world_historical: 14.5,
         
     | 
| 
      
 6 
     | 
    
         
            +
                changed: 1.01
         
     | 
| 
      
 7 
     | 
    
         
            +
              },
         
     | 
| 
      
 8 
     | 
    
         
            +
              {
         
     | 
| 
      
 9 
     | 
    
         
            +
                model: "NorESM2-MM",
         
     | 
| 
      
 10 
     | 
    
         
            +
                world: 15.22,
         
     | 
| 
      
 11 
     | 
    
         
            +
                world_historical: 13.92,
         
     | 
| 
      
 12 
     | 
    
         
            +
                changed: 1.05
         
     | 
| 
      
 13 
     | 
    
         
            +
              },
         
     | 
| 
      
 14 
     | 
    
         
            +
              {
         
     | 
| 
      
 15 
     | 
    
         
            +
                model: "GFDL-ESM4",
         
     | 
| 
      
 16 
     | 
    
         
            +
                world: 14.82,
         
     | 
| 
      
 17 
     | 
    
         
            +
                world_historical: 13.5,
         
     | 
| 
      
 18 
     | 
    
         
            +
                changed: 1.07
         
     | 
| 
      
 19 
     | 
    
         
            +
              },
         
     | 
| 
      
 20 
     | 
    
         
            +
              {
         
     | 
| 
      
 21 
     | 
    
         
            +
                model: "CAMS-CSM1-0",
         
     | 
| 
      
 22 
     | 
    
         
            +
                world: 15.13,
         
     | 
| 
      
 23 
     | 
    
         
            +
                world_historical: 13.8,
         
     | 
| 
      
 24 
     | 
    
         
            +
                changed: 1.09
         
     | 
| 
      
 25 
     | 
    
         
            +
              },
         
     | 
| 
      
 26 
     | 
    
         
            +
              {
         
     | 
| 
      
 27 
     | 
    
         
            +
                model: "BCC-CSM2-MR",
         
     | 
| 
      
 28 
     | 
    
         
            +
                world: 16.29,
         
     | 
| 
      
 29 
     | 
    
         
            +
                world_historical: 14.82,
         
     | 
| 
      
 30 
     | 
    
         
            +
                changed: 1.22
         
     | 
| 
      
 31 
     | 
    
         
            +
              },
         
     | 
| 
      
 32 
     | 
    
         
            +
              {
         
     | 
| 
      
 33 
     | 
    
         
            +
                model: "INM-CM4-8",
         
     | 
| 
      
 34 
     | 
    
         
            +
                world: 14.79,
         
     | 
| 
      
 35 
     | 
    
         
            +
                world_historical: 13.31,
         
     | 
| 
      
 36 
     | 
    
         
            +
                changed: 1.23
         
     | 
| 
      
 37 
     | 
    
         
            +
              },
         
     | 
| 
      
 38 
     | 
    
         
            +
              {
         
     | 
| 
      
 39 
     | 
    
         
            +
                model: "FGOALS-g3",
         
     | 
| 
      
 40 
     | 
    
         
            +
                world: 14.3,
         
     | 
| 
      
 41 
     | 
    
         
            +
                world_historical: 12.81,
         
     | 
| 
      
 42 
     | 
    
         
            +
                changed: 1.24
         
     | 
| 
      
 43 
     | 
    
         
            +
              },
         
     | 
| 
      
 44 
     | 
    
         
            +
              {
         
     | 
| 
      
 45 
     | 
    
         
            +
                model: "MPI-ESM1-2-LR",
         
     | 
| 
      
 46 
     | 
    
         
            +
                world: 15.03,
         
     | 
| 
      
 47 
     | 
    
         
            +
                world_historical: 13.54,
         
     | 
| 
      
 48 
     | 
    
         
            +
                changed: 1.24
         
     | 
| 
      
 49 
     | 
    
         
            +
              },
         
     | 
| 
      
 50 
     | 
    
         
            +
              {
         
     | 
| 
      
 51 
     | 
    
         
            +
                model: "INM-CM5-0",
         
     | 
| 
      
 52 
     | 
    
         
            +
                world: 14.64,
         
     | 
| 
      
 53 
     | 
    
         
            +
                world_historical: 13.14,
         
     | 
| 
      
 54 
     | 
    
         
            +
                changed: 1.25
         
     | 
| 
      
 55 
     | 
    
         
            +
              },
         
     | 
| 
      
 56 
     | 
    
         
            +
              {
         
     | 
| 
      
 57 
     | 
    
         
            +
                model: "IITM-ESM",
         
     | 
| 
      
 58 
     | 
    
         
            +
                world: 15.56,
         
     | 
| 
      
 59 
     | 
    
         
            +
                world_historical: 13.99,
         
     | 
| 
      
 60 
     | 
    
         
            +
                changed: 1.32
         
     | 
| 
      
 61 
     | 
    
         
            +
              },
         
     | 
| 
      
 62 
     | 
    
         
            +
              {
         
     | 
| 
      
 63 
     | 
    
         
            +
                model: "MPI-ESM1-2-HR",
         
     | 
| 
      
 64 
     | 
    
         
            +
                world: 15.51,
         
     | 
| 
      
 65 
     | 
    
         
            +
                world_historical: 13.94,
         
     | 
| 
      
 66 
     | 
    
         
            +
                changed: 1.32
         
     | 
| 
      
 67 
     | 
    
         
            +
              },
         
     | 
| 
      
 68 
     | 
    
         
            +
              {
         
     | 
| 
      
 69 
     | 
    
         
            +
                model: "MIROC6",
         
     | 
| 
      
 70 
     | 
    
         
            +
                world: 16.72,
         
     | 
| 
      
 71 
     | 
    
         
            +
                world_historical: 15.12,
         
     | 
| 
      
 72 
     | 
    
         
            +
                changed: 1.35
         
     | 
| 
      
 73 
     | 
    
         
            +
              },
         
     | 
| 
      
 74 
     | 
    
         
            +
              {
         
     | 
| 
      
 75 
     | 
    
         
            +
                model: "MIROC-ES2L",
         
     | 
| 
      
 76 
     | 
    
         
            +
                world: 16.6,
         
     | 
| 
      
 77 
     | 
    
         
            +
                world_historical: 14.96,
         
     | 
| 
      
 78 
     | 
    
         
            +
                changed: 1.39
         
     | 
| 
      
 79 
     | 
    
         
            +
              },
         
     | 
| 
      
 80 
     | 
    
         
            +
              {
         
     | 
| 
      
 81 
     | 
    
         
            +
                model: "MRI-ESM2-0",
         
     | 
| 
      
 82 
     | 
    
         
            +
                world: 15.47,
         
     | 
| 
      
 83 
     | 
    
         
            +
                world_historical: 13.74,
         
     | 
| 
      
 84 
     | 
    
         
            +
                changed: 1.47
         
     | 
| 
      
 85 
     | 
    
         
            +
              },
         
     | 
| 
      
 86 
     | 
    
         
            +
              {
         
     | 
| 
      
 87 
     | 
    
         
            +
                model: "KIOST-ESM",
         
     | 
| 
      
 88 
     | 
    
         
            +
                world: 14.22,
         
     | 
| 
      
 89 
     | 
    
         
            +
                world_historical: 12.4,
         
     | 
| 
      
 90 
     | 
    
         
            +
                changed: 1.57
         
     | 
| 
      
 91 
     | 
    
         
            +
              },
         
     | 
| 
      
 92 
     | 
    
         
            +
              {
         
     | 
| 
      
 93 
     | 
    
         
            +
                model: "AWI-CM-1-1-MR",
         
     | 
| 
      
 94 
     | 
    
         
            +
                world: 15.72,
         
     | 
| 
      
 95 
     | 
    
         
            +
                world_historical: 13.76,
         
     | 
| 
      
 96 
     | 
    
         
            +
                changed: 1.72
         
     | 
| 
      
 97 
     | 
    
         
            +
              },
         
     | 
| 
      
 98 
     | 
    
         
            +
              {
         
     | 
| 
      
 99 
     | 
    
         
            +
                model: "NESM3",
         
     | 
| 
      
 100 
     | 
    
         
            +
                world: 15.64,
         
     | 
| 
      
 101 
     | 
    
         
            +
                world_historical: 13.66,
         
     | 
| 
      
 102 
     | 
    
         
            +
                changed: 1.73
         
     | 
| 
      
 103 
     | 
    
         
            +
              },
         
     | 
| 
      
 104 
     | 
    
         
            +
              {
         
     | 
| 
      
 105 
     | 
    
         
            +
                model: "ACCESS-ESM1-5",
         
     | 
| 
      
 106 
     | 
    
         
            +
                world: 16.54,
         
     | 
| 
      
 107 
     | 
    
         
            +
                world_historical: 14.54,
         
     | 
| 
      
 108 
     | 
    
         
            +
                changed: 1.75
         
     | 
| 
      
 109 
     | 
    
         
            +
              },
         
     | 
| 
      
 110 
     | 
    
         
            +
              {
         
     | 
| 
      
 111 
     | 
    
         
            +
                model: "CNRM-ESM2-1",
         
     | 
| 
      
 112 
     | 
    
         
            +
                world: 15.65,
         
     | 
| 
      
 113 
     | 
    
         
            +
                world_historical: 13.64,
         
     | 
| 
      
 114 
     | 
    
         
            +
                changed: 1.76
         
     | 
| 
      
 115 
     | 
    
         
            +
              },
         
     | 
| 
      
 116 
     | 
    
         
            +
              {
         
     | 
| 
      
 117 
     | 
    
         
            +
                model: "EC-Earth3",
         
     | 
| 
      
 118 
     | 
    
         
            +
                world: 16.02,
         
     | 
| 
      
 119 
     | 
    
         
            +
                world_historical: 13.94,
         
     | 
| 
      
 120 
     | 
    
         
            +
                changed: 1.83
         
     | 
| 
      
 121 
     | 
    
         
            +
              },
         
     | 
| 
      
 122 
     | 
    
         
            +
              {
         
     | 
| 
      
 123 
     | 
    
         
            +
                model: "CNRM-CM6-1",
         
     | 
| 
      
 124 
     | 
    
         
            +
                world: 15.0,
         
     | 
| 
      
 125 
     | 
    
         
            +
                world_historical: 12.88,
         
     | 
| 
      
 126 
     | 
    
         
            +
                changed: 1.87
         
     | 
| 
      
 127 
     | 
    
         
            +
              },
         
     | 
| 
      
 128 
     | 
    
         
            +
              {
         
     | 
| 
      
 129 
     | 
    
         
            +
                model: "CESM2",
         
     | 
| 
      
 130 
     | 
    
         
            +
                world: 16.21,
         
     | 
| 
      
 131 
     | 
    
         
            +
                world_historical: 14.02,
         
     | 
| 
      
 132 
     | 
    
         
            +
                changed: 1.94
         
     | 
| 
      
 133 
     | 
    
         
            +
              },
         
     | 
| 
      
 134 
     | 
    
         
            +
              {
         
     | 
| 
      
 135 
     | 
    
         
            +
                model: "IPSL-CM6A-LR",
         
     | 
| 
      
 136 
     | 
    
         
            +
                world: 15.17,
         
     | 
| 
      
 137 
     | 
    
         
            +
                world_historical: 12.88,
         
     | 
| 
      
 138 
     | 
    
         
            +
                changed: 2.04
         
     | 
| 
      
 139 
     | 
    
         
            +
              },
         
     | 
| 
      
 140 
     | 
    
         
            +
              {
         
     | 
| 
      
 141 
     | 
    
         
            +
                model: "CESM2-WACCM",
         
     | 
| 
      
 142 
     | 
    
         
            +
                world: 16.23,
         
     | 
| 
      
 143 
     | 
    
         
            +
                world_historical: 13.84,
         
     | 
| 
      
 144 
     | 
    
         
            +
                changed: 2.14
         
     | 
| 
      
 145 
     | 
    
         
            +
              },
         
     | 
| 
      
 146 
     | 
    
         
            +
              {
         
     | 
| 
      
 147 
     | 
    
         
            +
                model: "ACCESS-CM2",
         
     | 
| 
      
 148 
     | 
    
         
            +
                world: 16.27,
         
     | 
| 
      
 149 
     | 
    
         
            +
                world_historical: 13.84,
         
     | 
| 
      
 150 
     | 
    
         
            +
                changed: 2.18
         
     | 
| 
      
 151 
     | 
    
         
            +
              },
         
     | 
| 
      
 152 
     | 
    
         
            +
              {
         
     | 
| 
      
 153 
     | 
    
         
            +
                model: "UKESM1-0-LL",
         
     | 
| 
      
 154 
     | 
    
         
            +
                world: 16.06,
         
     | 
| 
      
 155 
     | 
    
         
            +
                world_historical: 13.45,
         
     | 
| 
      
 156 
     | 
    
         
            +
                changed: 2.36
         
     | 
| 
      
 157 
     | 
    
         
            +
              },
         
     | 
| 
      
 158 
     | 
    
         
            +
              {
         
     | 
| 
      
 159 
     | 
    
         
            +
                model: "EC-Earth3-Veg",
         
     | 
| 
      
 160 
     | 
    
         
            +
                world: 16.15,
         
     | 
| 
      
 161 
     | 
    
         
            +
                world_historical: 13.53,
         
     | 
| 
      
 162 
     | 
    
         
            +
                changed: 2.37
         
     | 
| 
      
 163 
     | 
    
         
            +
              },
         
     | 
| 
      
 164 
     | 
    
         
            +
              {
         
     | 
| 
      
 165 
     | 
    
         
            +
                model: "HadGEM3-GC31-LL",
         
     | 
| 
      
 166 
     | 
    
         
            +
                world: 16.34,
         
     | 
| 
      
 167 
     | 
    
         
            +
                world_historical: 13.71,
         
     | 
| 
      
 168 
     | 
    
         
            +
                changed: 2.38
         
     | 
| 
      
 169 
     | 
    
         
            +
              },
         
     | 
| 
      
 170 
     | 
    
         
            +
              {
         
     | 
| 
      
 171 
     | 
    
         
            +
                model: "CMCC-CM2-SR5",
         
     | 
| 
      
 172 
     | 
    
         
            +
                world: 16.87,
         
     | 
| 
      
 173 
     | 
    
         
            +
                world_historical: 14.1,
         
     | 
| 
      
 174 
     | 
    
         
            +
                changed: 2.52
         
     | 
| 
      
 175 
     | 
    
         
            +
              },
         
     | 
| 
      
 176 
     | 
    
         
            +
              {
         
     | 
| 
      
 177 
     | 
    
         
            +
                model: "CNRM-CM6-1-HR",
         
     | 
| 
      
 178 
     | 
    
         
            +
                world: 15.12,
         
     | 
| 
      
 179 
     | 
    
         
            +
                world_historical: 12.32,
         
     | 
| 
      
 180 
     | 
    
         
            +
                changed: 2.54
         
     | 
| 
      
 181 
     | 
    
         
            +
              },
         
     | 
| 
      
 182 
     | 
    
         
            +
              {
         
     | 
| 
      
 183 
     | 
    
         
            +
                model: "CanESM5",
         
     | 
| 
      
 184 
     | 
    
         
            +
                world: 16.39,
         
     | 
| 
      
 185 
     | 
    
         
            +
                world_historical: 13.54,
         
     | 
| 
      
 186 
     | 
    
         
            +
                changed: 2.61
         
     | 
| 
      
 187 
     | 
    
         
            +
              },
         
     | 
| 
      
 188 
     | 
    
         
            +
              {
         
     | 
| 
      
 189 
     | 
    
         
            +
                model: "KACE-1-0-G",
         
     | 
| 
      
 190 
     | 
    
         
            +
                world: 16.47,
         
     | 
| 
      
 191 
     | 
    
         
            +
                world_historical: 13.55,
         
     | 
| 
      
 192 
     | 
    
         
            +
                changed: 2.67
         
     | 
| 
      
 193 
     | 
    
         
            +
              }
         
     | 
| 
      
 194 
     | 
    
         
            +
            ]
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            [ x | {fst: x, snd: []} <- [{fst: 5, third: "hello", snd: []}, {fst: 6, snd: [7, 8]}] ]
         
     | 
| 
      
 1 
     | 
    
         
            +
            [ x | {fst: x, snd: []} <- [{fst: 5, third: "hello", snd: []}, {fst: 6, snd: [7, 8]}] ]
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -264,3 +264,13 @@ let nub xs = 
     | 
|
| 
       264 
264 
     | 
    
         
             
            -- Int -> Int -> [a] -> [a]
         
     | 
| 
       265 
265 
     | 
    
         
             
            let slice begin end xs =
         
     | 
| 
       266 
266 
     | 
    
         
             
               take (end - begin) (drop begin xs);
         
     | 
| 
      
 267 
     | 
    
         
            +
             
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
            -- (a -> Boolean) -> List a -> (List a, List a)
         
     | 
| 
      
 270 
     | 
    
         
            +
            let splitOn p data = 
         
     | 
| 
      
 271 
     | 
    
         
            +
                let go fls trs [] = (reverse fls, reverse trs);
         
     | 
| 
      
 272 
     | 
    
         
            +
                    go fls trs (x : xs) = 
         
     | 
| 
      
 273 
     | 
    
         
            +
                        if p x
         
     | 
| 
      
 274 
     | 
    
         
            +
                        then go fls (x : trs) xs
         
     | 
| 
      
 275 
     | 
    
         
            +
                        else go (x : fls) trs xs
         
     | 
| 
      
 276 
     | 
    
         
            +
                in go [] [] data;
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            let split [] = ([], []);
         
     | 
| 
      
 2 
     | 
    
         
            +
                split (x : xs) =
         
     | 
| 
      
 3 
     | 
    
         
            +
                  let (ys, zs) = split xs in (x : zs, ys);
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            let merge xs ys =
         
     | 
| 
      
 6 
     | 
    
         
            +
                   match (xs, ys) as {
         
     | 
| 
      
 7 
     | 
    
         
            +
                      ([], _) -> ys;
         
     | 
| 
      
 8 
     | 
    
         
            +
                      (x : xs', []) -> xs;
         
     | 
| 
      
 9 
     | 
    
         
            +
                      (x : xs', y : ys') ->
         
     | 
| 
      
 10 
     | 
    
         
            +
                         if x < y
         
     | 
| 
      
 11 
     | 
    
         
            +
                         then x : merge xs' ys
         
     | 
| 
      
 12 
     | 
    
         
            +
                         else y : merge xs ys'
         
     | 
| 
      
 13 
     | 
    
         
            +
                   };
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            let mergesort xs =
         
     | 
| 
      
 16 
     | 
    
         
            +
                   if length xs < 2
         
     | 
| 
      
 17 
     | 
    
         
            +
                   then xs
         
     | 
| 
      
 18 
     | 
    
         
            +
                   else
         
     | 
| 
      
 19 
     | 
    
         
            +
                      let (ys, zs) = split xs in
         
     | 
| 
      
 20 
     | 
    
         
            +
                      merge (mergesort ys) (mergesort zs);
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            -- assume data is sorted
         
     | 
| 
      
 23 
     | 
    
         
            +
            let findQuantile q p data = 
         
     | 
| 
      
 24 
     | 
    
         
            +
                let rank = (p / q) * (length data - 1)
         
     | 
| 
      
 25 
     | 
    
         
            +
                in if rank == floor rank
         
     | 
| 
      
 26 
     | 
    
         
            +
                then nth rank data
         
     | 
| 
      
 27 
     | 
    
         
            +
                else let x1 = floor rank;
         
     | 
| 
      
 28 
     | 
    
         
            +
                         x2 = ceiling rank;
         
     | 
| 
      
 29 
     | 
    
         
            +
                         left = nth x1 data;
         
     | 
| 
      
 30 
     | 
    
         
            +
                         right = nth x2 data
         
     | 
| 
      
 31 
     | 
    
         
            +
                    in left + (rank - x1) * (right - left);
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            let findPercentile = findQuantile 100;
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            let accumBins data Nil = [];
         
     | 
| 
      
 36 
     | 
    
         
            +
                accumBins data [l] = [];
         
     | 
| 
      
 37 
     | 
    
         
            +
                accumBins data (l : r : es) =  
         
     | 
| 
      
 38 
     | 
    
         
            +
                    let (ge, le) = splitOn (fun x -> x <= r) data
         
     | 
| 
      
 39 
     | 
    
         
            +
                    in (le , r - l) : accumBins ge (r : es);
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            let cut data nbins = 
         
     | 
| 
      
 42 
     | 
    
         
            +
                let low = minimum data;
         
     | 
| 
      
 43 
     | 
    
         
            +
                    binwidth = (maximum data - low) / nbins;
         
     | 
| 
      
 44 
     | 
    
         
            +
                    edges = [ low + (x * binwidth) | x <- enumFromTo 0 nbins ]
         
     | 
| 
      
 45 
     | 
    
         
            +
                in accumBins data edges;
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            let qcut data qs = 
         
     | 
| 
      
 48 
     | 
    
         
            +
                    let low = minimum data;
         
     | 
| 
      
 49 
     | 
    
         
            +
                        high = maximum data;
         
     | 
| 
      
 50 
     | 
    
         
            +
                        edges = append (low : [ findPercentile x data | x <- qs], [high])
         
     | 
| 
      
 51 
     | 
    
         
            +
                    in accumBins data edges;
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            let likelihoodLE data target = 
         
     | 
| 
      
 54 
     | 
    
         
            +
                length (filter (fun x -> x <= target) data) / length data;
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            let likelihoodGE data target = 
         
     | 
| 
      
 57 
     | 
    
         
            +
                length (filter (fun x -> x >= target) data) / length data;
         
     | 
    
        package/dist/fluid/fluid.mjs
    CHANGED
    
    | 
         @@ -25066,7 +25066,7 @@ var toAff2 = (f) => (a) => (b) => { 
     | 
|
| 
       25066 
25066 
     | 
    
         
             
            // output-es/Module.Node/index.js
         
     | 
| 
       25067 
25067 
     | 
    
         
             
            var loadFile = (v) => (v1) => (dictMonadAff) => {
         
     | 
| 
       25068 
25068 
     | 
    
         
             
              const Monad0 = dictMonadAff.MonadEffect0().Monad0();
         
     | 
| 
       25069 
     | 
    
         
            -
              return (dictMonadError) => Monad0.Bind1().bind(dictMonadAff.liftAff(toAff2(readTextFile)( 
     | 
| 
      
 25069 
     | 
    
         
            +
              return (dictMonadError) => Monad0.Bind1().bind(dictMonadAff.liftAff(toAff2(readTextFile)(UTF8)(v + "/" + v1 + ".fld")))((buffer) => Monad0.Applicative0().pure(buffer));
         
     | 
| 
       25070 
25070 
     | 
    
         
             
            };
         
     | 
| 
       25071 
25071 
     | 
    
         | 
| 
       25072 
25072 
     | 
    
         
             
            // output-es/Node.ChildProcess/foreign.js
         
     | 
| 
         @@ -28365,41 +28365,6 @@ var graphEval2 = /* @__PURE__ */ graphEval(monadErrorAff); 
     | 
|
| 
       28365 
28365 
     | 
    
         
             
            var fromFoldable29 = /* @__PURE__ */ (() => fromFoldableImpl(foldableList.foldr))();
         
     | 
| 
       28366 
28366 
     | 
    
         
             
            var Evaluate = (value0) => $Command("Evaluate", value0);
         
     | 
| 
       28367 
28367 
     | 
    
         
             
            var Publish = (value0) => (value1) => $Command("Publish", value0, value1);
         
     | 
| 
       28368 
     | 
    
         
            -
            var publish = /* @__PURE__ */ (() => $Parser(
         
     | 
| 
       28369 
     | 
    
         
            -
              "MultP",
         
     | 
| 
       28370 
     | 
    
         
            -
              $MultPE(
         
     | 
| 
       28371 
     | 
    
         
            -
                parserFunctor.map(Publish)(parserFunctor.map(Folder)(option(readerAsk)((() => {
         
     | 
| 
       28372 
     | 
    
         
            -
                  const $0 = help("root directory of website under dist/");
         
     | 
| 
       28373 
     | 
    
         
            -
                  const $1 = $0._2._2.tag === "Nothing" ? Nothing : $0._2._2;
         
     | 
| 
       28374 
     | 
    
         
            -
                  return $Mod(
         
     | 
| 
       28375 
     | 
    
         
            -
                    (x) => $0._1({
         
     | 
| 
       28376 
     | 
    
         
            -
                      optNames: [$OptName("OptShort", "w"), $OptName("OptLong", "website"), ...x.optNames],
         
     | 
| 
       28377 
     | 
    
         
            -
                      optCompleter: x.optCompleter,
         
     | 
| 
       28378 
     | 
    
         
            -
                      optNoArgError: x.optNoArgError
         
     | 
| 
       28379 
     | 
    
         
            -
                    }),
         
     | 
| 
       28380 
     | 
    
         
            -
                    $DefaultProp($Maybe("Just", "Misc"), $1.tag === "Nothing" ? Nothing : $1),
         
     | 
| 
       28381 
     | 
    
         
            -
                    (x) => $0._3(x)
         
     | 
| 
       28382 
     | 
    
         
            -
                  );
         
     | 
| 
       28383 
     | 
    
         
            -
                })()))),
         
     | 
| 
       28384 
     | 
    
         
            -
                $Parser(
         
     | 
| 
       28385 
     | 
    
         
            -
                  "AltP",
         
     | 
| 
       28386 
     | 
    
         
            -
                  flag$p(true)(foldableArray.foldMap(modMonoid)(identity3)([
         
     | 
| 
       28387 
     | 
    
         
            -
                    $Mod(
         
     | 
| 
       28388 
     | 
    
         
            -
                      flagFieldsHasName.name($OptName("OptLong", "local")),
         
     | 
| 
       28389 
     | 
    
         
            -
                      $DefaultProp(Nothing, Nothing),
         
     | 
| 
       28390 
     | 
    
         
            -
                      identity26
         
     | 
| 
       28391 
     | 
    
         
            -
                    ),
         
     | 
| 
       28392 
     | 
    
         
            -
                    $Mod(
         
     | 
| 
       28393 
     | 
    
         
            -
                      flagFieldsHasName.name($OptName("OptShort", "l")),
         
     | 
| 
       28394 
     | 
    
         
            -
                      $DefaultProp(Nothing, Nothing),
         
     | 
| 
       28395 
     | 
    
         
            -
                      identity26
         
     | 
| 
       28396 
     | 
    
         
            -
                    ),
         
     | 
| 
       28397 
     | 
    
         
            -
                    help("Are you publishing from source (false), or an npm package (true)?")
         
     | 
| 
       28398 
     | 
    
         
            -
                  ])),
         
     | 
| 
       28399 
     | 
    
         
            -
                  $Parser("NilP", false)
         
     | 
| 
       28400 
     | 
    
         
            -
                )
         
     | 
| 
       28401 
     | 
    
         
            -
              )
         
     | 
| 
       28402 
     | 
    
         
            -
            ))();
         
     | 
| 
       28403 
28368 
     | 
    
         
             
            var parseImports = /* @__PURE__ */ $Parser(
         
     | 
| 
       28404 
28369 
     | 
    
         
             
              "BindP",
         
     | 
| 
       28405 
28370 
     | 
    
         
             
              /* @__PURE__ */ manyM(/* @__PURE__ */ option(readerAsk)(/* @__PURE__ */ (() => {
         
     | 
| 
         @@ -28417,7 +28382,7 @@ var parseImports = /* @__PURE__ */ $Parser( 
     | 
|
| 
       28417 
28382 
     | 
    
         
             
                );
         
     | 
| 
       28418 
28383 
     | 
    
         
             
              })()))
         
     | 
| 
       28419 
28384 
     | 
    
         
             
            );
         
     | 
| 
       28420 
     | 
    
         
            -
            var  
     | 
| 
      
 28385 
     | 
    
         
            +
            var evaluate = (v) => {
         
     | 
| 
       28421 
28386 
     | 
    
         
             
              const $0 = v._1.fileName;
         
     | 
| 
       28422 
28387 
     | 
    
         
             
              return _bind(loadProgCxt2(v._1.imports)(v._1.datasets))((progCxt) => _bind(prepConfig2($0)(progCxt))((v1) => _bind(graphEval2(v1.gconfig)(v1.e))((v2) => _pure($Val(
         
     | 
| 
       28423 
28388 
     | 
    
         
             
                void 0,
         
     | 
| 
         @@ -28436,26 +28401,26 @@ var copyOptions = { 
     | 
|
| 
       28436 
28401 
     | 
    
         
             
              encoding: Nothing,
         
     | 
| 
       28437 
28402 
     | 
    
         
             
              shell: Nothing
         
     | 
| 
       28438 
28403 
     | 
    
         
             
            };
         
     | 
| 
       28439 
     | 
    
         
            -
            var  
     | 
| 
      
 28404 
     | 
    
         
            +
            var publish = (website) => ($$package) => exec2($$package ? "./node_modules/@explorable-viz/fluid/script/bundle-website.sh -w " + website + " -r true" : "./script/bundle-website.sh -w " + website)(copyOptions)((v) => {
         
     | 
| 
       28440 
28405 
     | 
    
         
             
              if (v.error.tag === "Just") {
         
     | 
| 
       28441 
28406 
     | 
    
         
             
                return log(showErrorImpl(v.error._1));
         
     | 
| 
       28442 
28407 
     | 
    
         
             
              }
         
     | 
| 
       28443 
28408 
     | 
    
         
             
              if (v.error.tag === "Nothing") {
         
     | 
| 
       28444 
28409 
     | 
    
         
             
                const $0 = toString2(monadEffect)(ASCII)(v.stdout);
         
     | 
| 
       28445 
28410 
     | 
    
         
             
                return () => {
         
     | 
| 
       28446 
     | 
    
         
            -
                  const  
     | 
| 
       28447 
     | 
    
         
            -
                  return log( 
     | 
| 
      
 28411 
     | 
    
         
            +
                  const $1 = $0();
         
     | 
| 
      
 28412 
     | 
    
         
            +
                  return log($1)();
         
     | 
| 
       28448 
28413 
     | 
    
         
             
                };
         
     | 
| 
       28449 
28414 
     | 
    
         
             
              }
         
     | 
| 
       28450 
28415 
     | 
    
         
             
              fail();
         
     | 
| 
       28451 
28416 
     | 
    
         
             
            });
         
     | 
| 
       28452 
28417 
     | 
    
         
             
            var dispatchCommand = (v) => {
         
     | 
| 
       28453 
28418 
     | 
    
         
             
              if (v.tag === "Evaluate") {
         
     | 
| 
       28454 
     | 
    
         
            -
                return  
     | 
| 
       28455 
     | 
    
         
            -
                })(output(v._1));
         
     | 
| 
      
 28419 
     | 
    
         
            +
                return _bind(evaluate(v._1))((v1) => _liftEffect(log(intercalate4("\n")(removeDocWS(prettyVal(highlightableUnit).pretty(v1)).lines))));
         
     | 
| 
       28456 
28420 
     | 
    
         
             
              }
         
     | 
| 
       28457 
28421 
     | 
    
         
             
              if (v.tag === "Publish") {
         
     | 
| 
       28458 
     | 
    
         
            -
                return _bind( 
     | 
| 
      
 28422 
     | 
    
         
            +
                return _bind(_map((v$1) => {
         
     | 
| 
      
 28423 
     | 
    
         
            +
                })(_liftEffect(publish(v._1)(v._2))))(() => _liftEffect(log("Published")));
         
     | 
| 
       28459 
28424 
     | 
    
         
             
              }
         
     | 
| 
       28460 
28425 
     | 
    
         
             
              fail();
         
     | 
| 
       28461 
28426 
     | 
    
         
             
            };
         
     | 
| 
         @@ -28551,9 +28516,47 @@ var program = /* @__PURE__ */ (() => $Parser( 
     | 
|
| 
       28551 
28516 
     | 
    
         
             
                })())
         
     | 
| 
       28552 
28517 
     | 
    
         
             
              )
         
     | 
| 
       28553 
28518 
     | 
    
         
             
            ))();
         
     | 
| 
      
 28519 
     | 
    
         
            +
            var commands = /* @__PURE__ */ (() => ({
         
     | 
| 
      
 28520 
     | 
    
         
            +
              publish: $Parser(
         
     | 
| 
      
 28521 
     | 
    
         
            +
                "MultP",
         
     | 
| 
      
 28522 
     | 
    
         
            +
                $MultPE(
         
     | 
| 
      
 28523 
     | 
    
         
            +
                  parserFunctor.map(Publish)(parserFunctor.map(Folder)(option(readerAsk)((() => {
         
     | 
| 
      
 28524 
     | 
    
         
            +
                    const $0 = help("root directory of website under dist/");
         
     | 
| 
      
 28525 
     | 
    
         
            +
                    const $1 = $0._2._2.tag === "Nothing" ? Nothing : $0._2._2;
         
     | 
| 
      
 28526 
     | 
    
         
            +
                    return $Mod(
         
     | 
| 
      
 28527 
     | 
    
         
            +
                      (x) => $0._1({
         
     | 
| 
      
 28528 
     | 
    
         
            +
                        optNames: [$OptName("OptShort", "w"), $OptName("OptLong", "website"), ...x.optNames],
         
     | 
| 
      
 28529 
     | 
    
         
            +
                        optCompleter: x.optCompleter,
         
     | 
| 
      
 28530 
     | 
    
         
            +
                        optNoArgError: x.optNoArgError
         
     | 
| 
      
 28531 
     | 
    
         
            +
                      }),
         
     | 
| 
      
 28532 
     | 
    
         
            +
                      $DefaultProp($Maybe("Just", "Misc"), $1.tag === "Nothing" ? Nothing : $1),
         
     | 
| 
      
 28533 
     | 
    
         
            +
                      (x) => $0._3(x)
         
     | 
| 
      
 28534 
     | 
    
         
            +
                    );
         
     | 
| 
      
 28535 
     | 
    
         
            +
                  })()))),
         
     | 
| 
      
 28536 
     | 
    
         
            +
                  $Parser(
         
     | 
| 
      
 28537 
     | 
    
         
            +
                    "AltP",
         
     | 
| 
      
 28538 
     | 
    
         
            +
                    flag$p(true)(foldableArray.foldMap(modMonoid)(identity3)([
         
     | 
| 
      
 28539 
     | 
    
         
            +
                      $Mod(
         
     | 
| 
      
 28540 
     | 
    
         
            +
                        flagFieldsHasName.name($OptName("OptLong", "local")),
         
     | 
| 
      
 28541 
     | 
    
         
            +
                        $DefaultProp(Nothing, Nothing),
         
     | 
| 
      
 28542 
     | 
    
         
            +
                        identity26
         
     | 
| 
      
 28543 
     | 
    
         
            +
                      ),
         
     | 
| 
      
 28544 
     | 
    
         
            +
                      $Mod(
         
     | 
| 
      
 28545 
     | 
    
         
            +
                        flagFieldsHasName.name($OptName("OptShort", "l")),
         
     | 
| 
      
 28546 
     | 
    
         
            +
                        $DefaultProp(Nothing, Nothing),
         
     | 
| 
      
 28547 
     | 
    
         
            +
                        identity26
         
     | 
| 
      
 28548 
     | 
    
         
            +
                      ),
         
     | 
| 
      
 28549 
     | 
    
         
            +
                      help("Are you publishing from source (false), or an npm package (true)?")
         
     | 
| 
      
 28550 
     | 
    
         
            +
                    ])),
         
     | 
| 
      
 28551 
     | 
    
         
            +
                    $Parser("NilP", false)
         
     | 
| 
      
 28552 
     | 
    
         
            +
                  )
         
     | 
| 
      
 28553 
     | 
    
         
            +
                )
         
     | 
| 
      
 28554 
     | 
    
         
            +
              ),
         
     | 
| 
      
 28555 
     | 
    
         
            +
              evaluate: parserFunctor.map(Evaluate)(program)
         
     | 
| 
      
 28556 
     | 
    
         
            +
            }))();
         
     | 
| 
       28554 
28557 
     | 
    
         
             
            var commandParser = /* @__PURE__ */ subparser(/* @__PURE__ */ (() => {
         
     | 
| 
       28555 
28558 
     | 
    
         
             
              const $0 = command("evaluate")(progDesc("Evaluate a file")({
         
     | 
| 
       28556 
     | 
    
         
            -
                infoParser:  
     | 
| 
      
 28559 
     | 
    
         
            +
                infoParser: commands.evaluate,
         
     | 
| 
       28557 
28560 
     | 
    
         
             
                infoFullDesc: true,
         
     | 
| 
       28558 
28561 
     | 
    
         
             
                infoProgDesc: mempty12,
         
     | 
| 
       28559 
28562 
     | 
    
         
             
                infoHeader: mempty12,
         
     | 
| 
         @@ -28562,7 +28565,7 @@ var commandParser = /* @__PURE__ */ subparser(/* @__PURE__ */ (() => { 
     | 
|
| 
       28562 
28565 
     | 
    
         
             
                infoPolicy: Intersperse
         
     | 
| 
       28563 
28566 
     | 
    
         
             
              }));
         
     | 
| 
       28564 
28567 
     | 
    
         
             
              const $1 = command("publish")(progDesc("Publish a file")({
         
     | 
| 
       28565 
     | 
    
         
            -
                infoParser: publish,
         
     | 
| 
      
 28568 
     | 
    
         
            +
                infoParser: commands.publish,
         
     | 
| 
       28566 
28569 
     | 
    
         
             
                infoFullDesc: true,
         
     | 
| 
       28567 
28570 
     | 
    
         
             
                infoProgDesc: mempty12,
         
     | 
| 
       28568 
28571 
     | 
    
         
             
                infoHeader: mempty12,
         
     | 
| 
         @@ -44249,7 +44249,7 @@ var gDecodeJsonCons = (dictDecodeJsonField) => (dictGDecodeJson) => (dictIsSymbo 
     | 
|
| 
       44249 
44249 
     | 
    
         
             
            // output-es/Effect.Aff.Class/index.js
         
     | 
| 
       44250 
44250 
     | 
    
         
             
            var monadAffAff = { liftAff: (x2) => x2, MonadEffect0: () => monadEffectAff };
         
     | 
| 
       44251 
44251 
     | 
    
         | 
| 
       44252 
     | 
    
         
            -
            // output-es/ 
     | 
| 
      
 44252 
     | 
    
         
            +
            // output-es/App.LoadFigure/index.js
         
     | 
| 
       44253 
44253 
     | 
    
         
             
            var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => {
         
     | 
| 
       44254 
44254 
     | 
    
         
             
              const $0 = decodeArray(caseJsonString($Either(
         
     | 
| 
       44255 
44255 
     | 
    
         
             
                "Left",
         
     | 
| 
         @@ -44264,7 +44264,6 @@ var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => { 
     | 
|
| 
       44264 
44264 
     | 
    
         
             
                }
         
     | 
| 
       44265 
44265 
     | 
    
         
             
              };
         
     | 
| 
       44266 
44266 
     | 
    
         
             
            })());
         
     | 
| 
       44267 
     | 
    
         
            -
            var specToCxt = (spec) => ({ datasets: spec.datasets, imports: spec.imports, file: spec.file, inputs: spec.inputs });
         
     | 
| 
       44268 
44267 
     | 
    
         
             
            var jsonToSpec = /* @__PURE__ */ (() => decodeRecord(gDecodeJsonCons((() => {
         
     | 
| 
       44269 
44268 
     | 
    
         
             
              const $0 = decodeArray(decodeTuple(caseJsonString($Either(
         
     | 
| 
       44270 
44269 
     | 
    
         
             
                "Left",
         
     | 
| 
         @@ -44299,6 +44298,7 @@ var jsonToSpec = /* @__PURE__ */ (() => decodeRecord(gDecodeJsonCons((() => { 
     | 
|
| 
       44299 
44298 
     | 
    
         
             
            })(gDecodeJsonCons2(gDecodeJsonCons2(gDecodeJsonNil)({ reflectSymbol: () => "inputs" })()())({ reflectSymbol: () => "imports" })()())({
         
     | 
| 
       44300 
44299 
     | 
    
         
             
              reflectSymbol: () => "file"
         
     | 
| 
       44301 
44300 
     | 
    
         
             
            })()())({ reflectSymbol: () => "datasets" })()())().decodeJson)();
         
     | 
| 
      
 44301 
     | 
    
         
            +
            var figSpecFromJson = (spec) => ({ datasets: spec.datasets, imports: spec.imports, file: spec.file, inputs: spec.inputs });
         
     | 
| 
       44302 
44302 
     | 
    
         
             
            var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([
         
     | 
| 
       44303 
44303 
     | 
    
         
             
              _bind($$get(driver)($ResponseFormat("Json", identity))(fileName))((result) => {
         
     | 
| 
       44304 
44304 
     | 
    
         
             
                if (result.tag === "Left") {
         
     | 
| 
         @@ -44319,8 +44319,8 @@ var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([ 
     | 
|
| 
       44319 
44319 
     | 
    
         
             
            var drawCode2 = (folder) => (file) => runAffs_(drawFile)([loadFile$p(folder)(file)(monadAffAff)(monadErrorAff)]);
         
     | 
| 
       44320 
44320 
     | 
    
         
             
            export {
         
     | 
| 
       44321 
44321 
     | 
    
         
             
              drawCode2 as drawCode,
         
     | 
| 
      
 44322 
     | 
    
         
            +
              figSpecFromJson,
         
     | 
| 
       44322 
44323 
     | 
    
         
             
              gDecodeJsonCons2 as gDecodeJsonCons,
         
     | 
| 
       44323 
44324 
     | 
    
         
             
              jsonToSpec,
         
     | 
| 
       44324 
     | 
    
         
            -
              loadFigure 
     | 
| 
       44325 
     | 
    
         
            -
              specToCxt
         
     | 
| 
      
 44325 
     | 
    
         
            +
              loadFigure
         
     | 
| 
       44326 
44326 
     | 
    
         
             
            };
         
     |