@vizor-vr/player 0.2.0

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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/__tests__/adapter-factory.test.d.ts +2 -0
  4. package/dist/__tests__/adapter-factory.test.d.ts.map +1 -0
  5. package/dist/__tests__/analytics-collector.test.d.ts +2 -0
  6. package/dist/__tests__/analytics-collector.test.d.ts.map +1 -0
  7. package/dist/__tests__/annotation-manager.test.d.ts +2 -0
  8. package/dist/__tests__/annotation-manager.test.d.ts.map +1 -0
  9. package/dist/__tests__/annotation-popup.test.d.ts +2 -0
  10. package/dist/__tests__/annotation-popup.test.d.ts.map +1 -0
  11. package/dist/__tests__/annotation-sprite.test.d.ts +2 -0
  12. package/dist/__tests__/annotation-sprite.test.d.ts.map +1 -0
  13. package/dist/__tests__/audio-manager.test.d.ts +2 -0
  14. package/dist/__tests__/audio-manager.test.d.ts.map +1 -0
  15. package/dist/__tests__/base-element-attrs.test.d.ts +2 -0
  16. package/dist/__tests__/base-element-attrs.test.d.ts.map +1 -0
  17. package/dist/__tests__/camera-controller.test.d.ts +2 -0
  18. package/dist/__tests__/camera-controller.test.d.ts.map +1 -0
  19. package/dist/__tests__/caption-renderer.test.d.ts +2 -0
  20. package/dist/__tests__/caption-renderer.test.d.ts.map +1 -0
  21. package/dist/__tests__/cc-button.test.d.ts +2 -0
  22. package/dist/__tests__/cc-button.test.d.ts.map +1 -0
  23. package/dist/__tests__/chat-button.test.d.ts +2 -0
  24. package/dist/__tests__/chat-button.test.d.ts.map +1 -0
  25. package/dist/__tests__/chat-panel.test.d.ts +2 -0
  26. package/dist/__tests__/chat-panel.test.d.ts.map +1 -0
  27. package/dist/__tests__/cinema-projection.test.d.ts +2 -0
  28. package/dist/__tests__/cinema-projection.test.d.ts.map +1 -0
  29. package/dist/__tests__/collab-client.test.d.ts +2 -0
  30. package/dist/__tests__/collab-client.test.d.ts.map +1 -0
  31. package/dist/__tests__/compass.test.d.ts +2 -0
  32. package/dist/__tests__/compass.test.d.ts.map +1 -0
  33. package/dist/__tests__/controls-overlay.test.d.ts +2 -0
  34. package/dist/__tests__/controls-overlay.test.d.ts.map +1 -0
  35. package/dist/__tests__/cubemap-projection.test.d.ts +2 -0
  36. package/dist/__tests__/cubemap-projection.test.d.ts.map +1 -0
  37. package/dist/__tests__/dash-adapter.test.d.ts +2 -0
  38. package/dist/__tests__/dash-adapter.test.d.ts.map +1 -0
  39. package/dist/__tests__/eac-projection.test.d.ts +2 -0
  40. package/dist/__tests__/eac-projection.test.d.ts.map +1 -0
  41. package/dist/__tests__/equirect-projection.test.d.ts +2 -0
  42. package/dist/__tests__/equirect-projection.test.d.ts.map +1 -0
  43. package/dist/__tests__/event-emitter.test.d.ts +2 -0
  44. package/dist/__tests__/event-emitter.test.d.ts.map +1 -0
  45. package/dist/__tests__/feature-gates-branding.test.d.ts +2 -0
  46. package/dist/__tests__/feature-gates-branding.test.d.ts.map +1 -0
  47. package/dist/__tests__/feature-gates.test.d.ts +2 -0
  48. package/dist/__tests__/feature-gates.test.d.ts.map +1 -0
  49. package/dist/__tests__/fisheye-projection.test.d.ts +2 -0
  50. package/dist/__tests__/fisheye-projection.test.d.ts.map +1 -0
  51. package/dist/__tests__/flat-projection.test.d.ts +2 -0
  52. package/dist/__tests__/flat-projection.test.d.ts.map +1 -0
  53. package/dist/__tests__/flat-video-integration.test.d.ts +2 -0
  54. package/dist/__tests__/flat-video-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/fullscreen-button.test.d.ts +2 -0
  56. package/dist/__tests__/fullscreen-button.test.d.ts.map +1 -0
  57. package/dist/__tests__/gaze-cursor-manager.test.d.ts +2 -0
  58. package/dist/__tests__/gaze-cursor-manager.test.d.ts.map +1 -0
  59. package/dist/__tests__/gaze-sender.test.d.ts +2 -0
  60. package/dist/__tests__/gaze-sender.test.d.ts.map +1 -0
  61. package/dist/__tests__/gaze-tracker.test.d.ts +2 -0
  62. package/dist/__tests__/gaze-tracker.test.d.ts.map +1 -0
  63. package/dist/__tests__/hls-adapter.test.d.ts +2 -0
  64. package/dist/__tests__/hls-adapter.test.d.ts.map +1 -0
  65. package/dist/__tests__/hotspot-interaction.test.d.ts +2 -0
  66. package/dist/__tests__/hotspot-interaction.test.d.ts.map +1 -0
  67. package/dist/__tests__/hotspot-manager.test.d.ts +2 -0
  68. package/dist/__tests__/hotspot-manager.test.d.ts.map +1 -0
  69. package/dist/__tests__/hotspot-renderer.test.d.ts +2 -0
  70. package/dist/__tests__/hotspot-renderer.test.d.ts.map +1 -0
  71. package/dist/__tests__/integrity.test.d.ts +2 -0
  72. package/dist/__tests__/integrity.test.d.ts.map +1 -0
  73. package/dist/__tests__/keyboard-shortcuts.test.d.ts +2 -0
  74. package/dist/__tests__/keyboard-shortcuts.test.d.ts.map +1 -0
  75. package/dist/__tests__/license-checker.test.d.ts +2 -0
  76. package/dist/__tests__/license-checker.test.d.ts.map +1 -0
  77. package/dist/__tests__/live-indicator.test.d.ts +2 -0
  78. package/dist/__tests__/live-indicator.test.d.ts.map +1 -0
  79. package/dist/__tests__/live.test.d.ts +2 -0
  80. package/dist/__tests__/live.test.d.ts.map +1 -0
  81. package/dist/__tests__/master-key.test.d.ts +2 -0
  82. package/dist/__tests__/master-key.test.d.ts.map +1 -0
  83. package/dist/__tests__/media-element.test.d.ts +2 -0
  84. package/dist/__tests__/media-element.test.d.ts.map +1 -0
  85. package/dist/__tests__/meta-config.test.d.ts +2 -0
  86. package/dist/__tests__/meta-config.test.d.ts.map +1 -0
  87. package/dist/__tests__/play-button.test.d.ts +2 -0
  88. package/dist/__tests__/play-button.test.d.ts.map +1 -0
  89. package/dist/__tests__/player-exports.test.d.ts +2 -0
  90. package/dist/__tests__/player-exports.test.d.ts.map +1 -0
  91. package/dist/__tests__/player-state.test.d.ts +2 -0
  92. package/dist/__tests__/player-state.test.d.ts.map +1 -0
  93. package/dist/__tests__/playlist-controls.test.d.ts +2 -0
  94. package/dist/__tests__/playlist-controls.test.d.ts.map +1 -0
  95. package/dist/__tests__/playlist-panel.test.d.ts +2 -0
  96. package/dist/__tests__/playlist-panel.test.d.ts.map +1 -0
  97. package/dist/__tests__/playlist.test.d.ts +2 -0
  98. package/dist/__tests__/playlist.test.d.ts.map +1 -0
  99. package/dist/__tests__/progressive-adapter.test.d.ts +2 -0
  100. package/dist/__tests__/progressive-adapter.test.d.ts.map +1 -0
  101. package/dist/__tests__/quality-selector.test.d.ts +2 -0
  102. package/dist/__tests__/quality-selector.test.d.ts.map +1 -0
  103. package/dist/__tests__/renderer.test.d.ts +2 -0
  104. package/dist/__tests__/renderer.test.d.ts.map +1 -0
  105. package/dist/__tests__/security/license-key-exposure.test.d.ts +2 -0
  106. package/dist/__tests__/security/license-key-exposure.test.d.ts.map +1 -0
  107. package/dist/__tests__/security/sanitize-xss.test.d.ts +2 -0
  108. package/dist/__tests__/security/sanitize-xss.test.d.ts.map +1 -0
  109. package/dist/__tests__/security/sri-generation.test.d.ts +2 -0
  110. package/dist/__tests__/security/sri-generation.test.d.ts.map +1 -0
  111. package/dist/__tests__/security/xss-annotations.test.d.ts +2 -0
  112. package/dist/__tests__/security/xss-annotations.test.d.ts.map +1 -0
  113. package/dist/__tests__/security/xss-captions.test.d.ts +2 -0
  114. package/dist/__tests__/security/xss-captions.test.d.ts.map +1 -0
  115. package/dist/__tests__/seek-bar.test.d.ts +2 -0
  116. package/dist/__tests__/seek-bar.test.d.ts.map +1 -0
  117. package/dist/__tests__/source-manager.test.d.ts +2 -0
  118. package/dist/__tests__/source-manager.test.d.ts.map +1 -0
  119. package/dist/__tests__/sprint1-memory-disposal.test.d.ts +10 -0
  120. package/dist/__tests__/sprint1-memory-disposal.test.d.ts.map +1 -0
  121. package/dist/__tests__/sprint3-frustum-adaptive.test.d.ts +9 -0
  122. package/dist/__tests__/sprint3-frustum-adaptive.test.d.ts.map +1 -0
  123. package/dist/__tests__/sprint5-bundle-memory.test.d.ts +18 -0
  124. package/dist/__tests__/sprint5-bundle-memory.test.d.ts.map +1 -0
  125. package/dist/__tests__/voice-button.test.d.ts +2 -0
  126. package/dist/__tests__/voice-button.test.d.ts.map +1 -0
  127. package/dist/__tests__/voice-manager.test.d.ts +2 -0
  128. package/dist/__tests__/voice-manager.test.d.ts.map +1 -0
  129. package/dist/__tests__/volume-control.test.d.ts +2 -0
  130. package/dist/__tests__/volume-control.test.d.ts.map +1 -0
  131. package/dist/__tests__/vr-button.test.d.ts +2 -0
  132. package/dist/__tests__/vr-button.test.d.ts.map +1 -0
  133. package/dist/__tests__/vz-cinema-element.test.d.ts +2 -0
  134. package/dist/__tests__/vz-cinema-element.test.d.ts.map +1 -0
  135. package/dist/__tests__/vz-img-element.test.d.ts +2 -0
  136. package/dist/__tests__/vz-img-element.test.d.ts.map +1 -0
  137. package/dist/__tests__/vz-playlist-element.test.d.ts +2 -0
  138. package/dist/__tests__/vz-playlist-element.test.d.ts.map +1 -0
  139. package/dist/__tests__/vz-tour-element.test.d.ts +2 -0
  140. package/dist/__tests__/vz-tour-element.test.d.ts.map +1 -0
  141. package/dist/__tests__/vz-tour-img.test.d.ts +2 -0
  142. package/dist/__tests__/vz-tour-img.test.d.ts.map +1 -0
  143. package/dist/__tests__/vz-tour-portal.test.d.ts +2 -0
  144. package/dist/__tests__/vz-tour-portal.test.d.ts.map +1 -0
  145. package/dist/__tests__/vz-video-element.test.d.ts +2 -0
  146. package/dist/__tests__/vz-video-element.test.d.ts.map +1 -0
  147. package/dist/__tests__/watermark-guard.test.d.ts +2 -0
  148. package/dist/__tests__/watermark-guard.test.d.ts.map +1 -0
  149. package/dist/__tests__/watermark.test.d.ts +2 -0
  150. package/dist/__tests__/watermark.test.d.ts.map +1 -0
  151. package/dist/__tests__/webvtt-parser.test.d.ts +2 -0
  152. package/dist/__tests__/webvtt-parser.test.d.ts.map +1 -0
  153. package/dist/__tests__/xr-controller.test.d.ts +2 -0
  154. package/dist/__tests__/xr-controller.test.d.ts.map +1 -0
  155. package/dist/__tests__/xr-manager.test.d.ts +2 -0
  156. package/dist/__tests__/xr-manager.test.d.ts.map +1 -0
  157. package/dist/analytics/analytics-collector.d.ts +29 -0
  158. package/dist/analytics/analytics-collector.d.ts.map +1 -0
  159. package/dist/analytics/gaze-tracker.d.ts +44 -0
  160. package/dist/analytics/gaze-tracker.d.ts.map +1 -0
  161. package/dist/analytics/index.d.ts +32 -0
  162. package/dist/analytics/index.d.ts.map +1 -0
  163. package/dist/annotations/annotation-manager.d.ts +31 -0
  164. package/dist/annotations/annotation-manager.d.ts.map +1 -0
  165. package/dist/annotations/annotation-popup.d.ts +21 -0
  166. package/dist/annotations/annotation-popup.d.ts.map +1 -0
  167. package/dist/annotations/annotation-sprite.d.ts +10 -0
  168. package/dist/annotations/annotation-sprite.d.ts.map +1 -0
  169. package/dist/annotations/index.d.ts +4 -0
  170. package/dist/annotations/index.d.ts.map +1 -0
  171. package/dist/annotations-C0ugfCn4.js +2158 -0
  172. package/dist/annotations-C0ugfCn4.js.map +1 -0
  173. package/dist/audio/ambisonic-renderer.d.ts +36 -0
  174. package/dist/audio/ambisonic-renderer.d.ts.map +1 -0
  175. package/dist/audio/audio-manager.d.ts +44 -0
  176. package/dist/audio/audio-manager.d.ts.map +1 -0
  177. package/dist/captions/caption-renderer.d.ts +57 -0
  178. package/dist/captions/caption-renderer.d.ts.map +1 -0
  179. package/dist/captions/index.d.ts +3 -0
  180. package/dist/captions/index.d.ts.map +1 -0
  181. package/dist/captions/webvtt-parser.d.ts +31 -0
  182. package/dist/captions/webvtt-parser.d.ts.map +1 -0
  183. package/dist/captions-BP0H2E03.js +274 -0
  184. package/dist/captions-BP0H2E03.js.map +1 -0
  185. package/dist/collab-BXPomrS0.js +978 -0
  186. package/dist/collab-BXPomrS0.js.map +1 -0
  187. package/dist/collaborative/chat-button.d.ts +22 -0
  188. package/dist/collaborative/chat-button.d.ts.map +1 -0
  189. package/dist/collaborative/chat-panel.d.ts +46 -0
  190. package/dist/collaborative/chat-panel.d.ts.map +1 -0
  191. package/dist/collaborative/collab-client.d.ts +73 -0
  192. package/dist/collaborative/collab-client.d.ts.map +1 -0
  193. package/dist/collaborative/gaze-cursor-manager.d.ts +29 -0
  194. package/dist/collaborative/gaze-cursor-manager.d.ts.map +1 -0
  195. package/dist/collaborative/gaze-sender.d.ts +29 -0
  196. package/dist/collaborative/gaze-sender.d.ts.map +1 -0
  197. package/dist/collaborative/voice-button.d.ts +25 -0
  198. package/dist/collaborative/voice-button.d.ts.map +1 -0
  199. package/dist/collaborative/voice-manager.d.ts +45 -0
  200. package/dist/collaborative/voice-manager.d.ts.map +1 -0
  201. package/dist/config/format-registry.d.ts +2 -0
  202. package/dist/config/format-registry.d.ts.map +1 -0
  203. package/dist/config/meta-config.d.ts +14 -0
  204. package/dist/config/meta-config.d.ts.map +1 -0
  205. package/dist/controls/cc-button.d.ts +24 -0
  206. package/dist/controls/cc-button.d.ts.map +1 -0
  207. package/dist/controls/compass.d.ts +15 -0
  208. package/dist/controls/compass.d.ts.map +1 -0
  209. package/dist/controls/controls-overlay.d.ts +46 -0
  210. package/dist/controls/controls-overlay.d.ts.map +1 -0
  211. package/dist/controls/fullscreen-button.d.ts +16 -0
  212. package/dist/controls/fullscreen-button.d.ts.map +1 -0
  213. package/dist/controls/icons.d.ts +23 -0
  214. package/dist/controls/icons.d.ts.map +1 -0
  215. package/dist/controls/keyboard-shortcuts.d.ts +21 -0
  216. package/dist/controls/keyboard-shortcuts.d.ts.map +1 -0
  217. package/dist/controls/live-indicator.d.ts +17 -0
  218. package/dist/controls/live-indicator.d.ts.map +1 -0
  219. package/dist/controls/play-button.d.ts +14 -0
  220. package/dist/controls/play-button.d.ts.map +1 -0
  221. package/dist/controls/playlist-controls.d.ts +18 -0
  222. package/dist/controls/playlist-controls.d.ts.map +1 -0
  223. package/dist/controls/playlist-panel.d.ts +27 -0
  224. package/dist/controls/playlist-panel.d.ts.map +1 -0
  225. package/dist/controls/quality-menu.d.ts +17 -0
  226. package/dist/controls/quality-menu.d.ts.map +1 -0
  227. package/dist/controls/seek-bar.d.ts +23 -0
  228. package/dist/controls/seek-bar.d.ts.map +1 -0
  229. package/dist/controls/volume-control.d.ts +14 -0
  230. package/dist/controls/volume-control.d.ts.map +1 -0
  231. package/dist/controls/vr-button.d.ts +14 -0
  232. package/dist/controls/vr-button.d.ts.map +1 -0
  233. package/dist/core/base-element.d.ts +53 -0
  234. package/dist/core/base-element.d.ts.map +1 -0
  235. package/dist/core/event-emitter.d.ts +23 -0
  236. package/dist/core/event-emitter.d.ts.map +1 -0
  237. package/dist/core/html-element.d.ts +13 -0
  238. package/dist/core/html-element.d.ts.map +1 -0
  239. package/dist/core/media-element.d.ts +86 -0
  240. package/dist/core/media-element.d.ts.map +1 -0
  241. package/dist/core/player-state.d.ts +63 -0
  242. package/dist/core/player-state.d.ts.map +1 -0
  243. package/dist/dash-adapter-tid9ZyhO.js +75 -0
  244. package/dist/dash-adapter-tid9ZyhO.js.map +1 -0
  245. package/dist/elements/vz-annotation.d.ts +26 -0
  246. package/dist/elements/vz-annotation.d.ts.map +1 -0
  247. package/dist/elements/vz-cinema.d.ts +28 -0
  248. package/dist/elements/vz-cinema.d.ts.map +1 -0
  249. package/dist/elements/vz-img.d.ts +27 -0
  250. package/dist/elements/vz-img.d.ts.map +1 -0
  251. package/dist/elements/vz-live.d.ts +36 -0
  252. package/dist/elements/vz-live.d.ts.map +1 -0
  253. package/dist/elements/vz-playlist.d.ts +74 -0
  254. package/dist/elements/vz-playlist.d.ts.map +1 -0
  255. package/dist/elements/vz-tour-img.d.ts +21 -0
  256. package/dist/elements/vz-tour-img.d.ts.map +1 -0
  257. package/dist/elements/vz-tour-portal.d.ts +19 -0
  258. package/dist/elements/vz-tour-portal.d.ts.map +1 -0
  259. package/dist/elements/vz-tour.d.ts +49 -0
  260. package/dist/elements/vz-tour.d.ts.map +1 -0
  261. package/dist/elements/vz-video.d.ts +21 -0
  262. package/dist/elements/vz-video.d.ts.map +1 -0
  263. package/dist/hls-adapter-BivH46L_.js +97 -0
  264. package/dist/hls-adapter-BivH46L_.js.map +1 -0
  265. package/dist/hotspots/hotspot-interaction.d.ts +23 -0
  266. package/dist/hotspots/hotspot-interaction.d.ts.map +1 -0
  267. package/dist/hotspots/hotspot-manager.d.ts +18 -0
  268. package/dist/hotspots/hotspot-manager.d.ts.map +1 -0
  269. package/dist/hotspots/hotspot-renderer.d.ts +26 -0
  270. package/dist/hotspots/hotspot-renderer.d.ts.map +1 -0
  271. package/dist/index.d.ts +48 -0
  272. package/dist/index.d.ts.map +1 -0
  273. package/dist/license/feature-gates.d.ts +6 -0
  274. package/dist/license/feature-gates.d.ts.map +1 -0
  275. package/dist/license/integrity.d.ts +33 -0
  276. package/dist/license/integrity.d.ts.map +1 -0
  277. package/dist/license/license-checker.d.ts +18 -0
  278. package/dist/license/license-checker.d.ts.map +1 -0
  279. package/dist/license/master-key.d.ts +14 -0
  280. package/dist/license/master-key.d.ts.map +1 -0
  281. package/dist/license/watermark-guard.d.ts +24 -0
  282. package/dist/license/watermark-guard.d.ts.map +1 -0
  283. package/dist/license/watermark.d.ts +19 -0
  284. package/dist/license/watermark.d.ts.map +1 -0
  285. package/dist/register-CwnmiGEs.js +5740 -0
  286. package/dist/register-CwnmiGEs.js.map +1 -0
  287. package/dist/register.d.ts +6 -0
  288. package/dist/register.d.ts.map +1 -0
  289. package/dist/register.js +5 -0
  290. package/dist/register.js.map +1 -0
  291. package/dist/renderer/camera-controller.d.ts +75 -0
  292. package/dist/renderer/camera-controller.d.ts.map +1 -0
  293. package/dist/renderer/projections/cinema-projection.d.ts +32 -0
  294. package/dist/renderer/projections/cinema-projection.d.ts.map +1 -0
  295. package/dist/renderer/projections/cubemap-projection.d.ts +34 -0
  296. package/dist/renderer/projections/cubemap-projection.d.ts.map +1 -0
  297. package/dist/renderer/projections/eac-projection.d.ts +35 -0
  298. package/dist/renderer/projections/eac-projection.d.ts.map +1 -0
  299. package/dist/renderer/projections/equirect-projection.d.ts +27 -0
  300. package/dist/renderer/projections/equirect-projection.d.ts.map +1 -0
  301. package/dist/renderer/projections/fisheye-projection.d.ts +28 -0
  302. package/dist/renderer/projections/fisheye-projection.d.ts.map +1 -0
  303. package/dist/renderer/projections/flat-projection.d.ts +32 -0
  304. package/dist/renderer/projections/flat-projection.d.ts.map +1 -0
  305. package/dist/renderer/projections/projection.d.ts +18 -0
  306. package/dist/renderer/projections/projection.d.ts.map +1 -0
  307. package/dist/renderer/renderer.d.ts +72 -0
  308. package/dist/renderer/renderer.d.ts.map +1 -0
  309. package/dist/renderer/shaders/eac.glsl.d.ts +12 -0
  310. package/dist/renderer/shaders/eac.glsl.d.ts.map +1 -0
  311. package/dist/renderer/shaders/fisheye.glsl.d.ts +22 -0
  312. package/dist/renderer/shaders/fisheye.glsl.d.ts.map +1 -0
  313. package/dist/spatial-BeadwNJA.js +146 -0
  314. package/dist/spatial-BeadwNJA.js.map +1 -0
  315. package/dist/sri.json +12 -0
  316. package/dist/streaming/adapter-factory.d.ts +8 -0
  317. package/dist/streaming/adapter-factory.d.ts.map +1 -0
  318. package/dist/streaming/dash-adapter.d.ts +21 -0
  319. package/dist/streaming/dash-adapter.d.ts.map +1 -0
  320. package/dist/streaming/hls-adapter.d.ts +26 -0
  321. package/dist/streaming/hls-adapter.d.ts.map +1 -0
  322. package/dist/streaming/progressive-adapter.d.ts +18 -0
  323. package/dist/streaming/progressive-adapter.d.ts.map +1 -0
  324. package/dist/streaming/quality-selector.d.ts +25 -0
  325. package/dist/streaming/quality-selector.d.ts.map +1 -0
  326. package/dist/streaming/source-manager.d.ts +46 -0
  327. package/dist/streaming/source-manager.d.ts.map +1 -0
  328. package/dist/streaming/types.d.ts +25 -0
  329. package/dist/streaming/types.d.ts.map +1 -0
  330. package/dist/styles/controls.d.ts +15 -0
  331. package/dist/styles/controls.d.ts.map +1 -0
  332. package/dist/three-Bci7aSeI.js +20078 -0
  333. package/dist/three-Bci7aSeI.js.map +1 -0
  334. package/dist/utils/fullscreen.d.ts +6 -0
  335. package/dist/utils/fullscreen.d.ts.map +1 -0
  336. package/dist/utils/sanitize.d.ts +19 -0
  337. package/dist/utils/sanitize.d.ts.map +1 -0
  338. package/dist/vizor.js +113 -0
  339. package/dist/vizor.js.map +1 -0
  340. package/dist/xr/xr-controller.d.ts +27 -0
  341. package/dist/xr/xr-controller.d.ts.map +1 -0
  342. package/dist/xr/xr-manager.d.ts +43 -0
  343. package/dist/xr/xr-manager.d.ts.map +1 -0
  344. package/package.json +94 -0
package/dist/sri.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "annotations-C0ugfCn4.js": "sha384-9DjwKv8po5gIDBHcBwt+TSgTYO/o10AkCAh/iNQVCP5VuLdPIbO5CfTzyo6Awbg5",
3
+ "captions-BP0H2E03.js": "sha384-y6Iz8yboRE1mMSVAmIDjw1zk90owOOIiOIkKO6o06+yYYvHiN3SS0eAgfmrju5M0",
4
+ "collab-BXPomrS0.js": "sha384-CCTDHN4a2l8g+NwuPET2SYrhBAa45IJ3TpjbzgWs+bJ648+jtIbir/KatUB0BL2n",
5
+ "dash-adapter-tid9ZyhO.js": "sha384-U9b0p79ZVRck/PipwaHFr0eV3k1jZ7Syw8K+z9yrS3BkLi4TVmk077k63nUtYKQE",
6
+ "hls-adapter-BivH46L_.js": "sha384-jOBukDUqYuL2pouXVqeORYwec9BaMTvoiLU7L6thrIhSCgypeCmENBbgfirRyoj7",
7
+ "register-CwnmiGEs.js": "sha384-HxozDDmTD20UrMFcKn84HPEAuXFZVnf5in26XgJw4FkaiHoXOwH7a188VLhLQ4Tf",
8
+ "register.js": "sha384-a/u1LFOR/riKc5C0xhFqdhS3p2SAGabZpidZlB0LB5PwJkSp227IbRbrI6npo37S",
9
+ "spatial-BeadwNJA.js": "sha384-HZn7bAj2gWsXmVFl+w/IeQhzEBv5/Aj7XMhkuhnu5/GZ1Kd3RdhgTIU+RGQzc5fU",
10
+ "three-Bci7aSeI.js": "sha384-WT17P68Bk5PWfaSGPpgMiYblkgoKrBcfOLZbjErgGMIvbwZrcWE7p/Fr9+FNR2Dy",
11
+ "vizor.js": "sha384-amgJdCAcF1V7r/J1J6kaJPCMXFaMoDwApArfErpyRDqPenhfH2CochC3ztohkjip"
12
+ }
@@ -0,0 +1,8 @@
1
+ import type { IStreamingAdapter, AdapterType } from './types.js';
2
+ /**
3
+ * Create a streaming adapter by type.
4
+ * HLS and DASH adapters are lazy-loaded via dynamic import
5
+ * to keep the core bundle small.
6
+ */
7
+ export declare function createAdapter(type: AdapterType): Promise<IStreamingAdapter>;
8
+ //# sourceMappingURL=adapter-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-factory.d.ts","sourceRoot":"","sources":["../../src/streaming/adapter-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGjE;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcjF"}
@@ -0,0 +1,21 @@
1
+ import type { QualityLevel } from '@vizor-vr/shared';
2
+ import type { IStreamingAdapter } from './types.js';
3
+ /**
4
+ * DASH streaming adapter wrapping dashjs.
5
+ * Lazy-loaded via dynamic import — only included in the bundle
6
+ * when a DASH source is detected.
7
+ */
8
+ export declare class DashAdapter implements IStreamingAdapter {
9
+ private videoElement;
10
+ private player;
11
+ private _isAttached;
12
+ private levels;
13
+ get supportsABR(): boolean;
14
+ get isAttached(): boolean;
15
+ attach(videoElement: HTMLVideoElement): void;
16
+ load(url: string): Promise<void>;
17
+ getQualityLevels(): QualityLevel[];
18
+ setQualityLevel(index: number): void;
19
+ destroy(): void;
20
+ }
21
+ //# sourceMappingURL=dash-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dash-adapter.d.ts","sourceRoot":"","sources":["../../src/streaming/dash-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAsB;IAEpC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,MAAM,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAKtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCtC,gBAAgB,IAAI,YAAY,EAAE;IAIlC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBpC,OAAO,IAAI,IAAI;CAShB"}
@@ -0,0 +1,26 @@
1
+ import type { QualityLevel } from '@vizor-vr/shared';
2
+ import type { IStreamingAdapter } from './types.js';
3
+ /**
4
+ * HLS streaming adapter wrapping hls.js.
5
+ * Lazy-loaded via dynamic import — only included in the bundle
6
+ * when an HLS source is detected.
7
+ *
8
+ * Falls back to native HLS on Safari (no hls.js needed).
9
+ */
10
+ export declare class HlsAdapter implements IStreamingAdapter {
11
+ private videoElement;
12
+ private hls;
13
+ private _isAttached;
14
+ private _isNative;
15
+ private levels;
16
+ /** Enable low-latency mode for live streams */
17
+ lowLatencyMode: boolean;
18
+ get supportsABR(): boolean;
19
+ get isAttached(): boolean;
20
+ attach(videoElement: HTMLVideoElement): void;
21
+ load(url: string): Promise<void>;
22
+ getQualityLevels(): QualityLevel[];
23
+ setQualityLevel(index: number): void;
24
+ destroy(): void;
25
+ }
26
+ //# sourceMappingURL=hls-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hls-adapter.d.ts","sourceRoot":"","sources":["../../src/streaming/hls-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;GAMG;AACH,qBAAa,UAAW,YAAW,iBAAiB;IAClD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAsB;IAEpC,+CAA+C;IAC/C,cAAc,UAAS;IAEvB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,MAAM,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAKtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsEtC,gBAAgB,IAAI,YAAY,EAAE;IAIlC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpC,OAAO,IAAI,IAAI;CAUhB"}
@@ -0,0 +1,18 @@
1
+ import type { QualityLevel } from '@vizor-vr/shared';
2
+ import type { IStreamingAdapter } from './types.js';
3
+ /**
4
+ * Progressive MP4/WebM adapter.
5
+ * Sets the video source directly — no adaptive bitrate.
6
+ */
7
+ export declare class ProgressiveAdapter implements IStreamingAdapter {
8
+ private videoElement;
9
+ private _isAttached;
10
+ get supportsABR(): boolean;
11
+ get isAttached(): boolean;
12
+ attach(videoElement: HTMLVideoElement): void;
13
+ load(url: string): void;
14
+ getQualityLevels(): QualityLevel[];
15
+ setQualityLevel(_index: number): void;
16
+ destroy(): void;
17
+ }
18
+ //# sourceMappingURL=progressive-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive-adapter.d.ts","sourceRoot":"","sources":["../../src/streaming/progressive-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAC1D,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,MAAM,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAK5C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKvB,gBAAgB,IAAI,YAAY,EAAE;IAIlC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,25 @@
1
+ import type { QualityLevel } from '@vizor-vr/shared';
2
+ import type { PlayerState } from '../core/player-state.js';
3
+ import type { IStreamingAdapter } from './types.js';
4
+ /**
5
+ * Coordinates quality switching between the streaming adapter and PlayerState.
6
+ * Provides a clean API for the quality menu control.
7
+ */
8
+ export declare class QualitySelector {
9
+ private adapter;
10
+ private state;
11
+ constructor(state: PlayerState);
12
+ /** Connect to the current streaming adapter */
13
+ setAdapter(adapter: IStreamingAdapter): void;
14
+ /** Get available quality levels */
15
+ getLevels(): QualityLevel[];
16
+ /** Set quality by index (-1 = auto) */
17
+ setLevel(index: number): void;
18
+ /** Whether auto quality (ABR) is active */
19
+ get isAuto(): boolean;
20
+ /** Whether the adapter supports quality switching */
21
+ get supportsQuality(): boolean;
22
+ /** Sync state from adapter */
23
+ private syncState;
24
+ }
25
+ //# sourceMappingURL=quality-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-selector.d.ts","sourceRoot":"","sources":["../../src/streaming/quality-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,KAAK,CAAc;gBAEf,KAAK,EAAE,WAAW;IAI9B,+CAA+C;IAC/C,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAK5C,mCAAmC;IACnC,SAAS,IAAI,YAAY,EAAE;IAI3B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY7B,2CAA2C;IAC3C,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,qDAAqD;IACrD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,8BAA8B;IAC9B,OAAO,CAAC,SAAS;CAWlB"}
@@ -0,0 +1,46 @@
1
+ import type { ParsedSource, QualityLevel } from '@vizor-vr/shared';
2
+ import type { PlayerState } from '../core/player-state.js';
3
+ import type { VzEventEmitter } from '../core/event-emitter.js';
4
+ /**
5
+ * Manages source selection and streaming adapter lifecycle.
6
+ *
7
+ * Responsibilities:
8
+ * - Detect MIME type to determine adapter type (progressive/hls/dash)
9
+ * - Instantiate the correct adapter via lazy-loaded factory
10
+ * - Coordinate quality switching with PlayerState
11
+ * - Handle multi-source progressive switching (preserves currentTime)
12
+ */
13
+ export declare class SourceManager {
14
+ private adapter;
15
+ private videoElement;
16
+ private state;
17
+ private events;
18
+ private sources;
19
+ /**
20
+ * Load sources into the video element using the appropriate adapter.
21
+ */
22
+ loadSources(sources: ParsedSource[], videoElement: HTMLVideoElement, state: PlayerState, events: VzEventEmitter): Promise<void>;
23
+ /** Get available quality levels from the current adapter */
24
+ getQualityLevels(): QualityLevel[];
25
+ /** Set quality level (-1 for auto) */
26
+ setQualityLevel(index: number): void;
27
+ /** Whether the current adapter supports ABR */
28
+ get supportsABR(): boolean;
29
+ /** Switch to a different progressive source by index (preserves currentTime) */
30
+ switchSource(index: number): void;
31
+ /** Dispose the adapter and release resources */
32
+ dispose(): void;
33
+ /**
34
+ * Select the best source and adapter type.
35
+ * Prefers adaptive (HLS/DASH) over progressive when available.
36
+ */
37
+ private selectSource;
38
+ /** Detect adapter type from source MIME type or URL extension */
39
+ private detectAdapterType;
40
+ /**
41
+ * Poll for quality levels after a short delay.
42
+ * Adaptive adapters need time to parse the manifest before levels are available.
43
+ */
44
+ private pollQualityLevels;
45
+ }
46
+ //# sourceMappingURL=source-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-manager.d.ts","sourceRoot":"","sources":["../../src/streaming/source-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,YAAY,EAAE,EACvB,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAuBhB,4DAA4D;IAC5D,gBAAgB,IAAI,YAAY,EAAE;IAIlC,sCAAsC;IACtC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBpC,+CAA+C;IAC/C,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,gFAAgF;IAChF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiBjC,gDAAgD;IAChD,OAAO,IAAI,IAAI;IASf;;;OAGG;IACH,OAAO,CAAC,YAAY;IAapB,iEAAiE;IACjE,OAAO,CAAC,iBAAiB;IAmBzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAoB1B"}
@@ -0,0 +1,25 @@
1
+ import type { QualityLevel } from '@vizor-vr/shared';
2
+ /** Adapter type identifier */
3
+ export type AdapterType = 'progressive' | 'hls' | 'dash';
4
+ /**
5
+ * Common interface for all streaming adapters.
6
+ * Each adapter wraps a specific playback technology
7
+ * (progressive MP4, hls.js, dashjs) behind a uniform API.
8
+ */
9
+ export interface IStreamingAdapter {
10
+ /** Attach the adapter to a <video> element */
11
+ attach(videoElement: HTMLVideoElement): void;
12
+ /** Load a source URL */
13
+ load(url: string): void;
14
+ /** Get available quality levels (empty for progressive) */
15
+ getQualityLevels(): QualityLevel[];
16
+ /** Set active quality level (-1 for auto ABR) */
17
+ setQualityLevel(index: number): void;
18
+ /** Whether this adapter supports ABR */
19
+ readonly supportsABR: boolean;
20
+ /** Whether the adapter is currently attached */
21
+ readonly isAttached: boolean;
22
+ /** Destroy the adapter and release resources */
23
+ destroy(): void;
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,MAAM,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE7C,wBAAwB;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,2DAA2D;IAC3D,gBAAgB,IAAI,YAAY,EAAE,CAAC;IAEnC,iDAAiD;IACjD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC,wCAAwC;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Controls CSS injected into the shadow DOM.
3
+ * Vimeo-inspired design: thin progress bar, subtle gradient,
4
+ * frosted glass big play, smooth transitions.
5
+ *
6
+ * CSS custom properties for theming:
7
+ * --vz-primary Accent color (default: #f43f5e)
8
+ * --vz-controls-bg Control bar gradient end (default: rgba(0,0,0,0.6))
9
+ * --vz-progress-height Progress bar resting height (default: 3px)
10
+ * --vz-progress-color Progress fill color (default: --vz-primary)
11
+ * --vz-controls-transition Fade duration (default: 0.3s)
12
+ * --vz-button-size Button hit-area size (default: 36px)
13
+ */
14
+ export declare const CONTROLS_CSS = "\n /* ------------------------------------------------------------------ */\n /* Layout \u2014 wrapper + seek above button row */\n /* ------------------------------------------------------------------ */\n\n .vz-controls-wrapper {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10;\n user-select: none;\n -webkit-user-select: none;\n transition: opacity var(--vz-controls-transition, 0.3s) ease,\n transform 0.2s ease;\n }\n\n .vz-controls-wrapper.hidden {\n opacity: 0;\n pointer-events: none;\n transform: translateY(4px);\n }\n\n /* Progress bar sits above the button row */\n .vz-seek-row {\n position: relative;\n width: 100%;\n padding: 0 12px;\n cursor: pointer;\n z-index: 11;\n }\n\n /* Button row */\n .vz-controls {\n display: flex;\n align-items: center;\n gap: 2px;\n padding: 4px 8px 6px;\n background: linear-gradient(transparent, var(--vz-controls-bg, rgba(0, 0, 0, 0.6)));\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-size: 13px;\n }\n\n .vz-controls-left {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n }\n\n .vz-controls-center {\n flex: 1;\n min-width: 0;\n }\n\n .vz-controls-right {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n }\n\n /* ------------------------------------------------------------------ */\n /* Buttons */\n /* ------------------------------------------------------------------ */\n\n .vz-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--vz-button-size, 36px);\n height: var(--vz-button-size, 36px);\n padding: 0;\n border: none;\n border-radius: 50%;\n background: transparent;\n color: #fff;\n cursor: pointer;\n flex-shrink: 0;\n transition: opacity 0.15s, transform 0.15s;\n opacity: 0.9;\n }\n\n .vz-btn:hover {\n opacity: 1;\n transform: scale(1.1);\n }\n\n .vz-btn:active {\n transform: scale(0.95);\n }\n\n .vz-btn:focus-visible {\n outline: 2px solid var(--vz-primary, #f43f5e);\n outline-offset: 2px;\n }\n\n .vz-btn svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n /* ------------------------------------------------------------------ */\n /* Seek / Progress bar */\n /* ------------------------------------------------------------------ */\n\n .vz-seek-container {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 18px;\n cursor: pointer;\n }\n\n .vz-seek-track {\n position: relative;\n width: 100%;\n height: var(--vz-progress-height, 3px);\n background: rgba(255, 255, 255, 0.2);\n border-radius: 99px;\n overflow: visible;\n transition: height 0.15s ease;\n }\n\n .vz-seek-container:hover .vz-seek-track {\n height: 5px;\n }\n\n .vz-seek-buffered {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0.25),\n rgba(255, 255, 255, 0.35)\n );\n border-radius: 99px;\n }\n\n .vz-seek-played {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: var(--vz-progress-color, var(--vz-primary, #f43f5e));\n border-radius: 99px;\n box-shadow: 0 0 8px rgba(244, 63, 94, 0.4);\n box-shadow: 0 0 8px color-mix(in srgb, var(--vz-primary, #f43f5e) 40%, transparent);\n }\n\n .vz-seek-thumb {\n position: absolute;\n top: 50%;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #fff;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\n transform: translate(-50%, -50%) scale(0);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n pointer-events: none;\n }\n\n .vz-seek-container:hover .vz-seek-thumb {\n transform: translate(-50%, -50%) scale(1);\n box-shadow: 0 0 6px rgba(244, 63, 94, 0.5);\n box-shadow: 0 0 6px color-mix(in srgb, var(--vz-primary, #f43f5e) 50%, transparent);\n }\n\n .vz-seek-input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n opacity: 0;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n }\n\n /* Hover time tooltip */\n .vz-seek-tooltip {\n position: absolute;\n bottom: 100%;\n margin-bottom: 6px;\n padding: 3px 7px;\n background: var(--vz-secondary, rgba(0, 0, 0, 0.85));\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n color: #fff;\n font-size: 12px;\n font-variant-numeric: tabular-nums;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n border-radius: 4px;\n white-space: nowrap;\n pointer-events: none;\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.12s;\n }\n\n .vz-seek-container:hover .vz-seek-tooltip {\n opacity: 1;\n }\n\n .vz-time {\n font-size: 12px;\n font-weight: 400;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n padding: 0 6px;\n flex-shrink: 0;\n opacity: 0.9;\n letter-spacing: 0.02em;\n }\n\n /* ------------------------------------------------------------------ */\n /* Volume \u2014 horizontal slide-out on hover */\n /* ------------------------------------------------------------------ */\n\n .vz-volume {\n display: flex;\n align-items: center;\n gap: 0;\n overflow: hidden;\n }\n\n .vz-volume-slider-wrap {\n width: 0;\n overflow: hidden;\n transition: width 0.2s ease;\n }\n\n .vz-volume:hover .vz-volume-slider-wrap {\n width: 64px;\n }\n\n .vz-volume-slider {\n width: 60px;\n height: 4px;\n margin: 0 4px;\n -webkit-appearance: none;\n appearance: none;\n background: rgba(255, 255, 255, 0.3);\n border-radius: 99px;\n outline: none;\n cursor: pointer;\n }\n\n .vz-volume-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: #fff;\n cursor: pointer;\n box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);\n }\n\n .vz-volume-slider::-moz-range-thumb {\n width: 12px;\n height: 12px;\n border: none;\n border-radius: 50%;\n background: #fff;\n cursor: pointer;\n box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);\n }\n\n /* ------------------------------------------------------------------ */\n /* Quality menu */\n /* ------------------------------------------------------------------ */\n\n .vz-quality-menu {\n position: relative;\n }\n\n .vz-quality-dropdown {\n position: absolute;\n bottom: 100%;\n right: 0;\n margin-bottom: 8px;\n background: var(--vz-secondary, rgba(20, 20, 30, 0.95));\n backdrop-filter: blur(16px) saturate(1.3);\n -webkit-backdrop-filter: blur(16px) saturate(1.3);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 8px;\n padding: 4px 0;\n min-width: 120px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.04);\n display: none;\n z-index: 20;\n }\n\n .vz-quality-dropdown.open {\n display: block;\n }\n\n .vz-quality-option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n cursor: pointer;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n transition: color 0.12s, background 0.12s;\n }\n\n .vz-quality-option:hover {\n background: rgba(244, 63, 94, 0.08);\n background: color-mix(in srgb, var(--vz-primary, #f43f5e) 8%, transparent);\n color: #fff;\n }\n\n .vz-quality-option.active {\n color: var(--vz-primary, #f43f5e);\n }\n\n .vz-quality-check {\n width: 16px;\n font-size: 14px;\n }\n\n /* ------------------------------------------------------------------ */\n /* Compass */\n /* ------------------------------------------------------------------ */\n\n .vz-compass {\n position: relative;\n }\n\n .vz-compass svg {\n fill: none;\n stroke: currentColor;\n transition: transform 0.1s ease-out;\n }\n\n /* ------------------------------------------------------------------ */\n /* Loading spinner \u2014 CSS ring */\n /* ------------------------------------------------------------------ */\n\n .vz-loading {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 44px;\n height: 44px;\n z-index: 5;\n pointer-events: none;\n }\n\n .vz-loading-spinner {\n width: 100%;\n height: 100%;\n border: 2.5px solid rgba(255, 255, 255, 0.15);\n border-top-color: var(--vz-primary, #f43f5e);\n border-radius: 50%;\n animation: vz-spin 0.75s linear infinite;\n }\n\n .vz-loading.hidden {\n display: none;\n }\n\n @keyframes vz-spin {\n to { transform: rotate(360deg); }\n }\n\n /* ------------------------------------------------------------------ */\n /* Big play button \u2014 frosted glass */\n /* ------------------------------------------------------------------ */\n\n .vz-big-play {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 68px;\n height: 68px;\n border: 1px solid rgba(255, 255, 255, 0.08);\n border-radius: 50%;\n background: rgba(15, 10, 20, 0.4);\n backdrop-filter: blur(12px) saturate(1.2);\n -webkit-backdrop-filter: blur(12px) saturate(1.2);\n color: #fff;\n cursor: pointer;\n z-index: 5;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.25s ease, transform 0.25s ease, opacity 0.25s ease, box-shadow 0.25s ease;\n opacity: 1;\n box-shadow: 0 0 20px rgba(244, 63, 94, 0.15);\n box-shadow: 0 0 20px color-mix(in srgb, var(--vz-primary, #f43f5e) 15%, transparent);\n }\n\n .vz-big-play:hover {\n background: rgba(15, 10, 20, 0.55);\n transform: translate(-50%, -50%) scale(1.08);\n box-shadow: 0 0 30px rgba(244, 63, 94, 0.25);\n box-shadow: 0 0 30px color-mix(in srgb, var(--vz-primary, #f43f5e) 25%, transparent);\n }\n\n .vz-big-play.hidden {\n opacity: 0;\n pointer-events: none;\n transform: translate(-50%, -50%) scale(0.85);\n }\n\n .vz-big-play svg {\n width: 30px;\n height: 30px;\n fill: currentColor;\n margin-left: 3px; /* visual centering for play triangle */\n }\n\n /* ------------------------------------------------------------------ */\n /* Watermark */\n /* ------------------------------------------------------------------ */\n\n .vz-watermark {\n position: absolute;\n bottom: 48px;\n right: 12px;\n z-index: 15;\n pointer-events: auto;\n }\n\n /* ------------------------------------------------------------------ */\n /* Controls behavior variants */\n /* ------------------------------------------------------------------ */\n\n /* \"always\" mode \u2014 never hide */\n :host([controls-behavior=\"always\"]) .vz-controls-wrapper {\n opacity: 1 !important;\n pointer-events: auto !important;\n transform: none !important;\n }\n\n /* \"minimal\" mode \u2014 only thin progress bar always visible */\n :host([controls-behavior=\"minimal\"]) .vz-controls-wrapper.hidden .vz-controls {\n opacity: 0;\n pointer-events: none;\n }\n\n :host([controls-behavior=\"minimal\"]) .vz-controls-wrapper.hidden .vz-seek-row {\n opacity: 1;\n pointer-events: auto;\n }\n\n :host([controls-behavior=\"minimal\"]) .vz-controls-wrapper.hidden {\n opacity: 1;\n pointer-events: auto;\n transform: none;\n }\n\n /* ------------------------------------------------------------------ */\n /* Live indicator */\n /* ------------------------------------------------------------------ */\n\n .vz-live-indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 0 8px;\n cursor: pointer;\n flex-shrink: 0;\n transition: opacity 0.2s;\n user-select: none;\n }\n\n .vz-live-indicator:hover {\n opacity: 1;\n }\n\n .vz-live-dot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n }\n\n .vz-live-dot svg {\n width: 10px;\n height: 10px;\n }\n\n .vz-live-dot.at-edge {\n color: #ef4444;\n animation: vz-live-pulse 2s ease-in-out infinite;\n }\n\n .vz-live-dot.behind {\n color: #6b7280;\n animation: none;\n }\n\n .vz-live-label {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.9);\n }\n\n @keyframes vz-live-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n /* ------------------------------------------------------------------ */\n /* Caption overlay (HUD) */\n /* ------------------------------------------------------------------ */\n\n .vz-caption-overlay {\n position: absolute;\n bottom: 60px;\n left: 50%;\n transform: translateX(-50%);\n max-width: 80%;\n padding: 4px 12px;\n background: rgba(0, 0, 0, 0.75);\n border-radius: 4px;\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-size: 16px;\n line-height: 1.4;\n text-align: center;\n z-index: 12;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s ease;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n .vz-caption-overlay.visible {\n opacity: 1;\n }\n\n /* ------------------------------------------------------------------ */\n /* CC button & dropdown */\n /* ------------------------------------------------------------------ */\n\n .vz-cc-menu {\n position: relative;\n }\n\n .vz-cc-btn.active {\n color: var(--vz-primary, #f43f5e);\n opacity: 1;\n }\n\n .vz-cc-dropdown {\n position: absolute;\n bottom: 100%;\n right: 0;\n margin-bottom: 8px;\n background: var(--vz-secondary, rgba(20, 20, 30, 0.95));\n backdrop-filter: blur(16px) saturate(1.3);\n -webkit-backdrop-filter: blur(16px) saturate(1.3);\n border: 1px solid rgba(255, 255, 255, 0.06);\n border-radius: 8px;\n padding: 4px 0;\n min-width: 120px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.04);\n display: none;\n z-index: 20;\n }\n\n .vz-cc-dropdown.open {\n display: block;\n }\n\n .vz-cc-option {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n cursor: pointer;\n font-size: 13px;\n color: rgba(255, 255, 255, 0.7);\n white-space: nowrap;\n transition: color 0.12s, background 0.12s;\n }\n\n .vz-cc-option:hover {\n background: rgba(244, 63, 94, 0.08);\n background: color-mix(in srgb, var(--vz-primary, #f43f5e) 8%, transparent);\n color: #fff;\n }\n\n .vz-cc-option.active {\n color: var(--vz-primary, #f43f5e);\n }\n\n .vz-cc-check {\n width: 16px;\n font-size: 14px;\n }\n\n /* ------------------------------------------------------------------ */\n /* Chat badge */\n /* ------------------------------------------------------------------ */\n\n .vz-chat-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n border-radius: 8px;\n background: #ef4444;\n color: #fff;\n font-size: 10px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n pointer-events: none;\n line-height: 1;\n }\n\n /* ------------------------------------------------------------------ */\n /* Responsive */\n /* ------------------------------------------------------------------ */\n\n @media (max-width: 400px) {\n .vz-volume-slider-wrap,\n .vz-volume-slider {\n display: none;\n }\n }\n";
15
+ //# sourceMappingURL=controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/styles/controls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,01gBAwoBxB,CAAC"}