nanosplash 2.5.3 → 3.0.1

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 (102) hide show
  1. package/.github/workflows/ci.yml +48 -0
  2. package/.prettierrc +10 -9
  3. package/LICENSE +1 -1
  4. package/README.md +139 -72
  5. package/coverage/base.css +224 -0
  6. package/coverage/block-navigation.js +87 -0
  7. package/coverage/clover.xml +555 -0
  8. package/coverage/core/Dom.ts.html +565 -0
  9. package/coverage/core/Service.ts.html +790 -0
  10. package/coverage/core/Splash.ts.html +457 -0
  11. package/coverage/core/index.html +146 -0
  12. package/coverage/coverage-final.json +9043 -0
  13. package/coverage/favicon.png +0 -0
  14. package/coverage/index.html +131 -0
  15. package/coverage/prettify.css +1 -0
  16. package/coverage/prettify.js +2 -0
  17. package/coverage/sort-arrow-sprite.png +0 -0
  18. package/coverage/sorter.js +196 -0
  19. package/coverage/types/Types.ts.html +121 -0
  20. package/coverage/types/index.html +116 -0
  21. package/dist/latest/cjs/ns.cjs +1 -0
  22. package/dist/latest/cjs/style.css +1 -0
  23. package/dist/latest/es/ns.js +306 -0
  24. package/dist/latest/es/style.css +1 -0
  25. package/dist/latest/iife/ns.iife.js +4 -0
  26. package/dist/versioned/3.0.1/cjs/ns.cjs +1 -0
  27. package/dist/versioned/3.0.1/cjs/style.css +1 -0
  28. package/dist/versioned/3.0.1/es/ns.js +306 -0
  29. package/dist/versioned/3.0.1/es/style.css +1 -0
  30. package/dist/versioned/3.0.1/iife/ns.iife.js +2 -0
  31. package/docs/index.6d66a821.js +1 -0
  32. package/docs/index.74dbd99e.css +1 -0
  33. package/docs/index.f34144dc.js +1 -0
  34. package/docs/index.html +90 -114
  35. package/index.html +87 -115
  36. package/package.json +50 -36
  37. package/src/sass/ns.sass +95 -0
  38. package/src/ts/core/Dom.ts +160 -0
  39. package/src/ts/core/Service.ts +235 -0
  40. package/src/ts/core/ServiceInterface.ts +60 -0
  41. package/src/ts/core/Splash.ts +124 -0
  42. package/src/ts/core/SplashInterface.ts +54 -0
  43. package/src/ts/main.ts +9 -0
  44. package/src/ts/types/Types.ts +12 -0
  45. package/src/ts/types/global.d.ts +14 -0
  46. package/tests/Dom.spec.ts +127 -0
  47. package/tests/Guid.spec.ts +21 -0
  48. package/tests/Service.spec.ts +119 -0
  49. package/tests/Splash.spec.ts +64 -0
  50. package/tsconfig.json +20 -16
  51. package/vite.config.ts +27 -13
  52. package/vite.demo.config.ts +16 -0
  53. package/.github/workflows/production.yml +0 -60
  54. package/.github/workflows/release.yml +0 -61
  55. package/_config.yml +0 -1
  56. package/dist/iife/manifest.json +0 -7
  57. package/dist/iife/nanosplash.iife.js +0 -1
  58. package/dist/module/manifest.json +0 -7
  59. package/dist/module/nanosplash.cjs.js +0 -1
  60. package/dist/module/nanosplash.es.js +0 -371
  61. package/dist/module/style.css +0 -1
  62. package/docs/nanosplash.iife.js +0 -6
  63. package/docs/style.css +0 -1
  64. package/docs/typedoc/.nojekyll +0 -1
  65. package/docs/typedoc/assets/highlight.css +0 -22
  66. package/docs/typedoc/assets/icons.css +0 -1043
  67. package/docs/typedoc/assets/icons.png +0 -0
  68. package/docs/typedoc/assets/icons@2x.png +0 -0
  69. package/docs/typedoc/assets/main.js +0 -52
  70. package/docs/typedoc/assets/search.js +0 -1
  71. package/docs/typedoc/assets/style.css +0 -1414
  72. package/docs/typedoc/assets/widgets.png +0 -0
  73. package/docs/typedoc/assets/widgets@2x.png +0 -0
  74. package/docs/typedoc/classes/Core_Nanosplash.default.html +0 -133
  75. package/docs/typedoc/index.html +0 -1
  76. package/docs/typedoc/modules/Core_Nanosplash.html +0 -1
  77. package/docs/typedoc/modules/types.html +0 -1
  78. package/favicon.svg +0 -15
  79. package/postcss.config.js +0 -8
  80. package/src/Core/Nanosplash.ts +0 -257
  81. package/src/Core/SplashInstance.ts +0 -298
  82. package/src/Exceptions/DestinationException.ts +0 -13
  83. package/src/Exceptions/Exception.ts +0 -9
  84. package/src/Exceptions/IllegalArgumentException.ts +0 -11
  85. package/src/Factory/NanosplashFactory.ts +0 -93
  86. package/src/Interfaces/ContextualAPIInterface.ts +0 -8
  87. package/src/Interfaces/IdentityInterface.ts +0 -3
  88. package/src/Interfaces/InsideInterface.ts +0 -5
  89. package/src/Interfaces/NanosplashInterface.ts +0 -8
  90. package/src/Interfaces/ProgressInterface.ts +0 -5
  91. package/src/Interfaces/ShowInterface.ts +0 -5
  92. package/src/Interfaces/WhileInterface.ts +0 -5
  93. package/src/Repositories/NanosplashRepository.ts +0 -82
  94. package/src/Tests/dom.spec.ts +0 -72
  95. package/src/Utilities/dom.ts +0 -49
  96. package/src/main.ts +0 -5
  97. package/src/style.sass +0 -88
  98. package/src/types.d.ts +0 -59
  99. package/update-all.sh +0 -3
  100. package/vite.iife.config.js +0 -72
  101. package/vite.mod.config.js +0 -71
  102. package/vite.site.config.js +0 -22
@@ -0,0 +1,565 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for core/Dom.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> / <a href="index.html">core</a> Dom.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>160/160</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">86.36% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>19/22</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'>11/11</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>160/160</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
227
+ <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">23x</span>
246
+ <span class="cline-any cline-yes">23x</span>
247
+ <span class="cline-any cline-yes">23x</span>
248
+ <span class="cline-any cline-yes">23x</span>
249
+ <span class="cline-any cline-yes">23x</span>
250
+ <span class="cline-any cline-yes">1x</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">1x</span>
258
+ <span class="cline-any cline-yes">1x</span>
259
+ <span class="cline-any cline-yes">1x</span>
260
+ <span class="cline-any cline-yes">1x</span>
261
+ <span class="cline-any cline-yes">1x</span>
262
+ <span class="cline-any cline-yes">13x</span>
263
+ <span class="cline-any cline-yes">13x</span>
264
+ <span class="cline-any cline-yes">13x</span>
265
+ <span class="cline-any cline-yes">13x</span>
266
+ <span class="cline-any cline-yes">13x</span>
267
+ <span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-yes">13x</span>
269
+ <span class="cline-any cline-yes">12x</span>
270
+ <span class="cline-any cline-yes">12x</span>
271
+ <span class="cline-any cline-yes">13x</span>
272
+ <span class="cline-any cline-yes">1x</span>
273
+ <span class="cline-any cline-yes">1x</span>
274
+ <span class="cline-any cline-yes">1x</span>
275
+ <span class="cline-any cline-yes">1x</span>
276
+ <span class="cline-any cline-yes">1x</span>
277
+ <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">35x</span>
284
+ <span class="cline-any cline-yes">35x</span>
285
+ <span class="cline-any cline-yes">35x</span>
286
+ <span class="cline-any cline-yes">35x</span>
287
+ <span class="cline-any cline-yes">35x</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">1x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-yes">1x</span>
304
+ <span class="cline-any cline-yes">1x</span>
305
+ <span class="cline-any cline-yes">1x</span>
306
+ <span class="cline-any cline-yes">10x</span>
307
+ <span class="cline-any cline-yes">10x</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">1x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-yes">1x</span>
316
+ <span class="cline-any cline-yes">11x</span>
317
+ <span class="cline-any cline-yes">11x</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">1x</span>
324
+ <span class="cline-any cline-yes">1x</span>
325
+ <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-yes">16x</span>
327
+ <span class="cline-any cline-yes">16x</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">1x</span>
337
+ <span class="cline-any cline-yes">1x</span>
338
+ <span class="cline-any cline-yes">1x</span>
339
+ <span class="cline-any cline-yes">14x</span>
340
+ <span class="cline-any cline-yes">14x</span>
341
+ <span class="cline-any cline-yes">1x</span>
342
+ <span class="cline-any cline-yes">1x</span>
343
+ <span class="cline-any cline-yes">1x</span>
344
+ <span class="cline-any cline-yes">1x</span>
345
+ <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">1x</span>
347
+ <span class="cline-any cline-yes">1x</span>
348
+ <span class="cline-any cline-yes">1x</span>
349
+ <span class="cline-any cline-yes">1x</span>
350
+ <span class="cline-any cline-yes">4x</span>
351
+ <span class="cline-any cline-yes">4x</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">11x</span>
361
+ <span class="cline-any cline-yes">11x</span>
362
+ <span class="cline-any cline-yes">11x</span>
363
+ <span class="cline-any cline-yes">11x</span>
364
+ <span class="cline-any cline-yes">11x</span>
365
+ <span class="cline-any cline-yes">11x</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">13x</span>
376
+ <span class="cline-any cline-yes">13x</span>
377
+ <span class="cline-any cline-yes">13x</span>
378
+ <span class="cline-any cline-yes">13x</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">2x</span>
382
+ <span class="cline-any cline-yes">2x</span>
383
+ <span class="cline-any cline-yes">11x</span>
384
+ <span class="cline-any cline-yes">11x</span>
385
+ <span class="cline-any cline-yes">11x</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// @ts-strict
387
+ &nbsp;
388
+ import { Reference, GUIDString, ClassListAction } 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
+ * # Create Element
402
+ * Return the main Nanosplash element.
403
+ */
404
+ export function createElement(): HTMLDivElement {
405
+ return new DOMParser().parseFromString(
406
+ '&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;',
407
+ 'text/html'
408
+ ).body.firstChild as HTMLDivElement
409
+ }
410
+ &nbsp;
411
+ /**
412
+ * # Inject as First Child
413
+ * Insert element into the target element as its first child.
414
+ * @param element Element to inject.
415
+ * @param targetElement Element in which the first element is to be injected.
416
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/children
417
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore
418
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild
419
+ * @see https://developer.mozilla.org/docs/Web/API/NodeList/item
420
+ */
421
+ export function injectAsFirstChild(
422
+ element: Element,
423
+ targetElement: Element
424
+ ): void {
425
+ const targetHasChild = targetElement.children.length &gt; 0
426
+ if (targetHasChild) {
427
+ targetElement.insertBefore(element, targetElement.children.item(0))
428
+ } else {
429
+ targetElement.append(element)
430
+ }
431
+ }
432
+ &nbsp;
433
+ /**
434
+ * # Set NS Host Class
435
+ * Add or remove the `nsHostClassName` class to the `element`.
436
+ * @param element Element to which the `nsHostClassName` class will be added or removed.
437
+ * @param action Action to perform ('add' or 'remove').
438
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
439
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/add
440
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/remove
441
+ */
442
+ export function setNSHostClass(
443
+ element: Element | null,
444
+ action: ClassListAction
445
+ ): void {
446
+ element?.classList[action](Splash.NSHostClass)
447
+ }
448
+ &nbsp;
449
+ /**
450
+ * # Prepare Parent Of
451
+ * Add the `nsHostClassName` class to the parent of the `ns` element.
452
+ * @param ns Nanosplash instance.
453
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/parentElement
454
+ */
455
+ export function prepareParentOf(ns: Splash): void {
456
+ setNSHostClass(ns.getNSElement().parentElement, ClassListAction.Add)
457
+ }
458
+ &nbsp;
459
+ /**
460
+ * # Clean NS Parent Of
461
+ * Remove the `nsHostClassName` class from the parent of the `ns` element.
462
+ * @param ns Nanosplash instance.
463
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/parentElement
464
+ */
465
+ export function cleanNSParentOf(ns: Splash): void {
466
+ setNSHostClass(ns.getNSElement().parentElement, ClassListAction.Remove)
467
+ }
468
+ &nbsp;
469
+ /**
470
+ * # Show Element
471
+ * Set the `display` property of the `element` to `flex`.
472
+ * @param element Element to show.
473
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/display
474
+ */
475
+ export function showElement(element: HTMLElement): void {
476
+ element.style.display = 'flex'
477
+ }
478
+ &nbsp;
479
+ /**
480
+ * # Hide Element
481
+ * Set the `display` property of the `element` to `none`.
482
+ * @param element Element to hide.
483
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/display
484
+ */
485
+ export function hideElement(element: HTMLElement): void {
486
+ element.style.display = 'none'
487
+ }
488
+ &nbsp;
489
+ /**
490
+ * # Element From
491
+ * Convert the element reference to an element.
492
+ * @param ref Reference to an element.
493
+ * @returns { Element | null } Element or null.
494
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement
495
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element
496
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Node
497
+ */
498
+ export function elementFrom(ref: Reference): Element | null {
499
+ return ref instanceof Element ? ref : document.querySelector(<span class="branch-0 cbranch-no" title="branch not covered" >ref || '')</span>
500
+ }
501
+ &nbsp;
502
+ /**
503
+ * # Element Is NS
504
+ * Check if the element is a Nanosplash element.
505
+ * This is determined by the presence of the `ns` class on the element.
506
+ * @param element Element to check.
507
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/contains
508
+ */
509
+ export function elementIsNS(element: Element): boolean {
510
+ return element?.classList?.contains(Splash.NSClass<span class="branch-0 cbranch-no" title="branch not covered" >) ?? false</span>
511
+ }
512
+ &nbsp;
513
+ /**
514
+ * # Move
515
+ * Move an Element to another Element.
516
+ * @param element Element to move
517
+ * @param targetElement Target element
518
+ */
519
+ export function move(element: Element, targetElement: Element): void {
520
+ // Clean the current NS host element.
521
+ setNSHostClass(element.parentElement, ClassListAction.Remove)
522
+ // Assign new NS host element.
523
+ setNSHostClass(targetElement, ClassListAction.Add)
524
+ injectAsFirstChild(element, targetElement)
525
+ }
526
+ &nbsp;
527
+ /**
528
+ * # Get Recycled NS
529
+ * Return the Nanosplash instance inside the target element if it exists.
530
+ * @param targetElement Element wherein the Nanosplash instance is to reside.
531
+ * @returns { Nanosplash | null } Nanosplash instance or null.
532
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/firstElementChild
533
+ */
534
+ export function getRecycledNS(targetElement: Element): Splash | null {
535
+ const firstChild = targetElement.firstElementChild
536
+ const hasChild = firstChild !== null
537
+ const targetAlreadyHasNS = hasChild &amp;&amp; elementIsNS(firstChild)
538
+ if (targetAlreadyHasNS) {
539
+ const id: GUIDString = firstChild.id
540
+ const nss = Service.getInstance()
541
+ return nss.nsStack.find((ns: Splash) =&gt; ns.getId() === id<span class="branch-0 cbranch-no" title="branch not covered" >) ?? null</span>
542
+ }
543
+ &nbsp;
544
+ return null
545
+ }
546
+ &nbsp;</pre></td></tr></table></pre>
547
+
548
+ <div class='push'></div><!-- for sticky footer -->
549
+ </div><!-- /wrapper -->
550
+ <div class='footer quiet pad2 space-top1 center small'>
551
+ Code coverage generated by
552
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
553
+ at 2023-09-06T08:51:33.390Z
554
+ </div>
555
+ <script src="../prettify.js"></script>
556
+ <script>
557
+ window.onload = function () {
558
+ prettyPrint();
559
+ };
560
+ </script>
561
+ <script src="../sorter.js"></script>
562
+ <script src="../block-navigation.js"></script>
563
+ </body>
564
+ </html>
565
+