@@ -0,0 +1,2455 @@
2+ // output/Control.Semigroupoid/index.js
3+ var semigroupoidFn = {
4+ compose: function(f) {
13+ // output/Control.Category/index.js
14+ var identity = function(dict) {
15+ return dict.identity;
18+ identity: function(x) {
21+ Semigroupoid0: function() {
22+ return semigroupoidFn;
26+ // output/Data.Function/index.js
27+ var flip = function(f) {
35+ // output/Data.Functor/foreign.js
36+ var arrayMap = function(f) {
37+ return function(arr) {
39+ var result = new Array(l);
40+ for (var i = 0; i < l; i++) {
41+ result[i] = f(arr[i]);
47+ // output/Data.Unit/foreign.js
50+ // output/Type.Proxy/index.js
51+ var $$Proxy = /* @__PURE__ */ function() {
52+ function $$Proxy2() {
55+ $$Proxy2.value = new $$Proxy2();
59+ // output/Data.Functor/index.js
60+ var map = function(dict) {
67+ // output/Control.Apply/index.js
68+ var apply = function(dict) {
72+ // output/Control.Applicative/index.js
73+ var pure = function(dict) {
76+ var liftA1 = function(dictApplicative) {
77+ var apply2 = apply(dictApplicative.Apply0());
78+ var pure1 = pure(dictApplicative);
81+ return apply2(pure1(f))(a);
86+ // output/Control.Bind/foreign.js
87+ var arrayBind = typeof Array.prototype.flatMap === "function" ? function(arr) {
89+ return arr.flatMap(f);
95+ for (var i = 0; i < l; i++) {
98+ for (var j = 0; j < k; j++) {
106+ // output/Control.Bind/index.js
107+ var discard = function(dict) {
108+ return dict.discard;
110+ var bind = function(dict) {
113+ var bindFlipped = function(dictBind) {
114+ return flip(bind(dictBind));
117+ discard: function(dictBind) {
118+ return bind(dictBind);
122+ // output/Data.Symbol/index.js
123+ var reflectSymbol = function(dict) {
124+ return dict.reflectSymbol;
127+ // output/Record.Unsafe/foreign.js
128+ var unsafeGet = function(label4) {
129+ return function(rec) {
133+ var unsafeSet = function(label4) {
134+ return function(value12) {
135+ return function(rec) {
137+ for (var key in rec) {
138+ if ({}.hasOwnProperty.call(rec, key)) {
139+ copy[key] = rec[key];
142+ copy[label4] = value12;
148+ // output/Data.Semigroup/foreign.js
149+ var concatArray = function(xs) {
150+ return function(ys) {
151+ if (xs.length === 0) return ys;
152+ if (ys.length === 0) return xs;
153+ return xs.concat(ys);
157+ // output/Data.Semigroup/index.js
158+ var semigroupUnit = {
159+ append: function(v) {
160+ return function(v1) {
165+ var semigroupRecordNil = {
166+ appendRecord: function(v) {
167+ return function(v1) {
168+ return function(v2) {
174+ var semigroupArray = {
177+ var appendRecord = function(dict) {
178+ return dict.appendRecord;
180+ var semigroupRecord = function() {
181+ return function(dictSemigroupRecord) {
183+ append: appendRecord(dictSemigroupRecord)($$Proxy.value)
187+ var append = function(dict) {
190+ var semigroupRecordCons = function(dictIsSymbol) {
191+ var reflectSymbol2 = reflectSymbol(dictIsSymbol);
193+ return function(dictSemigroupRecord) {
194+ var appendRecord1 = appendRecord(dictSemigroupRecord);
195+ return function(dictSemigroup) {
196+ var append12 = append(dictSemigroup);
198+ appendRecord: function(v) {
199+ return function(ra) {
200+ return function(rb) {
201+ var tail = appendRecord1($$Proxy.value)(ra)(rb);
202+ var key = reflectSymbol2($$Proxy.value);
203+ var insert = unsafeSet(key);
204+ var get = unsafeGet(key);
205+ return insert(append12(get(ra))(get(rb)))(tail);
215+ // output/Data.Monoid/index.js
216+ var semigroupRecord2 = /* @__PURE__ */ semigroupRecord();
219+ Semigroup0: function() {
220+ return semigroupUnit;
223+ var monoidRecordNil = {
224+ memptyRecord: function(v) {
227+ SemigroupRecord0: function() {
228+ return semigroupRecordNil;
233+ Semigroup0: function() {
234+ return semigroupArray;
237+ var memptyRecord = function(dict) {
238+ return dict.memptyRecord;
240+ var monoidRecord = function() {
241+ return function(dictMonoidRecord) {
242+ var semigroupRecord1 = semigroupRecord2(dictMonoidRecord.SemigroupRecord0());
244+ mempty: memptyRecord(dictMonoidRecord)($$Proxy.value),
245+ Semigroup0: function() {
246+ return semigroupRecord1;
251+ var mempty = function(dict) {
254+ var monoidRecordCons = function(dictIsSymbol) {
255+ var reflectSymbol2 = reflectSymbol(dictIsSymbol);
256+ var semigroupRecordCons3 = semigroupRecordCons(dictIsSymbol)();
257+ return function(dictMonoid) {
258+ var mempty12 = mempty(dictMonoid);
259+ var Semigroup0 = dictMonoid.Semigroup0();
261+ return function(dictMonoidRecord) {
262+ var memptyRecord1 = memptyRecord(dictMonoidRecord);
263+ var semigroupRecordCons1 = semigroupRecordCons3(dictMonoidRecord.SemigroupRecord0())(Semigroup0);
265+ memptyRecord: function(v) {
266+ var tail = memptyRecord1($$Proxy.value);
267+ var key = reflectSymbol2($$Proxy.value);
268+ var insert = unsafeSet(key);
269+ return insert(mempty12)(tail);
271+ SemigroupRecord0: function() {
272+ return semigroupRecordCons1;
280+ // output/Effect/foreign.js
281+ var pureE = function(a) {
286+ var bindE = function(a) {
287+ return function(f) {
294+ // output/Control.Monad/index.js
295+ var ap = function(dictMonad) {
296+ var bind3 = bind(dictMonad.Bind1());
297+ var pure3 = pure(dictMonad.Applicative0());
298+ return function(f) {
299+ return function(a) {
300+ return bind3(f)(function(f$prime) {
301+ return bind3(a)(function(a$prime) {
302+ return pure3(f$prime(a$prime));
309+ // output/Effect/index.js
310+ var $runtime_lazy = function(name14, moduleName, init) {
313+ return function(lineNumber) {
314+ if (state2 === 2) return val;
315+ if (state2 === 1) throw new ReferenceError(name14 + " was needed before it finished initializing (module " + moduleName + ", line " + lineNumber + ")", moduleName, lineNumber);
323+ Applicative0: function() {
324+ return applicativeEffect;
332+ Apply0: function() {
333+ return $lazy_applyEffect(0);
336+ var applicativeEffect = {
338+ Apply0: function() {
339+ return $lazy_applyEffect(0);
342+ var $lazy_functorEffect = /* @__PURE__ */ $runtime_lazy("functorEffect", "Effect", function() {
344+ map: liftA1(applicativeEffect)
347+ var $lazy_applyEffect = /* @__PURE__ */ $runtime_lazy("applyEffect", "Effect", function() {
349+ apply: ap(monadEffect),
350+ Functor0: function() {
351+ return $lazy_functorEffect(0);
355+ var functorEffect = /* @__PURE__ */ $lazy_functorEffect(20);
357+ // output/Data.Array/foreign.js
358+ var replicateFill = function(count, value12) {
362+ var result = new Array(count);
363+ return result.fill(value12);
365+ var replicatePolyfill = function(count, value12) {
368+ for (var i = 0; i < count; i++) {
369+ result[n++] = value12;
373+ var replicateImpl = typeof Array.prototype.fill === "function" ? replicateFill : replicatePolyfill;
375+ // output/Data.Bounded/foreign.js
376+ var topChar = String.fromCharCode(65535);
377+ var bottomChar = String.fromCharCode(0);
378+ var topNumber = Number.POSITIVE_INFINITY;
379+ var bottomNumber = Number.NEGATIVE_INFINITY;
381+ // output/Data.Show/foreign.js
382+ var showIntImpl = function(n) {
383+ return n.toString();
385+ var showNumberImpl = function(n) {
386+ var str = n.toString();
387+ return isNaN(str + ".0") ? str : str + ".0";
390+ // output/Data.Show/index.js
392+ show: showNumberImpl
397+ var show = function(dict) {
401+ // output/Data.Maybe/index.js
402+ var identity2 = /* @__PURE__ */ identity(categoryFn);
403+ var Nothing = /* @__PURE__ */ function() {
404+ function Nothing2() {
407+ Nothing2.value = new Nothing2();
410+ var Just = /* @__PURE__ */ function() {
411+ function Just2(value0) {
412+ this.value0 = value0;
415+ Just2.create = function(value0) {
416+ return new Just2(value0);
420+ var maybe = function(v) {
421+ return function(v1) {
422+ return function(v2) {
423+ if (v2 instanceof Nothing) {
427+ if (v2 instanceof Just) {
428+ return v1(v2.value0);
431+ 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]);
435+ var fromMaybe = function(a) {
436+ return maybe(a)(identity2);
439+ // output/Effect.Ref/foreign.js
440+ var _new = function(val) {
442+ return { value: val };
445+ var read = function(ref) {
450+ var write = function(val) {
451+ return function(ref) {
458+ // output/Effect.Ref/index.js
461+ // output/Control.Monad.ST.Internal/foreign.js
462+ var map_ = function(f) {
463+ return function(a) {
469+ var pure_ = function(a) {
474+ var bind_ = function(a) {
475+ return function(f) {
482+ // output/Control.Monad.ST.Internal/index.js
483+ var $runtime_lazy2 = function(name14, moduleName, init) {
486+ return function(lineNumber) {
487+ if (state2 === 2) return val;
488+ if (state2 === 1) throw new ReferenceError(name14 + " was needed before it finished initializing (module " + moduleName + ", line " + lineNumber + ")", moduleName, lineNumber);
499+ Applicative0: function() {
500+ return applicativeST;
508+ Apply0: function() {
509+ return $lazy_applyST(0);
512+ var applicativeST = {
514+ Apply0: function() {
515+ return $lazy_applyST(0);
518+ var $lazy_applyST = /* @__PURE__ */ $runtime_lazy2("applyST", "Control.Monad.ST.Internal", function() {
521+ Functor0: function() {
527+ // output/Data.Foldable/foreign.js
528+ var foldrArray = function(f) {
529+ return function(init) {
530+ return function(xs) {
532+ var len = xs.length;
533+ for (var i = len - 1; i >= 0; i--) {
534+ acc = f(xs[i])(acc);
540+ var foldlArray = function(f) {
541+ return function(init) {
542+ return function(xs) {
544+ var len = xs.length;
545+ for (var i = 0; i < len; i++) {
546+ acc = f(acc)(xs[i]);
553+ // output/Data.Tuple/index.js
554+ var Tuple = /* @__PURE__ */ function() {
555+ function Tuple2(value0, value1) {
556+ this.value0 = value0;
557+ this.value1 = value1;
560+ Tuple2.create = function(value0) {
561+ return function(value1) {
562+ return new Tuple2(value0, value1);
568+ // output/Unsafe.Coerce/foreign.js
569+ var unsafeCoerce2 = function(x) {
573+ // output/Data.Foldable/index.js
574+ var foldr = function(dict) {
577+ var foldMapDefaultR = function(dictFoldable) {
578+ var foldr2 = foldr(dictFoldable);
579+ return function(dictMonoid) {
580+ var append3 = append(dictMonoid.Semigroup0());
581+ var mempty5 = mempty(dictMonoid);
582+ return function(f) {
583+ return foldr2(function(x) {
584+ return function(acc) {
585+ return append3(f(x))(acc);
591+ var foldableArray = {
594+ foldMap: function(dictMonoid) {
595+ return foldMapDefaultR(foldableArray)(dictMonoid);
598+ var foldMap = function(dict) {
599+ return dict.foldMap;
602+ // output/Data.Function.Uncurried/foreign.js
603+ var runFn2 = function(fn) {
604+ return function(a) {
605+ return function(b) {
611+ // output/Data.Array/index.js
612+ var foldMap1 = /* @__PURE__ */ foldMap(foldableArray);
613+ var append2 = /* @__PURE__ */ append(semigroupArray);
614+ var foldMap2 = function(dictMonoid) {
615+ return foldMap1(dictMonoid);
617+ var cons = function(x) {
618+ return function(xs) {
619+ return append2([x])(xs);
623+ // output/Maquette/foreign.js
624+ var NAMESPACE_W3 = "http://www.w3.org/";
625+ var NAMESPACE_SVG = NAMESPACE_W3 + "2000/svg";
626+ var NAMESPACE_XLINK = NAMESPACE_W3 + "1999/xlink";
627+ var emptyArray = [];
628+ var extend2 = function(base, overrides) {
630+ Object.keys(base).forEach(function(key) {
631+ result[key] = base[key];
634+ Object.keys(overrides).forEach(function(key) {
635+ result[key] = overrides[key];
640+ var same = function(vnode1, vnode2) {
641+ if (vnode1.vnodeSelector !== vnode2.vnodeSelector) {
644+ if (vnode1.properties && vnode2.properties) {
645+ if (vnode1.properties.key !== vnode2.properties.key) {
648+ return vnode1.properties.bind === vnode2.properties.bind;
650+ return !vnode1.properties && !vnode2.properties;
652+ var checkStyleValue = function(styleValue) {
653+ if (typeof styleValue !== "string") {
654+ throw new Error("Style values must be strings");
657+ var findIndexOfChild = function(children, sameAs, start2) {
658+ if (sameAs.vnodeSelector !== "") {
659+ for (var i = start2; i < children.length; i++) {
660+ if (same(children[i], sameAs)) {
667+ var checkDistinguishable = function(childNodes, indexToCheck, parentVNode, operation) {
668+ var childNode = childNodes[indexToCheck];
669+ if (childNode.vnodeSelector === "") {
672+ var properties = childNode.properties;
673+ var key = properties ? properties.key === void 0 ? properties.bind : properties.key : void 0;
675+ for (var i = 0; i < childNodes.length; i++) {
676+ if (i !== indexToCheck) {
677+ var node = childNodes[i];
678+ if (same(node, childNode)) {
680+ 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."),
681+ parentNode: parentVNode,
689+ var nodeAdded = function(vNode) {
690+ if (vNode.properties) {
691+ var enterAnimation = vNode.properties.enterAnimation;
692+ if (enterAnimation) {
693+ enterAnimation(vNode.domNode, vNode.properties);
697+ var removedNodes = [];
698+ var requestedIdleCallback = false;
699+ var visitRemovedNode = function(node) {
700+ (node.children || []).forEach(visitRemovedNode);
701+ if (node.properties && node.properties.afterRemoved) {
702+ node.properties.afterRemoved.apply(node.properties.bind || node.properties, [
707+ var processPendingNodeRemovals = function() {
708+ requestedIdleCallback = false;
709+ removedNodes.forEach(visitRemovedNode);
710+ removedNodes.length = 0;
712+ var scheduleNodeRemoval = function(vNode) {
713+ removedNodes.push(vNode);
714+ if (!requestedIdleCallback) {
715+ requestedIdleCallback = true;
716+ if (typeof window !== "undefined" && "requestIdleCallback" in window) {
717+ window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 });
719+ setTimeout(processPendingNodeRemovals, 16);
723+ var nodeToRemove = function(vNode) {
724+ var domNode = vNode.domNode;
725+ if (vNode.properties) {
726+ var exitAnimation = vNode.properties.exitAnimation;
727+ if (exitAnimation) {
728+ domNode.style.pointerEvents = "none";
729+ var removeDomNode = function() {
730+ if (domNode.parentNode) {
731+ domNode.parentNode.removeChild(domNode);
732+ scheduleNodeRemoval(vNode);
735+ exitAnimation(domNode, removeDomNode, vNode.properties);
739+ if (domNode.parentNode) {
740+ domNode.parentNode.removeChild(domNode);
741+ scheduleNodeRemoval(vNode);
744+ var vnodeOnlyProps = [
752+ function filterVNodeOnlyProps(name14) {
753+ return !vnodeOnlyProps.includes(name14);
755+ var setProperties = function(domNode, properties, projectionOptions) {
759+ var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;
760+ var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
761+ var propCount = propNames.length;
762+ for (var i = 0; i < propCount; i++) {
763+ var propName = propNames[i];
764+ var propValue = properties[propName];
765+ if (propName === "className") {
766+ throw new Error('Property "className" is not supported, use "class".');
767+ } else if (propName === "class") {
768+ toggleClasses(domNode, propValue, true);
769+ } else if (propName === "classes") {
770+ var classNames = Object.keys(propValue);
771+ var classNameCount = classNames.length;
772+ for (var j = 0; j < classNameCount; j++) {
773+ var className = classNames[j];
774+ if (propValue[className]) {
775+ domNode.classList.add(className);
778+ } else if (propName === "styles") {
779+ var styleNames = Object.keys(propValue);
780+ var styleCount = styleNames.length;
781+ for (var j = 0; j < styleCount; j++) {
782+ var styleName = styleNames[j];
783+ var styleValue = propValue[styleName];
785+ checkStyleValue(styleValue);
786+ projectionOptions.styleApplyer(domNode, styleName, styleValue);
789+ } else if (propName === "on" && propValue) {
790+ for (var _i = 0, _a = Object.entries(properties.on); _i < _a.length; _i++) {
791+ var _b = _a[_i], key = _b[0], handler = _b[1];
792+ var listener = typeof handler === "function" ? handler : handler.listener;
793+ if (eventHandlerInterceptor) {
794+ listener = eventHandlerInterceptor(key, listener, domNode, properties);
797+ domNode.addEventListener(key, listener, typeof handler === "function" ? void 0 : handler.options);
800+ } else if (propName !== "key" && propValue !== null && propValue !== void 0) {
801+ var type = typeof propValue;
802+ if (type === "function") {
803+ if (propName.lastIndexOf("on", 0) === 0) {
804+ if (eventHandlerInterceptor) {
805+ propValue = eventHandlerInterceptor(propName, propValue, domNode, properties);
808+ domNode[propName] = propValue;
809+ } else if (projectionOptions.namespace === NAMESPACE_SVG) {
810+ if (propName === "href") {
811+ domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
813+ domNode.setAttribute(propName, propValue);
815+ } else if (type === "string" && propName !== "value" && propName !== "innerHTML") {
816+ domNode.setAttribute(propName, propValue);
818+ domNode[propName] = propValue;
823+ var addChildren = function(domNode, children, projectionOptions) {
827+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
828+ var child = children_1[_i];
829+ createDom(child, domNode, void 0, projectionOptions);
832+ var initPropertiesAndChildren = function(domNode, vnode, projectionOptions) {
833+ addChildren(domNode, vnode.children, projectionOptions);
835+ domNode.textContent = vnode.text;
837+ setProperties(domNode, vnode.properties, projectionOptions);
838+ if (vnode.properties && vnode.properties.afterCreate) {
839+ vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [
842+ vnode.vnodeSelector,
848+ var createDom = function(vnode, parentNode, insertBefore, projectionOptions) {
852+ var vnodeSelector = vnode.vnodeSelector;
853+ var doc = parentNode.ownerDocument;
854+ if (vnodeSelector === "") {
855+ if (vnode.domNode) {
856+ vnode.domNode.nodeValue = vnode.text;
858+ domNode = vnode.domNode = doc.createTextNode(vnode.text);
859+ if (insertBefore !== void 0) {
860+ parentNode.insertBefore(domNode, insertBefore);
862+ parentNode.appendChild(domNode);
866+ for (var i = 0; i <= vnodeSelector.length; ++i) {
867+ var c = vnodeSelector.charAt(i);
868+ if (i === vnodeSelector.length || c === "." || c === "#") {
869+ var type = vnodeSelector.charAt(start2 - 1);
870+ var found = vnodeSelector.slice(start2, i);
872+ domNode.classList.add(found);
873+ } else if (type === "#") {
876+ if (found === "svg") {
877+ projectionOptions = extend2(projectionOptions, {
878+ namespace: NAMESPACE_SVG
881+ if (projectionOptions.namespace !== void 0) {
882+ domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);
884+ 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));
885+ if (found === "input" && vnode.properties && vnode.properties.type !== void 0) {
886+ domNode.setAttribute("type", vnode.properties.type);
889+ if (insertBefore !== void 0) {
890+ parentNode.insertBefore(domNode, insertBefore);
891+ } else if (domNode.parentNode !== parentNode) {
892+ parentNode.appendChild(domNode);
898+ initPropertiesAndChildren(domNode, vnode, projectionOptions);
902+ var toggleClasses = function(domNode, classes, on2) {
906+ classes.split(" ").forEach(function(classToToggle) {
907+ if (classToToggle) {
908+ domNode.classList.toggle(classToToggle, on2);
912+ var updateProperties = function(domNode, previousProperties, properties, projectionOptions) {
916+ var propertiesUpdated = false;
917+ var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
918+ var propCount = propNames.length;
919+ for (var i = 0; i < propCount; i++) {
920+ var propName = propNames[i];
921+ var propValue = properties[propName];
922+ var previousValue = previousProperties[propName];
923+ if (propName === "class") {
924+ if (previousValue !== propValue) {
925+ toggleClasses(domNode, previousValue, false);
926+ toggleClasses(domNode, propValue, true);
928+ } else if (propName === "classes") {
929+ var classList = domNode.classList;
930+ var classNames = Object.keys(propValue);
931+ var classNameCount = classNames.length;
932+ for (var j = 0; j < classNameCount; j++) {
933+ var className = classNames[j];
934+ var on2 = !!propValue[className];
935+ var previousOn = !!previousValue[className];
936+ if (on2 === previousOn) {
939+ propertiesUpdated = true;
941+ classList.add(className);
943+ classList.remove(className);
946+ } else if (propName === "styles") {
947+ var styleNames = Object.keys(propValue);
948+ var styleCount = styleNames.length;
949+ for (var j = 0; j < styleCount; j++) {
950+ var styleName = styleNames[j];
951+ var newStyleValue = propValue[styleName];
952+ var oldStyleValue = previousValue[styleName];
953+ if (newStyleValue === oldStyleValue) {
956+ propertiesUpdated = true;
957+ if (newStyleValue) {
958+ checkStyleValue(newStyleValue);
959+ projectionOptions.styleApplyer(domNode, styleName, newStyleValue);
961+ projectionOptions.styleApplyer(domNode, styleName, "");
965+ if (!propValue && typeof previousValue === "string") {
968+ if (propName === "value") {
969+ var domValue = domNode[propName];
970+ if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
971+ propValue !== previousValue) {
972+ domNode[propName] = propValue;
974+ if (propValue !== previousValue) {
975+ propertiesUpdated = true;
977+ } else if (propValue !== previousValue) {
978+ var type = typeof propValue;
979+ if (type !== "function" || !projectionOptions.eventHandlerInterceptor) {
980+ if (projectionOptions.namespace === NAMESPACE_SVG) {
981+ if (propName === "href") {
982+ domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
984+ domNode.setAttribute(propName, propValue);
986+ } else if (type === "string" && propName !== "innerHTML") {
987+ if (propName === "role" && propValue === "") {
988+ domNode.removeAttribute(propName);
990+ domNode.setAttribute(propName, propValue);
992+ } else if (domNode[propName] !== propValue) {
993+ domNode[propName] = propValue;
995+ propertiesUpdated = true;
1000+ return propertiesUpdated;
1002+ var updateChildren = function(vnode, domNode, oldChildren, newChildren, projectionOptions) {
1003+ if (oldChildren === newChildren) {
1006+ oldChildren = oldChildren || emptyArray;
1007+ newChildren = newChildren || emptyArray;
1008+ var oldChildrenLength = oldChildren.length;
1009+ var newChildrenLength = newChildren.length;
1013+ var textUpdated = false;
1014+ while (newIndex < newChildrenLength) {
1015+ var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : void 0;
1016+ var newChild = newChildren[newIndex];
1017+ if (oldChild !== void 0 && same(oldChild, newChild)) {
1018+ textUpdated = updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
1021+ var findOldIndex = findIndexOfChild(oldChildren, newChild, oldIndex + 1);
1022+ if (findOldIndex >= 0) {
1023+ for (i = oldIndex; i < findOldIndex; i++) {
1024+ nodeToRemove(oldChildren[i]);
1025+ checkDistinguishable(oldChildren, i, vnode, "removed");
1027+ textUpdated = updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) || textUpdated;
1028+ oldIndex = findOldIndex + 1;
1030+ createDom(newChild, domNode, oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : void 0, projectionOptions);
1031+ nodeAdded(newChild);
1032+ checkDistinguishable(newChildren, newIndex, vnode, "added");
1037+ if (oldChildrenLength > oldIndex) {
1038+ for (i = oldIndex; i < oldChildrenLength; i++) {
1039+ nodeToRemove(oldChildren[i]);
1040+ checkDistinguishable(oldChildren, i, vnode, "removed");
1043+ return textUpdated;
1045+ updateDom = function(previous, vnode, projectionOptions, parentNode, oldChildren) {
1046+ var domNode = previous.domNode;
1047+ var textUpdated = false;
1048+ if (previous === vnode) {
1051+ var updated = false;
1052+ if (vnode.vnodeSelector === "") {
1053+ if (vnode.text !== previous.text) {
1054+ var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
1056+ parentNode.replaceChild(newTextNode, domNode);
1058+ parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);
1060+ vnode.domNode = newTextNode;
1061+ textUpdated = true;
1062+ return textUpdated;
1064+ vnode.domNode = domNode;
1066+ if (vnode.vnodeSelector.lastIndexOf("svg", 0) === 0) {
1067+ projectionOptions = extend2(projectionOptions, {
1068+ namespace: NAMESPACE_SVG
1071+ if (previous.text !== vnode.text) {
1073+ if (vnode.text === void 0) {
1074+ domNode.removeChild(domNode.firstChild);
1076+ domNode.textContent = vnode.text;
1079+ vnode.domNode = domNode;
1080+ updated = updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) || updated;
1081+ updated = updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) || updated;
1082+ if (vnode.properties && vnode.properties.afterUpdate) {
1083+ vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [
1086+ vnode.vnodeSelector,
1092+ if (updated && vnode.properties && vnode.properties.updateAnimation) {
1093+ vnode.properties.updateAnimation(domNode, vnode.properties, previous.properties);
1095+ return textUpdated;
1097+ var createProjection = function(vnode, projectionOptions) {
1099+ getLastRender: function() {
1102+ update: function(updatedVnode) {
1103+ if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {
1104+ 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)");
1106+ var previousVNode = vnode;
1107+ vnode = updatedVnode;
1108+ updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
1110+ domNode: vnode.domNode
1113+ var DEFAULT_PROJECTION_OPTIONS = {
1115+ performanceLogger: function() {
1118+ eventHandlerInterceptor: void 0,
1119+ styleApplyer: function(domNode, styleName, value12) {
1120+ if (styleName.charAt(0) === "-") {
1121+ domNode.style.setProperty(styleName, value12);
1123+ domNode.style[styleName] = value12;
1127+ var applyDefaultProjectionOptions = function(projectorOptions) {
1128+ return extend2(DEFAULT_PROJECTION_OPTIONS, projectorOptions);
1132+ * Creates a real DOM tree from `vnode`. The [[Projection]] object returned will contain the resulting DOM Node in
1133+ * its [[Projection.domNode|domNode]] property.
1134+ * This is a low-level method. Users will typically use a [[Projector]] instead.
1135+ * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1136+ * objects may only be rendered once.
1137+ * @param projectionOptions - Options to be used to create and update the projection.
1138+ * @returns The [[Projection]] which also contains the DOM Node that was created.
1140+ create: function(vnode, projectionOptions) {
1141+ projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1142+ createDom(vnode, document.createElement("div"), void 0, projectionOptions);
1143+ return createProjection(vnode, projectionOptions);
1146+ * Appends a new child node to the DOM which is generated from a [[VNode]].
1147+ * This is a low-level method. Users will typically use a [[Projector]] instead.
1148+ * @param parentNode - The parent node for the new child node.
1149+ * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1150+ * objects may only be rendered once.
1151+ * @param projectionOptions - Options to be used to create and update the [[Projection]].
1152+ * @returns The [[Projection]] that was created.
1154+ append: function(parentNode, vnode, projectionOptions) {
1155+ projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1156+ createDom(vnode, parentNode, void 0, projectionOptions);
1157+ return createProjection(vnode, projectionOptions);
1160+ * Inserts a new DOM node which is generated from a [[VNode]].
1161+ * This is a low-level method. Users wil typically use a [[Projector]] instead.
1162+ * @param beforeNode - The node that the DOM Node is inserted before.
1163+ * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function.
1164+ * NOTE: [[VNode]] objects may only be rendered once.
1165+ * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].
1166+ * @returns The [[Projection]] that was created.
1168+ insertBefore: function(beforeNode, vnode, projectionOptions) {
1169+ projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1170+ createDom(vnode, beforeNode.parentNode, beforeNode, projectionOptions);
1171+ return createProjection(vnode, projectionOptions);
1174+ * Merges a new DOM node which is generated from a [[VNode]] with an existing DOM Node.
1175+ * This means that the virtual DOM and the real DOM will have one overlapping element.
1176+ * Therefore the selector for the root [[VNode]] will be ignored, but its properties and children will be applied to the Element provided.
1177+ * This is a low-level method. Users wil typically use a [[Projector]] instead.
1178+ * @param element - The existing element to adopt as the root of the new virtual DOM. Existing attributes and child nodes are preserved.
1179+ * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]] objects
1180+ * may only be rendered once.
1181+ * @param projectionOptions - Options to be used to create and update the projection, see [[createProjector]].
1182+ * @returns The [[Projection]] that was created.
1184+ merge: function(element, vnode, projectionOptions) {
1185+ projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1186+ vnode.domNode = element;
1187+ initPropertiesAndChildren(element, vnode, projectionOptions);
1188+ return createProjection(vnode, projectionOptions);
1191+ * Replaces an existing DOM node with a node generated from a [[VNode]].
1192+ * This is a low-level method. Users will typically use a [[Projector]] instead.
1193+ * @param element - The node for the [[VNode]] to replace.
1194+ * @param vnode - The root of the virtual DOM tree that was created using the [[h]] function. NOTE: [[VNode]]
1195+ * objects may only be rendered once.
1196+ * @param projectionOptions - Options to be used to create and update the [[Projection]].
1197+ * @returns The [[Projection]] that was created.
1199+ replace: function(element, vnode, projectionOptions) {
1200+ projectionOptions = applyDefaultProjectionOptions(projectionOptions);
1201+ createDom(vnode, element.parentNode, element, projectionOptions);
1202+ element.parentNode.removeChild(element);
1203+ return createProjection(vnode, projectionOptions);
1206+ var toTextVNode = function(data) {
1209+ properties: void 0,
1211+ text: data.toString(),
1215+ var appendChildren = function(parentSelector, insertions, main2) {
1216+ for (var i = 0, length_1 = insertions.length; i < length_1; i++) {
1217+ var item = insertions[i];
1218+ if (Array.isArray(item)) {
1219+ appendChildren(parentSelector, item, main2);
1221+ if (item !== null && item !== void 0 && item !== false) {
1222+ if (typeof item === "string") {
1223+ item = toTextVNode(item);
1230+ function h(selector, properties, children) {
1231+ if (Array.isArray(properties)) {
1232+ children = properties;
1233+ properties = void 0;
1234+ } else if (properties && (typeof properties === "string" || properties.vnodeSelector) || children && (typeof children === "string" || children.vnodeSelector)) {
1235+ throw new Error("h called with invalid arguments");
1238+ var flattenedChildren;
1239+ if (children && children.length === 1 && typeof children[0] === "string") {
1240+ text6 = children[0];
1241+ } else if (children) {
1242+ flattenedChildren = [];
1243+ appendChildren(selector, children, flattenedChildren);
1244+ if (flattenedChildren.length === 0) {
1245+ flattenedChildren = void 0;
1249+ vnodeSelector: selector,
1251+ children: flattenedChildren,
1252+ text: text6 === "" ? void 0 : text6,
1256+ var createParentNodePath = function(node, rootNode) {
1257+ var parentNodePath = [];
1258+ while (node && node !== rootNode) {
1259+ parentNodePath.push(node);
1260+ node = node.parentNode;
1262+ return parentNodePath;
1265+ if (Array.prototype.find) {
1266+ find2 = function(items, predicate) {
1267+ return items.find(predicate);
1270+ find2 = function(items, predicate) {
1271+ return items.filter(predicate)[0];
1274+ var findVNodeByParentNodePath = function(vnode, parentNodePath) {
1275+ var result = vnode;
1276+ parentNodePath.forEach(function(node) {
1277+ result = result && result.children ? find2(result.children, function(child) {
1278+ return child.domNode === node;
1283+ var createEventHandlerInterceptor = function(projector, getProjection, performanceLogger) {
1284+ return function(propertyName, eventHandler, domNode, properties) {
1285+ return modifiedEventHandler;
1287+ function modifiedEventHandler(evt) {
1289+ performanceLogger("domEvent", evt);
1290+ var projection = getProjection();
1291+ var parentNodePath = createParentNodePath(evt.currentTarget, projection.domNode);
1292+ parentNodePath.reverse();
1293+ var matchingVNode = findVNodeByParentNodePath(projection.getLastRender(), parentNodePath);
1294+ projector.scheduleRender();
1296+ if (matchingVNode) {
1297+ 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];
1298+ result = listener.apply(matchingVNode.properties.bind || this, arguments);
1300+ performanceLogger("domEventProcessed", evt);
1304+ var createProjector = function(projectorOptions) {
1306+ var projectionOptions = applyDefaultProjectionOptions(projectorOptions);
1307+ var performanceLogger = projectionOptions.performanceLogger;
1308+ var renderCompleted = true;
1310+ var stopped = false;
1311+ var projections = [];
1312+ var renderFunctions = [];
1313+ var addProjection = function(domFunction, node, renderFunction) {
1315+ var getProjection = function() {
1318+ projectionOptions.eventHandlerInterceptor = createEventHandlerInterceptor(projector, getProjection, performanceLogger);
1319+ projection = domFunction(node, renderFunction(), projectionOptions);
1320+ projections.push(projection);
1321+ renderFunctions.push(renderFunction);
1323+ var doRender = function() {
1324+ scheduled = void 0;
1325+ if (!renderCompleted) {
1328+ renderCompleted = false;
1329+ performanceLogger("renderStart", void 0);
1330+ for (var i = 0; i < projections.length; i++) {
1331+ var updatedVnode = renderFunctions[i]();
1332+ performanceLogger("rendered", void 0);
1333+ projections[i].update(updatedVnode);
1334+ performanceLogger("patched", void 0);
1336+ performanceLogger("renderDone", void 0);
1337+ renderCompleted = true;
1340+ renderNow: doRender,
1341+ scheduleRender: function() {
1342+ if (!scheduled && !stopped) {
1343+ scheduled = requestAnimationFrame(doRender);
1348+ cancelAnimationFrame(scheduled);
1349+ scheduled = void 0;
1353+ resume: function() {
1355+ renderCompleted = true;
1356+ projector.scheduleRender();
1358+ append: function(parentNode, renderFunction) {
1359+ addProjection(dom.append, parentNode, renderFunction);
1361+ insertBefore: function(beforeNode, renderFunction) {
1362+ addProjection(dom.insertBefore, beforeNode, renderFunction);
1364+ merge: function(domNode, renderFunction) {
1365+ addProjection(dom.merge, domNode, renderFunction);
1367+ replace: function(domNode, renderFunction) {
1368+ addProjection(dom.replace, domNode, renderFunction);
1370+ detach: function(renderFunction) {
1371+ for (var i = 0; i < renderFunctions.length; i++) {
1372+ if (renderFunctions[i] === renderFunction) {
1373+ renderFunctions.splice(i, 1);
1374+ return projections.splice(i, 1)[0];
1377+ throw new Error("renderFunction was not found");
1382+ function _h(selector) {
1383+ return function(properties) {
1384+ return function(children) {
1385+ return h(selector, properties, children);
1389+ function replace(projector) {
1390+ return function(el) {
1391+ return function(render3) {
1392+ return function() {
1393+ projector.replace(el, render3);
1399+ // output/Maquette/index.js
1400+ var string = unsafeCoerce2;
1403+ // output/Foreign.Object/foreign.js
1404+ function _copyST(m) {
1405+ return function() {
1408+ if (hasOwnProperty.call(m, k)) {
1416+ function runST(f) {
1419+ function _foldM(bind3) {
1420+ return function(f) {
1421+ return function(mz) {
1422+ return function(m) {
1425+ return function(z) {
1426+ return f(z)(k2)(m[k2]);
1430+ if (hasOwnProperty.call(m, k)) {
1431+ acc = bind3(acc)(g(k));
1439+ function toArrayWithKey(f) {
1440+ return function(m) {
1443+ if (hasOwnProperty.call(m, k)) {
1444+ r.push(f(k)(m[k]));
1450+ var keys = Object.keys || toArrayWithKey(function(k) {
1451+ return function() {
1456+ // output/Foreign.Object.ST/foreign.js
1457+ var newImpl = function() {
1460+ function poke2(k) {
1461+ return function(v) {
1462+ return function(m) {
1463+ return function() {
1471+ // output/Foreign.Object/index.js
1472+ var bindFlipped2 = /* @__PURE__ */ bindFlipped(bindST);
1473+ var thawST = _copyST;
1474+ var singleton2 = function(k) {
1475+ return function(v) {
1476+ return runST(bindFlipped2(poke2(k)(v))(newImpl));
1479+ var mutate = function(f) {
1480+ return function(m) {
1481+ return runST(function __do() {
1482+ var s = thawST(m)();
1488+ var foldM = function(dictMonad) {
1489+ var bind1 = bind(dictMonad.Bind1());
1490+ var pure1 = pure(dictMonad.Applicative0());
1491+ return function(f) {
1492+ return function(z) {
1493+ return _foldM(bind1)(f)(pure1(z));
1497+ var foldM1 = /* @__PURE__ */ foldM(monadST);
1498+ var union = function(m) {
1499+ return mutate(function(s) {
1500+ return foldM1(function(s$prime) {
1501+ return function(k) {
1502+ return function(v) {
1503+ return poke2(k)(v)(s$prime);
1510+ // output/Record.Unsafe.Union/foreign.js
1511+ function unsafeUnionFn(r1, r2) {
1513+ for (var k1 in r2) {
1514+ if ({}.hasOwnProperty.call(r2, k1)) {
1518+ for (var k2 in r1) {
1519+ if ({}.hasOwnProperty.call(r1, k2)) {
1526+ // output/Record.Unsafe.Union/index.js
1527+ var unsafeUnion = /* @__PURE__ */ runFn2(unsafeUnionFn);
1529+ // output/Plum.View/index.js
1530+ var semigroupRecord3 = /* @__PURE__ */ semigroupRecord();
1531+ var childrenIsSymbol = {
1532+ reflectSymbol: function() {
1536+ var meatIsSymbol = {
1537+ reflectSymbol: function() {
1541+ var nervesIsSymbol = {
1542+ reflectSymbol: function() {
1546+ var semigroupRecordCons2 = /* @__PURE__ */ semigroupRecordCons(childrenIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(meatIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(nervesIsSymbol)()(semigroupRecordNil)(semigroupArray))(semigroupArray));
1547+ var show2 = /* @__PURE__ */ show(showInt);
1548+ var show1 = /* @__PURE__ */ show(showNumber);
1549+ var monoidRecord2 = /* @__PURE__ */ monoidRecord();
1550+ var monoidRecordCons2 = /* @__PURE__ */ monoidRecordCons(childrenIsSymbol);
1551+ var monoidRecordCons1 = /* @__PURE__ */ monoidRecordCons(meatIsSymbol)(monoidArray)()(/* @__PURE__ */ monoidRecordCons(nervesIsSymbol)(monoidArray)()(monoidRecordNil));
1552+ var mempty2 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidRecord2(/* @__PURE__ */ monoidRecordCons2(monoidArray)()(monoidRecordCons1)));
1553+ var append1 = /* @__PURE__ */ append(semigroupArray);
1554+ var mempty1 = /* @__PURE__ */ mempty(monoidArray);
1555+ var map2 = /* @__PURE__ */ map(functorArray);
1556+ var Px = /* @__PURE__ */ function() {
1557+ function Px2(value0) {
1558+ this.value0 = value0;
1561+ Px2.create = function(value0) {
1562+ return new Px2(value0);
1566+ var Fill = /* @__PURE__ */ function() {
1570+ Fill2.value = new Fill2();
1573+ var Fit = /* @__PURE__ */ function() {
1577+ Fit2.value = new Fit2();
1580+ var Max2 = /* @__PURE__ */ function() {
1581+ function Max3(value0, value1) {
1582+ this.value0 = value0;
1583+ this.value1 = value1;
1586+ Max3.create = function(value0) {
1587+ return function(value1) {
1588+ return new Max3(value0, value1);
1593+ var Min2 = /* @__PURE__ */ function() {
1594+ function Min3(value0, value1) {
1595+ this.value0 = value0;
1596+ this.value1 = value1;
1599+ Min3.create = function(value0) {
1600+ return function(value1) {
1601+ return new Min3(value0, value1);
1606+ var X = /* @__PURE__ */ function() {
1610+ X2.value = new X2();
1613+ var Y = /* @__PURE__ */ function() {
1617+ Y2.value = new Y2();
1620+ var Grid = /* @__PURE__ */ function() {
1624+ Grid2.value = new Grid2();
1627+ var Flexbox = /* @__PURE__ */ function() {
1628+ function Flexbox2(value0) {
1629+ this.value0 = value0;
1632+ Flexbox2.create = function(value0) {
1633+ return new Flexbox2(value0);
1637+ var Generic = /* @__PURE__ */ function() {
1638+ function Generic2() {
1641+ Generic2.value = new Generic2();
1644+ var Span = /* @__PURE__ */ function() {
1648+ Span2.value = new Span2();
1651+ var Start = /* @__PURE__ */ function() {
1652+ function Start2() {
1655+ Start2.value = new Start2();
1658+ var Center = /* @__PURE__ */ function() {
1659+ function Center2() {
1662+ Center2.value = new Center2();
1665+ var End = /* @__PURE__ */ function() {
1669+ End2.value = new End2();
1672+ var Spacing = /* @__PURE__ */ function() {
1673+ function Spacing2(value0, value1) {
1674+ this.value0 = value0;
1675+ this.value1 = value1;
1678+ Spacing2.create = function(value0) {
1679+ return function(value1) {
1680+ return new Spacing2(value0, value1);
1685+ var Explain = /* @__PURE__ */ function() {
1686+ function Explain2() {
1689+ Explain2.value = new Explain2();
1692+ var Align = /* @__PURE__ */ function() {
1693+ function Align2(value0, value1) {
1694+ this.value0 = value0;
1695+ this.value1 = value1;
1698+ Align2.create = function(value0) {
1699+ return function(value1) {
1700+ return new Align2(value0, value1);
1705+ var Width = /* @__PURE__ */ function() {
1706+ function Width2(value0) {
1707+ this.value0 = value0;
1710+ Width2.create = function(value0) {
1711+ return new Width2(value0);
1715+ var Height = /* @__PURE__ */ function() {
1716+ function Height2(value0) {
1717+ this.value0 = value0;
1720+ Height2.create = function(value0) {
1721+ return new Height2(value0);
1725+ var Wrapped = /* @__PURE__ */ function() {
1726+ function Wrapped2() {
1729+ Wrapped2.value = new Wrapped2();
1732+ var BackgroundColor = /* @__PURE__ */ function() {
1733+ function BackgroundColor2(value0) {
1734+ this.value0 = value0;
1737+ BackgroundColor2.create = function(value0) {
1738+ return new BackgroundColor2(value0);
1740+ return BackgroundColor2;
1742+ var Padding = /* @__PURE__ */ function() {
1743+ function Padding2(value0) {
1744+ this.value0 = value0;
1747+ Padding2.create = function(value0) {
1748+ return new Padding2(value0);
1752+ var Spread = /* @__PURE__ */ function() {
1753+ function Spread2() {
1756+ Spread2.value = new Spread2();
1759+ var Opacity = /* @__PURE__ */ function() {
1760+ function Opacity2(value0) {
1761+ this.value0 = value0;
1764+ Opacity2.create = function(value0) {
1765+ return new Opacity2(value0);
1769+ var Pointer = /* @__PURE__ */ function() {
1770+ function Pointer2() {
1773+ Pointer2.value = new Pointer2();
1776+ var Move = /* @__PURE__ */ function() {
1777+ function Move2(value0) {
1778+ this.value0 = value0;
1781+ Move2.create = function(value0) {
1782+ return new Move2(value0);
1786+ var Clip = /* @__PURE__ */ function() {
1787+ function Clip2(value0) {
1788+ this.value0 = value0;
1791+ Clip2.create = function(value0) {
1792+ return new Clip2(value0);
1796+ var UI = /* @__PURE__ */ function() {
1797+ function UI2(value0, value1) {
1798+ this.value0 = value0;
1799+ this.value1 = value1;
1802+ UI2.create = function(value0) {
1803+ return function(value1) {
1804+ return new UI2(value0, value1);
1809+ var Column = /* @__PURE__ */ function() {
1810+ function Column2(value0) {
1811+ this.value0 = value0;
1814+ Column2.create = function(value0) {
1815+ return new Column2(value0);
1819+ var Row = /* @__PURE__ */ function() {
1820+ function Row2(value0) {
1821+ this.value0 = value0;
1824+ Row2.create = function(value0) {
1825+ return new Row2(value0);
1829+ var Stack = /* @__PURE__ */ function() {
1830+ function Stack2(value0) {
1831+ this.value0 = value0;
1834+ Stack2.create = function(value0) {
1835+ return new Stack2(value0);
1839+ var Wrapper = /* @__PURE__ */ function() {
1840+ function Wrapper2(value0) {
1841+ this.value0 = value0;
1844+ Wrapper2.create = function(value0) {
1845+ return new Wrapper2(value0);
1849+ var Text = /* @__PURE__ */ function() {
1850+ function Text2(value0) {
1851+ this.value0 = value0;
1854+ Text2.create = function(value0) {
1855+ return new Text2(value0);
1859+ var Link = /* @__PURE__ */ function() {
1860+ function Link2(value0, value1, value22) {
1861+ this.value0 = value0;
1862+ this.value1 = value1;
1863+ this.value2 = value22;
1866+ Link2.create = function(value0) {
1867+ return function(value1) {
1868+ return function(value22) {
1869+ return new Link2(value0, value1, value22);
1875+ var Download = /* @__PURE__ */ function() {
1876+ function Download2(value0, value1, value22) {
1877+ this.value0 = value0;
1878+ this.value1 = value1;
1879+ this.value2 = value22;
1882+ Download2.create = function(value0) {
1883+ return function(value1) {
1884+ return function(value22) {
1885+ return new Download2(value0, value1, value22);
1891+ var Image2 = /* @__PURE__ */ function() {
1892+ function Image3(value0, value1) {
1893+ this.value0 = value0;
1894+ this.value1 = value1;
1897+ Image3.create = function(value0) {
1898+ return function(value1) {
1899+ return new Image3(value0, value1);
1904+ var None = /* @__PURE__ */ function() {
1908+ None3.value = new None3();
1911+ var semigroupUIWith = function(dictSemigroup) {
1912+ var append3 = append(semigroupRecord3(semigroupRecordCons2(dictSemigroup)));
1913+ return function(dictSemigroup1) {
1914+ var append4 = append(dictSemigroup1);
1916+ append: function(v) {
1917+ return function(v1) {
1918+ return new UI(append3(v.value0)(v1.value0), append4(v.value1)(v1.value1));
1924+ var semigroupSkin = {
1925+ append: function(v) {
1926+ return function(v1) {
1927+ return union(v)(v1);
1931+ var append22 = /* @__PURE__ */ append(semigroupSkin);
1932+ var semigroupMutation = {
1933+ append: function(v) {
1934+ return function(v1) {
1936+ extraSkin: append22(v.extraSkin)(v1.extraSkin)
1941+ var renderableColor = {
1942+ render: function(v) {
1943+ return "rgba(" + (show2(v.r) + ("," + (show2(v.g) + ("," + (show2(v.b) + ("," + (show1(v.a) + ")")))))));
1946+ var monoidUIWith = function(dictMonoid) {
1947+ var mempty42 = mempty(monoidRecord2(monoidRecordCons2(dictMonoid)()(monoidRecordCons1)));
1948+ var semigroupUIWith1 = semigroupUIWith(dictMonoid.Semigroup0());
1949+ return function(dictMonoid1) {
1950+ var semigroupUIWith2 = semigroupUIWith1(dictMonoid1.Semigroup0());
1952+ mempty: new UI(mempty42, mempty(dictMonoid1)),
1953+ Semigroup0: function() {
1954+ return semigroupUIWith2;
1961+ Semigroup0: function() {
1962+ return semigroupSkin;
1965+ var mempty22 = /* @__PURE__ */ mempty(monoidSkin);
1966+ var foldMap3 = /* @__PURE__ */ foldMap2(monoidSkin);
1967+ var monoidMutation = {
1969+ extraSkin: mempty22
1971+ Semigroup0: function() {
1972+ return semigroupMutation;
1975+ var mempty3 = /* @__PURE__ */ mempty(monoidMutation);
1976+ var functorUIWith = {
1978+ return function(v) {
1979+ return new UI(v.value0, f(v.value1));
1983+ var applyUIWith = function(dictMonoid) {
1984+ var append3 = append(semigroupRecord3(semigroupRecordCons2(dictMonoid.Semigroup0())));
1986+ apply: function(v) {
1987+ return function(v1) {
1988+ return new UI(append3(v.value0)(v1.value0), v.value1(v1.value1));
1991+ Functor0: function() {
1992+ return functorUIWith;
1996+ var bindUIWith = function(dictMonoid) {
1997+ var append3 = append(semigroupRecord3(semigroupRecordCons2(dictMonoid.Semigroup0())));
1998+ var applyUIWith1 = applyUIWith(dictMonoid);
2000+ bind: function(v) {
2001+ return function(f) {
2002+ var v1 = f(v.value1);
2003+ return new UI(append3(v.value0)(v1.value0), v1.value1);
2006+ Apply0: function() {
2007+ return applyUIWith1;
2011+ var text = function(s) {
2012+ return function(v) {
2014+ nerves: mempty2.nerves,
2015+ meat: mempty2.meat,
2017+ meat: v.value0.meat,
2018+ nerves: v.value0.nerves,
2024+ var sk = function(key) {
2025+ return function(val) {
2026+ return singleton2(key)(val);
2029+ var render = function(dict) {
2030+ return dict.render;
2032+ var render1 = /* @__PURE__ */ render(renderableColor);
2033+ var renderableLength = {
2034+ render: function(v) {
2035+ if (v instanceof Px) {
2036+ return show2(v.value0) + "px";
2039+ if (v instanceof Fit) {
2040+ return "fit-content";
2043+ if (v instanceof Fill) {
2047+ if (v instanceof Max2) {
2048+ return "max(" + (show2(v.value0) + ("px," + (render(renderableLength)(v.value1) + ")")));
2051+ if (v instanceof Min2) {
2052+ return "min(" + (show2(v.value0) + ("px," + (render(renderableLength)(v.value1) + ")")));
2055+ throw new Error("Failed pattern match at Plum.View (line 258, column 12 - line 263, column 62): " + [v.constructor.name]);
2058+ var render2 = /* @__PURE__ */ render(renderableLength);
2059+ var skin = function(ctx) {
2060+ return function(v) {
2061+ if (v instanceof Spacing) {
2062+ return sk("gap")(show2(v.value0) + ("px " + (show2(v.value1) + "px")));
2065+ if (v instanceof Explain) {
2066+ return sk("border")("dashed magenta");
2069+ if (v instanceof Align) {
2070+ if (ctx instanceof Generic) {
2074+ if (ctx instanceof Span) {
2078+ if (ctx instanceof Grid) {
2079+ return sk(function() {
2080+ if (v.value0 instanceof X) {
2081+ return "justify-items";
2084+ if (v.value0 instanceof Y) {
2085+ return "align-items";
2088+ throw new Error("Failed pattern match at Plum.View (line 215, column 9 - line 217, column 29): " + [v.value0.constructor.name]);
2090+ if (v.value1 instanceof Start) {
2094+ if (v.value1 instanceof Center) {
2098+ if (v.value1 instanceof End) {
2102+ throw new Error("Failed pattern match at Plum.View (line 219, column 9 - line 222, column 23): " + [v.value1.constructor.name]);
2106+ if (ctx instanceof Flexbox) {
2107+ return sk(function() {
2108+ var v1 = new Tuple(ctx.value0, v.value0);
2109+ if (v1.value0 instanceof X && v1.value1 instanceof X) {
2110+ return "justify-content";
2113+ if (v1.value0 instanceof X && v1.value1 instanceof Y) {
2114+ return "align-items";
2117+ if (v1.value0 instanceof Y && v1.value1 instanceof X) {
2118+ return "align-items";
2121+ if (v1.value0 instanceof Y && v1.value1 instanceof Y) {
2122+ return "justify-content";
2125+ throw new Error("Failed pattern match at Plum.View (line 226, column 9 - line 230, column 38): " + [v1.constructor.name]);
2127+ if (v.value1 instanceof Start) {
2128+ return "flex-start";
2131+ if (v.value1 instanceof Center) {
2135+ if (v.value1 instanceof End) {
2139+ throw new Error("Failed pattern match at Plum.View (line 232, column 9 - line 235, column 28): " + [v.value1.constructor.name]);
2143+ throw new Error("Failed pattern match at Plum.View (line 211, column 26 - line 236, column 8): " + [ctx.constructor.name]);
2146+ if (v instanceof Width) {
2147+ return sk("width")(render2(v.value0));
2150+ if (v instanceof Height) {
2151+ return sk("height")(render2(v.value0));
2154+ if (v instanceof Wrapped) {
2155+ if (ctx instanceof Flexbox) {
2156+ return sk("flex-wrap")("wrap");
2162+ if (v instanceof BackgroundColor) {
2163+ return sk("background-color")(render1(v.value0));
2166+ if (v instanceof Padding) {
2167+ return sk("padding")(show2(v.value0.top) + ("px " + (show2(v.value0.right) + ("px " + (show2(v.value0.bottom) + ("px " + (show2(v.value0.left) + "px")))))));
2170+ if (v instanceof Spread) {
2171+ if (ctx instanceof Flexbox) {
2172+ return sk("justify-content")("space-between");
2178+ if (v instanceof Opacity) {
2179+ return sk("opacity")(show1(v.value0));
2182+ if (v instanceof Pointer) {
2183+ return sk("cursor")("pointer");
2186+ if (v instanceof Move) {
2187+ return sk("transform")("translate(" + (show2(v.value0.x) + ("px, " + (show2(v.value0.y) + ")"))));
2190+ if (v instanceof Clip && v.value0 instanceof X) {
2191+ return sk("overflow-x")("hidden");
2194+ if (v instanceof Clip && v.value0 instanceof Y) {
2195+ return sk("overflow-y")("hidden");
2198+ throw new Error("Failed pattern match at Plum.View (line 208, column 12 - line 252, column 37): " + [v.constructor.name]);
2201+ var hWith = function(elem2) {
2202+ return function(props) {
2203+ return function(v) {
2204+ return function(children) {
2205+ return h2(elem2)(unsafeUnion(props)({
2212+ var h3 = function(elem2) {
2213+ return function(v) {
2214+ return function(children) {
2221+ var growSkin = function(fire) {
2222+ return function(v) {
2223+ return function(v1) {
2224+ var widthFill = [new Width(Fill.value), new Height(Fill.value)];
2225+ var alignCenter = [new Align(X.value, Center.value), new Align(Y.value, Center.value)];
2226+ var skn = function(ctx) {
2227+ return append22(foldMap3(skin(ctx))(append1(v1.meat)(append1(function() {
2228+ if (ctx instanceof Span) {
2232+ if (ctx instanceof Grid) {
2236+ if (ctx instanceof Flexbox) {
2240+ if (ctx instanceof Generic) {
2244+ throw new Error("Failed pattern match at Plum.View (line 310, column 16 - line 314, column 35): " + [ctx.constructor.name]);
2246+ if (ctx instanceof Grid) {
2247+ return alignCenter;
2250+ if (ctx instanceof Flexbox) {
2251+ return alignCenter;
2254+ if (ctx instanceof Span) {
2258+ if (ctx instanceof Generic) {
2259+ return alignCenter;
2262+ throw new Error("Failed pattern match at Plum.View (line 315, column 16 - line 319, column 37): " + [ctx.constructor.name]);
2263+ }()))))(v.extraSkin);
2265+ if (v1.bones instanceof Text) {
2266+ return h3("span")(skn(Span.value))([string(v1.bones.value0)]);
2269+ if (v1.bones instanceof Wrapper) {
2270+ return h3("div")(append22(skn(new Flexbox(X.value)))(append22(sk("display")("flex"))(sk("flex-direction")("row"))))([growSkin(fire)(mempty3)(v1.bones.value0)]);
2273+ if (v1.bones instanceof Stack) {
2274+ return h3("div")(append22(skn(Grid.value))(sk("display")("grid")))(map2(growSkin(fire)({
2275+ extraSkin: append22(sk("grid-row")("1"))(sk("grid-column")("1"))
2276+ }))(v1.bones.value0));
2279+ if (v1.bones instanceof Row) {
2280+ return h3("div")(append22(skn(new Flexbox(X.value)))(append22(sk("display")("flex"))(sk("flex-direction")("row"))))(map2(growSkin(fire)(mempty3))(v1.bones.value0));
2283+ if (v1.bones instanceof Column) {
2284+ return h3("div")(append22(skn(new Flexbox(Y.value)))(append22(sk("display")("flex"))(sk("flex-direction")("column"))))(map2(growSkin(fire)(mempty3))(v1.bones.value0));
2287+ if (v1.bones instanceof Link) {
2288+ return hWith("a")({
2289+ href: v1.bones.value0,
2290+ rel: "noopener noreferrer",
2291+ target: function() {
2292+ if (v1.bones.value1.newTab) {
2298+ })(append22(skn(new Flexbox(X.value)))(append22(sk("display")("flex"))(sk("flex-direction")("row"))))([growSkin(fire)(mempty3)(v1.bones.value2)]);
2301+ if (v1.bones instanceof Download) {
2302+ return hWith("a")({
2303+ href: v1.bones.value0,
2304+ download: fromMaybe("")(v1.bones.value1.filename)
2305+ })(append22(skn(new Flexbox(X.value)))(append22(sk("display")("flex"))(sk("flex-direction")("row"))))([growSkin(fire)(mempty3)(v1.bones.value2)]);
2308+ if (v1.bones instanceof Image2) {
2309+ return hWith("img")({
2310+ src: v1.bones.value0,
2311+ alt: v1.bones.value1.description
2312+ })(skn(Generic.value))([]);
2315+ if (v1.bones instanceof None) {
2316+ return h3("div")(mempty22)([]);
2319+ throw new Error("Failed pattern match at Plum.View (line 322, column 5 - line 346, column 32): " + [v1.bones.constructor.name]);
2323+ var grow = function(fire) {
2324+ return function(v) {
2325+ return growSkin(fire)(mempty3)(v);
2328+ var column = function(v) {
2330+ nerves: mempty2.nerves,
2331+ meat: mempty2.meat,
2333+ meat: v.value0.meat,
2334+ nerves: v.value0.nerves,
2335+ bones: new Column(v.value0.children)
2340+ // output/Web.DOM.NonElementParentNode/foreign.js
2341+ function _getElementById(id) {
2342+ return function(node) {
2343+ return function() {
2344+ return node.getElementById(id);
2349+ // output/Data.Nullable/foreign.js
2350+ function nullable(a, r, f) {
2351+ return a == null ? r : f(a);
2354+ // output/Data.Nullable/index.js
2355+ var toMaybe = function(n) {
2356+ return nullable(n, Nothing.value, Just.create);
2359+ // output/Web.DOM.NonElementParentNode/index.js
2360+ var map3 = /* @__PURE__ */ map(functorEffect);
2361+ var getElementById = function(eid) {
2362+ var $2 = map3(toMaybe);
2363+ var $3 = _getElementById(eid);
2364+ return function($4) {
2369+ // output/Web.HTML/foreign.js
2370+ var windowImpl = function() {
2374+ // output/Web.HTML.HTMLDocument/index.js
2375+ var toNonElementParentNode = unsafeCoerce2;
2377+ // output/Web.HTML.Window/foreign.js
2378+ function document2(window2) {
2379+ return function() {
2380+ return window2.document;
2384+ // output/Plum/index.js
2385+ var bind2 = /* @__PURE__ */ bind(bindEffect);
2386+ var map4 = /* @__PURE__ */ map(functorArray);
2387+ var outerStyle = "html,body{height:100%;padding:0;margin:0;}";
2388+ var run3 = function(id) {
2389+ return function(plum2) {
2390+ return function __do() {
2391+ var modelRef = bind2(plum2.init)($$new)();
2392+ var v = bind2(bind2(windowImpl)(document2))(function() {
2393+ var $12 = getElementById(id);
2394+ return function($13) {
2395+ return $12(toNonElementParentNode($13));
2398+ if (v instanceof Just) {
2399+ var projector = createProjector();
2400+ return replace(projector)(v.value0)(function __do2() {
2401+ var model = read(modelRef)();
2402+ var el = map4(grow(function(msg) {
2403+ return function __do3() {
2404+ var m = read(modelRef)();
2405+ var m_ = plum2.update(msg)(m)();
2406+ return write(m_)(modelRef)();
2409+ var v1 = plum2.view(model);
2410+ return v1.value0.children;
2417+ })(cons(h2("style")({})([string(outerStyle)]))(el));
2421+ if (v instanceof Nothing) {
2425+ throw new Error("Failed pattern match at Plum (line 26, column 92 - line 42, column 25): " + [v.constructor.name]);
2430+ // output/Main/index.js
2431+ var pure2 = /* @__PURE__ */ pure(applicativeEffect);
2432+ var discard2 = /* @__PURE__ */ discard(discardUnit)(/* @__PURE__ */ bindUIWith(monoidArray));
2433+ var mempty4 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidUIWith(monoidUnit)(monoidUnit));
2435+ init: /* @__PURE__ */ pure2({
2438+ view: function(model) {
2439+ return column(discard2(text("hi")(mempty4))(function() {
2440+ return text("hello")(mempty4);
2443+ update: function(msg) {
2444+ return function(model) {
2446+ text: "Button pressed"
2451+ var main = /* @__PURE__ */ run3("plum")(plum);