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,568 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for DomUtilities.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> DomUtilities.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">96.89% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>156/161</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">78.26% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>18/23</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'>10/10</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">96.89% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>156/161</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
228
+ <span class="cline-any cline-yes">1x</span>
229
+ <span class="cline-any cline-yes">1x</span>
230
+ <span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">1x</span>
233
+ <span class="cline-any cline-yes">1x</span>
234
+ <span class="cline-any cline-yes">1x</span>
235
+ <span class="cline-any cline-yes">1x</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">1x</span>
240
+ <span class="cline-any cline-yes">1x</span>
241
+ <span class="cline-any cline-yes">1x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">28x</span>
246
+ <span class="cline-any cline-yes">28x</span>
247
+ <span class="cline-any cline-yes">28x</span>
248
+ <span class="cline-any cline-yes">28x</span>
249
+ <span class="cline-any cline-yes">28x</span>
250
+ <span class="cline-any cline-yes">28x</span>
251
+ <span class="cline-any cline-yes">1x</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-yes">1x</span>
254
+ <span class="cline-any cline-yes">1x</span>
255
+ <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">1x</span>
257
+ <span class="cline-any cline-yes">25x</span>
258
+ <span class="cline-any cline-yes">25x</span>
259
+ <span class="cline-any cline-yes">25x</span>
260
+ <span class="cline-any cline-yes">25x</span>
261
+ <span class="cline-any cline-yes">1x</span>
262
+ <span class="cline-any cline-yes">1x</span>
263
+ <span class="cline-any cline-yes">1x</span>
264
+ <span class="cline-any cline-yes">1x</span>
265
+ <span class="cline-any cline-yes">1x</span>
266
+ <span class="cline-any cline-yes">1x</span>
267
+ <span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-yes">1x</span>
269
+ <span class="cline-any cline-yes">1x</span>
270
+ <span class="cline-any cline-yes">1x</span>
271
+ <span class="cline-any cline-yes">1x</span>
272
+ <span class="cline-any cline-yes">1x</span>
273
+ <span class="cline-any cline-yes">21x</span>
274
+ <span class="cline-any cline-yes">21x</span>
275
+ <span class="cline-any cline-yes">21x</span>
276
+ <span class="cline-any cline-yes">21x</span>
277
+ <span class="cline-any cline-yes">21x</span>
278
+ <span class="cline-any cline-yes">6x</span>
279
+ <span class="cline-any cline-yes">21x</span>
280
+ <span class="cline-any cline-yes">15x</span>
281
+ <span class="cline-any cline-yes">15x</span>
282
+ <span class="cline-any cline-yes">21x</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">21x</span>
293
+ <span class="cline-any cline-yes">21x</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">1x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-yes">32x</span>
304
+ <span class="cline-any cline-yes">32x</span>
305
+ <span class="cline-any cline-yes">1x</span>
306
+ <span class="cline-any cline-yes">1x</span>
307
+ <span class="cline-any cline-yes">1x</span>
308
+ <span class="cline-any cline-yes">1x</span>
309
+ <span class="cline-any cline-yes">1x</span>
310
+ <span class="cline-any cline-yes">1x</span>
311
+ <span class="cline-any cline-yes">1x</span>
312
+ <span class="cline-any cline-yes">1x</span>
313
+ <span class="cline-any cline-yes">17x</span>
314
+ <span class="cline-any cline-yes">17x</span>
315
+ <span class="cline-any cline-yes">1x</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-yes">1x</span>
320
+ <span class="cline-any cline-yes">1x</span>
321
+ <span class="cline-any cline-yes">1x</span>
322
+ <span class="cline-any cline-yes">1x</span>
323
+ <span class="cline-any cline-yes">21x</span>
324
+ <span class="cline-any cline-yes">21x</span>
325
+ <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-yes">1x</span>
327
+ <span class="cline-any cline-yes">1x</span>
328
+ <span class="cline-any cline-yes">1x</span>
329
+ <span class="cline-any cline-yes">1x</span>
330
+ <span class="cline-any cline-yes">1x</span>
331
+ <span class="cline-any cline-yes">1x</span>
332
+ <span class="cline-any cline-yes">1x</span>
333
+ <span class="cline-any cline-yes">1x</span>
334
+ <span class="cline-any cline-yes">1x</span>
335
+ <span class="cline-any cline-yes">1x</span>
336
+ <span class="cline-any cline-yes">23x</span>
337
+ <span class="cline-any cline-yes">23x</span>
338
+ <span class="cline-any cline-yes">11x</span>
339
+ <span class="cline-any cline-yes">11x</span>
340
+ <span class="cline-any cline-yes">11x</span>
341
+ <span class="cline-any cline-yes">11x</span>
342
+ <span class="cline-any cline-yes">11x</span>
343
+ <span class="cline-any cline-no">&nbsp;</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-yes">23x</span>
347
+ <span class="cline-any cline-yes">12x</span>
348
+ <span class="cline-any cline-yes">23x</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-yes">23x</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-yes">1x</span>
353
+ <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-yes">1x</span>
355
+ <span class="cline-any cline-yes">1x</span>
356
+ <span class="cline-any cline-yes">1x</span>
357
+ <span class="cline-any cline-yes">1x</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-yes">1x</span>
360
+ <span class="cline-any cline-yes">19x</span>
361
+ <span class="cline-any cline-yes">19x</span>
362
+ <span class="cline-any cline-yes">19x</span>
363
+ <span class="cline-any cline-yes">19x</span>
364
+ <span class="cline-any cline-yes">19x</span>
365
+ <span class="cline-any cline-yes">19x</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">1x</span>
371
+ <span class="cline-any cline-yes">1x</span>
372
+ <span class="cline-any cline-yes">1x</span>
373
+ <span class="cline-any cline-yes">1x</span>
374
+ <span class="cline-any cline-yes">1x</span>
375
+ <span class="cline-any cline-yes">20x</span>
376
+ <span class="cline-any cline-yes">20x</span>
377
+ <span class="cline-any cline-yes">20x</span>
378
+ <span class="cline-any cline-yes">20x</span>
379
+ <span class="cline-any cline-yes">20x</span>
380
+ <span class="cline-any cline-yes">7x</span>
381
+ <span class="cline-any cline-yes">7x</span>
382
+ <span class="cline-any cline-yes">7x</span>
383
+ <span class="cline-any cline-yes">7x</span>
384
+ <span class="cline-any cline-yes">7x</span>
385
+ <span class="cline-any cline-yes">7x</span>
386
+ <span class="cline-any cline-yes">20x</span>
387
+ <span class="cline-any cline-yes">20x</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Reference } from '../types/Types'
389
+ import { Service } from './Service'
390
+ import { Splash } from './Splash'
391
+ &nbsp;
392
+ /**
393
+ * # DOM Utilities
394
+ * A collection of functions that are used by the Nanosplash classes.
395
+ * @see Splash
396
+ * @see Service
397
+ * @author Isak K. Hauge &lt;isakhauge@icloud.com&gt;
398
+ */
399
+ &nbsp;
400
+ /**
401
+ * # Render
402
+ * @param html HTML string to render.
403
+ * @returns Rendered HTML element.
404
+ */
405
+ export function render(html: string): HTMLElement {
406
+ return (div =&gt;
407
+ // @ts-ignore
408
+ (() =&gt; div.firstChild as HTMLElement)((div.innerHTML = html)))(
409
+ document.createElement('div')
410
+ )
411
+ }
412
+ &nbsp;
413
+ /**
414
+ * # Create Element
415
+ * Return the main Nanosplash element.
416
+ */
417
+ export function createElement(): HTMLDivElement {
418
+ return render(
419
+ '&lt;div class=ns&gt;&lt;div class=nsc&gt;&lt;div class=nst&gt;&lt;/div&gt;&lt;div class=nss&gt;&lt;svg viewBox="0 0 50 50"&gt;&lt;circle class=path cx=25 cy=25 r=20 fill=none&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;'
420
+ ) as HTMLDivElement
421
+ }
422
+ &nbsp;
423
+ /**
424
+ * # Inject as First Child
425
+ * Insert element into the target element as its first child.
426
+ * @param element Element to inject.
427
+ * @param targetElement Element in which the first element is to be injected.
428
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/children
429
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore
430
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild
431
+ * @see https://developer.mozilla.org/docs/Web/API/NodeList/item
432
+ */
433
+ export function injectAsFirstChild(
434
+ element: Element,
435
+ targetElement: Element
436
+ ): void {
437
+ const targetHasChild = targetElement.children.length &gt; 0
438
+ if (targetHasChild) {
439
+ targetElement.insertBefore(element, targetElement.children.item(0))
440
+ } else {
441
+ targetElement.append(element)
442
+ }
443
+ }
444
+ &nbsp;
445
+ /**
446
+ * # Add NS Host Class
447
+ * Add the `nsHostClassName` class to the `element`.
448
+ * @param element Element to which the `nsHostClassName` class will be added.
449
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
450
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/add
451
+ */
452
+ export function addNSHostClass(element: Element | null): void {
453
+ element?.classList.add(Splash.NSHostClass)
454
+ }
455
+ &nbsp;
456
+ /**
457
+ * # Remove NS Host Class
458
+ * Remove the `nsHostClassName` class from the `element`.
459
+ * @param element Element from which the `nsHostClassName` class will be removed.
460
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
461
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/remove
462
+ */
463
+ export function removeNSHostClass(element: Element | null): void {
464
+ element?.classList.remove(Splash.NSHostClass)
465
+ }
466
+ &nbsp;
467
+ /**
468
+ * # Show Element
469
+ * Set the `display` property of the `element` to `flex`.
470
+ * @param element Element to show.
471
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/display
472
+ */
473
+ export function showElement(element: HTMLElement): void {
474
+ element.style.display = 'flex'
475
+ }
476
+ &nbsp;
477
+ /**
478
+ * # Hide Element
479
+ * Set the `display` property of the `element` to `none`.
480
+ * @param element Element to hide.
481
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/display
482
+ */
483
+ export function hideElement(element: HTMLElement): void {
484
+ element.style.display = 'none'
485
+ }
486
+ &nbsp;
487
+ /**
488
+ * # Element From
489
+ * Convert the element reference to an element.
490
+ * @param ref Reference to an element.
491
+ * @returns { Element | null } Element or null.
492
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement
493
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element
494
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node
495
+ */
496
+ export function elementFrom(ref: Reference): Element | null {
497
+ switch (typeof ref) {
498
+ case 'object':
499
+ const isBody = ref === document.body
500
+ const isElement = ref instanceof Element
501
+ if (isBody || isElement) {
502
+ return ref
503
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
504
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
505
+ <span class="cstat-no" title="statement not covered" > 'Reference is an object but not an Element instance.'</span>
506
+ <span class="cstat-no" title="statement not covered" > )</span>
507
+ case 'string':
508
+ return document.querySelector(ref)
509
+ <span class="branch-0 cbranch-no" title="branch not covered" > default:</span>
510
+ <span class="cstat-no" title="statement not covered" > throw new Error('Reference is not an object or a string.')</span>
511
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
512
+ <span class="cstat-no" title="statement not covered" >}</span>
513
+ &nbsp;
514
+ /**
515
+ * # Move
516
+ * Move an Element to another Element.
517
+ * @param element Element to move
518
+ * @param targetElement Target element
519
+ */
520
+ export function move(element: Element, targetElement: Element): void {
521
+ // Clean the current NS host element.
522
+ removeNSHostClass(element.parentElement)
523
+ // Assign new NS host element.
524
+ addNSHostClass(targetElement)
525
+ injectAsFirstChild(element, targetElement)
526
+ }
527
+ &nbsp;
528
+ /**
529
+ * # Get Recycled NS
530
+ * Return the Nanosplash instance inside the target element if it exists.
531
+ * @param targetElement Element wherein the Nanosplash instance is to reside.
532
+ * @returns { Nanosplash | null } Nanosplash instance or null.
533
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/firstElementChild
534
+ */
535
+ export function getRecycledSplash(targetElement: Element): Splash | null {
536
+ const children = Array.from(targetElement.<span class="branch-0 cbranch-no" title="branch not covered" >children || [])</span>
537
+ const nss = Service.getInstance()
538
+ let splash: Splash | null = null
539
+ const n = children.length
540
+ for (let i = 0; i &lt; n; i++) {
541
+ const child = children[i]
542
+ if (child.classList.contains(Splash.NSClass)) {
543
+ splash = nss.nsQueue.get(child.id<span class="branch-0 cbranch-no" title="branch not covered" >) ?? null</span>
544
+ break
545
+ }
546
+ }
547
+ return splash
548
+ }
549
+ &nbsp;</pre></td></tr></table></pre>
550
+
551
+ <div class='push'></div><!-- for sticky footer -->
552
+ </div><!-- /wrapper -->
553
+ <div class='footer quiet pad2 space-top1 center small'>
554
+ Code coverage generated by
555
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
556
+ at 2023-10-19T21:38:28.926Z
557
+ </div>
558
+ <script src="prettify.js"></script>
559
+ <script>
560
+ window.onload = function () {
561
+ prettyPrint();
562
+ };
563
+ </script>
564
+ <script src="sorter.js"></script>
565
+ <script src="block-navigation.js"></script>
566
+ </body>
567
+ </html>
568
+