@@ -2,9 +2,9 @@
22 // output/Control.Semigroupoid/index.js
33 var semigroupoidFn = {
44 compose: function(f) {
5− return function(g) {
6− return function(x) {
7− return f(g(x));
5+ return function(g2) {
6+ return function(x2) {
7+ return f(g2(x2));
88 };
99 };
1010 }
@@ -15,8 +15,8 @@
1515 return dict.identity;
1616 };
1717 var categoryFn = {
18− identity: function(x) {
19− return x;
18+ identity: function(x2) {
19+ return x2;
2020 },
2121 Semigroupoid0: function() {
2222 return semigroupoidFn;
@@ -28,30 +28,30 @@
2828
2929 // output/Data.Function/index.js
3030 var flip = function(f) {
31− return function(b) {
32− return function(a) {
33− return f(a)(b);
31+ return function(b2) {
32+ return function(a2) {
33+ return f(a2)(b2);
3434 };
3535 };
3636 };
37− var $$const = function(a) {
38− return function(v) {
39− return a;
37+ var $$const = function(a2) {
38+ return function(v2) {
39+ return a2;
4040 };
4141 };
42− var applyFlipped = function(x) {
42+ var applyFlipped = function(x2) {
4343 return function(f) {
44− return f(x);
44+ return f(x2);
4545 };
4646 };
4747
4848 // output/Data.Functor/foreign.js
4949 var arrayMap = function(f) {
5050 return function(arr) {
51− var l = arr.length;
52− var result = new Array(l);
53− for (var i = 0; i < l; i++) {
54− result[i] = f(arr[i]);
51+ var l2 = arr.length;
52+ var result = new Array(l2);
53+ for (var i2 = 0; i2 < l2; i2++) {
54+ result[i2] = f(arr[i2]);
5555 }
5656 return result;
5757 };
@@ -73,6 +73,14 @@
7373 var map = function(dict) {
7474 return dict.map;
7575 };
76+ var mapFlipped = function(dictFunctor) {
77+ var map12 = map(dictFunctor);
78+ return function(fa) {
79+ return function(f) {
80+ return map12(f)(fa);
81+ };
82+ };
83+ };
7684 var functorArray = {
7785 map: arrayMap
7886 };
@@ -85,9 +93,9 @@
8593 var apply1 = apply(dictApply);
8694 var map4 = map(dictApply.Functor0());
8795 return function(f) {
88− return function(a) {
89− return function(b) {
90− return apply1(map4(f)(a))(b);
96+ return function(a2) {
97+ return function(b2) {
98+ return apply1(map4(f)(a2))(b2);
9199 };
92100 };
93101 };
@@ -98,11 +106,11 @@
98106 return dict.pure;
99107 };
100108 var liftA1 = function(dictApplicative) {
101− var apply2 = apply(dictApplicative.Apply0());
102− var pure1 = pure(dictApplicative);
109+ var apply3 = apply(dictApplicative.Apply0());
110+ var pure12 = pure(dictApplicative);
103111 return function(f) {
104− return function(a) {
105− return apply2(pure1(f))(a);
112+ return function(a2) {
113+ return apply3(pure12(f))(a2);
106114 };
107115 };
108116 };
@@ -115,9 +123,9 @@
115123 } : function(arr) {
116124 return function(f) {
117125 var result = [];
118− var l = arr.length;
119− for (var i = 0; i < l; i++) {
120− var xs = f(arr[i]);
126+ var l2 = arr.length;
127+ for (var i2 = 0; i2 < l2; i2++) {
128+ var xs = f(arr[i2]);
121129 var k = xs.length;
122130 for (var j = 0; j < k; j++) {
123131 result.push(xs[j]);
@@ -221,7 +229,7 @@
221229
222230 // output/Data.Semigroup/index.js
223231 var semigroupUnit = {
224− append: function(v) {
232+ append: function(v2) {
225233 return function(v1) {
226234 return unit;
227235 };
@@ -231,9 +239,9 @@
231239 append: concatString
232240 };
233241 var semigroupRecordNil = {
234− appendRecord: function(v) {
242+ appendRecord: function(v2) {
235243 return function(v1) {
236− return function(v2) {
244+ return function(v22) {
237245 return {};
238246 };
239247 };
@@ -263,7 +271,7 @@
263271 return function(dictSemigroup) {
264272 var append1 = append(dictSemigroup);
265273 return {
266− appendRecord: function(v) {
274+ appendRecord: function(v2) {
267275 return function(ra) {
268276 return function(rb) {
269277 var tail = appendRecord1($$Proxy.value)(ra)(rb);
@@ -295,7 +303,7 @@
295303 }
296304 };
297305 var monoidRecordNil = {
298− memptyRecord: function(v) {
306+ memptyRecord: function(v2) {
299307 return {};
300308 },
301309 SemigroupRecord0: function() {
@@ -336,7 +344,7 @@
336344 var memptyRecord1 = memptyRecord(dictMonoidRecord);
337345 var semigroupRecordCons1 = semigroupRecordCons3(dictMonoidRecord.SemigroupRecord0())(Semigroup0);
338346 return {
339− memptyRecord: function(v) {
347+ memptyRecord: function(v2) {
340348 var tail = memptyRecord1($$Proxy.value);
341349 var key = reflectSymbol2($$Proxy.value);
342350 var insert2 = unsafeSet(key);
@@ -352,15 +360,15 @@
352360 };
353361
354362 // output/Effect/foreign.js
355− var pureE = function(a) {
363+ var pureE = function(a2) {
356364 return function() {
357− return a;
365+ return a2;
358366 };
359367 };
360− var bindE = function(a) {
368+ var bindE = function(a2) {
361369 return function(f) {
362370 return function() {
363− return f(a())();
371+ return f(a2())();
364372 };
365373 };
366374 };
@@ -368,12 +376,12 @@
368376 // output/Control.Monad/index.js
369377 var ap = function(dictMonad) {
370378 var bind4 = bind(dictMonad.Bind1());
371− var pure4 = pure(dictMonad.Applicative0());
379+ var pure5 = pure(dictMonad.Applicative0());
372380 return function(f) {
373− return function(a) {
381+ return function(a2) {
374382 return bind4(f)(function(f$prime) {
375− return bind4(a)(function(a$prime) {
376− return pure4(f$prime(a$prime));
383+ return bind4(a2)(function(a$prime) {
384+ return pure5(f$prime(a$prime));
377385 });
378386 });
379387 };
@@ -381,14 +389,14 @@
381389 };
382390
383391 // output/Effect/index.js
384− var $runtime_lazy = function(name15, moduleName, init) {
392+ var $runtime_lazy = function(name15, moduleName, init3) {
385393 var state3 = 0;
386394 var val;
387395 return function(lineNumber) {
388396 if (state3 === 2) return val;
389397 if (state3 === 1) throw new ReferenceError(name15 + " was needed before it finished initializing (module " + moduleName + ", line " + lineNumber + ")", moduleName, lineNumber);
390398 state3 = 1;
391− val = init();
399+ val = init3();
392400 state3 = 2;
393401 return val;
394402 };
@@ -438,24 +446,24 @@
438446 };
439447 var replicatePolyfill = function(count, value12) {
440448 var result = [];
441− var n = 0;
442− for (var i = 0; i < count; i++) {
443− result[n++] = value12;
449+ var n2 = 0;
450+ for (var i2 = 0; i2 < count; i2++) {
451+ result[n2++] = value12;
444452 }
445453 return result;
446454 };
447455 var replicateImpl = typeof Array.prototype.fill === "function" ? replicateFill : replicatePolyfill;
448− var indexImpl = function(just, nothing, xs, i) {
449− return i < 0 || i >= xs.length ? nothing : just(xs[i]);
456+ var unconsImpl = function(empty3, next, xs) {
457+ return xs.length === 0 ? empty3({}) : next(xs[0])(xs.slice(1));
450458 };
451459 var concat = function(xss) {
452460 if (xss.length <= 1e4) {
453461 return Array.prototype.concat.apply([], xss);
454462 }
455463 var result = [];
456− for (var i = 0, l = xss.length; i < l; i++) {
457− var xs = xss[i];
458− for (var j = 0, m2 = xs.length; j < m2; j++) {
464+ for (var i2 = 0, l2 = xss.length; i2 < l2; i2++) {
465+ var xs = xss[i2];
466+ for (var j = 0, m3 = xs.length; j < m3; j++) {
459467 result.push(xs[j]);
460468 }
461469 }
@@ -474,9 +482,9 @@
474482 var unsafeCompareImpl = function(lt) {
475483 return function(eq2) {
476484 return function(gt) {
477− return function(x) {
485+ return function(x2) {
478486 return function(y) {
479− return x < y ? lt : x === y ? eq2 : gt;
487+ return x2 < y ? lt : x2 === y ? eq2 : gt;
480488 };
481489 };
482490 };
@@ -510,11 +518,11 @@
510518 };
511519
512520 // output/Data.Show/foreign.js
513− var showIntImpl = function(n) {
514− return n.toString();
521+ var showIntImpl = function(n2) {
522+ return n2.toString();
515523 };
516− var showNumberImpl = function(n) {
517− var str = n.toString();
524+ var showNumberImpl = function(n2) {
525+ var str = n2.toString();
518526 return isNaN(str + ".0") ? str : str + ".0";
519527 };
520528
@@ -548,40 +556,40 @@
548556 };
549557 return Just2;
550558 }();
551− var maybe = function(v) {
559+ var maybe = function(v2) {
552560 return function(v1) {
553− return function(v2) {
554− if (v2 instanceof Nothing) {
555− return v;
561+ return function(v22) {
562+ if (v22 instanceof Nothing) {
563+ return v2;
556564 }
557565 ;
558− if (v2 instanceof Just) {
559− return v1(v2.value0);
566+ if (v22 instanceof Just) {
567+ return v1(v22.value0);
560568 }
561569 ;
562− throw new Error("Failed pattern match at Data.Maybe (line 237, column 1 - line 237, column 51): " + [v.constructor.name, v1.constructor.name, v2.constructor.name]);
570+ throw new Error("Failed pattern match at Data.Maybe (line 237, column 1 - line 237, column 51): " + [v2.constructor.name, v1.constructor.name, v22.constructor.name]);
563571 };
564572 };
565573 };
566− var fromMaybe = function(a) {
567− return maybe(a)(identity2);
574+ var fromMaybe = function(a2) {
575+ return maybe(a2)(identity2);
568576 };
569577
570578 // output/Data.Identity/index.js
571− var Identity = function(x) {
572− return x;
579+ var Identity = function(x2) {
580+ return x2;
573581 };
574582 var functorIdentity = {
575583 map: function(f) {
576− return function(m2) {
577− return f(m2);
584+ return function(m3) {
585+ return f(m3);
578586 };
579587 }
580588 };
581589 var applyIdentity = {
582− apply: function(v) {
590+ apply: function(v2) {
583591 return function(v1) {
584− return v(v1);
592+ return v2(v1);
585593 };
586594 },
587595 Functor0: function() {
@@ -589,9 +597,9 @@
589597 }
590598 };
591599 var bindIdentity = {
592− bind: function(v) {
600+ bind: function(v2) {
593601 return function(f) {
594− return f(v);
602+ return f(v2);
595603 };
596604 },
597605 Apply0: function() {
@@ -637,34 +645,34 @@
637645
638646 // output/Control.Monad.ST.Internal/foreign.js
639647 var map_ = function(f) {
640− return function(a) {
648+ return function(a2) {
641649 return function() {
642− return f(a());
650+ return f(a2());
643651 };
644652 };
645653 };
646− var pure_ = function(a) {
654+ var pure_ = function(a2) {
647655 return function() {
648− return a;
656+ return a2;
649657 };
650658 };
651− var bind_ = function(a) {
659+ var bind_ = function(a2) {
652660 return function(f) {
653661 return function() {
654− return f(a())();
662+ return f(a2())();
655663 };
656664 };
657665 };
658666
659667 // output/Control.Monad.ST.Internal/index.js
660− var $runtime_lazy2 = function(name15, moduleName, init) {
668+ var $runtime_lazy2 = function(name15, moduleName, init3) {
661669 var state3 = 0;
662670 var val;
663671 return function(lineNumber) {
664672 if (state3 === 2) return val;
665673 if (state3 === 1) throw new ReferenceError(name15 + " was needed before it finished initializing (module " + moduleName + ", line " + lineNumber + ")", moduleName, lineNumber);
666674 state3 = 1;
667− val = init();
675+ val = init3();
668676 state3 = 2;
669677 return val;
670678 };
@@ -703,24 +711,24 @@
703711
704712 // output/Data.Foldable/foreign.js
705713 var foldrArray = function(f) {
706− return function(init) {
714+ return function(init3) {
707715 return function(xs) {
708− var acc = init;
716+ var acc = init3;
709717 var len = xs.length;
710− for (var i = len - 1; i >= 0; i--) {
711− acc = f(xs[i])(acc);
718+ for (var i2 = len - 1; i2 >= 0; i2--) {
719+ acc = f(xs[i2])(acc);
712720 }
713721 return acc;
714722 };
715723 };
716724 };
717725 var foldlArray = function(f) {
718− return function(init) {
726+ return function(init3) {
719727 return function(xs) {
720− var acc = init;
728+ var acc = init3;
721729 var len = xs.length;
722− for (var i = 0; i < len; i++) {
723− acc = f(acc)(xs[i]);
730+ for (var i2 = 0; i2 < len; i2++) {
731+ acc = f(acc)(xs[i2]);
724732 }
725733 return acc;
726734 };
@@ -742,14 +750,14 @@
742750 return Tuple2;
743751 }();
744752 var uncurry = function(f) {
745− return function(v) {
746− return f(v.value0)(v.value1);
753+ return function(v2) {
754+ return f(v2.value0)(v2.value1);
747755 };
748756 };
749757
750758 // output/Unsafe.Coerce/foreign.js
751− var unsafeCoerce2 = function(x) {
752− return x;
759+ var unsafeCoerce2 = function(x2) {
760+ return x2;
753761 };
754762
755763 // output/Safe.Coerce/index.js
@@ -777,9 +785,9 @@
777785 var mempty6 = mempty(dictMonoid);
778786 return function(sep) {
779787 return function(xs) {
780− var go2 = function(v) {
788+ var go2 = function(v2) {
781789 return function(v1) {
782− if (v.init) {
790+ if (v2.init) {
783791 return {
784792 init: false,
785793 acc: v1
@@ -788,7 +796,7 @@
788796 ;
789797 return {
790798 init: false,
791− acc: append3(v.acc)(append3(sep)(v1))
799+ acc: append3(v2.acc)(append3(sep)(v1))
792800 };
793801 };
794802 };
@@ -806,9 +814,9 @@
806814 var append3 = append(dictMonoid.Semigroup0());
807815 var mempty6 = mempty(dictMonoid);
808816 return function(f) {
809− return foldr22(function(x) {
817+ return foldr22(function(x2) {
810818 return function(acc) {
811− return append3(f(x))(acc);
819+ return append3(f(x2))(acc);
812820 };
813821 })(mempty6);
814822 };
@@ -823,19 +831,21 @@
823831 };
824832
825833 // output/Data.Function.Uncurried/foreign.js
826− var runFn2 = function(fn) {
827− return function(a) {
828− return function(b) {
829− return fn(a, b);
834+ var runFn3 = function(fn) {
835+ return function(a2) {
836+ return function(b2) {
837+ return function(c) {
838+ return fn(a2, b2, c);
839+ };
830840 };
831841 };
832842 };
833843 var runFn4 = function(fn) {
834− return function(a) {
835− return function(b) {
844+ return function(a2) {
845+ return function(b2) {
836846 return function(c) {
837847 return function(d) {
838− return fn(a, b, c, d);
848+ return fn(a2, b2, c, d);
839849 };
840850 };
841851 };
@@ -844,18 +854,18 @@
844854
845855 // output/Data.Traversable/foreign.js
846856 var traverseArrayImpl = /* @__PURE__ */ function() {
847− function array1(a) {
848− return [a];
857+ function array1(a2) {
858+ return [a2];
849859 }
850− function array2(a) {
851− return function(b) {
852− return [a, b];
860+ function array2(a2) {
861+ return function(b2) {
862+ return [a2, b2];
853863 };
854864 }
855− function array3(a) {
856− return function(b) {
865+ function array3(a2) {
866+ return function(b2) {
857867 return function(c) {
858− return [a, b, c];
868+ return [a2, b2, c];
859869 };
860870 };
861871 }
@@ -864,24 +874,24 @@
864874 return xs.concat(ys);
865875 };
866876 }
867− return function(apply2) {
877+ return function(apply3) {
868878 return function(map4) {
869− return function(pure4) {
879+ return function(pure5) {
870880 return function(f) {
871881 return function(array) {
872882 function go2(bot, top3) {
873883 switch (top3 - bot) {
874884 case 0:
875− return pure4([]);
885+ return pure5([]);
876886 case 1:
877887 return map4(array1)(f(array[bot]));
878888 case 2:
879− return apply2(map4(array2)(f(array[bot])))(f(array[bot + 1]));
889+ return apply3(map4(array2)(f(array[bot])))(f(array[bot + 1]));
880890 case 3:
881− return apply2(apply2(map4(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));
891+ return apply3(apply3(map4(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));
882892 default:
883893 var pivot = bot + Math.floor((top3 - bot) / 4) * 2;
884− return apply2(map4(concat2)(go2(bot, pivot)))(go2(pivot, top3));
894+ return apply3(map4(concat2)(go2(bot, pivot)))(go2(pivot, top3));
885895 }
886896 }
887897 return go2(0, array.length);
@@ -921,853 +931,374 @@
921931
922932 // output/Data.Array/index.js
923933 var intercalate1 = /* @__PURE__ */ intercalate(foldableArray);
934+ var uncons = /* @__PURE__ */ function() {
935+ return runFn3(unconsImpl)($$const(Nothing.value))(function(x2) {
936+ return function(xs) {
937+ return new Just({
938+ head: x2,
939+ tail: xs
940+ });
941+ };
942+ });
943+ }();
924944 var intercalate2 = function(dictMonoid) {
925945 return intercalate1(dictMonoid);
926946 };
927− var index = /* @__PURE__ */ function() {
928− return runFn4(indexImpl)(Just.create)(Nothing.value);
929− }();
930− var head = function(xs) {
931− return index(xs)(0);
932− };
933947
934− // output/Maquette/foreign.js
935− var NAMESPACE_W3 = "http://www.w3.org/";
936− var NAMESPACE_SVG = NAMESPACE_W3 + "2000/svg";
937− var NAMESPACE_XLINK = NAMESPACE_W3 + "1999/xlink";
938− var emptyArray = [];
939− var extend2 = function(base, overrides) {
940− var result = {};
941− Object.keys(base).forEach(function(key) {
942− result[key] = base[key];
943− });
944− if (overrides) {
945− Object.keys(overrides).forEach(function(key) {
946− result[key] = overrides[key];
947− });
948− }
949− return result;
950− };
951− var same = function(vnode1, vnode2) {
952− if (vnode1.vnodeSelector !== vnode2.vnodeSelector) {
953− return false;
954− }
955− if (vnode1.properties && vnode2.properties) {
956− if (vnode1.properties.key !== vnode2.properties.key) {
957− return false;
958− }
959− return vnode1.properties.bind === vnode2.properties.bind;
960− }
961− return !vnode1.properties && !vnode2.properties;
962− };
963− var checkStyleValue = function(styleValue) {
964− if (typeof styleValue !== "string") {
965− throw new Error("Style values must be strings");
966− }
967− };
968− var findIndexOfChild = function(children, sameAs, start2) {
969− if (sameAs.vnodeSelector !== "") {
970− for (var i = start2; i < children.length; i++) {
971− if (same(children[i], sameAs)) {
972− return i;
973− }
974− }
975− }
976− return -1;
977− };
978− var checkDistinguishable = function(childNodes, indexToCheck, parentVNode, operation) {
979− var childNode = childNodes[indexToCheck];
980− if (childNode.vnodeSelector === "") {
981− return;
982− }
983− var properties = childNode.properties;
984− var key = properties ? properties.key === void 0 ? properties.bind : properties.key : void 0;
985− if (!key) {
986− for (var i = 0; i < childNodes.length; i++) {
987− if (i !== indexToCheck) {
988− var node = childNodes[i];
989− if (same(node, childNode)) {
990− throw {
991− error: new Error(parentVNode.vnodeSelector + " had a " + childNode.vnodeSelector + " child " + (operation === "added" ? operation : "removed") + ", but there is now more than one. You must add unique key properties to make them distinguishable."),
992− parentNode: parentVNode,
993− childNode
994− };
995− }
948+ // output/Foreign.Object/foreign.js
949+ function _copyST(m3) {
950+ return function() {
951+ var r2 = {};
952+ for (var k in m3) {
953+ if (hasOwnProperty.call(m3, k)) {
954+ r2[k] = m3[k];
996955 }
997956 }
998− }
999− };
1000− var nodeAdded = function(vNode) {
1001− if (vNode.properties) {
1002− var enterAnimation = vNode.properties.enterAnimation;
1003− if (enterAnimation) {
1004− enterAnimation(vNode.domNode, vNode.properties);
1005− }
1006− }
1007− };
1008− var removedNodes = [];
1009− var requestedIdleCallback = false;
1010− var visitRemovedNode = function(node) {
1011− (node.children || []).forEach(visitRemovedNode);
1012− if (node.properties && node.properties.afterRemoved) {
1013− node.properties.afterRemoved.apply(node.properties.bind || node.properties, [
1014− node.domNode
1015− ]);
1016− }
1017− };
1018− var processPendingNodeRemovals = function() {
1019− requestedIdleCallback = false;
1020− removedNodes.forEach(visitRemovedNode);
1021− removedNodes.length = 0;
1022− };
1023− var scheduleNodeRemoval = function(vNode) {
1024− removedNodes.push(vNode);
1025− if (!requestedIdleCallback) {
1026− requestedIdleCallback = true;
1027− if (typeof window !== "undefined" && "requestIdleCallback" in window) {
1028− window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 });
1029− } else {
1030− setTimeout(processPendingNodeRemovals, 16);
1031− }
1032− }
1033− };
1034− var nodeToRemove = function(vNode) {
1035− var domNode = vNode.domNode;
1036− if (vNode.properties) {
1037− var exitAnimation = vNode.properties.exitAnimation;
1038− if (exitAnimation) {
1039− domNode.style.pointerEvents = "none";
1040− var removeDomNode = function() {
1041− if (domNode.parentNode) {
1042− domNode.parentNode.removeChild(domNode);
1043− scheduleNodeRemoval(vNode);
1044− }
1045− };
1046− exitAnimation(domNode, removeDomNode, vNode.properties);
1047− return;
1048− }
1049− }
1050− if (domNode.parentNode) {
1051− domNode.parentNode.removeChild(domNode);
1052− scheduleNodeRemoval(vNode);
1053− }
1054− };
1055− var vnodeOnlyProps = [
1056− "afterCreate",
1057− "afterUpdate",
1058− "afterRemoved",
1059− "enterAnimation",
1060− "exitAnimation",
1061− "updateAnimation"
1062− ];
1063− function filterVNodeOnlyProps(name15) {
1064− return !vnodeOnlyProps.includes(name15);
957+ return r2;
958+ };
1065959 }
1066− var setProperties = function(domNode, properties, projectionOptions) {
1067− if (!properties) {
1068− return;
1069− }
1070− var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;
1071− var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
1072− var propCount = propNames.length;
1073− for (var i = 0; i < propCount; i++) {
1074− var propName = propNames[i];
1075− var propValue = properties[propName];
1076− if (propName === "className") {
1077− throw new Error('Property "className" is not supported, use "class".');
1078− } else if (propName === "class") {
1079− toggleClasses(domNode, propValue, true);
1080− } else if (propName === "classes") {
1081− var classNames = Object.keys(propValue);
1082− var classNameCount = classNames.length;
1083− for (var j = 0; j < classNameCount; j++) {
1084− var className = classNames[j];
1085− if (propValue[className]) {
1086− domNode.classList.add(className);
1087− }
1088− }
1089− } else if (propName === "styles") {
1090− var styleNames = Object.keys(propValue);
1091− var styleCount = styleNames.length;
1092− for (var j = 0; j < styleCount; j++) {
1093− var styleName = styleNames[j];
1094− var styleValue = propValue[styleName];
1095− if (styleValue) {
1096− checkStyleValue(styleValue);
1097− projectionOptions.styleApplyer(domNode, styleName, styleValue);
1098− }
1099− }
1100− } else if (propName === "on" && propValue) {
1101− for (var _i = 0, _a = Object.entries(properties.on); _i < _a.length; _i++) {
1102− var _b = _a[_i], key = _b[0], handler = _b[1];
1103− var listener = typeof handler === "function" ? handler : handler.listener;
1104− if (eventHandlerInterceptor) {
1105− listener = eventHandlerInterceptor(key, listener, domNode, properties);
1106− }
1107− if (listener) {
1108− domNode.addEventListener(key, listener, typeof handler === "function" ? void 0 : handler.options);
1109− }
1110− }
1111− } else if (propName !== "key" && propValue !== null && propValue !== void 0) {
1112− var type = typeof propValue;
1113− if (type === "function") {
1114− if (propName.lastIndexOf("on", 0) === 0) {
1115− if (eventHandlerInterceptor) {
1116− propValue = eventHandlerInterceptor(propName, propValue, domNode, properties);
1117− }
1118− }
1119− domNode[propName] = propValue;
1120− } else if (projectionOptions.namespace === NAMESPACE_SVG) {
1121− if (propName === "href") {
1122− domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
1123− } else {
1124− domNode.setAttribute(propName, propValue);
1125− }
1126− } else if (type === "string" && propName !== "value" && propName !== "innerHTML") {
1127− domNode.setAttribute(propName, propValue);
1128− } else {
1129− domNode[propName] = propValue;
1130− }
1131− }
1132− }
1133− };
1134− var addChildren = function(domNode, children, projectionOptions) {
1135− if (!children) {
1136− return;
1137− }
1138− for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
1139− var child = children_1[_i];
1140− createDom(child, domNode, void 0, projectionOptions);
1141− }
1142− };
1143− var initPropertiesAndChildren = function(domNode, vnode, projectionOptions) {
1144− addChildren(domNode, vnode.children, projectionOptions);
1145− if (vnode.text) {
1146− domNode.textContent = vnode.text;
1147− }
1148− setProperties(domNode, vnode.properties, projectionOptions);
1149− if (vnode.properties && vnode.properties.afterCreate) {
1150− vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [
1151− domNode,
1152− projectionOptions,
1153− vnode.vnodeSelector,
1154− vnode.properties,
1155− vnode.children
1156− ]);
1157− }
1158− };
1159− var createDom = function(vnode, parentNode, insertBefore, projectionOptions) {
1160− var _a;
1161− var domNode;
1162− var start2 = 0;
1163− var vnodeSelector = vnode.vnodeSelector;
1164− var doc = parentNode.ownerDocument;
1165− if (vnodeSelector === "") {
1166− if (vnode.domNode) {
1167− vnode.domNode.nodeValue = vnode.text;
1168− } else {
1169− domNode = vnode.domNode = doc.createTextNode(vnode.text);
1170− if (insertBefore !== void 0) {
1171− parentNode.insertBefore(domNode, insertBefore);
1172− } else {
1173− parentNode.appendChild(domNode);
1174− }
1175− }
1176− } else {
1177− for (var i = 0; i <= vnodeSelector.length; ++i) {
1178− var c = vnodeSelector.charAt(i);
1179− if (i === vnodeSelector.length || c === "." || c === "#") {
1180− var type = vnodeSelector.charAt(start2 - 1);
1181− var found = vnodeSelector.slice(start2, i);
1182− if (type === ".") {
1183− domNode.classList.add(found);
1184− } else if (type === "#") {
1185− domNode.id = found;
1186− } else {
1187− if (found === "svg") {
1188− projectionOptions = extend2(projectionOptions, {
1189− namespace: NAMESPACE_SVG
1190− });
1191− }
1192− if (projectionOptions.namespace !== void 0) {
1193− domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);
1194− } else {
1195− domNode = vnode.domNode = vnode.domNode || (((_a = vnode.properties) === null || _a === void 0 ? void 0 : _a.is) ? doc.createElement(found, { is: vnode.properties.is }) : doc.createElement(found));
1196− if (found === "input" && vnode.properties && vnode.properties.type !== void 0) {
1197− domNode.setAttribute("type", vnode.properties.type);
1198− }
1199− }
1200− if (insertBefore !== void 0) {
1201− parentNode.insertBefore(domNode, insertBefore);
1202− } else if (domNode.parentNode !== parentNode) {
1203− parentNode.appendChild(domNode);
1204− }
1205− }
1206− start2 = i + 1;
1207− }
960+ var empty2 = {};
961+ function runST(f) {
962+ return f();
963+ }
964+ function _fmapObject(m0, f) {
965+ var m3 = {};
966+ for (var k in m0) {
967+ if (hasOwnProperty.call(m0, k)) {
968+ m3[k] = f(m0[k]);
1208969 }
1209− initPropertiesAndChildren(domNode, vnode, projectionOptions);
1210− }
1211− };
1212− var updateDom;
1213− var toggleClasses = function(domNode, classes, on2) {
1214− if (!classes) {
1215− return;
1216970 }
1217− classes.split(" ").forEach(function(classToToggle) {
1218− if (classToToggle) {
1219− domNode.classList.toggle(classToToggle, on2);
971+ return m3;
972+ }
973+ function _mapWithKey(m0, f) {
974+ var m3 = {};
975+ for (var k in m0) {
976+ if (hasOwnProperty.call(m0, k)) {
977+ m3[k] = f(k)(m0[k]);
1220978 }
1221− });
1222− };
1223− var updateProperties = function(domNode, previousProperties, properties, projectionOptions) {
1224− if (!properties) {
1225− return;
1226979 }
1227− var propertiesUpdated = false;
1228− var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
1229− var propCount = propNames.length;
1230− for (var i = 0; i < propCount; i++) {
1231− var propName = propNames[i];
1232− var propValue = properties[propName];
1233− var previousValue = previousProperties[propName];
1234− if (propName === "class") {
1235− if (previousValue !== propValue) {
1236− toggleClasses(domNode, previousValue, false);
1237− toggleClasses(domNode, propValue, true);
1238− }
1239− } else if (propName === "classes") {
1240− var classList = domNode.classList;
1241− var classNames = Object.keys(propValue);
1242− var classNameCount = classNames.length;
1243− for (var j = 0; j < classNameCount; j++) {
1244− var className = classNames[j];
1245− var on2 = !!propValue[className];
1246− var previousOn = !!previousValue[className];
1247− if (on2 === previousOn) {
1248− continue;
1249− }
1250− propertiesUpdated = true;
1251− if (on2) {
1252− classList.add(className);
1253− } else {
1254− classList.remove(className);
1255− }
1256− }
1257− } else if (propName === "styles") {
1258− var styleNames = Object.keys(propValue);
1259− var styleCount = styleNames.length;
1260− for (var j = 0; j < styleCount; j++) {
1261− var styleName = styleNames[j];
1262− var newStyleValue = propValue[styleName];
1263− var oldStyleValue = previousValue[styleName];
1264− if (newStyleValue === oldStyleValue) {
1265− continue;
1266− }
1267− propertiesUpdated = true;
1268− if (newStyleValue) {
1269− checkStyleValue(newStyleValue);
1270− projectionOptions.styleApplyer(domNode, styleName, newStyleValue);
1271− } else {
1272− projectionOptions.styleApplyer(domNode, styleName, "");
1273− }
1274− }
1275− } else {
1276− if (!propValue && typeof previousValue === "string") {
1277− propValue = "";
1278− }
1279− if (propName === "value") {
1280− var domValue = domNode[propName];
1281− if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
1282− propValue !== previousValue) {
1283− domNode[propName] = propValue;
1284− }
1285− if (propValue !== previousValue) {
1286− propertiesUpdated = true;
980+ return m3;
981+ }
982+ function _foldM(bind4) {
983+ return function(f) {
984+ return function(mz) {
985+ return function(m3) {
986+ var acc = mz;
987+ function g2(k2) {
988+ return function(z) {
989+ return f(z)(k2)(m3[k2]);
990+ };
1287991 }
1288− } else if (propValue !== previousValue) {
1289− var type = typeof propValue;
1290− if (type !== "function" || !projectionOptions.eventHandlerInterceptor) {
1291− if (projectionOptions.namespace === NAMESPACE_SVG) {
1292− if (propName === "href") {
1293− domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
1294− } else {
1295− domNode.setAttribute(propName, propValue);
1296− }
1297− } else if (type === "string" && propName !== "innerHTML") {
1298− if (propName === "role" && propValue === "") {
1299− domNode.removeAttribute(propName);
1300− } else {
1301− domNode.setAttribute(propName, propValue);
1302− }
1303− } else if (domNode[propName] !== propValue) {
1304− domNode[propName] = propValue;
992+ for (var k in m3) {
993+ if (hasOwnProperty.call(m3, k)) {
994+ acc = bind4(acc)(g2(k));
1305995 }
1306− propertiesUpdated = true;
1307− }
1308− }
1309− }
1310− }
1311− return propertiesUpdated;
1312− };
1313− var updateChildren = function(vnode, domNode, oldChildren, newChildren, projectionOptions) {
1314− if (oldChildren === newChildren) {
1315− return false;
1316− }
1317− oldChildren = oldChildren || emptyArray;
1318− newChildren = newChildren || emptyArray;
1319− var oldChildrenLength = oldChildren.length;
1320− var newChildrenLength = newChildren.length;
1321− var oldIndex = 0;
1322− var newIndex = 0;
1323− var i;
1324− var textUpdated = false;
1325− while (newIndex < newChildrenLength) {
1326− var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : void 0;
1327− var newChild = newChildren[newIndex];
1328− if (oldChild !== void 0 && same(oldChild, newChild)) {
1329− textUpdated = updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
1330− oldIndex++;
1331− } else {
1332− var findOldIndex = findIndexOfChild(oldChildren, newChild, oldIndex + 1);
1333− if (findOldIndex >= 0) {
1334− for (i = oldIndex; i < findOldIndex; i++) {
1335− nodeToRemove(oldChildren[i]);
1336− checkDistinguishable(oldChildren, i, vnode, "removed");
1337− }
1338− textUpdated = updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) || textUpdated;
1339− oldIndex = findOldIndex + 1;
1340− } else {
1341− createDom(newChild, domNode, oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : void 0, projectionOptions);
1342− nodeAdded(newChild);
1343− checkDistinguishable(newChildren, newIndex, vnode, "added");
1344− }
1345− }
1346− newIndex++;
1347− }
1348− if (oldChildrenLength > oldIndex) {
1349− for (i = oldIndex; i < oldChildrenLength; i++) {
1350− nodeToRemove(oldChildren[i]);
1351− checkDistinguishable(oldChildren, i, vnode, "removed");
1352− }
1353− }
1354− return textUpdated;
1355− };
1356− updateDom = function(previous, vnode, projectionOptions, parentNode, oldChildren) {
1357− var domNode = previous.domNode;
1358− var textUpdated = false;
1359− if (previous === vnode) {
1360− return false;
1361− }
1362− var updated = false;
1363− if (vnode.vnodeSelector === "") {
1364− if (vnode.text !== previous.text) {
1365− var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
1366− try {
1367− parentNode.replaceChild(newTextNode, domNode);
1368− } catch (e) {
1369− parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);
1370− }
1371− vnode.domNode = newTextNode;
1372− textUpdated = true;
1373− return textUpdated;
1374− }
1375− vnode.domNode = domNode;
1376− } else {
1377− if (vnode.vnodeSelector.lastIndexOf("svg", 0) === 0) {
1378− projectionOptions = extend2(projectionOptions, {
1379− namespace: NAMESPACE_SVG
1380− });
1381− }
1382− if (previous.text !== vnode.text) {
1383− updated = true;
1384− if (vnode.text === void 0) {
1385− domNode.removeChild(domNode.firstChild);
1386− } else {
1387− domNode.textContent = vnode.text;
1388− }
1389− }
1390− vnode.domNode = domNode;
1391− updated = updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) || updated;
1392− updated = updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) || updated;
1393− if (vnode.properties && vnode.properties.afterUpdate) {
1394− vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [
1395− domNode,
1396− projectionOptions,
1397− vnode.vnodeSelector,
1398− vnode.properties,
1399− vnode.children
1400− ]);
1401− }
1402− }
1403− if (updated && vnode.properties && vnode.properties.updateAnimation) {
1404− vnode.properties.updateAnimation(domNode, vnode.properties, previous.properties);
1405− }
1406− return textUpdated;
1407− };
1408− var createProjection = function(vnode, projectionOptions) {
1409− return {
1410− getLastRender: function() {
1411− return vnode;
1412− },
1413− update: function(updatedVnode) {
1414− if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {
1415− throw new Error("The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)");
1416− }
1417− var previousVNode = vnode;
1418− vnode = updatedVnode;
1419− updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
1420− },
1421− domNode: vnode.domNode
1422− };
1423− };
1424− var DEFAULT_PROJECTION_OPTIONS = {
1425− namespace: void 0,
1426− performanceLogger: function() {
1427− return void 0;
1428− },
1429− eventHandlerInterceptor: void 0,
1430− styleApplyer: function(domNode, styleName, value12) {
1431− if (styleName.charAt(0) === "-") {
1432− domNode.style.setProperty(styleName, value12);
1433− } else {
1434− domNode.style[styleName] = value12;
1435− }
1436− }
1437− };
1438− var applyDefaultProjectionOptions = function(projectorOptions) {
1439− return extend2(DEFAULT_PROJECTION_OPTIONS, projectorOptions);
1440− };
1441− var dom = {
1442− /**
1443− * Creates a real DOM tree from `vnode`. The [[Projection]] object returned will contain the resulting DOM Node in
1444− * its [[Projection.domNode|domNode]] property.
1445− * This is a low-level method. Users will typically use a [[Projector]] instead.
1446− * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1447− * objects may only be rendered once.
1448− * @param projectionOptions - Options to be used to create and update the projection.
1449− * @returns The [[Projection]] which also contains the DOM Node that was created.
1450− */
1451− create: function(vnode, projectionOptions) {
1452− projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1453− createDom(vnode, document.createElement("div"), void 0, projectionOptions);
1454− return createProjection(vnode, projectionOptions);
1455− },
1456− /**
1457− * Appends a new child node to the DOM which is generated from a [[VNode]].
1458− * This is a low-level method. Users will typically use a [[Projector]] instead.
1459− * @param parentNode - The parent node for the new child node.
1460− * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1461− * objects may only be rendered once.
1462− * @param projectionOptions - Options to be used to create and update the [[Projection]].
1463− * @returns The [[Projection]] that was created.
1464− */
1465− append: function(parentNode, vnode, projectionOptions) {
1466− projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1467− createDom(vnode, parentNode, void 0, projectionOptions);
1468− return createProjection(vnode, projectionOptions);
1469− },
1470− /**
1471− * Inserts a new DOM node which is generated from a [[VNode]].
1472− * This is a low-level method. Users wil typically use a [[Projector]] instead.
1473− * @param beforeNode - The node that the DOM Node is inserted before.
1474− * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function.
1475− * NOTE: [[VNode]] objects may only be rendered once.
1476− * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].
1477− * @returns The [[Projection]] that was created.
1478− */
1479− insertBefore: function(beforeNode, vnode, projectionOptions) {
1480− projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1481− createDom(vnode, beforeNode.parentNode, beforeNode, projectionOptions);
1482− return createProjection(vnode, projectionOptions);
1483− },
1484− /**
1485− * Merges a new DOM node which is generated from a [[VNode]] with an existing DOM Node.
1486− * This means that the virtual DOM and the real DOM will have one overlapping element.
1487− * Therefore the selector for the root [[VNode]] will be ignored, but its properties and children will be applied to the Element provided.
1488− * This is a low-level method. Users wil typically use a [[Projector]] instead.
1489− * @param element - The existing element to adopt as the root of the new virtual DOM. Existing attributes and child nodes are preserved.
1490− * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]] objects
1491− * may only be rendered once.
1492− * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].
1493− * @returns The [[Projection]] that was created.
1494− */
1495− merge: function(element, vnode, projectionOptions) {
1496− projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1497− vnode.domNode = element;
1498− initPropertiesAndChildren(element, vnode, projectionOptions);
1499− return createProjection(vnode, projectionOptions);
1500− },
1501− /**
1502− * Replaces an existing DOM node with a node generated from a [[VNode]].
1503− * This is a low-level method. Users will typically use a [[Projector]] instead.
1504− * @param element - The node for the [[VNode]] to replace.
1505− * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1506− * objects may only be rendered once.
1507− * @param projectionOptions - Options to be used to create and update the [[Projection]].
1508− * @returns The [[Projection]] that was created.
1509− */
1510− replace: function(element, vnode, projectionOptions) {
1511− projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1512− createDom(vnode, element.parentNode, element, projectionOptions);
1513− element.parentNode.removeChild(element);
1514− return createProjection(vnode, projectionOptions);
1515− }
1516− };
1517− var toTextVNode = function(data) {
1518− return {
1519− vnodeSelector: "",
1520− properties: void 0,
1521− children: void 0,
1522− text: data.toString(),
1523− domNode: null
1524− };
1525− };
1526− var appendChildren = function(parentSelector, insertions, main2) {
1527− for (var i = 0, length_1 = insertions.length; i < length_1; i++) {
1528− var item = insertions[i];
1529− if (Array.isArray(item)) {
1530− appendChildren(parentSelector, item, main2);
1531− } else {
1532− if (item !== null && item !== void 0 && item !== false) {
1533− if (typeof item === "string") {
1534− item = toTextVNode(item);
1535996 }
1536− main2.push(item);
1537− }
1538− }
1539− }
1540− };
1541− function h(selector, properties, children) {
1542− if (Array.isArray(properties)) {
1543− children = properties;
1544− properties = void 0;
1545− } else if (properties && (typeof properties === "string" || properties.vnodeSelector) || children && (typeof children === "string" || children.vnodeSelector)) {
1546− throw new Error("h called with invalid arguments");
1547− }
1548− var text6;
1549− var flattenedChildren;
1550− if (children && children.length === 1 && typeof children[0] === "string") {
1551− text6 = children[0];
1552− } else if (children) {
1553− flattenedChildren = [];
1554− appendChildren(selector, children, flattenedChildren);
1555− if (flattenedChildren.length === 0) {
1556− flattenedChildren = void 0;
1557− }
1558− }
1559− return {
1560− vnodeSelector: selector,
1561− properties,
1562− children: flattenedChildren,
1563− text: text6 === "" ? void 0 : text6,
1564− domNode: null
997+ return acc;
998+ };
999+ };
15651000 };
15661001 }
1567− var createParentNodePath = function(node, rootNode) {
1568− var parentNodePath = [];
1569− while (node && node !== rootNode) {
1570− parentNodePath.push(node);
1571− node = node.parentNode;
1572− }
1573− return parentNodePath;
1574− };
1575− var find2;
1576− if (Array.prototype.find) {
1577− find2 = function(items, predicate) {
1578− return items.find(predicate);
1579− };
1580− } else {
1581− find2 = function(items, predicate) {
1582− return items.filter(predicate)[0];
1583− };
1002+ function _lookup(no, yes, k, m3) {
1003+ return k in m3 ? yes(m3[k]) : no;
15841004 }
1585− var findVNodeByParentNodePath = function(vnode, parentNodePath) {
1586− var result = vnode;
1587− parentNodePath.forEach(function(node) {
1588− result = result && result.children ? find2(result.children, function(child) {
1589− return child.domNode === node;
1590− }) : void 0;
1591− });
1592− return result;
1593− };
1594− var createEventHandlerInterceptor = function(projector, getProjection, performanceLogger) {
1595− return function(propertyName, eventHandler, domNode, properties) {
1596− return modifiedEventHandler;
1597− };
1598− function modifiedEventHandler(evt) {
1599− var _a, _b;
1600− performanceLogger("domEvent", evt);
1601− var projection = getProjection();
1602− var parentNodePath = createParentNodePath(evt.currentTarget, projection.domNode);
1603− parentNodePath.reverse();
1604− var matchingVNode = findVNodeByParentNodePath(projection.getLastRender(), parentNodePath);
1605− projector.scheduleRender();
1606− var result;
1607− if (matchingVNode) {
1608− var listener = (_b = (_a = matchingVNode.properties["on" + evt.type]) !== null && _a !== void 0 ? _a : matchingVNode.properties.on[evt.type].listener) !== null && _b !== void 0 ? _b : matchingVNode.properties.on[evt.type];
1609− result = listener.apply(matchingVNode.properties.bind || this, arguments);
1610− }
1611− performanceLogger("domEventProcessed", evt);
1612− return result;
1613− }
1614− };
1615− var createProjector = function(projectorOptions) {
1616− var projector;
1617− var projectionOptions = applyDefaultProjectionOptions(projectorOptions);
1618− var performanceLogger = projectionOptions.performanceLogger;
1619− var renderCompleted = true;
1620− var scheduled;
1621− var stopped = false;
1622− var projections = [];
1623− var renderFunctions = [];
1624− var addProjection = function(domFunction, node, renderFunction) {
1625− var projection;
1626− var getProjection = function() {
1627− return projection;
1628− };
1629− projectionOptions.eventHandlerInterceptor = createEventHandlerInterceptor(projector, getProjection, performanceLogger);
1630− projection = domFunction(node, renderFunction(), projectionOptions);
1631− projections.push(projection);
1632− renderFunctions.push(renderFunction);
1633− };
1634− var doRender = function() {
1635− scheduled = void 0;
1636− if (!renderCompleted) {
1637− return;
1638− }
1639− renderCompleted = false;
1640− performanceLogger("renderStart", void 0);
1641− for (var i = 0; i < projections.length; i++) {
1642− var updatedVnode = renderFunctions[i]();
1643− performanceLogger("rendered", void 0);
1644− projections[i].update(updatedVnode);
1645− performanceLogger("patched", void 0);
1646− }
1647− performanceLogger("renderDone", void 0);
1648− renderCompleted = true;
1649− };
1650− projector = {
1651− renderNow: doRender,
1652− scheduleRender: function() {
1653− if (!scheduled && !stopped) {
1654− scheduled = requestAnimationFrame(doRender);
1655− }
1656− },
1657− stop: function() {
1658− if (scheduled) {
1659− cancelAnimationFrame(scheduled);
1660− scheduled = void 0;
1661− }
1662− stopped = true;
1663− },
1664− resume: function() {
1665− stopped = false;
1666− renderCompleted = true;
1667− projector.scheduleRender();
1668− },
1669− append: function(parentNode, renderFunction) {
1670− addProjection(dom.append, parentNode, renderFunction);
1671− },
1672− insertBefore: function(beforeNode, renderFunction) {
1673− addProjection(dom.insertBefore, beforeNode, renderFunction);
1674− },
1675− merge: function(domNode, renderFunction) {
1676− addProjection(dom.merge, domNode, renderFunction);
1677− },
1678− replace: function(domNode, renderFunction) {
1679− addProjection(dom.replace, domNode, renderFunction);
1680− },
1681− detach: function(renderFunction) {
1682− for (var i = 0; i < renderFunctions.length; i++) {
1683− if (renderFunctions[i] === renderFunction) {
1684− renderFunctions.splice(i, 1);
1685− return projections.splice(i, 1)[0];
1686− }
1005+ function toArrayWithKey(f) {
1006+ return function(m3) {
1007+ var r2 = [];
1008+ for (var k in m3) {
1009+ if (hasOwnProperty.call(m3, k)) {
1010+ r2.push(f(k)(m3[k]));
16871011 }
1688− throw new Error("renderFunction was not found");
16891012 }
1690− };
1691− return projector;
1692− };
1693− function _h(selector) {
1694− return function(properties) {
1695− return function(children) {
1696− return h(selector, properties, children);
1697− };
1013+ return r2;
16981014 };
16991015 }
1700− function scheduleRender(projector) {
1016+ var keys = Object.keys || toArrayWithKey(function(k) {
17011017 return function() {
1702− projector.scheduleRender();
1018+ return k;
17031019 };
1704− }
1705− function replace(projector) {
1706− return function(el) {
1707− return function(render4) {
1020+ });
1021+
1022+ // output/Data.TraversableWithIndex/index.js
1023+ var traverseWithIndex = function(dict) {
1024+ return dict.traverseWithIndex;
1025+ };
1026+
1027+ // output/Foreign.Object.ST/foreign.js
1028+ var newImpl = function() {
1029+ return {};
1030+ };
1031+ function poke2(k) {
1032+ return function(v2) {
1033+ return function(m3) {
17081034 return function() {
1709− projector.replace(el, render4);
1035+ m3[k] = v2;
1036+ return m3;
17101037 };
17111038 };
17121039 };
17131040 }
17141041
1715− // output/Maquette/index.js
1716− var string = unsafeCoerce2;
1717− var h2 = _h;
1718−
1719− // output/Control.Monad.Writer.Class/index.js
1720− var tell = function(dict) {
1721− return dict.tell;
1722− };
1723−
1724− // output/Control.Monad.Writer.Trans/index.js
1725− var WriterT = function(x) {
1726− return x;
1042+ // output/Foreign.Object/index.js
1043+ var bindFlipped2 = /* @__PURE__ */ bindFlipped(bindST);
1044+ var foldr2 = /* @__PURE__ */ foldr(foldableArray);
1045+ var identity4 = /* @__PURE__ */ identity(categoryFn);
1046+ var values = /* @__PURE__ */ toArrayWithKey(function(v2) {
1047+ return function(v1) {
1048+ return v1;
1049+ };
1050+ });
1051+ var thawST = _copyST;
1052+ var singleton2 = function(k) {
1053+ return function(v2) {
1054+ return runST(bindFlipped2(poke2(k)(v2))(newImpl));
1055+ };
17271056 };
1728− var runWriterT = function(v) {
1729− return v;
1057+ var mutate = function(f) {
1058+ return function(m3) {
1059+ return runST(function __do() {
1060+ var s2 = thawST(m3)();
1061+ f(s2)();
1062+ return s2;
1063+ });
1064+ };
17301065 };
1731− var mapWriterT = function(f) {
1732− return function(v) {
1733− return f(v);
1066+ var mapWithKey = function(f) {
1067+ return function(m3) {
1068+ return _mapWithKey(m3, f);
17341069 };
17351070 };
1736− var functorWriterT = function(dictFunctor) {
1737− var map4 = map(dictFunctor);
1738− return {
1739− map: function(f) {
1740− return mapWriterT(map4(function(v) {
1741− return new Tuple(f(v.value0), v.value1);
1742− }));
1743− }
1071+ var insert = function(k) {
1072+ return function(v2) {
1073+ return mutate(poke2(k)(v2));
17441074 };
17451075 };
1746− var applyWriterT = function(dictSemigroup) {
1747− var append3 = append(dictSemigroup);
1748− return function(dictApply) {
1749− var apply2 = apply(dictApply);
1750− var Functor0 = dictApply.Functor0();
1751− var map4 = map(Functor0);
1752− var functorWriterT1 = functorWriterT(Functor0);
1753− return {
1754− apply: function(v) {
1755− return function(v1) {
1756− var k = function(v3) {
1757− return function(v4) {
1758− return new Tuple(v3.value0(v4.value0), append3(v3.value1)(v4.value1));
1759− };
1760− };
1761− return apply2(map4(k)(v))(v1);
1762− };
1763− },
1764− Functor0: function() {
1765− return functorWriterT1;
1766− }
1076+ var functorObject = {
1077+ map: function(f) {
1078+ return function(m3) {
1079+ return _fmapObject(m3, f);
17671080 };
1768− };
1081+ }
17691082 };
1770− var bindWriterT = function(dictSemigroup) {
1083+ var functorWithIndexObject = {
1084+ mapWithIndex: mapWithKey,
1085+ Functor0: function() {
1086+ return functorObject;
1087+ }
1088+ };
1089+ var fromHomogeneous = function() {
1090+ return unsafeCoerce2;
1091+ };
1092+ var foldM = function(dictMonad) {
1093+ var bind1 = bind(dictMonad.Bind1());
1094+ var pure12 = pure(dictMonad.Applicative0());
1095+ return function(f) {
1096+ return function(z) {
1097+ return _foldM(bind1)(f)(pure12(z));
1098+ };
1099+ };
1100+ };
1101+ var foldM1 = /* @__PURE__ */ foldM(monadST);
1102+ var union = function(m3) {
1103+ return mutate(function(s2) {
1104+ return foldM1(function(s$prime) {
1105+ return function(k) {
1106+ return function(v2) {
1107+ return poke2(k)(v2)(s$prime);
1108+ };
1109+ };
1110+ })(s2)(m3);
1111+ });
1112+ };
1113+ var unionWith = function(f) {
1114+ return function(m1) {
1115+ return function(m22) {
1116+ return mutate(function(s1) {
1117+ return foldM1(function(s2) {
1118+ return function(k) {
1119+ return function(v1) {
1120+ return poke2(k)(_lookup(v1, function(v2) {
1121+ return f(v1)(v2);
1122+ }, k, m22))(s2);
1123+ };
1124+ };
1125+ })(s1)(m1);
1126+ })(m22);
1127+ };
1128+ };
1129+ };
1130+ var semigroupObject = function(dictSemigroup) {
1131+ return {
1132+ append: unionWith(append(dictSemigroup))
1133+ };
1134+ };
1135+ var monoidObject = function(dictSemigroup) {
1136+ var semigroupObject1 = semigroupObject(dictSemigroup);
1137+ return {
1138+ mempty: empty2,
1139+ Semigroup0: function() {
1140+ return semigroupObject1;
1141+ }
1142+ };
1143+ };
1144+ var fold2 = /* @__PURE__ */ _foldM(applyFlipped);
1145+ var foldMap2 = function(dictMonoid) {
1146+ var append1 = append(dictMonoid.Semigroup0());
1147+ var mempty6 = mempty(dictMonoid);
1148+ return function(f) {
1149+ return fold2(function(acc) {
1150+ return function(k) {
1151+ return function(v2) {
1152+ return append1(acc)(f(k)(v2));
1153+ };
1154+ };
1155+ })(mempty6);
1156+ };
1157+ };
1158+ var foldableObject = {
1159+ foldl: function(f) {
1160+ return fold2(function(z) {
1161+ return function(v2) {
1162+ return f(z);
1163+ };
1164+ });
1165+ },
1166+ foldr: function(f) {
1167+ return function(z) {
1168+ return function(m3) {
1169+ return foldr2(f)(z)(values(m3));
1170+ };
1171+ };
1172+ },
1173+ foldMap: function(dictMonoid) {
1174+ var foldMap12 = foldMap2(dictMonoid);
1175+ return function(f) {
1176+ return foldMap12($$const(f));
1177+ };
1178+ }
1179+ };
1180+ var foldableWithIndexObject = {
1181+ foldlWithIndex: function(f) {
1182+ return fold2(flip(f));
1183+ },
1184+ foldrWithIndex: function(f) {
1185+ return function(z) {
1186+ return function(m3) {
1187+ return foldr2(uncurry(f))(z)(toArrayWithKey(Tuple.create)(m3));
1188+ };
1189+ };
1190+ },
1191+ foldMapWithIndex: function(dictMonoid) {
1192+ return foldMap2(dictMonoid);
1193+ },
1194+ Foldable0: function() {
1195+ return foldableObject;
1196+ }
1197+ };
1198+ var traversableWithIndexObject = {
1199+ traverseWithIndex: function(dictApplicative) {
1200+ var Apply0 = dictApplicative.Apply0();
1201+ var apply3 = apply(Apply0);
1202+ var map4 = map(Apply0.Functor0());
1203+ var pure12 = pure(dictApplicative);
1204+ return function(f) {
1205+ return function(ms) {
1206+ return fold2(function(acc) {
1207+ return function(k) {
1208+ return function(v2) {
1209+ return apply3(map4(flip(insert(k)))(acc))(f(k)(v2));
1210+ };
1211+ };
1212+ })(pure12(empty2))(ms);
1213+ };
1214+ };
1215+ },
1216+ FunctorWithIndex0: function() {
1217+ return functorWithIndexObject;
1218+ },
1219+ FoldableWithIndex1: function() {
1220+ return foldableWithIndexObject;
1221+ },
1222+ Traversable2: function() {
1223+ return traversableObject;
1224+ }
1225+ };
1226+ var traversableObject = {
1227+ traverse: function(dictApplicative) {
1228+ var $96 = traverseWithIndex(traversableWithIndexObject)(dictApplicative);
1229+ return function($97) {
1230+ return $96($$const($97));
1231+ };
1232+ },
1233+ sequence: function(dictApplicative) {
1234+ return traverse(traversableObject)(dictApplicative)(identity4);
1235+ },
1236+ Functor0: function() {
1237+ return functorObject;
1238+ },
1239+ Foldable1: function() {
1240+ return foldableObject;
1241+ }
1242+ };
1243+
1244+ // output/Literals.Undefined/foreign.js
1245+ var _undefined = void 0;
1246+
1247+ // output/Literals.Undefined/index.js
1248+ var $$undefined = _undefined;
1249+
1250+ // output/Control.Monad.Writer.Class/index.js
1251+ var tell = function(dict) {
1252+ return dict.tell;
1253+ };
1254+
1255+ // output/Control.Monad.Writer.Trans/index.js
1256+ var WriterT = function(x2) {
1257+ return x2;
1258+ };
1259+ var runWriterT = function(v2) {
1260+ return v2;
1261+ };
1262+ var mapWriterT = function(f) {
1263+ return function(v2) {
1264+ return f(v2);
1265+ };
1266+ };
1267+ var functorWriterT = function(dictFunctor) {
1268+ var map4 = map(dictFunctor);
1269+ return {
1270+ map: function(f) {
1271+ return mapWriterT(map4(function(v2) {
1272+ return new Tuple(f(v2.value0), v2.value1);
1273+ }));
1274+ }
1275+ };
1276+ };
1277+ var applyWriterT = function(dictSemigroup) {
1278+ var append3 = append(dictSemigroup);
1279+ return function(dictApply) {
1280+ var apply3 = apply(dictApply);
1281+ var Functor0 = dictApply.Functor0();
1282+ var map4 = map(Functor0);
1283+ var functorWriterT1 = functorWriterT(Functor0);
1284+ return {
1285+ apply: function(v2) {
1286+ return function(v1) {
1287+ var k = function(v3) {
1288+ return function(v4) {
1289+ return new Tuple(v3.value0(v4.value0), append3(v3.value1)(v4.value1));
1290+ };
1291+ };
1292+ return apply3(map4(k)(v2))(v1);
1293+ };
1294+ },
1295+ Functor0: function() {
1296+ return functorWriterT1;
1297+ }
1298+ };
1299+ };
1300+ };
1301+ var bindWriterT = function(dictSemigroup) {
17711302 var append3 = append(dictSemigroup);
17721303 var applyWriterT1 = applyWriterT(dictSemigroup);
17731304 return function(dictBind) {
@@ -1776,13 +1307,13 @@
17761307 var map4 = map(Apply0.Functor0());
17771308 var applyWriterT2 = applyWriterT1(Apply0);
17781309 return {
1779− bind: function(v) {
1310+ bind: function(v2) {
17801311 return function(k) {
1781− return bind4(v)(function(v1) {
1782− var v2 = k(v1.value0);
1312+ return bind4(v2)(function(v1) {
1313+ var v22 = k(v1.value0);
17831314 return map4(function(v3) {
17841315 return new Tuple(v3.value0, append3(v1.value1)(v3.value1));
1785− })(v2);
1316+ })(v22);
17861317 });
17871318 };
17881319 },
@@ -1806,11 +1337,11 @@
18061337 var mempty6 = mempty(dictMonoid);
18071338 var applyWriterT1 = applyWriterT(dictMonoid.Semigroup0());
18081339 return function(dictApplicative) {
1809− var pure4 = pure(dictApplicative);
1340+ var pure5 = pure(dictApplicative);
18101341 var applyWriterT2 = applyWriterT1(dictApplicative.Apply0());
18111342 return {
1812− pure: function(a) {
1813− return pure4(new Tuple(a, mempty6));
1343+ pure: function(a2) {
1344+ return pure5(new Tuple(a2, mempty6));
18141345 },
18151346 Apply0: function() {
18161347 return applyWriterT2;
@@ -1859,12 +1390,12 @@
18591390 var monoidWriterT = function(dictApplicative) {
18601391 var semigroupWriterT1 = semigroupWriterT(dictApplicative.Apply0());
18611392 return function(dictMonoid) {
1862− var pure4 = pure(applicativeWriterT(dictMonoid)(dictApplicative));
1393+ var pure5 = pure(applicativeWriterT(dictMonoid)(dictApplicative));
18631394 var semigroupWriterT2 = semigroupWriterT1(dictMonoid.Semigroup0());
18641395 return function(dictMonoid1) {
18651396 var semigroupWriterT3 = semigroupWriterT2(dictMonoid1.Semigroup0());
18661397 return {
1867− mempty: pure4(mempty(dictMonoid1)),
1398+ mempty: pure5(mempty(dictMonoid1)),
18681399 Semigroup0: function() {
18691400 return semigroupWriterT3;
18701401 }
@@ -1882,13 +1413,13 @@
18821413 // output/Data.Int/foreign.js
18831414 var fromNumberImpl = function(just) {
18841415 return function(nothing) {
1885− return function(n) {
1886− return (n | 0) === n ? just(n) : nothing;
1416+ return function(n2) {
1417+ return (n2 | 0) === n2 ? just(n2) : nothing;
18871418 };
18881419 };
18891420 };
1890− var toNumber = function(n) {
1891− return n;
1421+ var toNumber = function(n2) {
1422+ return n2;
18921423 };
18931424
18941425 // output/Data.Number/foreign.js
@@ -1901,340 +1432,423 @@
19011432 var fromNumber = /* @__PURE__ */ function() {
19021433 return fromNumberImpl(Just.create)(Nothing.value);
19031434 }();
1904− var unsafeClamp = function(x) {
1905− if (!isFiniteImpl(x)) {
1435+ var unsafeClamp = function(x2) {
1436+ if (!isFiniteImpl(x2)) {
19061437 return 0;
19071438 }
19081439 ;
1909− if (x >= toNumber(top2)) {
1440+ if (x2 >= toNumber(top2)) {
19101441 return top2;
19111442 }
19121443 ;
1913− if (x <= toNumber(bottom2)) {
1444+ if (x2 <= toNumber(bottom2)) {
19141445 return bottom2;
19151446 }
19161447 ;
19171448 if (otherwise) {
1918− return fromMaybe(0)(fromNumber(x));
1449+ return fromMaybe(0)(fromNumber(x2));
19191450 }
19201451 ;
1921− throw new Error("Failed pattern match at Data.Int (line 72, column 1 - line 72, column 29): " + [x.constructor.name]);
1452+ throw new Error("Failed pattern match at Data.Int (line 72, column 1 - line 72, column 29): " + [x2.constructor.name]);
19221453 };
19231454 var round2 = function($37) {
19241455 return unsafeClamp(round($37));
19251456 };
19261457
1927− // output/Data.TraversableWithIndex/index.js
1928− var traverseWithIndex = function(dict) {
1929− return dict.traverseWithIndex;
1458+ // output/Data.String.Common/foreign.js
1459+ var replaceAll = function(s1) {
1460+ return function(s2) {
1461+ return function(s3) {
1462+ return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2);
1463+ };
1464+ };
19301465 };
19311466
1932− // output/Foreign.Object/foreign.js
1933− function _copyST(m2) {
1934− return function() {
1935− var r = {};
1936− for (var k in m2) {
1937− if (hasOwnProperty.call(m2, k)) {
1938− r[k] = m2[k];
1939− }
1940− }
1941− return r;
1942− };
1467+ // output/Snabbdom/foreign.js
1468+ function h(z, J) {
1469+ let P, G = J.elm, X2 = z.data.attrs, $ = J.data.attrs;
1470+ if (!X2 && !$) return;
1471+ if (X2 === $) return;
1472+ X2 = X2 || {}, $ = $ || {};
1473+ for (P in $) {
1474+ let U = $[P];
1475+ if (X2[P] !== U) if (U === true) G.setAttribute(P, "");
1476+ else if (U === false) G.removeAttribute(P);
1477+ else if (P.charCodeAt(0) !== 120) G.setAttribute(P, U);
1478+ else if (P.charCodeAt(3) === 58) G.setAttributeNS("http://www.w3.org/XML/1998/namespace", P, U);
1479+ else if (P.charCodeAt(5) === 58) P.charCodeAt(1) === 109 ? G.setAttributeNS("http://www.w3.org/2000/xmlns/", P, U) : G.setAttributeNS("http://www.w3.org/1999/xlink", P, U);
1480+ else G.setAttribute(P, U);
1481+ }
1482+ for (P in X2) if (!(P in $)) G.removeAttribute(P);
19431483 }
1944− var empty2 = {};
1945− function runST(f) {
1946− return f();
1484+ var v = { create: h, update: h };
1485+ function i(z, J, P) {
1486+ if (typeof z === "function") z.call(J, P, J);
1487+ else if (typeof z === "object") for (let G = 0; G < z.length; G++) i(z[G], J, P);
19471488 }
1948− function _fmapObject(m0, f) {
1949− var m2 = {};
1950− for (var k in m0) {
1951− if (hasOwnProperty.call(m0, k)) {
1952− m2[k] = f(m0[k]);
1953− }
1954− }
1955− return m2;
1489+ function e(z, J) {
1490+ let P = z.type, G = J.data.on;
1491+ if (G && G[P]) i(G[P], J, z);
19561492 }
1957− function _mapWithKey(m0, f) {
1958− var m2 = {};
1959− for (var k in m0) {
1960− if (hasOwnProperty.call(m0, k)) {
1961− m2[k] = f(k)(m0[k]);
1962− }
1493+ function zz() {
1494+ return function z(J) {
1495+ e(J, z.vnode);
1496+ };
1497+ }
1498+ function E(z, J) {
1499+ let P = z.data.on, G = z.listener, X2 = z.elm, $ = J && J.data.on, U = J && J.elm, L;
1500+ if (P === $) return;
1501+ if (P && G) {
1502+ if (!$) for (L in P) X2.removeEventListener(L, G, false);
1503+ else for (L in P) if (!$[L]) X2.removeEventListener(L, G, false);
1504+ }
1505+ if ($) {
1506+ let F = J.listener = z.listener || zz();
1507+ if (F.vnode = J, !P) for (L in $) U.addEventListener(L, F, false);
1508+ else for (L in $) if (!P[L]) U.addEventListener(L, F, false);
19631509 }
1964− return m2;
19651510 }
1966− function _foldM(bind4) {
1967− return function(f) {
1968− return function(mz) {
1969− return function(m2) {
1970− var acc = mz;
1971− function g(k2) {
1972− return function(z) {
1973− return f(z)(k2)(m2[k2]);
1974− };
1975− }
1976− for (var k in m2) {
1977− if (hasOwnProperty.call(m2, k)) {
1978− acc = bind4(acc)(g(k));
1979− }
1980− }
1981− return acc;
1982− };
1983− };
1984− };
1511+ var m = { create: E, update: E, destroy: E };
1512+ function C(z, J, P, G, X2) {
1513+ let $ = J === void 0 ? void 0 : J.key;
1514+ return { sel: z, data: J, children: P, text: G, elm: X2, key: $ };
19851515 }
1986− function _lookup(no, yes, k, m2) {
1987− return k in m2 ? yes(m2[k]) : no;
1516+ var w = Array.isArray;
1517+ function s(z) {
1518+ return typeof z === "string" || typeof z === "number" || z instanceof String || z instanceof Number;
19881519 }
1989− function toArrayWithKey(f) {
1990− return function(m2) {
1991− var r = [];
1992− for (var k in m2) {
1993− if (hasOwnProperty.call(m2, k)) {
1994− r.push(f(k)(m2[k]));
1995− }
1996− }
1997− return r;
1998− };
1520+ function Jz(z, J) {
1521+ return document.createElement(z, J);
19991522 }
2000− var keys = Object.keys || toArrayWithKey(function(k) {
2001− return function() {
2002− return k;
2003− };
2004− });
2005−
2006− // output/Foreign.Object.ST/foreign.js
2007− var newImpl = function() {
2008− return {};
2009− };
2010− function poke2(k) {
2011− return function(v) {
2012− return function(m2) {
2013− return function() {
2014− m2[k] = v;
2015− return m2;
2016− };
2017− };
2018− };
1523+ function Pz(z, J, P) {
1524+ return document.createElementNS(z, J, P);
20191525 }
2020−
2021− // output/Foreign.Object/index.js
2022− var bindFlipped2 = /* @__PURE__ */ bindFlipped(bindST);
2023− var foldr2 = /* @__PURE__ */ foldr(foldableArray);
2024− var identity4 = /* @__PURE__ */ identity(categoryFn);
2025− var values = /* @__PURE__ */ toArrayWithKey(function(v) {
2026− return function(v1) {
2027− return v1;
2028− };
2029− });
2030− var thawST = _copyST;
2031− var singleton2 = function(k) {
2032− return function(v) {
2033− return runST(bindFlipped2(poke2(k)(v))(newImpl));
2034− };
2035− };
2036− var mutate = function(f) {
2037− return function(m2) {
2038− return runST(function __do() {
2039− var s = thawST(m2)();
2040− f(s)();
2041− return s;
2042− });
2043− };
2044− };
2045− var mapWithKey = function(f) {
2046− return function(m2) {
2047− return _mapWithKey(m2, f);
2048− };
2049− };
2050− var insert = function(k) {
2051− return function(v) {
2052− return mutate(poke2(k)(v));
2053− };
2054− };
2055− var functorObject = {
2056− map: function(f) {
2057− return function(m2) {
2058− return _fmapObject(m2, f);
2059− };
2060− }
2061− };
2062− var functorWithIndexObject = {
2063− mapWithIndex: mapWithKey,
2064− Functor0: function() {
2065− return functorObject;
1526+ function Wz() {
1527+ return g(document.createDocumentFragment());
1528+ }
1529+ function Xz(z) {
1530+ return document.createTextNode(z);
1531+ }
1532+ function Yz(z) {
1533+ return document.createComment(z);
1534+ }
1535+ function Zz(z, J, P) {
1536+ if (b(z)) {
1537+ let G = z;
1538+ while (G && b(G)) G = g(G).parent;
1539+ z = G !== null && G !== void 0 ? G : z;
1540+ }
1541+ if (b(J)) J = g(J, z);
1542+ if (P && b(P)) P = g(P).firstChildNode;
1543+ z.insertBefore(J, P);
1544+ }
1545+ function $z(z, J) {
1546+ z.removeChild(J);
1547+ }
1548+ function Bz(z, J) {
1549+ if (b(J)) J = g(J, z);
1550+ z.appendChild(J);
1551+ }
1552+ function r(z) {
1553+ if (b(z)) {
1554+ while (z && b(z)) z = g(z).parent;
1555+ return z !== null && z !== void 0 ? z : null;
20661556 }
2067− };
2068− var foldM = function(dictMonad) {
2069− var bind1 = bind(dictMonad.Bind1());
2070− var pure1 = pure(dictMonad.Applicative0());
2071− return function(f) {
2072− return function(z) {
2073− return _foldM(bind1)(f)(pure1(z));
2074− };
2075− };
2076− };
2077− var foldM1 = /* @__PURE__ */ foldM(monadST);
2078− var union = function(m2) {
2079− return mutate(function(s) {
2080− return foldM1(function(s$prime) {
2081− return function(k) {
2082− return function(v) {
2083− return poke2(k)(v)(s$prime);
2084− };
2085− };
2086− })(s)(m2);
2087− });
2088− };
2089− var unionWith = function(f) {
2090− return function(m1) {
2091− return function(m2) {
2092− return mutate(function(s1) {
2093− return foldM1(function(s2) {
2094− return function(k) {
2095− return function(v1) {
2096− return poke2(k)(_lookup(v1, function(v2) {
2097− return f(v1)(v2);
2098− }, k, m2))(s2);
2099− };
2100− };
2101− })(s1)(m1);
2102− })(m2);
2103− };
2104− };
2105− };
2106− var semigroupObject = function(dictSemigroup) {
2107− return {
2108− append: unionWith(append(dictSemigroup))
2109− };
2110− };
2111− var monoidObject = function(dictSemigroup) {
2112− var semigroupObject1 = semigroupObject(dictSemigroup);
2113− return {
2114− mempty: empty2,
2115− Semigroup0: function() {
2116− return semigroupObject1;
1557+ return z.parentNode;
1558+ }
1559+ function qz(z) {
1560+ var J;
1561+ if (b(z)) {
1562+ let P = g(z), G = r(P);
1563+ if (G && P.lastChildNode) {
1564+ let X2 = Array.from(G.childNodes), $ = X2.indexOf(P.lastChildNode);
1565+ return (J = X2[$ + 1]) !== null && J !== void 0 ? J : null;
21171566 }
2118− };
2119− };
2120− var fold2 = /* @__PURE__ */ _foldM(applyFlipped);
2121− var foldMap2 = function(dictMonoid) {
2122− var append1 = append(dictMonoid.Semigroup0());
2123− var mempty6 = mempty(dictMonoid);
2124− return function(f) {
2125− return fold2(function(acc) {
2126− return function(k) {
2127− return function(v) {
2128− return append1(acc)(f(k)(v));
2129− };
2130− };
2131− })(mempty6);
2132− };
2133− };
2134− var foldableObject = {
2135− foldl: function(f) {
2136− return fold2(function(z) {
2137− return function(v) {
2138− return f(z);
2139− };
2140− });
2141− },
2142− foldr: function(f) {
2143− return function(z) {
2144− return function(m2) {
2145− return foldr2(f)(z)(values(m2));
2146− };
2147− };
2148− },
2149− foldMap: function(dictMonoid) {
2150− var foldMap1 = foldMap2(dictMonoid);
2151− return function(f) {
2152− return foldMap1($$const(f));
2153− };
1567+ return null;
21541568 }
2155− };
2156− var foldableWithIndexObject = {
2157− foldlWithIndex: function(f) {
2158− return fold2(flip(f));
2159− },
2160− foldrWithIndex: function(f) {
2161− return function(z) {
2162− return function(m2) {
2163− return foldr2(uncurry(f))(z)(toArrayWithKey(Tuple.create)(m2));
2164− };
2165− };
2166− },
2167− foldMapWithIndex: function(dictMonoid) {
2168− return foldMap2(dictMonoid);
2169− },
2170− Foldable0: function() {
2171− return foldableObject;
2172− }
2173− };
2174− var traversableWithIndexObject = {
2175− traverseWithIndex: function(dictApplicative) {
2176− var Apply0 = dictApplicative.Apply0();
2177− var apply2 = apply(Apply0);
2178− var map4 = map(Apply0.Functor0());
2179− var pure1 = pure(dictApplicative);
2180− return function(f) {
2181− return function(ms) {
2182− return fold2(function(acc) {
2183− return function(k) {
2184− return function(v) {
2185− return apply2(map4(flip(insert(k)))(acc))(f(k)(v));
2186− };
2187− };
2188− })(pure1(empty2))(ms);
2189− };
2190− };
2191− },
2192− FunctorWithIndex0: function() {
2193− return functorWithIndexObject;
2194− },
2195− FoldableWithIndex1: function() {
2196− return foldableWithIndexObject;
2197− },
2198− Traversable2: function() {
2199− return traversableObject;
1569+ return z.nextSibling;
1570+ }
1571+ function Kz(z) {
1572+ return z.tagName;
1573+ }
1574+ function Uz(z, J) {
1575+ z.textContent = J;
1576+ }
1577+ function Hz(z) {
1578+ return z.textContent;
1579+ }
1580+ function Oz(z) {
1581+ return z.nodeType === 1;
1582+ }
1583+ function Rz(z) {
1584+ return z.nodeType === 3;
1585+ }
1586+ function Az(z) {
1587+ return z.nodeType === 8;
1588+ }
1589+ function b(z) {
1590+ return z.nodeType === 11;
1591+ }
1592+ function g(z, J) {
1593+ var P, G, X2;
1594+ let $ = z;
1595+ return (P = $.parent) !== null && P !== void 0 || ($.parent = J !== null && J !== void 0 ? J : null), (G = $.firstChildNode) !== null && G !== void 0 || ($.firstChildNode = z.firstChild), (X2 = $.lastChildNode) !== null && X2 !== void 0 || ($.lastChildNode = z.lastChild), $;
1596+ }
1597+ var l = { createElement: Jz, createElementNS: Pz, createTextNode: Xz, createDocumentFragment: Wz, createComment: Yz, insertBefore: Zz, removeChild: $z, appendChild: Bz, parentNode: r, nextSibling: qz, tagName: Kz, setTextContent: Uz, getTextContent: Hz, isElement: Oz, isText: Rz, isComment: Az, isDocumentFragment: b };
1598+ var x = C("", {}, [], void 0, void 0);
1599+ function I(z, J) {
1600+ var P, G;
1601+ let X2 = z.key === J.key, $ = ((P = z.data) === null || P === void 0 ? void 0 : P.is) === ((G = J.data) === null || G === void 0 ? void 0 : G.is), U = z.sel === J.sel, L = !z.sel && z.sel === J.sel ? typeof z.text === typeof J.text : true;
1602+ return U && X2 && $ && L;
1603+ }
1604+ function Mz() {
1605+ throw new Error("The document fragment is not supported on this platform.");
1606+ }
1607+ function Tz(z, J) {
1608+ return z.isElement(J);
1609+ }
1610+ function Lz(z, J) {
1611+ return z.isDocumentFragment(J);
1612+ }
1613+ function Dz(z, J, P) {
1614+ var G;
1615+ let X2 = {};
1616+ for (let $ = J; $ <= P; ++$) {
1617+ let U = (G = z[$]) === null || G === void 0 ? void 0 : G.key;
1618+ if (U !== void 0) X2[U] = $;
22001619 }
2201− };
2202− var traversableObject = {
2203− traverse: function(dictApplicative) {
2204− var $96 = traverseWithIndex(traversableWithIndexObject)(dictApplicative);
2205− return function($97) {
2206− return $96($$const($97));
1620+ return X2;
1621+ }
1622+ var jz = ["create", "update", "remove", "destroy", "pre", "post"];
1623+ function a(z, J, P) {
1624+ let G = { create: [], update: [], remove: [], destroy: [], pre: [], post: [] }, X2 = J !== void 0 ? J : l;
1625+ for (let W of jz) for (let Y2 of z) {
1626+ let q = Y2[W];
1627+ if (q !== void 0) G[W].push(q);
1628+ }
1629+ function $(W) {
1630+ let Y2 = W.id ? "#" + W.id : "", q = W.getAttribute("class"), B = q ? "." + q.split(" ").join(".") : "";
1631+ return C(X2.tagName(W).toLowerCase() + Y2 + B, {}, [], void 0, W);
1632+ }
1633+ function U(W) {
1634+ return C(void 0, {}, [], void 0, W);
1635+ }
1636+ function L(W, Y2) {
1637+ return function q() {
1638+ if (--Y2 === 0) {
1639+ let B = X2.parentNode(W);
1640+ if (B !== null) X2.removeChild(B, W);
1641+ }
22071642 };
2208− },
2209− sequence: function(dictApplicative) {
2210− return traverse(traversableObject)(dictApplicative)(identity4);
2211− },
2212− Functor0: function() {
2213− return functorObject;
2214− },
2215− Foldable1: function() {
2216− return foldableObject;
22171643 }
2218− };
2219−
2220− // output/Record.Unsafe.Union/foreign.js
2221− function unsafeUnionFn(r1, r2) {
2222− var copy = {};
2223− for (var k1 in r2) {
2224− if ({}.hasOwnProperty.call(r2, k1)) {
2225− copy[k1] = r2[k1];
1644+ function F(W, Y2) {
1645+ var q, B, K, O, M;
1646+ let Z, R = W.data, T = R === null || R === void 0 ? void 0 : R.hook;
1647+ (q = T === null || T === void 0 ? void 0 : T.init) === null || q === void 0 || q.call(T, W);
1648+ let { children: A, sel: H } = W;
1649+ if (H === "!") (B = W.text) !== null && B !== void 0 || (W.text = ""), W.elm = X2.createComment(W.text);
1650+ else if (H === "") W.elm = X2.createTextNode(W.text);
1651+ else if (H !== void 0) {
1652+ let D = H.indexOf("#"), j = H.indexOf(".", D), Q = D > 0 ? D : H.length, f = j > 0 ? j : H.length, c = D !== -1 || j !== -1 ? H.slice(0, Math.min(Q, f)) : H, V = R === null || R === void 0 ? void 0 : R.ns, S = V === void 0 ? X2.createElement(c, R) : X2.createElementNS(V, c, R);
1653+ if (W.elm = S, Q < f) S.setAttribute("id", H.slice(Q + 1, f));
1654+ if (j > 0) S.setAttribute("class", H.slice(f + 1).replace(/\./g, " "));
1655+ for (Z = 0; Z < G.create.length; ++Z) G.create[Z](x, W);
1656+ if (s(W.text) && (!w(A) || A.length === 0)) X2.appendChild(S, X2.createTextNode(W.text));
1657+ if (w(A)) for (Z = 0; Z < A.length; ++Z) {
1658+ let p = A[Z];
1659+ if (p != null) X2.appendChild(S, F(p, Y2));
1660+ }
1661+ if (T !== void 0) {
1662+ if ((K = T.create) === null || K === void 0 || K.call(T, x, W), T.insert !== void 0) Y2.push(W);
1663+ }
1664+ } else if (((O = P === null || P === void 0 ? void 0 : P.experimental) === null || O === void 0 ? void 0 : O.fragments) && W.children) {
1665+ W.elm = ((M = X2.createDocumentFragment) !== null && M !== void 0 ? M : Mz)();
1666+ for (Z = 0; Z < G.create.length; ++Z) G.create[Z](x, W);
1667+ for (Z = 0; Z < W.children.length; ++Z) {
1668+ let D = W.children[Z];
1669+ if (D != null) X2.appendChild(W.elm, F(D, Y2));
1670+ }
1671+ } else W.elm = X2.createTextNode(W.text);
1672+ return W.elm;
1673+ }
1674+ function _(W, Y2, q, B, K, O) {
1675+ for (; B <= K; ++B) {
1676+ let M = q[B];
1677+ if (M != null) X2.insertBefore(W, F(M, O), Y2);
1678+ }
1679+ }
1680+ function N(W) {
1681+ var Y2, q;
1682+ let B = W.data;
1683+ if (B !== void 0) {
1684+ (q = (Y2 = B === null || B === void 0 ? void 0 : B.hook) === null || Y2 === void 0 ? void 0 : Y2.destroy) === null || q === void 0 || q.call(Y2, W);
1685+ for (let K = 0; K < G.destroy.length; ++K) G.destroy[K](W);
1686+ if (W.children !== void 0) for (let K = 0; K < W.children.length; ++K) {
1687+ let O = W.children[K];
1688+ if (O != null && typeof O !== "string") N(O);
1689+ }
22261690 }
22271691 }
2228− for (var k2 in r1) {
2229− if ({}.hasOwnProperty.call(r1, k2)) {
2230− copy[k2] = r1[k2];
1692+ function k(W, Y2, q, B) {
1693+ var K, O;
1694+ for (; q <= B; ++q) {
1695+ let M, Z = Y2[q];
1696+ if (Z != null) if (Z.sel !== void 0) {
1697+ N(Z), M = G.remove.length + 1;
1698+ let R = L(Z.elm, M);
1699+ for (let A = 0; A < G.remove.length; ++A) G.remove[A](Z, R);
1700+ let T = (O = (K = Z === null || Z === void 0 ? void 0 : Z.data) === null || K === void 0 ? void 0 : K.hook) === null || O === void 0 ? void 0 : O.remove;
1701+ if (T !== void 0) T(Z, R);
1702+ else R();
1703+ } else if (Z.children) N(Z), k(W, Z.children, 0, Z.children.length - 1);
1704+ else X2.removeChild(W, Z.elm);
1705+ }
1706+ }
1707+ function d(W, Y2, q, B) {
1708+ let K = 0, O = 0, M = Y2.length - 1, Z = Y2[0], R = Y2[M], T = q.length - 1, A = q[0], H = q[T], D, j, Q, f;
1709+ while (K <= M && O <= T) if (Z == null) Z = Y2[++K];
1710+ else if (R == null) R = Y2[--M];
1711+ else if (A == null) A = q[++O];
1712+ else if (H == null) H = q[--T];
1713+ else if (I(Z, A)) y(Z, A, B), Z = Y2[++K], A = q[++O];
1714+ else if (I(R, H)) y(R, H, B), R = Y2[--M], H = q[--T];
1715+ else if (I(Z, H)) y(Z, H, B), X2.insertBefore(W, Z.elm, X2.nextSibling(R.elm)), Z = Y2[++K], H = q[--T];
1716+ else if (I(R, A)) y(R, A, B), X2.insertBefore(W, R.elm, Z.elm), R = Y2[--M], A = q[++O];
1717+ else {
1718+ if (D === void 0) D = Dz(Y2, K, M);
1719+ if (j = D[A.key], j === void 0) X2.insertBefore(W, F(A, B), Z.elm), A = q[++O];
1720+ else if (D[H.key] === void 0) X2.insertBefore(W, F(H, B), X2.nextSibling(R.elm)), H = q[--T];
1721+ else {
1722+ if (Q = Y2[j], Q.sel !== A.sel) X2.insertBefore(W, F(A, B), Z.elm);
1723+ else y(Q, A, B), Y2[j] = void 0, X2.insertBefore(W, Q.elm, Z.elm);
1724+ A = q[++O];
1725+ }
22311726 }
1727+ if (O <= T) f = q[T + 1] == null ? null : q[T + 1].elm, _(W, f, q, O, T, B);
1728+ if (K <= M) k(W, Y2, K, M);
1729+ }
1730+ function y(W, Y2, q) {
1731+ var B, K, O, M, Z, R, T, A;
1732+ let H = (B = Y2.data) === null || B === void 0 ? void 0 : B.hook;
1733+ (K = H === null || H === void 0 ? void 0 : H.prepatch) === null || K === void 0 || K.call(H, W, Y2);
1734+ let D = Y2.elm = W.elm;
1735+ if (W === Y2) return;
1736+ if (Y2.data !== void 0 || Y2.text !== void 0 && Y2.text !== W.text) {
1737+ (O = Y2.data) !== null && O !== void 0 || (Y2.data = {}), (M = W.data) !== null && M !== void 0 || (W.data = {});
1738+ for (let f = 0; f < G.update.length; ++f) G.update[f](W, Y2);
1739+ (T = (R = (Z = Y2.data) === null || Z === void 0 ? void 0 : Z.hook) === null || R === void 0 ? void 0 : R.update) === null || T === void 0 || T.call(R, W, Y2);
1740+ }
1741+ let j = W.children, Q = Y2.children;
1742+ if (Y2.text === void 0) {
1743+ if (j !== void 0 && Q !== void 0) {
1744+ if (j !== Q) d(D, j, Q, q);
1745+ } else if (Q !== void 0) {
1746+ if (W.text !== void 0) X2.setTextContent(D, "");
1747+ _(D, null, Q, 0, Q.length - 1, q);
1748+ } else if (j !== void 0) k(D, j, 0, j.length - 1);
1749+ else if (W.text !== void 0) X2.setTextContent(D, "");
1750+ } else if (W.text !== Y2.text) {
1751+ if (j !== void 0) k(D, j, 0, j.length - 1);
1752+ X2.setTextContent(D, Y2.text);
1753+ }
1754+ (A = H === null || H === void 0 ? void 0 : H.postpatch) === null || A === void 0 || A.call(H, W, Y2);
1755+ }
1756+ return function W(Y2, q) {
1757+ let B, K, O, M = [];
1758+ for (B = 0; B < G.pre.length; ++B) G.pre[B]();
1759+ if (Tz(X2, Y2)) Y2 = $(Y2);
1760+ else if (Lz(X2, Y2)) Y2 = U(Y2);
1761+ if (I(Y2, q)) y(Y2, q, M);
1762+ else if (K = Y2.elm, O = X2.parentNode(K), F(q, M), O !== null) X2.insertBefore(O, q.elm, X2.nextSibling(K)), k(O, [Y2], 0, 0);
1763+ for (B = 0; B < M.length; ++B) M[B].data.hook.insert(M[B]);
1764+ for (B = 0; B < G.post.length; ++B) G.post[B]();
1765+ return q;
1766+ };
1767+ }
1768+ var t = typeof (window === null || window === void 0 ? void 0 : window.requestAnimationFrame) === "function" ? window.requestAnimationFrame.bind(window) : setTimeout;
1769+ var Fz = (z) => {
1770+ t(() => {
1771+ t(z);
1772+ });
1773+ };
1774+ var u = false;
1775+ function Qz(z, J, P) {
1776+ Fz(() => {
1777+ z[J] = P;
1778+ });
1779+ }
1780+ function o(z, J) {
1781+ let P, G, X2 = J.elm, $ = z.data.style, U = J.data.style;
1782+ if (!$ && !U) return;
1783+ if ($ === U) return;
1784+ $ = $ || {}, U = U || {};
1785+ let L = "delayed" in $;
1786+ for (G in $) if (!(G in U)) if (G[0] === "-" && G[1] === "-") X2.style.removeProperty(G);
1787+ else X2.style[G] = "";
1788+ for (G in U) if (P = U[G], G === "delayed" && U.delayed) {
1789+ for (let F in U.delayed) if (P = U.delayed[F], !L || P !== $.delayed[F]) Qz(X2.style, F, P);
1790+ } else if (G !== "remove" && P !== $[G]) if (G[0] === "-" && G[1] === "-") X2.style.setProperty(G, P);
1791+ else X2.style[G] = P;
1792+ }
1793+ function fz(z) {
1794+ let J, P, G = z.elm, X2 = z.data.style;
1795+ if (!X2 || !(J = X2.destroy)) return;
1796+ for (P in J) G.style[P] = J[P];
1797+ }
1798+ function bz(z, J) {
1799+ let P = z.data.style;
1800+ if (!P || !P.remove) {
1801+ J();
1802+ return;
22321803 }
2233− return copy;
1804+ if (!u) z.elm.offsetLeft, u = true;
1805+ let G, X2 = z.elm, $ = 0, U = P.remove, L = 0, F = [];
1806+ for (G in U) F.push(G), X2.style[G] = U[G];
1807+ let N = getComputedStyle(X2)["transition-property"].split(", ");
1808+ for (; $ < N.length; ++$) if (F.indexOf(N[$]) !== -1) L++;
1809+ X2.addEventListener("transitionend", (k) => {
1810+ if (k.target === X2) --L;
1811+ if (L === 0) J();
1812+ });
22341813 }
1814+ function kz() {
1815+ u = false;
1816+ }
1817+ var n = { pre: kz, create: o, update: o, destroy: fz, remove: bz };
1818+ function Vz() {
1819+ return a([v, m, n]);
1820+ }
1821+
1822+ // output/Effect.Uncurried/foreign.js
1823+ var runEffectFn2 = function runEffectFn22(fn) {
1824+ return function(a2) {
1825+ return function(b2) {
1826+ return function() {
1827+ return fn(a2, b2);
1828+ };
1829+ };
1830+ };
1831+ };
1832+
1833+ // output/Snabbdom/index.js
1834+ var init = /* @__PURE__ */ mapFlipped(functorEffect)(Vz)(runEffectFn2);
1835+ var h2 = /* @__PURE__ */ runFn4(C);
1836+
1837+ // output/Foreign/foreign.js
1838+ var isArray = Array.isArray || function(value12) {
1839+ return Object.prototype.toString.call(value12) === "[object Array]";
1840+ };
1841+
1842+ // output/Untagged.Castable/index.js
1843+ var cast = function() {
1844+ return unsafeCoerce2;
1845+ };
22351846
2236− // output/Record.Unsafe.Union/index.js
2237− var unsafeUnion = /* @__PURE__ */ runFn2(unsafeUnionFn);
1847+ // output/Untagged.Union/index.js
1848+ var cast2 = /* @__PURE__ */ cast();
1849+ var asOneOf = function() {
1850+ return cast2;
1851+ };
22381852
22391853 // output/Plum.View/index.js
22401854 var append2 = /* @__PURE__ */ append(semigroupArray);
@@ -2283,10 +1897,12 @@
22831897 var monoidRecordCons3 = /* @__PURE__ */ monoidRecordCons(childrenIsSymbol);
22841898 var monoidRecordCons4 = /* @__PURE__ */ monoidRecordCons2(monoidArray)()(/* @__PURE__ */ monoidRecordCons1(monoidArray)()(/* @__PURE__ */ monoidRecordCons22(monoidArray)()(/* @__PURE__ */ monoidRecordCons(nervesIsSymbol)(monoidArray)()(monoidRecordNil))));
22851899 var mempty1 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidRecord2(/* @__PURE__ */ monoidRecordCons3(monoidArray)()(monoidRecordCons4)));
2286− var foldMap3 = /* @__PURE__ */ foldMap2(monoidString);
1900+ var foldMap4 = /* @__PURE__ */ foldMap2(monoidString);
1901+ var intercalate3 = /* @__PURE__ */ intercalate2(monoidString);
1902+ var asOneOf2 = /* @__PURE__ */ asOneOf();
22871903 var show1 = /* @__PURE__ */ show(showNumber);
22881904 var mempty22 = /* @__PURE__ */ mempty(monoidUnit);
2289− var intercalate3 = /* @__PURE__ */ intercalate2(monoidString);
1905+ var fromHomogeneous2 = /* @__PURE__ */ fromHomogeneous();
22901906 var map2 = /* @__PURE__ */ map(/* @__PURE__ */ functorWriterT(functorIdentity));
22911907 var map1 = /* @__PURE__ */ map(functorArray);
22921908 var Top = /* @__PURE__ */ function() {
@@ -2381,6 +1997,34 @@
23811997 Y2.value = new Y2();
23821998 return Y2;
23831999 }();
2000+ var TopLeft = /* @__PURE__ */ function() {
2001+ function TopLeft2() {
2002+ }
2003+ ;
2004+ TopLeft2.value = new TopLeft2();
2005+ return TopLeft2;
2006+ }();
2007+ var TopRight = /* @__PURE__ */ function() {
2008+ function TopRight2() {
2009+ }
2010+ ;
2011+ TopRight2.value = new TopRight2();
2012+ return TopRight2;
2013+ }();
2014+ var BottomRight = /* @__PURE__ */ function() {
2015+ function BottomRight2() {
2016+ }
2017+ ;
2018+ BottomRight2.value = new BottomRight2();
2019+ return BottomRight2;
2020+ }();
2021+ var BottomLeft = /* @__PURE__ */ function() {
2022+ function BottomLeft2() {
2023+ }
2024+ ;
2025+ BottomLeft2.value = new BottomLeft2();
2026+ return BottomLeft2;
2027+ }();
23842028 var Grid = /* @__PURE__ */ function() {
23852029 function Grid2() {
23862030 }
@@ -2412,6 +2056,27 @@
24122056 Span2.value = new Span2();
24132057 return Span2;
24142058 }();
2059+ var Solid = /* @__PURE__ */ function() {
2060+ function Solid2() {
2061+ }
2062+ ;
2063+ Solid2.value = new Solid2();
2064+ return Solid2;
2065+ }();
2066+ var Dashed = /* @__PURE__ */ function() {
2067+ function Dashed2() {
2068+ }
2069+ ;
2070+ Dashed2.value = new Dashed2();
2071+ return Dashed2;
2072+ }();
2073+ var Dotted = /* @__PURE__ */ function() {
2074+ function Dotted2() {
2075+ }
2076+ ;
2077+ Dotted2.value = new Dotted2();
2078+ return Dotted2;
2079+ }();
24152080 var Start = /* @__PURE__ */ function() {
24162081 function Start2() {
24172082 }
@@ -2560,6 +2225,102 @@
25602225 };
25612226 return Clip2;
25622227 }();
2228+ var BorderWidth = /* @__PURE__ */ function() {
2229+ function BorderWidth2(value0, value1) {
2230+ this.value0 = value0;
2231+ this.value1 = value1;
2232+ }
2233+ ;
2234+ BorderWidth2.create = function(value0) {
2235+ return function(value1) {
2236+ return new BorderWidth2(value0, value1);
2237+ };
2238+ };
2239+ return BorderWidth2;
2240+ }();
2241+ var BorderStyle = /* @__PURE__ */ function() {
2242+ function BorderStyle2(value0) {
2243+ this.value0 = value0;
2244+ }
2245+ ;
2246+ BorderStyle2.create = function(value0) {
2247+ return new BorderStyle2(value0);
2248+ };
2249+ return BorderStyle2;
2250+ }();
2251+ var Round = /* @__PURE__ */ function() {
2252+ function Round2(value0, value1) {
2253+ this.value0 = value0;
2254+ this.value1 = value1;
2255+ }
2256+ ;
2257+ Round2.create = function(value0) {
2258+ return function(value1) {
2259+ return new Round2(value0, value1);
2260+ };
2261+ };
2262+ return Round2;
2263+ }();
2264+ var Shadow = /* @__PURE__ */ function() {
2265+ function Shadow2(value0) {
2266+ this.value0 = value0;
2267+ }
2268+ ;
2269+ Shadow2.create = function(value0) {
2270+ return new Shadow2(value0);
2271+ };
2272+ return Shadow2;
2273+ }();
2274+ var InnerShadow = /* @__PURE__ */ function() {
2275+ function InnerShadow2(value0) {
2276+ this.value0 = value0;
2277+ }
2278+ ;
2279+ InnerShadow2.create = function(value0) {
2280+ return new InnerShadow2(value0);
2281+ };
2282+ return InnerShadow2;
2283+ }();
2284+ var FontColor = /* @__PURE__ */ function() {
2285+ function FontColor2(value0) {
2286+ this.value0 = value0;
2287+ }
2288+ ;
2289+ FontColor2.create = function(value0) {
2290+ return new FontColor2(value0);
2291+ };
2292+ return FontColor2;
2293+ }();
2294+ var FontWeight = /* @__PURE__ */ function() {
2295+ function FontWeight2(value0) {
2296+ this.value0 = value0;
2297+ }
2298+ ;
2299+ FontWeight2.create = function(value0) {
2300+ return new FontWeight2(value0);
2301+ };
2302+ return FontWeight2;
2303+ }();
2304+ var FontSize = /* @__PURE__ */ function() {
2305+ function FontSize2(value0) {
2306+ this.value0 = value0;
2307+ }
2308+ ;
2309+ FontSize2.create = function(value0) {
2310+ return new FontSize2(value0);
2311+ };
2312+ return FontSize2;
2313+ }();
2314+ var Font = /* @__PURE__ */ function() {
2315+ function Font2(value0) {
2316+ this.value0 = value0;
2317+ }
2318+ ;
2319+ Font2.create = function(value0) {
2320+ return new Font2(value0);
2321+ };
2322+ return Font2;
2323+ }();
25632324 var UI = /* @__PURE__ */ function() {
25642325 function UI2(value0, value1) {
25652326 this.value0 = value0;
@@ -2676,12 +2437,12 @@
26762437 return None3;
26772438 }();
26782439 var semigroupSkinGrowth = {
2679− append: function(v) {
2440+ append: function(v2) {
26802441 return function(v1) {
26812442 return {
2682− meat: union(v.meat)(v1.meat),
2683− hover: union(v.hover)(v1.hover),
2684− down: union(v.down)(v1.down)
2443+ meat: union(v2.meat)(v1.meat),
2444+ hover: union(v2.hover)(v1.hover),
2445+ down: union(v2.down)(v1.down)
26852446 };
26862447 };
26872448 }
@@ -2691,10 +2452,10 @@
26912452 var bind2 = /* @__PURE__ */ bind(bindWriterT2);
26922453 var append22 = /* @__PURE__ */ append(/* @__PURE__ */ semigroupWriterT(applyIdentity)(semigroupSkinGrowth)(semigroupArray));
26932454 var semigroupMutation = {
2694− append: function(v) {
2455+ append: function(v2) {
26952456 return function(v1) {
26962457 return {
2697− extraSkin: append2(v.extraSkin)(v1.extraSkin)
2458+ extraSkin: append2(v2.extraSkin)(v1.extraSkin)
26982459 };
26992460 };
27002461 }
@@ -2704,60 +2465,132 @@
27042465 return function(dictSemigroup1) {
27052466 var append4 = append(dictSemigroup1);
27062467 return {
2707− append: function(v) {
2468+ append: function(v2) {
27082469 return function(v1) {
2709− return new UI(append3(v.value0)(v1.value0), append4(v.value1)(v1.value1));
2470+ return new UI(append3(v2.value0)(v1.value0), append4(v2.value1)(v1.value1));
27102471 };
27112472 }
27122473 };
27132474 };
27142475 };
27152476 var renderableSide = {
2716− render: function(v) {
2717− if (v instanceof Top) {
2477+ render: function(v2) {
2478+ if (v2 instanceof Top) {
27182479 return "top";
27192480 }
27202481 ;
2721− if (v instanceof Right2) {
2482+ if (v2 instanceof Right2) {
27222483 return "right";
27232484 }
27242485 ;
2725− if (v instanceof Bottom) {
2486+ if (v2 instanceof Bottom) {
27262487 return "bottom";
27272488 }
27282489 ;
2729− if (v instanceof Left2) {
2490+ if (v2 instanceof Left2) {
27302491 return "left";
27312492 }
27322493 ;
2733− throw new Error("Failed pattern match at Plum.View (line 263, column 12 - line 267, column 19): " + [v.constructor.name]);
2494+ throw new Error("Failed pattern match at Plum.View (line 383, column 12 - line 387, column 19): " + [v2.constructor.name]);
27342495 },
2735− renderKey: function(v) {
2736− if (v instanceof Top) {
2496+ renderKey: function(v2) {
2497+ if (v2 instanceof Top) {
27372498 return "top";
27382499 }
27392500 ;
2740− if (v instanceof Right2) {
2501+ if (v2 instanceof Right2) {
27412502 return "right";
27422503 }
27432504 ;
2744− if (v instanceof Bottom) {
2505+ if (v2 instanceof Bottom) {
27452506 return "bottom";
27462507 }
27472508 ;
2748− if (v instanceof Left2) {
2509+ if (v2 instanceof Left2) {
27492510 return "left";
27502511 }
27512512 ;
2752− throw new Error("Failed pattern match at Plum.View (line 268, column 15 - line 272, column 19): " + [v.constructor.name]);
2513+ throw new Error("Failed pattern match at Plum.View (line 388, column 15 - line 392, column 19): " + [v2.constructor.name]);
2514+ }
2515+ };
2516+ var renderableCorner = {
2517+ render: function(v2) {
2518+ if (v2 instanceof TopLeft) {
2519+ return "top-left";
2520+ }
2521+ ;
2522+ if (v2 instanceof TopRight) {
2523+ return "top-right";
2524+ }
2525+ ;
2526+ if (v2 instanceof BottomRight) {
2527+ return "bottom-right";
2528+ }
2529+ ;
2530+ if (v2 instanceof BottomLeft) {
2531+ return "bottom-left";
2532+ }
2533+ ;
2534+ throw new Error("Failed pattern match at Plum.View (line 357, column 12 - line 361, column 32): " + [v2.constructor.name]);
2535+ },
2536+ renderKey: function(v2) {
2537+ if (v2 instanceof TopLeft) {
2538+ return "top-left";
2539+ }
2540+ ;
2541+ if (v2 instanceof TopRight) {
2542+ return "top-right";
2543+ }
2544+ ;
2545+ if (v2 instanceof BottomRight) {
2546+ return "bottom-right";
2547+ }
2548+ ;
2549+ if (v2 instanceof BottomLeft) {
2550+ return "bottom-left";
2551+ }
2552+ ;
2553+ throw new Error("Failed pattern match at Plum.View (line 362, column 15 - line 366, column 32): " + [v2.constructor.name]);
27532554 }
27542555 };
27552556 var renderableColor = {
2756− render: function(v) {
2757− return "rgb(" + (show2(v.r) + ("," + (show2(v.g) + ("," + (show2(v.b) + ("," + (show2(v.a) + "%)")))))));
2557+ render: function(v2) {
2558+ return "rgb(" + (show2(v2.r) + ("," + (show2(v2.g) + ("," + (show2(v2.b) + ("," + (show2(v2.a) + "%)")))))));
27582559 },
2759− renderKey: function(v) {
2760− return show2(v.r) + ("-" + (show2(v.g) + ("-" + (show2(v.b) + ("-" + show2(v.a))))));
2560+ renderKey: function(v2) {
2561+ return show2(v2.r) + ("-" + (show2(v2.g) + ("-" + (show2(v2.b) + ("-" + show2(v2.a))))));
2562+ }
2563+ };
2564+ var renderableBorderStyle = {
2565+ render: function(v2) {
2566+ if (v2 instanceof Solid) {
2567+ return "solid";
2568+ }
2569+ ;
2570+ if (v2 instanceof Dashed) {
2571+ return "dashed";
2572+ }
2573+ ;
2574+ if (v2 instanceof Dotted) {
2575+ return "dotted";
2576+ }
2577+ ;
2578+ throw new Error("Failed pattern match at Plum.View (line 371, column 12 - line 374, column 23): " + [v2.constructor.name]);
2579+ },
2580+ renderKey: function(v2) {
2581+ if (v2 instanceof Solid) {
2582+ return "solid";
2583+ }
2584+ ;
2585+ if (v2 instanceof Dashed) {
2586+ return "dashed";
2587+ }
2588+ ;
2589+ if (v2 instanceof Dotted) {
2590+ return "dotted";
2591+ }
2592+ ;
2593+ throw new Error("Failed pattern match at Plum.View (line 375, column 15 - line 378, column 23): " + [v2.constructor.name]);
27612594 }
27622595 };
27632596 var monoidSkinGrowth = {
@@ -2796,17 +2629,17 @@
27962629 };
27972630 var functorGenericUI = {
27982631 map: function(f) {
2799− return function(v) {
2800− return new UI(v.value0, f(v.value1));
2632+ return function(v2) {
2633+ return new UI(v2.value0, f(v2.value1));
28012634 };
28022635 }
28032636 };
28042637 var applyGenericUI = function(dictMonoid) {
28052638 var append3 = append(semigroupRecord3(semigroupRecordCons2(dictMonoid.Semigroup0())));
28062639 return {
2807− apply: function(v) {
2640+ apply: function(v2) {
28082641 return function(v1) {
2809− return new UI(append3(v.value0)(v1.value0), v.value1(v1.value1));
2642+ return new UI(append3(v2.value0)(v1.value0), v2.value1(v1.value1));
28102643 };
28112644 },
28122645 Functor0: function() {
@@ -2818,10 +2651,10 @@
28182651 var append3 = append(semigroupRecord3(semigroupRecordCons2(dictMonoid.Semigroup0())));
28192652 var applyGenericUI1 = applyGenericUI(dictMonoid);
28202653 return {
2821− bind: function(v) {
2654+ bind: function(v2) {
28222655 return function(f) {
2823− var v1 = f(v.value1);
2824− return new UI(append3(v.value0)(v1.value0), v1.value1);
2656+ var v1 = f(v2.value1);
2657+ return new UI(append3(v2.value0)(v1.value0), v1.value1);
28252658 };
28262659 },
28272660 Apply0: function() {
@@ -2829,36 +2662,70 @@
28292662 }
28302663 };
28312664 };
2832− var text = function(s) {
2833− return function(v) {
2665+ var applicativeGenericUI = function(dictMonoid) {
2666+ var applyGenericUI1 = applyGenericUI(dictMonoid);
2667+ return {
2668+ pure: UI.create(mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)))),
2669+ Apply0: function() {
2670+ return applyGenericUI1;
2671+ }
2672+ };
2673+ };
2674+ var text = function(s2) {
2675+ return function(v2) {
28342676 return new UI({
28352677 nerves: mempty1.nerves,
28362678 meat: mempty1.meat,
28372679 hover: mempty1.hover,
28382680 down: mempty1.down,
28392681 children: [new Tuple({
2840− meat: v.value0.meat,
2841− nerves: v.value0.nerves,
2842− hover: v.value0.hover,
2843− down: v.value0.down
2844− }, new Text(s))]
2845− }, v.value1);
2682+ meat: v2.value0.meat,
2683+ nerves: v2.value0.nerves,
2684+ hover: v2.value0.hover,
2685+ down: v2.value0.down
2686+ }, new Text(s2))]
2687+ }, v2.value1);
28462688 };
28472689 };
2848− var styleSkinGrowth = function(v) {
2849− return foldMap3(function(className) {
2690+ var styleSkinGrowth = function(v2) {
2691+ return foldMap4(function(className) {
28502692 return function(v1) {
28512693 return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
28522694 };
2853− })(v.meat) + (foldMap3(function(className) {
2695+ })(v2.meat) + (foldMap4(function(className) {
28542696 return function(v1) {
28552697 return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
28562698 };
2857− })(v.hover) + foldMap3(function(className) {
2699+ })(v2.hover) + foldMap4(function(className) {
28582700 return function(v1) {
28592701 return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
28602702 };
2861− })(v.down));
2703+ })(v2.down));
2704+ };
2705+ var string = function(elem2) {
2706+ return function(classes) {
2707+ return function(string1) {
2708+ return h2(elem2)({
2709+ attrs: singleton2("class")(intercalate3(" ")(classes)),
2710+ on: empty2,
2711+ style: empty2
2712+ })([])(asOneOf2(string1));
2713+ };
2714+ };
2715+ };
2716+ var stack = function(v2) {
2717+ return new UI({
2718+ nerves: mempty1.nerves,
2719+ meat: mempty1.meat,
2720+ hover: mempty1.hover,
2721+ down: mempty1.down,
2722+ children: [new Tuple({
2723+ meat: v2.value0.meat,
2724+ nerves: v2.value0.nerves,
2725+ hover: v2.value0.hover,
2726+ down: v2.value0.down
2727+ }, new Stack(v2.value0.children))]
2728+ }, v2.value1);
28622729 };
28632730 var sk = function(cName) {
28642731 return function(key) {
@@ -2876,13 +2743,27 @@
28762743 };
28772744 };
28782745 };
2879− var rgb = function(r) {
2880− return function(g) {
2881− return function(b) {
2746+ var row = function(v2) {
2747+ return new UI({
2748+ nerves: mempty1.nerves,
2749+ meat: mempty1.meat,
2750+ hover: mempty1.hover,
2751+ down: mempty1.down,
2752+ children: [new Tuple({
2753+ meat: v2.value0.meat,
2754+ nerves: v2.value0.nerves,
2755+ hover: v2.value0.hover,
2756+ down: v2.value0.down
2757+ }, new Row(v2.value0.children))]
2758+ }, v2.value1);
2759+ };
2760+ var rgb = function(r2) {
2761+ return function(g2) {
2762+ return function(b2) {
28822763 return {
2883− r: round2(r * 255),
2884− g: round2(g * 255),
2885− b: round2(b * 255),
2764+ r: round2(r2 * 255),
2765+ g: round2(g2 * 255),
2766+ b: round2(b2 * 255),
28862767 a: 100
28872768 };
28882769 };
@@ -2893,72 +2774,87 @@
28932774 };
28942775 var renderKey1 = /* @__PURE__ */ renderKey(renderableColor);
28952776 var renderKey2 = /* @__PURE__ */ renderKey(renderableSide);
2777+ var renderKey3 = /* @__PURE__ */ renderKey(renderableBorderStyle);
2778+ var renderKey4 = /* @__PURE__ */ renderKey(renderableCorner);
28962779 var render = function(dict) {
28972780 return dict.render;
28982781 };
28992782 var render1 = /* @__PURE__ */ render(renderableColor);
29002783 var render2 = /* @__PURE__ */ render(renderableSide);
2784+ var render3 = /* @__PURE__ */ render(renderableBorderStyle);
2785+ var render4 = /* @__PURE__ */ render(renderableCorner);
29012786 var renderableLength = {
2902− render: function(v) {
2903− if (v instanceof Px) {
2904− return show2(v.value0) + "px";
2787+ render: function(v2) {
2788+ if (v2 instanceof Px) {
2789+ return show2(v2.value0) + "px";
29052790 }
29062791 ;
2907− if (v instanceof Fit) {
2792+ if (v2 instanceof Fit) {
29082793 return "fit-content";
29092794 }
29102795 ;
2911− if (v instanceof Fill) {
2796+ if (v2 instanceof Fill) {
29122797 return "100%";
29132798 }
29142799 ;
2915− if (v instanceof Max2) {
2916− return "max(" + (show2(v.value0) + ("px," + (render(renderableLength)(v.value1) + ")")));
2800+ if (v2 instanceof Max2) {
2801+ return "max(" + (show2(v2.value0) + ("px," + (render(renderableLength)(v2.value1) + ")")));
29172802 }
29182803 ;
2919− if (v instanceof Min2) {
2920− return "min(" + (show2(v.value0) + ("px," + (render(renderableLength)(v.value1) + ")")));
2804+ if (v2 instanceof Min2) {
2805+ return "min(" + (show2(v2.value0) + ("px," + (render(renderableLength)(v2.value1) + ")")));
29212806 }
29222807 ;
2923− throw new Error("Failed pattern match at Plum.View (line 362, column 12 - line 367, column 62): " + [v.constructor.name]);
2808+ throw new Error("Failed pattern match at Plum.View (line 494, column 12 - line 499, column 62): " + [v2.constructor.name]);
29242809 },
2925− renderKey: function(v) {
2926− if (v instanceof Px) {
2927− return show2(v.value0);
2810+ renderKey: function(v2) {
2811+ if (v2 instanceof Px) {
2812+ return show2(v2.value0);
29282813 }
29292814 ;
2930− if (v instanceof Fit) {
2815+ if (v2 instanceof Fit) {
29312816 return "fit-content";
29322817 }
29332818 ;
2934− if (v instanceof Fill) {
2819+ if (v2 instanceof Fill) {
29352820 return "fill";
29362821 }
29372822 ;
2938− if (v instanceof Max2) {
2939− return "max-" + (show2(v.value0) + ("-" + renderKey(renderableLength)(v.value1)));
2823+ if (v2 instanceof Max2) {
2824+ return "max-" + (show2(v2.value0) + ("-" + renderKey(renderableLength)(v2.value1)));
29402825 }
29412826 ;
2942− if (v instanceof Min2) {
2943− return "min-" + (show2(v.value0) + ("-" + renderKey(renderableLength)(v.value1)));
2827+ if (v2 instanceof Min2) {
2828+ return "min-" + (show2(v2.value0) + ("-" + renderKey(renderableLength)(v2.value1)));
29442829 }
29452830 ;
2946− throw new Error("Failed pattern match at Plum.View (line 368, column 15 - line 373, column 56): " + [v.constructor.name]);
2831+ throw new Error("Failed pattern match at Plum.View (line 500, column 15 - line 505, column 56): " + [v2.constructor.name]);
2832+ }
2833+ };
2834+ var renderKey5 = /* @__PURE__ */ renderKey(renderableLength);
2835+ var render5 = /* @__PURE__ */ render(renderableLength);
2836+ var renderableShadow = {
2837+ render: function(v2) {
2838+ return show2(v2.offset.x) + ("px " + (show2(v2.offset.y) + ("px " + (show1(v2.blur) + ("px " + (show1(v2.size) + ("px " + render1(v2.color))))))));
2839+ },
2840+ renderKey: function(v2) {
2841+ return show2(v2.offset.x) + ("-" + (show2(v2.offset.y) + ("-" + (show1(v2.blur) + ("-" + (show1(v2.size) + ("-" + renderKey1(v2.color))))))));
29472842 }
29482843 };
2949− var renderKey3 = /* @__PURE__ */ renderKey(renderableLength);
2950− var render3 = /* @__PURE__ */ render(renderableLength);
2844+ var renderKey6 = /* @__PURE__ */ renderKey(renderableShadow);
2845+ var render6 = /* @__PURE__ */ render(renderableShadow);
2846+ var removeSpaces = /* @__PURE__ */ replaceAll(" ")("-");
29512847 var skin = function(ctx) {
2952− return function(v) {
2953− if (v instanceof Spacing) {
2954− return sk("spacing-" + (show2(v.value0) + ("-" + show2(v.value1))))("gap")(show2(v.value0) + ("px " + (show2(v.value1) + "px")));
2848+ return function(v2) {
2849+ if (v2 instanceof Spacing) {
2850+ return sk("spacing-" + (show2(v2.value0) + ("-" + show2(v2.value1))))("gap")(show2(v2.value0) + ("px " + (show2(v2.value1) + "px")));
29552851 }
29562852 ;
2957− if (v instanceof Explain) {
2853+ if (v2 instanceof Explain) {
29582854 return sk("explain")("border")("dashed magenta");
29592855 }
29602856 ;
2961− if (v instanceof Align) {
2857+ if (v2 instanceof Align) {
29622858 if (ctx instanceof Generic) {
29632859 return mempty3;
29642860 }
@@ -2969,85 +2865,85 @@
29692865 ;
29702866 if (ctx instanceof Grid) {
29712867 var v1 = function() {
2972− if (v.value1 instanceof Start) {
2868+ if (v2.value1 instanceof Start) {
29732869 return "start";
29742870 }
29752871 ;
2976− if (v.value1 instanceof Center) {
2872+ if (v2.value1 instanceof Center) {
29772873 return "center";
29782874 }
29792875 ;
2980− if (v.value1 instanceof End) {
2876+ if (v2.value1 instanceof End) {
29812877 return "end";
29822878 }
29832879 ;
2984− throw new Error("Failed pattern match at Plum.View (line 311, column 13 - line 314, column 27): " + [v.value1.constructor.name]);
2880+ throw new Error("Failed pattern match at Plum.View (line 431, column 13 - line 434, column 27): " + [v2.value1.constructor.name]);
29852881 }();
29862882 var k = function() {
2987− if (v.value0 instanceof X) {
2883+ if (v2.value0 instanceof X) {
29882884 return "justify-items";
29892885 }
29902886 ;
2991− if (v.value0 instanceof Y) {
2887+ if (v2.value0 instanceof Y) {
29922888 return "align-items";
29932889 }
29942890 ;
2995− throw new Error("Failed pattern match at Plum.View (line 306, column 13 - line 308, column 33): " + [v.value0.constructor.name]);
2891+ throw new Error("Failed pattern match at Plum.View (line 426, column 13 - line 428, column 33): " + [v2.value0.constructor.name]);
29962892 }();
29972893 return sk("align-grid-" + (k + ("-" + v1)))(k)(v1);
29982894 }
29992895 ;
30002896 if (ctx instanceof Flexbox) {
30012897 var v1 = function() {
3002− if (v.value1 instanceof Start) {
2898+ if (v2.value1 instanceof Start) {
30032899 return "flex-start";
30042900 }
30052901 ;
3006− if (v.value1 instanceof Center) {
2902+ if (v2.value1 instanceof Center) {
30072903 return "center";
30082904 }
30092905 ;
3010− if (v.value1 instanceof End) {
2906+ if (v2.value1 instanceof End) {
30112907 return "flex-end";
30122908 }
30132909 ;
3014− throw new Error("Failed pattern match at Plum.View (line 330, column 13 - line 333, column 32): " + [v.value1.constructor.name]);
2910+ throw new Error("Failed pattern match at Plum.View (line 450, column 13 - line 453, column 32): " + [v2.value1.constructor.name]);
30152911 }();
30162912 var k = function() {
3017− var v2 = new Tuple(ctx.value0, v.value0);
3018− if (v2.value0 instanceof X && v2.value1 instanceof X) {
2913+ var v22 = new Tuple(ctx.value0, v2.value0);
2914+ if (v22.value0 instanceof X && v22.value1 instanceof X) {
30192915 return "justify-content";
30202916 }
30212917 ;
3022− if (v2.value0 instanceof X && v2.value1 instanceof Y) {
2918+ if (v22.value0 instanceof X && v22.value1 instanceof Y) {
30232919 return "align-items";
30242920 }
30252921 ;
3026− if (v2.value0 instanceof Y && v2.value1 instanceof X) {
2922+ if (v22.value0 instanceof Y && v22.value1 instanceof X) {
30272923 return "align-items";
30282924 }
30292925 ;
3030− if (v2.value0 instanceof Y && v2.value1 instanceof Y) {
2926+ if (v22.value0 instanceof Y && v22.value1 instanceof Y) {
30312927 return "justify-content";
30322928 }
30332929 ;
3034− throw new Error("Failed pattern match at Plum.View (line 322, column 13 - line 326, column 42): " + [v2.constructor.name]);
2930+ throw new Error("Failed pattern match at Plum.View (line 442, column 13 - line 446, column 42): " + [v22.constructor.name]);
30352931 }();
30362932 return sk("align-flexbox-" + (k + ("-" + v1)))(k)(v1);
30372933 }
30382934 ;
3039− throw new Error("Failed pattern match at Plum.View (line 300, column 26 - line 336, column 51): " + [ctx.constructor.name]);
2935+ throw new Error("Failed pattern match at Plum.View (line 420, column 26 - line 456, column 51): " + [ctx.constructor.name]);
30402936 }
30412937 ;
3042− if (v instanceof Width) {
3043− return sk("width-" + renderKey3(v.value0))("width")(render3(v.value0));
2938+ if (v2 instanceof Width) {
2939+ return sk("width-" + renderKey5(v2.value0))("width")(render5(v2.value0));
30442940 }
30452941 ;
3046− if (v instanceof Height) {
3047− return sk("height-" + renderKey3(v.value0))("height")(render3(v.value0));
2942+ if (v2 instanceof Height) {
2943+ return sk("height-" + renderKey5(v2.value0))("height")(render5(v2.value0));
30482944 }
30492945 ;
3050− if (v instanceof Wrapped) {
2946+ if (v2 instanceof Wrapped) {
30512947 if (ctx instanceof Flexbox) {
30522948 return sk("wrapped")("flex-wrap")("wrap");
30532949 }
@@ -3055,15 +2951,15 @@
30552951 return pure2([]);
30562952 }
30572953 ;
3058− if (v instanceof BackgroundColor) {
3059− return sk("bg-color-" + renderKey1(v.value0))("background-color")(render1(v.value0));
2954+ if (v2 instanceof BackgroundColor) {
2955+ return sk("bg-color-" + renderKey1(v2.value0))("background-color")(render1(v2.value0));
30602956 }
30612957 ;
3062− if (v instanceof Padding) {
3063− return sk("padding-" + (renderKey2(v.value0) + ("-" + show2(v.value1))))("padding-" + render2(v.value0))(show2(v.value1) + "px");
2958+ if (v2 instanceof Padding) {
2959+ return sk("padding-" + (renderKey2(v2.value0) + ("-" + show2(v2.value1))))("padding-" + render2(v2.value0))(show2(v2.value1) + "px");
30642960 }
30652961 ;
3066− if (v instanceof Spread) {
2962+ if (v2 instanceof Spread) {
30672963 if (ctx instanceof Flexbox) {
30682964 return sk("spread")("justify-content")("space-between");
30692965 }
@@ -3071,54 +2967,66 @@
30712967 return pure2([]);
30722968 }
30732969 ;
3074− if (v instanceof Opacity) {
3075− return sk("opacity-" + show1(v.value0))("opacity")(show1(v.value0));
2970+ if (v2 instanceof Opacity) {
2971+ return sk("opacity-" + show1(v2.value0))("opacity")(show1(v2.value0));
30762972 }
30772973 ;
3078− if (v instanceof Pointer) {
2974+ if (v2 instanceof Pointer) {
30792975 return sk("pointer")("cursor")("pointer");
30802976 }
30812977 ;
3082− if (v instanceof Move) {
3083− return sk("move-" + (show2(v.value0.x) + ("-" + show2(v.value0.y))))("transform")("translate(" + (show2(v.value0.x) + ("px, " + (show2(v.value0.y) + "px)"))));
2978+ if (v2 instanceof Move) {
2979+ return sk("move-" + (show2(v2.value0.x) + ("-" + show2(v2.value0.y))))("transform")("translate(" + (show2(v2.value0.x) + ("px, " + (show2(v2.value0.y) + "px)"))));
30842980 }
30852981 ;
3086− if (v instanceof Clip && v.value0 instanceof X) {
2982+ if (v2 instanceof Clip && v2.value0 instanceof X) {
30872983 return sk("clip-x")("overflow-x")("hidden");
30882984 }
30892985 ;
3090− if (v instanceof Clip && v.value0 instanceof Y) {
2986+ if (v2 instanceof Clip && v2.value0 instanceof Y) {
30912987 return sk("clip-y")("overflow-y")("hidden");
30922988 }
30932989 ;
3094− throw new Error("Failed pattern match at Plum.View (line 297, column 12 - line 355, column 46): " + [v.constructor.name]);
3095− };
3096− };
3097− var onMouseDown = function(dictMonoid) {
3098− var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
3099− return function(v) {
3100− return new UI({
3101− nerves: mempty52.nerves,
3102− meat: mempty52.meat,
3103− hover: mempty52.hover,
3104− children: mempty52.children,
3105− down: v.value0.meat
3106− }, v.value1);
3107− };
3108− };
3109− var onHover = function(dictMonoid) {
3110− var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
3111− return function(v) {
3112− return new UI({
3113− nerves: mempty52.nerves,
3114− meat: mempty52.meat,
3115− down: mempty52.down,
3116− children: mempty52.children,
3117− hover: v.value0.meat
3118− }, v.value1);
2990+ if (v2 instanceof BorderWidth) {
2991+ return sk("border-width-" + (renderKey2(v2.value0) + ("-" + show2(v2.value1))))("border-" + (render2(v2.value0) + "-width"))(show2(v2.value1) + "px");
2992+ }
2993+ ;
2994+ if (v2 instanceof BorderStyle) {
2995+ return sk("border-style-" + renderKey3(v2.value0))("border-style")(render3(v2.value0));
2996+ }
2997+ ;
2998+ if (v2 instanceof Round) {
2999+ return sk("round-" + (renderKey4(v2.value0) + ("-" + show2(v2.value1))))("border-" + (render4(v2.value0) + "-radius"))(show2(v2.value1) + "px");
3000+ }
3001+ ;
3002+ if (v2 instanceof Shadow) {
3003+ return sk("shadow-" + renderKey6(v2.value0))("box-shadow")(render6(v2.value0));
3004+ }
3005+ ;
3006+ if (v2 instanceof InnerShadow) {
3007+ return sk("inner-shadow-" + renderKey6(v2.value0))("box-shadow")(render6(v2.value0) + " inset");
3008+ }
3009+ ;
3010+ if (v2 instanceof FontColor) {
3011+ return sk("font-color-" + renderKey1(v2.value0))("color")(render1(v2.value0));
3012+ }
3013+ ;
3014+ if (v2 instanceof FontSize) {
3015+ return sk("font-size-" + show2(v2.value0))("font-size")(show2(v2.value0) + "px");
3016+ }
3017+ ;
3018+ if (v2 instanceof Font) {
3019+ return sk("font-" + removeSpaces(v2.value0))("font-family")(v2.value0);
3020+ }
3021+ ;
3022+ if (v2 instanceof FontWeight) {
3023+ return sk("font-weight-" + show2(v2.value0))("font-weight")(show2(v2.value0));
3024+ }
3025+ ;
3026+ throw new Error("Failed pattern match at Plum.View (line 417, column 12 - line 484, column 71): " + [v2.constructor.name]);
31193027 };
31203028 };
3121− var m = function(dictMonoid) {
3029+ var m2 = function(dictMonoid) {
31223030 var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
31233031 return function(meat) {
31243032 return new UI({
@@ -3130,36 +3038,55 @@
31303038 }, mempty22);
31313039 };
31323040 };
3133− var hWith = function(elem2) {
3134− return function(props) {
3135− return function(classes) {
3136− return function(children) {
3137− return h2(elem2)(unsafeUnion(props)({
3138− "class": intercalate3(" ")(classes)
3139− }))(children);
3041+ var width = function(dictMonoid) {
3042+ var m1 = m2(dictMonoid);
3043+ return function(l2) {
3044+ return m1(new Width(l2));
3045+ };
3046+ };
3047+ var height = function(dictMonoid) {
3048+ var m1 = m2(dictMonoid);
3049+ return function(l2) {
3050+ return m1(new Height(l2));
3051+ };
3052+ };
3053+ var hWith = function() {
3054+ return function(elem2) {
3055+ return function(props) {
3056+ return function(classes) {
3057+ return function(children) {
3058+ return h2(elem2)({
3059+ attrs: union(fromHomogeneous2(props))(singleton2("class")(intercalate3(" ")(classes))),
3060+ on: empty2,
3061+ style: empty2
3062+ })(children)(asOneOf2($$undefined));
3063+ };
31403064 };
31413065 };
31423066 };
31433067 };
3068+ var hWith1 = /* @__PURE__ */ hWith();
31443069 var h3 = function(elem2) {
31453070 return function(classes) {
31463071 return function(children) {
31473072 return h2(elem2)({
3148− "class": intercalate3(" ")(classes)
3149− })(children);
3073+ attrs: singleton2("class")(intercalate3(" ")(classes)),
3074+ on: empty2,
3075+ style: empty2
3076+ })(children)(asOneOf2($$undefined));
31503077 };
31513078 };
31523079 };
31533080 var growSkin = function(fire) {
3154− return function(v) {
3081+ return function(v2) {
31553082 return function(v1) {
31563083 var widthFill = [new Width(Fill.value), new Height(Fill.value)];
31573084 var alignCenter = [new Align(X.value, Center.value), new Align(Y.value, Center.value)];
31583085 var skn = function(ctx) {
3159− return bind2(map2(function($513) {
3160− return function(v2) {
3161− return append2(v2)(v.extraSkin);
3162− }(concat($513));
3086+ return bind2(map2(function($574) {
3087+ return function(v22) {
3088+ return append2(v22)(v2.extraSkin);
3089+ }(concat($574));
31633090 })(traverse2(skin(ctx))(append2(v1.value0.meat)(append2(function() {
31643091 if (ctx instanceof Span) {
31653092 return mempty2;
@@ -3177,7 +3104,7 @@
31773104 return widthFill;
31783105 }
31793106 ;
3180− throw new Error("Failed pattern match at Plum.View (line 445, column 16 - line 449, column 35): " + [ctx.constructor.name]);
3107+ throw new Error("Failed pattern match at Plum.View (line 577, column 16 - line 581, column 35): " + [ctx.constructor.name]);
31813108 }())(function() {
31823109 if (ctx instanceof Grid) {
31833110 return alignCenter;
@@ -3195,9 +3122,9 @@
31953122 return alignCenter;
31963123 }
31973124 ;
3198− throw new Error("Failed pattern match at Plum.View (line 450, column 16 - line 454, column 37): " + [ctx.constructor.name]);
3125+ throw new Error("Failed pattern match at Plum.View (line 582, column 16 - line 586, column 37): " + [ctx.constructor.name]);
31993126 }())))))(function(meatClasses) {
3200− var v2 = runWriter(traverse2(skin(ctx))(v1.value0.hover));
3127+ var v22 = runWriter(traverse2(skin(ctx))(v1.value0.hover));
32013128 return bind2(traverseWithIndex2(function(key) {
32023129 return function(val) {
32033130 return tell2({
@@ -3206,7 +3133,7 @@
32063133 down: empty2
32073134 });
32083135 };
3209− })(v2.value1.meat))(function() {
3136+ })(v22.value1.meat))(function() {
32103137 var v3 = runWriter(traverse2(skin(ctx))(v1.value0.down));
32113138 return bind2(traverseWithIndex2(function(key) {
32123139 return function(val) {
@@ -3219,7 +3146,7 @@
32193146 })(v3.value1.meat))(function() {
32203147 return pure2(append2(meatClasses)(append2(map1(function(v4) {
32213148 return v4 + "-hover";
3222− })(concat(v2.value0)))(map1(function(v4) {
3149+ })(concat(v22.value0)))(map1(function(v4) {
32233150 return v4 + "-down";
32243151 })(concat(v3.value0)))));
32253152 });
@@ -3228,7 +3155,7 @@
32283155 };
32293156 if (v1.value1 instanceof Text) {
32303157 return map2(function(c) {
3231− return h3("span")(c)([string(v1.value1.value0)]);
3158+ return string("span")(c)(v1.value1.value0);
32323159 })(skn(Span.value));
32333160 }
32343161 ;
@@ -3271,7 +3198,7 @@
32713198 if (v1.value1 instanceof Link) {
32723199 return bind2(append22(skn(new Flexbox(X.value)))(append22(sk("display-flex")("display")("flex"))(sk("flex-direction-row")("flex-direction")("row"))))(function(classes) {
32733200 return bind2(growSkin(fire)(mempty4)(v1.value1.value2))(function(child$prime) {
3274− return pure2(hWith("a")({
3201+ return pure2(hWith1("a")({
32753202 href: v1.value1.value0,
32763203 rel: "noopener noreferrer",
32773204 target: function() {
@@ -3289,7 +3216,7 @@
32893216 if (v1.value1 instanceof Download) {
32903217 return bind2(append22(skn(new Flexbox(X.value)))(append22(sk("display-flex")("display")("flex"))(sk("flex-direction-row")("flex-direction")("row"))))(function(classes) {
32913218 return bind2(growSkin(fire)(mempty4)(v1.value1.value2))(function(child$prime) {
3292− return pure2(hWith("a")({
3219+ return pure2(hWith1("a")({
32933220 href: v1.value1.value0,
32943221 download: fromMaybe("")(v1.value1.value1.filename)
32953222 })(classes)([child$prime]));
@@ -3299,7 +3226,7 @@
32993226 ;
33003227 if (v1.value1 instanceof Image2) {
33013228 return map2(function(c) {
3302− return hWith("img")({
3229+ return hWith1("img")({
33033230 src: v1.value1.value0,
33043231 alt: v1.value1.value1.description
33053232 })(c)([]);
@@ -3310,39 +3237,65 @@
33103237 return pure2(h3("div")(mempty2)([]));
33113238 }
33123239 ;
3313− throw new Error("Failed pattern match at Plum.View (line 477, column 3 - line 518, column 37): " + [v1.value1.constructor.name]);
3240+ throw new Error("Failed pattern match at Plum.View (line 609, column 3 - line 650, column 37): " + [v1.value1.constructor.name]);
33143241 };
33153242 };
33163243 };
33173244 var grow = function(fire) {
3318− return function(v) {
3319− var v1 = runWriter(growSkin(fire)(mempty4)(v));
3245+ return function(v2) {
3246+ var v1 = runWriter(growSkin(fire)(mempty4)(v2));
33203247 return {
33213248 node: v1.value0,
33223249 style: styleSkinGrowth(v1.value1)
33233250 };
33243251 };
33253252 };
3326− var column = function(v) {
3253+ var fontWeight = function(dictMonoid) {
3254+ var m1 = m2(dictMonoid);
3255+ return function(f) {
3256+ return m1(new FontWeight(f));
3257+ };
3258+ };
3259+ var fontSize = function(dictMonoid) {
3260+ var m1 = m2(dictMonoid);
3261+ return function(f) {
3262+ return m1(new FontSize(f));
3263+ };
3264+ };
3265+ var font = function(dictMonoid) {
3266+ var m1 = m2(dictMonoid);
3267+ return function(f) {
3268+ return m1(new Font(f));
3269+ };
3270+ };
3271+ var column = function(v2) {
33273272 return new UI({
33283273 nerves: mempty1.nerves,
33293274 meat: mempty1.meat,
33303275 hover: mempty1.hover,
33313276 down: mempty1.down,
33323277 children: [new Tuple({
3333− meat: v.value0.meat,
3334− nerves: v.value0.nerves,
3335− hover: v.value0.hover,
3336− down: v.value0.down
3337− }, new Column(v.value0.children))]
3338− }, v.value1);
3278+ meat: v2.value0.meat,
3279+ nerves: v2.value0.nerves,
3280+ hover: v2.value0.hover,
3281+ down: v2.value0.down
3282+ }, new Column(v2.value0.children))]
3283+ }, unit);
33393284 };
33403285 var bgColor = function(dictMonoid) {
3341− var m1 = m(dictMonoid);
3286+ var m1 = m2(dictMonoid);
33423287 return function(c) {
33433288 return m1(new BackgroundColor(c));
33443289 };
33453290 };
3291+ var align = function(dictMonoid) {
3292+ var m1 = m2(dictMonoid);
3293+ return function(dir2) {
3294+ return function(al) {
3295+ return m1(new Align(dir2, al));
3296+ };
3297+ };
3298+ };
33463299
33473300 // output/Web.DOM.NonElementParentNode/foreign.js
33483301 function _getElementById(id) {
@@ -3354,13 +3307,13 @@
33543307 }
33553308
33563309 // output/Data.Nullable/foreign.js
3357− function nullable(a, r, f) {
3358− return a == null ? r : f(a);
3310+ function nullable(a2, r2, f) {
3311+ return a2 == null ? r2 : f(a2);
33593312 }
33603313
33613314 // output/Data.Nullable/index.js
3362− var toMaybe = function(n) {
3363− return nullable(n, Nothing.value, Just.create);
3315+ var toMaybe = function(n2) {
3316+ return nullable(n2, Nothing.value, Just.create);
33643317 };
33653318
33663319 // output/Web.DOM.NonElementParentNode/index.js
@@ -3390,80 +3343,135 @@
33903343
33913344 // output/Plum/index.js
33923345 var bind3 = /* @__PURE__ */ bind(bindEffect);
3346+ var pure3 = /* @__PURE__ */ pure(applicativeEffect);
3347+ var asOneOf3 = /* @__PURE__ */ asOneOf();
33933348 var outerStyle = "html,body{height:100%;padding:0;margin:0;}";
33943349 var run3 = function(id) {
33953350 return function(plum2) {
33963351 return function __do() {
3397− var modelRef = bind3(plum2.init)($$new)();
3398− var v = bind3(bind3(windowImpl)(document2))(function() {
3399− var $21 = getElementById(id);
3400− return function($22) {
3401− return $21(toNonElementParentNode($22));
3352+ var initModel = plum2.init();
3353+ var modelRef = $$new(initModel)();
3354+ var v2 = bind3(bind3(windowImpl)(document2))(function() {
3355+ var $23 = getElementById(id);
3356+ return function($24) {
3357+ return $23(toNonElementParentNode($24));
34023358 };
34033359 }())();
3404− if (v instanceof Just) {
3405− var projector = createProjector();
3406− return replace(projector)(v.value0)(function __do2() {
3407− var model = read(modelRef)();
3360+ if (v2 instanceof Just) {
3361+ var patch = init();
3362+ var view = function(model) {
34083363 var v1 = plum2.view(model);
3409− var v2 = head(v1.value0.children);
3410− if (v2 instanceof Nothing) {
3411− return h2("div")({})([]);
3412− }
3413− ;
3414− if (v2 instanceof Just) {
3364+ var v22 = uncons(v1.value0.children);
3365+ if (v22 instanceof Just) {
34153366 var v3 = grow(function(msg) {
3416− return function __do3() {
3417− var m2 = read(modelRef)();
3418− var m_ = plum2.update(msg)(m2)();
3367+ return function __do2() {
3368+ var m3 = read(modelRef)();
3369+ var m_ = plum2.update(msg)(m3)();
34193370 write(m_)(modelRef)();
3420− return scheduleRender(projector)();
3371+ var node2 = view(m_)();
3372+ patch(v2.value0)(node2)();
3373+ return unit;
34213374 };
3422− })(v2.value0);
3423− return h2("div")({
3424− styles: {
3425− height: "100%",
3426− width: "100%"
3427− }
3428− })([h2("style")({})([string(outerStyle + v3.style)]), v3.node]);
3375+ })(v22.value0.head);
3376+ return pure3(h2("div")({
3377+ attrs: empty2,
3378+ on: empty2,
3379+ style: empty2
3380+ })([h2("style")({
3381+ attrs: empty2,
3382+ on: empty2,
3383+ style: empty2
3384+ })([])(asOneOf3(outerStyle + v3.style)), v3.node])(asOneOf3($$undefined)));
3385+ }
3386+ ;
3387+ if (v22 instanceof Nothing) {
3388+ return pure3(h2("div")({
3389+ attrs: empty2,
3390+ on: empty2,
3391+ style: empty2
3392+ })([])(asOneOf3($$undefined)));
34293393 }
34303394 ;
3431− throw new Error("Failed pattern match at Plum (line 35, column 20 - line 52, column 94): " + [v2.constructor.name]);
3432− })();
3395+ throw new Error("Failed pattern match at Plum (line 38, column 11 - line 74, column 36): " + [v22.constructor.name]);
3396+ };
3397+ var node = view(initModel)();
3398+ patch(v2.value0)(node)();
3399+ return unit;
34333400 }
34343401 ;
3435− if (v instanceof Nothing) {
3402+ if (v2 instanceof Nothing) {
34363403 return unit;
34373404 }
34383405 ;
3439− throw new Error("Failed pattern match at Plum (line 26, column 92 - line 54, column 25): " + [v.constructor.name]);
3406+ throw new Error("Failed pattern match at Plum (line 32, column 92 - line 79, column 25): " + [v2.constructor.name]);
34403407 };
34413408 };
34423409 };
34433410
34443411 // output/Main/index.js
3445− var pure3 = /* @__PURE__ */ pure(applicativeEffect);
3412+ var pure4 = /* @__PURE__ */ pure(applicativeEffect);
34463413 var discard3 = /* @__PURE__ */ discard(discardUnit);
34473414 var discard1 = /* @__PURE__ */ discard3(/* @__PURE__ */ bindGenericUI(monoidArray));
3415+ var align2 = /* @__PURE__ */ align(monoidArray);
3416+ var height9 = /* @__PURE__ */ height(monoidArray);
3417+ var bgColor2 = /* @__PURE__ */ bgColor(monoidArray);
3418+ var mempty5 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidGenericUI(monoidArray)(monoidUnit));
3419+ var pure1 = /* @__PURE__ */ pure(/* @__PURE__ */ applicativeGenericUI(monoidArray));
3420+ var font2 = /* @__PURE__ */ font(monoidArray);
3421+ var width9 = /* @__PURE__ */ width(monoidArray);
34483422 var discard22 = /* @__PURE__ */ discard3(/* @__PURE__ */ bindGenericUI(monoidUnit));
3449− var onHover2 = /* @__PURE__ */ onHover(monoidUnit);
3450− var bgColor2 = /* @__PURE__ */ bgColor(monoidUnit);
3451− var onMouseDown2 = /* @__PURE__ */ onMouseDown(monoidUnit);
3452− var mempty5 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidGenericUI(monoidUnit)(monoidUnit));
3423+ var fontSize2 = /* @__PURE__ */ fontSize(monoidUnit);
3424+ var fontWeight2 = /* @__PURE__ */ fontWeight(monoidUnit);
34533425 var plum = {
3454− init: /* @__PURE__ */ pure3({
3426+ init: /* @__PURE__ */ pure4({
34553427 text: "Test"
34563428 }),
34573429 view: function(model) {
3458− return column(discard1(text("hi")(discard22(onHover2(bgColor2(rgb(1)(0)(0))))(function() {
3459− return onMouseDown2(bgColor2(rgb(0)(1)(0)));
3460− })))(function() {
3461− return text("hello")(mempty5);
3430+ return stack(discard1(align2(Y.value)(End.value))(function() {
3431+ return discard1(height9(Fit.value))(function() {
3432+ return discard1(row(discard1(align2(Y.value)(End.value))(function() {
3433+ return discard1(column(discard1(bgColor2(rgb(0)(0)(0)))(function() {
3434+ return height9(new Px(10));
3435+ })))(function() {
3436+ return discard1(column(mempty5))(function() {
3437+ return pure1(unit);
3438+ });
3439+ });
3440+ })))(function() {
3441+ return discard1(column(discard1(font2("sans-serif"))(function() {
3442+ return discard1(column(discard1(height9(new Px(100)))(function() {
3443+ return width9(Fit.value);
3444+ })))(function() {
3445+ return discard1(align2(Y.value)(Start.value))(function() {
3446+ return discard1(width9(Fill.value))(function() {
3447+ return column(discard1(width9(Fill.value))(function() {
3448+ return discard1(width9(Fit.value))(function() {
3449+ return discard1(height9(Fit.value))(function() {
3450+ return discard1(text("PureStack")(discard22(fontSize2(72))(function() {
3451+ return fontWeight2(1e3);
3452+ })))(function() {
3453+ return column(discard1(bgColor2(rgb(0)(0)(0)))(function() {
3454+ return discard1(height9(new Px(10)))(function() {
3455+ return width9(Fill.value);
3456+ });
3457+ }));
3458+ });
3459+ });
3460+ });
3461+ }));
3462+ });
3463+ });
3464+ });
3465+ })))(function() {
3466+ return column(width9(Fill.value));
3467+ });
3468+ });
3469+ });
34623470 }));
34633471 },
34643472 update: function(msg) {
34653473 return function(model) {
3466− return pure3({
3474+ return pure4({
34673475 text: "Button pressed"
34683476 });
34693477 };