nanosplash 3.0.0 → 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 (77) 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/LICENSE +21 -0
  6. package/README.md +14 -41
  7. package/bun.lockb +0 -0
  8. package/coverage/DomUtilities.ts.html +568 -0
  9. package/coverage/Service.ts.html +718 -0
  10. package/coverage/Splash.ts.html +448 -0
  11. package/coverage/SplashQueue.ts.html +232 -0
  12. package/coverage/base.css +224 -0
  13. package/coverage/block-navigation.js +87 -0
  14. package/coverage/clover.xml +560 -0
  15. package/coverage/coverage-final.json +5 -0
  16. package/coverage/favicon.png +0 -0
  17. package/coverage/index.html +161 -0
  18. package/coverage/prettify.css +1 -0
  19. package/coverage/prettify.js +2 -0
  20. package/coverage/sort-arrow-sprite.png +0 -0
  21. package/coverage/sorter.js +196 -0
  22. package/dist/cjs/ns.cjs +2 -0
  23. package/dist/es/ns.js +342 -0
  24. package/dist/iife/ns.iife.js +2 -0
  25. package/docs/.vitepress/config.ts +75 -0
  26. package/docs/.vitepress/theme/css/style.css +157 -0
  27. package/docs/.vitepress/theme/index.ts +16 -0
  28. package/docs/.vitepress/theme/vue/Card.vue +31 -0
  29. package/docs/.vitepress/theme/vue/CardGrid.vue +17 -0
  30. package/docs/.vitepress/theme/vue/Exe.vue +86 -0
  31. package/docs/.vitepress/theme/vue/PlayGround.vue +50 -0
  32. package/docs/api/doc/hide.md +69 -0
  33. package/docs/api/doc/show.md +47 -0
  34. package/docs/api/start/features.md +17 -0
  35. package/docs/api/start/install.md +53 -0
  36. package/docs/api/start/playground.md +11 -0
  37. package/docs/api/start/usage.md +25 -0
  38. package/docs/index.md +30 -0
  39. package/package.json +86 -66
  40. package/src/style/ns.sass +95 -0
  41. package/src/ts/core/DomUtilities.ts +161 -0
  42. package/src/ts/core/Service.ts +211 -0
  43. package/src/ts/core/{Nanosplash/interfaces/NanosplashAPI.ts → ServiceInterface.ts} +18 -10
  44. package/src/ts/core/Splash.ts +121 -0
  45. package/src/ts/core/SplashInterface.ts +46 -0
  46. package/src/ts/core/SplashQueue.ts +49 -0
  47. package/src/ts/main.ts +9 -0
  48. package/src/ts/types/Types.ts +3 -0
  49. package/src/ts/types/global.d.ts +14 -0
  50. package/src/vite-env.d.ts +0 -8
  51. package/tests/DomUtilities.spec.ts +117 -0
  52. package/tests/Guid.spec.ts +5 -5
  53. package/tests/Service.spec.ts +198 -0
  54. package/tests/Splash.spec.ts +64 -0
  55. package/tests/TestUtilities.ts +48 -0
  56. package/tsconfig.json +21 -20
  57. package/vite.config.ts +14 -22
  58. package/dist/main.css +0 -1
  59. package/dist/ns.cjs.js +0 -1
  60. package/dist/ns.es.js +0 -330
  61. package/dist/ns.iife.js +0 -2
  62. package/index.html +0 -52
  63. package/src/main.ts +0 -8
  64. package/src/sass/ns.sass +0 -86
  65. package/src/ts/core/Nanosplash/Nanosplash.ts +0 -97
  66. package/src/ts/core/Nanosplash/interfaces/NanosplashInterface.ts +0 -42
  67. package/src/ts/core/Nanosplash/repositories/NanosplashRepository.ts +0 -178
  68. package/src/ts/core/Nanosplash/services/NanosplashService.ts +0 -222
  69. package/src/ts/types/Alias.d.ts +0 -1
  70. package/src/ts/types/Nanosplash.d.ts +0 -18
  71. package/src/ts/types/NanosplashService.d.ts +0 -1
  72. package/src/ts/util/Guid.ts +0 -13
  73. package/src/ts/util/Stack.ts +0 -73
  74. package/tests/Nanosplash.spec.ts +0 -64
  75. package/tests/NanosplashRepository.spec.ts +0 -91
  76. package/tests/NanosplashService.spec.ts +0 -119
  77. package/tests/Stack.spec.ts +0 -56
@@ -0,0 +1,718 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for Service.ts</title>
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" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="index.html">All files</a> Service.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">96.68% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>204/211</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">67.74% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>21/31</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>16/16</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">96.68% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>204/211</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
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>
279
+ <span class="cline-any cline-yes">1x</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
+ <span class="cline-any cline-yes">1x</span>
282
+ <span class="cline-any cline-yes">1x</span>
283
+ <span class="cline-any cline-yes">1x</span>
284
+ <span class="cline-any cline-yes">1x</span>
285
+ <span class="cline-any cline-yes">1x</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-yes">1x</span>
288
+ <span class="cline-any cline-yes">1x</span>
289
+ <span class="cline-any cline-yes">1x</span>
290
+ <span class="cline-any cline-yes">1x</span>
291
+ <span class="cline-any cline-yes">1x</span>
292
+ <span class="cline-any cline-yes">1x</span>
293
+ <span class="cline-any cline-yes">1x</span>
294
+ <span class="cline-any cline-yes">1x</span>
295
+ <span class="cline-any cline-yes">1x</span>
296
+ <span class="cline-any cline-yes">1x</span>
297
+ <span class="cline-any cline-yes">1x</span>
298
+ <span class="cline-any cline-yes">1x</span>
299
+ <span class="cline-any cline-yes">1x</span>
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>
365
+ <span class="cline-any cline-yes">1x</span>
366
+ <span class="cline-any cline-yes">1x</span>
367
+ <span class="cline-any cline-yes">1x</span>
368
+ <span class="cline-any cline-yes">1x</span>
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>
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">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>
425
+ <span class="cline-any cline-yes">9x</span>
426
+ <span class="cline-any cline-yes">9x</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>
439
+ <span class="cline-any cline-no">&nbsp;</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>
443
+ <span class="cline-any cline-yes">3x</span>
444
+ <span class="cline-any cline-yes">3x</span>
445
+ <span class="cline-any cline-yes">3x</span>
446
+ <span class="cline-any cline-yes">3x</span>
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>
467
+ <span class="cline-any cline-yes">3x</span>
468
+ <span class="cline-any cline-yes">3x</span>
469
+ <span class="cline-any cline-yes">1x</span>
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>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-yes">1x</span>
478
+ <span class="cline-any cline-yes">1x</span>
479
+ <span class="cline-any cline-yes">1x</span>
480
+ <span class="cline-any cline-yes">1x</span>
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'
489
+ &nbsp;
490
+ import { Reference, GUIDString } from '../types/Types'
491
+ import {
492
+ getRecycledSplash,
493
+ move,
494
+ elementFrom,
495
+ render,
496
+ removeNSHostClass,
497
+ } from './DomUtilities'
498
+ import { ServiceInterface } from './ServiceInterface'
499
+ import { Splash } from './Splash'
500
+ import css from '../../style/ns.sass?inline'
501
+ import { SplashQueue } from './SplashQueue'
502
+ &nbsp;
503
+ /**
504
+ * # Service
505
+ * A service class that handles Nanosplash instances.
506
+ * It's a singleton class and its instance resides in the Window object and
507
+ * serves the public API of the Nanosplash library.
508
+ * @see Splash
509
+ * @author Isak K. Hauge &lt;isakhauge@icloud.com&gt;
510
+ */
511
+ export class Service implements ServiceInterface {
512
+ /**
513
+ * # Window Accessor Key
514
+ * Key to access NanosplashService instance in the Window object.
515
+ */
516
+ public static readonly WindowAccessorKey = 'ns'
517
+ &nbsp;
518
+ /**
519
+ * # Instance
520
+ * Singleton instance of NanosplashService.
521
+ * @private
522
+ */
523
+ private static instance: Service
524
+ &nbsp;
525
+ /**
526
+ * # Version
527
+ */
528
+ public readonly version: string
529
+ &nbsp;
530
+ /**
531
+ * @inheritdoc
532
+ */
533
+ public readonly nsQueue: SplashQueue
534
+ &nbsp;
535
+ /**
536
+ * # Constructor
537
+ * Private constructor to prevent multiple instances.
538
+ * @private
539
+ */
540
+ private constructor() {
541
+ this.version = version
542
+ this.nsQueue = new SplashQueue()
543
+ Service.addStyle()
544
+ }
545
+ &nbsp;
546
+ /**e
547
+ * # Add Style
548
+ * Add Nanosplash CSS to the DOM.
549
+ */
550
+ private static addStyle(): void {
551
+ const style = render(`&lt;style&gt;${css}&lt;/style&gt;`) as HTMLStyleElement
552
+ document.body.append(style)
553
+ }
554
+ &nbsp;
555
+ /**
556
+ * # Get Instance
557
+ * Singleton instance accessor
558
+ * @returns {Service} NanosplashService instance
559
+ */
560
+ public static getInstance(): Service {
561
+ if (!Service.instance) {
562
+ Service.instance = new Service()
563
+ }
564
+ return Service.instance
565
+ }
566
+ &nbsp;
567
+ /**
568
+ * # Assign To Window
569
+ * Assign a NanosplashService instance to the Window object.
570
+ * The NanosplashService instance can be accessed in the window object
571
+ * using the key window accessor key.
572
+ * @see WindowAccessorKey
573
+ * @private
574
+ */
575
+ private static assignToWindow(): void {
576
+ Object.defineProperty(window, Service.WindowAccessorKey, {
577
+ value: Service.getInstance(),
578
+ writable: false,
579
+ })
580
+ }
581
+ &nbsp;
582
+ /**
583
+ * # Start
584
+ * Initialize and attach a Nanosplash Service instance to the Window object.
585
+ */
586
+ public static start(): void {
587
+ const nss = window[Service.WindowAccessorKey]
588
+ if (!nss) {
589
+ Service.assignToWindow()
590
+ }
591
+ }
592
+ &nbsp;
593
+ /**
594
+ * # Create Nanosplash
595
+ * Return new Nanosplash instance and push it to the stack.
596
+ * @param text Text to display.
597
+ * @returns {Splash} Nanosplash instance.
598
+ * @private
599
+ */
600
+ private createNS(text?: string): Splash {
601
+ const ns = new Splash().setText(text || '')
602
+ this.nsQueue.enqueue(ns)
603
+ return ns
604
+ }
605
+ &nbsp;
606
+ /**
607
+ * # Clean And Remove From DOM
608
+ * Remove Nanosplash from DOM and clean its parent.
609
+ * @param ns Nanosplash instance.
610
+ * @returns True if Nanosplash was removed from DOM.
611
+ * @private
612
+ */
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>
619
+ }
620
+ &nbsp;
621
+ /**
622
+ * # Delete NS
623
+ * Remove Nanosplash instance from both the stack and the
624
+ * @param guid Nanosplash ID.
625
+ * @returns True if Nanosplash was removed from DOM.
626
+ * @private
627
+ */
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>
630
+ }
631
+ &nbsp;
632
+ /**
633
+ * @inheritdoc
634
+ */
635
+ public show(text?: string): GUIDString | null {
636
+ return this.showInside(document.body, text)
637
+ }
638
+ &nbsp;
639
+ /**
640
+ * @inheritdoc
641
+ */
642
+ public showInside(ref: Reference, text?: string): GUIDString | 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>
653
+ }
654
+ &nbsp;
655
+ /**
656
+ * @inheritdoc
657
+ */
658
+ public hide(): GUIDString | null {
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()
663
+ }
664
+ &nbsp;
665
+ /**
666
+ * @inheritdoc
667
+ */
668
+ public hideAll(): void {
669
+ let ns = this.nsQueue.dequeue()
670
+ while (ns) {
671
+ this.cleanAndRemoveFromDOM(ns)
672
+ ns = this.nsQueue.dequeue()
673
+ }
674
+ }
675
+ &nbsp;
676
+ /**
677
+ * @inheritdoc
678
+ */
679
+ public hideId(id: GUIDString): GUIDString | null {
680
+ return this.deleteNS(id) ? <span class="branch-0 cbranch-no" title="branch not covered" >id : null</span>
681
+ }
682
+ &nbsp;
683
+ /**
684
+ * @inheritdoc
685
+ */
686
+ public hideInside(ref: Reference): GUIDString | 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>
695
+ }
696
+ }
697
+ &nbsp;
698
+ export default { Service }
699
+ &nbsp;</pre></td></tr></table></pre>
700
+
701
+ <div class='push'></div><!-- for sticky footer -->
702
+ </div><!-- /wrapper -->
703
+ <div class='footer quiet pad2 space-top1 center small'>
704
+ Code coverage generated by
705
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
706
+ at 2023-10-19T21:38:28.926Z
707
+ </div>
708
+ <script src="prettify.js"></script>
709
+ <script>
710
+ window.onload = function () {
711
+ prettyPrint();
712
+ };
713
+ </script>
714
+ <script src="sorter.js"></script>
715
+ <script src="block-navigation.js"></script>
716
+ </body>
717
+ </html>
718
+