From 7c4d0c0e342d6a0154b1a87b6bf567072b6c7d48 Mon Sep 17 00:00:00 2001 From: polwex Date: Tue, 22 Oct 2024 11:35:21 +0700 Subject: [PATCH] m --- .gitignore | 2 + data/data.db | Bin 114688 -> 0 bytes data/data.db-shm | Bin 32768 -> 0 bytes data/schema.sql | 167 - devenv.lock | 14 +- devenv.yaml | 3 +- server/db.ts | 242 + server/hanchu.d.ts | 4 + server/package.json | 2 + server/seeding.ts | 143 + server/server.ts | 138 +- server/utils.ts | 11 + ui/elm-stuff/0.19.1/Api.elmi | Bin 0 -> 1434 bytes ui/elm-stuff/0.19.1/Api.elmo | Bin 0 -> 3664 bytes ui/elm-stuff/0.19.1/Main.elmi | Bin 0 -> 6205 bytes ui/elm-stuff/0.19.1/Main.elmo | Bin 0 -> 7751 bytes ui/elm-stuff/0.19.1/d.dat | Bin 1106 -> 1671 bytes ui/elm-stuff/0.19.1/i.dat | Bin 165107 -> 178886 bytes ui/elm-stuff/0.19.1/o.dat | Bin 881312 -> 923903 bytes ...f0aa84529b418ecc5ef2f663ca83d739dd44c.json | 1 + ...488cae13be3e1e6b409e2874b4c61dfc2f2e2.json | 1 + ...320a9f08def6b31b24b36bc7d0105196c7a92.json | 1 + .../elm-stuff/0.19.1/Api.elmi | Bin 0 -> 1434 bytes .../elm-stuff/0.19.1/Api.elmo | Bin 0 -> 3664 bytes .../elm-stuff/0.19.1/Main.elmi | Bin 0 -> 9517 bytes .../elm-stuff/0.19.1/Main.elmo | Bin 0 -> 12681 bytes .../0.19.1-revision12/elm-stuff/0.19.1/d.dat | Bin 0 -> 1899 bytes .../0.19.1-revision12/elm-stuff/0.19.1/i.dat | Bin 0 -> 182915 bytes .../0.19.1-revision12/elm-stuff/0.19.1/lock | 0 .../0.19.1-revision12/elm-stuff/0.19.1/o.dat | Bin 0 -> 936205 bytes .../elm-test/0.19.1-revision12/elm.json | 31 + ui/elm.js | 12416 ++++++++++++++++ ui/elm.json | 5 +- ui/index.html | 24 + ui/src/Api.elm | 113 + ui/src/Main.elm | 198 +- 36 files changed, 13273 insertions(+), 243 deletions(-) delete mode 100644 data/data.db delete mode 100644 data/data.db-shm delete mode 100644 data/schema.sql create mode 100644 server/db.ts create mode 100644 server/hanchu.d.ts create mode 100644 server/seeding.ts create mode 100644 server/utils.ts create mode 100644 ui/elm-stuff/0.19.1/Api.elmi create mode 100644 ui/elm-stuff/0.19.1/Api.elmo create mode 100644 ui/elm-stuff/0.19.1/Main.elmi create mode 100644 ui/elm-stuff/0.19.1/Main.elmo create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/dependencies.a95cd70c2abd8c0c943f6a7ac7ff0aa84529b418ecc5ef2f663ca83d739dd44c.json create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/dependencies.c7f74a7d6a16fb23c9519e15f0c488cae13be3e1e6b409e2874b4c61dfc2f2e2.json create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/dependencies.f7115c3afa7efad447dfb1fe6db320a9f08def6b31b24b36bc7d0105196c7a92.json create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Api.elmi create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Api.elmo create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Main.elmi create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Main.elmo create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/d.dat create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/i.dat rename data/data.db-wal => ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/lock (100%) create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/o.dat create mode 100644 ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm.json create mode 100644 ui/elm.js create mode 100644 ui/src/Api.elm diff --git a/.gitignore b/.gitignore index 4d058db..73db0c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Devenv .devenv* devenv.local.nix +db +datasets # direnv .direnv diff --git a/data/data.db b/data/data.db deleted file mode 100644 index 041c4f2557a30a58d5eb03ae55680dc0bd55775c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114688 zcmeI)e~jB!0l;xPcH;cFYYv~;Oz2|4Y&wIA>o^yWS{*$%9bIvx~TW;XortQ*FDeW_kqiI@7{@pD9 z;%QngnDL7I)CZQwEvB?v&Oe@3iN)J0&CSurxa5Q*fB*srAb$>`7%bdp4&98@0yfub+PIiD$pQ zS<*Aw^mI-;(`;^@`NiX#s{e0_pK9Xo;sx<5xxj<~0tg_000IagfB*srAb+jP0}%E9uWI5y z;_3txkRl*}00IagfB*srAbL$lAhi|1NdQ!ZWFSlrmm8qrd77W0GL)uRsX*vKB?aS_oDc%_?dW0d{=x^JSHxPP4Rj0IdMcrG9iEf0tg_000Iag zfB*srATaR)drPKP)~mI4wX+p>wllknrgl)5t3fYl*OaLp&|7V<7g8*k+CJUwT&UG+ zZaY=To7#-N zC2_kZd;EV8TjF-{Px%XgZ-`6cq{s7g98ECl672q1s}0tg_000IagfB*uMFF^l)^6QuqB7gt_2q1s}0tg_0 z00IagK>wdMfB*srAb4 z4<6L7oCxn&wY6Gv%U^x8*60fH!uy-bZ+vX` zmgk(PJmk!WdCRm5PIsenl*QermMh2aS&9?eFJ_`&ZQA%vDWbIJ}lPJ(<`TrFUhU$tt_oXr4GCc zfwNM1P+}%P>uzJc<}kdNJPB2*!b25;Adk$eAy1TT_;O;*h?5u+~`f zF4Wd8gbif1>IU9=vt9H2c=4hr*fBX6FqRP5_ zc{Xp^hYsmiwnFWpT@9@k68=MxPE-?N=-6gEuZ3nB(v#Wl~^Qs%NQu=ZE9aY_r+qs>p>wf(Fj(p1xXEXL~b9!gg zQ8e5wufK8bT02%rhxVm{%G))|vghXFGq;~xe<_=2LH+P<;~8i-gY96%X&fHIh|_pS zp~p0{#KmvNMu~=`V*P#vMJ;1{DifYJ+o!_wW+=_js+B19P~>$edcJ%qZQ1+x>)Xe| zqv>63dJCDv5%hwu%f7#0X6z%j{-s{43eUXNcqiQpn4jL!q;{l>FIN8iz{cg%M#esD z>yHfOFHe_xz1CO{b1}zc9w+MO9EX(eOJ&rB@1anvdv5#D72X?KH4=J5k@Ko4F32s* z+h5i#+qU&95BIL6et2}L#P(s(dzO!nd(^$F)^b&!*BKQzAUWn#xQ_QV_58n(J*SDE zm%dm0YVp|AGldiR-{mjmUe8^U!AuAsfB*srAb`LJ5V%~NvFuxK)vp|nzVSxS1yyv7^LZ>%G~D#h{sYH+dT4Sm^i78jkcQ_?)^1RI_c z9#%Bu;x9Pfg_hjfugPZ@ju%vKk$Z~{VcfnF{gYnOM870{-VqMBT(`$0|NFR!9LC7n zmVI=ezI|u!ySW<#-d0QYmpZ=J?(xQ*lptFP;E%zT)W8orACrCEO^s*Li3 zH)iZx_v!xV1Bvspuf6|KyDfL7E>pw!oiPjXqrLdlah&yL zbHq8S&cRPR&9-wm93xGfL*1e#&L9;QkH}^AhJCl~&5%2c31>GXprb9q+y^ca?{lo8 z+VFU5{)RY9v%+ad-+qlEqifMzw*VfB*XE;>w6OA8;*?{ z)IjJ!sgvWUs#iPiV&=rpV570-M0VF4l}@BgR9!!2+!$Z?fD&7UUGHcB=km-h%RX>G zzjASi$sfpi_ZS@iy`E^}MxDppNLm|h*LUlS=e_os@KV>Q2aDC_R;%u9d5xfd9=v<+ hK5-HZBu}`+;oXzrh{)I{4vuSs(O7)k{sz}}{TKHDW?ujR diff --git a/data/data.db-shm b/data/data.db-shm deleted file mode 100644 index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuAr62r3 { + for (const pair of pairs) wquery.run(pair); + }); + const words = text + .replace(/[^\w\s]/g, '') + .replace(/\s+/g, ' ') + .trim() + .split(' '); + const combinations = wordFactorial(words); + const richWords = combinations.map((spelling) => { + return { spelling, cid }; + }); + wtr(richWords); + if (lesson_id) { + const query = db.query(` + INSERT INTO cards_lessons(card_id, lesson_id) + VALUES($cid, $lesson_id) + `); + query.run({ lesson_id, cid }); + } +} + +export function addUser(db: Database, name: string, creds: string) { + const query = db.query(` + INSERT + INTO users(name, creds) + VALUES($name, $creds) + `); + query.run({ $name: name, $creds: creds }); +} + +export function addWord( + db: Database, + spelling: string, + ipa: string, + language: string, + type: string, + subtype: string | null, +) { + const queryString = ` + INSERT + INTO expressions(spelling, ipa, type, subtype, frequency, language_id) + VALUES($spelling, $ipa, $type, $subtype, 0, ( + SELECT id FROM languages + WHERE name = $language + )) + `; + const query = db.prepare(queryString); + const res = query.run({ spelling, ipa, language, type, subtype }); + return res.lastInsertRowid; +} +export function addCat(db: Database, wordId: number | bigint, domain: string) { + const queryString = ` + INSERT + INTO word_categories(word_id, category_id) + VALUES($wordId, ( + SELECT id FROM categories + WHERE name = $category + )) + `; + const category = domains[domain] || 'unknown'; + const query = db.query(queryString); + const res = query.run({ wordId, category }); + return res.lastInsertRowid; +} + +const domains: Record = { + 'adj.all': 'adjective', + 'adj.pert': 'adjective', + 'adj.ppl': 'adjective', + 'adv.all': 'adverb', + 'noun.Tops': '', + 'noun.act': 'abstract', + 'noun.animal': 'animate', + 'noun.artifact': 'inanimate', + 'noun.attribute': 'abstract', + 'noun.body': 'inanimate', + 'noun.cognition': 'abstract', + 'noun.communication': 'abstract', + 'noun.event': 'abstract', + 'noun.feeling': 'abstract', + 'noun.food': 'inanimate', + 'noun.group': 'noun', + 'noun.location': 'spatial', + 'noun.motive': 'abstract', + 'noun.object': 'inanimate', + 'noun.person': 'animate', + 'noun.phenomenon': 'abstract', + 'noun.plant': 'noun', + 'noun.possession': 'noun', + 'noun.process': 'noun', + 'noun.quantity': 'uncountable', + 'noun.relation': 'noun', + 'noun.shape': 'noun', + 'noun.state': 'noun', + 'noun.substance': 'uncountable', + 'noun.time': 'temporal', + 'verb.body': 'verb', + 'verb.change': 'verb', + 'verb.cognition': 'verb', + 'verb.communication': 'verb', + 'verb.competition': 'verb', + 'verb.consumption': 'verb', + 'verb.contact': 'verb', + 'verb.creation': 'verb', + 'verb.emotion': 'mental', + 'verb.motion': 'verb', + 'verb.perception': 'mental', + 'verb.possession': 'verb', + 'verb.social': 'verb', + 'verb.stative': 'verb', + 'verb.weather': 'verb', +}; +export function addFrequency( + db: Database, + spelling: string, + frequency: number, +) { + const queryString = ` + UPDATE expressions + SET frequency = $frequency + WHERE expressions.spelling = $spelling + `; + const query = db.query(queryString); + const res = query.run({ spelling, frequency }); + console.log(res, 'added frequency'); +} diff --git a/server/hanchu.d.ts b/server/hanchu.d.ts new file mode 100644 index 0000000..028d342 --- /dev/null +++ b/server/hanchu.d.ts @@ -0,0 +1,4 @@ +declare module 'wordnet' { + const value: any; + export default value; +} diff --git a/server/package.json b/server/package.json index deb94fd..a042899 100644 --- a/server/package.json +++ b/server/package.json @@ -7,5 +7,7 @@ }, "peerDependencies": { "typescript": "^5.0.0" + }, + "dependencies": { } } diff --git a/server/seeding.ts b/server/seeding.ts new file mode 100644 index 0000000..d9d6533 --- /dev/null +++ b/server/seeding.ts @@ -0,0 +1,143 @@ +import { Database } from 'bun:sqlite'; +import { addCard, addCat, addFrequency, addLesson, addWord } from './db'; +import Wordnet from 'en-wordnet'; + +// const db = new Database('../db/data.db'); +const db = new Database('../db/data.db', { strict: true }); +const wndb = new Database('../datasets/en-wordnet/data.sqlite'); +db.exec('PRAGMA journal_mode = WAL;'); + +const SYMBOL_REGEX = new RegExp(/[\W\d]/); + +// async function englishIPA() { +// const file = Bun.file('ipa/en-us/ipadict.txt'); +// const s = file.stream(); +// const reader = s.getReader(); +// const decoder = new TextDecoder(); +// let leftover = ''; +// while (true) { +// const { value, done } = await reader.read(); +// if (done) break; +// const chunk = decoder.decode(value, { stream: true }); +// const lines = (leftover + chunk).split('\n'); + +// // Process each line except the last (which might be incomplete) +// for (const line of lines.slice(0, -1)) saveLine(line); + +// // Save the last incomplete line to process in the next iteration +// leftover = lines[lines.length - 1]; +// } + +// // Handle any remaining content after reading all chunks +// if (leftover) saveLine(leftover); +// } + +async function englishFreq() { + const file = Bun.file('../datasets/unigram_freq.csv'); + const s = file.stream(); + const reader = s.getReader(); + const decoder = new TextDecoder(); + let leftover = ''; + let lineCount = 0; + while (true) { + const { value, done } = await reader.read(); + if (done) break; + const chunk = decoder.decode(value, { stream: true }); + const lines = (leftover + chunk).split('\n'); + + // Process each line except the last (which might be incomplete) + for (const line of lines.slice(0, -1)) { + lineCount++; + const [spelling, _frequency] = line.split(','); + addFrequency(db, spelling, lineCount); + } + + // Save the last incomplete line to process in the next iteration + leftover = lines[lines.length - 1]; + } + + // Handle any remaining content after reading all chunks + if (leftover) addFrequency(db, leftover, lineCount + 1); +} +// TODO no conjunctions or adpositions in Wordnet!! +function englishIPA() { + const queryString = ` + SELECT words.wordid, word, pronunciation, domainname FROM words + JOIN lexes_pronunciations lp ON lp.wordid = words.wordid + JOIN pronunciations pr ON pr.pronunciationid = lp.pronunciationid + JOIN senses ON senses.wordid = words.wordid + JOIN synsets ON synsets.synsetid = senses.synsetid + JOIN domains ON domains.domainid = synsets.domainid + GROUP BY words.wordid + `; + const query = wndb.query(queryString); + const res: Array<{ + word: string; + pronunciation: string; + domainname: string; + }> = query.all() as any; + for (const r of res) { + console.log('adding word', r); + // if (r.word === 'abrasive') throw new Error('stop right here'); + const split = r.word.split(' '); + const type = split.length > 1 ? 'expression' : 'word'; + const subtype = null; + const wordid = addWord(db, r.word, r.pronunciation, 'en-us', type, subtype); + addCat(db, wordid, r.domainname); + } +} +// function saveLine(line: string) { +// const [spelling, ipa] = line.split(/\s+/); +// if (!spelling || !ipa) return; +// const hasSymbols = spelling.match(SYMBOL_REGEX); +// if (hasSymbols) return; +// const isWord = checkWordNet(spelling); +// console.log(spelling, isWord); +// if (!isWord) return; +// const split = spelling.split(' '); +// const type = split.length > 1 ? 'expression' : 'word'; +// const subtype = null; +// addWord(db, spelling, ipa, 'en-us', type, subtype); +// } + +// function checkWordNet(word: string) { +// const query = wndb.query(`SELECT * FROM words WHERE word = $word`); +// const res = query.get({ $word: word }); +// return !!res; +// } + +function englishCards() { + const lesson_id = addLesson(db, 'First Lesson, some easy stuff'); + const texts = [ + 'I', + 'friend', + 'my friend', + 'you', + 'your friend', + "my friends' friend", + 'you are my friend', + 'I am your friend', + 'your friend is my friend', + 'my friend is your friend', + 'he is my friend', + 'this is mine', + 'this is yours', + "this is my friends'", + 'no', + 'you are not my friend', + 'this is not yours', + 'your friend is not my friend', + 'that is mine', + 'this is mine, that is yours', + 'he is not your friend', + 'no, I am not', + 'that is not me', + "that is not mine, that is my friends'", + ]; + for (const text of texts) { + addCard(db, lesson_id, text); + } +} +englishIPA(); +englishFreq(); +englishCards(); diff --git a/server/server.ts b/server/server.ts index 6be80ad..f2fc5a4 100644 --- a/server/server.ts +++ b/server/server.ts @@ -1,35 +1,103 @@ import { Database } from 'bun:sqlite'; +import { + addUser, + fetchCard, + fetchLesson, + fetchLessons, + fetchResource, +} from './db'; -const db = new Database('../data/data.db'); +const db = new Database('../db/data.db', { strict: true }); db.exec('PRAGMA journal_mode = WAL;'); Bun.serve({ fetch(req) { - console.log('req object', req); const url = new URL(req.url); - if (url.pathname === '/') return new Response('Home page!'); + console.log(url.pathname, 'url'); + const user = parseUser(req); if (req.method === 'POST' && url.pathname === '/api') - return handlePost(req, url); + return handlePost(req, user, url); if (req.method === 'GET' && url.pathname.startsWith('/api')) - return handleGet(req, url); - return new Response('404!'); + return handleGet(req, user, url); + return serveStatic(url); }, }); -async function handleGet(_req: Request, url: URL) { - if (url.pathname === '/api/resource') return handleGetResource(url); - else return new Response('huh'); -} -function handleGetResource(url: URL) { - const params = new URLSearchParams(url.search); - console.log(params); - const type = params.get('type'); - const resource = params.get('res'); - const data = fetchResource(type!, resource!); - return Response.json({ ok: true, data }); +function parseUser(req: Request): number { + // console.log(req, 'request'); + return 0; } -async function handlePost(req: Request, url: URL) { +async function serveStatic(url: URL) { + const filename = url.pathname === '/' ? '/index.html' : url.pathname; + const headers = { 'Content-type': 'text/html' }; + const opts = { headers }; + try { + const file = await Bun.file(`../ui/${filename}`).bytes(); + return new Response(file, opts); + } catch (_) { + return new Response('404!'); + } +} + +async function handleGet(_req: Request, user: number, url: URL) { + if (url.pathname === '/api/resource') return handleGetExpresion(user, url); + if (url.pathname === '/api/card') return handleGetCard(user, url); + if (url.pathname === '/api/lesson') return handleGetLesson(user, url); + if (url.pathname === '/api/lessons') return handleGetLessons(user, url); + else return new Response('huh'); +} +function handleGetExpresion(user: number, url: URL) { + const params = new URLSearchParams(url.search); + const expression = params.get('exp'); + const data = fetchResource(db, expression!); + return Response.json({ ok: data }); +} +type LessonsType = Record< + number, + { + id: number; + text: string; + cards: Array<{ text: string; note: string | null; id: number }>; + } +>; +type LessonsDBType = { + id: number; + ltext: string; + ctext: string; + cnote: string | null; + cid: number; +}; +function handleGetLesson(user: number, url: URL) { + const params = new URLSearchParams(url.search); + const lesson = params.get('lesson'); + const data = fetchLesson(db, Number(lesson!)); + return Response.json({ ok: data }); +} +function handleGetCard(user: number, url: URL) { + const params = new URLSearchParams(url.search); + const card = params.get('card'); + const data = fetchCard(db, Number(card), user); + return Response.json({ ok: data }); +} +function handleGetLessons(user: number, url: URL) { + const params = new URLSearchParams(url.search); + const page = params.get('page') || '0'; + const data: LessonsDBType[] = fetchLessons(db, 20, Number(page)) as any; + const lessons = data.reduce((acc: LessonsType, item: LessonsDBType) => { + let cur = acc[item.id] || { id: item.id, text: item.ltext, cards: [] }; + const cards = [ + ...cur.cards, + { text: item.ctext, note: item.cnote, id: item.cid }, + ]; + const def = { ...cur, cards }; + return { ...acc, [item.id]: def }; + }, {} as LessonsType); + console.log(lessons, 'lesons'); + return Response.json({ ok: lessons }); +} + +async function handlePost(req: Request, user: number, url: URL) { const data = await req.json(); if (url.pathname === '/api/user') return handlePostUser(data); else return new Response('huh'); @@ -37,38 +105,6 @@ async function handlePost(req: Request, url: URL) { // https://bun.sh/guides/http/server type PostUser = { name: string; creds: string }; function handlePostUser(user: PostUser) { - addUser(user.name, user.creds); + addUser(db, user.name, user.creds); return new Response('ok'); } - -function addUser(name: string, creds: string) { - const query = db.query(` - INSERT - INTO users(name, creds) - VALUES($name, $creds) - `); - query.run({ $name: name, $creds: creds }); -} - -function fetchResource(type: string, resource: string) { - if (type === 'word') return fetchWord(resource); - else return {}; -} -function fetchWord(word: string) { - const query = db.query(` - SELECT - spelling, - ipa, - languages.name AS language, - GROUP_CONCAT(c.name, ',') AS category, - ps.name AS pos - FROM words - JOIN languages ON languages.id = words.language_id - JOIN word_categories wc ON words.id = wc.word_id - JOIN categories c ON wc.category_id = c.id - JOIN parts_of_speech ps ON ps.id = c.part_of_speech_id - WHERE spelling = $spelling - GROUP BY words.id - `); - return query.get({ $spelling: word }); -} diff --git a/server/utils.ts b/server/utils.ts new file mode 100644 index 0000000..07a9872 --- /dev/null +++ b/server/utils.ts @@ -0,0 +1,11 @@ +export function wordFactorial(words: string[]): string[] { + const combinations: string[] = []; + for (let i = 0; i < words.length; i++) { + let inner = ''; + for (let ii = i; ii < words.length; ii++) { + inner += (ii > i ? ' ' : '') + words[ii]; + combinations.push(inner); + } + } + return combinations; +} diff --git a/ui/elm-stuff/0.19.1/Api.elmi b/ui/elm-stuff/0.19.1/Api.elmi new file mode 100644 index 0000000000000000000000000000000000000000..2b11aece43246ff14edb0dc9981701f4f113554f GIT binary patch literal 1434 zcmeH`;ZB1v5XW0uK+W_~diZnK=+&+V{U> z5?PXDwj16m1VRUX`cQnnfVZQHHEP*zGw(RUhZX*(G}(WSjzg3>Qf8aonC`1rs dgr4-(=fmz1_CL1csIFIu91qQ(9GY<6zW}zqaHjwO literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/0.19.1/Api.elmo b/ui/elm-stuff/0.19.1/Api.elmo new file mode 100644 index 0000000000000000000000000000000000000000..02eac9bc5f6c430f69d74a33b8d717cac3a3822d GIT binary patch literal 3664 zcmcgv-EY${5KrPbWuHg`gm^^SGcD|GZ@`dXY#JKl8HL1Mv!-zryVLsLT1opF?q-(k0&7^Ml4a+2XUl;Mmw8?`#XF+1g?qpnX$)X~E2~zc& zs;`k#b2WC|bhc08e9o z5YzU>atH`A2oXR#I_?R}c+Q$&KOwAK#WxD!&Z)Y*v5I(=)<@1soFGn2kw+HOdBMuu zt&X5Zrm}dnM98M7t{>-4cXVvUD&72IZBNh)|0JgB3Z4KdD(S+F77ImTONFYmPgG%g zgKDVB8&$b&5#UG&$z*(*yxAqNKE26&4ujD?g|2 zhNx8PI)N3{o+zyKtPKD<=Ve|x+Xx^;Tc%at(xM@0mOWG9-*%$*IBD@kf$6HwmY!>J z$ERxn2*673w1Y&^Ml}m$-JNv)4*;ywhMvyHZ|Yj8bFP6Se3xLHkRkk z>8)zeGRju9+~7NEBGy^P7@Q(oI{jqHnu?Y5hb&4F9<~+nc-YDeCv1RDrU_yD(aF3V zJ0UQ~NQP%4Kx@qtpB1gtXC<=jcIQlH3p*P`x7`%A&IO!=3n}aPv$~LL1|0}tU_=SK ztJTPJ4Qp+;tymxCt|1Y%Ua_O;g=((a{V+e=SRm`Bgme3~_Ix~@mOM+#1sC%8Xf~To z)4G`2?IK(lVp7L&^c6Z8q#!sF#Bk4s{o4uV=CUi_u*v^rhTS_)9tF%kHH<8YOT~NF zq!1%P?}@+~PLRU8iXj@`foV2gPE<8M=QM0|$@l~uA9MSTtOMHIKgWh?#JQf0_JdZk z&&`p3Owua9S}@q2s3UwT+sG6x3V1cjL0U-5&;Y1olQiO?pDSX3@942dPRc8GF^A&r zx*yR<4ZXP@VU+fsiAOx(J3Qh`%-w)JBQ75T)qi;yaf0KbOuu*Fv(k~?RqTmwq8pXw z2_!s3deeu37u#Gc6gFT(o3`6tq2imPysV$DCCTb`VP4D1%eN(AON6Q8pVRHR#YWEVd;56gKI`o zk|{J_7j%N{H(!0o6cHI_7YiN{W&}3aJ*jWd-wX1*58csI zLe*ZD9YC5*^V&k*^Wz5y4QW~efnbqvRPhIdTmEyoefVgLe9`veTRApRwm zG?eg?a~3cnCC{W@p$@S3HmAX@oi*6baRUOcXsD{g7OYLfuA3UIj%`8mC$SDn-f&zhql7dG}!UE5lK(s z2Myd=@XC_jXFb*Gd3wjNT5*wH%+tuzzkZ>GjKOK?G!(O?!sUN8qq};Ow={cWhxz_5 zZ#gqt_)d^VN}jCcd-wCS1I^anl`Cz|tQXSpQW+2KI_GFKm0G+(jFUP9-;Y^uipG11 z#yjdJYrDVZ3ozB$+-~7nlMat;8VK$Lj|EP>DX{1C(93|qh;b%ynlsWV&blr!6>uYE z*p3QdL=x!&?pk+5_2@TLS;-B~{7XT{FY;)uW*ktutTDSTHkFfyS58hHrfz%>J+-{3 z!-PBgizyZyUMxUW1)8Xo!5e$1bKY2AR7##aQlSdW&Lf`A?#=ZTPvJ*RG4^N1GRc_X zdhK=n2mtr>7fHmDFinb*s7$b%!>MnbesnGH<{eRCa)lMX!CAzJWm6kTi_kJ%{wE>} zrs|WSgA%23y(B6}*FtEbwnOEVrPr$^5syS@;au};mXUEm#qeyZ4ZLn^*O>?CE3X)` z>bcdmdFf1d1zC}W6f4SY`(VAXd8@wgthlqu8a90LI&0{zv0pD{4MDq>zt0-BYSyfw u+s3krF#I*vu!SkB!0o?Ta+roSbXxpB#Tq(Wt6F_-r0A?z!(q>E?EDkSA&5}` literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/0.19.1/Main.elmo b/ui/elm-stuff/0.19.1/Main.elmo new file mode 100644 index 0000000000000000000000000000000000000000..ab65b01b365743ed4ad205a0120c22badcffc911 GIT binary patch literal 7751 zcmb^$%W~XAaP+p<4{TBiq>4)AkSkjWML2MaV+TSx6<16MIZ;|^c2}`h64J;fU&ERF z2WNhPBY(gV=G7yOG}3OIY?ZCiOm|Per+Z{sfgjdnnU_IP=5KIB+-G5uInS!azVG04 z<-V!%Z0861Z+eWQJjOv)M-j#`5s+ zuyQ02G68wdC^ISAlQ2$@N+c4_wv*~K591_Td&A=gpge?Y4lNDW(SO<}UUn`8-5 zE^T@9G+b0N4x_xp{!v&ZQRRfi3%QTIW_9AE`NFgn`U83NZy!9-2G^WCr99l_J9~lw z2r*rxV;{JzYF3#Dw5qf z%RDlXfKj@DJlFMd6bQicpMQbN45!{plBAV&&%}I>0MDBpdvy?dEOyp8XPQcx;7oF?ZX1j){*jlC*d6)A=cOjDupfPfSYx{^;vaVcHZdlIGJkkjaV||>up_Kp{iOK-_;*`*@0~bB@xy}HJx(IxUxxJfs=$(}U}){Z zb>^(X0)Wi%r8(}H#dN>3z}+Nuw1K(UIWeqNN#CT`J&j3aFePC#)6$KJkh`MABoayr zW@Uaw%c0;%K51FRN)u2Q6f-VA1&zw%D|=NvtD-U~SoKx44~zSa(RR<$kj(RPH9fCq zZkA`*uZwu-_>pTa%O&QGd6p5J@=b<>F)D!_Zc1f+&iK+$nQbBnq8JKyA%bB+PpQ%* zuJZ3KmR4BMgEhMDW-~73Vc5+MJVF!&6UQDsM^2hz-DV~BPSw=KhiH;iP$#!yN}eJ% z{#Ej2^XlBwakq;wemdB6UW*)u4@~|z$$d1K}0#l<SmX0dPsJt`)^5J+%7pYC}C}`+z{W?dyFgMNZ~Cm9Tm$q|V<*hfTP<^_RQURYo;w zNERik6|eFf*T%#Pgk4R9^_WX}Al1r-WH4%^}OEl+GBfh-m{WX*ss)6)#H=>4HMqdp$DqM!@w=pnY<=eerXAJQH9@4=|7F=V@HplhHvv4d~mZ1gm#lnJzxBs>2x}NJZ#Q} zs*6UiB0L_xa(ip+@R=v+_|5MUvs&?^kTPGcjIjs#9y*j!p&i<5NHem89+6^W_= zSk(7x09f`#%#Q$w%xKa;+w8*xSg4w?MdS?Q4HPfHxR&;A@m34sKz6h8)oFG60MTyt zVNUx%CMPX=`wBzx5l6gf2P&WPd7B|&)kjPD?lxb_w+24nE(a-HVj}`9+Klg h3j)^104iKs$ah;^FTezpbmH9-=cs%U-^?VW^*>%w_mThr literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/0.19.1/d.dat b/ui/elm-stuff/0.19.1/d.dat index 565cbee4fc90968a0b1a21158cf22f90845ad78b..bfd1d0f1fa4715d8f7ce4e993278a7b7fae9740b 100644 GIT binary patch literal 1671 zcmb_cy^hmB7<7melgkm%Ni-CcNPw_=y5tgcKn|TQX(`tB#$IB3eY@*BnJ2i84vCJZ zpn`^{pyff3SnrRWXl;}NH(t-o+WXD-d3rrdUZV$}mcPIJxc&Lw(omn0K(YEp)Z$Km znj^J-=EXRLUg-rmgkDZC#bN2iAPeHcE0D+E;&HVLleDK_J^J7Vb9zw)oiYjS*% z0Jgy-bytPoJe;QCUCj*EMV>(WGzMh2VgzN;@DkD@VS{r}`p{k?$_8`j7twGAC<>@O zM**|X7|X|RD9+qDtd6L@Xz9h)J_jgM=<@@LspR|B#E-tMUoM(z9ySI1ziKMWof*M5 z6cSOHvq)eHGj^ix?hFLmh~Od%CpCmg2uc08xaN9#tl3vMtNck5VUli+_Tox;@?`>R!tv!=cVnz7bLTj1<0qPzCA3LSwB#MQMiF2L zXKgYuKozl9j2s*T7DgMWcK#?0BZ4*?#Nr`;;fq556IM%4y2W*SW};gM2&D<#!o3c6 z%kJqxc%9`1J3#jqmN4wr)t_C0k7c*4uJ;l~yh+_cF`L5um=CEQmHXAix>Lp@z%Ll2 zhF~lN&7j!3yN?7Z3Nbd01Xms2pu``dP?qbX?B=} AjsO4v diff --git a/ui/elm-stuff/0.19.1/i.dat b/ui/elm-stuff/0.19.1/i.dat index 5fe801667a77cc56174ef23e8fcbafddef8f07aa..e1c3d97421eba5f28eb51eb22a1b56e7d0774501 100644 GIT binary patch delta 6254 zcmdT|S!^4}8Rq=lgQqTvmn7=2qu5EU%QmdoksV8xl%tmISXP2IMdTGZlo(N5dUqvT zK>|ByUJN9t+(9#MMf6gj=tFI^fPua=Mu8T6DeQ;56iBM(AumY`Cp~}yZPGb*Ns2mh z04)#!+U3st=QsZ`Gk?1t`u#sb0iXOkaVs!-@^N);)xowp#-GTKi%W9Ar2#qNet9n> zN9nyBWa!(cKB5BYHQppdU${cz9<*dKW<(w6-^^o zl}8_(fp{C292OMQxQMe(-TduWj-so-e(Nl#y$g<0R-R%H5qk>%bk%nRMaGVqxm9xG zlYIkQofD}dScC+HlS-y@hDCd3Ax_H%JWStt9<-}p&d!*esL**H+h%bEd%+FJKv#Ue zfN;KIaDY*j&616G$k?DD&zct27$t2y15NZ#Q=oNjk|6XTbcJQ3mNiOQOx91t=-MkN zMw*VRwCNF0$$L*EMuT{%?5uJRz17*y`!K#zW^jutF+ z#dISm8sV2lAi5_H`v$)*k`$eRhXyLJ)#?mM zozK{2X*+*YJNZkl4)+f4>PP7p zmG1#IL<^H`kTd=C23)g^g~jbkhD5{pDpvKmHu_iTqw zbZNQh6w1t5PDY!$QHFN{ZC^!{!jagHRVkacu=|)_nG=;@JF2haQiQvtTlms4mXe>; zzp-Ri59eJ^w8*caobM6y{zq?8RzrVvWSxZfUzf{Z(MR(TLgx zS#Ef}N;aGd=)6DGbQiq_@HZNxWQd_VZbF7^98l@SmtapgWQ$rSqW8upee}1p5KC3W ziPUyUSb$dA>w&Q<2@l)`DaBL1$@4EOah;+;&Qt`}xu7`T0x0h;!Co27 zton4$GUwT%+2qEN-n}k7A%QM(zq}U`qt(*~o$Z5o(5Gr+MsCI`ihVY{`%jb#=odsb zIpW+AiJZaCWz$;Z&7B$+q(ec*G0n~f%XVcK-K4WIzSgcbh1@!~pPmbX9#VZ?i>0?- zhgRMFsv6SeCiE7A-Eq?R%wBSK{s17h?YIPOWNkjlPd7o=S~r8mIfM>841w-Ihfyq= zmrt4IVgcKembrA+S-{q~xnvYdwofN0k(iYE;@_?4DZ6wuFQ;xSBt^yjO7-cTy`nw^ zMSWsBLXEEf2PNsrIS9E$N~NFeXB%*V9LsHWYIS;f4g_-K^<#0;`AjRrBFcB6`r})} zKz3@m2*@XD{}x!qXbt=UFNVBG@!p`b{+FXh1H{P2ctBvQL8TXp-bs5h?C`O6AE}|B zY_n{GQ(cM>Y-+c%eg5PQq8b{{h4qf5NY2t*0PXzf@CXtkVzca7 zirnHSzEvKJETU(tAsr03Aw4T%x*=K<)7C7x*OCf{DnUI<&praF!)o0IeF{59&Tu@l ze3iJ)52Ei0C{I$i2Pz?n2?1yy*mh6 zYlTJToUn|p9Y7to8}6fjpJj=Vd|!T9Dy$K;cyzz9Qn&|H#;1WjbXN=bE;uk zhF1&OIj1_?NiLx@fI(lo00~+eWXJcl97}k%FYI#pb!4z`HjDJl56}>K|80$2i>S#+ zPF(YBK0!#y%{0^kAZFP`fa4*clWUJ^YN3?FS2#ltN7)5SV`srasY0po zL`y{%@v89poKdj6tF_Jc)1D7eUxJPKl%nx+%~JVT7FWeLGYpCadnXJ~vfIC8cy|oU zBy~lC%>*O)ySnsUnjE34$Dv<_jT;zqTqFJHI2@}R7D1I2vp+lmC%2y!L^(n9l63836wvG35i;DU&q^P2@`dFq z&*k@2g&CK-vHbp1G_V@hecSae=;v28m!3;G|!|H3Ef`KW--ofwT~49b%kF4 z06mK8>cZX-R4#1j&`}hl!+mi4w%rHU5lM_>=zIO3)4v~pri{GA-BKsRq8ifA2Ux-T zLq8qF}6akg>nhl ewPR0(EfYYhs8EPb48Rlg;si9`esciwGyetree(+d delta 133 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 mc%}FcsmRNUA@VfjQWqtNb5uN+y#4 delta 1258 zcmXAndu+{T9LD$ip5NvDUC*_rdQp0iUQmZ<3DL2J&HY+S1+fYig6fEl(7Ghp*p8X= zEJjjn(=D=8aK78v)Jo?T?TGtsl{GH0q?^rDnsvYQynlV)H*enO^FGhhb!>QTTcLQV zducg1xKR!r%UoJ`JUq!>xTXC%w_lgKhOn$rg@)xVs=(EqmLDw+mBt^)nW&K!6{D{y z3P16ZpU}U6vg41*;&A~gl2EaL1e$LM1HC8N0>1I8iZQb(13r_yI1nO@M~7&+hJNde z41SnFQwTke>j8|uLs~pXD7-0)e)pgy(+XqMepN$lgi6qvL4iF}|Ije258X%oCsqUv z`$^`iz7$aKavNnL>UY6zIw~c{r$y93@Q7B|5Ln zzDf%vw9TMY4vnW84^B;@be#Ol6X8CS=}npMPA5x4bOZ&kvQ-W8oHDvCC#7!Ar#eDK zwrkoMhYUp1WP#o}vci|%pq3BV_l%C@;g|0`DqfIoaznP~X)Cr%avG`!+JblJa?@gN zu97c~L-?xdNBt9BY%4x1bMaZFaU>cx83Kd$s}3fg5Z;rI)W2n}R@I^s{I*J0_}htU zA|1V(T-y&VR-Z5EzR$fbsGWX1+fE@~aaVnPCt^NbW^0M|1!3`Pa)5nHwL=+Ld&P2N zGgO`D@6yt2Twdn-6#ZD+p`iYv2p~qL%^iodpK?*R+THuk$v#ZmV40lTtlb-qpCiJ{ zWu|y9fX%%;*{IoTC_J;5_)*8mB0CMycHv_)UsNgZwwak|*zG2$M}-?x@m4d4*m<{6 z73WQzFAo(jBsPbM(k%SC$_Vo5QgJ7r=WP;K24ifQotiiyE;^W+YP-Otr1QW=kuwxd zot%R5=VA@kZImt4ZZKu;-yvoQZY90Ii+tNMQDYk>w+HoW3eF7HQ&?o`6Sd^n)lY8} z?4Ir^z@scJkSNzJJ89PVmHMr|_`FmEIPsxgDPhS9BgAXs`l1q^dr!|F1s6`|>U5(= zDW1<2LB3RBe3roDf3yIcJaZ$SRl2{G3(QKbyD2!;Bn&<}+-w{JCDVOt$$B#q#;`8U z=DT~%kL;wvnZxGfa#(G$KYl~ixLR17J-9tbkKmwX)$w)PN)db^Y;BdWzK2zi?98-I zUFUbxtZ#Dpbcyxv1T@7hSNnZyOCDeN%IY+^>zwty+MQ~Al#$MduUK=2q4BoJMzq|; zsuK2T134??FxLd_b(Cbe8MZqZ%@5Ud)bBDh9@K0n3ehl64Wi)(w_7pASu07zLUWc& zyiYiPda%!O?(iZnK=+&+V{U> z5?PXDwj16m1VRUX`cQnnfVZQHHEP*zGw(RUhZX*(G}(WSjzg3>Qf8aonC`1rs dgr4-(=fmz1_CL1csIFIu91qQ(9GY<6zW}zqaHjwO literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Api.elmo b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Api.elmo new file mode 100644 index 0000000000000000000000000000000000000000..02eac9bc5f6c430f69d74a33b8d717cac3a3822d GIT binary patch literal 3664 zcmcgv-EY${5KrPbWuHg`gm^^SGcD|GZ@`dXY#JKl8HL1Mv!-zryVLsLT1opF?q-(k0&7^Ml4a+2XUl;Mmw8?`#XF+1g?qpnX$)X~E2~zc& zs;`k#b2WC|bhc08e9o z5YzU>atH`A2oXR#I_?R}c+Q$&KOwAK#WxD!&Z)Y*v5I(=)<@1soFGn2kw+HOdBMuu zt&X5Zrm}dnM98M7t{>-4cXVvUD&72IZBNh)|0JgB3Z4KdD(S+F77ImTONFYmPgG%g zgKDVB8&$b&5#UG&$z*(*yxAqNKE26&4ujD?g|2 zhNx8PI)N3{o+zyKtPKD<=Ve|x+Xx^;Tc%at(xM@0mOWG9-*%$*IBD@kf$6HwmY!>J z$ERxn2*673w1Y&^Ml}m$-JNv)4*;ywhMvyHZ|Yj8bFP6Se3xLHkRkk z>8)zeGRju9+~7NEBGy^P7@Q(oI{jqHnu?Y5hb&4F9<~+nc-YDeCv1RDrU_yD(aF3V zJ0UQ~NQP%4Kx@qtpB1gtXC<=jcIQlH3p*P`x7`%A&IO!=3n}aPv$~LL1|0}tU_=SK ztJTPJ4Qp+;tymxCt|1Y%Ua_O;g=((a{V+e=SRm`Bgme3~_Ix~@mOM+#1sC%8Xf~To z)4G`2?IK(lVp7L&^c6Z8q#!sF#Bk4s{o4uV=CUi_u*v^rhTS_)9tF%kHH<8YOT~NF zq!1%P?}@+~PLRU8iXj@`foV2gPE<8M=QM0|$@l~uA9MSTtOMHIKgWh?#JQf0_JdZk z&&`p3Owua9S}@q2s3UwT+sG6x3V1cjL0U-5&;Y1olQiO?pDSX3@942dPRc8GF^A&r zx*yR<4ZXP@VU+fsiAOx(J3Qh`%-w)JBQ75T)qi;yaf0KbOuu*Fv(k~?RqTmwq8pXw z2_!s3deeu378og<$2cWeVh(}qcdp5Ok`=FtMFD9Rn9?F>zA zl1;jg-|l8@!a1K(7R(sEMj?0Pb=V0Zi~1;}5n}3{v*#fagX@$gop0iHEV~0W%5N@G z0z-%s&=X|ze7B*VyapC8gPdGQ8ET%u6o;wzHQ^wk964&Ktj{09`zv)X%@}cplSxxH zfTKTR=T+T~A5uciXXst{;EK$}T7El@CJc|qm`|JH3y_LipZhBM5LJG+?7HAPXnevk@ZC_IV%+UQd_U_+JaVFxIXS?$uq{%H} z{5!f&FQ|}A9~+H!oR-lykiE}uRVrgu=H>vULho1A+0Tq6Eo&_p;FRY#E2Z5qiwCT5 zjX`aI1c79p;F7%DHR32B!OFo}77F{E))?_{+J_u!)=KGQ;JJTBARki}ANS(O6TiR) z(%vwg0GwbA{;oeJaFRNz1y%w0Io|0d3utfQbU!5)kj2>K#PIu&Pj>atGpvTUicXP2O@ zIiE$PysTo=BJ#0En03k~)!_A{Z1q_Ve-l1zqq7{aKIg0v;k6-xp9j2C9ux3I-<0!P zmn>&9JGYqeIV49BjoX*T0H(=J}F z`qQ;j7ZX~amJY=A6hr8JKH?nSWo67SFo}pMa_Zuso>MAQG)2%cCtNkMax~?9Ciuo@ z{wZUkifXb4bu^)xL$jsD)ja(%x-E(#k6F!jl)DtqD8j(8zc(ytw13{{pvt_I4~7+w zigeeN*`8L{akM-3R134a|-kgH1C_w=})&hB9DOMn;8EcNC7fPdrhLuXAs|d77X|%@L@_zw2 Pn`3QW8m*2f45s}B9ApHW literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Main.elmo b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Main.elmo new file mode 100644 index 0000000000000000000000000000000000000000..00886e69e3acb1e458fda1ca89ee29ae62610464 GIT binary patch literal 12681 zcmcH=%W~Yt5wF3DPl;6IL@AexuF5G@p=i~$dok9bKIwxn*f zZM47a-qC)wGYsRb2`Ny&F2|mVF}@$<>$x|Nh6L zDNL6}7N&U(a zCPn^+m-V0dRdrrG%j+lUq&7j)zp0&0^zy0f0biOFC66B^RXVA{Wcd;}2>yS)tj&ma zG08_H`HJh}G_73rBKaMP5QXBw1=|n*_U33myyREV<9VTKiuHnkt-fl#>(1$wia@NE zazeCBVq!SffmRH#S&>aMfDMp^U_-g!S(27vGMU^K?zM?~AD<9jC(~mECne&W&Tc=s&|ISFnu|w0QY(f*TZPFmLK5UyaN85;& zqgwh>MFSqYR$*FQtEBvHV}>~!F0b>tUPe#FPk6ym;68@iAm%?V#Uc;-F|eDuS>|LQ z|A1UuIyoN+bw}u01OrS~VEqqQWrpkX=aTZnd-t+pl4SFusvjO79Ua|Emgzl6r+|%! znskQ?B`#_*%?>FM3Lnic1sSDz>V!2m%aV)AF?Pp@P>$F1ZiZQLL6P!zJtqF`0v^xg zHk;1`4+n}e(+prdP$6lzALC8$wtv(6w1aU+Voa0l;8mT}oK)$yoVWl{5H7th?p_a1 zLO7NS3^A##HQbYumc>T(Hn=yw#h&o->Y`8njWH%)32hSZd6>PE^V_MC#WLeqQi$B1 ztR}JMK&8MlG+cs7v9FV?;?(321J&1Lf`rii_Q5%NtS1WA-i~&3mOhx`z7wX8obT)6 zv4?{w6AJ*S$tP9csCqOcse6zar4|>3G6how z>_J{Il$8deg4Tb*HoS=SYasI!Rl{mw)+RFsUqs5-KiIAN{cbppljV}+GNtG+|1CnsH9)ZhC(D_YMMhG&=waLv5oFL}skxDR0;i;aTYBjDVWxA9*dX<}p9oe#I`z%Z9Sy3(yU#-Ss&p7At zYB}x8?4U1_F`Oo>qPyl)5$T%@DFm4}8j*E5BfSF4HVPq5g@{CY3PeXU3&KLl6#X}3 zIG4p5YNKs#f#k9$Dk~2$7$}bE>H@iFM?xml^vUSrubEA(IX6s4nKQ3|mF|p$hKeOZ28Q<*ilBkQYohR6 z6c|~W8Q3Xmb!geOX}OOvFrwghVQ>EMk&?*9TPc#0WHL84(U8?TD9U1$Pa7!EZq^tL zhYFgye}{}*8U~IVlvDKxh^QpYd{5qpMY|dm`Qt2|T<(&D+GlA-CejnT4kr?o_ti~E zu!_efqlw^@mw&w;gqfuQ8@m&|f_>hhn+8rsjbx#)onq;GV z)wPXSw7T$yVAE;4fQZ<&^)8e_2QkkCtd0nU@pp$K5oK=O?lyK4Q7H*Q4s3Q@f^bn? zu!X#rpbc4k8bc0ALvGtf%fce@z3*c}EKjxs%DbO1O$2~_=`hT%smkN=Lf%=)#kn{& z0ejN~QNdHv?T~S{T3%HA zy3$m~*d?AyX6j51KoGf4#}+5cbg;-*MF%T;(-#8Tw!8vIUS^Bh6z#*x8Wg@RyCb=5 z+Ct7M+A!8;$afhUq;Di-aILL|QK_#KnUUs2>497x?16LdnThw4@Uox0PY|1Nt37dr z=|I*W2SWMkjuk@|+_L=so+p-;V<6wISGK2IUK`VUa6p2t<64D;p(X9>SpGAjTVG3qBaCBa- zc)L;V#HqGH>nE29bGS|Qwp_xHwa0prB;p2NpjY%!cyjI7_aI z6)vFb9dft_0b-5Nf8pWbA?Yh?6%9=`Oi?#@T*6fD0p$Im%z2h(!}qM_To$??1r>b& zG{hbzt60enPC69(vcRWR7LE+*LJxLY^ss11!2)6;G5Y?tI*=xYp2+v{wo1~=nWY73Y%w42qPmFypLRW3FUST4#mA$ d_zui2DmGx{s=s}CB@DWJz4}6jzSoLf{{vy^B6t7* literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/d.dat b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/d.dat new file mode 100644 index 0000000000000000000000000000000000000000..205c9da91e0f3aedf4f15f9919a3344b5d3e854f GIT binary patch literal 1899 zcmb_c&u-H&9PVh^vOg3w35gR2PW)@!j*4l=b}a(7p=sTP143@%rrr{}vYmF>l?zY6 z0SRfGc?C`!cmXaPcmm!53CFS17Pr$5M3w4%-xvG$&)>>QA$wLYKK@?&e(T-0Hw6O~ zIrB7o&0z0c7hL`$_zZAC83Nm0^XYbdauV*;`Ct-_{U^=jyg9);!Pdm{g0mV5qnbcm z)aq_y$8FRY8e@(rX>5TI_W_|kdK*zc4iN`Nn=XJ1%mlRgPc+k*Uz^yAtr6DihhRt} z1QOuMy}^i4PW=Q7A@PPWh;h0xkZM;RvSLnH{rTa+pRac>WM#6ax^WmnF`z7RdvSmI zvK#r=4O2RfMMWm9Q0I^l?^tSa3Q zMTm$^{qMG+cN#Dn6Tg~6l=+C|uidfK^9{p3qa>|O6j}u`O?s?r;_CnVr50l_DauAV zo*YIE7j(5Pywb*Ef;n11WSOKyrJt?MX6rgjw?m^veAVz-I*TNmM)C@daR7y!{zWo1 zNGUOwOg2Cktcq@-rVDG4A22)^U@a^YOJm&
    JR0>no+r#POsY%(hB;q^gK(j zt_0ITab~|>Q>047`fycoY48@MZi`06$b>TMFN!>oelt&YNoqb8sa#8;vsWr}Gz-qH z&|;>BBOUV+R@#xpRt_2U5YOs28%6mD5d9?7O2hI!kuHtPZyv# P%E~0Qk6H}vAwET6QqLannpv$?^3>FK(7 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 BEd>Ao literal 0 HcmV?d00001 diff --git a/data/data.db-wal b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/lock similarity index 100% rename from data/data.db-wal rename to ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/lock diff --git a/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/o.dat b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/o.dat new file mode 100644 index 0000000000000000000000000000000000000000..cddeb261a98cd4927e5d3c656db4426de39246ac GIT binary patch literal 936205 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 LONAV@C55ryU)x7s!i=u}rJKpu_D6K#4{RWr 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

    &QBVP`T~6MA$yy!^OGXNo2#WA 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 literal 0 HcmV?d00001 diff --git a/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm.json b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm.json new file mode 100644 index 0000000..9223bfa --- /dev/null +++ b/ui/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm.json @@ -0,0 +1,31 @@ +{ + "type": "application", + "source-directories": [ + "src", + "../../../../../../../../../../../nix/store/7c4670wjl90sfwmvd34yz4wi9g2wccgx-elm-test-0.19.1-revision12/lib/node_modules/elm-test/elm/src", + "../../../../../src" + ], + "elm-version": "0.19.1", + "dependencies": { + "direct": { + "elm/browser": "1.0.2", + "elm/core": "1.0.5", + "elm/html": "1.0.0", + "elm/http": "2.0.0", + "elm/json": "1.1.3", + "elm/random": "1.0.0", + "elm/time": "1.0.0", + "mdgriffith/elm-ui": "1.1.8" + }, + "indirect": { + "elm/bytes": "1.0.8", + "elm/file": "1.0.5", + "elm/url": "1.0.0", + "elm/virtual-dom": "1.0.3" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} \ No newline at end of file diff --git a/ui/elm.js b/ui/elm.js new file mode 100644 index 0000000..fb50992 --- /dev/null +++ b/ui/elm.js @@ -0,0 +1,12416 @@ +(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.'); + + +// 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; + })); +}); + + + +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; +} + + + +// 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); + + + +// 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 +// +// For some reason, tabs can appear in href protocols and it still works. +// So '\tjava\tSCRIPT:alert("!!!")' and 'javascript:alert("!!!")' are the same +// in practice. That is why _VirtualDom_RE_js and _VirtualDom_RE_js_html look +// so freaky. +// +// Pulling the regular expressions out to the top level gives a slight speed +// boost in small benchmarks (4-10%) but hoisting values to reduce allocation +// can be unpredictable in large programs where JIT may have a harder time with +// functions are not fully self-contained. The benefit is more that the js and +// js_html ones are so weird that I prefer to see them near each other. + + +var _VirtualDom_RE_script = /^script$/i; +var _VirtualDom_RE_on_formAction = /^(on|formAction$)/i; +var _VirtualDom_RE_js = /^\s*j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:/i; +var _VirtualDom_RE_js_html = /^\s*(j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:|d\s*a\s*t\s*a\s*:\s*t\s*e\s*x\s*t\s*\/\s*h\s*t\s*m\s*l\s*(,|;))/i; + + +function _VirtualDom_noScript(tag) +{ + return _VirtualDom_RE_script.test(tag) ? 'p' : tag; +} + +function _VirtualDom_noOnOrFormAction(key) +{ + return _VirtualDom_RE_on_formAction.test(key) ? 'data-' + key : key; +} + +function _VirtualDom_noInnerHtmlOrFormAction(key) +{ + return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; +} + +function _VirtualDom_noJavaScriptUri(value) +{ + return _VirtualDom_RE_js.test(value) + ? /**_UNUSED/''//*//**/'javascript:alert("This is an XSS vector. Please use ports or web components instead.")'//*/ + : value; +} + +function _VirtualDom_noJavaScriptOrHtmlUri(value) +{ + return _VirtualDom_RE_js_html.test(value) + ? /**_UNUSED/''//*//**/'javascript:alert("This is an XSS vector. Please use ports or web components instead.")'//*/ + : value; +} + +function _VirtualDom_noJavaScriptOrHtmlJson(value) +{ + return (typeof _Json_unwrap(value) === 'string' && _VirtualDom_RE_js_html.test(_Json_unwrap(value))) + ? _Json_wrap( + /**_UNUSED/''//*//**/'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); + } + })); +} + + + +// 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 _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; +}); +var $elm$core$Basics$EQ = {$: 'EQ'}; +var $elm$core$Basics$GT = {$: 'GT'}; +var $elm$core$Basics$LT = {$: 'LT'}; +var $elm$core$List$cons = _List_cons; +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$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$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$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$browser$Browser$External = function (a) { + return {$: 'External', a: a}; +}; +var $elm$browser$Browser$Internal = function (a) { + return {$: 'Internal', a: a}; +}; +var $elm$core$Basics$identity = function (x) { + return x; +}; +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$length = _String_length; +var $elm$core$String$slice = _String_slice; +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$Basics$never = function (_v0) { + never: + while (true) { + var nvr = _v0.a; + var $temp$_v0 = nvr; + _v0 = $temp$_v0; + continue never; + } +}; +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$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 $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$Main$FetchDataHandler = function (a) { + return {$: 'FetchDataHandler', a: a}; +}; +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$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'}; +var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; +var $elm$core$Maybe$isJust = function (maybe) { + if (maybe.$ === 'Just') { + return true; + } else { + return false; + } +}; +var $elm$core$Platform$sendToSelf = _Platform_sendToSelf; +var $elm$core$Basics$compare = _Utils_compare; +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$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$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$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$core$Basics$composeR = F3( + function (f, g, x) { + return g( + f(x)); + }); +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$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$core$Process$kill = _Scheduler_kill; +var $elm$core$Process$spawn = _Scheduler_spawn; +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$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$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 $author$project$Api$ErrorResponse = function (a) { + return {$: 'ErrorResponse', a: a}; +}; +var $author$project$Api$OkResponse = function (a) { + return {$: 'OkResponse', a: a}; +}; +var $elm$json$Json$Decode$field = _Json_decodeField; +var $elm$json$Json$Decode$andThen = _Json_andThen; +var $author$project$Api$convertKeysToIntDict = function (stringKeyedDict) { + return $elm$json$Json$Decode$succeed( + A3( + $elm$core$List$foldl, + F2( + function (maybePair, acc) { + if (maybePair.a.$ === 'Just') { + var intKey = maybePair.a.a; + var lesson = maybePair.b; + return A3($elm$core$Dict$insert, intKey, lesson, acc); + } else { + var _v2 = maybePair.a; + return acc; + } + }), + $elm$core$Dict$empty, + A2( + $elm$core$List$map, + function (_v0) { + var key = _v0.a; + var lesson = _v0.b; + return _Utils_Tuple2( + $elm$core$String$toInt(key), + lesson); + }, + $elm$core$Dict$toList(stringKeyedDict)))); +}; +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$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 $author$project$Api$Lesson = F3( + function (text, id, cards) { + return {cards: cards, id: id, text: text}; + }); +var $author$project$Api$Card = F3( + function (text, note, id) { + return {id: id, note: note, text: text}; + }); +var $elm$json$Json$Decode$int = _Json_decodeInt; +var $elm$json$Json$Decode$map3 = _Json_map3; +var $elm$json$Json$Decode$oneOf = _Json_oneOf; +var $elm$json$Json$Decode$maybe = function (decoder) { + return $elm$json$Json$Decode$oneOf( + _List_fromArray( + [ + A2($elm$json$Json$Decode$map, $elm$core$Maybe$Just, decoder), + $elm$json$Json$Decode$succeed($elm$core$Maybe$Nothing) + ])); +}; +var $elm$json$Json$Decode$string = _Json_decodeString; +var $author$project$Api$cardDecoder = A4( + $elm$json$Json$Decode$map3, + $author$project$Api$Card, + A2($elm$json$Json$Decode$field, 'text', $elm$json$Json$Decode$string), + A2( + $elm$json$Json$Decode$field, + 'note', + $elm$json$Json$Decode$maybe($elm$json$Json$Decode$string)), + A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int)); +var $elm$json$Json$Decode$list = _Json_decodeList; +var $author$project$Api$lessonDecoder = A4( + $elm$json$Json$Decode$map3, + $author$project$Api$Lesson, + A2($elm$json$Json$Decode$field, 'text', $elm$json$Json$Decode$string), + A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int), + A2( + $elm$json$Json$Decode$field, + 'cards', + $elm$json$Json$Decode$list($author$project$Api$cardDecoder))); +var $author$project$Api$lessonsDecoder = A2( + $elm$json$Json$Decode$andThen, + $author$project$Api$convertKeysToIntDict, + $elm$json$Json$Decode$dict($author$project$Api$lessonDecoder)); +var $author$project$Api$serverResponseDecoder = $elm$json$Json$Decode$oneOf( + _List_fromArray( + [ + A2( + $elm$json$Json$Decode$map, + $author$project$Api$OkResponse, + A2($elm$json$Json$Decode$field, 'ok', $author$project$Api$lessonsDecoder)), + A2( + $elm$json$Json$Decode$map, + $author$project$Api$ErrorResponse, + A2($elm$json$Json$Decode$field, 'error', $elm$json$Json$Decode$string)) + ])); +var $author$project$Api$fetchLessons = function (toMsg) { + return $elm$http$Http$get( + { + expect: A2($elm$http$Http$expectJson, toMsg, $author$project$Api$serverResponseDecoder), + url: 'http://localhost:3000/api/lessons' + }); +}; +var $author$project$Main$Lessons = {$: 'Lessons'}; +var $author$project$Main$sampleLessons = $elm$core$Dict$fromList(_List_Nil); +var $author$project$Main$initialState = {isLoading: false, lessons: $author$project$Main$sampleLessons, tab: $author$project$Main$Lessons}; +var $elm$core$Debug$log = _Debug_log; +var $author$project$Main$init = function (flags) { + return function (_v1) { + return _Utils_Tuple2( + $author$project$Main$initialState, + $author$project$Api$fetchLessons($author$project$Main$FetchDataHandler)); + }( + function (_v0) { + return A2($elm$core$Debug$log, 'Initial State', $author$project$Main$initialState); + }( + A2($elm$core$Debug$log, 'Init flags', flags))); +}; +var $elm$core$Platform$Sub$batch = _Platform_batch; +var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); +var $elm$core$Platform$Cmd$batch = _Platform_batch; +var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); +var $author$project$Main$update = F2( + function (msg, model) { + if (msg.$ === 'UserSelectedTab') { + var t = msg.a; + return _Utils_Tuple2( + _Utils_update( + model, + {tab: t}), + $elm$core$Platform$Cmd$none); + } else { + if (msg.a.$ === 'Ok') { + var serres = msg.a.a; + if (serres.$ === 'OkResponse') { + var lessons = serres.a; + return _Utils_Tuple2( + _Utils_update( + model, + {isLoading: false, lessons: lessons}), + $elm$core$Platform$Cmd$none); + } else { + return _Utils_Tuple2( + _Utils_update( + model, + {isLoading: false}), + $elm$core$Platform$Cmd$none); + } + } else { + return _Utils_Tuple2( + _Utils_update( + model, + {isLoading: false}), + $elm$core$Platform$Cmd$none); + } + } + }); +var $author$project$Main$Pronunciation = {$: 'Pronunciation'}; +var $author$project$Main$Words = {$: 'Words'}; +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$Unkeyed = function (a) { + return {$: 'Unkeyed', a: a}; +}; +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$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 $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 $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$AsEl = {$: 'AsEl'}; +var $mdgriffith$elm_ui$Internal$Model$asEl = $mdgriffith$elm_ui$Internal$Model$AsEl; +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$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$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 $elm$core$Set$Set_elm_builtin = function (a) { + return {$: 'Set_elm_builtin', a: a}; +}; +var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty); +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 $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$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$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$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$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_noJavaScriptOrHtmlJson(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 $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 $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 rules = _v0.rules; + var topLevel = _v0.topLevel; + 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$Internal$Model$Height = function (a) { + return {$: 'Height', a: a}; +}; +var $mdgriffith$elm_ui$Element$height = $mdgriffith$elm_ui$Internal$Model$Height; +var $mdgriffith$elm_ui$Internal$Model$Attr = function (a) { + return {$: 'Attr', a: a}; +}; +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$Internal$Model$Content = {$: 'Content'}; +var $mdgriffith$elm_ui$Element$shrink = $mdgriffith$elm_ui$Internal$Model$Content; +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$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 $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 $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$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$Rgba = F4( + function (a, b, c, d) { + return {$: 'Rgba', a: a, b: b, c: c, d: d}; + }); +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 html = el.a.html; + var styles = el.a.styles; + 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$Colored = F3( + function (a, b, c) { + return {$: 'Colored', a: a, b: b, c: c}; + }); +var $mdgriffith$elm_ui$Internal$Model$FontFamily = F2( + function (a, b) { + return {$: 'FontFamily', a: a, b: b}; + }); +var $mdgriffith$elm_ui$Internal$Model$FontSize = function (a) { + return {$: 'FontSize', a: a}; +}; +var $mdgriffith$elm_ui$Internal$Model$SansSerif = {$: 'SansSerif'}; +var $mdgriffith$elm_ui$Internal$Model$StyleClass = F2( + function (a, b) { + return {$: 'StyleClass', a: a, b: b}; + }); +var $mdgriffith$elm_ui$Internal$Model$Typeface = function (a) { + return {$: 'Typeface', a: a}; +}; +var $mdgriffith$elm_ui$Internal$Flag$bgColor = $mdgriffith$elm_ui$Internal$Flag$flag(8); +var $mdgriffith$elm_ui$Internal$Flag$fontColor = $mdgriffith$elm_ui$Internal$Flag$flag(14); +var $mdgriffith$elm_ui$Internal$Flag$fontFamily = $mdgriffith$elm_ui$Internal$Flag$flag(5); +var $mdgriffith$elm_ui$Internal$Flag$fontSize = $mdgriffith$elm_ui$Internal$Flag$flag(4); +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 $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$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$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 $author$project$Main$lessonPreview = function (lesson) { + return A2( + $mdgriffith$elm_ui$Element$el, + _List_Nil, + A2( + $mdgriffith$elm_ui$Element$column, + _List_Nil, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$text( + 'Lesson: ' + $elm$core$String$fromInt(lesson.id)), + $mdgriffith$elm_ui$Element$text(lesson.text) + ]))); +}; +var $elm$core$Dict$values = function (dict) { + return A3( + $elm$core$Dict$foldr, + F3( + function (key, value, valueList) { + return A2($elm$core$List$cons, value, valueList); + }), + _List_Nil, + dict); +}; +var $author$project$Main$lessonsView = function (lessons) { + return A2( + $mdgriffith$elm_ui$Element$column, + _List_Nil, + A2( + $elm$core$List$map, + $author$project$Main$lessonPreview, + $elm$core$Dict$values(lessons))); +}; +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 $author$project$Main$UserSelectedTab = function (a) { + return {$: 'UserSelectedTab', a: a}; +}; +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 $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$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$Main$color = { + blue: A3($mdgriffith$elm_ui$Element$rgb255, 114, 159, 207), + darkCharcoal: A3($mdgriffith$elm_ui$Element$rgb255, 46, 52, 54), + lightBlue: A3($mdgriffith$elm_ui$Element$rgb255, 197, 232, 247), + lightGrey: A3($mdgriffith$elm_ui$Element$rgb255, 224, 224, 224), + white: A3($mdgriffith$elm_ui$Element$rgb255, 255, 255, 255) +}; +var $elm$core$Basics$composeL = F3( + function (g, f, x) { + return g( + f(x)); + }); +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 $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$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 left = _v0.left; + var bottom = _v0.bottom; + var right = _v0.right; + var top = _v0.top; + 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$Internal$Flag$borderRound = $mdgriffith$elm_ui$Internal$Flag$flag(17); +var $mdgriffith$elm_ui$Element$Border$roundEach = function (_v0) { + var bottomRight = _v0.bottomRight; + var bottomLeft = _v0.bottomLeft; + var topRight = _v0.topRight; + var topLeft = _v0.topLeft; + 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(topLeft) + ('-' + ($elm$core$String$fromInt(topRight) + ($elm$core$String$fromInt(bottomLeft) + ('-' + $elm$core$String$fromInt(bottomRight)))))), + 'border-radius', + $elm$core$String$fromInt(topLeft) + ('px ' + ($elm$core$String$fromInt(topRight) + ('px ' + ($elm$core$String$fromInt(bottomRight) + ('px ' + ($elm$core$String$fromInt(bottomLeft) + 'px')))))))); +}; +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 $mdgriffith$elm_ui$Element$Border$widthXY = F2( + function (x, y) { + 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(x) + ('-' + $elm$core$String$fromInt(y))), + y, + x, + y, + x)); + }); +var $mdgriffith$elm_ui$Element$Border$widthEach = function (_v0) { + var right = _v0.right; + var left = _v0.left; + var top = _v0.top; + var bottom = _v0.bottom; + return (_Utils_eq(top, bottom) && _Utils_eq(left, right)) ? (_Utils_eq(top, right) ? $mdgriffith$elm_ui$Element$Border$width(top) : A2($mdgriffith$elm_ui$Element$Border$widthXY, left, top)) : 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(top) + ('-' + ($elm$core$String$fromInt(right) + ('-' + ($elm$core$String$fromInt(bottom) + ('-' + $elm$core$String$fromInt(left))))))), + top, + right, + bottom, + left)); +}; +var $author$project$Main$tabEl = F2( + function (tab, selectedTab) { + var isSelected = _Utils_eq(tab, selectedTab); + var padOffset = isSelected ? 0 : 2; + var corners = isSelected ? {bottomLeft: 0, bottomRight: 0, topLeft: 6, topRight: 6} : {bottomLeft: 0, bottomRight: 0, topLeft: 0, topRight: 0}; + var borderWidths = isSelected ? {bottom: 0, left: 2, right: 2, top: 2} : {bottom: 2, left: 0, right: 0, top: 0}; + return A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Border$widthEach(borderWidths), + $mdgriffith$elm_ui$Element$Border$roundEach(corners), + $mdgriffith$elm_ui$Element$Border$color($author$project$Main$color.blue), + $mdgriffith$elm_ui$Element$Events$onClick( + $author$project$Main$UserSelectedTab(tab)) + ]), + A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$centerY, + $mdgriffith$elm_ui$Element$paddingEach( + {bottom: 10 - padOffset, left: 30, right: 30, top: 10 + padOffset}) + ]), + $mdgriffith$elm_ui$Element$text( + function () { + switch (tab.$) { + case 'Lessons': + return 'Lessons'; + case 'Words': + return 'Words'; + default: + return 'Audio'; + } + }()))); + }); +var $author$project$Main$view = function (model) { + return model.isLoading ? A2( + $mdgriffith$elm_ui$Element$layout, + _List_Nil, + $mdgriffith$elm_ui$Element$text('...')) : A2( + $mdgriffith$elm_ui$Element$layout, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), + $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$fill) + ]), + A2( + $mdgriffith$elm_ui$Element$column, + _List_fromArray( + [$mdgriffith$elm_ui$Element$centerX]), + _List_fromArray( + [ + A2( + $mdgriffith$elm_ui$Element$row, + _List_Nil, + _List_fromArray( + [ + A2($author$project$Main$tabEl, $author$project$Main$Lessons, model.tab), + A2($author$project$Main$tabEl, $author$project$Main$Words, model.tab), + A2($author$project$Main$tabEl, $author$project$Main$Pronunciation, model.tab) + ])), + _Utils_eq(model.tab, $author$project$Main$Lessons) ? $author$project$Main$lessonsView(model.lessons) : A2( + $mdgriffith$elm_ui$Element$el, + _List_Nil, + $mdgriffith$elm_ui$Element$text('WIP')) + ]))); +}; +var $author$project$Main$main = $elm$browser$Browser$element( + { + init: $author$project$Main$init, + subscriptions: function (_v0) { + return $elm$core$Platform$Sub$none; + }, + update: $author$project$Main$update, + view: $author$project$Main$view + }); +_Platform_export({'Main':{'init':$author$project$Main$main( + $elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(this)); \ No newline at end of file diff --git a/ui/elm.json b/ui/elm.json index 5398be3..7cd88ec 100644 --- a/ui/elm.json +++ b/ui/elm.json @@ -9,10 +9,13 @@ "elm/browser": "1.0.2", "elm/core": "1.0.5", "elm/html": "1.0.0", + "elm/http": "2.0.0", + "elm/json": "1.1.3", "mdgriffith/elm-ui": "1.1.8" }, "indirect": { - "elm/json": "1.1.3", + "elm/bytes": "1.0.8", + "elm/file": "1.0.5", "elm/time": "1.0.0", "elm/url": "1.0.0", "elm/virtual-dom": "1.0.3" diff --git a/ui/index.html b/ui/index.html index e69de29..1a37638 100644 --- a/ui/index.html +++ b/ui/index.html @@ -0,0 +1,24 @@ + + + + + Prosody + + +

    + + + + + SELECT + l.id, l.text, cards.text, cards.note + FROM cards_lessons cl + JOIN lessons l ON l.id = cl.lesson_id + JOIN cards ON cards.id = lc.card_id + LIMIT 20 + OFFSET 0 + BY l.id ASC diff --git a/ui/src/Api.elm b/ui/src/Api.elm new file mode 100644 index 0000000..bcbec63 --- /dev/null +++ b/ui/src/Api.elm @@ -0,0 +1,113 @@ +module Api exposing (Card, Lesson, Lessons, ServerResponse(..), fetchLessons) + +import Dict exposing (Dict) +import Http +import Json.Decode as Decode + + + +-- data types + + +type alias Card = + { text : String + , note : Maybe String + , id : Int + } + + +type alias Lesson = + { text : String + , id : Int + , cards : List Card + } + + +type alias Lessons = + Dict Int Lesson + + +type ServerResponse + = OkResponse Lessons + | ErrorResponse String + + + +-- json decoders + + +serverResponseDecoder : Decode.Decoder ServerResponse +serverResponseDecoder = + Decode.oneOf + [ Decode.map OkResponse + (Decode.field "ok" lessonsDecoder) + , Decode.map ErrorResponse (Decode.field "error" Decode.string) + ] + + +cardDecoder : Decode.Decoder Card +cardDecoder = + Decode.map3 Card + (Decode.field "text" Decode.string) + (Decode.field "note" (Decode.maybe Decode.string)) + (Decode.field "id" Decode.int) + + +lessonDecoder : Decode.Decoder Lesson +lessonDecoder = + Decode.map3 Lesson + (Decode.field "text" Decode.string) + (Decode.field "id" Decode.int) + (Decode.field "cards" (Decode.list cardDecoder)) + + +lessonsDecoder : Decode.Decoder Lessons +lessonsDecoder = + Decode.dict lessonDecoder + |> Decode.andThen convertKeysToIntDict + + +convertKeysToIntDict : Dict String Lesson -> Decode.Decoder Lessons +convertKeysToIntDict stringKeyedDict = + stringKeyedDict + |> Dict.toList + |> List.map (\( key, lesson ) -> ( String.toInt key, lesson )) + |> List.foldl + (\maybePair acc -> + case maybePair of + ( Just intKey, lesson ) -> + Dict.insert intKey lesson acc + + ( Nothing, _ ) -> + acc + ) + Dict.empty + |> Decode.succeed + + + +-- http command + + +fetchLessons : (Result Http.Error ServerResponse -> msg) -> Cmd msg +fetchLessons toMsg = + Http.get + { url = "http://localhost:3000/api/lessons" + , expect = Http.expectJson toMsg serverResponseDecoder + } + + + +-- FetchRawJsonHandler (Ok rawJson) -> +-- Debug.log "Raw json response" rawJson +-- |> (\_ -> +-- case Decode.decodeString lessonsDecoder rawJson of +-- Ok lessons -> +-- ( { model | lessons = lessons, isLoading = False }, Cmd.none ) +-- Err decodeError -> +-- Debug.log "Decode Error" decodeError +-- |> (\_ -> ( { model | isLoading = False }, Cmd.none )) +-- ) +-- FetchRawJsonHandler (Err httpError) -> +-- Debug.log "HTTP Error" httpError +-- |> (\_ -> ( { model | isLoading = False }, Cmd.none )) diff --git a/ui/src/Main.elm b/ui/src/Main.elm index 628b7d7..da55519 100644 --- a/ui/src/Main.elm +++ b/ui/src/Main.elm @@ -1,24 +1,190 @@ +module Main exposing (..) + +import Api exposing (Card, Lesson, Lessons, ServerResponse(..), fetchLessons) import Browser -import Html exposing (Html, button, div, text) -import Html.Events exposing (onClick) +import Dict exposing (Dict) +import Element exposing (..) +import Element.Background as Background +import Element.Border as Border +import Element.Events exposing (onClick) +import Element.Font as Font +import Html exposing (Html) +import Http -main = - Browser.sandbox { init = 0, update = update, view = view } --- user actions -type Msg = Increment | Decrement +type Tab + = Lessons + | Words + | Pronunciation + +type Msg + = UserSelectedTab Tab + | FetchDataHandler (Result Http.Error ServerResponse) + + + +-- state + + +type alias Model = + { lessons : Lessons + , tab : Tab + , isLoading : Bool + } + + +sampleLessons : Lessons +sampleLessons = + Dict.fromList [] + + +initialState : Model +initialState = + { isLoading = False + , lessons = sampleLessons + , tab = Lessons + } + + + +-- update + + +update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = - case msg of - Increment -> - model + 1 + case msg of + UserSelectedTab t -> + ( { model | tab = t }, Cmd.none ) - Decrement -> - model - 1 + FetchDataHandler (Ok serres) -> + -- let + -- _ = + -- Debug.log "hi" serres + -- in + case serres of + OkResponse lessons -> + ( { model | lessons = lessons, isLoading = False }, Cmd.none ) + ErrorResponse _ -> + ( { model | isLoading = False }, Cmd.none ) + + FetchDataHandler (Err _) -> + ( { model | isLoading = False }, Cmd.none ) + + +view : Model -> Html Msg view model = - div [] - [ button [ onClick Decrement ] [ text "-" ] - , div [] [ text (String.fromInt model) ] - , button [ onClick Increment ] [ text "+" ] - ] + if model.isLoading then + layout [] (text "...") + + else + layout [ width fill, height fill ] <| + column + [ centerX ] + [ row [] + [ tabEl Lessons model.tab + , tabEl Words model.tab + , tabEl Pronunciation model.tab + ] + , if model.tab == Lessons then + lessonsView model.lessons + + else + el [] (text "WIP") + ] + + +tabEl : Tab -> Tab -> Element Msg +tabEl tab selectedTab = + let + isSelected = + tab == selectedTab + + padOffset = + if isSelected then + 0 + + else + 2 + + borderWidths = + if isSelected then + { left = 2, top = 2, right = 2, bottom = 0 } + + else + { bottom = 2, top = 0, left = 0, right = 0 } + + corners = + if isSelected then + { topLeft = 6, topRight = 6, bottomLeft = 0, bottomRight = 0 } + + else + { topLeft = 0, topRight = 0, bottomLeft = 0, bottomRight = 0 } + in + el + [ Border.widthEach borderWidths + , Border.roundEach corners + , Border.color color.blue + , onClick <| UserSelectedTab tab + ] + <| + el + [ centerX + , centerY + , paddingEach { left = 30, right = 30, top = 10 + padOffset, bottom = 10 - padOffset } + ] + <| + text <| + case tab of + Lessons -> + "Lessons" + + Words -> + "Words" + + Pronunciation -> + "Audio" + + +lessonsView : Lessons -> Element Msg +lessonsView lessons = + Dict.values lessons + |> List.map lessonPreview + |> column [] + + +lessonPreview : Lesson -> Element Msg +lessonPreview lesson = + el [] + (column [] + [ text ("Lesson: " ++ String.fromInt lesson.id) + , text lesson.text + ] + ) + + +init : flags -> ( Model, Cmd Msg ) +init flags = + Debug.log "Init flags" flags + |> (\_ -> Debug.log "Initial State" initialState) + |> (\_ -> ( initialState, fetchLessons FetchDataHandler )) + + +main : Program () Model Msg +main = + Browser.element + { init = init + , view = view + , update = update + , subscriptions = \_ -> Sub.none + } + + +color = + { blue = rgb255 0x72 0x9F 0xCF + , darkCharcoal = rgb255 0x2E 0x34 0x36 + , lightBlue = rgb255 0xC5 0xE8 0xF7 + , lightGrey = rgb255 0xE0 0xE0 0xE0 + , white = rgb255 0xFF 0xFF 0xFF + }