Elm 0.3.6.1 → 0.3.6.2
raw patch · 4 files changed
+71/−2281 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Elm.cabal +2/−2
- elm-runtime-0.3.6.1.js +0/−2277
- elm-runtime-0.3.6.2.js +67/−0
- src/Compiler.hs +2/−2
Elm.cabal view
@@ -1,6 +1,6 @@ Name: Elm-Version: 0.3.6.1+Version: 0.3.6.2 Synopsis: The Elm language module. Description: Elm aims to make client-side web-development more pleasant. It is a statically/strongly typed, functional reactive@@ -22,7 +22,7 @@ Build-type: Simple Extra-source-files: changelog.txt-Data-files: elm-runtime-0.3.6.1.js+Data-files: elm-runtime-0.3.6.2.js Cabal-version: >=1.8 source-repository head
− elm-runtime-0.3.6.1.js
@@ -1,2277 +0,0 @@--var Guid = function() {- var counter = 0;- var guid = function() { counter += 1; return counter; };- return {guid : guid};-}();-var Foreign = function() {- var JavaScript = function() {- function castJSBoolToBool(b) { return b; }- function castBoolToJSBool(b) { return b; }-- function castJSNumberToFloat(n) { return n; }- function castFloatToJSNumber(n) { return n; }-- function castJSNumberToInt(n) { return ~~n; }- function castIntToJSNumber(n) { return n; }-- function castJSElementToElement(w) { return Element.jsElement(w); }- function castElementToJSElement(elem) { return elem; }-- function castJSArrayToList(arr) {- var list = ["Nil"];- for (var i = arr.length; i--; ) {- list = [ "Cons", arr[i], list ];- }- return list;- }- function castListToJSArray(list) {- var a = [];- while (list[0] === "Cons") {- a.push(list[1]);- list = list[2];- }- return a;- }-- var castJSStringToString = castJSArrayToList;- function castStringToJSString(str) {- if (typeof str === "string") return str;- return castListToJSArray(str).join('');- }-- function fromTuple(t) { return t.slice(1); }- function toTuple(a) { return ["Tuple" + a.length].concat(a); }- - return {castJSBoolToBool:castJSBoolToBool,- castBoolToJSBool:castBoolToJSBool,- castJSNumberToFloat:castJSNumberToFloat,- castFloatToJSNumber:castFloatToJSNumber,- castJSNumberToInt:castJSNumberToInt,- castIntToJSNumber:castIntToJSNumber,- Experimental : {castJSElementToElement:castJSElementToElement,- castElementToJSElement:castElementToJSElement},- castJSArrayToList:castJSArrayToList,- castListToJSArray:castListToJSArray,- castJSStringToString:castJSStringToString,- castStringToJSString:castStringToJSString,- castTupleToJSTuple2:fromTuple,- castTupleToJSTuple3:fromTuple,- castTupleToJSTuple4:fromTuple,- castTupleToJSTuple5:fromTuple,- castJSTupleToTuple2:toTuple,- castJSTupleToTuple3:toTuple,- castJSTupleToTuple4:toTuple,- castJSTupleToTuple5:toTuple- };- }();- return {JavaScript:JavaScript};-}(); -var ElmJSON = function() { - var JS = Foreign.JavaScript; - var empty = ['JSON',{}]; - function singleton(k) { return function(v) { - var obj = {}; - obj[JS.castStringToJSString(k)] = v; - return ['JSON', obj ]; - }; - } - function insert(k) { return function(v) { return function(inObj) { - var obj = inObj[1]; - var outObj = {}; - for (var i in obj) { - outObj[i] = obj[i]; - } - outObj[JS.castStringToJSString(k)] = v; - return ['JSON', outObj ]; - }; - }; - } - function lookup(key) { return function(obj) { - var k = JS.castStringToJSString(key); - return obj[1].hasOwnProperty(k) ? Just(obj[1][k]) : Nothing ; - }; - } - function lookupWithDefault(base) { return function(key) { return function(obj) { - var k = JS.castStringToJSString(key); - return obj[1].hasOwnProperty(k) ? obj[1][k] : base ; - }; - }; - } - function remove(k) { return function(inObj) { - var obj = inObj[1]; - var outObj = {}; - for (var i in obj) { - outObj[i] = obj[i]; - } - delete outObj[JS.castStringToJSString(k)]; - return ['JSON', outObj]; - }; - } - - function JsonString(v) { return [ "JsonString", v ]; } - function JsonNumber(v) { return [ "JsonNumber", v ]; } - function JsonBool(v) { return [ "JsonBool", v ]; } - var JsonNull = [ "JsonNull" ]; - function JsonArray(v) { return [ "JsonArray", v ]; } - function JsonObject(v) { return [ "JsonObject", v ]; } - - function toList(json) { - var obj = json[1]; - var arr = []; - for (var i in obj) { - arr.push(Value.Tuple(JS.castJSStringToString(i), obj[i])); - } - return JS.castJSArrayToList(arr); - } - function fromList(list) { - var arr = JS.castListToJSArray(list); - var obj = {}; - for (var i = arr.length; i--; ) { - obj[JS.castStringToJSString(arr[i][1])] = arr[i][2]; - } - return [ "JSON", obj ]; - } - - function toPrettyJSString(sep) { return function (obj) { - function fromValue(v) { - switch (v[0]) { - case 'JsonNull' : return null; - case 'JsonString' : return JS.castStringToJSString(v[1]); - case 'JsonObject' : - var o = {}; - var from = v[1][1]; - for (var i in from) { - o[i] = fromValue(from[i]); - } - return o; - case 'JsonArray' : - var a = JS.castListToJSArray(v[1]); - for (var i = a.length; i--; ) { - a[i] = fromValue(a[i]); - } - return a; - default : - return v[1]; - } - } - return JSON.stringify(fromValue([ 'JsonObject', obj ]), null, JS.castStringToJSString(sep)); - }; - } - function fromJSString(str) { - var obj = JSON.parse(str); - function toValue(v) { - switch (typeof v) { - case 'string' : return [ "JsonString", JS.castJSStringToString(v) ]; - case 'number' : return [ "JsonNumber", JS.castJSNumberToFloat(v) ]; - case 'boolean' : return [ "JsonBool", JS.castJSBoolToBool(v) ]; - case 'object' : - if (v === null) return [ "JsonNull" ]; - for (var i in v) { - v[i] = toValue(v[i]); - } - if (v instanceof Array) return [ "JsonArray", JS.castJSArrayToList(v) ]; - return [ "JsonObject", [ "JSON", v ] ]; - } - } - for (var i in obj) { - obj[i] = toValue(obj[i]); - } - return ['JSON',obj]; - } - return {empty : empty, - singleton : singleton, - insert : insert, - lookup : lookup, - findWithDefault : lookupWithDefault, - remove : remove, - toPrettyJSString : toPrettyJSString, - toJSString : toPrettyJSString(''), - fromJSString : fromJSString, - toPrettyString : function(sep) { return function(v) { - return JS.castJSStringToString(toPrettyJSString(sep)(v)); }; }, - toString : function(v) { return JS.castJSStringToString(toPrettyJSString('')(v)); }, - fromString : function(v) { return fromJSString(JS.castStringToJSString(v)); }, - toList : toList, - fromList : fromList, - JsonString : JsonString, - JsonNumber : JsonNumber, - JsonBool : JsonBool, - JsonNull : JsonNull, - JsonArray : JsonArray, - JsonObject : JsonObject - }; -}(); - -Foreign.JavaScript.JSON = ElmJSON;-var Value = function(){-- var eq = function(x,y) {- if (typeof x === "object") {- if (x === y) return true;- if (x.length !== y.length) return false;- for (var i = x.length; i--; ) {- if (!eq(x[i],y[i])) return false;- }- return true;- }- return x === y;- };-- var Tuple = function() {- var len = arguments.length;- var arr = new Array(len+1);- arr[0] = "Tuple" + arguments.length;- for (var i = len; i--; ) {- arr[i+1] = arguments[i];- }- return arr;- };-- var listToArray = function(list) {- var arr = [];- while (list[0] === "Cons") {- arr.push(list[1]);- list = list[2];- }- return arr;- };-- function makeSpaces(s) {- var arr = s.split('');- if (arr[0] == ' ') { arr[0] = " " } - for (var i = arr.length; --i; ) {- if (arr[i][0] == ' ' && arr[i-1] == ' ') {- arr[i-1] = arr[i-1] + arr[i];- arr[i] = '';- }- }- for (var i = arr.length; i--; ) {- if (arr[i].length > 1 && arr[i][0] == ' ') {- var spaces = arr[i].split('');- for (var j = spaces.length - 2; j >= 0; j -= 2) {- spaces[j] = ' ';- }- arr[i] = spaces.join('');- }- }- return arr.join('');- }-- function properEscape(str) {- if (str.length == 0) return str;- str = str //.replace(/&/g, "&")- .replace(/"/g, /*"*/ """)- .replace(/'/g, /*'*/ "'")- .replace(/</g, "<")- .replace(/>/g, ">")- .replace(/\n/g, "<br/>");- var arr = str.split('<br/>');- for (var i = arr.length; i--; ) {- arr[i] = makeSpaces(arr[i]);- }- return arr.join('<br/>');- }-- var toText = function(elmList) {- if (typeof elmList === "string") return properEscape(elmList);- var a = [];- while (elmList[0] === "Cons") {- a.push(elmList[1]);- elmList = elmList[2];- }- return properEscape(a.join(''));- };-- var toString = function(v) {- if (typeof v === "boolean") {- return v ? "True" : "False";- } else if (typeof v === "number") {- return v+"";- } else if (typeof v === "string" && v.length < 2) {- return "'"+v+"'";- } else if (v[0]) {- if (v[0].substring(0,5) === "Tuple") {- var output = "";- for (var i = v.length; --i; ) {- output = "," + toString(v[i]) + output;- }- if (output[0] === ",") output = output.substring(1);- return "("+output+")";- } else if (v[0] === "Cons") {- var start = (typeof v[1] === "string") ? '"' : "[";- var end = (typeof v[1] === "string") ? '"' : "]";- var div = (typeof v[1] === "string") ? "" : ",";- var f = (typeof v[1] === "string") ? function(x){return x} : toString;- var output = start + f(v[1]);- v = v[2];- while (true) {- if (v[0] === "Cons") {- output += div + f(v[1]);- v = v[2];- } else {- return output + end;- }- }- } else if (v[0] === "Nil") {- return "[]";- } else if (v[0] === "JSON") {- return "(JSON.fromList " + toString(ElmJSON.toList(v)) + ")";- } else {- var output = "";- for (var i = v.length; --i; ) {- output = " " + toString(v[i]) + output- }- output = v[0] + output;- return (v.length > 1) ? "(" + output + ")" : output;- }- }- return v+"";- };- var show = function(v) {- return Text.monospace(properEscape(toString(v)));- };- var append = function(xs,ys) {- if (typeof xs === "string" && typeof ys === "string") {- return xs.concat(ys);- }- if (xs[0] === "Nil") {- return ys;- }- var root = ["Cons", xs[1], ["Nil"]];- var curr = root;- xs = xs[2];- while (xs[0]==="Cons") {- curr[2] = ["Cons", xs[1], ["Nil"]];- xs = xs[2];- curr = curr[2];- }- curr[2] = ys;- return root;- };-- var str = function(s) {- var out = ["Nil"];- for (var i = s.length; i--; ) {- out = ["Cons", s[i], out];- }- return out;- };- - return {eq:eq,- str:str,- show:show,- Tuple:Tuple,- append:append,- listToArray:listToArray,- toText : toText,- properEscape : properEscape};-}();var List = function() {-- var throwError = function(f) {- throw "Function '" + f + "' expecting a list!";- }-- function length(xs) {- var out = 0;- while (xs[0] === "Cons") {- out += 1;- xs = xs[2];- }- return out;- };- var reverse = foldl(function(x_72) {- return function(y_73) {- return["Cons", x_72, y_73]- }- })(["Nil"]);- var concat = foldr(function(x_74) {- return function(y_75) {- return Value.append(x_74, y_75)- }- })(["Nil"]);- var and = foldl(function(x_77) {- return function(y_78) {- return x_77 && y_78- }- })(true);- var or = foldl(function(x_79) {- return function(y_80) {- return x_79 || y_80- }- })(false);- var sum = foldl(function(x_89) {- return function(y_90) {- return x_89 + y_90- }- })(0);- var product = foldl(function(x_91) {- return function(y_92) {- return x_91 * y_92- }- })(1);- var maximum = foldl1(function(x) { return function(y) { return Math.max(x,y) } });- var minimum = foldl1(function(x) { return function(y) { return Math.min(x,y) } });- function head(v) {- if (v[0] !== "Cons") {- throw "Error: 'head' only accepts lists of length greater than one.";- }- return v[1];- }- function tail(v) {- if (v[0] !== "Cons") {- throw "Error: 'tail' only accepts lists of length greater than one.";- }- return v[2];- }- function last(v) {- if (v[0] !== "Cons") {- throw "Error: 'last' only accepts lists of length greater than one.";- }- var out = v[1];- while (v[0] === "Cons") {- out = v[1];- v = v[2];- }- return out;- }- function map(f) {- return function(xs) {- if (xs[0] === "Nil") { return xs; }- if (xs[0] !== "Cons") { throwError('map'); }- var root = ["Cons", f(xs[1]), ["Nil"]];- var curr = root;- xs = xs[2];- while (xs[0]==="Cons") {- curr[2] = ["Cons", f(xs[1]), ["Nil"]];- xs = xs[2];- curr = curr[2];- }- return root;- }- }- function foldl(f) {- return function(b) {- return function(xs) {- var acc = b;- if (xs[0] === "Nil") { return acc; }- if (xs[0] !== "Cons") { throwError('foldl'); }- while (xs[0] === "Cons") {- acc = f(xs[1])(acc);- xs = xs[2];- }- return acc;- }- }- }- function foldr(f) {- return function(b) {- return function(xs) {- var acc = b;- if (xs[0] === "Nil") { return acc; }- if (xs[0] !== "Cons") { throwError('foldr'); }- var arr = [];- while (xs[0] === "Cons") {- arr.push(xs[1]);- xs = xs[2];- }- for (var i = arr.length; i--; ) {- acc = f(arr[i])(acc);- }- return acc;- }- }- }- function foldl1(f_49) {- return function(_temp_50) {- return function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var x_51 = v[1];- var xs_52 = v[2];- return foldl(f_49)(x_51)(xs_52)- }- }(_temp_50)- }- }- function foldr1(f) {- return function(xs) {- if (xs[0] === "Nil") { throw "'foldr1' requires an non-empty list." }- if (xs[0] !== "Cons") { throwError('foldr1'); }- var arr = [];- while (xs[0] === "Cons") {- arr.push(xs[1]);- xs = xs[2];- }- var acc = arr.pop();- for (var i = arr.length; i--; ) {- acc = f(arr[i])(acc);- }- return acc;- }- }- function scanl(f) {- return function(b) {- return function(xs) {- if (xs[0] === "Nil") { return ["Cons",b,["Nil"]]; }- if (xs[0] !== "Cons") { throwError('scanl'); }- var arr = [b];- while (xs[0] === "Cons") {- b = f(xs[1])(b);- arr.push(b);- xs = xs[2];- }- var out = ["Nil"];- for (var i = arr.length; i--; ) {- out = ["Cons", arr[i], out];- }- return out;- }- }- }- function scanl1(f) {- return function(xs) {- if (xs[0] !== "Cons") {- throw "Error: 'scanl1' requires a list of at least length 1.";- }- return scanl(f)(xs[1])(xs[2]);- }- }- function filter(pred) {- return function(xs) {- if (xs[0] === "Nil") { return xs; }- if (xs[0] !== "Cons") { throwError('filter'); }- var arr = [];- while (xs[0] === "Cons") {- if (pred(xs[1])) { arr.push(xs[1]); }- xs = xs[2];- }- var out = ["Nil"];- for (var i = arr.length; i--; ) {- out = ["Cons", arr[i], out];- }- return out;- }- }- function concatMap(f_76) {- return function(x) {- return concat(map(f_76)(x))- }- }- function forall(pred) {- return foldl(function(x) { return function(acc) {- return acc && pred(x);- };})(true);- }- function exists(pred) {- return foldl(function(x) { return function(acc) {- return acc || pred(x);- };})(false);- }- function partition(pred_93) {- return function(lst_94) {- return function() {- var v = lst_94;- var c = [function(v) {- if("Nil" !== v[0]) {- return undefined- }else {- return["Tuple2", ["Nil"], ["Nil"]]- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var x_95 = v[1];- var xs_96 = v[2];- return function(v) {- if("Tuple2" !== v[0]) {- return undefined- }else {- var as_97 = v[1];- var bs_98 = v[2];- return pred_93(x_95) ? ["Tuple2", ["Cons", x_95, as_97], bs_98] : ["Tuple2", as_97, ["Cons", x_95, bs_98]]- }- }(partition(pred_93)(xs_96))- }- }];- for(var i = c.length;i--;) {- var r = c[i](v);- if(r !== undefined) {- return r- }- }- }()- }- }- function zipWith(f) {- return function(listA) {- return function(listB) {- if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }- if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zipWith'); }- var arr = [];- while (listA[0] === "Cons" && listB[0] === "Cons") {- arr.push(f(listA[1])(listB[1]));- listA = listA[2];- listB = listB[2];- }- var out = ["Nil"];- for (var i = arr.length; i--; ) {- out = ["Cons", arr[i], out];- }- return out;- }- }- }- function zip(listA) {- return function(listB) {- if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }- if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zip'); }- var arr = [];- while (listA[0] === "Cons" && listB[0] === "Cons") {- arr.push(["Tuple2", listA[1], listB[1]]);- listA = listA[2];- listB = listB[2];- }- var out = ["Nil"];- for (var i = arr.length; i--; ) {- out = ["Cons", arr[i], out];- }- return out;- }- }- function unzip(pairs_112) {- return function() {- var v = pairs_112;- var c = [function(v) {- if("Nil" !== v[0]) {- return undefined- }else {- return["Tuple2", ["Nil"], ["Nil"]]- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var p_113 = v[1];- var ps_114 = v[2];- return function(v) {- if("Tuple2" !== v[0]) {- return undefined- }else {- if("Tuple2" !== v[1][0]) {- return undefined- }else {- var x_115 = v[1][1];- var y_116 = v[1][2];- if("Tuple2" !== v[2][0]) {- return undefined- }else {- var xs_117 = v[2][1];- var ys_118 = v[2][2];- return["Tuple2", ["Cons", x_115, xs_117], ["Cons", y_116, ys_118]]- }- }- }- }(["Tuple2", p_113, unzip(ps_114)])- }- }];- for(var i = c.length;i--;) {- var r = c[i](v);- if(r !== undefined) {- return r- }- }- }()- }- function intersperse(sep_119) {- return function(xs_120) {- return function() {- var v = xs_120;- var c = [function(v) {- if("Nil" !== v[0]) {- return undefined- }else {- return["Nil"]- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var a_124 = v[1];- if("Nil" !== v[2][0]) {- return undefined- }else {- return["Cons", a_124, ["Nil"]]- }- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var a_121 = v[1];- if("Cons" !== v[2][0]) {- return undefined- }else {- var b_122 = v[2][1];- var cs_123 = v[2][2];- return["Cons", a_121, ["Cons", sep_119, intersperse(sep_119)(["Cons", b_122, cs_123])]]- }- }- }];- for(var i = c.length;i--;) {- var r = c[i](v);- if(r !== undefined) {- return r- }- }- }()- }- }- function intercalate(sep_125) {- return function(xs_126) {- return function() {- var v = xs_126;- var c = [function(v) {- if("Nil" !== v[0]) {- return undefined- }else {- return["Nil"]- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var a_130 = v[1];- if("Nil" !== v[2][0]) {- return undefined- }else {- return a_130- }- }- }, function(v) {- if("Cons" !== v[0]) {- return undefined- }else {- var a_127 = v[1];- if("Cons" !== v[2][0]) {- return undefined- }else {- var b_128 = v[2][1];- var cs_129 = v[2][2];- return Value.append(a_127, Value.append(sep_125, intercalate(sep_125)(["Cons", b_128, cs_129])))- }- }- }];- for(var i = c.length;i--;) {- var r = c[i](v);- if(r !== undefined) {- return r- }- }- }()- }- }- function sort(xs) {- if (xs[0] === "Nil") { return xs; }- if (xs[0] !== "Cons") { throwError('sort'); }- var arr = [];- while (xs[0] === "Cons") {- arr.push(xs[1]);- xs = xs[2];- }- arr.sort(function(a,b) { return a - b});- var out = ["Nil"];- for (var i = arr.length; i--; ) {- out = [ "Cons", arr[i], out ];- }- return out;- }- function take(n) { return function(xs) {- if (n <= 0) { return ["Nil"]; }- if (xs[0] === "Nil") { return xs; }- if (xs[0] !== "Cons") { throwError('take'); }- var out = [ "Cons", xs[1], ["Nil"] ];- var temp = out;- xs = xs[2];- --n;- while (xs[0] === "Cons" && n > 0) {- temp[2] = [ "Cons", xs[1], ["Nil"] ];- temp = temp[2];- xs = xs[2];- --n;- }- return out;- };- }- function drop(n) { return function(xs) {- if (xs[0] === "Nil") { return xs; }- if (xs[0] !== "Cons") { throwError('drop'); }- while (xs[0] === "Cons" && n > 0) {- xs = xs[2];- --n;- }- return xs;- };- }- return {head:head,- tail:tail,- last:last,- map:map,- foldl:foldl,- foldr:foldr,- foldl1:foldl1,- foldr1:foldr1,- scanl:scanl,- scanl1:scanl1,- filter:filter,- length:length,- reverse:reverse,- concat:concat,- concatMap:concatMap,- and:and,- or:or,- forall:forall,- exists:exists,- sum:sum,- product:product,- maximum:maximum,- minimum:minimum,- partition:partition,- zipWith:zipWith,- zip:zip,- unzip:unzip,- intersperse:intersperse,- intercalate:intercalate,- sort:sort,- take:take,- drop:drop};-}();-var Data = function() {--var Char = function() {- return {fromCode : function(c) { return String.fromCharCode(c); },- toCode : function(c) { return c.charCodeAt(0); },- toUpper : function(c) { return c.toUpperCase(); },- toLower : function(c) { return c.toLowerCase(); },- toLocaleUpper : function(c) { return c.toLocaleUpperCase(); },- toLocaleLower : function(c) { return c.toLocaleLowerCase(); }- };-}();--var Maybe = function() {- function consMaybe(x) { return function(xs) {- if (x[0] === "Just") return ["Cons", x[1], xs];- return xs;- };- }- function fromMaybe(b) { return function(m) {- if (m[0] === "Just") return m[1];- return b;- };- }- function mapCons(f) { return function(y) { return function(xs) {- var x = f(y);- if (x[0] === "Just") return ["Cons", x[1], xs];- return xs;- };- };- }- function maybe(b) { return function(f) { return function(m) {- if (m[0] === "Just") return f(m[1]);- return b;- };- };- }-- return {Just : function(x) { return ["Just",x]; },- Nothing : ["Nothing"],- catMaybes : List.foldr(consMaybe)(["Nil"]),- isJust : function(m) { return m[0] === "Just"; },- isNothing : function(m) { return m[0] === "Nothing"; },- fromMaybe : fromMaybe,- consMaybe : consMaybe,- mapMaybe : function(f) { return List.foldr(mapCons(f))(["Nil"]); },- maybe : maybe- };-}();--/*-var String = function() {-- function append(s1) { return function(s2) {- return s1.concat(s2);- };- }- function map(f) { return function(s) {- for (var i = s.length; i--; ) { s[i] = f(s[i]); }- };- }-- function intercalate(sep) { return function(ss) {- return Value.listToArray(ss).join(sep);- };- }- function intersperse(sep) { return function(s) {- return s.split("").join(sep);- };- }-- function foldl(f) { return function(b) { return function(s) {- var acc = b;- for (var i = 0, len = s.length; i < len; ++i) { acc = f(s[i])(acc); }- return acc;- };- };- }- function foldr(f) { return function(b) { return function(s) {- var acc = b;- for (var i = s.length; i--; ) { acc = f(s[i])(acc); }- return acc;- };- };- }-- function concatMap(f) { return function(s) {- var a = s.split("");- for (var i = a.length; i--; ) { a[i] = f(a[i]); }- return a.join("");- };- }-- function forall(pred) { return function(s) {- for (var i = s.length; i--; ) { if (!pred(s[i])) {return false}; }- return true;- };- }- function exists(pred) { return function(s) {- for (var i = s.length; i--; ) { if (pred(s[i])) {return true}; }- return false;- };- }-- return {cons : append,- snoc : append,- head : function(s) { return s[0]; },- last : function(s) { return s[s.length-1]; },- tail : function(s) { return s.slice(1); },- length : function(s) { return s.length; },- map : map,- intercalate : intercalate,- intersperse : intersperse,- reverse : function(s) { return s.split("").reverse().join(""); },- toLower : function(s) { return s.toLowerCase(); },- toUpper : function(s) { return s.toUpperCase(); },- foldl : foldl,- foldr : foldr,- concat : function(ss) { return Value.listToArray(ss).join(""); },- concatMap : concatMap,- forall : forall,- exists : exists,- //filter : filter,- //take:,- //drop:,- toText : Value.toText, - properEscape : Value.properEscape- };-}();-*/-return {String: {toText:Value.toText, properEscape:Value.properEscape},- Char:Char,- Maybe:Maybe,- List:List- };-}();-var Color = function() {-- var create = function(r,g,b,a) {- return { r: r,- g: g,- b: b,- a: a };- };-- var extract = function(c) {- if (c.a === 1) {- return 'rgb(' + c.r + ',' + c.g + ',' + c.b + ')';- }- return 'rgba(' + c.r + ',' + c.g + ',' + c.b + ',' + c.a + ')';- };-- var rgba = function(r) { return function(g) { return function(b) {- return function(a) { return create(r,g,b,a); }; }; };- };-- var rgb = function(r) { return function(g) { return function(b) {- return create(r,g,b,1); }; };- };- return {black: create( 0, 0, 0,1),- white: create(255,255,255,1),- red : create(255, 0, 0,1),- green: create( 0,255, 0,1),- blue : create( 0, 0,255,1),-- gray : create(128,128,128,1),- grey : create(128,128,128,1),-- yellow : create(255,255, 0,1),- cyan : create( 0,255,255,1),- magenta : create(255, 0,255,1),-- rgba : rgba,- rgb : rgb,- Internal : { extract:extract }- };-}();-var Element = function() {- var newElement = function(elementType) {- var e = document.createElement(elementType); - e.id = Guid.guid();- e.style.padding = "0";- e.style.margin = "0";- return e;- };- var addTo = function(container, elem) {- container.appendChild(clone(elem));- };- var clone = function(e) {- return e;- };- var divify = function(e) {- var div = newElement('div');- addTo(div, e);- return div;- };-- var rectangle = function(w) { return function(h) {- var e = newElement('div');- e.isElmLeaf = true;- e.style.width = w + "px";- e.style.height = h + "px";- return e;- };- };-- var makeText = function(w) { return function(pos) { return function(txt) {- var e = newElement('div');- e.isElmLeaf = true;- e.isElmText = true;- e.innerHTML = txt;- e.style.textAlign = pos;- if (w > 0) e.style.width = w + "px";- return e;- };- };- };- var correctTextSize = function(e) {- var w = e.style.width ? e.style.width.slice(0,-2) : 0;-- var t = newElement('div');- t.innerHTML = e.innerHTML;- t.style.textAlign = e.style.textAlign;- if (w > 0) { t.style.width = w + "px"; }- - t.style.visibility = "hidden";- t.style.styleFloat = "left";- t.style.cssFloat = "left";- - document.body.appendChild(t);- var cStyle = window.getComputedStyle(t);- if (w <= 0) e.style.width = cStyle.getPropertyValue("width");- e.style.height = cStyle.getPropertyValue("height");- document.body.removeChild(t);- };-- var link = function (href) { return function (e) {- var a = newElement('a');- a.href = Text.fromString(href);- addTo(a,e);- return divify(a);- };- };-- var text = makeText(0)('left');- var plainText = function(str) {- return makeText(0)("left")(Value.toText(str)); };- var justifiedText = makeText(0)('justify');- var centeredText = makeText(0)('center');- var rightedText = makeText(0)('right');- var asText = function(v) { return makeText(0)("left")(Value.show(v)); };-- var image = function(src) {- var img = newElement('img');- img.isElmLeaf = true;- img.onload = function() {- if (img.style.width === "" && this.width > 0) {- img.style.width = img.width = this.width + "px";- }- if (img.style.height === "" && this.height > 0) {- img.style.height = img.height = this.height + "px";- }- Dispatcher.adjust()- };- img.src = Value.toText(src);- img.name = img.src;- return img;- };- var fittedImage = function(w) { return function(h) { return function(src) {- var canvas = newElement('canvas');- canvas.style.width = w + 'px';- canvas.style.height = h + 'px';- canvas.width = w;- canvas.height = h;- canvas.innerHTML = "Your browser does not support the canvas element.";- canvas.isElmLeaf = true;-- var img = newElement('img');- img.onload = function() {- if (canvas.getContext) {- var ctx = canvas.getContext('2d');- var sx = 0, sy = 0, sWidth = this.width, sHeight = this.height;- if (w / h > this.width / this.height) {- sHeight = this.width * h / w;- sy = (this.height - sHeight) / 2- } else {- sWidth = this.height * w / h;- sx = (this.width - sWidth) / 2- }- ctx.drawImage(img, sx, sy, sWidth, sHeight,- 0,0, canvas.width, canvas.height);- }- };- img.src = Value.toText(src);- return canvas;- };- };- };-- var video = function(src) {- src = Value.toText(src);- var e = newElement('video');- e.controls = "controls";- var source = newElement('source');- source.src = src;- source.type = "video/" + src.substring(src.length - 3, src.length);- addTo(e, source);- e.isElmLeaf = true;- return e;- };- var audio = function(src) {- src = Value.toText(src);- var e = newElement('video');- e.controls = "controls";- var source = newElement('source');- source.src = src;- source.type = "audio/" + src.substring(src.length - 3, src.length);- addTo(e, source);- e.isElmLeaf = true;- return e;- };- var collage = function(w) { return function(h) { return function(cflist) {- var canvas = newElement('canvas');- canvas.style.width = w + 'px';- canvas.style.height = h + 'px';- canvas.width = w;- canvas.height = h;- if (canvas.getContext) {- var ctx = canvas.getContext('2d');- ctx.clearRect(0,0, canvas.width, canvas.height);- while (cflist[0] === "Cons") {- ctx = cflist[1](ctx);- cflist = cflist[2];- }- return canvas;- }- canvas.innerHTML = "Your browser does not support the canvas element.";- canvas.isElmLeaf = true;- return canvas;- };- };- };-- var goDown = function(e) {- return e.tagName === "DIV" ? e : divify(e);- };- var goRight = function(e) {- e.style.styleFloat = "left";- e.style.cssFloat = "left";- return e;- };- var goIn = function(e) {- e.style.position = 'absolute';- return e;- };- var flowWith = function(dir, f, elist) {- var container = newElement('div');- for (var i = elist.length; i--; ) {- addTo(container, f(elist[i]));- }- container.elmFlowDirection = dir;- return container;- };-- var flow = function(direction) { return function(elist) {- var arr = [];- while (elist[0] === "Cons") {- arr.push(elist[1]);- elist = elist[2];- }- if (direction >= 3) arr.reverse();- var f = function(x) { return x; };- var dir = direction % 3;- if (dir == 0) return flowWith("Y", goDown , arr);- if (dir == 1) return flowWith("X", goRight, arr);- if (dir == 2) return flowWith("Z", goIn , arr);- };- };-- var beside = function(a) { return function(b) {- return flow(4)(["Cons",a,["Cons",b,["Nil"]]]); }; };- var above = function(a) { return function(b) {- return flow(3)(["Cons",a,["Cons",b,["Nil"]]]); }; };- var below = function(a) { return function(b) {- return flow(0)(["Cons",a,["Cons",b,["Nil"]]]); }; };-- var box = function(pos) { return function(e) {- e.style.position = "absolute";- e.style.margin = "auto";- var x = (pos - 1) % 3;- var y = (pos - 1) / 3;- if (x < 2) e.style.left = 0;- if (x > 0) e.style.right = 0;- if (y < 2) e.style.top = 0;- if (y > 0) e.style.bottom = 0;- var div = newElement('div');- div.style.position = "relative";- addTo(div,e);- return div;- };- };-- var width = function(w) { return function(e) {- if (e.tagName === "A") { - width(w)(e.firstChild);- return e;- }- if (e.hasOwnProperty('isElmText')) {- var d = makeText(w)(e.style.textAlign)(e.innerHTML);- e.style.height = d.style.height;- }- e.style.width = w + "px";- return e;- };- };- var height = function(h) { return function(e) {- (e.tagName === "A" ? e.firstChild : e).style.height = h + "px";- return e;- };- };- var size = function(w) { return function(h) { return function(e) {- var d = e.tagName === "A" ? e.firstChild : e;- d.style.width = w + "px";- d.style.height = h + "px";- return e;- };- };- };-- var color = function(c) { return function(e) {- e.style.backgroundColor = Color.Internal.extract(c);- return e;- };- };- var opacity = function(value) { return function(e) {- e.style.opacity = value;- return e;- };- };-- var jsElement = function(w) { return function(h) { return function(elem) {- var e = newElement('div');- e.isElmLeaf = true;- e.style.width = w + "px";- e.style.height = h + "px";- addTo(e,elem);- return e;- };- };- };- - return {text : text,- image : image,- fittedImage : fittedImage,- video : video,- audio : audio,- collage : collage,- flow : flow,- layers : flow(2),- rectangle : rectangle,-- beside : beside,- above : above,- below : below,- box : box,-- width : width,- height : height,- size : size,- color : color,- opacity : opacity,- - link : link,- asText : asText,- plainText : plainText,- justifiedText : justifiedText,- centeredText : centeredText,- rightedText : rightedText,-- // directions- up : 0,- left : 1,- inward : 2,- down : 3,- right : 4,- outward : 5,-- correctTextSize : correctTextSize,- jsElement : jsElement- };-}();- - - -var Text = function() { - function fromString(s) { return Value.toText(s); } - - var addTag = function(tag) { return function(text) { - return '<' + tag + ' style="padding:0;margin:0">' + text + '</' + tag + '>'; - }; - }; - var addStyle = function(style, value) { return function(text) { - return "<span style='" + style + ":" + value + "'>" + text + "</span>"; - }; - }; - - var typeface = function(name) { return addStyle('font-family', name); }; - var size = function(px) { - return addStyle('font-size', px + 'px'); - }; - var header = addTag('h1'); - var height = function(h) { return addStyle('font-size', h+'em'); } - var italic = addStyle('font-style', 'italic'); - var bold = addTag('b'); - var color = function(c) { - return addStyle('color', Color.Internal.extract(c)); - }; - var underline = addStyle('text-decoration', 'underline'); - var overline = addStyle('text-decoration', 'overline'); - var strikeThrough = addStyle('text-decoration', 'line-through'); - var link = function(href) { return function(text) { - return "<a href='" + fromString(href) + "'>" + text + "</a>"; - }; - }; - - return {fromString : fromString, - toText: fromString, - header : header, - height : height, - italic : italic, - bold : bold, - underline : underline, - overline : overline, - strikeThrough : strikeThrough, - monospace : typeface('monospace'), - typeface : typeface, - color : color, - link : link }; -}();-var Shape = function() {-- var create = function(center, ps, theta, s) {- return { center: center, points: ps, theta: theta, scale: s };- };-- //// Construction ////-- var polygon = function(ps) { return function(center) {- var parr = [];- while (ps[0] === "Cons") {- parr.push([ps[1][1], ps[1][2]]);- ps = ps[2];- }- center = [center[1], center[2]];- return create(center, parr, 0, 1);- };-};- var ngon = function(n) { return function(r) { return function(center) {- var ps = [];- for (var i = n; i--;) {- ps.push([r * Math.cos(Math.PI * 2 * i/n),- r * Math.sin(Math.PI * 2 * i/n)]);- }- center = [center[1], center[2]];- return create(center, ps, 0, 1);- };- };-};- var rect = function(w) { return function(h) { return function(center) {- var ps = [[- w/2, - h/2],- [ w/2, - h/2],- [ w/2, h/2],- [- w/2, h/2]];- center = [center[1], center[2]];- return create(center, ps, 0, 1);- };- };- };- var oval = function(w) { return function(h) { return function(center) {- var ps = [];- for (var theta = 2 * Math.PI; theta > 0; theta -= Math.PI /50) {- ps.push([w/2 * Math.cos(theta), h/2 * Math.sin(theta)]);- }- center = [center[1], center[2]];- return create(center, ps, 0, 1);- };- };- };--//// Transforms ////-- var move = function(x) { return function(y) { return function(shape) {- var newCenter = [x + shape.center[0],y + shape.center[1]];- return create(newCenter, shape.points, shape.theta, shape.scale);- };- };- };- var rotate = function(theta) { return function(shape) {- var newTheta = shape.theta + 2 * Math.PI * theta;- return create(shape.center, shape.points, newTheta, shape.scale);- };- };- var scale = function(s) { return function(shape) {- return create(shape.center, shape.points, shape.theta, shape.scale * s);- };- };--- //// Atomize ////-- var draw = function(fill) {- return function(color) { return function(shape) { return function(ctx) {- ctx.save();- ctx.translate(shape.center[0], shape.center[1]);- ctx.rotate(shape.theta);- ctx.scale(shape.scale, shape.scale);- ctx.beginPath();- var points = shape.points;- ctx.moveTo(points[0][0], points[0][1]);- for (var i = points.length; i--; ) {- ctx.lineTo(points[i][0], points[i][1]);- }- ctx.closePath();- if (fill) {- ctx.fillStyle = Color.Internal.extract(color);- ctx.fill();- } else {- ctx.strokeStyle = Color.Internal.extract(color);- ctx.stroke();- }- ctx.restore();- return ctx;- };- };- };- };-- var customOutline = function(p) {- return function(c) { return function(shape) {- shape.points.push(shape.points[0]);- return Line.customLine(p)(c)(shape);- };- };- };- return {polygon:polygon, ngon:ngon, rect:rect, oval:oval,- move:move, rotate:rotate, scale:scale,- filled:draw(true), outlined:draw(false), customOutline:customOutline };-}();-var Line = function() {-- var pair = function(a,b) { return [a,b]; };-- var create = function(center, ps, theta, s) {- return { center: center, points: ps, theta: theta, scale: s };- };--- //// Construction ////-- var line = function(ps) {- var parr = [];- while (ps[0] === "Cons") {- parr.push(pair(ps[1][1], ps[1][2]));- ps = ps[2];- }- return create(pair(0,0), parr, 0, 1);- };-- //// Atomize ////-- var solid = function(color) { return function(line) { return function(ctx) {- ctx.save();- ctx.beginPath();- ctx.translate(line.center[0], line.center[1]);- ctx.rotate(line.theta);- ctx.scale(line.scale, line.scale);- var points = line.points;- var i = points.length;- ctx.moveTo(points[i-1][0], points[i-1][1]);- while (i--) {- ctx.lineTo(points[i][0], points[i][1]);- }- ctx.strokeStyle = Color.Internal.extract(color);- ctx.stroke();- ctx.restore();- return ctx;- };- };- };-- var customLine = function(pattern) {- return function(color) { return function(line) {- if (typeof pattern[0] === "string") {- var temp = [];- while (pattern[0] === "Cons") {- temp.push(pattern[1]);- pattern = pattern[2];- }- pattern = temp;- }- if (pattern.length === 0) { pattern = [8,4]; }- return function(ctx) {- ctx.save();- ctx.beginPath();- ctx.translate(line.center[0], line.center[1]);- ctx.rotate(line.theta);- ctx.scale(line.scale, line.scale);- customLineHelp(ctx, pattern, line.points);- ctx.strokeStyle = Color.Internal.extract(color);- ctx.stroke();- ctx.restore();- return ctx;- };- };- };- };- var customLineHelp = function(ctx, pattern, points) {- var i = points.length - 1;- var x0 = points[i][0], y0 = points[i][1];- var x1=0, y1=0, dx=0, dy=0, remaining=0, nx=0, ny=0;- var pindex = 0, plen = pattern.length;- var draw = true, segmentLength = pattern[0];- ctx.moveTo(x0,y0);- while (i--) {- x1 = points[i][0]; y1 = points[i][1];- dx = x1 - x0; dy = y1 - y0;- remaining = Math.sqrt(dx * dx + dy * dy);- while (segmentLength <= remaining) {- x0 += dx * segmentLength / remaining;- y0 += dy * segmentLength / remaining;- ctx[draw ? 'lineTo' : 'moveTo'](x0, y0);- // update starting position- dx = x1 - x0; dy = y1 - y0;- remaining = Math.sqrt(dx * dx + dy * dy);- // update pattern- draw = !draw;- pindex = (pindex + 1) % plen;- segmentLength = pattern[pindex];- }- if (remaining > 0) {- ctx[draw ? 'lineTo' : 'moveTo'](x1, y1);- segmentLength -= remaining;- }- x0 = x1; y0 = y1;- }- };-- return {line:line, customLine:customLine, solid:solid,- dashed: customLine([8,4]), dotted: customLine([3,3]) };-}();--var Elm = function() {- var send = function(node, timestep, changed) {- var kids = node.kids;- for (var i = kids.length; i--; ) {- kids[i].recv(timestep, changed, node.id);- }- };- var input = function(base) {- this.id = Guid.guid();- this.value = base;- this.kids = [];- this.recv = function(timestep, eid, v) {- var changed = eid === this.id;- if (changed) { this.value = v; }- send(this, timestep, changed);- };- Dispatcher.inputs.push(this);- };- var lift = function(func,args) {- this.id = Guid.guid();- this.value = null;- this.kids = [];- this.inbox = {};-- args.reverse();- this.recalc = function() {- var f = func;- for (var i = args.length; i--; ) {- f = f(args[i].value);- }- this.value = f;- };- this.recalc();-- this.recv = function(timestep, changed, parentID) {- if (!this.inbox.hasOwnProperty(timestep)) {- this.inbox[timestep] = { changed: false, count: 0 };- }- var box = this.inbox[timestep];- box.count += 1;- if (changed) { box.changed = true; }- if (box.count == args.length) {- if (box.changed) { this.recalc() }- send(this, timestep, box.changed);- delete this.inbox[timestep];- }- };- for (var i = args.length; i--; ) {- args[i].kids.push(this);- }- };- var fold = function(func,base,input) {- this.id = Guid.guid();- this.value = base;- this.kids = [];- this.recv = function(timestep, changed, parentID) {- if (changed) { this.value = func(input.value)(this.value); }- send(this, timestep, changed);- };- input.kids.push(this);- };-- var dropIf = function(pred,base,input) {- this.id = Guid.guid();- this.value = pred(input.value) ? base : input.value;- this.kids = [];- this.recv = function(timestep, changed, parentID) {- var chng = changed && !pred(input.value);- if (chng) { this.value = input.value; }- send(this, timestep, chng);- };- input.kids.push(this);- };- var dropRepeats = function(input) {- this.id = Guid.guid();- this.value = input.value;- this.kids = [];- this.recv = function(timestep, changed, parentID) {- var chng = changed && !eq(this.value,input.value);- if (chng) { this.value = input.value; }- send(this, timestep, chng);- };- input.kids.push(this);- };-- var dropWhen = function(s1) { return function(b) { return function(s2) {- var pairs = new lift(function(x){return function(y){return [x,y];};},[s1,s2]);- var dropped = new dropIf(function(p){return p[0];},[true,b],pairs);- return new lift(function(p){return p[1];},[dropped]); }; };- };-- var sampleOn = function(s1,s2) {- this.id = Guid.guid();- this.value = s2.value;- this.kids = [];- this.inbox = {};-- this.recv = function(timestep, changed, parentID) {- var chng = changed && parentID === s1.id;- if (chng) { this.value = s2.value; }- send(this, timestep, chng);- };- s1.kids.push(this);- s2.kids.push(this);- };-- return {Input: function(x) {return new input(x);},- Lift: function(f,xs){return new lift(f,xs);},- Fold: function(f,b,x){return new fold(f,b,x);},- keepIf : function(pred) { return function(base) { return function(sig) {- return new dropIf(function(x) { return !pred(x)},base,sig); }; }; },- dropIf : function(pred) { return function(base) { return function(sig) {- return new dropIf(pred,base,sig); }; }; },- keepWhen : function(s) { return dropWhen(new lift(function(b){return !b;},[s])); },- dropWhen : dropWhen,- dropRepeats : function(s) { return new dropRepeats(s);},- sampleOn : function(s1) { return function(s2) { return new sampleOn(s1,s2); }; }- };-}();--var Dispatcher = function() {- var program = null;- var timestep = 0;- var inputs = [];-- var correctSize = function(e) {- var kids = e.childNodes;- var len = kids.length;- if (e.hasOwnProperty('isElmLeaf')) {- if (e.hasOwnProperty('isElmText')) { Element.correctTextSize(e); }- var w = e.style.width === "" ?- 0 : e.style.width.slice(0,-2) - 0;- var h = e.style.height === "" ?- 0 : e.style.height.slice(0,-2) - 0;- return [w, h];- }- if (len === 1) {- var dim = correctSize(kids[0]);- if (e.style.width !== "") { dim[0] = e.style.width.slice(0,-2) - 0; }- if (e.style.height !== "") { dim[1] = e.style.height.slice(0,-2) - 0; }- if (dim[0] !== 0) { e.style.width = dim[0] + "px"; }- if (dim[1] !== 0) { e.style.height = dim[1] + "px"; }- return dim;- }- var wmax = 0, hmax = 0, wsum = 0, hsum = 0;- var hasWidth = true, hasHeight = true, dim = null;- while (len--) {- dim = correctSize(kids[len]);- wmax = Math.max(wmax, dim[0]);- hmax = Math.max(hmax, dim[1]);- wsum += dim[0];- hsum += dim[1];- hasWidth = hasWidth && dim[0] > 0;- hasHeight = hasHeight && dim[1] > 0;- }- var w = wmax, h = hmax, dir = e.elmFlowDirection;- if (dir === "X") { w = hasWidth ? wsum : 0; }- if (dir === "Y") { h = hasHeight ? hsum : 0; }- if (w > 0) e.style.width = w + "px";- if (h > 0) e.style.height = h + "px";- return [w,h];- };-- var initialize = function() {- program = ElmCode.main();- if (!program.hasOwnProperty('recv')) {- program = Elm.Input(program);- }- var content = document.getElementById('content');- content.appendChild(program.value);- adjust();- var w = document.getElementById('widthChecker').offsetWidth;- if (w !== window.innerWidth) {- Dispatcher.notify(Window.dimensions.id, Value.Tuple(w, window.innerHeight));- }- program = Elm.Lift(function(value) {- var content = document.getElementById('content');- var kid = content.children[0]- content.replaceChild(value, kid);- delete kid;- adjust();- return value;- }, [program]);- };- var adjust = function() {- var content = document.getElementById('content');- correctSize(content.children[0]);- }- var notify = function(id, v) {- timestep += 1;- for (var i = inputs.length; i--; ) {- inputs[i].recv(timestep, id, v);- }- };- return {initialize:initialize, notify:notify, adjust:adjust, inputs:inputs};-}();-var Signal = function() {- function toElmString(str) {- var out = ["Nil"];- for (var i = str.length; i--; ) {- out = ["Cons", str[i], out];- }- return out;- }- var addListener = function() {- if(document.addEventListener) {- return function(element, event, handler) {- element.addEventListener(event, handler, false);- };- }- else {- return function(element, event, handler) {- element.attachEvent('on' + event, handler);- };- }- }();-- var Mouse = function() {- var position = Elm.Input(Value.Tuple(0,0));- var isDown = Elm.Input(false);- var isClicked = Elm.Input(false);- var clicks = Elm.Input(Value.Tuple());- - function getXY(e) {- var posx = 0;- var posy = 0;- if (!e) var e = window.event;- if (e.pageX || e.pageY) {- posx = e.pageX;- posy = e.pageY;- } else if (e.clientX || e.clientY) {- posx = e.clientX + document.body.scrollLeft +- document.documentElement.scrollLeft;- posy = e.clientY + document.body.scrollTop +- document.documentElement.scrollTop;- }- return Value.Tuple(posx, posy);- }-- addListener(document, 'click', function(e) {- Dispatcher.notify(isClicked.id, true);- Dispatcher.notify(clicks.id, Value.Tuple());- Dispatcher.notify(isClicked.id, false);- });- addListener(document, 'mousedown', function(e) {- Dispatcher.notify(isDown.id, true); });- addListener(document, 'mouseup', function(e) {- Dispatcher.notify(isDown.id, false); });- addListener(document, 'mousemove', function(e) {- Dispatcher.notify(position.id, getXY(e)); });- var clickedOn = function(elem) {- var click = Elm.Input(false);- addListener(elem, 'click', function(e) {- Dispatcher.notify(click.id, true);- Dispatcher.notify(click.id, false);- });- return Value.Tuple(elem, click);- };- return {position: position,- x: Elm.Lift(function(p){return p[1];},[position]),- y: Elm.Lift(function(p){return p[2];},[position]),- isClicked: isClicked,- isDown: isDown,- clicks: clicks,- isClickedOn: clickedOn- };- }();-- var Time = function() {- var every = function(t) {- t *= 1000;- var clock = Elm.Input(0);- var time = 0;- setInterval(function() {- time += t;- Dispatcher.notify(clock.id, time/1000);- }, t);- return clock;- };- var after = function(t) {- t *= 1000;- var thread = Elm.Input(false);- setTimeout(function() { Dispatcher.notify(thread.id, true); }, t);- return thread;- };- var before = function(t) {- t *= 1000;- var thread = Elm.Input(true);- setTimeout(function() { Dispatcher.notify(thread.id, false); }, t);- return thread;- };- return {every:every,after:after,before:before};- }();-- var Window = function() {- var dimensions = Elm.Input(Value.Tuple(window.innerWidth,window.innerHeight));- addListener(window, 'resize', function(e) {- var w = document.getElementById('widthChecker').offsetWidth;- Dispatcher.notify(dimensions.id, Value.Tuple(w, window.innerHeight));- });- return {dimensions:dimensions,- width : Elm.Lift(function(p){return p[1];},[dimensions]),- height: Elm.Lift(function(p){return p[2];},[dimensions]) };- }();-- var Keyboard = { Raw : function() {- var keysDown = Elm.Input(["Nil"]);- var charPressed = Elm.Input(["Nothing"]);- function remove(x,xs) {- if (xs[0] === "Nil") return xs;- if (xs[1] === x) return xs[2];- return ["Cons", xs[1], remove(x,xs[2])];- }- function has(x,xs) {- while (xs[0] !== "Nil") {- if (xs[1] === x) return true;- xs = xs[2];- }- return false;- }- addListener(document, 'keydown', function(e) {- if (has(e.keyCode, keysDown.value)) return;- Dispatcher.notify(keysDown.id, ["Cons", e.keyCode, keysDown.value]);- });- addListener(document, 'keyup', function(e) {- var codes = remove(e.keyCode, keysDown.value)- Dispatcher.notify(keysDown.id, codes);- });- addListener(window, 'blur', function(e) {- Dispatcher.notify(keysDown.id, ["Nil"]);- });- addListener(document, 'keypress', function(e) {- Dispatcher.notify(charPressed.id, ["Just",e.charCode || e.keyCode]);- Dispatcher.notify(charPressed.id, ["Nothing"]);- });- return {keysDown:keysDown,- charPressed:charPressed};- }()- };-- var HTTP = function() {- var fetch = function(how) { return function(url) {- var thread = Elm.Input(["Waiting"]);- var request = {};- if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }- else if (window.ActiveXObject) { request = new ActiveXObject("Microsoft.XMLHTTP"); }- request.onreadystatechange = function(e) {- if (request.readyState === 4) {- Dispatcher.notify(thread.id,- request.status === 200- ? ["Success", toElmString(request.responseText)]- : ["Failure", request.status, toElmString(request.statusText)]);- }- };- request.open(how, Value.toText(url), true);- request.send(null);- return thread;- };- };- var fetches = function(how) { return function(input) {- var output = Elm.Input(["Nothing"]);- var fetcher = Elm.Lift(update, [input]);- var combine = Elm.Lift(function(x) { return function(y) { return x; } }, [output,fetcher]);- function update(strOpt) {- if (strOpt[0] !== "Just") {- try { Dispatcher.notify(output.id, ["Nothing"]); } catch(e) {}- return [];- }- try {- Dispatcher.notify(output.id, ["Just", ["Waiting"]]);- } catch(e) { output.value = ["Just", ["Waiting"]]; }- var request = {};- if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }- else if (window.ActiveXObject) { request = new ActiveXObject("Microsoft.XMLHTTP"); }- request.onreadystatechange = function(e) {- if (request.readyState === 4) {- Dispatcher.notify(output.id,- ["Just", request.status === 200- ? ["Success", toElmString(request.responseText)]- : ["Failure", request.status, toElmString(request.statusText)]]);- }- };- request.open(how, Value.toText(strOpt[1]), true);- request.send(null);- return [];- }- return combine;- };- };- return {get : fetch("GET"), post : fetch("POST"),- gets : fetches("GET"), posts : fetches("POST")- };- }();- var Random = function() {- var inRange = function(min) { return function(max) {- return Elm.Input(Math.floor(Math.random() * (max-min+1)) + min);- };- };- var randomize = function(min) { return function(max) { return function(signal) {- return Elm.Lift(function(x) { return Math.floor(Math.random() * (max-min+1)) + min;},[signal]);- };- };- };- return { inRange:inRange, randomize:randomize };- }();- var Input = function() {- var newTextInput = function(elem, ghostText) {- elem.isElmLeaf = true;- var str = Elm.Input(["Nil"]);- addListener(elem, 'keyup', function(e) {- Dispatcher.notify(str.id, toElmString(elem.value));- elem.focus();- });- return Value.Tuple(elem, str);- };- var newElement = function(name) {- var e = document.createElement(name);- e.id = Guid.guid();- return e;- };- var textArea = function(cols) { return function(rows) {- var textarea = newElement('textarea');- textarea.rows = rows;- textarea.cols = cols;- return newTextInput(textarea, "");- };- };- var textField = function(ghostText) {- var field = newElement('input');- field.type = 'text';- return newTextInput(field, ghostText);- };- var password = function(ghostText) {- var field = newElement('input');- field.type = 'password';- return newTextInput(field, ghostText);- };- var checkbox = function(checked) {- var box = newElement('input');- box.type = 'checkbox';- box.checked = checked;- var status = Elm.Input(checked);- addListener(box, 'change', function(e) {- Dispatcher.notify(status.id, box.checked);- });- return Value.Tuple(box, status);- };- var dropDown = function(options) {- var slct = newElement('select');- var opts = [];- while (options[0] === "Cons") {- var opt = newElement('option');- var str = Text.toText(options[1][1]);- opt.value = str;- opt.innerHTML = str;- slct.appendChild(opt);- opts.push(options[1][2]);- options = options[2];- }- var status = Elm.Input(opts[0]);- addListener(slct, 'change', function(e) {- Dispatcher.notify(status.id, opts[slct.selectedIndex]);- });- return Value.Tuple(slct, status);- };- var stringDropDown = function(opts) {- return dropDown(List.map (function(x) {return Value.Tuple(x,x);}) (opts));- };- var button = function(name) {- var b = newElement('input');- b.type = "button";- b.value = Foreign.JavaScript.castStringToJSString(name);- var press = Elm.Input(false);- addListener(b, 'click', function(e) {- Dispatcher.notify(press.id, true);- Dispatcher.notify(press.id, false);- });- return Value.Tuple(b,press);- };- return {textArea:textArea, textField:textField,- password:password, checkbox:checkbox,- dropDown:dropDown, stringDropDown:stringDropDown,- button:button};- }();-- return {addListener:addListener,- Mouse:Mouse,- Keyboard:Keyboard,- Time:Time,- Window:Window,- HTTP:HTTP,- Random:Random,- Input:Input,- constant : function(v) { return Elm.Input(v); },- lift : function(f){return function(e){return Elm.Lift(f,[e]);};},- lift2 : function(f) { return function(e1) { return function(e2) {- return Elm.Lift(f, [e1,e2]); }; }; },- lift3 : function(f) { return function(e1) { return function(e2) {- return function(e3){return Elm.Lift(f,[e1,e2,e3]);};};};},- lift4 : function(f) { return function(e1) { return function(e2) {- return function(e3) { return function(e4) {- return Elm.Lift(f, [e1,e2,e3,e4]); }; }; }; }; },- foldp : function(f) { return function(b) { return function(e) {- return Elm.Fold(f,b,e); }; }; },- count : function(sig){return Elm.Fold(function(_){return function(c){return c+1;};},0,sig)},- keepIf : Elm.keepIf,- dropIf : Elm.dropIf,- keepWhen : Elm.keepWhen,- dropWhen : Elm.dropWhen,- dropRepeats : Elm.dropRepeats,- sampleOn : Elm.sampleOn- };-}();-var Prelude = function() {- var mod = function(x) { return function(y) {- var r = x % y;- var m = x==0 ? 0 : (y>0 ? (x>=0 ? r : r+y) : -mod(-x)(-y));- return m == y ? 0 : m;- }; };-- var min = function(x) { return function(y) { return Math.min(x,y); }; };- var max = function(x) { return function(y) { return Math.max(x,y); }; };- - var flip=function(f){return function(x){return function(y){return f(y)(x);};};};- var clamp = function(lo) { return function(hi) {- return function(x) { return Math.min(hi, Math.max(lo, x)); }; - };- };- var curry = function(f) { return function(x) { return function(y) {- return f(["Tuple2",x,y]); }; };- };- var uncurry = function(f) { return function(p) {- if (p[0] !== "Tuple2") {- throw "Function was uncurry'd but was not given a pair.";- }- return f(p[1])(p[2]); };- };-- var logBase=function(b){return function(x){return Math.log(x)/Math.log(b);};};- - return {id : function(x) { return x; },- not : function(b) { return !b; },- fst : function(p) { return p[1]; },- snd : function(p) { return p[2]; },- rem : function(x) { return function(y) { return x % y; }; },- div : function(x) { return function(y) { return ~~(x / y); }; },- compare : function(x) { return function (y) {- x = (typeof x === "object") ? toText(x) : x;- y = (typeof y === "object") ? toText(y) : y;- return [ x === y ? 'EQ' : (x < y ? 'LT' : 'GT') ];- };- },- toFloat : function(x) { return x; },- round : function(n) { return Math.round(n); },- floor : function(n) { return Math.floor(n); },- ceiling : function(n) { return Math.ceil(n); },- truncate : function(n) { return ~~n; },- sqrt : Math.sqrt,- abs : Math.abs,- pi : Math.PI,- e : Math.E,- sin : Math.sin,- cos : Math.cos,- tan : Math.tan,- asin : Math.asin,- acos : Math.acos,- atan : Math.atan,- mod : mod,- min : min,- max : max,- flip : flip,- clamp : clamp,- curry : curry,- uncurry : uncurry,- logBase : logBase,- Just : Data.Maybe.Just,- Nothing : Data.Maybe.Nothing,- maybe : Data.Maybe.maybe,- map : Data.List.map,- filter : Data.List.filter,- head : Data.List.head,- tail : Data.List.tail,- last : Data.List.last,- length : Data.List.length,- reverse : Data.List.reverse,- foldr : Data.List.foldr,- foldr1 : Data.List.foldr1,- foldl : Data.List.foldl,- foldl1 : Data.List.foldl1,- and : Data.List.and,- or : Data.List.or,- forall : Data.List.forall,- exists : Data.List.exists,- sum : Data.List.sum,- product : Data.List.product,- concat : Data.List.concat,- concatMap : Data.List.concatMap,- maximum : Data.List.maximum,- minimum : Data.List.minimum,- scanl : Data.List.scanl,- scanl1 : Data.List.scanl1,- take : Data.List.take,- drop : Data.List.drop,- lift : Signal.lift,- lift2 : Signal.lift2,- lift3 : Signal.lift3,- lift4 : Signal.lift4,- foldp : Signal.foldp,- constant : Signal.constant,- count : Signal.count,- keepIf : Signal.keepIf,- dropIf : Signal.dropIf,- keepWhen : Signal.keepWhen,- dropWhen : Signal.dropWhen,- dropRepeats : Signal.dropRepeats,- sampleOn : Signal.sampleOn- };-}();-var eq = Value.eq;--Signal.addListener(document, 'elm_log', function(e) { console.log(e.value); });-Signal.addListener(document, 'elm_title', function(e) { document.title = e.value; });-Signal.addListener(document, 'elm_redirect', function(e) {- if (e.value.length > 0) { window.location = e.value; }- });--var includeGlobal = this;-(function() {- var include = function(library) {- for (var i in library) {- if (i === 'Internal') continue;- try {- includeGlobal[i] = library[i];- } catch (err) {- if (i === 'length') {- includeGlobal.execScript('var length;');- length = library[i];- continue;- }- }- }- };- var includeAs = function(name) { return function(library) {- includeGlobal[name] = includeGlobal[name] || {};- for (var i in library) {- if (i === 'Internal') continue;- includeGlobal[name][i] = library[i];- }- };- };- include (Element);- include (Text);-- color = Element.color;- height = Element.height;- show = Value.show;- - include (Color);- include (Shape);- include (Line);-- includeAs ('Time') (Signal.Time);- includeAs ('Mouse') (Signal.Mouse);- includeAs ('Keyboard') (Signal.Keyboard);- includeAs ('Window') (Signal.Window);- includeAs ('HTTP') (Signal.HTTP);- includeAs ('Input') (Signal.Input);- includeAs ('Random') (Signal.Random);--}());--var ElmCode = {};-ElmCode.Data = Data;-ElmCode.Signal = Signal;-ElmCode.Data.List = List;-ElmCode.Foreign = Foreign;-ElmCode.Prelude = Prelude;
+ elm-runtime-0.3.6.2.js view
@@ -0,0 +1,67 @@+var Guid=function(){var d=0;return{guid:function(){return d+=1}}}(),Foreign=function(){var d=function(a){for(var c=["Nil"],b=a.length;b--;)c=["Cons",a[b],c];return c},b=function(a){for(var c=[];"Cons"===a[0];)c.push(a[1]),a=a[2];return c},c=function(a){return a.slice(1)},a=function(a){return["Tuple"+a.length].concat(a)};return{JavaScript:{castJSBoolToBool:function(a){return a},castBoolToJSBool:function(a){return a},castJSNumberToFloat:function(a){return a},castFloatToJSNumber:function(a){return a},+castJSNumberToInt:function(a){return~~a},castIntToJSNumber:function(a){return a},Experimental:{castJSElementToElement:function(a){return Element.jsElement(a)},castElementToJSElement:function(a){return a}},castJSArrayToList:d,castListToJSArray:b,castJSStringToString:d,castStringToJSString:function(a){return"string"===typeof a?a:b(a).join("")},castTupleToJSTuple2:c,castTupleToJSTuple3:c,castTupleToJSTuple4:c,castTupleToJSTuple5:c,castJSTupleToTuple2:a,castJSTupleToTuple3:a,castJSTupleToTuple4:a,castJSTupleToTuple5:a}}}(),+ElmJSON=function(){function d(a){return function(h){function b(a){switch(a[0]){case "JsonNull":return null;case "JsonString":return c.castStringToJSString(a[1]);case "JsonObject":var h={},a=a[1][1],d;for(d in a)h[d]=b(a[d]);return h;case "JsonArray":h=c.castListToJSArray(a[1]);for(d=h.length;d--;)h[d]=b(h[d]);return h;default:return a[1]}}return JSON.stringify(b(["JsonObject",h]),null,c.castStringToJSString(a))}}function b(a){function h(a){switch(typeof a){case "string":return["JsonString",c.castJSStringToString(a)];+case "number":return["JsonNumber",c.castJSNumberToFloat(a)];case "boolean":return["JsonBool",c.castJSBoolToBool(a)];case "object":if(null===a)return["JsonNull"];for(var b in a)a[b]=h(a[b]);return a instanceof Array?["JsonArray",c.castJSArrayToList(a)]:["JsonObject",["JSON",a]]}}var a=JSON.parse(a),b;for(b in a)a[b]=h(a[b]);return["JSON",a]}var c=Foreign.JavaScript;return{empty:["JSON",{}],singleton:function(a){return function(h){var b={};b[c.castStringToJSString(a)]=h;return["JSON",b]}},insert:function(a){return function(h){return function(b){var b=+b[1],d={},i;for(i in b)d[i]=b[i];d[c.castStringToJSString(a)]=h;return["JSON",d]}}},lookup:function(a){return function(b){var g=c.castStringToJSString(a);return b[1].hasOwnProperty(g)?Just(b[1][g]):Nothing}},findWithDefault:function(a){return function(b){return function(g){var d=c.castStringToJSString(b);return g[1].hasOwnProperty(d)?g[1][d]:a}}},remove:function(a){return function(b){var b=b[1],d={},j;for(j in b)d[j]=b[j];delete d[c.castStringToJSString(a)];return["JSON",d]}},toPrettyJSString:d,toJSString:d(""),+fromJSString:b,toPrettyString:function(a){return function(b){return c.castJSStringToString(d(a)(b))}},toString:function(a){return c.castJSStringToString(d("")(a))},fromString:function(a){return b(c.castStringToJSString(a))},toList:function(a){var a=a[1],b=[],d;for(d in a)b.push(Value.Tuple(c.castJSStringToString(d),a[d]));return c.castJSArrayToList(b)},fromList:function(a){for(var a=c.castListToJSArray(a),b={},d=a.length;d--;)b[c.castStringToJSString(a[d][1])]=a[d][2];return["JSON",b]},JsonString:function(a){return["JsonString",+a]},JsonNumber:function(a){return["JsonNumber",a]},JsonBool:function(a){return["JsonBool",a]},JsonNull:["JsonNull"],JsonArray:function(a){return["JsonArray",a]},JsonObject:function(a){return["JsonObject",a]}}}();Foreign.JavaScript.JSON=ElmJSON;+var Value=function(){function d(a){if(0==a.length)return a;for(var a=a.replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/\n/g,"<br/>"),a=a.split("<br/>"),c=a.length;c--;){var b=a,d=c,i;i=a[c].split("");" "==i[0]&&(i[0]=" ");for(var k=i.length;--k;)" "==i[k][0]&&" "==i[k-1]&&(i[k-1]+=i[k],i[k]="");for(k=i.length;k--;)if(1<i[k].length&&" "==i[k][0]){for(var f=i[k].split(""),m=f.length-2;0<=m;m-=2)f[m]=" ";i[k]=f.join("")}i=i.join("");b[d]=i}return a.join("<br/>")}+var b=function(a,c){if("object"===typeof a){if(a===c)return!0;if(a.length!==c.length)return!1;for(var d=a.length;d--;)if(!b(a[d],c[d]))return!1;return!0}return a===c},c=function(a){if("boolean"===typeof a)return a?"True":"False";if("number"!==typeof a){if("string"===typeof a&&2>a.length)return"'"+a+"'";if(a[0]){if("Tuple"===a[0].substring(0,5)){for(var b="",d=a.length;--d;)b=","+c(a[d])+b;","===b[0]&&(b=b.substring(1));return"("+b+")"}if("Cons"===a[0])for(var d="string"===typeof a[1]?'"':"]",j="string"===+typeof a[1]?"":",",i="string"===typeof a[1]?function(a){return a}:c,b=("string"===typeof a[1]?'"':"[")+i(a[1]),a=a[2];;)if("Cons"===a[0])b+=j+i(a[1]),a=a[2];else return b+d;else{if("Nil"===a[0])return"[]";if("JSON"===a[0])return"(JSON.fromList "+c(ElmJSON.toList(a))+")";b="";for(d=a.length;--d;)b=" "+c(a[d])+b;b=a[0]+b;return 1<a.length?"("+b+")":b}}}return a+""};return{eq:b,str:function(a){for(var b=["Nil"],c=a.length;c--;)b=["Cons",a[c],b];return b},show:function(a){return Text.monospace(d(c(a)))},+Tuple:function(){var a=arguments.length,b=Array(a+1);for(b[0]="Tuple"+arguments.length;a--;)b[a+1]=arguments[a];return b},append:function(a,b){if("string"===typeof a&&"string"===typeof b)return a.concat(b);if("Nil"===a[0])return b;for(var c=["Cons",a[1],["Nil"]],d=c,a=a[2];"Cons"===a[0];)d[2]=["Cons",a[1],["Nil"]],a=a[2],d=d[2];d[2]=b;return c},listToArray:function(a){for(var b=[];"Cons"===a[0];)b.push(a[1]),a=a[2];return b},toText:function(a){if("string"===typeof a)return d(a);for(var b=[];"Cons"===+a[0];)b.push(a[1]),a=a[2];return d(b.join(""))},properEscape:d}}(),List=function(){function d(a){return function(e){if("Nil"===e[0])return e;"Cons"!==e[0]&&f("map");for(var b=["Cons",a(e[1]),["Nil"]],c=b,e=e[2];"Cons"===e[0];)c[2]=["Cons",a(e[1]),["Nil"]],e=e[2],c=c[2];return b}}function b(a){return function(e){return function(b){var c=e;if("Nil"===b[0])return c;for("Cons"!==b[0]&&f("foldl");"Cons"===b[0];)c=a(b[1])(c),b=b[2];return c}}}function c(a){return function(e){return function(b){var c=e;+if("Nil"===b[0])return c;"Cons"!==b[0]&&f("foldr");for(var d=[];"Cons"===b[0];)d.push(b[1]),b=b[2];for(b=d.length;b--;)c=a(d[b])(c);return c}}}function a(a){return function(e){var c;"Cons"!==e[0]?c=void 0:(c=e[1],e=e[2],c=b(a)(c)(e));return c}}function h(a){return function(e){return function(b){if("Nil"===b[0])return["Cons",e,["Nil"]];"Cons"!==b[0]&&f("scanl");for(var c=[e];"Cons"===b[0];)e=a(b[1])(e),c.push(e),b=b[2];for(var b=["Nil"],d=c.length;d--;)b=["Cons",c[d],b];return b}}}function g(a){return function(e){a:{for(var b=+[function(a){return"Nil"!==a[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(e){if("Cons"===e[0]){var b=e[1],e=e[2];var c=g(a)(e);"Tuple2"!==c[0]?b=void 0:(e=c[1],c=c[2],b=a(b)?["Tuple2",["Cons",b,e],c]:["Tuple2",e,["Cons",b,c]]);return b}}],c=b.length;c--;){var d=b[c](e);if(void 0!==d){e=d;break a}}e=void 0}return e}}function j(a){a:{for(var e=[function(a){return"Nil"!==a[0]?void 0:["Tuple2",["Nil"],["Nil"]]},function(a){if("Cons"!==a[0])a=void 0;else if(a=["Tuple2",a[1],j(a[2])],"Tuple2"!==a[0]||+"Tuple2"!==a[1][0])a=void 0;else var e=a[1][1],b=a[1][2],a="Tuple2"!==a[2][0]?void 0:["Tuple2",["Cons",e,a[2][1]],["Cons",b,a[2][2]]];return a}],b=e.length;b--;){var c=e[b](a);if(void 0!==c){a=c;break a}}a=void 0}return a}function i(a){return function(e){a:{for(var b=[function(a){return"Nil"!==a[0]?void 0:["Nil"]},function(a){if("Cons"===a[0]){var e=a[1];return"Nil"!==a[2][0]?void 0:["Cons",e,["Nil"]]}},function(e){if("Cons"===e[0]){var b=e[1];if("Cons"===e[2][0]){var c=e[2][1],e=e[2][2];return["Cons",+b,["Cons",a,i(a)(["Cons",c,e])]]}}}],c=b.length;c--;){var d=b[c](e);if(void 0!==d){e=d;break a}}e=void 0}return e}}function k(a){return function(e){a:{for(var b=[function(a){return"Nil"!==a[0]?void 0:["Nil"]},function(a){if("Cons"===a[0]){var e=a[1];return"Nil"!==a[2][0]?void 0:e}},function(e){if("Cons"===e[0]){var b=e[1];if("Cons"===e[2][0]){var c=e[2][1],e=e[2][2];return Value.append(b,Value.append(a,k(a)(["Cons",c,e])))}}}],c=b.length;c--;){var d=b[c](e);if(void 0!==d){e=d;break a}}e=void 0}return e}}+var f=function(a){throw"Function '"+a+"' expecting a list!";},m=b(function(a){return function(e){return["Cons",a,e]}})(["Nil"]),l=c(function(a){return function(e){return Value.append(a,e)}})(["Nil"]),o=b(function(a){return function(e){return a&&e}})(!0),p=b(function(a){return function(e){return a||e}})(!1),n=b(function(a){return function(e){return a+e}})(0),q=b(function(a){return function(e){return a*e}})(1),s=a(function(a){return function(e){return Math.max(a,e)}}),r=a(function(a){return function(e){return Math.min(a,+e)}});return{head:function(a){if("Cons"!==a[0])throw"Error: 'head' only accepts lists of length greater than one.";return a[1]},tail:function(a){if("Cons"!==a[0])throw"Error: 'tail' only accepts lists of length greater than one.";return a[2]},last:function(a){if("Cons"!==a[0])throw"Error: 'last' only accepts lists of length greater than one.";for(var e=a[1];"Cons"===a[0];)e=a[1],a=a[2];return e},map:d,foldl:b,foldr:c,foldl1:a,foldr1:function(a){return function(e){if("Nil"===e[0])throw"'foldr1' requires an non-empty list.";+"Cons"!==e[0]&&f("foldr1");for(var b=[];"Cons"===e[0];)b.push(e[1]),e=e[2];for(var e=b.pop(),c=b.length;c--;)e=a(b[c])(e);return e}},scanl:h,scanl1:function(a){return function(e){if("Cons"!==e[0])throw"Error: 'scanl1' requires a list of at least length 1.";return h(a)(e[1])(e[2])}},filter:function(a){return function(e){if("Nil"===e[0])return e;"Cons"!==e[0]&&f("filter");for(var b=[];"Cons"===e[0];)a(e[1])&&b.push(e[1]),e=e[2];for(var e=["Nil"],c=b.length;c--;)e=["Cons",b[c],e];return e}},length:function(a){for(var e=+0;"Cons"===a[0];)e+=1,a=a[2];return e},reverse:m,concat:l,concatMap:function(a){return function(e){return l(d(a)(e))}},and:o,or:p,forall:function(a){return b(function(e){return function(b){return b&&a(e)}})(!0)},exists:function(a){return b(function(e){return function(b){return b||a(e)}})(!1)},sum:n,product:q,maximum:s,minimum:r,partition:g,zipWith:function(a){return function(e){return function(b){if("Nil"===e[0]||"Nil"===b[0])return["Nil"];("Cons"!==e[0]||"Cons"!==b[0])&&f("zipWith");for(var c=[];"Cons"===+e[0]&&"Cons"===b[0];)c.push(a(e[1])(b[1])),e=e[2],b=b[2];for(var b=["Nil"],d=c.length;d--;)b=["Cons",c[d],b];return b}}},zip:function(a){return function(b){if("Nil"===a[0]||"Nil"===b[0])return["Nil"];("Cons"!==a[0]||"Cons"!==b[0])&&f("zip");for(var c=[];"Cons"===a[0]&&"Cons"===b[0];)c.push(["Tuple2",a[1],b[1]]),a=a[2],b=b[2];for(var b=["Nil"],d=c.length;d--;)b=["Cons",c[d],b];return b}},unzip:j,intersperse:i,intercalate:k,sort:function(a){if("Nil"===a[0])return a;"Cons"!==a[0]&&f("sort");for(var b=+[];"Cons"===a[0];)b.push(a[1]),a=a[2];b.sort(function(a,b){return a-b});for(var a=["Nil"],c=b.length;c--;)a=["Cons",b[c],a];return a},take:function(a){return function(b){if(0>=a)return["Nil"];if("Nil"===b[0])return b;"Cons"!==b[0]&&f("take");var c=["Cons",b[1],["Nil"]],d=c,b=b[2];for(--a;"Cons"===b[0]&&0<a;)d[2]=["Cons",b[1],["Nil"]],d=d[2],b=b[2],--a;return c}},drop:function(a){return function(b){if("Nil"===b[0])return b;for("Cons"!==b[0]&&f("drop");"Cons"===b[0]&&0<a;)b=b[2],--a;return b}}}}(),+Data=function(){var d;d=function(b){return function(a){return"Just"===b[0]?["Cons",b[1],a]:a}};var b=function(b){return function(a){return function(d){var g=b(a);return"Just"===g[0]?["Cons",g[1],d]:d}}};d={Just:function(b){return["Just",b]},Nothing:["Nothing"],catMaybes:List.foldr(d)(["Nil"]),isJust:function(b){return"Just"===b[0]},isNothing:function(b){return"Nothing"===b[0]},fromMaybe:function(b){return function(a){return"Just"===a[0]?a[1]:b}},consMaybe:d,mapMaybe:function(c){return List.foldr(b(c))(["Nil"])},+maybe:function(b){return function(a){return function(d){return"Just"===d[0]?a(d[1]):b}}}};return{String:{toText:Value.toText,properEscape:Value.properEscape},Char:{fromCode:function(b){return String.fromCharCode(b)},toCode:function(b){return b.charCodeAt(0)},toUpper:function(b){return b.toUpperCase()},toLower:function(b){return b.toLowerCase()},toLocaleUpper:function(b){return b.toLocaleUpperCase()},toLocaleLower:function(b){return b.toLocaleLowerCase()}},Maybe:d,List:List}}(),Color=function(){var d=+function(b,c,a,d){return{r:b,g:c,b:a,a:d}};return{black:d(0,0,0,1),white:d(255,255,255,1),red:d(255,0,0,1),green:d(0,255,0,1),blue:d(0,0,255,1),gray:d(128,128,128,1),grey:d(128,128,128,1),yellow:d(255,255,0,1),cyan:d(0,255,255,1),magenta:d(255,0,255,1),rgba:function(b){return function(c){return function(a){return function(h){return d(b,c,a,h)}}}},rgb:function(b){return function(c){return function(a){return d(b,c,a,1)}}},Internal:{extract:function(b){return 1===b.a?"rgb("+b.r+","+b.g+","+b.b+")":"rgba("++b.r+","+b.g+","+b.b+","+b.a+")"}}}}(),Element=function(){var d=function(a){a=document.createElement(a);a.id=Guid.guid();a.style.padding="0";a.style.margin="0";return a},b=function(a){var b=d("div");b.appendChild(a);return b},c=function(a){return function(b){return function(c){var f=d("div");f.isElmLeaf=!0;f.isElmText=!0;f.innerHTML=c;f.style.textAlign=b;0<a&&(f.style.width=a+"px");return f}}},a=c(0)("left"),h=c(0)("justify"),g=c(0)("center"),j=c(0)("right"),i=function(a){return"DIV"===a.tagName?a:+b(a)},k=function(a){a.style.styleFloat="left";a.style.cssFloat="left";return a},f=function(a){a.style.position="absolute";return a},m=function(a,b,c){for(var f=d("div"),g=c.length;g--;){var h=b(c[g]);f.appendChild(h)}f.elmFlowDirection=a;return f},l=function(a){return function(b){for(var c=[];"Cons"===b[0];)c.push(b[1]),b=b[2];3<=a&&c.reverse();b=a%3;if(0==b)return m("Y",i,c);if(1==b)return m("X",k,c);if(2==b)return m("Z",f,c)}},o=function(a){return function(b){if("A"===b.tagName)return o(a)(b.firstChild),+b;if(b.hasOwnProperty("isElmText")){var d=c(a)(b.style.textAlign)(b.innerHTML);b.style.height=d.style.height}b.style.width=a+"px";return b}};return{text:a,image:function(a){var b=d("img");b.isElmLeaf=!0;b.onload=function(){""===b.style.width&&0<this.width&&(b.style.width=b.width=this.width+"px");""===b.style.height&&0<this.height&&(b.style.height=b.height=this.height+"px");Dispatcher.adjust()};b.src=Value.toText(a);b.name=b.src;return b},fittedImage:function(a){return function(b){return function(c){var f=+d("canvas");f.style.width=a+"px";f.style.height=b+"px";f.width=a;f.height=b;f.innerHTML="Your browser does not support the canvas element.";f.isElmLeaf=!0;var g=d("img");g.onload=function(){if(f.getContext){var c=f.getContext("2d"),e=0,d=0,h=this.width,k=this.height;a/b>this.width/this.height?(k=this.width*b/a,d=(this.height-k)/2):(h=this.height*a/b,e=(this.width-h)/2);c.drawImage(g,e,d,h,k,0,0,f.width,f.height)}};g.src=Value.toText(c);return f}}},video:function(a){var a=Value.toText(a),b=d("video");+b.controls="controls";var c=d("source");c.src=a;c.type="video/"+a.substring(a.length-3,a.length);b.appendChild(c);b.isElmLeaf=!0;return b},audio:function(a){var a=Value.toText(a),b=d("video");b.controls="controls";var c=d("source");c.src=a;c.type="audio/"+a.substring(a.length-3,a.length);b.appendChild(c);b.isElmLeaf=!0;return b},collage:function(a){return function(b){return function(c){var f=d("canvas");f.style.width=a+"px";f.style.height=b+"px";f.width=a;f.height=b;if(f.getContext){var g=f.getContext("2d");+for(g.clearRect(0,0,f.width,f.height);"Cons"===c[0];)g=c[1](g),c=c[2];return f}f.innerHTML="Your browser does not support the canvas element.";f.isElmLeaf=!0;return f}}},flow:l,layers:l(2),rectangle:function(a){return function(b){var c=d("div");c.isElmLeaf=!0;c.style.width=a+"px";c.style.height=b+"px";return c}},beside:function(a){return function(b){return l(4)(["Cons",a,["Cons",b,["Nil"]]])}},above:function(a){return function(b){return l(3)(["Cons",a,["Cons",b,["Nil"]]])}},below:function(a){return function(b){return l(0)(["Cons",+a,["Cons",b,["Nil"]]])}},box:function(a){return function(b){b.style.position="absolute";b.style.margin="auto";var c=(a-1)%3,f=(a-1)/3;2>c&&(b.style.left=0);0<c&&(b.style.right=0);2>f&&(b.style.top=0);0<f&&(b.style.bottom=0);c=d("div");c.style.position="relative";c.appendChild(b);return c}},width:o,height:function(a){return function(b){("A"===b.tagName?b.firstChild:b).style.height=a+"px";return b}},size:function(a){return function(b){return function(c){var d="A"===c.tagName?c.firstChild:c;d.style.width=+a+"px";d.style.height=b+"px";return c}}},color:function(a){return function(b){b.style.backgroundColor=Color.Internal.extract(a);return b}},opacity:function(a){return function(b){b.style.opacity=a;return b}},link:function(a){return function(c){var f=d("a");f.href=Text.fromString(a);f.appendChild(c);return b(f)}},asText:function(a){return c(0)("left")(Value.show(a))},plainText:function(a){return c(0)("left")(Value.toText(a))},justifiedText:h,centeredText:g,rightedText:j,up:0,left:1,inward:2,down:3,+right:4,outward:5,correctTextSize:function(a){var b=a.style.width?a.style.width.slice(0,-2):0,c=d("div");c.innerHTML=a.innerHTML;c.style.textAlign=a.style.textAlign;0<b&&(c.style.width=b+"px");c.style.visibility="hidden";c.style.styleFloat="left";c.style.cssFloat="left";document.body.appendChild(c);var f=window.getComputedStyle(c);0>=b&&(a.style.width=f.getPropertyValue("width"));a.style.height=f.getPropertyValue("height");document.body.removeChild(c)},jsElement:function(a){return function(b){return function(c){var f=+d("div");f.isElmLeaf=!0;f.style.width=a+"px";f.style.height=b+"px";f.appendChild(c);return f}}}}}(),Text=function(){function d(a){return Value.toText(a)}var b=function(a){return function(b){return"<"+a+' style="padding:0;margin:0">'+b+"</"+a+">"}},c=function(a,b){return function(c){return"<span style='"+a+":"+b+"'>"+c+"</span>"}},a=function(a){return c("font-family",a)},h=b("h1"),g=c("font-style","italic"),b=b("b"),j=c("text-decoration","underline"),i=c("text-decoration","overline"),k=c("text-decoration",+"line-through");return{fromString:d,toText:d,header:h,height:function(a){return c("font-size",a+"em")},italic:g,bold:b,underline:j,overline:i,strikeThrough:k,monospace:a("monospace"),typeface:a,color:function(a){return c("color",Color.Internal.extract(a))},link:function(a){return function(b){return"<a href='"+d(a)+"'>"+b+"</a>"}}}}(),Shape=function(){var d=function(b,a,d,g){return{center:b,points:a,theta:d,scale:g}},b=function(b){return function(a){return function(d){return function(g){g.save();g.translate(d.center[0],+d.center[1]);g.rotate(d.theta);g.scale(d.scale,d.scale);g.beginPath();var j=d.points;g.moveTo(j[0][0],j[0][1]);for(var i=j.length;i--;)g.lineTo(j[i][0],j[i][1]);g.closePath();b?(g.fillStyle=Color.Internal.extract(a),g.fill()):(g.strokeStyle=Color.Internal.extract(a),g.stroke());g.restore();return g}}}};return{polygon:function(b){return function(a){for(var h=[];"Cons"===b[0];)h.push([b[1][1],b[1][2]]),b=b[2];a=[a[1],a[2]];return d(a,h,0,1)}},ngon:function(b){return function(a){return function(h){for(var g=+[],j=b;j--;)g.push([a*Math.cos(2*Math.PI*j/b),a*Math.sin(2*Math.PI*j/b)]);h=[h[1],h[2]];return d(h,g,0,1)}}},rect:function(b){return function(a){return function(h){var g=[[-b/2,-a/2],[b/2,-a/2],[b/2,a/2],[-b/2,a/2]],h=[h[1],h[2]];return d(h,g,0,1)}}},oval:function(b){return function(a){return function(h){for(var g=[],j=2*Math.PI;0<j;j-=Math.PI/50)g.push([b/2*Math.cos(j),a/2*Math.sin(j)]);h=[h[1],h[2]];return d(h,g,0,1)}}},move:function(b){return function(a){return function(h){return d([b+h.center[0],+a+h.center[1]],h.points,h.theta,h.scale)}}},rotate:function(b){return function(a){return d(a.center,a.points,a.theta+2*Math.PI*b,a.scale)}},scale:function(b){return function(a){return d(a.center,a.points,a.theta,a.scale*b)}},filled:b(!0),outlined:b(!1),customOutline:function(b){return function(a){return function(d){d.points.push(d.points[0]);return Line.customLine(b)(a)(d)}}}}}(),Line=function(){var d=function(b){return function(c){return function(a){if("string"===typeof b[0]){for(var d=[];"Cons"===+b[0];)d.push(b[1]),b=b[2];b=d}0===b.length&&(b=[8,4]);return function(d){d.save();d.beginPath();d.translate(a.center[0],a.center[1]);d.rotate(a.theta);d.scale(a.scale,a.scale);var h=b,i=a.points,k=i.length-1,f=i[k][0],m=i[k][1],l=0,o=0,p=0,n=0,q=0,s=0,r=h.length,t=!0,e=h[0];for(d.moveTo(f,m);k--;){l=i[k][0];o=i[k][1];p=l-f;n=o-m;for(q=Math.sqrt(p*p+n*n);e<=q;)f+=p*e/q,m+=n*e/q,d[t?"lineTo":"moveTo"](f,m),p=l-f,n=o-m,q=Math.sqrt(p*p+n*n),t=!t,s=(s+1)%r,e=h[s];0<q&&(d[t?"lineTo":"moveTo"](l,o),e-=q);+f=l;m=o}d.strokeStyle=Color.Internal.extract(c);d.stroke();d.restore();return d}}}};return{line:function(b){for(var c=[];"Cons"===b[0];)c.push([b[1][1],b[1][2]]),b=b[2];return{center:[0,0],points:c,theta:0,scale:1}},customLine:d,solid:function(b){return function(c){return function(a){a.save();a.beginPath();a.translate(c.center[0],c.center[1]);a.rotate(c.theta);a.scale(c.scale,c.scale);var d=c.points,g=d.length;for(a.moveTo(d[g-1][0],d[g-1][1]);g--;)a.lineTo(d[g][0],d[g][1]);a.strokeStyle=Color.Internal.extract(b);+a.stroke();a.restore();return a}}},dashed:d([8,4]),dotted:d([3,3])}}(),Elm=function(){var d=function(a,b,c){for(var d=a.kids,g=d.length;g--;)d[g].recv(b,c,a.id)},b=function(a){this.id=Guid.guid();this.value=a;this.kids=[];this.recv=function(a,b,c){if(b=b===this.id)this.value=c;d(this,a,b)};Dispatcher.inputs.push(this)},c=function(a,b){this.id=Guid.guid();this.value=null;this.kids=[];this.inbox={};b.reverse();this.recalc=function(){for(var c=a,d=b.length;d--;)c=c(b[d].value);this.value=c};this.recalc();+this.recv=function(a,c){this.inbox.hasOwnProperty(a)||(this.inbox[a]={changed:!1,count:0});var g=this.inbox[a];g.count+=1;c&&(g.changed=!0);g.count==b.length&&(g.changed&&this.recalc(),d(this,a,g.changed),delete this.inbox[a])};for(var c=b.length;c--;)b[c].kids.push(this)},a=function(a,b,c){this.id=Guid.guid();this.value=b;this.kids=[];this.recv=function(b,f){f&&(this.value=a(c.value)(this.value));d(this,b,f)};c.kids.push(this)},h=function(a,b,c){this.id=Guid.guid();this.value=a(c.value)?b:c.value;+this.kids=[];this.recv=function(b,f){var g=f&&!a(c.value);g&&(this.value=c.value);d(this,b,g)};c.kids.push(this)},g=function(a){this.id=Guid.guid();this.value=a.value;this.kids=[];this.recv=function(b,c){var g=c&&!eq(this.value,a.value);g&&(this.value=a.value);d(this,b,g)};a.kids.push(this)},j=function(a){return function(b){return function(d){d=new c(function(a){return function(b){return[a,b]}},[a,d]);d=new h(function(a){return a[0]},[!0,b],d);return new c(function(a){return a[1]},[d])}}},i=function(a,+b){this.id=Guid.guid();this.value=b.value;this.kids=[];this.inbox={};this.recv=function(c,g,h){if(g=g&&h===a.id)this.value=b.value;d(this,c,g)};a.kids.push(this);b.kids.push(this)};return{Input:function(a){return new b(a)},Lift:function(a,b){return new c(a,b)},Fold:function(b,c,d){return new a(b,c,d)},keepIf:function(a){return function(b){return function(c){return new h(function(b){return!a(b)},b,c)}}},dropIf:function(a){return function(b){return function(c){return new h(a,b,c)}}},keepWhen:function(a){return j(new c(function(a){return!a},+[a]))},dropWhen:j,dropRepeats:function(a){return new g(a)},sampleOn:function(a){return function(b){return new i(a,b)}}}}(),Dispatcher=function(){var d=null,b=0,c=[],a=function(b){var c=b.childNodes,d=c.length;if(b.hasOwnProperty("isElmLeaf")){b.hasOwnProperty("isElmText")&&Element.correctTextSize(b);var c=""===b.style.width?0:b.style.width.slice(0,-2)-0,h=""===b.style.height?0:b.style.height.slice(0,-2)-0;return[c,h]}if(1===d){var f=a(c[0]);""!==b.style.width&&(f[0]=b.style.width.slice(0,-2)-0);""!==+b.style.height&&(f[1]=b.style.height.slice(0,-2)-0);0!==f[0]&&(b.style.width=f[0]+"px");0!==f[1]&&(b.style.height=f[1]+"px");return f}for(var m=0,l=h=0,o=0,p=!0,n=!0;d--;)f=a(c[d]),m=Math.max(m,f[0]),h=Math.max(h,f[1]),l+=f[0],o+=f[1],p=p&&0<f[0],n=n&&0<f[1];c=m;d=b.elmFlowDirection;"X"===d&&(c=p?l:0);"Y"===d&&(h=n?o:0);0<c&&(b.style.width=c+"px");0<h&&(b.style.height=h+"px");return[c,h]},h=function(){var b=document.getElementById("content");a(b.children[0])};return{initialize:function(){d=ElmCode.main();+d.hasOwnProperty("recv")||(d=Elm.Input(d));document.getElementById("content").appendChild(d.value);h();var a=document.getElementById("widthChecker").offsetWidth;a!==window.innerWidth&&Dispatcher.notify(Window.dimensions.id,Value.Tuple(a,window.innerHeight));d=Elm.Lift(function(a){var b=document.getElementById("content"),c=b.children[0];b.replaceChild(a,c);delete c;h();return a},[d])},notify:function(a,d){b+=1;for(var h=c.length;h--;)c[h].recv(b,a,d)},adjust:h,inputs:c}}(),Signal=function(){function d(a){for(var b=+["Nil"],c=a.length;c--;)b=["Cons",a[c],b];return b}var b;b=document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)};var c,a=function(a){var b=0,c=0;a||(a=window.event);if(a.pageX||a.pageY)b=a.pageX,c=a.pageY;else if(a.clientX||a.clientY)b=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,c=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return Value.Tuple(b,c)},h=Elm.Input(Value.Tuple(0,0)),g=Elm.Input(!1),+j=Elm.Input(!1),i=Elm.Input(Value.Tuple());b(document,"click",function(){Dispatcher.notify(j.id,!0);Dispatcher.notify(i.id,Value.Tuple());Dispatcher.notify(j.id,!1)});b(document,"mousedown",function(){Dispatcher.notify(g.id,!0)});b(document,"mouseup",function(){Dispatcher.notify(g.id,!1)});b(document,"mousemove",function(b){Dispatcher.notify(h.id,a(b))});c={position:h,x:Elm.Lift(function(a){return a[1]},[h]),y:Elm.Lift(function(a){return a[2]},[h]),isClicked:j,isDown:g,clicks:i,isClickedOn:function(a){var c=+Elm.Input(!1);b(a,"click",function(){Dispatcher.notify(c.id,!0);Dispatcher.notify(c.id,!1)});return Value.Tuple(a,c)}};var k,f=Elm.Input(Value.Tuple(window.innerWidth,window.innerHeight));b(window,"resize",function(){var a=document.getElementById("widthChecker").offsetWidth;Dispatcher.notify(f.id,Value.Tuple(a,window.innerHeight))});k={dimensions:f,width:Elm.Lift(function(a){return a[1]},[f]),height:Elm.Lift(function(a){return a[2]},[f])};var m=function(a,b){return"Nil"===b[0]?b:b[1]===a?b[2]:["Cons",+b[1],m(a,b[2])]},l=Elm.Input(["Nil"]),o=Elm.Input(["Nothing"]);b(document,"keydown",function(a){var b;a:{for(b=l.value;"Nil"!==b[0];){if(b[1]===a.keyCode){b=!0;break a}b=b[2]}b=!1}b||Dispatcher.notify(l.id,["Cons",a.keyCode,l.value])});b(document,"keyup",function(a){a=m(a.keyCode,l.value);Dispatcher.notify(l.id,a)});b(window,"blur",function(){Dispatcher.notify(l.id,["Nil"])});b(document,"keypress",function(a){Dispatcher.notify(o.id,["Just",a.charCode||a.keyCode]);Dispatcher.notify(o.id,["Nothing"])});+var p={Raw:{keysDown:l,charPressed:o}},n;n=function(a){return function(b){var c=Elm.Input(["Waiting"]),f={};window.XMLHttpRequest?f=new XMLHttpRequest:window.ActiveXObject&&(f=new ActiveXObject("Microsoft.XMLHTTP"));f.onreadystatechange=function(){4===f.readyState&&Dispatcher.notify(c.id,200===f.status?["Success",d(f.responseText)]:["Failure",f.status,d(f.statusText)])};f.open(a,Value.toText(b),!0);f.send(null);return c}};var q=function(a){return function(b){var c=Elm.Input(["Nothing"]),b=Elm.Lift(function(b){if("Just"!==+b[0]){try{Dispatcher.notify(c.id,["Nothing"])}catch(f){}return[]}try{Dispatcher.notify(c.id,["Just",["Waiting"]])}catch(h){c.value=["Just",["Waiting"]]}var g={};window.XMLHttpRequest?g=new XMLHttpRequest:window.ActiveXObject&&(g=new ActiveXObject("Microsoft.XMLHTTP"));g.onreadystatechange=function(){4===g.readyState&&Dispatcher.notify(c.id,["Just",200===g.status?["Success",d(g.responseText)]:["Failure",g.status,d(g.statusText)]])};g.open(a,Value.toText(b[1]),!0);g.send(null);return[]},[b]);return Elm.Lift(function(a){return function(){return a}},+[c,b])}};n={get:n("GET"),post:n("POST"),gets:q("GET"),posts:q("POST")};var s=function(a){a.isElmLeaf=!0;var c=Elm.Input(["Nil"]);b(a,"keyup",function(){Dispatcher.notify(c.id,d(a.value));a.focus()});return Value.Tuple(a,c)},r=function(a){a=document.createElement(a);a.id=Guid.guid();return a},t=function(a){for(var c=r("select"),d=[];"Cons"===a[0];){var f=r("option"),g=Text.toText(a[1][1]);f.value=g;f.innerHTML=g;c.appendChild(f);d.push(a[1][2]);a=a[2]}var h=Elm.Input(d[0]);b(c,"change",function(){Dispatcher.notify(h.id,+d[c.selectedIndex])});return Value.Tuple(c,h)};return{addListener:b,Mouse:c,Keyboard:p,Time:{every:function(a){var a=1E3*a,b=Elm.Input(0),c=0;setInterval(function(){c+=a;Dispatcher.notify(b.id,c/1E3)},a);return b},after:function(a){var a=1E3*a,b=Elm.Input(!1);setTimeout(function(){Dispatcher.notify(b.id,!0)},a);return b},before:function(a){var a=1E3*a,b=Elm.Input(!0);setTimeout(function(){Dispatcher.notify(b.id,!1)},a);return b}},Window:k,HTTP:n,Random:{inRange:function(a){return function(b){return Elm.Input(Math.floor(Math.random()*+(b-a+1))+a)}},randomize:function(a){return function(b){return function(c){return Elm.Lift(function(){return Math.floor(Math.random()*(b-a+1))+a},[c])}}}},Input:{textArea:function(a){return function(b){var c=r("textarea");c.rows=b;c.cols=a;return s(c,"")}},textField:function(a){var b=r("input");b.type="text";return s(b,a)},password:function(a){var b=r("input");b.type="password";return s(b,a)},checkbox:function(a){var c=r("input");c.type="checkbox";c.checked=a;var d=Elm.Input(a);b(c,"change",function(){Dispatcher.notify(d.id,+c.checked)});return Value.Tuple(c,d)},dropDown:t,stringDropDown:function(a){return t(List.map(function(a){return Value.Tuple(a,a)})(a))},button:function(a){var c=r("input");c.type="button";c.value=Foreign.JavaScript.castStringToJSString(a);var d=Elm.Input(!1);b(c,"click",function(){Dispatcher.notify(d.id,!0);Dispatcher.notify(d.id,!1)});return Value.Tuple(c,d)}},constant:function(a){return Elm.Input(a)},lift:function(a){return function(b){return Elm.Lift(a,[b])}},lift2:function(a){return function(b){return function(c){return Elm.Lift(a,+[b,c])}}},lift3:function(a){return function(b){return function(c){return function(d){return Elm.Lift(a,[b,c,d])}}}},lift4:function(a){return function(b){return function(c){return function(d){return function(f){return Elm.Lift(a,[b,c,d,f])}}}}},foldp:function(a){return function(b){return function(c){return Elm.Fold(a,b,c)}}},count:function(a){return Elm.Fold(function(){return function(a){return a+1}},0,a)},keepIf:Elm.keepIf,dropIf:Elm.dropIf,keepWhen:Elm.keepWhen,dropWhen:Elm.dropWhen,dropRepeats:Elm.dropRepeats,+sampleOn:Elm.sampleOn}}(),Prelude=function(){var d=function(b){return function(c){var a=b%c,a=0==b?0:0<c?0<=b?a:a+c:-d(-b)(-c);return a==c?0:a}};return{id:function(b){return b},not:function(b){return!b},fst:function(b){return b[1]},snd:function(b){return b[2]},rem:function(b){return function(c){return b%c}},div:function(b){return function(c){return~~(b/c)}},compare:function(b){return function(c){b="object"===typeof b?toText(b):b;c="object"===typeof c?toText(c):c;return[b===c?"EQ":b<c?"LT":"GT"]}},+toFloat:function(b){return b},round:function(b){return Math.round(b)},floor:function(b){return Math.floor(b)},ceiling:function(b){return Math.ceil(b)},truncate:function(b){return~~b},sqrt:Math.sqrt,abs:Math.abs,pi:Math.PI,e:Math.E,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,mod:d,min:function(b){return function(c){return Math.min(b,c)}},max:function(b){return function(c){return Math.max(b,c)}},flip:function(b){return function(c){return function(a){return b(a)(c)}}},+clamp:function(b){return function(c){return function(a){return Math.min(c,Math.max(b,a))}}},curry:function(b){return function(c){return function(a){return b(["Tuple2",c,a])}}},uncurry:function(b){return function(c){if("Tuple2"!==c[0])throw"Function was uncurry'd but was not given a pair.";return b(c[1])(c[2])}},logBase:function(b){return function(c){return Math.log(c)/Math.log(b)}},Just:Data.Maybe.Just,Nothing:Data.Maybe.Nothing,maybe:Data.Maybe.maybe,map:Data.List.map,filter:Data.List.filter,head:Data.List.head,+tail:Data.List.tail,last:Data.List.last,length:Data.List.length,reverse:Data.List.reverse,foldr:Data.List.foldr,foldr1:Data.List.foldr1,foldl:Data.List.foldl,foldl1:Data.List.foldl1,and:Data.List.and,or:Data.List.or,forall:Data.List.forall,exists:Data.List.exists,sum:Data.List.sum,product:Data.List.product,concat:Data.List.concat,concatMap:Data.List.concatMap,maximum:Data.List.maximum,minimum:Data.List.minimum,scanl:Data.List.scanl,scanl1:Data.List.scanl1,take:Data.List.take,drop:Data.List.drop,lift:Signal.lift,+lift2:Signal.lift2,lift3:Signal.lift3,lift4:Signal.lift4,foldp:Signal.foldp,constant:Signal.constant,count:Signal.count,keepIf:Signal.keepIf,dropIf:Signal.dropIf,keepWhen:Signal.keepWhen,dropWhen:Signal.dropWhen,dropRepeats:Signal.dropRepeats,sampleOn:Signal.sampleOn}}(),eq=Value.eq;Signal.addListener(document,"elm_log",function(d){console.log(d.value)});Signal.addListener(document,"elm_title",function(d){document.title=d.value});+Signal.addListener(document,"elm_redirect",function(d){0<d.value.length&&(window.location=d.value)});var includeGlobal=this;+(function(){var d=function(b){for(var a in b)if("Internal"!==a)try{includeGlobal[a]=b[a]}catch(d){"length"===a&&(includeGlobal.execScript("var length;"),length=b[a])}},b=function(b){return function(a){includeGlobal[b]=includeGlobal[b]||{};for(var d in a)"Internal"!==d&&(includeGlobal[b][d]=a[d])}};d(Element);d(Text);color=Element.color;height=Element.height;show=Value.show;d(Color);d(Shape);d(Line);b("Time")(Signal.Time);b("Mouse")(Signal.Mouse);b("Keyboard")(Signal.Keyboard);b("Window")(Signal.Window);+b("HTTP")(Signal.HTTP);b("Input")(Signal.Input);b("Random")(Signal.Random)})();var ElmCode={};ElmCode.Data=Data;ElmCode.Signal=Signal;ElmCode.Data.List=List;ElmCode.Foreign=Foreign;ElmCode.Prelude=Prelude;
src/Compiler.hs view
@@ -35,11 +35,11 @@ , generate_noscript = True &= help "Add generated <noscript> tag to HTML output." } &= help "Compile Elm programs to HTML, CSS, and JavaScript." &=- summary "The Elm Compiler v0.3.6.1, (c) Evan Czaplicki"+ summary "The Elm Compiler v0.3.6.2, (c) Evan Czaplicki" main = do args <- cmdArgs elm- mini <- getDataFileName "elm-runtime-0.3.6.1.js"+ mini <- getDataFileName "elm-runtime-0.3.6.2.js" compileArgs mini args compileArgs mini (ELM _ [] _ _ _ _ _) =