|
4 | 4 |
|
5 | 5 | <template shadowrootmode=open> |
6 | 6 |
|
| 7 | + <!-- |
7 | 8 | <link rel=stylesheet href='css/github-markdown-light.css'> |
| 9 | + --> |
8 | 10 | <!-- |
9 | 11 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/light.css"> |
10 | 12 | --> |
11 | 13 |
|
| 14 | + <style id=stylesheet> |
| 15 | + </style> |
| 16 | + |
12 | 17 | <style> |
13 | 18 |
|
14 | 19 | #root |
15 | 20 | {height:100%;display:flex;flex-direction:column;gap:5px} |
16 | 21 |
|
17 | 22 | #hdr |
18 | 23 | {display:flex} |
| 24 | + |
| 25 | + #npm |
| 26 | + {margin-right:20px} |
| 27 | + |
19 | 28 | .radio |
20 | 29 | {border:1px solid lightgray;padding:2px 10px;border-radius:5px;cursor:pointer;display:flex;align-items:center} |
21 | 30 | .radio [type] |
|
36 | 45 |
|
37 | 46 | <div id=hdr> |
38 | 47 |
|
39 | | - <span id=html class=radio> |
40 | | - <input type=checkbox checked> |
41 | | - allow-html |
42 | | - </span> |
43 | | - <span id=breaks class=radio> |
| 48 | + <div id=npm class=radio> |
44 | 49 | <input type=checkbox> |
45 | | - breaks |
46 | | - </span> |
47 | | - <span id=linkify class=radio> |
48 | | - <input type=checkbox checked> |
49 | | - linkify |
50 | | - </span> |
51 | | - |
52 | | - <span class=spc></span> |
| 50 | + npm |
| 51 | + </div> |
53 | 52 |
|
54 | | - <span id=mode-md class=radio> |
55 | | - <input type=checkbox checked> |
56 | | - markdown |
57 | | - </span> |
58 | | - <span id=mode-html class=radio> |
59 | | - <input type=checkbox> |
60 | | - html |
61 | | - </span> |
| 53 | + <div id=standard> |
| 54 | + <span id=html class=radio> |
| 55 | + <input type=checkbox checked> |
| 56 | + allow-html |
| 57 | + </span> |
| 58 | + <span id=breaks class=radio> |
| 59 | + <input type=checkbox> |
| 60 | + breaks |
| 61 | + </span> |
| 62 | + <span id=linkify class=radio> |
| 63 | + <input type=checkbox checked> |
| 64 | + linkify |
| 65 | + </span> |
| 66 | + |
| 67 | + <span class=spc></span> |
| 68 | + |
| 69 | + <span id=mode-md class=radio> |
| 70 | + <input type=checkbox checked> |
| 71 | + markdown |
| 72 | + </span> |
| 73 | + <span id=mode-html class=radio> |
| 74 | + <input type=checkbox> |
| 75 | + html |
| 76 | + </span> |
| 77 | + </div> |
62 | 78 |
|
63 | 79 | </div> |
64 | 80 |
|
|
97 | 113 | //vars:- |
98 | 114 |
|
99 | 115 | var md; |
| 116 | + var css = {}; |
100 | 117 |
|
101 | 118 | var cur = {}; |
102 | 119 | cur.mode = 'md'; |
103 | 120 | cur.txt = null; |
104 | 121 |
|
105 | 122 | var shadow; |
| 123 | + var standard; |
106 | 124 | var output; |
107 | 125 | var chk = {}; |
108 | 126 |
|
|
149 | 167 | function libs(){ |
150 | 168 |
|
151 | 169 | var resolve,promise=new Promise(res=>resolve=res); |
| 170 | + |
152 | 171 | var ct = 0; |
| 172 | + var total = 4; |
153 | 173 |
|
154 | 174 | var script = document.createElement('script'); |
155 | 175 | script.src = 'https://cdn.jsdelivr.net/npm/markdown-it/dist/markdown-it.min.js'; |
|
161 | 181 | script.onload = onload; |
162 | 182 | document.head.append(script); |
163 | 183 |
|
| 184 | + get('/css/npm.css').then({txt='',error}=>(css.npm=txt,onload())); |
| 185 | + get('/css/github-markdown-light.css').then({txt='',error}=>(css.github=txt,onload())); |
| 186 | + |
164 | 187 | return promise; |
165 | 188 |
|
166 | 189 |
|
167 | 190 | function onload(){ |
168 | 191 |
|
169 | 192 | ct++; |
170 | | - if(ct!=2)return; |
| 193 | + if(ct!=total)return; |
171 | 194 | resolve(); |
172 | 195 |
|
173 | 196 | }//onload |
174 | 197 |
|
175 | 198 | }//libs |
176 | 199 |
|
177 | 200 |
|
| 201 | + async function get(url){ |
| 202 | + |
| 203 | + var err; |
| 204 | + try{ |
| 205 | + |
| 206 | + var res = await fetch(url); |
| 207 | + |
| 208 | + }//try |
| 209 | + catch(err2){ |
| 210 | + |
| 211 | + err = err2; |
| 212 | + |
| 213 | + }//catch |
| 214 | + if(err){ |
| 215 | + var error = err.message; |
| 216 | + return {error} |
| 217 | + } |
| 218 | + if(!res.ok){ |
| 219 | + var error = await res.text(); |
| 220 | + return {error}; |
| 221 | + } |
| 222 | + var txt = await res.text(); |
| 223 | + return {txt}; |
| 224 | + |
| 225 | + }//get |
| 226 | + |
| 227 | + |
178 | 228 | //: |
179 | 229 |
|
180 | 230 |
|
|
183 | 233 | shadow = host.shadowRoot; |
184 | 234 |
|
185 | 235 | var hdr = $(shadow,'#hdr'); |
| 236 | + |
| 237 | + chk.npm = $.chkbox(shadow,'#npm',btn.npm); |
| 238 | + |
| 239 | + standard = $(hdr,'#standard'); |
| 240 | + |
186 | 241 | chk.html = $.chkbox(shadow,'#html'); |
187 | 242 | chk.breaks = $.chkbox(shadow,'#breaks'); |
188 | 243 | chk.linkify = $.chkbox(shadow,'#linkify'); |
| 244 | + |
189 | 245 | var group = $.chkbox.group(shadow,'#mode-md','#mode-html'); |
190 | 246 | group.callback = btn.mode; |
191 | 247 |
|
|
199 | 255 | //: |
200 | 256 |
|
201 | 257 |
|
| 258 | + btn.npm = function(chk){ |
| 259 | + |
| 260 | + if(chk.checked){ |
| 261 | + standard.style.display = 'none'; |
| 262 | + }else{ |
| 263 | + standard.style.display = ''; |
| 264 | + } |
| 265 | + |
| 266 | + }//npm |
| 267 | + |
| 268 | + |
202 | 269 | btn.mode = function(chk,id){ |
203 | 270 | debug('btn.mode',id); |
204 | 271 | switch(id){ |
|
263 | 330 |
|
264 | 331 | var html = md.render(txt); |
265 | 332 |
|
266 | | - display[cur.mode](html); |
| 333 | + if(chk.npm.checked){ |
| 334 | + display.npm(html); |
| 335 | + }else{ |
| 336 | + display[cur.mode](html); |
| 337 | + } |
267 | 338 |
|
268 | 339 | }//show |
269 | 340 |
|
270 | 341 |
|
271 | 342 | display.md = function(html){ |
272 | 343 | debug('display.md'); |
| 344 | + output.classList.remove('_6d9832ac','_704c034e'); |
273 | 345 | output.innerHTML = html; |
274 | 346 |
|
| 347 | + $(shadow,'#stylesheet').textContent = css.github; |
| 348 | + |
275 | 349 | output.style.display = ''; |
276 | 350 | editor.__host.style.display = 'none'; |
277 | 351 |
|
278 | 352 | }//md |
279 | 353 |
|
280 | 354 |
|
| 355 | + display.npm = function(html){ |
| 356 | + debug('display.npm'); |
| 357 | + output.classList.add('_6d9832ac','_704c034e'); |
| 358 | + output.innerHTML = html; |
| 359 | + |
| 360 | + $(shadow,'#stylesheet').textContent = css.npm; |
| 361 | + |
| 362 | + output.style.display = ''; |
| 363 | + editor.__host.style.display = 'none'; |
| 364 | + |
| 365 | + }//npm |
| 366 | + |
| 367 | + |
281 | 368 | display.html = function(html){ |
282 | 369 | debug('display.html'); |
283 | 370 | editor.set(html); |
|
0 commit comments