@explorable-viz/fluid 0.7.61 → 0.7.63
Sign up to get free protection for your applications and to get access to all the features.
- package/.spago/affjax-node/v1.0.0/.editorconfig +13 -0
- package/.spago/affjax-node/v1.0.0/.eslintrc.json +30 -0
- package/.spago/affjax-node/v1.0.0/.gitignore +13 -0
- package/.spago/pathy/v9.0.0/.editorconfig +13 -0
- package/.spago/pathy/v9.0.0/.gitignore +9 -0
- package/.spago/pathy/v9.0.0/.tidyrc.json +10 -0
- package/dist/fluid/fluid/example/linked-inputs/energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/linked-inputs/mini-energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/plot/non-renewables.fld +3 -4
- package/dist/fluid/fluid/example/slicing/linked-outputs/stacked-bar-scatter-plot.fld +1 -2
- package/dist/fluid/fluid/lib/convolution.fld +3 -3
- package/dist/fluid/shared/fluid.mjs +64 -18
- package/dist/fluid/shared/load-figure.js +185 -208
- package/package.json +1 -1
- package/script/bundle-website.sh +6 -6
- package/.spago/node-process/v11.0.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.0.0/.gitignore +0 -8
- package/.spago/node-process/v11.1.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.1.0/.gitignore +0 -8
- package/.spago/node-process/v11.2.0/.eslintrc.json +0 -29
- package/.spago/node-process/v11.2.0/.gitignore +0 -8
- package/.spago/optparse/v6.0.0/.gitignore +0 -8
- package/.spago/optparse/v6.0.0/.npmrc +0 -1
- package/dist/fluid/fluid/.DS_Store +0 -0
- package/dist/fluid/fluid/example/linked-outputs/pairs.fld +0 -2
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"env": { "browser": true },
|
3
|
+
"extends": "eslint:recommended",
|
4
|
+
"parserOptions": { "ecmaVersion": 6, "sourceType": "module" },
|
5
|
+
"rules": {
|
6
|
+
"block-scoped-var": "error",
|
7
|
+
"consistent-return": "error",
|
8
|
+
"eqeqeq": "error",
|
9
|
+
"guard-for-in": "error",
|
10
|
+
"no-bitwise": "error",
|
11
|
+
"no-caller": "error",
|
12
|
+
"no-constant-condition": ["error", { "checkLoops": false }],
|
13
|
+
"no-extra-parens": "off",
|
14
|
+
"no-extend-native": "error",
|
15
|
+
"no-loop-func": "error",
|
16
|
+
"no-new": "error",
|
17
|
+
"no-param-reassign": "error",
|
18
|
+
"no-return-assign": "error",
|
19
|
+
"no-sequences": "error",
|
20
|
+
"no-unused-expressions": "error",
|
21
|
+
"no-use-before-define": "error",
|
22
|
+
"no-undef": "error",
|
23
|
+
"no-eq-null": "error",
|
24
|
+
"radix": ["error", "always"],
|
25
|
+
"indent": ["error", 2, { "SwitchCase": 0 }],
|
26
|
+
"quotes": ["error", "double"],
|
27
|
+
"semi": ["error", "always"],
|
28
|
+
"strict": ["error", "global"]
|
29
|
+
}
|
30
|
+
}
|
@@ -19,6 +19,5 @@ let plot year countries =
|
|
19
19
|
in ScatterPlot {
|
20
20
|
caption: "Clean energy efficiency vs. proportion of renewable energy capacity",
|
21
21
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
22
|
-
|
23
|
-
ylabel: "Clean Capacity Factor"
|
22
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
24
23
|
}
|
@@ -25,6 +25,5 @@ in ScatterPlot {
|
|
25
25
|
x: country.nonRenewables / country.totalCap,
|
26
26
|
y: country.renCapFactor
|
27
27
|
}| country <- energy 2018 ["USA"]],
|
28
|
-
|
29
|
-
ylabel: "Clean Capacity Factor"
|
28
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
30
29
|
}
|
@@ -2,8 +2,8 @@ let countries = ["BRA", "EGY", "IND", "JPN"];
|
|
2
2
|
let totalFor year country =
|
3
3
|
let [ row ] = [ row | row <- nonRenewables, row.year == year, row.country == country ]
|
4
4
|
in row.nuclearOut + row.gasOut + row.coalOut + row.petrolOut;
|
5
|
-
|
6
|
-
|
5
|
+
let stack year = [ { y: country, z: totalFor year country } | country <- countries ];
|
6
|
+
let yearData year = [ row | row <- nonRenewables, row.year == year, row.country `elem` countries ]
|
7
7
|
in MultiView {
|
8
8
|
barChart: BarChart {
|
9
9
|
caption: "Non-renewables output",
|
@@ -16,7 +16,6 @@ in MultiView {
|
|
16
16
|
x: sum [ row.nuclearOut | row <- yearData year ],
|
17
17
|
y: sum [ row.nuclearCap | row <- yearData year ]
|
18
18
|
} | year <- [2014..2018] ],
|
19
|
-
|
20
|
-
ylabel: "Nuclear output"
|
19
|
+
labels: { x: "Nuclear capacity", y: "Nuclear output" }
|
21
20
|
}
|
22
21
|
}
|
@@ -33,7 +33,6 @@ MultiView {
|
|
33
33
|
in ScatterPlot {
|
34
34
|
caption: "Clean energy efficiency vs proportion of renewable energy capacity",
|
35
35
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
36
|
-
|
37
|
-
ylabel: "Clean Capacity Factor"
|
36
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
38
37
|
}
|
39
38
|
}
|
@@ -2,15 +2,15 @@ let zero n = const n;
|
|
2
2
|
wrap n n_max = ((n - 1) `mod` n_max) + 1;
|
3
3
|
extend n = min (max n 1);
|
4
4
|
|
5
|
-
let convolve image kernel
|
5
|
+
let convolve image kernel boundary =
|
6
6
|
let ((m, n), (i, j)) = (dims image, dims kernel);
|
7
7
|
(half_i, half_j) = (i `quot` 2, j `quot` 2);
|
8
8
|
area = i * j
|
9
9
|
in [| let weightedSum = sum [
|
10
10
|
image!(x, y) * kernel!(i' + 1, j' + 1)
|
11
11
|
| (i', j') <- range (0, 0) (i - 1, j - 1),
|
12
|
-
let x =
|
13
|
-
let y =
|
12
|
+
let x = boundary (m' + i' - half_i) m,
|
13
|
+
let y = boundary (n' + j' - half_j) n,
|
14
14
|
x >= 1, x <= m, y >= 1, y <= n
|
15
15
|
] in weightedSum `quot` area
|
16
16
|
| (m', n') in (m, n) |];
|
@@ -222,6 +222,15 @@ var applyMaybe = {
|
|
222
222
|
},
|
223
223
|
Functor0: () => functorMaybe
|
224
224
|
};
|
225
|
+
var altMaybe = {
|
226
|
+
alt: (v) => (v1) => {
|
227
|
+
if (v.tag === "Nothing") {
|
228
|
+
return v1;
|
229
|
+
}
|
230
|
+
return v;
|
231
|
+
},
|
232
|
+
Functor0: () => functorMaybe
|
233
|
+
};
|
225
234
|
|
226
235
|
// output-es/Data.Either/index.js
|
227
236
|
var $Either = (tag, _1) => ({ tag, _1 });
|
@@ -10170,8 +10179,7 @@ var dataTypes = /* @__PURE__ */ foldrArray(Cons)(Nil)([
|
|
10170
10179
|
/* @__PURE__ */ $Tuple("Viewport", 9)
|
10171
10180
|
]),
|
10172
10181
|
/* @__PURE__ */ dataType("Transform")([/* @__PURE__ */ $Tuple("Scale", 2), /* @__PURE__ */ $Tuple("Translate", 2)]),
|
10173
|
-
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
10174
|
-
/* @__PURE__ */ dataType("Explanation")([/* @__PURE__ */ $Tuple("Explained", 2)])
|
10182
|
+
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
10175
10183
|
]);
|
10176
10184
|
var ctrToDataType = /* @__PURE__ */ (() => fromFoldable2(foldableList)(bindList.bind(listMap((d) => listMap((v) => $Tuple(
|
10177
10185
|
v,
|
@@ -24822,7 +24830,7 @@ var parse = (dictMonadError) => {
|
|
24822
24830
|
};
|
24823
24831
|
};
|
24824
24832
|
};
|
24825
|
-
var parseProgram = (loadFile2) => (
|
24833
|
+
var parseProgram = (loadFile2) => (folders) => (file) => (dictMonadAff) => (dictMonadError) => dictMonadAff.MonadEffect0().Monad0().Bind1().bind(loadFile2(folders)(file)(dictMonadAff)(dictMonadError))((() => {
|
24826
24834
|
const $0 = parse(dictMonadError);
|
24827
24835
|
return (a) => $0(a)(topLevel(expr_));
|
24828
24836
|
})());
|
@@ -24833,9 +24841,9 @@ var module_2 = (dictMonadAff) => {
|
|
24833
24841
|
return (dictMonadError) => {
|
24834
24842
|
const parse1 = parse(dictMonadError);
|
24835
24843
|
const desugarModuleFwd = moduleFwd(dictMonadError)(boundedLattice2);
|
24836
|
-
return (loadFile2) => (
|
24844
|
+
return (loadFile2) => (folders) => (file) => (v) => {
|
24837
24845
|
const $0 = v.mods;
|
24838
|
-
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(
|
24846
|
+
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(folders)(file)(dictMonadAff)(dictMonadError))((src) => Bind1.bind(Bind1.bind(parse1(src)(module_))(desugarModuleFwd))((mod) => Applicative0.pure({
|
24839
24847
|
primitives: v.primitives,
|
24840
24848
|
mods: $List("Cons", mod, $0),
|
24841
24849
|
datasets: v.datasets
|
@@ -24873,7 +24881,7 @@ var prepConfig = (dictMonadAff) => {
|
|
24873
24881
|
return (dictMonadError) => {
|
24874
24882
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
24875
24883
|
const initialConfig1 = initialConfig(dictMonadError)(fVExpr);
|
24876
|
-
return (v) => (file) => (progCxt) => $0.bind(parseProgram(v.loadFile)(v.
|
24884
|
+
return (v) => (file) => (progCxt) => $0.bind(parseProgram(v.loadFile)(v.fluidSrcPaths)(file)(dictMonadAff)(dictMonadError))((s) => $0.bind(desug1(s))((e) => $0.bind(initialConfig1(e)(progCxt))((gconfig) => Monad0.Applicative0().pure({
|
24877
24885
|
s,
|
24878
24886
|
e,
|
24879
24887
|
gconfig
|
@@ -24885,10 +24893,10 @@ var datasetAs = (dictMonadAff) => {
|
|
24885
24893
|
const $0 = Monad0.Bind1();
|
24886
24894
|
return (dictMonadError) => {
|
24887
24895
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
24888
|
-
return (loadFile2) => (
|
24896
|
+
return (loadFile2) => (folders) => (v) => (v1) => {
|
24889
24897
|
const $1 = v1.datasets;
|
24890
24898
|
const $2 = v._1;
|
24891
|
-
return $0.bind($0.bind(parseProgram(loadFile2)(
|
24899
|
+
return $0.bind($0.bind(parseProgram(loadFile2)(folders)(v._2)(dictMonadAff)(dictMonadError))(desug1))((e\u03B1) => Monad0.Applicative0().pure({
|
24892
24900
|
primitives: v1.primitives,
|
24893
24901
|
mods: v1.mods,
|
24894
24902
|
datasets: $List("Cons", $Tuple($2, e\u03B1), $1)
|
@@ -24909,8 +24917,8 @@ var loadProgCxt = (dictMonadAff) => {
|
|
24909
24917
|
primitives,
|
24910
24918
|
mods: Nil,
|
24911
24919
|
datasets: Nil
|
24912
|
-
}))(concatM1(arrayMap(module_22(v.loadFile)(v.
|
24913
|
-
const $1 = datasetAs2(v.loadFile)(v.
|
24920
|
+
}))(concatM1(arrayMap(module_22(v.loadFile)(v.fluidSrcPaths))(["lib/prelude", ...mods]))))(concatM1(arrayMap((() => {
|
24921
|
+
const $1 = datasetAs2(v.loadFile)(v.fluidSrcPaths);
|
24914
24922
|
return (x) => $1($Tuple(x._1, x._2));
|
24915
24923
|
})())(datasets)));
|
24916
24924
|
};
|
@@ -25051,8 +25059,19 @@ var readTextFile = (encoding) => (file) => (cb) => {
|
|
25051
25059
|
};
|
25052
25060
|
return () => readFile(file, $0, handleCallback(cb));
|
25053
25061
|
};
|
25062
|
+
var stat2 = (file) => (cb) => () => stat(file, handleCallback(cb));
|
25054
25063
|
|
25055
25064
|
// output-es/Node.FS.Aff/index.js
|
25065
|
+
var toAff1 = (f) => (a) => {
|
25066
|
+
const $0 = f(a);
|
25067
|
+
return makeAff((k) => {
|
25068
|
+
const $1 = $0(k);
|
25069
|
+
return () => {
|
25070
|
+
$1();
|
25071
|
+
return nonCanceler;
|
25072
|
+
};
|
25073
|
+
});
|
25074
|
+
};
|
25056
25075
|
var toAff2 = (f) => (a) => (b) => {
|
25057
25076
|
const $0 = f(a)(b);
|
25058
25077
|
return makeAff((k) => {
|
@@ -25064,23 +25083,48 @@ var toAff2 = (f) => (a) => (b) => {
|
|
25064
25083
|
});
|
25065
25084
|
};
|
25066
25085
|
|
25086
|
+
// output-es/Foreign/foreign.js
|
25087
|
+
var isArray = Array.isArray || function(value) {
|
25088
|
+
return Object.prototype.toString.call(value) === "[object Array]";
|
25089
|
+
};
|
25090
|
+
|
25091
|
+
// output-es/Node.FS.Stats/foreign.js
|
25092
|
+
var isFileImpl = (s) => s.isFile();
|
25093
|
+
|
25067
25094
|
// output-es/Module.Node/index.js
|
25068
|
-
var
|
25095
|
+
var findM = (dictMonad) => {
|
25096
|
+
const $0 = dictMonad.Bind1().Apply0();
|
25097
|
+
return (dictFoldable) => (xs) => (f) => (base) => dictFoldable.foldr((x) => (acc) => $0.apply($0.Functor0().map(altMaybe.alt)(acc))(f(x)))(dictMonad.Applicative0().pure(base))(xs);
|
25098
|
+
};
|
25099
|
+
var loadFile = (folders) => (v) => (dictMonadAff) => {
|
25069
25100
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
25070
|
-
|
25101
|
+
const $0 = Monad0.Bind1();
|
25102
|
+
const findM1 = findM(Monad0)(foldableArray);
|
25103
|
+
return (dictMonadError) => $0.bind(findM1(arrayMap((() => {
|
25104
|
+
const $1 = v + ".fld";
|
25105
|
+
return (a) => a + "/" + $1;
|
25106
|
+
})())(folders))((v1) => $0.bind(dictMonadAff.liftAff(toAff1(stat2)(v1)))((stats) => Monad0.Applicative0().pure(isFileImpl(stats) ? $Maybe("Just", v1) : Nothing)))(Nothing))((url) => {
|
25107
|
+
if (url.tag === "Nothing") {
|
25108
|
+
return throwException(error("File " + v + " not found."))();
|
25109
|
+
}
|
25110
|
+
if (url.tag === "Just") {
|
25111
|
+
return dictMonadAff.liftAff(toAff2(readTextFile)(ASCII)(url._1));
|
25112
|
+
}
|
25113
|
+
fail();
|
25114
|
+
});
|
25071
25115
|
};
|
25072
25116
|
var loadProgCxt2 = (dictMonadAff) => {
|
25073
25117
|
const loadProgCxt1 = loadProgCxt(dictMonadAff);
|
25074
25118
|
return (dictMonadError) => {
|
25075
25119
|
const loadProgCxt22 = loadProgCxt1(dictMonadError);
|
25076
|
-
return (
|
25120
|
+
return (fluidSrcPaths) => loadProgCxt22({ loadFile, fluidSrcPaths });
|
25077
25121
|
};
|
25078
25122
|
};
|
25079
25123
|
var prepConfig2 = (dictMonadAff) => {
|
25080
25124
|
const prepConfig1 = prepConfig(dictMonadAff);
|
25081
25125
|
return (dictMonadError) => {
|
25082
25126
|
const prepConfig22 = prepConfig1(dictMonadError);
|
25083
|
-
return (
|
25127
|
+
return (fluidSrcPaths) => prepConfig22({ loadFile, fluidSrcPaths });
|
25084
25128
|
};
|
25085
25129
|
};
|
25086
25130
|
|
@@ -28399,7 +28443,8 @@ var parseImports = /* @__PURE__ */ $Parser(
|
|
28399
28443
|
);
|
28400
28444
|
var evaluate = (v) => {
|
28401
28445
|
const $0 = v._1.fileName;
|
28402
|
-
|
28446
|
+
const fluidSrcPaths = ["fluid"];
|
28447
|
+
return _bind(loadProgCxt3(fluidSrcPaths)(v._1.imports)(v._1.datasets))((progCxt) => _bind(prepConfig3(fluidSrcPaths)($0)(progCxt))((v1) => _bind(graphEval2(v1.gconfig)(v1.e))((v2) => _pure($Val(
|
28403
28448
|
void 0,
|
28404
28449
|
functorBaseVal.map((v$1) => {
|
28405
28450
|
})(v2["out\u03B1"]._2)
|
@@ -28437,8 +28482,8 @@ var dispatchCommand = (v) => {
|
|
28437
28482
|
return _bind(evaluate(v._1))((v1) => _liftEffect(log(intercalate4("\n")(removeDocWS(prettyVal(highlightableUnit).pretty(v1)).lines))));
|
28438
28483
|
}
|
28439
28484
|
if (v.tag === "Publish") {
|
28440
|
-
return
|
28441
|
-
})(_liftEffect(publish(v._1)(v._2)))
|
28485
|
+
return _map((v$1) => {
|
28486
|
+
})(_liftEffect(publish(v._1)(v._2)));
|
28442
28487
|
}
|
28443
28488
|
fail();
|
28444
28489
|
};
|
@@ -28447,7 +28492,8 @@ var callback = (v) => {
|
|
28447
28492
|
return log(showErrorImpl(v._1));
|
28448
28493
|
}
|
28449
28494
|
if (v.tag === "Right") {
|
28450
|
-
return
|
28495
|
+
return () => {
|
28496
|
+
};
|
28451
28497
|
}
|
28452
28498
|
fail();
|
28453
28499
|
};
|
@@ -290,6 +290,15 @@ var applyEither = {
|
|
290
290
|
Functor0: () => functorEither
|
291
291
|
};
|
292
292
|
var applicativeEither = { pure: Right, Apply0: () => applyEither };
|
293
|
+
var altEither = {
|
294
|
+
alt: (v) => (v1) => {
|
295
|
+
if (v.tag === "Left") {
|
296
|
+
return v1;
|
297
|
+
}
|
298
|
+
return v;
|
299
|
+
},
|
300
|
+
Functor0: () => functorEither
|
301
|
+
};
|
293
302
|
|
294
303
|
// output-es/Effect/foreign.js
|
295
304
|
var pureE = function(a) {
|
@@ -1551,6 +1560,7 @@ var encode2 = /* @__PURE__ */ (() => {
|
|
1551
1560
|
// output-es/Data.HTTP.Method/index.js
|
1552
1561
|
var $Method = (tag) => tag;
|
1553
1562
|
var GET = /* @__PURE__ */ $Method("GET");
|
1563
|
+
var HEAD = /* @__PURE__ */ $Method("HEAD");
|
1554
1564
|
var print = (v2) => {
|
1555
1565
|
if (v2.tag === "Left") {
|
1556
1566
|
if (v2._1 === "OPTIONS") {
|
@@ -27787,8 +27797,7 @@ var dataTypes = /* @__PURE__ */ foldrArray(Cons)(Nil)([
|
|
27787
27797
|
/* @__PURE__ */ $Tuple("Viewport", 9)
|
27788
27798
|
]),
|
27789
27799
|
/* @__PURE__ */ dataType("Transform")([/* @__PURE__ */ $Tuple("Scale", 2), /* @__PURE__ */ $Tuple("Translate", 2)]),
|
27790
|
-
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
27791
|
-
/* @__PURE__ */ dataType("Explanation")([/* @__PURE__ */ $Tuple("Explained", 2)])
|
27800
|
+
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
27792
27801
|
]);
|
27793
27802
|
var ctrToDataType = /* @__PURE__ */ (() => fromFoldable(foldableList)(bindList.bind(listMap((d) => listMap((v) => $Tuple(
|
27794
27803
|
v,
|
@@ -34840,7 +34849,6 @@ var forDefs = (\u03C1) => (\u03C3) => {
|
|
34840
34849
|
};
|
34841
34850
|
|
34842
34851
|
// output-es/Primitive/index.js
|
34843
|
-
var $Explanation = (_1, _2, _3) => ({ tag: "Explanation", _1, _2, _3 });
|
34844
34852
|
var fanin2 = /* @__PURE__ */ fanin(categoryFn)(choiceFn);
|
34845
34853
|
var isZeroNumber = { isZero: ($0) => 0 === $0 };
|
34846
34854
|
var isZeroInt = { isZero: ($0) => 0 === $0 };
|
@@ -34916,30 +34924,6 @@ var number5 = {
|
|
34916
34924
|
return typeError(v)("Float");
|
34917
34925
|
}
|
34918
34926
|
};
|
34919
|
-
var linkedTextEntry = {
|
34920
|
-
pack: (v) => {
|
34921
|
-
if (v.tag === "Left") {
|
34922
|
-
return $BaseVal("Str", v._1);
|
34923
|
-
}
|
34924
|
-
if (v.tag === "Right") {
|
34925
|
-
return $BaseVal(
|
34926
|
-
"Constr",
|
34927
|
-
"Explained",
|
34928
|
-
$List("Cons", $Val(v._1._1, $BaseVal("Str", v._1._2)), $List("Cons", $Val(v._1._3._1, v._1._3._2), Nil))
|
34929
|
-
);
|
34930
|
-
}
|
34931
|
-
fail();
|
34932
|
-
},
|
34933
|
-
unpack: (v) => {
|
34934
|
-
if (v.tag === "Str") {
|
34935
|
-
return $Either("Left", v._1);
|
34936
|
-
}
|
34937
|
-
if (v.tag === "Constr" && v._2.tag === "Cons" && v._2._1._2.tag === "Str" && v._2._2.tag === "Cons" && v._2._2._2.tag === "Nil" && v._1 === "Explained") {
|
34938
|
-
return $Either("Right", $Explanation(v._2._2._1._1, v._2._1._2._1, v._2._2._1));
|
34939
|
-
}
|
34940
|
-
return typeError(v)("String or Explanation");
|
34941
|
-
}
|
34942
|
-
};
|
34943
34927
|
var intOrNumberOrString = {
|
34944
34928
|
pack: (v) => {
|
34945
34929
|
if (v.tag === "Left") {
|
@@ -36593,7 +36577,19 @@ var reflectDictSelState\u{1D54A}$x215ValS3 = {
|
|
36593
36577
|
})()
|
36594
36578
|
})
|
36595
36579
|
};
|
36596
|
-
var reflectDictSelState\u{1D54A}$x215ValS12 = {
|
36580
|
+
var reflectDictSelState\u{1D54A}$x215ValS12 = {
|
36581
|
+
from: () => (r) => ({
|
36582
|
+
x: (() => {
|
36583
|
+
const $0 = $$get2(showString)(mapDictString)("x")(r);
|
36584
|
+
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
36585
|
+
})(),
|
36586
|
+
y: (() => {
|
36587
|
+
const $0 = $$get2(showString)(mapDictString)("y")(r);
|
36588
|
+
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
36589
|
+
})()
|
36590
|
+
})
|
36591
|
+
};
|
36592
|
+
var reflectDictSelState\u{1D54A}$x215ValS23 = { from: () => (r) => ({ x: get_intOrNumber("x")(r), y: get_intOrNumber("y")(r) }) };
|
36597
36593
|
|
36598
36594
|
// output-es/App.View.LineChart/index.js
|
36599
36595
|
var identity27 = (x2) => x2;
|
@@ -36622,7 +36618,7 @@ var reflectDictSelState\u{1D54A}$x215ValS4 = {
|
|
36622
36618
|
const $0 = $$get2(showString)(mapDictString)("name")(r);
|
36623
36619
|
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
36624
36620
|
})(),
|
36625
|
-
points: arrayMap(dict(reflectDictSelState\u{1D54A}$
|
36621
|
+
points: arrayMap(dict(reflectDictSelState\u{1D54A}$x215ValS23.from()))(reflectValSelState\u{1D54A}ArrayV.from()($$get2(showString)(mapDictString)("points")(r)._2))
|
36626
36622
|
})
|
36627
36623
|
};
|
36628
36624
|
var reflectValSelState\u{1D54A}LinePl = {
|
@@ -36897,114 +36893,84 @@ var drawableLineChart = {
|
|
36897
36893
|
}
|
36898
36894
|
};
|
36899
36895
|
|
36900
|
-
// output-es/App.View.LinkedText/
|
36901
|
-
|
36902
|
-
|
36903
|
-
|
36904
|
-
}
|
36905
|
-
return this;
|
36896
|
+
// output-es/App.View.LinkedText/index.js
|
36897
|
+
var for_4 = /* @__PURE__ */ for_(applicativeEffect)(foldableArray);
|
36898
|
+
var forWithIndex_2 = /* @__PURE__ */ forWithIndex_(applicativeEffect)(foldableWithIndexArray);
|
36899
|
+
var reflectValSelState\u{1D54A}Linked = {
|
36900
|
+
from: () => (r) => arrayMap((v) => $Tuple(v._2.tag === "Str" ? v._2._1 : typeError(v._2)("Str"), v._1))(reflectValSelState\u{1D54A}ArrayV.from()(r))
|
36906
36901
|
};
|
36907
|
-
|
36908
|
-
|
36909
|
-
selClasses: selClasses2,
|
36910
|
-
selClassesFor: selClassesFor2,
|
36911
|
-
join: join3
|
36912
|
-
}, div, view2, selListener2) {
|
36913
|
-
div.selectAll("span").each(function(textElem) {
|
36914
|
-
var sel;
|
36915
|
-
if (textElem.conts.tag == "Left") {
|
36916
|
-
sel = accessAnn(view2[textElem.i]);
|
36917
|
-
} else {
|
36918
|
-
sel = accessAnn(view2[textElem.i]);
|
36919
|
-
}
|
36920
|
-
select_default2(this).classed(selClasses2, false).classed(selClassesFor2(sel), true).on("mousedown", (e) => {
|
36921
|
-
selListener2(e);
|
36922
|
-
}).on("mouseenter", (e) => {
|
36923
|
-
selListener2(e);
|
36924
|
-
}).on("mouseleave", (e) => {
|
36925
|
-
selListener2(e);
|
36926
|
-
});
|
36927
|
-
});
|
36928
|
-
}
|
36929
|
-
function drawLinkedText_({
|
36930
|
-
explanation,
|
36931
|
-
contents,
|
36932
|
-
accessAnn
|
36933
|
-
}, uiHelpers2, {
|
36934
|
-
divId,
|
36935
|
-
suffix,
|
36936
|
-
view: view2
|
36937
|
-
}, selListener2) {
|
36902
|
+
var setSelState3 = (v) => (redraw) => (rootElement) => {
|
36903
|
+
const $0 = selectAll2(".linked-text")(rootElement);
|
36938
36904
|
return () => {
|
36939
|
-
const
|
36940
|
-
|
36941
|
-
|
36942
|
-
|
36943
|
-
|
36944
|
-
|
36945
|
-
|
36946
|
-
|
36947
|
-
|
36948
|
-
|
36905
|
+
const elems$p = $0();
|
36906
|
+
return for_4(elems$p)((elem2) => {
|
36907
|
+
const $1 = datum2(elem2);
|
36908
|
+
return () => {
|
36909
|
+
const v1 = $1();
|
36910
|
+
const $2 = definitely("index within bounds")(index(v)(v1.i));
|
36911
|
+
const $3 = styles(elem2)(fromFoldable10([
|
36912
|
+
$Tuple("border-bottom", isTransient($2._2) ? "1px solid blue" : "none"),
|
36913
|
+
$Tuple(
|
36914
|
+
"background",
|
36915
|
+
(() => {
|
36916
|
+
if (isPrimary($2._2) && isPersistent($2._2)) {
|
36917
|
+
return "#93E9BE";
|
36918
|
+
}
|
36919
|
+
if (isSecondary($2._2) && isPersistent($2._2)) {
|
36920
|
+
return "rgb(226, 226, 226)";
|
36921
|
+
}
|
36922
|
+
return "white";
|
36923
|
+
})()
|
36924
|
+
),
|
36925
|
+
$Tuple(
|
36926
|
+
"color",
|
36927
|
+
(() => {
|
36928
|
+
if (isPrimary($2._2) && isTransient($2._2)) {
|
36929
|
+
return "blue";
|
36930
|
+
}
|
36931
|
+
if (isSecondary($2._2) && isTransient($2._2)) {
|
36932
|
+
return "royalblue";
|
36933
|
+
}
|
36934
|
+
return "black";
|
36935
|
+
})()
|
36936
|
+
)
|
36937
|
+
]))();
|
36938
|
+
return for_2(["mousedown", "mouseenter", "mouseleave"])((ev) => on(ev)(redraw)($3))();
|
36939
|
+
};
|
36940
|
+
})();
|
36949
36941
|
};
|
36950
|
-
}
|
36951
|
-
var drawLinkedText = (x1) => (x2) => (x3) => (x4) => drawLinkedText_(x1, x2, x3, x4);
|
36952
|
-
|
36953
|
-
// output-es/App.View.LinkedText/index.js
|
36954
|
-
var linkedTextHelpers = {
|
36955
|
-
explanation: (v) => {
|
36956
|
-
if (v.tag === "Left") {
|
36957
|
-
return v._1._1;
|
36958
|
-
}
|
36959
|
-
if (v.tag === "Right") {
|
36960
|
-
return v._1._1._2;
|
36961
|
-
}
|
36962
|
-
fail();
|
36963
|
-
},
|
36964
|
-
contents: (v) => {
|
36965
|
-
if (v.tag === "Left") {
|
36966
|
-
return v._1._1;
|
36967
|
-
}
|
36968
|
-
if (v.tag === "Right") {
|
36969
|
-
if (v._1._1._3._2.tag === "Str") {
|
36970
|
-
return v._1._1._3._2._1;
|
36971
|
-
}
|
36972
|
-
return typeError(v._1._1._3._2)("Str");
|
36973
|
-
}
|
36974
|
-
fail();
|
36975
|
-
},
|
36976
|
-
accessAnn: (v) => {
|
36977
|
-
if (v.tag === "Left") {
|
36978
|
-
return v._1._2;
|
36979
|
-
}
|
36980
|
-
if (v.tag === "Right") {
|
36981
|
-
return v._1._1._1;
|
36982
|
-
}
|
36983
|
-
fail();
|
36984
|
-
}
|
36985
36942
|
};
|
36943
|
+
var createRootElement2 = (v) => (div) => (childId) => {
|
36944
|
+
const $0 = createChild(div)(showElementType.show(Text2))(fromFoldable10([
|
36945
|
+
classes(["linked-text-parent"]),
|
36946
|
+
$Tuple("id", childId)
|
36947
|
+
]));
|
36948
|
+
return () => {
|
36949
|
+
const rootElement = $0();
|
36950
|
+
forWithIndex_2(v)((i) => (elem2) => {
|
36951
|
+
const $1 = createChild(rootElement)(showElementType.show(Text2))(fromFoldable10([
|
36952
|
+
classes(["linked-text"]),
|
36953
|
+
$Tuple("id", childId)
|
36954
|
+
]));
|
36955
|
+
return () => {
|
36956
|
+
const elem$p = $1();
|
36957
|
+
const $2 = setText(elem2._1)(elem$p)();
|
36958
|
+
return setDatum({ i })($2)();
|
36959
|
+
};
|
36960
|
+
})();
|
36961
|
+
return rootElement;
|
36962
|
+
};
|
36963
|
+
};
|
36964
|
+
var drawable2LinkedText = { createRootElement: createRootElement2, setSelState: setSelState3 };
|
36986
36965
|
var drawableLinkedText = {
|
36987
36966
|
draw: (rSpec) => (figVal) => (v) => (redraw) => {
|
36988
|
-
const $0 =
|
36989
|
-
const $1 = selListener(figVal)(redraw)((v1) => (x2) => constrArg("LinkedText")(0)(listElement(v1.i)(x2)));
|
36967
|
+
const $0 = selListener(figVal)(redraw)((v1) => (x2) => constrArg("LinkedText")(0)(listElement(v1.i)(x2)));
|
36990
36968
|
return () => {
|
36991
|
-
const $
|
36992
|
-
return $
|
36969
|
+
const $1 = $0();
|
36970
|
+
return draw$p(drawable2LinkedText)(uiHelpers)(rSpec)($1)();
|
36993
36971
|
};
|
36994
36972
|
}
|
36995
36973
|
};
|
36996
|
-
var reflectValSelState\u{1D54A}Linked = {
|
36997
|
-
from: () => (r) => arrayMap((x2) => {
|
36998
|
-
const $0 = linkedTextEntry.unpack(x2._2);
|
36999
|
-
if ($0.tag === "Left") {
|
37000
|
-
return $Either("Left", $Tuple($0._1, x2._1));
|
37001
|
-
}
|
37002
|
-
if ($0.tag === "Right") {
|
37003
|
-
return $Either("Right", $Tuple($0._1, x2._1));
|
37004
|
-
}
|
37005
|
-
fail();
|
37006
|
-
})(reflectValSelState\u{1D54A}ArrayV.from()(r))
|
37007
|
-
};
|
37008
36974
|
|
37009
36975
|
// output-es/App.View.MatrixView/foreign.js
|
37010
36976
|
function setSelState4({
|
@@ -37188,8 +37154,7 @@ function drawScatterPlot_(scatterPlotHelpers2, uiHelpers2, {
|
|
37188
37154
|
view: {
|
37189
37155
|
caption,
|
37190
37156
|
points,
|
37191
|
-
|
37192
|
-
ylabel
|
37157
|
+
labels
|
37193
37158
|
}
|
37194
37159
|
}, listener) {
|
37195
37160
|
return () => {
|
@@ -37215,8 +37180,8 @@ function drawScatterPlot_(scatterPlotHelpers2, uiHelpers2, {
|
|
37215
37180
|
rootElement.append("g").attr("transform", "translate(0," + height + ")").call(axisBottom(x2).tickSizeOuter(0)).selectAll("text").style("text-anchor", "middle");
|
37216
37181
|
const y2 = linear2().domain([Math.min(0, y_min), y_max]).range([height, 0]);
|
37217
37182
|
rootElement.append("g").call(axisLeft(y2).tickSizeOuter(0));
|
37218
|
-
rootElement.append("text").attr("x", width).attr("y", height + 25).style("text-anchor", "end").style("font-size", "10px").text(val(
|
37219
|
-
rootElement.append("text").attr("transform", "rotate(-90)").attr("x", -margin.top).attr("y", -margin.left + 20).style("text-anchor", "end").style("font-size", "10px").text(val(
|
37183
|
+
rootElement.append("text").attr("x", width).attr("y", height + 25).style("text-anchor", "end").style("font-size", "10px").text(val(labels.x));
|
37184
|
+
rootElement.append("text").attr("transform", "rotate(-90)").attr("x", -margin.top).attr("y", -margin.left + 20).style("text-anchor", "end").style("font-size", "10px").text(val(labels.y));
|
37220
37185
|
rootElement.append("g").selectAll("circle").data([...points.entries()].map(([i, point2]) => {
|
37221
37186
|
return { i, point: point2 };
|
37222
37187
|
})).enter().append("circle").classed("scatterplot-point", true).attr("cx", ({ point: point2 }) => x2(val(point2.x))).attr("cy", ({ point: point2 }) => y2(val(point2.y))).attr("stroke-width", 0.5);
|
@@ -37236,15 +37201,8 @@ var reflectDictSelState\u{1D54A}$x215ValS5 = {
|
|
37236
37201
|
const $0 = $$get2(showString)(mapDictString)("caption")(r);
|
37237
37202
|
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
37238
37203
|
})(),
|
37239
|
-
points: arrayMap(dict(reflectDictSelState\u{1D54A}$
|
37240
|
-
|
37241
|
-
const $0 = $$get2(showString)(mapDictString)("xlabel")(r);
|
37242
|
-
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
37243
|
-
})(),
|
37244
|
-
ylabel: (() => {
|
37245
|
-
const $0 = $$get2(showString)(mapDictString)("ylabel")(r);
|
37246
|
-
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
37247
|
-
})()
|
37204
|
+
points: arrayMap(dict(reflectDictSelState\u{1D54A}$x215ValS23.from()))(reflectValSelState\u{1D54A}ArrayV.from()($$get2(showString)(mapDictString)("points")(r)._2)),
|
37205
|
+
labels: dict(reflectDictSelState\u{1D54A}$x215ValS12.from())($$get2(showString)(mapDictString)("labels")(r)._2)
|
37248
37206
|
})
|
37249
37207
|
};
|
37250
37208
|
var scatterPlotHelpers = {
|
@@ -37334,12 +37292,12 @@ var toStringWith = (v) => {
|
|
37334
37292
|
// output-es/App.View.TableView/index.js
|
37335
37293
|
var $Filter = (tag) => tag;
|
37336
37294
|
var toUnfoldable9 = /* @__PURE__ */ toUnfoldable4(unfoldableArray);
|
37337
|
-
var
|
37295
|
+
var forWithIndex_3 = /* @__PURE__ */ forWithIndex_(applicativeEffect)(foldableWithIndexArray);
|
37338
37296
|
var $$for = /* @__PURE__ */ (() => {
|
37339
37297
|
const traverse2 = traversableArray.traverse(applicativeEffect);
|
37340
37298
|
return (x2) => (f) => traverse2(f)(x2);
|
37341
37299
|
})();
|
37342
|
-
var
|
37300
|
+
var for_5 = /* @__PURE__ */ for_(applicativeEffect)(foldableArray);
|
37343
37301
|
var Interactive = /* @__PURE__ */ $Filter("Interactive");
|
37344
37302
|
var prim = (v) => {
|
37345
37303
|
if (v._2.tag === "Int") {
|
@@ -37363,7 +37321,7 @@ var record_isVisible = (r) => filter((v) => {
|
|
37363
37321
|
}
|
37364
37322
|
fail();
|
37365
37323
|
})(r).length !== 0;
|
37366
|
-
var
|
37324
|
+
var createRootElement3 = (v) => (div) => (childId) => {
|
37367
37325
|
const $0 = v.colNames;
|
37368
37326
|
const $1 = v.filter;
|
37369
37327
|
const $2 = v.rows;
|
@@ -37381,7 +37339,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
37381
37339
|
const colNames$p = ["__n", ...$0];
|
37382
37340
|
const $4 = createChild(rootElement)(showElementType.show(THead))(fromFoldable10([]))();
|
37383
37341
|
const row = createChild($4)(showElementType.show(TR))(fromFoldable10([]))();
|
37384
|
-
|
37342
|
+
forWithIndex_3(colNames$p)((j) => (colName) => {
|
37385
37343
|
const value = (() => {
|
37386
37344
|
if (colName === "__n") {
|
37387
37345
|
if ($1 === "Relevant") {
|
@@ -37403,7 +37361,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
37403
37361
|
};
|
37404
37362
|
})();
|
37405
37363
|
const body = createChild(rootElement)(showElementType.show(TBody))(fromFoldable10([]))();
|
37406
|
-
|
37364
|
+
forWithIndex_3($2)((i) => (row$1) => {
|
37407
37365
|
const $5 = createChild(body)(showElementType.show(TR))(fromFoldable10([
|
37408
37366
|
classes(["table-row"])
|
37409
37367
|
]));
|
@@ -37411,7 +37369,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
37411
37369
|
return () => {
|
37412
37370
|
const $7 = $5();
|
37413
37371
|
const row$p = $6($7)();
|
37414
|
-
return
|
37372
|
+
return forWithIndex_3([showIntImpl(i + 1 | 0), ...arrayMap(prim)(row$1)])((j) => (value) => {
|
37415
37373
|
const $8 = createChild(row$p)(showElementType.show(TD))(fromFoldable10([
|
37416
37374
|
classes(j >= 0 ? ["table-cell"] : [])
|
37417
37375
|
]));
|
@@ -37487,7 +37445,7 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
37487
37445
|
const $3 = selectAll2(".table-cell")(rootElement);
|
37488
37446
|
return () => {
|
37489
37447
|
const cells = $3();
|
37490
|
-
|
37448
|
+
for_5(cells)((cell) => {
|
37491
37449
|
const $42 = datum2(cell);
|
37492
37450
|
return () => {
|
37493
37451
|
const v12 = $42();
|
@@ -37545,11 +37503,11 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
37545
37503
|
};
|
37546
37504
|
})();
|
37547
37505
|
const v1 = partition(snd)(a$p);
|
37548
|
-
|
37506
|
+
for_5(v1.no)((() => {
|
37549
37507
|
const $42 = classed("hidden")(true);
|
37550
37508
|
return (x2) => $42(x2._1);
|
37551
37509
|
})())();
|
37552
|
-
|
37510
|
+
for_5(v1.yes)((() => {
|
37553
37511
|
const $42 = classed("hidden")(false);
|
37554
37512
|
return (x2) => $42(x2._1);
|
37555
37513
|
})())();
|
@@ -37557,7 +37515,7 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
37557
37515
|
setText($1 + " (" + showIntImpl($0.length - v1.no.length | 0) + " of " + showIntImpl($0.length) + ")")($4)();
|
37558
37516
|
};
|
37559
37517
|
};
|
37560
|
-
var drawable2TableView = { createRootElement:
|
37518
|
+
var drawable2TableView = { createRootElement: createRootElement3, setSelState: setSelState6 };
|
37561
37519
|
var drawableTableView = {
|
37562
37520
|
draw: (rSpec) => (figVal) => (v) => (redraw) => {
|
37563
37521
|
const $0 = selListener(figVal)(redraw)((v1) => (x2) => listElement(v1.i)(dictVal(v1.colName)(x2)));
|
@@ -43650,6 +43608,7 @@ var concatM2 = (dictMonad) => foldrArray((() => {
|
|
43650
43608
|
const $0 = dictMonad.Bind1();
|
43651
43609
|
return (f) => (g) => (a) => $0.bind(f(a))(g);
|
43652
43610
|
})())(dictMonad.Applicative0().pure);
|
43611
|
+
var Folder = (x2) => x2;
|
43653
43612
|
var parse = (dictMonadError) => {
|
43654
43613
|
const $0 = dictMonadError.MonadThrow0();
|
43655
43614
|
const $1 = $0.Monad0().Applicative0().pure;
|
@@ -43667,7 +43626,7 @@ var parse = (dictMonadError) => {
|
|
43667
43626
|
};
|
43668
43627
|
};
|
43669
43628
|
};
|
43670
|
-
var parseProgram = (loadFile2) => (
|
43629
|
+
var parseProgram = (loadFile2) => (folders) => (file) => (dictMonadAff) => (dictMonadError) => dictMonadAff.MonadEffect0().Monad0().Bind1().bind(loadFile2(folders)(file)(dictMonadAff)(dictMonadError))((() => {
|
43671
43630
|
const $0 = parse(dictMonadError);
|
43672
43631
|
return (a) => $0(a)(topLevel(expr_));
|
43673
43632
|
})());
|
@@ -43678,9 +43637,9 @@ var module_2 = (dictMonadAff) => {
|
|
43678
43637
|
return (dictMonadError) => {
|
43679
43638
|
const parse1 = parse(dictMonadError);
|
43680
43639
|
const desugarModuleFwd = moduleFwd(dictMonadError)(boundedLattice2);
|
43681
|
-
return (loadFile2) => (
|
43640
|
+
return (loadFile2) => (folders) => (file) => (v) => {
|
43682
43641
|
const $0 = v.mods;
|
43683
|
-
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(
|
43642
|
+
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(folders)(file)(dictMonadAff)(dictMonadError))((src) => Bind1.bind(Bind1.bind(parse1(src)(module_))(desugarModuleFwd))((mod) => Applicative0.pure({
|
43684
43643
|
primitives: v.primitives,
|
43685
43644
|
mods: $List("Cons", mod, $0),
|
43686
43645
|
datasets: v.datasets
|
@@ -43718,7 +43677,7 @@ var prepConfig = (dictMonadAff) => {
|
|
43718
43677
|
return (dictMonadError) => {
|
43719
43678
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
43720
43679
|
const initialConfig1 = initialConfig(dictMonadError)(fVExpr);
|
43721
|
-
return (v) => (file) => (progCxt) => $0.bind(parseProgram(v.loadFile)(v.
|
43680
|
+
return (v) => (file) => (progCxt) => $0.bind(parseProgram(v.loadFile)(v.fluidSrcPaths)(file)(dictMonadAff)(dictMonadError))((s) => $0.bind(desug1(s))((e) => $0.bind(initialConfig1(e)(progCxt))((gconfig) => Monad0.Applicative0().pure({
|
43722
43681
|
s,
|
43723
43682
|
e,
|
43724
43683
|
gconfig
|
@@ -43730,10 +43689,10 @@ var datasetAs = (dictMonadAff) => {
|
|
43730
43689
|
const $0 = Monad0.Bind1();
|
43731
43690
|
return (dictMonadError) => {
|
43732
43691
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
43733
|
-
return (loadFile2) => (
|
43692
|
+
return (loadFile2) => (folders) => (v) => (v1) => {
|
43734
43693
|
const $1 = v1.datasets;
|
43735
43694
|
const $2 = v._1;
|
43736
|
-
return $0.bind($0.bind(parseProgram(loadFile2)(
|
43695
|
+
return $0.bind($0.bind(parseProgram(loadFile2)(folders)(v._2)(dictMonadAff)(dictMonadError))(desug1))((e\u03B1) => Monad0.Applicative0().pure({
|
43737
43696
|
primitives: v1.primitives,
|
43738
43697
|
mods: v1.mods,
|
43739
43698
|
datasets: $List("Cons", $Tuple($2, e\u03B1), $1)
|
@@ -43754,22 +43713,26 @@ var loadProgCxt = (dictMonadAff) => {
|
|
43754
43713
|
primitives,
|
43755
43714
|
mods: Nil,
|
43756
43715
|
datasets: Nil
|
43757
|
-
}))(concatM1(arrayMap(module_22(v.loadFile)(v.
|
43758
|
-
const $1 = datasetAs2(v.loadFile)(v.
|
43716
|
+
}))(concatM1(arrayMap(module_22(v.loadFile)(v.fluidSrcPaths))(["lib/prelude", ...mods]))))(concatM1(arrayMap((() => {
|
43717
|
+
const $1 = datasetAs2(v.loadFile)(v.fluidSrcPaths);
|
43759
43718
|
return (x2) => $1($Tuple(x2._1, x2._2));
|
43760
43719
|
})())(datasets)));
|
43761
43720
|
};
|
43762
43721
|
};
|
43763
43722
|
|
43764
43723
|
// output-es/Module.Web/index.js
|
43765
|
-
var
|
43766
|
-
|
43767
|
-
const Monad0 = MonadEffect0.Monad0();
|
43768
|
-
const
|
43769
|
-
const
|
43770
|
-
|
43771
|
-
|
43772
|
-
|
43724
|
+
var findM = (xs) => (f) => (base2) => foldrArray((x2) => (acc) => applyAff.apply(_map(altEither.alt)(acc))(f(x2)))(_pure(base2))(xs);
|
43725
|
+
var loadFile = (folders) => (v) => (dictMonadAff) => {
|
43726
|
+
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
43727
|
+
const bindExceptT2 = bindExceptT(Monad0);
|
43728
|
+
const applicativeExceptT2 = applicativeExceptT(Monad0);
|
43729
|
+
const pure22 = Monad0.Applicative0().pure;
|
43730
|
+
return (dictMonadError) => Monad0.Bind1().bind(bindExceptT2.bind(dictMonadAff.liftAff(findM(arrayMap((() => {
|
43731
|
+
const $0 = v + ".fld";
|
43732
|
+
return (a) => a + "/" + $0;
|
43733
|
+
})())(folders))((v1) => _bind(request(driver)({
|
43734
|
+
method: $Either("Left", HEAD),
|
43735
|
+
url: v1,
|
43773
43736
|
headers: [],
|
43774
43737
|
content: Nothing,
|
43775
43738
|
username: Nothing,
|
@@ -43777,31 +43740,53 @@ var loadFile = (v) => (v1) => (dictMonadAff) => {
|
|
43777
43740
|
withCredentials: false,
|
43778
43741
|
responseFormat: $ResponseFormat("String", identity),
|
43779
43742
|
timeout: Nothing
|
43780
|
-
})))((
|
43743
|
+
}))((resp) => _pure((() => {
|
43744
|
+
if (resp.tag === "Right") {
|
43745
|
+
if (resp._1.status === 200) {
|
43746
|
+
return $Either("Right", $Tuple(resp._1, v1));
|
43747
|
+
}
|
43748
|
+
return $Either("Left", RequestFailedError);
|
43749
|
+
}
|
43750
|
+
if (resp.tag === "Left") {
|
43751
|
+
return $Either("Left", resp._1);
|
43752
|
+
}
|
43753
|
+
fail();
|
43754
|
+
})())))($Either("Left", RequestFailedError))))((v1) => {
|
43755
|
+
const $0 = v1._2;
|
43756
|
+
return bindExceptT2.bind(applicativeExceptT2.pure())(() => bindExceptT2.bind(dictMonadAff.liftAff(request(driver)({
|
43757
|
+
method: $Either("Left", GET),
|
43758
|
+
url: $0,
|
43759
|
+
headers: [],
|
43760
|
+
content: Nothing,
|
43761
|
+
username: Nothing,
|
43762
|
+
password: Nothing,
|
43763
|
+
withCredentials: false,
|
43764
|
+
responseFormat: $ResponseFormat("String", identity),
|
43765
|
+
timeout: Nothing
|
43766
|
+
})))((contents) => applicativeExceptT2.pure(contents.body)));
|
43767
|
+
}))((result) => {
|
43781
43768
|
if (result.tag === "Left") {
|
43782
|
-
|
43783
|
-
return Bind1.bind(MonadEffect0.liftEffect(log2("Failed with " + printError($0))))(() => dictMonadError.MonadThrow0().throwError(error(printError($0))));
|
43769
|
+
return dictMonadError.MonadThrow0().throwError(error(printError(result._1)));
|
43784
43770
|
}
|
43785
43771
|
if (result.tag === "Right") {
|
43786
|
-
|
43787
|
-
return Bind1.bind(Applicative0.pure())(() => Applicative0.pure($0.body));
|
43772
|
+
return pure22(result._1);
|
43788
43773
|
}
|
43789
43774
|
fail();
|
43790
43775
|
});
|
43791
43776
|
};
|
43792
|
-
var loadFile$p = (
|
43777
|
+
var loadFile$p = (folders) => (file) => (dictMonadAff) => (dictMonadError) => dictMonadAff.MonadEffect0().Monad0().Bind1().Apply0().Functor0().map((v) => $Tuple(file, v))(loadFile(folders)(file)(dictMonadAff)(dictMonadError));
|
43793
43778
|
var loadProgCxt2 = (dictMonadAff) => {
|
43794
43779
|
const loadProgCxt1 = loadProgCxt(dictMonadAff);
|
43795
43780
|
return (dictMonadError) => {
|
43796
43781
|
const loadProgCxt22 = loadProgCxt1(dictMonadError);
|
43797
|
-
return (
|
43782
|
+
return (fluidSrcPaths) => loadProgCxt22({ loadFile, fluidSrcPaths });
|
43798
43783
|
};
|
43799
43784
|
};
|
43800
43785
|
var prepConfig2 = (dictMonadAff) => {
|
43801
43786
|
const prepConfig1 = prepConfig(dictMonadAff);
|
43802
43787
|
return (dictMonadError) => {
|
43803
43788
|
const prepConfig22 = prepConfig1(dictMonadError);
|
43804
|
-
return (
|
43789
|
+
return (fluidSrcPaths) => prepConfig22({ loadFile, fluidSrcPaths });
|
43805
43790
|
};
|
43806
43791
|
};
|
43807
43792
|
|
@@ -43995,7 +43980,7 @@ var loadFig = (v) => (dictMonadAff) => {
|
|
43995
43980
|
const prepConfig1 = prepConfig3(dictMonadError);
|
43996
43981
|
const graphEval2 = graphEval(dictMonadError);
|
43997
43982
|
const $1 = v.file;
|
43998
|
-
const $2 = v.
|
43983
|
+
const $2 = v.fluidSrcPaths;
|
43999
43984
|
const $3 = v.inputs;
|
44000
43985
|
return $0.bind(loadProgCxt3(dictMonadError)($2)(v.imports)(v.datasets))((progCxt) => $0.bind(prepConfig1($2)($1)(progCxt))((v1) => {
|
44001
43986
|
const $4 = v1.s;
|
@@ -44268,26 +44253,7 @@ var gDecodeJsonCons = (dictDecodeJsonField) => (dictGDecodeJson) => (dictIsSymbo
|
|
44268
44253
|
var monadAffAff = { liftAff: (x2) => x2, MonadEffect0: () => monadEffectAff };
|
44269
44254
|
|
44270
44255
|
// output-es/App.LoadFigure/index.js
|
44271
|
-
var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons({
|
44272
|
-
decodeJsonField: (j) => {
|
44273
|
-
if (j.tag === "Just") {
|
44274
|
-
return $Maybe(
|
44275
|
-
"Just",
|
44276
|
-
_caseJson(
|
44277
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44278
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44279
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44280
|
-
Right,
|
44281
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44282
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44283
|
-
j._1
|
44284
|
-
)
|
44285
|
-
);
|
44286
|
-
}
|
44287
|
-
return Nothing;
|
44288
|
-
}
|
44289
|
-
});
|
44290
|
-
var gDecodeJsonCons1 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => {
|
44256
|
+
var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => {
|
44291
44257
|
const $0 = decodeArray(caseJsonString($Either(
|
44292
44258
|
"Left",
|
44293
44259
|
$JsonDecodeError("TypeMismatch", "String")
|
@@ -44314,10 +44280,28 @@ var decodeJson = /* @__PURE__ */ (() => decodeRecord(gDecodeJsonCons((() => {
|
|
44314
44280
|
return Nothing;
|
44315
44281
|
}
|
44316
44282
|
};
|
44317
|
-
})())(
|
44318
|
-
|
44319
|
-
|
44320
|
-
|
44283
|
+
})())(gDecodeJsonCons({
|
44284
|
+
decodeJsonField: (j) => {
|
44285
|
+
if (j.tag === "Just") {
|
44286
|
+
return $Maybe(
|
44287
|
+
"Just",
|
44288
|
+
_caseJson(
|
44289
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44290
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44291
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44292
|
+
Right,
|
44293
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44294
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
44295
|
+
j._1
|
44296
|
+
)
|
44297
|
+
);
|
44298
|
+
}
|
44299
|
+
return Nothing;
|
44300
|
+
}
|
44301
|
+
})(gDecodeJsonCons2(gDecodeJsonCons2(gDecodeJsonCons2(gDecodeJsonNil)({ reflectSymbol: () => "inputs" })()())({ reflectSymbol: () => "imports" })()())({
|
44302
|
+
reflectSymbol: () => "fluidSrcPath"
|
44303
|
+
})()())({ reflectSymbol: () => "file" })()())({ reflectSymbol: () => "datasets" })()())().decodeJson)();
|
44304
|
+
var figSpecFromJson = (spec) => ({ fluidSrcPaths: arrayMap(Folder)(spec.fluidSrcPath), datasets: spec.datasets, imports: spec.imports, file: spec.file, inputs: spec.inputs });
|
44321
44305
|
var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([
|
44322
44306
|
_bind($$get(driver)($ResponseFormat("Json", identity))(fileName))((result) => {
|
44323
44307
|
if (result.tag === "Left") {
|
@@ -44329,24 +44313,17 @@ var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([
|
|
44329
44313
|
return throwException(error("JSON decoding failed with " + showJsonDecodeError.show(v._1)))();
|
44330
44314
|
}
|
44331
44315
|
if (v.tag === "Right") {
|
44332
|
-
return _map((v1) => $Tuple("fig", v1))(loadFig(
|
44333
|
-
fluidSrcPath: v._1.fluidSrcPath,
|
44334
|
-
datasets: v._1.datasets,
|
44335
|
-
imports: v._1.imports,
|
44336
|
-
file: v._1.file,
|
44337
|
-
inputs: v._1.inputs
|
44338
|
-
})(monadAffAff)(monadErrorAff));
|
44316
|
+
return _map((v1) => $Tuple("fig", v1))(loadFig(figSpecFromJson(v._1))(monadAffAff)(monadErrorAff));
|
44339
44317
|
}
|
44340
44318
|
}
|
44341
44319
|
fail();
|
44342
44320
|
})
|
44343
44321
|
]);
|
44344
|
-
var drawCode2 = (folder) => (file) => runAffs_(drawFile)([loadFile$p(folder)(file)(monadAffAff)(monadErrorAff)]);
|
44322
|
+
var drawCode2 = (folder) => (file) => runAffs_(drawFile)([loadFile$p([folder])(file)(monadAffAff)(monadErrorAff)]);
|
44345
44323
|
export {
|
44346
44324
|
decodeJson,
|
44347
44325
|
drawCode2 as drawCode,
|
44348
44326
|
figSpecFromJson,
|
44349
44327
|
gDecodeJsonCons2 as gDecodeJsonCons,
|
44350
|
-
gDecodeJsonCons1,
|
44351
44328
|
loadFigure
|
44352
44329
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@explorable-viz/fluid",
|
3
|
-
"version": "0.7.
|
3
|
+
"version": "0.7.63",
|
4
4
|
"description": "Fluid is an experimental programming language which integrates a bidirectional dynamic analysis to connect outputs to data sources in a fine-grained way. Fluid is implemented in PureScript and runs in the browser.",
|
5
5
|
"main": "index.js",
|
6
6
|
"repository": {
|
package/script/bundle-website.sh
CHANGED
@@ -12,25 +12,24 @@ done
|
|
12
12
|
|
13
13
|
WEBSITE_LISP_CASE=$(./$PREFIX/script/util/lisp-case.sh "$WEBSITE")
|
14
14
|
echo "$WEBSITE -> $WEBSITE_LISP_CASE"
|
15
|
-
|
15
|
+
echo "Cleaning dist/$WEBSITE_LISP_CASE"
|
16
|
+
. "${PREFIX:+$PREFIX}script/util/clean.sh" $WEBSITE_LISP_CASE
|
16
17
|
|
17
18
|
. "${PREFIX:+$PREFIX/}script/bundle-page.sh" $WEBSITE ${PREFIX:+$PREFIX}
|
18
19
|
|
19
20
|
shopt -s nullglob
|
20
21
|
|
21
22
|
# Only support one level of nesting for now
|
22
|
-
set +x
|
23
23
|
PAGES=($(for FILE in website/$WEBSITE/*.html; do
|
24
24
|
basename "$FILE" | sed 's/\.[^.]*$//'
|
25
25
|
done | sort -u))
|
26
|
-
set -x
|
27
26
|
|
28
27
|
for PAGE in "${PAGES[@]}"; do
|
29
28
|
. "${PREFIX:+$PREFIX/}script/bundle-page.sh" $WEBSITE.$PAGE ${PREFIX:+$PREFIX}
|
30
29
|
done
|
31
30
|
|
32
31
|
echo "Processing other static files:"
|
33
|
-
set +
|
32
|
+
set +u # try to remove +u
|
34
33
|
TO_COPY=()
|
35
34
|
shopt -s extglob
|
36
35
|
for CHILD in website/$WEBSITE/!(.|..); do
|
@@ -40,15 +39,16 @@ for CHILD in website/$WEBSITE/!(.|..); do
|
|
40
39
|
fi
|
41
40
|
done
|
42
41
|
shopt -u extglob
|
43
|
-
set -
|
42
|
+
set -u
|
44
43
|
|
45
44
|
for CHILD in "${TO_COPY[@]}"; do
|
46
45
|
cp -rL "$CHILD" dist/$WEBSITE_LISP_CASE
|
47
46
|
done
|
48
47
|
|
49
48
|
echo "Processing shared js files:"
|
50
|
-
cp -r "${PREFIX:+$PREFIX/}dist/fluid/shared" dist/$WEBSITE_LISP_CASE
|
51
49
|
cp -r fluid dist/$WEBSITE_LISP_CASE
|
50
|
+
cp -r "${PREFIX:+$PREFIX/}dist/fluid/shared" dist/$WEBSITE_LISP_CASE
|
51
|
+
|
52
52
|
|
53
53
|
if [[ -e "website/$SRC_PATH/test.mjs" ]]; then
|
54
54
|
cp website/$SRC_PATH/test.mjs dist/SRC_PATH_LISP_CASE/test.mjs
|
@@ -1,29 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"parserOptions": {
|
3
|
-
"ecmaVersion": 6,
|
4
|
-
"sourceType": "module"
|
5
|
-
},
|
6
|
-
"extends": "eslint:recommended",
|
7
|
-
"env": {
|
8
|
-
"node": true
|
9
|
-
},
|
10
|
-
"rules": {
|
11
|
-
"strict": [2, "global"],
|
12
|
-
"block-scoped-var": 2,
|
13
|
-
"consistent-return": 2,
|
14
|
-
"eqeqeq": [2, "smart"],
|
15
|
-
"guard-for-in": 2,
|
16
|
-
"no-caller": 2,
|
17
|
-
"no-extend-native": 2,
|
18
|
-
"no-loop-func": 2,
|
19
|
-
"no-new": 2,
|
20
|
-
"no-param-reassign": 2,
|
21
|
-
"no-return-assign": 2,
|
22
|
-
"no-unused-expressions": 2,
|
23
|
-
"no-use-before-define": 2,
|
24
|
-
"radix": [2, "always"],
|
25
|
-
"indent": [2, 2],
|
26
|
-
"quotes": [2, "double"],
|
27
|
-
"semi": [2, "always"]
|
28
|
-
}
|
29
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"parserOptions": {
|
3
|
-
"ecmaVersion": 6,
|
4
|
-
"sourceType": "module"
|
5
|
-
},
|
6
|
-
"extends": "eslint:recommended",
|
7
|
-
"env": {
|
8
|
-
"node": true
|
9
|
-
},
|
10
|
-
"rules": {
|
11
|
-
"strict": [2, "global"],
|
12
|
-
"block-scoped-var": 2,
|
13
|
-
"consistent-return": 2,
|
14
|
-
"eqeqeq": [2, "smart"],
|
15
|
-
"guard-for-in": 2,
|
16
|
-
"no-caller": 2,
|
17
|
-
"no-extend-native": 2,
|
18
|
-
"no-loop-func": 2,
|
19
|
-
"no-new": 2,
|
20
|
-
"no-param-reassign": 2,
|
21
|
-
"no-return-assign": 2,
|
22
|
-
"no-unused-expressions": 2,
|
23
|
-
"no-use-before-define": 2,
|
24
|
-
"radix": [2, "always"],
|
25
|
-
"indent": [2, 2],
|
26
|
-
"quotes": [2, "double"],
|
27
|
-
"semi": [2, "always"]
|
28
|
-
}
|
29
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"parserOptions": {
|
3
|
-
"ecmaVersion": 6,
|
4
|
-
"sourceType": "module"
|
5
|
-
},
|
6
|
-
"extends": "eslint:recommended",
|
7
|
-
"env": {
|
8
|
-
"node": true
|
9
|
-
},
|
10
|
-
"rules": {
|
11
|
-
"strict": [2, "global"],
|
12
|
-
"block-scoped-var": 2,
|
13
|
-
"consistent-return": 2,
|
14
|
-
"eqeqeq": [2, "smart"],
|
15
|
-
"guard-for-in": 2,
|
16
|
-
"no-caller": 2,
|
17
|
-
"no-extend-native": 2,
|
18
|
-
"no-loop-func": 2,
|
19
|
-
"no-new": 2,
|
20
|
-
"no-param-reassign": 2,
|
21
|
-
"no-return-assign": 2,
|
22
|
-
"no-unused-expressions": 2,
|
23
|
-
"no-use-before-define": 2,
|
24
|
-
"radix": [2, "always"],
|
25
|
-
"indent": [2, 2],
|
26
|
-
"quotes": [2, "double"],
|
27
|
-
"semi": [2, "always"]
|
28
|
-
}
|
29
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
package-lock=false
|
Binary file
|