(function(scope){ 'use strict'; function F(arity, fun, wrapper) { wrapper.a = arity; wrapper.f = fun; return wrapper; } function F2(fun) { return F(2, fun, function(a) { return function(b) { return fun(a,b); }; }) } function F3(fun) { return F(3, fun, function(a) { return function(b) { return function(c) { return fun(a, b, c); }; }; }); } function F4(fun) { return F(4, fun, function(a) { return function(b) { return function(c) { return function(d) { return fun(a, b, c, d); }; }; }; }); } function F5(fun) { return F(5, fun, function(a) { return function(b) { return function(c) { return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; }; }); } function F6(fun) { return F(6, fun, function(a) { return function(b) { return function(c) { return function(d) { return function(e) { return function(f) { return fun(a, b, c, d, e, f); }; }; }; }; }; }); } function F7(fun) { return F(7, fun, function(a) { return function(b) { return function(c) { return function(d) { return function(e) { return function(f) { return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; }; }); } function F8(fun) { return F(8, fun, function(a) { return function(b) { return function(c) { return function(d) { return function(e) { return function(f) { return function(g) { return function(h) { return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; }; }); } function F9(fun) { return F(9, fun, function(a) { return function(b) { return function(c) { return function(d) { return function(e) { return function(f) { return function(g) { return function(h) { return function(i) { return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; }; }); } function A2(fun, a, b) { return fun.a === 2 ? fun.f(a, b) : fun(a)(b); } function A3(fun, a, b, c) { return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c); } function A4(fun, a, b, c, d) { return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d); } function A5(fun, a, b, c, d, e) { return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e); } function A6(fun, a, b, c, d, e, f) { return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f); } function A7(fun, a, b, c, d, e, f, g) { return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g); } function A8(fun, a, b, c, d, e, f, g, h) { return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h); } function A9(fun, a, b, c, d, e, f, g, h, i) { return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i); } console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.'); var _JsArray_empty = []; function _JsArray_singleton(value) { return [value]; } function _JsArray_length(array) { return array.length; } var _JsArray_initialize = F3(function(size, offset, func) { var result = new Array(size); for (var i = 0; i < size; i++) { result[i] = func(offset + i); } return result; }); var _JsArray_initializeFromList = F2(function (max, ls) { var result = new Array(max); for (var i = 0; i < max && ls.b; i++) { result[i] = ls.a; ls = ls.b; } result.length = i; return _Utils_Tuple2(result, ls); }); var _JsArray_unsafeGet = F2(function(index, array) { return array[index]; }); var _JsArray_unsafeSet = F3(function(index, value, array) { var length = array.length; var result = new Array(length); for (var i = 0; i < length; i++) { result[i] = array[i]; } result[index] = value; return result; }); var _JsArray_push = F2(function(value, array) { var length = array.length; var result = new Array(length + 1); for (var i = 0; i < length; i++) { result[i] = array[i]; } result[length] = value; return result; }); var _JsArray_foldl = F3(function(func, acc, array) { var length = array.length; for (var i = 0; i < length; i++) { acc = A2(func, array[i], acc); } return acc; }); var _JsArray_foldr = F3(function(func, acc, array) { for (var i = array.length - 1; i >= 0; i--) { acc = A2(func, array[i], acc); } return acc; }); var _JsArray_map = F2(function(func, array) { var length = array.length; var result = new Array(length); for (var i = 0; i < length; i++) { result[i] = func(array[i]); } return result; }); var _JsArray_indexedMap = F3(function(func, offset, array) { var length = array.length; var result = new Array(length); for (var i = 0; i < length; i++) { result[i] = A2(func, offset + i, array[i]); } return result; }); var _JsArray_slice = F3(function(from, to, array) { return array.slice(from, to); }); var _JsArray_appendN = F3(function(n, dest, source) { var destLen = dest.length; var itemsToCopy = n - destLen; if (itemsToCopy > source.length) { itemsToCopy = source.length; } var size = destLen + itemsToCopy; var result = new Array(size); for (var i = 0; i < destLen; i++) { result[i] = dest[i]; } for (var i = 0; i < itemsToCopy; i++) { result[i + destLen] = source[i]; } return result; }); // LOG var _Debug_log_UNUSED = F2(function(tag, value) { return value; }); var _Debug_log = F2(function(tag, value) { console.log(tag + ': ' + _Debug_toString(value)); return value; }); // TODOS function _Debug_todo(moduleName, region) { return function(message) { _Debug_crash(8, moduleName, region, message); }; } function _Debug_todoCase(moduleName, region, value) { return function(message) { _Debug_crash(9, moduleName, region, value, message); }; } // TO STRING function _Debug_toString_UNUSED(value) { return ''; } function _Debug_toString(value) { return _Debug_toAnsiString(false, value); } function _Debug_toAnsiString(ansi, value) { if (typeof value === 'function') { return _Debug_internalColor(ansi, ''); } if (typeof value === 'boolean') { return _Debug_ctorColor(ansi, value ? 'True' : 'False'); } if (typeof value === 'number') { return _Debug_numberColor(ansi, value + ''); } if (value instanceof String) { return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'"); } if (typeof value === 'string') { return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"'); } if (typeof value === 'object' && '$' in value) { var tag = value.$; if (typeof tag === 'number') { return _Debug_internalColor(ansi, ''); } if (tag[0] === '#') { var output = []; for (var k in value) { if (k === '$') continue; output.push(_Debug_toAnsiString(ansi, value[k])); } return '(' + output.join(',') + ')'; } if (tag === 'Set_elm_builtin') { return _Debug_ctorColor(ansi, 'Set') + _Debug_fadeColor(ansi, '.fromList') + ' ' + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value)); } if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin') { return _Debug_ctorColor(ansi, 'Dict') + _Debug_fadeColor(ansi, '.fromList') + ' ' + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value)); } if (tag === 'Array_elm_builtin') { return _Debug_ctorColor(ansi, 'Array') + _Debug_fadeColor(ansi, '.fromList') + ' ' + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value)); } if (tag === '::' || tag === '[]') { var output = '['; value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b) for (; value.b; value = value.b) // WHILE_CONS { output += ',' + _Debug_toAnsiString(ansi, value.a); } return output + ']'; } var output = ''; for (var i in value) { if (i === '$') continue; var str = _Debug_toAnsiString(ansi, value[i]); var c0 = str[0]; var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0; output += ' ' + (parenless ? str : '(' + str + ')'); } return _Debug_ctorColor(ansi, tag) + output; } if (typeof DataView === 'function' && value instanceof DataView) { return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>'); } if (typeof File !== 'undefined' && value instanceof File) { return _Debug_internalColor(ansi, '<' + value.name + '>'); } if (typeof value === 'object') { var output = []; for (var key in value) { var field = key[0] === '_' ? key.slice(1) : key; output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key])); } if (output.length === 0) { return '{}'; } return '{ ' + output.join(', ') + ' }'; } return _Debug_internalColor(ansi, ''); } function _Debug_addSlashes(str, isChar) { var s = str .replace(/\\/g, '\\\\') .replace(/\n/g, '\\n') .replace(/\t/g, '\\t') .replace(/\r/g, '\\r') .replace(/\v/g, '\\v') .replace(/\0/g, '\\0'); if (isChar) { return s.replace(/\'/g, '\\\''); } else { return s.replace(/\"/g, '\\"'); } } function _Debug_ctorColor(ansi, string) { return ansi ? '\x1b[96m' + string + '\x1b[0m' : string; } function _Debug_numberColor(ansi, string) { return ansi ? '\x1b[95m' + string + '\x1b[0m' : string; } function _Debug_stringColor(ansi, string) { return ansi ? '\x1b[93m' + string + '\x1b[0m' : string; } function _Debug_charColor(ansi, string) { return ansi ? '\x1b[92m' + string + '\x1b[0m' : string; } function _Debug_fadeColor(ansi, string) { return ansi ? '\x1b[37m' + string + '\x1b[0m' : string; } function _Debug_internalColor(ansi, string) { return ansi ? '\x1b[36m' + string + '\x1b[0m' : string; } function _Debug_toHexDigit(n) { return String.fromCharCode(n < 10 ? 48 + n : 55 + n); } // CRASH function _Debug_crash_UNUSED(identifier) { throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md'); } function _Debug_crash(identifier, fact1, fact2, fact3, fact4) { switch(identifier) { case 0: throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.'); case 1: throw new Error('Browser.application programs cannot handle URLs like this:\n\n ' + document.location.href + '\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.'); case 2: var jsonErrorString = fact1; throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString); case 3: var portName = fact1; throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.'); case 4: var portName = fact1; var problem = fact2; throw new Error('Trying to send an unexpected type of value through port `' + portName + '`:\n' + problem); case 5: throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.'); case 6: var moduleName = fact1; throw new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!'); case 8: var moduleName = fact1; var region = fact2; var message = fact3; throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message); case 9: var moduleName = fact1; var region = fact2; var value = fact3; var message = fact4; throw new Error( 'TODO in module `' + moduleName + '` from the `case` expression ' + _Debug_regionToString(region) + '\n\nIt received the following value:\n\n ' + _Debug_toString(value).replace('\n', '\n ') + '\n\nBut the branch that handles it says:\n\n ' + message.replace('\n', '\n ') ); case 10: throw new Error('Bug in https://github.com/elm/virtual-dom/issues'); case 11: throw new Error('Cannot perform mod 0. Division by zero error.'); } } function _Debug_regionToString(region) { if (region.start.line === region.end.line) { return 'on line ' + region.start.line; } return 'on lines ' + region.start.line + ' through ' + region.end.line; } // EQUALITY function _Utils_eq(x, y) { for ( var pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack); isEqual && (pair = stack.pop()); isEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack) ) {} return isEqual; } function _Utils_eqHelp(x, y, depth, stack) { if (x === y) { return true; } if (typeof x !== 'object' || x === null || y === null) { typeof x === 'function' && _Debug_crash(5); return false; } if (depth > 100) { stack.push(_Utils_Tuple2(x,y)); return true; } /**/ if (x.$ === 'Set_elm_builtin') { x = $elm$core$Set$toList(x); y = $elm$core$Set$toList(y); } if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin') { x = $elm$core$Dict$toList(x); y = $elm$core$Dict$toList(y); } //*/ /**_UNUSED/ if (x.$ < 0) { x = $elm$core$Dict$toList(x); y = $elm$core$Dict$toList(y); } //*/ for (var key in x) { if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack)) { return false; } } return true; } var _Utils_equal = F2(_Utils_eq); var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); }); // COMPARISONS // Code in Generate/JavaScript.hs, Basics.js, and List.js depends on // the particular integer values assigned to LT, EQ, and GT. function _Utils_cmp(x, y, ord) { if (typeof x !== 'object') { return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1; } /**/ if (x instanceof String) { var a = x.valueOf(); var b = y.valueOf(); return a === b ? 0 : a < b ? -1 : 1; } //*/ /**_UNUSED/ if (typeof x.$ === 'undefined') //*/ /**/ if (x.$[0] === '#') //*/ { return (ord = _Utils_cmp(x.a, y.a)) ? ord : (ord = _Utils_cmp(x.b, y.b)) ? ord : _Utils_cmp(x.c, y.c); } // traverse conses until end of a list or a mismatch for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES return ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0); } var _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; }); var _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; }); var _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; }); var _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; }); var _Utils_compare = F2(function(x, y) { var n = _Utils_cmp(x, y); return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ; }); // COMMON VALUES var _Utils_Tuple0_UNUSED = 0; var _Utils_Tuple0 = { $: '#0' }; function _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; } function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; } function _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; } function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } function _Utils_chr_UNUSED(c) { return c; } function _Utils_chr(c) { return new String(c); } // RECORDS function _Utils_update(oldRecord, updatedFields) { var newRecord = {}; for (var key in oldRecord) { newRecord[key] = oldRecord[key]; } for (var key in updatedFields) { newRecord[key] = updatedFields[key]; } return newRecord; } // APPEND var _Utils_append = F2(_Utils_ap); function _Utils_ap(xs, ys) { // append Strings if (typeof xs === 'string') { return xs + ys; } // append Lists if (!xs.b) { return ys; } var root = _List_Cons(xs.a, ys); xs = xs.b for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS { curr = curr.b = _List_Cons(xs.a, ys); } return root; } var _List_Nil_UNUSED = { $: 0 }; var _List_Nil = { $: '[]' }; function _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; } function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; } var _List_cons = F2(_List_Cons); function _List_fromArray(arr) { var out = _List_Nil; for (var i = arr.length; i--; ) { out = _List_Cons(arr[i], out); } return out; } function _List_toArray(xs) { for (var out = []; xs.b; xs = xs.b) // WHILE_CONS { out.push(xs.a); } return out; } var _List_map2 = F3(function(f, xs, ys) { for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES { arr.push(A2(f, xs.a, ys.a)); } return _List_fromArray(arr); }); var _List_map3 = F4(function(f, xs, ys, zs) { for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES { arr.push(A3(f, xs.a, ys.a, zs.a)); } return _List_fromArray(arr); }); var _List_map4 = F5(function(f, ws, xs, ys, zs) { for (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES { arr.push(A4(f, ws.a, xs.a, ys.a, zs.a)); } return _List_fromArray(arr); }); var _List_map5 = F6(function(f, vs, ws, xs, ys, zs) { for (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES { arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a)); } return _List_fromArray(arr); }); var _List_sortBy = F2(function(f, xs) { return _List_fromArray(_List_toArray(xs).sort(function(a, b) { return _Utils_cmp(f(a), f(b)); })); }); var _List_sortWith = F2(function(f, xs) { return _List_fromArray(_List_toArray(xs).sort(function(a, b) { var ord = A2(f, a, b); return ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1; })); }); // MATH var _Basics_add = F2(function(a, b) { return a + b; }); var _Basics_sub = F2(function(a, b) { return a - b; }); var _Basics_mul = F2(function(a, b) { return a * b; }); var _Basics_fdiv = F2(function(a, b) { return a / b; }); var _Basics_idiv = F2(function(a, b) { return (a / b) | 0; }); var _Basics_pow = F2(Math.pow); var _Basics_remainderBy = F2(function(b, a) { return a % b; }); // https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf var _Basics_modBy = F2(function(modulus, x) { var answer = x % modulus; return modulus === 0 ? _Debug_crash(11) : ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0)) ? answer + modulus : answer; }); // TRIGONOMETRY var _Basics_pi = Math.PI; var _Basics_e = Math.E; var _Basics_cos = Math.cos; var _Basics_sin = Math.sin; var _Basics_tan = Math.tan; var _Basics_acos = Math.acos; var _Basics_asin = Math.asin; var _Basics_atan = Math.atan; var _Basics_atan2 = F2(Math.atan2); // MORE MATH function _Basics_toFloat(x) { return x; } function _Basics_truncate(n) { return n | 0; } function _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; } var _Basics_ceiling = Math.ceil; var _Basics_floor = Math.floor; var _Basics_round = Math.round; var _Basics_sqrt = Math.sqrt; var _Basics_log = Math.log; var _Basics_isNaN = isNaN; // BOOLEANS function _Basics_not(bool) { return !bool; } var _Basics_and = F2(function(a, b) { return a && b; }); var _Basics_or = F2(function(a, b) { return a || b; }); var _Basics_xor = F2(function(a, b) { return a !== b; }); var _String_cons = F2(function(chr, str) { return chr + str; }); function _String_uncons(string) { var word = string.charCodeAt(0); return !isNaN(word) ? $elm$core$Maybe$Just( 0xD800 <= word && word <= 0xDBFF ? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2)) : _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1)) ) : $elm$core$Maybe$Nothing; } var _String_append = F2(function(a, b) { return a + b; }); function _String_length(str) { return str.length; } var _String_map = F2(function(func, string) { var len = string.length; var array = new Array(len); var i = 0; while (i < len) { var word = string.charCodeAt(i); if (0xD800 <= word && word <= 0xDBFF) { array[i] = func(_Utils_chr(string[i] + string[i+1])); i += 2; continue; } array[i] = func(_Utils_chr(string[i])); i++; } return array.join(''); }); var _String_filter = F2(function(isGood, str) { var arr = []; var len = str.length; var i = 0; while (i < len) { var char = str[i]; var word = str.charCodeAt(i); i++; if (0xD800 <= word && word <= 0xDBFF) { char += str[i]; i++; } if (isGood(_Utils_chr(char))) { arr.push(char); } } return arr.join(''); }); function _String_reverse(str) { var len = str.length; var arr = new Array(len); var i = 0; while (i < len) { var word = str.charCodeAt(i); if (0xD800 <= word && word <= 0xDBFF) { arr[len - i] = str[i + 1]; i++; arr[len - i] = str[i - 1]; i++; } else { arr[len - i] = str[i]; i++; } } return arr.join(''); } var _String_foldl = F3(function(func, state, string) { var len = string.length; var i = 0; while (i < len) { var char = string[i]; var word = string.charCodeAt(i); i++; if (0xD800 <= word && word <= 0xDBFF) { char += string[i]; i++; } state = A2(func, _Utils_chr(char), state); } return state; }); var _String_foldr = F3(function(func, state, string) { var i = string.length; while (i--) { var char = string[i]; var word = string.charCodeAt(i); if (0xDC00 <= word && word <= 0xDFFF) { i--; char = string[i] + char; } state = A2(func, _Utils_chr(char), state); } return state; }); var _String_split = F2(function(sep, str) { return str.split(sep); }); var _String_join = F2(function(sep, strs) { return strs.join(sep); }); var _String_slice = F3(function(start, end, str) { return str.slice(start, end); }); function _String_trim(str) { return str.trim(); } function _String_trimLeft(str) { return str.replace(/^\s+/, ''); } function _String_trimRight(str) { return str.replace(/\s+$/, ''); } function _String_words(str) { return _List_fromArray(str.trim().split(/\s+/g)); } function _String_lines(str) { return _List_fromArray(str.split(/\r\n|\r|\n/g)); } function _String_toUpper(str) { return str.toUpperCase(); } function _String_toLower(str) { return str.toLowerCase(); } var _String_any = F2(function(isGood, string) { var i = string.length; while (i--) { var char = string[i]; var word = string.charCodeAt(i); if (0xDC00 <= word && word <= 0xDFFF) { i--; char = string[i] + char; } if (isGood(_Utils_chr(char))) { return true; } } return false; }); var _String_all = F2(function(isGood, string) { var i = string.length; while (i--) { var char = string[i]; var word = string.charCodeAt(i); if (0xDC00 <= word && word <= 0xDFFF) { i--; char = string[i] + char; } if (!isGood(_Utils_chr(char))) { return false; } } return true; }); var _String_contains = F2(function(sub, str) { return str.indexOf(sub) > -1; }); var _String_startsWith = F2(function(sub, str) { return str.indexOf(sub) === 0; }); var _String_endsWith = F2(function(sub, str) { return str.length >= sub.length && str.lastIndexOf(sub) === str.length - sub.length; }); var _String_indexes = F2(function(sub, str) { var subLen = sub.length; if (subLen < 1) { return _List_Nil; } var i = 0; var is = []; while ((i = str.indexOf(sub, i)) > -1) { is.push(i); i = i + subLen; } return _List_fromArray(is); }); // TO STRING function _String_fromNumber(number) { return number + ''; } // INT CONVERSIONS function _String_toInt(str) { var total = 0; var code0 = str.charCodeAt(0); var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0; for (var i = start; i < str.length; ++i) { var code = str.charCodeAt(i); if (code < 0x30 || 0x39 < code) { return $elm$core$Maybe$Nothing; } total = 10 * total + code - 0x30; } return i == start ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total); } // FLOAT CONVERSIONS function _String_toFloat(s) { // check if it is a hex, octal, or binary number if (s.length === 0 || /[\sxbo]/.test(s)) { return $elm$core$Maybe$Nothing; } var n = +s; // faster isNaN check return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing; } function _String_fromList(chars) { return _List_toArray(chars).join(''); } function _Char_toCode(char) { var code = char.charCodeAt(0); if (0xD800 <= code && code <= 0xDBFF) { return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000 } return code; } function _Char_fromCode(code) { return _Utils_chr( (code < 0 || 0x10FFFF < code) ? '\uFFFD' : (code <= 0xFFFF) ? String.fromCharCode(code) : (code -= 0x10000, String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00) ) ); } function _Char_toUpper(char) { return _Utils_chr(char.toUpperCase()); } function _Char_toLower(char) { return _Utils_chr(char.toLowerCase()); } function _Char_toLocaleUpper(char) { return _Utils_chr(char.toLocaleUpperCase()); } function _Char_toLocaleLower(char) { return _Utils_chr(char.toLocaleLowerCase()); } /**/ function _Json_errorToString(error) { return $elm$json$Json$Decode$errorToString(error); } //*/ // CORE DECODERS function _Json_succeed(msg) { return { $: 0, a: msg }; } function _Json_fail(msg) { return { $: 1, a: msg }; } function _Json_decodePrim(decoder) { return { $: 2, b: decoder }; } var _Json_decodeInt = _Json_decodePrim(function(value) { return (typeof value !== 'number') ? _Json_expecting('an INT', value) : (-2147483647 < value && value < 2147483647 && (value | 0) === value) ? $elm$core$Result$Ok(value) : (isFinite(value) && !(value % 1)) ? $elm$core$Result$Ok(value) : _Json_expecting('an INT', value); }); var _Json_decodeBool = _Json_decodePrim(function(value) { return (typeof value === 'boolean') ? $elm$core$Result$Ok(value) : _Json_expecting('a BOOL', value); }); var _Json_decodeFloat = _Json_decodePrim(function(value) { return (typeof value === 'number') ? $elm$core$Result$Ok(value) : _Json_expecting('a FLOAT', value); }); var _Json_decodeValue = _Json_decodePrim(function(value) { return $elm$core$Result$Ok(_Json_wrap(value)); }); var _Json_decodeString = _Json_decodePrim(function(value) { return (typeof value === 'string') ? $elm$core$Result$Ok(value) : (value instanceof String) ? $elm$core$Result$Ok(value + '') : _Json_expecting('a STRING', value); }); function _Json_decodeList(decoder) { return { $: 3, b: decoder }; } function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; } function _Json_decodeNull(value) { return { $: 5, c: value }; } var _Json_decodeField = F2(function(field, decoder) { return { $: 6, d: field, b: decoder }; }); var _Json_decodeIndex = F2(function(index, decoder) { return { $: 7, e: index, b: decoder }; }); function _Json_decodeKeyValuePairs(decoder) { return { $: 8, b: decoder }; } function _Json_mapMany(f, decoders) { return { $: 9, f: f, g: decoders }; } var _Json_andThen = F2(function(callback, decoder) { return { $: 10, b: decoder, h: callback }; }); function _Json_oneOf(decoders) { return { $: 11, g: decoders }; } // DECODING OBJECTS var _Json_map1 = F2(function(f, d1) { return _Json_mapMany(f, [d1]); }); var _Json_map2 = F3(function(f, d1, d2) { return _Json_mapMany(f, [d1, d2]); }); var _Json_map3 = F4(function(f, d1, d2, d3) { return _Json_mapMany(f, [d1, d2, d3]); }); var _Json_map4 = F5(function(f, d1, d2, d3, d4) { return _Json_mapMany(f, [d1, d2, d3, d4]); }); var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5) { return _Json_mapMany(f, [d1, d2, d3, d4, d5]); }); var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6) { return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]); }); var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7) { return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]); }); var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8) { return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]); }); // DECODE var _Json_runOnString = F2(function(decoder, string) { try { var value = JSON.parse(string); return _Json_runHelp(decoder, value); } catch (e) { return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string))); } }); var _Json_run = F2(function(decoder, value) { return _Json_runHelp(decoder, _Json_unwrap(value)); }); function _Json_runHelp(decoder, value) { switch (decoder.$) { case 2: return decoder.b(value); case 5: return (value === null) ? $elm$core$Result$Ok(decoder.c) : _Json_expecting('null', value); case 3: if (!_Json_isArray(value)) { return _Json_expecting('a LIST', value); } return _Json_runArrayDecoder(decoder.b, value, _List_fromArray); case 4: if (!_Json_isArray(value)) { return _Json_expecting('an ARRAY', value); } return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray); case 6: var field = decoder.d; if (typeof value !== 'object' || value === null || !(field in value)) { return _Json_expecting('an OBJECT with a field named `' + field + '`', value); } var result = _Json_runHelp(decoder.b, value[field]); return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a)); case 7: var index = decoder.e; if (!_Json_isArray(value)) { return _Json_expecting('an ARRAY', value); } if (index >= value.length) { return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value); } var result = _Json_runHelp(decoder.b, value[index]); return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a)); case 8: if (typeof value !== 'object' || value === null || _Json_isArray(value)) { return _Json_expecting('an OBJECT', value); } var keyValuePairs = _List_Nil; // TODO test perf of Object.keys and switch when support is good enough for (var key in value) { if (value.hasOwnProperty(key)) { var result = _Json_runHelp(decoder.b, value[key]); if (!$elm$core$Result$isOk(result)) { return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a)); } keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs); } } return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs)); case 9: var answer = decoder.f; var decoders = decoder.g; for (var i = 0; i < decoders.length; i++) { var result = _Json_runHelp(decoders[i], value); if (!$elm$core$Result$isOk(result)) { return result; } answer = answer(result.a); } return $elm$core$Result$Ok(answer); case 10: var result = _Json_runHelp(decoder.b, value); return (!$elm$core$Result$isOk(result)) ? result : _Json_runHelp(decoder.h(result.a), value); case 11: var errors = _List_Nil; for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS { var result = _Json_runHelp(temp.a, value); if ($elm$core$Result$isOk(result)) { return result; } errors = _List_Cons(result.a, errors); } return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors))); case 1: return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value))); case 0: return $elm$core$Result$Ok(decoder.a); } } function _Json_runArrayDecoder(decoder, value, toElmValue) { var len = value.length; var array = new Array(len); for (var i = 0; i < len; i++) { var result = _Json_runHelp(decoder, value[i]); if (!$elm$core$Result$isOk(result)) { return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a)); } array[i] = result.a; } return $elm$core$Result$Ok(toElmValue(array)); } function _Json_isArray(value) { return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList); } function _Json_toElmArray(array) { return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; }); } function _Json_expecting(type, value) { return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value))); } // EQUALITY function _Json_equality(x, y) { if (x === y) { return true; } if (x.$ !== y.$) { return false; } switch (x.$) { case 0: case 1: return x.a === y.a; case 2: return x.b === y.b; case 5: return x.c === y.c; case 3: case 4: case 8: return _Json_equality(x.b, y.b); case 6: return x.d === y.d && _Json_equality(x.b, y.b); case 7: return x.e === y.e && _Json_equality(x.b, y.b); case 9: return x.f === y.f && _Json_listEquality(x.g, y.g); case 10: return x.h === y.h && _Json_equality(x.b, y.b); case 11: return _Json_listEquality(x.g, y.g); } } function _Json_listEquality(aDecoders, bDecoders) { var len = aDecoders.length; if (len !== bDecoders.length) { return false; } for (var i = 0; i < len; i++) { if (!_Json_equality(aDecoders[i], bDecoders[i])) { return false; } } return true; } // ENCODE var _Json_encode = F2(function(indentLevel, value) { return JSON.stringify(_Json_unwrap(value), null, indentLevel) + ''; }); function _Json_wrap(value) { return { $: 0, a: value }; } function _Json_unwrap(value) { return value.a; } function _Json_wrap_UNUSED(value) { return value; } function _Json_unwrap_UNUSED(value) { return value; } function _Json_emptyArray() { return []; } function _Json_emptyObject() { return {}; } var _Json_addField = F3(function(key, value, object) { object[key] = _Json_unwrap(value); return object; }); function _Json_addEntry(func) { return F2(function(entry, array) { array.push(_Json_unwrap(func(entry))); return array; }); } var _Json_encodeNull = _Json_wrap(null); var _Bitwise_and = F2(function(a, b) { return a & b; }); var _Bitwise_or = F2(function(a, b) { return a | b; }); var _Bitwise_xor = F2(function(a, b) { return a ^ b; }); function _Bitwise_complement(a) { return ~a; }; var _Bitwise_shiftLeftBy = F2(function(offset, a) { return a << offset; }); var _Bitwise_shiftRightBy = F2(function(offset, a) { return a >> offset; }); var _Bitwise_shiftRightZfBy = F2(function(offset, a) { return a >>> offset; }); // TASKS function _Scheduler_succeed(value) { return { $: 0, a: value }; } function _Scheduler_fail(error) { return { $: 1, a: error }; } function _Scheduler_binding(callback) { return { $: 2, b: callback, c: null }; } var _Scheduler_andThen = F2(function(callback, task) { return { $: 3, b: callback, d: task }; }); var _Scheduler_onError = F2(function(callback, task) { return { $: 4, b: callback, d: task }; }); function _Scheduler_receive(callback) { return { $: 5, b: callback }; } // PROCESSES var _Scheduler_guid = 0; function _Scheduler_rawSpawn(task) { var proc = { $: 0, e: _Scheduler_guid++, f: task, g: null, h: [] }; _Scheduler_enqueue(proc); return proc; } function _Scheduler_spawn(task) { return _Scheduler_binding(function(callback) { callback(_Scheduler_succeed(_Scheduler_rawSpawn(task))); }); } function _Scheduler_rawSend(proc, msg) { proc.h.push(msg); _Scheduler_enqueue(proc); } var _Scheduler_send = F2(function(proc, msg) { return _Scheduler_binding(function(callback) { _Scheduler_rawSend(proc, msg); callback(_Scheduler_succeed(_Utils_Tuple0)); }); }); function _Scheduler_kill(proc) { return _Scheduler_binding(function(callback) { var task = proc.f; if (task.$ === 2 && task.c) { task.c(); } proc.f = null; callback(_Scheduler_succeed(_Utils_Tuple0)); }); } /* STEP PROCESSES type alias Process = { $ : tag , id : unique_id , root : Task , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack } , mailbox : [msg] } */ var _Scheduler_working = false; var _Scheduler_queue = []; function _Scheduler_enqueue(proc) { _Scheduler_queue.push(proc); if (_Scheduler_working) { return; } _Scheduler_working = true; while (proc = _Scheduler_queue.shift()) { _Scheduler_step(proc); } _Scheduler_working = false; } function _Scheduler_step(proc) { while (proc.f) { var rootTag = proc.f.$; if (rootTag === 0 || rootTag === 1) { while (proc.g && proc.g.$ !== rootTag) { proc.g = proc.g.i; } if (!proc.g) { return; } proc.f = proc.g.b(proc.f.a); proc.g = proc.g.i; } else if (rootTag === 2) { proc.f.c = proc.f.b(function(newRoot) { proc.f = newRoot; _Scheduler_enqueue(proc); }); return; } else if (rootTag === 5) { if (proc.h.length === 0) { return; } proc.f = proc.f.b(proc.h.shift()); } else // if (rootTag === 3 || rootTag === 4) { proc.g = { $: rootTag === 3 ? 0 : 1, b: proc.f.b, i: proc.g }; proc.f = proc.f.d; } } } function _Process_sleep(time) { return _Scheduler_binding(function(callback) { var id = setTimeout(function() { callback(_Scheduler_succeed(_Utils_Tuple0)); }, time); return function() { clearTimeout(id); }; }); } // PROGRAMS var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) { return _Platform_initialize( flagDecoder, args, impl.init, impl.update, impl.subscriptions, function() { return function() {} } ); }); // INITIALIZE A PROGRAM function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder) { var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined)); $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/); var managers = {}; var initPair = init(result.a); var model = initPair.a; var stepper = stepperBuilder(sendToApp, model); var ports = _Platform_setupEffects(managers, sendToApp); function sendToApp(msg, viewMetadata) { var pair = A2(update, msg, model); stepper(model = pair.a, viewMetadata); _Platform_enqueueEffects(managers, pair.b, subscriptions(model)); } _Platform_enqueueEffects(managers, initPair.b, subscriptions(model)); return ports ? { ports: ports } : {}; } // TRACK PRELOADS // // This is used by code in elm/browser and elm/http // to register any HTTP requests that are triggered by init. // var _Platform_preload; function _Platform_registerPreload(url) { _Platform_preload.add(url); } // EFFECT MANAGERS var _Platform_effectManagers = {}; function _Platform_setupEffects(managers, sendToApp) { var ports; // setup all necessary effect managers for (var key in _Platform_effectManagers) { var manager = _Platform_effectManagers[key]; if (manager.a) { ports = ports || {}; ports[key] = manager.a(key, sendToApp); } managers[key] = _Platform_instantiateManager(manager, sendToApp); } return ports; } function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap) { return { b: init, c: onEffects, d: onSelfMsg, e: cmdMap, f: subMap }; } function _Platform_instantiateManager(info, sendToApp) { var router = { g: sendToApp, h: undefined }; var onEffects = info.c; var onSelfMsg = info.d; var cmdMap = info.e; var subMap = info.f; function loop(state) { return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg) { var value = msg.a; if (msg.$ === 0) { return A3(onSelfMsg, router, value, state); } return cmdMap && subMap ? A4(onEffects, router, value.i, value.j, state) : A3(onEffects, router, cmdMap ? value.i : value.j, state); })); } return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b)); } // ROUTING var _Platform_sendToApp = F2(function(router, msg) { return _Scheduler_binding(function(callback) { router.g(msg); callback(_Scheduler_succeed(_Utils_Tuple0)); }); }); var _Platform_sendToSelf = F2(function(router, msg) { return A2(_Scheduler_send, router.h, { $: 0, a: msg }); }); // BAGS function _Platform_leaf(home) { return function(value) { return { $: 1, k: home, l: value }; }; } function _Platform_batch(list) { return { $: 2, m: list }; } var _Platform_map = F2(function(tagger, bag) { return { $: 3, n: tagger, o: bag } }); // PIPE BAGS INTO EFFECT MANAGERS // // Effects must be queued! // // Say your init contains a synchronous command, like Time.now or Time.here // // - This will produce a batch of effects (FX_1) // - The synchronous task triggers the subsequent `update` call // - This will produce a batch of effects (FX_2) // // If we just start dispatching FX_2, subscriptions from FX_2 can be processed // before subscriptions from FX_1. No good! Earlier versions of this code had // this problem, leading to these reports: // // https://github.com/elm/core/issues/980 // https://github.com/elm/core/pull/981 // https://github.com/elm/compiler/issues/1776 // // The queue is necessary to avoid ordering issues for synchronous commands. // Why use true/false here? Why not just check the length of the queue? // The goal is to detect "are we currently dispatching effects?" If we // are, we need to bail and let the ongoing while loop handle things. // // Now say the queue has 1 element. When we dequeue the final element, // the queue will be empty, but we are still actively dispatching effects. // So you could get queue jumping in a really tricky category of cases. // var _Platform_effectsQueue = []; var _Platform_effectsActive = false; function _Platform_enqueueEffects(managers, cmdBag, subBag) { _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag }); if (_Platform_effectsActive) return; _Platform_effectsActive = true; for (var fx; fx = _Platform_effectsQueue.shift(); ) { _Platform_dispatchEffects(fx.p, fx.q, fx.r); } _Platform_effectsActive = false; } function _Platform_dispatchEffects(managers, cmdBag, subBag) { var effectsDict = {}; _Platform_gatherEffects(true, cmdBag, effectsDict, null); _Platform_gatherEffects(false, subBag, effectsDict, null); for (var home in managers) { _Scheduler_rawSend(managers[home], { $: 'fx', a: effectsDict[home] || { i: _List_Nil, j: _List_Nil } }); } } function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers) { switch (bag.$) { case 1: var home = bag.k; var effect = _Platform_toEffect(isCmd, home, taggers, bag.l); effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]); return; case 2: for (var list = bag.m; list.b; list = list.b) // WHILE_CONS { _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers); } return; case 3: _Platform_gatherEffects(isCmd, bag.o, effectsDict, { s: bag.n, t: taggers }); return; } } function _Platform_toEffect(isCmd, home, taggers, value) { function applyTaggers(x) { for (var temp = taggers; temp; temp = temp.t) { x = temp.s(x); } return x; } var map = isCmd ? _Platform_effectManagers[home].e : _Platform_effectManagers[home].f; return A2(map, applyTaggers, value) } function _Platform_insert(isCmd, newEffect, effects) { effects = effects || { i: _List_Nil, j: _List_Nil }; isCmd ? (effects.i = _List_Cons(newEffect, effects.i)) : (effects.j = _List_Cons(newEffect, effects.j)); return effects; } // PORTS function _Platform_checkPortName(name) { if (_Platform_effectManagers[name]) { _Debug_crash(3, name) } } // OUTGOING PORTS function _Platform_outgoingPort(name, converter) { _Platform_checkPortName(name); _Platform_effectManagers[name] = { e: _Platform_outgoingPortMap, u: converter, a: _Platform_setupOutgoingPort }; return _Platform_leaf(name); } var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; }); function _Platform_setupOutgoingPort(name) { var subs = []; var converter = _Platform_effectManagers[name].u; // CREATE MANAGER var init = _Process_sleep(0); _Platform_effectManagers[name].b = init; _Platform_effectManagers[name].c = F3(function(router, cmdList, state) { for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS { // grab a separate reference to subs in case unsubscribe is called var currentSubs = subs; var value = _Json_unwrap(converter(cmdList.a)); for (var i = 0; i < currentSubs.length; i++) { currentSubs[i](value); } } return init; }); // PUBLIC API function subscribe(callback) { subs.push(callback); } function unsubscribe(callback) { // copy subs into a new array in case unsubscribe is called within a // subscribed callback subs = subs.slice(); var index = subs.indexOf(callback); if (index >= 0) { subs.splice(index, 1); } } return { subscribe: subscribe, unsubscribe: unsubscribe }; } // INCOMING PORTS function _Platform_incomingPort(name, converter) { _Platform_checkPortName(name); _Platform_effectManagers[name] = { f: _Platform_incomingPortMap, u: converter, a: _Platform_setupIncomingPort }; return _Platform_leaf(name); } var _Platform_incomingPortMap = F2(function(tagger, finalTagger) { return function(value) { return tagger(finalTagger(value)); }; }); function _Platform_setupIncomingPort(name, sendToApp) { var subs = _List_Nil; var converter = _Platform_effectManagers[name].u; // CREATE MANAGER var init = _Scheduler_succeed(null); _Platform_effectManagers[name].b = init; _Platform_effectManagers[name].c = F3(function(router, subList, state) { subs = subList; return init; }); // PUBLIC API function send(incomingValue) { var result = A2(_Json_run, converter, _Json_wrap(incomingValue)); $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a); var value = result.a; for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS { sendToApp(temp.a(value)); } } return { send: send }; } // EXPORT ELM MODULES // // Have DEBUG and PROD versions so that we can (1) give nicer errors in // debug mode and (2) not pay for the bits needed for that in prod mode. // function _Platform_export_UNUSED(exports) { scope['Elm'] ? _Platform_mergeExportsProd(scope['Elm'], exports) : scope['Elm'] = exports; } function _Platform_mergeExportsProd(obj, exports) { for (var name in exports) { (name in obj) ? (name == 'init') ? _Debug_crash(6) : _Platform_mergeExportsProd(obj[name], exports[name]) : (obj[name] = exports[name]); } } function _Platform_export(exports) { scope['Elm'] ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports) : scope['Elm'] = exports; } function _Platform_mergeExportsDebug(moduleName, obj, exports) { for (var name in exports) { (name in obj) ? (name == 'init') ? _Debug_crash(6, moduleName) : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name]) : (obj[name] = exports[name]); } } // HELPERS var _VirtualDom_divertHrefToApp; var _VirtualDom_doc = typeof document !== 'undefined' ? document : {}; function _VirtualDom_appendChild(parent, child) { parent.appendChild(child); } var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args) { // NOTE: this function needs _Platform_export available to work /**_UNUSED/ var node = args['node']; //*/ /**/ var node = args && args['node'] ? args['node'] : _Debug_crash(0); //*/ node.parentNode.replaceChild( _VirtualDom_render(virtualNode, function() {}), node ); return {}; }); // TEXT function _VirtualDom_text(string) { return { $: 0, a: string }; } // NODE var _VirtualDom_nodeNS = F2(function(namespace, tag) { return F2(function(factList, kidList) { for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS { var kid = kidList.a; descendantsCount += (kid.b || 0); kids.push(kid); } descendantsCount += kids.length; return { $: 1, c: tag, d: _VirtualDom_organizeFacts(factList), e: kids, f: namespace, b: descendantsCount }; }); }); var _VirtualDom_node = _VirtualDom_nodeNS(undefined); // KEYED NODE var _VirtualDom_keyedNodeNS = F2(function(namespace, tag) { return F2(function(factList, kidList) { for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS { var kid = kidList.a; descendantsCount += (kid.b.b || 0); kids.push(kid); } descendantsCount += kids.length; return { $: 2, c: tag, d: _VirtualDom_organizeFacts(factList), e: kids, f: namespace, b: descendantsCount }; }); }); var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined); // CUSTOM function _VirtualDom_custom(factList, model, render, diff) { return { $: 3, d: _VirtualDom_organizeFacts(factList), g: model, h: render, i: diff }; } // MAP var _VirtualDom_map = F2(function(tagger, node) { return { $: 4, j: tagger, k: node, b: 1 + (node.b || 0) }; }); // LAZY function _VirtualDom_thunk(refs, thunk) { return { $: 5, l: refs, m: thunk, k: undefined }; } var _VirtualDom_lazy = F2(function(func, a) { return _VirtualDom_thunk([func, a], function() { return func(a); }); }); var _VirtualDom_lazy2 = F3(function(func, a, b) { return _VirtualDom_thunk([func, a, b], function() { return A2(func, a, b); }); }); var _VirtualDom_lazy3 = F4(function(func, a, b, c) { return _VirtualDom_thunk([func, a, b, c], function() { return A3(func, a, b, c); }); }); var _VirtualDom_lazy4 = F5(function(func, a, b, c, d) { return _VirtualDom_thunk([func, a, b, c, d], function() { return A4(func, a, b, c, d); }); }); var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e) { return _VirtualDom_thunk([func, a, b, c, d, e], function() { return A5(func, a, b, c, d, e); }); }); var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f) { return _VirtualDom_thunk([func, a, b, c, d, e, f], function() { return A6(func, a, b, c, d, e, f); }); }); var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g) { return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() { return A7(func, a, b, c, d, e, f, g); }); }); var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h) { return _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() { return A8(func, a, b, c, d, e, f, g, h); }); }); // FACTS var _VirtualDom_on = F2(function(key, handler) { return { $: 'a0', n: key, o: handler }; }); var _VirtualDom_style = F2(function(key, value) { return { $: 'a1', n: key, o: value }; }); var _VirtualDom_property = F2(function(key, value) { return { $: 'a2', n: key, o: value }; }); var _VirtualDom_attribute = F2(function(key, value) { return { $: 'a3', n: key, o: value }; }); var _VirtualDom_attributeNS = F3(function(namespace, key, value) { return { $: 'a4', n: key, o: { f: namespace, o: value } }; }); // XSS ATTACK VECTOR CHECKS function _VirtualDom_noScript(tag) { return tag == 'script' ? 'p' : tag; } function _VirtualDom_noOnOrFormAction(key) { return /^(on|formAction$)/i.test(key) ? 'data-' + key : key; } function _VirtualDom_noInnerHtmlOrFormAction(key) { return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; } function _VirtualDom_noJavaScriptUri_UNUSED(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value; } function _VirtualDom_noJavaScriptUri(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' : value; } function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value; } function _VirtualDom_noJavaScriptOrHtmlUri(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' : value; } // MAP FACTS var _VirtualDom_mapAttribute = F2(function(func, attr) { return (attr.$ === 'a0') ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o)) : attr; }); function _VirtualDom_mapHandler(func, handler) { var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); // 0 = Normal // 1 = MayStopPropagation // 2 = MayPreventDefault // 3 = Custom return { $: handler.$, a: !tag ? A2($elm$json$Json$Decode$map, func, handler.a) : A3($elm$json$Json$Decode$map2, tag < 3 ? _VirtualDom_mapEventTuple : _VirtualDom_mapEventRecord, $elm$json$Json$Decode$succeed(func), handler.a ) }; } var _VirtualDom_mapEventTuple = F2(function(func, tuple) { return _Utils_Tuple2(func(tuple.a), tuple.b); }); var _VirtualDom_mapEventRecord = F2(function(func, record) { return { message: func(record.message), stopPropagation: record.stopPropagation, preventDefault: record.preventDefault } }); // ORGANIZE FACTS function _VirtualDom_organizeFacts(factList) { for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS { var entry = factList.a; var tag = entry.$; var key = entry.n; var value = entry.o; if (tag === 'a2') { (key === 'className') ? _VirtualDom_addClass(facts, key, _Json_unwrap(value)) : facts[key] = _Json_unwrap(value); continue; } var subFacts = facts[tag] || (facts[tag] = {}); (tag === 'a3' && key === 'class') ? _VirtualDom_addClass(subFacts, key, value) : subFacts[key] = value; } return facts; } function _VirtualDom_addClass(object, key, newClass) { var classes = object[key]; object[key] = classes ? classes + ' ' + newClass : newClass; } // RENDER function _VirtualDom_render(vNode, eventNode) { var tag = vNode.$; if (tag === 5) { return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode); } if (tag === 0) { return _VirtualDom_doc.createTextNode(vNode.a); } if (tag === 4) { var subNode = vNode.k; var tagger = vNode.j; while (subNode.$ === 4) { typeof tagger !== 'object' ? tagger = [tagger, subNode.j] : tagger.push(subNode.j); subNode = subNode.k; } var subEventRoot = { j: tagger, p: eventNode }; var domNode = _VirtualDom_render(subNode, subEventRoot); domNode.elm_event_node_ref = subEventRoot; return domNode; } if (tag === 3) { var domNode = vNode.h(vNode.g); _VirtualDom_applyFacts(domNode, eventNode, vNode.d); return domNode; } // at this point `tag` must be 1 or 2 var domNode = vNode.f ? _VirtualDom_doc.createElementNS(vNode.f, vNode.c) : _VirtualDom_doc.createElement(vNode.c); if (_VirtualDom_divertHrefToApp && vNode.c == 'a') { domNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode)); } _VirtualDom_applyFacts(domNode, eventNode, vNode.d); for (var kids = vNode.e, i = 0; i < kids.length; i++) { _VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode)); } return domNode; } // APPLY FACTS function _VirtualDom_applyFacts(domNode, eventNode, facts) { for (var key in facts) { var value = facts[key]; key === 'a1' ? _VirtualDom_applyStyles(domNode, value) : key === 'a0' ? _VirtualDom_applyEvents(domNode, eventNode, value) : key === 'a3' ? _VirtualDom_applyAttrs(domNode, value) : key === 'a4' ? _VirtualDom_applyAttrsNS(domNode, value) : ((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value); } } // APPLY STYLES function _VirtualDom_applyStyles(domNode, styles) { var domNodeStyle = domNode.style; for (var key in styles) { domNodeStyle[key] = styles[key]; } } // APPLY ATTRS function _VirtualDom_applyAttrs(domNode, attrs) { for (var key in attrs) { var value = attrs[key]; typeof value !== 'undefined' ? domNode.setAttribute(key, value) : domNode.removeAttribute(key); } } // APPLY NAMESPACED ATTRS function _VirtualDom_applyAttrsNS(domNode, nsAttrs) { for (var key in nsAttrs) { var pair = nsAttrs[key]; var namespace = pair.f; var value = pair.o; typeof value !== 'undefined' ? domNode.setAttributeNS(namespace, key, value) : domNode.removeAttributeNS(namespace, key); } } // APPLY EVENTS function _VirtualDom_applyEvents(domNode, eventNode, events) { var allCallbacks = domNode.elmFs || (domNode.elmFs = {}); for (var key in events) { var newHandler = events[key]; var oldCallback = allCallbacks[key]; if (!newHandler) { domNode.removeEventListener(key, oldCallback); allCallbacks[key] = undefined; continue; } if (oldCallback) { var oldHandler = oldCallback.q; if (oldHandler.$ === newHandler.$) { oldCallback.q = newHandler; continue; } domNode.removeEventListener(key, oldCallback); } oldCallback = _VirtualDom_makeCallback(eventNode, newHandler); domNode.addEventListener(key, oldCallback, _VirtualDom_passiveSupported && { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 } ); allCallbacks[key] = oldCallback; } } // PASSIVE EVENTS var _VirtualDom_passiveSupported; try { window.addEventListener('t', null, Object.defineProperty({}, 'passive', { get: function() { _VirtualDom_passiveSupported = true; } })); } catch(e) {} // EVENT HANDLERS function _VirtualDom_makeCallback(eventNode, initialHandler) { function callback(event) { var handler = callback.q; var result = _Json_runHelp(handler.a, event); if (!$elm$core$Result$isOk(result)) { return; } var tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler); // 0 = Normal // 1 = MayStopPropagation // 2 = MayPreventDefault // 3 = Custom var value = result.a; var message = !tag ? value : tag < 3 ? value.a : value.message; var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation; var currentEventNode = ( stopPropagation && event.stopPropagation(), (tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(), eventNode ); var tagger; var i; while (tagger = currentEventNode.j) { if (typeof tagger == 'function') { message = tagger(message); } else { for (var i = tagger.length; i--; ) { message = tagger[i](message); } } currentEventNode = currentEventNode.p; } currentEventNode(message, stopPropagation); // stopPropagation implies isSync } callback.q = initialHandler; return callback; } function _VirtualDom_equalEvents(x, y) { return x.$ == y.$ && _Json_equality(x.a, y.a); } // DIFF // TODO: Should we do patches like in iOS? // // type Patch // = At Int Patch // | Batch (List Patch) // | Change ... // // How could it not be better? // function _VirtualDom_diff(x, y) { var patches = []; _VirtualDom_diffHelp(x, y, patches, 0); return patches; } function _VirtualDom_pushPatch(patches, type, index, data) { var patch = { $: type, r: index, s: data, t: undefined, u: undefined }; patches.push(patch); return patch; } function _VirtualDom_diffHelp(x, y, patches, index) { if (x === y) { return; } var xType = x.$; var yType = y.$; // Bail if you run into different types of nodes. Implies that the // structure has changed significantly and it's not worth a diff. if (xType !== yType) { if (xType === 1 && yType === 2) { y = _VirtualDom_dekey(y); yType = 1; } else { _VirtualDom_pushPatch(patches, 0, index, y); return; } } // Now we know that both nodes are the same $. switch (yType) { case 5: var xRefs = x.l; var yRefs = y.l; var i = xRefs.length; var same = i === yRefs.length; while (same && i--) { same = xRefs[i] === yRefs[i]; } if (same) { y.k = x.k; return; } y.k = y.m(); var subPatches = []; _VirtualDom_diffHelp(x.k, y.k, subPatches, 0); subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches); return; case 4: // gather nested taggers var xTaggers = x.j; var yTaggers = y.j; var nesting = false; var xSubNode = x.k; while (xSubNode.$ === 4) { nesting = true; typeof xTaggers !== 'object' ? xTaggers = [xTaggers, xSubNode.j] : xTaggers.push(xSubNode.j); xSubNode = xSubNode.k; } var ySubNode = y.k; while (ySubNode.$ === 4) { nesting = true; typeof yTaggers !== 'object' ? yTaggers = [yTaggers, ySubNode.j] : yTaggers.push(ySubNode.j); ySubNode = ySubNode.k; } // Just bail if different numbers of taggers. This implies the // structure of the virtual DOM has changed. if (nesting && xTaggers.length !== yTaggers.length) { _VirtualDom_pushPatch(patches, 0, index, y); return; } // check if taggers are "the same" if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers) { _VirtualDom_pushPatch(patches, 2, index, yTaggers); } // diff everything below the taggers _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1); return; case 0: if (x.a !== y.a) { _VirtualDom_pushPatch(patches, 3, index, y.a); } return; case 1: _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids); return; case 2: _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids); return; case 3: if (x.h !== y.h) { _VirtualDom_pushPatch(patches, 0, index, y); return; } var factsDiff = _VirtualDom_diffFacts(x.d, y.d); factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); var patch = y.i(x.g, y.g); patch && _VirtualDom_pushPatch(patches, 5, index, patch); return; } } // assumes the incoming arrays are the same length function _VirtualDom_pairwiseRefEqual(as, bs) { for (var i = 0; i < as.length; i++) { if (as[i] !== bs[i]) { return false; } } return true; } function _VirtualDom_diffNodes(x, y, patches, index, diffKids) { // Bail if obvious indicators have changed. Implies more serious // structural changes such that it's not worth it to diff. if (x.c !== y.c || x.f !== y.f) { _VirtualDom_pushPatch(patches, 0, index, y); return; } var factsDiff = _VirtualDom_diffFacts(x.d, y.d); factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff); diffKids(x, y, patches, index); } // DIFF FACTS // TODO Instead of creating a new diff object, it's possible to just test if // there *is* a diff. During the actual patch, do the diff again and make the // modifications directly. This way, there's no new allocations. Worth it? function _VirtualDom_diffFacts(x, y, category) { var diff; // look for changes and removals for (var xKey in x) { if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4') { var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey); if (subDiff) { diff = diff || {}; diff[xKey] = subDiff; } continue; } // remove if not in the new facts if (!(xKey in y)) { diff = diff || {}; diff[xKey] = !category ? (typeof x[xKey] === 'string' ? '' : null) : (category === 'a1') ? '' : (category === 'a0' || category === 'a3') ? undefined : { f: x[xKey].f, o: undefined }; continue; } var xValue = x[xKey]; var yValue = y[xKey]; // reference equal, so don't worry about it if (xValue === yValue && xKey !== 'value' && xKey !== 'checked' || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue)) { continue; } diff = diff || {}; diff[xKey] = yValue; } // add new stuff for (var yKey in y) { if (!(yKey in x)) { diff = diff || {}; diff[yKey] = y[yKey]; } } return diff; } // DIFF KIDS function _VirtualDom_diffKids(xParent, yParent, patches, index) { var xKids = xParent.e; var yKids = yParent.e; var xLen = xKids.length; var yLen = yKids.length; // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS if (xLen > yLen) { _VirtualDom_pushPatch(patches, 6, index, { v: yLen, i: xLen - yLen }); } else if (xLen < yLen) { _VirtualDom_pushPatch(patches, 7, index, { v: xLen, e: yKids }); } // PAIRWISE DIFF EVERYTHING ELSE for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++) { var xKid = xKids[i]; _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index); index += xKid.b || 0; } } // KEYED DIFF function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex) { var localPatches = []; var changes = {}; // Dict String Entry var inserts = []; // Array { index : Int, entry : Entry } // type Entry = { tag : String, vnode : VNode, index : Int, data : _ } var xKids = xParent.e; var yKids = yParent.e; var xLen = xKids.length; var yLen = yKids.length; var xIndex = 0; var yIndex = 0; var index = rootIndex; while (xIndex < xLen && yIndex < yLen) { var x = xKids[xIndex]; var y = yKids[yIndex]; var xKey = x.a; var yKey = y.a; var xNode = x.b; var yNode = y.b; var newMatch = undefined; var oldMatch = undefined; // check if keys match if (xKey === yKey) { index++; _VirtualDom_diffHelp(xNode, yNode, localPatches, index); index += xNode.b || 0; xIndex++; yIndex++; continue; } // look ahead 1 to detect insertions and removals. var xNext = xKids[xIndex + 1]; var yNext = yKids[yIndex + 1]; if (xNext) { var xNextKey = xNext.a; var xNextNode = xNext.b; oldMatch = yKey === xNextKey; } if (yNext) { var yNextKey = yNext.a; var yNextNode = yNext.b; newMatch = xKey === yNextKey; } // swap x and y if (newMatch && oldMatch) { index++; _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts); index += xNode.b || 0; index++; _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index); index += xNextNode.b || 0; xIndex += 2; yIndex += 2; continue; } // insert y if (newMatch) { index++; _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index); index += xNode.b || 0; xIndex += 1; yIndex += 2; continue; } // remove x if (oldMatch) { index++; _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); index += xNode.b || 0; index++; _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index); index += xNextNode.b || 0; xIndex += 2; yIndex += 1; continue; } // remove x, insert y if (xNext && xNextKey === yNextKey) { index++; _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index); _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts); index += xNode.b || 0; index++; _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index); index += xNextNode.b || 0; xIndex += 2; yIndex += 2; continue; } break; } // eat up any remaining nodes with removeNode and insertNode while (xIndex < xLen) { index++; var x = xKids[xIndex]; var xNode = x.b; _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index); index += xNode.b || 0; xIndex++; } while (yIndex < yLen) { var endInserts = endInserts || []; var y = yKids[yIndex]; _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts); yIndex++; } if (localPatches.length > 0 || inserts.length > 0 || endInserts) { _VirtualDom_pushPatch(patches, 8, rootIndex, { w: localPatches, x: inserts, y: endInserts }); } } // CHANGES FROM KEYED DIFF var _VirtualDom_POSTFIX = '_elmW6BL'; function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts) { var entry = changes[key]; // never seen this key before if (!entry) { entry = { c: 0, z: vnode, r: yIndex, s: undefined }; inserts.push({ r: yIndex, A: entry }); changes[key] = entry; return; } // this key was removed earlier, a match! if (entry.c === 1) { inserts.push({ r: yIndex, A: entry }); entry.c = 2; var subPatches = []; _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r); entry.r = yIndex; entry.s.s = { w: subPatches, A: entry }; return; } // this key has already been inserted or moved, a duplicate! _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts); } function _VirtualDom_removeNode(changes, localPatches, key, vnode, index) { var entry = changes[key]; // never seen this key before if (!entry) { var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined); changes[key] = { c: 1, z: vnode, r: index, s: patch }; return; } // this key was inserted earlier, a match! if (entry.c === 0) { entry.c = 2; var subPatches = []; _VirtualDom_diffHelp(vnode, entry.z, subPatches, index); _VirtualDom_pushPatch(localPatches, 9, index, { w: subPatches, A: entry }); return; } // this key has already been removed or moved, a duplicate! _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index); } // ADD DOM NODES // // Each DOM node has an "index" assigned in order of traversal. It is important // to minimize our crawl over the actual DOM, so these indexes (along with the // descendantsCount of virtual nodes) let us skip touching entire subtrees of // the DOM if we know there are no patches there. function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode) { _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode); } // assumes `patches` is non-empty and indexes increase monotonically. function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode) { var patch = patches[i]; var index = patch.r; while (index === low) { var patchType = patch.$; if (patchType === 1) { _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode); } else if (patchType === 8) { patch.t = domNode; patch.u = eventNode; var subPatches = patch.s.w; if (subPatches.length > 0) { _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); } } else if (patchType === 9) { patch.t = domNode; patch.u = eventNode; var data = patch.s; if (data) { data.A.s = domNode; var subPatches = data.w; if (subPatches.length > 0) { _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode); } } } else { patch.t = domNode; patch.u = eventNode; } i++; if (!(patch = patches[i]) || (index = patch.r) > high) { return i; } } var tag = vNode.$; if (tag === 4) { var subNode = vNode.k; while (subNode.$ === 4) { subNode = subNode.k; } return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref); } // tag must be 1 or 2 at this point var vKids = vNode.e; var childNodes = domNode.childNodes; for (var j = 0; j < vKids.length; j++) { low++; var vKid = tag === 1 ? vKids[j] : vKids[j].b; var nextLow = low + (vKid.b || 0); if (low <= index && index <= nextLow) { i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode); if (!(patch = patches[i]) || (index = patch.r) > high) { return i; } } low = nextLow; } return i; } // APPLY PATCHES function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode) { if (patches.length === 0) { return rootDomNode; } _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode); return _VirtualDom_applyPatchesHelp(rootDomNode, patches); } function _VirtualDom_applyPatchesHelp(rootDomNode, patches) { for (var i = 0; i < patches.length; i++) { var patch = patches[i]; var localDomNode = patch.t var newNode = _VirtualDom_applyPatch(localDomNode, patch); if (localDomNode === rootDomNode) { rootDomNode = newNode; } } return rootDomNode; } function _VirtualDom_applyPatch(domNode, patch) { switch (patch.$) { case 0: return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u); case 4: _VirtualDom_applyFacts(domNode, patch.u, patch.s); return domNode; case 3: domNode.replaceData(0, domNode.length, patch.s); return domNode; case 1: return _VirtualDom_applyPatchesHelp(domNode, patch.s); case 2: if (domNode.elm_event_node_ref) { domNode.elm_event_node_ref.j = patch.s; } else { domNode.elm_event_node_ref = { j: patch.s, p: patch.u }; } return domNode; case 6: var data = patch.s; for (var i = 0; i < data.i; i++) { domNode.removeChild(domNode.childNodes[data.v]); } return domNode; case 7: var data = patch.s; var kids = data.e; var i = data.v; var theEnd = domNode.childNodes[i]; for (; i < kids.length; i++) { domNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd); } return domNode; case 9: var data = patch.s; if (!data) { domNode.parentNode.removeChild(domNode); return domNode; } var entry = data.A; if (typeof entry.r !== 'undefined') { domNode.parentNode.removeChild(domNode); } entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w); return domNode; case 8: return _VirtualDom_applyPatchReorder(domNode, patch); case 5: return patch.s(domNode); default: _Debug_crash(10); // 'Ran into an unknown patch!' } } function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode) { var parentNode = domNode.parentNode; var newNode = _VirtualDom_render(vNode, eventNode); if (!newNode.elm_event_node_ref) { newNode.elm_event_node_ref = domNode.elm_event_node_ref; } if (parentNode && newNode !== domNode) { parentNode.replaceChild(newNode, domNode); } return newNode; } function _VirtualDom_applyPatchReorder(domNode, patch) { var data = patch.s; // remove end inserts var frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch); // removals domNode = _VirtualDom_applyPatchesHelp(domNode, data.w); // inserts var inserts = data.x; for (var i = 0; i < inserts.length; i++) { var insert = inserts[i]; var entry = insert.A; var node = entry.c === 2 ? entry.s : _VirtualDom_render(entry.z, patch.u); domNode.insertBefore(node, domNode.childNodes[insert.r]); } // add end inserts if (frag) { _VirtualDom_appendChild(domNode, frag); } return domNode; } function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch) { if (!endInserts) { return; } var frag = _VirtualDom_doc.createDocumentFragment(); for (var i = 0; i < endInserts.length; i++) { var insert = endInserts[i]; var entry = insert.A; _VirtualDom_appendChild(frag, entry.c === 2 ? entry.s : _VirtualDom_render(entry.z, patch.u) ); } return frag; } function _VirtualDom_virtualize(node) { // TEXT NODES if (node.nodeType === 3) { return _VirtualDom_text(node.textContent); } // WEIRD NODES if (node.nodeType !== 1) { return _VirtualDom_text(''); } // ELEMENT NODES var attrList = _List_Nil; var attrs = node.attributes; for (var i = attrs.length; i--; ) { var attr = attrs[i]; var name = attr.name; var value = attr.value; attrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList ); } var tag = node.tagName.toLowerCase(); var kidList = _List_Nil; var kids = node.childNodes; for (var i = kids.length; i--; ) { kidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList); } return A3(_VirtualDom_node, tag, attrList, kidList); } function _VirtualDom_dekey(keyedNode) { var keyedKids = keyedNode.e; var len = keyedKids.length; var kids = new Array(len); for (var i = 0; i < len; i++) { kids[i] = keyedKids[i].b; } return { $: 1, c: keyedNode.c, d: keyedNode.d, e: kids, f: keyedNode.f, b: keyedNode.b }; } // ELEMENT var _Debugger_element; var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args) { return _Platform_initialize( flagDecoder, args, impl.init, impl.update, impl.subscriptions, function(sendToApp, initialModel) { var view = impl.view; /**_UNUSED/ var domNode = args['node']; //*/ /**/ var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); //*/ var currNode = _VirtualDom_virtualize(domNode); return _Browser_makeAnimator(initialModel, function(model) { var nextNode = view(model); var patches = _VirtualDom_diff(currNode, nextNode); domNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp); currNode = nextNode; }); } ); }); // DOCUMENT var _Debugger_document; var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args) { return _Platform_initialize( flagDecoder, args, impl.init, impl.update, impl.subscriptions, function(sendToApp, initialModel) { var divertHrefToApp = impl.setup && impl.setup(sendToApp) var view = impl.view; var title = _VirtualDom_doc.title; var bodyNode = _VirtualDom_doc.body; var currNode = _VirtualDom_virtualize(bodyNode); return _Browser_makeAnimator(initialModel, function(model) { _VirtualDom_divertHrefToApp = divertHrefToApp; var doc = view(model); var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body); var patches = _VirtualDom_diff(currNode, nextNode); bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); currNode = nextNode; _VirtualDom_divertHrefToApp = 0; (title !== doc.title) && (_VirtualDom_doc.title = title = doc.title); }); } ); }); // ANIMATION var _Browser_cancelAnimationFrame = typeof cancelAnimationFrame !== 'undefined' ? cancelAnimationFrame : function(id) { clearTimeout(id); }; var _Browser_requestAnimationFrame = typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : function(callback) { return setTimeout(callback, 1000 / 60); }; function _Browser_makeAnimator(model, draw) { draw(model); var state = 0; function updateIfNeeded() { state = state === 1 ? 0 : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 ); } return function(nextModel, isSync) { model = nextModel; isSync ? ( draw(model), state === 2 && (state = 1) ) : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded), state = 2 ); }; } // APPLICATION function _Browser_application(impl) { var onUrlChange = impl.onUrlChange; var onUrlRequest = impl.onUrlRequest; var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; return _Browser_document({ setup: function(sendToApp) { key.a = sendToApp; _Browser_window.addEventListener('popstate', key); _Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key); return F2(function(domNode, event) { if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download')) { event.preventDefault(); var href = domNode.href; var curr = _Browser_getUrl(); var next = $elm$url$Url$fromString(href).a; sendToApp(onUrlRequest( (next && curr.protocol === next.protocol && curr.host === next.host && curr.port_.a === next.port_.a ) ? $elm$browser$Browser$Internal(next) : $elm$browser$Browser$External(href) )); } }); }, init: function(flags) { return A3(impl.init, flags, _Browser_getUrl(), key); }, view: impl.view, update: impl.update, subscriptions: impl.subscriptions }); } function _Browser_getUrl() { return $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1); } var _Browser_go = F2(function(key, n) { return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { n && history.go(n); key(); })); }); var _Browser_pushUrl = F2(function(key, url) { return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { history.pushState({}, '', url); key(); })); }); var _Browser_replaceUrl = F2(function(key, url) { return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { history.replaceState({}, '', url); key(); })); }); // GLOBAL EVENTS var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} }; var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode; var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode; var _Browser_on = F3(function(node, eventName, sendToSelf) { return _Scheduler_spawn(_Scheduler_binding(function(callback) { function handler(event) { _Scheduler_rawSpawn(sendToSelf(event)); } node.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true }); return function() { node.removeEventListener(eventName, handler); }; })); }); var _Browser_decodeEvent = F2(function(decoder, event) { var result = _Json_runHelp(decoder, event); return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing; }); // PAGE VISIBILITY function _Browser_visibilityInfo() { return (typeof _VirtualDom_doc.hidden !== 'undefined') ? { hidden: 'hidden', change: 'visibilitychange' } : (typeof _VirtualDom_doc.mozHidden !== 'undefined') ? { hidden: 'mozHidden', change: 'mozvisibilitychange' } : (typeof _VirtualDom_doc.msHidden !== 'undefined') ? { hidden: 'msHidden', change: 'msvisibilitychange' } : (typeof _VirtualDom_doc.webkitHidden !== 'undefined') ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' } : { hidden: 'hidden', change: 'visibilitychange' }; } // ANIMATION FRAMES function _Browser_rAF() { return _Scheduler_binding(function(callback) { var id = _Browser_requestAnimationFrame(function() { callback(_Scheduler_succeed(Date.now())); }); return function() { _Browser_cancelAnimationFrame(id); }; }); } function _Browser_now() { return _Scheduler_binding(function(callback) { callback(_Scheduler_succeed(Date.now())); }); } // DOM STUFF function _Browser_withNode(id, doStuff) { return _Scheduler_binding(function(callback) { _Browser_requestAnimationFrame(function() { var node = document.getElementById(id); callback(node ? _Scheduler_succeed(doStuff(node)) : _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id)) ); }); }); } function _Browser_withWindow(doStuff) { return _Scheduler_binding(function(callback) { _Browser_requestAnimationFrame(function() { callback(_Scheduler_succeed(doStuff())); }); }); } // FOCUS and BLUR var _Browser_call = F2(function(functionName, id) { return _Browser_withNode(id, function(node) { node[functionName](); return _Utils_Tuple0; }); }); // WINDOW VIEWPORT function _Browser_getViewport() { return { scene: _Browser_getScene(), viewport: { x: _Browser_window.pageXOffset, y: _Browser_window.pageYOffset, width: _Browser_doc.documentElement.clientWidth, height: _Browser_doc.documentElement.clientHeight } }; } function _Browser_getScene() { var body = _Browser_doc.body; var elem = _Browser_doc.documentElement; return { width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) }; } var _Browser_setViewport = F2(function(x, y) { return _Browser_withWindow(function() { _Browser_window.scroll(x, y); return _Utils_Tuple0; }); }); // ELEMENT VIEWPORT function _Browser_getViewportOf(id) { return _Browser_withNode(id, function(node) { return { scene: { width: node.scrollWidth, height: node.scrollHeight }, viewport: { x: node.scrollLeft, y: node.scrollTop, width: node.clientWidth, height: node.clientHeight } }; }); } var _Browser_setViewportOf = F3(function(id, x, y) { return _Browser_withNode(id, function(node) { node.scrollLeft = x; node.scrollTop = y; return _Utils_Tuple0; }); }); // ELEMENT function _Browser_getElement(id) { return _Browser_withNode(id, function(node) { var rect = node.getBoundingClientRect(); var x = _Browser_window.pageXOffset; var y = _Browser_window.pageYOffset; return { scene: _Browser_getScene(), viewport: { x: x, y: y, width: _Browser_doc.documentElement.clientWidth, height: _Browser_doc.documentElement.clientHeight }, element: { x: x + rect.left, y: y + rect.top, width: rect.width, height: rect.height } }; }); } // LOAD and RELOAD function _Browser_reload(skipCache) { return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) { _VirtualDom_doc.location.reload(skipCache); })); } function _Browser_load(url) { return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) { try { _Browser_window.location = url; } catch(err) { // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here. // Other browsers reload the page, so let's be consistent about that. _VirtualDom_doc.location.reload(false); } })); } function _Time_now(millisToPosix) { return _Scheduler_binding(function(callback) { callback(_Scheduler_succeed(millisToPosix(Date.now()))); }); } var _Time_setInterval = F2(function(interval, task) { return _Scheduler_binding(function(callback) { var id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval); return function() { clearInterval(id); }; }); }); function _Time_here() { return _Scheduler_binding(function(callback) { callback(_Scheduler_succeed( A2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil) )); }); } function _Time_getZoneName() { return _Scheduler_binding(function(callback) { try { var name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone); } catch (e) { var name = $elm$time$Time$Offset(new Date().getTimezoneOffset()); } callback(_Scheduler_succeed(name)); }); } // SEND REQUEST var _Http_toTask = F3(function(router, toTask, request) { return _Scheduler_binding(function(callback) { function done(response) { callback(toTask(request.expect.a(response))); } var xhr = new XMLHttpRequest(); xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); xhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); }); $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a); try { xhr.open(request.method, request.url, true); } catch (e) { return done($elm$http$Http$BadUrl_(request.url)); } _Http_configureRequest(xhr, request); request.body.a && xhr.setRequestHeader('Content-Type', request.body.a); xhr.send(request.body.b); return function() { xhr.c = true; xhr.abort(); }; }); }); // CONFIGURE function _Http_configureRequest(xhr, request) { for (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS { xhr.setRequestHeader(headers.a.a, headers.a.b); } xhr.timeout = request.timeout.a || 0; xhr.responseType = request.expect.d; xhr.withCredentials = request.allowCookiesFromOtherDomains; } // RESPONSES function _Http_toResponse(toBody, xhr) { return A2( 200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_, _Http_toMetadata(xhr), toBody(xhr.response) ); } // METADATA function _Http_toMetadata(xhr) { return { url: xhr.responseURL, statusCode: xhr.status, statusText: xhr.statusText, headers: _Http_parseHeaders(xhr.getAllResponseHeaders()) }; } // HEADERS function _Http_parseHeaders(rawHeaders) { if (!rawHeaders) { return $elm$core$Dict$empty; } var headers = $elm$core$Dict$empty; var headerPairs = rawHeaders.split('\r\n'); for (var i = headerPairs.length; i--; ) { var headerPair = headerPairs[i]; var index = headerPair.indexOf(': '); if (index > 0) { var key = headerPair.substring(0, index); var value = headerPair.substring(index + 2); headers = A3($elm$core$Dict$update, key, function(oldValue) { return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue) ? value + ', ' + oldValue.a : value ); }, headers); } } return headers; } // EXPECT var _Http_expect = F3(function(type, toBody, toValue) { return { $: 0, d: type, b: toBody, a: toValue }; }); var _Http_mapExpect = F2(function(func, expect) { return { $: 0, d: expect.d, b: expect.b, a: function(x) { return func(expect.a(x)); } }; }); function _Http_toDataView(arrayBuffer) { return new DataView(arrayBuffer); } // BODY and PARTS var _Http_emptyBody = { $: 0 }; var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; }); function _Http_toFormData(parts) { for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS { var part = parts.a; formData.append(part.a, part.b); } return formData; } var _Http_bytesToBlob = F2(function(mime, bytes) { return new Blob([bytes], { type: mime }); }); // PROGRESS function _Http_track(router, xhr, tracker) { // TODO check out lengthComputable on loadstart event xhr.upload.addEventListener('progress', function(event) { if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ sent: event.loaded, size: event.total })))); }); xhr.addEventListener('progress', function(event) { if (xhr.c) { return; } _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ received: event.loaded, size: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing })))); }); }var $elm$core$List$cons = _List_cons; var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; var $elm$core$Array$foldr = F3( function (func, baseCase, _v0) { var tree = _v0.c; var tail = _v0.d; var helper = F2( function (node, acc) { if (node.$ === 'SubTree') { var subTree = node.a; return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); } else { var values = node.a; return A3($elm$core$Elm$JsArray$foldr, func, acc, values); } }); return A3( $elm$core$Elm$JsArray$foldr, helper, A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail), tree); }); var $elm$core$Array$toList = function (array) { return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); }; var $elm$core$Dict$foldr = F3( function (func, acc, t) { foldr: while (true) { if (t.$ === 'RBEmpty_elm_builtin') { return acc; } else { var key = t.b; var value = t.c; var left = t.d; var right = t.e; var $temp$func = func, $temp$acc = A3( func, key, value, A3($elm$core$Dict$foldr, func, acc, right)), $temp$t = left; func = $temp$func; acc = $temp$acc; t = $temp$t; continue foldr; } } }); var $elm$core$Dict$toList = function (dict) { return A3( $elm$core$Dict$foldr, F3( function (key, value, list) { return A2( $elm$core$List$cons, _Utils_Tuple2(key, value), list); }), _List_Nil, dict); }; var $elm$core$Dict$keys = function (dict) { return A3( $elm$core$Dict$foldr, F3( function (key, value, keyList) { return A2($elm$core$List$cons, key, keyList); }), _List_Nil, dict); }; var $elm$core$Set$toList = function (_v0) { var dict = _v0.a; return $elm$core$Dict$keys(dict); }; var $elm$core$Basics$EQ = {$: 'EQ'}; var $elm$core$Basics$GT = {$: 'GT'}; var $elm$core$Basics$LT = {$: 'LT'}; var $elm$core$Result$Err = function (a) { return {$: 'Err', a: a}; }; var $elm$json$Json$Decode$Failure = F2( function (a, b) { return {$: 'Failure', a: a, b: b}; }); var $elm$json$Json$Decode$Field = F2( function (a, b) { return {$: 'Field', a: a, b: b}; }); var $elm$json$Json$Decode$Index = F2( function (a, b) { return {$: 'Index', a: a, b: b}; }); var $elm$core$Result$Ok = function (a) { return {$: 'Ok', a: a}; }; var $elm$json$Json$Decode$OneOf = function (a) { return {$: 'OneOf', a: a}; }; var $elm$core$Basics$False = {$: 'False'}; var $elm$core$Basics$add = _Basics_add; var $elm$core$Maybe$Just = function (a) { return {$: 'Just', a: a}; }; var $elm$core$Maybe$Nothing = {$: 'Nothing'}; var $elm$core$String$all = _String_all; var $elm$core$Basics$and = _Basics_and; var $elm$core$Basics$append = _Utils_append; var $elm$json$Json$Encode$encode = _Json_encode; var $elm$core$String$fromInt = _String_fromNumber; var $elm$core$String$join = F2( function (sep, chunks) { return A2( _String_join, sep, _List_toArray(chunks)); }); var $elm$core$String$split = F2( function (sep, string) { return _List_fromArray( A2(_String_split, sep, string)); }); var $elm$json$Json$Decode$indent = function (str) { return A2( $elm$core$String$join, '\n ', A2($elm$core$String$split, '\n', str)); }; var $elm$core$List$foldl = F3( function (func, acc, list) { foldl: while (true) { if (!list.b) { return acc; } else { var x = list.a; var xs = list.b; var $temp$func = func, $temp$acc = A2(func, x, acc), $temp$list = xs; func = $temp$func; acc = $temp$acc; list = $temp$list; continue foldl; } } }); var $elm$core$List$length = function (xs) { return A3( $elm$core$List$foldl, F2( function (_v0, i) { return i + 1; }), 0, xs); }; var $elm$core$List$map2 = _List_map2; var $elm$core$Basics$le = _Utils_le; var $elm$core$Basics$sub = _Basics_sub; var $elm$core$List$rangeHelp = F3( function (lo, hi, list) { rangeHelp: while (true) { if (_Utils_cmp(lo, hi) < 1) { var $temp$lo = lo, $temp$hi = hi - 1, $temp$list = A2($elm$core$List$cons, hi, list); lo = $temp$lo; hi = $temp$hi; list = $temp$list; continue rangeHelp; } else { return list; } } }); var $elm$core$List$range = F2( function (lo, hi) { return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil); }); var $elm$core$List$indexedMap = F2( function (f, xs) { return A3( $elm$core$List$map2, f, A2( $elm$core$List$range, 0, $elm$core$List$length(xs) - 1), xs); }); var $elm$core$Char$toCode = _Char_toCode; var $elm$core$Char$isLower = function (_char) { var code = $elm$core$Char$toCode(_char); return (97 <= code) && (code <= 122); }; var $elm$core$Char$isUpper = function (_char) { var code = $elm$core$Char$toCode(_char); return (code <= 90) && (65 <= code); }; var $elm$core$Basics$or = _Basics_or; var $elm$core$Char$isAlpha = function (_char) { return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char); }; var $elm$core$Char$isDigit = function (_char) { var code = $elm$core$Char$toCode(_char); return (code <= 57) && (48 <= code); }; var $elm$core$Char$isAlphaNum = function (_char) { return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char)); }; var $elm$core$List$reverse = function (list) { return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list); }; var $elm$core$String$uncons = _String_uncons; var $elm$json$Json$Decode$errorOneOf = F2( function (i, error) { return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent( $elm$json$Json$Decode$errorToString(error)))); }); var $elm$json$Json$Decode$errorToString = function (error) { return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil); }; var $elm$json$Json$Decode$errorToStringHelp = F2( function (error, context) { errorToStringHelp: while (true) { switch (error.$) { case 'Field': var f = error.a; var err = error.b; var isSimple = function () { var _v1 = $elm$core$String$uncons(f); if (_v1.$ === 'Nothing') { return false; } else { var _v2 = _v1.a; var _char = _v2.a; var rest = _v2.b; return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest); } }(); var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']')); var $temp$error = err, $temp$context = A2($elm$core$List$cons, fieldName, context); error = $temp$error; context = $temp$context; continue errorToStringHelp; case 'Index': var i = error.a; var err = error.b; var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); var $temp$error = err, $temp$context = A2($elm$core$List$cons, indexName, context); error = $temp$error; context = $temp$context; continue errorToStringHelp; case 'OneOf': var errors = error.a; if (!errors.b) { return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { if (!context.b) { return '!'; } else { return ' at json' + A2( $elm$core$String$join, '', $elm$core$List$reverse(context)); } }(); } else { if (!errors.b.b) { var err = errors.a; var $temp$error = err, $temp$context = context; error = $temp$error; context = $temp$context; continue errorToStringHelp; } else { var starter = function () { if (!context.b) { return 'Json.Decode.oneOf'; } else { return 'The Json.Decode.oneOf at json' + A2( $elm$core$String$join, '', $elm$core$List$reverse(context)); } }(); var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt( $elm$core$List$length(errors)) + ' ways:')); return A2( $elm$core$String$join, '\n\n', A2( $elm$core$List$cons, introduction, A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors))); } } default: var msg = error.a; var json = error.b; var introduction = function () { if (!context.b) { return 'Problem with the given value:\n\n'; } else { return 'Problem with the value at json' + (A2( $elm$core$String$join, '', $elm$core$List$reverse(context)) + ':\n\n '); } }(); return introduction + ($elm$json$Json$Decode$indent( A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg)); } } }); var $elm$core$Array$branchFactor = 32; var $elm$core$Array$Array_elm_builtin = F4( function (a, b, c, d) { return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d}; }); var $elm$core$Elm$JsArray$empty = _JsArray_empty; var $elm$core$Basics$ceiling = _Basics_ceiling; var $elm$core$Basics$fdiv = _Basics_fdiv; var $elm$core$Basics$logBase = F2( function (base, number) { return _Basics_log(number) / _Basics_log(base); }); var $elm$core$Basics$toFloat = _Basics_toFloat; var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor)); var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty); var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; var $elm$core$Array$Leaf = function (a) { return {$: 'Leaf', a: a}; }; var $elm$core$Basics$apL = F2( function (f, x) { return f(x); }); var $elm$core$Basics$apR = F2( function (x, f) { return f(x); }); var $elm$core$Basics$eq = _Utils_equal; var $elm$core$Basics$floor = _Basics_floor; var $elm$core$Elm$JsArray$length = _JsArray_length; var $elm$core$Basics$gt = _Utils_gt; var $elm$core$Basics$max = F2( function (x, y) { return (_Utils_cmp(x, y) > 0) ? x : y; }); var $elm$core$Basics$mul = _Basics_mul; var $elm$core$Array$SubTree = function (a) { return {$: 'SubTree', a: a}; }; var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; var $elm$core$Array$compressNodes = F2( function (nodes, acc) { compressNodes: while (true) { var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes); var node = _v0.a; var remainingNodes = _v0.b; var newAcc = A2( $elm$core$List$cons, $elm$core$Array$SubTree(node), acc); if (!remainingNodes.b) { return $elm$core$List$reverse(newAcc); } else { var $temp$nodes = remainingNodes, $temp$acc = newAcc; nodes = $temp$nodes; acc = $temp$acc; continue compressNodes; } } }); var $elm$core$Tuple$first = function (_v0) { var x = _v0.a; return x; }; var $elm$core$Array$treeFromBuilder = F2( function (nodeList, nodeListSize) { treeFromBuilder: while (true) { var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor); if (newNodeSize === 1) { return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a; } else { var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil), $temp$nodeListSize = newNodeSize; nodeList = $temp$nodeList; nodeListSize = $temp$nodeListSize; continue treeFromBuilder; } } }); var $elm$core$Array$builderToArray = F2( function (reverseNodeList, builder) { if (!builder.nodeListSize) { return A4( $elm$core$Array$Array_elm_builtin, $elm$core$Elm$JsArray$length(builder.tail), $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, builder.tail); } else { var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor; var depth = $elm$core$Basics$floor( A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList; var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize); return A4( $elm$core$Array$Array_elm_builtin, $elm$core$Elm$JsArray$length(builder.tail) + treeLen, A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), tree, builder.tail); } }); var $elm$core$Basics$idiv = _Basics_idiv; var $elm$core$Basics$lt = _Utils_lt; var $elm$core$Array$initializeHelp = F5( function (fn, fromIndex, len, nodeList, tail) { initializeHelp: while (true) { if (fromIndex < 0) { return A2( $elm$core$Array$builderToArray, false, {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail}); } else { var leaf = $elm$core$Array$Leaf( A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); var $temp$fn = fn, $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor, $temp$len = len, $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList), $temp$tail = tail; fn = $temp$fn; fromIndex = $temp$fromIndex; len = $temp$len; nodeList = $temp$nodeList; tail = $temp$tail; continue initializeHelp; } } }); var $elm$core$Basics$remainderBy = _Basics_remainderBy; var $elm$core$Array$initialize = F2( function (len, fn) { if (len <= 0) { return $elm$core$Array$empty; } else { var tailLen = len % $elm$core$Array$branchFactor; var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn); var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor; return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); } }); var $elm$core$Basics$True = {$: 'True'}; var $elm$core$Result$isOk = function (result) { if (result.$ === 'Ok') { return true; } else { return false; } }; var $elm$json$Json$Decode$andThen = _Json_andThen; var $author$project$Bee$Delete = {$: 'Delete'}; var $author$project$Bee$Edit = function (a) { return {$: 'Edit', a: a}; }; var $author$project$Bee$SetColorMode = function (a) { return {$: 'SetColorMode', a: a}; }; var $author$project$Bee$SetLanguage = function (a) { return {$: 'SetLanguage', a: a}; }; var $author$project$Bee$ShowPuzzle = function (a) { return {$: 'ShowPuzzle', a: a}; }; var $author$project$Bee$Shuffle = {$: 'Shuffle'}; var $author$project$Bee$Submit = {$: 'Submit'}; var $author$project$Bee$Type = function (a) { return {$: 'Type', a: a}; }; var $elm$core$Basics$always = F2( function (a, _v0) { return a; }); var $elm$core$List$any = F2( function (isOkay, list) { any: while (true) { if (!list.b) { return false; } else { var x = list.a; var xs = list.b; if (isOkay(x)) { return true; } else { var $temp$isOkay = isOkay, $temp$list = xs; isOkay = $temp$isOkay; list = $temp$list; continue any; } } } }); var $elm$core$Basics$composeL = F3( function (g, f, x) { return g( f(x)); }); var $elm$core$Basics$identity = function (x) { return x; }; var $elm$core$Set$Set_elm_builtin = function (a) { return {$: 'Set_elm_builtin', a: a}; }; var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'}; var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty); var $elm$core$Dict$Black = {$: 'Black'}; var $elm$core$Dict$RBNode_elm_builtin = F5( function (a, b, c, d, e) { return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e}; }); var $elm$core$Dict$Red = {$: 'Red'}; var $elm$core$Dict$balance = F5( function (color, key, value, left, right) { if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) { var _v1 = right.a; var rK = right.b; var rV = right.c; var rLeft = right.d; var rRight = right.e; if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { var _v3 = left.a; var lK = left.b; var lV = left.c; var lLeft = left.d; var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, color, rK, rV, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft), rRight); } } else { if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) { var _v5 = left.a; var lK = left.b; var lV = left.c; var _v6 = left.d; var _v7 = _v6.a; var llK = _v6.b; var llV = _v6.c; var llLeft = _v6.d; var llRight = _v6.e; var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right)); } else { return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); } } }); var $elm$core$Basics$compare = _Utils_compare; var $elm$core$Dict$insertHelp = F3( function (key, value, dict) { if (dict.$ === 'RBEmpty_elm_builtin') { return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); } else { var nColor = dict.a; var nKey = dict.b; var nValue = dict.c; var nLeft = dict.d; var nRight = dict.e; var _v1 = A2($elm$core$Basics$compare, key, nKey); switch (_v1.$) { case 'LT': return A5( $elm$core$Dict$balance, nColor, nKey, nValue, A3($elm$core$Dict$insertHelp, key, value, nLeft), nRight); case 'EQ': return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); default: return A5( $elm$core$Dict$balance, nColor, nKey, nValue, nLeft, A3($elm$core$Dict$insertHelp, key, value, nRight)); } } }); var $elm$core$Dict$insert = F3( function (key, value, dict) { var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { var _v1 = _v0.a; var k = _v0.b; var v = _v0.c; var l = _v0.d; var r = _v0.e; return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); } else { var x = _v0; return x; } }); var $elm$core$Set$insert = F2( function (key, _v0) { var dict = _v0.a; return $elm$core$Set$Set_elm_builtin( A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict)); }); var $elm$core$Set$fromList = function (list) { return A3($elm$core$List$foldl, $elm$core$Set$insert, $elm$core$Set$empty, list); }; var $elm$core$Dict$sizeHelp = F2( function (n, dict) { sizeHelp: while (true) { if (dict.$ === 'RBEmpty_elm_builtin') { return n; } else { var left = dict.d; var right = dict.e; var $temp$n = A2($elm$core$Dict$sizeHelp, n + 1, right), $temp$dict = left; n = $temp$n; dict = $temp$dict; continue sizeHelp; } } }); var $elm$core$Dict$size = function (dict) { return A2($elm$core$Dict$sizeHelp, 0, dict); }; var $elm$core$Set$size = function (_v0) { var dict = _v0.a; return $elm$core$Dict$size(dict); }; var $elm$core$String$foldr = _String_foldr; var $elm$core$String$toList = function (string) { return A3($elm$core$String$foldr, $elm$core$List$cons, _List_Nil, string); }; var $author$project$Puzzle$isPangram = function (str) { return A2( $elm$core$Basics$composeL, A2($elm$core$Basics$composeL, $elm$core$Set$size, $elm$core$Set$fromList), $elm$core$String$toList)(str) === 7; }; var $elm$core$String$length = _String_length; var $author$project$Puzzle$wordScore = function (str) { return ($elm$core$String$length(str) <= 4) ? 1 : ($elm$core$String$length(str) + ($author$project$Puzzle$isPangram(str) ? 7 : 0)); }; var $author$project$Puzzle$apparentScore = F2( function (user, resp) { var userMatches = function (userMay) { if (userMay.$ === 'Just') { var u = userMay.a; return $elm$core$List$any( $elm$core$Basics$eq(u)); } else { return $elm$core$Basics$always(true); } }; var score = F2( function (word, users) { return (A2( userMatches, $elm$core$Maybe$Just(user), users) && A2(userMatches, resp.user, users)) ? $author$project$Puzzle$wordScore(word) : 0; }); var go = F2( function (_v0, acc) { var word = _v0.a; var users = _v0.b; return acc + A2(score, word, users); }); return A3($elm$core$List$foldl, go, 0, resp.found); }); var $mdgriffith$elm_ui$Internal$Model$FontFamily = F2( function (a, b) { return {$: 'FontFamily', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$StyleClass = F2( function (a, b) { return {$: 'StyleClass', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Flag$Flag = function (a) { return {$: 'Flag', a: a}; }; var $mdgriffith$elm_ui$Internal$Flag$Second = function (a) { return {$: 'Second', a: a}; }; var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy; var $mdgriffith$elm_ui$Internal$Flag$flag = function (i) { return (i > 31) ? $mdgriffith$elm_ui$Internal$Flag$Second(1 << (i - 32)) : $mdgriffith$elm_ui$Internal$Flag$Flag(1 << i); }; var $mdgriffith$elm_ui$Internal$Flag$fontFamily = $mdgriffith$elm_ui$Internal$Flag$flag(5); var $elm$core$String$toLower = _String_toLower; var $elm$core$String$words = _String_words; var $mdgriffith$elm_ui$Internal$Model$renderFontClassName = F2( function (font, current) { return _Utils_ap( current, function () { switch (font.$) { case 'Serif': return 'serif'; case 'SansSerif': return 'sans-serif'; case 'Monospace': return 'monospace'; case 'Typeface': var name = font.a; return A2( $elm$core$String$join, '-', $elm$core$String$words( $elm$core$String$toLower(name))); case 'ImportFont': var name = font.a; var url = font.b; return A2( $elm$core$String$join, '-', $elm$core$String$words( $elm$core$String$toLower(name))); default: var name = font.a.name; return A2( $elm$core$String$join, '-', $elm$core$String$words( $elm$core$String$toLower(name))); } }()); }); var $mdgriffith$elm_ui$Element$Font$family = function (families) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontFamily, A2( $mdgriffith$elm_ui$Internal$Model$FontFamily, A3($elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderFontClassName, 'ff-', families), families)); }; var $mdgriffith$elm_ui$Internal$Model$SansSerif = {$: 'SansSerif'}; var $mdgriffith$elm_ui$Element$Font$sansSerif = $mdgriffith$elm_ui$Internal$Model$SansSerif; var $mdgriffith$elm_ui$Internal$Model$Typeface = function (a) { return {$: 'Typeface', a: a}; }; var $mdgriffith$elm_ui$Element$Font$typeface = $mdgriffith$elm_ui$Internal$Model$Typeface; var $author$project$Views$Constants$bodyFont = $mdgriffith$elm_ui$Element$Font$family( _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$typeface('Source Sans Pro'), $mdgriffith$elm_ui$Element$Font$typeface('Helvetica Neue'), $mdgriffith$elm_ui$Element$Font$sansSerif ])); var $mdgriffith$elm_ui$Internal$Model$AlignX = function (a) { return {$: 'AlignX', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$CenterX = {$: 'CenterX'}; var $mdgriffith$elm_ui$Element$centerX = $mdgriffith$elm_ui$Internal$Model$AlignX($mdgriffith$elm_ui$Internal$Model$CenterX); var $mdgriffith$elm_ui$Internal$Model$Colored = F3( function (a, b, c) { return {$: 'Colored', a: a, b: b, c: c}; }); var $mdgriffith$elm_ui$Internal$Flag$bgColor = $mdgriffith$elm_ui$Internal$Flag$flag(8); var $elm$core$Basics$round = _Basics_round; var $mdgriffith$elm_ui$Internal$Model$floatClass = function (x) { return $elm$core$String$fromInt( $elm$core$Basics$round(x * 255)); }; var $mdgriffith$elm_ui$Internal$Model$formatColorClass = function (_v0) { var red = _v0.a; var green = _v0.b; var blue = _v0.c; var alpha = _v0.d; return $mdgriffith$elm_ui$Internal$Model$floatClass(red) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(green) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(blue) + ('-' + $mdgriffith$elm_ui$Internal$Model$floatClass(alpha)))))); }; var $mdgriffith$elm_ui$Element$Background$color = function (clr) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$bgColor, A3( $mdgriffith$elm_ui$Internal$Model$Colored, 'bg-' + $mdgriffith$elm_ui$Internal$Model$formatColorClass(clr), 'background-color', clr)); }; var $mdgriffith$elm_ui$Internal$Flag$fontColor = $mdgriffith$elm_ui$Internal$Flag$flag(14); var $mdgriffith$elm_ui$Element$Font$color = function (fontColor) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontColor, A3( $mdgriffith$elm_ui$Internal$Model$Colored, 'fc-' + $mdgriffith$elm_ui$Internal$Model$formatColorClass(fontColor), 'color', fontColor)); }; var $author$project$Views$Constants$Day = {$: 'Day'}; var $mdgriffith$elm_ui$Internal$Model$Attr = function (a) { return {$: 'Attr', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$Button = {$: 'Button'}; var $mdgriffith$elm_ui$Internal$Model$Describe = function (a) { return {$: 'Describe', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$Unkeyed = function (a) { return {$: 'Unkeyed', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$AsEl = {$: 'AsEl'}; var $mdgriffith$elm_ui$Internal$Model$asEl = $mdgriffith$elm_ui$Internal$Model$AsEl; var $mdgriffith$elm_ui$Internal$Style$classes = {above: 'a', active: 'atv', alignBottom: 'ab', alignCenterX: 'cx', alignCenterY: 'cy', alignContainerBottom: 'acb', alignContainerCenterX: 'accx', alignContainerCenterY: 'accy', alignContainerRight: 'acr', alignLeft: 'al', alignRight: 'ar', alignTop: 'at', alignedHorizontally: 'ah', alignedVertically: 'av', any: 's', behind: 'bh', below: 'b', bold: 'w7', borderDashed: 'bd', borderDotted: 'bdt', borderNone: 'bn', borderSolid: 'bs', capturePointerEvents: 'cpe', clip: 'cp', clipX: 'cpx', clipY: 'cpy', column: 'c', container: 'ctr', contentBottom: 'cb', contentCenterX: 'ccx', contentCenterY: 'ccy', contentLeft: 'cl', contentRight: 'cr', contentTop: 'ct', cursorPointer: 'cptr', cursorText: 'ctxt', focus: 'fcs', focusedWithin: 'focus-within', fullSize: 'fs', grid: 'g', hasBehind: 'hbh', heightContent: 'hc', heightExact: 'he', heightFill: 'hf', heightFillPortion: 'hfp', hover: 'hv', imageContainer: 'ic', inFront: 'fr', inputLabel: 'lbl', inputMultiline: 'iml', inputMultilineFiller: 'imlf', inputMultilineParent: 'imlp', inputMultilineWrapper: 'implw', inputText: 'it', italic: 'i', link: 'lnk', nearby: 'nb', noTextSelection: 'notxt', onLeft: 'ol', onRight: 'or', opaque: 'oq', overflowHidden: 'oh', page: 'pg', paragraph: 'p', passPointerEvents: 'ppe', root: 'ui', row: 'r', scrollbars: 'sb', scrollbarsX: 'sbx', scrollbarsY: 'sby', seButton: 'sbt', single: 'e', sizeByCapital: 'cap', spaceEvenly: 'sev', strike: 'sk', text: 't', textCenter: 'tc', textExtraBold: 'w8', textExtraLight: 'w2', textHeavy: 'w9', textJustify: 'tj', textJustifyAll: 'tja', textLeft: 'tl', textLight: 'w3', textMedium: 'w5', textNormalWeight: 'w4', textRight: 'tr', textSemiBold: 'w6', textThin: 'w1', textUnitalicized: 'tun', transition: 'ts', transparent: 'clr', underline: 'u', widthContent: 'wc', widthExact: 'we', widthFill: 'wf', widthFillPortion: 'wfp', wrapped: 'wrp'}; var $elm$json$Json$Decode$map = _Json_map1; var $elm$json$Json$Decode$map2 = _Json_map2; var $elm$json$Json$Decode$succeed = _Json_succeed; var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { switch (handler.$) { case 'Normal': return 0; case 'MayStopPropagation': return 1; case 'MayPreventDefault': return 2; default: return 3; } }; var $elm$json$Json$Encode$bool = _Json_wrap; var $elm$html$Html$Attributes$boolProperty = F2( function (key, bool) { return A2( _VirtualDom_property, key, $elm$json$Json$Encode$bool(bool)); }); var $elm$html$Html$Attributes$disabled = $elm$html$Html$Attributes$boolProperty('disabled'); var $mdgriffith$elm_ui$Internal$Model$Generic = {$: 'Generic'}; var $mdgriffith$elm_ui$Internal$Model$div = $mdgriffith$elm_ui$Internal$Model$Generic; var $mdgriffith$elm_ui$Internal$Model$NoNearbyChildren = {$: 'NoNearbyChildren'}; var $mdgriffith$elm_ui$Internal$Model$columnClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.column); var $mdgriffith$elm_ui$Internal$Model$gridClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.grid); var $mdgriffith$elm_ui$Internal$Model$pageClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.page); var $mdgriffith$elm_ui$Internal$Model$paragraphClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.paragraph); var $mdgriffith$elm_ui$Internal$Model$rowClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.row); var $mdgriffith$elm_ui$Internal$Model$singleClass = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.single); var $mdgriffith$elm_ui$Internal$Model$contextClasses = function (context) { switch (context.$) { case 'AsRow': return $mdgriffith$elm_ui$Internal$Model$rowClass; case 'AsColumn': return $mdgriffith$elm_ui$Internal$Model$columnClass; case 'AsEl': return $mdgriffith$elm_ui$Internal$Model$singleClass; case 'AsGrid': return $mdgriffith$elm_ui$Internal$Model$gridClass; case 'AsParagraph': return $mdgriffith$elm_ui$Internal$Model$paragraphClass; default: return $mdgriffith$elm_ui$Internal$Model$pageClass; } }; var $mdgriffith$elm_ui$Internal$Model$Keyed = function (a) { return {$: 'Keyed', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$NoStyleSheet = {$: 'NoStyleSheet'}; var $mdgriffith$elm_ui$Internal$Model$Styled = function (a) { return {$: 'Styled', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$Unstyled = function (a) { return {$: 'Unstyled', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$addChildren = F2( function (existing, nearbyChildren) { switch (nearbyChildren.$) { case 'NoNearbyChildren': return existing; case 'ChildrenBehind': var behind = nearbyChildren.a; return _Utils_ap(behind, existing); case 'ChildrenInFront': var inFront = nearbyChildren.a; return _Utils_ap(existing, inFront); default: var behind = nearbyChildren.a; var inFront = nearbyChildren.b; return _Utils_ap( behind, _Utils_ap(existing, inFront)); } }); var $elm$core$List$foldrHelper = F4( function (fn, acc, ctr, ls) { if (!ls.b) { return acc; } else { var a = ls.a; var r1 = ls.b; if (!r1.b) { return A2(fn, a, acc); } else { var b = r1.a; var r2 = r1.b; if (!r2.b) { return A2( fn, a, A2(fn, b, acc)); } else { var c = r2.a; var r3 = r2.b; if (!r3.b) { return A2( fn, a, A2( fn, b, A2(fn, c, acc))); } else { var d = r3.a; var r4 = r3.b; var res = (ctr > 500) ? A3( $elm$core$List$foldl, fn, acc, $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4); return A2( fn, a, A2( fn, b, A2( fn, c, A2(fn, d, res)))); } } } } }); var $elm$core$List$foldr = F3( function (fn, acc, ls) { return A4($elm$core$List$foldrHelper, fn, acc, 0, ls); }); var $elm$core$List$map = F2( function (f, xs) { return A3( $elm$core$List$foldr, F2( function (x, acc) { return A2( $elm$core$List$cons, f(x), acc); }), _List_Nil, xs); }); var $mdgriffith$elm_ui$Internal$Model$addKeyedChildren = F3( function (key, existing, nearbyChildren) { switch (nearbyChildren.$) { case 'NoNearbyChildren': return existing; case 'ChildrenBehind': var behind = nearbyChildren.a; return _Utils_ap( A2( $elm$core$List$map, function (x) { return _Utils_Tuple2(key, x); }, behind), existing); case 'ChildrenInFront': var inFront = nearbyChildren.a; return _Utils_ap( existing, A2( $elm$core$List$map, function (x) { return _Utils_Tuple2(key, x); }, inFront)); default: var behind = nearbyChildren.a; var inFront = nearbyChildren.b; return _Utils_ap( A2( $elm$core$List$map, function (x) { return _Utils_Tuple2(key, x); }, behind), _Utils_ap( existing, A2( $elm$core$List$map, function (x) { return _Utils_Tuple2(key, x); }, inFront))); } }); var $mdgriffith$elm_ui$Internal$Model$AsParagraph = {$: 'AsParagraph'}; var $mdgriffith$elm_ui$Internal$Model$asParagraph = $mdgriffith$elm_ui$Internal$Model$AsParagraph; var $mdgriffith$elm_ui$Internal$Flag$alignBottom = $mdgriffith$elm_ui$Internal$Flag$flag(41); var $mdgriffith$elm_ui$Internal$Flag$alignRight = $mdgriffith$elm_ui$Internal$Flag$flag(40); var $mdgriffith$elm_ui$Internal$Flag$centerX = $mdgriffith$elm_ui$Internal$Flag$flag(42); var $mdgriffith$elm_ui$Internal$Flag$centerY = $mdgriffith$elm_ui$Internal$Flag$flag(43); var $elm$json$Json$Encode$string = _Json_wrap; var $elm$html$Html$Attributes$stringProperty = F2( function (key, string) { return A2( _VirtualDom_property, key, $elm$json$Json$Encode$string(string)); }); var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); var $elm$html$Html$div = _VirtualDom_node('div'); var $mdgriffith$elm_ui$Internal$Model$lengthClassName = function (x) { switch (x.$) { case 'Px': var px = x.a; return $elm$core$String$fromInt(px) + 'px'; case 'Content': return 'auto'; case 'Fill': var i = x.a; return $elm$core$String$fromInt(i) + 'fr'; case 'Min': var min = x.a; var len = x.b; return 'min' + ($elm$core$String$fromInt(min) + $mdgriffith$elm_ui$Internal$Model$lengthClassName(len)); default: var max = x.a; var len = x.b; return 'max' + ($elm$core$String$fromInt(max) + $mdgriffith$elm_ui$Internal$Model$lengthClassName(len)); } }; var $elm$core$Tuple$second = function (_v0) { var y = _v0.b; return y; }; var $mdgriffith$elm_ui$Internal$Model$transformClass = function (transform) { switch (transform.$) { case 'Untransformed': return $elm$core$Maybe$Nothing; case 'Moved': var _v1 = transform.a; var x = _v1.a; var y = _v1.b; var z = _v1.c; return $elm$core$Maybe$Just( 'mv-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(x) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(y) + ('-' + $mdgriffith$elm_ui$Internal$Model$floatClass(z)))))); default: var _v2 = transform.a; var tx = _v2.a; var ty = _v2.b; var tz = _v2.c; var _v3 = transform.b; var sx = _v3.a; var sy = _v3.b; var sz = _v3.c; var _v4 = transform.c; var ox = _v4.a; var oy = _v4.b; var oz = _v4.c; var angle = transform.d; return $elm$core$Maybe$Just( 'tfrm-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(tx) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(ty) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(tz) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(sx) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(sy) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(sz) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(ox) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(oy) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(oz) + ('-' + $mdgriffith$elm_ui$Internal$Model$floatClass(angle)))))))))))))))))))); } }; var $elm$core$Maybe$withDefault = F2( function (_default, maybe) { if (maybe.$ === 'Just') { var value = maybe.a; return value; } else { return _default; } }); var $mdgriffith$elm_ui$Internal$Model$getStyleName = function (style) { switch (style.$) { case 'Shadows': var name = style.a; return name; case 'Transparency': var name = style.a; var o = style.b; return name; case 'Style': var _class = style.a; return _class; case 'FontFamily': var name = style.a; return name; case 'FontSize': var i = style.a; return 'font-size-' + $elm$core$String$fromInt(i); case 'Single': var _class = style.a; return _class; case 'Colored': var _class = style.a; return _class; case 'SpacingStyle': var cls = style.a; var x = style.b; var y = style.c; return cls; case 'PaddingStyle': var cls = style.a; var top = style.b; var right = style.c; var bottom = style.d; var left = style.e; return cls; case 'BorderWidth': var cls = style.a; var top = style.b; var right = style.c; var bottom = style.d; var left = style.e; return cls; case 'GridTemplateStyle': var template = style.a; return 'grid-rows-' + (A2( $elm$core$String$join, '-', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$lengthClassName, template.rows)) + ('-cols-' + (A2( $elm$core$String$join, '-', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$lengthClassName, template.columns)) + ('-space-x-' + ($mdgriffith$elm_ui$Internal$Model$lengthClassName(template.spacing.a) + ('-space-y-' + $mdgriffith$elm_ui$Internal$Model$lengthClassName(template.spacing.b))))))); case 'GridPosition': var pos = style.a; return 'gp grid-pos-' + ($elm$core$String$fromInt(pos.row) + ('-' + ($elm$core$String$fromInt(pos.col) + ('-' + ($elm$core$String$fromInt(pos.width) + ('-' + $elm$core$String$fromInt(pos.height))))))); case 'PseudoSelector': var selector = style.a; var subStyle = style.b; var name = function () { switch (selector.$) { case 'Focus': return 'fs'; case 'Hover': return 'hv'; default: return 'act'; } }(); return A2( $elm$core$String$join, ' ', A2( $elm$core$List$map, function (sty) { var _v1 = $mdgriffith$elm_ui$Internal$Model$getStyleName(sty); if (_v1 === '') { return ''; } else { var styleName = _v1; return styleName + ('-' + name); } }, subStyle)); default: var x = style.a; return A2( $elm$core$Maybe$withDefault, '', $mdgriffith$elm_ui$Internal$Model$transformClass(x)); } }; var $elm$core$Dict$get = F2( function (targetKey, dict) { get: while (true) { if (dict.$ === 'RBEmpty_elm_builtin') { return $elm$core$Maybe$Nothing; } else { var key = dict.b; var value = dict.c; var left = dict.d; var right = dict.e; var _v1 = A2($elm$core$Basics$compare, targetKey, key); switch (_v1.$) { case 'LT': var $temp$targetKey = targetKey, $temp$dict = left; targetKey = $temp$targetKey; dict = $temp$dict; continue get; case 'EQ': return $elm$core$Maybe$Just(value); default: var $temp$targetKey = targetKey, $temp$dict = right; targetKey = $temp$targetKey; dict = $temp$dict; continue get; } } } }); var $elm$core$Dict$member = F2( function (key, dict) { var _v0 = A2($elm$core$Dict$get, key, dict); if (_v0.$ === 'Just') { return true; } else { return false; } }); var $elm$core$Set$member = F2( function (key, _v0) { var dict = _v0.a; return A2($elm$core$Dict$member, key, dict); }); var $mdgriffith$elm_ui$Internal$Model$reduceStyles = F2( function (style, nevermind) { var cache = nevermind.a; var existing = nevermind.b; var styleName = $mdgriffith$elm_ui$Internal$Model$getStyleName(style); return A2($elm$core$Set$member, styleName, cache) ? nevermind : _Utils_Tuple2( A2($elm$core$Set$insert, styleName, cache), A2($elm$core$List$cons, style, existing)); }); var $mdgriffith$elm_ui$Internal$Model$Property = F2( function (a, b) { return {$: 'Property', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$Style = F2( function (a, b) { return {$: 'Style', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$dot = function (c) { return '.' + c; }; var $elm$core$List$maybeCons = F3( function (f, mx, xs) { var _v0 = f(mx); if (_v0.$ === 'Just') { var x = _v0.a; return A2($elm$core$List$cons, x, xs); } else { return xs; } }); var $elm$core$List$filterMap = F2( function (f, xs) { return A3( $elm$core$List$foldr, $elm$core$List$maybeCons(f), _List_Nil, xs); }); var $elm$core$String$fromFloat = _String_fromNumber; var $mdgriffith$elm_ui$Internal$Model$formatColor = function (_v0) { var red = _v0.a; var green = _v0.b; var blue = _v0.c; var alpha = _v0.d; return 'rgba(' + ($elm$core$String$fromInt( $elm$core$Basics$round(red * 255)) + ((',' + $elm$core$String$fromInt( $elm$core$Basics$round(green * 255))) + ((',' + $elm$core$String$fromInt( $elm$core$Basics$round(blue * 255))) + (',' + ($elm$core$String$fromFloat(alpha) + ')'))))); }; var $mdgriffith$elm_ui$Internal$Model$formatBoxShadow = function (shadow) { return A2( $elm$core$String$join, ' ', A2( $elm$core$List$filterMap, $elm$core$Basics$identity, _List_fromArray( [ shadow.inset ? $elm$core$Maybe$Just('inset') : $elm$core$Maybe$Nothing, $elm$core$Maybe$Just( $elm$core$String$fromFloat(shadow.offset.a) + 'px'), $elm$core$Maybe$Just( $elm$core$String$fromFloat(shadow.offset.b) + 'px'), $elm$core$Maybe$Just( $elm$core$String$fromFloat(shadow.blur) + 'px'), $elm$core$Maybe$Just( $elm$core$String$fromFloat(shadow.size) + 'px'), $elm$core$Maybe$Just( $mdgriffith$elm_ui$Internal$Model$formatColor(shadow.color)) ]))); }; var $elm$core$Maybe$map = F2( function (f, maybe) { if (maybe.$ === 'Just') { var value = maybe.a; return $elm$core$Maybe$Just( f(value)); } else { return $elm$core$Maybe$Nothing; } }); var $elm$core$Tuple$mapFirst = F2( function (func, _v0) { var x = _v0.a; var y = _v0.b; return _Utils_Tuple2( func(x), y); }); var $elm$core$Tuple$mapSecond = F2( function (func, _v0) { var x = _v0.a; var y = _v0.b; return _Utils_Tuple2( x, func(y)); }); var $mdgriffith$elm_ui$Internal$Model$renderFocusStyle = function (focus) { return _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Style, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.focusedWithin) + ':focus-within', A2( $elm$core$List$filterMap, $elm$core$Basics$identity, _List_fromArray( [ A2( $elm$core$Maybe$map, function (color) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'border-color', $mdgriffith$elm_ui$Internal$Model$formatColor(color)); }, focus.borderColor), A2( $elm$core$Maybe$map, function (color) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'background-color', $mdgriffith$elm_ui$Internal$Model$formatColor(color)); }, focus.backgroundColor), A2( $elm$core$Maybe$map, function (shadow) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'box-shadow', $mdgriffith$elm_ui$Internal$Model$formatBoxShadow( { blur: shadow.blur, color: shadow.color, inset: false, offset: A2( $elm$core$Tuple$mapSecond, $elm$core$Basics$toFloat, A2($elm$core$Tuple$mapFirst, $elm$core$Basics$toFloat, shadow.offset)), size: shadow.size })); }, focus.shadow), $elm$core$Maybe$Just( A2($mdgriffith$elm_ui$Internal$Model$Property, 'outline', 'none')) ]))), A2( $mdgriffith$elm_ui$Internal$Model$Style, ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ':focus .focusable, ') + (($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + '.focusable:focus, ') + ('.ui-slide-bar:focus + ' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ' .focusable-thumb'))), A2( $elm$core$List$filterMap, $elm$core$Basics$identity, _List_fromArray( [ A2( $elm$core$Maybe$map, function (color) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'border-color', $mdgriffith$elm_ui$Internal$Model$formatColor(color)); }, focus.borderColor), A2( $elm$core$Maybe$map, function (color) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'background-color', $mdgriffith$elm_ui$Internal$Model$formatColor(color)); }, focus.backgroundColor), A2( $elm$core$Maybe$map, function (shadow) { return A2( $mdgriffith$elm_ui$Internal$Model$Property, 'box-shadow', $mdgriffith$elm_ui$Internal$Model$formatBoxShadow( { blur: shadow.blur, color: shadow.color, inset: false, offset: A2( $elm$core$Tuple$mapSecond, $elm$core$Basics$toFloat, A2($elm$core$Tuple$mapFirst, $elm$core$Basics$toFloat, shadow.offset)), size: shadow.size })); }, focus.shadow), $elm$core$Maybe$Just( A2($mdgriffith$elm_ui$Internal$Model$Property, 'outline', 'none')) ]))) ]); }; var $elm$virtual_dom$VirtualDom$node = function (tag) { return _VirtualDom_node( _VirtualDom_noScript(tag)); }; var $elm$virtual_dom$VirtualDom$property = F2( function (key, value) { return A2( _VirtualDom_property, _VirtualDom_noInnerHtmlOrFormAction(key), _VirtualDom_noJavaScriptOrHtmlUri(value)); }); var $mdgriffith$elm_ui$Internal$Style$AllChildren = F2( function (a, b) { return {$: 'AllChildren', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Batch = function (a) { return {$: 'Batch', a: a}; }; var $mdgriffith$elm_ui$Internal$Style$Child = F2( function (a, b) { return {$: 'Child', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Class = F2( function (a, b) { return {$: 'Class', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Descriptor = F2( function (a, b) { return {$: 'Descriptor', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Left = {$: 'Left'}; var $mdgriffith$elm_ui$Internal$Style$Prop = F2( function (a, b) { return {$: 'Prop', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Right = {$: 'Right'}; var $mdgriffith$elm_ui$Internal$Style$Self = function (a) { return {$: 'Self', a: a}; }; var $mdgriffith$elm_ui$Internal$Style$Supports = F2( function (a, b) { return {$: 'Supports', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Style$Content = function (a) { return {$: 'Content', a: a}; }; var $mdgriffith$elm_ui$Internal$Style$Bottom = {$: 'Bottom'}; var $mdgriffith$elm_ui$Internal$Style$CenterX = {$: 'CenterX'}; var $mdgriffith$elm_ui$Internal$Style$CenterY = {$: 'CenterY'}; var $mdgriffith$elm_ui$Internal$Style$Top = {$: 'Top'}; var $mdgriffith$elm_ui$Internal$Style$alignments = _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$Top, $mdgriffith$elm_ui$Internal$Style$Bottom, $mdgriffith$elm_ui$Internal$Style$Right, $mdgriffith$elm_ui$Internal$Style$Left, $mdgriffith$elm_ui$Internal$Style$CenterX, $mdgriffith$elm_ui$Internal$Style$CenterY]); var $elm$core$List$append = F2( function (xs, ys) { if (!ys.b) { return xs; } else { return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); } }); var $elm$core$List$concat = function (lists) { return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); }; var $elm$core$List$concatMap = F2( function (f, list) { return $elm$core$List$concat( A2($elm$core$List$map, f, list)); }); var $mdgriffith$elm_ui$Internal$Style$contentName = function (desc) { switch (desc.a.$) { case 'Top': var _v1 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentTop); case 'Bottom': var _v2 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentBottom); case 'Right': var _v3 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentRight); case 'Left': var _v4 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentLeft); case 'CenterX': var _v5 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentCenterX); default: var _v6 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.contentCenterY); } }; var $mdgriffith$elm_ui$Internal$Style$selfName = function (desc) { switch (desc.a.$) { case 'Top': var _v1 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignTop); case 'Bottom': var _v2 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignBottom); case 'Right': var _v3 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignRight); case 'Left': var _v4 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignLeft); case 'CenterX': var _v5 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterX); default: var _v6 = desc.a; return $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterY); } }; var $mdgriffith$elm_ui$Internal$Style$describeAlignment = function (values) { var createDescription = function (alignment) { var _v0 = values(alignment); var content = _v0.a; var indiv = _v0.b; return _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$contentName( $mdgriffith$elm_ui$Internal$Style$Content(alignment)), content), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$selfName( $mdgriffith$elm_ui$Internal$Style$Self(alignment)), indiv) ])) ]); }; return $mdgriffith$elm_ui$Internal$Style$Batch( A2($elm$core$List$concatMap, createDescription, $mdgriffith$elm_ui$Internal$Style$alignments)); }; var $mdgriffith$elm_ui$Internal$Style$elDescription = _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-direction', 'column'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'pre'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.hasBehind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '0'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.behind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '-1') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.seButton), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.text), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'auto !important') ])) ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightContent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', 'auto') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '100000') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFillPortion), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthContent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-start') ])), $mdgriffith$elm_ui$Internal$Style$describeAlignment( function (alignment) { switch (alignment.$) { case 'Top': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-start') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', '0 !important') ])); case 'Bottom': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-end') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', '0 !important') ])); case 'Right': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-end') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-end') ])); case 'Left': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-start') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-start') ])); case 'CenterX': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'center') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'center') ])); default: return _Utils_Tuple2( _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto') ])) ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto !important') ])); } }) ]); var $mdgriffith$elm_ui$Internal$Style$gridAlignments = function (values) { var createDescription = function (alignment) { return _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$selfName( $mdgriffith$elm_ui$Internal$Style$Self(alignment)), values(alignment)) ])) ]); }; return $mdgriffith$elm_ui$Internal$Style$Batch( A2($elm$core$List$concatMap, createDescription, $mdgriffith$elm_ui$Internal$Style$alignments)); }; var $mdgriffith$elm_ui$Internal$Style$Above = {$: 'Above'}; var $mdgriffith$elm_ui$Internal$Style$Behind = {$: 'Behind'}; var $mdgriffith$elm_ui$Internal$Style$Below = {$: 'Below'}; var $mdgriffith$elm_ui$Internal$Style$OnLeft = {$: 'OnLeft'}; var $mdgriffith$elm_ui$Internal$Style$OnRight = {$: 'OnRight'}; var $mdgriffith$elm_ui$Internal$Style$Within = {$: 'Within'}; var $mdgriffith$elm_ui$Internal$Style$locations = function () { var loc = $mdgriffith$elm_ui$Internal$Style$Above; var _v0 = function () { switch (loc.$) { case 'Above': return _Utils_Tuple0; case 'Below': return _Utils_Tuple0; case 'OnRight': return _Utils_Tuple0; case 'OnLeft': return _Utils_Tuple0; case 'Within': return _Utils_Tuple0; default: return _Utils_Tuple0; } }(); return _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$Above, $mdgriffith$elm_ui$Internal$Style$Below, $mdgriffith$elm_ui$Internal$Style$OnRight, $mdgriffith$elm_ui$Internal$Style$OnLeft, $mdgriffith$elm_ui$Internal$Style$Within, $mdgriffith$elm_ui$Internal$Style$Behind]); }(); var $mdgriffith$elm_ui$Internal$Style$baseSheet = _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Class, 'html,body', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'padding', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, _Utils_ap( $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _Utils_ap( $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.imageContainer))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'block'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, 'img', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'max-height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'object-fit', 'cover') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, 'img', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'max-width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'object-fit', 'cover') ])) ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ':focus', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'outline', 'none') ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.root), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'min-height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '0'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, _Utils_ap( $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inFront), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.nearby), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'fixed'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '20') ])) ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.nearby), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'relative'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-direction', 'row'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), $mdgriffith$elm_ui$Internal$Style$elDescription), $mdgriffith$elm_ui$Internal$Style$Batch( function (fn) { return A2($elm$core$List$map, fn, $mdgriffith$elm_ui$Internal$Style$locations); }( function (loc) { switch (loc.$) { case 'Above': return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.above), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'bottom', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '20'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', 'auto') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])) ])); case 'Below': return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.below), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'bottom', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '20'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', 'auto') ])) ])); case 'OnRight': return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.onRight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'top', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '20'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])) ])); case 'OnLeft': return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.onLeft), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'right', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'top', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '20'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])) ])); case 'Within': return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inFront), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'top', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])) ])); default: return A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.behind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'absolute'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'top', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '*', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto') ])) ])); } })) ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'relative'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-shrink', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-direction', 'row'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'resize', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-feature-settings', 'inherit'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'box-sizing', 'border-box'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'padding', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-width', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-style', 'solid'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-size', 'inherit'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'color', 'inherit'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-family', 'inherit'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'line-height', '1'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', 'inherit'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-style', 'inherit'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.wrapped), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-wrap', 'wrap') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.noTextSelection), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, '-moz-user-select', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, '-webkit-user-select', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, '-ms-user-select', 'none'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'user-select', 'none') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.cursorPointer), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'cursor', 'pointer') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.cursorText), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'cursor', 'text') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.passPointerEvents), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.capturePointerEvents), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'auto !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.transparent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.opaque), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.hover, $mdgriffith$elm_ui$Internal$Style$classes.transparent)) + ':hover', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.hover, $mdgriffith$elm_ui$Internal$Style$classes.opaque)) + ':hover', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.focus, $mdgriffith$elm_ui$Internal$Style$classes.transparent)) + ':focus', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.focus, $mdgriffith$elm_ui$Internal$Style$classes.opaque)) + ':focus', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.active, $mdgriffith$elm_ui$Internal$Style$classes.transparent)) + ':active', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot( _Utils_ap($mdgriffith$elm_ui$Internal$Style$classes.active, $mdgriffith$elm_ui$Internal$Style$classes.opaque)) + ':active', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'opacity', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.transition), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Prop, 'transition', A2( $elm$core$String$join, ', ', A2( $elm$core$List$map, function (x) { return x + ' 160ms'; }, _List_fromArray( ['transform', 'opacity', 'filter', 'background-color', 'color', 'font-size'])))) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.scrollbars), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-shrink', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.scrollbarsX), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow-x', 'auto'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.row), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-shrink', '1') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.scrollbarsY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow-y', 'auto'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.column), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-shrink', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-shrink', '1') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.clip), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow', 'hidden') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.clipX), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow-x', 'hidden') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.clipY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow-y', 'hidden') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthContent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', 'auto') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.borderNone), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-width', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.borderDashed), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-style', 'dashed') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.borderDotted), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-style', 'dotted') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.borderSolid), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'border-style', 'solid') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.text), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'pre'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline-block') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputText), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'line-height', '1.05'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'background', 'transparent'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'inherit') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), $mdgriffith$elm_ui$Internal$Style$elDescription), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.row), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-direction', 'row'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', '0%'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthExact), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.link), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'stretch !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFillPortion), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'stretch !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '100000') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.container), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'stretch') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 'u:first-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerRight, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:first-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterX), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-left', 'auto !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:last-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterX), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-right', 'auto !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:only-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:last-of-type.' + ($mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX + ' ~ u'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 'u:first-of-type.' + ($mdgriffith$elm_ui$Internal$Style$classes.alignContainerRight + (' ~ s.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0') ])), $mdgriffith$elm_ui$Internal$Style$describeAlignment( function (alignment) { switch (alignment.$) { case 'Top': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-start') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-start') ])); case 'Bottom': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-end') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-end') ])); case 'Right': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-end') ]), _List_Nil); case 'Left': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-start') ]), _List_Nil); case 'CenterX': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'center') ]), _List_Nil); default: return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'center') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'center') ])); } }), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.spaceEvenly), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'space-between') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputLabel), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'baseline') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.column), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-direction', 'column'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', '0px'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'min-height', 'min-content'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightExact), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.heightFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '100000') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFill), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthFillPortion), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthContent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-start') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 'u:first-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerBottom, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:first-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', '0 !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:last-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', '0 !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:only-of-type.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '1'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.alignCenterY), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto !important') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 's:last-of-type.' + ($mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY + ' ~ u'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, 'u:first-of-type.' + ($mdgriffith$elm_ui$Internal$Style$classes.alignContainerBottom + (' ~ s.' + $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0') ])), $mdgriffith$elm_ui$Internal$Style$describeAlignment( function (alignment) { switch (alignment.$) { case 'Top': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-start') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-bottom', 'auto') ])); case 'Bottom': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-end') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin-top', 'auto') ])); case 'Right': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-end') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-end') ])); case 'Left': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-start') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'flex-start') ])); case 'CenterX': return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'center') ]), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'center') ])); default: return _Utils_Tuple2( _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'center') ]), _List_Nil); } }), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.container), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-grow', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-self', 'stretch !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.spaceEvenly), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'space-between') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.grid), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', '-ms-grid'), A2( $mdgriffith$elm_ui$Internal$Style$Child, '.gp', _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Supports, _Utils_Tuple2('display', 'grid'), _List_fromArray( [ _Utils_Tuple2('display', 'grid') ])), $mdgriffith$elm_ui$Internal$Style$gridAlignments( function (alignment) { switch (alignment.$) { case 'Top': return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-start') ]); case 'Bottom': return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'flex-end') ]); case 'Right': return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-end') ]); case 'Left': return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'flex-start') ]); case 'CenterX': return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'align-items', 'center') ]); default: return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'justify-content', 'center') ]); } }) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.page), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'block'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any + ':first-child'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot( $mdgriffith$elm_ui$Internal$Style$classes.any + ($mdgriffith$elm_ui$Internal$Style$selfName( $mdgriffith$elm_ui$Internal$Style$Self($mdgriffith$elm_ui$Internal$Style$Left)) + (':first-child + .' + $mdgriffith$elm_ui$Internal$Style$classes.any))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot( $mdgriffith$elm_ui$Internal$Style$classes.any + ($mdgriffith$elm_ui$Internal$Style$selfName( $mdgriffith$elm_ui$Internal$Style$Self($mdgriffith$elm_ui$Internal$Style$Right)) + (':first-child + .' + $mdgriffith$elm_ui$Internal$Style$classes.any))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'margin', '0 !important') ])), $mdgriffith$elm_ui$Internal$Style$describeAlignment( function (alignment) { switch (alignment.$) { case 'Top': return _Utils_Tuple2(_List_Nil, _List_Nil); case 'Bottom': return _Utils_Tuple2(_List_Nil, _List_Nil); case 'Right': return _Utils_Tuple2( _List_Nil, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'float', 'right'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '::after', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'content', '\"\"'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'table'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'clear', 'both') ])) ])); case 'Left': return _Utils_Tuple2( _List_Nil, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'float', 'left'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '::after', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'content', '\"\"'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'table'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'clear', 'both') ])) ])); case 'CenterX': return _Utils_Tuple2(_List_Nil, _List_Nil); default: return _Utils_Tuple2(_List_Nil, _List_Nil); } }) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputMultiline), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'pre-wrap !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'background-color', 'transparent') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineWrapper), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'flex-basis', 'auto') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineParent), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'pre-wrap !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'cursor', 'text'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineFiller), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'pre-wrap !important'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'color', 'transparent') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.paragraph), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'block'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'normal'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'overflow-wrap', 'break-word'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.hasBehind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '0'), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.behind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'z-index', '-1') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$AllChildren, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.text), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'normal') ])), A2( $mdgriffith$elm_ui$Internal$Style$AllChildren, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.paragraph), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '::after', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'content', 'none') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '::before', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'content', 'none') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$AllChildren, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.single), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'normal'), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.widthExact), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline-block') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.inFront), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.behind), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.above), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.below), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.onRight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.onLeft), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.text), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'white-space', 'normal') ])) ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.row), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.column), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline-flex') ])), A2( $mdgriffith$elm_ui$Internal$Style$Child, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.grid), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'inline-grid') ])), $mdgriffith$elm_ui$Internal$Style$describeAlignment( function (alignment) { switch (alignment.$) { case 'Top': return _Utils_Tuple2(_List_Nil, _List_Nil); case 'Bottom': return _Utils_Tuple2(_List_Nil, _List_Nil); case 'Right': return _Utils_Tuple2( _List_Nil, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'float', 'right') ])); case 'Left': return _Utils_Tuple2( _List_Nil, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'float', 'left') ])); case 'CenterX': return _Utils_Tuple2(_List_Nil, _List_Nil); default: return _Utils_Tuple2(_List_Nil, _List_Nil); } }) ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '.hidden', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'display', 'none') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textThin), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '100') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textExtraLight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '200') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textLight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '300') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textNormalWeight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '400') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textMedium), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '500') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textSemiBold), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '600') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.bold), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '700') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textExtraBold), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '800') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textHeavy), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-weight', '900') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.italic), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-style', 'italic') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.strike), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration', 'line-through') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.underline), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration', 'underline'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration-skip-ink', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration-skip', 'ink') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, _Utils_ap( $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.underline), $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.strike)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration', 'line-through underline'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration-skip-ink', 'auto'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-decoration-skip', 'ink') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textUnitalicized), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-style', 'normal') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textJustify), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'justify') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textJustifyAll), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'justify-all') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textCenter), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'center') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textRight), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'right') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, $mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.textLeft), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'text-align', 'left') ])), A2( $mdgriffith$elm_ui$Internal$Style$Descriptor, '.modal', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'position', 'fixed'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'left', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'top', '0'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'width', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'height', '100%'), A2($mdgriffith$elm_ui$Internal$Style$Prop, 'pointer-events', 'none') ])) ])) ]); var $mdgriffith$elm_ui$Internal$Style$fontVariant = function (_var) { return _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Class, '.v-' + _var, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-feature-settings', '\"' + (_var + '\"')) ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, '.v-' + (_var + '-off'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-feature-settings', '\"' + (_var + '\" 0')) ])) ]); }; var $mdgriffith$elm_ui$Internal$Style$commonValues = $elm$core$List$concat( _List_fromArray( [ A2( $elm$core$List$map, function (x) { return A2( $mdgriffith$elm_ui$Internal$Style$Class, '.border-' + $elm$core$String$fromInt(x), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Prop, 'border-width', $elm$core$String$fromInt(x) + 'px') ])); }, A2($elm$core$List$range, 0, 6)), A2( $elm$core$List$map, function (i) { return A2( $mdgriffith$elm_ui$Internal$Style$Class, '.font-size-' + $elm$core$String$fromInt(i), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Prop, 'font-size', $elm$core$String$fromInt(i) + 'px') ])); }, A2($elm$core$List$range, 8, 32)), A2( $elm$core$List$map, function (i) { return A2( $mdgriffith$elm_ui$Internal$Style$Class, '.p-' + $elm$core$String$fromInt(i), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Prop, 'padding', $elm$core$String$fromInt(i) + 'px') ])); }, A2($elm$core$List$range, 0, 24)), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Style$Class, '.v-smcp', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-variant', 'small-caps') ])), A2( $mdgriffith$elm_ui$Internal$Style$Class, '.v-smcp-off', _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Style$Prop, 'font-variant', 'normal') ])) ]), $mdgriffith$elm_ui$Internal$Style$fontVariant('zero'), $mdgriffith$elm_ui$Internal$Style$fontVariant('onum'), $mdgriffith$elm_ui$Internal$Style$fontVariant('liga'), $mdgriffith$elm_ui$Internal$Style$fontVariant('dlig'), $mdgriffith$elm_ui$Internal$Style$fontVariant('ordn'), $mdgriffith$elm_ui$Internal$Style$fontVariant('tnum'), $mdgriffith$elm_ui$Internal$Style$fontVariant('afrc'), $mdgriffith$elm_ui$Internal$Style$fontVariant('frac') ])); var $mdgriffith$elm_ui$Internal$Style$explainer = '\n.explain {\n border: 6px solid rgb(174, 121, 15) !important;\n}\n.explain > .' + ($mdgriffith$elm_ui$Internal$Style$classes.any + (' {\n border: 4px dashed rgb(0, 151, 167) !important;\n}\n\n.ctr {\n border: none !important;\n}\n.explain > .ctr > .' + ($mdgriffith$elm_ui$Internal$Style$classes.any + ' {\n border: 4px dashed rgb(0, 151, 167) !important;\n}\n\n'))); var $mdgriffith$elm_ui$Internal$Style$inputTextReset = '\ninput[type="search"],\ninput[type="search"]::-webkit-search-decoration,\ninput[type="search"]::-webkit-search-cancel-button,\ninput[type="search"]::-webkit-search-results-button,\ninput[type="search"]::-webkit-search-results-decoration {\n -webkit-appearance:none;\n}\n'; var $mdgriffith$elm_ui$Internal$Style$sliderReset = '\ninput[type=range] {\n -webkit-appearance: none; \n background: transparent;\n position:absolute;\n left:0;\n top:0;\n z-index:10;\n width: 100%;\n outline: dashed 1px;\n height: 100%;\n opacity: 0;\n}\n'; var $mdgriffith$elm_ui$Internal$Style$thumbReset = '\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-moz-range-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-ms-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range][orient=vertical]{\n writing-mode: bt-lr; /* IE */\n -webkit-appearance: slider-vertical; /* WebKit */\n}\n'; var $mdgriffith$elm_ui$Internal$Style$trackReset = '\ninput[type=range]::-moz-range-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-ms-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-webkit-slider-runnable-track {\n background: transparent;\n cursor: pointer;\n}\n'; var $mdgriffith$elm_ui$Internal$Style$overrides = '@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.row) + (' > ' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + (' { flex-basis: auto !important; } ' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.row) + (' > ' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.container) + (' { flex-basis: auto !important; }}' + ($mdgriffith$elm_ui$Internal$Style$inputTextReset + ($mdgriffith$elm_ui$Internal$Style$sliderReset + ($mdgriffith$elm_ui$Internal$Style$trackReset + ($mdgriffith$elm_ui$Internal$Style$thumbReset + $mdgriffith$elm_ui$Internal$Style$explainer))))))))))))))); var $elm$core$String$concat = function (strings) { return A2($elm$core$String$join, '', strings); }; var $mdgriffith$elm_ui$Internal$Style$Intermediate = function (a) { return {$: 'Intermediate', a: a}; }; var $mdgriffith$elm_ui$Internal$Style$emptyIntermediate = F2( function (selector, closing) { return $mdgriffith$elm_ui$Internal$Style$Intermediate( {closing: closing, others: _List_Nil, props: _List_Nil, selector: selector}); }); var $mdgriffith$elm_ui$Internal$Style$renderRules = F2( function (_v0, rulesToRender) { var parent = _v0.a; var generateIntermediates = F2( function (rule, rendered) { switch (rule.$) { case 'Prop': var name = rule.a; var val = rule.b; return _Utils_update( rendered, { props: A2( $elm$core$List$cons, _Utils_Tuple2(name, val), rendered.props) }); case 'Supports': var _v2 = rule.a; var prop = _v2.a; var value = _v2.b; var props = rule.b; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Style$Intermediate( {closing: '\n}', others: _List_Nil, props: props, selector: '@supports (' + (prop + (':' + (value + (') {' + parent.selector))))}), rendered.others) }); case 'Adjacent': var selector = rule.a; var adjRules = rule.b; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2($mdgriffith$elm_ui$Internal$Style$emptyIntermediate, parent.selector + (' + ' + selector), ''), adjRules), rendered.others) }); case 'Child': var child = rule.a; var childRules = rule.b; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2($mdgriffith$elm_ui$Internal$Style$emptyIntermediate, parent.selector + (' > ' + child), ''), childRules), rendered.others) }); case 'AllChildren': var child = rule.a; var childRules = rule.b; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2($mdgriffith$elm_ui$Internal$Style$emptyIntermediate, parent.selector + (' ' + child), ''), childRules), rendered.others) }); case 'Descriptor': var descriptor = rule.a; var descriptorRules = rule.b; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2( $mdgriffith$elm_ui$Internal$Style$emptyIntermediate, _Utils_ap(parent.selector, descriptor), ''), descriptorRules), rendered.others) }); default: var batched = rule.a; return _Utils_update( rendered, { others: A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2($mdgriffith$elm_ui$Internal$Style$emptyIntermediate, parent.selector, ''), batched), rendered.others) }); } }); return $mdgriffith$elm_ui$Internal$Style$Intermediate( A3($elm$core$List$foldr, generateIntermediates, parent, rulesToRender)); }); var $mdgriffith$elm_ui$Internal$Style$renderCompact = function (styleClasses) { var renderValues = function (values) { return $elm$core$String$concat( A2( $elm$core$List$map, function (_v3) { var x = _v3.a; var y = _v3.b; return x + (':' + (y + ';')); }, values)); }; var renderClass = function (rule) { var _v2 = rule.props; if (!_v2.b) { return ''; } else { return rule.selector + ('{' + (renderValues(rule.props) + (rule.closing + '}'))); } }; var renderIntermediate = function (_v0) { var rule = _v0.a; return _Utils_ap( renderClass(rule), $elm$core$String$concat( A2($elm$core$List$map, renderIntermediate, rule.others))); }; return $elm$core$String$concat( A2( $elm$core$List$map, renderIntermediate, A3( $elm$core$List$foldr, F2( function (_v1, existing) { var name = _v1.a; var styleRules = _v1.b; return A2( $elm$core$List$cons, A2( $mdgriffith$elm_ui$Internal$Style$renderRules, A2($mdgriffith$elm_ui$Internal$Style$emptyIntermediate, name, ''), styleRules), existing); }), _List_Nil, styleClasses))); }; var $mdgriffith$elm_ui$Internal$Style$rules = _Utils_ap( $mdgriffith$elm_ui$Internal$Style$overrides, $mdgriffith$elm_ui$Internal$Style$renderCompact( _Utils_ap($mdgriffith$elm_ui$Internal$Style$baseSheet, $mdgriffith$elm_ui$Internal$Style$commonValues))); var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; var $mdgriffith$elm_ui$Internal$Model$staticRoot = function (opts) { var _v0 = opts.mode; switch (_v0.$) { case 'Layout': return A3( $elm$virtual_dom$VirtualDom$node, 'div', _List_Nil, _List_fromArray( [ A3( $elm$virtual_dom$VirtualDom$node, 'style', _List_Nil, _List_fromArray( [ $elm$virtual_dom$VirtualDom$text($mdgriffith$elm_ui$Internal$Style$rules) ])) ])); case 'NoStaticStyleSheet': return $elm$virtual_dom$VirtualDom$text(''); default: return A3( $elm$virtual_dom$VirtualDom$node, 'elm-ui-static-rules', _List_fromArray( [ A2( $elm$virtual_dom$VirtualDom$property, 'rules', $elm$json$Json$Encode$string($mdgriffith$elm_ui$Internal$Style$rules)) ]), _List_Nil); } }; var $elm$json$Json$Encode$list = F2( function (func, entries) { return _Json_wrap( A3( $elm$core$List$foldl, _Json_addEntry(func), _Json_emptyArray(_Utils_Tuple0), entries)); }); var $elm$json$Json$Encode$object = function (pairs) { return _Json_wrap( A3( $elm$core$List$foldl, F2( function (_v0, obj) { var k = _v0.a; var v = _v0.b; return A3(_Json_addField, k, v, obj); }), _Json_emptyObject(_Utils_Tuple0), pairs)); }; var $mdgriffith$elm_ui$Internal$Model$fontName = function (font) { switch (font.$) { case 'Serif': return 'serif'; case 'SansSerif': return 'sans-serif'; case 'Monospace': return 'monospace'; case 'Typeface': var name = font.a; return '\"' + (name + '\"'); case 'ImportFont': var name = font.a; var url = font.b; return '\"' + (name + '\"'); default: var name = font.a.name; return '\"' + (name + '\"'); } }; var $mdgriffith$elm_ui$Internal$Model$isSmallCaps = function (_var) { switch (_var.$) { case 'VariantActive': var name = _var.a; return name === 'smcp'; case 'VariantOff': var name = _var.a; return false; default: var name = _var.a; var index = _var.b; return (name === 'smcp') && (index === 1); } }; var $mdgriffith$elm_ui$Internal$Model$hasSmallCaps = function (typeface) { if (typeface.$ === 'FontWith') { var font = typeface.a; return A2($elm$core$List$any, $mdgriffith$elm_ui$Internal$Model$isSmallCaps, font.variants); } else { return false; } }; var $elm$core$Basics$min = F2( function (x, y) { return (_Utils_cmp(x, y) < 0) ? x : y; }); var $elm$core$Basics$negate = function (n) { return -n; }; var $mdgriffith$elm_ui$Internal$Model$renderProps = F3( function (force, _v0, existing) { var key = _v0.a; var val = _v0.b; return force ? (existing + ('\n ' + (key + (': ' + (val + ' !important;'))))) : (existing + ('\n ' + (key + (': ' + (val + ';'))))); }); var $mdgriffith$elm_ui$Internal$Model$renderStyle = F4( function (options, maybePseudo, selector, props) { if (maybePseudo.$ === 'Nothing') { return _List_fromArray( [ selector + ('{' + (A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderProps(false), '', props) + '\n}')) ]); } else { var pseudo = maybePseudo.a; switch (pseudo.$) { case 'Hover': var _v2 = options.hover; switch (_v2.$) { case 'NoHover': return _List_Nil; case 'ForceHover': return _List_fromArray( [ selector + ('-hv {' + (A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderProps(true), '', props) + '\n}')) ]); default: return _List_fromArray( [ selector + ('-hv:hover {' + (A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderProps(false), '', props) + '\n}')) ]); } case 'Focus': var renderedProps = A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderProps(false), '', props); return _List_fromArray( [ selector + ('-fs:focus {' + (renderedProps + '\n}')), ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.any + (':focus ' + (selector + '-fs {')))) + (renderedProps + '\n}'), (selector + '-fs:focus-within {') + (renderedProps + '\n}'), ('.ui-slide-bar:focus + ' + ($mdgriffith$elm_ui$Internal$Style$dot($mdgriffith$elm_ui$Internal$Style$classes.any) + (' .focusable-thumb' + (selector + '-fs {')))) + (renderedProps + '\n}') ]); default: return _List_fromArray( [ selector + ('-act:active {' + (A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderProps(false), '', props) + '\n}')) ]); } } }); var $mdgriffith$elm_ui$Internal$Model$renderVariant = function (_var) { switch (_var.$) { case 'VariantActive': var name = _var.a; return '\"' + (name + '\"'); case 'VariantOff': var name = _var.a; return '\"' + (name + '\" 0'); default: var name = _var.a; var index = _var.b; return '\"' + (name + ('\" ' + $elm$core$String$fromInt(index))); } }; var $mdgriffith$elm_ui$Internal$Model$renderVariants = function (typeface) { if (typeface.$ === 'FontWith') { var font = typeface.a; return $elm$core$Maybe$Just( A2( $elm$core$String$join, ', ', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$renderVariant, font.variants))); } else { return $elm$core$Maybe$Nothing; } }; var $mdgriffith$elm_ui$Internal$Model$transformValue = function (transform) { switch (transform.$) { case 'Untransformed': return $elm$core$Maybe$Nothing; case 'Moved': var _v1 = transform.a; var x = _v1.a; var y = _v1.b; var z = _v1.c; return $elm$core$Maybe$Just( 'translate3d(' + ($elm$core$String$fromFloat(x) + ('px, ' + ($elm$core$String$fromFloat(y) + ('px, ' + ($elm$core$String$fromFloat(z) + 'px)')))))); default: var _v2 = transform.a; var tx = _v2.a; var ty = _v2.b; var tz = _v2.c; var _v3 = transform.b; var sx = _v3.a; var sy = _v3.b; var sz = _v3.c; var _v4 = transform.c; var ox = _v4.a; var oy = _v4.b; var oz = _v4.c; var angle = transform.d; var translate = 'translate3d(' + ($elm$core$String$fromFloat(tx) + ('px, ' + ($elm$core$String$fromFloat(ty) + ('px, ' + ($elm$core$String$fromFloat(tz) + 'px)'))))); var scale = 'scale3d(' + ($elm$core$String$fromFloat(sx) + (', ' + ($elm$core$String$fromFloat(sy) + (', ' + ($elm$core$String$fromFloat(sz) + ')'))))); var rotate = 'rotate3d(' + ($elm$core$String$fromFloat(ox) + (', ' + ($elm$core$String$fromFloat(oy) + (', ' + ($elm$core$String$fromFloat(oz) + (', ' + ($elm$core$String$fromFloat(angle) + 'rad)'))))))); return $elm$core$Maybe$Just(translate + (' ' + (scale + (' ' + rotate)))); } }; var $mdgriffith$elm_ui$Internal$Model$renderStyleRule = F3( function (options, rule, maybePseudo) { switch (rule.$) { case 'Style': var selector = rule.a; var props = rule.b; return A4($mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, selector, props); case 'Shadows': var name = rule.a; var prop = rule.b; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + name, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'box-shadow', prop) ])); case 'Transparency': var name = rule.a; var transparency = rule.b; var opacity = A2( $elm$core$Basics$max, 0, A2($elm$core$Basics$min, 1, 1 - transparency)); return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + name, _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'opacity', $elm$core$String$fromFloat(opacity)) ])); case 'FontSize': var i = rule.a; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.font-size-' + $elm$core$String$fromInt(i), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'font-size', $elm$core$String$fromInt(i) + 'px') ])); case 'FontFamily': var name = rule.a; var typefaces = rule.b; var features = A2( $elm$core$String$join, ', ', A2($elm$core$List$filterMap, $mdgriffith$elm_ui$Internal$Model$renderVariants, typefaces)); var families = _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'font-family', A2( $elm$core$String$join, ', ', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$fontName, typefaces))), A2($mdgriffith$elm_ui$Internal$Model$Property, 'font-feature-settings', features), A2( $mdgriffith$elm_ui$Internal$Model$Property, 'font-variant', A2($elm$core$List$any, $mdgriffith$elm_ui$Internal$Model$hasSmallCaps, typefaces) ? 'small-caps' : 'normal') ]); return A4($mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + name, families); case 'Single': var _class = rule.a; var prop = rule.b; var val = rule.c; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + _class, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, prop, val) ])); case 'Colored': var _class = rule.a; var prop = rule.b; var color = rule.c; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + _class, _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, prop, $mdgriffith$elm_ui$Internal$Model$formatColor(color)) ])); case 'SpacingStyle': var cls = rule.a; var x = rule.b; var y = rule.c; var yPx = $elm$core$String$fromInt(y) + 'px'; var xPx = $elm$core$String$fromInt(x) + 'px'; var single = '.' + $mdgriffith$elm_ui$Internal$Style$classes.single; var row = '.' + $mdgriffith$elm_ui$Internal$Style$classes.row; var wrappedRow = '.' + ($mdgriffith$elm_ui$Internal$Style$classes.wrapped + row); var right = '.' + $mdgriffith$elm_ui$Internal$Style$classes.alignRight; var paragraph = '.' + $mdgriffith$elm_ui$Internal$Style$classes.paragraph; var page = '.' + $mdgriffith$elm_ui$Internal$Style$classes.page; var left = '.' + $mdgriffith$elm_ui$Internal$Style$classes.alignLeft; var halfY = $elm$core$String$fromFloat(y / 2) + 'px'; var halfX = $elm$core$String$fromFloat(x / 2) + 'px'; var column = '.' + $mdgriffith$elm_ui$Internal$Style$classes.column; var _class = '.' + cls; var any = '.' + $mdgriffith$elm_ui$Internal$Style$classes.any; return $elm$core$List$concat( _List_fromArray( [ A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (row + (' > ' + (any + (' + ' + any)))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-left', xPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (wrappedRow + (' > ' + any)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin', halfY + (' ' + halfX)) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (column + (' > ' + (any + (' + ' + any)))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-top', yPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (page + (' > ' + (any + (' + ' + any)))), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-top', yPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (page + (' > ' + left)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-right', xPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (page + (' > ' + right)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-left', xPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _Utils_ap(_class, paragraph), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'line-height', 'calc(1em + ' + ($elm$core$String$fromInt(y) + 'px)')) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, 'textarea' + (any + _class), _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'line-height', 'calc(1em + ' + ($elm$core$String$fromInt(y) + 'px)')), A2( $mdgriffith$elm_ui$Internal$Model$Property, 'height', 'calc(100% + ' + ($elm$core$String$fromInt(y) + 'px)')) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (paragraph + (' > ' + left)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-right', xPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (paragraph + (' > ' + right)), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'margin-left', xPx) ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (paragraph + '::after'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'content', '\'\''), A2($mdgriffith$elm_ui$Internal$Model$Property, 'display', 'block'), A2($mdgriffith$elm_ui$Internal$Model$Property, 'height', '0'), A2($mdgriffith$elm_ui$Internal$Model$Property, 'width', '0'), A2( $mdgriffith$elm_ui$Internal$Model$Property, 'margin-top', $elm$core$String$fromInt((-1) * ((y / 2) | 0)) + 'px') ])), A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class + (paragraph + '::before'), _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'content', '\'\''), A2($mdgriffith$elm_ui$Internal$Model$Property, 'display', 'block'), A2($mdgriffith$elm_ui$Internal$Model$Property, 'height', '0'), A2($mdgriffith$elm_ui$Internal$Model$Property, 'width', '0'), A2( $mdgriffith$elm_ui$Internal$Model$Property, 'margin-bottom', $elm$core$String$fromInt((-1) * ((y / 2) | 0)) + 'px') ])) ])); case 'PaddingStyle': var cls = rule.a; var top = rule.b; var right = rule.c; var bottom = rule.d; var left = rule.e; var _class = '.' + cls; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class, _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'padding', $elm$core$String$fromFloat(top) + ('px ' + ($elm$core$String$fromFloat(right) + ('px ' + ($elm$core$String$fromFloat(bottom) + ('px ' + ($elm$core$String$fromFloat(left) + 'px'))))))) ])); case 'BorderWidth': var cls = rule.a; var top = rule.b; var right = rule.c; var bottom = rule.d; var left = rule.e; var _class = '.' + cls; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, _class, _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$Property, 'border-width', $elm$core$String$fromInt(top) + ('px ' + ($elm$core$String$fromInt(right) + ('px ' + ($elm$core$String$fromInt(bottom) + ('px ' + ($elm$core$String$fromInt(left) + 'px'))))))) ])); case 'GridTemplateStyle': var template = rule.a; var toGridLengthHelper = F3( function (minimum, maximum, x) { toGridLengthHelper: while (true) { switch (x.$) { case 'Px': var px = x.a; return $elm$core$String$fromInt(px) + 'px'; case 'Content': var _v2 = _Utils_Tuple2(minimum, maximum); if (_v2.a.$ === 'Nothing') { if (_v2.b.$ === 'Nothing') { var _v3 = _v2.a; var _v4 = _v2.b; return 'max-content'; } else { var _v6 = _v2.a; var maxSize = _v2.b.a; return 'minmax(max-content, ' + ($elm$core$String$fromInt(maxSize) + 'px)'); } } else { if (_v2.b.$ === 'Nothing') { var minSize = _v2.a.a; var _v5 = _v2.b; return 'minmax(' + ($elm$core$String$fromInt(minSize) + ('px, ' + 'max-content)')); } else { var minSize = _v2.a.a; var maxSize = _v2.b.a; return 'minmax(' + ($elm$core$String$fromInt(minSize) + ('px, ' + ($elm$core$String$fromInt(maxSize) + 'px)'))); } } case 'Fill': var i = x.a; var _v7 = _Utils_Tuple2(minimum, maximum); if (_v7.a.$ === 'Nothing') { if (_v7.b.$ === 'Nothing') { var _v8 = _v7.a; var _v9 = _v7.b; return $elm$core$String$fromInt(i) + 'fr'; } else { var _v11 = _v7.a; var maxSize = _v7.b.a; return 'minmax(max-content, ' + ($elm$core$String$fromInt(maxSize) + 'px)'); } } else { if (_v7.b.$ === 'Nothing') { var minSize = _v7.a.a; var _v10 = _v7.b; return 'minmax(' + ($elm$core$String$fromInt(minSize) + ('px, ' + ($elm$core$String$fromInt(i) + ('fr' + 'fr)')))); } else { var minSize = _v7.a.a; var maxSize = _v7.b.a; return 'minmax(' + ($elm$core$String$fromInt(minSize) + ('px, ' + ($elm$core$String$fromInt(maxSize) + 'px)'))); } } case 'Min': var m = x.a; var len = x.b; var $temp$minimum = $elm$core$Maybe$Just(m), $temp$maximum = maximum, $temp$x = len; minimum = $temp$minimum; maximum = $temp$maximum; x = $temp$x; continue toGridLengthHelper; default: var m = x.a; var len = x.b; var $temp$minimum = minimum, $temp$maximum = $elm$core$Maybe$Just(m), $temp$x = len; minimum = $temp$minimum; maximum = $temp$maximum; x = $temp$x; continue toGridLengthHelper; } } }); var toGridLength = function (x) { return A3(toGridLengthHelper, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, x); }; var xSpacing = toGridLength(template.spacing.a); var ySpacing = toGridLength(template.spacing.b); var rows = function (x) { return 'grid-template-rows: ' + (x + ';'); }( A2( $elm$core$String$join, ' ', A2($elm$core$List$map, toGridLength, template.rows))); var msRows = function (x) { return '-ms-grid-rows: ' + (x + ';'); }( A2( $elm$core$String$join, ySpacing, A2($elm$core$List$map, toGridLength, template.columns))); var msColumns = function (x) { return '-ms-grid-columns: ' + (x + ';'); }( A2( $elm$core$String$join, ySpacing, A2($elm$core$List$map, toGridLength, template.columns))); var gapY = 'grid-row-gap:' + (toGridLength(template.spacing.b) + ';'); var gapX = 'grid-column-gap:' + (toGridLength(template.spacing.a) + ';'); var columns = function (x) { return 'grid-template-columns: ' + (x + ';'); }( A2( $elm$core$String$join, ' ', A2($elm$core$List$map, toGridLength, template.columns))); var _class = '.grid-rows-' + (A2( $elm$core$String$join, '-', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$lengthClassName, template.rows)) + ('-cols-' + (A2( $elm$core$String$join, '-', A2($elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$lengthClassName, template.columns)) + ('-space-x-' + ($mdgriffith$elm_ui$Internal$Model$lengthClassName(template.spacing.a) + ('-space-y-' + $mdgriffith$elm_ui$Internal$Model$lengthClassName(template.spacing.b))))))); var modernGrid = _class + ('{' + (columns + (rows + (gapX + (gapY + '}'))))); var supports = '@supports (display:grid) {' + (modernGrid + '}'); var base = _class + ('{' + (msColumns + (msRows + '}'))); return _List_fromArray( [base, supports]); case 'GridPosition': var position = rule.a; var msPosition = A2( $elm$core$String$join, ' ', _List_fromArray( [ '-ms-grid-row: ' + ($elm$core$String$fromInt(position.row) + ';'), '-ms-grid-row-span: ' + ($elm$core$String$fromInt(position.height) + ';'), '-ms-grid-column: ' + ($elm$core$String$fromInt(position.col) + ';'), '-ms-grid-column-span: ' + ($elm$core$String$fromInt(position.width) + ';') ])); var modernPosition = A2( $elm$core$String$join, ' ', _List_fromArray( [ 'grid-row: ' + ($elm$core$String$fromInt(position.row) + (' / ' + ($elm$core$String$fromInt(position.row + position.height) + ';'))), 'grid-column: ' + ($elm$core$String$fromInt(position.col) + (' / ' + ($elm$core$String$fromInt(position.col + position.width) + ';'))) ])); var _class = '.grid-pos-' + ($elm$core$String$fromInt(position.row) + ('-' + ($elm$core$String$fromInt(position.col) + ('-' + ($elm$core$String$fromInt(position.width) + ('-' + $elm$core$String$fromInt(position.height))))))); var modernGrid = _class + ('{' + (modernPosition + '}')); var supports = '@supports (display:grid) {' + (modernGrid + '}'); var base = _class + ('{' + (msPosition + '}')); return _List_fromArray( [base, supports]); case 'PseudoSelector': var _class = rule.a; var styles = rule.b; var renderPseudoRule = function (style) { return A3( $mdgriffith$elm_ui$Internal$Model$renderStyleRule, options, style, $elm$core$Maybe$Just(_class)); }; return A2($elm$core$List$concatMap, renderPseudoRule, styles); default: var transform = rule.a; var val = $mdgriffith$elm_ui$Internal$Model$transformValue(transform); var _class = $mdgriffith$elm_ui$Internal$Model$transformClass(transform); var _v12 = _Utils_Tuple2(_class, val); if ((_v12.a.$ === 'Just') && (_v12.b.$ === 'Just')) { var cls = _v12.a.a; var v = _v12.b.a; return A4( $mdgriffith$elm_ui$Internal$Model$renderStyle, options, maybePseudo, '.' + cls, _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$Property, 'transform', v) ])); } else { return _List_Nil; } } }); var $mdgriffith$elm_ui$Internal$Model$encodeStyles = F2( function (options, stylesheet) { return $elm$json$Json$Encode$object( A2( $elm$core$List$map, function (style) { var styled = A3($mdgriffith$elm_ui$Internal$Model$renderStyleRule, options, style, $elm$core$Maybe$Nothing); return _Utils_Tuple2( $mdgriffith$elm_ui$Internal$Model$getStyleName(style), A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, styled)); }, stylesheet)); }); var $mdgriffith$elm_ui$Internal$Model$bracket = F2( function (selector, rules) { var renderPair = function (_v0) { var name = _v0.a; var val = _v0.b; return name + (': ' + (val + ';')); }; return selector + (' {' + (A2( $elm$core$String$join, '', A2($elm$core$List$map, renderPair, rules)) + '}')); }); var $mdgriffith$elm_ui$Internal$Model$fontRule = F3( function (name, modifier, _v0) { var parentAdj = _v0.a; var textAdjustment = _v0.b; return _List_fromArray( [ A2($mdgriffith$elm_ui$Internal$Model$bracket, '.' + (name + ('.' + (modifier + (', ' + ('.' + (name + (' .' + modifier))))))), parentAdj), A2($mdgriffith$elm_ui$Internal$Model$bracket, '.' + (name + ('.' + (modifier + ('> .' + ($mdgriffith$elm_ui$Internal$Style$classes.text + (', .' + (name + (' .' + (modifier + (' > .' + $mdgriffith$elm_ui$Internal$Style$classes.text)))))))))), textAdjustment) ]); }); var $mdgriffith$elm_ui$Internal$Model$renderFontAdjustmentRule = F3( function (fontToAdjust, _v0, otherFontName) { var full = _v0.a; var capital = _v0.b; var name = _Utils_eq(fontToAdjust, otherFontName) ? fontToAdjust : (otherFontName + (' .' + fontToAdjust)); return A2( $elm$core$String$join, ' ', _Utils_ap( A3($mdgriffith$elm_ui$Internal$Model$fontRule, name, $mdgriffith$elm_ui$Internal$Style$classes.sizeByCapital, capital), A3($mdgriffith$elm_ui$Internal$Model$fontRule, name, $mdgriffith$elm_ui$Internal$Style$classes.fullSize, full))); }); var $mdgriffith$elm_ui$Internal$Model$renderNullAdjustmentRule = F2( function (fontToAdjust, otherFontName) { var name = _Utils_eq(fontToAdjust, otherFontName) ? fontToAdjust : (otherFontName + (' .' + fontToAdjust)); return A2( $elm$core$String$join, ' ', _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$bracket, '.' + (name + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.sizeByCapital + (', ' + ('.' + (name + (' .' + $mdgriffith$elm_ui$Internal$Style$classes.sizeByCapital))))))), _List_fromArray( [ _Utils_Tuple2('line-height', '1') ])), A2( $mdgriffith$elm_ui$Internal$Model$bracket, '.' + (name + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.sizeByCapital + ('> .' + ($mdgriffith$elm_ui$Internal$Style$classes.text + (', .' + (name + (' .' + ($mdgriffith$elm_ui$Internal$Style$classes.sizeByCapital + (' > .' + $mdgriffith$elm_ui$Internal$Style$classes.text)))))))))), _List_fromArray( [ _Utils_Tuple2('vertical-align', '0'), _Utils_Tuple2('line-height', '1') ])) ])); }); var $mdgriffith$elm_ui$Internal$Model$adjust = F3( function (size, height, vertical) { return {height: height / size, size: size, vertical: vertical}; }); var $elm$core$List$filter = F2( function (isGood, list) { return A3( $elm$core$List$foldr, F2( function (x, xs) { return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs; }), _List_Nil, list); }); var $elm$core$List$maximum = function (list) { if (list.b) { var x = list.a; var xs = list.b; return $elm$core$Maybe$Just( A3($elm$core$List$foldl, $elm$core$Basics$max, x, xs)); } else { return $elm$core$Maybe$Nothing; } }; var $elm$core$List$minimum = function (list) { if (list.b) { var x = list.a; var xs = list.b; return $elm$core$Maybe$Just( A3($elm$core$List$foldl, $elm$core$Basics$min, x, xs)); } else { return $elm$core$Maybe$Nothing; } }; var $elm$core$Basics$neq = _Utils_notEqual; var $mdgriffith$elm_ui$Internal$Model$convertAdjustment = function (adjustment) { var lines = _List_fromArray( [adjustment.capital, adjustment.baseline, adjustment.descender, adjustment.lowercase]); var lineHeight = 1.5; var normalDescender = (lineHeight - 1) / 2; var oldMiddle = lineHeight / 2; var descender = A2( $elm$core$Maybe$withDefault, adjustment.descender, $elm$core$List$minimum(lines)); var newBaseline = A2( $elm$core$Maybe$withDefault, adjustment.baseline, $elm$core$List$minimum( A2( $elm$core$List$filter, function (x) { return !_Utils_eq(x, descender); }, lines))); var base = lineHeight; var ascender = A2( $elm$core$Maybe$withDefault, adjustment.capital, $elm$core$List$maximum(lines)); var capitalSize = 1 / (ascender - newBaseline); var capitalVertical = 1 - ascender; var fullSize = 1 / (ascender - descender); var fullVertical = 1 - ascender; var newCapitalMiddle = ((ascender - newBaseline) / 2) + newBaseline; var newFullMiddle = ((ascender - descender) / 2) + descender; return { capital: A3($mdgriffith$elm_ui$Internal$Model$adjust, capitalSize, ascender - newBaseline, capitalVertical), full: A3($mdgriffith$elm_ui$Internal$Model$adjust, fullSize, ascender - descender, fullVertical) }; }; var $mdgriffith$elm_ui$Internal$Model$fontAdjustmentRules = function (converted) { return _Utils_Tuple2( _List_fromArray( [ _Utils_Tuple2('display', 'block') ]), _List_fromArray( [ _Utils_Tuple2('display', 'inline-block'), _Utils_Tuple2( 'line-height', $elm$core$String$fromFloat(converted.height)), _Utils_Tuple2( 'vertical-align', $elm$core$String$fromFloat(converted.vertical) + 'em'), _Utils_Tuple2( 'font-size', $elm$core$String$fromFloat(converted.size) + 'em') ])); }; var $mdgriffith$elm_ui$Internal$Model$typefaceAdjustment = function (typefaces) { return A3( $elm$core$List$foldl, F2( function (face, found) { if (found.$ === 'Nothing') { if (face.$ === 'FontWith') { var _with = face.a; var _v2 = _with.adjustment; if (_v2.$ === 'Nothing') { return found; } else { var adjustment = _v2.a; return $elm$core$Maybe$Just( _Utils_Tuple2( $mdgriffith$elm_ui$Internal$Model$fontAdjustmentRules( function ($) { return $.full; }( $mdgriffith$elm_ui$Internal$Model$convertAdjustment(adjustment))), $mdgriffith$elm_ui$Internal$Model$fontAdjustmentRules( function ($) { return $.capital; }( $mdgriffith$elm_ui$Internal$Model$convertAdjustment(adjustment))))); } } else { return found; } } else { return found; } }), $elm$core$Maybe$Nothing, typefaces); }; var $mdgriffith$elm_ui$Internal$Model$renderTopLevelValues = function (rules) { var withImport = function (font) { if (font.$ === 'ImportFont') { var url = font.b; return $elm$core$Maybe$Just('@import url(\'' + (url + '\');')); } else { return $elm$core$Maybe$Nothing; } }; var fontImports = function (_v2) { var name = _v2.a; var typefaces = _v2.b; var imports = A2( $elm$core$String$join, '\n', A2($elm$core$List$filterMap, withImport, typefaces)); return imports; }; var allNames = A2($elm$core$List$map, $elm$core$Tuple$first, rules); var fontAdjustments = function (_v1) { var name = _v1.a; var typefaces = _v1.b; var _v0 = $mdgriffith$elm_ui$Internal$Model$typefaceAdjustment(typefaces); if (_v0.$ === 'Nothing') { return A2( $elm$core$String$join, '', A2( $elm$core$List$map, $mdgriffith$elm_ui$Internal$Model$renderNullAdjustmentRule(name), allNames)); } else { var adjustment = _v0.a; return A2( $elm$core$String$join, '', A2( $elm$core$List$map, A2($mdgriffith$elm_ui$Internal$Model$renderFontAdjustmentRule, name, adjustment), allNames)); } }; return _Utils_ap( A2( $elm$core$String$join, '\n', A2($elm$core$List$map, fontImports, rules)), A2( $elm$core$String$join, '\n', A2($elm$core$List$map, fontAdjustments, rules))); }; var $mdgriffith$elm_ui$Internal$Model$topLevelValue = function (rule) { if (rule.$ === 'FontFamily') { var name = rule.a; var typefaces = rule.b; return $elm$core$Maybe$Just( _Utils_Tuple2(name, typefaces)); } else { return $elm$core$Maybe$Nothing; } }; var $mdgriffith$elm_ui$Internal$Model$toStyleSheetString = F2( function (options, stylesheet) { var combine = F2( function (style, rendered) { return { rules: _Utils_ap( rendered.rules, A3($mdgriffith$elm_ui$Internal$Model$renderStyleRule, options, style, $elm$core$Maybe$Nothing)), topLevel: function () { var _v1 = $mdgriffith$elm_ui$Internal$Model$topLevelValue(style); if (_v1.$ === 'Nothing') { return rendered.topLevel; } else { var topLevel = _v1.a; return A2($elm$core$List$cons, topLevel, rendered.topLevel); } }() }; }); var _v0 = A3( $elm$core$List$foldl, combine, {rules: _List_Nil, topLevel: _List_Nil}, stylesheet); var topLevel = _v0.topLevel; var rules = _v0.rules; return _Utils_ap( $mdgriffith$elm_ui$Internal$Model$renderTopLevelValues(topLevel), $elm$core$String$concat(rules)); }); var $mdgriffith$elm_ui$Internal$Model$toStyleSheet = F2( function (options, styleSheet) { var _v0 = options.mode; switch (_v0.$) { case 'Layout': return A3( $elm$virtual_dom$VirtualDom$node, 'div', _List_Nil, _List_fromArray( [ A3( $elm$virtual_dom$VirtualDom$node, 'style', _List_Nil, _List_fromArray( [ $elm$virtual_dom$VirtualDom$text( A2($mdgriffith$elm_ui$Internal$Model$toStyleSheetString, options, styleSheet)) ])) ])); case 'NoStaticStyleSheet': return A3( $elm$virtual_dom$VirtualDom$node, 'div', _List_Nil, _List_fromArray( [ A3( $elm$virtual_dom$VirtualDom$node, 'style', _List_Nil, _List_fromArray( [ $elm$virtual_dom$VirtualDom$text( A2($mdgriffith$elm_ui$Internal$Model$toStyleSheetString, options, styleSheet)) ])) ])); default: return A3( $elm$virtual_dom$VirtualDom$node, 'elm-ui-rules', _List_fromArray( [ A2( $elm$virtual_dom$VirtualDom$property, 'rules', A2($mdgriffith$elm_ui$Internal$Model$encodeStyles, options, styleSheet)) ]), _List_Nil); } }); var $mdgriffith$elm_ui$Internal$Model$embedKeyed = F4( function (_static, opts, styles, children) { var dynamicStyleSheet = A2( $mdgriffith$elm_ui$Internal$Model$toStyleSheet, opts, A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$reduceStyles, _Utils_Tuple2( $elm$core$Set$empty, $mdgriffith$elm_ui$Internal$Model$renderFocusStyle(opts.focus)), styles).b); return _static ? A2( $elm$core$List$cons, _Utils_Tuple2( 'static-stylesheet', $mdgriffith$elm_ui$Internal$Model$staticRoot(opts)), A2( $elm$core$List$cons, _Utils_Tuple2('dynamic-stylesheet', dynamicStyleSheet), children)) : A2( $elm$core$List$cons, _Utils_Tuple2('dynamic-stylesheet', dynamicStyleSheet), children); }); var $mdgriffith$elm_ui$Internal$Model$embedWith = F4( function (_static, opts, styles, children) { var dynamicStyleSheet = A2( $mdgriffith$elm_ui$Internal$Model$toStyleSheet, opts, A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$reduceStyles, _Utils_Tuple2( $elm$core$Set$empty, $mdgriffith$elm_ui$Internal$Model$renderFocusStyle(opts.focus)), styles).b); return _static ? A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$staticRoot(opts), A2($elm$core$List$cons, dynamicStyleSheet, children)) : A2($elm$core$List$cons, dynamicStyleSheet, children); }); var $mdgriffith$elm_ui$Internal$Flag$heightBetween = $mdgriffith$elm_ui$Internal$Flag$flag(45); var $mdgriffith$elm_ui$Internal$Flag$heightFill = $mdgriffith$elm_ui$Internal$Flag$flag(37); var $elm$virtual_dom$VirtualDom$keyedNode = function (tag) { return _VirtualDom_keyedNode( _VirtualDom_noScript(tag)); }; var $elm$core$Basics$not = _Basics_not; var $elm$html$Html$p = _VirtualDom_node('p'); var $elm$core$Bitwise$and = _Bitwise_and; var $mdgriffith$elm_ui$Internal$Flag$present = F2( function (myFlag, _v0) { var fieldOne = _v0.a; var fieldTwo = _v0.b; if (myFlag.$ === 'Flag') { var first = myFlag.a; return _Utils_eq(first & fieldOne, first); } else { var second = myFlag.a; return _Utils_eq(second & fieldTwo, second); } }); var $elm$html$Html$s = _VirtualDom_node('s'); var $elm$html$Html$u = _VirtualDom_node('u'); var $mdgriffith$elm_ui$Internal$Flag$widthBetween = $mdgriffith$elm_ui$Internal$Flag$flag(44); var $mdgriffith$elm_ui$Internal$Flag$widthFill = $mdgriffith$elm_ui$Internal$Flag$flag(39); var $mdgriffith$elm_ui$Internal$Model$finalizeNode = F6( function (has, node, attributes, children, embedMode, parentContext) { var createNode = F2( function (nodeName, attrs) { if (children.$ === 'Keyed') { var keyed = children.a; return A3( $elm$virtual_dom$VirtualDom$keyedNode, nodeName, attrs, function () { switch (embedMode.$) { case 'NoStyleSheet': return keyed; case 'OnlyDynamic': var opts = embedMode.a; var styles = embedMode.b; return A4($mdgriffith$elm_ui$Internal$Model$embedKeyed, false, opts, styles, keyed); default: var opts = embedMode.a; var styles = embedMode.b; return A4($mdgriffith$elm_ui$Internal$Model$embedKeyed, true, opts, styles, keyed); } }()); } else { var unkeyed = children.a; return A2( function () { switch (nodeName) { case 'div': return $elm$html$Html$div; case 'p': return $elm$html$Html$p; default: return $elm$virtual_dom$VirtualDom$node(nodeName); } }(), attrs, function () { switch (embedMode.$) { case 'NoStyleSheet': return unkeyed; case 'OnlyDynamic': var opts = embedMode.a; var styles = embedMode.b; return A4($mdgriffith$elm_ui$Internal$Model$embedWith, false, opts, styles, unkeyed); default: var opts = embedMode.a; var styles = embedMode.b; return A4($mdgriffith$elm_ui$Internal$Model$embedWith, true, opts, styles, unkeyed); } }()); } }); var html = function () { switch (node.$) { case 'Generic': return A2(createNode, 'div', attributes); case 'NodeName': var nodeName = node.a; return A2(createNode, nodeName, attributes); default: var nodeName = node.a; var internal = node.b; return A3( $elm$virtual_dom$VirtualDom$node, nodeName, attributes, _List_fromArray( [ A2( createNode, internal, _List_fromArray( [ $elm$html$Html$Attributes$class($mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.single)) ])) ])); } }(); switch (parentContext.$) { case 'AsRow': return (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$widthFill, has) && (!A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$widthBetween, has))) ? html : (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$alignRight, has) ? A2( $elm$html$Html$u, _List_fromArray( [ $elm$html$Html$Attributes$class( A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.any, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.container, $mdgriffith$elm_ui$Internal$Style$classes.contentCenterY, $mdgriffith$elm_ui$Internal$Style$classes.alignContainerRight]))) ]), _List_fromArray( [html])) : (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$centerX, has) ? A2( $elm$html$Html$s, _List_fromArray( [ $elm$html$Html$Attributes$class( A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.any, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.container, $mdgriffith$elm_ui$Internal$Style$classes.contentCenterY, $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterX]))) ]), _List_fromArray( [html])) : html)); case 'AsColumn': return (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$heightFill, has) && (!A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$heightBetween, has))) ? html : (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$centerY, has) ? A2( $elm$html$Html$s, _List_fromArray( [ $elm$html$Html$Attributes$class( A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.any, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.container, $mdgriffith$elm_ui$Internal$Style$classes.alignContainerCenterY]))) ]), _List_fromArray( [html])) : (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$alignBottom, has) ? A2( $elm$html$Html$u, _List_fromArray( [ $elm$html$Html$Attributes$class( A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.any, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.container, $mdgriffith$elm_ui$Internal$Style$classes.alignContainerBottom]))) ]), _List_fromArray( [html])) : html)); default: return html; } }); var $elm$core$List$isEmpty = function (xs) { if (!xs.b) { return true; } else { return false; } }; var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; var $mdgriffith$elm_ui$Internal$Model$textElementClasses = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.text + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.widthContent + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.heightContent))))); var $mdgriffith$elm_ui$Internal$Model$textElement = function (str) { return A2( $elm$html$Html$div, _List_fromArray( [ $elm$html$Html$Attributes$class($mdgriffith$elm_ui$Internal$Model$textElementClasses) ]), _List_fromArray( [ $elm$html$Html$text(str) ])); }; var $mdgriffith$elm_ui$Internal$Model$textElementFillClasses = $mdgriffith$elm_ui$Internal$Style$classes.any + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.text + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.widthFill + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.heightFill))))); var $mdgriffith$elm_ui$Internal$Model$textElementFill = function (str) { return A2( $elm$html$Html$div, _List_fromArray( [ $elm$html$Html$Attributes$class($mdgriffith$elm_ui$Internal$Model$textElementFillClasses) ]), _List_fromArray( [ $elm$html$Html$text(str) ])); }; var $mdgriffith$elm_ui$Internal$Model$createElement = F3( function (context, children, rendered) { var gatherKeyed = F2( function (_v8, _v9) { var key = _v8.a; var child = _v8.b; var htmls = _v9.a; var existingStyles = _v9.b; switch (child.$) { case 'Unstyled': var html = child.a; return _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asParagraph) ? _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_Tuple2( key, html(context)), htmls), existingStyles) : _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_Tuple2( key, html(context)), htmls), existingStyles); case 'Styled': var styled = child.a; return _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asParagraph) ? _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_Tuple2( key, A2(styled.html, $mdgriffith$elm_ui$Internal$Model$NoStyleSheet, context)), htmls), $elm$core$List$isEmpty(existingStyles) ? styled.styles : _Utils_ap(styled.styles, existingStyles)) : _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_Tuple2( key, A2(styled.html, $mdgriffith$elm_ui$Internal$Model$NoStyleSheet, context)), htmls), $elm$core$List$isEmpty(existingStyles) ? styled.styles : _Utils_ap(styled.styles, existingStyles)); case 'Text': var str = child.a; return _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_Tuple2( key, _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asEl) ? $mdgriffith$elm_ui$Internal$Model$textElementFill(str) : $mdgriffith$elm_ui$Internal$Model$textElement(str)), htmls), existingStyles); default: return _Utils_Tuple2(htmls, existingStyles); } }); var gather = F2( function (child, _v6) { var htmls = _v6.a; var existingStyles = _v6.b; switch (child.$) { case 'Unstyled': var html = child.a; return _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asParagraph) ? _Utils_Tuple2( A2( $elm$core$List$cons, html(context), htmls), existingStyles) : _Utils_Tuple2( A2( $elm$core$List$cons, html(context), htmls), existingStyles); case 'Styled': var styled = child.a; return _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asParagraph) ? _Utils_Tuple2( A2( $elm$core$List$cons, A2(styled.html, $mdgriffith$elm_ui$Internal$Model$NoStyleSheet, context), htmls), $elm$core$List$isEmpty(existingStyles) ? styled.styles : _Utils_ap(styled.styles, existingStyles)) : _Utils_Tuple2( A2( $elm$core$List$cons, A2(styled.html, $mdgriffith$elm_ui$Internal$Model$NoStyleSheet, context), htmls), $elm$core$List$isEmpty(existingStyles) ? styled.styles : _Utils_ap(styled.styles, existingStyles)); case 'Text': var str = child.a; return _Utils_Tuple2( A2( $elm$core$List$cons, _Utils_eq(context, $mdgriffith$elm_ui$Internal$Model$asEl) ? $mdgriffith$elm_ui$Internal$Model$textElementFill(str) : $mdgriffith$elm_ui$Internal$Model$textElement(str), htmls), existingStyles); default: return _Utils_Tuple2(htmls, existingStyles); } }); if (children.$ === 'Keyed') { var keyedChildren = children.a; var _v1 = A3( $elm$core$List$foldr, gatherKeyed, _Utils_Tuple2(_List_Nil, _List_Nil), keyedChildren); var keyed = _v1.a; var styles = _v1.b; var newStyles = $elm$core$List$isEmpty(styles) ? rendered.styles : _Utils_ap(rendered.styles, styles); if (!newStyles.b) { return $mdgriffith$elm_ui$Internal$Model$Unstyled( A5( $mdgriffith$elm_ui$Internal$Model$finalizeNode, rendered.has, rendered.node, rendered.attributes, $mdgriffith$elm_ui$Internal$Model$Keyed( A3($mdgriffith$elm_ui$Internal$Model$addKeyedChildren, 'nearby-element-pls', keyed, rendered.children)), $mdgriffith$elm_ui$Internal$Model$NoStyleSheet)); } else { var allStyles = newStyles; return $mdgriffith$elm_ui$Internal$Model$Styled( { html: A4( $mdgriffith$elm_ui$Internal$Model$finalizeNode, rendered.has, rendered.node, rendered.attributes, $mdgriffith$elm_ui$Internal$Model$Keyed( A3($mdgriffith$elm_ui$Internal$Model$addKeyedChildren, 'nearby-element-pls', keyed, rendered.children))), styles: allStyles }); } } else { var unkeyedChildren = children.a; var _v3 = A3( $elm$core$List$foldr, gather, _Utils_Tuple2(_List_Nil, _List_Nil), unkeyedChildren); var unkeyed = _v3.a; var styles = _v3.b; var newStyles = $elm$core$List$isEmpty(styles) ? rendered.styles : _Utils_ap(rendered.styles, styles); if (!newStyles.b) { return $mdgriffith$elm_ui$Internal$Model$Unstyled( A5( $mdgriffith$elm_ui$Internal$Model$finalizeNode, rendered.has, rendered.node, rendered.attributes, $mdgriffith$elm_ui$Internal$Model$Unkeyed( A2($mdgriffith$elm_ui$Internal$Model$addChildren, unkeyed, rendered.children)), $mdgriffith$elm_ui$Internal$Model$NoStyleSheet)); } else { var allStyles = newStyles; return $mdgriffith$elm_ui$Internal$Model$Styled( { html: A4( $mdgriffith$elm_ui$Internal$Model$finalizeNode, rendered.has, rendered.node, rendered.attributes, $mdgriffith$elm_ui$Internal$Model$Unkeyed( A2($mdgriffith$elm_ui$Internal$Model$addChildren, unkeyed, rendered.children))), styles: allStyles }); } } }); var $mdgriffith$elm_ui$Internal$Model$Single = F3( function (a, b, c) { return {$: 'Single', a: a, b: b, c: c}; }); var $mdgriffith$elm_ui$Internal$Model$Transform = function (a) { return {$: 'Transform', a: a}; }; var $mdgriffith$elm_ui$Internal$Flag$Field = F2( function (a, b) { return {$: 'Field', a: a, b: b}; }); var $elm$core$Bitwise$or = _Bitwise_or; var $mdgriffith$elm_ui$Internal$Flag$add = F2( function (myFlag, _v0) { var one = _v0.a; var two = _v0.b; if (myFlag.$ === 'Flag') { var first = myFlag.a; return A2($mdgriffith$elm_ui$Internal$Flag$Field, first | one, two); } else { var second = myFlag.a; return A2($mdgriffith$elm_ui$Internal$Flag$Field, one, second | two); } }); var $mdgriffith$elm_ui$Internal$Model$ChildrenBehind = function (a) { return {$: 'ChildrenBehind', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$ChildrenBehindAndInFront = F2( function (a, b) { return {$: 'ChildrenBehindAndInFront', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$ChildrenInFront = function (a) { return {$: 'ChildrenInFront', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$nearbyElement = F2( function (location, elem) { return A2( $elm$html$Html$div, _List_fromArray( [ $elm$html$Html$Attributes$class( function () { switch (location.$) { case 'Above': return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.above])); case 'Below': return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.below])); case 'OnRight': return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.onRight])); case 'OnLeft': return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.onLeft])); case 'InFront': return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.inFront])); default: return A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.nearby, $mdgriffith$elm_ui$Internal$Style$classes.single, $mdgriffith$elm_ui$Internal$Style$classes.behind])); } }()) ]), _List_fromArray( [ function () { switch (elem.$) { case 'Empty': return $elm$virtual_dom$VirtualDom$text(''); case 'Text': var str = elem.a; return $mdgriffith$elm_ui$Internal$Model$textElement(str); case 'Unstyled': var html = elem.a; return html($mdgriffith$elm_ui$Internal$Model$asEl); default: var styled = elem.a; return A2(styled.html, $mdgriffith$elm_ui$Internal$Model$NoStyleSheet, $mdgriffith$elm_ui$Internal$Model$asEl); } }() ])); }); var $mdgriffith$elm_ui$Internal$Model$addNearbyElement = F3( function (location, elem, existing) { var nearby = A2($mdgriffith$elm_ui$Internal$Model$nearbyElement, location, elem); switch (existing.$) { case 'NoNearbyChildren': if (location.$ === 'Behind') { return $mdgriffith$elm_ui$Internal$Model$ChildrenBehind( _List_fromArray( [nearby])); } else { return $mdgriffith$elm_ui$Internal$Model$ChildrenInFront( _List_fromArray( [nearby])); } case 'ChildrenBehind': var existingBehind = existing.a; if (location.$ === 'Behind') { return $mdgriffith$elm_ui$Internal$Model$ChildrenBehind( A2($elm$core$List$cons, nearby, existingBehind)); } else { return A2( $mdgriffith$elm_ui$Internal$Model$ChildrenBehindAndInFront, existingBehind, _List_fromArray( [nearby])); } case 'ChildrenInFront': var existingInFront = existing.a; if (location.$ === 'Behind') { return A2( $mdgriffith$elm_ui$Internal$Model$ChildrenBehindAndInFront, _List_fromArray( [nearby]), existingInFront); } else { return $mdgriffith$elm_ui$Internal$Model$ChildrenInFront( A2($elm$core$List$cons, nearby, existingInFront)); } default: var existingBehind = existing.a; var existingInFront = existing.b; if (location.$ === 'Behind') { return A2( $mdgriffith$elm_ui$Internal$Model$ChildrenBehindAndInFront, A2($elm$core$List$cons, nearby, existingBehind), existingInFront); } else { return A2( $mdgriffith$elm_ui$Internal$Model$ChildrenBehindAndInFront, existingBehind, A2($elm$core$List$cons, nearby, existingInFront)); } } }); var $mdgriffith$elm_ui$Internal$Model$Embedded = F2( function (a, b) { return {$: 'Embedded', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$NodeName = function (a) { return {$: 'NodeName', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$addNodeName = F2( function (newNode, old) { switch (old.$) { case 'Generic': return $mdgriffith$elm_ui$Internal$Model$NodeName(newNode); case 'NodeName': var name = old.a; return A2($mdgriffith$elm_ui$Internal$Model$Embedded, name, newNode); default: var x = old.a; var y = old.b; return A2($mdgriffith$elm_ui$Internal$Model$Embedded, x, y); } }); var $mdgriffith$elm_ui$Internal$Model$alignXName = function (align) { switch (align.$) { case 'Left': return $mdgriffith$elm_ui$Internal$Style$classes.alignedHorizontally + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignLeft); case 'Right': return $mdgriffith$elm_ui$Internal$Style$classes.alignedHorizontally + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignRight); default: return $mdgriffith$elm_ui$Internal$Style$classes.alignedHorizontally + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignCenterX); } }; var $mdgriffith$elm_ui$Internal$Model$alignYName = function (align) { switch (align.$) { case 'Top': return $mdgriffith$elm_ui$Internal$Style$classes.alignedVertically + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignTop); case 'Bottom': return $mdgriffith$elm_ui$Internal$Style$classes.alignedVertically + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignBottom); default: return $mdgriffith$elm_ui$Internal$Style$classes.alignedVertically + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.alignCenterY); } }; var $elm$virtual_dom$VirtualDom$attribute = F2( function (key, value) { return A2( _VirtualDom_attribute, _VirtualDom_noOnOrFormAction(key), _VirtualDom_noJavaScriptOrHtmlUri(value)); }); var $mdgriffith$elm_ui$Internal$Model$FullTransform = F4( function (a, b, c, d) { return {$: 'FullTransform', a: a, b: b, c: c, d: d}; }); var $mdgriffith$elm_ui$Internal$Model$Moved = function (a) { return {$: 'Moved', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$composeTransformation = F2( function (transform, component) { switch (transform.$) { case 'Untransformed': switch (component.$) { case 'MoveX': var x = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(x, 0, 0)); case 'MoveY': var y = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(0, y, 0)); case 'MoveZ': var z = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(0, 0, z)); case 'MoveXYZ': var xyz = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved(xyz); case 'Rotate': var xyz = component.a; var angle = component.b; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, _Utils_Tuple3(0, 0, 0), _Utils_Tuple3(1, 1, 1), xyz, angle); default: var xyz = component.a; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, _Utils_Tuple3(0, 0, 0), xyz, _Utils_Tuple3(0, 0, 1), 0); } case 'Moved': var moved = transform.a; var x = moved.a; var y = moved.b; var z = moved.c; switch (component.$) { case 'MoveX': var newX = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(newX, y, z)); case 'MoveY': var newY = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(x, newY, z)); case 'MoveZ': var newZ = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved( _Utils_Tuple3(x, y, newZ)); case 'MoveXYZ': var xyz = component.a; return $mdgriffith$elm_ui$Internal$Model$Moved(xyz); case 'Rotate': var xyz = component.a; var angle = component.b; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, moved, _Utils_Tuple3(1, 1, 1), xyz, angle); default: var scale = component.a; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, moved, scale, _Utils_Tuple3(0, 0, 1), 0); } default: var moved = transform.a; var x = moved.a; var y = moved.b; var z = moved.c; var scaled = transform.b; var origin = transform.c; var angle = transform.d; switch (component.$) { case 'MoveX': var newX = component.a; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, _Utils_Tuple3(newX, y, z), scaled, origin, angle); case 'MoveY': var newY = component.a; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, _Utils_Tuple3(x, newY, z), scaled, origin, angle); case 'MoveZ': var newZ = component.a; return A4( $mdgriffith$elm_ui$Internal$Model$FullTransform, _Utils_Tuple3(x, y, newZ), scaled, origin, angle); case 'MoveXYZ': var newMove = component.a; return A4($mdgriffith$elm_ui$Internal$Model$FullTransform, newMove, scaled, origin, angle); case 'Rotate': var newOrigin = component.a; var newAngle = component.b; return A4($mdgriffith$elm_ui$Internal$Model$FullTransform, moved, scaled, newOrigin, newAngle); default: var newScale = component.a; return A4($mdgriffith$elm_ui$Internal$Model$FullTransform, moved, newScale, origin, angle); } } }); var $mdgriffith$elm_ui$Internal$Flag$height = $mdgriffith$elm_ui$Internal$Flag$flag(7); var $mdgriffith$elm_ui$Internal$Flag$heightContent = $mdgriffith$elm_ui$Internal$Flag$flag(36); var $mdgriffith$elm_ui$Internal$Flag$merge = F2( function (_v0, _v1) { var one = _v0.a; var two = _v0.b; var three = _v1.a; var four = _v1.b; return A2($mdgriffith$elm_ui$Internal$Flag$Field, one | three, two | four); }); var $mdgriffith$elm_ui$Internal$Flag$none = A2($mdgriffith$elm_ui$Internal$Flag$Field, 0, 0); var $mdgriffith$elm_ui$Internal$Model$renderHeight = function (h) { switch (h.$) { case 'Px': var px = h.a; var val = $elm$core$String$fromInt(px); var name = 'height-px-' + val; return _Utils_Tuple3( $mdgriffith$elm_ui$Internal$Flag$none, $mdgriffith$elm_ui$Internal$Style$classes.heightExact + (' ' + name), _List_fromArray( [ A3($mdgriffith$elm_ui$Internal$Model$Single, name, 'height', val + 'px') ])); case 'Content': return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightContent, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.heightContent, _List_Nil); case 'Fill': var portion = h.a; return (portion === 1) ? _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightFill, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.heightFill, _List_Nil) : _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightFill, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.heightFillPortion + (' height-fill-' + $elm$core$String$fromInt(portion)), _List_fromArray( [ A3( $mdgriffith$elm_ui$Internal$Model$Single, $mdgriffith$elm_ui$Internal$Style$classes.any + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.column + (' > ' + $mdgriffith$elm_ui$Internal$Style$dot( 'height-fill-' + $elm$core$String$fromInt(portion))))), 'flex-grow', $elm$core$String$fromInt(portion * 100000)) ])); case 'Min': var minSize = h.a; var len = h.b; var cls = 'min-height-' + $elm$core$String$fromInt(minSize); var style = A3( $mdgriffith$elm_ui$Internal$Model$Single, cls, 'min-height', $elm$core$String$fromInt(minSize) + 'px !important'); var _v1 = $mdgriffith$elm_ui$Internal$Model$renderHeight(len); var newFlag = _v1.a; var newAttrs = _v1.b; var newStyle = _v1.c; return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightBetween, newFlag), cls + (' ' + newAttrs), A2($elm$core$List$cons, style, newStyle)); default: var maxSize = h.a; var len = h.b; var cls = 'max-height-' + $elm$core$String$fromInt(maxSize); var style = A3( $mdgriffith$elm_ui$Internal$Model$Single, cls, 'max-height', $elm$core$String$fromInt(maxSize) + 'px'); var _v2 = $mdgriffith$elm_ui$Internal$Model$renderHeight(len); var newFlag = _v2.a; var newAttrs = _v2.b; var newStyle = _v2.c; return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightBetween, newFlag), cls + (' ' + newAttrs), A2($elm$core$List$cons, style, newStyle)); } }; var $mdgriffith$elm_ui$Internal$Flag$widthContent = $mdgriffith$elm_ui$Internal$Flag$flag(38); var $mdgriffith$elm_ui$Internal$Model$renderWidth = function (w) { switch (w.$) { case 'Px': var px = w.a; return _Utils_Tuple3( $mdgriffith$elm_ui$Internal$Flag$none, $mdgriffith$elm_ui$Internal$Style$classes.widthExact + (' width-px-' + $elm$core$String$fromInt(px)), _List_fromArray( [ A3( $mdgriffith$elm_ui$Internal$Model$Single, 'width-px-' + $elm$core$String$fromInt(px), 'width', $elm$core$String$fromInt(px) + 'px') ])); case 'Content': return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthContent, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.widthContent, _List_Nil); case 'Fill': var portion = w.a; return (portion === 1) ? _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthFill, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.widthFill, _List_Nil) : _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthFill, $mdgriffith$elm_ui$Internal$Flag$none), $mdgriffith$elm_ui$Internal$Style$classes.widthFillPortion + (' width-fill-' + $elm$core$String$fromInt(portion)), _List_fromArray( [ A3( $mdgriffith$elm_ui$Internal$Model$Single, $mdgriffith$elm_ui$Internal$Style$classes.any + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.row + (' > ' + $mdgriffith$elm_ui$Internal$Style$dot( 'width-fill-' + $elm$core$String$fromInt(portion))))), 'flex-grow', $elm$core$String$fromInt(portion * 100000)) ])); case 'Min': var minSize = w.a; var len = w.b; var cls = 'min-width-' + $elm$core$String$fromInt(minSize); var style = A3( $mdgriffith$elm_ui$Internal$Model$Single, cls, 'min-width', $elm$core$String$fromInt(minSize) + 'px'); var _v1 = $mdgriffith$elm_ui$Internal$Model$renderWidth(len); var newFlag = _v1.a; var newAttrs = _v1.b; var newStyle = _v1.c; return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthBetween, newFlag), cls + (' ' + newAttrs), A2($elm$core$List$cons, style, newStyle)); default: var maxSize = w.a; var len = w.b; var cls = 'max-width-' + $elm$core$String$fromInt(maxSize); var style = A3( $mdgriffith$elm_ui$Internal$Model$Single, cls, 'max-width', $elm$core$String$fromInt(maxSize) + 'px'); var _v2 = $mdgriffith$elm_ui$Internal$Model$renderWidth(len); var newFlag = _v2.a; var newAttrs = _v2.b; var newStyle = _v2.c; return _Utils_Tuple3( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthBetween, newFlag), cls + (' ' + newAttrs), A2($elm$core$List$cons, style, newStyle)); } }; var $mdgriffith$elm_ui$Internal$Flag$borderWidth = $mdgriffith$elm_ui$Internal$Flag$flag(27); var $elm$core$Basics$ge = _Utils_ge; var $mdgriffith$elm_ui$Internal$Model$skippable = F2( function (flag, style) { if (_Utils_eq(flag, $mdgriffith$elm_ui$Internal$Flag$borderWidth)) { if (style.$ === 'Single') { var val = style.c; switch (val) { case '0px': return true; case '1px': return true; case '2px': return true; case '3px': return true; case '4px': return true; case '5px': return true; case '6px': return true; default: return false; } } else { return false; } } else { switch (style.$) { case 'FontSize': var i = style.a; return (i >= 8) && (i <= 32); case 'PaddingStyle': var name = style.a; var t = style.b; var r = style.c; var b = style.d; var l = style.e; return _Utils_eq(t, b) && (_Utils_eq(t, r) && (_Utils_eq(t, l) && ((t >= 0) && (t <= 24)))); default: return false; } } }); var $mdgriffith$elm_ui$Internal$Flag$width = $mdgriffith$elm_ui$Internal$Flag$flag(6); var $mdgriffith$elm_ui$Internal$Flag$xAlign = $mdgriffith$elm_ui$Internal$Flag$flag(30); var $mdgriffith$elm_ui$Internal$Flag$yAlign = $mdgriffith$elm_ui$Internal$Flag$flag(29); var $mdgriffith$elm_ui$Internal$Model$gatherAttrRecursive = F8( function (classes, node, has, transform, styles, attrs, children, elementAttrs) { gatherAttrRecursive: while (true) { if (!elementAttrs.b) { var _v1 = $mdgriffith$elm_ui$Internal$Model$transformClass(transform); if (_v1.$ === 'Nothing') { return { attributes: A2( $elm$core$List$cons, $elm$html$Html$Attributes$class(classes), attrs), children: children, has: has, node: node, styles: styles }; } else { var _class = _v1.a; return { attributes: A2( $elm$core$List$cons, $elm$html$Html$Attributes$class(classes + (' ' + _class)), attrs), children: children, has: has, node: node, styles: A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Transform(transform), styles) }; } } else { var attribute = elementAttrs.a; var remaining = elementAttrs.b; switch (attribute.$) { case 'NoAttribute': var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Class': var flag = attribute.a; var exactClassName = attribute.b; if (A2($mdgriffith$elm_ui$Internal$Flag$present, flag, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = exactClassName + (' ' + classes), $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, flag, has), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } case 'Attr': var actualAttribute = attribute.a; var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = A2($elm$core$List$cons, actualAttribute, attrs), $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'StyleClass': var flag = attribute.a; var style = attribute.b; if (A2($mdgriffith$elm_ui$Internal$Flag$present, flag, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { if (A2($mdgriffith$elm_ui$Internal$Model$skippable, flag, style)) { var $temp$classes = $mdgriffith$elm_ui$Internal$Model$getStyleName(style) + (' ' + classes), $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, flag, has), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = $mdgriffith$elm_ui$Internal$Model$getStyleName(style) + (' ' + classes), $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, flag, has), $temp$transform = transform, $temp$styles = A2($elm$core$List$cons, style, styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } } case 'TransformComponent': var flag = attribute.a; var component = attribute.b; var $temp$classes = classes, $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, flag, has), $temp$transform = A2($mdgriffith$elm_ui$Internal$Model$composeTransformation, transform, component), $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Width': var width = attribute.a; if (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$width, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { switch (width.$) { case 'Px': var px = width.a; var $temp$classes = ($mdgriffith$elm_ui$Internal$Style$classes.widthExact + (' width-px-' + $elm$core$String$fromInt(px))) + (' ' + classes), $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$width, has), $temp$transform = transform, $temp$styles = A2( $elm$core$List$cons, A3( $mdgriffith$elm_ui$Internal$Model$Single, 'width-px-' + $elm$core$String$fromInt(px), 'width', $elm$core$String$fromInt(px) + 'px'), styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Content': var $temp$classes = classes + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.widthContent), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthContent, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$width, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Fill': var portion = width.a; if (portion === 1) { var $temp$classes = classes + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.widthFill), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthFill, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$width, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = classes + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.widthFillPortion + (' width-fill-' + $elm$core$String$fromInt(portion)))), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$widthFill, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$width, has)), $temp$transform = transform, $temp$styles = A2( $elm$core$List$cons, A3( $mdgriffith$elm_ui$Internal$Model$Single, $mdgriffith$elm_ui$Internal$Style$classes.any + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.row + (' > ' + $mdgriffith$elm_ui$Internal$Style$dot( 'width-fill-' + $elm$core$String$fromInt(portion))))), 'flex-grow', $elm$core$String$fromInt(portion * 100000)), styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } default: var _v4 = $mdgriffith$elm_ui$Internal$Model$renderWidth(width); var addToFlags = _v4.a; var newClass = _v4.b; var newStyles = _v4.c; var $temp$classes = classes + (' ' + newClass), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$merge, addToFlags, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$width, has)), $temp$transform = transform, $temp$styles = _Utils_ap(newStyles, styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } } case 'Height': var height = attribute.a; if (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$height, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { switch (height.$) { case 'Px': var px = height.a; var val = $elm$core$String$fromInt(px) + 'px'; var name = 'height-px-' + val; var $temp$classes = $mdgriffith$elm_ui$Internal$Style$classes.heightExact + (' ' + (name + (' ' + classes))), $temp$node = node, $temp$has = A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$height, has), $temp$transform = transform, $temp$styles = A2( $elm$core$List$cons, A3($mdgriffith$elm_ui$Internal$Model$Single, name, 'height ', val), styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Content': var $temp$classes = $mdgriffith$elm_ui$Internal$Style$classes.heightContent + (' ' + classes), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightContent, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$height, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Fill': var portion = height.a; if (portion === 1) { var $temp$classes = $mdgriffith$elm_ui$Internal$Style$classes.heightFill + (' ' + classes), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightFill, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$height, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = classes + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.heightFillPortion + (' height-fill-' + $elm$core$String$fromInt(portion)))), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$heightFill, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$height, has)), $temp$transform = transform, $temp$styles = A2( $elm$core$List$cons, A3( $mdgriffith$elm_ui$Internal$Model$Single, $mdgriffith$elm_ui$Internal$Style$classes.any + ('.' + ($mdgriffith$elm_ui$Internal$Style$classes.column + (' > ' + $mdgriffith$elm_ui$Internal$Style$dot( 'height-fill-' + $elm$core$String$fromInt(portion))))), 'flex-grow', $elm$core$String$fromInt(portion * 100000)), styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } default: var _v6 = $mdgriffith$elm_ui$Internal$Model$renderHeight(height); var addToFlags = _v6.a; var newClass = _v6.b; var newStyles = _v6.c; var $temp$classes = classes + (' ' + newClass), $temp$node = node, $temp$has = A2( $mdgriffith$elm_ui$Internal$Flag$merge, addToFlags, A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$height, has)), $temp$transform = transform, $temp$styles = _Utils_ap(newStyles, styles), $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } } case 'Describe': var description = attribute.a; switch (description.$) { case 'Main': var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'main', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Navigation': var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'nav', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'ContentInfo': var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'footer', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Complementary': var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'aside', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Heading': var i = description.a; if (i <= 1) { var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'h1', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { if (i < 7) { var $temp$classes = classes, $temp$node = A2( $mdgriffith$elm_ui$Internal$Model$addNodeName, 'h' + $elm$core$String$fromInt(i), node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = classes, $temp$node = A2($mdgriffith$elm_ui$Internal$Model$addNodeName, 'h6', node), $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } } case 'Paragraph': var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Button': var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = A2( $elm$core$List$cons, A2($elm$virtual_dom$VirtualDom$attribute, 'role', 'button'), attrs), $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'Label': var label = description.a; var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = A2( $elm$core$List$cons, A2($elm$virtual_dom$VirtualDom$attribute, 'aria-label', label), attrs), $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'LivePolite': var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = A2( $elm$core$List$cons, A2($elm$virtual_dom$VirtualDom$attribute, 'aria-live', 'polite'), attrs), $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; default: var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = A2( $elm$core$List$cons, A2($elm$virtual_dom$VirtualDom$attribute, 'aria-live', 'assertive'), attrs), $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } case 'Nearby': var location = attribute.a; var elem = attribute.b; var newStyles = function () { switch (elem.$) { case 'Empty': return styles; case 'Text': var str = elem.a; return styles; case 'Unstyled': var html = elem.a; return styles; default: var styled = elem.a; return _Utils_ap(styles, styled.styles); } }(); var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = newStyles, $temp$attrs = attrs, $temp$children = A3($mdgriffith$elm_ui$Internal$Model$addNearbyElement, location, elem, children), $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; case 'AlignX': var x = attribute.a; if (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$xAlign, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = $mdgriffith$elm_ui$Internal$Model$alignXName(x) + (' ' + classes), $temp$node = node, $temp$has = function (flags) { switch (x.$) { case 'CenterX': return A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$centerX, flags); case 'Right': return A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$alignRight, flags); default: return flags; } }( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$xAlign, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } default: var y = attribute.a; if (A2($mdgriffith$elm_ui$Internal$Flag$present, $mdgriffith$elm_ui$Internal$Flag$yAlign, has)) { var $temp$classes = classes, $temp$node = node, $temp$has = has, $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } else { var $temp$classes = $mdgriffith$elm_ui$Internal$Model$alignYName(y) + (' ' + classes), $temp$node = node, $temp$has = function (flags) { switch (y.$) { case 'CenterY': return A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$centerY, flags); case 'Bottom': return A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$alignBottom, flags); default: return flags; } }( A2($mdgriffith$elm_ui$Internal$Flag$add, $mdgriffith$elm_ui$Internal$Flag$yAlign, has)), $temp$transform = transform, $temp$styles = styles, $temp$attrs = attrs, $temp$children = children, $temp$elementAttrs = remaining; classes = $temp$classes; node = $temp$node; has = $temp$has; transform = $temp$transform; styles = $temp$styles; attrs = $temp$attrs; children = $temp$children; elementAttrs = $temp$elementAttrs; continue gatherAttrRecursive; } } } } }); var $mdgriffith$elm_ui$Internal$Model$Untransformed = {$: 'Untransformed'}; var $mdgriffith$elm_ui$Internal$Model$untransformed = $mdgriffith$elm_ui$Internal$Model$Untransformed; var $mdgriffith$elm_ui$Internal$Model$element = F4( function (context, node, attributes, children) { return A3( $mdgriffith$elm_ui$Internal$Model$createElement, context, children, A8( $mdgriffith$elm_ui$Internal$Model$gatherAttrRecursive, $mdgriffith$elm_ui$Internal$Model$contextClasses(context), node, $mdgriffith$elm_ui$Internal$Flag$none, $mdgriffith$elm_ui$Internal$Model$untransformed, _List_Nil, _List_Nil, $mdgriffith$elm_ui$Internal$Model$NoNearbyChildren, $elm$core$List$reverse(attributes))); }); var $mdgriffith$elm_ui$Element$Input$enter = 'Enter'; var $mdgriffith$elm_ui$Internal$Model$NoAttribute = {$: 'NoAttribute'}; var $mdgriffith$elm_ui$Element$Input$hasFocusStyle = function (attr) { if (((attr.$ === 'StyleClass') && (attr.b.$ === 'PseudoSelector')) && (attr.b.a.$ === 'Focus')) { var _v1 = attr.b; var _v2 = _v1.a; return true; } else { return false; } }; var $mdgriffith$elm_ui$Internal$Model$htmlClass = function (cls) { return $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$class(cls)); }; var $mdgriffith$elm_ui$Element$Input$focusDefault = function (attrs) { return A2($elm$core$List$any, $mdgriffith$elm_ui$Element$Input$hasFocusStyle, attrs) ? $mdgriffith$elm_ui$Internal$Model$NoAttribute : $mdgriffith$elm_ui$Internal$Model$htmlClass('focusable'); }; var $mdgriffith$elm_ui$Internal$Model$Height = function (a) { return {$: 'Height', a: a}; }; var $mdgriffith$elm_ui$Element$height = $mdgriffith$elm_ui$Internal$Model$Height; var $elm$virtual_dom$VirtualDom$Normal = function (a) { return {$: 'Normal', a: a}; }; var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on; var $elm$html$Html$Events$on = F2( function (event, decoder) { return A2( $elm$virtual_dom$VirtualDom$on, event, $elm$virtual_dom$VirtualDom$Normal(decoder)); }); var $elm$html$Html$Events$onClick = function (msg) { return A2( $elm$html$Html$Events$on, 'click', $elm$json$Json$Decode$succeed(msg)); }; var $mdgriffith$elm_ui$Element$Events$onClick = A2($elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Attr, $elm$html$Html$Events$onClick); var $elm$json$Json$Decode$fail = _Json_fail; var $elm$json$Json$Decode$field = _Json_decodeField; var $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) { return {$: 'MayPreventDefault', a: a}; }; var $elm$html$Html$Events$preventDefaultOn = F2( function (event, decoder) { return A2( $elm$virtual_dom$VirtualDom$on, event, $elm$virtual_dom$VirtualDom$MayPreventDefault(decoder)); }); var $elm$json$Json$Decode$string = _Json_decodeString; var $mdgriffith$elm_ui$Element$Input$onKeyLookup = function (lookup) { var decode = function (code) { var _v0 = lookup(code); if (_v0.$ === 'Nothing') { return $elm$json$Json$Decode$fail('No key matched'); } else { var msg = _v0.a; return $elm$json$Json$Decode$succeed(msg); } }; var isKey = A2( $elm$json$Json$Decode$andThen, decode, A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)); return $mdgriffith$elm_ui$Internal$Model$Attr( A2( $elm$html$Html$Events$preventDefaultOn, 'keydown', A2( $elm$json$Json$Decode$map, function (fired) { return _Utils_Tuple2(fired, true); }, isKey))); }; var $mdgriffith$elm_ui$Internal$Model$Class = F2( function (a, b) { return {$: 'Class', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Flag$cursor = $mdgriffith$elm_ui$Internal$Flag$flag(21); var $mdgriffith$elm_ui$Element$pointer = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$cursor, $mdgriffith$elm_ui$Internal$Style$classes.cursorPointer); var $mdgriffith$elm_ui$Internal$Model$Content = {$: 'Content'}; var $mdgriffith$elm_ui$Element$shrink = $mdgriffith$elm_ui$Internal$Model$Content; var $mdgriffith$elm_ui$Element$Input$space = ' '; var $elm$html$Html$Attributes$tabindex = function (n) { return A2( _VirtualDom_attribute, 'tabIndex', $elm$core$String$fromInt(n)); }; var $mdgriffith$elm_ui$Internal$Model$Width = function (a) { return {$: 'Width', a: a}; }; var $mdgriffith$elm_ui$Element$width = $mdgriffith$elm_ui$Internal$Model$Width; var $mdgriffith$elm_ui$Element$Input$button = F2( function (attrs, _v0) { var onPress = _v0.onPress; var label = _v0.label; return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.contentCenterX + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.contentCenterY + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.seButton + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.noTextSelection)))))), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$pointer, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$Input$focusDefault(attrs), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Describe($mdgriffith$elm_ui$Internal$Model$Button), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$tabindex(0)), function () { if (onPress.$ === 'Nothing') { return A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$disabled(true)), attrs); } else { var msg = onPress.a; return A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$Events$onClick(msg), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$Input$onKeyLookup( function (code) { return _Utils_eq(code, $mdgriffith$elm_ui$Element$Input$enter) ? $elm$core$Maybe$Just(msg) : (_Utils_eq(code, $mdgriffith$elm_ui$Element$Input$space) ? $elm$core$Maybe$Just(msg) : $elm$core$Maybe$Nothing); }), attrs)); } }()))))))), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [label]))); }); var $mdgriffith$elm_ui$Internal$Flag$fontAlignment = $mdgriffith$elm_ui$Internal$Flag$flag(12); var $mdgriffith$elm_ui$Element$Font$center = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$fontAlignment, $mdgriffith$elm_ui$Internal$Style$classes.textCenter); var $mdgriffith$elm_ui$Internal$Flag$borderColor = $mdgriffith$elm_ui$Internal$Flag$flag(28); var $mdgriffith$elm_ui$Element$Border$color = function (clr) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$borderColor, A3( $mdgriffith$elm_ui$Internal$Model$Colored, 'bc-' + $mdgriffith$elm_ui$Internal$Model$formatColorClass(clr), 'border-color', clr)); }; var $mdgriffith$elm_ui$Internal$Model$Label = function (a) { return {$: 'Label', a: a}; }; var $mdgriffith$elm_ui$Element$Region$description = A2($elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Describe, $mdgriffith$elm_ui$Internal$Model$Label); var $mdgriffith$elm_ui$Internal$Flag$fontWeight = $mdgriffith$elm_ui$Internal$Flag$flag(13); var $mdgriffith$elm_ui$Element$Font$light = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$fontWeight, $mdgriffith$elm_ui$Internal$Style$classes.textLight); var $mdgriffith$elm_ui$Internal$Model$Min = F2( function (a, b) { return {$: 'Min', a: a, b: b}; }); var $mdgriffith$elm_ui$Element$minimum = F2( function (i, l) { return A2($mdgriffith$elm_ui$Internal$Model$Min, i, l); }); var $mdgriffith$elm_ui$Element$htmlAttribute = $mdgriffith$elm_ui$Internal$Model$Attr; var $elm$virtual_dom$VirtualDom$style = _VirtualDom_style; var $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style; var $author$project$Views$noTouchDelay = $mdgriffith$elm_ui$Element$htmlAttribute( A2($elm$html$Html$Attributes$style, 'touch-action', 'manipulation')); var $mdgriffith$elm_ui$Internal$Model$PaddingStyle = F5( function (a, b, c, d, e) { return {$: 'PaddingStyle', a: a, b: b, c: c, d: d, e: e}; }); var $mdgriffith$elm_ui$Internal$Flag$padding = $mdgriffith$elm_ui$Internal$Flag$flag(2); var $mdgriffith$elm_ui$Element$padding = function (x) { var f = x; return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, 'p-' + $elm$core$String$fromInt(x), f, f, f, f)); }; var $mdgriffith$elm_ui$Internal$Flag$borderRound = $mdgriffith$elm_ui$Internal$Flag$flag(17); var $mdgriffith$elm_ui$Element$Border$rounded = function (radius) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$borderRound, A3( $mdgriffith$elm_ui$Internal$Model$Single, 'br-' + $elm$core$String$fromInt(radius), 'border-radius', $elm$core$String$fromInt(radius) + 'px')); }; var $mdgriffith$elm_ui$Internal$Flag$borderStyle = $mdgriffith$elm_ui$Internal$Flag$flag(11); var $mdgriffith$elm_ui$Element$Border$solid = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$borderStyle, $mdgriffith$elm_ui$Internal$Style$classes.borderSolid); var $mdgriffith$elm_ui$Internal$Model$Text = function (a) { return {$: 'Text', a: a}; }; var $mdgriffith$elm_ui$Element$text = function (content) { return $mdgriffith$elm_ui$Internal$Model$Text(content); }; var $mdgriffith$elm_ui$Internal$Model$BorderWidth = F5( function (a, b, c, d, e) { return {$: 'BorderWidth', a: a, b: b, c: c, d: d, e: e}; }); var $mdgriffith$elm_ui$Element$Border$width = function (v) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$borderWidth, A5( $mdgriffith$elm_ui$Internal$Model$BorderWidth, 'b-' + $elm$core$String$fromInt(v), v, v, v, v)); }; var $author$project$Views$buttonImpl = F5( function (colors, label, description, msg, minWidth) { return A2( $mdgriffith$elm_ui$Element$Input$button, _List_fromArray( [ $mdgriffith$elm_ui$Element$Border$rounded(5), $mdgriffith$elm_ui$Element$Border$color(colors.activeHilite), $mdgriffith$elm_ui$Element$Border$width(1), $mdgriffith$elm_ui$Element$Border$solid, $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$color( function () { if (msg.$ === 'Just') { return colors.foreground; } else { return colors.inactiveForeground; } }()), $mdgriffith$elm_ui$Element$padding(5), $mdgriffith$elm_ui$Element$width( function () { if (minWidth.$ === 'Just') { var w = minWidth.a; return A2($mdgriffith$elm_ui$Element$minimum, w, $mdgriffith$elm_ui$Element$shrink); } else { return $mdgriffith$elm_ui$Element$shrink; } }()), $mdgriffith$elm_ui$Element$Font$center, $mdgriffith$elm_ui$Element$Region$description(description), $author$project$Views$noTouchDelay ]), { label: $mdgriffith$elm_ui$Element$text(label), onPress: msg }); }); var $author$project$Views$lightweightButton = F4( function (colors, label, description, msg) { return A5($author$project$Views$buttonImpl, colors, label, description, msg, $elm$core$Maybe$Nothing); }); var $author$project$Views$Constants$Night = {$: 'Night'}; var $author$project$Views$Constants$rotate = function (mode) { if (mode.$ === 'Day') { return $author$project$Views$Constants$Night; } else { return $author$project$Views$Constants$Day; } }; var $author$project$Views$colorModeButton = F4( function (colors, strings, colorMode, handle) { return A4( $author$project$Views$lightweightButton, colors, _Utils_eq(colorMode, $author$project$Views$Constants$Day) ? '☼' : '☾', strings.colorModeDescription, $elm$core$Maybe$Just( handle( $author$project$Views$Constants$rotate(colorMode)))); }); var $mdgriffith$elm_ui$Internal$Model$AsColumn = {$: 'AsColumn'}; var $mdgriffith$elm_ui$Internal$Model$asColumn = $mdgriffith$elm_ui$Internal$Model$AsColumn; var $mdgriffith$elm_ui$Element$column = F2( function (attrs, children) { return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asColumn, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.contentTop + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.contentLeft)), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$shrink), attrs))), $mdgriffith$elm_ui$Internal$Model$Unkeyed(children)); }); var $author$project$Views$controlButton = F5( function (colors, label, description, msg, enabled) { return A5( $author$project$Views$buttonImpl, colors, label, description, enabled ? $elm$core$Maybe$Just(msg) : $elm$core$Maybe$Nothing, $elm$core$Maybe$Just(60)); }); var $author$project$Views$WordEntry = F3( function (word, foundByUser, friendInitials) { return {foundByUser: foundByUser, friendInitials: friendInitials, word: word}; }); var $elm$core$String$slice = _String_slice; var $elm$core$List$sortBy = _List_sortBy; var $elm$core$List$sort = function (xs) { return A2($elm$core$List$sortBy, $elm$core$Basics$identity, xs); }; var $author$project$Bee$decoratedWords = F2( function (data, peopleInfo) { return A2( $elm$core$List$map, function (_v0) { var w = _v0.a; var foundBy = _v0.b; return A3( $author$project$Views$WordEntry, w, !$elm$core$List$isEmpty( A2( $elm$core$List$filter, $elm$core$Basics$eq(peopleInfo.user), foundBy)), A2( $elm$core$List$filterMap, function (u) { return A2( $elm$core$Maybe$map, function (c) { return _Utils_Tuple2( A3($elm$core$String$slice, 0, 1, u), c); }, A2($elm$core$Dict$get, u, peopleInfo.friendColors)); }, $elm$core$List$sort(foundBy))); }, data.found); }); var $author$project$Bee$desiredColumnWidth = 300; var $author$project$Views$Hive$LetterAt = function (a) { return {$: 'LetterAt', a: a}; }; var $author$project$Views$Hive$LetterBetween = F2( function (a, b) { return {$: 'LetterBetween', a: a, b: b}; }); var $mdgriffith$elm_animator$Internal$Interpolate$Specified = function (a) { return {$: 'Specified', a: a}; }; var $mdgriffith$elm_animator$Internal$Interpolate$Oscillate = F3( function (a, b, c) { return {$: 'Oscillate', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Internal$Interpolate$Position = F2( function (a, b) { return {$: 'Position', a: a, b: b}; }); var $mdgriffith$elm_animator$Internal$Interpolate$PartialDefault = function (a) { return {$: 'PartialDefault', a: a}; }; var $mdgriffith$elm_animator$Internal$Interpolate$Default = {$: 'Default'}; var $mdgriffith$elm_animator$Internal$Interpolate$emptyDefaults = {arriveEarly: $mdgriffith$elm_animator$Internal$Interpolate$Default, arriveSlowly: $mdgriffith$elm_animator$Internal$Interpolate$Default, departLate: $mdgriffith$elm_animator$Internal$Interpolate$Default, departSlowly: $mdgriffith$elm_animator$Internal$Interpolate$Default, wobbliness: $mdgriffith$elm_animator$Internal$Interpolate$Default}; var $mdgriffith$elm_animator$Animator$withDefault = F2( function (toDef, currentDefault) { if (currentDefault.$ === 'FullDefault') { return $mdgriffith$elm_animator$Internal$Interpolate$PartialDefault( toDef($mdgriffith$elm_animator$Internal$Interpolate$emptyDefaults)); } else { var thing = currentDefault.a; return $mdgriffith$elm_animator$Internal$Interpolate$PartialDefault( toDef(thing)); } }); var $mdgriffith$elm_animator$Animator$applyOption = F2( function (toOption, movement) { if (movement.$ === 'Position') { var personality = movement.a; var pos = movement.b; return A2( $mdgriffith$elm_animator$Internal$Interpolate$Position, A2($mdgriffith$elm_animator$Animator$withDefault, toOption, personality), pos); } else { var personality = movement.a; var dur = movement.b; var fn = movement.c; return A3( $mdgriffith$elm_animator$Internal$Interpolate$Oscillate, A2($mdgriffith$elm_animator$Animator$withDefault, toOption, personality), dur, fn); } }); var $elm$core$Basics$clamp = F3( function (low, high, number) { return (_Utils_cmp(number, low) < 0) ? low : ((_Utils_cmp(number, high) > 0) ? high : number); }); var $mdgriffith$elm_animator$Animator$arriveEarly = F2( function (p, movement) { return A2( $mdgriffith$elm_animator$Animator$applyOption, function (def) { return _Utils_update( def, { arriveEarly: $mdgriffith$elm_animator$Internal$Interpolate$Specified( A3($elm$core$Basics$clamp, 0, 1, p)) }); }, movement); }); var $mdgriffith$elm_animator$Animator$arriveSmoothly = F2( function (s, movement) { return A2( $mdgriffith$elm_animator$Animator$applyOption, function (def) { return _Utils_update( def, { arriveSlowly: $mdgriffith$elm_animator$Internal$Interpolate$Specified( A3($elm$core$Basics$clamp, 0, 1, s)) }); }, movement); }); var $mdgriffith$elm_animator$Internal$Interpolate$FullDefault = {$: 'FullDefault'}; var $mdgriffith$elm_animator$Animator$at = $mdgriffith$elm_animator$Internal$Interpolate$Position($mdgriffith$elm_animator$Internal$Interpolate$FullDefault); var $elm$core$Basics$composeR = F3( function (f, g, x) { return g( f(x)); }); var $elm$core$Array$fromListHelp = F3( function (list, nodeList, nodeListSize) { fromListHelp: while (true) { var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, list); var jsArray = _v0.a; var remainingItems = _v0.b; if (_Utils_cmp( $elm$core$Elm$JsArray$length(jsArray), $elm$core$Array$branchFactor) < 0) { return A2( $elm$core$Array$builderToArray, true, {nodeList: nodeList, nodeListSize: nodeListSize, tail: jsArray}); } else { var $temp$list = remainingItems, $temp$nodeList = A2( $elm$core$List$cons, $elm$core$Array$Leaf(jsArray), nodeList), $temp$nodeListSize = nodeListSize + 1; list = $temp$list; nodeList = $temp$nodeList; nodeListSize = $temp$nodeListSize; continue fromListHelp; } } }); var $elm$core$Array$fromList = function (list) { if (!list.b) { return $elm$core$Array$empty; } else { return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0); } }; var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep); var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet; var $elm$core$Array$getHelp = F3( function (shift, index, tree) { getHelp: while (true) { var pos = $elm$core$Array$bitMask & (index >>> shift); var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); if (_v0.$ === 'SubTree') { var subTree = _v0.a; var $temp$shift = shift - $elm$core$Array$shiftStep, $temp$index = index, $temp$tree = subTree; shift = $temp$shift; index = $temp$index; tree = $temp$tree; continue getHelp; } else { var values = _v0.a; return A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, values); } } }); var $elm$core$Array$tailIndex = function (len) { return (len >>> 5) << 5; }; var $elm$core$Array$get = F2( function (index, _v0) { var len = _v0.a; var startShift = _v0.b; var tree = _v0.c; var tail = _v0.d; return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? $elm$core$Maybe$Nothing : ((_Utils_cmp( index, $elm$core$Array$tailIndex(len)) > -1) ? $elm$core$Maybe$Just( A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just( A3($elm$core$Array$getHelp, startShift, index, tree))); }); var $author$project$Views$Hive$coords = F2( function (scale, pos) { if (pos.$ === 'LetterAt') { if (pos.a.$ === 'Center') { var _v1 = pos.a; return {x: 0, y: 0}; } else { var index = pos.a.a; return A2( $elm$core$Maybe$withDefault, {x: (-0.5) * scale, y: (-1) * scale}, A2( $elm$core$Array$get, index, $elm$core$Array$fromList( _List_fromArray( [ {x: (-0.5) * scale, y: (-1) * scale}, {x: 0.5 * scale, y: (-1) * scale}, {x: (-1) * scale, y: 0 * scale}, {x: 1 * scale, y: 0 * scale}, {x: (-0.5) * scale, y: 1 * scale}, {x: 0.5 * scale, y: 1 * scale} ])))); } } else { var p1 = pos.a; var p2 = pos.b; var offsetRatio = -0.1; var c2 = A2( $author$project$Views$Hive$coords, scale, $author$project$Views$Hive$LetterAt(p2)); var c1 = A2( $author$project$Views$Hive$coords, scale, $author$project$Views$Hive$LetterAt(p1)); return {x: ((c1.x + c2.x) / 2) + ((c2.y - c1.y) * offsetRatio), y: ((c1.y + c2.y) / 2) + ((c2.x - c1.x) * offsetRatio)}; } }); var $mdgriffith$elm_animator$Internal$Timeline$Line = F3( function (a, b, c) { return {$: 'Line', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Internal$Timeline$Occurring = F3( function (a, b, c) { return {$: 'Occurring', a: a, b: b, c: c}; }); var $ianmackenzie$elm_units$Quantity$Quantity = function (a) { return {$: 'Quantity', a: a}; }; var $ianmackenzie$elm_units$Duration$inSeconds = function (_v0) { var numSeconds = _v0.a; return numSeconds; }; var $ianmackenzie$elm_units$Duration$inMilliseconds = function (duration) { return $ianmackenzie$elm_units$Duration$inSeconds(duration) * 1000; }; var $ianmackenzie$elm_units$Quantity$plus = F2( function (_v0, _v1) { var y = _v0.a; var x = _v1.a; return $ianmackenzie$elm_units$Quantity$Quantity(x + y); }); var $mdgriffith$elm_animator$Internal$Time$advanceBy = F2( function (dur, time) { return A2( $ianmackenzie$elm_units$Quantity$plus, time, $ianmackenzie$elm_units$Quantity$Quantity( $ianmackenzie$elm_units$Duration$inMilliseconds(dur))); }); var $ianmackenzie$elm_units$Quantity$greaterThan = F2( function (_v0, _v1) { var y = _v0.a; var x = _v1.a; return _Utils_cmp(x, y) > 0; }); var $mdgriffith$elm_animator$Internal$Time$inMilliseconds = function (_v0) { var ms = _v0.a; return ms; }; var $ianmackenzie$elm_units$Duration$seconds = function (numSeconds) { return $ianmackenzie$elm_units$Quantity$Quantity(numSeconds); }; var $ianmackenzie$elm_units$Duration$milliseconds = function (numMilliseconds) { return $ianmackenzie$elm_units$Duration$seconds(0.001 * numMilliseconds); }; var $mdgriffith$elm_animator$Internal$Time$duration = F2( function (one, two) { return A2($ianmackenzie$elm_units$Quantity$greaterThan, two, one) ? $ianmackenzie$elm_units$Duration$milliseconds( A2( $elm$core$Basics$max, 0, $mdgriffith$elm_animator$Internal$Time$inMilliseconds(one) - $mdgriffith$elm_animator$Internal$Time$inMilliseconds(two))) : $ianmackenzie$elm_units$Duration$milliseconds( A2( $elm$core$Basics$max, 0, $mdgriffith$elm_animator$Internal$Time$inMilliseconds(two) - $mdgriffith$elm_animator$Internal$Time$inMilliseconds(one))); }); var $ianmackenzie$elm_units$Quantity$multiplyBy = F2( function (scale, _v0) { var value = _v0.a; return $ianmackenzie$elm_units$Quantity$Quantity(scale * value); }); var $mdgriffith$elm_animator$Internal$Timeline$adjustTime = F4( function (lookup, getPersonality, unmodified, upcomingOccurring) { var event = unmodified.a; var start = unmodified.b; var eventEnd = unmodified.c; if (!upcomingOccurring.b) { return unmodified; } else { var _v1 = upcomingOccurring.a; var next = _v1.a; var nextStartTime = _v1.b; var personality = getPersonality( lookup(event)); if (!(!personality.departLate)) { var totalDuration = A2($mdgriffith$elm_animator$Internal$Time$duration, eventEnd, nextStartTime); var nextPersonality = getPersonality( lookup(next)); var totalPortions = A2($elm$core$Basics$max, personality.departLate + nextPersonality.arriveEarly, 1); var lateBy = A2($ianmackenzie$elm_units$Quantity$multiplyBy, personality.departLate / totalPortions, totalDuration); return A3( $mdgriffith$elm_animator$Internal$Timeline$Occurring, event, start, A2($mdgriffith$elm_animator$Internal$Time$advanceBy, lateBy, eventEnd)); } else { return unmodified; } } }); var $ianmackenzie$elm_units$Quantity$minus = F2( function (_v0, _v1) { var y = _v0.a; var x = _v1.a; return $ianmackenzie$elm_units$Quantity$Quantity(x - y); }); var $mdgriffith$elm_animator$Internal$Time$rollbackBy = F2( function (dur, time) { return A2( $ianmackenzie$elm_units$Quantity$minus, $ianmackenzie$elm_units$Quantity$Quantity( $ianmackenzie$elm_units$Duration$inMilliseconds(dur)), time); }); var $mdgriffith$elm_animator$Internal$Time$zeroDuration = function (_v0) { var dur = _v0.a; return !dur; }; var $mdgriffith$elm_animator$Internal$Timeline$adjustTimeWithPrevious = F5( function (lookup, getPersonality, _v0, unmodified, upcomingOccurring) { var prev = _v0.a; var prevStart = _v0.b; var prevEnd = _v0.c; var event = unmodified.a; var start = unmodified.b; var eventEnd = unmodified.c; var totalPrevDuration = A2($mdgriffith$elm_animator$Internal$Time$duration, prevEnd, start); var prevPersonality = getPersonality( lookup(prev)); var personality = getPersonality( lookup(event)); var totalPrevPortions = A2($elm$core$Basics$max, prevPersonality.departLate + personality.arriveEarly, 1); var earlyBy = A2($ianmackenzie$elm_units$Quantity$multiplyBy, personality.arriveEarly / totalPrevPortions, totalPrevDuration); if (!upcomingOccurring.b) { return $mdgriffith$elm_animator$Internal$Time$zeroDuration(earlyBy) ? unmodified : A3( $mdgriffith$elm_animator$Internal$Timeline$Occurring, event, A2($mdgriffith$elm_animator$Internal$Time$rollbackBy, earlyBy, start), eventEnd); } else { var _v2 = upcomingOccurring.a; var next = _v2.a; var nextStartTime = _v2.b; if (!(!personality.departLate)) { var totalDuration = A2($mdgriffith$elm_animator$Internal$Time$duration, eventEnd, nextStartTime); var nextPersonality = getPersonality( lookup(next)); var totalPortions = A2($elm$core$Basics$max, personality.departLate + nextPersonality.arriveEarly, 1); var lateBy = A2($ianmackenzie$elm_units$Quantity$multiplyBy, personality.departLate / totalPortions, totalDuration); return A3( $mdgriffith$elm_animator$Internal$Timeline$Occurring, event, A2($mdgriffith$elm_animator$Internal$Time$rollbackBy, earlyBy, start), A2($mdgriffith$elm_animator$Internal$Time$advanceBy, lateBy, eventEnd)); } else { if ($mdgriffith$elm_animator$Internal$Time$zeroDuration(earlyBy)) { return unmodified; } else { return A3( $mdgriffith$elm_animator$Internal$Timeline$Occurring, event, A2($mdgriffith$elm_animator$Internal$Time$rollbackBy, earlyBy, start), eventEnd); } } } }); var $mdgriffith$elm_animator$Internal$Timeline$getEvent = function (_v0) { var ev = _v0.a; return ev; }; var $mdgriffith$elm_animator$Internal$Timeline$hasDwell = function (_v0) { var start = _v0.b.a; var end = _v0.c.a; return !(!(start - end)); }; var $mdgriffith$elm_animator$Internal$Timeline$startTime = function (_v0) { var time = _v0.b; return time; }; var $mdgriffith$elm_animator$Internal$Timeline$createLookAhead = F4( function (fn, lookup, currentEvent, upcomingEvents) { if (!upcomingEvents.b) { return $elm$core$Maybe$Nothing; } else { var unadjustedUpcoming = upcomingEvents.a; var remain = upcomingEvents.b; var upcomingOccurring = A5($mdgriffith$elm_animator$Internal$Timeline$adjustTimeWithPrevious, lookup, fn.adjustor, currentEvent, unadjustedUpcoming, remain); return $elm$core$Maybe$Just( { anchor: lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(upcomingOccurring)), resting: $mdgriffith$elm_animator$Internal$Timeline$hasDwell(upcomingOccurring), time: $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$startTime(upcomingOccurring)) }); } }); var $mdgriffith$elm_animator$Internal$Timeline$endTime = function (_v0) { var end = _v0.c; return end; }; var $mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat = F2( function (_v0, _v1) { var _this = _v0.a; var that = _v1.a; return (_this - that) <= 0; }); var $mdgriffith$elm_animator$Internal$Time$thisBeforeThat = F2( function (_v0, _v1) { var _this = _v0.a; var that = _v1.a; return (_this - that) < 0; }); var $mdgriffith$elm_animator$Internal$Timeline$overLines = F7( function (fn, lookup, details, maybePreviousEvent, _v0, futureLines, state) { overLines: while (true) { var lineStart = _v0.a; var unadjustedStartEvent = _v0.b; var lineRemain = _v0.c; var transition = function (newState) { if (!futureLines.b) { return newState; } else { var future = futureLines.a; var futureStart = future.a; var futureStartEv = future.b; var futureRemain = future.c; var restOfFuture = futureLines.b; return A2($mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, futureStart, details.now) ? A7($mdgriffith$elm_animator$Internal$Timeline$overLines, fn, lookup, details, $elm$core$Maybe$Nothing, future, restOfFuture, newState) : newState; } }; var now = function () { if (!futureLines.b) { return details.now; } else { var _v5 = futureLines.a; var futureStart = _v5.a; var futureStartEv = _v5.b; var futureRemain = _v5.c; var restOfFuture = futureLines.b; return A2($mdgriffith$elm_animator$Internal$Time$thisBeforeThat, futureStart, details.now) ? futureStart : details.now; } }(); var lineStartEv = function () { if (maybePreviousEvent.$ === 'Nothing') { return A4($mdgriffith$elm_animator$Internal$Timeline$adjustTime, lookup, fn.adjustor, unadjustedStartEvent, lineRemain); } else { var prev = maybePreviousEvent.a; return A5($mdgriffith$elm_animator$Internal$Timeline$adjustTimeWithPrevious, lookup, fn.adjustor, prev, unadjustedStartEvent, lineRemain); } }(); if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$startTime(lineStartEv))) { return transition( A7( fn.lerp, $mdgriffith$elm_animator$Internal$Time$inMilliseconds(lineStart), $elm$core$Maybe$Just( lookup(details.initial)), lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(lineStartEv)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$startTime(lineStartEv)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds(now), A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedStartEvent, lineRemain), state)); } else { if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$endTime(lineStartEv))) { return transition( A5( fn.visit, lookup, lineStartEv, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedStartEvent, lineRemain), state)); } else { if (!lineRemain.b) { return transition( A5(fn.visit, lookup, lineStartEv, now, $elm$core$Maybe$Nothing, state)); } else { var unadjustedNext = lineRemain.a; var lineRemain2 = lineRemain.b; var next = A5($mdgriffith$elm_animator$Internal$Timeline$adjustTimeWithPrevious, lookup, fn.adjustor, unadjustedStartEvent, unadjustedNext, lineRemain2); if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$startTime(next))) { return transition( A7( fn.lerp, $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$endTime(lineStartEv)), $elm$core$Maybe$Just( lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(lineStartEv))), lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(next)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$startTime(next)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds(now), A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext, lineRemain2), A5( fn.visit, lookup, lineStartEv, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedStartEvent, lineRemain), state))); } else { if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$endTime(next))) { return transition( A5( fn.visit, lookup, next, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext, lineRemain2), state)); } else { if (!lineRemain2.b) { return transition( A5(fn.visit, lookup, next, now, $elm$core$Maybe$Nothing, state)); } else { var unadjustedNext2 = lineRemain2.a; var lineRemain3 = lineRemain2.b; var next2 = A5($mdgriffith$elm_animator$Internal$Timeline$adjustTimeWithPrevious, lookup, fn.adjustor, unadjustedNext, unadjustedNext2, lineRemain3); if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$startTime(next2))) { var after = A5( fn.visit, lookup, next, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext, lineRemain2), state); return transition( A7( fn.lerp, $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$endTime(next)), $elm$core$Maybe$Just( lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(next))), lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(next2)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds( $mdgriffith$elm_animator$Internal$Timeline$startTime(next2)), $mdgriffith$elm_animator$Internal$Time$inMilliseconds(now), A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext2, lineRemain3), after)); } else { if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, now, $mdgriffith$elm_animator$Internal$Timeline$endTime(next2))) { return transition( A5( fn.visit, lookup, next2, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext2, lineRemain3), state)); } else { var after = A5( fn.visit, lookup, next2, now, A4($mdgriffith$elm_animator$Internal$Timeline$createLookAhead, fn, lookup, unadjustedNext2, lineRemain3), state); var $temp$fn = fn, $temp$lookup = lookup, $temp$details = details, $temp$maybePreviousEvent = $elm$core$Maybe$Just(next), $temp$_v0 = A3( $mdgriffith$elm_animator$Internal$Timeline$Line, $mdgriffith$elm_animator$Internal$Timeline$endTime(next), unadjustedNext2, lineRemain3), $temp$futureLines = futureLines, $temp$state = after; fn = $temp$fn; lookup = $temp$lookup; details = $temp$details; maybePreviousEvent = $temp$maybePreviousEvent; _v0 = $temp$_v0; futureLines = $temp$futureLines; state = $temp$state; continue overLines; } } } } } } } } } }); var $mdgriffith$elm_animator$Internal$Timeline$foldp = F3( function (lookup, fn, _v0) { var timelineDetails = _v0.a; var _v1 = timelineDetails.events; var timetable = _v1.a; var start = fn.start( lookup(timelineDetails.initial)); if (!timetable.b) { return start; } else { var firstLine = timetable.a; var remainingLines = timetable.b; return A7($mdgriffith$elm_animator$Internal$Timeline$overLines, fn, lookup, timelineDetails, $elm$core$Maybe$Nothing, firstLine, remainingLines, start); } }); var $mdgriffith$elm_animator$Internal$Timeline$linearDefault = {arriveEarly: 0, arriveSlowly: 0, departLate: 0, departSlowly: 0, wobbliness: 0}; var $mdgriffith$elm_animator$Internal$Timeline$current = function (timeline) { var details = timeline.a; return A3( $mdgriffith$elm_animator$Internal$Timeline$foldp, $elm$core$Basics$identity, { adjustor: function (_v0) { return $mdgriffith$elm_animator$Internal$Timeline$linearDefault; }, dwellPeriod: function (_v1) { return $elm$core$Maybe$Nothing; }, lerp: F7( function (_v2, _v3, target, _v4, _v5, _v6, _v7) { return target; }), start: function (_v8) { return details.initial; }, visit: F5( function (lookup, target, targetTime, maybeLookAhead, state) { return $mdgriffith$elm_animator$Internal$Timeline$getEvent(target); }) }, timeline); }; var $mdgriffith$elm_animator$Animator$current = $mdgriffith$elm_animator$Internal$Timeline$current; var $author$project$Views$Hive$stateToPerm = function (state) { if (state.$ === 'At') { var pos = state.a; return pos; } else { var dst = state.b; return dst; } }; var $author$project$Views$Hive$currentPositions = A2($elm$core$Basics$composeR, $mdgriffith$elm_animator$Animator$current, $author$project$Views$Hive$stateToPerm); var $mdgriffith$elm_animator$Animator$Css$Center = {$: 'Center'}; var $mdgriffith$elm_animator$Animator$Css$defaultTransformOptions = { origin: $mdgriffith$elm_animator$Animator$Css$Center, rotationAxis: {x: 0, y: 0, z: 1} }; var $mdgriffith$elm_animator$Animator$Css$explainActive = function (attrs) { explainActive: while (true) { if (!attrs.b) { return false; } else { if (attrs.a.$ === 'Explain') { var on = attrs.a.a; var others = attrs.b; return on; } else { var skip = attrs.a; var others = attrs.b; var $temp$attrs = others; attrs = $temp$attrs; continue explainActive; } } } }; var $elm$core$Tuple$pair = F2( function (a, b) { return _Utils_Tuple2(a, b); }); var $mdgriffith$elm_animator$Animator$Css$viewAxes = function (options) { var _v0 = function () { var _v1 = options.origin; if (_v1.$ === 'Center') { return A2($elm$core$Tuple$pair, 0, 0); } else { var ox = _v1.a; var oy = _v1.b; return A2($elm$core$Tuple$pair, ox, oy); } }(); var x = _v0.a; var y = _v0.b; return A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'width', '0px'), A2($elm$html$Html$Attributes$style, 'height', '0px'), A2( $elm$html$Html$Attributes$style, 'left', 'calc(50% + ' + ($elm$core$String$fromFloat(x) + 'px - 3px)')), A2( $elm$html$Html$Attributes$style, 'top', 'calc(50% + ' + ($elm$core$String$fromFloat(y) + 'px - 3px)')) ]), _List_fromArray( [ A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'top', '10px'), A2($elm$html$Html$Attributes$style, 'left', '-1px'), A2($elm$html$Html$Attributes$style, 'width', '2px'), A2($elm$html$Html$Attributes$style, 'height', '50px'), A2($elm$html$Html$Attributes$style, 'background-color', 'black') ]), _List_fromArray( [ A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'bottom', '-5px'), A2($elm$html$Html$Attributes$style, 'left', '-3px'), A2($elm$html$Html$Attributes$style, 'width', '0'), A2($elm$html$Html$Attributes$style, 'height', '0'), A2($elm$html$Html$Attributes$style, 'border-left', '4px solid transparent'), A2($elm$html$Html$Attributes$style, 'border-right', '4px solid transparent'), A2($elm$html$Html$Attributes$style, 'border-top', '8px solid black') ]), _List_Nil), A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'right', '-3px'), A2($elm$html$Html$Attributes$style, 'bottom', '-22px'), A2($elm$html$Html$Attributes$style, 'font-size', '12px') ]), _List_fromArray( [ $elm$html$Html$text('Y') ])) ])), A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'top', '-1px'), A2($elm$html$Html$Attributes$style, 'left', '10px'), A2($elm$html$Html$Attributes$style, 'width', '50px'), A2($elm$html$Html$Attributes$style, 'height', '2px'), A2($elm$html$Html$Attributes$style, 'background-color', 'black') ]), _List_fromArray( [ A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'right', '-5px'), A2($elm$html$Html$Attributes$style, 'top', '-3px'), A2($elm$html$Html$Attributes$style, 'width', '0'), A2($elm$html$Html$Attributes$style, 'height', '0'), A2($elm$html$Html$Attributes$style, 'border-top', '4px solid transparent'), A2($elm$html$Html$Attributes$style, 'border-bottom', '4px solid transparent'), A2($elm$html$Html$Attributes$style, 'border-left', '8px solid black') ]), _List_Nil), A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'right', '-14px'), A2($elm$html$Html$Attributes$style, 'top', '-6px'), A2($elm$html$Html$Attributes$style, 'font-size', '12px') ]), _List_fromArray( [ $elm$html$Html$text('X') ])) ])), A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'width', '6px'), A2($elm$html$Html$Attributes$style, 'height', '6px'), A2($elm$html$Html$Attributes$style, 'left', '-3px'), A2($elm$html$Html$Attributes$style, 'top', '-3px'), A2($elm$html$Html$Attributes$style, 'background-color', 'red'), A2($elm$html$Html$Attributes$style, 'border-radius', '3px') ]), _List_Nil), A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'width', '12px'), A2($elm$html$Html$Attributes$style, 'height', '12px'), A2($elm$html$Html$Attributes$style, 'left', '-7px'), A2($elm$html$Html$Attributes$style, 'top', '-7px'), A2($elm$html$Html$Attributes$style, 'background-color', 'transparent'), A2($elm$html$Html$Attributes$style, 'border-radius', '7px'), A2($elm$html$Html$Attributes$style, 'border', '1px solid red') ]), _List_Nil) ])); }; var $mdgriffith$elm_animator$Animator$Css$explainElement = function (transformOptions) { return A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'position', 'absolute'), A2($elm$html$Html$Attributes$style, 'width', '100%'), A2($elm$html$Html$Attributes$style, 'height', '100%'), A2($elm$html$Html$Attributes$style, 'background-color', 'rgba(238, 238, 238, 0.4)'), A2($elm$html$Html$Attributes$style, 'border', '2px solid #DDD'), A2($elm$html$Html$Attributes$style, 'z-index', '10') ]), _List_fromArray( [ $mdgriffith$elm_animator$Animator$Css$viewAxes(transformOptions) ])); }; var $mdgriffith$elm_animator$Animator$Css$getTransformOptions = function (attrs) { getTransformOptions: while (true) { if (!attrs.b) { return $elm$core$Maybe$Nothing; } else { if (attrs.a.$ === 'TransformAttr') { var _v1 = attrs.a; var opts = _v1.a; return $elm$core$Maybe$Just(opts); } else { var rest = attrs.b; var $temp$attrs = rest; attrs = $temp$attrs; continue getTransformOptions; } } } }; var $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node; var $mdgriffith$elm_animator$Animator$Css$renderClassName = F2( function (str, anim) { renderClassName: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? top.name : _Utils_ap(str, top.name); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + (top.name + '-'), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderClassName; } } } }); var $mdgriffith$elm_animator$Animator$Css$renderDelay = F2( function (str, anim) { renderDelay: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? ($elm$core$String$fromFloat(top.delay) + 'ms') : (str + ($elm$core$String$fromFloat(top.delay) + 'ms')); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + ($elm$core$String$fromFloat(top.delay) + 'ms, '), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderDelay; } } } }); var $mdgriffith$elm_animator$Animator$Css$renderDuration = F2( function (str, anim) { renderDuration: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? ($elm$core$String$fromFloat(top.duration) + 'ms') : (str + ($elm$core$String$fromFloat(top.duration) + 'ms')); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + ($elm$core$String$fromFloat(top.duration) + 'ms, '), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderDuration; } } } }); var $mdgriffith$elm_animator$Animator$Css$repeatToString = function (rep) { if (rep.$ === 'LoopAnim') { return 'infinite'; } else { var n = rep.a; return $elm$core$String$fromInt(n); } }; var $mdgriffith$elm_animator$Animator$Css$renderIterations = F2( function (str, anim) { renderIterations: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? $mdgriffith$elm_animator$Animator$Css$repeatToString(top.repeat) : _Utils_ap( str, $mdgriffith$elm_animator$Animator$Css$repeatToString(top.repeat)); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + ($mdgriffith$elm_animator$Animator$Css$repeatToString(top.repeat) + ', '), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderIterations; } } } }); var $mdgriffith$elm_animator$Animator$Css$renderKeyframes = F2( function (str, anim) { renderKeyframes: while (true) { if (!anim.b) { return str; } else { var top = anim.a; var remain = anim.b; var $temp$str = str + ('\n' + top.keyframes), $temp$anim = remain; str = $temp$str; anim = $temp$anim; continue renderKeyframes; } } }); var $mdgriffith$elm_animator$Animator$Css$renderName = F2( function (str, anim) { renderName: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? top.name : _Utils_ap(str, top.name); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + (top.name + ', '), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderName; } } } }); var $mdgriffith$elm_animator$Animator$Css$timingFnName = function (fn) { return 'linear'; }; var $mdgriffith$elm_animator$Animator$Css$renderTiming = F2( function (str, anim) { renderTiming: while (true) { if (!anim.b) { return str; } else { if (!anim.b.b) { var top = anim.a; return (str === '') ? $mdgriffith$elm_animator$Animator$Css$timingFnName(top.timingFn) : _Utils_ap( str, $mdgriffith$elm_animator$Animator$Css$timingFnName(top.timingFn)); } else { var top = anim.a; var _v1 = anim.b; var next = _v1.a; var remaining = _v1.b; var $temp$str = str + ($mdgriffith$elm_animator$Animator$Css$timingFnName(top.timingFn) + ', '), $temp$anim = A2($elm$core$List$cons, next, remaining); str = $temp$str; anim = $temp$anim; continue renderTiming; } } } }); var $mdgriffith$elm_animator$Animator$Css$renderAnimations = function (animations) { return A2($mdgriffith$elm_animator$Animator$Css$renderKeyframes, '', animations) + ('\n.' + (A2($mdgriffith$elm_animator$Animator$Css$renderClassName, '', animations) + ('{\n animation-name: ' + (A2($mdgriffith$elm_animator$Animator$Css$renderName, '', animations) + (';\n animation-delay: ' + (A2($mdgriffith$elm_animator$Animator$Css$renderDelay, '', animations) + (';\n animation-duration: ' + (A2($mdgriffith$elm_animator$Animator$Css$renderDuration, '', animations) + (';\n animation-timing-function: ' + (A2($mdgriffith$elm_animator$Animator$Css$renderTiming, '', animations) + (';\n animation-fill-mode: forwards;\n animation-iteration-count: ' + (A2($mdgriffith$elm_animator$Animator$Css$renderIterations, '', animations) + ';\n }\n ')))))))))))); }; var $mdgriffith$elm_animator$Internal$Timeline$Frame = F2( function (a, b) { return {$: 'Frame', a: a, b: b}; }); var $mdgriffith$elm_animator$Internal$Timeline$getLastEvent = F2( function (head, rest) { getLastEvent: while (true) { if (!rest.b) { return head; } else { var top = rest.a; var tail = rest.b; var $temp$head = top, $temp$rest = tail; head = $temp$head; rest = $temp$rest; continue getLastEvent; } } }); var $mdgriffith$elm_animator$Internal$Timeline$findLastEventInLines = F2( function (first, remaining) { findLastEventInLines: while (true) { if (!remaining.b) { var startEv = first.b; var rem = first.c; return A2($mdgriffith$elm_animator$Internal$Timeline$getLastEvent, startEv, rem); } else { var r1 = remaining.a; var r1Remain = remaining.b; var $temp$first = r1, $temp$remaining = r1Remain; first = $temp$first; remaining = $temp$remaining; continue findLastEventInLines; } } }); var $elm$core$Basics$abs = function (n) { return (n < 0) ? (-n) : n; }; var $mdgriffith$elm_animator$Internal$Time$progress = F3( function (_v0, _v1, _v2) { var start = _v0.a; var end = _v1.a; var current = _v2.a; var total = $elm$core$Basics$abs(end - start); return (!total) ? 0 : A2( $elm$core$Basics$min, 1, A2($elm$core$Basics$max, 0, (current - start) / total)); }); var $mdgriffith$elm_animator$Internal$Timeline$getFrames = F4( function (currentTime, config, fn, newFrames) { getFrames: while (true) { if (A2($mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, currentTime, config.startTime)) { if (!newFrames.b) { return _List_fromArray( [ A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, 0, fn(config.startTime)), A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, 1, fn(config.endTime)) ]); } else { return A2( $elm$core$List$cons, A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, 0, fn(config.startTime)), newFrames); } } else { var _new = A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, A3($mdgriffith$elm_animator$Internal$Time$progress, config.startTime, config.endTime, currentTime), fn(currentTime)); var $temp$currentTime = A2($mdgriffith$elm_animator$Internal$Time$rollbackBy, config.perFrame, currentTime), $temp$config = config, $temp$fn = fn, $temp$newFrames = A2($elm$core$List$cons, _new, newFrames); currentTime = $temp$currentTime; config = $temp$config; fn = $temp$fn; newFrames = $temp$newFrames; continue getFrames; } } }); var $mdgriffith$elm_animator$Internal$Time$numberOfFrames = F4( function (fps, lastFrameTime, startAt, endAt) { var totalDurationInMs = $ianmackenzie$elm_units$Duration$inMilliseconds( A2($mdgriffith$elm_animator$Internal$Time$duration, startAt, endAt)); var millisecondsPerFrame = 1000 / fps; var framesSinceLastFrame = A2( $elm$core$Basics$max, 0, $ianmackenzie$elm_units$Duration$inMilliseconds( A2($mdgriffith$elm_animator$Internal$Time$duration, lastFrameTime, startAt))) / millisecondsPerFrame; var offset = 1 - (framesSinceLastFrame - $elm$core$Basics$floor(framesSinceLastFrame)); return _Utils_Tuple2( offset * millisecondsPerFrame, A2( $elm$core$Basics$max, 1, $elm$core$Basics$round(totalDurationInMs / millisecondsPerFrame))); }); var $mdgriffith$elm_animator$Internal$Time$thisAfterThat = F2( function (_v0, _v1) { var _this = _v0.a; var that = _v1.a; return (_this - that) > 0; }); var $mdgriffith$elm_animator$Internal$Timeline$zeroDuration = $ianmackenzie$elm_units$Duration$milliseconds(0); var $mdgriffith$elm_animator$Internal$Timeline$capture = F4( function (fps, lookup, fn, _v0) { var timelineDetails = _v0.a; var _v1 = timelineDetails.events; var timetable = _v1.a; var start = fn.start( lookup(timelineDetails.initial)); if (!timetable.b) { return { duration: $mdgriffith$elm_animator$Internal$Timeline$zeroDuration, dwell: $elm$core$Maybe$Nothing, frames: _List_fromArray( [ A2($mdgriffith$elm_animator$Internal$Timeline$Frame, 1, start) ]) }; } else { var firstLine = timetable.a; var remainingLines = timetable.b; var millisecondsPerFrame = 1000 / fps; var lastEvent = A2($mdgriffith$elm_animator$Internal$Timeline$findLastEventInLines, firstLine, remainingLines); var frames = A4( $mdgriffith$elm_animator$Internal$Timeline$getFrames, $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent), { endTime: $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent), offset: 0, perFrame: $ianmackenzie$elm_units$Duration$milliseconds(millisecondsPerFrame), startTime: timelineDetails.now }, function (currentTime) { return A7( $mdgriffith$elm_animator$Internal$Timeline$overLines, fn, lookup, _Utils_update( timelineDetails, {now: currentTime}), $elm$core$Maybe$Nothing, firstLine, remainingLines, start); }, _List_Nil); var _v3 = A2( $mdgriffith$elm_animator$Internal$Time$thisAfterThat, timelineDetails.now, $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent)) ? _Utils_Tuple2(0, 1) : A4( $mdgriffith$elm_animator$Internal$Time$numberOfFrames, fps, timelineDetails.now, timelineDetails.now, $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent)); var numberOfFrames = _v3.b; return { duration: A2( $mdgriffith$elm_animator$Internal$Time$thisAfterThat, timelineDetails.now, $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent)) ? $mdgriffith$elm_animator$Internal$Timeline$zeroDuration : A2( $mdgriffith$elm_animator$Internal$Time$duration, timelineDetails.now, $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent)), dwell: function () { var _v4 = fn.dwellPeriod( lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(lastEvent))); if (_v4.$ === 'Nothing') { return $elm$core$Maybe$Nothing; } else { var period = _v4.a; var lastEventEv = lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(lastEvent)); var dwellStartTime = $mdgriffith$elm_animator$Internal$Timeline$startTime(lastEvent); var endAt = function () { if (period.$ === 'Repeat') { var n = period.a; var totalDur = period.b; return A2($mdgriffith$elm_animator$Internal$Time$advanceBy, totalDur, dwellStartTime); } else { var totalDur = period.a; return A2($mdgriffith$elm_animator$Internal$Time$advanceBy, totalDur, dwellStartTime); } }(); var lastConcreteState = A7( $mdgriffith$elm_animator$Internal$Timeline$overLines, fn, lookup, _Utils_update( timelineDetails, {now: dwellStartTime}), $elm$core$Maybe$Nothing, firstLine, remainingLines, start); var _v5 = A4($mdgriffith$elm_animator$Internal$Time$numberOfFrames, fps, dwellStartTime, dwellStartTime, endAt); var dwellOffset = _v5.a; var numberOfDwellFrames = _v5.b; var dwellFrames = A4( $mdgriffith$elm_animator$Internal$Timeline$getFrames, endAt, { endTime: endAt, offset: dwellOffset, perFrame: $ianmackenzie$elm_units$Duration$milliseconds(millisecondsPerFrame), startTime: dwellStartTime }, function (currentTime) { return A5(fn.visit, lookup, lastEvent, currentTime, $elm$core$Maybe$Nothing, lastConcreteState); }, _List_Nil); return $elm$core$Maybe$Just( {frames: dwellFrames, period: period}); } }(), frames: frames }; } }); var $elm$core$Basics$sqrt = _Basics_sqrt; var $mdgriffith$elm_animator$Internal$Interpolate$average = F3( function (x, y, progress) { return $elm$core$Basics$sqrt(((x * x) * (1 - progress)) + ((y * y) * progress)); }); var $mdgriffith$elm_animator$Internal$Time$millis = function (ms) { return $ianmackenzie$elm_units$Quantity$Quantity(ms); }; var $avh4$elm_color$Color$RgbaSpace = F4( function (a, b, c, d) { return {$: 'RgbaSpace', a: a, b: b, c: c, d: d}; }); var $avh4$elm_color$Color$rgba = F4( function (r, g, b, a) { return A4($avh4$elm_color$Color$RgbaSpace, r, g, b, a); }); var $avh4$elm_color$Color$toRgba = function (_v0) { var r = _v0.a; var g = _v0.b; var b = _v0.c; var a = _v0.d; return {alpha: a, blue: b, green: g, red: r}; }; var $mdgriffith$elm_animator$Internal$Interpolate$lerpColor = F7( function (prevEndTime, maybePrev, target, targetTime, now, maybeLookAhead, state) { var two = $avh4$elm_color$Color$toRgba(target); var progress = A3( $mdgriffith$elm_animator$Internal$Time$progress, $mdgriffith$elm_animator$Internal$Time$millis(prevEndTime), $mdgriffith$elm_animator$Internal$Time$millis(targetTime), $mdgriffith$elm_animator$Internal$Time$millis(now)); var one = $avh4$elm_color$Color$toRgba(state); return A4( $avh4$elm_color$Color$rgba, A3($mdgriffith$elm_animator$Internal$Interpolate$average, one.red, two.red, progress), A3($mdgriffith$elm_animator$Internal$Interpolate$average, one.green, two.green, progress), A3($mdgriffith$elm_animator$Internal$Interpolate$average, one.blue, two.blue, progress), A3($mdgriffith$elm_animator$Internal$Interpolate$average, one.alpha, two.alpha, progress)); }); var $mdgriffith$elm_animator$Internal$Interpolate$linearDefault = {arriveEarly: 0, arriveSlowly: 0, departLate: 0, departSlowly: 0, wobbliness: 0}; var $mdgriffith$elm_animator$Internal$Interpolate$coloring = { adjustor: function (_v0) { return $mdgriffith$elm_animator$Internal$Interpolate$linearDefault; }, dwellPeriod: function (_v1) { return $elm$core$Maybe$Nothing; }, lerp: $mdgriffith$elm_animator$Internal$Interpolate$lerpColor, start: $elm$core$Basics$identity, visit: F5( function (lookup, target, targetTime, maybeLookAhead, state) { return lookup( $mdgriffith$elm_animator$Internal$Timeline$getEvent(target)); }) }; var $ianmackenzie$elm_units$Pixels$inPixels = function (_v0) { var numPixels = _v0.a; return numPixels; }; var $mdgriffith$elm_animator$Animator$Css$expand = F2( function (_v0, _v1) { var lastFrame = _v0.b; var percent = _v1.a; var rotation = _v1.b; return A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, percent, {aroundX: lastFrame.aroundX, aroundY: lastFrame.aroundY, aroundZ: lastFrame.aroundZ, facingX: lastFrame.facingX, facingY: lastFrame.facingY, facingZ: lastFrame.facingZ, rotation: rotation, scaleX: lastFrame.scaleX, scaleY: lastFrame.scaleY, scaleZ: lastFrame.scaleZ, x: lastFrame.x, y: lastFrame.y, z: lastFrame.z}); }); var $ianmackenzie$elm_units$Pixels$pixels = function (numPixels) { return $ianmackenzie$elm_units$Quantity$Quantity(numPixels); }; var $ianmackenzie$elm_units$Pixels$pixelsPerSecond = function (numPixelsPerSecond) { return $ianmackenzie$elm_units$Quantity$Quantity(numPixelsPerSecond); }; var $mdgriffith$elm_animator$Animator$Css$mapDwellFrames = F2( function (combinedFrames, dwell) { var lastFrame = function () { if (!combinedFrames.b) { return A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, 1, { aroundX: 0, aroundY: 0, aroundZ: 1, facingX: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, facingY: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, facingZ: { position: $ianmackenzie$elm_units$Pixels$pixels(1), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, rotation: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, scaleX: { position: $ianmackenzie$elm_units$Pixels$pixels(1), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, scaleY: { position: $ianmackenzie$elm_units$Pixels$pixels(1), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, scaleZ: { position: $ianmackenzie$elm_units$Pixels$pixels(1), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, x: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, y: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }, z: { position: $ianmackenzie$elm_units$Pixels$pixels(0), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) } }); } else { var last = combinedFrames.a; return last; } }(); return { frames: A2( $elm$core$List$map, $mdgriffith$elm_animator$Animator$Css$expand(lastFrame), dwell.frames), period: dwell.period }; }); var $mdgriffith$elm_animator$Internal$Interpolate$dwellPeriod = function (movement) { if (movement.$ === 'Pos') { return $elm$core$Maybe$Nothing; } else { var period = movement.b; return $elm$core$Maybe$Just(period); } }; var $mdgriffith$elm_animator$Internal$Interpolate$getPersonality = function (m) { if (m.$ === 'Osc') { var personality = m.a; return personality; } else { var personality = m.a; return personality; } }; var $ianmackenzie$elm_units$Pixels$inPixelsPerSecond = function (_v0) { var numPixelsPerSecond = _v0.a; return numPixelsPerSecond; }; var $mdgriffith$elm_animator$Internal$Interpolate$Spline = F4( function (a, b, c, d) { return {$: 'Spline', a: a, b: b, c: c, d: d}; }); var $mdgriffith$elm_animator$Internal$Interpolate$zeroPoint = {x: 0, y: 0}; var $mdgriffith$elm_animator$Internal$Interpolate$createSpline = function (config) { var totalX = config.end.x - config.start.x; var startVelScale = 1 / (config.startVelocity.x / totalX); var startVelocity = (!config.departure.departSlowly) ? {x: 0, y: 0} : (((!(config.startVelocity.x - $mdgriffith$elm_animator$Internal$Interpolate$zeroPoint.x)) && (!(config.startVelocity.y - $mdgriffith$elm_animator$Internal$Interpolate$zeroPoint.y))) ? {x: totalX * (config.departure.departSlowly * 3), y: 0} : {x: (startVelScale * config.startVelocity.x) * (config.departure.departSlowly * 3), y: (startVelScale * config.startVelocity.y) * (config.departure.departSlowly * 3)}); var endVelScale = 1 / (config.endVelocity.x / totalX); var endVelocity = (!config.arrival.arriveSlowly) ? {x: 0, y: 0} : (((!(config.endVelocity.x - $mdgriffith$elm_animator$Internal$Interpolate$zeroPoint.x)) && (!(config.endVelocity.y - $mdgriffith$elm_animator$Internal$Interpolate$zeroPoint.y))) ? {x: totalX * (config.arrival.arriveSlowly * 3), y: 0} : {x: (endVelScale * config.endVelocity.x) * (config.arrival.arriveSlowly * 3), y: (endVelScale * config.endVelocity.y) * (config.arrival.arriveSlowly * 3)}); return A4( $mdgriffith$elm_animator$Internal$Interpolate$Spline, config.start, {x: config.start.x + ((1 / 3) * startVelocity.x), y: config.start.y + ((1 / 3) * startVelocity.y)}, {x: config.end.x + (((-1) / 3) * endVelocity.x), y: config.end.y + (((-1) / 3) * endVelocity.y)}, config.end); }; var $mdgriffith$elm_animator$Internal$Interpolate$findAtXOnSpline = F6( function (spline, desiredX, tolerance, jumpSize, t, depth) { findAtXOnSpline: while (true) { var p1 = spline.a; var p2 = spline.b; var p3 = spline.c; var p4 = spline.d; var point = function () { if (t <= 0.5) { var q3 = {x: p3.x + (t * (p4.x - p3.x)), y: p3.y + (t * (p4.y - p3.y))}; var q2 = {x: p2.x + (t * (p3.x - p2.x)), y: p2.y + (t * (p3.y - p2.y))}; var r2 = {x: q2.x + (t * (q3.x - q2.x)), y: q2.y + (t * (q3.y - q2.y))}; var q1 = {x: p1.x + (t * (p2.x - p1.x)), y: p1.y + (t * (p2.y - p1.y))}; var r1 = {x: q1.x + (t * (q2.x - q1.x)), y: q1.y + (t * (q2.y - q1.y))}; return {x: r1.x + (t * (r2.x - r1.x)), y: r1.y + (t * (r2.y - r1.y))}; } else { var q3 = {x: p4.x + ((1 - t) * (p3.x - p4.x)), y: p4.y + ((1 - t) * (p3.y - p4.y))}; var q2 = {x: p3.x + ((1 - t) * (p2.x - p3.x)), y: p3.y + ((1 - t) * (p2.y - p3.y))}; var r2 = {x: q3.x + ((1 - t) * (q2.x - q3.x)), y: q3.y + ((1 - t) * (q2.y - q3.y))}; var q1 = {x: p2.x + ((1 - t) * (p1.x - p2.x)), y: p2.y + ((1 - t) * (p1.y - p2.y))}; var r1 = {x: q2.x + ((1 - t) * (q1.x - q2.x)), y: q2.y + ((1 - t) * (q1.y - q2.y))}; return {x: r2.x + ((1 - t) * (r1.x - r2.x)), y: r2.y + ((1 - t) * (r1.y - r2.y))}; } }(); if (depth === 10) { return {point: point, t: t}; } else { if (($elm$core$Basics$abs(point.x - desiredX) < 1) && ($elm$core$Basics$abs(point.x - desiredX) >= 0)) { return {point: point, t: t}; } else { if ((point.x - desiredX) > 0) { var $temp$spline = spline, $temp$desiredX = desiredX, $temp$tolerance = tolerance, $temp$jumpSize = jumpSize / 2, $temp$t = t - jumpSize, $temp$depth = depth + 1; spline = $temp$spline; desiredX = $temp$desiredX; tolerance = $temp$tolerance; jumpSize = $temp$jumpSize; t = $temp$t; depth = $temp$depth; continue findAtXOnSpline; } else { var $temp$spline = spline, $temp$desiredX = desiredX, $temp$tolerance = tolerance, $temp$jumpSize = jumpSize / 2, $temp$t = t + jumpSize, $temp$depth = depth + 1; spline = $temp$spline; desiredX = $temp$desiredX; tolerance = $temp$tolerance; jumpSize = $temp$jumpSize; t = $temp$t; depth = $temp$depth; continue findAtXOnSpline; } } } } }); var $mdgriffith$elm_animator$Internal$Interpolate$interpolateValue = F3( function (start, end, t) { return (t <= 0.5) ? (start + (t * (end - start))) : (end + ((1 - t) * (start - end))); }); var $mdgriffith$elm_animator$Internal$Interpolate$firstDerivativeOnSpline = F2( function (_v0, proportion) { var p1 = _v0.a; var p2 = _v0.b; var p3 = _v0.c; var p4 = _v0.d; var vy3 = p4.y - p3.y; var vy2 = p3.y - p2.y; var wy2 = A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, vy2, vy3, proportion); var vy1 = p2.y - p1.y; var wy1 = A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, vy1, vy2, proportion); var vx3 = p4.x - p3.x; var vx2 = p3.x - p2.x; var wx2 = A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, vx2, vx3, proportion); var vx1 = p2.x - p1.x; var wx1 = A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, vx1, vx2, proportion); return { x: 3 * A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, wx1, wx2, proportion), y: 3 * A3($mdgriffith$elm_animator$Internal$Interpolate$interpolateValue, wy1, wy2, proportion) }; }); var $mdgriffith$elm_animator$Internal$Interpolate$guessTime = F2( function (now, _v0) { var one = _v0.a; var two = _v0.b; var three = _v0.c; var four = _v0.d; return (!(four.x - one.x)) ? 0.5 : ((now - one.x) / (four.x - one.x)); }); var $ianmackenzie$elm_units$Quantity$divideBy = F2( function (divisor, _v0) { var value = _v0.a; return $ianmackenzie$elm_units$Quantity$Quantity(value / divisor); }); var $ianmackenzie$elm_units$Quantity$per = F2( function (_v0, _v1) { var independentValue = _v0.a; var dependentValue = _v1.a; return $ianmackenzie$elm_units$Quantity$Quantity(dependentValue / independentValue); }); var $mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing = F3( function (ease, period, target) { var targetPixels = $ianmackenzie$elm_units$Pixels$pixels( ease(target)); var sampleSize = 16; var deltaSample = sampleSize / $ianmackenzie$elm_units$Duration$inMilliseconds(period); var next = $ianmackenzie$elm_units$Pixels$pixels( ease(target + deltaSample)); var dx2 = A2($ianmackenzie$elm_units$Quantity$minus, targetPixels, next); var prev = $ianmackenzie$elm_units$Pixels$pixels( ease(target - deltaSample)); var dx1 = A2($ianmackenzie$elm_units$Quantity$minus, prev, targetPixels); var dx = A2( $ianmackenzie$elm_units$Quantity$divideBy, 2, A2($ianmackenzie$elm_units$Quantity$plus, dx1, dx2)); return A2( $ianmackenzie$elm_units$Quantity$per, $ianmackenzie$elm_units$Duration$milliseconds(sampleSize), dx); }); var $elm$core$Basics$isInfinite = _Basics_isInfinite; var $ianmackenzie$elm_units$Quantity$isInfinite = function (_v0) { var value = _v0.a; return $elm$core$Basics$isInfinite(value); }; var $elm$core$Basics$isNaN = _Basics_isNaN; var $ianmackenzie$elm_units$Quantity$isNaN = function (_v0) { var value = _v0.a; return $elm$core$Basics$isNaN(value); }; var $ianmackenzie$elm_units$Quantity$zero = $ianmackenzie$elm_units$Quantity$Quantity(0); var $mdgriffith$elm_animator$Internal$Interpolate$velocityBetween = F4( function (one, oneTime, two, twoTime) { var duration = A2($mdgriffith$elm_animator$Internal$Time$duration, oneTime, twoTime); var distance = A2($ianmackenzie$elm_units$Quantity$minus, one, two); var vel = A2($ianmackenzie$elm_units$Quantity$per, duration, distance); return ($ianmackenzie$elm_units$Quantity$isNaN(vel) || $ianmackenzie$elm_units$Quantity$isInfinite(vel)) ? $ianmackenzie$elm_units$Quantity$zero : vel; }); var $mdgriffith$elm_animator$Internal$Interpolate$newVelocityAtTarget = F3( function (target, targetTime, maybeLookAhead) { if (maybeLookAhead.$ === 'Nothing') { if (target.$ === 'Pos') { return $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0); } else { var period = target.b; var toX = target.c; if (period.$ === 'Loop') { var periodDuration = period.a; return A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, 0); } else { var n = period.a; var periodDuration = period.b; return A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, 0); } } } else { var lookAhead = maybeLookAhead.a; var targetPosition = function () { if (target.$ === 'Osc') { var toX = target.c; return $ianmackenzie$elm_units$Pixels$pixels( toX(0)); } else { var x = target.b; return $ianmackenzie$elm_units$Pixels$pixels(x); } }(); var _v3 = lookAhead.anchor; if (_v3.$ === 'Pos') { var aheadPosition = _v3.b; return A4( $mdgriffith$elm_animator$Internal$Interpolate$velocityBetween, targetPosition, $mdgriffith$elm_animator$Internal$Time$millis(targetTime), $ianmackenzie$elm_units$Pixels$pixels(aheadPosition), $mdgriffith$elm_animator$Internal$Time$millis(lookAhead.time)); } else { var period = _v3.b; var toX = _v3.c; if (lookAhead.resting) { if (period.$ === 'Loop') { var periodDuration = period.a; return A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, 0); } else { var n = period.a; var periodDuration = period.b; return A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, 0); } } else { return A4( $mdgriffith$elm_animator$Internal$Interpolate$velocityBetween, targetPosition, $mdgriffith$elm_animator$Internal$Time$millis(targetTime), $ianmackenzie$elm_units$Pixels$pixels( toX(0)), $mdgriffith$elm_animator$Internal$Time$millis(lookAhead.time)); } } } }); var $mdgriffith$elm_animator$Internal$Interpolate$interpolateBetween = F7( function (startTimeInMs, maybePrevious, target, targetTimeInMs, now, maybeLookAhead, state) { var targetVelocity = $ianmackenzie$elm_units$Pixels$inPixelsPerSecond( A3($mdgriffith$elm_animator$Internal$Interpolate$newVelocityAtTarget, target, targetTimeInMs, maybeLookAhead)); var targetPosition = function () { if (target.$ === 'Osc') { var toX = target.c; return $ianmackenzie$elm_units$Pixels$pixels( toX(0)); } else { var x = target.b; return $ianmackenzie$elm_units$Pixels$pixels(x); } }(); var curve = $mdgriffith$elm_animator$Internal$Interpolate$createSpline( { arrival: function () { if (target.$ === 'Pos') { var personality = target.a; return personality; } else { var personality = target.a; return personality; } }(), departure: function () { if (maybePrevious.$ === 'Nothing') { return $mdgriffith$elm_animator$Internal$Interpolate$linearDefault; } else { if (maybePrevious.a.$ === 'Pos') { var _v2 = maybePrevious.a; var personality = _v2.a; return personality; } else { var _v3 = maybePrevious.a; var personality = _v3.a; return personality; } } }(), end: { x: targetTimeInMs, y: $ianmackenzie$elm_units$Pixels$inPixels(targetPosition) }, endVelocity: {x: 1000, y: targetVelocity}, start: { x: startTimeInMs, y: $ianmackenzie$elm_units$Pixels$inPixels(state.position) }, startVelocity: { x: 1000, y: $ianmackenzie$elm_units$Pixels$inPixelsPerSecond(state.velocity) } }); var current = A6( $mdgriffith$elm_animator$Internal$Interpolate$findAtXOnSpline, curve, now, 1, 0.25, A2($mdgriffith$elm_animator$Internal$Interpolate$guessTime, now, curve), 0); var firstDerivative = A2($mdgriffith$elm_animator$Internal$Interpolate$firstDerivativeOnSpline, curve, current.t); return { position: $ianmackenzie$elm_units$Pixels$pixels(current.point.y), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(1000 * (firstDerivative.y / firstDerivative.x)) }; }); var $mdgriffith$elm_animator$Internal$Spring$criticalDamping = F2( function (k, m) { return 2 * $elm$core$Basics$sqrt(k * m); }); var $elm$core$Basics$e = _Basics_e; var $mdgriffith$elm_animator$Internal$Spring$toleranceForSpringSettleTimeCalculation = (-1) * A2($elm$core$Basics$logBase, $elm$core$Basics$e, 0.005); var $mdgriffith$elm_animator$Internal$Spring$settlesAt = function (_v0) { var stiffness = _v0.stiffness; var damping = _v0.damping; var mass = _v0.mass; var m = mass; var k = stiffness; var springAspect = $elm$core$Basics$sqrt(k / m); var cCritical = A2($mdgriffith$elm_animator$Internal$Spring$criticalDamping, k, m); var c = damping; if (_Utils_eq( $elm$core$Basics$round(c), $elm$core$Basics$round(cCritical))) { return 1000 * (8.5 / springAspect); } else { if ((c - cCritical) > 0) { var dampingAspect = c / cCritical; return 1000 * ($mdgriffith$elm_animator$Internal$Spring$toleranceForSpringSettleTimeCalculation / (dampingAspect * springAspect)); } else { var dampingAspect = c / cCritical; return 1000 * ($mdgriffith$elm_animator$Internal$Spring$toleranceForSpringSettleTimeCalculation / (dampingAspect * springAspect)); } } }; var $mdgriffith$elm_animator$Internal$Spring$mapToRange = F3( function (minimum, maximum, x) { var total = maximum - minimum; return minimum + (x * total); }); var $mdgriffith$elm_animator$Internal$Spring$wobble2Ratio = F2( function (wobble, duration) { var ms = $ianmackenzie$elm_units$Duration$inMilliseconds(duration); var scalingBelowDur = ms / 350; var top = A2( $elm$core$Basics$max, 0.43, 0.8 * A2($elm$core$Basics$min, 1, scalingBelowDur)); var bounded = A2( $elm$core$Basics$min, 1, A2($elm$core$Basics$max, 0, wobble)); return A3($mdgriffith$elm_animator$Internal$Spring$mapToRange, 0.43, top, 1 - bounded); }); var $mdgriffith$elm_animator$Internal$Spring$wobble2Damping = F4( function (wobble, k, m, duration) { return A2($mdgriffith$elm_animator$Internal$Spring$wobble2Ratio, wobble, duration) * A2($mdgriffith$elm_animator$Internal$Spring$criticalDamping, k, m); }); var $mdgriffith$elm_animator$Internal$Spring$select = F2( function (wobbliness, duration) { var k = 150; var durMS = $ianmackenzie$elm_units$Duration$inMilliseconds(duration); var damping = A4($mdgriffith$elm_animator$Internal$Spring$wobble2Damping, wobbliness, k, 1, duration); var initiallySettlesAt = $mdgriffith$elm_animator$Internal$Spring$settlesAt( {damping: damping, mass: 1, stiffness: k}); var newCritical = A2($mdgriffith$elm_animator$Internal$Spring$criticalDamping, k, durMS / initiallySettlesAt); return {damping: damping, mass: durMS / initiallySettlesAt, stiffness: k}; }); var $elm$core$List$repeatHelp = F3( function (result, n, value) { repeatHelp: while (true) { if (n <= 0) { return result; } else { var $temp$result = A2($elm$core$List$cons, value, result), $temp$n = n - 1, $temp$value = value; result = $temp$result; n = $temp$n; value = $temp$value; continue repeatHelp; } } }); var $elm$core$List$repeat = F2( function (n, value) { return A3($elm$core$List$repeatHelp, _List_Nil, n, value); }); var $mdgriffith$elm_animator$Internal$Spring$step = F4( function (target, _v0, dtms, motion) { var stiffness = _v0.stiffness; var damping = _v0.damping; var mass = _v0.mass; var fspring = stiffness * (target - motion.position); var fdamper = ((-1) * damping) * motion.velocity; var dt = dtms / 1000; var a = (fspring + fdamper) / mass; var newVelocity = motion.velocity + (a * dt); var newPos = motion.position + (newVelocity * dt); return {position: newPos, velocity: newVelocity}; }); var $mdgriffith$elm_animator$Internal$Spring$stepOver = F4( function (duration, params, target, state) { var durMS = $ianmackenzie$elm_units$Duration$inMilliseconds(duration); var frames = durMS / 16; var remainder = 16 * (frames - $elm$core$Basics$floor(frames)); var steps = (remainder > 0) ? A2( $elm$core$List$cons, remainder, A2( $elm$core$List$repeat, ($elm$core$Basics$floor(durMS) / 16) | 0, 16)) : A2( $elm$core$List$repeat, ($elm$core$Basics$floor(durMS) / 16) | 0, 16); return A3( $elm$core$List$foldl, A2($mdgriffith$elm_animator$Internal$Spring$step, target, params), state, steps); }); var $mdgriffith$elm_animator$Internal$Interpolate$springInterpolation = F7( function (prevEndTime, _v0, target, targetTime, now, _v1, state) { var wobble = function () { if (target.$ === 'Osc') { var personality = target.a; return personality.wobbliness; } else { var personality = target.a; return personality.wobbliness; } }(); var targetPos = function () { if (target.$ === 'Osc') { var toX = target.c; return toX(0); } else { var x = target.b; return x; } }(); var duration = A2( $mdgriffith$elm_animator$Internal$Time$duration, $mdgriffith$elm_animator$Internal$Time$millis(prevEndTime), $mdgriffith$elm_animator$Internal$Time$millis(targetTime)); var params = A2($mdgriffith$elm_animator$Internal$Spring$select, wobble, duration); var _new = A4( $mdgriffith$elm_animator$Internal$Spring$stepOver, A2( $mdgriffith$elm_animator$Internal$Time$duration, $mdgriffith$elm_animator$Internal$Time$millis(prevEndTime), $mdgriffith$elm_animator$Internal$Time$millis(now)), params, targetPos, { position: $ianmackenzie$elm_units$Pixels$inPixels(state.position), velocity: $ianmackenzie$elm_units$Pixels$inPixelsPerSecond(state.velocity) }); return { position: $ianmackenzie$elm_units$Pixels$pixels(_new.position), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(_new.velocity) }; }); var $mdgriffith$elm_animator$Internal$Interpolate$lerp = F7( function (prevEndTime, maybePrev, target, targetTime, now, maybeLookAhead, state) { var wobble = function () { if (target.$ === 'Osc') { var personality = target.a; return personality.wobbliness; } else { var personality = target.a; return personality.wobbliness; } }(); var nothingHappened = function () { if (target.$ === 'Osc') { return false; } else { var x = target.b; return _Utils_eq( x, $ianmackenzie$elm_units$Pixels$inPixels(state.position)) && (!$ianmackenzie$elm_units$Pixels$inPixelsPerSecond(state.velocity)); } }(); if (nothingHappened) { return state; } else { if (maybeLookAhead.$ === 'Nothing') { return (!(!wobble)) ? A7($mdgriffith$elm_animator$Internal$Interpolate$springInterpolation, prevEndTime, maybePrev, target, targetTime, now, maybeLookAhead, state) : A7($mdgriffith$elm_animator$Internal$Interpolate$interpolateBetween, prevEndTime, maybePrev, target, targetTime, now, maybeLookAhead, state); } else { return A7($mdgriffith$elm_animator$Internal$Interpolate$interpolateBetween, prevEndTime, maybePrev, target, targetTime, now, maybeLookAhead, state); } } }); var $mdgriffith$elm_animator$Internal$Interpolate$startMoving = function (movement) { return { position: function () { if (movement.$ === 'Osc') { var toX = movement.c; return $ianmackenzie$elm_units$Pixels$pixels( toX(0)); } else { var x = movement.b; return $ianmackenzie$elm_units$Pixels$pixels(x); } }(), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }; }; var $mdgriffith$elm_animator$Internal$Time$earliest = F2( function (oneQty, twoQty) { var one = oneQty.a; var two = twoQty.a; return ((one - two) >= 0) ? twoQty : oneQty; }); var $elm$core$Basics$modBy = _Basics_modBy; var $mdgriffith$elm_animator$Internal$Interpolate$wrapUnitAfter = F2( function (dur, total) { var totalDuration = $elm$core$Basics$round( $ianmackenzie$elm_units$Duration$inMilliseconds(total)); var periodDuration = $elm$core$Basics$round( $ianmackenzie$elm_units$Duration$inMilliseconds(dur)); if ((!periodDuration) || (!totalDuration)) { return 0; } else { var remaining = A2($elm$core$Basics$modBy, periodDuration, totalDuration); return (!remaining) ? 1 : (remaining / periodDuration); } }); var $mdgriffith$elm_animator$Internal$Interpolate$visit = F5( function (lookup, occurring, now, maybeLookAhead, state) { var event = occurring.a; var start = occurring.b; var eventEnd = occurring.c; var dwellTime = function () { if (maybeLookAhead.$ === 'Nothing') { return A2($mdgriffith$elm_animator$Internal$Time$duration, start, now); } else { return A2( $mdgriffith$elm_animator$Internal$Time$duration, start, A2($mdgriffith$elm_animator$Internal$Time$earliest, now, eventEnd)); } }(); if ($mdgriffith$elm_animator$Internal$Time$zeroDuration(dwellTime)) { return { position: function () { var _v0 = lookup(event); if (_v0.$ === 'Osc') { var period = _v0.b; var toX = _v0.c; return $ianmackenzie$elm_units$Pixels$pixels( toX(0)); } else { var x = _v0.b; return $ianmackenzie$elm_units$Pixels$pixels(x); } }(), velocity: A3( $mdgriffith$elm_animator$Internal$Interpolate$newVelocityAtTarget, lookup(event), $mdgriffith$elm_animator$Internal$Time$inMilliseconds(start), maybeLookAhead) }; } else { var _v1 = lookup(event); if (_v1.$ === 'Pos') { var pos = _v1.b; return { position: $ianmackenzie$elm_units$Pixels$pixels(pos), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }; } else { var period = _v1.b; var toX = _v1.c; if (period.$ === 'Loop') { var periodDuration = period.a; var progress = A2($mdgriffith$elm_animator$Internal$Interpolate$wrapUnitAfter, periodDuration, dwellTime); return { position: $ianmackenzie$elm_units$Pixels$pixels( toX(progress)), velocity: A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, progress) }; } else { var n = period.a; var periodDuration = period.b; var totalMS = $ianmackenzie$elm_units$Duration$inMilliseconds(dwellTime); var iterationTimeMS = $ianmackenzie$elm_units$Duration$inMilliseconds(periodDuration); var iteration = $elm$core$Basics$floor(totalMS / iterationTimeMS); if (_Utils_cmp(iteration, n) > -1) { return { position: $ianmackenzie$elm_units$Pixels$pixels( toX(1)), velocity: $ianmackenzie$elm_units$Pixels$pixelsPerSecond(0) }; } else { var progress = A2($mdgriffith$elm_animator$Internal$Interpolate$wrapUnitAfter, periodDuration, dwellTime); return { position: $ianmackenzie$elm_units$Pixels$pixels( toX(progress)), velocity: A3($mdgriffith$elm_animator$Internal$Interpolate$derivativeOfEasing, toX, periodDuration, progress) }; } } } } }); var $mdgriffith$elm_animator$Internal$Interpolate$moving = {adjustor: $mdgriffith$elm_animator$Internal$Interpolate$getPersonality, dwellPeriod: $mdgriffith$elm_animator$Internal$Interpolate$dwellPeriod, lerp: $mdgriffith$elm_animator$Internal$Interpolate$lerp, start: $mdgriffith$elm_animator$Internal$Interpolate$startMoving, visit: $mdgriffith$elm_animator$Internal$Interpolate$visit}; var $mdgriffith$elm_animator$Animator$Css$LinearTiming = {$: 'LinearTiming'}; var $mdgriffith$elm_animator$Animator$Css$LoopAnim = {$: 'LoopAnim'}; var $mdgriffith$elm_animator$Animator$Css$RepeatAnim = function (a) { return {$: 'RepeatAnim', a: a}; }; var $mdgriffith$elm_animator$Animator$Css$renderFrame = F8( function (i, total, name, frames, renderer, stubber, rendered, stub) { renderFrame: while (true) { if (!frames.b) { return {frames: rendered, uniqueName: stub}; } else { var _v1 = frames.a; var percent = _v1.a; var frm = _v1.b; var remain = frames.b; if (total === 1) { var keyframe = ('0% {' + (name + (': ' + (renderer(frm) + ';}\n')))) + ('100% {' + (name + (': ' + (renderer(frm) + ';}\n')))); return { frames: keyframe, uniqueName: stubber(frm) }; } else { var keyframe = $elm$core$String$fromFloat(100 * percent) + ('% {' + (name + (': ' + (renderer(frm) + ';}\n')))); var $temp$i = i + 1, $temp$total = total, $temp$name = name, $temp$frames = remain, $temp$renderer = renderer, $temp$stubber = stubber, $temp$rendered = _Utils_ap(rendered, keyframe), $temp$stub = _Utils_ap( stub, stubber(frm)); i = $temp$i; total = $temp$total; name = $temp$name; frames = $temp$frames; renderer = $temp$renderer; stubber = $temp$stubber; rendered = $temp$rendered; stub = $temp$stub; continue renderFrame; } } } }); var $mdgriffith$elm_animator$Animator$Css$renderAnimation = F6( function (now, attrName, frames, renderer, stubber, anims) { var rendered = A8( $mdgriffith$elm_animator$Animator$Css$renderFrame, 0, $elm$core$List$length(frames.frames), attrName, frames.frames, renderer, stubber, '', ''); var name = attrName + ('-' + ($elm$core$String$fromInt( $elm$core$Basics$floor( $mdgriffith$elm_animator$Internal$Time$inMilliseconds(now))) + ('-' + rendered.uniqueName))); var newKeyFrames = '@keyframes ' + (name + (' {\n' + (rendered.frames + '\n}'))); var duration = $ianmackenzie$elm_units$Duration$inMilliseconds(frames.duration); var anim = { delay: 0, duration: duration, keyframes: newKeyFrames, name: name, repeat: $mdgriffith$elm_animator$Animator$Css$RepeatAnim(1), timingFn: $mdgriffith$elm_animator$Animator$Css$LinearTiming }; var _v0 = frames.dwell; if (_v0.$ === 'Nothing') { return A2($elm$core$List$cons, anim, anims); } else { var details = _v0.a; var dwellFrames = A8( $mdgriffith$elm_animator$Animator$Css$renderFrame, 0, $elm$core$List$length(details.frames), attrName, details.frames, renderer, stubber, '', ''); var dwell = { delay: duration, duration: function () { var _v1 = details.period; if (_v1.$ === 'Repeat') { var dwellDur = _v1.b; return $ianmackenzie$elm_units$Duration$inMilliseconds(dwellDur); } else { var dwellDur = _v1.a; return $ianmackenzie$elm_units$Duration$inMilliseconds(dwellDur); } }(), keyframes: '@keyframes ' + (name + ('-dwell' + (' {\n' + (dwellFrames.frames + '\n}')))), name: name + '-dwell', repeat: function () { var _v2 = details.period; if (_v2.$ === 'Repeat') { var n = _v2.a; return $mdgriffith$elm_animator$Animator$Css$RepeatAnim(n); } else { return $mdgriffith$elm_animator$Animator$Css$LoopAnim; } }(), timingFn: $mdgriffith$elm_animator$Animator$Css$LinearTiming }; return A2( $elm$core$List$cons, dwell, A2($elm$core$List$cons, anim, anims)); } }); var $mdgriffith$elm_animator$Animator$Css$stubFloat = function (f) { return $elm$core$String$fromInt( $elm$core$Basics$round(f * 1000)); }; var $mdgriffith$elm_animator$Animator$Css$stubColor = function (clr) { var _v0 = $avh4$elm_color$Color$toRgba(clr); var red = _v0.red; var green = _v0.green; var blue = _v0.blue; var alpha = _v0.alpha; return _Utils_ap( $mdgriffith$elm_animator$Animator$Css$stubFloat(red) + '-', _Utils_ap( $mdgriffith$elm_animator$Animator$Css$stubFloat(green) + '-', _Utils_ap( $mdgriffith$elm_animator$Animator$Css$stubFloat(blue) + '-', $mdgriffith$elm_animator$Animator$Css$stubFloat(alpha)))); }; var $avh4$elm_color$Color$toCssString = function (_v0) { var r = _v0.a; var g = _v0.b; var b = _v0.c; var a = _v0.d; var roundTo = function (x) { return $elm$core$Basics$round(x * 1000) / 1000; }; var pct = function (x) { return $elm$core$Basics$round(x * 10000) / 100; }; return $elm$core$String$concat( _List_fromArray( [ 'rgba(', $elm$core$String$fromFloat( pct(r)), '%,', $elm$core$String$fromFloat( pct(g)), '%,', $elm$core$String$fromFloat( pct(b)), '%,', $elm$core$String$fromFloat( roundTo(a)), ')' ])); }; var $mdgriffith$elm_animator$Animator$Css$toTransform = function (options) { return function (rendered) { return function (x) { return function (y) { return function (z) { return function (rotation) { return function (scaleX) { return function (scaleY) { return function (scaleZ) { return function (facingX) { return function (facingY) { return function (facingZ) { toTransform: while (true) { if (!x.b) { return rendered; } else { var _v1 = x.a; var percent = _v1.a; var topX = _v1.b; var rX = x.b; if (!y.b) { return rendered; } else { var _v3 = y.a; var topY = _v3.b; var rY = y.b; if (!z.b) { return rendered; } else { var _v5 = z.a; var topZ = _v5.b; var rZ = z.b; if (!rotation.b) { return rendered; } else { var _v7 = rotation.a; var topR = _v7.b; var rR = rotation.b; if (!scaleX.b) { return rendered; } else { var _v9 = scaleX.a; var topSx = _v9.b; var rsx = scaleX.b; if (!scaleY.b) { return rendered; } else { var _v11 = scaleY.a; var topSy = _v11.b; var rsy = scaleY.b; if (!scaleZ.b) { return rendered; } else { var _v13 = scaleZ.a; var topSz = _v13.b; var rsz = scaleZ.b; if (!facingX.b) { return rendered; } else { var _v15 = facingX.a; var topFx = _v15.b; var rfx = facingX.b; if (!facingY.b) { return rendered; } else { var _v17 = facingY.a; var topFy = _v17.b; var rfy = facingY.b; if (!facingZ.b) { return rendered; } else { var _v19 = facingZ.a; var topFz = _v19.b; var rfz = facingZ.b; var $temp$options = options, $temp$rendered = A2( $elm$core$List$cons, A2( $mdgriffith$elm_animator$Internal$Timeline$Frame, percent, {aroundX: options.rotationAxis.x, aroundY: options.rotationAxis.y, aroundZ: options.rotationAxis.z, facingX: topFx, facingY: topFy, facingZ: topFz, rotation: topR, scaleX: topSx, scaleY: topSy, scaleZ: topSz, x: topX, y: topY, z: topZ}), rendered), $temp$x = rX, $temp$y = rY, $temp$z = rZ, $temp$rotation = rR, $temp$scaleX = rsx, $temp$scaleY = rsy, $temp$scaleZ = rsz, $temp$facingX = rfx, $temp$facingY = rfy, $temp$facingZ = rfz; options = $temp$options; rendered = $temp$rendered; x = $temp$x; y = $temp$y; z = $temp$z; rotation = $temp$rotation; scaleX = $temp$scaleX; scaleY = $temp$scaleY; scaleZ = $temp$scaleZ; facingX = $temp$facingX; facingY = $temp$facingY; facingZ = $temp$facingZ; continue toTransform; } } } } } } } } } } } }; }; }; }; }; }; }; }; }; }; }; }; var $elm$core$Basics$atan2 = _Basics_atan2; var $elm$core$Basics$toPolar = function (_v0) { var x = _v0.a; var y = _v0.b; return _Utils_Tuple2( $elm$core$Basics$sqrt((x * x) + (y * y)), A2($elm$core$Basics$atan2, y, x)); }; var $mdgriffith$elm_animator$Animator$Css$transformToString = function (details) { var _v0 = $elm$core$Basics$toPolar( _Utils_Tuple2( $ianmackenzie$elm_units$Pixels$inPixels(details.facingZ.position), $ianmackenzie$elm_units$Pixels$inPixels(details.facingX.position))); var rotationAroundY = _v0.b; var _v1 = $elm$core$Basics$toPolar( _Utils_Tuple2( $ianmackenzie$elm_units$Pixels$inPixels(details.facingZ.position), $ianmackenzie$elm_units$Pixels$inPixels(details.facingY.position))); var rotationAroundX = _v1.b; return ('translate3d(' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.x.position)) + ('px, ' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.y.position)) + ('px, ' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.z.position)) + 'px)')))))) + ((' rotate3d(0, 1, 0, ' + ($elm$core$String$fromFloat(rotationAroundY) + 'rad)')) + ((' rotate3d(1, 0, 0, ' + ($elm$core$String$fromFloat(rotationAroundX) + 'rad)')) + ((' rotate3d(' + ($elm$core$String$fromFloat(details.aroundX) + (', ' + ($elm$core$String$fromFloat(details.aroundY) + (', ' + ($elm$core$String$fromFloat(details.aroundZ) + (', ' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.rotation.position)) + 'rad)')))))))) + (' scale3d(' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleX.position)) + (', ' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleY.position)) + (', ' + ($elm$core$String$fromFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleZ.position)) + ')'))))))))); }; var $mdgriffith$elm_animator$Animator$Css$transformToStub = function (details) { var _v0 = $elm$core$Basics$toPolar( _Utils_Tuple2( $ianmackenzie$elm_units$Pixels$inPixels(details.facingZ.position), $ianmackenzie$elm_units$Pixels$inPixels(details.facingX.position))); var rotationAroundY = _v0.b; var _v1 = $elm$core$Basics$toPolar( _Utils_Tuple2( $ianmackenzie$elm_units$Pixels$inPixels(details.facingZ.position), $ianmackenzie$elm_units$Pixels$inPixels(details.facingY.position))); var rotationAroundX = _v1.b; return $mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.x.position)) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.y.position)) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.z.position)) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat(rotationAroundY) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat(rotationAroundX) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat(details.aroundX) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat(details.aroundY) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat(details.aroundZ) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.rotation.position)) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleX.position)) + ('-' + ($mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleY.position)) + ('-' + $mdgriffith$elm_animator$Animator$Css$stubFloat( $ianmackenzie$elm_units$Pixels$inPixels(details.scaleZ.position))))))))))))))))))))))); }; var $mdgriffith$elm_animator$Internal$Interpolate$Osc = F3( function (a, b, c) { return {$: 'Osc', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Internal$Interpolate$Pos = F2( function (a, b) { return {$: 'Pos', a: a, b: b}; }); var $mdgriffith$elm_animator$Internal$Interpolate$withDefault = F2( function (def, defaultOr) { if (defaultOr.$ === 'Default') { return def; } else { var specified = defaultOr.a; return specified; } }); var $mdgriffith$elm_animator$Internal$Interpolate$fillDefaults = F2( function (builtInDefault, specified) { if (specified.$ === 'FullDefault') { return builtInDefault; } else { var partial = specified.a; return { arriveEarly: A2($mdgriffith$elm_animator$Internal$Interpolate$withDefault, builtInDefault.arriveEarly, partial.arriveEarly), arriveSlowly: A2($mdgriffith$elm_animator$Internal$Interpolate$withDefault, builtInDefault.arriveSlowly, partial.arriveSlowly), departLate: A2($mdgriffith$elm_animator$Internal$Interpolate$withDefault, builtInDefault.departLate, partial.departLate), departSlowly: A2($mdgriffith$elm_animator$Internal$Interpolate$withDefault, builtInDefault.departSlowly, partial.departSlowly), wobbliness: A2($mdgriffith$elm_animator$Internal$Interpolate$withDefault, builtInDefault.wobbliness, partial.wobbliness) }; } }); var $mdgriffith$elm_animator$Internal$Interpolate$withLinearDefault = function (defMovement) { if (defMovement.$ === 'Oscillate') { var specifiedPersonality = defMovement.a; var period = defMovement.b; var fn = defMovement.c; var personality = A2($mdgriffith$elm_animator$Internal$Interpolate$fillDefaults, $mdgriffith$elm_animator$Internal$Interpolate$linearDefault, specifiedPersonality); return A3($mdgriffith$elm_animator$Internal$Interpolate$Osc, personality, period, fn); } else { var specifiedPersonality = defMovement.a; var p = defMovement.b; var personality = A2($mdgriffith$elm_animator$Internal$Interpolate$fillDefaults, $mdgriffith$elm_animator$Internal$Interpolate$linearDefault, specifiedPersonality); return A2($mdgriffith$elm_animator$Internal$Interpolate$Pos, personality, p); } }; var $mdgriffith$elm_animator$Internal$Interpolate$standardDefault = {arriveEarly: 0, arriveSlowly: 0.8, departLate: 0, departSlowly: 0.4, wobbliness: 0}; var $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault = function (defMovement) { if (defMovement.$ === 'Oscillate') { var specifiedPersonality = defMovement.a; var period = defMovement.b; var fn = defMovement.c; var personality = A2($mdgriffith$elm_animator$Internal$Interpolate$fillDefaults, $mdgriffith$elm_animator$Internal$Interpolate$standardDefault, specifiedPersonality); return A3($mdgriffith$elm_animator$Internal$Interpolate$Osc, personality, period, fn); } else { var specifiedPersonality = defMovement.a; var p = defMovement.b; var personality = A2($mdgriffith$elm_animator$Internal$Interpolate$fillDefaults, $mdgriffith$elm_animator$Internal$Interpolate$standardDefault, specifiedPersonality); return A2($mdgriffith$elm_animator$Internal$Interpolate$Pos, personality, p); } }; var $mdgriffith$elm_animator$Animator$Css$renderAttrs = F3( function (timeline, attr, anim) { var details = timeline.a; switch (attr.$) { case 'Explain': return anim; case 'ColorAttribute': var attrName = attr.a; var lookup = attr.b; return A6( $mdgriffith$elm_animator$Animator$Css$renderAnimation, details.now, attrName, A4($mdgriffith$elm_animator$Internal$Timeline$capture, 60, lookup, $mdgriffith$elm_animator$Internal$Interpolate$coloring, timeline), $avh4$elm_color$Color$toCssString, $mdgriffith$elm_animator$Animator$Css$stubColor, anim); case 'Linear': var attrName = attr.a; var lookup = attr.b; var toString = attr.c; return A6( $mdgriffith$elm_animator$Animator$Css$renderAnimation, details.now, attrName, A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2($elm$core$Basics$composeR, lookup, $mdgriffith$elm_animator$Internal$Interpolate$withLinearDefault), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline), A2( $elm$core$Basics$composeR, function ($) { return $.position; }, A2($elm$core$Basics$composeR, $ianmackenzie$elm_units$Pixels$inPixels, toString)), A2( $elm$core$Basics$composeR, function ($) { return $.position; }, A2($elm$core$Basics$composeR, $ianmackenzie$elm_units$Pixels$inPixels, $mdgriffith$elm_animator$Animator$Css$stubFloat)), anim); case 'Movement': var attrName = attr.a; var lookup = attr.b; var toString = attr.c; return A6( $mdgriffith$elm_animator$Animator$Css$renderAnimation, details.now, attrName, A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2($elm$core$Basics$composeR, lookup, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline), A2( $elm$core$Basics$composeR, function ($) { return $.position; }, A2($elm$core$Basics$composeR, $ianmackenzie$elm_units$Pixels$inPixels, toString)), A2( $elm$core$Basics$composeR, function ($) { return $.position; }, A2($elm$core$Basics$composeR, $ianmackenzie$elm_units$Pixels$inPixels, $mdgriffith$elm_animator$Animator$Css$stubFloat)), anim); default: var options = attr.a; var lookupTransform = attr.b; var lookup = function (state) { var _v1 = lookupTransform(state); var deets = _v1.a; return deets; }; var rotation = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.rotate; }, $mdgriffith$elm_animator$Internal$Interpolate$withLinearDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var scaleX = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.scaleX; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var scaleY = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.scaleY; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var scaleZ = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.scaleZ; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var x = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.x; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var y = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.y; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var z = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.z; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault)), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var facingZ = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.facing; }, A2( $elm$core$Basics$composeR, function ($) { return $.z; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault))), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var facingY = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.facing; }, A2( $elm$core$Basics$composeR, function ($) { return $.y; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault))), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var facingX = A4( $mdgriffith$elm_animator$Internal$Timeline$capture, 60, A2( $elm$core$Basics$composeR, lookup, A2( $elm$core$Basics$composeR, function ($) { return $.facing; }, A2( $elm$core$Basics$composeR, function ($) { return $.x; }, $mdgriffith$elm_animator$Internal$Interpolate$withStandardDefault))), $mdgriffith$elm_animator$Internal$Interpolate$moving, timeline); var combined = $mdgriffith$elm_animator$Animator$Css$toTransform(options)(_List_Nil)(x.frames)(y.frames)(z.frames)(rotation.frames)(scaleX.frames)(scaleY.frames)(scaleZ.frames)(facingX.frames)(facingY.frames)(facingZ.frames); return A6( $mdgriffith$elm_animator$Animator$Css$renderAnimation, details.now, 'transform', { duration: x.duration, dwell: A2( $elm$core$Maybe$map, $mdgriffith$elm_animator$Animator$Css$mapDwellFrames(combined), rotation.dwell), frames: $elm$core$List$reverse(combined) }, $mdgriffith$elm_animator$Animator$Css$transformToString, $mdgriffith$elm_animator$Animator$Css$transformToStub, anim); } }); var $mdgriffith$elm_animator$Animator$Css$renderTransformOptions = function (opts) { return A2( $elm$html$Html$Attributes$style, 'transform-origin', function () { var _v0 = opts.origin; if (_v0.$ === 'Center') { return 'center'; } else { var x = _v0.a; var y = _v0.b; return ('calc(50% + ' + ($elm$core$String$fromFloat(x) + 'px) calc(50% + ')) + ($elm$core$String$fromFloat(y) + 'px)'); } }()); }; var $mdgriffith$elm_animator$Animator$Css$stylesheet = function (str) { return A3( $elm$html$Html$node, 'style', _List_Nil, _List_fromArray( [ $elm$html$Html$text(str) ])); }; var $mdgriffith$elm_animator$Animator$Css$node = F5( function (name, timeline, divAttrs, attrs, children) { var transformOptions = A2( $elm$core$Maybe$withDefault, $mdgriffith$elm_animator$Animator$Css$defaultTransformOptions, $mdgriffith$elm_animator$Animator$Css$getTransformOptions(divAttrs)); var explainIsOn = $mdgriffith$elm_animator$Animator$Css$explainActive(divAttrs); var possiblyExplainAttr = explainIsOn ? A2($elm$html$Html$Attributes$style, 'position', 'relative') : A2($elm$html$Html$Attributes$style, '', ''); var animations = $elm$core$List$reverse( A3( $elm$core$List$foldl, $mdgriffith$elm_animator$Animator$Css$renderAttrs(timeline), _List_Nil, divAttrs)); return A3( $elm$html$Html$node, name, A2( $elm$core$List$cons, $elm$html$Html$Attributes$class( A2($mdgriffith$elm_animator$Animator$Css$renderClassName, '', animations)), A2( $elm$core$List$cons, possiblyExplainAttr, A2( $elm$core$List$cons, $mdgriffith$elm_animator$Animator$Css$renderTransformOptions(transformOptions), attrs))), A2( $elm$core$List$cons, $mdgriffith$elm_animator$Animator$Css$stylesheet( $mdgriffith$elm_animator$Animator$Css$renderAnimations(animations)), A2( $elm$core$List$cons, explainIsOn ? $mdgriffith$elm_animator$Animator$Css$explainElement(transformOptions) : $elm$html$Html$text(''), children))); }); var $mdgriffith$elm_animator$Animator$Css$div = $mdgriffith$elm_animator$Animator$Css$node('div'); var $mdgriffith$elm_ui$Element$el = F2( function (attrs, child) { return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink), attrs)), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [child]))); }); var $elm$core$String$cons = _String_cons; var $elm$core$String$fromChar = function (_char) { return A2($elm$core$String$cons, _char, ''); }; var $elm$core$Array$length = function (_v0) { var len = _v0.a; return len; }; var $author$project$Views$Permutation$safeGet = F2( function (idx, _v0) { var values = _v0.values; var saved = _v0.saved; return A2( $elm$core$Maybe$withDefault, saved, A2($elm$core$Array$get, idx, values)); }); var $author$project$Views$Permutation$get = F2( function (idx, _v0) { var p = _v0.a; return A2( $author$project$Views$Permutation$safeGet, A2( $elm$core$Basics$modBy, $elm$core$Array$length(p.values), idx), p); }); var $mdgriffith$elm_ui$Internal$Model$unstyled = A2($elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Unstyled, $elm$core$Basics$always); var $mdgriffith$elm_ui$Element$html = $mdgriffith$elm_ui$Internal$Model$unstyled; var $mdgriffith$elm_animator$Animator$leaveSmoothly = F2( function (s, movement) { return A2( $mdgriffith$elm_animator$Animator$applyOption, function (def) { return _Utils_update( def, { departSlowly: $mdgriffith$elm_animator$Internal$Interpolate$Specified( A3($elm$core$Basics$clamp, 0, 1, s)) }); }, movement); }); var $mdgriffith$elm_animator$Animator$Css$Linear = F3( function (a, b, c) { return {$: 'Linear', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Animator$Css$opacity = function (lookup) { return A3($mdgriffith$elm_animator$Animator$Css$Linear, 'opacity', lookup, $elm$core$String$fromFloat); }; var $mdgriffith$elm_animator$Animator$millis = $ianmackenzie$elm_units$Duration$milliseconds; var $mdgriffith$elm_animator$Animator$veryQuickly = $mdgriffith$elm_animator$Animator$millis(100); var $author$project$Views$Hive$options = {fade: true, slide: true, smoothness: 0.8, speed: $mdgriffith$elm_animator$Animator$veryQuickly, stagger: 0.0}; var $mdgriffith$elm_ui$Internal$Model$Px = function (a) { return {$: 'Px', a: a}; }; var $mdgriffith$elm_ui$Element$px = $mdgriffith$elm_ui$Internal$Model$Px; var $mdgriffith$elm_ui$Element$toRgb = function (_v0) { var r = _v0.a; var g = _v0.b; var b = _v0.c; var a = _v0.d; return {alpha: a, blue: b, green: g, red: r}; }; var $author$project$Views$Hive$toCssColor = function (color) { var rgb = $mdgriffith$elm_ui$Element$toRgb(color); return 'rgb(' + (A2( $elm$core$String$join, ' ', A2( $elm$core$List$map, function (x) { return $elm$core$String$fromInt( $elm$core$Basics$round(255 * x)); }, _List_fromArray( [rgb.red, rgb.green, rgb.blue]))) + ')'); }; var $mdgriffith$elm_animator$Animator$Css$TransformAttr = F2( function (a, b) { return {$: 'TransformAttr', a: a, b: b}; }); var $mdgriffith$elm_animator$Animator$Css$transform = $mdgriffith$elm_animator$Animator$Css$TransformAttr($mdgriffith$elm_animator$Animator$Css$defaultTransformOptions); var $mdgriffith$elm_animator$Animator$Css$Transform = function (a) { return {$: 'Transform', a: a}; }; var $mdgriffith$elm_animator$Animator$Css$xy = function (coords) { return $mdgriffith$elm_animator$Animator$Css$Transform( { facing: { x: $mdgriffith$elm_animator$Animator$at(0), y: $mdgriffith$elm_animator$Animator$at(0), z: $mdgriffith$elm_animator$Animator$at(1) }, rotate: $mdgriffith$elm_animator$Animator$at(0), scaleX: $mdgriffith$elm_animator$Animator$at(1), scaleY: $mdgriffith$elm_animator$Animator$at(1), scaleZ: $mdgriffith$elm_animator$Animator$at(1), x: $mdgriffith$elm_animator$Animator$at(coords.x), y: $mdgriffith$elm_animator$Animator$at(coords.y), z: $mdgriffith$elm_animator$Animator$at(0) }); }; var $author$project$Views$Hive$hiveImpl = F6( function (colors, center, letters, state, handleClickMaybe, used) { var scale = 65; var letterState = F2( function (idx, ps) { if (ps.$ === 'At') { var pos = ps.a; return $author$project$Views$Hive$LetterAt( A2($author$project$Views$Permutation$get, idx, pos)); } else { var src = ps.a; var dst = ps.b; var p2 = A2($author$project$Views$Permutation$get, idx, dst); var p1 = A2($author$project$Views$Permutation$get, idx, src); return _Utils_eq(p1, p2) ? $author$project$Views$Hive$LetterAt(p2) : A2($author$project$Views$Hive$LetterBetween, p1, p2); } }); var position = function (idx) { return $author$project$Views$Hive$options.slide ? $elm$core$Maybe$Just( $mdgriffith$elm_animator$Animator$Css$transform( A2( $elm$core$Basics$composeR, letterState(idx), A2( $elm$core$Basics$composeR, $author$project$Views$Hive$coords(scale), $mdgriffith$elm_animator$Animator$Css$xy)))) : $elm$core$Maybe$Nothing; }; var visibility = function (idx) { return $author$project$Views$Hive$options.fade ? $elm$core$Maybe$Just( $mdgriffith$elm_animator$Animator$Css$opacity( function (ps) { var _v1 = A2(letterState, idx, ps); if (_v1.$ === 'LetterBetween') { return A2( $mdgriffith$elm_animator$Animator$arriveSmoothly, $author$project$Views$Hive$options.smoothness, A2( $mdgriffith$elm_animator$Animator$leaveSmoothly, 0, $mdgriffith$elm_animator$Animator$at(0))); } else { return A2( $mdgriffith$elm_animator$Animator$arriveEarly, $author$project$Views$Hive$options.stagger * idx, A2( $mdgriffith$elm_animator$Animator$arriveSmoothly, 0, A2( $mdgriffith$elm_animator$Animator$leaveSmoothly, $author$project$Views$Hive$options.smoothness, $mdgriffith$elm_animator$Animator$at(1)))); } })) : $elm$core$Maybe$Nothing; }; var geometryStyle = function (pos) { var c = A2( $author$project$Views$Hive$coords, scale, $author$project$Views$Hive$LetterAt(pos)); return _Utils_ap( _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'width', '54px'), A2($elm$html$Html$Attributes$style, 'height', '54px'), A2($elm$html$Html$Attributes$style, 'position', 'absolute') ]), $author$project$Views$Hive$options.slide ? _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'left', '65px'), A2($elm$html$Html$Attributes$style, 'top', '65px') ]) : _List_fromArray( [ A2( $elm$html$Html$Attributes$style, 'left', $elm$core$String$fromFloat(65 + c.x) + 'px'), A2( $elm$html$Html$Attributes$style, 'top', $elm$core$String$fromFloat(65 + c.y) + 'px') ])); }; var fixedAppearanceStyle = _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'font-size', '32px'), A2($elm$html$Html$Attributes$style, 'border-radius', '5px'), A2($elm$html$Html$Attributes$style, 'border-style', 'solid'), A2($elm$html$Html$Attributes$style, 'border-width', '3px') ]); var commonStyle = _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'display', 'flex'), A2($elm$html$Html$Attributes$style, 'align-items', 'center'), A2($elm$html$Html$Attributes$style, 'justify-content', 'center'), A2($elm$html$Html$Attributes$style, 'cursor', 'pointer') ]); var clickStyle = function (letter) { if (handleClickMaybe.$ === 'Just') { var handleClick = handleClickMaybe.a; return _List_fromArray( [ $elm$html$Html$Events$onClick( handleClick(letter)) ]); } else { return _List_Nil; } }; var accentColor = function (letter) { return _Utils_eq(letter, center) ? colors.primaryTint : colors.secondaryTint; }; var accentStyle = function (letter) { return A2($elm$core$Set$member, letter, used) ? _List_fromArray( [ A2( $elm$html$Html$Attributes$style, 'background-color', $author$project$Views$Hive$toCssColor(colors.background)), A2( $elm$html$Html$Attributes$style, 'border-color', $author$project$Views$Hive$toCssColor( accentColor(letter))) ]) : _List_fromArray( [ A2( $elm$html$Html$Attributes$style, 'background-color', $author$project$Views$Hive$toCssColor( accentColor(letter))), A2($elm$html$Html$Attributes$style, 'border-color', '#00000000') ]); }; var cell = F2( function (idx, letter) { return A4( $mdgriffith$elm_animator$Animator$Css$div, state, A2( $elm$core$List$filterMap, $elm$core$Basics$identity, _List_fromArray( [ position(idx), visibility(idx) ])), _Utils_ap( geometryStyle( A2( $author$project$Views$Permutation$get, idx, $author$project$Views$Hive$currentPositions(state))), _Utils_ap( fixedAppearanceStyle, _Utils_ap( accentStyle(letter), _Utils_ap( commonStyle, clickStyle(letter))))), _List_fromArray( [ A2( $elm$html$Html$div, _List_Nil, _List_fromArray( [ $elm$html$Html$text( $elm$core$String$fromChar(letter)) ])) ])); }); return A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$width( $mdgriffith$elm_ui$Element$px(190)), $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px(190)) ]), $mdgriffith$elm_ui$Element$html( A2( $elm$html$Html$div, _List_fromArray( [ A2($elm$html$Html$Attributes$style, 'width', '190px'), A2($elm$html$Html$Attributes$style, 'height', '190px'), A2($elm$html$Html$Attributes$style, 'position', 'relative') ]), A2($elm$core$List$indexedMap, cell, letters)))); }); var $author$project$Views$Hive$displayHive = F4( function (colors, center, letters, state) { return A6($author$project$Views$Hive$hiveImpl, colors, center, letters, state, $elm$core$Maybe$Nothing, $elm$core$Set$empty); }); var $elm$core$String$filter = _String_filter; var $elm$core$Dict$fromList = function (assocs) { return A3( $elm$core$List$foldl, F2( function (_v0, dict) { var key = _v0.a; var value = _v0.b; return A3($elm$core$Dict$insert, key, value, dict); }), $elm$core$Dict$empty, assocs); }; var $elm$core$String$fromList = _String_fromList; var $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id'); var $mdgriffith$elm_ui$Element$Input$HiddenLabel = function (a) { return {$: 'HiddenLabel', a: a}; }; var $mdgriffith$elm_ui$Element$Input$labelHidden = $mdgriffith$elm_ui$Element$Input$HiddenLabel; var $author$project$Views$onKeyStroke = function (msgs) { return $mdgriffith$elm_ui$Element$htmlAttribute( A2( $elm$html$Html$Events$on, 'keyup', A2( $elm$json$Json$Decode$andThen, function (key) { var _v0 = A2($elm$core$Dict$get, key, msgs); if (_v0.$ === 'Just') { var msg = _v0.a; return $elm$json$Json$Decode$succeed(msg); } else { return $elm$json$Json$Decode$fail('Not a known key'); } }, A2($elm$json$Json$Decode$field, 'key', $elm$json$Json$Decode$string)))); }; var $mdgriffith$elm_ui$Internal$Model$AsRow = {$: 'AsRow'}; var $mdgriffith$elm_ui$Internal$Model$asRow = $mdgriffith$elm_ui$Internal$Model$AsRow; var $mdgriffith$elm_ui$Element$row = F2( function (attrs, children) { return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asRow, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.contentLeft + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.contentCenterY)), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink), attrs))), $mdgriffith$elm_ui$Internal$Model$Unkeyed(children)); }); var $mdgriffith$elm_ui$Element$Input$TextInputNode = function (a) { return {$: 'TextInputNode', a: a}; }; var $mdgriffith$elm_ui$Element$Input$TextArea = {$: 'TextArea'}; var $mdgriffith$elm_ui$Internal$Model$LivePolite = {$: 'LivePolite'}; var $mdgriffith$elm_ui$Element$Region$announce = $mdgriffith$elm_ui$Internal$Model$Describe($mdgriffith$elm_ui$Internal$Model$LivePolite); var $mdgriffith$elm_ui$Element$Input$applyLabel = F3( function (attrs, label, input) { if (label.$ === 'HiddenLabel') { var labelText = label.a; return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asColumn, $mdgriffith$elm_ui$Internal$Model$NodeName('label'), attrs, $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [input]))); } else { var position = label.a; var labelAttrs = label.b; var labelChild = label.c; var labelElement = A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, labelAttrs, $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [labelChild]))); switch (position.$) { case 'Above': return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asColumn, $mdgriffith$elm_ui$Internal$Model$NodeName('label'), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputLabel), attrs), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [labelElement, input]))); case 'Below': return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asColumn, $mdgriffith$elm_ui$Internal$Model$NodeName('label'), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputLabel), attrs), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [input, labelElement]))); case 'OnRight': return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asRow, $mdgriffith$elm_ui$Internal$Model$NodeName('label'), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputLabel), attrs), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [input, labelElement]))); default: return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asRow, $mdgriffith$elm_ui$Internal$Model$NodeName('label'), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputLabel), attrs), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [labelElement, input]))); } } }); var $elm$html$Html$Attributes$attribute = $elm$virtual_dom$VirtualDom$attribute; var $mdgriffith$elm_ui$Element$Input$autofill = A2( $elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Attr, $elm$html$Html$Attributes$attribute('autocomplete')); var $mdgriffith$elm_ui$Internal$Model$Behind = {$: 'Behind'}; var $mdgriffith$elm_ui$Internal$Model$Nearby = F2( function (a, b) { return {$: 'Nearby', a: a, b: b}; }); var $mdgriffith$elm_ui$Element$createNearby = F2( function (loc, element) { if (element.$ === 'Empty') { return $mdgriffith$elm_ui$Internal$Model$NoAttribute; } else { return A2($mdgriffith$elm_ui$Internal$Model$Nearby, loc, element); } }); var $mdgriffith$elm_ui$Element$behindContent = function (element) { return A2($mdgriffith$elm_ui$Element$createNearby, $mdgriffith$elm_ui$Internal$Model$Behind, element); }; var $mdgriffith$elm_ui$Internal$Model$MoveY = function (a) { return {$: 'MoveY', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$TransformComponent = F2( function (a, b) { return {$: 'TransformComponent', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Flag$moveY = $mdgriffith$elm_ui$Internal$Flag$flag(26); var $mdgriffith$elm_ui$Element$moveUp = function (y) { return A2( $mdgriffith$elm_ui$Internal$Model$TransformComponent, $mdgriffith$elm_ui$Internal$Flag$moveY, $mdgriffith$elm_ui$Internal$Model$MoveY(-y)); }; var $mdgriffith$elm_ui$Element$Input$calcMoveToCompensateForPadding = function (attrs) { var gatherSpacing = F2( function (attr, found) { if ((attr.$ === 'StyleClass') && (attr.b.$ === 'SpacingStyle')) { var _v2 = attr.b; var x = _v2.b; var y = _v2.c; if (found.$ === 'Nothing') { return $elm$core$Maybe$Just(y); } else { return found; } } else { return found; } }); var _v0 = A3($elm$core$List$foldr, gatherSpacing, $elm$core$Maybe$Nothing, attrs); if (_v0.$ === 'Nothing') { return $mdgriffith$elm_ui$Internal$Model$NoAttribute; } else { var vSpace = _v0.a; return $mdgriffith$elm_ui$Element$moveUp( $elm$core$Basics$floor(vSpace / 2)); } }; var $mdgriffith$elm_ui$Internal$Flag$overflow = $mdgriffith$elm_ui$Internal$Flag$flag(20); var $mdgriffith$elm_ui$Element$clip = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$overflow, $mdgriffith$elm_ui$Internal$Style$classes.clip); var $mdgriffith$elm_ui$Internal$Model$Rgba = F4( function (a, b, c, d) { return {$: 'Rgba', a: a, b: b, c: c, d: d}; }); var $mdgriffith$elm_ui$Element$rgb = F3( function (r, g, b) { return A4($mdgriffith$elm_ui$Internal$Model$Rgba, r, g, b, 1); }); var $mdgriffith$elm_ui$Element$Input$darkGrey = A3($mdgriffith$elm_ui$Element$rgb, 186 / 255, 189 / 255, 182 / 255); var $mdgriffith$elm_ui$Element$paddingXY = F2( function (x, y) { if (_Utils_eq(x, y)) { var f = x; return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, 'p-' + $elm$core$String$fromInt(x), f, f, f, f)); } else { var yFloat = y; var xFloat = x; return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, 'p-' + ($elm$core$String$fromInt(x) + ('-' + $elm$core$String$fromInt(y))), yFloat, xFloat, yFloat, xFloat)); } }); var $mdgriffith$elm_ui$Element$Input$defaultTextPadding = A2($mdgriffith$elm_ui$Element$paddingXY, 12, 12); var $mdgriffith$elm_ui$Internal$Model$Fill = function (a) { return {$: 'Fill', a: a}; }; var $mdgriffith$elm_ui$Element$fill = $mdgriffith$elm_ui$Internal$Model$Fill(1); var $mdgriffith$elm_ui$Internal$Model$SpacingStyle = F3( function (a, b, c) { return {$: 'SpacingStyle', a: a, b: b, c: c}; }); var $mdgriffith$elm_ui$Internal$Flag$spacing = $mdgriffith$elm_ui$Internal$Flag$flag(3); var $mdgriffith$elm_ui$Internal$Model$spacingName = F2( function (x, y) { return 'spacing-' + ($elm$core$String$fromInt(x) + ('-' + $elm$core$String$fromInt(y))); }); var $mdgriffith$elm_ui$Element$spacing = function (x) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$spacing, A3( $mdgriffith$elm_ui$Internal$Model$SpacingStyle, A2($mdgriffith$elm_ui$Internal$Model$spacingName, x, x), x, x)); }; var $mdgriffith$elm_ui$Element$Input$white = A3($mdgriffith$elm_ui$Element$rgb, 1, 1, 1); var $mdgriffith$elm_ui$Element$Input$defaultTextBoxStyle = _List_fromArray( [ $mdgriffith$elm_ui$Element$Input$defaultTextPadding, $mdgriffith$elm_ui$Element$Border$rounded(3), $mdgriffith$elm_ui$Element$Border$color($mdgriffith$elm_ui$Element$Input$darkGrey), $mdgriffith$elm_ui$Element$Background$color($mdgriffith$elm_ui$Element$Input$white), $mdgriffith$elm_ui$Element$Border$width(1), $mdgriffith$elm_ui$Element$spacing(5), $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink) ]); var $mdgriffith$elm_ui$Element$Input$getHeight = function (attr) { if (attr.$ === 'Height') { var h = attr.a; return $elm$core$Maybe$Just(h); } else { return $elm$core$Maybe$Nothing; } }; var $elm$core$List$head = function (list) { if (list.b) { var x = list.a; var xs = list.b; return $elm$core$Maybe$Just(x); } else { return $elm$core$Maybe$Nothing; } }; var $mdgriffith$elm_ui$Element$Input$hiddenLabelAttribute = function (label) { if (label.$ === 'HiddenLabel') { var textLabel = label.a; return $mdgriffith$elm_ui$Internal$Model$Describe( $mdgriffith$elm_ui$Internal$Model$Label(textLabel)); } else { return $mdgriffith$elm_ui$Internal$Model$NoAttribute; } }; var $mdgriffith$elm_ui$Internal$Model$InFront = {$: 'InFront'}; var $mdgriffith$elm_ui$Element$inFront = function (element) { return A2($mdgriffith$elm_ui$Element$createNearby, $mdgriffith$elm_ui$Internal$Model$InFront, element); }; var $mdgriffith$elm_ui$Element$Input$isConstrained = function (len) { isConstrained: while (true) { switch (len.$) { case 'Content': return false; case 'Px': return true; case 'Fill': return true; case 'Min': var l = len.b; var $temp$len = l; len = $temp$len; continue isConstrained; default: var l = len.b; return true; } } }; var $mdgriffith$elm_ui$Element$Input$isHiddenLabel = function (label) { if (label.$ === 'HiddenLabel') { return true; } else { return false; } }; var $mdgriffith$elm_ui$Element$Input$isStacked = function (label) { if (label.$ === 'Label') { var loc = label.a; switch (loc.$) { case 'OnRight': return false; case 'OnLeft': return false; case 'Above': return true; default: return true; } } else { return true; } }; var $mdgriffith$elm_ui$Element$Input$negateBox = function (box) { return {bottom: -box.bottom, left: -box.left, right: -box.right, top: -box.top}; }; var $elm$html$Html$Events$alwaysStop = function (x) { return _Utils_Tuple2(x, true); }; var $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) { return {$: 'MayStopPropagation', a: a}; }; var $elm$html$Html$Events$stopPropagationOn = F2( function (event, decoder) { return A2( $elm$virtual_dom$VirtualDom$on, event, $elm$virtual_dom$VirtualDom$MayStopPropagation(decoder)); }); var $elm$json$Json$Decode$at = F2( function (fields, decoder) { return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); }); var $elm$html$Html$Events$targetValue = A2( $elm$json$Json$Decode$at, _List_fromArray( ['target', 'value']), $elm$json$Json$Decode$string); var $elm$html$Html$Events$onInput = function (tagger) { return A2( $elm$html$Html$Events$stopPropagationOn, 'input', A2( $elm$json$Json$Decode$map, $elm$html$Html$Events$alwaysStop, A2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue))); }; var $mdgriffith$elm_ui$Internal$Model$paddingName = F4( function (top, right, bottom, left) { return 'pad-' + ($elm$core$String$fromInt(top) + ('-' + ($elm$core$String$fromInt(right) + ('-' + ($elm$core$String$fromInt(bottom) + ('-' + $elm$core$String$fromInt(left))))))); }); var $mdgriffith$elm_ui$Element$paddingEach = function (_v0) { var top = _v0.top; var right = _v0.right; var bottom = _v0.bottom; var left = _v0.left; if (_Utils_eq(top, right) && (_Utils_eq(top, bottom) && _Utils_eq(top, left))) { var topFloat = top; return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, 'p-' + $elm$core$String$fromInt(top), topFloat, topFloat, topFloat, topFloat)); } else { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, A4($mdgriffith$elm_ui$Internal$Model$paddingName, top, right, bottom, left), top, right, bottom, left)); } }; var $mdgriffith$elm_ui$Element$Input$isFill = function (len) { isFill: while (true) { switch (len.$) { case 'Fill': return true; case 'Content': return false; case 'Px': return false; case 'Min': var l = len.b; var $temp$len = l; len = $temp$len; continue isFill; default: var l = len.b; var $temp$len = l; len = $temp$len; continue isFill; } } }; var $mdgriffith$elm_ui$Element$Input$isPixel = function (len) { isPixel: while (true) { switch (len.$) { case 'Content': return false; case 'Px': return true; case 'Fill': return false; case 'Min': var l = len.b; var $temp$len = l; len = $temp$len; continue isPixel; default: var l = len.b; var $temp$len = l; len = $temp$len; continue isPixel; } } }; var $mdgriffith$elm_ui$Internal$Model$paddingNameFloat = F4( function (top, right, bottom, left) { return 'pad-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(top) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(right) + ('-' + ($mdgriffith$elm_ui$Internal$Model$floatClass(bottom) + ('-' + $mdgriffith$elm_ui$Internal$Model$floatClass(left))))))); }); var $mdgriffith$elm_ui$Element$Input$redistributeOver = F4( function (isMultiline, stacked, attr, els) { switch (attr.$) { case 'Nearby': return _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) }); case 'Width': var width = attr.a; return $mdgriffith$elm_ui$Element$Input$isFill(width) ? _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent), input: A2($elm$core$List$cons, attr, els.input), parent: A2($elm$core$List$cons, attr, els.parent) }) : (stacked ? _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent) }) : _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) })); case 'Height': var height = attr.a; return (!stacked) ? _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent), parent: A2($elm$core$List$cons, attr, els.parent) }) : ($mdgriffith$elm_ui$Element$Input$isFill(height) ? _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent), parent: A2($elm$core$List$cons, attr, els.parent) }) : ($mdgriffith$elm_ui$Element$Input$isPixel(height) ? _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) }) : _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) }))); case 'AlignX': return _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent) }); case 'AlignY': return _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent) }); case 'StyleClass': switch (attr.b.$) { case 'SpacingStyle': var _v1 = attr.b; return _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent), input: A2($elm$core$List$cons, attr, els.input), parent: A2($elm$core$List$cons, attr, els.parent), wrapper: A2($elm$core$List$cons, attr, els.wrapper) }); case 'PaddingStyle': var cls = attr.a; var _v2 = attr.b; var pad = _v2.a; var t = _v2.b; var r = _v2.c; var b = _v2.d; var l = _v2.e; if (isMultiline) { return _Utils_update( els, { cover: A2($elm$core$List$cons, attr, els.cover), parent: A2($elm$core$List$cons, attr, els.parent) }); } else { var newTop = t - A2($elm$core$Basics$min, t, b); var newLineHeight = $mdgriffith$elm_ui$Element$htmlAttribute( A2( $elm$html$Html$Attributes$style, 'line-height', 'calc(1.0em + ' + ($elm$core$String$fromFloat( 2 * A2($elm$core$Basics$min, t, b)) + 'px)'))); var newHeight = $mdgriffith$elm_ui$Element$htmlAttribute( A2( $elm$html$Html$Attributes$style, 'height', 'calc(1.0em + ' + ($elm$core$String$fromFloat( 2 * A2($elm$core$Basics$min, t, b)) + 'px)'))); var newBottom = b - A2($elm$core$Basics$min, t, b); var reducedVerticalPadding = A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$padding, A5( $mdgriffith$elm_ui$Internal$Model$PaddingStyle, A4($mdgriffith$elm_ui$Internal$Model$paddingNameFloat, newTop, r, newBottom, l), newTop, r, newBottom, l)); return _Utils_update( els, { cover: A2($elm$core$List$cons, attr, els.cover), input: A2( $elm$core$List$cons, newHeight, A2($elm$core$List$cons, newLineHeight, els.input)), parent: A2($elm$core$List$cons, reducedVerticalPadding, els.parent) }); } case 'BorderWidth': var _v3 = attr.b; return _Utils_update( els, { cover: A2($elm$core$List$cons, attr, els.cover), parent: A2($elm$core$List$cons, attr, els.parent) }); case 'Transform': return _Utils_update( els, { cover: A2($elm$core$List$cons, attr, els.cover), parent: A2($elm$core$List$cons, attr, els.parent) }); case 'FontSize': return _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent) }); case 'FontFamily': var _v4 = attr.b; return _Utils_update( els, { fullParent: A2($elm$core$List$cons, attr, els.fullParent) }); default: var flag = attr.a; var cls = attr.b; return _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) }); } case 'NoAttribute': return els; case 'Attr': var a = attr.a; return _Utils_update( els, { input: A2($elm$core$List$cons, attr, els.input) }); case 'Describe': return _Utils_update( els, { input: A2($elm$core$List$cons, attr, els.input) }); case 'Class': return _Utils_update( els, { parent: A2($elm$core$List$cons, attr, els.parent) }); default: return _Utils_update( els, { input: A2($elm$core$List$cons, attr, els.input) }); } }); var $mdgriffith$elm_ui$Element$Input$redistribute = F3( function (isMultiline, stacked, attrs) { return function (redist) { return { cover: $elm$core$List$reverse(redist.cover), fullParent: $elm$core$List$reverse(redist.fullParent), input: $elm$core$List$reverse(redist.input), parent: $elm$core$List$reverse(redist.parent), wrapper: $elm$core$List$reverse(redist.wrapper) }; }( A3( $elm$core$List$foldl, A2($mdgriffith$elm_ui$Element$Input$redistributeOver, isMultiline, stacked), {cover: _List_Nil, fullParent: _List_Nil, input: _List_Nil, parent: _List_Nil, wrapper: _List_Nil}, attrs)); }); var $mdgriffith$elm_ui$Element$Input$renderBox = function (_v0) { var top = _v0.top; var right = _v0.right; var bottom = _v0.bottom; var left = _v0.left; return $elm$core$String$fromInt(top) + ('px ' + ($elm$core$String$fromInt(right) + ('px ' + ($elm$core$String$fromInt(bottom) + ('px ' + ($elm$core$String$fromInt(left) + 'px')))))); }; var $mdgriffith$elm_ui$Internal$Model$Transparency = F2( function (a, b) { return {$: 'Transparency', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Flag$transparency = $mdgriffith$elm_ui$Internal$Flag$flag(0); var $mdgriffith$elm_ui$Element$alpha = function (o) { var transparency = function (x) { return 1 - x; }( A2( $elm$core$Basics$min, 1.0, A2($elm$core$Basics$max, 0.0, o))); return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$transparency, A2( $mdgriffith$elm_ui$Internal$Model$Transparency, 'transparency-' + $mdgriffith$elm_ui$Internal$Model$floatClass(transparency), transparency)); }; var $mdgriffith$elm_ui$Element$Input$charcoal = A3($mdgriffith$elm_ui$Element$rgb, 136 / 255, 138 / 255, 133 / 255); var $mdgriffith$elm_ui$Element$rgba = $mdgriffith$elm_ui$Internal$Model$Rgba; var $mdgriffith$elm_ui$Element$Input$renderPlaceholder = F3( function (_v0, forPlaceholder, on) { var placeholderAttrs = _v0.a; var placeholderEl = _v0.b; return A2( $mdgriffith$elm_ui$Element$el, _Utils_ap( forPlaceholder, _Utils_ap( _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$color($mdgriffith$elm_ui$Element$Input$charcoal), $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.noTextSelection + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.passPointerEvents)), $mdgriffith$elm_ui$Element$clip, $mdgriffith$elm_ui$Element$Border$color( A4($mdgriffith$elm_ui$Element$rgba, 0, 0, 0, 0)), $mdgriffith$elm_ui$Element$Background$color( A4($mdgriffith$elm_ui$Element$rgba, 0, 0, 0, 0)), $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$alpha( on ? 1 : 0) ]), placeholderAttrs)), placeholderEl); }); var $mdgriffith$elm_ui$Element$scrollbarY = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$overflow, $mdgriffith$elm_ui$Internal$Style$classes.scrollbarsY); var $elm$html$Html$span = _VirtualDom_node('span'); var $elm$html$Html$Attributes$spellcheck = $elm$html$Html$Attributes$boolProperty('spellcheck'); var $mdgriffith$elm_ui$Element$Input$spellcheck = A2($elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Attr, $elm$html$Html$Attributes$spellcheck); var $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type'); var $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value'); var $mdgriffith$elm_ui$Element$Input$value = A2($elm$core$Basics$composeL, $mdgriffith$elm_ui$Internal$Model$Attr, $elm$html$Html$Attributes$value); var $mdgriffith$elm_ui$Element$Input$textHelper = F3( function (textInput, attrs, textOptions) { var withDefaults = _Utils_ap($mdgriffith$elm_ui$Element$Input$defaultTextBoxStyle, attrs); var redistributed = A3( $mdgriffith$elm_ui$Element$Input$redistribute, _Utils_eq(textInput.type_, $mdgriffith$elm_ui$Element$Input$TextArea), $mdgriffith$elm_ui$Element$Input$isStacked(textOptions.label), withDefaults); var onlySpacing = function (attr) { if ((attr.$ === 'StyleClass') && (attr.b.$ === 'SpacingStyle')) { var _v9 = attr.b; return true; } else { return false; } }; var heightConstrained = function () { var _v7 = textInput.type_; if (_v7.$ === 'TextInputNode') { var inputType = _v7.a; return false; } else { return A2( $elm$core$Maybe$withDefault, false, A2( $elm$core$Maybe$map, $mdgriffith$elm_ui$Element$Input$isConstrained, $elm$core$List$head( $elm$core$List$reverse( A2($elm$core$List$filterMap, $mdgriffith$elm_ui$Element$Input$getHeight, withDefaults))))); } }(); var getPadding = function (attr) { if ((attr.$ === 'StyleClass') && (attr.b.$ === 'PaddingStyle')) { var cls = attr.a; var _v6 = attr.b; var pad = _v6.a; var t = _v6.b; var r = _v6.c; var b = _v6.d; var l = _v6.e; return $elm$core$Maybe$Just( { bottom: A2( $elm$core$Basics$max, 0, $elm$core$Basics$floor(b - 3)), left: A2( $elm$core$Basics$max, 0, $elm$core$Basics$floor(l - 3)), right: A2( $elm$core$Basics$max, 0, $elm$core$Basics$floor(r - 3)), top: A2( $elm$core$Basics$max, 0, $elm$core$Basics$floor(t - 3)) }); } else { return $elm$core$Maybe$Nothing; } }; var parentPadding = A2( $elm$core$Maybe$withDefault, {bottom: 0, left: 0, right: 0, top: 0}, $elm$core$List$head( $elm$core$List$reverse( A2($elm$core$List$filterMap, getPadding, withDefaults)))); var inputElement = A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, function () { var _v3 = textInput.type_; if (_v3.$ === 'TextInputNode') { var inputType = _v3.a; return $mdgriffith$elm_ui$Internal$Model$NodeName('input'); } else { return $mdgriffith$elm_ui$Internal$Model$NodeName('textarea'); } }(), _Utils_ap( function () { var _v4 = textInput.type_; if (_v4.$ === 'TextInputNode') { var inputType = _v4.a; return _List_fromArray( [ $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$type_(inputType)), $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputText) ]); } else { return _List_fromArray( [ $mdgriffith$elm_ui$Element$clip, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputMultiline), $mdgriffith$elm_ui$Element$Input$calcMoveToCompensateForPadding(withDefaults), $mdgriffith$elm_ui$Element$paddingEach(parentPadding), $mdgriffith$elm_ui$Internal$Model$Attr( A2( $elm$html$Html$Attributes$style, 'margin', $mdgriffith$elm_ui$Element$Input$renderBox( $mdgriffith$elm_ui$Element$Input$negateBox(parentPadding)))), $mdgriffith$elm_ui$Internal$Model$Attr( A2($elm$html$Html$Attributes$style, 'box-sizing', 'content-box')) ]); } }(), _Utils_ap( _List_fromArray( [ $mdgriffith$elm_ui$Element$Input$value(textOptions.text), $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Events$onInput(textOptions.onChange)), $mdgriffith$elm_ui$Element$Input$hiddenLabelAttribute(textOptions.label), $mdgriffith$elm_ui$Element$Input$spellcheck(textInput.spellchecked), A2( $elm$core$Maybe$withDefault, $mdgriffith$elm_ui$Internal$Model$NoAttribute, A2($elm$core$Maybe$map, $mdgriffith$elm_ui$Element$Input$autofill, textInput.autofill)) ]), redistributed.input)), $mdgriffith$elm_ui$Internal$Model$Unkeyed(_List_Nil)); var wrappedInput = function () { var _v0 = textInput.type_; if (_v0.$ === 'TextArea') { return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, _Utils_ap( (heightConstrained ? $elm$core$List$cons($mdgriffith$elm_ui$Element$scrollbarY) : $elm$core$Basics$identity)( _List_fromArray( [ $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), A2($elm$core$List$any, $mdgriffith$elm_ui$Element$Input$hasFocusStyle, withDefaults) ? $mdgriffith$elm_ui$Internal$Model$NoAttribute : $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.focusedWithin), $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineWrapper) ])), redistributed.parent), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [ A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asParagraph, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$fill), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$inFront(inputElement), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineParent), redistributed.wrapper)))), $mdgriffith$elm_ui$Internal$Model$Unkeyed( function () { if (textOptions.text === '') { var _v1 = textOptions.placeholder; if (_v1.$ === 'Nothing') { return _List_fromArray( [ $mdgriffith$elm_ui$Element$text('\u00A0') ]); } else { var place = _v1.a; return _List_fromArray( [ A3($mdgriffith$elm_ui$Element$Input$renderPlaceholder, place, _List_Nil, textOptions.text === '') ]); } } else { return _List_fromArray( [ $mdgriffith$elm_ui$Internal$Model$unstyled( A2( $elm$html$Html$span, _List_fromArray( [ $elm$html$Html$Attributes$class($mdgriffith$elm_ui$Internal$Style$classes.inputMultilineFiller) ]), _List_fromArray( [ $elm$html$Html$text(textOptions.text + '\u00A0') ]))) ]); } }())) ]))); } else { var inputType = _v0.a; return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), A2( $elm$core$List$cons, A2($elm$core$List$any, $mdgriffith$elm_ui$Element$Input$hasFocusStyle, withDefaults) ? $mdgriffith$elm_ui$Internal$Model$NoAttribute : $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.focusedWithin), $elm$core$List$concat( _List_fromArray( [ redistributed.parent, function () { var _v2 = textOptions.placeholder; if (_v2.$ === 'Nothing') { return _List_Nil; } else { var place = _v2.a; return _List_fromArray( [ $mdgriffith$elm_ui$Element$behindContent( A3($mdgriffith$elm_ui$Element$Input$renderPlaceholder, place, redistributed.cover, textOptions.text === '')) ]); } }() ])))), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [inputElement]))); } }(); return A3( $mdgriffith$elm_ui$Element$Input$applyLabel, A2( $elm$core$List$cons, A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$cursor, $mdgriffith$elm_ui$Internal$Style$classes.cursorText), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$Input$isHiddenLabel(textOptions.label) ? $mdgriffith$elm_ui$Internal$Model$NoAttribute : $mdgriffith$elm_ui$Element$spacing(5), A2($elm$core$List$cons, $mdgriffith$elm_ui$Element$Region$announce, redistributed.fullParent))), textOptions.label, wrappedInput); }); var $mdgriffith$elm_ui$Element$Input$text = $mdgriffith$elm_ui$Element$Input$textHelper( { autofill: $elm$core$Maybe$Nothing, spellchecked: false, type_: $mdgriffith$elm_ui$Element$Input$TextInputNode('text') }); var $author$project$Views$entered = F5( function (colors, changedMsg, enterMsg, shuffleMsg, chars) { return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $author$project$Views$onKeyStroke( $elm$core$Dict$fromList( _List_fromArray( [ _Utils_Tuple2('Enter', enterMsg), _Utils_Tuple2(' ', shuffleMsg) ]))) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$Input$text, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$center, $mdgriffith$elm_ui$Element$Background$color(colors.background), $mdgriffith$elm_ui$Element$htmlAttribute( $elm$html$Html$Attributes$id('input')) ]), { label: $mdgriffith$elm_ui$Element$Input$labelHidden('Word'), onChange: A2( $elm$core$Basics$composeL, changedMsg, $elm$core$String$filter( $elm$core$Basics$neq( _Utils_chr(' ')))), placeholder: $elm$core$Maybe$Nothing, text: $elm$core$String$fromList(chars) }) ])); }); var $author$project$Views$Friend = F4( function (a, b, c, d) { return {$: 'Friend', a: a, b: b, c: c, d: d}; }); var $author$project$Views$Group = function (a) { return {$: 'Group', a: a}; }; var $author$project$Views$Player = F2( function (a, b) { return {$: 'Player', a: a, b: b}; }); var $author$project$Views$friendScoreSize = 12; var $mdgriffith$elm_ui$Element$Font$italic = $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.italic); var $mdgriffith$elm_ui$Internal$Model$Empty = {$: 'Empty'}; var $mdgriffith$elm_ui$Element$none = $mdgriffith$elm_ui$Internal$Model$Empty; var $elm$core$List$intersperse = F2( function (sep, xs) { if (!xs.b) { return _List_Nil; } else { var hd = xs.a; var tl = xs.b; var step = F2( function (x, rest) { return A2( $elm$core$List$cons, sep, A2($elm$core$List$cons, x, rest)); }); var spersed = A3($elm$core$List$foldr, step, _List_Nil, tl); return A2($elm$core$List$cons, hd, spersed); } }); var $author$project$Views$Thermo$Circle = {$: 'Circle'}; var $mdgriffith$elm_ui$Internal$Model$AlignY = function (a) { return {$: 'AlignY', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$CenterY = {$: 'CenterY'}; var $mdgriffith$elm_ui$Element$centerY = $mdgriffith$elm_ui$Internal$Model$AlignY($mdgriffith$elm_ui$Internal$Model$CenterY); var $author$project$Views$Thermo$renderBubble = function (bubble) { return A2( $mdgriffith$elm_ui$Element$el, A2( $elm$core$List$filterMap, $elm$core$Basics$identity, _List_fromArray( [ bubble.fill ? $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$Background$color(bubble.color)) : $elm$core$Maybe$Nothing, $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$Border$color(bubble.color)), $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$Border$width(2)), $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$Border$rounded( _Utils_eq(bubble.shape, $author$project$Views$Thermo$Circle) ? bubble.radius : 0)), $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$width( $mdgriffith$elm_ui$Element$px(2 * bubble.radius))), $elm$core$Maybe$Just( $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px(2 * bubble.radius))), $elm$core$Maybe$Just($mdgriffith$elm_ui$Element$centerY) ])), A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), $mdgriffith$elm_ui$Element$text( A2($elm$core$Maybe$withDefault, '', bubble.label)))); }; var $author$project$Views$Thermo$Bubble = F5( function (color, label, shape, radius, fill) { return {color: color, fill: fill, label: label, radius: radius, shape: shape}; }); var $author$project$Views$Thermo$Square = {$: 'Square'}; var $elm$core$Elm$JsArray$map = _JsArray_map; var $elm$core$Array$map = F2( function (func, _v0) { var len = _v0.a; var startShift = _v0.b; var tree = _v0.c; var tail = _v0.d; var helper = function (node) { if (node.$ === 'SubTree') { var subTree = node.a; return $elm$core$Array$SubTree( A2($elm$core$Elm$JsArray$map, helper, subTree)); } else { var values = node.a; return $elm$core$Array$Leaf( A2($elm$core$Elm$JsArray$map, func, values)); } }; return A4( $elm$core$Array$Array_elm_builtin, len, startShift, A2($elm$core$Elm$JsArray$map, helper, tree), A2($elm$core$Elm$JsArray$map, func, tail)); }); var $elm$core$Basics$truncate = _Basics_truncate; var $author$project$Views$Thermo$roundHalfEven = function (x) { var rounded = $elm$core$Basics$round(x); var isInt = function (y) { return _Utils_eq(y | 0, y); }; var isHalf = (!isInt(x)) && isInt(2 * x); var isEven = !A2($elm$core$Basics$modBy, 2, rounded); return (isHalf && (!isEven)) ? (rounded - 1) : rounded; }; var $author$project$Views$Thermo$scaleThreshold = F2( function (maxScore, ratio) { return $author$project$Views$Thermo$roundHalfEven(ratio * maxScore); }); var $elm$core$Elm$JsArray$appendN = _JsArray_appendN; var $elm$core$Elm$JsArray$slice = _JsArray_slice; var $elm$core$Array$appendHelpBuilder = F2( function (tail, builder) { var tailLen = $elm$core$Elm$JsArray$length(tail); var notAppended = ($elm$core$Array$branchFactor - $elm$core$Elm$JsArray$length(builder.tail)) - tailLen; var appended = A3($elm$core$Elm$JsArray$appendN, $elm$core$Array$branchFactor, builder.tail, tail); return (notAppended < 0) ? { nodeList: A2( $elm$core$List$cons, $elm$core$Array$Leaf(appended), builder.nodeList), nodeListSize: builder.nodeListSize + 1, tail: A3($elm$core$Elm$JsArray$slice, notAppended, tailLen, tail) } : ((!notAppended) ? { nodeList: A2( $elm$core$List$cons, $elm$core$Array$Leaf(appended), builder.nodeList), nodeListSize: builder.nodeListSize + 1, tail: $elm$core$Elm$JsArray$empty } : {nodeList: builder.nodeList, nodeListSize: builder.nodeListSize, tail: appended}); }); var $elm$core$List$drop = F2( function (n, list) { drop: while (true) { if (n <= 0) { return list; } else { if (!list.b) { return list; } else { var x = list.a; var xs = list.b; var $temp$n = n - 1, $temp$list = xs; n = $temp$n; list = $temp$list; continue drop; } } } }); var $elm$core$Array$sliceLeft = F2( function (from, array) { var len = array.a; var tree = array.c; var tail = array.d; if (!from) { return array; } else { if (_Utils_cmp( from, $elm$core$Array$tailIndex(len)) > -1) { return A4( $elm$core$Array$Array_elm_builtin, len - from, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, A3( $elm$core$Elm$JsArray$slice, from - $elm$core$Array$tailIndex(len), $elm$core$Elm$JsArray$length(tail), tail)); } else { var skipNodes = (from / $elm$core$Array$branchFactor) | 0; var helper = F2( function (node, acc) { if (node.$ === 'SubTree') { var subTree = node.a; return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); } else { var leaf = node.a; return A2($elm$core$List$cons, leaf, acc); } }); var leafNodes = A3( $elm$core$Elm$JsArray$foldr, helper, _List_fromArray( [tail]), tree); var nodesToInsert = A2($elm$core$List$drop, skipNodes, leafNodes); if (!nodesToInsert.b) { return $elm$core$Array$empty; } else { var head = nodesToInsert.a; var rest = nodesToInsert.b; var firstSlice = from - (skipNodes * $elm$core$Array$branchFactor); var initialBuilder = { nodeList: _List_Nil, nodeListSize: 0, tail: A3( $elm$core$Elm$JsArray$slice, firstSlice, $elm$core$Elm$JsArray$length(head), head) }; return A2( $elm$core$Array$builderToArray, true, A3($elm$core$List$foldl, $elm$core$Array$appendHelpBuilder, initialBuilder, rest)); } } } }); var $elm$core$Array$fetchNewTail = F4( function (shift, end, treeEnd, tree) { fetchNewTail: while (true) { var pos = $elm$core$Array$bitMask & (treeEnd >>> shift); var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); if (_v0.$ === 'SubTree') { var sub = _v0.a; var $temp$shift = shift - $elm$core$Array$shiftStep, $temp$end = end, $temp$treeEnd = treeEnd, $temp$tree = sub; shift = $temp$shift; end = $temp$end; treeEnd = $temp$treeEnd; tree = $temp$tree; continue fetchNewTail; } else { var values = _v0.a; return A3($elm$core$Elm$JsArray$slice, 0, $elm$core$Array$bitMask & end, values); } } }); var $elm$core$Array$hoistTree = F3( function (oldShift, newShift, tree) { hoistTree: while (true) { if ((_Utils_cmp(oldShift, newShift) < 1) || (!$elm$core$Elm$JsArray$length(tree))) { return tree; } else { var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, 0, tree); if (_v0.$ === 'SubTree') { var sub = _v0.a; var $temp$oldShift = oldShift - $elm$core$Array$shiftStep, $temp$newShift = newShift, $temp$tree = sub; oldShift = $temp$oldShift; newShift = $temp$newShift; tree = $temp$tree; continue hoistTree; } else { return tree; } } } }); var $elm$core$Elm$JsArray$unsafeSet = _JsArray_unsafeSet; var $elm$core$Array$sliceTree = F3( function (shift, endIdx, tree) { var lastPos = $elm$core$Array$bitMask & (endIdx >>> shift); var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, lastPos, tree); if (_v0.$ === 'SubTree') { var sub = _v0.a; var newSub = A3($elm$core$Array$sliceTree, shift - $elm$core$Array$shiftStep, endIdx, sub); return (!$elm$core$Elm$JsArray$length(newSub)) ? A3($elm$core$Elm$JsArray$slice, 0, lastPos, tree) : A3( $elm$core$Elm$JsArray$unsafeSet, lastPos, $elm$core$Array$SubTree(newSub), A3($elm$core$Elm$JsArray$slice, 0, lastPos + 1, tree)); } else { return A3($elm$core$Elm$JsArray$slice, 0, lastPos, tree); } }); var $elm$core$Array$sliceRight = F2( function (end, array) { var len = array.a; var startShift = array.b; var tree = array.c; var tail = array.d; if (_Utils_eq(end, len)) { return array; } else { if (_Utils_cmp( end, $elm$core$Array$tailIndex(len)) > -1) { return A4( $elm$core$Array$Array_elm_builtin, end, startShift, tree, A3($elm$core$Elm$JsArray$slice, 0, $elm$core$Array$bitMask & end, tail)); } else { var endIdx = $elm$core$Array$tailIndex(end); var depth = $elm$core$Basics$floor( A2( $elm$core$Basics$logBase, $elm$core$Array$branchFactor, A2($elm$core$Basics$max, 1, endIdx - 1))); var newShift = A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep); return A4( $elm$core$Array$Array_elm_builtin, end, newShift, A3( $elm$core$Array$hoistTree, startShift, newShift, A3($elm$core$Array$sliceTree, startShift, endIdx, tree)), A4($elm$core$Array$fetchNewTail, startShift, end, endIdx, tree)); } } }); var $elm$core$Array$translateIndex = F2( function (index, _v0) { var len = _v0.a; var posIndex = (index < 0) ? (len + index) : index; return (posIndex < 0) ? 0 : ((_Utils_cmp(posIndex, len) > 0) ? len : posIndex); }); var $elm$core$Array$slice = F3( function (from, to, array) { var correctTo = A2($elm$core$Array$translateIndex, to, array); var correctFrom = A2($elm$core$Array$translateIndex, from, array); return (_Utils_cmp(correctFrom, correctTo) > 0) ? $elm$core$Array$empty : A2( $elm$core$Array$sliceLeft, correctFrom, A2($elm$core$Array$sliceRight, correctTo, array)); }); var $author$project$Views$Constants$ScoreLevel0 = {$: 'ScoreLevel0'}; var $author$project$Views$Constants$ScoreLevel1 = {$: 'ScoreLevel1'}; var $author$project$Views$Constants$ScoreLevel2 = {$: 'ScoreLevel2'}; var $author$project$Views$Constants$ScoreLevel3 = {$: 'ScoreLevel3'}; var $author$project$Views$Constants$ScoreLevel4 = {$: 'ScoreLevel4'}; var $author$project$Views$Constants$ScoreLevel5 = {$: 'ScoreLevel5'}; var $author$project$Views$Constants$ScoreLevel6 = {$: 'ScoreLevel6'}; var $author$project$Views$Constants$ScoreLevel7 = {$: 'ScoreLevel7'}; var $author$project$Views$Constants$ScoreLevel8 = {$: 'ScoreLevel8'}; var $author$project$Views$Constants$ScoreLevel9 = {$: 'ScoreLevel9'}; var $author$project$Views$Thermo$thresholds = $elm$core$Array$fromList( _List_fromArray( [ _Utils_Tuple2($author$project$Views$Constants$ScoreLevel0, 0.0), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel1, 0.02), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel2, 0.05), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel3, 0.08), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel4, 0.15), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel5, 0.25), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel6, 0.4), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel7, 0.5), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel8, 0.7), _Utils_Tuple2($author$project$Views$Constants$ScoreLevel9, 1.0) ])); var $author$project$Views$Thermo$scoreThresholds = function (maxScore) { return A2( $elm$core$Array$map, A2( $elm$core$Basics$composeL, $author$project$Views$Thermo$scaleThreshold(maxScore), $elm$core$Tuple$second), A3($elm$core$Array$slice, 0, -1, $author$project$Views$Thermo$thresholds)); }; var $author$project$Views$Thermo$scoreBubbles = F4( function (style, maxScore, score, hasBonus) { var squared = function (bubble) { return _Utils_update( bubble, {shape: $author$project$Views$Thermo$Square}); }; var smallGray = A5($author$project$Views$Thermo$Bubble, style.unfilled, $elm$core$Maybe$Nothing, $author$project$Views$Thermo$Circle, style.smallRadius, true); var smallBlue = A5($author$project$Views$Thermo$Bubble, style.filled, $elm$core$Maybe$Nothing, $author$project$Views$Thermo$Circle, style.smallRadius, true); var scoreLabel = style.showScore ? $elm$core$Maybe$Just( $elm$core$String$fromInt(score)) : $elm$core$Maybe$Nothing; var maxed = function (bubble) { return _Utils_update( bubble, {color: style.maxed}); }; var bigGray = function (t) { return style.showNext ? A5( $author$project$Views$Thermo$Bubble, style.unfilled, $elm$core$Maybe$Just( '+' + $elm$core$String$fromInt(t - score)), $author$project$Views$Thermo$Circle, style.bigRadius, false) : smallGray; }; var bigBlue = A5($author$project$Views$Thermo$Bubble, style.filled, scoreLabel, $author$project$Views$Thermo$Circle, style.bigRadius, hasBonus); var after = function (ths) { if (!ths.b) { return _List_Nil; } else { if (!ths.b.b) { return _List_fromArray( [ squared(smallGray) ]); } else { var more = ths.b; return A2( $elm$core$List$cons, smallGray, after(more)); } } }; var start = function (ths) { if (!ths.b) { return _List_Nil; } else { if (!ths.b.b) { return _List_fromArray( [ (_Utils_eq(score, maxScore) ? maxed : $elm$core$Basics$identity)( squared(bigBlue)) ]); } else { var t1 = ths.a; var _v2 = ths.b; var t2 = _v2.a; var more = _v2.b; return (!score) ? A2( $elm$core$List$cons, bigBlue, A2( $elm$core$List$cons, bigGray(t2), after(more))) : ((_Utils_cmp(score, t2) > -1) ? A2( $elm$core$List$cons, smallBlue, start( A2($elm$core$List$cons, t2, more))) : ((_Utils_cmp(score, t1) > -1) ? A2( $elm$core$List$cons, bigBlue, A2( $elm$core$List$cons, $elm$core$List$isEmpty(more) ? squared( bigGray(t2)) : bigGray(t2), after(more))) : _List_Nil)); } } }; return start( $elm$core$Array$toList( $author$project$Views$Thermo$scoreThresholds(maxScore))); }); var $mdgriffith$elm_ui$Internal$Model$FontSize = function (a) { return {$: 'FontSize', a: a}; }; var $mdgriffith$elm_ui$Internal$Flag$fontSize = $mdgriffith$elm_ui$Internal$Flag$flag(4); var $mdgriffith$elm_ui$Element$Font$size = function (i) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontSize, $mdgriffith$elm_ui$Internal$Model$FontSize(i)); }; var $author$project$Views$Thermo$scoreThermo = F4( function (style, maxScore, score, hasBonus) { var connector = A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ A2($mdgriffith$elm_ui$Element$paddingXY, style.connectorWidth, 1), $mdgriffith$elm_ui$Element$Background$color(style.unfilled) ]), $mdgriffith$elm_ui$Element$none); return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$size(style.labelSize) ]), A2( $elm$core$List$intersperse, connector, A2( $elm$core$List$map, $author$project$Views$Thermo$renderBubble, A4($author$project$Views$Thermo$scoreBubbles, style, maxScore, score, hasBonus)))); }); var $mdgriffith$elm_ui$Element$Font$semiBold = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$fontWeight, $mdgriffith$elm_ui$Internal$Style$classes.textSemiBold); var $author$project$Views$mainThermoStyle = function (colors) { return {bigRadius: 10, connectorWidth: 5, filled: colors.primaryTint, labelSize: 9, maxed: colors.queen, showNext: true, showScore: true, smallRadius: 4, unfilled: colors.secondaryTint}; }; var $author$project$Views$smallThermoStyle = F2( function (colors, foreground) { var base = $author$project$Views$mainThermoStyle(colors); return _Utils_update( base, {bigRadius: 6, connectorWidth: 2, filled: foreground, showNext: false, showScore: false, smallRadius: 2}); }); var $mdgriffith$elm_ui$Element$InternalColumn = function (a) { return {$: 'InternalColumn', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$GridPosition = function (a) { return {$: 'GridPosition', a: a}; }; var $mdgriffith$elm_ui$Internal$Model$GridTemplateStyle = function (a) { return {$: 'GridTemplateStyle', a: a}; }; var $elm$core$List$all = F2( function (isOkay, list) { return !A2( $elm$core$List$any, A2($elm$core$Basics$composeL, $elm$core$Basics$not, isOkay), list); }); var $mdgriffith$elm_ui$Internal$Model$AsGrid = {$: 'AsGrid'}; var $mdgriffith$elm_ui$Internal$Model$asGrid = $mdgriffith$elm_ui$Internal$Model$AsGrid; var $mdgriffith$elm_ui$Internal$Model$getSpacing = F2( function (attrs, _default) { return A2( $elm$core$Maybe$withDefault, _default, A3( $elm$core$List$foldr, F2( function (attr, acc) { if (acc.$ === 'Just') { var x = acc.a; return $elm$core$Maybe$Just(x); } else { if ((attr.$ === 'StyleClass') && (attr.b.$ === 'SpacingStyle')) { var _v2 = attr.b; var x = _v2.b; var y = _v2.c; return $elm$core$Maybe$Just( _Utils_Tuple2(x, y)); } else { return $elm$core$Maybe$Nothing; } } }), $elm$core$Maybe$Nothing, attrs)); }); var $mdgriffith$elm_ui$Internal$Flag$gridPosition = $mdgriffith$elm_ui$Internal$Flag$flag(35); var $mdgriffith$elm_ui$Internal$Flag$gridTemplate = $mdgriffith$elm_ui$Internal$Flag$flag(34); var $mdgriffith$elm_ui$Element$tableHelper = F2( function (attrs, config) { var onGrid = F3( function (rowLevel, columnLevel, elem) { return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$gridPosition, $mdgriffith$elm_ui$Internal$Model$GridPosition( {col: columnLevel, height: 1, row: rowLevel, width: 1})) ]), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [elem]))); }); var columnWidth = function (col) { if (col.$ === 'InternalIndexedColumn') { var colConfig = col.a; return colConfig.width; } else { var colConfig = col.a; return colConfig.width; } }; var columnHeader = function (col) { if (col.$ === 'InternalIndexedColumn') { var colConfig = col.a; return colConfig.header; } else { var colConfig = col.a; return colConfig.header; } }; var maybeHeaders = function (headers) { return A2( $elm$core$List$all, $elm$core$Basics$eq($mdgriffith$elm_ui$Internal$Model$Empty), headers) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( A2( $elm$core$List$indexedMap, F2( function (col, header) { return A3(onGrid, 1, col + 1, header); }), headers)); }( A2($elm$core$List$map, columnHeader, config.columns)); var add = F3( function (cell, columnConfig, cursor) { if (columnConfig.$ === 'InternalIndexedColumn') { var col = columnConfig.a; return _Utils_update( cursor, { column: cursor.column + 1, elements: A2( $elm$core$List$cons, A3( onGrid, cursor.row, cursor.column, A2( col.view, _Utils_eq(maybeHeaders, $elm$core$Maybe$Nothing) ? (cursor.row - 1) : (cursor.row - 2), cell)), cursor.elements) }); } else { var col = columnConfig.a; return { column: cursor.column + 1, elements: A2( $elm$core$List$cons, A3( onGrid, cursor.row, cursor.column, col.view(cell)), cursor.elements), row: cursor.row }; } }); var build = F3( function (columns, rowData, cursor) { var newCursor = A3( $elm$core$List$foldl, add(rowData), cursor, columns); return {column: 1, elements: newCursor.elements, row: cursor.row + 1}; }); var children = A3( $elm$core$List$foldl, build(config.columns), { column: 1, elements: _List_Nil, row: _Utils_eq(maybeHeaders, $elm$core$Maybe$Nothing) ? 1 : 2 }, config.data); var _v0 = A2( $mdgriffith$elm_ui$Internal$Model$getSpacing, attrs, _Utils_Tuple2(0, 0)); var sX = _v0.a; var sY = _v0.b; var template = A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$gridTemplate, $mdgriffith$elm_ui$Internal$Model$GridTemplateStyle( { columns: A2($elm$core$List$map, columnWidth, config.columns), rows: A2( $elm$core$List$repeat, $elm$core$List$length(config.data), $mdgriffith$elm_ui$Internal$Model$Content), spacing: _Utils_Tuple2( $mdgriffith$elm_ui$Element$px(sX), $mdgriffith$elm_ui$Element$px(sY)) })); return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asGrid, $mdgriffith$elm_ui$Internal$Model$div, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), A2($elm$core$List$cons, template, attrs)), $mdgriffith$elm_ui$Internal$Model$Unkeyed( function () { if (maybeHeaders.$ === 'Nothing') { return children.elements; } else { var renderedHeaders = maybeHeaders.a; return _Utils_ap( renderedHeaders, $elm$core$List$reverse(children.elements)); } }())); }); var $mdgriffith$elm_ui$Element$table = F2( function (attrs, config) { return A2( $mdgriffith$elm_ui$Element$tableHelper, attrs, { columns: A2($elm$core$List$map, $mdgriffith$elm_ui$Element$InternalColumn, config.columns), data: config.data }); }); var $author$project$Views$friendList = F8( function (colors, strings, user, friends, decorations, maxScore, groupScore, groupHasAllPangrams) { var userHasAllPangrams = function (u) { var _v12 = A2($elm$core$Dict$get, u, friends); if (_v12.$ === 'Just') { var info = _v12.a; return info.hasAllPangrams; } else { return false; } }; var toEntry = function (u) { if (_Utils_eq(u, user)) { return A2( $author$project$Views$Player, user, userHasAllPangrams(user)); } else { var _v10 = A2($elm$core$Dict$get, u, decorations); if (_v10.$ === 'Just') { var _v11 = _v10.a; var color = _v11.a; var extraScore = _v11.b; return A4( $author$project$Views$Friend, u, color, extraScore, userHasAllPangrams(u)); } else { return A4($author$project$Views$Friend, u, colors.inactiveForeground, 0, false); } } }; var spacerColumn = { header: $mdgriffith$elm_ui$Element$none, view: $elm$core$Basics$always($mdgriffith$elm_ui$Element$none), width: $mdgriffith$elm_ui$Element$fill }; var sortedFriends = A2( $elm$core$List$sortBy, function (_v9) { var info = _v9.b; return -info.score; }, $elm$core$Dict$toList(friends)); var playerFontStyles = function (entry) { switch (entry.$) { case 'Player': return _List_fromArray( [$mdgriffith$elm_ui$Element$Font$semiBold]); case 'Friend': return _List_Nil; default: return _List_fromArray( [$mdgriffith$elm_ui$Element$Font$semiBold, $mdgriffith$elm_ui$Element$Font$italic]); } }; var entries = _Utils_ap( A2( $elm$core$List$map, function (_v7) { var u = _v7.a; var ui = _v7.b; return _Utils_Tuple2( toEntry(u), ui.score); }, sortedFriends), ($elm$core$List$length(sortedFriends) > 1) ? _List_fromArray( [ _Utils_Tuple2( $author$project$Views$Group(groupHasAllPangrams), groupScore) ]) : _List_Nil); var centerTextCell = function (contents) { return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px( 2 * A2($author$project$Views$smallThermoStyle, colors, colors.primaryTint).bigRadius)) ]), _List_fromArray( [contents])); }; return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(10) ]), _List_fromArray( [ $mdgriffith$elm_ui$Element$text(strings.friendsLabel), A2( $mdgriffith$elm_ui$Element$table, _List_fromArray( [ $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$spacing(9), $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$Font$size(16) ]), { columns: _List_fromArray( [ spacerColumn, { header: $mdgriffith$elm_ui$Element$none, view: function (_v0) { var entry = _v0.a; return centerTextCell( function () { var name = function () { switch (entry.$) { case 'Player': var n = entry.a; return n; case 'Friend': var n = entry.a; return n; default: return strings.groupLabel; } }(); return A2( $mdgriffith$elm_ui$Element$el, playerFontStyles(entry), $mdgriffith$elm_ui$Element$text(name)); }()); }, width: $mdgriffith$elm_ui$Element$shrink }, { header: $mdgriffith$elm_ui$Element$none, view: function (_v2) { var entry = _v2.a; var score = _v2.b; switch (entry.$) { case 'Player': var hasAllPangrams = entry.b; return A4( $author$project$Views$Thermo$scoreThermo, A2($author$project$Views$smallThermoStyle, colors, colors.primaryTint), maxScore, score, hasAllPangrams); case 'Friend': var color = entry.b; var hasAllPangrams = entry.d; return (score > 0) ? A4( $author$project$Views$Thermo$scoreThermo, A2($author$project$Views$smallThermoStyle, colors, color), maxScore, score, hasAllPangrams) : $mdgriffith$elm_ui$Element$none; default: var hasAllPangrams = entry.a; return A4( $author$project$Views$Thermo$scoreThermo, A2($author$project$Views$smallThermoStyle, colors, colors.primaryTint), maxScore, score, hasAllPangrams); } }, width: $mdgriffith$elm_ui$Element$shrink }, { header: $mdgriffith$elm_ui$Element$none, view: function (_v4) { var entry = _v4.a; var score = _v4.b; return centerTextCell( A2( $mdgriffith$elm_ui$Element$el, _Utils_ap( playerFontStyles(entry), _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$size($author$project$Views$friendScoreSize) ])), $mdgriffith$elm_ui$Element$text( $elm$core$String$fromInt(score)))); }, width: $mdgriffith$elm_ui$Element$shrink }, { header: $mdgriffith$elm_ui$Element$none, view: function (_v5) { var entry = _v5.a; return centerTextCell( function () { switch (entry.$) { case 'Group': return A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$size($author$project$Views$friendScoreSize) ]), $mdgriffith$elm_ui$Element$text( '(max: ' + ($elm$core$String$fromInt(maxScore) + ')'))); case 'Player': return $mdgriffith$elm_ui$Element$none; default: var extraScore = entry.c; return (extraScore > 0) ? A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$size($author$project$Views$friendScoreSize) ]), $mdgriffith$elm_ui$Element$text( '(' + ($elm$core$String$fromInt(extraScore) + ')'))) : $mdgriffith$elm_ui$Element$none; } }()); }, width: $mdgriffith$elm_ui$Element$shrink }, spacerColumn ]), data: entries }) ])); }); var $elm$core$Dict$map = F2( function (func, dict) { if (dict.$ === 'RBEmpty_elm_builtin') { return $elm$core$Dict$RBEmpty_elm_builtin; } else { var color = dict.a; var key = dict.b; var value = dict.c; var left = dict.d; var right = dict.e; return A5( $elm$core$Dict$RBNode_elm_builtin, color, key, A2(func, key, value), A2($elm$core$Dict$map, func, left), A2($elm$core$Dict$map, func, right)); } }); var $author$project$Puzzle$GroupInfo = F2( function (score, hasAllPangrams) { return {hasAllPangrams: hasAllPangrams, score: score}; }); var $author$project$Puzzle$UserInfo = F3( function (score, hasPangram, hasAllPangrams) { return {hasAllPangrams: hasAllPangrams, hasPangram: hasPangram, score: score}; }); var $author$project$Views$assignColors = F2( function (colors, users) { var zipRolling = F2( function (xs, ys) { var loop = F2( function (zs, ts) { loop: while (true) { var _v0 = _Utils_Tuple2(zs, ts); if (!_v0.a.b) { return _List_Nil; } else { if (_v0.b.b) { var _v1 = _v0.a; var zh = _v1.a; var zt = _v1.b; var _v2 = _v0.b; var th = _v2.a; var tt = _v2.b; return A2( $elm$core$List$cons, _Utils_Tuple2(zh, th), A2(loop, zt, tt)); } else { var zzs = _v0.a; var $temp$zs = zzs, $temp$ts = ys; zs = $temp$zs; ts = $temp$ts; continue loop; } } } }); return A2(loop, xs, ys); }); return $elm$core$Dict$fromList( A2( $elm$core$List$indexedMap, F2( function (x, u) { return _Utils_Tuple2( u, colors.friends(x)); }), $elm$core$List$sort(users))); }); var $elm$core$Dict$foldl = F3( function (func, acc, dict) { foldl: while (true) { if (dict.$ === 'RBEmpty_elm_builtin') { return acc; } else { var key = dict.b; var value = dict.c; var left = dict.d; var right = dict.e; var $temp$func = func, $temp$acc = A3( func, key, value, A3($elm$core$Dict$foldl, func, acc, left)), $temp$dict = right; func = $temp$func; acc = $temp$acc; dict = $temp$dict; continue foldl; } } }); var $elm$core$Dict$filter = F2( function (isGood, dict) { return A3( $elm$core$Dict$foldl, F3( function (k, v, d) { return A2(isGood, k, v) ? A3($elm$core$Dict$insert, k, v, d) : d; }), $elm$core$Dict$empty, dict); }); var $author$project$Bee$localHasAllPangrams = function (data) { return _Utils_eq( data.hints.pangramCount, $elm$core$List$length( A2( $elm$core$List$filter, A2($elm$core$Basics$composeL, $author$project$Puzzle$isPangram, $elm$core$Tuple$first), data.found))); }; var $author$project$Bee$localHasPangram = function (data) { return A2( $elm$core$List$any, A2($elm$core$Basics$composeL, $author$project$Puzzle$isPangram, $elm$core$Tuple$first), data.found); }; var $author$project$Language$foundLabels = F3( function (oneWord, words, ofTotal) { return F2( function (found, totalMay) { var _v0 = _Utils_Tuple2(found, totalMay); if (_v0.b.$ === 'Nothing') { if (_v0.a === 1) { var _v1 = _v0.b; return oneWord; } else { var _v2 = _v0.b; return words( $elm$core$String$fromInt(found)); } } else { var total = _v0.b.a; return A2( ofTotal, $elm$core$String$fromInt(found), $elm$core$String$fromInt(total)); } }); }); var $author$project$Language$scoreLabels = F2( function (beginnerStr, strs) { var pairs = A3( $elm$core$List$map2, $elm$core$Tuple$pair, strs, _List_fromArray( [$author$project$Views$Constants$ScoreLevel1, $author$project$Views$Constants$ScoreLevel2, $author$project$Views$Constants$ScoreLevel3, $author$project$Views$Constants$ScoreLevel4, $author$project$Views$Constants$ScoreLevel5, $author$project$Views$Constants$ScoreLevel6, $author$project$Views$Constants$ScoreLevel7, $author$project$Views$Constants$ScoreLevel8, $author$project$Views$Constants$ScoreLevel9])); return function (level) { return A2( $elm$core$Maybe$withDefault, beginnerStr, $elm$core$List$head( A2( $elm$core$List$filterMap, function (_v0) { var s = _v0.a; var l = _v0.b; return _Utils_eq(l, level) ? $elm$core$Maybe$Just(s) : $elm$core$Maybe$Nothing; }, pairs))); }; }); var $author$project$Language$wrongLettersMessage = F3( function (oneLetter, letters, wrong) { var wrongStr = $elm$core$String$fromList( A2( $elm$core$List$intersperse, _Utils_chr(' '), $elm$core$Set$toList(wrong))); return ($elm$core$Set$size(wrong) === 1) ? oneLetter(wrongStr) : letters(wrongStr); }); var $author$project$Language$deStrings = { alreadyFoundMessage: 'schon gefunden', attributionLabel: 'für die ', colorModeDescription: 'Tag un Nacht', deleteDescription: '<>', editorLabel: function (ed) { return 'Puzzle von ' + ed; }, foundLabel: A3( $author$project$Language$foundLabels, '1 Word gefunden', function (m) { return m + ' Wörter gefunden'; }, F2( function (m, n) { return m + (' von ' + (n + ' Wörter gefunden')); })), friendsLabel: 'Freunde', groupLabel: 'Gruppe', guestLabel: 'Gast', hereLabel: 'hier', icon: '🇩🇪', languageDescription: 'Sprache', loadingLabel: 'lädt…', missingCenterLetterMessage: 'fehlender Mittelbuchstabe ', nextPuzzleDescription: 'Nächste Puzzle', notInWordListMessage: 'nicht in der Wortliste', nytLabel: 'New York Times', previousPuzzleDescription: '<>', scoreLabel: A2( $author$project$Language$scoreLabels, 'Anfänger', _List_fromArray( ['Guter Anfang', 'Aufsteigend', 'Gut', 'Solid', 'Nett', 'Großartig', 'Erstaunlich', 'Genie', 'Bienenkönigin'])), shuffleDescription: '<>', sortDescription: '<>', sortLabel: function (order) { switch (order.$) { case 'Found': return 'g↑'; case 'Alpha': return 'a↑'; default: return 'l↑'; } }, sourceLabel: 'Quelle und Dokumente ', submitDescription: '<>', titleLabel: 'Spelling Bee', tooShortMessage: 'zu kurz', wrongLettersMessage: A2( $author$project$Language$wrongLettersMessage, function (ls) { return 'falscher Buchstabe: ' + ls; }, function (ls) { return 'falsche Buchstaben: ' + ls; }) }; var $author$project$Language$enStrings = { alreadyFoundMessage: 'Already Found', attributionLabel: 'for the ', colorModeDescription: 'Color Mode', deleteDescription: 'Delete', editorLabel: function (ed) { return 'Puzzle by ' + ed; }, foundLabel: A3( $author$project$Language$foundLabels, 'Found 1 word', function (m) { return 'Found ' + (m + ' words'); }, F2( function (m, n) { return 'Found ' + (m + (' of ' + (n + ' words'))); })), friendsLabel: 'Friends', groupLabel: 'Group', guestLabel: 'Guest', hereLabel: 'here', icon: '🇺🇸', languageDescription: 'Language', loadingLabel: 'loading…', missingCenterLetterMessage: 'Missing center letter', nextPuzzleDescription: 'Next Puzzle', notInWordListMessage: 'Not in word list', nytLabel: 'New York Times', previousPuzzleDescription: 'Previous Puzzle', scoreLabel: A2( $author$project$Language$scoreLabels, 'Beginner', _List_fromArray( ['Good Start', 'Moving Up', 'Good', 'Solid', 'Nice', 'Great', 'Amazing', 'Genius', 'Queen Bee'])), shuffleDescription: 'Shuffle', sortDescription: 'Sort Order', sortLabel: function (order) { switch (order.$) { case 'Found': return 'f↑'; case 'Alpha': return 'a↑'; default: return 'l↑'; } }, sourceLabel: 'Source and docs ', submitDescription: 'Submit', titleLabel: 'Spelling Bee', tooShortMessage: 'Too short', wrongLettersMessage: A2( $author$project$Language$wrongLettersMessage, function (ls) { return 'Wrong letter: ' + ls; }, function (ls) { return 'Wrong letters: ' + ls; }) }; var $author$project$Language$esStrings = { alreadyFoundMessage: 'Ya encontrado', attributionLabel: 'para el ', colorModeDescription: 'Modo color', deleteDescription: 'Borra', editorLabel: function (ed) { return 'Puzzle de ' + ed; }, foundLabel: A3( $author$project$Language$foundLabels, 'Encontraste 1 palabra', function (m) { return 'Encontraste ' + (m + ' palabras'); }, F2( function (m, n) { return 'Encontraste ' + (m + (' de ' + (n + ' palabras'))); })), friendsLabel: 'Amigos', groupLabel: 'Grupo', guestLabel: 'Visitante', hereLabel: 'aqui', icon: '🇲🇽', languageDescription: 'Idioma', loadingLabel: 'descargando…', missingCenterLetterMessage: 'No hay letra central', nextPuzzleDescription: 'Rompecabezas siguiente', notInWordListMessage: 'No en la lista de palabras', nytLabel: 'New York Times', previousPuzzleDescription: 'Rompecabezas anterior', scoreLabel: A2( $author$project$Language$scoreLabels, 'Principiante', _List_fromArray( ['Buen Comienzo', 'Mejorando', 'Bien', 'Fuerte', 'Lindo', 'Excelente', 'Increíble', 'Genio', 'Abeja Reina'])), shuffleDescription: 'Baraja', sortDescription: 'Orden de Clasificación', sortLabel: function (order) { switch (order.$) { case 'Found': return 'e↑'; case 'Alpha': return 'a↑'; default: return 'l↑'; } }, sourceLabel: 'Código y docs ', submitDescription: 'Envía', titleLabel: 'Spelling Bee', tooShortMessage: 'Demasiado corto', wrongLettersMessage: A2( $author$project$Language$wrongLettersMessage, function (ls) { return 'Letra incorrecta: ' + ls; }, function (ls) { return 'Letras incorrectas: ' + ls; }) }; var $author$project$Language$stringsFor = function (language) { switch (language.$) { case 'EN': return $author$project$Language$enStrings; case 'DE': return $author$project$Language$deStrings; default: return $author$project$Language$esStrings; } }; var $author$project$Views$Constants$getRolling = F3( function (first, rest, index) { var arr = $elm$core$Array$fromList( A2($elm$core$List$cons, first, rest)); return A2( $elm$core$Maybe$withDefault, first, A2( $elm$core$Array$get, A2( $elm$core$Basics$modBy, $elm$core$Array$length(arr), index), arr)); }); var $mdgriffith$elm_ui$Element$rgb255 = F3( function (red, green, blue) { return A4($mdgriffith$elm_ui$Internal$Model$Rgba, red / 255, green / 255, blue / 255, 1); }); var $author$project$Views$Constants$dayColors = { activeHilite: A3($mdgriffith$elm_ui$Element$rgb255, 63, 191, 255), background: A3($mdgriffith$elm_ui$Element$rgb255, 255, 255, 255), dimForeground: A3($mdgriffith$elm_ui$Element$rgb255, 127, 127, 127), foreground: A3($mdgriffith$elm_ui$Element$rgb255, 0, 0, 0), friends: A2( $author$project$Views$Constants$getRolling, A3($mdgriffith$elm_ui$Element$rgb255, 191, 63, 255), _List_fromArray( [ A3($mdgriffith$elm_ui$Element$rgb255, 255, 63, 63), A3($mdgriffith$elm_ui$Element$rgb255, 255, 159, 63), A3($mdgriffith$elm_ui$Element$rgb255, 143, 191, 47) ])), inactiveForeground: A3($mdgriffith$elm_ui$Element$rgb255, 223, 223, 223), primaryTint: A3($mdgriffith$elm_ui$Element$rgb255, 63, 191, 255), queen: A3($mdgriffith$elm_ui$Element$rgb255, 255, 255, 63), secondaryTint: A3($mdgriffith$elm_ui$Element$rgb255, 223, 223, 223) }; var $author$project$Views$Constants$nightColors = { activeHilite: A3($mdgriffith$elm_ui$Element$rgb255, 47, 143, 191), background: A3($mdgriffith$elm_ui$Element$rgb255, 0, 0, 0), dimForeground: A3($mdgriffith$elm_ui$Element$rgb255, 175, 175, 175), foreground: A3($mdgriffith$elm_ui$Element$rgb255, 223, 223, 223), friends: A2( $author$project$Views$Constants$getRolling, A3($mdgriffith$elm_ui$Element$rgb255, 162, 54, 216), _List_fromArray( [ A3($mdgriffith$elm_ui$Element$rgb255, 216, 54, 54), A3($mdgriffith$elm_ui$Element$rgb255, 242, 151, 60), A3($mdgriffith$elm_ui$Element$rgb255, 114, 153, 38) ])), inactiveForeground: A3($mdgriffith$elm_ui$Element$rgb255, 127, 127, 127), primaryTint: A3($mdgriffith$elm_ui$Element$rgb255, 47, 143, 191), queen: A3($mdgriffith$elm_ui$Element$rgb255, 229, 191, 0), secondaryTint: A3($mdgriffith$elm_ui$Element$rgb255, 63, 63, 63) }; var $author$project$Views$Constants$themeColors = function (mode) { if (mode.$ === 'Day') { return $author$project$Views$Constants$dayColors; } else { return $author$project$Views$Constants$nightColors; } }; var $author$project$Bee$people = F3( function (language, colorMode, data) { var strings = $author$project$Language$stringsFor(language); var colors = $author$project$Views$Constants$themeColors(colorMode); var _v0 = function () { var _v1 = data.user; if (_v1.$ === 'Nothing') { var localScore = function () { var _v2 = data.puzzle.expiration; if (_v2.$ === 'Just') { return A3( $elm$core$List$foldl, A2( $elm$core$Basics$composeL, A2($elm$core$Basics$composeL, $elm$core$Basics$add, $author$project$Puzzle$wordScore), $elm$core$Tuple$first), 0, data.found); } else { return 0; } }(); return _Utils_Tuple3( strings.guestLabel, A3( $elm$core$Dict$insert, strings.guestLabel, A3( $author$project$Puzzle$UserInfo, localScore, $author$project$Bee$localHasPangram(data), $author$project$Bee$localHasAllPangrams(data)), data.friends), A2($author$project$Puzzle$GroupInfo, localScore, false)); } else { var name = _v1.a; return _Utils_Tuple3(name, data.friends, data.group); } }(); var user = _v0.a; var friends = _v0.b; var group = _v0.c; var friendsPlaying = A2( $elm$core$Dict$filter, F2( function (name, info) { return _Utils_eq(name, user) || (info.score > 0); }), friends); var friendColors = A2( $author$project$Views$assignColors, colors, A2( $elm$core$List$filter, $elm$core$Basics$neq(user), $elm$core$Dict$keys(friendsPlaying))); return {friendColors: friendColors, friends: friends, friendsPlaying: friendsPlaying, group: group, user: user}; }); var $author$project$Puzzle$unsharedScore = F2( function (user, resp) { var totalScore = A2( $elm$core$Maybe$withDefault, 0, A2( $elm$core$Maybe$map, function ($) { return $.score; }, A2($elm$core$Dict$get, user, resp.friends))); var sharedScore = A2($author$project$Puzzle$apparentScore, user, resp); return totalScore - sharedScore; }); var $author$project$Bee$friendsView = F3( function (language, colorMode, data) { var info = A3($author$project$Bee$people, language, colorMode, data); var friendToMeta = A2( $elm$core$Dict$map, F2( function (u, c) { return _Utils_Tuple2( c, A2($author$project$Puzzle$unsharedScore, u, data)); }), info.friendColors); return A8( $author$project$Views$friendList, $author$project$Views$Constants$themeColors(colorMode), $author$project$Language$stringsFor(language), info.user, info.friendsPlaying, friendToMeta, data.hints.maxScore, info.group.score, info.group.hasAllPangrams); }); var $mdgriffith$elm_ui$Element$Font$bold = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$fontWeight, $mdgriffith$elm_ui$Internal$Style$classes.bold); var $mdgriffith$elm_ui$Element$Font$medium = A2($mdgriffith$elm_ui$Internal$Model$Class, $mdgriffith$elm_ui$Internal$Flag$fontWeight, $mdgriffith$elm_ui$Internal$Style$classes.textMedium); var $author$project$Views$word = F2( function (colors, entry) { return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(5) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$el, _Utils_ap( $author$project$Puzzle$isPangram(entry.word) ? _List_fromArray( [$mdgriffith$elm_ui$Element$Font$medium]) : _List_Nil, entry.foundByUser ? _List_Nil : _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$color(colors.dimForeground), $mdgriffith$elm_ui$Element$Font$italic ])), $mdgriffith$elm_ui$Element$text(entry.word)), A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(2) ]), A2( $elm$core$List$map, function (_v0) { var str = _v0.a; var clr = _v0.b; return A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$color(clr), $mdgriffith$elm_ui$Element$Font$size(9), $mdgriffith$elm_ui$Element$Font$bold ]), $mdgriffith$elm_ui$Element$text(str)); }, entry.friendInitials)) ])); }); var $author$project$Views$hintFound = F2( function (colors, entry) { return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px(20)), $mdgriffith$elm_ui$Element$Font$size(16), $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$spacing(10) ]), _List_fromArray( [ A2($author$project$Views$word, colors, entry), $mdgriffith$elm_ui$Element$text( '+' + $elm$core$String$fromInt( $author$project$Puzzle$wordScore(entry.word))) ])); }); var $author$project$Views$hintNone = A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px(20)) ]), $mdgriffith$elm_ui$Element$none); var $author$project$Views$hintWarning = F2( function (colors, msg) { return A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$height( $mdgriffith$elm_ui$Element$px(20)), $mdgriffith$elm_ui$Element$Font$size(16), $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$color(colors.dimForeground) ]), $mdgriffith$elm_ui$Element$text(msg)); }); var $author$project$Views$Hive$hive = F6( function (handleClick, colors, center, letters, state, used) { return A6( $author$project$Views$Hive$hiveImpl, colors, center, letters, state, $elm$core$Maybe$Just(handleClick), used); }); var $elm$core$List$member = F2( function (x, xs) { return A2( $elm$core$List$any, function (a) { return _Utils_eq(a, x); }, xs); }); var $author$project$Bee$inputError = function (model) { var strings = $author$project$Language$stringsFor(model.language); var _v0 = model.data; if (_v0.$ === 'Nothing') { return $elm$core$Maybe$Nothing; } else { var data = _v0.a; if (!$elm$core$List$length(model.input)) { return $elm$core$Maybe$Just(''); } else { if (A2( $elm$core$List$any, A2( $elm$core$Basics$composeL, $elm$core$Basics$eq( $elm$core$String$fromList(model.input)), $elm$core$Tuple$first), data.found)) { return $elm$core$Maybe$Just(strings.alreadyFoundMessage); } else { var wrong = $elm$core$Set$fromList( A2( $elm$core$List$filter, function (c) { return (!_Utils_eq(c, data.puzzle.centerLetter)) && (!A2($elm$core$List$member, c, data.puzzle.outerLetters)); }, model.input)); return ($elm$core$Set$size(wrong) > 0) ? $elm$core$Maybe$Just( strings.wrongLettersMessage(wrong)) : (($elm$core$List$length(model.input) < 4) ? $elm$core$Maybe$Just(strings.tooShortMessage) : (A2( $elm$core$List$all, $elm$core$Basics$neq(data.puzzle.centerLetter), model.input) ? $elm$core$Maybe$Just(strings.missingCenterLetterMessage) : $elm$core$Maybe$Nothing)); } } } }; var $author$project$Language$DE = {$: 'DE'}; var $author$project$Language$EN = {$: 'EN'}; var $author$project$Language$ES = {$: 'ES'}; var $author$project$Language$rotate = function (language) { switch (language.$) { case 'EN': return $author$project$Language$DE; case 'DE': return $author$project$Language$ES; default: return $author$project$Language$EN; } }; var $author$project$Views$languageButton = F4( function (colors, strings, language, handle) { return A4( $author$project$Views$lightweightButton, colors, strings.icon, strings.languageDescription, $elm$core$Maybe$Just( handle( $author$project$Language$rotate(language)))); }); var $mdgriffith$elm_ui$Internal$Model$OnlyDynamic = F2( function (a, b) { return {$: 'OnlyDynamic', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$StaticRootAndDynamic = F2( function (a, b) { return {$: 'StaticRootAndDynamic', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Model$AllowHover = {$: 'AllowHover'}; var $mdgriffith$elm_ui$Internal$Model$Layout = {$: 'Layout'}; var $mdgriffith$elm_ui$Internal$Model$focusDefaultStyle = { backgroundColor: $elm$core$Maybe$Nothing, borderColor: $elm$core$Maybe$Nothing, shadow: $elm$core$Maybe$Just( { blur: 0, color: A4($mdgriffith$elm_ui$Internal$Model$Rgba, 155 / 255, 203 / 255, 1, 1), offset: _Utils_Tuple2(0, 0), size: 3 }) }; var $mdgriffith$elm_ui$Internal$Model$optionsToRecord = function (options) { var combine = F2( function (opt, record) { switch (opt.$) { case 'HoverOption': var hoverable = opt.a; var _v4 = record.hover; if (_v4.$ === 'Nothing') { return _Utils_update( record, { hover: $elm$core$Maybe$Just(hoverable) }); } else { return record; } case 'FocusStyleOption': var focusStyle = opt.a; var _v5 = record.focus; if (_v5.$ === 'Nothing') { return _Utils_update( record, { focus: $elm$core$Maybe$Just(focusStyle) }); } else { return record; } default: var renderMode = opt.a; var _v6 = record.mode; if (_v6.$ === 'Nothing') { return _Utils_update( record, { mode: $elm$core$Maybe$Just(renderMode) }); } else { return record; } } }); var andFinally = function (record) { return { focus: function () { var _v0 = record.focus; if (_v0.$ === 'Nothing') { return $mdgriffith$elm_ui$Internal$Model$focusDefaultStyle; } else { var focusable = _v0.a; return focusable; } }(), hover: function () { var _v1 = record.hover; if (_v1.$ === 'Nothing') { return $mdgriffith$elm_ui$Internal$Model$AllowHover; } else { var hoverable = _v1.a; return hoverable; } }(), mode: function () { var _v2 = record.mode; if (_v2.$ === 'Nothing') { return $mdgriffith$elm_ui$Internal$Model$Layout; } else { var actualMode = _v2.a; return actualMode; } }() }; }; return andFinally( A3( $elm$core$List$foldr, combine, {focus: $elm$core$Maybe$Nothing, hover: $elm$core$Maybe$Nothing, mode: $elm$core$Maybe$Nothing}, options)); }; var $mdgriffith$elm_ui$Internal$Model$toHtml = F2( function (mode, el) { switch (el.$) { case 'Unstyled': var html = el.a; return html($mdgriffith$elm_ui$Internal$Model$asEl); case 'Styled': var styles = el.a.styles; var html = el.a.html; return A2( html, mode(styles), $mdgriffith$elm_ui$Internal$Model$asEl); case 'Text': var text = el.a; return $mdgriffith$elm_ui$Internal$Model$textElement(text); default: return $mdgriffith$elm_ui$Internal$Model$textElement(''); } }); var $mdgriffith$elm_ui$Internal$Model$renderRoot = F3( function (optionList, attributes, child) { var options = $mdgriffith$elm_ui$Internal$Model$optionsToRecord(optionList); var embedStyle = function () { var _v0 = options.mode; if (_v0.$ === 'NoStaticStyleSheet') { return $mdgriffith$elm_ui$Internal$Model$OnlyDynamic(options); } else { return $mdgriffith$elm_ui$Internal$Model$StaticRootAndDynamic(options); } }(); return A2( $mdgriffith$elm_ui$Internal$Model$toHtml, embedStyle, A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$div, attributes, $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [child])))); }); var $mdgriffith$elm_ui$Internal$Model$rootStyle = function () { var families = _List_fromArray( [ $mdgriffith$elm_ui$Internal$Model$Typeface('Open Sans'), $mdgriffith$elm_ui$Internal$Model$Typeface('Helvetica'), $mdgriffith$elm_ui$Internal$Model$Typeface('Verdana'), $mdgriffith$elm_ui$Internal$Model$SansSerif ]); return _List_fromArray( [ A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$bgColor, A3( $mdgriffith$elm_ui$Internal$Model$Colored, 'bg-' + $mdgriffith$elm_ui$Internal$Model$formatColorClass( A4($mdgriffith$elm_ui$Internal$Model$Rgba, 1, 1, 1, 0)), 'background-color', A4($mdgriffith$elm_ui$Internal$Model$Rgba, 1, 1, 1, 0))), A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontColor, A3( $mdgriffith$elm_ui$Internal$Model$Colored, 'fc-' + $mdgriffith$elm_ui$Internal$Model$formatColorClass( A4($mdgriffith$elm_ui$Internal$Model$Rgba, 0, 0, 0, 1)), 'color', A4($mdgriffith$elm_ui$Internal$Model$Rgba, 0, 0, 0, 1))), A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontSize, $mdgriffith$elm_ui$Internal$Model$FontSize(20)), A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$fontFamily, A2( $mdgriffith$elm_ui$Internal$Model$FontFamily, A3($elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$renderFontClassName, 'font-', families), families)) ]); }(); var $mdgriffith$elm_ui$Element$layoutWith = F3( function (_v0, attrs, child) { var options = _v0.options; return A3( $mdgriffith$elm_ui$Internal$Model$renderRoot, options, A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass( A2( $elm$core$String$join, ' ', _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$classes.root, $mdgriffith$elm_ui$Internal$Style$classes.any, $mdgriffith$elm_ui$Internal$Style$classes.single]))), _Utils_ap($mdgriffith$elm_ui$Internal$Model$rootStyle, attrs)), child); }); var $mdgriffith$elm_ui$Element$layout = $mdgriffith$elm_ui$Element$layoutWith( {options: _List_Nil}); var $mdgriffith$elm_ui$Element$Lazy$embed = function (x) { switch (x.$) { case 'Unstyled': var html = x.a; return html; case 'Styled': var styled = x.a; return styled.html( A2( $mdgriffith$elm_ui$Internal$Model$OnlyDynamic, { focus: {backgroundColor: $elm$core$Maybe$Nothing, borderColor: $elm$core$Maybe$Nothing, shadow: $elm$core$Maybe$Nothing}, hover: $mdgriffith$elm_ui$Internal$Model$AllowHover, mode: $mdgriffith$elm_ui$Internal$Model$Layout }, styled.styles)); case 'Text': var text = x.a; return $elm$core$Basics$always( $elm$virtual_dom$VirtualDom$text(text)); default: return $elm$core$Basics$always( $elm$virtual_dom$VirtualDom$text('')); } }; var $mdgriffith$elm_ui$Element$Lazy$apply3 = F4( function (fn, a, b, c) { return $mdgriffith$elm_ui$Element$Lazy$embed( A3(fn, a, b, c)); }); var $elm$virtual_dom$VirtualDom$lazy5 = _VirtualDom_lazy5; var $mdgriffith$elm_ui$Element$Lazy$lazy3 = F4( function (fn, a, b, c) { return $mdgriffith$elm_ui$Internal$Model$Unstyled( A5($elm$virtual_dom$VirtualDom$lazy5, $mdgriffith$elm_ui$Element$Lazy$apply3, fn, a, b, c)); }); var $mdgriffith$elm_ui$Element$Lazy$apply4 = F5( function (fn, a, b, c, d) { return $mdgriffith$elm_ui$Element$Lazy$embed( A4(fn, a, b, c, d)); }); var $elm$virtual_dom$VirtualDom$lazy6 = _VirtualDom_lazy6; var $mdgriffith$elm_ui$Element$Lazy$lazy4 = F5( function (fn, a, b, c, d) { return $mdgriffith$elm_ui$Internal$Model$Unstyled( A6($elm$virtual_dom$VirtualDom$lazy6, $mdgriffith$elm_ui$Element$Lazy$apply4, fn, a, b, c, d)); }); var $mdgriffith$elm_ui$Internal$Model$Serif = {$: 'Serif'}; var $mdgriffith$elm_ui$Element$Font$serif = $mdgriffith$elm_ui$Internal$Model$Serif; var $author$project$Views$Constants$headerFont = $mdgriffith$elm_ui$Element$Font$family( _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$typeface('Times New Roman'), $mdgriffith$elm_ui$Element$Font$typeface('Times'), $mdgriffith$elm_ui$Element$Font$serif ])); var $author$project$Views$loadingHeader = F2( function (strings, msg) { return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $author$project$Views$Constants$headerFont, $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(5) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$bold, $mdgriffith$elm_ui$Element$Font$size(24) ]), $mdgriffith$elm_ui$Element$text(strings.titleLabel)), A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$size(16), $mdgriffith$elm_ui$Element$Font$italic ]), $mdgriffith$elm_ui$Element$text( A2($elm$core$Maybe$withDefault, strings.loadingLabel, msg))) ])); }); var $mdgriffith$elm_ui$Internal$Model$Top = {$: 'Top'}; var $mdgriffith$elm_ui$Element$alignTop = $mdgriffith$elm_ui$Internal$Model$AlignY($mdgriffith$elm_ui$Internal$Model$Top); var $author$project$Views$mainLayout = F7( function (header, game, words, friends, footer, desiredColumnWidth, actualViewport) { var padYIfMoreThan = function (ratio) { return A2( $mdgriffith$elm_ui$Element$paddingXY, 0, (_Utils_cmp(actualViewport.height, ratio * desiredColumnWidth) > 0) ? 15 : 3); }; return (_Utils_cmp(actualViewport.width, desiredColumnWidth * 2) < 0) ? A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ padYIfMoreThan(2.5), $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(15) ]), _List_fromArray( [header, game, words, friends, footer])) : ((_Utils_cmp(actualViewport.width, desiredColumnWidth * 3) < 0) ? A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ padYIfMoreThan(1.3), $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(30) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$alignTop, $mdgriffith$elm_ui$Element$spacing(15) ]), _List_fromArray( [header, words, friends, footer])), A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [$mdgriffith$elm_ui$Element$alignTop]), _List_fromArray( [game])) ])) : A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ A2($mdgriffith$elm_ui$Element$paddingXY, 15, 15), $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(30) ]), _List_fromArray( [ words, A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(25) ]), _List_fromArray( [header, game, footer])), friends ]))); }); var $elm$html$Html$Attributes$href = function (url) { return A2( $elm$html$Html$Attributes$stringProperty, 'href', _VirtualDom_noJavaScriptUri(url)); }; var $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel'); var $mdgriffith$elm_ui$Element$link = F2( function (attrs, _v0) { var url = _v0.url; var label = _v0.label; return A4( $mdgriffith$elm_ui$Internal$Model$element, $mdgriffith$elm_ui$Internal$Model$asEl, $mdgriffith$elm_ui$Internal$Model$NodeName('a'), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$href(url)), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Attr( $elm$html$Html$Attributes$rel('noopener noreferrer')), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$shrink), A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$htmlClass($mdgriffith$elm_ui$Internal$Style$classes.contentCenterX + (' ' + ($mdgriffith$elm_ui$Internal$Style$classes.contentCenterY + (' ' + $mdgriffith$elm_ui$Internal$Style$classes.link)))), attrs))))), $mdgriffith$elm_ui$Internal$Model$Unkeyed( _List_fromArray( [label]))); }); var $mdgriffith$elm_ui$Internal$Model$Hover = {$: 'Hover'}; var $mdgriffith$elm_ui$Internal$Model$PseudoSelector = F2( function (a, b) { return {$: 'PseudoSelector', a: a, b: b}; }); var $mdgriffith$elm_ui$Internal$Flag$hover = $mdgriffith$elm_ui$Internal$Flag$flag(33); var $elm$virtual_dom$VirtualDom$map = _VirtualDom_map; var $mdgriffith$elm_ui$Internal$Model$map = F2( function (fn, el) { switch (el.$) { case 'Styled': var styled = el.a; return $mdgriffith$elm_ui$Internal$Model$Styled( { html: F2( function (add, context) { return A2( $elm$virtual_dom$VirtualDom$map, fn, A2(styled.html, add, context)); }), styles: styled.styles }); case 'Unstyled': var html = el.a; return $mdgriffith$elm_ui$Internal$Model$Unstyled( A2( $elm$core$Basics$composeL, $elm$virtual_dom$VirtualDom$map(fn), html)); case 'Text': var str = el.a; return $mdgriffith$elm_ui$Internal$Model$Text(str); default: return $mdgriffith$elm_ui$Internal$Model$Empty; } }); var $elm$virtual_dom$VirtualDom$mapAttribute = _VirtualDom_mapAttribute; var $mdgriffith$elm_ui$Internal$Model$mapAttrFromStyle = F2( function (fn, attr) { switch (attr.$) { case 'NoAttribute': return $mdgriffith$elm_ui$Internal$Model$NoAttribute; case 'Describe': var description = attr.a; return $mdgriffith$elm_ui$Internal$Model$Describe(description); case 'AlignX': var x = attr.a; return $mdgriffith$elm_ui$Internal$Model$AlignX(x); case 'AlignY': var y = attr.a; return $mdgriffith$elm_ui$Internal$Model$AlignY(y); case 'Width': var x = attr.a; return $mdgriffith$elm_ui$Internal$Model$Width(x); case 'Height': var x = attr.a; return $mdgriffith$elm_ui$Internal$Model$Height(x); case 'Class': var x = attr.a; var y = attr.b; return A2($mdgriffith$elm_ui$Internal$Model$Class, x, y); case 'StyleClass': var flag = attr.a; var style = attr.b; return A2($mdgriffith$elm_ui$Internal$Model$StyleClass, flag, style); case 'Nearby': var location = attr.a; var elem = attr.b; return A2( $mdgriffith$elm_ui$Internal$Model$Nearby, location, A2($mdgriffith$elm_ui$Internal$Model$map, fn, elem)); case 'Attr': var htmlAttr = attr.a; return $mdgriffith$elm_ui$Internal$Model$Attr( A2($elm$virtual_dom$VirtualDom$mapAttribute, fn, htmlAttr)); default: var fl = attr.a; var trans = attr.b; return A2($mdgriffith$elm_ui$Internal$Model$TransformComponent, fl, trans); } }); var $elm$core$Basics$never = function (_v0) { never: while (true) { var nvr = _v0.a; var $temp$_v0 = nvr; _v0 = $temp$_v0; continue never; } }; var $mdgriffith$elm_ui$Internal$Model$removeNever = function (style) { return A2($mdgriffith$elm_ui$Internal$Model$mapAttrFromStyle, $elm$core$Basics$never, style); }; var $mdgriffith$elm_ui$Internal$Model$unwrapDecsHelper = F2( function (attr, _v0) { var styles = _v0.a; var trans = _v0.b; var _v1 = $mdgriffith$elm_ui$Internal$Model$removeNever(attr); switch (_v1.$) { case 'StyleClass': var style = _v1.b; return _Utils_Tuple2( A2($elm$core$List$cons, style, styles), trans); case 'TransformComponent': var flag = _v1.a; var component = _v1.b; return _Utils_Tuple2( styles, A2($mdgriffith$elm_ui$Internal$Model$composeTransformation, trans, component)); default: return _Utils_Tuple2(styles, trans); } }); var $mdgriffith$elm_ui$Internal$Model$unwrapDecorations = function (attrs) { var _v0 = A3( $elm$core$List$foldl, $mdgriffith$elm_ui$Internal$Model$unwrapDecsHelper, _Utils_Tuple2(_List_Nil, $mdgriffith$elm_ui$Internal$Model$Untransformed), attrs); var styles = _v0.a; var transform = _v0.b; return A2( $elm$core$List$cons, $mdgriffith$elm_ui$Internal$Model$Transform(transform), styles); }; var $mdgriffith$elm_ui$Element$mouseOver = function (decs) { return A2( $mdgriffith$elm_ui$Internal$Model$StyleClass, $mdgriffith$elm_ui$Internal$Flag$hover, A2( $mdgriffith$elm_ui$Internal$Model$PseudoSelector, $mdgriffith$elm_ui$Internal$Model$Hover, $mdgriffith$elm_ui$Internal$Model$unwrapDecorations(decs))); }; var $author$project$Views$puzzleFooter = F3( function (colors, strings, editor) { return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(5) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$el, _List_Nil, $mdgriffith$elm_ui$Element$text(' ')), A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$size(16) ]), $mdgriffith$elm_ui$Element$text( strings.editorLabel(editor))), A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$size(16) ]), _List_fromArray( [ $mdgriffith$elm_ui$Element$text(strings.attributionLabel), A2( $mdgriffith$elm_ui$Element$link, _List_Nil, { label: A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$italic, $mdgriffith$elm_ui$Element$mouseOver( _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$color(colors.activeHilite) ])) ]), $mdgriffith$elm_ui$Element$text(strings.nytLabel)), url: 'https://www.nytimes.com/puzzles/spelling-bee' }) ])), A2( $mdgriffith$elm_ui$Element$el, _List_Nil, $mdgriffith$elm_ui$Element$text(' ')), A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$Font$size(16) ]), _List_fromArray( [ $mdgriffith$elm_ui$Element$text(strings.sourceLabel), A2( $mdgriffith$elm_ui$Element$link, _List_Nil, { label: A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$italic, $mdgriffith$elm_ui$Element$mouseOver( _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$color(colors.activeHilite) ])) ]), $mdgriffith$elm_ui$Element$text(strings.hereLabel)), url: 'https://github.com/mossprescott/spelling-bee' }) ])) ])); }); var $author$project$Views$puzzleHeader = F5( function (colors, strings, date, previousMsg, nextMsg) { return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [$mdgriffith$elm_ui$Element$centerX]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(10), $mdgriffith$elm_ui$Element$Font$size(16) ]), _List_fromArray( [ A4($author$project$Views$lightweightButton, colors, '←', strings.previousPuzzleDescription, previousMsg), A4($author$project$Views$lightweightButton, colors, '→', strings.nextPuzzleDescription, nextMsg), A2( $mdgriffith$elm_ui$Element$el, _List_Nil, $mdgriffith$elm_ui$Element$text(date)) ])) ])); }); var $author$project$Views$Thermo$scoreRating = F2( function (maxScore, score) { return A2( $elm$core$Maybe$withDefault, $author$project$Views$Constants$ScoreLevel0, $elm$core$List$head( $elm$core$List$reverse( A2( $elm$core$List$filterMap, function (_v0) { var n = _v0.a; var t = _v0.b; return (_Utils_cmp( score, A2($author$project$Views$Thermo$scaleThreshold, maxScore, t)) > -1) ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing; }, $elm$core$Array$toList($author$project$Views$Thermo$thresholds))))); }); var $author$project$Views$scoreBanner = F5( function (colors, strings, maxScore, score, hasAllPangrams) { return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(3), $mdgriffith$elm_ui$Element$centerX ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$size(16), $mdgriffith$elm_ui$Element$centerX ]), $mdgriffith$elm_ui$Element$text( strings.scoreLabel( A2($author$project$Views$Thermo$scoreRating, maxScore, score)))), A4( $author$project$Views$Thermo$scoreThermo, $author$project$Views$mainThermoStyle(colors), maxScore, score, hasAllPangrams) ])); }); var $author$project$Bee$ResortWords = function (a) { return {$: 'ResortWords', a: a}; }; var $author$project$Views$Constants$Alpha = {$: 'Alpha'}; var $author$project$Views$Constants$Found = {$: 'Found'}; var $author$project$Views$Constants$Length = {$: 'Length'}; var $author$project$Views$Constants$nextSortOrder = function (order) { switch (order.$) { case 'Found': return $author$project$Views$Constants$Alpha; case 'Alpha': return $author$project$Views$Constants$Length; default: return $author$project$Views$Constants$Found; } }; var $author$project$Views$splitWithMinimum = F2( function (colMin, xs) { var split1 = A2( $elm$core$Basics$max, colMin, (($elm$core$Array$length(xs) + 2) / 3) | 0); var split2 = split1 + A2( $elm$core$Basics$max, colMin, ((($elm$core$Array$length(xs) - split1) + 1) / 2) | 0); return _Utils_Tuple3( A3($elm$core$Array$slice, 0, split1, xs), A3($elm$core$Array$slice, split1, split2, xs), A3( $elm$core$Array$slice, split2, $elm$core$Array$length(xs), xs)); }); var $author$project$Views$wordList = F7( function (colors, strings, sortOrder, resortMsg, minimumWordsPerColumn, words, allKnown) { var sortWords = function () { var falseFirst = function (b) { return b ? 0 : 1; }; switch (sortOrder.$) { case 'Found': return A2( $elm$core$Basics$composeL, $elm$core$List$sortBy( function (entry) { return _Utils_Tuple2( falseFirst(entry.foundByUser), entry.foundByUser ? '' : entry.word); }), $elm$core$List$reverse); case 'Alpha': return $elm$core$List$sortBy( function (entry) { return _Utils_Tuple3( falseFirst(entry.foundByUser), falseFirst( $author$project$Puzzle$isPangram(entry.word)), entry.word); }); default: return $elm$core$List$sortBy( function (entry) { return _Utils_Tuple3( falseFirst(entry.foundByUser), -$elm$core$String$length(entry.word), entry.word); }); } }(); var wordPairs = $elm$core$Array$fromList( sortWords(words)); var renderColumn = function (pairs) { return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(2), $mdgriffith$elm_ui$Element$alignTop ]), A2( $elm$core$List$map, $author$project$Views$word(colors), $elm$core$Array$toList(pairs))); }; var foundMsg = function () { var totalMay = allKnown ? $elm$core$Maybe$Just( $elm$core$Array$length(wordPairs)) : $elm$core$Maybe$Nothing; var found = $elm$core$List$length( A2( $elm$core$List$filter, function (entry) { return entry.foundByUser; }, words)); return A2(strings.foundLabel, found, totalMay); }(); var _v0 = A2($author$project$Views$splitWithMinimum, minimumWordsPerColumn, wordPairs); var col1 = _v0.a; var col2 = _v0.b; var col3 = _v0.c; return A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(5) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$spacing(15) ]), _List_fromArray( [ A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( [ $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) ]), $mdgriffith$elm_ui$Element$text(foundMsg)), A4( $author$project$Views$lightweightButton, colors, strings.sortLabel(sortOrder), strings.sortDescription, $elm$core$Maybe$Just( resortMsg( $author$project$Views$Constants$nextSortOrder(sortOrder)))) ])), A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$Font$light, $mdgriffith$elm_ui$Element$spacing(20), A2($mdgriffith$elm_ui$Element$paddingXY, 10, 0) ]), _List_fromArray( [ renderColumn(col1), renderColumn(col2), renderColumn(col3) ])) ])); }); var $author$project$Bee$wordsView = F4( function (colorMode, language, sort, data) { var info = A3($author$project$Bee$people, language, colorMode, data); return A7( $author$project$Views$wordList, $author$project$Views$Constants$themeColors(colorMode), $author$project$Language$stringsFor(language), sort, $author$project$Bee$ResortWords, 5, A2($author$project$Bee$decoratedWords, data, info), _Utils_eq(data.puzzle.expiration, $elm$core$Maybe$Nothing)); }); var $author$project$Bee$beeView = function (model) { var strings = $author$project$Language$stringsFor(model.language); var colors = $author$project$Views$Constants$themeColors(model.colorMode); var decorateHeader = function (hdr) { return A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$spacing(10) ]), _List_fromArray( [ hdr, A4($author$project$Views$colorModeButton, colors, strings, model.colorMode, $author$project$Bee$SetColorMode), A4($author$project$Views$languageButton, colors, strings, model.language, $author$project$Bee$SetLanguage) ])); }; var body = function () { var _v0 = model.data; if (_v0.$ === 'Just') { var data = _v0.a; var whenLatest = function (el) { var _v4 = data.puzzle.expiration; if (_v4.$ === 'Just') { return el; } else { return $mdgriffith$elm_ui$Element$none; } }; var peopleInfo = A3($author$project$Bee$people, model.language, model.colorMode, data); var hdr = A5( $author$project$Views$puzzleHeader, colors, strings, data.puzzle.displayDate, A2($elm$core$Maybe$map, $author$project$Bee$ShowPuzzle, data.previousPuzzleId), A2($elm$core$Maybe$map, $author$project$Bee$ShowPuzzle, data.nextPuzzleId)); var gameView = A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(10) ]), _List_fromArray( [ A5( $author$project$Views$scoreBanner, colors, strings, data.hints.maxScore, A2($author$project$Puzzle$apparentScore, peopleInfo.user, data), $author$project$Bee$localHasAllPangrams(data)), whenLatest( A5($author$project$Views$entered, colors, $author$project$Bee$Edit, $author$project$Bee$Submit, $author$project$Bee$Shuffle, model.input)), whenLatest( function () { var _v1 = model.message; switch (_v1.$) { case 'None': var _v2 = $author$project$Bee$inputError(model); if (_v2.$ === 'Just') { var str = _v2.a; return A2($author$project$Views$hintWarning, colors, str); } else { return $author$project$Views$hintNone; } case 'Warning': var msg = _v1.a; return A2($author$project$Views$hintWarning, colors, msg); default: var word = _v1.a; return A2( $elm$core$Maybe$withDefault, $author$project$Views$hintNone, A2( $elm$core$Maybe$map, $author$project$Views$hintFound(colors), $elm$core$List$head( A2( $elm$core$List$filter, A2( $elm$core$Basics$composeL, $elm$core$Basics$eq(word), function ($) { return $.word; }), A2($author$project$Bee$decoratedWords, data, peopleInfo))))); } }()), function () { var _v3 = data.puzzle.expiration; if (_v3.$ === 'Just') { return A6( $author$project$Views$Hive$hive, $author$project$Bee$Type, colors, data.puzzle.centerLetter, A2($elm$core$List$cons, data.puzzle.centerLetter, data.puzzle.outerLetters), model.letters, $elm$core$Set$fromList(model.input)); } else { return A4( $author$project$Views$Hive$displayHive, colors, data.puzzle.centerLetter, A2($elm$core$List$cons, data.puzzle.centerLetter, data.puzzle.outerLetters), model.letters); } }(), whenLatest( A2( $mdgriffith$elm_ui$Element$row, _List_fromArray( [ $mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$spacing(25), $mdgriffith$elm_ui$Element$padding(10) ]), _List_fromArray( [ A5( $author$project$Views$controlButton, colors, '✗', strings.deleteDescription, $author$project$Bee$Delete, !$elm$core$List$isEmpty(model.input)), A5($author$project$Views$controlButton, colors, '🤷', strings.shuffleDescription, $author$project$Bee$Shuffle, true), A5( $author$project$Views$controlButton, colors, '✓', strings.submitDescription, $author$project$Bee$Submit, !$elm$core$List$isEmpty(model.input)) ]))) ])); var ftr = A3($author$project$Views$puzzleFooter, colors, strings, data.puzzle.editor); return A5( $author$project$Views$mainLayout, decorateHeader(hdr), gameView, A5($mdgriffith$elm_ui$Element$Lazy$lazy4, $author$project$Bee$wordsView, model.colorMode, model.language, model.wordSort, data), A4($mdgriffith$elm_ui$Element$Lazy$lazy3, $author$project$Bee$friendsView, model.language, model.colorMode, data), ftr); } else { var msg = function () { var _v5 = model.message; switch (_v5.$) { case 'None': return $elm$core$Maybe$Nothing; case 'Warning': var str = _v5.a; return $elm$core$Maybe$Just(str); default: return $elm$core$Maybe$Nothing; } }(); return A5( $author$project$Views$mainLayout, A2($author$project$Views$loadingHeader, strings, msg), $mdgriffith$elm_ui$Element$none, $mdgriffith$elm_ui$Element$none, $mdgriffith$elm_ui$Element$none, $mdgriffith$elm_ui$Element$none); } }(); return A2( $mdgriffith$elm_ui$Element$layout, _List_fromArray( [ $author$project$Views$Constants$bodyFont, $mdgriffith$elm_ui$Element$Font$size(16), $mdgriffith$elm_ui$Element$Background$color(colors.background), $mdgriffith$elm_ui$Element$Font$color(colors.foreground) ]), A2(body, $author$project$Bee$desiredColumnWidth, model.viewport)); }; var $elm$browser$Browser$External = function (a) { return {$: 'External', a: a}; }; var $elm$browser$Browser$Internal = function (a) { return {$: 'Internal', a: a}; }; var $elm$browser$Browser$Dom$NotFound = function (a) { return {$: 'NotFound', a: a}; }; var $elm$url$Url$Http = {$: 'Http'}; var $elm$url$Url$Https = {$: 'Https'}; var $elm$url$Url$Url = F6( function (protocol, host, port_, path, query, fragment) { return {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query}; }); var $elm$core$String$contains = _String_contains; var $elm$core$String$dropLeft = F2( function (n, string) { return (n < 1) ? string : A3( $elm$core$String$slice, n, $elm$core$String$length(string), string); }); var $elm$core$String$indexes = _String_indexes; var $elm$core$String$isEmpty = function (string) { return string === ''; }; var $elm$core$String$left = F2( function (n, string) { return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string); }); var $elm$core$String$toInt = _String_toInt; var $elm$url$Url$chompBeforePath = F5( function (protocol, path, params, frag, str) { if ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) { return $elm$core$Maybe$Nothing; } else { var _v0 = A2($elm$core$String$indexes, ':', str); if (!_v0.b) { return $elm$core$Maybe$Just( A6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag)); } else { if (!_v0.b.b) { var i = _v0.a; var _v1 = $elm$core$String$toInt( A2($elm$core$String$dropLeft, i + 1, str)); if (_v1.$ === 'Nothing') { return $elm$core$Maybe$Nothing; } else { var port_ = _v1; return $elm$core$Maybe$Just( A6( $elm$url$Url$Url, protocol, A2($elm$core$String$left, i, str), port_, path, params, frag)); } } else { return $elm$core$Maybe$Nothing; } } } }); var $elm$url$Url$chompBeforeQuery = F4( function (protocol, params, frag, str) { if ($elm$core$String$isEmpty(str)) { return $elm$core$Maybe$Nothing; } else { var _v0 = A2($elm$core$String$indexes, '/', str); if (!_v0.b) { return A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str); } else { var i = _v0.a; return A5( $elm$url$Url$chompBeforePath, protocol, A2($elm$core$String$dropLeft, i, str), params, frag, A2($elm$core$String$left, i, str)); } } }); var $elm$url$Url$chompBeforeFragment = F3( function (protocol, frag, str) { if ($elm$core$String$isEmpty(str)) { return $elm$core$Maybe$Nothing; } else { var _v0 = A2($elm$core$String$indexes, '?', str); if (!_v0.b) { return A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str); } else { var i = _v0.a; return A4( $elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Just( A2($elm$core$String$dropLeft, i + 1, str)), frag, A2($elm$core$String$left, i, str)); } } }); var $elm$url$Url$chompAfterProtocol = F2( function (protocol, str) { if ($elm$core$String$isEmpty(str)) { return $elm$core$Maybe$Nothing; } else { var _v0 = A2($elm$core$String$indexes, '#', str); if (!_v0.b) { return A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str); } else { var i = _v0.a; return A3( $elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Just( A2($elm$core$String$dropLeft, i + 1, str)), A2($elm$core$String$left, i, str)); } } }); var $elm$core$String$startsWith = _String_startsWith; var $elm$url$Url$fromString = function (str) { return A2($elm$core$String$startsWith, 'http://', str) ? A2( $elm$url$Url$chompAfterProtocol, $elm$url$Url$Http, A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( $elm$url$Url$chompAfterProtocol, $elm$url$Url$Https, A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); }; var $elm$core$Task$Perform = function (a) { return {$: 'Perform', a: a}; }; var $elm$core$Task$succeed = _Scheduler_succeed; var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0); var $elm$core$Task$andThen = _Scheduler_andThen; var $elm$core$Task$map = F2( function (func, taskA) { return A2( $elm$core$Task$andThen, function (a) { return $elm$core$Task$succeed( func(a)); }, taskA); }); var $elm$core$Task$map2 = F3( function (func, taskA, taskB) { return A2( $elm$core$Task$andThen, function (a) { return A2( $elm$core$Task$andThen, function (b) { return $elm$core$Task$succeed( A2(func, a, b)); }, taskB); }, taskA); }); var $elm$core$Task$sequence = function (tasks) { return A3( $elm$core$List$foldr, $elm$core$Task$map2($elm$core$List$cons), $elm$core$Task$succeed(_List_Nil), tasks); }; var $elm$core$Platform$sendToApp = _Platform_sendToApp; var $elm$core$Task$spawnCmd = F2( function (router, _v0) { var task = _v0.a; return _Scheduler_spawn( A2( $elm$core$Task$andThen, $elm$core$Platform$sendToApp(router), task)); }); var $elm$core$Task$onEffects = F3( function (router, commands, state) { return A2( $elm$core$Task$map, function (_v0) { return _Utils_Tuple0; }, $elm$core$Task$sequence( A2( $elm$core$List$map, $elm$core$Task$spawnCmd(router), commands))); }); var $elm$core$Task$onSelfMsg = F3( function (_v0, _v1, _v2) { return $elm$core$Task$succeed(_Utils_Tuple0); }); var $elm$core$Task$cmdMap = F2( function (tagger, _v0) { var task = _v0.a; return $elm$core$Task$Perform( A2($elm$core$Task$map, tagger, task)); }); _Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); var $elm$core$Task$command = _Platform_leaf('Task'); var $elm$core$Task$perform = F2( function (toMessage, task) { return $elm$core$Task$command( $elm$core$Task$Perform( A2($elm$core$Task$map, toMessage, task))); }); var $elm$browser$Browser$element = _Browser_element; var $author$project$Bee$ReceiveNewViewportSize = function (a) { return {$: 'ReceiveNewViewportSize', a: a}; }; var $author$project$Bee$ReceivePuzzle = function (a) { return {$: 'ReceivePuzzle', a: a}; }; var $elm$core$Platform$Cmd$batch = _Platform_batch; var $elm$browser$Browser$Dom$getViewport = _Browser_withWindow(_Browser_getViewport); var $author$project$Bee$Model = F9( function (data, letters, input, selectedPuzzleId, message, wordSort, viewport, colorMode, language) { return {colorMode: colorMode, data: data, input: input, language: language, letters: letters, message: message, selectedPuzzleId: selectedPuzzleId, viewport: viewport, wordSort: wordSort}; }); var $author$project$Bee$None = {$: 'None'}; var $mdgriffith$elm_animator$Internal$Timeline$Timeline = function (a) { return {$: 'Timeline', a: a}; }; var $mdgriffith$elm_animator$Internal$Timeline$Timetable = function (a) { return {$: 'Timetable', a: a}; }; var $elm$time$Time$posixToMillis = function (_v0) { var millis = _v0.a; return millis; }; var $mdgriffith$elm_animator$Internal$Time$absolute = function (posix) { return $ianmackenzie$elm_units$Quantity$Quantity( $elm$time$Time$posixToMillis(posix)); }; var $elm$time$Time$Posix = function (a) { return {$: 'Posix', a: a}; }; var $elm$time$Time$millisToPosix = $elm$time$Time$Posix; var $mdgriffith$elm_animator$Animator$init = function (first) { return $mdgriffith$elm_animator$Internal$Timeline$Timeline( { events: $mdgriffith$elm_animator$Internal$Timeline$Timetable(_List_Nil), initial: first, interruption: _List_Nil, now: $mdgriffith$elm_animator$Internal$Time$absolute( $elm$time$Time$millisToPosix(0)), queued: $elm$core$Maybe$Nothing, running: true }); }; var $author$project$Views$Hive$At = function (a) { return {$: 'At', a: a}; }; var $author$project$Views$Hive$Center = {$: 'Center'}; var $author$project$Views$Hive$Outer = function (a) { return {$: 'Outer', a: a}; }; var $author$project$Views$Permutation$Permutation = function (a) { return {$: 'Permutation', a: a}; }; var $author$project$Views$Permutation$init = F3( function (first, second, rest) { return $author$project$Views$Permutation$Permutation( { saved: first, values: $elm$core$Array$fromList( A2( $elm$core$List$cons, first, A2($elm$core$List$cons, second, rest))) }); }); var $author$project$Views$Hive$outerPositions = A2( $elm$core$List$map, $author$project$Views$Hive$Outer, A2($elm$core$List$range, 0, 6)); var $author$project$Views$Hive$startPositions = $author$project$Views$Hive$At( A3( $author$project$Views$Permutation$init, $author$project$Views$Hive$Center, $author$project$Views$Hive$Outer(0), A2($elm$core$List$drop, 1, $author$project$Views$Hive$outerPositions))); var $author$project$Bee$startModel = function (flags) { return A9( $author$project$Bee$Model, $elm$core$Maybe$Nothing, $mdgriffith$elm_animator$Animator$init($author$project$Views$Hive$startPositions), _List_Nil, $elm$core$Maybe$Nothing, $author$project$Bee$None, $author$project$Views$Constants$Alpha, {height: 675, width: 375}, flags.dark ? $author$project$Views$Constants$Night : $author$project$Views$Constants$Day, $author$project$Language$EN); }; var $author$project$Bee$init = F2( function (backend, flags) { return _Utils_Tuple2( $author$project$Bee$startModel(flags), $elm$core$Platform$Cmd$batch( _List_fromArray( [ A2( $elm$core$Task$perform, function (vp) { return $author$project$Bee$ReceiveNewViewportSize( { height: $elm$core$Basics$round(vp.viewport.height), width: $elm$core$Basics$round(vp.viewport.width) }); }, $elm$browser$Browser$Dom$getViewport), A2(backend.getPuzzle, $elm$core$Maybe$Nothing, $author$project$Bee$ReceivePuzzle) ]))); }); var $author$project$Bee$Tick = function (a) { return {$: 'Tick', a: a}; }; var $mdgriffith$elm_animator$Internal$Timeline$Animator = F2( function (a, b) { return {$: 'Animator', a: a, b: b}; }); var $mdgriffith$elm_animator$Animator$animator = A2( $mdgriffith$elm_animator$Internal$Timeline$Animator, $elm$core$Basics$always(false), F2( function (now, model) { return model; })); var $mdgriffith$elm_animator$Internal$Timeline$hasChanged = function (_v0) { var timeline = _v0.a; var _v1 = timeline.queued; if (_v1.$ === 'Nothing') { var _v2 = timeline.interruption; if (!_v2.b) { return false; } else { return true; } } else { return true; } }; var $mdgriffith$elm_animator$Internal$Timeline$justInitialized = function (_v0) { var timeline = _v0.a; var _v1 = timeline.now; var qty = _v1.a; return !qty; }; var $mdgriffith$elm_animator$Internal$Timeline$toOccurring = F2( function (_v0, _v1) { var duration = _v0.a; var event = _v0.b; var maybeDwell = _v0.c; var now = _v1.a; var events = _v1.b; var occursAt = A2($mdgriffith$elm_animator$Internal$Time$advanceBy, duration, now); var endsAt = function () { if (maybeDwell.$ === 'Nothing') { return occursAt; } else { var dwell = maybeDwell.a; return A2($mdgriffith$elm_animator$Internal$Time$advanceBy, dwell, occursAt); } }(); return _Utils_Tuple2( endsAt, A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, event, occursAt, endsAt), events)); }); var $mdgriffith$elm_animator$Internal$Timeline$createLine = F2( function (now, scheduled) { var _v0 = scheduled.b; var dur = _v0.a; var startEvent = _v0.b; var maybeDwell = _v0.c; var reverseQueued = scheduled.c; var start = A2($mdgriffith$elm_animator$Internal$Time$advanceBy, dur, now); var startNextEvent = function () { if (maybeDwell.$ === 'Nothing') { return start; } else { var dwell = maybeDwell.a; return A2($mdgriffith$elm_animator$Internal$Time$advanceBy, dwell, start); } }(); var events = $elm$core$List$reverse( A3( $elm$core$List$foldl, $mdgriffith$elm_animator$Internal$Timeline$toOccurring, _Utils_Tuple2(startNextEvent, _List_Nil), $elm$core$List$reverse(reverseQueued)).b); return A3( $mdgriffith$elm_animator$Internal$Timeline$Line, now, A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, startEvent, start, startNextEvent), events); }); var $mdgriffith$elm_animator$Internal$Time$latest = F2( function (oneQty, twoQty) { var one = oneQty.a; var two = twoQty.a; return ((one - two) <= 0) ? twoQty : oneQty; }); var $mdgriffith$elm_animator$Internal$Timeline$addEventsToLine = F4( function (now, scheduled, existing, lines) { var delay = scheduled.a; var scheduledStartingEvent = scheduled.b; var reverseQueued = scheduled.c; var startLineAt = existing.a; var startingEvent = existing.b; var events = existing.c; var start = A2($mdgriffith$elm_animator$Internal$Time$advanceBy, delay, now); var _v0 = $elm$core$List$reverse(events); if (!_v0.b) { var startingEventWithDwell = function () { var ev = startingEvent.a; var lastEventTime = startingEvent.b; return A2($mdgriffith$elm_animator$Internal$Time$thisAfterThat, start, lastEventTime) ? A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, ev, lastEventTime, start) : A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, ev, lastEventTime, lastEventTime); }(); var startNewEventsAt = A2( $mdgriffith$elm_animator$Internal$Time$latest, A2( $mdgriffith$elm_animator$Internal$Time$advanceBy, delay, $mdgriffith$elm_animator$Internal$Timeline$endTime(startingEvent)), start); var newLine = A2($mdgriffith$elm_animator$Internal$Timeline$createLine, startNewEventsAt, scheduled); return A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startLineAt, startingEventWithDwell, _List_Nil), A2($elm$core$List$cons, newLine, lines)); } else { var _v2 = _v0.a; var lastEvent = _v2.a; var lastEventTime = _v2.b; var lastEventFinish = _v2.c; var eventTail = _v0.b; var startNewEventsAt = A2( $mdgriffith$elm_animator$Internal$Time$latest, A2($mdgriffith$elm_animator$Internal$Time$advanceBy, delay, lastEventFinish), start); var newLine = A2($mdgriffith$elm_animator$Internal$Timeline$createLine, startNewEventsAt, scheduled); var newLastEvent = A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, lastEvent, lastEventTime, startNewEventsAt); return A2( $elm$core$List$cons, A3( $mdgriffith$elm_animator$Internal$Timeline$Line, startLineAt, startingEvent, $elm$core$List$reverse( A2($elm$core$List$cons, newLastEvent, eventTail))), A2($elm$core$List$cons, newLine, lines)); } }); var $mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat = F2( function (_v0, _v1) { var _this = _v0.a; var that = _v1.a; return (_this - that) >= 0; }); var $mdgriffith$elm_animator$Internal$Timeline$addToCurrentLine = F3( function (now, scheduled, lines) { if (!lines.b) { return _List_fromArray( [ A2($mdgriffith$elm_animator$Internal$Timeline$createLine, now, scheduled) ]); } else { if (!lines.b.b) { var line = lines.a; return A4($mdgriffith$elm_animator$Internal$Timeline$addEventsToLine, now, scheduled, line, _List_Nil); } else { var _v1 = lines.a; var startOne = _v1.a; var startEventOne = _v1.b; var one = _v1.c; var _v2 = lines.b; var _v3 = _v2.a; var startTwo = _v3.a; var startEventTwo = _v3.b; var two = _v3.c; var remaining = _v2.b; return (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, now, startOne) && A2($mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, now, startTwo)) ? A4( $mdgriffith$elm_animator$Internal$Timeline$addEventsToLine, now, scheduled, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startOne, startEventOne, one), A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startTwo, startEventTwo, two), remaining)) : A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startOne, startEventOne, one), A3( $mdgriffith$elm_animator$Internal$Timeline$addToCurrentLine, now, scheduled, A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startTwo, startEventTwo, two), remaining))); } } }); var $mdgriffith$elm_animator$Internal$Timeline$enqueue = F3( function (timeline, now, scheduled) { var _v0 = timeline.events; var lines = _v0.a; return $mdgriffith$elm_animator$Internal$Timeline$Timetable( A3($mdgriffith$elm_animator$Internal$Timeline$addToCurrentLine, now, scheduled, lines)); }); var $mdgriffith$elm_animator$Internal$Timeline$LastTwoEvents = F4( function (a, b, c, d) { return {$: 'LastTwoEvents', a: a, b: b, c: c, d: d}; }); var $mdgriffith$elm_animator$Internal$Timeline$beforeEventEnd = F2( function (time, events) { beforeEventEnd: while (true) { if (!events.b) { return false; } else { var top = events.a; var remain = events.b; if (A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, time, $mdgriffith$elm_animator$Internal$Timeline$endTime(top))) { return true; } else { var $temp$time = time, $temp$events = remain; time = $temp$time; events = $temp$events; continue beforeEventEnd; } } } }); var $mdgriffith$elm_animator$Internal$Timeline$beforeLineEnd = F2( function (time, _v0) { var lineStartAt = _v0.a; var startingEvent = _v0.b; var trailing = _v0.c; if (A2($mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, time, lineStartAt)) { return true; } else { if (!trailing.b) { return A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, time, $mdgriffith$elm_animator$Internal$Timeline$endTime(startingEvent)); } else { return A2($mdgriffith$elm_animator$Internal$Timeline$beforeEventEnd, time, trailing); } } }); var $mdgriffith$elm_animator$Internal$Timeline$getTransitionAt = F3( function (interruptionTime, prev, trailing) { getTransitionAt: while (true) { if (!trailing.b) { return $elm$core$Maybe$Nothing; } else { var next = trailing.a; var remain = trailing.b; if (A2( $mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, interruptionTime, $mdgriffith$elm_animator$Internal$Timeline$endTime(prev)) && A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeThat, interruptionTime, $mdgriffith$elm_animator$Internal$Timeline$startTime(next))) { return $elm$core$Maybe$Just( A4( $mdgriffith$elm_animator$Internal$Timeline$LastTwoEvents, $mdgriffith$elm_animator$Internal$Timeline$endTime(prev), $mdgriffith$elm_animator$Internal$Timeline$getEvent(prev), $mdgriffith$elm_animator$Internal$Timeline$startTime(next), $mdgriffith$elm_animator$Internal$Timeline$getEvent(next))); } else { var $temp$interruptionTime = interruptionTime, $temp$prev = next, $temp$trailing = remain; interruptionTime = $temp$interruptionTime; prev = $temp$prev; trailing = $temp$trailing; continue getTransitionAt; } } } }); var $mdgriffith$elm_animator$Internal$Timeline$Schedule = F3( function (a, b, c) { return {$: 'Schedule', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Internal$Timeline$Event = F3( function (a, b, c) { return {$: 'Event', a: a, b: b, c: c}; }); var $mdgriffith$elm_animator$Internal$Timeline$adjustScheduledDuration = F2( function (fn, _v0) { var dur = _v0.a; var ev = _v0.b; var maybeDwell = _v0.c; return A3( $mdgriffith$elm_animator$Internal$Timeline$Event, fn(dur), ev, maybeDwell); }); var $mdgriffith$elm_animator$Internal$Timeline$getScheduledEvent = function (_v0) { var ev = _v0.b; return ev; }; var $mdgriffith$elm_animator$Internal$Timeline$interruptAtExactly = F3( function (startInterruption, scheduled, last) { var penultimateTime = last.a; var penultimate = last.b; var lastEventTime = last.c; var lastEvent = last.d; var delay_ = scheduled.a; var startingEvent = scheduled.b; var reverseQueued = scheduled.c; var amountProgress = A3($mdgriffith$elm_animator$Internal$Time$progress, penultimateTime, lastEventTime, startInterruption); var newStartingEvent = _Utils_eq( penultimate, $mdgriffith$elm_animator$Internal$Timeline$getScheduledEvent(startingEvent)) ? A2( $mdgriffith$elm_animator$Internal$Timeline$adjustScheduledDuration, $ianmackenzie$elm_units$Quantity$multiplyBy(amountProgress), startingEvent) : startingEvent; return A2( $mdgriffith$elm_animator$Internal$Timeline$createLine, startInterruption, A3($mdgriffith$elm_animator$Internal$Timeline$Schedule, delay_, newStartingEvent, reverseQueued)); }); var $mdgriffith$elm_animator$Internal$Timeline$interruptLine = F4( function (startInterruption, scheduled, line, future) { var start = line.a; var startEvent = line.b; var trailing = line.c; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, startInterruption, start)) { if (!future.b) { var _v2 = A3($mdgriffith$elm_animator$Internal$Timeline$getTransitionAt, startInterruption, startEvent, trailing); if (_v2.$ === 'Nothing') { return A2($mdgriffith$elm_animator$Internal$Timeline$beforeLineEnd, startInterruption, line) ? $elm$core$Maybe$Just( _List_fromArray( [ A2($mdgriffith$elm_animator$Internal$Timeline$createLine, startInterruption, scheduled) ])) : $elm$core$Maybe$Nothing; } else { var last2Events = _v2.a; return $elm$core$Maybe$Just( _List_fromArray( [ A3($mdgriffith$elm_animator$Internal$Timeline$interruptAtExactly, startInterruption, scheduled, last2Events) ])); } } else { var _v3 = future.a; var nextStart = _v3.a; var next = _v3.b; var nextEvents = _v3.c; var futureRemaining = future.b; return (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, startInterruption, nextStart) && A2( $mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, startInterruption, $mdgriffith$elm_animator$Internal$Timeline$startTime(next))) ? $elm$core$Maybe$Just( A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, nextStart, next, nextEvents), A2( $elm$core$List$cons, A3( $mdgriffith$elm_animator$Internal$Timeline$interruptAtExactly, startInterruption, scheduled, A4( $mdgriffith$elm_animator$Internal$Timeline$LastTwoEvents, $mdgriffith$elm_animator$Internal$Timeline$endTime(startEvent), $mdgriffith$elm_animator$Internal$Timeline$getEvent(startEvent), $mdgriffith$elm_animator$Internal$Timeline$startTime(next), $mdgriffith$elm_animator$Internal$Timeline$getEvent(next))), futureRemaining))) : $elm$core$Maybe$Nothing; } } else { return $elm$core$Maybe$Nothing; } }); var $mdgriffith$elm_animator$Internal$Timeline$lineStartTime = function (_v0) { var start = _v0.a; return start; }; var $mdgriffith$elm_animator$Internal$Timeline$interruptionHappensLater = F2( function (startInterruption, remaining) { if (!remaining.b) { return false; } else { var top = remaining.a; return A2( $mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, startInterruption, $mdgriffith$elm_animator$Internal$Timeline$lineStartTime(top)); } }); var $mdgriffith$elm_animator$Internal$Timeline$interruptLines = F5( function (now, startInterruption, scheduled, pastLines, lines) { interruptLines: while (true) { if (!lines.b) { return $elm$core$Maybe$Nothing; } else { var startLine = lines.a; var remaining = lines.b; if (A2($mdgriffith$elm_animator$Internal$Timeline$interruptionHappensLater, startInterruption, remaining)) { var $temp$now = now, $temp$startInterruption = startInterruption, $temp$scheduled = scheduled, $temp$pastLines = A2($elm$core$List$cons, startLine, pastLines), $temp$lines = remaining; now = $temp$now; startInterruption = $temp$startInterruption; scheduled = $temp$scheduled; pastLines = $temp$pastLines; lines = $temp$lines; continue interruptLines; } else { var _v1 = A4($mdgriffith$elm_animator$Internal$Timeline$interruptLine, startInterruption, scheduled, startLine, remaining); if (_v1.$ === 'Nothing') { var $temp$now = now, $temp$startInterruption = startInterruption, $temp$scheduled = scheduled, $temp$pastLines = A2($elm$core$List$cons, startLine, pastLines), $temp$lines = remaining; now = $temp$now; startInterruption = $temp$startInterruption; scheduled = $temp$scheduled; pastLines = $temp$pastLines; lines = $temp$lines; continue interruptLines; } else { var interruption = _v1.a; return (_Utils_eq( startInterruption, $mdgriffith$elm_animator$Internal$Timeline$lineStartTime(startLine)) && A2($mdgriffith$elm_animator$Internal$Time$thisAfterThat, startInterruption, now)) ? $elm$core$Maybe$Just( _Utils_ap( $elm$core$List$reverse(pastLines), interruption)) : $elm$core$Maybe$Just( _Utils_ap( $elm$core$List$reverse(pastLines), A2($elm$core$List$cons, startLine, interruption))); } } } } }); var $mdgriffith$elm_animator$Internal$Timeline$interrupt = F3( function (details, startAt, scheduled) { var _v0 = details.events; var lines = _v0.a; var _v1 = A5($mdgriffith$elm_animator$Internal$Timeline$interruptLines, details.now, startAt, scheduled, _List_Nil, lines); if (_v1.$ === 'Nothing') { return A3($mdgriffith$elm_animator$Internal$Timeline$enqueue, details, startAt, scheduled); } else { var interrupted = _v1.a; return $mdgriffith$elm_animator$Internal$Timeline$Timetable(interrupted); } }); var $mdgriffith$elm_animator$Internal$Timeline$applyInterruptionHelper = F2( function (interrupts, timeline) { applyInterruptionHelper: while (true) { if (!interrupts.b) { return timeline; } else { var inter = interrupts.a; var remaining = interrupts.b; var delay = function () { var d = inter.a; return d; }(); var newEvents = A3( $mdgriffith$elm_animator$Internal$Timeline$interrupt, timeline, A2($mdgriffith$elm_animator$Internal$Time$advanceBy, delay, timeline.now), inter); var $temp$interrupts = remaining, $temp$timeline = _Utils_update( timeline, {events: newEvents}); interrupts = $temp$interrupts; timeline = $temp$timeline; continue applyInterruptionHelper; } } }); var $mdgriffith$elm_animator$Internal$Timeline$applyInterruptions = function (timeline) { var _v0 = timeline.interruption; if (!_v0.b) { return timeline; } else { return A2( $mdgriffith$elm_animator$Internal$Timeline$applyInterruptionHelper, $elm$core$List$reverse(timeline.interruption), _Utils_update( timeline, {interruption: _List_Nil})); } }; var $mdgriffith$elm_animator$Internal$Timeline$applyQueued = function (timeline) { var _v0 = timeline.queued; if (_v0.$ === 'Nothing') { return timeline; } else { var queued = _v0.a; return _Utils_update( timeline, { events: A3($mdgriffith$elm_animator$Internal$Timeline$enqueue, timeline, timeline.now, queued), queued: $elm$core$Maybe$Nothing }); } }; var $mdgriffith$elm_animator$Internal$Timeline$dwellingAt = F2( function (now, event) { var eventStartTime = $mdgriffith$elm_animator$Internal$Timeline$startTime(event); var eventEndTime = $mdgriffith$elm_animator$Internal$Timeline$endTime(event); return A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, now, eventStartTime) && A2($mdgriffith$elm_animator$Internal$Time$thisBeforeOrEqualThat, now, eventEndTime); }); var $mdgriffith$elm_animator$Internal$Timeline$Captured = function (a) { return {$: 'Captured', a: a}; }; var $mdgriffith$elm_animator$Internal$Timeline$NothingCaptured = {$: 'NothingCaptured'}; var $mdgriffith$elm_animator$Internal$Timeline$hewLine = F2( function (now, events) { hewLine: while (true) { if (!events.b) { return $mdgriffith$elm_animator$Internal$Timeline$NothingCaptured; } else { var top = events.a; var remaining = events.b; if (A2($mdgriffith$elm_animator$Internal$Timeline$dwellingAt, now, top)) { return $mdgriffith$elm_animator$Internal$Timeline$Captured( A3( $mdgriffith$elm_animator$Internal$Timeline$Line, $mdgriffith$elm_animator$Internal$Timeline$startTime(top), top, remaining)); } else { if (A2( $mdgriffith$elm_animator$Internal$Time$thisAfterThat, now, $mdgriffith$elm_animator$Internal$Timeline$endTime(top))) { var $temp$now = now, $temp$events = remaining; now = $temp$now; events = $temp$events; continue hewLine; } else { return $mdgriffith$elm_animator$Internal$Timeline$NothingCaptured; } } } } }); var $mdgriffith$elm_animator$Internal$Timeline$garbageCollectOldEvents = F3( function (now, droppable, lines) { garbageCollectOldEvents: while (true) { if (!lines.b) { return $elm$core$List$reverse(droppable); } else { var _v1 = lines.a; var startAt = _v1.a; var startingEvent = _v1.b; var events = _v1.c; var remaining = lines.b; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, startAt, now)) { return _Utils_ap( $elm$core$List$reverse(droppable), lines); } else { if (A2($mdgriffith$elm_animator$Internal$Timeline$dwellingAt, now, startingEvent)) { return lines; } else { var maybeInterruptionTime = A2( $elm$core$Maybe$map, $mdgriffith$elm_animator$Internal$Timeline$lineStartTime, $elm$core$List$head(remaining)); var interrupted = function () { if (maybeInterruptionTime.$ === 'Nothing') { return false; } else { var interruptionTime = maybeInterruptionTime.a; return A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, now, interruptionTime); } }(); if (interrupted) { var $temp$now = now, $temp$droppable = A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Line, startAt, startingEvent, events), droppable), $temp$lines = remaining; now = $temp$now; droppable = $temp$droppable; lines = $temp$lines; continue garbageCollectOldEvents; } else { var _v2 = A2($mdgriffith$elm_animator$Internal$Timeline$hewLine, now, events); if (_v2.$ === 'NothingCaptured') { return _Utils_ap( $elm$core$List$reverse(droppable), lines); } else { var capturedLine = _v2.a; return A2($elm$core$List$cons, capturedLine, remaining); } } } } } } }); var $mdgriffith$elm_animator$Internal$Timeline$linesAreActive = F2( function (now, lines) { linesAreActive: while (true) { if (!lines.b) { return false; } else { var _v1 = lines.a; var startAt = _v1.a; var startingEvent = _v1.b; var events = _v1.c; var remaining = lines.b; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, startAt, now)) { return true; } else { var maybeInterruption = function () { var _v5 = $elm$core$List$head(remaining); if (_v5.$ === 'Nothing') { return $elm$core$Maybe$Nothing; } else { var _v6 = _v5.a; var interruptionTime = _v6.a; return $elm$core$Maybe$Just(interruptionTime); } }(); var last = A2( $elm$core$Maybe$withDefault, startingEvent, $elm$core$List$head( $elm$core$List$reverse(events))); if (maybeInterruption.$ === 'Just') { var interruptTime = maybeInterruption.a; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, interruptTime, now)) { return true; } else { var time = last.b; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, time, now)) { return true; } else { var $temp$now = now, $temp$lines = remaining; now = $temp$now; lines = $temp$lines; continue linesAreActive; } } } else { var time = last.b; if (A2($mdgriffith$elm_animator$Internal$Time$thisAfterOrEqualThat, time, now)) { return true; } else { var $temp$now = now, $temp$lines = remaining; now = $temp$now; lines = $temp$lines; continue linesAreActive; } } } } } }); var $mdgriffith$elm_animator$Internal$Timeline$clean = F2( function (runGC, details) { var running = function () { var _v1 = details.events; var lines = _v1.a; return A2($mdgriffith$elm_animator$Internal$Timeline$linesAreActive, details.now, lines); }(); var events = function () { var _v0 = details.events; var evs = _v0.a; return evs; }(); return _Utils_update( details, { events: runGC ? $mdgriffith$elm_animator$Internal$Timeline$Timetable( A3($mdgriffith$elm_animator$Internal$Timeline$garbageCollectOldEvents, details.now, _List_Nil, events)) : details.events, running: running }); }); var $ianmackenzie$elm_units$Quantity$max = F2( function (_v0, _v1) { var x = _v0.a; var y = _v1.a; return $ianmackenzie$elm_units$Quantity$Quantity( A2($elm$core$Basics$max, x, y)); }); var $mdgriffith$elm_animator$Internal$Timeline$updateWith = F3( function (withGC, possiblyNow, _v0) { var timeline = _v0.a; var now = A2( $ianmackenzie$elm_units$Quantity$max, $mdgriffith$elm_animator$Internal$Time$absolute(possiblyNow), timeline.now); return _Utils_eq( timeline.events, $mdgriffith$elm_animator$Internal$Timeline$Timetable(_List_Nil)) ? $mdgriffith$elm_animator$Internal$Timeline$Timeline( A2( $mdgriffith$elm_animator$Internal$Timeline$clean, withGC, $mdgriffith$elm_animator$Internal$Timeline$applyInterruptions( $mdgriffith$elm_animator$Internal$Timeline$applyQueued( _Utils_update( timeline, { events: function () { var firstOccurring = A3($mdgriffith$elm_animator$Internal$Timeline$Occurring, timeline.initial, now, now); return $mdgriffith$elm_animator$Internal$Timeline$Timetable( _List_fromArray( [ A3($mdgriffith$elm_animator$Internal$Timeline$Line, now, firstOccurring, _List_Nil) ])); }(), now: now }))))) : $mdgriffith$elm_animator$Internal$Timeline$Timeline( A2( $mdgriffith$elm_animator$Internal$Timeline$clean, withGC, $mdgriffith$elm_animator$Internal$Timeline$applyInterruptions( $mdgriffith$elm_animator$Internal$Timeline$applyQueued( _Utils_update( timeline, {now: now}))))); }); var $mdgriffith$elm_animator$Internal$Timeline$update = $mdgriffith$elm_animator$Internal$Timeline$updateWith(true); var $mdgriffith$elm_animator$Animator$Css$watching = F3( function (get, set, _v0) { var isRunning = _v0.a; var updateModel = _v0.b; return A2( $mdgriffith$elm_animator$Internal$Timeline$Animator, function (model) { if (isRunning(model)) { return true; } else { var tl = get(model); return $mdgriffith$elm_animator$Internal$Timeline$hasChanged(tl) || $mdgriffith$elm_animator$Internal$Timeline$justInitialized(tl); } }, F2( function (now, model) { var newModel = A2(updateModel, now, model); return A2( set, A2( $mdgriffith$elm_animator$Internal$Timeline$update, now, get(newModel)), newModel); })); }); var $author$project$Views$Hive$animator = F2( function (getState, setState) { return A3($mdgriffith$elm_animator$Animator$Css$watching, getState, setState, $mdgriffith$elm_animator$Animator$animator); }); var $author$project$Bee$animator = A2( $author$project$Views$Hive$animator, function ($) { return $.letters; }, F2( function (newLetters, model) { return _Utils_update( model, {letters: newLetters}); })); var $elm$core$Platform$Sub$batch = _Platform_batch; var $elm$browser$Browser$Events$Window = {$: 'Window'}; var $elm$json$Json$Decode$int = _Json_decodeInt; var $elm$browser$Browser$Events$MySub = F3( function (a, b, c) { return {$: 'MySub', a: a, b: b, c: c}; }); var $elm$browser$Browser$Events$State = F2( function (subs, pids) { return {pids: pids, subs: subs}; }); var $elm$browser$Browser$Events$init = $elm$core$Task$succeed( A2($elm$browser$Browser$Events$State, _List_Nil, $elm$core$Dict$empty)); var $elm$browser$Browser$Events$nodeToKey = function (node) { if (node.$ === 'Document') { return 'd_'; } else { return 'w_'; } }; var $elm$browser$Browser$Events$addKey = function (sub) { var node = sub.a; var name = sub.b; return _Utils_Tuple2( _Utils_ap( $elm$browser$Browser$Events$nodeToKey(node), name), sub); }; var $elm$core$Process$kill = _Scheduler_kill; var $elm$core$Dict$merge = F6( function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) { var stepState = F3( function (rKey, rValue, _v0) { stepState: while (true) { var list = _v0.a; var result = _v0.b; if (!list.b) { return _Utils_Tuple2( list, A3(rightStep, rKey, rValue, result)); } else { var _v2 = list.a; var lKey = _v2.a; var lValue = _v2.b; var rest = list.b; if (_Utils_cmp(lKey, rKey) < 0) { var $temp$rKey = rKey, $temp$rValue = rValue, $temp$_v0 = _Utils_Tuple2( rest, A3(leftStep, lKey, lValue, result)); rKey = $temp$rKey; rValue = $temp$rValue; _v0 = $temp$_v0; continue stepState; } else { if (_Utils_cmp(lKey, rKey) > 0) { return _Utils_Tuple2( list, A3(rightStep, rKey, rValue, result)); } else { return _Utils_Tuple2( rest, A4(bothStep, lKey, lValue, rValue, result)); } } } } }); var _v3 = A3( $elm$core$Dict$foldl, stepState, _Utils_Tuple2( $elm$core$Dict$toList(leftDict), initialResult), rightDict); var leftovers = _v3.a; var intermediateResult = _v3.b; return A3( $elm$core$List$foldl, F2( function (_v4, result) { var k = _v4.a; var v = _v4.b; return A3(leftStep, k, v, result); }), intermediateResult, leftovers); }); var $elm$browser$Browser$Events$Event = F2( function (key, event) { return {event: event, key: key}; }); var $elm$core$Platform$sendToSelf = _Platform_sendToSelf; var $elm$browser$Browser$Events$spawn = F3( function (router, key, _v0) { var node = _v0.a; var name = _v0.b; var actualNode = function () { if (node.$ === 'Document') { return _Browser_doc; } else { return _Browser_window; } }(); return A2( $elm$core$Task$map, function (value) { return _Utils_Tuple2(key, value); }, A3( _Browser_on, actualNode, name, function (event) { return A2( $elm$core$Platform$sendToSelf, router, A2($elm$browser$Browser$Events$Event, key, event)); })); }); var $elm$core$Dict$union = F2( function (t1, t2) { return A3($elm$core$Dict$foldl, $elm$core$Dict$insert, t2, t1); }); var $elm$browser$Browser$Events$onEffects = F3( function (router, subs, state) { var stepRight = F3( function (key, sub, _v6) { var deads = _v6.a; var lives = _v6.b; var news = _v6.c; return _Utils_Tuple3( deads, lives, A2( $elm$core$List$cons, A3($elm$browser$Browser$Events$spawn, router, key, sub), news)); }); var stepLeft = F3( function (_v4, pid, _v5) { var deads = _v5.a; var lives = _v5.b; var news = _v5.c; return _Utils_Tuple3( A2($elm$core$List$cons, pid, deads), lives, news); }); var stepBoth = F4( function (key, pid, _v2, _v3) { var deads = _v3.a; var lives = _v3.b; var news = _v3.c; return _Utils_Tuple3( deads, A3($elm$core$Dict$insert, key, pid, lives), news); }); var newSubs = A2($elm$core$List$map, $elm$browser$Browser$Events$addKey, subs); var _v0 = A6( $elm$core$Dict$merge, stepLeft, stepBoth, stepRight, state.pids, $elm$core$Dict$fromList(newSubs), _Utils_Tuple3(_List_Nil, $elm$core$Dict$empty, _List_Nil)); var deadPids = _v0.a; var livePids = _v0.b; var makeNewPids = _v0.c; return A2( $elm$core$Task$andThen, function (pids) { return $elm$core$Task$succeed( A2( $elm$browser$Browser$Events$State, newSubs, A2( $elm$core$Dict$union, livePids, $elm$core$Dict$fromList(pids)))); }, A2( $elm$core$Task$andThen, function (_v1) { return $elm$core$Task$sequence(makeNewPids); }, $elm$core$Task$sequence( A2($elm$core$List$map, $elm$core$Process$kill, deadPids)))); }); var $elm$browser$Browser$Events$onSelfMsg = F3( function (router, _v0, state) { var key = _v0.key; var event = _v0.event; var toMessage = function (_v2) { var subKey = _v2.a; var _v3 = _v2.b; var node = _v3.a; var name = _v3.b; var decoder = _v3.c; return _Utils_eq(subKey, key) ? A2(_Browser_decodeEvent, decoder, event) : $elm$core$Maybe$Nothing; }; var messages = A2($elm$core$List$filterMap, toMessage, state.subs); return A2( $elm$core$Task$andThen, function (_v1) { return $elm$core$Task$succeed(state); }, $elm$core$Task$sequence( A2( $elm$core$List$map, $elm$core$Platform$sendToApp(router), messages))); }); var $elm$browser$Browser$Events$subMap = F2( function (func, _v0) { var node = _v0.a; var name = _v0.b; var decoder = _v0.c; return A3( $elm$browser$Browser$Events$MySub, node, name, A2($elm$json$Json$Decode$map, func, decoder)); }); _Platform_effectManagers['Browser.Events'] = _Platform_createManager($elm$browser$Browser$Events$init, $elm$browser$Browser$Events$onEffects, $elm$browser$Browser$Events$onSelfMsg, 0, $elm$browser$Browser$Events$subMap); var $elm$browser$Browser$Events$subscription = _Platform_leaf('Browser.Events'); var $elm$browser$Browser$Events$on = F3( function (node, name, decoder) { return $elm$browser$Browser$Events$subscription( A3($elm$browser$Browser$Events$MySub, node, name, decoder)); }); var $elm$browser$Browser$Events$onResize = function (func) { return A3( $elm$browser$Browser$Events$on, $elm$browser$Browser$Events$Window, 'resize', A2( $elm$json$Json$Decode$field, 'target', A3( $elm$json$Json$Decode$map2, func, A2($elm$json$Json$Decode$field, 'innerWidth', $elm$json$Json$Decode$int), A2($elm$json$Json$Decode$field, 'innerHeight', $elm$json$Json$Decode$int)))); }; var $elm$json$Json$Decode$bool = _Json_decodeBool; var $author$project$Bee$receiveIsDarkPort = _Platform_incomingPort('receiveIsDarkPort', $elm$json$Json$Decode$bool); var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); var $elm$browser$Browser$AnimationManager$Time = function (a) { return {$: 'Time', a: a}; }; var $elm$browser$Browser$AnimationManager$State = F3( function (subs, request, oldTime) { return {oldTime: oldTime, request: request, subs: subs}; }); var $elm$browser$Browser$AnimationManager$init = $elm$core$Task$succeed( A3($elm$browser$Browser$AnimationManager$State, _List_Nil, $elm$core$Maybe$Nothing, 0)); var $elm$browser$Browser$AnimationManager$now = _Browser_now(_Utils_Tuple0); var $elm$browser$Browser$AnimationManager$rAF = _Browser_rAF(_Utils_Tuple0); var $elm$core$Process$spawn = _Scheduler_spawn; var $elm$browser$Browser$AnimationManager$onEffects = F3( function (router, subs, _v0) { var request = _v0.request; var oldTime = _v0.oldTime; var _v1 = _Utils_Tuple2(request, subs); if (_v1.a.$ === 'Nothing') { if (!_v1.b.b) { var _v2 = _v1.a; return $elm$browser$Browser$AnimationManager$init; } else { var _v4 = _v1.a; return A2( $elm$core$Task$andThen, function (pid) { return A2( $elm$core$Task$andThen, function (time) { return $elm$core$Task$succeed( A3( $elm$browser$Browser$AnimationManager$State, subs, $elm$core$Maybe$Just(pid), time)); }, $elm$browser$Browser$AnimationManager$now); }, $elm$core$Process$spawn( A2( $elm$core$Task$andThen, $elm$core$Platform$sendToSelf(router), $elm$browser$Browser$AnimationManager$rAF))); } } else { if (!_v1.b.b) { var pid = _v1.a.a; return A2( $elm$core$Task$andThen, function (_v3) { return $elm$browser$Browser$AnimationManager$init; }, $elm$core$Process$kill(pid)); } else { return $elm$core$Task$succeed( A3($elm$browser$Browser$AnimationManager$State, subs, request, oldTime)); } } }); var $elm$browser$Browser$AnimationManager$onSelfMsg = F3( function (router, newTime, _v0) { var subs = _v0.subs; var oldTime = _v0.oldTime; var send = function (sub) { if (sub.$ === 'Time') { var tagger = sub.a; return A2( $elm$core$Platform$sendToApp, router, tagger( $elm$time$Time$millisToPosix(newTime))); } else { var tagger = sub.a; return A2( $elm$core$Platform$sendToApp, router, tagger(newTime - oldTime)); } }; return A2( $elm$core$Task$andThen, function (pid) { return A2( $elm$core$Task$andThen, function (_v1) { return $elm$core$Task$succeed( A3( $elm$browser$Browser$AnimationManager$State, subs, $elm$core$Maybe$Just(pid), newTime)); }, $elm$core$Task$sequence( A2($elm$core$List$map, send, subs))); }, $elm$core$Process$spawn( A2( $elm$core$Task$andThen, $elm$core$Platform$sendToSelf(router), $elm$browser$Browser$AnimationManager$rAF))); }); var $elm$browser$Browser$AnimationManager$Delta = function (a) { return {$: 'Delta', a: a}; }; var $elm$browser$Browser$AnimationManager$subMap = F2( function (func, sub) { if (sub.$ === 'Time') { var tagger = sub.a; return $elm$browser$Browser$AnimationManager$Time( A2($elm$core$Basics$composeL, func, tagger)); } else { var tagger = sub.a; return $elm$browser$Browser$AnimationManager$Delta( A2($elm$core$Basics$composeL, func, tagger)); } }); _Platform_effectManagers['Browser.AnimationManager'] = _Platform_createManager($elm$browser$Browser$AnimationManager$init, $elm$browser$Browser$AnimationManager$onEffects, $elm$browser$Browser$AnimationManager$onSelfMsg, 0, $elm$browser$Browser$AnimationManager$subMap); var $elm$browser$Browser$AnimationManager$subscription = _Platform_leaf('Browser.AnimationManager'); var $elm$browser$Browser$AnimationManager$onAnimationFrame = function (tagger) { return $elm$browser$Browser$AnimationManager$subscription( $elm$browser$Browser$AnimationManager$Time(tagger)); }; var $elm$browser$Browser$Events$onAnimationFrame = $elm$browser$Browser$AnimationManager$onAnimationFrame; var $mdgriffith$elm_animator$Animator$toSubscription = F3( function (toMsg, model, _v0) { var isRunning = _v0.a; return isRunning(model) ? $elm$browser$Browser$Events$onAnimationFrame(toMsg) : $elm$core$Platform$Sub$none; }); var $author$project$Bee$subscriptions = function (model) { return $elm$core$Platform$Sub$batch( _List_fromArray( [ $elm$browser$Browser$Events$onResize( F2( function (w, h) { return $author$project$Bee$ReceiveNewViewportSize( {height: h, width: w}); })), $author$project$Bee$receiveIsDarkPort( function (dark) { return $author$project$Bee$SetColorMode( dark ? $author$project$Views$Constants$Night : $author$project$Views$Constants$Day); }), A3($mdgriffith$elm_animator$Animator$toSubscription, $author$project$Bee$Tick, model, $author$project$Bee$animator) ])); }; var $author$project$Bee$DoShuffle = function (a) { return {$: 'DoShuffle', a: a}; }; var $author$project$Bee$JustFound = function (a) { return {$: 'JustFound', a: a}; }; var $author$project$Bee$ReceiveWord = function (a) { return {$: 'ReceiveWord', a: a}; }; var $author$project$Views$Hive$ShuffleOp = F2( function (swaps, restoreCenter) { return {restoreCenter: restoreCenter, swaps: swaps}; }); var $author$project$Bee$Shuffled = function (a) { return {$: 'Shuffled', a: a}; }; var $author$project$Bee$Warning = function (a) { return {$: 'Warning', a: a}; }; var $author$project$Views$Hive$Between = F2( function (a, b) { return {$: 'Between', a: a, b: b}; }); var $mdgriffith$elm_animator$Animator$TransitionTo = F2( function (a, b) { return {$: 'TransitionTo', a: a, b: b}; }); var $mdgriffith$elm_animator$Animator$event = $mdgriffith$elm_animator$Animator$TransitionTo; var $mdgriffith$elm_animator$Animator$initializeSchedule = F2( function (waiting, steps) { initializeSchedule: while (true) { if (!steps.b) { return $elm$core$Maybe$Nothing; } else { if (steps.a.$ === 'Wait') { var additionalWait = steps.a.a; var moreSteps = steps.b; var $temp$waiting = A2($ianmackenzie$elm_units$Quantity$plus, waiting, additionalWait), $temp$steps = moreSteps; waiting = $temp$waiting; steps = $temp$steps; continue initializeSchedule; } else { var _v1 = steps.a; var dur = _v1.a; var checkpoint = _v1.b; var moreSteps = steps.b; return $elm$core$Maybe$Just( _Utils_Tuple2( A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, waiting, A3($mdgriffith$elm_animator$Internal$Timeline$Event, dur, checkpoint, $elm$core$Maybe$Nothing), _List_Nil), moreSteps)); } } } }); var $mdgriffith$elm_animator$Internal$Timeline$addToDwell = F2( function (duration, maybeDwell) { if (!$ianmackenzie$elm_units$Duration$inMilliseconds(duration)) { return maybeDwell; } else { if (maybeDwell.$ === 'Nothing') { return $elm$core$Maybe$Just(duration); } else { var existing = maybeDwell.a; return $elm$core$Maybe$Just( A2($ianmackenzie$elm_units$Quantity$plus, duration, existing)); } } }); var $mdgriffith$elm_animator$Internal$Timeline$extendEventDwell = F2( function (extendBy, thisEvent) { var at = thisEvent.a; var ev = thisEvent.b; var maybeDwell = thisEvent.c; return (!$ianmackenzie$elm_units$Duration$inMilliseconds(extendBy)) ? thisEvent : A3( $mdgriffith$elm_animator$Internal$Timeline$Event, at, ev, A2($mdgriffith$elm_animator$Internal$Timeline$addToDwell, extendBy, maybeDwell)); }); var $mdgriffith$elm_animator$Animator$stepsToEvents = F2( function (currentStep, _v0) { var delay = _v0.a; var startEvent = _v0.b; var events = _v0.c; if (!events.b) { if (currentStep.$ === 'Wait') { var waiting = currentStep.a; return A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, delay, A2($mdgriffith$elm_animator$Internal$Timeline$extendEventDwell, waiting, startEvent), events); } else { var dur = currentStep.a; var checkpoint = currentStep.b; return A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, delay, startEvent, _List_fromArray( [ A3($mdgriffith$elm_animator$Internal$Timeline$Event, dur, checkpoint, $elm$core$Maybe$Nothing) ])); } } else { var _v3 = events.a; var durationTo = _v3.a; var recentEvent = _v3.b; var maybeDwell = _v3.c; var remaining = events.b; if (currentStep.$ === 'Wait') { var dur = currentStep.a; return A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, delay, startEvent, A2( $elm$core$List$cons, A3( $mdgriffith$elm_animator$Internal$Timeline$Event, durationTo, recentEvent, A2($mdgriffith$elm_animator$Internal$Timeline$addToDwell, dur, maybeDwell)), remaining)); } else { var dur = currentStep.a; var checkpoint = currentStep.b; return _Utils_eq(checkpoint, recentEvent) ? A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, delay, startEvent, A2( $elm$core$List$cons, A3( $mdgriffith$elm_animator$Internal$Timeline$Event, durationTo, recentEvent, A2($mdgriffith$elm_animator$Internal$Timeline$addToDwell, dur, maybeDwell)), remaining)) : A3( $mdgriffith$elm_animator$Internal$Timeline$Schedule, delay, startEvent, A2( $elm$core$List$cons, A3($mdgriffith$elm_animator$Internal$Timeline$Event, dur, checkpoint, $elm$core$Maybe$Nothing), events)); } } }); var $mdgriffith$elm_animator$Animator$interrupt = F2( function (steps, _v0) { var tl = _v0.a; return $mdgriffith$elm_animator$Internal$Timeline$Timeline( _Utils_update( tl, { interruption: function () { var _v1 = A2( $mdgriffith$elm_animator$Animator$initializeSchedule, $mdgriffith$elm_animator$Animator$millis(0), steps); if (_v1.$ === 'Nothing') { return tl.interruption; } else { var _v2 = _v1.a; var schedule = _v2.a; var otherSteps = _v2.b; return A2( $elm$core$List$cons, A3($elm$core$List$foldl, $mdgriffith$elm_animator$Animator$stepsToEvents, schedule, otherSteps), tl.interruption); } }(), running: true })); }); var $author$project$Views$Hive$applyPositions = F2( function (newPositions, state) { return A2( $mdgriffith$elm_animator$Animator$interrupt, _List_fromArray( [ A2( $mdgriffith$elm_animator$Animator$event, $author$project$Views$Hive$options.speed, A2( $author$project$Views$Hive$Between, $author$project$Views$Hive$currentPositions(state), newPositions)), A2( $mdgriffith$elm_animator$Animator$event, $author$project$Views$Hive$options.speed, $author$project$Views$Hive$At(newPositions)) ]), state); }); var $elm$random$Random$Generate = function (a) { return {$: 'Generate', a: a}; }; var $elm$random$Random$Seed = F2( function (a, b) { return {$: 'Seed', a: a, b: b}; }); var $elm$random$Random$next = function (_v0) { var state0 = _v0.a; var incr = _v0.b; return A2($elm$random$Random$Seed, ((state0 * 1664525) + incr) >>> 0, incr); }; var $elm$random$Random$initialSeed = function (x) { var _v0 = $elm$random$Random$next( A2($elm$random$Random$Seed, 0, 1013904223)); var state1 = _v0.a; var incr = _v0.b; var state2 = (state1 + x) >>> 0; return $elm$random$Random$next( A2($elm$random$Random$Seed, state2, incr)); }; var $elm$time$Time$Name = function (a) { return {$: 'Name', a: a}; }; var $elm$time$Time$Offset = function (a) { return {$: 'Offset', a: a}; }; var $elm$time$Time$Zone = F2( function (a, b) { return {$: 'Zone', a: a, b: b}; }); var $elm$time$Time$customZone = $elm$time$Time$Zone; var $elm$time$Time$now = _Time_now($elm$time$Time$millisToPosix); var $elm$random$Random$init = A2( $elm$core$Task$andThen, function (time) { return $elm$core$Task$succeed( $elm$random$Random$initialSeed( $elm$time$Time$posixToMillis(time))); }, $elm$time$Time$now); var $elm$random$Random$step = F2( function (_v0, seed) { var generator = _v0.a; return generator(seed); }); var $elm$random$Random$onEffects = F3( function (router, commands, seed) { if (!commands.b) { return $elm$core$Task$succeed(seed); } else { var generator = commands.a.a; var rest = commands.b; var _v1 = A2($elm$random$Random$step, generator, seed); var value = _v1.a; var newSeed = _v1.b; return A2( $elm$core$Task$andThen, function (_v2) { return A3($elm$random$Random$onEffects, router, rest, newSeed); }, A2($elm$core$Platform$sendToApp, router, value)); } }); var $elm$random$Random$onSelfMsg = F3( function (_v0, _v1, seed) { return $elm$core$Task$succeed(seed); }); var $elm$random$Random$Generator = function (a) { return {$: 'Generator', a: a}; }; var $elm$random$Random$map = F2( function (func, _v0) { var genA = _v0.a; return $elm$random$Random$Generator( function (seed0) { var _v1 = genA(seed0); var a = _v1.a; var seed1 = _v1.b; return _Utils_Tuple2( func(a), seed1); }); }); var $elm$random$Random$cmdMap = F2( function (func, _v0) { var generator = _v0.a; return $elm$random$Random$Generate( A2($elm$random$Random$map, func, generator)); }); _Platform_effectManagers['Random'] = _Platform_createManager($elm$random$Random$init, $elm$random$Random$onEffects, $elm$random$Random$onSelfMsg, $elm$random$Random$cmdMap); var $elm$random$Random$command = _Platform_leaf('Random'); var $elm$random$Random$generate = F2( function (tagger, generator) { return $elm$random$Random$command( $elm$random$Random$Generate( A2($elm$random$Random$map, tagger, generator))); }); var $author$project$Bee$NoOp = function (a) { return {$: 'NoOp', a: a}; }; var $elm$core$Task$onError = _Scheduler_onError; var $elm$core$Task$attempt = F2( function (resultToMessage, task) { return $elm$core$Task$command( $elm$core$Task$Perform( A2( $elm$core$Task$onError, A2( $elm$core$Basics$composeL, A2($elm$core$Basics$composeL, $elm$core$Task$succeed, resultToMessage), $elm$core$Result$Err), A2( $elm$core$Task$andThen, A2( $elm$core$Basics$composeL, A2($elm$core$Basics$composeL, $elm$core$Task$succeed, resultToMessage), $elm$core$Result$Ok), task)))); }); var $elm$browser$Browser$Dom$focus = _Browser_call('focus'); var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); var $elm$core$Debug$toString = _Debug_toString; var $author$project$Bee$initialFocusTask = function (model) { var probablyDesktop = (_Utils_cmp(model.viewport.width, 2 * $author$project$Bee$desiredColumnWidth) > 0) && (_Utils_cmp(model.viewport.height, 2 * $author$project$Bee$desiredColumnWidth) > 0); return probablyDesktop ? A2( $elm$core$Task$attempt, function (err) { return $author$project$Bee$NoOp( $elm$core$Debug$toString(err)); }, $elm$browser$Browser$Dom$focus('input')) : $elm$core$Platform$Cmd$none; }; var $elm$core$Bitwise$xor = _Bitwise_xor; var $elm$random$Random$peel = function (_v0) { var state = _v0.a; var word = (state ^ (state >>> ((state >>> 28) + 4))) * 277803737; return ((word >>> 22) ^ word) >>> 0; }; var $elm$random$Random$int = F2( function (a, b) { return $elm$random$Random$Generator( function (seed0) { var _v0 = (_Utils_cmp(a, b) < 0) ? _Utils_Tuple2(a, b) : _Utils_Tuple2(b, a); var lo = _v0.a; var hi = _v0.b; var range = (hi - lo) + 1; if (!((range - 1) & range)) { return _Utils_Tuple2( (((range - 1) & $elm$random$Random$peel(seed0)) >>> 0) + lo, $elm$random$Random$next(seed0)); } else { var threshhold = (((-range) >>> 0) % range) >>> 0; var accountForBias = function (seed) { accountForBias: while (true) { var x = $elm$random$Random$peel(seed); var seedN = $elm$random$Random$next(seed); if (_Utils_cmp(x, threshhold) < 0) { var $temp$seed = seedN; seed = $temp$seed; continue accountForBias; } else { return _Utils_Tuple2((x % range) + lo, seedN); } } }; return accountForBias(seed0); } }); }); var $elm$core$Debug$log = _Debug_log; var $elm$random$Random$map2 = F3( function (func, _v0, _v1) { var genA = _v0.a; var genB = _v1.a; return $elm$random$Random$Generator( function (seed0) { var _v2 = genA(seed0); var a = _v2.a; var seed1 = _v2.b; var _v3 = genB(seed1); var b = _v3.a; var seed2 = _v3.b; return _Utils_Tuple2( A2(func, a, b), seed2); }); }); var $elm$random$Random$listHelp = F4( function (revList, n, gen, seed) { listHelp: while (true) { if (n < 1) { return _Utils_Tuple2(revList, seed); } else { var _v0 = gen(seed); var value = _v0.a; var newSeed = _v0.b; var $temp$revList = A2($elm$core$List$cons, value, revList), $temp$n = n - 1, $temp$gen = gen, $temp$seed = newSeed; revList = $temp$revList; n = $temp$n; gen = $temp$gen; seed = $temp$seed; continue listHelp; } } }); var $elm$random$Random$list = F2( function (n, _v0) { var gen = _v0.a; return $elm$random$Random$Generator( function (seed) { return A4($elm$random$Random$listHelp, _List_Nil, n, gen, seed); }); }); var $owanturist$elm_union_find$UnionFind$findFast = F2( function (id, dict) { findFast: while (true) { var _v0 = A2($elm$core$Dict$get, id, dict); if (_v0.$ === 'Nothing') { return id; } else { var cursor = _v0.a; if (_Utils_eq(id, cursor)) { return id; } else { var $temp$id = cursor, $temp$dict = dict; id = $temp$id; dict = $temp$dict; continue findFast; } } } }); var $owanturist$elm_union_find$UnionFind$find = F2( function (id, _v0) { var dict = _v0.b; return A2($owanturist$elm_union_find$UnionFind$findFast, id, dict); }); var $elm$core$Array$isEmpty = function (_v0) { var len = _v0.a; return !len; }; var $owanturist$elm_union_find$UnionFind$QuickUnionPathCompression = F2( function (a, b) { return {$: 'QuickUnionPathCompression', a: a, b: b}; }); var $owanturist$elm_union_find$UnionFind$quickUnionPathCompression = A2($owanturist$elm_union_find$UnionFind$QuickUnionPathCompression, 0, $elm$core$Dict$empty); var $owanturist$elm_union_find$UnionFind$findCompressed = F2( function (id, dict) { var _v0 = A2($elm$core$Dict$get, id, dict); if (_v0.$ === 'Nothing') { return _Utils_Tuple2( id, A3($elm$core$Dict$insert, id, id, dict)); } else { var cursor = _v0.a; if (_Utils_eq(id, cursor)) { return _Utils_Tuple2(id, dict); } else { var _v1 = A2($owanturist$elm_union_find$UnionFind$findCompressed, cursor, dict); var parent = _v1.a; var nextDict = _v1.b; return _Utils_Tuple2( parent, A3($elm$core$Dict$insert, id, parent, nextDict)); } } }); var $owanturist$elm_union_find$UnionFind$union = F3( function (left, right, _v0) { var count_ = _v0.a; var dict = _v0.b; var _v1 = A2($owanturist$elm_union_find$UnionFind$findCompressed, left, dict); var leftRoot = _v1.a; var leftDict = _v1.b; var _v2 = A2($owanturist$elm_union_find$UnionFind$findCompressed, right, leftDict); var rightRoot = _v2.a; var rightDict = _v2.b; return _Utils_eq(leftRoot, rightRoot) ? A2($owanturist$elm_union_find$UnionFind$QuickUnionPathCompression, count_, rightDict) : A2( $owanturist$elm_union_find$UnionFind$QuickUnionPathCompression, count_ + 1, A3($elm$core$Dict$insert, leftRoot, rightRoot, rightDict)); }); var $elm_community$random_extra$Utils$selectUniqByIndexes = F2( function (values, randomIndexes) { var modByLength = $elm$core$Basics$modBy( $elm$core$Array$length(values)); var step = F2( function (randomIndex, _v1) { var uf = _v1.a; var acc = _v1.b; var leaderOfElement = A2($owanturist$elm_union_find$UnionFind$find, randomIndex, uf); var leaderOfNextElement = A2( $owanturist$elm_union_find$UnionFind$find, modByLength(leaderOfElement + 1), uf); var _v0 = A2($elm$core$Array$get, leaderOfElement, values); if (_v0.$ === 'Nothing') { return _Utils_Tuple2(uf, acc); } else { var value = _v0.a; return _Utils_Tuple2( A3($owanturist$elm_union_find$UnionFind$union, leaderOfElement, leaderOfNextElement, uf), A2($elm$core$List$cons, value, acc)); } }); return $elm$core$Array$isEmpty(values) ? _List_Nil : A3( $elm$core$List$foldr, step, _Utils_Tuple2($owanturist$elm_union_find$UnionFind$quickUnionPathCompression, _List_Nil), randomIndexes).b; }); var $elm_community$random_extra$Random$List$shuffle = function (list) { var values = $elm$core$Array$fromList(list); var length = $elm$core$Array$length(values); return A2( $elm$random$Random$map, $elm_community$random_extra$Utils$selectUniqByIndexes(values), A2( $elm$random$Random$list, length, A2($elm$random$Random$int, 0, length - 1))); }; var $elm$core$List$takeReverse = F3( function (n, list, kept) { takeReverse: while (true) { if (n <= 0) { return kept; } else { if (!list.b) { return kept; } else { var x = list.a; var xs = list.b; var $temp$n = n - 1, $temp$list = xs, $temp$kept = A2($elm$core$List$cons, x, kept); n = $temp$n; list = $temp$list; kept = $temp$kept; continue takeReverse; } } } }); var $elm$core$List$takeTailRec = F2( function (n, list) { return $elm$core$List$reverse( A3($elm$core$List$takeReverse, n, list, _List_Nil)); }); var $elm$core$List$takeFast = F3( function (ctr, n, list) { if (n <= 0) { return _List_Nil; } else { var _v0 = _Utils_Tuple2(n, list); _v0$1: while (true) { _v0$5: while (true) { if (!_v0.b.b) { return list; } else { if (_v0.b.b.b) { switch (_v0.a) { case 1: break _v0$1; case 2: var _v2 = _v0.b; var x = _v2.a; var _v3 = _v2.b; var y = _v3.a; return _List_fromArray( [x, y]); case 3: if (_v0.b.b.b.b) { var _v4 = _v0.b; var x = _v4.a; var _v5 = _v4.b; var y = _v5.a; var _v6 = _v5.b; var z = _v6.a; return _List_fromArray( [x, y, z]); } else { break _v0$5; } default: if (_v0.b.b.b.b && _v0.b.b.b.b.b) { var _v7 = _v0.b; var x = _v7.a; var _v8 = _v7.b; var y = _v8.a; var _v9 = _v8.b; var z = _v9.a; var _v10 = _v9.b; var w = _v10.a; var tl = _v10.b; return (ctr > 1000) ? A2( $elm$core$List$cons, x, A2( $elm$core$List$cons, y, A2( $elm$core$List$cons, z, A2( $elm$core$List$cons, w, A2($elm$core$List$takeTailRec, n - 4, tl))))) : A2( $elm$core$List$cons, x, A2( $elm$core$List$cons, y, A2( $elm$core$List$cons, z, A2( $elm$core$List$cons, w, A3($elm$core$List$takeFast, ctr + 1, n - 4, tl))))); } else { break _v0$5; } } } else { if (_v0.a === 1) { break _v0$1; } else { break _v0$5; } } } } return list; } var _v1 = _v0.b; var x = _v1.a; return _List_fromArray( [x]); } }); var $elm$core$List$take = F2( function (n, list) { return A3($elm$core$List$takeFast, 0, n, list); }); var $author$project$Views$Permutation$choose = F2( function (count, values) { return A2( $elm$random$Random$map, $elm$core$List$take(count), $elm_community$random_extra$Random$List$shuffle(values)); }); var $elm$random$Random$andThen = F2( function (callback, _v0) { var genA = _v0.a; return $elm$random$Random$Generator( function (seed) { var _v1 = genA(seed); var result = _v1.a; var newSeed = _v1.b; var _v2 = callback(result); var genB = _v2.a; return genB(newSeed); }); }); var $elm$random$Random$constant = function (value) { return $elm$random$Random$Generator( function (seed) { return _Utils_Tuple2(value, seed); }); }; var $author$project$Views$Permutation$definitely = F2( function (gen, x) { return A2( $elm$random$Random$andThen, function (x1) { return _Utils_eq(x1, x) ? A2($author$project$Views$Permutation$definitely, gen, x) : $elm$random$Random$constant(x1); }, gen(x)); }); var $elm$core$Elm$JsArray$push = _JsArray_push; var $elm$core$Elm$JsArray$singleton = _JsArray_singleton; var $elm$core$Array$insertTailInTree = F4( function (shift, index, tail, tree) { var pos = $elm$core$Array$bitMask & (index >>> shift); if (_Utils_cmp( pos, $elm$core$Elm$JsArray$length(tree)) > -1) { if (shift === 5) { return A2( $elm$core$Elm$JsArray$push, $elm$core$Array$Leaf(tail), tree); } else { var newSub = $elm$core$Array$SubTree( A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, $elm$core$Elm$JsArray$empty)); return A2($elm$core$Elm$JsArray$push, newSub, tree); } } else { var value = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); if (value.$ === 'SubTree') { var subTree = value.a; var newSub = $elm$core$Array$SubTree( A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, subTree)); return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); } else { var newSub = $elm$core$Array$SubTree( A4( $elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, $elm$core$Elm$JsArray$singleton(value))); return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); } } }); var $elm$core$Array$unsafeReplaceTail = F2( function (newTail, _v0) { var len = _v0.a; var startShift = _v0.b; var tree = _v0.c; var tail = _v0.d; var originalTailLen = $elm$core$Elm$JsArray$length(tail); var newTailLen = $elm$core$Elm$JsArray$length(newTail); var newArrayLen = len + (newTailLen - originalTailLen); if (_Utils_eq(newTailLen, $elm$core$Array$branchFactor)) { var overflow = _Utils_cmp(newArrayLen >>> $elm$core$Array$shiftStep, 1 << startShift) > 0; if (overflow) { var newShift = startShift + $elm$core$Array$shiftStep; var newTree = A4( $elm$core$Array$insertTailInTree, newShift, len, newTail, $elm$core$Elm$JsArray$singleton( $elm$core$Array$SubTree(tree))); return A4($elm$core$Array$Array_elm_builtin, newArrayLen, newShift, newTree, $elm$core$Elm$JsArray$empty); } else { return A4( $elm$core$Array$Array_elm_builtin, newArrayLen, startShift, A4($elm$core$Array$insertTailInTree, startShift, len, newTail, tree), $elm$core$Elm$JsArray$empty); } } else { return A4($elm$core$Array$Array_elm_builtin, newArrayLen, startShift, tree, newTail); } }); var $elm$core$Array$appendHelpTree = F2( function (toAppend, array) { var len = array.a; var tree = array.c; var tail = array.d; var itemsToAppend = $elm$core$Elm$JsArray$length(toAppend); var notAppended = ($elm$core$Array$branchFactor - $elm$core$Elm$JsArray$length(tail)) - itemsToAppend; var appended = A3($elm$core$Elm$JsArray$appendN, $elm$core$Array$branchFactor, tail, toAppend); var newArray = A2($elm$core$Array$unsafeReplaceTail, appended, array); if (notAppended < 0) { var nextTail = A3($elm$core$Elm$JsArray$slice, notAppended, itemsToAppend, toAppend); return A2($elm$core$Array$unsafeReplaceTail, nextTail, newArray); } else { return newArray; } }); var $elm$core$Elm$JsArray$foldl = _JsArray_foldl; var $elm$core$Array$builderFromArray = function (_v0) { var len = _v0.a; var tree = _v0.c; var tail = _v0.d; var helper = F2( function (node, acc) { if (node.$ === 'SubTree') { var subTree = node.a; return A3($elm$core$Elm$JsArray$foldl, helper, acc, subTree); } else { return A2($elm$core$List$cons, node, acc); } }); return { nodeList: A3($elm$core$Elm$JsArray$foldl, helper, _List_Nil, tree), nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail }; }; var $elm$core$Array$append = F2( function (a, _v0) { var aTail = a.d; var bLen = _v0.a; var bTree = _v0.c; var bTail = _v0.d; if (_Utils_cmp(bLen, $elm$core$Array$branchFactor * 4) < 1) { var foldHelper = F2( function (node, array) { if (node.$ === 'SubTree') { var tree = node.a; return A3($elm$core$Elm$JsArray$foldl, foldHelper, array, tree); } else { var leaf = node.a; return A2($elm$core$Array$appendHelpTree, leaf, array); } }); return A2( $elm$core$Array$appendHelpTree, bTail, A3($elm$core$Elm$JsArray$foldl, foldHelper, a, bTree)); } else { var foldHelper = F2( function (node, builder) { if (node.$ === 'SubTree') { var tree = node.a; return A3($elm$core$Elm$JsArray$foldl, foldHelper, builder, tree); } else { var leaf = node.a; return A2($elm$core$Array$appendHelpBuilder, leaf, builder); } }); return A2( $elm$core$Array$builderToArray, true, A2( $elm$core$Array$appendHelpBuilder, bTail, A3( $elm$core$Elm$JsArray$foldl, foldHelper, $elm$core$Array$builderFromArray(a), bTree))); } }); var $elm$core$Array$filter = F2( function (isGood, array) { return $elm$core$Array$fromList( A3( $elm$core$Array$foldr, F2( function (x, xs) { return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs; }), _List_Nil, array)); }); var $author$project$Views$Permutation$moveToHead = F2( function (x, _v0) { var p = _v0.a; var others = A2( $elm$core$Array$filter, $elm$core$Basics$neq(x), p.values); return _Utils_eq( $elm$core$Array$length(others), $elm$core$Array$length(p.values)) ? $author$project$Views$Permutation$Permutation(p) : $author$project$Views$Permutation$Permutation( { saved: p.saved, values: A2( $elm$core$Array$append, $elm$core$Array$fromList( _List_fromArray( [x])), others) }); }); var $elm$core$Array$setHelp = F4( function (shift, index, value, tree) { var pos = $elm$core$Array$bitMask & (index >>> shift); var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); if (_v0.$ === 'SubTree') { var subTree = _v0.a; var newSub = A4($elm$core$Array$setHelp, shift - $elm$core$Array$shiftStep, index, value, subTree); return A3( $elm$core$Elm$JsArray$unsafeSet, pos, $elm$core$Array$SubTree(newSub), tree); } else { var values = _v0.a; var newLeaf = A3($elm$core$Elm$JsArray$unsafeSet, $elm$core$Array$bitMask & index, value, values); return A3( $elm$core$Elm$JsArray$unsafeSet, pos, $elm$core$Array$Leaf(newLeaf), tree); } }); var $elm$core$Array$set = F3( function (index, value, array) { var len = array.a; var startShift = array.b; var tree = array.c; var tail = array.d; return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? array : ((_Utils_cmp( index, $elm$core$Array$tailIndex(len)) > -1) ? A4( $elm$core$Array$Array_elm_builtin, len, startShift, tree, A3($elm$core$Elm$JsArray$unsafeSet, $elm$core$Array$bitMask & index, value, tail)) : A4( $elm$core$Array$Array_elm_builtin, len, startShift, A4($elm$core$Array$setHelp, startShift, index, value, tree), tail)); }); var $author$project$Views$Permutation$swap = F3( function (idx1, idx2, _v0) { var p = _v0.a; var fixIndex = $elm$core$Basics$modBy( $elm$core$Array$length(p.values)); var fixed1 = fixIndex(idx1); var fixed2 = fixIndex(idx2); return $author$project$Views$Permutation$Permutation( { saved: p.saved, values: A3( $elm$core$Array$set, fixed2, A2($author$project$Views$Permutation$safeGet, fixed1, p), A3( $elm$core$Array$set, fixed1, A2($author$project$Views$Permutation$safeGet, fixed2, p), p.values)) }); }); var $author$project$Views$Permutation$rotate = F2( function (idxs, perm) { if (idxs.b) { var firstIdx = idxs.a; var rest = idxs.b; var loop = F2( function (is, p) { loop: while (true) { if (is.b) { if (is.b.b) { var i = is.a; var _v2 = is.b; var j = _v2.a; var more = _v2.b; var $temp$is = A2($elm$core$List$cons, j, more), $temp$p = A3($author$project$Views$Permutation$swap, i, j, p); is = $temp$is; p = $temp$p; continue loop; } else { var lastIdx = is.a; return A3($author$project$Views$Permutation$swap, lastIdx, firstIdx, p); } } else { return p; } } }); return A2(loop, rest, perm); } else { return perm; } }); var $author$project$Views$Hive$shuffle = function (op) { var numDigits = (op.swaps < 1) ? 2 : (op.swaps + 1); var doSwaps = function (state) { return A2( $elm$random$Random$map, function (idxs) { return A2($author$project$Views$Permutation$rotate, idxs, state); }, A2( $author$project$Views$Permutation$choose, numDigits, A2($elm$core$List$range, 0, 6))); }; var doRestore = op.restoreCenter ? $author$project$Views$Permutation$moveToHead($author$project$Views$Hive$Center) : $elm$core$Basics$identity; return $author$project$Views$Permutation$definitely( A2( $elm$core$Basics$composeR, doSwaps, $elm$random$Random$map(doRestore))); }; var $elm$core$List$singleton = function (value) { return _List_fromArray( [value]); }; var $author$project$Bee$tempLocalInsertFound = F3( function (strings, word, data) { return _Utils_update( data, { found: A2( $elm$core$List$cons, _Utils_Tuple2( word, A2( $elm$core$Maybe$withDefault, _List_fromArray( [strings.guestLabel]), A2($elm$core$Maybe$map, $elm$core$List$singleton, data.user))), data.found) }); }); var $mdgriffith$elm_animator$Animator$update = F3( function (newTime, _v0, model) { var updateModel = _v0.b; return A2(updateModel, newTime, model); }); var $elm$random$Random$float = F2( function (a, b) { return $elm$random$Random$Generator( function (seed0) { var seed1 = $elm$random$Random$next(seed0); var range = $elm$core$Basics$abs(b - a); var n1 = $elm$random$Random$peel(seed1); var n0 = $elm$random$Random$peel(seed0); var lo = (134217727 & n1) * 1.0; var hi = (67108863 & n0) * 1.0; var val = ((hi * 134217728.0) + lo) / 9007199254740992.0; var scaled = (val * range) + a; return _Utils_Tuple2( scaled, $elm$random$Random$next(seed1)); }); }); var $elm$random$Random$getByWeight = F3( function (_v0, others, countdown) { getByWeight: while (true) { var weight = _v0.a; var value = _v0.b; if (!others.b) { return value; } else { var second = others.a; var otherOthers = others.b; if (_Utils_cmp( countdown, $elm$core$Basics$abs(weight)) < 1) { return value; } else { var $temp$_v0 = second, $temp$others = otherOthers, $temp$countdown = countdown - $elm$core$Basics$abs(weight); _v0 = $temp$_v0; others = $temp$others; countdown = $temp$countdown; continue getByWeight; } } } }); var $elm$core$List$sum = function (numbers) { return A3($elm$core$List$foldl, $elm$core$Basics$add, 0, numbers); }; var $elm$random$Random$weighted = F2( function (first, others) { var normalize = function (_v0) { var weight = _v0.a; return $elm$core$Basics$abs(weight); }; var total = normalize(first) + $elm$core$List$sum( A2($elm$core$List$map, normalize, others)); return A2( $elm$random$Random$map, A2($elm$random$Random$getByWeight, first, others), A2($elm$random$Random$float, 0, total)); }); var $author$project$Bee$update = F3( function (backend, msg, model) { var strings = $author$project$Language$stringsFor(model.language); var _v0 = model.data; if (_v0.$ === 'Nothing') { switch (msg.$) { case 'ReceivePuzzle': if (msg.a.$ === 'Ok') { var data = msg.a.a; return _Utils_Tuple2( _Utils_update( model, { data: $elm$core$Maybe$Just(data) }), $author$project$Bee$initialFocusTask(model)); } else { var err = msg.a.a; return _Utils_Tuple2( A2( $elm$core$Debug$log, $elm$core$Debug$toString(err), _Utils_update( model, { message: $author$project$Bee$Warning( 'Error: ' + $elm$core$Debug$toString(err)) })), $elm$core$Platform$Cmd$none); } case 'ReceiveNewViewportSize': var size = msg.a; return _Utils_Tuple2( _Utils_update( model, {viewport: size}), $elm$core$Platform$Cmd$none); case 'SetColorMode': var mode = msg.a; return _Utils_Tuple2( _Utils_update( model, {colorMode: mode}), $elm$core$Platform$Cmd$none); default: return _Utils_Tuple2( A2( $elm$core$Debug$log, 'Puzzle not loaded; ignoring msg' + $elm$core$Debug$toString(msg), model), $elm$core$Platform$Cmd$none); } } else { var data = _v0.a; switch (msg.$) { case 'Type': var c = msg.a; return _Utils_Tuple2( _Utils_update( model, { input: _Utils_ap( model.input, _List_fromArray( [c])), message: $author$project$Bee$None }), $elm$core$Platform$Cmd$none); case 'Edit': var s = msg.a; return _Utils_Tuple2( _Utils_update( model, { input: $elm$core$String$toList( $elm$core$String$toLower(s)), message: $author$project$Bee$None }), $elm$core$Platform$Cmd$none); case 'Delete': return _Utils_Tuple2( _Utils_update( model, { input: A2( $elm$core$Basics$composeL, A2( $elm$core$Basics$composeL, $elm$core$String$toList, A2($elm$core$String$slice, 0, -1)), $elm$core$String$fromList)(model.input), message: $author$project$Bee$None }), $elm$core$Platform$Cmd$none); case 'Shuffle': var restoreCenter = A2( $elm$random$Random$weighted, _Utils_Tuple2(2, false), _List_fromArray( [ _Utils_Tuple2(1, true) ])); var numSwaps = A2($elm$random$Random$int, 1, 6); return _Utils_Tuple2( model, A2( $elm$random$Random$generate, $author$project$Bee$DoShuffle, A3($elm$random$Random$map2, $author$project$Views$Hive$ShuffleOp, numSwaps, restoreCenter))); case 'DoShuffle': var op = msg.a; return _Utils_Tuple2( model, A2( $elm$random$Random$generate, $author$project$Bee$Shuffled, A2( $author$project$Views$Hive$shuffle, op, $author$project$Views$Hive$currentPositions(model.letters)))); case 'Shuffled': var newPositions = msg.a; return _Utils_Tuple2( _Utils_update( model, { letters: A2($author$project$Views$Hive$applyPositions, newPositions, model.letters) }), $elm$core$Platform$Cmd$none); case 'ResortWords': var order = msg.a; return _Utils_Tuple2( _Utils_update( model, {wordSort: order}), $elm$core$Platform$Cmd$none); case 'Submit': var _v3 = $author$project$Bee$inputError(model); if (_v3.$ === 'Just') { return _Utils_Tuple2( _Utils_update( model, {input: _List_Nil}), $elm$core$Platform$Cmd$none); } else { return _Utils_Tuple2( model, A2( backend.postWord, $author$project$Bee$ReceiveWord, $elm$core$String$fromList(model.input))); } case 'ShowPuzzle': var id = msg.a; return _Utils_Tuple2( _Utils_update( model, { message: $author$project$Bee$None, selectedPuzzleId: $elm$core$Maybe$Just(id) }), A2( backend.getPuzzle, $elm$core$Maybe$Just(id), $author$project$Bee$ReceivePuzzle)); case 'SetColorMode': var mode = msg.a; return _Utils_Tuple2( _Utils_update( model, {colorMode: mode}), $elm$core$Platform$Cmd$none); case 'SetLanguage': var language = msg.a; return _Utils_Tuple2( _Utils_update( model, {language: language}), $elm$core$Platform$Cmd$none); case 'ReceivePuzzle': if (msg.a.$ === 'Ok') { var newData = msg.a.a; var newLetters = (!_Utils_eq(newData.id, data.id)) ? $mdgriffith$elm_animator$Animator$init($author$project$Views$Hive$startPositions) : model.letters; return _Utils_Tuple2( _Utils_update( model, { data: $elm$core$Maybe$Just(newData), letters: newLetters }), $elm$core$Platform$Cmd$none); } else { var err = msg.a.a; return _Utils_Tuple2( A2( $elm$core$Debug$log, $elm$core$Debug$toString(err), _Utils_update( model, { message: $author$project$Bee$Warning('Error while loading puzzle state') })), $elm$core$Platform$Cmd$none); } case 'ReceiveWord': if (msg.a.$ === 'Ok') { var word = msg.a.a; var _v4 = data.user; if (_v4.$ === 'Just') { return _Utils_Tuple2( _Utils_update( model, { input: _List_Nil, message: $author$project$Bee$JustFound(word) }), A2(backend.getPuzzle, model.selectedPuzzleId, $author$project$Bee$ReceivePuzzle)); } else { return _Utils_Tuple2( _Utils_update( model, { data: A2( $elm$core$Maybe$map, A2($author$project$Bee$tempLocalInsertFound, strings, word), model.data), input: _List_Nil, message: $author$project$Bee$JustFound(word) }), $elm$core$Platform$Cmd$none); } } else { var err = msg.a.a; return _Utils_Tuple2( A2( $elm$core$Debug$log, $elm$core$Debug$toString(err), _Utils_update( model, { input: _List_Nil, message: $author$project$Bee$Warning(strings.notInWordListMessage) })), $elm$core$Platform$Cmd$none); } case 'ReceiveNewViewportSize': var size = msg.a; return _Utils_Tuple2( _Utils_update( model, {viewport: size}), $elm$core$Platform$Cmd$none); case 'Tick': var newTime = msg.a; return _Utils_Tuple2( A3($mdgriffith$elm_animator$Animator$update, newTime, $author$project$Bee$animator, model), $elm$core$Platform$Cmd$none); default: var str = msg.a; return _Utils_Tuple2( A2($elm$core$Debug$log, str, model), $elm$core$Platform$Cmd$none); } } }); var $author$project$Bee$beeMain = F2( function (decodeFlags, backend) { return $elm$browser$Browser$element( { init: A2( $elm$core$Basics$composeL, $author$project$Bee$init(backend), decodeFlags), subscriptions: $author$project$Bee$subscriptions, update: $author$project$Bee$update(backend), view: $author$project$Bee$beeView }); }); var $author$project$Puzzle$relativeBaseUrl = '/'; var $author$project$Puzzle$Hints = F2( function (maxScore, pangramCount) { return {maxScore: maxScore, pangramCount: pangramCount}; }); var $author$project$Puzzle$Puzzle = F7( function (expiration, displayWeekday, displayDate, printDate, editor, centerLetter, outerLetters) { return {centerLetter: centerLetter, displayDate: displayDate, displayWeekday: displayWeekday, editor: editor, expiration: expiration, outerLetters: outerLetters, printDate: printDate}; }); var $author$project$Puzzle$PuzzleResponse = F9( function (user, id, nextPuzzleId, previousPuzzleId, puzzle, found, hints, friends, group) { return {found: found, friends: friends, group: group, hints: hints, id: id, nextPuzzleId: nextPuzzleId, previousPuzzleId: previousPuzzleId, puzzle: puzzle, user: user}; }); var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom = $elm$json$Json$Decode$map2($elm$core$Basics$apR); var $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs; var $elm$json$Json$Decode$dict = function (decoder) { return A2( $elm$json$Json$Decode$map, $elm$core$Dict$fromList, $elm$json$Json$Decode$keyValuePairs(decoder)); }; var $elm$json$Json$Decode$decodeString = _Json_runOnString; var $elm$http$Http$BadStatus_ = F2( function (a, b) { return {$: 'BadStatus_', a: a, b: b}; }); var $elm$http$Http$BadUrl_ = function (a) { return {$: 'BadUrl_', a: a}; }; var $elm$http$Http$GoodStatus_ = F2( function (a, b) { return {$: 'GoodStatus_', a: a, b: b}; }); var $elm$http$Http$NetworkError_ = {$: 'NetworkError_'}; var $elm$http$Http$Receiving = function (a) { return {$: 'Receiving', a: a}; }; var $elm$http$Http$Sending = function (a) { return {$: 'Sending', a: a}; }; var $elm$http$Http$Timeout_ = {$: 'Timeout_'}; var $elm$core$Maybe$isJust = function (maybe) { if (maybe.$ === 'Just') { return true; } else { return false; } }; var $elm$core$Dict$getMin = function (dict) { getMin: while (true) { if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { var left = dict.d; var $temp$dict = left; dict = $temp$dict; continue getMin; } else { return dict; } } }; var $elm$core$Dict$moveRedLeft = function (dict) { if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) { var clr = dict.a; var k = dict.b; var v = dict.c; var _v1 = dict.d; var lClr = _v1.a; var lK = _v1.b; var lV = _v1.c; var lLeft = _v1.d; var lRight = _v1.e; var _v2 = dict.e; var rClr = _v2.a; var rK = _v2.b; var rV = _v2.c; var rLeft = _v2.d; var _v3 = rLeft.a; var rlK = rLeft.b; var rlV = rLeft.c; var rlL = rLeft.d; var rlR = rLeft.e; var rRight = _v2.e; return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rlK, rlV, A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), rlL), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight)); } else { var clr = dict.a; var k = dict.b; var v = dict.c; var _v4 = dict.d; var lClr = _v4.a; var lK = _v4.b; var lV = _v4.c; var lLeft = _v4.d; var lRight = _v4.e; var _v5 = dict.e; var rClr = _v5.a; var rK = _v5.b; var rV = _v5.c; var rLeft = _v5.d; var rRight = _v5.e; if (clr.$ === 'Black') { return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } } } else { return dict; } }; var $elm$core$Dict$moveRedRight = function (dict) { if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) { var clr = dict.a; var k = dict.b; var v = dict.c; var _v1 = dict.d; var lClr = _v1.a; var lK = _v1.b; var lV = _v1.c; var _v2 = _v1.d; var _v3 = _v2.a; var llK = _v2.b; var llV = _v2.c; var llLeft = _v2.d; var llRight = _v2.e; var lRight = _v1.e; var _v4 = dict.e; var rClr = _v4.a; var rK = _v4.b; var rV = _v4.c; var rLeft = _v4.d; var rRight = _v4.e; return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, lRight, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight))); } else { var clr = dict.a; var k = dict.b; var v = dict.c; var _v5 = dict.d; var lClr = _v5.a; var lK = _v5.b; var lV = _v5.c; var lLeft = _v5.d; var lRight = _v5.e; var _v6 = dict.e; var rClr = _v6.a; var rK = _v6.b; var rV = _v6.c; var rLeft = _v6.d; var rRight = _v6.e; if (clr.$ === 'Black') { return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } else { return A5( $elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); } } } else { return dict; } }; var $elm$core$Dict$removeHelpPrepEQGT = F7( function (targetKey, dict, color, key, value, left, right) { if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { var _v1 = left.a; var lK = left.b; var lV = left.c; var lLeft = left.d; var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, color, lK, lV, lLeft, A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right)); } else { _v2$2: while (true) { if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) { if (right.d.$ === 'RBNode_elm_builtin') { if (right.d.a.$ === 'Black') { var _v3 = right.a; var _v4 = right.d; var _v5 = _v4.a; return $elm$core$Dict$moveRedRight(dict); } else { break _v2$2; } } else { var _v6 = right.a; var _v7 = right.d; return $elm$core$Dict$moveRedRight(dict); } } else { break _v2$2; } } return dict; } }); var $elm$core$Dict$removeMin = function (dict) { if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { var color = dict.a; var key = dict.b; var value = dict.c; var left = dict.d; var lColor = left.a; var lLeft = left.d; var right = dict.e; if (lColor.$ === 'Black') { if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { var _v3 = lLeft.a; return A5( $elm$core$Dict$RBNode_elm_builtin, color, key, value, $elm$core$Dict$removeMin(left), right); } else { var _v4 = $elm$core$Dict$moveRedLeft(dict); if (_v4.$ === 'RBNode_elm_builtin') { var nColor = _v4.a; var nKey = _v4.b; var nValue = _v4.c; var nLeft = _v4.d; var nRight = _v4.e; return A5( $elm$core$Dict$balance, nColor, nKey, nValue, $elm$core$Dict$removeMin(nLeft), nRight); } else { return $elm$core$Dict$RBEmpty_elm_builtin; } } } else { return A5( $elm$core$Dict$RBNode_elm_builtin, color, key, value, $elm$core$Dict$removeMin(left), right); } } else { return $elm$core$Dict$RBEmpty_elm_builtin; } }; var $elm$core$Dict$removeHelp = F2( function (targetKey, dict) { if (dict.$ === 'RBEmpty_elm_builtin') { return $elm$core$Dict$RBEmpty_elm_builtin; } else { var color = dict.a; var key = dict.b; var value = dict.c; var left = dict.d; var right = dict.e; if (_Utils_cmp(targetKey, key) < 0) { if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) { var _v4 = left.a; var lLeft = left.d; if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { var _v6 = lLeft.a; return A5( $elm$core$Dict$RBNode_elm_builtin, color, key, value, A2($elm$core$Dict$removeHelp, targetKey, left), right); } else { var _v7 = $elm$core$Dict$moveRedLeft(dict); if (_v7.$ === 'RBNode_elm_builtin') { var nColor = _v7.a; var nKey = _v7.b; var nValue = _v7.c; var nLeft = _v7.d; var nRight = _v7.e; return A5( $elm$core$Dict$balance, nColor, nKey, nValue, A2($elm$core$Dict$removeHelp, targetKey, nLeft), nRight); } else { return $elm$core$Dict$RBEmpty_elm_builtin; } } } else { return A5( $elm$core$Dict$RBNode_elm_builtin, color, key, value, A2($elm$core$Dict$removeHelp, targetKey, left), right); } } else { return A2( $elm$core$Dict$removeHelpEQGT, targetKey, A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right)); } } }); var $elm$core$Dict$removeHelpEQGT = F2( function (targetKey, dict) { if (dict.$ === 'RBNode_elm_builtin') { var color = dict.a; var key = dict.b; var value = dict.c; var left = dict.d; var right = dict.e; if (_Utils_eq(targetKey, key)) { var _v1 = $elm$core$Dict$getMin(right); if (_v1.$ === 'RBNode_elm_builtin') { var minKey = _v1.b; var minValue = _v1.c; return A5( $elm$core$Dict$balance, color, minKey, minValue, left, $elm$core$Dict$removeMin(right)); } else { return $elm$core$Dict$RBEmpty_elm_builtin; } } else { return A5( $elm$core$Dict$balance, color, key, value, left, A2($elm$core$Dict$removeHelp, targetKey, right)); } } else { return $elm$core$Dict$RBEmpty_elm_builtin; } }); var $elm$core$Dict$remove = F2( function (key, dict) { var _v0 = A2($elm$core$Dict$removeHelp, key, dict); if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { var _v1 = _v0.a; var k = _v0.b; var v = _v0.c; var l = _v0.d; var r = _v0.e; return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); } else { var x = _v0; return x; } }); var $elm$core$Dict$update = F3( function (targetKey, alter, dictionary) { var _v0 = alter( A2($elm$core$Dict$get, targetKey, dictionary)); if (_v0.$ === 'Just') { var value = _v0.a; return A3($elm$core$Dict$insert, targetKey, value, dictionary); } else { return A2($elm$core$Dict$remove, targetKey, dictionary); } }); var $elm$http$Http$expectStringResponse = F2( function (toMsg, toResult) { return A3( _Http_expect, '', $elm$core$Basics$identity, A2($elm$core$Basics$composeR, toResult, toMsg)); }); var $elm$core$Result$mapError = F2( function (f, result) { if (result.$ === 'Ok') { var v = result.a; return $elm$core$Result$Ok(v); } else { var e = result.a; return $elm$core$Result$Err( f(e)); } }); var $elm$http$Http$BadBody = function (a) { return {$: 'BadBody', a: a}; }; var $elm$http$Http$BadStatus = function (a) { return {$: 'BadStatus', a: a}; }; var $elm$http$Http$BadUrl = function (a) { return {$: 'BadUrl', a: a}; }; var $elm$http$Http$NetworkError = {$: 'NetworkError'}; var $elm$http$Http$Timeout = {$: 'Timeout'}; var $elm$http$Http$resolve = F2( function (toResult, response) { switch (response.$) { case 'BadUrl_': var url = response.a; return $elm$core$Result$Err( $elm$http$Http$BadUrl(url)); case 'Timeout_': return $elm$core$Result$Err($elm$http$Http$Timeout); case 'NetworkError_': return $elm$core$Result$Err($elm$http$Http$NetworkError); case 'BadStatus_': var metadata = response.a; return $elm$core$Result$Err( $elm$http$Http$BadStatus(metadata.statusCode)); default: var body = response.b; return A2( $elm$core$Result$mapError, $elm$http$Http$BadBody, toResult(body)); } }); var $elm$http$Http$expectJson = F2( function (toMsg, decoder) { return A2( $elm$http$Http$expectStringResponse, toMsg, $elm$http$Http$resolve( function (string) { return A2( $elm$core$Result$mapError, $elm$json$Json$Decode$errorToString, A2($elm$json$Json$Decode$decodeString, decoder, string)); })); }); var $elm$http$Http$expectBytesResponse = F2( function (toMsg, toResult) { return A3( _Http_expect, 'arraybuffer', _Http_toDataView, A2($elm$core$Basics$composeR, toResult, toMsg)); }); var $elm$http$Http$expectWhatever = function (toMsg) { return A2( $elm$http$Http$expectBytesResponse, toMsg, $elm$http$Http$resolve( function (_v0) { return $elm$core$Result$Ok(_Utils_Tuple0); })); }; var $elm$http$Http$emptyBody = _Http_emptyBody; var $elm$http$Http$Request = function (a) { return {$: 'Request', a: a}; }; var $elm$http$Http$State = F2( function (reqs, subs) { return {reqs: reqs, subs: subs}; }); var $elm$http$Http$init = $elm$core$Task$succeed( A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil)); var $elm$http$Http$updateReqs = F3( function (router, cmds, reqs) { updateReqs: while (true) { if (!cmds.b) { return $elm$core$Task$succeed(reqs); } else { var cmd = cmds.a; var otherCmds = cmds.b; if (cmd.$ === 'Cancel') { var tracker = cmd.a; var _v2 = A2($elm$core$Dict$get, tracker, reqs); if (_v2.$ === 'Nothing') { var $temp$router = router, $temp$cmds = otherCmds, $temp$reqs = reqs; router = $temp$router; cmds = $temp$cmds; reqs = $temp$reqs; continue updateReqs; } else { var pid = _v2.a; return A2( $elm$core$Task$andThen, function (_v3) { return A3( $elm$http$Http$updateReqs, router, otherCmds, A2($elm$core$Dict$remove, tracker, reqs)); }, $elm$core$Process$kill(pid)); } } else { var req = cmd.a; return A2( $elm$core$Task$andThen, function (pid) { var _v4 = req.tracker; if (_v4.$ === 'Nothing') { return A3($elm$http$Http$updateReqs, router, otherCmds, reqs); } else { var tracker = _v4.a; return A3( $elm$http$Http$updateReqs, router, otherCmds, A3($elm$core$Dict$insert, tracker, pid, reqs)); } }, $elm$core$Process$spawn( A3( _Http_toTask, router, $elm$core$Platform$sendToApp(router), req))); } } } }); var $elm$http$Http$onEffects = F4( function (router, cmds, subs, state) { return A2( $elm$core$Task$andThen, function (reqs) { return $elm$core$Task$succeed( A2($elm$http$Http$State, reqs, subs)); }, A3($elm$http$Http$updateReqs, router, cmds, state.reqs)); }); var $elm$http$Http$maybeSend = F4( function (router, desiredTracker, progress, _v0) { var actualTracker = _v0.a; var toMsg = _v0.b; return _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just( A2( $elm$core$Platform$sendToApp, router, toMsg(progress))) : $elm$core$Maybe$Nothing; }); var $elm$http$Http$onSelfMsg = F3( function (router, _v0, state) { var tracker = _v0.a; var progress = _v0.b; return A2( $elm$core$Task$andThen, function (_v1) { return $elm$core$Task$succeed(state); }, $elm$core$Task$sequence( A2( $elm$core$List$filterMap, A3($elm$http$Http$maybeSend, router, tracker, progress), state.subs))); }); var $elm$http$Http$Cancel = function (a) { return {$: 'Cancel', a: a}; }; var $elm$http$Http$cmdMap = F2( function (func, cmd) { if (cmd.$ === 'Cancel') { var tracker = cmd.a; return $elm$http$Http$Cancel(tracker); } else { var r = cmd.a; return $elm$http$Http$Request( { allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains, body: r.body, expect: A2(_Http_mapExpect, func, r.expect), headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url }); } }); var $elm$http$Http$MySub = F2( function (a, b) { return {$: 'MySub', a: a, b: b}; }); var $elm$http$Http$subMap = F2( function (func, _v0) { var tracker = _v0.a; var toMsg = _v0.b; return A2( $elm$http$Http$MySub, tracker, A2($elm$core$Basics$composeR, toMsg, func)); }); _Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap); var $elm$http$Http$command = _Platform_leaf('Http'); var $elm$http$Http$subscription = _Platform_leaf('Http'); var $elm$http$Http$request = function (r) { return $elm$http$Http$command( $elm$http$Http$Request( {allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url})); }; var $elm$http$Http$get = function (r) { return $elm$http$Http$request( {body: $elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url}); }; var $elm$json$Json$Decode$index = _Json_decodeIndex; var $elm$http$Http$jsonBody = function (value) { return A2( _Http_pair, 'application/json', A2($elm$json$Json$Encode$encode, 0, value)); }; var $elm$json$Json$Decode$list = _Json_decodeList; var $elm$core$Result$map = F2( function (func, ra) { if (ra.$ === 'Ok') { var a = ra.a; return $elm$core$Result$Ok( func(a)); } else { var e = ra.a; return $elm$core$Result$Err(e); } }); var $elm$json$Json$Decode$null = _Json_decodeNull; var $elm$json$Json$Decode$oneOf = _Json_oneOf; var $elm$json$Json$Decode$nullable = function (decoder) { return $elm$json$Json$Decode$oneOf( _List_fromArray( [ $elm$json$Json$Decode$null($elm$core$Maybe$Nothing), A2($elm$json$Json$Decode$map, $elm$core$Maybe$Just, decoder) ])); }; var $elm$json$Json$Decode$decodeValue = _Json_run; var $elm$json$Json$Decode$value = _Json_decodeValue; var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optionalDecoder = F3( function (pathDecoder, valDecoder, fallback) { var nullOr = function (decoder) { return $elm$json$Json$Decode$oneOf( _List_fromArray( [ decoder, $elm$json$Json$Decode$null(fallback) ])); }; var handleResult = function (input) { var _v0 = A2($elm$json$Json$Decode$decodeValue, pathDecoder, input); if (_v0.$ === 'Ok') { var rawValue = _v0.a; var _v1 = A2( $elm$json$Json$Decode$decodeValue, nullOr(valDecoder), rawValue); if (_v1.$ === 'Ok') { var finalResult = _v1.a; return $elm$json$Json$Decode$succeed(finalResult); } else { var finalErr = _v1.a; return $elm$json$Json$Decode$fail( $elm$json$Json$Decode$errorToString(finalErr)); } } else { return $elm$json$Json$Decode$succeed(fallback); } }; return A2($elm$json$Json$Decode$andThen, handleResult, $elm$json$Json$Decode$value); }); var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional = F4( function (key, valDecoder, fallback, decoder) { return A2( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optionalDecoder, A2($elm$json$Json$Decode$field, key, $elm$json$Json$Decode$value), valDecoder, fallback), decoder); }); var $elm$http$Http$post = function (r) { return $elm$http$Http$request( {body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url}); }; var $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required = F3( function (key, valDecoder, decoder) { return A2( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, A2($elm$json$Json$Decode$field, key, valDecoder), decoder); }); var $author$project$Puzzle$webBackend = function (baseUrl) { var pair = F2( function (decodeA, decodeB) { return A2( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, A2($elm$json$Json$Decode$index, 1, decodeB), A2( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$custom, A2($elm$json$Json$Decode$index, 0, decodeA), $elm$json$Json$Decode$succeed($elm$core$Tuple$pair))); }); var decodeUserInfo = A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'hasAllPangrams', $elm$json$Json$Decode$bool, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'hasPangram', $elm$json$Json$Decode$bool, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'score', $elm$json$Json$Decode$int, $elm$json$Json$Decode$succeed($author$project$Puzzle$UserInfo)))); var decodeHints = A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'pangramCount', $elm$json$Json$Decode$int, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'maxScore', $elm$json$Json$Decode$int, $elm$json$Json$Decode$succeed($author$project$Puzzle$Hints))); var decodeGroupInfo = A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'hasAllPangrams', $elm$json$Json$Decode$bool, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'score', $elm$json$Json$Decode$int, $elm$json$Json$Decode$succeed($author$project$Puzzle$GroupInfo))); var _char = function () { var toChar = function (str) { var _v1 = $elm$core$String$toList(str); if (_v1.b && (!_v1.b.b)) { var c = _v1.a; return $elm$json$Json$Decode$succeed(c); } else { return $elm$json$Json$Decode$fail('expected single char'); } }; return A2($elm$json$Json$Decode$andThen, toChar, $elm$json$Json$Decode$string); }(); var decodePuzzle = A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'outerLetters', $elm$json$Json$Decode$list(_char), A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'centerLetter', _char, A4( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$optional, 'editor', $elm$json$Json$Decode$string, 'Anonymous', A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'printDate', $elm$json$Json$Decode$string, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'displayDate', $elm$json$Json$Decode$string, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'displayWeekday', $elm$json$Json$Decode$string, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'expiration', $elm$json$Json$Decode$nullable($elm$json$Json$Decode$int), $elm$json$Json$Decode$succeed($author$project$Puzzle$Puzzle)))))))); var decodePuzzleResponse = A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'co-op', decodeGroupInfo, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'friends', $elm$json$Json$Decode$dict(decodeUserInfo), A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'hints', decodeHints, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'found', $elm$json$Json$Decode$list( A2( pair, $elm$json$Json$Decode$string, $elm$json$Json$Decode$list($elm$json$Json$Decode$string))), A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'puzzle', decodePuzzle, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'previousPuzzleId', $elm$json$Json$Decode$nullable($elm$json$Json$Decode$int), A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'nextPuzzleId', $elm$json$Json$Decode$nullable($elm$json$Json$Decode$int), A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'id', $elm$json$Json$Decode$int, A3( $NoRedInk$elm_json_decode_pipeline$Json$Decode$Pipeline$required, 'user', $elm$json$Json$Decode$nullable($elm$json$Json$Decode$string), $elm$json$Json$Decode$succeed($author$project$Puzzle$PuzzleResponse)))))))))); return { getPuzzle: F2( function (puzzle_id, handler) { if (puzzle_id.$ === 'Nothing') { return $elm$http$Http$get( { expect: A2($elm$http$Http$expectJson, handler, decodePuzzleResponse), url: baseUrl + 'puzzle' }); } else { var pid = puzzle_id.a; return $elm$http$Http$get( { expect: A2($elm$http$Http$expectJson, handler, decodePuzzleResponse), url: baseUrl + ('puzzle/' + $elm$core$String$fromInt(pid)) }); } }), postWord: F2( function (handler, word) { return $elm$http$Http$post( { body: $elm$http$Http$jsonBody( $elm$json$Json$Encode$string(word)), expect: $elm$http$Http$expectWhatever( A2( $elm$core$Basics$composeL, handler, $elm$core$Result$map( $elm$core$Basics$always(word)))), url: baseUrl + 'word' }); }) }; }; var $author$project$Main$main = A2( $author$project$Bee$beeMain, $elm$core$Basics$identity, $author$project$Puzzle$webBackend($author$project$Puzzle$relativeBaseUrl)); _Platform_export({'Main':{'init':$author$project$Main$main( A2( $elm$json$Json$Decode$andThen, function (dark) { return $elm$json$Json$Decode$succeed( {dark: dark}); }, A2($elm$json$Json$Decode$field, 'dark', $elm$json$Json$Decode$bool)))(0)}});}(this));