-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
245 lines (215 loc) · 26.4 KB
/
script.js
File metadata and controls
245 lines (215 loc) · 26.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
//let words = ['ohne', 'sich','lebt','das','eine','wie','ich','seine','dass','er','war','für','auf','sind','mit','sie','sein','bei','ein','haben','dies','aus','durch','heiß','wort','aber','was','einige','ist','es','sie','oder','hatte','die','von','zu','und','ein','bei','wir','können','aus','andere','waren','die','tun','ihre','zeit','wenn','werden','wie','sagte','ein','jeder','sagen','tut','satz','drei','wollen','luft','gut','auch','spielen','klein','ende','setzen','zuhause','lesen','seits','hafen','groß','buchstabieren','hinzufügen','auch','lande','hier','muss','groß','hoch','so','folgen','akt','warum','fragen','männer','veränderung','ging','licht','art','aus','müssen','haus','bild','versuchen','uns','wieder','tier','punkt','mutter','welt','nähe','bauen','selbst','erde','vater','jeder','neu','arbeit','teil','nehmen','erhalten','ort','gemacht','leben','wo','nach','zurück','wenig','nur','runde','mann','jahr','kam','zeigen','jeder','gut','mir','geben','unsere','unter','name','sehr','durch','nur','formular','satz','groß','denken','sagen','hilfe','niedrig','linie','abweichen','wiederum','ursache','viel','bedeuten','vor','umzug','recht','junge','alt','zu','gleich','sie','alle','da','wenn','nach','oben','verwendung','ihre','weg','über','viele','dann','sie','schreiben','würde','wie','so','diese','sie','lange','machen','sache','sehen','ihm','zwei','hat','suchen','mehr','tag','könnte','gehen','kommen','tat','anzahl','klingen','nicht','am','meisten','menschen','meine','über','wissen','wasser','als','anruf','erste','die','können','nach','unten','seite','gewesen','jetzt','finden','kopf','stehen','besitzen','seite','sollte','land','gefunden','antwort','schule','wachsen','studie','noch','lernen','anlage','abdeckung','lebensmittel','sonne','vier','zwischen','zustand','halten','auge','nie','letzte','lassen','gedanken','stadt','baum','überqueren','bauernhof','schwer','beginn','macht','geschichte','säge','weit','meer','ziehen','links','spät','laufen','unterlassen','während','presse','schließen','nacht','realen','leben','wenige','norden','buch','tragen','nahm','wissenschaft','essen','zimmer','freund','begann','idee','fisch','berg','stopp','einmal','basis','hören','pferd','schnitt','sicher','beobachten','farbe','gesicht','holz','haupt-','geöffnet','scheinen','zusammen','nächste','weiß','kinder','start','bekam','gehen','beispiel','erleichtern','papier','gruppe','immer','musik','diejenigen','beide','marke','oft','schreiben','bis','meile','fluss','auto','füße','pflege','zweite','genug','ebene','mädchen','üblich','jung','bereit','oben','je','rot','liste','obwohl','fühlen','vortrag','vogel','bald','körper','hund','familie','direkt','pose','verlassen','lied','messen','tür','produkt','schwarz','kurz','zahl','klasse','wind','frage','passieren','vollständig','schiff','bereich','hälfte','stein','bestellen','feuer','süden','problem','stück','sagte','wusste','passieren','seit','obere','ganze','könig','straße','zoll','multiplizieren','nichts','kurs','bleiben','rad','voll','kraft','blau','objekt','entscheiden','oberfläche','tief','mond','insel','fuß','system','beschäftigt','prüfung','rekord','boot','gemeinsam','goldenen','möglich','flugzeug','statt','trocken','wunder','lachen','tausend','vor','lief','überprüfen','spiel','form','gleichsetzen','heiß','fehl','gebracht','wärme','schnee','reifen','bringen','ja','entfernt','füllen','osten','malen','sprache','unter','einheit','macht','stadt','fein','sicher','fliegen','fallen','führen','schrei','dunkel','maschine','note','warten','plan','abbildung','stern','kasten','nomen','feld','rest','richtig','fähig','pfund','getan','schönheit','antriebs','stand','enthalten','front','lehren','woche','finale','gab','grün','oh','schnell','entwickeln','ozean','warme','kostenlos','minute','stark','besondere','geist','hinter','klar','schwanz','produzieren','tatsache','raum','gehört','beste','stunde','besser','wahr','während','hundert','fünf','merken','schritt','früh','halten','westen','boden','interesse','erreichen','schnell','verbum','singen','hören','sechs','tabelle','reise','weniger','morgen','zehn','einfach','mehrere','vokal','auf','krieg','legen','gegen','muster','schleppend','zentrum','liebe','person','geld','dienen','erscheinen','straße','karte','regen','regel','regieren','ziehen','kälte','hinweis','stimme','energie','jagd','wahrscheinlich','bett','bruder','ei','fahrt','zelle','glauben','vielleicht','pflücken','plötzlich','zählen','platz','grund','dauer','vertreten','kunst','thema','region','größe','variieren','regeln','sprechen','gewicht','allgemein','eis','materie','kreis','paar','umfassen','kluft','silbe','filz','groß','kugel','noch','welle','fallen','herz','uhr','vorhanden','schwer','tanz','motor','position','arm','breit','segel','material','fraktion','wald','sitzen','rennen','fenster','speicher','sommer','zug','schlaf','beweisen','einsam','bein','übung','wand','fang','berg','wünschen','himmel','board','freude','winter','sa','geschrieben','wilden','instrument','gehalten','glas','gras','kuh','arbeit','rand','zeichen','besuch','vergangenheit','weich','spaß','hell','gases','wetter','monat','million','tragen','finish','glücklich','hoffen','blume','kleiden','seltsam','vorbei','handel','melodie','reise','büro','empfangen','reihe','mund','genau','zeichen','sterben','am','wenigsten','ärger','schrei','außer','schrieb','samen','ton','beitreten','vorschlagen','sauber','pause','dame','hof','steigen','schlecht','schlag','öl','blut','berühren','wuchs','cent','mischen','mannschaft','draht','kosten','verloren','braun','tragen','garten','gleich','gesendet','wählen','fiel','passen','fließen','messe','bank','sammeln','sparen','kontrolle','dezimal','ohr','sonst','ganz','pleite','fall','mitte','töten','sohn','see','moment','maßstab','laut','frühling','beobachten','kind','gerade','konsonant','nation','wörterbuch','milch','geschwindigkeit','verfahren','orgel','zahlen','alter','abschnitt','kleid','wolke','überraschung','ruhig','stein','winzig','aufstieg','kühlen','entwurf','arm','menge','versuch','boden','schlüssel','eisen','einzel','stick','wohnung','zwanzig','haut','lächeln','falte','loch','springen','kind','acht','dorf','treffen','wurzel','kaufen','erhöhen','lösen','metall','ob','drücken','sieben','absatz','dritte','wird','hand','haar','beschreiben','koch','boden','entweder','ergebnis','brennen','hügel','sicher','katze','jahrhundert','betrachten','typ','gesetz','bit','küste','kopie','ausdruck','still','hoch','sand','boden','rolle','temperatur','finger','industrie','wert','kampf','lüge','schlagen','begeistern','natürlich','blick','sinn','hauptstadt','wird','nicht','wo','stuhl','achtung','obst','reich','dick','soldat','prozess','betreiben','praxis','trennen','schwierig','arzt','bitte','schützen','mittag','ernte','modernen','elementes','treffen','schüler','ecke','partei','versorgung','deren','lokalisieren','rings','charakter','insekt','gefangen','zeit','zeigen','funk','speiche','atom','mensch','geschichte','wirkung','elektrisch','erwarten','knochen','schiene','vorstellen','bieten','zustimmen','so','sanft','frau','kapitän','erraten','erforderlich','scharf','flügel','schaffen','nachbar','wasch','fledermaus','eher','menge','mais','vergleichen','gedicht','schnur','glocke','abhängen','fleisch','einreiben','rohr','berühmt','dollar','strom','angst','blick','dünn','dreieck','erde','eile','chef','kolonie','uhr','mine','krawatte','eingeben','dur','frisch','suche','senden','gelb','pistole','erlauben','druck','tot','stelle','wüste','anzug','strom','aufzug','stiegen','ankommen','stamm','spur','elternteil','ufer','teilung','blatt','substanz','begünstigen','verbinden','nach','verbringen','akkord','fett','froh','original','aktie','station','papa','brot','aufladen','richtig','leiste','angebot','segment','sklave','ente','augenblick','markt','grad','besiedeln','küken','liebe','feind','antworten','getränk','auftreten','unterstützung','rede','natur','angebot','dampf','bewegung','weg','flüssigkeit','protokollieren','gemeint','quotient','gebiss','schale','hals','sauerstoff','zucker','tod','ziemlich','geschicklichkeit','frauen','saison','lösung','magnet','silber','danken','zweig','spiel','suffix','insbesondere','feige','ängstlich','riesig','schwester','stahl','diskutieren','vorwärts','ähnlich','führen','erfahrung','partitur','apfel','gekauft','geführt','tonhöhe','mantel','masse','karte','band','seil','rutsch','gewinnen','träumen','abend','zustand','futtermittel','werkzeug','gesamt','basis','geruch','tal','noch','doppelt','sitz','fortsetzen','block','tabelle','hut','verkaufen','erfolg','firma','subtrahieren','veranstaltung','besondere','viel','schwimmen','begriff','gegenteil','frau','schuh','schulter','verbreitung','arrangieren','lager','erfinden','baumwolle','geboren','bestimmen','quart','neun','lastwagen','lärm','ebene','chance','sammeln','geschäft','stretch','werfen','glanz','immobilien','spalte','molekül','wählen','falsch','grau','wiederholung','erfordern','breit','vorbereiten','salz','nase','mehreren','zorn','anspruch','kontinent'];
let words = ['as', 'i', 'his', 'that', 'he', 'was', 'for', 'on', 'are', 'with', 'they', 'be', 'at', 'one', 'have', 'this', 'from', 'by', 'hot', 'word', 'but', 'what', 'some', 'is', 'it', 'you', 'or', 'had', 'the', 'of', 'to', 'and', 'a', 'in', 'we', 'can', 'out', 'other', 'were', 'which', 'do', 'their', 'time', 'if', 'will', 'how', 'said', 'an', 'each', 'tell', 'does', 'set', 'three', 'want', 'air', 'well', 'also', 'play', 'small', 'end', 'put', 'home', 'read', 'hand', 'port', 'large', 'spell', 'add', 'even', 'land', 'here', 'must', 'big', 'high', 'such', 'follow', 'act', 'why', 'ask', 'men', 'change', 'went', 'light', 'kind', 'off', 'need', 'house', 'picture', 'try', 'us', 'again', 'animal', 'point', 'mother', 'world', 'near', 'build', 'self', 'earth', 'father', 'any', 'new', 'work', 'part', 'take', 'get', 'place', 'made', 'live', 'where', 'after', 'back', 'little', 'only', 'round', 'man', 'year', 'came', 'show', 'every', 'good', 'me', 'give', 'our', 'under', 'name', 'very', 'through', 'just', 'form', 'sentence', 'great', 'think', 'say', 'help', 'low', 'line', 'differ', 'turn', 'cause', 'much', 'mean', 'before', 'move', 'right', 'boy', 'old', 'too', 'same', 'she', 'all', 'there', 'when', 'up', 'use', 'your', 'way', 'about', 'many', 'then', 'them', 'write', 'would', 'like', 'so', 'these', 'her', 'long', 'make', 'thing', 'see', 'him', 'two', 'has', 'look', 'more', 'day', 'could', 'go', 'come', 'did', 'number', 'sound', 'no', 'most', 'people', 'my', 'over', 'know', 'water', 'than', 'call', 'first', 'who', 'may', 'down', 'side', 'been', 'now', 'find', 'head', 'stand', 'own', 'page', 'should', 'country', 'found', 'answer', 'school', 'grow', 'study', 'still', 'learn', 'plant', 'cover', 'food', 'sun', 'four', 'between', 'state', 'keep', 'eye', 'never', 'last', 'let', 'thought', 'city', 'tree', 'cross', 'farm', 'hard', 'start', 'might', 'story', 'saw', 'far', 'sea', 'draw', 'left', 'late', 'run', 'don’t', 'while', 'press', 'close', 'night', 'real', 'life', 'few', 'north', 'book', 'carry', 'took', 'science', 'eat', 'room', 'friend', 'began', 'idea', 'fish', 'mountain', 'stop', 'once', 'base', 'hear', 'horse', 'cut', 'sure', 'watch', 'color', 'face', 'wood', 'main', 'open', 'seem', 'together', 'next', 'white', 'children', 'begin', 'got', 'walk', 'example', 'ease', 'paper', 'group', 'always', 'music', 'those', 'both', 'mark', 'often', 'letter', 'until', 'mile', 'river', 'car', 'feet', 'care', 'second', 'enough', 'plain', 'girl', 'usual', 'young', 'ready', 'above', 'ever', 'red', 'list', 'though', 'feel', 'talk', 'bird', 'soon', 'body', 'dog', 'family', 'direct', 'pose', 'leave', 'song', 'measure', 'door', 'product', 'black', 'short', 'numeral', 'class', 'wind', 'question', 'happen', 'complete', 'ship', 'area', 'half', 'rock', 'order', 'fire', 'south', 'problem', 'piece', 'told', 'knew', 'pass', 'since', 'top', 'whole', 'king', 'street', 'inch', 'multiply', 'nothing', 'course', 'stay', 'wheel', 'full', 'force', 'blue', 'object', 'decide', 'surface', 'deep', 'moon', 'island', 'foot', 'system', 'busy', 'test', 'record', 'boat', 'common', 'gold', 'possible', 'plane', 'stead', 'dry', 'wonder', 'laugh', 'thousand', 'ago', 'ran', 'check', 'game', 'shape', 'equate', 'hot', 'miss', 'brought', 'heat', 'snow', 'tire', 'bring', 'yes', 'distant', 'fill', 'east', 'paint', 'language', 'among', 'unit', 'power', 'town', 'fine', 'certain', 'fly', 'fall', 'lead', 'cry', 'dark', 'machine', 'note', 'wait', 'plan', 'figure', 'star', 'box', 'noun', 'field', 'rest', 'correct', 'able', 'pound', 'done', 'beauty', 'drive', 'stood', 'contain', 'front', 'teach', 'week', 'final', 'gave', 'green', 'oh', 'quick', 'develop', 'ocean', 'warm', 'free', 'minute', 'strong', 'special', 'mind', 'behind', 'clear', 'tail', 'produce', 'fact', 'space', 'heard', 'best', 'hour', 'better', 'true', 'during', 'hundred', 'five', 'remember', 'step', 'early', 'hold', 'west', 'ground', 'interest', 'reach', 'fast', 'verb', 'sing', 'listen', 'six', 'table', 'travel', 'less', 'morning', 'ten', 'simple', 'several', 'vowel', 'toward', 'war', 'lay', 'against', 'pattern', 'slow', 'center', 'love', 'person', 'money', 'serve', 'appear', 'road', 'map', 'rain', 'rule', 'govern', 'pull', 'cold', 'notice', 'voice', 'energy', 'hunt', 'probable', 'bed', 'brother', 'egg', 'ride', 'cell', 'believe', 'perhaps', 'pick', 'sudden', 'count', 'square', 'reason', 'length', 'represent', 'art', 'subject', 'region', 'size', 'vary', 'settle', 'speak', 'weight', 'general', 'ice', 'matter', 'circle', 'pair', 'include', 'divide', 'syllable', 'felt', 'grand', 'ball', 'yet', 'wave', 'drop', 'heart', 'am', 'present', 'heavy', 'dance', 'engine', 'position', 'arm', 'wide', 'sail', 'material', 'fraction', 'forest', 'sit', 'race', 'window', 'store', 'summer', 'train', 'sleep', 'prove', 'lone', 'leg', 'exercise', 'wall', 'catch', 'mount', 'wish', 'sky', 'board', 'joy', 'winter', 'sat', 'written', 'wild', 'instrument', 'kept', 'glass', 'grass', 'cow', 'job', 'edge', 'sign', 'visit', 'past', 'soft', 'fun', 'bright', 'gas', 'weather', 'month', 'million', 'bear', 'finish', 'happy', 'hope', 'flower', 'clothe', 'strange', 'gone', 'trade', 'melody', 'trip', 'office', 'receive', 'row', 'mouth', 'exact', 'symbol', 'die', 'least', 'trouble', 'shout', 'except', 'wrote', 'seed', 'tone', 'join', 'suggest', 'clean', 'break', 'lady', 'yard', 'rise', 'bad', 'blow', 'oil', 'blood', 'touch', 'grew', 'cent', 'mix', 'team', 'wire', 'cost', 'lost', 'brown', 'wear', 'garden', 'equal', 'sent', 'choose', 'fell', 'fit', 'flow', 'fair', 'bank', 'collect', 'save', 'control', 'decimal', 'ear', 'else', 'quite', 'broke', 'case', 'middle', 'kill', 'son', 'lake', 'moment', 'scale', 'loud', 'spring', 'observe', 'child', 'straight', 'consonant', 'nation', 'dictionary', 'milk', 'speed', 'method', 'organ', 'pay', 'age', 'section', 'dress', 'cloud', 'surprise', 'quiet', 'stone', 'tiny', 'climb', 'cool', 'design', 'poor', 'lot', 'experiment', 'bottom', 'key', 'iron', 'single', 'stick', 'flat', 'twenty', 'skin', 'smile', 'crease', 'hole', 'jump', 'baby', 'eight', 'village', 'meet', 'root', 'buy', 'raise', 'solve', 'metal', 'whether', 'push', 'seven', 'paragraph', 'third', 'shall', 'held', 'hair', 'describe', 'cook', 'floor', 'either', 'result', 'burn', 'hill', 'safe', 'cat', 'century', 'consider', 'type', 'law', 'bit', 'coast', 'copy', 'phrase', 'silent', 'tall', 'sand', 'soil', 'roll', 'temperature', 'finger', 'industry', 'value', 'fight', 'lie', 'beat', 'excite', 'natural', 'view', 'sense', 'capital', 'won’t', 'chair', 'danger', 'fruit', 'rich', 'thick', 'soldier', 'process', 'operate', 'practice', 'separate', 'difficult', 'doctor', 'please', 'protect', 'noon', 'crop', 'modern', 'element', 'hit', 'student', 'corner', 'party', 'supply', 'whose', 'locate', 'ring', 'character', 'insect', 'caught', 'period', 'indicate', 'radio', 'spoke', 'atom', 'human', 'history', 'effect', 'electric', 'expect', 'bone', 'rail', 'imagine', 'provide', 'agree', 'thus', 'gentle', 'woman', 'captain', 'guess', 'necessary', 'sharp', 'wing', 'create', 'neighbor', 'wash', 'bat', 'rather', 'crowd', 'corn', 'compare', 'poem', 'string', 'bell', 'depend', 'meat', 'rub', 'tube', 'famous', 'dollar', 'stream', 'fear', 'sight', 'thin', 'triangle', 'planet', 'hurry', 'chief', 'colony', 'clock', 'mine', 'tie', 'enter', 'major', 'fresh', 'search', 'send', 'yellow', 'gun', 'allow', 'print', 'dead', 'spot', 'desert', 'suit', 'current', 'lift', 'rose', 'arrive', 'master', 'track', 'parent', 'shore', 'division', 'sheet', 'substance', 'favor', 'connect', 'post', 'spend', 'chord', 'fat', 'glad', 'original', 'share', 'station', 'dad', 'bread', 'charge', 'proper', 'bar', 'offer', 'segment', 'slave', 'duck', 'instant', 'market', 'degree', 'populate', 'chick', 'dear', 'enemy', 'reply', 'drink', 'occur', 'support', 'speech', 'nature', 'range', 'steam', 'motion', 'path', 'liquid', 'log', 'meant', 'quotient', 'teeth', 'shell', 'neck', 'oxygen', 'sugar', 'death', 'pretty', 'skill', 'women', 'season', 'solution', 'magnet', 'silver', 'thank', 'branch', 'match', 'suffix', 'especially', 'fig', 'afraid', 'huge', 'sister', 'steel', 'discuss', 'forward', 'similar', 'guide', 'experience', 'score', 'apple', 'bought', 'led', 'pitch', 'coat', 'mass', 'card', 'band', 'rope', 'slip', 'win', 'dream', 'evening', 'condition', 'feed', 'tool', 'total', 'basic', 'smell', 'valley', 'nor', 'double', 'seat', 'continue', 'block', 'chart', 'hat', 'sell', 'success', 'company', 'subtract', 'event', 'particular', 'deal', 'swim', 'term', 'opposite', 'wife', 'shoe', 'shoulder', 'spread', 'arrange', 'camp', 'invent', 'cotton', 'born', 'determine', 'quart', 'nine', 'truck', 'noise', 'level', 'chance', 'gather', 'shop', 'stretch', 'throw', 'shine', 'property', 'column', 'molecule', 'select', 'wrong', 'gray', 'repeat', 'require', 'broad', 'prepare', 'salt', 'nose', 'plural', 'anger', 'claim', 'continent'];
/*
* Explainit: (this script controlls the overall mechanic...)
* -----------------------------------------------------
* "Describe complex things...
* ...in simple words!"
*/
let globalTabIndex = 0;
let mainList = document.querySelector("ul#main");
let startEntry = newEntry("");
startEntry.id = "start";
mainList.appendChild(startEntry); // First entry point...
document.querySelector("#start button.remove").remove(); // Remove the first only remove button of the entry point.
document.querySelector("#start input").select(); // Select first input on start.
let wordList = document.querySelector("aside > ol#words");
words.forEach(function(word) {
let elem = document.createElement("li");
elem.innerHTML = word;
wordList.appendChild(elem);
});
document.querySelector("button#info").addEventListener("click", function(event) { // More info button...
document.querySelector("div#claim").classList.toggle("hidden");
document.querySelector("div#more").classList.toggle("hidden");
});
let sectionEdit = document.querySelector("section#edit");
document.querySelector("button#export").addEventListener("click", function(event) { // Export button
let sectionExport = document.querySelector("section#export");
let button = event.target;
button.classList.toggle("active");
sectionEdit.classList.toggle("hidden");
if(button.classList.contains("active")) {
let newSectionExport = makeExportSection();
sectionExport.parentNode.replaceChild(newSectionExport, sectionExport);
} else {
sectionExport.classList.add("hidden");
}
});
let aside = document.querySelector("aside");
let buttonAsideHide = document.createElement("button");
buttonAsideHide.id = "aside-hide";
buttonAsideHide.title = "Hide/show word list";
buttonAsideHide.innerHTML = "⯈";
buttonAsideHide.addEventListener("click", function(event) {
aside.classList.toggle("hidden");
buttonAsideHide.innerHTML = aside.classList.contains("hidden") ? "⯇" : "⯈";
});
sectionEdit.prepend(buttonAsideHide);
// function(event) { // expand/collapse all (hide) -> if needed with button (toggle)...
// for(let element in startEntry.querySelectorAll("ul")) {
// ifNextSibling(bullet, function(sibling) {
// blend(true, sibling, () => sibling.classList.remove("hidden"));
// buttonHide.classList.remove("rotate");
// });
// }
// }
function makeExportSection() {
let sectionExport = document.querySelector("section#edit").cloneNode(true);
sectionExport.querySelector("button#aside-hide").remove();
sectionExport.id = "export";
sectionExport.classList.remove("hidden");
sectionExport.querySelectorAll("ul").forEach(e => e.classList.remove("hidden")); // all explanations get exported, also hidden ones!
sectionExport.querySelectorAll("button.add, button.hide, button.remove, br").forEach(e => e.remove());
sectionExport.querySelectorAll("input").forEach(e => {
let a = document.createElement("div");
a.innerHTML = "<b><u><h3>" + e.value + "</h3></u></b>";
e.parentNode.replaceChild(a, e);
});
sectionExport.querySelectorAll("textarea").forEach(e => {
let a = document.createElement("div");
a.innerHTML = e.value;
e.parentNode.replaceChild(a, e);
});
let buttonCopy = document.createElement("button");
buttonCopy.id = "copy";
buttonCopy.classList.add("appear");
buttonCopy.innerHTML = "Copy export";
buttonCopy.addEventListener("click", function(event) {
selectText(sectionExport);
document.execCommand("copy");
buttonCopy.innerHTML = "Copied!";
setInterval(function() {
buttonCopy.innerHTML = "Copy export";
}, 2000);
});
sectionExport.prepend(buttonCopy);
return sectionExport;
}
function addNewTerms(text, bulletElement) {
let remaining = getNewWords(text);
ifNextSibling(bulletElement, function(sibling) {
remaining.forEach((title) => sibling.appendChild(newEntry(title)));
});
}
function getNewWords(text) {
let terms = trimText(text).split(" ");
let uniqueTerms = terms.filter(function(element, pos) {
return terms.indexOf(element) == pos;
});
let allHeaders = document.querySelectorAll("input");
let headers = [];
allHeaders.forEach(function(element) {
headers.push(element.value.toLowerCase());
});
let remaining = uniqueTerms.filter(function(term) {
term = term.toLowerCase();
return !(headers.includes(term) || words.includes(term));
}).filter((term) => term != ""); // Prevent empty strings to show up in titles!
return remaining;
}
function trimText(text) { // Remove all special characters.
let newText = "";
for(char of text) {
newText += isLetter(char) ? char : " ";
}
return newText.trim().replace(/\s\s+/g, ' ');
}
function isLetter(c) {
return c.toLowerCase() != c.toUpperCase();
}
function newEntry(title) {
let div = document.createElement("div"); // upper element
div.classList.add("appear", "entry");
div.appendChild(newBullet(title));
let list = document.createElement("ul");
div.appendChild(list);
return div;
}
function ifNextSibling(bullet, callbackFun) { // inbstead could use: element.querySelector("ul")
if(bullet.nextSibling && bullet.nextSibling.tagName == "UL") {
callbackFun(bullet.nextSibling);
}
}
function newBullet(title) {
let bullet = document.createElement("li");
let input = document.createElement("input");
input.placeholder = "Title...";
input.value = title;
input.tabIndex = globalTabIndex + 1;
let buttonAdd = document.createElement("button");
buttonAdd.innerHTML = "🞱"; //🞱
buttonAdd.classList.add("add");
buttonAdd.title = "Add sub-explanations for new words";
buttonAdd.tabIndex = globalTabIndex + 3;
buttonAdd.addEventListener("click", function(event) {
ifNextSibling(bullet, function(sibling) {
blend(true, sibling, () => sibling.classList.remove("hidden"));
buttonHide.classList.remove("rotate");
});
addNewTerms(textarea.value, bullet);
buttonAdd.classList.remove("active");
});
let buttonHide = document.createElement("button");
buttonHide.innerHTML = "⯆"; //⯆
buttonHide.classList.add("hide");
buttonHide.title = "Expand/collapse sub-explanations";
buttonHide.tabIndex = globalTabIndex + 4;
buttonHide.addEventListener("click", function(event) {
ifNextSibling(bullet, function(sibling) {
buttonHide.classList.toggle("rotate");
blend(sibling.classList.contains("hidden"), sibling, () => sibling.classList.toggle("hidden"));
});
});
let buttonRemove = document.createElement("button");
buttonRemove.innerHTML = "🞪"; //🞪
buttonRemove.classList.add("remove");
buttonRemove.title = "Remove this explanation and all of it's sub-explanations";
buttonRemove.tabIndex = globalTabIndex + 5;
buttonRemove.addEventListener("click", function(event) {
//ifNextSibling(bullet, function(sibling) {
blend(false, bullet.parentElement, () => bullet.parentElement.remove());
//});
});
let textarea = document.createElement("textarea");
textarea.placeholder = "Text...";
textarea.tabIndex = globalTabIndex + 2;
textarea.addEventListener("blur", function(event) { // To mark, if this field has new words.
if(getNewWords(textarea.value).length == 0) {
buttonAdd.classList.remove("active");
} else {
buttonAdd.classList.add("active");
}
});
bullet.appendChild(input);
bullet.appendChild(buttonAdd);
bullet.appendChild(buttonHide);
bullet.appendChild(buttonRemove);
bullet.appendChild(document.createElement("br"));
bullet.appendChild(textarea);
globalTabIndex += 5; // Number of total "tabable" elements.
return bullet;
}
function blend(inOut, element, callbackFun) {
element.classList.remove(inOut ? "disappear" : "appear");
element.classList.add(inOut ? "appear" : "disappear");
setTimeout(() => {
element.classList.remove(inOut ? "appear" : "disappear"); // remove animation again...
callbackFun();
}, 300 * (inOut ? 0 : 1));
}
function selectText(node) {
if (document.body.createTextRange) {
const range = document.body.createTextRange();
range.moveToElementText(node);
range.select();
} else if (window.getSelection) {
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents(node);
selection.removeAllRanges();
selection.addRange(range);
} else {
console.warn("Could not select text in node: Unsupported browser.");
}
}