tmg-media-player 0.0.36 → 0.0.37

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 (287) hide show
  1. package/dist/{chunk-Q7O4DCST.js → chunk-23BU2AJD.js} +4 -4
  2. package/dist/{chunk-2S65C2XE.js → chunk-2XHRU5X4.js} +2 -2
  3. package/dist/{chunk-3BLQPCWC.js → chunk-5M2GEASF.js} +15 -15
  4. package/dist/{chunk-3DIXFLZ4.js → chunk-AFRJBIJ4.js} +2 -2
  5. package/dist/{chunk-HHRR7R5I.js → chunk-ASEYDONH.js} +9 -9
  6. package/dist/{chunk-TW6EJOBM.js → chunk-BKE7OHV2.js} +3 -3
  7. package/dist/chunk-BKE7OHV2.js.map +1 -0
  8. package/dist/{chunk-3ITV4OCM.js → chunk-C3D4UUZT.js} +4 -4
  9. package/dist/{chunk-HKZHYXKF.js → chunk-D24YQBHG.js} +6 -6
  10. package/dist/chunk-D24YQBHG.js.map +1 -0
  11. package/dist/{chunk-C4QNF3M4.js → chunk-D73VTNQZ.js} +25 -25
  12. package/dist/{chunk-NMA7IMZX.js → chunk-DKDMJOZP.js} +4 -4
  13. package/dist/{chunk-ZUNDVUUZ.js → chunk-EW3IB5E4.js} +2 -2
  14. package/dist/{chunk-4CM4FZPI.js → chunk-HFQF73T5.js} +6 -6
  15. package/dist/chunk-HFQF73T5.js.map +1 -0
  16. package/dist/{chunk-IUPKURO2.js → chunk-IBBUIMN2.js} +4 -4
  17. package/dist/{chunk-I7MZGLSL.js → chunk-ITKEL5XR.js} +3 -3
  18. package/dist/chunk-ITKEL5XR.js.map +1 -0
  19. package/dist/{chunk-TKLVM4YO.js → chunk-JIXSA7D5.js} +2 -2
  20. package/dist/chunk-JIXSA7D5.js.map +1 -0
  21. package/dist/{chunk-RNRCIAK3.js → chunk-LGANVFU2.js} +6 -6
  22. package/dist/{chunk-CEWJEP7C.js → chunk-N7CQCEXK.js} +5 -5
  23. package/dist/{chunk-63NJ5FHU.js → chunk-NDUBVELP.js} +21 -21
  24. package/dist/{chunk-4GCFVEYB.js → chunk-NWLGQPP5.js} +4 -4
  25. package/dist/{chunk-DSJ5BRWP.js → chunk-OD6YHMUS.js} +20 -20
  26. package/dist/{chunk-XGW7PNJE.js → chunk-OYPVRCFX.js} +2 -2
  27. package/dist/{chunk-EATEXIQQ.js → chunk-P637Z652.js} +9 -9
  28. package/dist/{chunk-N4DPWLWI.js → chunk-POXVURCZ.js} +2 -2
  29. package/dist/{chunk-DLY44YIV.js → chunk-PWTBWGHJ.js} +3 -3
  30. package/dist/chunk-PWTBWGHJ.js.map +1 -0
  31. package/dist/{chunk-TUSTCQOT.js → chunk-QMJHBGYN.js} +9 -9
  32. package/dist/{chunk-CK4OHZ3L.js → chunk-QU3UL72W.js} +5 -5
  33. package/dist/{chunk-UYWH722K.js → chunk-QYQD3264.js} +55 -55
  34. package/dist/{chunk-CR6IA5S4.js → chunk-RRBOZLXP.js} +5 -5
  35. package/dist/{chunk-IPV7SSWB.js → chunk-RRWSRTHV.js} +4 -4
  36. package/dist/{chunk-M6TQYKWW.js → chunk-RSVR4GKO.js} +102 -102
  37. package/dist/{chunk-KMJKJOWW.js → chunk-SWPACD5Q.js} +83 -83
  38. package/dist/{chunk-FQQ7BUL4.js → chunk-SZPFWPXW.js} +37 -37
  39. package/dist/{chunk-UE4ZPXKM.js → chunk-TPISFEE3.js} +2 -2
  40. package/dist/{chunk-C4VTPU3G.js → chunk-UXDRWJ7R.js} +7 -7
  41. package/dist/{chunk-NYV4OKID.js → chunk-VYXKFADG.js} +4 -4
  42. package/dist/{chunk-BT52HFOO.js → chunk-ZBYL3DRU.js} +2 -2
  43. package/dist/{chunk-TYEIMVPJ.js → chunk-ZRILV7LP.js} +9 -8
  44. package/dist/chunk-ZRILV7LP.js.map +1 -0
  45. package/dist/components/captionsView.cjs +1 -1
  46. package/dist/components/captionsView.cjs.map +1 -1
  47. package/dist/components/captionsView.js +1 -1
  48. package/dist/components/controls/airplay.js +1 -1
  49. package/dist/components/controls/backward10.js +1 -1
  50. package/dist/components/controls/bigNext.js +1 -1
  51. package/dist/components/controls/bigPlayPause.js +1 -1
  52. package/dist/components/controls/bigPrevious.js +1 -1
  53. package/dist/components/controls/brightness/index.js +1 -1
  54. package/dist/components/controls/captions.js +3 -3
  55. package/dist/components/controls/capture.js +1 -1
  56. package/dist/components/controls/cast.js +1 -1
  57. package/dist/components/controls/expandMiniplayer.js +1 -1
  58. package/dist/components/controls/forward10.js +1 -1
  59. package/dist/components/controls/fullscreen.js +1 -1
  60. package/dist/components/controls/fullscreenLock.js +1 -1
  61. package/dist/components/controls/fullscreenOrientation.cjs.map +1 -1
  62. package/dist/components/controls/fullscreenOrientation.js +4 -4
  63. package/dist/components/controls/next.js +1 -1
  64. package/dist/components/controls/objectFit.js +1 -1
  65. package/dist/components/controls/pictureInPicture.js +1 -1
  66. package/dist/components/controls/playPause.js +1 -1
  67. package/dist/components/controls/previous.js +1 -1
  68. package/dist/components/controls/removeMiniplayer.js +1 -1
  69. package/dist/components/controls/settings.js +1 -1
  70. package/dist/components/controls/theater.js +1 -1
  71. package/dist/components/controls/timeline/index.cjs +1 -1
  72. package/dist/components/controls/timeline/index.cjs.map +1 -1
  73. package/dist/components/controls/timeline/index.js +5 -5
  74. package/dist/components/controls/voice.js +1 -1
  75. package/dist/components/controls/volume/index.js +1 -1
  76. package/dist/components/holders/airplayPlaceholder.js +1 -1
  77. package/dist/components/holders/castPlaceholder.js +1 -1
  78. package/dist/components/holders/errorPlaceholder.js +1 -1
  79. package/dist/components/holders/pipPlaceholder.js +5 -5
  80. package/dist/components/icons/z-register.js +17 -17
  81. package/dist/components/notifiers/airplay.js +1 -1
  82. package/dist/components/notifiers/brightness.js +1 -1
  83. package/dist/components/notifiers/captions.js +1 -1
  84. package/dist/components/notifiers/capture.js +1 -1
  85. package/dist/components/notifiers/cast.js +1 -1
  86. package/dist/components/notifiers/fastPlay.js +1 -1
  87. package/dist/components/notifiers/fwdBwd.js +1 -1
  88. package/dist/components/notifiers/objectFit.js +1 -1
  89. package/dist/components/notifiers/playPause.js +1 -1
  90. package/dist/components/notifiers/playbackRate.js +1 -1
  91. package/dist/components/notifiers/prevNext.js +1 -1
  92. package/dist/components/notifiers/scrub.js +1 -1
  93. package/dist/components/notifiers/touchBrightness.js +1 -1
  94. package/dist/components/notifiers/touchVolume.js +1 -1
  95. package/dist/components/notifiers/volume.js +1 -1
  96. package/dist/components/notifiers/z-register.js +9 -9
  97. package/dist/components/screenLock.js +1 -1
  98. package/dist/components/z-register.cjs +2 -2
  99. package/dist/components/z-register.cjs.map +1 -1
  100. package/dist/components/z-register.js +19 -19
  101. package/dist/core/controller.cjs +1 -1
  102. package/dist/core/controller.cjs.map +1 -1
  103. package/dist/core/controller.js +4 -4
  104. package/dist/index.cjs +1 -1
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.js +5 -5
  107. package/dist/init.cjs +1 -1
  108. package/dist/init.cjs.map +1 -1
  109. package/dist/init.js +5 -5
  110. package/dist/plugs/base/index.js +1 -1
  111. package/dist/plugs/base/slider.js +1 -1
  112. package/dist/plugs/main/ads/index.js +3 -3
  113. package/dist/plugs/main/disabled/index.js +1 -1
  114. package/dist/plugs/main/light/index.js +1 -1
  115. package/dist/plugs/main/playlist/index.js +5 -5
  116. package/dist/plugs/main/skeleton/index.js +1 -1
  117. package/dist/plugs/menus/main/actions.cjs.map +1 -1
  118. package/dist/plugs/menus/main/actions.js +4 -4
  119. package/dist/plugs/menus/settings/auto.cjs.map +1 -1
  120. package/dist/plugs/menus/settings/auto.js +4 -4
  121. package/dist/plugs/menus/settings/captions.js +2 -2
  122. package/dist/plugs/menus/settings/controlPanel.js +2 -2
  123. package/dist/plugs/menus/settings/frame.cjs.map +1 -1
  124. package/dist/plugs/menus/settings/frame.js +4 -4
  125. package/dist/plugs/menus/settings/keys.js +1 -1
  126. package/dist/plugs/menus/settings/metadata.js +1 -1
  127. package/dist/plugs/menus/settings/modes.cjs.map +1 -1
  128. package/dist/plugs/menus/settings/modes.js +4 -4
  129. package/dist/plugs/menus/settings/sleepTimer.cjs.map +1 -1
  130. package/dist/plugs/menus/settings/sleepTimer.js +5 -5
  131. package/dist/plugs/menus/settings/toasts.cjs.map +1 -1
  132. package/dist/plugs/menus/settings/toasts.js +4 -4
  133. package/dist/plugs/menus/settings/voice.cjs.map +1 -1
  134. package/dist/plugs/menus/settings/voice.js +4 -4
  135. package/dist/plugs/menus/z-register.cjs.map +1 -1
  136. package/dist/plugs/menus/z-register.js +15 -15
  137. package/dist/plugs/settings/ambience/index.js +1 -1
  138. package/dist/plugs/settings/auto/index.cjs.map +1 -1
  139. package/dist/plugs/settings/auto/index.js +4 -4
  140. package/dist/plugs/settings/brightness/index.js +1 -1
  141. package/dist/plugs/settings/captions/index.cjs +5 -4
  142. package/dist/plugs/settings/captions/index.cjs.map +1 -1
  143. package/dist/plugs/settings/captions/index.js +6 -6
  144. package/dist/plugs/settings/controlPanel/draggable.js +3 -3
  145. package/dist/plugs/settings/controlPanel/index.js +3 -3
  146. package/dist/plugs/settings/css/index.js +1 -1
  147. package/dist/plugs/settings/errors/index.js +1 -1
  148. package/dist/plugs/settings/fastPlay/index.js +1 -1
  149. package/dist/plugs/settings/frame/index.js +3 -3
  150. package/dist/plugs/settings/gesture/base.js +3 -3
  151. package/dist/plugs/settings/gesture/index.js +4 -4
  152. package/dist/plugs/settings/gesture/touch.js +4 -4
  153. package/dist/plugs/settings/gesture/wheel.js +4 -4
  154. package/dist/plugs/settings/keys/index.js +3 -3
  155. package/dist/plugs/settings/locked/index.js +1 -1
  156. package/dist/plugs/settings/metadata/index.js +1 -1
  157. package/dist/plugs/settings/modes/airplay.cjs.map +1 -1
  158. package/dist/plugs/settings/modes/airplay.js +6 -6
  159. package/dist/plugs/settings/modes/cast.cjs.map +1 -1
  160. package/dist/plugs/settings/modes/cast.js +6 -6
  161. package/dist/plugs/settings/modes/fullscreen.cjs.map +1 -1
  162. package/dist/plugs/settings/modes/fullscreen.js +5 -5
  163. package/dist/plugs/settings/modes/index.cjs.map +1 -1
  164. package/dist/plugs/settings/modes/index.js +5 -5
  165. package/dist/plugs/settings/modes/miniplayer.cjs.map +1 -1
  166. package/dist/plugs/settings/modes/miniplayer.js +5 -5
  167. package/dist/plugs/settings/modes/pictureInPicture.cjs.map +1 -1
  168. package/dist/plugs/settings/modes/pictureInPicture.js +5 -5
  169. package/dist/plugs/settings/modes/theater.cjs.map +1 -1
  170. package/dist/plugs/settings/modes/theater.js +5 -5
  171. package/dist/plugs/settings/notifiers/index.js +1 -1
  172. package/dist/plugs/settings/objectFit/index.js +1 -1
  173. package/dist/plugs/settings/overlay/index.js +1 -1
  174. package/dist/plugs/settings/panel/index.js +1 -1
  175. package/dist/plugs/settings/panel/menu/index.js +1 -1
  176. package/dist/plugs/settings/panel/menu/panel/main.js +1 -1
  177. package/dist/plugs/settings/panel/menu/panel/sub.js +1 -1
  178. package/dist/plugs/settings/panel/menu/widgets/base.js +1 -1
  179. package/dist/plugs/settings/panel/menu/widgets/button.js +1 -1
  180. package/dist/plugs/settings/panel/menu/widgets/color.js +1 -1
  181. package/dist/plugs/settings/panel/menu/widgets/dragselect.js +1 -1
  182. package/dist/plugs/settings/panel/menu/widgets/group.js +1 -1
  183. package/dist/plugs/settings/panel/menu/widgets/index.js +1 -1
  184. package/dist/plugs/settings/panel/menu/widgets/input.js +1 -1
  185. package/dist/plugs/settings/panel/menu/widgets/limits.js +1 -1
  186. package/dist/plugs/settings/panel/menu/widgets/range.js +1 -1
  187. package/dist/plugs/settings/panel/menu/widgets/select.js +1 -1
  188. package/dist/plugs/settings/panel/menu/widgets/toggle.js +1 -1
  189. package/dist/plugs/settings/persist/index.js +1 -1
  190. package/dist/plugs/settings/playbackRate/index.js +1 -1
  191. package/dist/plugs/settings/poster/index.js +1 -1
  192. package/dist/plugs/settings/sleepTimer/index.js +4 -4
  193. package/dist/plugs/settings/time/index.js +3 -3
  194. package/dist/plugs/settings/timeTravel/index.cjs.map +1 -1
  195. package/dist/plugs/settings/timeTravel/index.js +5 -5
  196. package/dist/plugs/settings/toasts/index.js +1 -1
  197. package/dist/plugs/settings/voice/index.cjs.map +1 -1
  198. package/dist/plugs/settings/voice/index.js +4 -4
  199. package/dist/plugs/settings/volume/index.cjs.map +1 -1
  200. package/dist/plugs/settings/volume/index.js +5 -5
  201. package/dist/plugs/z-register.cjs +5 -4
  202. package/dist/plugs/z-register.cjs.map +1 -1
  203. package/dist/plugs/z-register.js +45 -45
  204. package/dist/super/components/icons.js +37 -37
  205. package/dist/super/components/index.cjs +2 -2
  206. package/dist/super/components/index.cjs.map +1 -1
  207. package/dist/super/components/index.js +97 -97
  208. package/dist/super/components/notifiers.js +22 -22
  209. package/dist/super/consts.js +9 -9
  210. package/dist/super/plugs/index.cjs +5 -4
  211. package/dist/super/plugs/index.cjs.map +1 -1
  212. package/dist/super/plugs/index.js +121 -121
  213. package/dist/super/plugs/menus.cjs.map +1 -1
  214. package/dist/super/plugs/menus.js +26 -26
  215. package/dist/super/techs.cjs +6 -6
  216. package/dist/super/techs.cjs.map +1 -1
  217. package/dist/super/techs.js +13 -13
  218. package/dist/super/utils.js +15 -15
  219. package/dist/super.cjs +11 -10
  220. package/dist/super.cjs.map +1 -1
  221. package/dist/super.global.js +11 -10
  222. package/dist/super.global.js.map +1 -1
  223. package/dist/super.js +146 -146
  224. package/dist/techs/dash.cjs +2 -2
  225. package/dist/techs/dash.cjs.map +1 -1
  226. package/dist/techs/dash.js +5 -5
  227. package/dist/techs/hls.cjs +2 -2
  228. package/dist/techs/hls.cjs.map +1 -1
  229. package/dist/techs/hls.js +5 -5
  230. package/dist/techs/html5.cjs +1 -1
  231. package/dist/techs/html5.cjs.map +1 -1
  232. package/dist/techs/html5.js +4 -4
  233. package/dist/techs/ima.js +3 -3
  234. package/dist/techs/shaka.cjs +2 -2
  235. package/dist/techs/shaka.cjs.map +1 -1
  236. package/dist/techs/shaka.js +5 -5
  237. package/dist/techs/vimeo.js +2 -2
  238. package/dist/techs/youtube.cjs +2 -2
  239. package/dist/techs/youtube.cjs.map +1 -1
  240. package/dist/techs/youtube.js +5 -5
  241. package/dist/techs/z-register.cjs +6 -6
  242. package/dist/techs/z-register.cjs.map +1 -1
  243. package/dist/techs/z-register.js +10 -10
  244. package/dist/tools/player.cjs +1 -1
  245. package/dist/tools/player.cjs.map +1 -1
  246. package/dist/tools/player.js +4 -4
  247. package/dist/tools/runtime/index.cjs +1 -1
  248. package/dist/tools/runtime/index.cjs.map +1 -1
  249. package/dist/tools/runtime/index.js +4 -4
  250. package/package.json +1 -1
  251. package/dist/chunk-4CM4FZPI.js.map +0 -1
  252. package/dist/chunk-DLY44YIV.js.map +0 -1
  253. package/dist/chunk-HKZHYXKF.js.map +0 -1
  254. package/dist/chunk-I7MZGLSL.js.map +0 -1
  255. package/dist/chunk-TKLVM4YO.js.map +0 -1
  256. package/dist/chunk-TW6EJOBM.js.map +0 -1
  257. package/dist/chunk-TYEIMVPJ.js.map +0 -1
  258. /package/dist/{chunk-Q7O4DCST.js.map → chunk-23BU2AJD.js.map} +0 -0
  259. /package/dist/{chunk-2S65C2XE.js.map → chunk-2XHRU5X4.js.map} +0 -0
  260. /package/dist/{chunk-3BLQPCWC.js.map → chunk-5M2GEASF.js.map} +0 -0
  261. /package/dist/{chunk-3DIXFLZ4.js.map → chunk-AFRJBIJ4.js.map} +0 -0
  262. /package/dist/{chunk-HHRR7R5I.js.map → chunk-ASEYDONH.js.map} +0 -0
  263. /package/dist/{chunk-3ITV4OCM.js.map → chunk-C3D4UUZT.js.map} +0 -0
  264. /package/dist/{chunk-C4QNF3M4.js.map → chunk-D73VTNQZ.js.map} +0 -0
  265. /package/dist/{chunk-NMA7IMZX.js.map → chunk-DKDMJOZP.js.map} +0 -0
  266. /package/dist/{chunk-ZUNDVUUZ.js.map → chunk-EW3IB5E4.js.map} +0 -0
  267. /package/dist/{chunk-IUPKURO2.js.map → chunk-IBBUIMN2.js.map} +0 -0
  268. /package/dist/{chunk-RNRCIAK3.js.map → chunk-LGANVFU2.js.map} +0 -0
  269. /package/dist/{chunk-CEWJEP7C.js.map → chunk-N7CQCEXK.js.map} +0 -0
  270. /package/dist/{chunk-63NJ5FHU.js.map → chunk-NDUBVELP.js.map} +0 -0
  271. /package/dist/{chunk-4GCFVEYB.js.map → chunk-NWLGQPP5.js.map} +0 -0
  272. /package/dist/{chunk-DSJ5BRWP.js.map → chunk-OD6YHMUS.js.map} +0 -0
  273. /package/dist/{chunk-XGW7PNJE.js.map → chunk-OYPVRCFX.js.map} +0 -0
  274. /package/dist/{chunk-EATEXIQQ.js.map → chunk-P637Z652.js.map} +0 -0
  275. /package/dist/{chunk-N4DPWLWI.js.map → chunk-POXVURCZ.js.map} +0 -0
  276. /package/dist/{chunk-TUSTCQOT.js.map → chunk-QMJHBGYN.js.map} +0 -0
  277. /package/dist/{chunk-CK4OHZ3L.js.map → chunk-QU3UL72W.js.map} +0 -0
  278. /package/dist/{chunk-UYWH722K.js.map → chunk-QYQD3264.js.map} +0 -0
  279. /package/dist/{chunk-CR6IA5S4.js.map → chunk-RRBOZLXP.js.map} +0 -0
  280. /package/dist/{chunk-IPV7SSWB.js.map → chunk-RRWSRTHV.js.map} +0 -0
  281. /package/dist/{chunk-M6TQYKWW.js.map → chunk-RSVR4GKO.js.map} +0 -0
  282. /package/dist/{chunk-KMJKJOWW.js.map → chunk-SWPACD5Q.js.map} +0 -0
  283. /package/dist/{chunk-FQQ7BUL4.js.map → chunk-SZPFWPXW.js.map} +0 -0
  284. /package/dist/{chunk-UE4ZPXKM.js.map → chunk-TPISFEE3.js.map} +0 -0
  285. /package/dist/{chunk-C4VTPU3G.js.map → chunk-UXDRWJ7R.js.map} +0 -0
  286. /package/dist/{chunk-NYV4OKID.js.map → chunk-VYXKFADG.js.map} +0 -0
  287. /package/dist/{chunk-BT52HFOO.js.map → chunk-ZBYL3DRU.js.map} +0 -0
@@ -4,12 +4,12 @@ import {
4
4
  import {
5
5
  getTrackLabel
6
6
  } from "./chunk-ATKNEOEG.js";
7
- import {
8
- formatUITime
9
- } from "./chunk-C4AZD4KN.js";
10
7
  import {
11
8
  safeNum
12
9
  } from "./chunk-P67KKEHQ.js";
10
+ import {
11
+ formatUITime
12
+ } from "./chunk-C4AZD4KN.js";
13
13
  import {
14
14
  getUIOpt,
15
15
  getUniqueOpts,
@@ -179,4 +179,4 @@ var getSettingsCaptionsMenu = (plug) => {
179
179
  export {
180
180
  getSettingsCaptionsMenu
181
181
  };
182
- //# sourceMappingURL=chunk-Q7O4DCST.js.map
182
+ //# sourceMappingURL=chunk-23BU2AJD.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-M5UU3BRE.js";
7
7
  import {
8
8
  getCtlrIdx
9
- } from "./chunk-4CM4FZPI.js";
9
+ } from "./chunk-HFQF73T5.js";
10
10
  import {
11
11
  isArr
12
12
  } from "./chunk-VXOZUKN7.js";
@@ -63,4 +63,4 @@ __publicField(TimeTravelPlug, "BUILD", TIME_TRAVEL_BUILD);
63
63
  export {
64
64
  TimeTravelPlug
65
65
  };
66
- //# sourceMappingURL=chunk-2S65C2XE.js.map
66
+ //# sourceMappingURL=chunk-2XHRU5X4.js.map
@@ -1,3 +1,9 @@
1
+ import {
2
+ formatVttLine,
3
+ parseVttText,
4
+ srtToVtt,
5
+ stripTags
6
+ } from "./chunk-XLWSKWEW.js";
1
7
  import {
2
8
  clampRGBBri,
3
9
  convertToMonoChrome,
@@ -95,6 +101,14 @@ import {
95
101
  removeTracks,
96
102
  setCurrentTrack
97
103
  } from "./chunk-ATKNEOEG.js";
104
+ import {
105
+ clamp,
106
+ parseIfPercent,
107
+ parseRomanNum,
108
+ rotateAny,
109
+ safeNum,
110
+ stepNum
111
+ } from "./chunk-P67KKEHQ.js";
98
112
  import {
99
113
  createTimeRanges,
100
114
  formatMediaTime,
@@ -104,20 +118,6 @@ import {
104
118
  getMediaProgress,
105
119
  getMediaTime
106
120
  } from "./chunk-C4AZD4KN.js";
107
- import {
108
- formatVttLine,
109
- parseVttText,
110
- srtToVtt,
111
- stripTags
112
- } from "./chunk-XLWSKWEW.js";
113
- import {
114
- clamp,
115
- parseIfPercent,
116
- parseRomanNum,
117
- rotateAny,
118
- safeNum,
119
- stepNum
120
- } from "./chunk-P67KKEHQ.js";
121
121
  import {
122
122
  cleanKeyCombo,
123
123
  formatAction,
@@ -432,4 +432,4 @@ __export(utils_exports, {
432
432
  export {
433
433
  utils_exports
434
434
  };
435
- //# sourceMappingURL=chunk-3BLQPCWC.js.map
435
+ //# sourceMappingURL=chunk-5M2GEASF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GestureBasePin
3
- } from "./chunk-NYV4OKID.js";
3
+ } from "./chunk-VYXKFADG.js";
4
4
  import {
5
5
  GESTURE_BUILD,
6
6
  GESTURE_TOUCH_BUILD,
@@ -295,4 +295,4 @@ export {
295
295
  GestureWheelPin,
296
296
  GesturePlug
297
297
  };
298
- //# sourceMappingURL=chunk-3DIXFLZ4.js.map
298
+ //# sourceMappingURL=chunk-AFRJBIJ4.js.map
@@ -1,25 +1,25 @@
1
+ import {
2
+ ShakaTech
3
+ } from "./chunk-ITKEL5XR.js";
1
4
  import {
2
5
  VIMEO_EVENTS,
3
6
  VimeoTech
4
- } from "./chunk-NMA7IMZX.js";
7
+ } from "./chunk-DKDMJOZP.js";
5
8
  import {
6
9
  YouTubeTech
7
- } from "./chunk-HKZHYXKF.js";
10
+ } from "./chunk-D24YQBHG.js";
8
11
  import {
9
12
  DashTech
10
- } from "./chunk-TW6EJOBM.js";
13
+ } from "./chunk-BKE7OHV2.js";
11
14
  import {
12
15
  HLSTech
13
- } from "./chunk-DLY44YIV.js";
14
- import {
15
- ShakaTech
16
- } from "./chunk-I7MZGLSL.js";
16
+ } from "./chunk-PWTBWGHJ.js";
17
17
  import {
18
18
  IMATech
19
19
  } from "./chunk-5OXQBGAJ.js";
20
20
  import {
21
21
  HTML5Tech
22
- } from "./chunk-4CM4FZPI.js";
22
+ } from "./chunk-HFQF73T5.js";
23
23
  import {
24
24
  BaseTech,
25
25
  cacheKeys
@@ -46,4 +46,4 @@ __export(techs_exports, {
46
46
  export {
47
47
  techs_exports
48
48
  };
49
- //# sourceMappingURL=chunk-HHRR7R5I.js.map
49
+ //# sourceMappingURL=chunk-ASEYDONH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HTML5Tech
3
- } from "./chunk-4CM4FZPI.js";
3
+ } from "./chunk-HFQF73T5.js";
4
4
  import {
5
5
  MSE_ENABLED
6
6
  } from "./chunk-RNETXJ63.js";
@@ -90,7 +90,7 @@ var DashTech = class extends HTML5Tech {
90
90
  this.host.on(DASHJS.MediaPlayer.events.PERIOD_SWITCH_COMPLETED, () => {
91
91
  for (const t of ["text", "audio", "video"]) this.config.status[`${t}Tracks`] = inert(this.host.getTracksFor(t));
92
92
  this.config.status.levels = inert(this.host.getBitrateInfoListFor("video"));
93
- for (const T of ["TextTrack", "AudioTrack", "VideoTrack", "Level"]) silence(() => this.config.intent[`current${T}`] = this.config.intent[`current${T}`]), this.config.tick(`intent.current${T}`);
93
+ for (const T of ["TextTrack", "AudioTrack", "VideoTrack", "Level"]) silence(() => this.config.intent[`current${T}`] = this.config.intent[`current${T}`]), this.config.tick(`intent.current${T}`), T === "TextTrack" && silence(() => this.config.intent.textVisible = this.config.intent.textVisible);
94
94
  });
95
95
  this.host.on(DASHJS.MediaPlayer.events.ERROR, (ev) => {
96
96
  if (ev.error === "download") return this.ctlr.notice(`DASH Download error occurred: ${ev.event}`, "error", `Download failed for "${ev.event?.url}"`, true);
@@ -163,4 +163,4 @@ __publicField(DashTech, "techName", "dash");
163
163
  export {
164
164
  DashTech
165
165
  };
166
- //# sourceMappingURL=chunk-TW6EJOBM.js.map
166
+ //# sourceMappingURL=chunk-BKE7OHV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts/techs/dash.ts"],"sourcesContent":["import { HTML5Tech } from \"./html5\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { CtlrMedia, MediaFeatures } from \"@defs/contract\";\r\nimport { inert, type REvent } from \"sia-reactor\";\r\nimport { DASH_EXTENSIONS } from \"@utils/match\";\r\nimport { MSE_ENABLED } from \"@utils/env\";\r\nimport { capitalize, isSameURL } from \"@utils/str\";\r\nimport { isBool, isNum } from \"@utils/obj\";\r\nimport { loadResource } from \"@utils/dom\";\r\nimport type { TrackType } from \"@utils/media\";\r\nimport type * as dashjs from \"dashjs\";\r\nimport { silence } from \"sia-reactor/modules\";\r\n\r\ninterface DashMediaPlayer extends dashjs.MediaPlayerClass {\r\n getBitrateInfoListFor(type: \"video\" | \"audio\"): any[];\r\n setQualityFor(type: \"video\" | \"audio\", value: number): void;\r\n} // dashjs is notorious for stale types; not us\r\n\r\nexport class DashTech extends HTML5Tech {\r\n public static readonly techName: string = \"dash\";\r\n public static override canPlaySource(src: string): boolean {\r\n return MSE_ENABLED && DASH_EXTENSIONS.test(src);\r\n }\r\n public host: DashMediaPlayer | null = null;\r\n public hostSrc: string | null = null;\r\n protected readonly isAlien: boolean = true;\r\n constructor(ctlr: Controller, features?: MediaFeatures) {\r\n const isVid = ctlr.media.type === \"video\";\r\n // prettier-ignore\r\n super(ctlr, {\r\n // States & Lists\r\n sources: false, tracks: false, textTracks: true, audioTracks: true, videoTracks: isVid, levels: true, \r\n // States & Currents (DASH.js specific)\r\n currentAudioTrack: true, currentVideoTrack: isVid, currentLevel: true, autoLevel: true, \r\n // Status & Settings\r\n bandwidth: true, protection: true, ...features\r\n });\r\n ctlr.media.status.hostReady = false;\r\n }\r\n // --- API Injection ---\r\n protected async initHost(src = \"\"): Promise<void> {\r\n try {\r\n // Setup & Compatibility\r\n this.destroyDash();\r\n const DASHJS = ((window as any).dashjs ?? (await loadResource(window.TMG_DASH_JS_SRC!, \"script\"), (window as any).dashjs)) as typeof dashjs;\r\n if (!this.signal || this.signal?.aborted) return; // src may have changed during the `await`\r\n if (!DASHJS?.supportsMediaSource()) return this.ctlr.notice(\"DASH is not supported in this browser\", \"error\", null);\r\n const truth = this.config[this.ctlr.gospel];\r\n this.hostSrc = src;\r\n this.host = DASHJS.MediaPlayer().create() as DashMediaPlayer;\r\n if (this.config.type === \"audio\") this.host.updateSettings({ streaming: { abr: { autoSwitchBitrate: { video: false } }, trackSwitchMode: { audio: \"alwaysReplace\", video: \"alwaysReplace\" }, buffer: { fastSwitchEnabled: true } } }); // DASH.js to replace the audio to avoid buffer finish delays\r\n // Status & State (Bulk Wiring)\r\n this.host.on(DASHJS.MediaPlayer.events.STREAM_INITIALIZED, () => {\r\n this.config.status.isLive = this.host!.isDynamic();\r\n const autoSwitch = (this.host!.getSettings() as any).streaming?.abr?.autoSwitchBitrate;\r\n this.config.state.autoLevel = isBool(autoSwitch) ? autoSwitch : autoSwitch?.video ?? true; // Fallback logic for v3 vs v4+ API shapes\r\n for (const t of [\"text\", \"audio\", \"video\"] as const) this.config.status[`${t}Tracks`] = inert(this.host!.getTracksFor(t));\r\n this.config.status.levels = inert(this.host!.getBitrateInfoListFor(\"video\"));\r\n this.config.status.hostReady = true;\r\n });\r\n this.host.on(DASHJS.MediaPlayer.events.TRACK_CHANGE_RENDERED, (ev: any) => {\r\n const i = this.host?.getTracksFor(ev.mediaType)?.findIndex((t) => t.id === ev.newMediaInfo?.id || t.index === ev.newMediaInfo?.index);\r\n this.config.state[`current${capitalize(ev.mediaType) as TrackType}Track`] = i ?? -1;\r\n });\r\n this.host.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_RENDERED, (ev: any) => ev.mediaType === \"video\" && (this.config.state.currentLevel = ev.newQuality ?? ev.index)); // v4+ uses newQuality, v3 uses index\r\n this.host.on(DASHJS.MediaPlayer.events.FRAGMENT_LOADING_COMPLETED, (ev) => this.ctlr.throttle(\"dashBandWidthing\", () => ev.request?.mediaType === \"video\" && (this.config.status.bandwidth = Math.round(this.host!.getAverageThroughput(\"video\") * 1000)), 2000)); // kbps to bps\r\n this.host.on(DASHJS.MediaPlayer.events.EVENT_MODE_ON_RECEIVE, (ev: any) => {\r\n if (!this.config.settings.metadata.allowMediaOverride) return;\r\n if (!ev.schemeIdUri?.includes(\"chapter\") && !ev.schemeIdUri?.includes(\"title\")) return;\r\n const chapters = this.config.settings.metadata.chapterInfo;\r\n if (chapters.find((c) => c.startTime === ev.presentationTime)) return;\r\n chapters.push({ title: new TextDecoder(\"utf-8\").decode(ev.messageData).replace(/\\0/g, \"\").trim(), startTime: ev.presentationTime });\r\n this.config.settings.metadata.chapterInfo = chapters.sort((a, b) => a.startTime - b.startTime);\r\n });\r\n this.host.on(DASHJS.MediaPlayer.events.PERIOD_SWITCH_COMPLETED, () => {\r\n for (const t of [\"text\", \"audio\", \"video\"] as const) this.config.status[`${t}Tracks`] = inert(this.host!.getTracksFor(t));\r\n this.config.status.levels = inert(this.host!.getBitrateInfoListFor(\"video\"));\r\n for (const T of [\"TextTrack\", \"AudioTrack\", \"VideoTrack\", \"Level\"] as const) silence(() => (this.config.intent[`current${T}`] = this.config.intent[`current${T}`])), this.config.tick(`intent.current${T}`), T === \"TextTrack\" && silence(() => (this.config.intent.textVisible = this.config.intent.textVisible)); // #RE-TRIGGER: sync intent resolution\r\n }); // Dynamic Track List Updates (Mid-stream changes, e.g. multi-period live streams)\r\n this.host.on(DASHJS.MediaPlayer.events.ERROR, (ev) => {\r\n if (ev.error === \"download\") return this.ctlr.notice(`DASH Download error occurred: ${ev.event}`, \"error\", `Download failed for \"${ev.event?.url}\"`, true);\r\n ev.error === \"mediasource\" && this.handleHostError(ev);\r\n });\r\n this.config.settings.protection && this.host.setProtectionData(this.config.settings.protection);\r\n this.host.initialize(this.el, src, truth.autoplay || !truth.paused, truth.currentTime);\r\n } catch (err) {\r\n this.handleHostError(err);\r\n }\r\n }\r\n // ===========================================================================\r\n // WIRING OVERRIDES\r\n // ===========================================================================\r\n protected override wireMediaTracks(): void {}\r\n protected override wireCurrentTrack(type: TrackType, _type = type.toLowerCase() as Lowercase<TrackType>): void {\r\n this.config.set(`intent.current${type}Track`, (term) => (isNum(term) ? term : (this.config.status[`${_type}Tracks`] as dashjs.MediaInfo[]).findIndex((t) => t.id === term || t.lang === term)), { signal: this.signal }); // #VALIDATOR: intent type conformation\r\n this.config.on(`intent.current${type}Track`, (e) => this.handleCurrentHostTrackIntent(e, _type), this.evtOpts.CONFIG);\r\n }\r\n protected wireCurrentLevel(): void {\r\n this.config.set(\"intent.currentLevel\", (term) => (isNum(term) ? term : Number(term)), { signal: this.signal }); // #VALIDATOR: intent type conformation\r\n this.config.on(\"intent.currentLevel\", this.handleCurrentLevelIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wireAutoLevel(): void {\r\n this.config.on(\"intent.autoLevel\", this.handleAutoLevelIntent, this.evtOpts.CONFIG);\r\n }\r\n // ===========================================================================\r\n // HANDLERS\r\n // ===========================================================================\r\n protected override handleSrcIntent(e: REvent<CtlrMedia, \"intent.src\">): void {\r\n if (e.resolved) return;\r\n !isSameURL(this.hostSrc, e.value) && this.initHost(e.value);\r\n e.resolve(this.name);\r\n }\r\n protected handleCurrentLevelIntent(e: REvent<CtlrMedia, \"intent.currentLevel\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"hostReady\", e, () => (e.value as number) > -1 && (e.value as number) < this.config.status.levels.length && (this.useAutoLevel(), this.host!.setQualityFor(\"video\", e.value as number))); // #BULLET-PROOF: must comes clutch // #VALIDATED: mediated for cast conformity; no-opy\r\n e.resolve(this.name);\r\n }\r\n protected handleAutoLevelIntent(e: REvent<CtlrMedia, \"intent.autoLevel\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"hostReady\", e, () => this.useAutoLevel(e.value));\r\n e.resolve(this.name);\r\n }\r\n protected useAutoLevel(value = false): void {\r\n this.host!.updateSettings({ streaming: { abr: { autoSwitchBitrate: { video: value } } } });\r\n this.config.state.autoLevel = value;\r\n }\r\n protected handleCurrentHostTrackIntent(e: REvent<CtlrMedia, `intent.current${TrackType}Track`>, type: Lowercase<TrackType>): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"hostReady\", e, (track = this.config.status[`${type}Tracks`][e.value as number] as dashjs.MediaInfo | undefined) => track && this.host!.setCurrentTrack(track)); // #VALIDATED: mediated for cast conformity; no-opy\r\n e.resolve(this.name);\r\n }\r\n protected handleHostError(err: any): void {\r\n if (!this.signal || this.signal?.aborted) return;\r\n this.config.status.error = { ...err, code: err?.code ?? 5, message: err.error ?? err.message ?? \"Fatal DASH error\" }; // 5: MEDIA_ERR_UNKNOWN to allow mssg fallback\r\n this.config.status.waiting = false;\r\n }\r\n // --- Lifecycle ---\r\n protected destroyDash(): void {\r\n this.host?.reset(), (this.host = null), (this.config.status.hostReady = false);\r\n }\r\n protected override onDestroy(): void {\r\n this.destroyDash(), super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface TechRegistryMap {\r\n dash: typeof DashTech;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -4,12 +4,12 @@ import {
4
4
  import {
5
5
  BasePlug
6
6
  } from "./chunk-M5UU3BRE.js";
7
- import {
8
- formatUITime
9
- } from "./chunk-C4AZD4KN.js";
10
7
  import {
11
8
  IconRegistry
12
9
  } from "./chunk-ATGOEAKN.js";
10
+ import {
11
+ formatUITime
12
+ } from "./chunk-C4AZD4KN.js";
13
13
  import {
14
14
  __publicField
15
15
  } from "./chunk-UVKRO5ER.js";
@@ -50,4 +50,4 @@ __publicField(SleepTimerPlug, "BUILD", SLEEP_TIMER_BUILD);
50
50
  export {
51
51
  SleepTimerPlug
52
52
  };
53
- //# sourceMappingURL=chunk-3ITV4OCM.js.map
53
+ //# sourceMappingURL=chunk-C3D4UUZT.js.map
@@ -8,14 +8,14 @@ import {
8
8
  import {
9
9
  BaseTech
10
10
  } from "./chunk-LTQZXT7J.js";
11
+ import {
12
+ clamp
13
+ } from "./chunk-P67KKEHQ.js";
11
14
  import {
12
15
  createTimeRanges,
13
16
  getMediaMax,
14
17
  getMediaMin
15
18
  } from "./chunk-C4AZD4KN.js";
16
- import {
17
- clamp
18
- } from "./chunk-P67KKEHQ.js";
19
19
  import {
20
20
  createEl,
21
21
  enterFullscreen,
@@ -130,7 +130,7 @@ var YouTubeTech = class extends BaseTech {
130
130
  onPlaybackRateChange: (e) => void (this.config.state.playbackRate = e.data),
131
131
  onApiChange: (_, tracks = this.host.getOption("captions", "tracklist")) => {
132
132
  if (tracks) this.config.status.textTracks = inert(tracks);
133
- if (tracks) silence(() => this.config.intent.currentTextTrack = this.config.intent.currentTextTrack), this.config.tick("intent.currentTextTrack");
133
+ if (tracks) silence(() => this.config.intent.currentTextTrack = this.config.intent.currentTextTrack), this.config.tick("intent.currentTextTrack"), silence(() => this.config.intent.textVisible = this.config.intent.textVisible);
134
134
  this.host.setOption("captions", "fontSize", this.settings.captions.font.size.value / 100);
135
135
  },
136
136
  // Fired when modules like Captions load
@@ -277,7 +277,7 @@ var YouTubeTech = class extends BaseTech {
277
277
  e.value === -1 ? this.host.unloadModule("captions") : this.host.loadModule("captions");
278
278
  const track = this.config.status.textTracks[e.value];
279
279
  if (track) this.host.setOption("captions", "track", { languageCode: track.srclang }), this.config.state.currentTextTrack = e.value;
280
- silence(() => this.config.intent.textVisible = e.value === -1 ? false : this.config.intent.textVisible);
280
+ this.el.toggleAttribute("data-hide-ui", !this.config.state.controls && (this.media.state.textVisible = e.value === -1 ? false : this.media.intent.textVisible));
281
281
  });
282
282
  e.resolve(this.name);
283
283
  }
@@ -391,4 +391,4 @@ __publicField(YouTubeTech, "techName", "youtube");
391
391
  export {
392
392
  YouTubeTech
393
393
  };
394
- //# sourceMappingURL=chunk-HKZHYXKF.js.map
394
+ //# sourceMappingURL=chunk-D24YQBHG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts/techs/youtube.ts"],"sourcesContent":["import { BaseTech } from \"./base\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { CtlrMedia, MediaFeatures } from \"@defs/contract\";\r\nimport { inert, type REvent } from \"sia-reactor\";\r\nimport { createEl, enterFullscreen, exitFullscreen, loadResource, queryFullscreenEl, supportsFullscreen } from \"@utils/dom\";\r\nimport { createTimeRanges } from \"@utils/time\";\r\nimport { MATCH_ID_YOUTUBE, MATCH_URL_YOUTUBE } from \"@utils/match\";\r\nimport { isSameURL } from \"@utils/str\";\r\nimport { isFunc, isNum } from \"@utils/obj\";\r\nimport { setTimeout, setInterval } from \"@utils/fn\";\r\nimport { clamp } from \"@utils/num\";\r\nimport { silence } from \"sia-reactor/modules\";\r\nimport { getMediaMax, getMediaMin } from \"@utils/time\";\r\nimport { globalState } from \"@tools/runtime\";\r\nimport { fanout } from \"sia-reactor/utils\";\r\n\r\nexport class YouTubeTech extends BaseTech<HTMLIFrameElement> {\r\n public static readonly techName: string = \"youtube\";\r\n public static override canPlaySource(src: string): boolean {\r\n return MATCH_URL_YOUTUBE.test(src);\r\n }\r\n public host: YT.Player | null = null;\r\n public hostSrc: string | null = null;\r\n public hostDiv: HTMLDivElement;\r\n public hostHTML = `<iframe class=\"tmg-foreign-host tmg-youtube-host\" credentialless=\"true\" referrerpolicy=\"strict-origin-when-cross-origin\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen; web-share;\"></iframe>`;\r\n public intervalId = -1;\r\n constructor(ctlr: Controller, features?: MediaFeatures) {\r\n // prettier-ignore\r\n super(ctlr, {\r\n // Engine Inputs\r\n volume: true, muted: true, playbackRate: true,\r\n // Modes\r\n fullscreen: supportsFullscreen(),\r\n // States\r\n autoplay: true, loop: true, playsInline: true, controls: true, crossOrigin: true,\r\n // Lists\r\n textTracks: true, levels: true, \r\n // Currents\r\n currentChapter: true, currentTextTrack: true, currentLevel: true, textVisible: true, autoLevel: true,\r\n // Infos\r\n readyState: true, error: true, waiting: true, seeking: true, buffered: true, seekable: true,\r\n loadedMetadata: true, loadedData: true, canPlay: true, \r\n // Settings\r\n liveTolerance: true, minDVRWindow: true, idleWaiting: true, timeShiftPoll: true, ...features\r\n });\r\n ctlr.config.courtesy = \"YouTube\"; // Don't say, I never did nothing for you\r\n this.element = this.hostDiv = createEl(\"div\", { className: `tmg-host-div ${this.el.className}`, innerHTML: `<div class=\"tmg-host-content\">${this.hostHTML}</div>` }) as HTMLIFrameElement; // for tech.element replaceWith\r\n ctlr.media.status.hostReady = false;\r\n }\r\n // --- API Injection ---\r\n protected async initHost(url: string, id = \"\", retries = 0): Promise<void> {\r\n try {\r\n const truth = this.config[this.ctlr.gospel];\r\n if (!isFunc(this.host?.loadVideoById)) this.destroyHost();\r\n else return (this.hostSrc = url), (this.reInitInfo = this.config.status.hostReady = true), this.host.loadVideoById(id, truth.currentTime, this.config.status.levels[truth.currentLevel as number] || \"default\");\r\n // Setup & Bulk Wiring\r\n if (!window.YT) await loadResource(window.TMG_YT_API_SRC!, \"script\"), await new Promise<void>((res, _, _prev = (window as any).onYouTubeIframeAPIReady) => (window.YT?.Player ? res() : ((window as any).onYouTubeIframeAPIReady = () => (_prev?.(), res()))));\r\n if (!this.signal || this.signal?.aborted) return;\r\n this.hostSrc = url;\r\n this.element = this.hostDiv.querySelector(\"iframe\")!;\r\n this.el.src = `https://www.youtube${truth.crossOrigin === \"use-credentials\" ? \"\" : \"-nocookie\"}.com/embed/${id}?${new URLSearchParams({ autoplay: +(truth.autoplay || !truth.paused), controls: +truth.controls, playsinline: +truth.playsInline, loop: +truth.loop, start: truth.currentTime, rel: +truth.controls, modestbranding: +truth.controls, fs: +truth.controls, iv_load_policy: truth.controls ? 1 : 3, cc_load_policy: \"1\", disablekb: \"1\", enablejsapi: \"1\", origin: window.location.origin } as any).toString()}`;\r\n this.el.toggleAttribute(\"data-hide-ui\", !truth.controls);\r\n (this.el as any).tmgPlayer = this.config.element.tmgPlayer; // ref is maintained\r\n this.host = new window.YT.Player(this.el, {\r\n events: {\r\n onReady: () => {\r\n if (!isFunc(this.host?.getPlayerState) && retries < this.hostAttempts) return this.ctlr.log(`Retrying host load for \"${url}\" (${++retries}/${this.hostAttempts})`, \"warn\"), this.initHost(url, id, retries); // #PAMPERING: observed quirk where YT API is broken\r\n this.config.status.hostReady = true;\r\n this.setInitInfo();\r\n },\r\n onStateChange: this.handleHostStateChange,\r\n onPlaybackQualityChange: (e: { data: string }): void => {\r\n this.config.status.levels = inert(this.host!.getAvailableQualityLevels().filter((q: string) => q !== \"auto\"));\r\n this.config.state.currentLevel = (this.config.status.levels as YT.SuggestedVideoQuality[]).findIndex((q) => q === e.data);\r\n this.config.state.autoLevel = this.ABRFlag || e.data === \"auto\";\r\n },\r\n onPlaybackRateChange: (e: { data: number }): void => void (this.config.state.playbackRate = e.data),\r\n onApiChange: (_, tracks = (this.host as any).getOption(\"captions\", \"tracklist\")) => {\r\n if (tracks) this.config.status.textTracks = inert(tracks); // .map((t: any) => ({ id: `yt-cc-${t.languageCode}`, kind: t.vssId?.startsWith(\"a.\") ? \"subtitles\" : \"captions\", label: t.displayName || t.languageName, srclang: t.languageCode, ...t }))\r\n if (tracks) silence(() => (this.config.intent.currentTextTrack = this.config.intent.currentTextTrack)), this.config.tick(\"intent.currentTextTrack\"), silence(() => (this.config.intent.textVisible = this.config.intent.textVisible)); // #RE-TRIGGER: sync intent resolution\r\n (this.host as any).setOption(\"captions\", \"fontSize\", this.settings.captions.font.size.value / 100);\r\n }, // Fired when modules like Captions load\r\n onError: this.handleHostError,\r\n },\r\n });\r\n } catch (err: any) {\r\n this.handleHostError(err);\r\n }\r\n }\r\n public hostAttempts = 3;\r\n // ===========================================================================\r\n // WIRING (Connections Only)\r\n // ===========================================================================\r\n // --- Core Wiring ---\r\n protected override wireSrc(): void {\r\n this.config.on(\"intent.src\", this.handleSrcIntent, this.evtOpts.CONFIG);\r\n }\r\n protected override wireCurrentTime(): void {\r\n this.config.get(\"state.currentTime\", (v) => (this.config.status.readyState < 1 || this.config.status.ended ? v : this.host?.getCurrentTime?.()), { signal: this.signal }); // #VIRTUAL: reliable return value, if faster than poll\r\n this.config.on(\"intent.currentTime\", this.handleCurrentTimeIntent, this.evtOpts.CONFIG);\r\n }\r\n protected override wireDuration(): void {} // Polled dynamically in sync loop; YT emits no explicit duration event\r\n protected override wirePaused(): void {\r\n this.config.on(\"intent.paused\", this.handlePausedIntent, this.evtOpts.CONFIG);\r\n }\r\n protected override wireEnded(): void {} // Handled strictly within handleHostStateChange\r\n protected override wireFeatures(): void {\r\n super.wireFeatures();\r\n // Ctlr Config Listners\r\n this.ctlr.config.on(\"settings.captions.font.size.value\", ({ value }) => (this.host as any)?.setOption(\"captions\", \"fontSize\", value / 100), { signal: this.signal });\r\n }\r\n // --- Engine Inputs Wiring ---\r\n protected wireVolume(): void {\r\n this.config.on(\"intent.volume\", this.handleVolumeIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wireMuted(): void {\r\n this.config.on(\"intent.muted\", this.handleMutedIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wirePlaybackRate(): void {\r\n this.config.on(\"intent.playbackRate\", this.handlePlaybackRateIntent, this.evtOpts.CONFIG);\r\n }\r\n // --- Presentation Modes Wiring ---\r\n protected wireFullscreen(): void {\r\n globalState.watch(\"inFullscreen\", this.setFullscreenChangeState, this.evtOpts.CONFIG);\r\n this.config.on(\"intent.fullscreen\", this.handleFullscreenIntent, this.evtOpts.CONFIG);\r\n }\r\n // --- Attributes Wiring ---\r\n protected wireLoop(): void {\r\n this.config.on(\"intent.loop\", this.handleLoopIntent, this.evtOpts.CONFIG);\r\n }\r\n // --- Track Switching Wiring ---\r\n protected wireCurrentTextTrack(): void {\r\n this.config.set(\"intent.currentTextTrack\", (term) => (isNum(term) ? term : (this.config.status.textTracks as any[]).findIndex((t) => t.vssId === term || t.displayName === term || t.languageCode === term)), { signal: this.signal }); // #VALIDATOR: intent type conformation\r\n this.config.on(\"intent.currentTextTrack\", this.handleCurrentTextTrackIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wireCurrentLevel(): void {\r\n this.config.set(\"intent.currentLevel\", (term) => (isNum(term) ? term : Number(term)), { signal: this.signal }); // #VALIDATOR: intent type conformation\r\n this.config.on(\"intent.currentLevel\", this.handleCurrentLevelIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wireTextVisible(): void {\r\n this.config.on(\"intent.textVisible\", this.handleTextVisibleIntent, this.evtOpts.CONFIG);\r\n }\r\n protected wireAutoLevel(): void {\r\n this.config.on(\"intent.autoLevel\", this.handleAutoLevelIntent, this.evtOpts.CONFIG);\r\n }\r\n // ===========================================================================\r\n // HANDLERS (The Logic - Auto-Guarded)\r\n // ===========================================================================\r\n // --- Core Intents ---\r\n protected handleSrcIntent(e: REvent<CtlrMedia, \"intent.src\">): void {\r\n if (e.resolved) return;\r\n if (isSameURL(this.hostSrc, e.value)) return void e.resolve(this.name);\r\n const id = e.value.match(MATCH_ID_YOUTUBE)?.[1];\r\n this.setAutoResPoster(id);\r\n this.flush(), this.initHost(e.value, id);\r\n e.resolve(this.name);\r\n }\r\n protected handleCurrentTimeIntent(e: REvent<CtlrMedia, \"intent.currentTime\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, (min = getMediaMin(this.config), max = getMediaMax(this.config), val = clamp(min, e.value, max), finite = Number.isFinite(val), prev = this.config.state.currentTime) => {\r\n this.config.status.seeking = true;\r\n if (e.value < min || e.value > max || !finite) e.reject(this.name); // Out of bounds\r\n if (!finite) return;\r\n this.host!.seekTo(val, true), this.config.state.paused && this.host!.pauseVideo(); // #PAMPERING: observed quirk\r\n const check = setInterval(() => (!this.config.state.paused || this.config.state.currentTime !== prev) && (clearInterval(check), this.syncCurrentStats(), (this.config.status.seeking = false)), this.config.settings.timeShiftPoll, this.signal); // YT has no \"seeked\" event, so we poll for the time shift\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handlePausedIntent(e: REvent<CtlrMedia, \"intent.paused\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, () => (e.value ? this.host!.pauseVideo() : this.host!.playVideo(), this.config.status.ended && setTimeout(() => this.host!.playVideo(), 0, this.signal))); // #PAMPERING: observed quirk\r\n e.resolve(this.name);\r\n }\r\n // --- Feature States ---\r\n protected setFullscreenChangeState(docInFs?: boolean): void {\r\n this.config.state.fullscreen = docInFs ? queryFullscreenEl() === this.el : false;\r\n }\r\n // --- Feature Intents ---\r\n protected handleVolumeIntent(e: REvent<CtlrMedia, \"intent.volume\">): void {\r\n if (e.resolved) return;\r\n if (e.value < 0 || e.value > 100) e.reject(this.name); // Out of bounds\r\n this.ctlr.when(\"hostReady\", e, (val = clamp(0, e.value, 100)) => {\r\n this.host!.setVolume(val);\r\n this.config.state.volume = val;\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handleMutedIntent(e: REvent<CtlrMedia, \"intent.muted\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"hostReady\", e, () => {\r\n e.value ? this.host!.mute() : this.host!.unMute();\r\n this.config.state.muted = e.value;\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handlePlaybackRateIntent(e: REvent<CtlrMedia, \"intent.playbackRate\">): void {\r\n if (e.resolved) return;\r\n if (e.value < 0.25 || e.value > 2) e.reject(this.name); // Out of bounds\r\n this.ctlr.when(\"hostReady\", e, (val = clamp(0.25, e.value, 2)) => {\r\n this.host!.setPlaybackRate(val);\r\n this.config.state.playbackRate = val;\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handleFullscreenIntent(e: REvent<CtlrMedia, \"intent.fullscreen\">): void {\r\n if (e.resolved) return;\r\n (e.value ? enterFullscreen(this.el) : exitFullscreen(this.el))?.catch(this.ctlr.notice);\r\n e.resolve(this.name);\r\n }\r\n protected handleLoopIntent(e: REvent<CtlrMedia, \"intent.loop\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"hostReady\", e, () => {\r\n this.host!.setLoop(e.value);\r\n this.config.state.loop = e.value;\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handleCurrentTextTrackIntent(e: REvent<CtlrMedia, \"intent.currentTextTrack\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, () => {\r\n e.value === -1 ? (this.host as any).unloadModule(\"captions\") : (this.host as any).loadModule(\"captions\");\r\n const track = this.config.status.textTracks[e.value as number]; // #VALIDATED: mediated for cast conformity; no-opy\r\n if (track) (this.host as any).setOption(\"captions\", \"track\", { languageCode: track.srclang }), (this.config.state.currentTextTrack = e.value as number);\r\n this.el.toggleAttribute(\"data-hide-ui\", !this.config.state.controls && (this.media.state.textVisible = e.value === -1 ? false : this.media.intent.textVisible)); // #UX boost: not a drifter\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handleCurrentLevelIntent(e: REvent<CtlrMedia, \"intent.currentLevel\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, (quality = (this.config.status.levels as YT.SuggestedVideoQuality[])[e.value as number]) => quality && (this.useAutoLevel(), this.host!.setPlaybackQuality(quality))); // #VALIDATED: mediated for cast conformity; no-opy // #BULLET-PROOF: must comes clutch\r\n e.resolve(this.name);\r\n }\r\n protected handleTextVisibleIntent(e: REvent<CtlrMedia, \"intent.textVisible\">, idx = this.config[this.ctlr.gospel].currentTextTrack): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, (iidx = this.config.intent.currentTextTrack) => {\r\n e.value && this.config.status.textTracks.length && idx === -1 && silence(() => (this.config.intent.currentTextTrack = iidx !== -1 ? iidx : 0)); // #BULLET-PROOF: should come clutch\r\n this.el.toggleAttribute(\"data-hide-ui\", !this.config.state.controls && !(e.value && (this.host as any).getOptions().includes(\"captions\")));\r\n this.config.state.textVisible = e.value;\r\n });\r\n e.resolve(this.name);\r\n }\r\n protected handleAutoLevelIntent(e: REvent<CtlrMedia, \"intent.autoLevel\">): void {\r\n if (e.resolved) return;\r\n this.ctlr.when(\"loadedMetadata\", e, () => this.useAutoLevel(e.value));\r\n e.resolve(this.name);\r\n }\r\n protected useAutoLevel(value = false): void {\r\n this.host!.setPlaybackQuality((this.ABRFlag = value) ? \"default\" : (this.config.status.levels as YT.SuggestedVideoQuality[])[0]);\r\n }\r\n private ABRFlag = true;\r\n // --- API Logic ---\r\n protected handleHostStateChange(e: { data: number }): void {\r\n this.reInitInfo && this.setInitInfo();\r\n const { state: s, status: st, settings: set } = this.config,\r\n STATE = window.YT.PlayerState;\r\n // console.log(\"YouTube Event:\", e);\r\n switch (e.data) {\r\n case STATE.UNSTARTED:\r\n silence(() => (this.config.intent.currentTime = clamp(0, this.config.state.currentTime, this.config.status.duration - 1))); // #PAMPERING: observed quirk\r\n break;\r\n case STATE.CUED:\r\n st.duration = this.host!.getDuration();\r\n st.readyState = 1; // HAVE METADATA\r\n break;\r\n case STATE.BUFFERING:\r\n st.waiting = set.idleWaiting || !s.paused;\r\n st.readyState = 2; // HAVE CURRENT DATA\r\n break;\r\n case STATE.PLAYING:\r\n st.error = null; // UX boost\r\n st.ended = st.seeking = st.waiting = s.paused = false;\r\n st.duration = this.host!.getDuration();\r\n st.isLive = (this.host!.getVideoData() as any).isLive ?? false; // #PAMPERING: observed quirk\r\n st.canPlay = st.loadedData = true;\r\n st.readyState = 4; // HAVE ENOUGH DATA\r\n this.syncMetadata(), clearInterval(this.intervalId), (this.intervalId = setInterval(this.syncCurrentStats, set.timeShiftPoll, this.signal)); // updates 10 times a sec\r\n break;\r\n case STATE.PAUSED:\r\n case STATE.ENDED:\r\n s.paused = true;\r\n st.ended = e.data === STATE.ENDED;\r\n st.seeking = false;\r\n if (!set.idleWaiting) st.waiting = false;\r\n clearInterval(this.intervalId), this.syncCurrentStats();\r\n break;\r\n }\r\n }\r\n protected handleHostError(err: { data?: number; message?: string }): void {\r\n if (!this.signal || this.signal?.aborted) return;\r\n let msg = \"Unknown YouTube Error\";\r\n if (err.data === 2 || err.data === 100) msg = \"YouTube Video Not Found\";\r\n else if (err.data === 101 || err.data === 150) msg = \"Playback disabled by owner\";\r\n else if (err.data === 5) msg = \"HTML5 Player Error\";\r\n this.config.status.error = { ...err, code: err.data, message: err.message || msg };\r\n this.config.status.waiting = false;\r\n }\r\n protected syncCurrentStats(): void {\r\n if (!this.host) return;\r\n const { status: st, settings: set, state: s } = this.config;\r\n s.currentTime = st.ended ? st.duration : this.host!.getCurrentTime(); // they can be lazy\r\n st.buffered = createTimeRanges([[0, this.host!.getVideoLoadedFraction() * st.duration]]);\r\n st.seekable = createTimeRanges([[st.isLive ? Math.max(0, st.duration - 43200) : 0, st.duration]]); // yt has a 12-Hour max DVR\r\n if (st.isLive) {\r\n st.canSeekLive = true;\r\n st.duration = Math.max(0, this.host!.getDuration() - 3600); // yt has a 1-Hour latency approx.\r\n s.live = st.duration - s.currentTime <= set.liveTolerance;\r\n } else if (st.duration) st.ended = s.currentTime === st.duration; // UX boost\r\n }\r\n public syncMetadata(data = this.host!.getVideoData(), meta = this.config.settings.metadata): void {\r\n if (data && meta.allowMediaOverride) fanout(meta, { title: data.title && data.title !== meta.title ? data.title : undefined, artist: data.author && data.author !== meta.artist ? data.author : undefined }, { skipUndef: true, txLabel: \"YouTube Metadata Override\" });\r\n }\r\n // --- Lifecycle ---\r\n protected reInitInfo = false;\r\n protected setInitInfo(data = this.config.status.hostReady && this.host!.getVideoData(), isShort = this.hostSrc?.includes(\"/shorts/\")): void {\r\n if (!this.host || !data || (this.reInitInfo = false)) return;\r\n // Status (Infos & Lists)\r\n this.config.status.duration = this.host.getDuration();\r\n this.config.status.isLive = (data as any).isLive || this.config.status.duration === 0; // #PAMPERING: observed quirk\r\n (this.config.status.videoWidth = isShort ? 1080 : 1920), (this.config.status.videoHeight = isShort ? 1920 : 1080);\r\n this.config.status.textTracks = []; // wait for API change\r\n this.config.status.waiting = false;\r\n this.config.status.readyState = 1; // HAVE METADATA\r\n this.config.status.loadedMetadata = true;\r\n // Settings & Post-Init\r\n this.syncCurrentStats(), this.syncMetadata(data);\r\n }\r\n public setAutoResPoster(id = \"\", hq = `https://img.youtube.com/vi/${id}/hqdefault.jpg`, maxres = `https://img.youtube.com/vi/${id}/maxresdefault.jpg`): void {\r\n if (!this.config.settings.metadata.allowMediaOverride) return;\r\n const seq = ++this.posterSeq,\r\n img = createEl(\"img\", { src: hq, onload: () => seq === this.posterSeq && (this.config.state.poster = img.naturalWidth <= 120 ? hq : maxres), onerror: () => seq === this.posterSeq && (this.config.state.poster = hq) }); // Preload HQ for immediate use, then conditionally switch to MX if valid\r\n }\r\n private posterSeq = 0;\r\n protected destroyHost(): void {\r\n if (!this.host) return;\r\n this.host.destroy(), (this.host = null);\r\n (this.element = this.hostDiv as HTMLIFrameElement).innerHTML = `<div class=\"tmg-host-content\">${this.hostHTML}</div>`; // Reset to placeholder\r\n }\r\n protected override onDestroy(): void {\r\n this.destroyHost(), super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface TechRegistryMap {\r\n youtube: typeof YouTubeTech;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Timeline
3
- } from "./chunk-CEWJEP7C.js";
3
+ } from "./chunk-N7CQCEXK.js";
4
4
  import {
5
5
  VolumeControl
6
6
  } from "./chunk-GQHGTZFZ.js";
@@ -10,21 +10,9 @@ import {
10
10
  import {
11
11
  RangeInput
12
12
  } from "./chunk-CV3LLX2S.js";
13
- import {
14
- TimeButton
15
- } from "./chunk-TPD5CFCJ.js";
16
- import {
17
- TimeAndDurationButton
18
- } from "./chunk-FEEDWNOZ.js";
19
13
  import {
20
14
  VoiceButton
21
15
  } from "./chunk-3FLHX7NS.js";
22
- import {
23
- NextButton
24
- } from "./chunk-BGTZ7GIR.js";
25
- import {
26
- ObjectFitButton
27
- } from "./chunk-YC6OBLR5.js";
28
16
  import {
29
17
  PictureInPictureButton
30
18
  } from "./chunk-7N5I5GSA.js";
@@ -44,11 +32,11 @@ import {
44
32
  TheaterButton
45
33
  } from "./chunk-NDTEBTIH.js";
46
34
  import {
47
- ChapterButton
48
- } from "./chunk-5WSBZ3H7.js";
35
+ TimeButton
36
+ } from "./chunk-TPD5CFCJ.js";
49
37
  import {
50
- DurationButton
51
- } from "./chunk-UFZJSJ7J.js";
38
+ TimeAndDurationButton
39
+ } from "./chunk-FEEDWNOZ.js";
52
40
  import {
53
41
  ExpandMiniplayerButton
54
42
  } from "./chunk-X465WVO3.js";
@@ -68,11 +56,11 @@ import {
68
56
  Meta
69
57
  } from "./chunk-UD32MCQW.js";
70
58
  import {
71
- AirPlayButton
72
- } from "./chunk-QRUMXFMQ.js";
59
+ NextButton
60
+ } from "./chunk-BGTZ7GIR.js";
73
61
  import {
74
- Backward10Button
75
- } from "./chunk-YVLVXUSF.js";
62
+ ObjectFitButton
63
+ } from "./chunk-YC6OBLR5.js";
76
64
  import {
77
65
  BigNextButton
78
66
  } from "./chunk-M5BXAC4Z.js";
@@ -91,6 +79,12 @@ import {
91
79
  import {
92
80
  CastButton
93
81
  } from "./chunk-QWRPZBDH.js";
82
+ import {
83
+ ChapterButton
84
+ } from "./chunk-5WSBZ3H7.js";
85
+ import {
86
+ DurationButton
87
+ } from "./chunk-UFZJSJ7J.js";
94
88
  import {
95
89
  AirPlayPlaceholder
96
90
  } from "./chunk-BXVTN57I.js";
@@ -104,17 +98,23 @@ import {
104
98
  PiPPlaceholder
105
99
  } from "./chunk-YKB2T5FQ.js";
106
100
  import {
107
- Buffer
108
- } from "./chunk-KBCRTZLG.js";
101
+ AirPlayButton
102
+ } from "./chunk-QRUMXFMQ.js";
103
+ import {
104
+ Backward10Button
105
+ } from "./chunk-YVLVXUSF.js";
109
106
  import {
110
107
  CaptionsView
111
- } from "./chunk-TKLVM4YO.js";
108
+ } from "./chunk-JIXSA7D5.js";
112
109
  import {
113
110
  ScreenLockButton
114
111
  } from "./chunk-QEKYGFJI.js";
115
112
  import {
116
113
  ComponentRegistry
117
114
  } from "./chunk-ATGOEAKN.js";
115
+ import {
116
+ Buffer
117
+ } from "./chunk-KBCRTZLG.js";
118
118
 
119
119
  // src/ts/components/z-register.ts
120
120
  for (const Comp of [
@@ -159,4 +159,4 @@ for (const Comp of [
159
159
  ErrorPlaceholder
160
160
  ])
161
161
  ComponentRegistry.register(Comp);
162
- //# sourceMappingURL=chunk-C4QNF3M4.js.map
162
+ //# sourceMappingURL=chunk-D73VTNQZ.js.map
@@ -5,14 +5,14 @@ import {
5
5
  import {
6
6
  BaseTech
7
7
  } from "./chunk-LTQZXT7J.js";
8
+ import {
9
+ clamp
10
+ } from "./chunk-P67KKEHQ.js";
8
11
  import {
9
12
  createTimeRanges,
10
13
  getMediaMax,
11
14
  getMediaMin
12
15
  } from "./chunk-C4AZD4KN.js";
13
- import {
14
- clamp
15
- } from "./chunk-P67KKEHQ.js";
16
16
  import {
17
17
  createEl,
18
18
  loadResource,
@@ -381,4 +381,4 @@ export {
381
381
  VIMEO_EVENTS,
382
382
  VimeoTech
383
383
  };
384
- //# sourceMappingURL=chunk-NMA7IMZX.js.map
384
+ //# sourceMappingURL=chunk-DKDMJOZP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ModesPlug
3
- } from "./chunk-N4DPWLWI.js";
3
+ } from "./chunk-POXVURCZ.js";
4
4
  import {
5
5
  MODES_AIRPLAY_BUILD
6
6
  } from "./chunk-OBT4ZZUV.js";
@@ -65,4 +65,4 @@ __publicField(ModesAirPlayPin, "BUILD", MODES_AIRPLAY_BUILD);
65
65
  export {
66
66
  ModesAirPlayPin
67
67
  };
68
- //# sourceMappingURL=chunk-ZUNDVUUZ.js.map
68
+ //# sourceMappingURL=chunk-EW3IB5E4.js.map
@@ -34,10 +34,6 @@ import {
34
34
  isSameTracks,
35
35
  setCurrentTrack
36
36
  } from "./chunk-ATKNEOEG.js";
37
- import {
38
- getMediaMax,
39
- getMediaMin
40
- } from "./chunk-C4AZD4KN.js";
41
37
  import {
42
38
  clamp
43
39
  } from "./chunk-P67KKEHQ.js";
@@ -49,6 +45,10 @@ import {
49
45
  CONFIG_BUILD,
50
46
  STATE_BUILD
51
47
  } from "./chunk-HNXV3ITV.js";
48
+ import {
49
+ getMediaMax,
50
+ getMediaMin
51
+ } from "./chunk-C4AZD4KN.js";
52
52
  import {
53
53
  createEl,
54
54
  createListRenderer,
@@ -647,7 +647,7 @@ var HTML5Tech = class extends BaseTech {
647
647
  handleTracksStatus(type, list, init2 = false) {
648
648
  type === "Text" && this.handleChaptersStatus(list);
649
649
  this.config.status[`${type.toLowerCase()}Tracks`] = Array.prototype.filter.call(list, (t) => type === "Text" ? t.kind === "subtitles" || t.kind === "captions" : true);
650
- if (!init2) silence(() => this.config.intent[`current${type}Track`] = this.config.intent[`current${type}Track`]), this.config.tick(`intent.current${type}Track`);
650
+ if (!init2) silence(() => this.config.intent[`current${type}Track`] = this.config.intent[`current${type}Track`]), this.config.tick(`intent.current${type}Track`), type === "Text" && silence(() => this.config.intent.textVisible = this.config.intent.textVisible);
651
651
  }
652
652
  handleChaptersStatus(list = this.el.textTracks) {
653
653
  const track = Array.prototype.find.call(list, (t) => t.kind === "chapters");
@@ -971,4 +971,4 @@ export {
971
971
  HTML5Tech,
972
972
  Controller
973
973
  };
974
- //# sourceMappingURL=chunk-4CM4FZPI.js.map
974
+ //# sourceMappingURL=chunk-HFQF73T5.js.map