@mux/mux-player 0.1.0-beta.21

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 (118) hide show
  1. package/CHANGELOG.md +281 -0
  2. package/LICENSE +9 -0
  3. package/README.md +231 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +161 -0
  8. package/coverage/lcov-report/prettify.css +1 -0
  9. package/coverage/lcov-report/prettify.js +2 -0
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +196 -0
  12. package/coverage/lcov-report/src/dialog.ts.html +247 -0
  13. package/coverage/lcov-report/src/errors.ts.html +574 -0
  14. package/coverage/lcov-report/src/helpers.ts.html +478 -0
  15. package/coverage/lcov-report/src/html.ts.html +580 -0
  16. package/coverage/lcov-report/src/index.html +251 -0
  17. package/coverage/lcov-report/src/index.ts.html +2941 -0
  18. package/coverage/lcov-report/src/logger.ts.html +163 -0
  19. package/coverage/lcov-report/src/media-chrome/dialog.ts.html +661 -0
  20. package/coverage/lcov-report/src/media-chrome/index.html +131 -0
  21. package/coverage/lcov-report/src/media-chrome/time-display.ts.html +295 -0
  22. package/coverage/lcov-report/src/media-theme-mux/icons/airplay.svg.html +109 -0
  23. package/coverage/lcov-report/src/media-theme-mux/icons/captions-off.svg.html +100 -0
  24. package/coverage/lcov-report/src/media-theme-mux/icons/captions-on.svg.html +100 -0
  25. package/coverage/lcov-report/src/media-theme-mux/icons/fullscreen-enter.svg.html +100 -0
  26. package/coverage/lcov-report/src/media-theme-mux/icons/fullscreen-exit.svg.html +100 -0
  27. package/coverage/lcov-report/src/media-theme-mux/icons/index.html +326 -0
  28. package/coverage/lcov-report/src/media-theme-mux/icons/pause.svg.html +100 -0
  29. package/coverage/lcov-report/src/media-theme-mux/icons/pip-enter.svg.html +100 -0
  30. package/coverage/lcov-report/src/media-theme-mux/icons/pip-exit.svg.html +100 -0
  31. package/coverage/lcov-report/src/media-theme-mux/icons/play.svg.html +100 -0
  32. package/coverage/lcov-report/src/media-theme-mux/icons/seek-backward.svg.html +124 -0
  33. package/coverage/lcov-report/src/media-theme-mux/icons/seek-forward.svg.html +124 -0
  34. package/coverage/lcov-report/src/media-theme-mux/icons/volume-high.svg.html +103 -0
  35. package/coverage/lcov-report/src/media-theme-mux/icons/volume-low.svg.html +103 -0
  36. package/coverage/lcov-report/src/media-theme-mux/icons/volume-medium.svg.html +103 -0
  37. package/coverage/lcov-report/src/media-theme-mux/icons/volume-off.svg.html +103 -0
  38. package/coverage/lcov-report/src/media-theme-mux/icons.ts.html +184 -0
  39. package/coverage/lcov-report/src/media-theme-mux/index.html +146 -0
  40. package/coverage/lcov-report/src/media-theme-mux/media-theme-mux.ts.html +1279 -0
  41. package/coverage/lcov-report/src/media-theme-mux/styles.css.html +586 -0
  42. package/coverage/lcov-report/src/styles.css.html +211 -0
  43. package/coverage/lcov-report/src/template.ts.html +463 -0
  44. package/coverage/lcov-report/src/utils.ts.html +385 -0
  45. package/coverage/lcov-report/src/video-api.ts.html +979 -0
  46. package/coverage/lcov.info +4058 -0
  47. package/dist/index.cjs.js +1432 -0
  48. package/dist/index.mjs +709 -0
  49. package/dist/mux-player.js +1478 -0
  50. package/dist/mux-player.mjs +1478 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -0
  52. package/dist/types/dialog.d.ts +6 -0
  53. package/dist/types/errors.d.ts +6 -0
  54. package/dist/types/helpers.d.ts +26 -0
  55. package/dist/types/html.d.ts +18 -0
  56. package/dist/types/index.d.ts +199 -0
  57. package/dist/types/logger.d.ts +5 -0
  58. package/dist/types/media-chrome/dialog.d.ts +12 -0
  59. package/dist/types/media-chrome/time-display.d.ts +9 -0
  60. package/dist/types/media-theme-mux/icons.d.ts +15 -0
  61. package/dist/types/media-theme-mux/media-theme-mux.d.ts +29 -0
  62. package/dist/types/template.d.ts +5 -0
  63. package/dist/types/utils.d.ts +10 -0
  64. package/dist/types/video-api.d.ts +64 -0
  65. package/dist/types-ts3.4/dialog.d.ts +6 -0
  66. package/dist/types-ts3.4/errors.d.ts +6 -0
  67. package/dist/types-ts3.4/helpers.d.ts +26 -0
  68. package/dist/types-ts3.4/html.d.ts +18 -0
  69. package/dist/types-ts3.4/index.d.ts +180 -0
  70. package/dist/types-ts3.4/logger.d.ts +5 -0
  71. package/dist/types-ts3.4/media-chrome/dialog.d.ts +12 -0
  72. package/dist/types-ts3.4/media-chrome/time-display.d.ts +9 -0
  73. package/dist/types-ts3.4/media-theme-mux/icons.d.ts +15 -0
  74. package/dist/types-ts3.4/media-theme-mux/media-theme-mux.d.ts +29 -0
  75. package/dist/types-ts3.4/template.d.ts +5 -0
  76. package/dist/types-ts3.4/utils.d.ts +10 -0
  77. package/dist/types-ts3.4/video-api.d.ts +53 -0
  78. package/lang/en.json +32 -0
  79. package/lang/nl.json +31 -0
  80. package/package.json +107 -0
  81. package/src/dialog.ts +54 -0
  82. package/src/errors.ts +163 -0
  83. package/src/helpers.ts +131 -0
  84. package/src/html.ts +165 -0
  85. package/src/index.ts +952 -0
  86. package/src/logger.ts +26 -0
  87. package/src/media-chrome/dialog.ts +192 -0
  88. package/src/media-chrome/time-display.ts +70 -0
  89. package/src/media-theme-mux/icons/airplay.svg +8 -0
  90. package/src/media-theme-mux/icons/captions-off.svg +5 -0
  91. package/src/media-theme-mux/icons/captions-on.svg +5 -0
  92. package/src/media-theme-mux/icons/fullscreen-enter.svg +5 -0
  93. package/src/media-theme-mux/icons/fullscreen-exit.svg +5 -0
  94. package/src/media-theme-mux/icons/pause.svg +5 -0
  95. package/src/media-theme-mux/icons/pip-enter.svg +5 -0
  96. package/src/media-theme-mux/icons/pip-exit.svg +5 -0
  97. package/src/media-theme-mux/icons/play.svg +5 -0
  98. package/src/media-theme-mux/icons/seek-backward.svg +13 -0
  99. package/src/media-theme-mux/icons/seek-forward.svg +13 -0
  100. package/src/media-theme-mux/icons/volume-high.svg +6 -0
  101. package/src/media-theme-mux/icons/volume-low.svg +6 -0
  102. package/src/media-theme-mux/icons/volume-medium.svg +6 -0
  103. package/src/media-theme-mux/icons/volume-off.svg +6 -0
  104. package/src/media-theme-mux/icons.ts +33 -0
  105. package/src/media-theme-mux/media-theme-mux.ts +398 -0
  106. package/src/media-theme-mux/styles.css +167 -0
  107. package/src/styles.css +42 -0
  108. package/src/template.ts +126 -0
  109. package/src/types.d.ts +52 -0
  110. package/src/utils.ts +100 -0
  111. package/src/video-api.ts +298 -0
  112. package/test/errors.test.js +169 -0
  113. package/test/helpers.test.js +78 -0
  114. package/test/player.test.js +696 -0
  115. package/test/template.test.js +70 -0
  116. package/test/utils.test.js +21 -0
  117. package/test/web-test-runner.config.mjs +29 -0
  118. package/tsconfig.json +21 -0
@@ -0,0 +1,580 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/html.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">src</a> html.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">98.18% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>162/165</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">91.66% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>22/24</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">98.18% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>162/165</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
232
+ <span class="cline-any cline-yes">3x</span>
233
+ <span class="cline-any cline-yes">3x</span>
234
+ <span class="cline-any cline-yes">3x</span>
235
+ <span class="cline-any cline-yes">3x</span>
236
+ <span class="cline-any cline-yes">3x</span>
237
+ <span class="cline-any cline-yes">3x</span>
238
+ <span class="cline-any cline-yes">3x</span>
239
+ <span class="cline-any cline-yes">3x</span>
240
+ <span class="cline-any cline-yes">3x</span>
241
+ <span class="cline-any cline-yes">3x</span>
242
+ <span class="cline-any cline-yes">3x</span>
243
+ <span class="cline-any cline-yes">3x</span>
244
+ <span class="cline-any cline-yes">3x</span>
245
+ <span class="cline-any cline-yes">3x</span>
246
+ <span class="cline-any cline-yes">3x</span>
247
+ <span class="cline-any cline-yes">3x</span>
248
+ <span class="cline-any cline-yes">3x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-no">&nbsp;</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">3x</span>
257
+ <span class="cline-any cline-yes">3x</span>
258
+ <span class="cline-any cline-yes">3x</span>
259
+ <span class="cline-any cline-yes">3x</span>
260
+ <span class="cline-any cline-yes">3x</span>
261
+ <span class="cline-any cline-yes">3x</span>
262
+ <span class="cline-any cline-yes">3x</span>
263
+ <span class="cline-any cline-yes">3x</span>
264
+ <span class="cline-any cline-yes">3x</span>
265
+ <span class="cline-any cline-yes">3x</span>
266
+ <span class="cline-any cline-yes">3x</span>
267
+ <span class="cline-any cline-yes">3x</span>
268
+ <span class="cline-any cline-yes">3x</span>
269
+ <span class="cline-any cline-yes">3x</span>
270
+ <span class="cline-any cline-yes">3x</span>
271
+ <span class="cline-any cline-yes">3x</span>
272
+ <span class="cline-any cline-yes">3x</span>
273
+ <span class="cline-any cline-yes">3x</span>
274
+ <span class="cline-any cline-yes">3x</span>
275
+ <span class="cline-any cline-yes">3x</span>
276
+ <span class="cline-any cline-yes">3x</span>
277
+ <span class="cline-any cline-yes">3x</span>
278
+ <span class="cline-any cline-yes">3x</span>
279
+ <span class="cline-any cline-yes">3x</span>
280
+ <span class="cline-any cline-yes">3x</span>
281
+ <span class="cline-any cline-yes">3x</span>
282
+ <span class="cline-any cline-yes">3x</span>
283
+ <span class="cline-any cline-yes">3x</span>
284
+ <span class="cline-any cline-yes">3x</span>
285
+ <span class="cline-any cline-yes">3x</span>
286
+ <span class="cline-any cline-yes">3x</span>
287
+ <span class="cline-any cline-yes">2x</span>
288
+ <span class="cline-any cline-yes">2x</span>
289
+ <span class="cline-any cline-yes">3x</span>
290
+ <span class="cline-any cline-yes">3x</span>
291
+ <span class="cline-any cline-yes">3x</span>
292
+ <span class="cline-any cline-yes">3x</span>
293
+ <span class="cline-any cline-yes">3x</span>
294
+ <span class="cline-any cline-yes">3x</span>
295
+ <span class="cline-any cline-yes">3x</span>
296
+ <span class="cline-any cline-yes">3x</span>
297
+ <span class="cline-any cline-yes">3x</span>
298
+ <span class="cline-any cline-yes">3x</span>
299
+ <span class="cline-any cline-yes">3x</span>
300
+ <span class="cline-any cline-yes">3x</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-no">&nbsp;</span>
326
+ <span class="cline-any cline-no">&nbsp;</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">3x</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">3x</span>
354
+ <span class="cline-any cline-yes">3x</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">3x</span>
366
+ <span class="cline-any cline-yes">3x</span>
367
+ <span class="cline-any cline-yes">3x</span>
368
+ <span class="cline-any cline-yes">3x</span>
369
+ <span class="cline-any cline-yes">3x</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">3x</span>
377
+ <span class="cline-any cline-yes">3x</span>
378
+ <span class="cline-any cline-yes">3x</span>
379
+ <span class="cline-any cline-yes">3x</span>
380
+ <span class="cline-any cline-yes">3x</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">3x</span>
391
+ <span class="cline-any cline-yes">3x</span>
392
+ <span class="cline-any cline-yes">2x</span>
393
+ <span class="cline-any cline-yes">2x</span>
394
+ <span class="cline-any cline-yes">2x</span>
395
+ <span class="cline-any cline-yes">3x</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TemplateInstance, NodeTemplatePart, createProcessor, AttributeTemplatePart } from '@github/template-parts';
397
+ import type { TemplatePart, TemplateTypeInit } from '@github/template-parts';
398
+ &nbsp;
399
+ // NOTE: These are either direct ports or significantly based off of github's jtml template part processing logic. For more, see: https://github.com/github/jtml
400
+ &nbsp;
401
+ const eventListeners = new WeakMap&lt;Element, Map&lt;string, EventHandler&gt;&gt;();
402
+ class EventHandler {
403
+ handleEvent!: EventListener;
404
+ constructor(private element: Element, private type: string) {
405
+ this.element.addEventListener(this.type, this);
406
+ const elementMap = eventListeners.get(this.element);
407
+ if (elementMap) {
408
+ elementMap.set(this.type, this);
409
+ }
410
+ }
411
+ set(listener: EventListener) {
412
+ if (typeof listener == 'function') {
413
+ this.handleEvent = listener.bind(this.element);
414
+ } else if (typeof listener === 'object' &amp;&amp; typeof (listener as EventHandler).handleEvent === 'function') {
415
+ <span class="cstat-no" title="statement not covered" > this.handleEvent = (listener as EventHandler).handleEvent.bind(listener);</span>
416
+ } else {
417
+ this.element.removeEventListener(this.type, this);
418
+ const elementMap = eventListeners.get(this.element);
419
+ if (elementMap) {
420
+ elementMap.delete(this.type);
421
+ }
422
+ }
423
+ }
424
+ static for(part: AttributeTemplatePart): EventHandler {
425
+ if (!eventListeners.has(part.element)) eventListeners.set(part.element, new Map());
426
+ const type = part.attributeName.slice(2);
427
+ const elementListeners = eventListeners.get(part.element);
428
+ if (elementListeners &amp;&amp; elementListeners.has(type)) return elementListeners.get(type) as EventHandler;
429
+ return new EventHandler(part.element, type);
430
+ }
431
+ }
432
+ &nbsp;
433
+ export function processEvent(part: TemplatePart, value: unknown): boolean {
434
+ if (part instanceof AttributeTemplatePart &amp;&amp; part.attributeName.startsWith('on')) {
435
+ EventHandler.for(part).set(value as unknown as EventListener);
436
+ part.element.removeAttributeNS(part.attributeNamespace, part.attributeName);
437
+ return true;
438
+ }
439
+ return false;
440
+ }
441
+ &nbsp;
442
+ function processSubTemplate(part: TemplatePart, value: unknown): boolean {
443
+ if (value instanceof TemplateResult &amp;&amp; part instanceof NodeTemplatePart) {
444
+ value.renderInto(part);
445
+ return true;
446
+ }
447
+ return false;
448
+ }
449
+ &nbsp;
450
+ function processDocumentFragment(part: TemplatePart, value: unknown): boolean {
451
+ if (value instanceof DocumentFragment &amp;&amp; part instanceof NodeTemplatePart) {
452
+ if (value.childNodes.length) part.replace(...value.childNodes);
453
+ return true;
454
+ }
455
+ return false;
456
+ }
457
+ &nbsp;
458
+ export function processPropertyIdentity(part: TemplatePart, value: unknown): boolean {
459
+ if (part instanceof AttributeTemplatePart) {
460
+ const ns = part.attributeNamespace;
461
+ const oldValue = part.element.getAttributeNS(ns, part.attributeName);
462
+ if (String(value) !== oldValue) {
463
+ part.value = String(value);
464
+ }
465
+ return true;
466
+ }
467
+ part.value = String(value);
468
+ return true;
469
+ }
470
+ &nbsp;
471
+ export function processBooleanAttribute(part: TemplatePart, value: unknown): boolean {
472
+ if (
473
+ typeof value === 'boolean' &amp;&amp;
474
+ part instanceof AttributeTemplatePart
475
+ // can't use this because on custom elements the props are always undefined
476
+ // typeof part.element[part.attributeName as keyof Element] === 'boolean'
477
+ ) {
478
+ const ns = part.attributeNamespace;
479
+ const oldValue = part.element.hasAttributeNS(ns, part.attributeName);
480
+ if (value !== oldValue) {
481
+ part.booleanValue = value;
482
+ }
483
+ return true;
484
+ }
485
+ return false;
486
+ }
487
+ &nbsp;
488
+ export function processBooleanNode(part: TemplatePart, value: unknown): boolean {
489
+ if (value === <span class="branch-0 cbranch-no" title="branch not covered" >false &amp;&amp; part instanceof NodeTemplatePart) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
490
+ <span class="cstat-no" title="statement not covered" > part.replace('');</span>
491
+ <span class="cstat-no" title="statement not covered" > return true;</span>
492
+ }
493
+ return false;
494
+ }
495
+ &nbsp;
496
+ export function processPart(part: TemplatePart, value: unknown): void {
497
+ processBooleanAttribute(part, value) ||
498
+ processEvent(part, value) ||
499
+ processBooleanNode(part, value) ||
500
+ processSubTemplate(part, value) ||
501
+ processDocumentFragment(part, value) ||
502
+ processPropertyIdentity(part, value);
503
+ }
504
+ &nbsp;
505
+ const templates = new WeakMap&lt;TemplateStringsArray, HTMLTemplateElement&gt;();
506
+ const renderedTemplates = new WeakMap&lt;Node | NodeTemplatePart, HTMLTemplateElement&gt;();
507
+ const renderedTemplateInstances = new WeakMap&lt;Node | NodeTemplatePart, TemplateInstance&gt;();
508
+ export class TemplateResult {
509
+ constructor(
510
+ public readonly strings: TemplateStringsArray,
511
+ public readonly values: unknown[],
512
+ public readonly processor: TemplateTypeInit
513
+ ) {}
514
+ &nbsp;
515
+ get template(): HTMLTemplateElement {
516
+ if (templates.has(this.strings)) {
517
+ return templates.get(this.strings) as HTMLTemplateElement;
518
+ } else {
519
+ const template = document.createElement('template');
520
+ const end = this.strings.length - 1;
521
+ template.innerHTML = this.strings.reduce((str, cur, i) =&gt; str + cur + (i &lt; end ? `{{ ${i} }}` : ''), '');
522
+ templates.set(this.strings, template);
523
+ return template;
524
+ }
525
+ }
526
+ &nbsp;
527
+ renderInto(element: Node | NodeTemplatePart): void {
528
+ const template = this.template;
529
+ if (renderedTemplates.get(element) !== template) {
530
+ renderedTemplates.set(element, template);
531
+ const instance = new TemplateInstance(template, this.values, this.processor);
532
+ renderedTemplateInstances.set(element, instance);
533
+ if (element instanceof NodeTemplatePart) {
534
+ element.replace(...instance.children);
535
+ } else {
536
+ element.appendChild(instance);
537
+ }
538
+ return;
539
+ }
540
+ const templateInstance = renderedTemplateInstances.get(element);
541
+ if (templateInstance) {
542
+ templateInstance.update(this.values as unknown as Record&lt;string, unknown&gt;);
543
+ }
544
+ }
545
+ }
546
+ &nbsp;
547
+ const defaultProcessor = createProcessor(processPart);
548
+ export function html(strings: TemplateStringsArray, ...values: unknown[]): TemplateResult {
549
+ return new TemplateResult(strings, values, defaultProcessor);
550
+ }
551
+ &nbsp;
552
+ export function render(result: TemplateResult, element: Node | NodeTemplatePart): void {
553
+ result.renderInto(element);
554
+ }
555
+ &nbsp;
556
+ export function createTemplateInstance(content: string, props?: any) {
557
+ const template = document.createElement('template');
558
+ template.innerHTML = content;
559
+ return new TemplateInstance(template, props);
560
+ }
561
+ &nbsp;</pre></td></tr></table></pre>
562
+
563
+ <div class='push'></div><!-- for sticky footer -->
564
+ </div><!-- /wrapper -->
565
+ <div class='footer quiet pad2 space-top1 center small'>
566
+ Code coverage generated by
567
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
568
+ at Tue Jul 05 2022 17:07:41 GMT+0000 (Coordinated Universal Time)
569
+ </div>
570
+ <script src="../prettify.js"></script>
571
+ <script>
572
+ window.onload = function () {
573
+ prettyPrint();
574
+ };
575
+ </script>
576
+ <script src="../sorter.js"></script>
577
+ <script src="../block-navigation.js"></script>
578
+ </body>
579
+ </html>
580
+