nanosplash 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.github/workflows/ci.yml +50 -44
  2. package/.github/workflows/vitepress.yml +69 -0
  3. package/.prettierignore +1 -0
  4. package/.prettierrc +10 -10
  5. package/README.md +11 -172
  6. package/bun.lockb +0 -0
  7. package/coverage/{core/Dom.ts.html → DomUtilities.ts.html} +141 -138
  8. package/coverage/{core/Service.ts.html → Service.ts.html} +250 -322
  9. package/coverage/{core/Splash.ts.html → Splash.ts.html} +145 -154
  10. package/coverage/SplashQueue.ts.html +232 -0
  11. package/coverage/clover.xml +557 -552
  12. package/coverage/coverage-final.json +5 -9043
  13. package/coverage/index.html +53 -23
  14. package/dist/cjs/ns.cjs +2 -0
  15. package/dist/es/ns.js +342 -0
  16. package/dist/iife/ns.iife.js +2 -0
  17. package/docs/.vitepress/config.ts +75 -0
  18. package/docs/.vitepress/theme/css/style.css +157 -0
  19. package/docs/.vitepress/theme/index.ts +16 -0
  20. package/docs/.vitepress/theme/vue/Card.vue +31 -0
  21. package/docs/.vitepress/theme/vue/CardGrid.vue +17 -0
  22. package/docs/.vitepress/theme/vue/Exe.vue +86 -0
  23. package/docs/.vitepress/theme/vue/PlayGround.vue +50 -0
  24. package/docs/api/doc/hide.md +69 -0
  25. package/docs/api/doc/show.md +47 -0
  26. package/docs/api/start/features.md +17 -0
  27. package/docs/api/start/install.md +53 -0
  28. package/docs/api/start/playground.md +11 -0
  29. package/docs/api/start/usage.md +25 -0
  30. package/docs/index.md +30 -0
  31. package/package.json +86 -87
  32. package/src/style/ns.sass +95 -0
  33. package/src/ts/core/{Dom.ts → DomUtilities.ts} +58 -57
  34. package/src/ts/core/Service.ts +66 -90
  35. package/src/ts/core/ServiceInterface.ts +5 -7
  36. package/src/ts/core/Splash.ts +23 -26
  37. package/src/ts/core/SplashInterface.ts +12 -20
  38. package/src/ts/core/SplashQueue.ts +49 -0
  39. package/src/ts/types/Types.ts +0 -9
  40. package/tests/{Dom.spec.ts → DomUtilities.spec.ts} +13 -23
  41. package/tests/Guid.spec.ts +3 -3
  42. package/tests/Service.spec.ts +146 -67
  43. package/tests/Splash.spec.ts +26 -26
  44. package/tests/TestUtilities.ts +48 -0
  45. package/tsconfig.json +1 -0
  46. package/vite.config.ts +1 -15
  47. package/coverage/core/index.html +0 -146
  48. package/coverage/types/Types.ts.html +0 -121
  49. package/coverage/types/index.html +0 -116
  50. package/dist/latest/cjs/ns.cjs +0 -1
  51. package/dist/latest/cjs/style.css +0 -1
  52. package/dist/latest/es/ns.js +0 -306
  53. package/dist/latest/es/style.css +0 -1
  54. package/dist/latest/iife/ns.iife.js +0 -4
  55. package/dist/versioned/3.0.1/cjs/ns.cjs +0 -1
  56. package/dist/versioned/3.0.1/cjs/style.css +0 -1
  57. package/dist/versioned/3.0.1/es/ns.js +0 -306
  58. package/dist/versioned/3.0.1/es/style.css +0 -1
  59. package/dist/versioned/3.0.1/iife/ns.iife.js +0 -2
  60. package/docs/index.6d66a821.js +0 -1
  61. package/docs/index.74dbd99e.css +0 -1
  62. package/docs/index.f34144dc.js +0 -1
  63. package/docs/index.html +0 -107
  64. package/index.html +0 -105
  65. package/src/sass/ns.sass +0 -95
  66. package/vite.demo.config.ts +0 -16
@@ -3,15 +3,15 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for core/Service.ts</title>
6
+ <title>Code coverage report for Service.ts</title>
7
7
  <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
8
+ <link rel="stylesheet" href="prettify.css" />
9
+ <link rel="stylesheet" href="base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1" />
12
12
  <style type='text/css'>
13
13
  .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
14
+ background-image: url(sort-arrow-sprite.png);
15
15
  }
16
16
  </style>
17
17
  </head>
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">core</a> Service.ts</h1>
22
+ <h1><a href="index.html">All files</a> Service.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">99.57% </span>
26
+ <span class="strong">96.68% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>234/235</span>
28
+ <span class='fraction'>204/211</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">90.62% </span>
33
+ <span class="strong">67.74% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>29/32</span>
35
+ <span class='fraction'>21/31</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>19/19</span>
42
+ <span class='fraction'>16/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">99.57% </span>
47
+ <span class="strong">96.68% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>234/235</span>
49
+ <span class='fraction'>204/211</span>
50
50
  </div>
51
51
 
52
52
 
@@ -274,31 +274,8 @@
274
274
  <a name='L209'></a><a href='#L209'>209</a>
275
275
  <a name='L210'></a><a href='#L210'>210</a>
276
276
  <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
277
+ <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
278
+ <span class="cline-any cline-yes">1x</span>
302
279
  <span class="cline-any cline-yes">1x</span>
303
280
  <span class="cline-any cline-yes">1x</span>
304
281
  <span class="cline-any cline-yes">1x</span>
@@ -317,231 +294,211 @@
317
294
  <span class="cline-any cline-yes">1x</span>
318
295
  <span class="cline-any cline-yes">1x</span>
319
296
  <span class="cline-any cline-yes">1x</span>
320
- <span class="cline-any cline-yes">2x</span>
321
- <span class="cline-any cline-yes">2x</span>
322
- <span class="cline-any cline-yes">2x</span>
323
- <span class="cline-any cline-yes">2x</span>
324
- <span class="cline-any cline-yes">2x</span>
325
- <span class="cline-any cline-yes">2x</span>
326
- <span class="cline-any cline-yes">2x</span>
327
- <span class="cline-any cline-yes">2x</span>
328
- <span class="cline-any cline-yes">2x</span>
329
- <span class="cline-any cline-yes">2x</span>
330
- <span class="cline-any cline-yes">2x</span>
331
- <span class="cline-any cline-yes">2x</span>
332
- <span class="cline-any cline-yes">2x</span>
333
- <span class="cline-any cline-yes">2x</span>
334
- <span class="cline-any cline-yes">2x</span>
335
- <span class="cline-any cline-yes">2x</span>
336
- <span class="cline-any cline-yes">2x</span>
337
- <span class="cline-any cline-yes">2x</span>
338
- <span class="cline-any cline-yes">2x</span>
339
- <span class="cline-any cline-yes">2x</span>
340
- <span class="cline-any cline-yes">2x</span>
341
- <span class="cline-any cline-yes">2x</span>
342
- <span class="cline-any cline-yes">2x</span>
343
- <span class="cline-any cline-yes">2x</span>
344
- <span class="cline-any cline-yes">2x</span>
345
- <span class="cline-any cline-yes">2x</span>
346
- <span class="cline-any cline-yes">2x</span>
347
- <span class="cline-any cline-yes">2x</span>
348
- <span class="cline-any cline-yes">2x</span>
349
- <span class="cline-any cline-yes">2x</span>
350
- <span class="cline-any cline-yes">2x</span>
351
- <span class="cline-any cline-yes">2x</span>
352
- <span class="cline-any cline-yes">2x</span>
353
- <span class="cline-any cline-yes">2x</span>
354
- <span class="cline-any cline-yes">2x</span>
355
- <span class="cline-any cline-yes">2x</span>
356
- <span class="cline-any cline-yes">2x</span>
357
- <span class="cline-any cline-yes">2x</span>
358
- <span class="cline-any cline-yes">2x</span>
359
- <span class="cline-any cline-yes">2x</span>
360
- <span class="cline-any cline-yes">2x</span>
361
- <span class="cline-any cline-yes">2x</span>
362
- <span class="cline-any cline-yes">2x</span>
363
- <span class="cline-any cline-yes">2x</span>
364
- <span class="cline-any cline-yes">2x</span>
365
- <span class="cline-any cline-yes">2x</span>
366
- <span class="cline-any cline-yes">2x</span>
367
- <span class="cline-any cline-yes">2x</span>
368
- <span class="cline-any cline-yes">2x</span>
369
- <span class="cline-any cline-yes">2x</span>
370
- <span class="cline-any cline-yes">2x</span>
371
- <span class="cline-any cline-yes">2x</span>
372
- <span class="cline-any cline-yes">2x</span>
373
- <span class="cline-any cline-yes">2x</span>
374
- <span class="cline-any cline-yes">2x</span>
375
- <span class="cline-any cline-yes">2x</span>
376
- <span class="cline-any cline-yes">2x</span>
377
- <span class="cline-any cline-yes">2x</span>
378
- <span class="cline-any cline-yes">2x</span>
379
- <span class="cline-any cline-yes">2x</span>
380
- <span class="cline-any cline-yes">2x</span>
381
- <span class="cline-any cline-yes">8x</span>
382
- <span class="cline-any cline-yes">2x</span>
383
- <span class="cline-any cline-yes">2x</span>
384
- <span class="cline-any cline-yes">8x</span>
385
- <span class="cline-any cline-yes">8x</span>
386
- <span class="cline-any cline-yes">2x</span>
387
- <span class="cline-any cline-yes">2x</span>
388
- <span class="cline-any cline-yes">2x</span>
389
- <span class="cline-any cline-yes">2x</span>
390
- <span class="cline-any cline-yes">2x</span>
391
- <span class="cline-any cline-yes">2x</span>
392
- <span class="cline-any cline-yes">2x</span>
393
- <span class="cline-any cline-yes">2x</span>
394
- <span class="cline-any cline-yes">2x</span>
395
- <span class="cline-any cline-yes">2x</span>
396
- <span class="cline-any cline-yes">2x</span>
397
- <span class="cline-any cline-yes">2x</span>
398
- <span class="cline-any cline-yes">2x</span>
399
- <span class="cline-any cline-yes">2x</span>
400
- <span class="cline-any cline-yes">2x</span>
401
- <span class="cline-any cline-yes">2x</span>
402
- <span class="cline-any cline-yes">2x</span>
403
- <span class="cline-any cline-yes">2x</span>
404
- <span class="cline-any cline-yes">2x</span>
405
- <span class="cline-any cline-yes">2x</span>
406
- <span class="cline-any cline-yes">2x</span>
407
297
  <span class="cline-any cline-yes">1x</span>
408
298
  <span class="cline-any cline-yes">1x</span>
409
299
  <span class="cline-any cline-yes">1x</span>
410
300
  <span class="cline-any cline-yes">1x</span>
301
+ <span class="cline-any cline-yes">3x</span>
302
+ <span class="cline-any cline-yes">3x</span>
303
+ <span class="cline-any cline-yes">3x</span>
304
+ <span class="cline-any cline-yes">3x</span>
305
+ <span class="cline-any cline-yes">3x</span>
306
+ <span class="cline-any cline-yes">3x</span>
307
+ <span class="cline-any cline-yes">3x</span>
308
+ <span class="cline-any cline-yes">3x</span>
309
+ <span class="cline-any cline-yes">3x</span>
310
+ <span class="cline-any cline-yes">3x</span>
311
+ <span class="cline-any cline-yes">3x</span>
312
+ <span class="cline-any cline-yes">3x</span>
313
+ <span class="cline-any cline-yes">3x</span>
314
+ <span class="cline-any cline-yes">3x</span>
315
+ <span class="cline-any cline-yes">3x</span>
316
+ <span class="cline-any cline-yes">3x</span>
317
+ <span class="cline-any cline-yes">3x</span>
318
+ <span class="cline-any cline-yes">3x</span>
319
+ <span class="cline-any cline-yes">3x</span>
320
+ <span class="cline-any cline-yes">3x</span>
321
+ <span class="cline-any cline-yes">3x</span>
322
+ <span class="cline-any cline-yes">3x</span>
323
+ <span class="cline-any cline-yes">3x</span>
324
+ <span class="cline-any cline-yes">3x</span>
325
+ <span class="cline-any cline-yes">3x</span>
326
+ <span class="cline-any cline-yes">3x</span>
327
+ <span class="cline-any cline-yes">3x</span>
328
+ <span class="cline-any cline-yes">3x</span>
329
+ <span class="cline-any cline-yes">3x</span>
330
+ <span class="cline-any cline-yes">3x</span>
331
+ <span class="cline-any cline-yes">3x</span>
332
+ <span class="cline-any cline-yes">3x</span>
333
+ <span class="cline-any cline-yes">3x</span>
334
+ <span class="cline-any cline-yes">3x</span>
335
+ <span class="cline-any cline-yes">3x</span>
336
+ <span class="cline-any cline-yes">3x</span>
337
+ <span class="cline-any cline-yes">3x</span>
338
+ <span class="cline-any cline-yes">3x</span>
339
+ <span class="cline-any cline-yes">3x</span>
340
+ <span class="cline-any cline-yes">3x</span>
341
+ <span class="cline-any cline-yes">3x</span>
342
+ <span class="cline-any cline-yes">3x</span>
343
+ <span class="cline-any cline-yes">3x</span>
344
+ <span class="cline-any cline-yes">3x</span>
345
+ <span class="cline-any cline-yes">3x</span>
346
+ <span class="cline-any cline-yes">3x</span>
347
+ <span class="cline-any cline-yes">3x</span>
348
+ <span class="cline-any cline-yes">3x</span>
349
+ <span class="cline-any cline-yes">3x</span>
350
+ <span class="cline-any cline-yes">52x</span>
351
+ <span class="cline-any cline-yes">3x</span>
352
+ <span class="cline-any cline-yes">3x</span>
353
+ <span class="cline-any cline-yes">52x</span>
354
+ <span class="cline-any cline-yes">52x</span>
355
+ <span class="cline-any cline-yes">3x</span>
356
+ <span class="cline-any cline-yes">3x</span>
357
+ <span class="cline-any cline-yes">3x</span>
358
+ <span class="cline-any cline-yes">3x</span>
359
+ <span class="cline-any cline-yes">3x</span>
360
+ <span class="cline-any cline-yes">3x</span>
361
+ <span class="cline-any cline-yes">3x</span>
362
+ <span class="cline-any cline-yes">3x</span>
363
+ <span class="cline-any cline-yes">3x</span>
364
+ <span class="cline-any cline-yes">3x</span>
411
365
  <span class="cline-any cline-yes">1x</span>
412
366
  <span class="cline-any cline-yes">1x</span>
413
367
  <span class="cline-any cline-yes">1x</span>
414
368
  <span class="cline-any cline-yes">1x</span>
415
369
  <span class="cline-any cline-yes">1x</span>
370
+ <span class="cline-any cline-yes">3x</span>
371
+ <span class="cline-any cline-yes">3x</span>
372
+ <span class="cline-any cline-yes">3x</span>
373
+ <span class="cline-any cline-yes">3x</span>
374
+ <span class="cline-any cline-yes">3x</span>
375
+ <span class="cline-any cline-yes">3x</span>
376
+ <span class="cline-any cline-yes">1x</span>
377
+ <span class="cline-any cline-yes">1x</span>
378
+ <span class="cline-any cline-yes">1x</span>
379
+ <span class="cline-any cline-yes">1x</span>
380
+ <span class="cline-any cline-yes">1x</span>
381
+ <span class="cline-any cline-yes">3x</span>
382
+ <span class="cline-any cline-yes">3x</span>
383
+ <span class="cline-any cline-yes">3x</span>
384
+ <span class="cline-any cline-yes">3x</span>
385
+ <span class="cline-any cline-yes">3x</span>
386
+ <span class="cline-any cline-yes">3x</span>
387
+ <span class="cline-any cline-yes">3x</span>
388
+ <span class="cline-any cline-yes">3x</span>
389
+ <span class="cline-any cline-yes">3x</span>
390
+ <span class="cline-any cline-yes">13x</span>
391
+ <span class="cline-any cline-yes">13x</span>
392
+ <span class="cline-any cline-yes">13x</span>
393
+ <span class="cline-any cline-yes">13x</span>
394
+ <span class="cline-any cline-yes">3x</span>
395
+ <span class="cline-any cline-yes">3x</span>
396
+ <span class="cline-any cline-yes">3x</span>
397
+ <span class="cline-any cline-yes">3x</span>
398
+ <span class="cline-any cline-yes">3x</span>
399
+ <span class="cline-any cline-yes">3x</span>
400
+ <span class="cline-any cline-yes">3x</span>
401
+ <span class="cline-any cline-yes">3x</span>
402
+ <span class="cline-any cline-yes">3x</span>
403
+ <span class="cline-any cline-yes">11x</span>
404
+ <span class="cline-any cline-yes">11x</span>
405
+ <span class="cline-any cline-yes">11x</span>
406
+ <span class="cline-any cline-yes">11x</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-yes">11x</span>
409
+ <span class="cline-any cline-yes">3x</span>
410
+ <span class="cline-any cline-yes">3x</span>
411
+ <span class="cline-any cline-yes">3x</span>
412
+ <span class="cline-any cline-yes">3x</span>
413
+ <span class="cline-any cline-yes">3x</span>
414
+ <span class="cline-any cline-yes">3x</span>
415
+ <span class="cline-any cline-yes">3x</span>
416
+ <span class="cline-any cline-yes">3x</span>
417
+ <span class="cline-any cline-yes">3x</span>
416
418
  <span class="cline-any cline-yes">2x</span>
417
419
  <span class="cline-any cline-yes">2x</span>
418
- <span class="cline-any cline-yes">2x</span>
419
- <span class="cline-any cline-yes">2x</span>
420
- <span class="cline-any cline-yes">2x</span>
421
- <span class="cline-any cline-yes">2x</span>
422
- <span class="cline-any cline-yes">2x</span>
423
- <span class="cline-any cline-yes">2x</span>
424
- <span class="cline-any cline-yes">2x</span>
425
- <span class="cline-any cline-yes">10x</span>
426
- <span class="cline-any cline-yes">10x</span>
427
- <span class="cline-any cline-yes">10x</span>
428
- <span class="cline-any cline-yes">10x</span>
429
- <span class="cline-any cline-yes">10x</span>
430
- <span class="cline-any cline-yes">2x</span>
431
- <span class="cline-any cline-yes">2x</span>
432
- <span class="cline-any cline-yes">2x</span>
433
- <span class="cline-any cline-yes">2x</span>
434
- <span class="cline-any cline-yes">2x</span>
435
- <span class="cline-any cline-yes">2x</span>
436
- <span class="cline-any cline-yes">2x</span>
437
- <span class="cline-any cline-yes">2x</span>
438
- <span class="cline-any cline-yes">2x</span>
439
- <span class="cline-any cline-yes">9x</span>
420
+ <span class="cline-any cline-yes">3x</span>
421
+ <span class="cline-any cline-yes">3x</span>
422
+ <span class="cline-any cline-yes">3x</span>
423
+ <span class="cline-any cline-yes">3x</span>
424
+ <span class="cline-any cline-yes">3x</span>
440
425
  <span class="cline-any cline-yes">9x</span>
441
426
  <span class="cline-any cline-yes">9x</span>
442
- <span class="cline-any cline-yes">2x</span>
443
- <span class="cline-any cline-yes">2x</span>
444
- <span class="cline-any cline-yes">2x</span>
445
- <span class="cline-any cline-yes">2x</span>
446
- <span class="cline-any cline-yes">2x</span>
447
- <span class="cline-any cline-yes">2x</span>
448
- <span class="cline-any cline-yes">2x</span>
449
- <span class="cline-any cline-yes">2x</span>
450
- <span class="cline-any cline-yes">2x</span>
451
- <span class="cline-any cline-yes">2x</span>
452
- <span class="cline-any cline-yes">2x</span>
453
- <span class="cline-any cline-yes">2x</span>
454
- <span class="cline-any cline-yes">2x</span>
455
- <span class="cline-any cline-yes">2x</span>
456
- <span class="cline-any cline-yes">2x</span>
457
- <span class="cline-any cline-yes">2x</span>
458
- <span class="cline-any cline-yes">2x</span>
459
- <span class="cline-any cline-yes">2x</span>
460
- <span class="cline-any cline-yes">2x</span>
461
- <span class="cline-any cline-yes">2x</span>
462
- <span class="cline-any cline-yes">2x</span>
463
- <span class="cline-any cline-yes">2x</span>
464
- <span class="cline-any cline-yes">2x</span>
465
- <span class="cline-any cline-yes">2x</span>
466
- <span class="cline-any cline-yes">2x</span>
467
- <span class="cline-any cline-yes">2x</span>
468
- <span class="cline-any cline-yes">2x</span>
469
- <span class="cline-any cline-yes">2x</span>
427
+ <span class="cline-any cline-yes">3x</span>
428
+ <span class="cline-any cline-yes">3x</span>
429
+ <span class="cline-any cline-yes">3x</span>
430
+ <span class="cline-any cline-yes">3x</span>
431
+ <span class="cline-any cline-yes">3x</span>
432
+ <span class="cline-any cline-yes">18x</span>
433
+ <span class="cline-any cline-yes">18x</span>
434
+ <span class="cline-any cline-yes">18x</span>
435
+ <span class="cline-any cline-yes">18x</span>
436
+ <span class="cline-any cline-yes">18x</span>
437
+ <span class="cline-any cline-yes">18x</span>
438
+ <span class="cline-any cline-yes">18x</span>
470
439
  <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-yes">2x</span>
472
- <span class="cline-any cline-yes">2x</span>
473
- <span class="cline-any cline-yes">2x</span>
474
- <span class="cline-any cline-yes">2x</span>
475
- <span class="cline-any cline-yes">2x</span>
476
- <span class="cline-any cline-yes">2x</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-yes">18x</span>
477
443
  <span class="cline-any cline-yes">3x</span>
478
444
  <span class="cline-any cline-yes">3x</span>
479
445
  <span class="cline-any cline-yes">3x</span>
480
446
  <span class="cline-any cline-yes">3x</span>
481
447
  <span class="cline-any cline-yes">3x</span>
448
+ <span class="cline-any cline-yes">4x</span>
449
+ <span class="cline-any cline-yes">4x</span>
450
+ <span class="cline-any cline-yes">4x</span>
451
+ <span class="cline-any cline-yes">4x</span>
452
+ <span class="cline-any cline-yes">4x</span>
453
+ <span class="cline-any cline-yes">3x</span>
454
+ <span class="cline-any cline-yes">3x</span>
455
+ <span class="cline-any cline-yes">3x</span>
456
+ <span class="cline-any cline-yes">3x</span>
457
+ <span class="cline-any cline-yes">3x</span>
458
+ <span class="cline-any cline-yes">20x</span>
459
+ <span class="cline-any cline-yes">20x</span>
460
+ <span class="cline-any cline-yes">5x</span>
461
+ <span class="cline-any cline-yes">5x</span>
462
+ <span class="cline-any cline-yes">5x</span>
463
+ <span class="cline-any cline-yes">20x</span>
464
+ <span class="cline-any cline-yes">3x</span>
465
+ <span class="cline-any cline-yes">3x</span>
466
+ <span class="cline-any cline-yes">3x</span>
482
467
  <span class="cline-any cline-yes">3x</span>
483
468
  <span class="cline-any cline-yes">3x</span>
484
- <span class="cline-any cline-yes">2x</span>
485
- <span class="cline-any cline-yes">2x</span>
486
- <span class="cline-any cline-yes">2x</span>
487
- <span class="cline-any cline-yes">2x</span>
488
- <span class="cline-any cline-yes">2x</span>
489
- <span class="cline-any cline-yes">8x</span>
490
- <span class="cline-any cline-yes">8x</span>
491
- <span class="cline-any cline-yes">7x</span>
492
- <span class="cline-any cline-yes">7x</span>
493
- <span class="cline-any cline-yes">7x</span>
494
- <span class="cline-any cline-yes">7x</span>
495
- <span class="cline-any cline-yes">7x</span>
496
- <span class="cline-any cline-yes">7x</span>
497
- <span class="cline-any cline-yes">7x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">1x</span>
500
- <span class="cline-any cline-yes">8x</span>
501
- <span class="cline-any cline-yes">2x</span>
502
- <span class="cline-any cline-yes">2x</span>
503
- <span class="cline-any cline-yes">2x</span>
504
- <span class="cline-any cline-yes">2x</span>
505
- <span class="cline-any cline-yes">2x</span>
506
469
  <span class="cline-any cline-yes">1x</span>
507
470
  <span class="cline-any cline-yes">1x</span>
471
+ <span class="cline-any cline-yes">3x</span>
472
+ <span class="cline-any cline-yes">3x</span>
473
+ <span class="cline-any cline-yes">3x</span>
474
+ <span class="cline-any cline-yes">3x</span>
475
+ <span class="cline-any cline-yes">3x</span>
508
476
  <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-yes">2x</span>
510
- <span class="cline-any cline-yes">2x</span>
511
- <span class="cline-any cline-yes">2x</span>
512
- <span class="cline-any cline-yes">2x</span>
513
- <span class="cline-any cline-yes">2x</span>
514
- <span class="cline-any cline-yes">2x</span>
515
- <span class="cline-any cline-yes">2x</span>
516
- <span class="cline-any cline-yes">2x</span>
517
- <span class="cline-any cline-yes">2x</span>
518
- <span class="cline-any cline-yes">2x</span>
519
- <span class="cline-any cline-yes">2x</span>
520
- <span class="cline-any cline-yes">2x</span>
521
- <span class="cline-any cline-yes">2x</span>
522
477
  <span class="cline-any cline-yes">1x</span>
523
478
  <span class="cline-any cline-yes">1x</span>
524
- <span class="cline-any cline-yes">2x</span>
525
- <span class="cline-any cline-yes">2x</span>
526
- <span class="cline-any cline-yes">2x</span>
527
- <span class="cline-any cline-yes">2x</span>
528
- <span class="cline-any cline-yes">2x</span>
529
- <span class="cline-any cline-yes">2x</span>
530
- <span class="cline-any cline-yes">2x</span>
531
- <span class="cline-any cline-yes">2x</span>
532
- <span class="cline-any cline-yes">2x</span>
533
- <span class="cline-any cline-yes">2x</span>
534
479
  <span class="cline-any cline-yes">1x</span>
535
480
  <span class="cline-any cline-yes">1x</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// @ts-strict
537
- &nbsp;
538
- import { version } from '../../../package.json'
539
- import '../../sass/ns.sass'
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-no">&nbsp;</span>
484
+ <span class="cline-any cline-yes">1x</span>
485
+ <span class="cline-any cline-yes">3x</span>
486
+ <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-yes">1x</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { version } from '../../../package.json'
540
489
  &nbsp;
541
- import { NSFinder, GUIDString, Reference } from '../types/Types'
542
- import { cleanNSParentOf, getRecycledNS, move, elementFrom } from './Dom'
490
+ import { Reference, GUIDString } from '../types/Types'
491
+ import {
492
+ getRecycledSplash,
493
+ move,
494
+ elementFrom,
495
+ render,
496
+ removeNSHostClass,
497
+ } from './DomUtilities'
543
498
  import { ServiceInterface } from './ServiceInterface'
544
499
  import { Splash } from './Splash'
500
+ import css from '../../style/ns.sass?inline'
501
+ import { SplashQueue } from './SplashQueue'
545
502
  &nbsp;
546
503
  /**
547
504
  * # Service
@@ -573,7 +530,7 @@ export class Service implements ServiceInterface {
573
530
  /**
574
531
  * @inheritdoc
575
532
  */
576
- public readonly nsStack: Splash[]
533
+ public readonly nsQueue: SplashQueue
577
534
  &nbsp;
578
535
  /**
579
536
  * # Constructor
@@ -582,29 +539,17 @@ export class Service implements ServiceInterface {
582
539
  */
583
540
  private constructor() {
584
541
  this.version = version
585
- this.nsStack = []
586
- }
587
- &nbsp;
588
- /**
589
- * # Find Index
590
- * Find Nanosplash stack index by callback.
591
- * @param callback Callback function that returns a boolean.
592
- * @returns {number} Index of Nanosplash instance in the stack or -1.
593
- * @private
594
- */
595
- private findIndex(callback: NSFinder): number | -1 {
596
- return this.nsStack.findIndex(callback)
542
+ this.nsQueue = new SplashQueue()
543
+ Service.addStyle()
597
544
  }
598
545
  &nbsp;
599
- /**
600
- * # Find
601
- * Find Nanosplash in the stack by callback.
602
- * @param callback Callback function that returns a boolean.
603
- * @returns {Splash | undefined} Nanosplash instance or undefined
604
- * @private
546
+ /**e
547
+ * # Add Style
548
+ * Add Nanosplash CSS to the DOM.
605
549
  */
606
- private find(callback: NSFinder): Splash | undefined {
607
- return this.nsStack.find(callback)
550
+ private static addStyle(): void {
551
+ const style = render(`&lt;style&gt;${css}&lt;/style&gt;`) as HTMLStyleElement
552
+ document.body.append(style)
608
553
  }
609
554
  &nbsp;
610
555
  /**
@@ -639,14 +584,10 @@ export class Service implements ServiceInterface {
639
584
  * Initialize and attach a Nanosplash Service instance to the Window object.
640
585
  */
641
586
  public static start(): void {
642
- Service.assignToWindow()
643
- window.addEventListener('load', () =&gt; {
644
- const nss = window[Service.WindowAccessorKey]
645
- const nssAssigned = nss instanceof Service
646
- if (!nssAssigned) {
647
- Service.assignToWindow()
648
- }
649
- })
587
+ const nss = window[Service.WindowAccessorKey]
588
+ if (!nss) {
589
+ Service.assignToWindow()
590
+ }
650
591
  }
651
592
  &nbsp;
652
593
  /**
@@ -657,113 +598,100 @@ export class Service implements ServiceInterface {
657
598
  * @private
658
599
  */
659
600
  private createNS(text?: string): Splash {
660
- const ns = new Splash()
661
- ns.setText(text || '')
662
- this.nsStack.push(ns)
601
+ const ns = new Splash().setText(text || '')
602
+ this.nsQueue.enqueue(ns)
663
603
  return ns
664
604
  }
665
605
  &nbsp;
666
606
  /**
667
- * # Clean And Remove
607
+ * # Clean And Remove From DOM
668
608
  * Remove Nanosplash from DOM and clean its parent.
669
609
  * @param ns Nanosplash instance.
670
- * @returns {GUIDString} Nanosplash ID.
671
- * @private
672
- */
673
- private cleanAndRemove(ns: Splash): GUIDString {
674
- cleanNSParentOf(ns)
675
- return ns.remove().getId()
676
- }
677
- &nbsp;
678
- /**
679
- * # Stack Delete
680
- * Remove Nanosplash instance from the stack.
681
- * @param ns Nanosplash instance.
682
- * @returns {GUIDString | null} Nanosplash ID or null if it doesn't exist.
610
+ * @returns True if Nanosplash was removed from DOM.
683
611
  * @private
684
612
  */
685
- private stackDelete(ns: Splash): GUIDString | null {
686
- let index = this.findIndex((o: Splash) =&gt; o.getId() === ns.getId())
687
- if (index &lt; 0) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
688
- this.nsStack.splice(index, 1)
689
- return ns.getId()
613
+ private cleanAndRemoveFromDOM(ns: Splash | null): boolean {
614
+ if (ns) {
615
+ removeNSHostClass(ns.getElement()?.<span class="branch-0 cbranch-no" title="branch not covered" >parentElement ?? null)</span>
616
+ return ns.delete()
617
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
618
+ <span class="cstat-no" title="statement not covered" > return false</span>
690
619
  }
691
620
  &nbsp;
692
621
  /**
693
622
  * # Delete NS
694
623
  * Remove Nanosplash instance from both the stack and the
695
- * @param callback Callback function.
696
- * @returns {GUIDString | null} Nanosplash ID or null if it doesn't exist.
624
+ * @param guid Nanosplash ID.
625
+ * @returns True if Nanosplash was removed from DOM.
697
626
  * @private
698
627
  */
699
- private deleteNS(callback: NSFinder): GUIDString | null {
700
- const ns = this.find(callback)
701
- if (ns) {
702
- this.cleanAndRemove(ns)
703
- return this.stackDelete(ns)
704
- <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
705
- <span class="cstat-no" title="statement not covered" > return null</span>
628
+ private deleteNS(guid: GUIDString): boolean {
629
+ return this.cleanAndRemoveFromDOM(this.nsQueue.delete(guid<span class="branch-0 cbranch-no" title="branch not covered" >) ?? null)</span>
706
630
  }
707
631
  &nbsp;
708
632
  /**
709
633
  * @inheritdoc
710
634
  */
711
- public show(text?: string): GUIDString {
712
- let ns = getRecycledNS(document.body)
713
- if (!ns) {
714
- ns = this.createNS()
715
- move(ns.getNSElement(), document.body)
716
- }
717
- return ns.setText(text || '').getId()
635
+ public show(text?: string): GUIDString | null {
636
+ return this.showInside(document.body, text)
718
637
  }
719
638
  &nbsp;
720
639
  /**
721
640
  * @inheritdoc
722
641
  */
723
642
  public showInside(ref: Reference, text?: string): GUIDString | null {
724
- const destinationNode: Element | null = elementFrom(ref)
725
- if (destinationNode) {
726
- let ns = getRecycledNS(destinationNode)
727
- if (!ns) {
728
- ns = this.createNS()
729
- }
730
- move(ns.getNSElement(), &lt;Element&gt;destinationNode)
731
- return ns.setText(text || '').getId()
732
- }
733
- &nbsp;
734
- return null
643
+ try {
644
+ const destinationNode = elementFrom(ref) as Element
645
+ const ns = getRecycledSplash(destinationNode) ?? this.createNS()
646
+ move(ns.getElement() as Element, destinationNode)
647
+ const parsedText = text ? String(text) : ''
648
+ return ns.setText(parsedText).getId()
649
+ <span class="branch-0 cbranch-no" title="branch not covered" > } catch (e) {</span>
650
+ <span class="cstat-no" title="statement not covered" > console.error(e)</span>
651
+ <span class="cstat-no" title="statement not covered" > return null</span>
652
+ <span class="cstat-no" title="statement not covered" > }</span>
735
653
  }
736
654
  &nbsp;
737
655
  /**
738
656
  * @inheritdoc
739
657
  */
740
658
  public hide(): GUIDString | null {
741
- const ns = this.nsStack.pop()
742
- return ns ? this.cleanAndRemove(ns<span class="branch-0 cbranch-no" title="branch not covered" >) : null</span>
659
+ const ns = this.nsQueue.dequeue()
660
+ if (!ns) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
661
+ this.cleanAndRemoveFromDOM(ns)
662
+ return ns.getId()
743
663
  }
744
664
  &nbsp;
745
665
  /**
746
666
  * @inheritdoc
747
667
  */
748
668
  public hideAll(): void {
749
- this.nsStack.forEach(this.cleanAndRemove)
750
- this.nsStack.splice(0, this.nsStack.length)
669
+ let ns = this.nsQueue.dequeue()
670
+ while (ns) {
671
+ this.cleanAndRemoveFromDOM(ns)
672
+ ns = this.nsQueue.dequeue()
673
+ }
751
674
  }
752
675
  &nbsp;
753
676
  /**
754
677
  * @inheritdoc
755
678
  */
756
679
  public hideId(id: GUIDString): GUIDString | null {
757
- return this.deleteNS((ns: Splash) =&gt; ns.getId() === id)
680
+ return this.deleteNS(id) ? <span class="branch-0 cbranch-no" title="branch not covered" >id : null</span>
758
681
  }
759
682
  &nbsp;
760
683
  /**
761
684
  * @inheritdoc
762
685
  */
763
686
  public hideInside(ref: Reference): GUIDString | null {
764
- const node = elementFrom(ref)
765
- const cb = (ns: Splash) =&gt; ns.getNSElement().parentElement === node
766
- return node ? this.deleteNS(cb) : null
687
+ try {
688
+ const ns = getRecycledSplash(elementFrom(ref) as Element)
689
+ const guid = ns?.getId(<span class="branch-0 cbranch-no" title="branch not covered" >) ?? ''</span>
690
+ return this.deleteNS(<span class="branch-0 cbranch-no" title="branch not covered" >guid ?? '')</span> ? <span class="branch-0 cbranch-no" title="branch not covered" >guid : null</span>
691
+ <span class="branch-0 cbranch-no" title="branch not covered" > } catch (e) {</span>
692
+ <span class="cstat-no" title="statement not covered" > console.error(e)</span>
693
+ <span class="cstat-no" title="statement not covered" > return null</span>
694
+ <span class="cstat-no" title="statement not covered" > }</span>
767
695
  }
768
696
  }
769
697
  &nbsp;
@@ -775,16 +703,16 @@ export default { Service }
775
703
  <div class='footer quiet pad2 space-top1 center small'>
776
704
  Code coverage generated by
777
705
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
778
- at 2023-09-06T08:51:33.390Z
706
+ at 2023-10-19T21:38:28.926Z
779
707
  </div>
780
- <script src="../prettify.js"></script>
708
+ <script src="prettify.js"></script>
781
709
  <script>
782
710
  window.onload = function () {
783
711
  prettyPrint();
784
712
  };
785
713
  </script>
786
- <script src="../sorter.js"></script>
787
- <script src="../block-navigation.js"></script>
714
+ <script src="sorter.js"></script>
715
+ <script src="block-navigation.js"></script>
788
716
  </body>
789
717
  </html>
790
718