on master help sign in
Include Automaton, Dict, and Set in the RTS.
commitcc5d855d4eef14d129bb0d2187465d6a8b6a47f2 authorevancz <info@elm-lang.org> dateTue 16 Oct 2012, 22:00 (14 years ago) parentbdb898d
5 files changed+741−929
core-js/Automaton.js+13 core-js/Dict.js+47 core-js/Everything.js−31 core-js/Set.js+3 elm/elm-runtime-0.4.5.js+678−898
core-js/Automaton.jsnew file+13
@@ -0,0 +1,13 @@
1+try{if(Elm.Automaton)throw "Module name collision, 'Automaton' is already defined.";Elm.Automaton=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Data.List instanceof Object))throw 'module not found'}catch(e){throw "Module 'Data.List' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var unzip=Elm.Data.List.unzip
2+function Automaton_0(a1){return ["Automaton",a1]};var Listen_9=["Listen"],Ignore_10=["Ignore"]
3+function DragFrom_11(a1){return ["DragFrom",a1]};var count_8=init_6(0)(function(__75){return function(c_76){return(1+c_76)}})
4+function run_1(Automaton$m0_15){return function(input_16){return function(){switch(Automaton$m0_15[0]){case"Automaton":return lift(fst)(foldp_(function(a_18){return function(Tuple2$bAutomaton$m_19){return function(){switch(Tuple2$bAutomaton$m_19[0]){case"Tuple2":switch(Tuple2$bAutomaton$m_19[2][0]){case"Automaton":return Tuple2$bAutomaton$m_19[2][1](a_18)};break};throw "Non-exhaustive pattern match in case"}()}})(Automaton$m0_15[1])(input_16))};throw "Non-exhaustive pattern match in case"}()}}
5+function step_2(a_22){return function(Automaton$m_23){return function(){switch(Automaton$m_23[0]){case"Automaton":return Automaton$m_23[1](a_22)};throw "Non-exhaustive pattern match in case"}()}}
6+function composeAuto_3(a1_25){return function(a2_26){return function(){var Automaton$m1_27=a1_25,m1_28=function(){switch(Automaton$m1_27[0]){case"Automaton":return Automaton$m1_27[1]};throw "Non-exhaustive pattern match in case"}(),Automaton$m2_29=a2_26,m2_30=function(){switch(Automaton$m2_29[0]){case"Automaton":return Automaton$m2_29[1]};throw "Non-exhaustive pattern match in case"}();return Automaton_0(function(a_33){return function(){var Tuple2$bm1__34=m1_28(a_33),b_35=function(){switch(Tuple2$bm1__34[0]){case"Tuple2":return Tuple2$bm1__34[1]};throw "Non-exhaustive pattern match in case"}(),m1__36=function(){switch(Tuple2$bm1__34[0]){case"Tuple2":return Tuple2$bm1__34[2]};throw "Non-exhaustive pattern match in case"}();return function(){var Tuple2$cm2__41=m2_30(b_35),c_42=function(){switch(Tuple2$cm2__41[0]){case"Tuple2":return Tuple2$cm2__41[1]};throw "Non-exhaustive pattern match in case"}(),m2__43=function(){switch(Tuple2$cm2__41[0]){case"Tuple2":return Tuple2$cm2__41[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",c_42,composeAuto_3(m1__36)(m2__43)]}()}()})}()}}
7+function combine_4(autos_48){return Automaton_0(function(a_49){return function(){var Tuple2$bsautos__50=unzip(map(function(Automaton$m_53){return function(){switch(Automaton$m_53[0]){case"Automaton":return Automaton$m_53[1](a_49)};throw "Non-exhaustive pattern match in case"}()})(autos_48)),bs_51=function(){switch(Tuple2$bsautos__50[0]){case"Tuple2":return Tuple2$bsautos__50[1]};throw "Non-exhaustive pattern match in case"}(),autos__52=function(){switch(Tuple2$bsautos__50[0]){case"Tuple2":return Tuple2$bsautos__50[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",bs_51,combine_4(autos__52)]}()})}
8+function pure_5(f_59){return Automaton_0(function(x_60){return ["Tuple2",f_59(x_60),pure_5(f_59)]})}
9+function init_6(s_61){return function(step_62){return Automaton_0(function(a_63){return function(){var s__64=step_62(a_63)(s_61);return ["Tuple2",s__64,init_6(s__64)(step_62)]}()})}}
10+function init__7(s_65){return function(step_66){return Automaton_0(function(a_67){return function(){var Tuple2$bs__68=step_66(a_67)(s_65),b_69=function(){switch(Tuple2$bs__68[0]){case"Tuple2":return Tuple2$bs__68[1]};throw "Non-exhaustive pattern match in case"}(),s__70=function(){switch(Tuple2$bs__68[0]){case"Tuple2":return Tuple2$bs__68[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",b_69,init__7(s__70)(step_66)]}()})}}
11+function vecSub_12(Tuple2$x1y1_77){return function(Tuple2$x2y2_78){return function(){switch(Tuple2$x1y1_77[0]){case"Tuple2":return function(){switch(Tuple2$x2y2_78[0]){case"Tuple2":return ["Tuple2",(Tuple2$x1y1_77[1]-Tuple2$x2y2_78[1]),(Tuple2$x1y1_77[2]-Tuple2$x2y2_78[2])]};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
12+function stepDrag_13(Tuple2$presspos_83){return function(Tuple2$dsform_84){return function(){switch(Tuple2$presspos_83[0]){case"Tuple2":return function(){switch(Tuple2$dsform_84[0]){case"Tuple2":return function(){function wrap_89(ds__90){return ["Tuple2",Tuple2$dsform_84[2],["Tuple2",ds__90,Tuple2$dsform_84[2]]]};return function(){switch(Tuple2$dsform_84[1][0]){case"DragFrom":return(Tuple2$presspos_83[1]?["Tuple2",uncurry(move)(vecSub_12(Tuple2$presspos_83[2])(Tuple2$dsform_84[1][1]))(Tuple2$dsform_84[2]),["Tuple2",DragFrom_11(Tuple2$dsform_84[1][1]),Tuple2$dsform_84[2]]]:function(){var form__92=uncurry(move)(vecSub_12(Tuple2$presspos_83[2])(Tuple2$dsform_84[1][1]))(Tuple2$dsform_84[2]);return ["Tuple2",form__92,["Tuple2",Listen_9,form__92]]}());case"Ignore":return wrap_89((Tuple2$presspos_83[1]?Ignore_10:Listen_9));case"Listen":return wrap_89((not(Tuple2$presspos_83[1])?Listen_9:(isWithin(Tuple2$presspos_83[2])(Tuple2$dsform_84[2])?DragFrom_11(Tuple2$presspos_83[2]):Ignore_10)))};throw "Non-exhaustive pattern match in case"}()}()};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
13+function dragForm_14(form_93){return init__7(["Tuple2",Listen_9,form_93])(stepDrag_13)};return {Automaton:Automaton_0,run:run_1,step:step_2,composeAuto:composeAuto_3,combine:combine_4,pure:pure_5,init:init_6,init_:init__7,count:count_8,Listen:Listen_9,Ignore:Ignore_10,DragFrom:DragFrom_11,vecSub:vecSub_12,stepDrag:stepDrag_13,dragForm:dragForm_14}}();Elm.main=function(){return Elm.Automaton.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Automaton module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>fst, unzip</span>');document.body.innerHTML=Text.monospace(msg);throw e}}
core-js/Dict.jsnew file+47
@@ -0,0 +1,47 @@
1+try{if(Elm.Dict)throw "Module name collision, 'Dict' is already defined.";Elm.Dict=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Data.Maybe instanceof Object))throw 'module not found'}catch(e){throw "Module 'Data.Maybe' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var isJust=Elm.Data.Maybe.isJust,Red_0=["Red"],Black_1=["Black"]
2+function RBNode_2(a1){return function(a2){return function(a3){return function(a4){return function(a5){return ["RBNode",a1,a2,a3,a4,a5]}}}}};var RBEmpty_3=["RBEmpty"],raise_4=console.log,empty_5=RBEmpty_3
3+function equal_pathLen_6(t_46){return function(){function path_numBlacks_47(t_48){return function(){switch(t_48[0]){case"RBEmpty":return 1;case"RBNode":return function(){var bl_52=path_numBlacks_47(t_48[4]),br_53=path_numBlacks_47(t_48[5]);return((not(eq(bl_52,br_53))||(eq(bl_52,-1)||eq(br_53,-1)))?-1:(bl_52+(eq(t_48[1],Red_0)?0:1)))}()};throw "Non-exhaustive pattern match in case"}()};return not(eq(-1,path_numBlacks_47(t_46)))}()}
4+function rootBlack_7(t_54){return function(){switch(t_54[0]){case"RBEmpty":return true;case"RBNode":switch(t_54[1][0]){case"Black":return true};break};return false}()}
5+function redBlack_children_8(t_55){return function(){switch(t_55[0]){case"RBEmpty":return true;case"RBNode":switch(t_55[1][0]){case"Red":switch(t_55[4][0]){case"RBNode":switch(t_55[4][1][0]){case"Red":return false};break};switch(t_55[5][0]){case"RBNode":switch(t_55[5][1][0]){case"Red":return false};break};break};return(redBlack_children_8(t_55[4])&&redBlack_children_8(t_55[5]))};throw "Non-exhaustive pattern match in case"}()}
6+function findExtreme_9(f_58){return function(t_59){return function(){switch(t_59[0]){case"RBEmpty":return Nothing;case"RBNode":return function(){var case6=findExtreme_9(f_58)(f_58(["Tuple2",t_59[4],t_59[5]]));switch(case6[0]){case"Just":return Just(case6[1]);case"Nothing":return Just(t_59[2])};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
7+function findminRbt_10(t_65){return findExtreme_9(fst)(t_65)}
8+function findmaxRbt_11(t_66){return findExtreme_9(snd)(t_66)}
9+function optionRelation_12(f_67){return function(u_68){return function(xo_69){return function(yo_70){return function(){var case0=["Tuple2",xo_69,yo_70];switch(case0[0]){case"Tuple2":switch(case0[1][0]){case"Nothing":return u_68};switch(case0[2][0]){case"Nothing":return u_68};switch(case0[1][0]){case"Just":switch(case0[2][0]){case"Just":return f_67(case0[1][1])(case0[2][1])};break};break};throw "Non-exhaustive pattern match in case"}()}}}}
10+function olt_13(xo_73){return function(yo_74){return optionRelation_12(function(x_75){return function(y_76){return(compare(x_75)(y_76)[0]==='LT')}})(true)(xo_73)(yo_74)}}
11+function olte_14(xo_77){return function(yo_78){return optionRelation_12(function(x_79){return function(y_80){return function(){var ord=compare(x_79)(y_80)[0];return ord==='LT'||ord==='EQ'}()}})(true)(xo_77)(yo_78)}}
12+function ordered_15(t_81){return function(){switch(t_81[0]){case"RBEmpty":return true;case"RBNode":return function(){var Tuple2$lmaxrmin_87=["Tuple2",findmaxRbt_11(t_81[4]),findminRbt_10(t_81[5])],lmax_88=function(){switch(Tuple2$lmaxrmin_87[0]){case"Tuple2":return Tuple2$lmaxrmin_87[1]};throw "Non-exhaustive pattern match in case"}(),rmin_89=function(){switch(Tuple2$lmaxrmin_87[0]){case"Tuple2":return Tuple2$lmaxrmin_87[2]};throw "Non-exhaustive pattern match in case"}();return(olte_14(lmax_88)(Just(t_81[2]))&&(olte_14(Just(t_81[2]))(rmin_89)&&(ordered_15(t_81[4])&&ordered_15(t_81[5]))))}()};throw "Non-exhaustive pattern match in case"}()}
13+function leftLeaning_16(t_94){return function(){switch(t_94[0]){case"RBEmpty":return true;case"RBNode":switch(t_94[4][0]){case"RBEmpty":switch(t_94[5][0]){case"RBNode":switch(t_94[5][1][0]){case"Red":return false};break};break;case"RBNode":switch(t_94[4][1][0]){case"Black":switch(t_94[5][0]){case"RBNode":switch(t_94[5][1][0]){case"Red":return false};break};break};break};return(leftLeaning_16(t_94[4])&&leftLeaning_16(t_94[5]))};throw "Non-exhaustive pattern match in case"}()}
14+function invariants_hold_17(t_97){return(ordered_15(t_97)&&(rootBlack_7(t_97)&&(redBlack_children_8(t_97)&&(equal_pathLen_6(t_97)&&leftLeaning_16(t_97)))))}
15+function min_18(t_98){return function(){switch(t_98[0]){case"RBEmpty":return console.log(Value.str("(min RBEmpty) is not defined"));case"RBNode":switch(t_98[4][0]){case"RBEmpty":return ["Tuple2",t_98[2],t_98[3]]};return min_18(t_98[4])};throw "Non-exhaustive pattern match in case"}()}
16+function max_19(t_102){return function(){switch(t_102[0]){case"RBEmpty":return console.log(Value.str("(max RBEmpty) is not defined"));case"RBNode":switch(t_102[5][0]){case"RBEmpty":return ["Tuple2",t_102[2],t_102[3]]};return max_19(t_102[5])};throw "Non-exhaustive pattern match in case"}()}
17+function lookup_20(k_106){return function(t_107){return function(){switch(t_107[0]){case"RBEmpty":return Nothing;case"RBNode":return function(){var case6=compare(k_106)(t_107[2]);switch(case6[0]){case"EQ":return Just(t_107[3]);case"GT":return lookup_20(k_106)(t_107[5]);case"LT":return lookup_20(k_106)(t_107[4])};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
18+function member_21(k_112){return function(t_113){return isJust(lookup_20(k_112)(t_113))}}
19+function rotateLeft_22(t_114){return function(){switch(t_114[0]){case"RBNode":switch(t_114[5][0]){case"RBNode":return RBNode_2(t_114[1])(t_114[5][2])(t_114[5][3])(RBNode_2(Red_0)(t_114[2])(t_114[3])(t_114[4])(t_114[5][4]))(t_114[5][5])};break};return raise_4(Value.str("rotateLeft of a node without enough children"))}()}
20+function rotateRight_23(t_124){return function(){switch(t_124[0]){case"RBNode":switch(t_124[4][0]){case"RBNode":return RBNode_2(t_124[1])(t_124[4][2])(t_124[4][3])(t_124[4][4])(RBNode_2(Red_0)(t_124[2])(t_124[3])(t_124[4][5])(t_124[5]))};break};return raise_4(Value.str("rotateRight of a node without enough children"))}()}
21+function rotateLeftIfNeeded_24(t_134){return function(){switch(t_134[0]){case"RBNode":switch(t_134[5][0]){case"RBNode":switch(t_134[5][1][0]){case"Red":return rotateLeft_22(t_134)};break};break};return t_134}()}
22+function rotateRightIfNeeded_25(t_135){return function(){switch(t_135[0]){case"RBNode":switch(t_135[4][0]){case"RBNode":switch(t_135[4][1][0]){case"Red":switch(t_135[4][4][0]){case"RBNode":switch(t_135[4][4][1][0]){case"Red":return rotateRight_23(t_135)};break};break};break};break};return t_135}()}
23+function otherColor_26(c_136){return function(){switch(c_136[0]){case"Black":return Red_0;case"Red":return Black_1};throw "Non-exhaustive pattern match in case"}()}
24+function color_flip_27(t_137){return function(){switch(t_137[0]){case"RBNode":switch(t_137[4][0]){case"RBNode":switch(t_137[5][0]){case"RBNode":return RBNode_2(otherColor_26(t_137[1]))(t_137[2])(t_137[3])(RBNode_2(otherColor_26(t_137[4][1]))(t_137[4][2])(t_137[4][3])(t_137[4][4])(t_137[4][5]))(RBNode_2(otherColor_26(t_137[5][1]))(t_137[5][2])(t_137[5][3])(t_137[5][4])(t_137[5][5]))};break};break};return raise_4(Value.str("color_flip called on a RBEmpty or RBNode with a RBEmpty child"))}()}
25+function color_flipIfNeeded_28(t_151){return function(){switch(t_151[0]){case"RBNode":switch(t_151[4][0]){case"RBNode":switch(t_151[4][1][0]){case"Red":switch(t_151[5][0]){case"RBNode":switch(t_151[5][1][0]){case"Red":return color_flip_27(t_151)};break};break};break};break};return t_151}()}
26+function fixUp_29(t_152){return color_flipIfNeeded_28(rotateRightIfNeeded_25(rotateLeftIfNeeded_24(t_152)))}
27+function ensureBlackRoot_30(t_153){return function(){switch(t_153[0]){case"RBNode":switch(t_153[1][0]){case"Red":return RBNode_2(Black_1)(t_153[2])(t_153[3])(t_153[4])(t_153[5])};break};return t_153}()}
28+function insert_31(k_158){return function(v_159){return function(t_160){return function(){function ins_161(t_162){return function(){switch(t_162[0]){case"RBEmpty":return RBNode_2(Red_0)(k_158)(v_159)(RBEmpty_3)(RBEmpty_3);case"RBNode":return function(){var h_168=function(){var case6=compare(k_158)(t_162[2]);switch(case6[0]){case"EQ":return RBNode_2(t_162[1])(t_162[2])(v_159)(t_162[4])(t_162[5]);case"GT":return RBNode_2(t_162[1])(t_162[2])(t_162[3])(t_162[4])(ins_161(t_162[5]));case"LT":return RBNode_2(t_162[1])(t_162[2])(t_162[3])(ins_161(t_162[4]))(t_162[5])};throw "Non-exhaustive pattern match in case"}();return fixUp_29(h_168)}()};throw "Non-exhaustive pattern match in case"}()};return(not(invariants_hold_17(t_160))?raise_4(Value.str("invariants broken before insert")):function(){var new_t_169=ensureBlackRoot_30(ins_161(t_160));return(not(invariants_hold_17(new_t_169))?raise_4(Value.str("invariants broken after insert")):new_t_169)}())}()}}}
29+function singleton_32(k_170){return function(v_171){return insert_31(k_170)(v_171)(RBEmpty_3)}}
30+function isRed_33(t_172){return function(){switch(t_172[0]){case"RBNode":switch(t_172[1][0]){case"Red":return true};break};return false}()}
31+function isRedLeft_34(t_173){return function(){switch(t_173[0]){case"RBNode":switch(t_173[4][0]){case"RBNode":switch(t_173[4][1][0]){case"Red":return true};break};break};return false}()}
32+function isRedLeftLeft_35(t_174){return function(){switch(t_174[0]){case"RBNode":switch(t_174[4][0]){case"RBNode":switch(t_174[4][4][0]){case"RBNode":switch(t_174[4][4][1][0]){case"Red":return true};break};break};break};return false}()}
33+function isRedRight_36(t_175){return function(){switch(t_175[0]){case"RBNode":switch(t_175[5][0]){case"RBNode":switch(t_175[5][1][0]){case"Red":return true};break};break};return false}()}
34+function isRedRightLeft_37(t_176){return function(){switch(t_176[0]){case"RBNode":switch(t_176[5][0]){case"RBNode":switch(t_176[5][4][0]){case"RBNode":switch(t_176[5][4][1][0]){case"Red":return true};break};break};break};return false}()}
35+function moveRedLeft_38(t_177){return function(){var t__178=color_flip_27(t_177);return function(){switch(t__178[0]){case"RBNode":return function(){switch(t__178[5][0]){case"RBNode":switch(t__178[5][4][0]){case"RBNode":switch(t__178[5][4][1][0]){case"Red":return color_flip_27(rotateLeft_22(RBNode_2(t__178[1])(t__178[2])(t__178[3])(t__178[4])(rotateRight_23(t__178[5]))))};break};break};return t__178}()};return t__178}()}()}
36+function moveRedRight_39(t_184){return function(){var t__185=color_flip_27(t_184);return(isRedLeftLeft_35(t__185)?color_flip_27(rotateRight_23(t__185)):t__185)}()}
37+function moveRedLeftIfNeeded_40(t_186){return((not(isRedLeft_34(t_186))&&not(isRedLeftLeft_35(t_186)))?moveRedLeft_38(t_186):t_186)}
38+function moveRedRightIfNeeded_41(t_187){return((not(isRedRight_36(t_187))&&not(isRedRightLeft_37(t_187)))?moveRedRight_39(t_187):t_187)}
39+function deleteMin_42(t_188){return function(){function del_189(t_190){return function(){switch(t_190[0]){case"RBNode":switch(t_190[4][0]){case"RBEmpty":return RBEmpty_3};break};return function(){var t__191=moveRedLeftIfNeeded_40(t_190);return function(){switch(t__191[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return fixUp_29(RBNode_2(t__191[1])(t__191[2])(t__191[3])(del_189(t__191[4]))(t__191[5]))};throw "Non-exhaustive pattern match in case"}()}()}()};return ensureBlackRoot_30(del_189(t_188))}()}
40+function deleteMax_43(t_197){return function(){function del_198(t_199){return function(){var t__200=(isRedLeft_34(t_199)?rotateRight_23(t_199):t_199);return function(){switch(t__200[0]){case"RBNode":switch(t__200[5][0]){case"RBEmpty":return RBEmpty_3};break};return function(){var t___201=moveRedRightIfNeeded_41(t__200);return function(){switch(t___201[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return fixUp_29(RBNode_2(t___201[1])(t___201[2])(t___201[3])(t___201[4])(del_198(t___201[5])))};throw "Non-exhaustive pattern match in case"}()}()}()}()};return ensureBlackRoot_30(del_198(t_197))}()}
41+function remove_44(k_207){return function(t_208){return function(){function eq_and_noRightNode_209(t_215){return function(){switch(t_215[0]){case"RBNode":switch(t_215[5][0]){case"RBEmpty":return eq(k_207,t_215[2])};break};return false}()}
42+function eq_210(t_217){return function(){switch(t_217[0]){case"RBNode":return eq(k_207,t_217[2])};return false}()}
43+function delLT_211(t_219){return function(){var t__220=moveRedLeftIfNeeded_40(t_219);return function(){switch(t__220[0]){case"RBEmpty":return raise_4(Value.str("delLT on RBEmpty"));case"RBNode":return fixUp_29(RBNode_2(t__220[1])(t__220[2])(t__220[3])(del_214(t__220[4]))(t__220[5]))};throw "Non-exhaustive pattern match in case"}()}()}
44+function delEQ_212(t_226){return function(){switch(t_226[0]){case"RBEmpty":return raise_4(Value.str("delEQ called on a RBEmpty"));case"RBNode":return function(){var Tuple2$k_v__230=min_18(t_226[5]),k__231=function(){switch(Tuple2$k_v__230[0]){case"Tuple2":return Tuple2$k_v__230[1]};throw "Non-exhaustive pattern match in case"}(),v__232=function(){switch(Tuple2$k_v__230[0]){case"Tuple2":return Tuple2$k_v__230[2]};throw "Non-exhaustive pattern match in case"}();return fixUp_29(RBNode_2(t_226[1])(k__231)(v__232)(t_226[4])(deleteMin_42(t_226[5])))}()};throw "Non-exhaustive pattern match in case"}()}
45+function delGT_213(t_237){return function(){switch(t_237[0]){case"RBEmpty":return raise_4(Value.str("delGT called on a RBEmpty"));case"RBNode":return fixUp_29(RBNode_2(t_237[1])(t_237[2])(t_237[3])(t_237[4])(del_214(t_237[5])))};throw "Non-exhaustive pattern match in case"}()}
46+function del_214(t_243){return function(){switch(t_243[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return((compare(k_207)(t_243[2])[0]==='LT')?delLT_211(t_243):function(){var t__245=(isRedLeft_34(t_243)?rotateRight_23(t_243):t_243);return(eq_and_noRightNode_209(t__245)?RBEmpty_3:function(){var t_246=moveRedRightIfNeeded_41(t_246);return(eq_210(t_246)?delEQ_212(t_246):delGT_213(t_246))}())}())};throw "Non-exhaustive pattern match in case"}()};return(not(invariants_hold_17(t_208))?raise_4(Value.str("invariants broken before remove")):function(){var t__247=ensureBlackRoot_30(del_214(t_208));return(invariants_hold_17(t__247)?t__247:raise_4(Value.str("invariants broken after remove")))}())}()}}
47+function fold_45(f_248){return function(acc_249){return function(t_250){return function(){switch(t_250[0]){case"RBEmpty":return acc_249;case"RBNode":return fold_45(f_248)(f_248(t_250[2])(t_250[3])(fold_45(f_248)(acc_249)(t_250[4])))(t_250[5])};throw "Non-exhaustive pattern match in case"}()}}};return {empty:empty_5,lookup:lookup_20,member:member_21,insert:insert_31,singleton:singleton_32,remove:remove_44,fold:fold_45}}();Elm.main=function(){return Elm.Dict.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Dict module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>EQ, GT, LT, console.log, fst, snd</span>');document.body.innerHTML=Text.monospace(msg);throw e}}
core-js/Everything.jsdeleted−31
@@ -1,31 +0,0 @@
1−
2−Value.addListener(document, 'elm_log', function(e) { console.log(e.value); });
3−Value.addListener(document, 'elm_title', function(e) {document.title = e.value;});
4−Value.addListener(document, 'elm_redirect', function(e) {
5− if (e.value.length > 0) { window.location = e.value; }
6− });
7−
8−var includeGlobal = this;
9−(function() {
10− var include = function(library) {
11− for (var i in library) {
12− if (i === 'Internal') continue;
13− try {
14− includeGlobal[i] = library[i];
15− } catch (err) {
16− if (i === 'length') {
17− includeGlobal.execScript('var length;');
18− length = library[i];
19− continue;
20− }
21− }
22− }
23− };
24− include (Graphics.Element);
25− include (Graphics.Text);
26−
27− color = Element.color;
28− height = Element.height;
29− show = Value.show;
30−
31−}());
core-js/Set.jsnew file+3
@@ -0,0 +1,3 @@
1+try{if(Elm.Set)throw "Module name collision, 'Set' is already defined.";Elm.Set=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Dict instanceof Object))throw 'module not found'}catch(e){throw "Module 'Dict' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var Dict=Elm.Dict,empty_0=Dict.empty,remove_3=Dict.remove,member_4=Dict.member
2+function singleton_1(k_5){return Dict.singleton(k_5)(["Tuple0"])}
3+function insert_2(k_6){return Dict.insert(k_6)(["Tuple0"])};return {empty:empty_0,singleton:singleton_1,insert:insert_2,remove:remove_3,member:member_4}}();Elm.main=function(){return Elm.Set.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Set module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>Dict.empty, Dict.insert, Dict.member, Dict.remove, Dict.singleton</span>');document.body.innerHTML=Text.monospace(msg);throw e}}
elm/elm-runtime-0.4.5.js+678−898
@@ -4,79 +4,79 @@ var Guid = function() {
44 var guid = function() { counter += 1; return counter; };
55 return {guid : guid};
66}();
7−var Foreign = function() {
8− var JavaScript = function() {
9− function castJSBoolToBool(b) { return b; }
10− function castBoolToJSBool(b) { return b; }
7+var Elm = Elm || {};
8+Elm.JavaScript = function() {
9+ function castJSBoolToBool(b) { return b; }
10+ function castBoolToJSBool(b) { return b; }
1111
12− function castJSNumberToFloat(n) { return n; }
13− function castFloatToJSNumber(n) { return n; }
14−
15− function castJSNumberToInt(n) { return ~~n; }
16− function castIntToJSNumber(n) { return n; }
12+ function castJSNumberToFloat(n) { return n; }
13+ function castFloatToJSNumber(n) { return n; }
14+
15+ function castJSNumberToInt(n) { return ~~n; }
16+ function castIntToJSNumber(n) { return n; }
1717
18− function castJSElementToElement(w) {
19− return function(h) {
20− return function(node) {
21− return ["Element",Guid.guid(),
22− ["EExternalHtml",node],
23− w,h,1,Nothing,Nothing];
24− }
18+ function castJSElementToElement(w) {
19+ return function(h) {
20+ return function(node) {
21+ return ["Element",Guid.guid(),
22+ ["EExternalHtml",node],
23+ w,h,1,Nothing,Nothing];
2524 }
2625 }
27− function castElementToJSElement(elem) { return Render.render(elem); }
28−
29− function castJSArrayToList(arr) {
30− var list = ["Nil"];
31− for (var i = arr.length; i--; ) {
32− list = [ "Cons", arr[i], list ];
33− }
34− return list;
35− }
36− function castListToJSArray(list) {
37− var a = [];
38− while (list[0] === "Cons") {
39− a.push(list[1]);
40− list = list[2];
41− }
42− return a;
43− }
44−
45− var castJSStringToString = castJSArrayToList;
46− function castStringToJSString(str) {
47− if (typeof str === "string") return str;
48− return castListToJSArray(str).join('');
49− }
26+ }
27+ function castElementToJSElement(elem) { return Render.render(elem); }
5028
51− function fromTuple(t) { return t.slice(1); }
52− function toTuple(a) { return ["Tuple" + a.length].concat(a); }
53−
54− return {castJSBoolToBool:castJSBoolToBool,
55− castBoolToJSBool:castBoolToJSBool,
56− castJSNumberToFloat:castJSNumberToFloat,
57− castFloatToJSNumber:castFloatToJSNumber,
58− castJSNumberToInt:castJSNumberToInt,
59− castIntToJSNumber:castIntToJSNumber,
60− Experimental : {castJSElementToElement:castJSElementToElement,
61− castElementToJSElement:castElementToJSElement},
62− castJSArrayToList:castJSArrayToList,
63− castListToJSArray:castListToJSArray,
64− castJSStringToString:castJSStringToString,
65− castStringToJSString:castStringToJSString,
66− castTupleToJSTuple2:fromTuple,
67− castTupleToJSTuple3:fromTuple,
68− castTupleToJSTuple4:fromTuple,
69− castTupleToJSTuple5:fromTuple,
70− castJSTupleToTuple2:toTuple,
71− castJSTupleToTuple3:toTuple,
72− castJSTupleToTuple4:toTuple,
73− castJSTupleToTuple5:toTuple
74− };
75− }();
76− return {JavaScript:JavaScript};
29+ function castJSArrayToList(arr) {
30+ var list = ["Nil"];
31+ for (var i = arr.length; i--; ) {
32+ list = [ "Cons", arr[i], list ];
33+ }
34+ return list;
35+ }
36+ function castListToJSArray(list) {
37+ var a = [];
38+ while (list[0] === "Cons") {
39+ a.push(list[1]);
40+ list = list[2];
41+ }
42+ return a;
43+ }
44+
45+ var castJSStringToString = castJSArrayToList;
46+ function castStringToJSString(str) {
47+ if (typeof str === "string") return str;
48+ return castListToJSArray(str).join('');
49+ }
50+
51+ function fromTuple(t) { return t.slice(1); }
52+ function toTuple(a) { return ["Tuple" + a.length].concat(a); }
53+
54+ return {castJSBoolToBool:castJSBoolToBool,
55+ castBoolToJSBool:castBoolToJSBool,
56+ castJSNumberToFloat:castJSNumberToFloat,
57+ castFloatToJSNumber:castFloatToJSNumber,
58+ castJSNumberToInt:castJSNumberToInt,
59+ castIntToJSNumber:castIntToJSNumber,
60+ Experimental : {castJSElementToElement:castJSElementToElement,
61+ castElementToJSElement:castElementToJSElement},
62+ castJSArrayToList:castJSArrayToList,
63+ castListToJSArray:castListToJSArray,
64+ castJSStringToString:castJSStringToString,
65+ castStringToJSString:castStringToJSString,
66+ castTupleToJSTuple2:fromTuple,
67+ castTupleToJSTuple3:fromTuple,
68+ castTupleToJSTuple4:fromTuple,
69+ castTupleToJSTuple5:fromTuple,
70+ castJSTupleToTuple2:toTuple,
71+ castJSTupleToTuple3:toTuple,
72+ castJSTupleToTuple4:toTuple,
73+ castJSTupleToTuple5:toTuple
74+ };
7775}();
78−var ElmJSON = function() {
79− var JS = Foreign.JavaScript;
76+
77+var Elm = Elm || {};
78+Elm.JSON = function() {
79+ var JS = Elm.JavaScript;
8080 var empty = ['JSON',{}];
8181 function singleton(k) { return function(v) {
8282 var obj = {};
@@ -210,8 +210,6 @@ var ElmJSON = function() {
210210 JsonObject : JsonObject
211211 };
212212}();
213−
214−Foreign.JavaScript.JSON = ElmJSON;
215213var Value = function(){
216214
217215 var eq = function(x,y) {
@@ -346,7 +344,7 @@ var Value = function(){
346344
347345
348346 function groupForms(forms) {
349− forms = Foreign.JavaScript.castListToJSArray(forms);
347+ forms = Elm.JavaScript.castListToJSArray(forms);
350348 var groups = [];
351349 var arr = [];
352350 for (var i = forms.length; i--; ) {
@@ -403,7 +401,7 @@ var Value = function(){
403401 return "(JSON.fromList " + toString(ElmJSON.toList(v)) + ")";
404402 } else if (v[0] === "RBNode" || v[0] === "RBEmpty") {
405403 function cons(k){ return function(v) { return function(acc) { return ["Cons",["Tuple2",k,v],acc]; }; }; }
406− return "(Map.fromList " + toString(ElmCode.Map.fold(cons)(["Nil"])(v)) + ")";
404+ return "(Map.fromList " + toString(Elm.Dict.fold(cons)(["Nil"])(v)) + ")";
407405 } else {
408406 var output = "";
409407 for (var i = v.length; --i; ) {
@@ -443,6 +441,23 @@ var Value = function(){
443441 return out;
444442 };
445443
444+ function wrap(elem) {
445+ var p = Value.getSize(elem);
446+ return ["Element", Guid.guid(), ["EHtml",elem],
447+ p[0], p[1], 1, Nothing, Nothing];
448+ }
449+ var addListener = function() {
450+ if(document.addEventListener) {
451+ return function(element, event, handler) {
452+ element.addEventListener(event, handler, false);
453+ };
454+ } else {
455+ return function(element, event, handler) {
456+ element.attachEvent('on' + event, handler);
457+ };
458+ }
459+ }();
460+
446461 return {eq:eq,
447462 str:str,
448463 show:show,
@@ -454,8 +469,12 @@ var Value = function(){
454469 getTextSize : getTextSize,
455470 getSize : getSize,
456471 getExcess : getExcess,
457− groupForms : groupForms };
458−}();var List = function() {
472+ groupForms : groupForms,
473+ wrap : wrap,
474+ addListener : addListener
475+ };
476+}();var Elm = Elm || {};
477+Elm.List = function() {
459478
460479 var throwError = function(f) {
461480 throw "Function '" + f + "' expecting a list!";
@@ -936,10 +955,57 @@ var Value = function(){
936955 sort:sort,
937956 take:take,
938957 drop:drop};
939−}();
940−var Data = function() {
941−
942−var Char = function() {
958+}();try{if(Elm.Dict)throw "Module name collision, 'Dict' is already defined.";Elm.Dict=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Data.Maybe instanceof Object))throw 'module not found'}catch(e){throw "Module 'Data.Maybe' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var isJust=Elm.Data.Maybe.isJust,Red_0=["Red"],Black_1=["Black"]
959+function RBNode_2(a1){return function(a2){return function(a3){return function(a4){return function(a5){return ["RBNode",a1,a2,a3,a4,a5]}}}}};var RBEmpty_3=["RBEmpty"],raise_4=console.log,empty_5=RBEmpty_3
960+function equal_pathLen_6(t_46){return function(){function path_numBlacks_47(t_48){return function(){switch(t_48[0]){case"RBEmpty":return 1;case"RBNode":return function(){var bl_52=path_numBlacks_47(t_48[4]),br_53=path_numBlacks_47(t_48[5]);return((not(eq(bl_52,br_53))||(eq(bl_52,-1)||eq(br_53,-1)))?-1:(bl_52+(eq(t_48[1],Red_0)?0:1)))}()};throw "Non-exhaustive pattern match in case"}()};return not(eq(-1,path_numBlacks_47(t_46)))}()}
961+function rootBlack_7(t_54){return function(){switch(t_54[0]){case"RBEmpty":return true;case"RBNode":switch(t_54[1][0]){case"Black":return true};break};return false}()}
962+function redBlack_children_8(t_55){return function(){switch(t_55[0]){case"RBEmpty":return true;case"RBNode":switch(t_55[1][0]){case"Red":switch(t_55[4][0]){case"RBNode":switch(t_55[4][1][0]){case"Red":return false};break};switch(t_55[5][0]){case"RBNode":switch(t_55[5][1][0]){case"Red":return false};break};break};return(redBlack_children_8(t_55[4])&&redBlack_children_8(t_55[5]))};throw "Non-exhaustive pattern match in case"}()}
963+function findExtreme_9(f_58){return function(t_59){return function(){switch(t_59[0]){case"RBEmpty":return Nothing;case"RBNode":return function(){var case6=findExtreme_9(f_58)(f_58(["Tuple2",t_59[4],t_59[5]]));switch(case6[0]){case"Just":return Just(case6[1]);case"Nothing":return Just(t_59[2])};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
964+function findminRbt_10(t_65){return findExtreme_9(fst)(t_65)}
965+function findmaxRbt_11(t_66){return findExtreme_9(snd)(t_66)}
966+function optionRelation_12(f_67){return function(u_68){return function(xo_69){return function(yo_70){return function(){var case0=["Tuple2",xo_69,yo_70];switch(case0[0]){case"Tuple2":switch(case0[1][0]){case"Nothing":return u_68};switch(case0[2][0]){case"Nothing":return u_68};switch(case0[1][0]){case"Just":switch(case0[2][0]){case"Just":return f_67(case0[1][1])(case0[2][1])};break};break};throw "Non-exhaustive pattern match in case"}()}}}}
967+function olt_13(xo_73){return function(yo_74){return optionRelation_12(function(x_75){return function(y_76){return(compare(x_75)(y_76)[0]==='LT')}})(true)(xo_73)(yo_74)}}
968+function olte_14(xo_77){return function(yo_78){return optionRelation_12(function(x_79){return function(y_80){return function(){var ord=compare(x_79)(y_80)[0];return ord==='LT'||ord==='EQ'}()}})(true)(xo_77)(yo_78)}}
969+function ordered_15(t_81){return function(){switch(t_81[0]){case"RBEmpty":return true;case"RBNode":return function(){var Tuple2$lmaxrmin_87=["Tuple2",findmaxRbt_11(t_81[4]),findminRbt_10(t_81[5])],lmax_88=function(){switch(Tuple2$lmaxrmin_87[0]){case"Tuple2":return Tuple2$lmaxrmin_87[1]};throw "Non-exhaustive pattern match in case"}(),rmin_89=function(){switch(Tuple2$lmaxrmin_87[0]){case"Tuple2":return Tuple2$lmaxrmin_87[2]};throw "Non-exhaustive pattern match in case"}();return(olte_14(lmax_88)(Just(t_81[2]))&&(olte_14(Just(t_81[2]))(rmin_89)&&(ordered_15(t_81[4])&&ordered_15(t_81[5]))))}()};throw "Non-exhaustive pattern match in case"}()}
970+function leftLeaning_16(t_94){return function(){switch(t_94[0]){case"RBEmpty":return true;case"RBNode":switch(t_94[4][0]){case"RBEmpty":switch(t_94[5][0]){case"RBNode":switch(t_94[5][1][0]){case"Red":return false};break};break;case"RBNode":switch(t_94[4][1][0]){case"Black":switch(t_94[5][0]){case"RBNode":switch(t_94[5][1][0]){case"Red":return false};break};break};break};return(leftLeaning_16(t_94[4])&&leftLeaning_16(t_94[5]))};throw "Non-exhaustive pattern match in case"}()}
971+function invariants_hold_17(t_97){return(ordered_15(t_97)&&(rootBlack_7(t_97)&&(redBlack_children_8(t_97)&&(equal_pathLen_6(t_97)&&leftLeaning_16(t_97)))))}
972+function min_18(t_98){return function(){switch(t_98[0]){case"RBEmpty":return console.log(Value.str("(min RBEmpty) is not defined"));case"RBNode":switch(t_98[4][0]){case"RBEmpty":return ["Tuple2",t_98[2],t_98[3]]};return min_18(t_98[4])};throw "Non-exhaustive pattern match in case"}()}
973+function max_19(t_102){return function(){switch(t_102[0]){case"RBEmpty":return console.log(Value.str("(max RBEmpty) is not defined"));case"RBNode":switch(t_102[5][0]){case"RBEmpty":return ["Tuple2",t_102[2],t_102[3]]};return max_19(t_102[5])};throw "Non-exhaustive pattern match in case"}()}
974+function lookup_20(k_106){return function(t_107){return function(){switch(t_107[0]){case"RBEmpty":return Nothing;case"RBNode":return function(){var case6=compare(k_106)(t_107[2]);switch(case6[0]){case"EQ":return Just(t_107[3]);case"GT":return lookup_20(k_106)(t_107[5]);case"LT":return lookup_20(k_106)(t_107[4])};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
975+function member_21(k_112){return function(t_113){return isJust(lookup_20(k_112)(t_113))}}
976+function rotateLeft_22(t_114){return function(){switch(t_114[0]){case"RBNode":switch(t_114[5][0]){case"RBNode":return RBNode_2(t_114[1])(t_114[5][2])(t_114[5][3])(RBNode_2(Red_0)(t_114[2])(t_114[3])(t_114[4])(t_114[5][4]))(t_114[5][5])};break};return raise_4(Value.str("rotateLeft of a node without enough children"))}()}
977+function rotateRight_23(t_124){return function(){switch(t_124[0]){case"RBNode":switch(t_124[4][0]){case"RBNode":return RBNode_2(t_124[1])(t_124[4][2])(t_124[4][3])(t_124[4][4])(RBNode_2(Red_0)(t_124[2])(t_124[3])(t_124[4][5])(t_124[5]))};break};return raise_4(Value.str("rotateRight of a node without enough children"))}()}
978+function rotateLeftIfNeeded_24(t_134){return function(){switch(t_134[0]){case"RBNode":switch(t_134[5][0]){case"RBNode":switch(t_134[5][1][0]){case"Red":return rotateLeft_22(t_134)};break};break};return t_134}()}
979+function rotateRightIfNeeded_25(t_135){return function(){switch(t_135[0]){case"RBNode":switch(t_135[4][0]){case"RBNode":switch(t_135[4][1][0]){case"Red":switch(t_135[4][4][0]){case"RBNode":switch(t_135[4][4][1][0]){case"Red":return rotateRight_23(t_135)};break};break};break};break};return t_135}()}
980+function otherColor_26(c_136){return function(){switch(c_136[0]){case"Black":return Red_0;case"Red":return Black_1};throw "Non-exhaustive pattern match in case"}()}
981+function color_flip_27(t_137){return function(){switch(t_137[0]){case"RBNode":switch(t_137[4][0]){case"RBNode":switch(t_137[5][0]){case"RBNode":return RBNode_2(otherColor_26(t_137[1]))(t_137[2])(t_137[3])(RBNode_2(otherColor_26(t_137[4][1]))(t_137[4][2])(t_137[4][3])(t_137[4][4])(t_137[4][5]))(RBNode_2(otherColor_26(t_137[5][1]))(t_137[5][2])(t_137[5][3])(t_137[5][4])(t_137[5][5]))};break};break};return raise_4(Value.str("color_flip called on a RBEmpty or RBNode with a RBEmpty child"))}()}
982+function color_flipIfNeeded_28(t_151){return function(){switch(t_151[0]){case"RBNode":switch(t_151[4][0]){case"RBNode":switch(t_151[4][1][0]){case"Red":switch(t_151[5][0]){case"RBNode":switch(t_151[5][1][0]){case"Red":return color_flip_27(t_151)};break};break};break};break};return t_151}()}
983+function fixUp_29(t_152){return color_flipIfNeeded_28(rotateRightIfNeeded_25(rotateLeftIfNeeded_24(t_152)))}
984+function ensureBlackRoot_30(t_153){return function(){switch(t_153[0]){case"RBNode":switch(t_153[1][0]){case"Red":return RBNode_2(Black_1)(t_153[2])(t_153[3])(t_153[4])(t_153[5])};break};return t_153}()}
985+function insert_31(k_158){return function(v_159){return function(t_160){return function(){function ins_161(t_162){return function(){switch(t_162[0]){case"RBEmpty":return RBNode_2(Red_0)(k_158)(v_159)(RBEmpty_3)(RBEmpty_3);case"RBNode":return function(){var h_168=function(){var case6=compare(k_158)(t_162[2]);switch(case6[0]){case"EQ":return RBNode_2(t_162[1])(t_162[2])(v_159)(t_162[4])(t_162[5]);case"GT":return RBNode_2(t_162[1])(t_162[2])(t_162[3])(t_162[4])(ins_161(t_162[5]));case"LT":return RBNode_2(t_162[1])(t_162[2])(t_162[3])(ins_161(t_162[4]))(t_162[5])};throw "Non-exhaustive pattern match in case"}();return fixUp_29(h_168)}()};throw "Non-exhaustive pattern match in case"}()};return(not(invariants_hold_17(t_160))?raise_4(Value.str("invariants broken before insert")):function(){var new_t_169=ensureBlackRoot_30(ins_161(t_160));return(not(invariants_hold_17(new_t_169))?raise_4(Value.str("invariants broken after insert")):new_t_169)}())}()}}}
986+function singleton_32(k_170){return function(v_171){return insert_31(k_170)(v_171)(RBEmpty_3)}}
987+function isRed_33(t_172){return function(){switch(t_172[0]){case"RBNode":switch(t_172[1][0]){case"Red":return true};break};return false}()}
988+function isRedLeft_34(t_173){return function(){switch(t_173[0]){case"RBNode":switch(t_173[4][0]){case"RBNode":switch(t_173[4][1][0]){case"Red":return true};break};break};return false}()}
989+function isRedLeftLeft_35(t_174){return function(){switch(t_174[0]){case"RBNode":switch(t_174[4][0]){case"RBNode":switch(t_174[4][4][0]){case"RBNode":switch(t_174[4][4][1][0]){case"Red":return true};break};break};break};return false}()}
990+function isRedRight_36(t_175){return function(){switch(t_175[0]){case"RBNode":switch(t_175[5][0]){case"RBNode":switch(t_175[5][1][0]){case"Red":return true};break};break};return false}()}
991+function isRedRightLeft_37(t_176){return function(){switch(t_176[0]){case"RBNode":switch(t_176[5][0]){case"RBNode":switch(t_176[5][4][0]){case"RBNode":switch(t_176[5][4][1][0]){case"Red":return true};break};break};break};return false}()}
992+function moveRedLeft_38(t_177){return function(){var t__178=color_flip_27(t_177);return function(){switch(t__178[0]){case"RBNode":return function(){switch(t__178[5][0]){case"RBNode":switch(t__178[5][4][0]){case"RBNode":switch(t__178[5][4][1][0]){case"Red":return color_flip_27(rotateLeft_22(RBNode_2(t__178[1])(t__178[2])(t__178[3])(t__178[4])(rotateRight_23(t__178[5]))))};break};break};return t__178}()};return t__178}()}()}
993+function moveRedRight_39(t_184){return function(){var t__185=color_flip_27(t_184);return(isRedLeftLeft_35(t__185)?color_flip_27(rotateRight_23(t__185)):t__185)}()}
994+function moveRedLeftIfNeeded_40(t_186){return((not(isRedLeft_34(t_186))&&not(isRedLeftLeft_35(t_186)))?moveRedLeft_38(t_186):t_186)}
995+function moveRedRightIfNeeded_41(t_187){return((not(isRedRight_36(t_187))&&not(isRedRightLeft_37(t_187)))?moveRedRight_39(t_187):t_187)}
996+function deleteMin_42(t_188){return function(){function del_189(t_190){return function(){switch(t_190[0]){case"RBNode":switch(t_190[4][0]){case"RBEmpty":return RBEmpty_3};break};return function(){var t__191=moveRedLeftIfNeeded_40(t_190);return function(){switch(t__191[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return fixUp_29(RBNode_2(t__191[1])(t__191[2])(t__191[3])(del_189(t__191[4]))(t__191[5]))};throw "Non-exhaustive pattern match in case"}()}()}()};return ensureBlackRoot_30(del_189(t_188))}()}
997+function deleteMax_43(t_197){return function(){function del_198(t_199){return function(){var t__200=(isRedLeft_34(t_199)?rotateRight_23(t_199):t_199);return function(){switch(t__200[0]){case"RBNode":switch(t__200[5][0]){case"RBEmpty":return RBEmpty_3};break};return function(){var t___201=moveRedRightIfNeeded_41(t__200);return function(){switch(t___201[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return fixUp_29(RBNode_2(t___201[1])(t___201[2])(t___201[3])(t___201[4])(del_198(t___201[5])))};throw "Non-exhaustive pattern match in case"}()}()}()}()};return ensureBlackRoot_30(del_198(t_197))}()}
998+function remove_44(k_207){return function(t_208){return function(){function eq_and_noRightNode_209(t_215){return function(){switch(t_215[0]){case"RBNode":switch(t_215[5][0]){case"RBEmpty":return eq(k_207,t_215[2])};break};return false}()}
999+function eq_210(t_217){return function(){switch(t_217[0]){case"RBNode":return eq(k_207,t_217[2])};return false}()}
1000+function delLT_211(t_219){return function(){var t__220=moveRedLeftIfNeeded_40(t_219);return function(){switch(t__220[0]){case"RBEmpty":return raise_4(Value.str("delLT on RBEmpty"));case"RBNode":return fixUp_29(RBNode_2(t__220[1])(t__220[2])(t__220[3])(del_214(t__220[4]))(t__220[5]))};throw "Non-exhaustive pattern match in case"}()}()}
1001+function delEQ_212(t_226){return function(){switch(t_226[0]){case"RBEmpty":return raise_4(Value.str("delEQ called on a RBEmpty"));case"RBNode":return function(){var Tuple2$k_v__230=min_18(t_226[5]),k__231=function(){switch(Tuple2$k_v__230[0]){case"Tuple2":return Tuple2$k_v__230[1]};throw "Non-exhaustive pattern match in case"}(),v__232=function(){switch(Tuple2$k_v__230[0]){case"Tuple2":return Tuple2$k_v__230[2]};throw "Non-exhaustive pattern match in case"}();return fixUp_29(RBNode_2(t_226[1])(k__231)(v__232)(t_226[4])(deleteMin_42(t_226[5])))}()};throw "Non-exhaustive pattern match in case"}()}
1002+function delGT_213(t_237){return function(){switch(t_237[0]){case"RBEmpty":return raise_4(Value.str("delGT called on a RBEmpty"));case"RBNode":return fixUp_29(RBNode_2(t_237[1])(t_237[2])(t_237[3])(t_237[4])(del_214(t_237[5])))};throw "Non-exhaustive pattern match in case"}()}
1003+function del_214(t_243){return function(){switch(t_243[0]){case"RBEmpty":return RBEmpty_3;case"RBNode":return((compare(k_207)(t_243[2])[0]==='LT')?delLT_211(t_243):function(){var t__245=(isRedLeft_34(t_243)?rotateRight_23(t_243):t_243);return(eq_and_noRightNode_209(t__245)?RBEmpty_3:function(){var t_246=moveRedRightIfNeeded_41(t_246);return(eq_210(t_246)?delEQ_212(t_246):delGT_213(t_246))}())}())};throw "Non-exhaustive pattern match in case"}()};return(not(invariants_hold_17(t_208))?raise_4(Value.str("invariants broken before remove")):function(){var t__247=ensureBlackRoot_30(del_214(t_208));return(invariants_hold_17(t__247)?t__247:raise_4(Value.str("invariants broken after remove")))}())}()}}
1004+function fold_45(f_248){return function(acc_249){return function(t_250){return function(){switch(t_250[0]){case"RBEmpty":return acc_249;case"RBNode":return fold_45(f_248)(f_248(t_250[2])(t_250[3])(fold_45(f_248)(acc_249)(t_250[4])))(t_250[5])};throw "Non-exhaustive pattern match in case"}()}}};return {empty:empty_5,lookup:lookup_20,member:member_21,insert:insert_31,singleton:singleton_32,remove:remove_44,fold:fold_45}}();Elm.main=function(){return Elm.Dict.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Dict module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>EQ, GT, LT, console.log, fst, snd</span>');document.body.innerHTML=Text.monospace(msg);throw e}}try{if(Elm.Set)throw "Module name collision, 'Set' is already defined.";Elm.Set=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Dict instanceof Object))throw 'module not found'}catch(e){throw "Module 'Dict' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var Dict=Elm.Dict,empty_0=Dict.empty,remove_3=Dict.remove,member_4=Dict.member
1005+function singleton_1(k_5){return Dict.singleton(k_5)(["Tuple0"])}
1006+function insert_2(k_6){return Dict.insert(k_6)(["Tuple0"])};return {empty:empty_0,singleton:singleton_1,insert:insert_2,remove:remove_3,member:member_4}}();Elm.main=function(){return Elm.Set.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Set module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>Dict.empty, Dict.insert, Dict.member, Dict.remove, Dict.singleton</span>');document.body.innerHTML=Text.monospace(msg);throw e}}
1007+var Elm = Elm || {};
1008+Elm.Char = function() {
9431009 function isBetween(lo,hi) { return function(chr) {
9441010 var c = chr.charCodeAt(0);
9451011 return lo <= c && c <= hi;
@@ -963,7 +1029,8 @@ var Char = function() {
9631029 };
9641030}();
9651031
966−var Maybe = function() {
1032+var Elm = Elm || {};
1033+Elm.Maybe = function() {
9671034 function consMaybe(x) { return function(xs) {
9681035 if (x[0] === "Just") return ["Cons", x[1], xs];
9691036 return xs;
@@ -990,12 +1057,12 @@ var Maybe = function() {
9901057
9911058 return {Just : function(x) { return ["Just",x]; },
9921059 Nothing : ["Nothing"],
993− catMaybes : List.foldr(consMaybe)(["Nil"]),
1060+ catMaybes : Elm.List.foldr(consMaybe)(["Nil"]),
9941061 isJust : function(m) { return m[0] === "Just"; },
9951062 isNothing : function(m) { return m[0] === "Nothing"; },
9961063 fromMaybe : fromMaybe,
9971064 consMaybe : consMaybe,
998− mapMaybe : function(f) { return List.foldr(mapCons(f))(["Nil"]); },
1065+ mapMaybe : function(f) { return Elm.List.foldr(mapCons(f))(["Nil"]); },
9991066 maybe : maybe
10001067 };
10011068}();
@@ -1080,14 +1147,11 @@ var String = function() {
10801147 };
10811148}();
10821149*/
1083−return {String: {toText:Value.toText, properEscape:Value.properEscape},
1084− Char:Char,
1085− Maybe:Maybe,
1086− List:List
1087− };
1088−}();var ElmCode = ElmCode || {};
1089−ElmCode.Graphics = ElmCode.Graphics || {};
1090−ElmCode.Graphics.Color = function() {
1150+
1151+var String = {toText:Value.toText, properEscape:Value.properEscape};
1152+var Elm = Elm || {};
1153+Elm.Graphics = Elm.Graphics || {};
1154+Elm.Graphics.Color = function() {
10911155 function Color_0(a1) {
10921156 return function(a2) {
10931157 return function(a3) {
@@ -1123,6 +1187,8 @@ ElmCode.Graphics.Color = function() {
11231187}();
11241188var Collage = function() {
11251189
1190+var JS = Elm.JavaScript;
1191+
11261192function tracePoints(ctx,points) {
11271193 var i = points.length - 1;
11281194 if (i <= 0) return;
@@ -1132,19 +1198,19 @@ function tracePoints(ctx,points) {
11321198
11331199function solid(ctx,color,points) {
11341200 tracePoints(ctx,points);
1135− ctx.strokeStyle = ElmCode.Graphics.Color.extract(color);
1201+ ctx.strokeStyle = Elm.Graphics.Color.extract(color);
11361202 ctx.stroke();
11371203};
11381204
11391205function filled(ctx,color,points) {
11401206 tracePoints(ctx,points);
1141− ctx.fillStyle = ElmCode.Graphics.Color.extract(color);
1207+ ctx.fillStyle = Elm.Graphics.Color.extract(color);
11421208 ctx.fill();
11431209}
11441210
11451211function textured(redo,ctx,src,points) {
11461212 var img = new Image();
1147− img.src = Foreign.JavaScript.castStringToJSString(src);
1213+ img.src = JS.castStringToJSString(src);
11481214 img.onload = redo;
11491215
11501216 tracePoints(ctx,points);
@@ -1155,7 +1221,7 @@ function textured(redo,ctx,src,points) {
11551221function customLine(pattern,ctx,color,points) {
11561222 if (pattern.length === 0) { pattern = [8,4]; }
11571223 customLineHelp(ctx, pattern, points);
1158− ctx.strokeStyle = ElmCode.Graphics.Color.extract(color);
1224+ ctx.strokeStyle = Elm.Graphics.Color.extract(color);
11591225 ctx.stroke();
11601226};
11611227
@@ -1214,7 +1280,7 @@ function drawShape(redo,ctx,shapeStyle,color,points) {
12141280function drawImage(redo,ctx,w,h,src) {
12151281 var img = new Image();
12161282 img.onload = redo;
1217− img.src = Foreign.JavaScript.castStringToJSString(src);
1283+ img.src = JS.castStringToJSString(src);
12181284 ctx.drawImage(img,-w/2,-h/2,w,h);
12191285}
12201286
@@ -1427,9 +1493,10 @@ function insideShape(point,theta,scale,pos,points) {
14271493
14281494return {collage:collage, updateCollage:updateCollage, insideForm:insideForm};
14291495
1430−}();var ElmCode = ElmCode || {};
1431−ElmCode.Graphics = ElmCode.Graphics || {};
1432−ElmCode.Graphics.Element = function() {
1496+}();var Elm = Elm || {};
1497+Elm.Graphics = Elm.Graphics || {};
1498+Elm.Graphics.Element = function() {
1499+ var JS = Elm.JavaScript;
14331500 var DLeft_0 = ["DLeft"];
14341501 var DRight_1 = ["DRight"];
14351502 var DUp_2 = ["DUp"];
@@ -1479,17 +1546,17 @@ ElmCode.Graphics.Element = function() {
14791546 }
14801547 }
14811548 function EImage_40(a1) {
1482− return["EImage", Foreign.JavaScript.castStringToJSString(a1)]
1549+ return["EImage", JS.castStringToJSString(a1)]
14831550 }
14841551 function EVideo_41(a1) {
1485− return["EVideo", Foreign.JavaScript.castStringToJSString(a1)]
1552+ return["EVideo", JS.castStringToJSString(a1)]
14861553 }
14871554 function EFittedImage_42(a1) {
1488− return["EFittedImage", Foreign.JavaScript.castStringToJSString(a1)]
1555+ return["EFittedImage", JS.castStringToJSString(a1)]
14891556 }
14901557 function EFlow_43(a1) {
14911558 return function(a2) {
1492− return["EFlow", a1, Foreign.JavaScript.castListToJSArray(a2)]
1559+ return["EFlow", a1, JS.castListToJSArray(a2)]
14931560 }
14941561 }
14951562 function ECollage_44(a1) {
@@ -1509,19 +1576,19 @@ ElmCode.Graphics.Element = function() {
15091576 var Dotted_69 = ["Dotted"];
15101577 var Dashed_70 = ["Dashed"];
15111578 function Custom_71(a1) {
1512− return["Custom", Foreign.JavaScript.castListToJSArray(a1)]
1579+ return["Custom", JS.castListToJSArray(a1)]
15131580 }
15141581 var Filled_72 = ["Filled"];
15151582 var Outlined_73 = ["Outlined"];
15161583 function CustomOutline_74(a1) {
1517− return["CustomOutline", Foreign.JavaScript.castListToJSArray(a1)]
1584+ return["CustomOutline", JS.castListToJSArray(a1)]
15181585 }
15191586 function Line_75(a1) {
1520− return["Line", Foreign.JavaScript.castListToJSArray(a1)]
1587+ return["Line", JS.castListToJSArray(a1)]
15211588 }
15221589 function Shape_78(a1) {
15231590 return function(a2) {
1524− var points = Foreign.JavaScript.castListToJSArray(a1);
1591+ var points = JS.castListToJSArray(a1);
15251592 if (points.length > 0) { points.push(points[0]); }
15261593 return["Shape", points, a2];
15271594 }
@@ -1552,7 +1619,7 @@ ElmCode.Graphics.Element = function() {
15521619 function FImage_87(a1) {
15531620 return function(a2) {
15541621 return function(a3) {
1555− return["FImage", a1, a2, Foreign.JavaScript.castStringToJSString(a3)]
1622+ return["FImage", a1, a2, JS.castStringToJSString(a3)]
15561623 }
15571624 }
15581625 }
@@ -1647,7 +1714,7 @@ ElmCode.Graphics.Element = function() {
16471714 }
16481715 function link(lnk) {
16491716 return function(e) {
1650− return newElement_38(e[2], e[3], e[4], e[5], e[6], Just(Foreign.JavaScript.castStringToJSString(lnk)));
1717+ return newElement_38(e[2], e[3], e[4], e[5], e[6], Just(JS.castStringToJSString(lnk)));
16511718 }
16521719 }
16531720 function widthOf_52(e) { return ~~e[3]; }
@@ -1687,18 +1754,18 @@ ElmCode.Graphics.Element = function() {
16871754 }
16881755 }
16891756 function images(srcs) {
1690− var pics = Elm.Input(spacer_66(0)(0));
1691− var update = Elm.Lift(function(src) {
1692− src = Foreign.JavaScript.castStringToJSString(src);
1757+ var pics = Elm.Signal.constant(spacer_66(0)(0));
1758+ var update = Elm.Signal.lift(function(src) {
1759+ src = JS.castStringToJSString(src);
16931760 var img = new Image();
16941761 img.onload = function() {
16951762 Dispatcher.notify(pics.id,
16961763 image_57(this.width)(this.height)(src));
16971764 };
16981765 img.src = src;
1699− }, [srcs]);
1700− var combine = Elm.Lift(function(x) { return function(y) { return x; } },
1701− [pics,update]);
1766+ })(srcs);
1767+ function f(x) { return function(y) { return x; } }
1768+ var combine = Elm.Signal.lift2(f)(pics)(update);
17021769 return combine;
17031770 }
17041771 function video_58(w) {
@@ -1955,7 +2022,7 @@ var Text = function() {
19552022 };
19562023
19572024 var typeface = function(name) {
1958− name = Foreign.JavaScript.castStringToJSString(name);
2025+ name = Elm.JavaScript.castStringToJSString(name);
19592026 return addStyle('font-family', name);
19602027 };
19612028 var size = function(px) {
@@ -1966,7 +2033,7 @@ var Text = function() {
19662033 var italic = addStyle('font-style', 'italic');
19672034 var bold = addTag('b');
19682035 var color = function(c) {
1969− return addStyle('color', ElmCode.Graphics.Color.extract(c));
2036+ return addStyle('color', Elm.Graphics.Color.extract(c));
19702037 };
19712038 var underline = addStyle('text-decoration', 'underline');
19722039 var overline = addStyle('text-decoration', 'overline');
@@ -1990,6 +2057,10 @@ var Text = function() {
19902057 color : color,
19912058 link : link };
19922059}();
2060+
2061+var Elm = Elm || {};
2062+Elm.Graphics.Text = Text;
2063+
19932064var Render = function(){
19942065
19952066function newElement(elementType) {
@@ -2168,7 +2239,7 @@ function render(elem) {
21682239 e.style.height = (~~elem[4]) + 'px';
21692240 if (elem[5] !== 1) { e.style.opacity = elem[5]; }
21702241 if (elem[6][0] === "Just") {
2171− e.style.backgroundColor = ElmCode.Graphics.Color.extract(elem[6][1]);
2242+ e.style.backgroundColor = Elm.Graphics.Color.extract(elem[6][1]);
21722243 }
21732244 if (elem[7][0] === "Just") {
21742245 var a = newElement('a');
@@ -2254,7 +2325,7 @@ function update(node,curr,next) {
22542325 if (next[4] !== curr[4]) node.style.height = (~~next[4]) + 'px';
22552326 if (next[5] !== curr[5]) node.style.opacity = next[5];
22562327 if (next[6].length === 2) {
2257− var clr = ElmCode.Graphics.Color.extract(next[6][1]);
2328+ var clr = Elm.Graphics.Color.extract(next[6][1]);
22582329 if (clr !== node.style.backgroundColor) node.style.backgroundColor = clr;
22592330 }
22602331 if (next[7].length === 2) {
@@ -2266,133 +2337,148 @@ function update(node,curr,next) {
22662337return {render:render,update:update,addTo:addTo,newElement:newElement,flowWith:flowWith,goIn:goIn};
22672338
22682339}();
2269−var Elm = function() {
2270− var send = function(node, timestep, changed) {
2271− var kids = node.kids;
2272− for (var i = kids.length; i--; ) {
2273− kids[i].recv(timestep, changed, node.id);
2274− }
2275− };
2276− var input = function(base) {
2277− this.id = Guid.guid();
2278− this.value = base;
2279− this.kids = [];
2280− this.defaultNumberOfKids = 0;
2281− this.recv = function(timestep, eid, v) {
2282− var changed = eid === this.id;
2283− if (changed) { this.value = v; }
2284− send(this, timestep, changed);
2285− return changed;
2286− };
2287− Dispatcher.inputs.push(this);
2340+var Elm = Elm || {};
2341+Elm.Signal = function() {
2342+ var send = function(node, timestep, changed) {
2343+ var kids = node.kids;
2344+ for (var i = kids.length; i--; ) {
2345+ kids[i].recv(timestep, changed, node.id);
2346+ }
2347+ };
2348+ var input = function(base) {
2349+ this.id = Guid.guid();
2350+ this.value = base;
2351+ this.kids = [];
2352+ this.defaultNumberOfKids = 0;
2353+ this.recv = function(timestep, eid, v) {
2354+ var changed = eid === this.id;
2355+ if (changed) { this.value = v; }
2356+ send(this, timestep, changed);
2357+ return changed;
22882358 };
2289− var lift = function(func,args) {
2290− this.id = Guid.guid();
2291− this.value = null;
2292− this.kids = [];
2293− this.count = 0;
2294− this.changed = false;
2295−
2296− args.reverse();
2297− this.recalc = function() {
2298− var f = func;
2299− for (var i = args.length; i--; ) {
2300− f = f(args[i].value);
2301− }
2302− this.value = f;
2303− };
2304− this.recalc();
2305−
2306− this.recv = function(timestep, changed, parentID) {
2307− this.count += 1;
2308− if (changed) { this.changed = true; }
2309− if (this.count == args.length) {
2310− if (this.changed) { this.recalc() }
2311− send(this, timestep, this.changed);
2312− this.changed = false;
2313− this.count = 0;
2314− }
2315− };
2359+ Dispatcher.inputs.push(this);
2360+ };
2361+ var lift = function(func,args) {
2362+ this.id = Guid.guid();
2363+ this.value = null;
2364+ this.kids = [];
2365+ this.count = 0;
2366+ this.changed = false;
2367+
2368+ args.reverse();
2369+ this.recalc = function() {
2370+ var f = func;
23162371 for (var i = args.length; i--; ) {
2317− args[i].kids.push(this);
2372+ f = f(args[i].value);
23182373 }
2374+ this.value = f;
23192375 };
2320− var fold = function(func,base,baseIsFunc,input) {
2321− this.id = Guid.guid();
2322− this.value = baseIsFunc ? base(input.value) : base;
2323− this.kids = [];
2324− this.recv = function(timestep, changed, parentID) {
2325− if (changed) { this.value = func(input.value)(this.value); }
2326− send(this, timestep, changed);
2327− };
2328− input.kids.push(this);
2329− };
2330−
2331− var dropIf = function(pred,base,input) {
2332− this.id = Guid.guid();
2333− this.value = pred(input.value) ? base : input.value;
2334− this.kids = [];
2335− this.recv = function(timestep, changed, parentID) {
2336− var chng = changed && !pred(input.value);
2337− if (chng) { this.value = input.value; }
2338− send(this, timestep, chng);
2339− };
2340− input.kids.push(this);
2341− };
2342− var dropRepeats = function(input) {
2343− this.id = Guid.guid();
2344− this.value = input.value;
2345− this.kids = [];
2346− this.recv = function(timestep, changed, parentID) {
2347− var chng = changed && !eq(this.value,input.value);
2348− if (chng) { this.value = input.value; }
2349− send(this, timestep, chng);
2350− };
2351− input.kids.push(this);
2376+ this.recalc();
2377+
2378+ this.recv = function(timestep, changed, parentID) {
2379+ this.count += 1;
2380+ if (changed) { this.changed = true; }
2381+ if (this.count == args.length) {
2382+ if (this.changed) { this.recalc() }
2383+ send(this, timestep, this.changed);
2384+ this.changed = false;
2385+ this.count = 0;
2386+ }
23522387 };
2353−
2354− var dropWhen = function(s1) { return function(b) { return function(s2) {
2355− var pairs = new lift(function(x){return function(y){return [x,y];};},[s1,s2]);
2356− var dropped = new dropIf(function(p){return p[0];},[true,b],pairs);
2357− return new lift(function(p){return p[1];},[dropped]); }; };
2388+ for (var i = args.length; i--; ) {
2389+ args[i].kids.push(this);
2390+ }
2391+ };
2392+ var fold = function(func,base,baseIsFunc,input) {
2393+ this.id = Guid.guid();
2394+ this.value = baseIsFunc ? base(input.value) : base;
2395+ this.kids = [];
2396+ this.recv = function(timestep, changed, parentID) {
2397+ if (changed) { this.value = func(input.value)(this.value); }
2398+ send(this, timestep, changed);
23582399 };
2400+ input.kids.push(this);
2401+ };
23592402
2360− var sampleOn = function(s1,s2) {
2361− this.id = Guid.guid();
2362− this.value = s2.value;
2363− this.kids = [];
2364− this.count = 0;
2365− this.changed = false;
2366−
2367− this.recv = function(timestep, changed, parentID) {
2368− if (parentID === s1.id) this.changed = changed;
2369− this.count += 1;
2370− if (this.count == 2) {
2371− if (this.changed) { this.value = s2.value; }
2372− send(this, timestep, this.changed);
2373− this.count = 0;
2374− this.changed = false;
2375− }
2376− };
2377− s1.kids.push(this);
2378− s2.kids.push(this);
2403+ var dropIf = function(pred,base,input) {
2404+ this.id = Guid.guid();
2405+ this.value = pred(input.value) ? base : input.value;
2406+ this.kids = [];
2407+ this.recv = function(timestep, changed, parentID) {
2408+ var chng = changed && !pred(input.value);
2409+ if (chng) { this.value = input.value; }
2410+ send(this, timestep, chng);
23792411 };
2412+ input.kids.push(this);
2413+ };
2414+ var dropRepeats = function(input) {
2415+ this.id = Guid.guid();
2416+ this.value = input.value;
2417+ this.kids = [];
2418+ this.recv = function(timestep, changed, parentID) {
2419+ var chng = changed && !eq(this.value,input.value);
2420+ if (chng) { this.value = input.value; }
2421+ send(this, timestep, chng);
2422+ };
2423+ input.kids.push(this);
2424+ };
2425+
2426+ var dropWhen = function(s1) { return function(b) { return function(s2) {
2427+ var pairs = new lift(function(x){return function(y){return [x,y];};},[s1,s2]);
2428+ var dropped = new dropIf(function(p){return p[0];},[true,b],pairs);
2429+ return new lift(function(p){return p[1];},[dropped]); }; };
2430+ };
23802431
2381− return {Input: function(x) {return new input(x);},
2382− Lift: function(f,xs){return new lift(f,xs);},
2383− Fold: function(f,b,x){return new fold(f,b,false,x);},
2384− Fold1: function(f,b,x){return new fold(f,b,true,x);},
2385− keepIf : function(pred) { return function(base) { return function(sig) {
2386− return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },
2387− dropIf : function(pred) { return function(base) { return function(sig) {
2388− return new dropIf(pred,base,sig); }; }; },
2389− keepWhen : function(s) { return dropWhen(new lift(function(b){return !b;},[s])); },
2390− dropWhen : dropWhen,
2391− dropRepeats : function(s) { return new dropRepeats(s);},
2392− sampleOn : function(s1) { return function(s2) { return new sampleOn(s1,s2); }; }
2432+ var sampleOn = function(s1,s2) {
2433+ this.id = Guid.guid();
2434+ this.value = s2.value;
2435+ this.kids = [];
2436+ this.count = 0;
2437+ this.changed = false;
2438+
2439+ this.recv = function(timestep, changed, parentID) {
2440+ if (parentID === s1.id) this.changed = changed;
2441+ this.count += 1;
2442+ if (this.count == 2) {
2443+ if (this.changed) { this.value = s2.value; }
2444+ send(this, timestep, this.changed);
2445+ this.count = 0;
2446+ this.changed = false;
2447+ }
23932448 };
2449+ s1.kids.push(this);
2450+ s2.kids.push(this);
2451+ };
2452+
2453+ return {
2454+ constant : function(v) { return new input(v); },
2455+ lift : function(f){return function(e){return new lift(f,[e]);};},
2456+ lift2 : function(f) { return function(e1) { return function(e2) {
2457+ return new lift(f, [e1,e2]); }; }; },
2458+ lift3 : function(f) { return function(e1) { return function(e2) {
2459+ return function(e3){return new lift(f,[e1,e2,e3]);};};};},
2460+ lift4 : function(f) { return function(e1) { return function(e2) {
2461+ return function(e3) { return function(e4) {
2462+ return new lift(f, [e1,e2,e3,e4]); }; }; }; }; },
2463+ foldp : function(f) { return function(b) { return function(e) {
2464+ return new fold(f,b,false,e); }; }; },
2465+ foldp_ : function(f) { return function(b) { return function(e) {
2466+ return new fold(f,b,true,e); }; }; },
2467+ foldp1 : function(f) { return function(e) {
2468+ return new fold(f,function(x){return x;},true,e); }; },
2469+ count : function(sig) {
2470+ var incr = function(_){return function(c){return c+1;};};
2471+ return new fold(incr,0,false,sig) },
2472+ keepIf : function(pred) { return function(base) { return function(sig) {
2473+ return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },
2474+ dropIf : function(pred) { return function(base) { return function(sig) {
2475+ return new dropIf(pred,base,sig); }; }; },
2476+ keepWhen : function(s) { return dropWhen(new lift(function(b){return !b;},[s])); },
2477+ dropWhen : dropWhen,
2478+ dropRepeats : function(s) { return new dropRepeats(s);},
2479+ sampleOn : function(s1){return function(s2){return new sampleOn(s1,s2);};}
2480+ };
23942481}();
2395−
23962482var Dispatcher = function() {
23972483 var program = null;
23982484 var timestep = 0;
@@ -2400,9 +2486,9 @@ var Dispatcher = function() {
24002486 var currentElement = null;
24012487
24022488 var initialize = function() {
2403− program = ElmCode.main();
2489+ program = Elm.main();
24042490 if (!program.hasOwnProperty('recv')) {
2405− program = Elm.Input(program);
2491+ program = Elm.Signal.constant(program);
24062492 }
24072493
24082494 currentElement = program.value;
@@ -2414,12 +2500,12 @@ var Dispatcher = function() {
24142500 if (w !== window.innerWidth) {
24152501 Dispatcher.notify(Window.dimensions.id, Value.Tuple(w, window.innerHeight));
24162502 }
2417− program = Elm.Lift(function(value) {
2503+ program = Elm.Signal.lift(function(value) {
24182504 var content = document.getElementById('content');
24192505 Render.update(content.firstChild,currentElement,value);
24202506 currentElement = value;
24212507 return value;
2422− }, [program]);
2508+ })(program);
24232509 };
24242510 var notify = function(id, v) {
24252511 timestep += 1;
@@ -2451,374 +2537,325 @@ var Dispatcher = function() {
24512537 }
24522538
24532539 return {initialize:initialize, notify:notify, inputs:inputs};
2454−}();
2455−var Signal = function() {
2456− function wrap(elem) {
2457− var p = Value.getSize(elem);
2458− return ["Element", Guid.guid(), ["EHtml",elem], p[0], p[1], 1, Nothing, Nothing];
2459− }
2460− function toElmString(str) {
2461− var out = ["Nil"];
2462− for (var i = str.length; i--; ) {
2463− out = ["Cons", str[i], out];
2464− }
2465− return out;
2540+}();Elm.HTTP = function() {
2541+ var JS = Elm.JavaScript;
2542+ var toElmString = Elm.JavaScript.castJSStringToString;
2543+ function request(verb) { return function(url) { return function(data) {
2544+ return function(headers) {
2545+ return {0 : "Request",
2546+ length : 1,
2547+ verb : JS.castStringToJSString(verb),
2548+ url : JS.castStringToJSString(url),
2549+ data : data === null ? null : JS.castStringToJSString(data),
2550+ headers : headers }; }; }; };
24662551 }
2467− var addListener = function() {
2468− if(document.addEventListener) {
2469− return function(element, event, handler) {
2470− element.addEventListener(event, handler, false);
2471− };
2472− }
2473− else {
2474− return function(element, event, handler) {
2475− element.attachEvent('on' + event, handler);
2476− };
2477− }
2478− }();
2479−
2480− var Mouse = function() {
2481− var position = Elm.Input(Value.Tuple(0,0));
2482− position.defaultNumberOfKids = 2;
2483−
2484− var x = Elm.Lift(function(p){return p[1];},[position]);
2485− x.defaultNumberOfKids = 0;
2486− var y = Elm.Lift(function(p){return p[2];},[position]);
2487− y.defaultNumberOfKids = 0;
2552+ function get(url) { return request("GET")(url)(null)(["Nil"]); }
2553+ function post(url) { return function(data) {
2554+ return request("POST")(url)(data)(["Nil"]); }; }
24882555
2489− var isDown = Elm.Input(false);
2490− var isClicked = Elm.Input(false);
2491− var clicks = Elm.Input(Value.Tuple());
2492−
2493− function getXY(e) {
2494− var posx = 0;
2495− var posy = 0;
2496− if (!e) var e = window.event;
2497− if (e.pageX || e.pageY) {
2498− posx = e.pageX;
2499− posy = e.pageY;
2500− } else if (e.clientX || e.clientY) {
2501− posx = e.clientX + document.body.scrollLeft +
2502− document.documentElement.scrollLeft;
2503− posy = e.clientY + document.body.scrollTop +
2504− document.documentElement.scrollTop;
2505− }
2506− return Value.Tuple(posx, posy);
2556+ function sendReq(responses) { return function(req) {
2557+ Dispatcher.notify(responses.id,["Waiting"]);
2558+ var request = null;
2559+ if (window.XMLHttpRequest) {
2560+ request = new XMLHttpRequest();
2561+ } else if (window.ActiveXObject) {
2562+ request = new ActiveXObject("Microsoft.XMLHTTP");
25072563 }
2508−
2509− addListener(document, 'click', function(e) {
2510− var hasListener1 = Dispatcher.notify(isClicked.id, true);
2511− var hasListener2 = Dispatcher.notify(clicks.id, Value.Tuple());
2512− Dispatcher.notify(isClicked.id, false);
2513− if (!hasListener1 && !hasListener2)
2514− this.removeEventListener('click',arguments.callee,false);
2515− });
2516− addListener(document, 'mousedown', function(e) {
2517− var hasListener = Dispatcher.notify(isDown.id, true);
2518− if (!hasListener)
2519− this.removeEventListener('mousedown',arguments.callee,false);
2520− });
2521− addListener(document, 'mouseup', function(e) {
2522− var hasListener = Dispatcher.notify(isDown.id, false);
2523− if (!hasListener)
2524− this.removeEventListener('mouseup',arguments.callee,false);
2525− });
2526− addListener(document, 'mousemove', function(e) {
2527− var hasListener = Dispatcher.notify(position.id, getXY(e));
2528− if (!hasListener)
2529− this.removeEventListener('mousemove',arguments.callee,false);
2530− });
2531− var clickedOn = function(elem) {
2532− var node = Render.render(elem);
2533− var click = Elm.Input(false);
2534− addListener(node, 'click', function(e) {
2535− Dispatcher.notify(click.id, true);
2536− Dispatcher.notify(click.id, false);
2537− });
2538− return Value.Tuple(wrap(node), click);
2564+ request.onreadystatechange = function(e) {
2565+ if (request.readyState === 4) {
2566+ Dispatcher.notify(
2567+ responses.id,
2568+ request.status === 200
2569+ ? ["Success", toElmString(request.responseText)]
2570+ : ["Failure", request.status, toElmString(request.statusText)]);
2571+ }
25392572 };
2540− return {position: position,
2541− x:x,
2542− y:y,
2543− isClicked: isClicked,
2544− isDown: isDown,
2545− clicks: clicks,
2546− isClickedOn: clickedOn
2547− };
2548− }();
2549−
2550− var Time = function() {
2551− var every = function(t) {
2552− t *= 1000;
2553− var clock = Elm.Input(0);
2554− var time = 0;
2555− setInterval(function() {
2556− time += t;
2557− Dispatcher.notify(clock.id, time/1000);
2558− }, t);
2559− return clock;
2560− };
2561− var after = function(t) {
2562− t *= 1000;
2563− var thread = Elm.Input(false);
2564− setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);
2565− return thread;
2566− };
2567− var before = function(t) {
2568− t *= 1000;
2569− var thread = Elm.Input(true);
2570− setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);
2571− return thread;
2572− };
2573− return {every:every,after:after,before:before};
2574− }();
2573+ request.open(req.verb, req.url, true);
2574+ Elm.List.map(function(pair) {
2575+ request.setRequestHeader(
2576+ JS.castStringToJSString(pair[1]),
2577+ JS.castStringToJSString(pair[2]));
2578+ })(req.headers);
2579+ request.send(req.data);
2580+ return null;
2581+ };
2582+ }
25752583
2576− var Window = function() {
2577− var dimensions = Elm.Input(Value.Tuple(window.innerWidth,window.innerHeight));
2578− dimensions.defaultNumberOfKids = 2;
2584+ function send(requests) {
2585+ var responses = Elm.Signal.constant(["Waiting"]);
2586+ var sender = Elm.Signal.lift(sendReq(responses))(requests);
2587+ function f(x) { return function(y) { return x; } }
2588+ var combine = Elm.Signal.lift2(f)(responses)(sender);
2589+ return combine;
2590+ }
25792591
2580− var width = Elm.Lift(function(p){return p[1];},[dimensions]);
2581− width.defaultNumberOfKids = 0;
2582− var height = Elm.Lift(function(p){return p[2];},[dimensions]);
2583− height.defaultNumberOfKids = 0;
2592+ return {get : get,
2593+ post : post,
2594+ request : request,
2595+ send : send,
2596+ sendGet : function(urls){return send(Elm.Signal.lift(get)(urls));}
2597+ };
2598+}();
25842599
2585− addListener(window, 'resize', function(e) {
2586− var w = document.getElementById('widthChecker').offsetWidth;
2587− var hasListener = Dispatcher.notify(dimensions.id, Value.Tuple(w, window.innerHeight));
2588− if (!hasListener)
2589− this.removeEventListener('resize',arguments.callee,false);
2590− });
2591− return {dimensions:dimensions,width:width,height:height};
2592− }();
2600+Elm.Input = function() {
2601+ var JS = Elm.JavaScript;
2602+ var toElmString = Elm.JavaScript.castJSStringToString;
2603+ var newTextInput = function(elem, ghostText) {
2604+ elem.placeholder = JS.castStringToJSString(ghostText);
2605+ var str = Elm.Signal.constant(["Nil"]);
2606+ Value.addListener(elem, 'keyup', function(e) {
2607+ Dispatcher.notify(str.id, toElmString(elem.value));
2608+ elem.focus();
2609+ });
2610+ elem.style.padding = "1px";
2611+ return Value.Tuple(Value.wrap(elem), str);
2612+ };
2613+ var newElement = function(name) {
2614+ var e = document.createElement(name);
2615+ e.style.padding = "0";
2616+ e.style.margin = "0";
2617+ return e;
2618+ };
2619+ var textArea = function(cols) { return function(rows) {
2620+ var textarea = newElement('textarea');
2621+ textarea.rows = rows;
2622+ textarea.cols = cols;
2623+ return newTextInput(textarea, "");
2624+ };
2625+ };
2626+ var textField = function(ghostText) {
2627+ var field = newElement('input');
2628+ field.type = 'text';
2629+ return newTextInput(field, ghostText);
2630+ };
2631+ var password = function(ghostText) {
2632+ var field = newElement('input');
2633+ field.type = 'password';
2634+ return newTextInput(field, ghostText);
2635+ };
2636+ var checkbox = function(checked) {
2637+ var box = newElement('input');
2638+ box.type = 'checkbox';
2639+ box.checked = checked;
2640+ var status = Elm.Signal.constant(checked);
2641+ Value.addListener(box, 'change', function(e) {
2642+ Dispatcher.notify(status.id, box.checked);
2643+ });
2644+ return Value.Tuple(Value.wrap(box), status);
2645+ };
2646+ var dropDown = function(options) {
2647+ var slct = newElement('select');
2648+ var opts = [];
2649+ while (options[0] === "Cons") {
2650+ var opt = newElement('option');
2651+ var str = Text.toText(options[1][1]);
2652+ opt.value = str;
2653+ opt.innerHTML = str;
2654+ slct.appendChild(opt);
2655+ opts.push(options[1][2]);
2656+ options = options[2];
2657+ }
2658+ var status = Elm.Signal.constant(opts[0]);
2659+ Value.addListener(slct, 'change', function(e) {
2660+ Dispatcher.notify(status.id, opts[slct.selectedIndex]);
2661+ });
2662+ return Value.Tuple(Value.wrap(slct), status);
2663+ };
2664+ var stringDropDown = function(opts) {
2665+ return dropDown(Elm.List.map (function(x) {return Value.Tuple(x,x);}) (opts));
2666+ };
2667+ var button = function(name) {
2668+ var b = newElement('input');
2669+ b.type = "button";
2670+ b.value = JS.castStringToJSString(name);
2671+ var press = Elm.Signal.constant(false);
2672+ Value.addListener(b, 'click', function(e) {
2673+ Dispatcher.notify(press.id, true);
2674+ Dispatcher.notify(press.id, false);
2675+ });
2676+ return Value.Tuple(Value.wrap(b),press);
2677+ };
2678+ return {textArea:textArea, textField:textField,
2679+ password:password, checkbox:checkbox,
2680+ dropDown:dropDown, stringDropDown:stringDropDown,
2681+ button:button};
2682+}();
25932683
2594− var Keyboard = { Raw : function() {
2595− var keysDown = Elm.Input(["Nil"]);
2596− var charPressed = Elm.Input(["Nothing"]);
2597− function remove(x,xs) {
2684+Elm.Keyboard = { Raw : function() {
2685+ var keysDown = Elm.Signal.constant(["Nil"]);
2686+ var charPressed = Elm.Signal.constant(["Nothing"]);
2687+ function remove(x,xs) {
25982688 if (xs[0] === "Nil") return xs;
25992689 if (xs[1] === x) return xs[2];
26002690 return ["Cons", xs[1], remove(x,xs[2])];
2601− }
2602− function has(x,xs) {
2691+ }
2692+ function has(x,xs) {
26032693 while (xs[0] !== "Nil") {
2604− if (xs[1] === x) return true;
2605− xs = xs[2];
2694+ if (xs[1] === x) return true;
2695+ xs = xs[2];
26062696 }
26072697 return false;
2608− }
2609− addListener(document, 'keydown', function(e) {
2610− if (has(e.keyCode, keysDown.value)) return;
2611− var hasListener = Dispatcher.notify(keysDown.id, ["Cons", e.keyCode, keysDown.value]);
2612− if (!hasListener)
2698+ }
2699+ Value.addListener(document, 'keydown', function(e) {
2700+ if (has(e.keyCode, keysDown.value)) return;
2701+ var hasListener = Dispatcher.notify(keysDown.id, ["Cons", e.keyCode, keysDown.value]);
2702+ if (!hasListener)
26132703 this.removeEventListener('keydown',arguments.callee,false);
26142704 });
2615− addListener(document, 'keyup', function(e) {
2616− var codes = remove(e.keyCode, keysDown.value);
2617− var hasListener = Dispatcher.notify(keysDown.id, codes);
2618− if (!hasListener)
2705+ Value.addListener(document, 'keyup', function(e) {
2706+ var codes = remove(e.keyCode, keysDown.value);
2707+ var hasListener = Dispatcher.notify(keysDown.id, codes);
2708+ if (!hasListener)
26192709 this.removeEventListener('keyup',arguments.callee,false);
26202710 });
2621− addListener(window, 'blur', function(e) {
2622− var hasListener = Dispatcher.notify(keysDown.id, ["Nil"]);
2623− if (!hasListener)
2711+ Value.addListener(window, 'blur', function(e) {
2712+ var hasListener = Dispatcher.notify(keysDown.id, ["Nil"]);
2713+ if (!hasListener)
26242714 this.removeEventListener('blur',arguments.callee,false);
26252715 });
2626− addListener(document, 'keypress', function(e) {
2627− var hasListener = Dispatcher.notify(charPressed.id, ["Just",e.charCode || e.keyCode]);
2628− Dispatcher.notify(charPressed.id, ["Nothing"]);
2629− if (!hasListener)
2716+ Value.addListener(document, 'keypress', function(e) {
2717+ var hasListener = Dispatcher.notify(charPressed.id, ["Just",e.charCode || e.keyCode]);
2718+ Dispatcher.notify(charPressed.id, ["Nothing"]);
2719+ if (!hasListener)
26302720 this.removeEventListener('keypress',arguments.callee,false);
26312721 });
2632− return {keysDown:keysDown,
2633− charPressed:charPressed};
2634− }()
2635− };
2636−
2637− var HTTP = function() {
2638−
2639− function request(verb) { return function(url) { return function(data) {
2640− return function(headers) {
2641− return {0 : "Request",
2642− length : 1,
2643− verb : Foreign.JavaScript.castStringToJSString(verb),
2644− url : Foreign.JavaScript.castStringToJSString(url),
2645− data : data === null ? null : Foreign.JavaScript.castStringToJSString(data),
2646− headers : headers }; }; }; };
2647− }
2648− function get(url) { return request("GET")(url)(null)(["Nil"]); }
2649− function post(url) { return function(data) {
2650− return request("POST")(url)(data)(["Nil"]); }; }
2651−
2652− function sendReq(responses) { return function(req) {
2653− Dispatcher.notify(responses.id,["Waiting"]);
2654− var request = null;
2655− if (window.XMLHttpRequest) {
2656− request = new XMLHttpRequest();
2657− } else if (window.ActiveXObject) {
2658− request = new ActiveXObject("Microsoft.XMLHTTP");
2659− }
2660− request.onreadystatechange = function(e) {
2661− if (request.readyState === 4) {
2662− Dispatcher.notify(
2663− responses.id,
2664− request.status === 200
2665− ? ["Success", toElmString(request.responseText)]
2666− : ["Failure", request.status, toElmString(request.statusText)]);
2667− }
2668− };
2669− request.open(req.verb, req.url, true);
2670− List.map(function(pair) {
2671− request.setRequestHeader(
2672− Foreign.JavaScript.castStringToJSString(pair[1]),
2673− Foreign.JavaScript.castStringToJSString(pair[2]));
2674− })(req.headers);
2675− request.send(req.data);
2676− return null;
2677− };
2678− }
2679−
2680− function send(requests) {
2681− var responses = Elm.Input(["Waiting"]);
2682− var sender = Elm.Lift(sendReq(responses), [requests]);
2683− var combine = Elm.Lift(function(x){return function(y){return x;}},
2684− [responses,sender]);
2685− return combine;
2722+ return {keysDown:keysDown,
2723+ charPressed:charPressed};
2724+ }()
2725+};
2726+Elm.Mouse = function() {
2727+ var position = Elm.Signal.constant(Value.Tuple(0,0));
2728+ position.defaultNumberOfKids = 2;
2729+
2730+ var x = Elm.Signal.lift(function(p){return p[1];})(position);
2731+ x.defaultNumberOfKids = 0;
2732+ var y = Elm.Signal.lift(function(p){return p[2];})(position);
2733+ y.defaultNumberOfKids = 0;
2734+
2735+ var isDown = Elm.Signal.constant(false);
2736+ var isClicked = Elm.Signal.constant(false);
2737+ var clicks = Elm.Signal.constant(Value.Tuple());
2738+
2739+ function getXY(e) {
2740+ var posx = 0;
2741+ var posy = 0;
2742+ if (!e) var e = window.event;
2743+ if (e.pageX || e.pageY) {
2744+ posx = e.pageX;
2745+ posy = e.pageY;
2746+ } else if (e.clientX || e.clientY) {
2747+ posx = e.clientX + document.body.scrollLeft +
2748+ document.documentElement.scrollLeft;
2749+ posy = e.clientY + document.body.scrollTop +
2750+ document.documentElement.scrollTop;
26862751 }
2752+ return Value.Tuple(posx, posy);
2753+ }
26872754
2688− return {get : get,
2689− post : post,
2690− request : request,
2691− send : send,
2692− sendGet : function(urls){return send(Elm.Lift(get,[urls]));}
2693− };
2694− }();
2695− var Random = function() {
2696− var inRange = function(min) { return function(max) {
2697− return Elm.Input(Math.floor(Math.random() * (max-min+1)) + min);
2698− };
2699− };
2700− var randomize = function(min) { return function(max) { return function(signal) {
2701− return Elm.Lift(function(x) { return Math.floor(Math.random() * (max-min+1)) + min;},[signal]);
2702− };
2703− };
2704− };
2705− return { inRange:inRange, randomize:randomize };
2706− }();
2707− var Input = function() {
2708− var newTextInput = function(elem, ghostText) {
2709− elem.placeholder = Foreign.JavaScript.castStringToJSString(ghostText);
2710− var str = Elm.Input(["Nil"]);
2711− addListener(elem, 'keyup', function(e) {
2712− Dispatcher.notify(str.id, toElmString(elem.value));
2713− elem.focus();
2714− });
2715− elem.style.padding = "1px";
2716− return Value.Tuple(wrap(elem), str);
2717− };
2718− var newElement = function(name) {
2719− var e = document.createElement(name);
2720− e.style.padding = "0";
2721− e.style.margin = "0";
2722− return e;
2723− };
2724− var textArea = function(cols) { return function(rows) {
2725− var textarea = newElement('textarea');
2726− textarea.rows = rows;
2727− textarea.cols = cols;
2728− return newTextInput(textarea, "");
2755+ Value.addListener(document, 'click', function(e) {
2756+ var hasListener1 = Dispatcher.notify(isClicked.id, true);
2757+ var hasListener2 = Dispatcher.notify(clicks.id, Value.Tuple());
2758+ Dispatcher.notify(isClicked.id, false);
2759+ if (!hasListener1 && !hasListener2)
2760+ this.removeEventListener('click',arguments.callee,false);
2761+ });
2762+ Value.addListener(document, 'mousedown', function(e) {
2763+ var hasListener = Dispatcher.notify(isDown.id, true);
2764+ if (!hasListener)
2765+ this.removeEventListener('mousedown',arguments.callee,false);
2766+ });
2767+ Value.addListener(document, 'mouseup', function(e) {
2768+ var hasListener = Dispatcher.notify(isDown.id, false);
2769+ if (!hasListener)
2770+ this.removeEventListener('mouseup',arguments.callee,false);
2771+ });
2772+ Value.addListener(document, 'mousemove', function(e) {
2773+ var hasListener = Dispatcher.notify(position.id, getXY(e));
2774+ if (!hasListener)
2775+ this.removeEventListener('mousemove',arguments.callee,false);
2776+ });
2777+ var clickedOn = function(elem) {
2778+ var node = Render.render(elem);
2779+ var click = Elm.Signal.constant(false);
2780+ Value.addListener(node, 'click', function(e) {
2781+ Dispatcher.notify(click.id, true);
2782+ Dispatcher.notify(click.id, false);
2783+ });
2784+ return Value.Tuple(Value.wrap(node), click);
2785+ };
2786+ return {position: position,
2787+ x:x,
2788+ y:y,
2789+ isClicked: isClicked,
2790+ isDown: isDown,
2791+ clicks: clicks,
2792+ isClickedOn: clickedOn
27292793 };
2730− };
2731− var textField = function(ghostText) {
2732− var field = newElement('input');
2733− field.type = 'text';
2734− return newTextInput(field, ghostText);
2735− };
2736− var password = function(ghostText) {
2737− var field = newElement('input');
2738− field.type = 'password';
2739− return newTextInput(field, ghostText);
2740− };
2741− var checkbox = function(checked) {
2742− var box = newElement('input');
2743− box.type = 'checkbox';
2744− box.checked = checked;
2745− var status = Elm.Input(checked);
2746− addListener(box, 'change', function(e) {
2747− Dispatcher.notify(status.id, box.checked);
2748− });
2749− return Value.Tuple(wrap(box), status);
2750− };
2751− var dropDown = function(options) {
2752− var slct = newElement('select');
2753− var opts = [];
2754− while (options[0] === "Cons") {
2755− var opt = newElement('option');
2756− var str = Text.toText(options[1][1]);
2757− opt.value = str;
2758− opt.innerHTML = str;
2759− slct.appendChild(opt);
2760− opts.push(options[1][2]);
2761− options = options[2];
2762− }
2763− var status = Elm.Input(opts[0]);
2764− addListener(slct, 'change', function(e) {
2765− Dispatcher.notify(status.id, opts[slct.selectedIndex]);
2766− });
2767− return Value.Tuple(wrap(slct), status);
2768− };
2769− var stringDropDown = function(opts) {
2770− return dropDown(List.map (function(x) {return Value.Tuple(x,x);}) (opts));
2771− };
2772− var button = function(name) {
2773− var b = newElement('input');
2774− b.type = "button";
2775− b.value = Foreign.JavaScript.castStringToJSString(name);
2776− var press = Elm.Input(false);
2777− addListener(b, 'click', function(e) {
2778− Dispatcher.notify(press.id, true);
2779− Dispatcher.notify(press.id, false);
2780− });
2781− return Value.Tuple(wrap(b),press);
2782− };
2783− return {textArea:textArea, textField:textField,
2784− password:password, checkbox:checkbox,
2785− dropDown:dropDown, stringDropDown:stringDropDown,
2786− button:button};
27872794 }();
2788−
2789− return {addListener:addListener,
2790− Mouse:Mouse,
2791− Keyboard:Keyboard,
2792− Time:Time,
2793− Window:Window,
2794− HTTP:HTTP,
2795− Random:Random,
2796− Input:Input,
2797− constant : function(v) { return Elm.Input(v); },
2798− lift : function(f){return function(e){return Elm.Lift(f,[e]);};},
2799− lift2 : function(f) { return function(e1) { return function(e2) {
2800− return Elm.Lift(f, [e1,e2]); }; }; },
2801− lift3 : function(f) { return function(e1) { return function(e2) {
2802− return function(e3){return Elm.Lift(f,[e1,e2,e3]);};};};},
2803− lift4 : function(f) { return function(e1) { return function(e2) {
2804− return function(e3) { return function(e4) {
2805− return Elm.Lift(f, [e1,e2,e3,e4]); }; }; }; }; },
2806− foldp : function(f) { return function(b) { return function(e) {
2807− return Elm.Fold(f,b,e); }; }; },
2808− foldp_ : function(f) { return function(b) { return function(e) {
2809− return Elm.Fold1(f,b,e); }; }; },
2810− foldp1 : function(f) { return function(e) {
2811− return Elm.Fold1(f,function(x){return x;},e); }; },
2812− count : function(sig){return Elm.Fold(function(_){return function(c){return c+1;};},0,sig)},
2813− keepIf : Elm.keepIf,
2814− dropIf : Elm.dropIf,
2815− keepWhen : Elm.keepWhen,
2816− dropWhen : Elm.dropWhen,
2817− dropRepeats : Elm.dropRepeats,
2818− sampleOn : Elm.sampleOn
2795+Elm.Random = function() {
2796+ var inRange = function(min) { return function(max) {
2797+ return Elm.Signal.constant(Math.floor(Math.random() * (max-min+1)) + min);
2798+ };
2799+ };
2800+ var randomize = function(min) { return function(max) { return function(signal) {
2801+ function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
2802+ return Elm.Signal.lift(f)(signal);
2803+ };
2804+ };
28192805 };
2806+ return { inRange:inRange, randomize:randomize };
2807+}();Elm.Time = function() {
2808+ var every = function(t) {
2809+ t *= 1000;
2810+ var clock = Elm.Signal.constant(0);
2811+ var time = 0;
2812+ setInterval(function() {
2813+ time += t;
2814+ Dispatcher.notify(clock.id, time/1000);
2815+ }, t);
2816+ return clock;
2817+ };
2818+ var after = function(t) {
2819+ t *= 1000;
2820+ var thread = Elm.Signal.constant(false);
2821+ setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);
2822+ return thread;
2823+ };
2824+ var before = function(t) {
2825+ t *= 1000;
2826+ var thread = Elm.Signal.constant(true);
2827+ setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);
2828+ return thread;
2829+ };
2830+ return {every:every,after:after,before:before};
2831+}();Elm.Window = function() {
2832+ var dimensions = Elm.Signal.constant(Value.Tuple(window.innerWidth,
2833+ window.innerHeight));
2834+ dimensions.defaultNumberOfKids = 2;
2835+
2836+ var width = Elm.Signal.lift(function(p){return p[1];})(dimensions);
2837+ width.defaultNumberOfKids = 0;
2838+ var height = Elm.Signal.lift(function(p){return p[2];})(dimensions);
2839+ height.defaultNumberOfKids = 0;
2840+
2841+ Value.addListener(window, 'resize', function(e) {
2842+ var w = document.getElementById('widthChecker').offsetWidth;
2843+ var hasListener = Dispatcher.notify(dimensions.id,
2844+ Value.Tuple(w, window.innerHeight));
2845+ if (!hasListener)
2846+ this.removeEventListener('resize',arguments.callee,false);
2847+ });
2848+ return {dimensions:dimensions,width:width,height:height};
28202849}();
2821−var Prelude = function() {
2850+
2851+Value.addListener(document, 'elm_log', function(e) { console.log(e.value); });
2852+Value.addListener(document, 'elm_title', function(e) {document.title = e.value;});
2853+Value.addListener(document, 'elm_redirect', function(e) {
2854+ if (e.value.length > 0) { window.location = e.value; }
2855+ });
2856+
2857+var Elm = Elm || {};
2858+Elm.Prelude = function() {
28222859 var mod = function(x) { return function(y) {
28232860 var r = x % y;
28242861 var m = x==0 ? 0 : (y>0 ? (x>=0 ? r : r+y) : -mod(-x)(-y));
@@ -2845,7 +2882,8 @@ var Prelude = function() {
28452882
28462883 var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};
28472884
2848− return {id : function(x) { return x; },
2885+ return {eq : Value.eq,
2886+ id : function(x) { return x; },
28492887 not : function(b) { return !b; },
28502888 fst : function(p) { return p[1]; },
28512889 snd : function(p) { return p[2]; },
@@ -2881,336 +2919,78 @@ var Prelude = function() {
28812919 curry : curry,
28822920 uncurry : uncurry,
28832921 logBase : logBase,
2884− Just : Data.Maybe.Just,
2885− Nothing : Data.Maybe.Nothing,
2886− maybe : Data.Maybe.maybe,
2887− map : Data.List.map,
2888− filter : Data.List.filter,
2889− head : Data.List.head,
2890− tail : Data.List.tail,
2891− last : Data.List.last,
2892− length : Data.List.length,
2893− reverse : Data.List.reverse,
2894− foldr : Data.List.foldr,
2895− foldr1 : Data.List.foldr1,
2896− foldl : Data.List.foldl,
2897− foldl1 : Data.List.foldl1,
2898− and : Data.List.and,
2899− or : Data.List.or,
2900− all : Data.List.all,
2901− any : Data.List.any,
2902− sum : Data.List.sum,
2903− product : Data.List.product,
2904− concat : Data.List.concat,
2905− concatMap : Data.List.concatMap,
2906− maximum : Data.List.maximum,
2907− minimum : Data.List.minimum,
2908− scanl : Data.List.scanl,
2909− scanl1 : Data.List.scanl1,
2910− take : Data.List.take,
2911− drop : Data.List.drop,
2912− lift : Signal.lift,
2913− lift2 : Signal.lift2,
2914− lift3 : Signal.lift3,
2915− lift4 : Signal.lift4,
2916− foldp : Signal.foldp,
2917− foldp1 : Signal.foldp1,
2918− foldp_ : Signal.foldp_,
2919− constant : Signal.constant,
2920− count : Signal.count,
2921− keepIf : Signal.keepIf,
2922− dropIf : Signal.dropIf,
2923− keepWhen : Signal.keepWhen,
2924− dropWhen : Signal.dropWhen,
2925− dropRepeats : Signal.dropRepeats,
2926− sampleOn : Signal.sampleOn
2922+ Just : Elm.Maybe.Just,
2923+ Nothing : Elm.Maybe.Nothing,
2924+ maybe : Elm.Maybe.maybe,
2925+ map : Elm.List.map,
2926+ filter : Elm.List.filter,
2927+ head : Elm.List.head,
2928+ tail : Elm.List.tail,
2929+ last : Elm.List.last,
2930+ length : Elm.List.length,
2931+ reverse : Elm.List.reverse,
2932+ foldr : Elm.List.foldr,
2933+ foldr1 : Elm.List.foldr1,
2934+ foldl : Elm.List.foldl,
2935+ foldl1 : Elm.List.foldl1,
2936+ and : Elm.List.and,
2937+ or : Elm.List.or,
2938+ all : Elm.List.all,
2939+ any : Elm.List.any,
2940+ sum : Elm.List.sum,
2941+ product : Elm.List.product,
2942+ concat : Elm.List.concat,
2943+ concatMap : Elm.List.concatMap,
2944+ maximum : Elm.List.maximum,
2945+ minimum : Elm.List.minimum,
2946+ scanl : Elm.List.scanl,
2947+ scanl1 : Elm.List.scanl1,
2948+ take : Elm.List.take,
2949+ drop : Elm.List.drop,
2950+ zip : Elm.List.zip,
2951+ unzip : Elm.List.unzip,
2952+ lift : Elm.Signal.lift,
2953+ lift2 : Elm.Signal.lift2,
2954+ lift3 : Elm.Signal.lift3,
2955+ lift4 : Elm.Signal.lift4,
2956+ foldp : Elm.Signal.foldp,
2957+ foldp1 : Elm.Signal.foldp1,
2958+ foldp_ : Elm.Signal.foldp_,
2959+ constant : Elm.Signal.constant,
2960+ count : Elm.Signal.count,
2961+ keepIf : Elm.Signal.keepIf,
2962+ dropIf : Elm.Signal.dropIf,
2963+ keepWhen : Elm.Signal.keepWhen,
2964+ dropWhen : Elm.Signal.dropWhen,
2965+ dropRepeats : Elm.Signal.dropRepeats,
2966+ sampleOn : Elm.Signal.sampleOn
29272967 };
2928−}();
2929−var eq = Value.eq;
29302968
2931−Signal.addListener(document, 'elm_log', function(e) { console.log(e.value); });
2932−Signal.addListener(document, 'elm_title', function(e) { document.title = e.value; });
2933−Signal.addListener(document, 'elm_redirect', function(e) {
2934− if (e.value.length > 0) { window.location = e.value; }
2935− });
2969+}();
29362970
2937−var includeGlobal = this;
29382971(function() {
29392972 var include = function(library) {
29402973 for (var i in library) {
2941− if (i === 'Internal') continue;
2942− try {
2943− includeGlobal[i] = library[i];
2944− } catch (err) {
2945− if (i === 'length') {
2946− includeGlobal.execScript('var length;');
2947− length = library[i];
2948− continue;
2949− }
2950− }
2974+ Elm.Prelude[i] = library[i];
29512975 }
29522976 };
2953− var includeAs = function(name) { return function(library) {
2954− includeGlobal[name] = includeGlobal[name] || {};
2955− for (var i in library) {
2956− if (i === 'Internal') continue;
2957− includeGlobal[name][i] = library[i];
2958− }
2959− };
2960− };
2961− include (Element);
2962− include (Text);
2977+ include (Elm.Graphics.Color);
2978+ include (Elm.Graphics.Text);
2979+ include (Elm.Graphics.Element);
29632980
2964− color = Element.color;
2965− height = Element.height;
29662981 show = Value.show;
29672982
2968− include (ElmCode.Graphics.Color);
2969− include (ElmCode.Graphics.Element);
2970−
2971− includeAs ('Time') (Signal.Time);
2972− includeAs ('Mouse') (Signal.Mouse);
2973− includeAs ('Keyboard') (Signal.Keyboard);
2974− includeAs ('Window') (Signal.Window);
2975− includeAs ('HTTP') (Signal.HTTP);
2976− includeAs ('Input') (Signal.Input);
2977− includeAs ('Random') (Signal.Random);
2978−
29792983}());
2980−
2981−var ElmCode = ElmCode || {};
2982−ElmCode.Data = Data;
2983−ElmCode.Signal = Signal;
2984−ElmCode.Data.List = List;
2985−ElmCode.Foreign = Foreign;
2986−ElmCode.Prelude = Prelude;
2987−ElmCode.Graphics.Text = Text;
2988−try{
2989−
2990−if (ElmCode.Automaton) throw "Module name collision, 'Automaton' is already defined.";
2991−ElmCode.Automaton=function(){
2992−try{if (!(ElmCode.Prelude instanceof Object)) throw 'module not found'; } catch(e) {throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file.";}
2993−var hiddenVars=[];
2994−for(var i in ElmCode.Prelude){
2995−if (hiddenVars.indexOf(i) >= 0) continue;
2996−this[i]=ElmCode.Prelude[i];}
2997−try{if (!(ElmCode.Data.List instanceof Object)) throw 'module not found'; } catch(e) {throw "Module 'Data.List' is missing. Compile with --make flag or load missing module in a separate JavaScript file.";}
2998−var unzip=ElmCode.Data.List.unzip;
2999−function Automaton_0(a1){
3000−return ["Automaton",a1];};
3001−var Listen_9=["Listen"];
3002−var Ignore_10=["Ignore"];
3003−function DragFrom_11(a1){
3004−return ["DragFrom",a1];};
3005−var count_8=init_6(0)(function(__75){
3006−return function(c_76){
3007−return (1+c_76);};});
3008−function run_1(Automaton$m0_15){
3009−return function(input_16){
3010−return function(case2){
3011−var case0=case2;
3012−switch(case0[0]){
3013−case "Automaton":
3014−var case1=case0[1];
3015−return lift(fst)(foldp_(function(a_18){
3016−return function(Tuple2$bAutomaton$m_19){
3017−return function(case7){
3018−var case3=case7;
3019−switch(case3[0]){
3020−case "Tuple2":
3021−var case4=case3[1],case5=case3[2];
3022−switch(case5[0]){
3023−case "Automaton":
3024−var case6=case5[1];
3025−return case6(a_18);
3026−}break;
3027−}
3028−throw "Non-exhaustive pattern match in case";}(Tuple2$bAutomaton$m_19);};})(case1)(input_16));
3029−}
3030−throw "Non-exhaustive pattern match in case";}(Automaton$m0_15);};};
3031−function step_2(a_22){
3032−return function(Automaton$m_23){
3033−return function(case2){
3034−var case0=case2;
3035−switch(case0[0]){
3036−case "Automaton":
3037−var case1=case0[1];
3038−return case1(a_22);
3039−}
3040−throw "Non-exhaustive pattern match in case";}(Automaton$m_23);};};
3041−function composeAuto_3(a1_25){
3042−return function(a2_26){
3043−return function(){
3044−var Automaton$m1_27=a1_25;
3045−var m1_28=function(case2){
3046−var case0=case2;
3047−switch(case0[0]){
3048−case "Automaton":
3049−var case1=case0[1];
3050−return case1;
3051−}
3052−throw "Non-exhaustive pattern match in case";}(Automaton$m1_27);
3053−var Automaton$m2_29=a2_26;
3054−var m2_30=function(case5){
3055−var case3=case5;
3056−switch(case3[0]){
3057−case "Automaton":
3058−var case4=case3[1];
3059−return case4;
3060−}
3061−throw "Non-exhaustive pattern match in case";}(Automaton$m2_29);
3062−return Automaton_0(function(a_33){
3063−return function(){
3064−var Tuple2$bm1__34=m1_28(a_33);
3065−var b_35=function(case9){
3066−var case6=case9;
3067−switch(case6[0]){
3068−case "Tuple2":
3069−var case7=case6[1],case8=case6[2];
3070−return case7;
3071−}
3072−throw "Non-exhaustive pattern match in case";}(Tuple2$bm1__34);
3073−var m1__36=function(case13){
3074−var case10=case13;
3075−switch(case10[0]){
3076−case "Tuple2":
3077−var case11=case10[1],case12=case10[2];
3078−return case12;
3079−}
3080−throw "Non-exhaustive pattern match in case";}(Tuple2$bm1__34);
3081−return function(){
3082−var Tuple2$cm2__41=m2_30(b_35);
3083−var c_42=function(case17){
3084−var case14=case17;
3085−switch(case14[0]){
3086−case "Tuple2":
3087−var case15=case14[1],case16=case14[2];
3088−return case15;
3089−}
3090−throw "Non-exhaustive pattern match in case";}(Tuple2$cm2__41);
3091−var m2__43=function(case21){
3092−var case18=case21;
3093−switch(case18[0]){
3094−case "Tuple2":
3095−var case19=case18[1],case20=case18[2];
3096−return case20;
3097−}
3098−throw "Non-exhaustive pattern match in case";}(Tuple2$cm2__41);
3099−return ["Tuple2",c_42,composeAuto_3(m1__36)(m2__43)];}();}();});}();};};
3100−function combine_4(autos_48){
3101−return Automaton_0(function(a_49){
3102−return function(){
3103−var Tuple2$bsautos__50=unzip(map(function(Automaton$m_53){
3104−return function(case2){
3105−var case0=case2;
3106−switch(case0[0]){
3107−case "Automaton":
3108−var case1=case0[1];
3109−return case1(a_49);
3110−}
3111−throw "Non-exhaustive pattern match in case";}(Automaton$m_53);})(autos_48));
3112−var bs_51=function(case6){
3113−var case3=case6;
3114−switch(case3[0]){
3115−case "Tuple2":
3116−var case4=case3[1],case5=case3[2];
3117−return case4;
3118−}
3119−throw "Non-exhaustive pattern match in case";}(Tuple2$bsautos__50);
3120−var autos__52=function(case10){
3121−var case7=case10;
3122−switch(case7[0]){
3123−case "Tuple2":
3124−var case8=case7[1],case9=case7[2];
3125−return case9;
3126−}
3127−throw "Non-exhaustive pattern match in case";}(Tuple2$bsautos__50);
3128−return ["Tuple2",bs_51,combine_4(autos__52)];}();});};
3129−function pure_5(f_59){
3130−return Automaton_0(function(x_60){
3131−return ["Tuple2",f_59(x_60),pure_5(f_59)];});};
3132−function init_6(s_61){
3133−return function(step_62){
3134−return Automaton_0(function(a_63){
3135−return function(){
3136−var s__64=step_62(a_63)(s_61);
3137−return ["Tuple2",s__64,init_6(s__64)(step_62)];}();});};};
3138−function init__7(s_65){
3139−return function(step_66){
3140−return Automaton_0(function(a_67){
3141−return function(){
3142−var Tuple2$bs__68=step_66(a_67)(s_65);
3143−var b_69=function(case3){
3144−var case0=case3;
3145−switch(case0[0]){
3146−case "Tuple2":
3147−var case1=case0[1],case2=case0[2];
3148−return case1;
3149−}
3150−throw "Non-exhaustive pattern match in case";}(Tuple2$bs__68);
3151−var s__70=function(case7){
3152−var case4=case7;
3153−switch(case4[0]){
3154−case "Tuple2":
3155−var case5=case4[1],case6=case4[2];
3156−return case6;
3157−}
3158−throw "Non-exhaustive pattern match in case";}(Tuple2$bs__68);
3159−return ["Tuple2",b_69,init__7(s__70)(step_66)];}();});};};
3160−function vecSub_12(Tuple2$x1y1_77){
3161−return function(Tuple2$x2y2_78){
3162−return function(case3){
3163−var case0=case3;
3164−switch(case0[0]){
3165−case "Tuple2":
3166−var case1=case0[1],case2=case0[2];
3167−return function(case7){
3168−var case4=case7;
3169−switch(case4[0]){
3170−case "Tuple2":
3171−var case5=case4[1],case6=case4[2];
3172−return ["Tuple2",(case1-case5),(case2-case6)];
3173−}
3174−throw "Non-exhaustive pattern match in case";}(Tuple2$x2y2_78);
3175−}
3176−throw "Non-exhaustive pattern match in case";}(Tuple2$x1y1_77);};};
3177−function stepDrag_13(Tuple2$presspos_83){
3178−return function(Tuple2$dsform_84){
3179−return function(case3){
3180−var case0=case3;
3181−switch(case0[0]){
3182−case "Tuple2":
3183−var case1=case0[1],case2=case0[2];
3184−return function(case7){
3185−var case4=case7;
3186−switch(case4[0]){
3187−case "Tuple2":
3188−var case5=case4[1],case6=case4[2];
3189−return function(){
3190−function wrap_89(ds__90){
3191−return ["Tuple2",case6,["Tuple2",ds__90,case6]];};
3192−return function(case10){
3193−var case8=case10;
3194−switch(case8[0]){
3195−case "DragFrom":
3196−var case9=case8[1];
3197−return (case1?["Tuple2",uncurry(move)(vecSub_12(case2)(case9))(case6),["Tuple2",DragFrom_11(case9),case6]]:function(){
3198−var form__92=uncurry(move)(vecSub_12(case2)(case9))(case6);
3199−return ["Tuple2",form__92,["Tuple2",Listen_9,form__92]];}());
3200−case "Ignore":
3201−return wrap_89((case1?Ignore_10:Listen_9));
3202−case "Listen":
3203−return wrap_89((not(case1)?Listen_9:(isWithin(case2)(case6)?DragFrom_11(case2):Ignore_10)));
3204−}
3205−throw "Non-exhaustive pattern match in case";}(case5);}();
3206−}
3207−throw "Non-exhaustive pattern match in case";}(Tuple2$dsform_84);
3208−}
3209−throw "Non-exhaustive pattern match in case";}(Tuple2$presspos_83);};};
3210−function dragForm_14(form_93){
3211−return init__7(["Tuple2",Listen_9,form_93])(stepDrag_13);};
3212−return {Automaton:Automaton_0,run:run_1,step:step_2,composeAuto:composeAuto_3,combine:combine_4,pure:pure_5,init:init_6,init_:init__7,count:count_8,Listen:Listen_9,Ignore:Ignore_10,DragFrom:DragFrom_11,vecSub:vecSub_12,stepDrag:stepDrag_13,dragForm:dragForm_14};}();
3213−ElmCode.main=function(){
3214−return ElmCode.Automaton.main;};
3215−
3216−} catch (e) {ElmCode.main=function() {var msg = ('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>' + '<br/><span style="color:grey">Runtime Error in Automaton module:<br/>' + e + '<br/><br/>The problem may stem from an improper usage of:<br/>fst, unzip</span>');document.body.innerHTML = Text.monospace(msg);throw e;};}
2984+try{if(Elm.Automaton)throw "Module name collision, 'Automaton' is already defined.";Elm.Automaton=function(){try{if(!(Elm.Prelude instanceof Object))throw 'module not found'}catch(e){throw "Module 'Prelude' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var hiddenVars=[];for(var i in Elm.Prelude){if(hiddenVars.indexOf(i)>=0)continue;this[i]=Elm.Prelude[i]};try{if(!(Elm.Data.List instanceof Object))throw 'module not found'}catch(e){throw "Module 'Data.List' is missing. Compile with --make flag or load missing module in a separate JavaScript file."};var unzip=Elm.Data.List.unzip
2985+function Automaton_0(a1){return ["Automaton",a1]};var Listen_9=["Listen"],Ignore_10=["Ignore"]
2986+function DragFrom_11(a1){return ["DragFrom",a1]};var count_8=init_6(0)(function(__75){return function(c_76){return(1+c_76)}})
2987+function run_1(Automaton$m0_15){return function(input_16){return function(){switch(Automaton$m0_15[0]){case"Automaton":return lift(fst)(foldp_(function(a_18){return function(Tuple2$bAutomaton$m_19){return function(){switch(Tuple2$bAutomaton$m_19[0]){case"Tuple2":switch(Tuple2$bAutomaton$m_19[2][0]){case"Automaton":return Tuple2$bAutomaton$m_19[2][1](a_18)};break};throw "Non-exhaustive pattern match in case"}()}})(Automaton$m0_15[1])(input_16))};throw "Non-exhaustive pattern match in case"}()}}
2988+function step_2(a_22){return function(Automaton$m_23){return function(){switch(Automaton$m_23[0]){case"Automaton":return Automaton$m_23[1](a_22)};throw "Non-exhaustive pattern match in case"}()}}
2989+function composeAuto_3(a1_25){return function(a2_26){return function(){var Automaton$m1_27=a1_25,m1_28=function(){switch(Automaton$m1_27[0]){case"Automaton":return Automaton$m1_27[1]};throw "Non-exhaustive pattern match in case"}(),Automaton$m2_29=a2_26,m2_30=function(){switch(Automaton$m2_29[0]){case"Automaton":return Automaton$m2_29[1]};throw "Non-exhaustive pattern match in case"}();return Automaton_0(function(a_33){return function(){var Tuple2$bm1__34=m1_28(a_33),b_35=function(){switch(Tuple2$bm1__34[0]){case"Tuple2":return Tuple2$bm1__34[1]};throw "Non-exhaustive pattern match in case"}(),m1__36=function(){switch(Tuple2$bm1__34[0]){case"Tuple2":return Tuple2$bm1__34[2]};throw "Non-exhaustive pattern match in case"}();return function(){var Tuple2$cm2__41=m2_30(b_35),c_42=function(){switch(Tuple2$cm2__41[0]){case"Tuple2":return Tuple2$cm2__41[1]};throw "Non-exhaustive pattern match in case"}(),m2__43=function(){switch(Tuple2$cm2__41[0]){case"Tuple2":return Tuple2$cm2__41[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",c_42,composeAuto_3(m1__36)(m2__43)]}()}()})}()}}
2990+function combine_4(autos_48){return Automaton_0(function(a_49){return function(){var Tuple2$bsautos__50=unzip(map(function(Automaton$m_53){return function(){switch(Automaton$m_53[0]){case"Automaton":return Automaton$m_53[1](a_49)};throw "Non-exhaustive pattern match in case"}()})(autos_48)),bs_51=function(){switch(Tuple2$bsautos__50[0]){case"Tuple2":return Tuple2$bsautos__50[1]};throw "Non-exhaustive pattern match in case"}(),autos__52=function(){switch(Tuple2$bsautos__50[0]){case"Tuple2":return Tuple2$bsautos__50[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",bs_51,combine_4(autos__52)]}()})}
2991+function pure_5(f_59){return Automaton_0(function(x_60){return ["Tuple2",f_59(x_60),pure_5(f_59)]})}
2992+function init_6(s_61){return function(step_62){return Automaton_0(function(a_63){return function(){var s__64=step_62(a_63)(s_61);return ["Tuple2",s__64,init_6(s__64)(step_62)]}()})}}
2993+function init__7(s_65){return function(step_66){return Automaton_0(function(a_67){return function(){var Tuple2$bs__68=step_66(a_67)(s_65),b_69=function(){switch(Tuple2$bs__68[0]){case"Tuple2":return Tuple2$bs__68[1]};throw "Non-exhaustive pattern match in case"}(),s__70=function(){switch(Tuple2$bs__68[0]){case"Tuple2":return Tuple2$bs__68[2]};throw "Non-exhaustive pattern match in case"}();return ["Tuple2",b_69,init__7(s__70)(step_66)]}()})}}
2994+function vecSub_12(Tuple2$x1y1_77){return function(Tuple2$x2y2_78){return function(){switch(Tuple2$x1y1_77[0]){case"Tuple2":return function(){switch(Tuple2$x2y2_78[0]){case"Tuple2":return ["Tuple2",(Tuple2$x1y1_77[1]-Tuple2$x2y2_78[1]),(Tuple2$x1y1_77[2]-Tuple2$x2y2_78[2])]};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
2995+function stepDrag_13(Tuple2$presspos_83){return function(Tuple2$dsform_84){return function(){switch(Tuple2$presspos_83[0]){case"Tuple2":return function(){switch(Tuple2$dsform_84[0]){case"Tuple2":return function(){function wrap_89(ds__90){return ["Tuple2",Tuple2$dsform_84[2],["Tuple2",ds__90,Tuple2$dsform_84[2]]]};return function(){switch(Tuple2$dsform_84[1][0]){case"DragFrom":return(Tuple2$presspos_83[1]?["Tuple2",uncurry(move)(vecSub_12(Tuple2$presspos_83[2])(Tuple2$dsform_84[1][1]))(Tuple2$dsform_84[2]),["Tuple2",DragFrom_11(Tuple2$dsform_84[1][1]),Tuple2$dsform_84[2]]]:function(){var form__92=uncurry(move)(vecSub_12(Tuple2$presspos_83[2])(Tuple2$dsform_84[1][1]))(Tuple2$dsform_84[2]);return ["Tuple2",form__92,["Tuple2",Listen_9,form__92]]}());case"Ignore":return wrap_89((Tuple2$presspos_83[1]?Ignore_10:Listen_9));case"Listen":return wrap_89((not(Tuple2$presspos_83[1])?Listen_9:(isWithin(Tuple2$presspos_83[2])(Tuple2$dsform_84[2])?DragFrom_11(Tuple2$presspos_83[2]):Ignore_10)))};throw "Non-exhaustive pattern match in case"}()}()};throw "Non-exhaustive pattern match in case"}()};throw "Non-exhaustive pattern match in case"}()}}
2996+function dragForm_14(form_93){return init__7(["Tuple2",Listen_9,form_93])(stepDrag_13)};return {Automaton:Automaton_0,run:run_1,step:step_2,composeAuto:composeAuto_3,combine:combine_4,pure:pure_5,init:init_6,init_:init__7,count:count_8,Listen:Listen_9,Ignore:Ignore_10,DragFrom:DragFrom_11,vecSub:vecSub_12,stepDrag:stepDrag_13,dragForm:dragForm_14}}();Elm.main=function(){return Elm.Automaton.main}}catch(e){Elm.main=function(){var msg=('<br/><h2>Your browser may not be supported. Are you using a modern browser?</h2>'+'<br/><span style="color:grey">Runtime Error in Automaton module:<br/>'+e+'<br/><br/>The problem may stem from an improper usage of:<br/>fst, unzip</span>');document.body.innerHTML=Text.monospace(msg);throw e}}