lx-video-player 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/video-player.js +16 -16
- package/dist/video-player.js.map +1 -1
- package/dist/video-player.umd.cjs +1 -1
- package/dist/video-player.umd.cjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,8 +11,8 @@ import VideoPlayer from '@lexiang/video-player';
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
### 外部使用npm包
|
|
14
|
-
1.使用命令`npm install
|
|
15
|
-
2.`import '
|
|
14
|
+
1.使用命令`npm install lx-video-player`
|
|
15
|
+
2.`import 'lx-video-player'`
|
|
16
16
|
3.
|
|
17
17
|
```js
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ import VideoPlayer from '@lexiang/video-player';
|
|
|
20
20
|
* @param selector: 需为播放器指定一个id
|
|
21
21
|
* @param options: tcplayerSDK的options, 转换为字符串传递(web components属性要字符串传递)
|
|
22
22
|
*/
|
|
23
|
-
<
|
|
23
|
+
<lx-video-player selector={selector} options={JSON.stringify(playOptions || '')} @init="onInit"></lx-video-player>
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
```js
|
package/dist/video-player.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var A=document.createElement("style");A.appendChild(document.createTextNode('@charset "UTF-8";.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-modal-dialog,.vjs-button>.vjs-icon-placeholder:before,.vjs-modal-dialog .vjs-modal-dialog-content{position:absolute;top:0;left:0;width:100%;height:100%}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.vjs-button>.vjs-icon-placeholder:before{text-align:center}@font-face{font-family:VideoJS;src:url(data:application/vnd.ms-fontobject;base64,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dHRwOi8vZm9udGVsbG8uY29tAFYAaQBkAGUAbwBKAFMAUgBlAGcAdQBsAGEAcgBWAGkAZABlAG8ASgBTAFYAaQBkAGUAbwBKAFMAVgBlAHIAcwBpAG8AbgAgADEALgAwAFYAaQBkAGUAbwBKAFMARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiAARwbGF5C3BsYXktY2lyY2xlBXBhdXNlC3ZvbHVtZS1tdXRlCnZvbHVtZS1sb3cKdm9sdW1lLW1pZAt2b2x1bWUtaGlnaBBmdWxsc2NyZWVuLWVudGVyD2Z1bGxzY3JlZW4tZXhpdAZzcXVhcmUHc3Bpbm5lcglzdWJ0aXRsZXMIY2FwdGlvbnMIY2hhcHRlcnMFc2hhcmUDY29nBmNpcmNsZQ5jaXJjbGUtb3V0bGluZRNjaXJjbGUtaW5uZXItY2lyY2xlAmhkBmNhbmNlbAZyZXBsYXkIZmFjZWJvb2sFZ3BsdXMIbGlua2VkaW4HdHdpdHRlcgZ0dW1ibHIJcGludGVyZXN0EWF1ZGlvLWRlc2NyaXB0aW9uBWF1ZGlvCW5leHQtaXRlbQ1wcmV2aW91cy1pdGVtAAAAAA==) format("eot")}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABBIAAsAAAAAGoQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3RY21hcAAAAYQAAADQAAADIjn098ZnbHlmAAACVAAACv4AABEIAwnSw2hlYWQAAA1UAAAAKwAAADYSy2hLaGhlYQAADYAAAAAbAAAAJA4DByFobXR4AAANnAAAAA8AAACE4AAAAGxvY2EAAA2sAAAARAAAAEQ9NEHGbWF4cAAADfAAAAAfAAAAIAEyAIFuYW1lAAAOEAAAASUAAAIK1cf1oHBvc3QAAA84AAABDwAAAZ5AAl/0eJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGQ7xTiBgZWBgaWQ5RkDA8MvCM0cwxDOeI6BgYmBlZkBKwhIc01hcPjI+FGBHcRdyA4RZgQRAC4HCwEAAHic7dFprsIgAEXhg8U61XmeWcBb1FuQP4w7ZQXK5boMm3yclFDSANAHmuKviBBeBPQ8ymyo8w3jOh/5r2ui5nN6v8sYNJb3WMdeWRvLji0DhozKdxM6psyYs2DJijUbtuzYc+DIiTMXrty4k8oGLb+n0xCe37ekM7Z66j1DbUy3l6PpHnLfdLO5NdSBoQ4NdWSoY9ON54mhdqa/y1NDnRnq3FAXhro01JWhrg11Y6hbQ90Z6t5QD4Z6NNSToZ4N9WKoV0O9GerdUJORPqkhTd54nJ1YDXBU1RV+576/JBs2bPYPkrDZt5vsJrv53V/I5mclhGDCTwgGBQQSTEji4hCkYIAGd4TGIWFAhV0RQTpWmQp1xv6hA4OTOlNr2zFANbHUYbq2OtNCpViRqsk+e+7bTQAhzti8vPfuPffcc88959zznbcMMPjHD/KDDGEY0ABpYX384NhlomIYlo4JISGEY9mMh2FSidYiqkEUphtNYDSY/dXg9023l4DdxlqUl0chuZRhncJKrsCQHIwcGuwfnhMIzBnuH4Sym+1D2zaGjheXlhYfD238z80mKYMmvJ5XeOTzd8z9eujbMxJNhu4C9xPE/bCMiDuSNIWgkTQwBE55hLSAE7ZwhrHLnAHZOGV/kmBGTiNjZxzI77Hb7Hqjz68TjT6vh+5JT/cCIkqS0D6CqPf5jX4Qjdx5j6vlDfZM4aZFdbVXIxtOlJaP/WottMnH6CJQ3bTiue3PrY23HjnChtuamxwvvzFjxkPrNj3z0tG9T561HDYf6OgmRWvlY3JQHoQb8ltV2Yet7YfWctEjR1AtxS/cSX6U4alf6NJEBQ7YKg9wrXQKd0IeZCb2ux75Uhh1Un+Nz+9LTOE7PK777nN5xqdTneTBhCbx446mZrhnUkrCz2YhA9dSMxaG0SYmT8hi9ZPu1E94PJYQSH6LRmhxec7Q7ZeXntgQuVpbh+a4qWNsckVyTdn0P7o7DpgPW84+uRcq0BITflBikGdUjAZ9wYBVI3mtrNvr9kpg1UsaK6t3690aoorC1lg0GpMH2HAMtkZjsSi5Ig9ESVosOh7GQfLjKNLvKpMKkLSKNFAka710GdgSi8oDMSoNhqjkKBXTgn3swtaxyzGkUzIzae9RtLdWkSlZ1KDX6EzgllzV4NV4SoDFSOGD4+HCeQUF8wrZ5Hs8zIb5EaVxy8DYFTbMCJPnLIWZxugZE2NlivC0gc1qEQUR8jEKgZcAXeH18BiCgl5nlHh0CrjB4Hb5fX4gb0J7c9PuHVsfgkx2n/vTY/JV8kn8PGxf7faOZ8qX8JVByuIf4whk9sqXli2hvPJV9hrp0hY7l8r2x37ydaVsb4xvXv/47v2NjfCl8m5oRDJclFMoE1yk0Uh1Te4/m8lFXe9qBZD0EkheicebXvzI2PLCuoKCukLuhPIeKwaHPEouxw3kMqaIUXDQ1p0mip+MyCORSCQaoUsnY1VZ38nUTrG21WvVo4f1OsEJFhvSfAFwGfT8VHRMeAVUpwLOoLzjT/REIj3O3FhuURE+nERF+0pTId5Fyxv5sfwGyg4O+my4vZv0sZm7oeQlFZORiB+tG0MweVNraeitl7yxiPIHTk4/diVxs94o5lEYishB2iAtkchEnsActoEpx44Fo8XnsQMaA22BlqC20RmhBKzYojZyYaxg+JggMc4HHY2m+L9EkWSYljirOisrO7d3VorxzyZ6Vc4lJqITAu1b2wOBdrLElAP+bFc2eGaZFVbkmJktv5uT6Jlz5D/MnBFor6ig/JPnRViBsV3LNKGGqB1ChJ0tgQywlVLFJIuQgTFttwkiKxhyQdAZMdMYtSaoAewqfvXVYPAbDT6/1mez85YS8FSDywQ6NfAnef6FNEGMilnppyvn5rB6tTyq1pOceRWnp2WJEZFXHeX5oyoem1nTTgdqc4heDY7bOeKz63vnz+/dRx+s31Ht2JGanQ5seirfWJL9tjozU/12TnEjn5oux9OzU3ckGbBzBwNOyk69JykKH0n/0LM9A72tuwM3zQpIRu4AxiToseEpgPOmbROyFe9/X2yeUvoUsCyEvjcgs7fpWP3/aKlFN0+6HFUe6D9HFz/XPwBlN9tTqNyZjFJ8UO2RUT5/h4CptCctEyeisnOyXjALEp7dXKaQKf6O7IMnGjNNACRMLxqdYJX8eMLvmmd68D+ayBLyKKYZwYxDt/GNhzETDJ05Qxlyi3pi3/Z93ndYVSumgj0V/KkIFlO6+1K3fF2+3g0q+YtuSIf0bvmLqV09nnobI6hwcjIP8aPCKayjsF5JBY3LaKAeRLSyYB1h81oTwe9SlPMkXB7G0mfL9q71gaqqwPqu67QRKS1+ObTx+sbQy9QV2OQHEScGkdFBeT7v7qisqqrs6N52i78/R+6S0qQONVj26agOVoswCyQWIV5D86vH53bxNUeXV0K+XZaHv/nm/KsHhOvylwsWnJX/HE8l/4WCv5x+l5n08z6UU8bUMa3MBpSmM7F63AxntdC9eBCKEZW9Hr+ABNqtxgAQrSbMtmrW7lKQuoSgBhSrTazWVU2QAKWY8wiiuhqFmQgWJBgoXiuWIm42N7hqZbBsgXz52O5P5uSvaNgFGnOuvsRw8I8Laha91wMvDuxqWFheN7/8GVtTltdS83DQsXRmqc5ZtcJXEVrlV2doTWk5+Yunm71dG5f55m/qY0MjI93vv9/NfpxXV9sUXrxy2fbNy1or65cOlDRnOoKFeeXcbw42H/bNDT5Qs3flgs31gWC1lD1nfUV/X7NdCnSUdHY2e8afzfKsqZ5ZljfDqjLOmk3UebNXB+aHArPYDRs+/HDDxeT5DiP+sFg7OpRaVQMGBV89PpeBdj22hCE0Uub0UqwLrNWsG0cuyadgLXTeR5rbO4+3c/vl15cur2nRq+TXCQDcS3SO+s6ak+e5/eMS+1dw3btu3YG2tvFL8XdIZvdjdW6TO/4B7IdrZWVPmctm5/59AgsPItTSbCiIBr2OqIGzmu20SMKAS7yqwGBUfGfgjDYlLLDeF0SfcLB2LSx8flT+08/kzz6yOj96rft4rpTjdPQcmLd47uKibbDq7ZSz/XtbH2nN717Nd62rU+c8Icevvv7I09wA6WvjVcafb+FsbNG+ZQ80Rn6ZZsvrP7teP2dzTdoETvNhjCmsr8FID2sJ69VYvdUcxk4AzYRlKcaE38eXNRlfW9H1as9i6acLHp1XpuNB5K7DIvkX08y1ZYvh3KfWaiCzH+ztrSDmD7LuX73x/mJelB8Yj39t8nhNQJJ2CAthpoFGLsGgtSOCJooCGoaJAMTjSWHVZ08YAa1Fg9lPI5U6DOsGVjDasJeZZ+YyhfCwfOzCxlBA69M9XLXtza7H/rav+9Tjq5xNi0wpKQIRNO4Lrzz7yp5QVYM6Jd/oc1Uvn/mQhhuWh6ENXoS2YTZ8QT42bF5d/559zp5r0Uff2VnR2tdf2/WCOd2cO0Mw6qpWPnvxpV0nrt5fZd2yItc199GWe8vlNfNDq+CH/7yAAnB9hn7T4QO4c1g9ScxsZgmzntnE/IDGndtHMw69lFwoCnYsMGx+rBp8JSBqdLzBr9QRPq/PbhWMWFtQZp1xguy/haw3TEHm3TWAnxFWQQWgt7M5OV0lCz1VRYucpWliy7z6Zd4urwPIyeZQqli2Lgg7szJV09PysATbOQtYIrB2YzbkJYkGgJ0m4AjPUap1pvYu1K9qr97z0Yl3p332b2LYB78ncYIlRkau/8GObSsOlZancACE5d5ily+c2+7h5Yj4lqhVmXXB+iXLfvdqSgqfKtQvfHDV0OnvQR1qhw42XS/vkvsh/hXcrDFP0a+SJNIomEfD1nsrYGO+1bgTOJhM8Hv6ek+7vVglxuSRwoKn17S937bm6YJCeSSG0Op1n+7tE37tcZ/p7dsTv4EUrGpDbWueKigsLHhqTVsoEj+JU0kaSjnj9tz8/gryQWwJ9BcJXBC/7smO+I/IFURJetFPrdt5WcoL6DbEJaygI8CTHfQTjf40ofD+DwalTqIAAHicY2BkYGAA4jC5t2/j+W2+MnCzM4DAtTC+5cg0OyNYnIOBCUQBAAceB90AeJxjYGRgYGcAARD5/z87IwMjAypQBAAtgwI4AHicY2BgYGAfYAwAOkQA4QAAAAAAAA4AaAB+AMwA4AECAUIBbAGYAcICGAJYArQC4AMwA7AD3gQwBJYE3AUkBWYFigYgBmYGtAbqB1gIEghYCG4IhHicY2BkYGBQZChlYGcAASYg5gJCBob/YD4DABfTAbQAeJxdkE1qg0AYhl8Tk9AIoVDaVSmzahcF87PMARLIMoFAl0ZHY1BHdBJIT9AT9AQ9RQ9Qeqy+yteNMzDzfM+88w0K4BY/cNAMB6N2bUaPPBLukybCLvleeAAPj8JD+hfhMV7hC3u4wxs7OO4NzQSZcI/8Ltwnfwi75E/hAR7wJTyk/xYeY49fYQ/PztM+jbTZ7LY6OWdBJdX/pqs6NYWa+zMxa13oKrA6Uoerqi/JwtpYxZXJ1coUVmeZUWVlTjq0/tHacjmdxuL90OR8O0UEDYMNdtiSEpz5XQGqzlm30kzUdAYFFOb8R7NOZk0q2lwAyz1i7oAr1xoXvrOgtYhZx8wY5KRV269JZ5yGpmzPTjQhvY9je6vEElPOuJP3mWKnP5M3V+YAAAB4nG2PyXLCMBBE3YCNDWEL2ffk7o8S8oCnkCVHC5C/jzBQlUP6IHVPzYyekl5y0iL5X5/ooY8BUmQYIkeBEca4wgRTzDDHAtdY4ga3uMM9HvCIJzzjBa94wzs+8ImvZNAq8TM+HqVkKxWlrQiOxjujQkNlEzyNzl6Z/cU2XF06at7U83VQyklLpEvSnuzsb+HAPnPfQVgaupa1Jlu4sPLsFblcitaz0dHU0ZF1qatjZ1+aTXYCmp6u0gSvWNPyHLtFZ+ZeXWVSaEkqs3T8S74WklbGbNNNq4LL4+CWKtZDv2cfX8l8aFbKFhEnJnJ+IULFpqwoQnNHlHaVQtPBl+ypmbSWdmyC61KS/AKZC3Y+AA==) format("woff"),url(data:application/x-font-ttf;charset=utf-8;base64,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AG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAIAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgAEcGxheQtwbGF5LWNpcmNsZQVwYXVzZQt2b2x1bWUtbXV0ZQp2b2x1bWUtbG93CnZvbHVtZS1taWQLdm9sdW1lLWhpZ2gQZnVsbHNjcmVlbi1lbnRlcg9mdWxsc2NyZWVuLWV4aXQGc3F1YXJlB3NwaW5uZXIJc3VidGl0bGVzCGNhcHRpb25zCGNoYXB0ZXJzBXNoYXJlA2NvZwZjaXJjbGUOY2lyY2xlLW91dGxpbmUTY2lyY2xlLWlubmVyLWNpcmNsZQJoZAZjYW5jZWwGcmVwbGF5CGZhY2Vib29rBWdwbHVzCGxpbmtlZGluB3R3aXR0ZXIGdHVtYmxyCXBpbnRlcmVzdBFhdWRpby1kZXNjcmlwdGlvbgVhdWRpbwluZXh0LWl0ZW0NcHJldmlvdXMtaXRlbQAAAAA=) format("truetype");font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder,.vjs-icon-play{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-big-play-button .vjs-icon-placeholder:before,.video-js .vjs-play-control .vjs-icon-placeholder:before,.vjs-icon-play:before{content:""}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:""}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder,.vjs-icon-pause{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-playing .vjs-icon-placeholder:before,.vjs-icon-pause:before{content:""}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder,.vjs-icon-volume-mute{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-0 .vjs-icon-placeholder:before,.vjs-icon-volume-mute:before{content:""}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder,.vjs-icon-volume-low{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-1 .vjs-icon-placeholder:before,.vjs-icon-volume-low:before{content:""}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder,.vjs-icon-volume-mid{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control.vjs-vol-2 .vjs-icon-placeholder:before,.vjs-icon-volume-mid:before{content:""}.video-js .vjs-mute-control .vjs-icon-placeholder,.vjs-icon-volume-high{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-mute-control .vjs-icon-placeholder:before,.vjs-icon-volume-high:before{content:""}.video-js .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-enter{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-enter:before{content:""}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder,.vjs-icon-fullscreen-exit{font-family:VideoJS;font-weight:400;font-style:normal}.video-js.vjs-fullscreen .vjs-fullscreen-control .vjs-icon-placeholder:before,.vjs-icon-fullscreen-exit:before{content:""}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:""}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:""}.video-js .vjs-subs-caps-button .vjs-icon-placeholder,.video-js .vjs-subtitles-button .vjs-icon-placeholder,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-subtitles{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js .vjs-subtitles-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-AU) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-GB) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-IE) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js.video-js:lang(en-NZ) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-subtitles:before{content:""}.video-js .vjs-captions-button .vjs-icon-placeholder,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder,.vjs-icon-captions{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-captions-button .vjs-icon-placeholder:before,.video-js:lang(en) .vjs-subs-caps-button .vjs-icon-placeholder:before,.video-js:lang(fr-CA) .vjs-subs-caps-button .vjs-icon-placeholder:before,.vjs-icon-captions:before{content:""}.video-js .vjs-chapters-button .vjs-icon-placeholder,.vjs-icon-chapters{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-chapters-button .vjs-icon-placeholder:before,.vjs-icon-chapters:before{content:""}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:""}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:""}.video-js .vjs-play-progress,.video-js .vjs-volume-level,.vjs-icon-circle{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before,.vjs-icon-circle:before{content:""}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:""}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:""}.vjs-icon-hd{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-hd:before{content:""}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder,.vjs-icon-cancel{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-control.vjs-close-button .vjs-icon-placeholder:before,.vjs-icon-cancel:before{content:""}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder,.vjs-icon-replay{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-play-control.vjs-ended .vjs-icon-placeholder:before,.vjs-icon-replay:before{content:""}.vjs-icon-facebook{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-facebook:before{content:""}.vjs-icon-gplus{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-gplus:before{content:""}.vjs-icon-linkedin{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-linkedin:before{content:""}.vjs-icon-twitter{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-twitter:before{content:""}.vjs-icon-tumblr{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-tumblr:before{content:""}.vjs-icon-pinterest{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pinterest:before{content:""}.video-js .vjs-descriptions-button .vjs-icon-placeholder,.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-descriptions-button .vjs-icon-placeholder:before,.vjs-icon-audio-description:before{content:""}.video-js .vjs-audio-button .vjs-icon-placeholder,.vjs-icon-audio{font-family:VideoJS;font-weight:400;font-style:normal}.video-js .vjs-audio-button .vjs-icon-placeholder:before,.vjs-icon-audio:before{content:""}.vjs-icon-next-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-next-item:before{content:""}.vjs-icon-previous-item{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-previous-item:before{content:""}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;word-break:initial}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js[tabindex="-1"]{outline:0}.video-js *,.video-js :after,.video-js :before{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin:0}.video-js.vjs-16-9,.video-js.vjs-4-3,.video-js.vjs-fluid{width:100%;max-width:100%;height:0}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen{width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-disabled{opacity:.5;cursor:default}.video-js .vjs-offscreen{height:1px;left:-9999px;position:absolute;top:0;width:1px}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66a8cc}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.5em;width:3em;display:block;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2b333f;background-color:#2b333fb3;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.75em;margin-left:-1.5em}.video-js .vjs-big-play-button:focus,.video-js:hover .vjs-big-play-button{border-color:#fff;background-color:#73859f;background-color:#73859f80;-webkit-transition:all 0s;-moz-transition:all 0s;-ms-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-error .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button{display:none}.vjs-has-started.vjs-paused.vjs-show-big-play-button-on-pause .vjs-big-play-button{display:block}.video-js button{background:0 0;border:none;color:inherit;display:inline-block;overflow:visible;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-control .vjs-button{width:100%;height:100%}.video-js .vjs-control.vjs-close-button{cursor:pointer;height:3em;position:absolute;right:0;top:.5em;z-index:2}.video-js .vjs-modal-dialog{background:rgba(0,0,0,.8);background:-webkit-linear-gradient(-90deg,rgba(0,0,0,.8),rgba(255,255,255,0));background:linear-gradient(180deg,rgba(0,0,0,.8),rgba(255,255,255,0));overflow:auto;box-sizing:content-box}.video-js .vjs-modal-dialog>*{box-sizing:border-box}.vjs-modal-dialog .vjs-modal-dialog-content{font-size:1.2em;line-height:1.5;padding:20px 24px;z-index:1}.vjs-menu-button{cursor:pointer}.vjs-menu-button.vjs-disabled{cursor:default}.vjs-workinghover .vjs-menu-button.vjs-disabled:hover .vjs-menu{display:none}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;overflow:auto;box-sizing:content-box}.vjs-menu .vjs-menu-content>*{box-sizing:border-box}.vjs-scrubbing .vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li.vjs-menu-item:focus,.vjs-menu li.vjs-menu-item:hover{background-color:#73859f;background-color:#73859f80}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2b333f}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:#2b333fb3}.vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#2b333f;background-color:#2b333fb3;position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-menu-button-popup .vjs-menu.vjs-lock-showing,.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu{display:block}.video-js .vjs-menu-button-inline{-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline:hover,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:4em;top:0;padding:0;margin:0;-webkit-transition:all .4s;-moz-transition:all .4s;-ms-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline:hover .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2b333f;background-color:#2b333fb3}.vjs-has-started .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-ms-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:visible;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-ms-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-error .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-button>.vjs-icon-placeholder:before{font-size:1.8em;line-height:1.67}.video-js .vjs-control:focus,.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before{text-shadow:0 0 1em #fff}.video-js .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{cursor:pointer;-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-width:4em;overflow:hidden}.video-js .vjs-progress-control.disabled{cursor:default}.vjs-live .vjs-progress-control{display:none}.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-holder{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s;height:.3em}.video-js .vjs-progress-control .vjs-progress-holder{margin:0 10px}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.666666666666666666em}.video-js .vjs-progress-control:hover .vjs-progress-holder.disabled{font-size:1em}.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div,.video-js .vjs-progress-holder .vjs-play-progress{position:absolute;display:block;height:100%;margin:0;padding:0;width:0;left:0;top:0}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{font-size:.9em;position:absolute;right:-.5em;top:-.333333333333333em;z-index:1}.video-js .vjs-load-progress{background:#bfc7d3;background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:#fff;background:rgba(115,133,159,.75)}.video-js .vjs-time-tooltip{background-color:#fff;background-color:#fffc;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;color:#000;float:right;font-family:Arial,Helvetica,sans-serif;font-size:1em;padding:6px 8px 8px;pointer-events:none;position:relative;top:-3.4em;visibility:hidden;z-index:1}.video-js .vjs-progress-holder:focus .vjs-time-tooltip{display:none}.video-js .vjs-progress-control:hover .vjs-progress-holder:focus .vjs-time-tooltip,.video-js .vjs-progress-control:hover .vjs-time-tooltip{display:block;font-size:.6em;visibility:visible}.video-js .vjs-progress-control.disabled:hover .vjs-time-tooltip{font-size:1em}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-ms-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display{display:none}.vjs-mouse-display .vjs-time-tooltip{color:#fff;background-color:#000;background-color:#000c}.video-js .vjs-slider{position:relative;cursor:pointer;padding:0;margin:0 .45em;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#73859f;background-color:#73859f80}.video-js .vjs-slider.disabled{cursor:default}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;padding-left:2em;padding-right:2em;padding-bottom:3em}.video-js .vjs-volume-control{cursor:pointer;margin-right:1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.video-js .vjs-volume-control.vjs-volume-horizontal{width:5em}.video-js .vjs-volume-panel .vjs-volume-control{visibility:visible;opacity:0;width:1px;height:1px;margin-left:-1px}.video-js .vjs-volume-panel.enable-volume-control{-webkit-transition:width 1s;-moz-transition:width 1s;-ms-transition:width 1s;-o-transition:width 1s;transition:width 1s}.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:active~.vjs-volume-control,.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:focus~.vjs-volume-control,.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:hover~.vjs-volume-control,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control.vjs-slider-active,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:active,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:focus,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:hover,.video-js .vjs-volume-panel.enable-volume-control:active .vjs-volume-control,.video-js .vjs-volume-panel.enable-volume-control:focus .vjs-volume-control,.video-js .vjs-volume-panel.enable-volume-control:hover .vjs-volume-control{visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-moz-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-ms-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;-o-transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s;transition:visibility .1s,opacity .1s,height .1s,width .1s,left 0s,top 0s}.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:active~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:focus~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control.vjs-slider-active.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:active.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:focus.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control .vjs-volume-control:hover.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control:active .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control:focus .vjs-volume-control.vjs-volume-horizontal,.video-js .vjs-volume-panel.enable-volume-control:hover .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;position:relative}.video-js .vjs-volume-panel.enable-volume-control.vjs-volume-panel-horizontal.vjs-slider-active,.video-js .vjs-volume-panel.enable-volume-control.vjs-volume-panel-horizontal:active,.video-js .vjs-volume-panel.enable-volume-control.vjs-volume-panel-horizontal:focus,.video-js .vjs-volume-panel.enable-volume-control.vjs-volume-panel-horizontal:hover{width:9em;-webkit-transition:width .1s;-moz-transition:width .1s;-ms-transition:width .1s;-o-transition:width .1s;transition:width .1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{height:8em;width:3em;left:-3.5em;-webkit-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-moz-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-ms-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;-o-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s 1s,left 1s 1s,top 1s 1s}.video-js .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{-webkit-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-moz-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-ms-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;-o-transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s;transition:visibility 1s,opacity 1s,height 1s 1s,width 1s,left 1s 1s,top 1s 1s}.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-horizontal{width:5em;height:3em;visibility:visible;opacity:1;position:relative;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.video-js.vjs-no-flex .vjs-volume-control.vjs-volume-vertical,.video-js.vjs-no-flex .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{position:absolute;bottom:3em;left:.5em}.video-js .vjs-volume-panel{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.video-js .vjs-volume-bar{margin:1.35em .45em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em;margin:1.35em auto}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.video-js .vjs-volume-panel.vjs-volume-panel-vertical{width:4em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.video-js .vjs-volume-vertical{width:3em;height:8em;bottom:8em;background-color:#2b333f;background-color:#2b333fb3}.video-js .vjs-volume-horizontal .vjs-menu{left:-2em}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;background-color:#000;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-poster img{display:block;vertical-align:middle;margin:0 auto;max-height:100%;padding:0;width:100%}.vjs-has-started .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster{display:block}.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-live-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js .vjs-time-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;font-size:1em;line-height:3em;min-width:2em;width:auto;padding-left:1em;padding-right:1em}.vjs-live .vjs-time-control,.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time{display:none}.vjs-no-flex .vjs-remaining-time.vjs-time-control.vjs-control{width:0!important;white-space:nowrap}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control .vjs-icon-placeholder{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em;background-color:#000;background-color:#00000080}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}video::-webkit-media-text-track-display{-moz-transform:translateY(-3em);-ms-transform:translateY(-3em);-o-transform:translateY(-3em);-webkit-transform:translateY(-3em);transform:translateY(-3em)}.video-js.vjs-user-inactive.vjs-playing video::-webkit-media-text-track-display{-moz-transform:translateY(-1.5em);-ms-transform:translateY(-1.5em);-o-transform:translateY(-1.5em);-webkit-transform:translateY(-1.5em);transform:translateY(-1.5em)}.video-js .vjs-fullscreen-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-live .vjs-playback-rate{display:none}.vjs-playback-rate .vjs-playback-rate-value,.vjs-playback-rate>.vjs-menu-button{position:absolute;top:0;left:0;width:100%;height:100%}.vjs-playback-rate .vjs-playback-rate-value{pointer-events:none;font-size:1.5em;line-height:2;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error .vjs-error-display .vjs-modal-dialog-content{font-size:1.4em;text-align:center}.vjs-error .vjs-error-display:before{color:#fff;content:"X";font-family:Arial,Helvetica,sans-serif;font-size:4em;left:0;line-height:1;margin-top:-.5em;position:absolute;text-shadow:.05em .05em .1em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.vjs-error .vjs-error-check-network{color:#fff;text-decoration:none;background:red;padding:5px;display:inline-block;border-radius:5px}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px;visibility:hidden}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block;animation:0s linear .3s forwards vjs-spinner-show}.vjs-loading-spinner:after,.vjs-loading-spinner:before{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-show{to{visibility:visible}}@-webkit-keyframes vjs-spinner-show{to{visibility:visible}}@keyframes vjs-spinner-spin{to{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{to{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}to{border-top-color:#73859f}}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder{position:absolute}.video-js .vjs-subs-caps-button+.vjs-menu .vjs-captions-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before{font-family:VideoJS;content:"";font-size:1.5em;line-height:inherit}.video-js .vjs-audio-button .vjs-icon-placeholder:before{content:"";background:url(https://tcplayer-1306264703.cos.ap-nanjing.myqcloud.com/assets/audioTrack.png);background-size:contain;width:23px;height:15px;top:10px;left:15px}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-custom-control-spacer{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-audio-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control{display:none}.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-audio-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control{display:none}.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-descriptions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button .vjs-audio-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control{display:none}.vjs-modal-dialog.vjs-text-track-settings{background-color:#2b333f;background-color:#2b333fbf;color:#fff;height:70%}.vjs-text-track-settings .vjs-modal-dialog-content{display:table}.vjs-text-track-settings .vjs-track-settings-colors,.vjs-text-track-settings .vjs-track-settings-controls,.vjs-text-track-settings .vjs-track-settings-font{display:table-cell}.vjs-text-track-settings .vjs-track-settings-controls{text-align:right;vertical-align:bottom}.vjs-text-track-settings fieldset{margin:5px;padding:3px;border:none}.vjs-text-track-settings fieldset span{display:inline-block;margin-left:5px}.vjs-text-track-settings legend{color:#fff;margin:0 0 5px}.vjs-text-track-settings .vjs-label{position:absolute;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);display:block;margin:0 0 5px;padding:0;border:0;height:1px;width:1px;overflow:hidden}.vjs-track-settings-controls button:active,.vjs-track-settings-controls button:focus{outline-style:solid;outline-width:medium;background-image:linear-gradient(0deg,#fff 88%,#73859f 100%)}.vjs-track-settings-controls button:hover{color:#2b333fbf}.vjs-track-settings-controls button{background-color:#fff;background-image:linear-gradient(-180deg,#fff 88%,#73859f 100%);color:#2b333f;cursor:pointer;border-radius:2px}.vjs-track-settings-controls .vjs-default-button{margin-right:1em}@media print{.video-js>:not(.vjs-tech):not(.vjs-poster){visibility:hidden}}div.vjs-control.vjs-button.tcp-dot-component{width:100%}.vjs-progress-control:hover .tcp-dot-basic-style{display:inline}.tcp-dot-basic-style{position:absolute;width:8px;height:100%;margin-left:-4px;border-radius:5px;background-color:#fff0ff;z-index:10;display:none}.tcp-dot-basic-style:hover{background-color:#fff}.tcp-triangle{display:block;content:" ";position:absolute;bottom:-10px;left:5%;width:0;height:0;border-width:5px;border-style:solid;transform:translate(-50%);border-color:#000 transparent transparent}.tcp-triangle-both{display:block;content:" ";position:absolute;bottom:-10px;left:70px;width:0;height:0;border-width:5px;border-style:solid;transform:translate(-50%);border-color:#000 transparent transparent}.tcp-dot-image{width:100%;height:80px;background-repeat:no-repeat;background-size:100% 100%;-moz-background-size:100% 100%}.tcp-image-in-container{width:100%;height:100%;height:-webkit-fill-available;height:-moz-fill-available;height:-moz-available;height:fill-available}.tcp-image-in-container-only-image{width:100%;height:80px}.vjs-time-tooltip.tcp-popup-container{position:absolute;width:140px;height:118px;background-color:#000;padding:0;top:-125px;max-height:120px;left:-65px}.vjs-time-tooltip.tcp-popup-container.tcp-only-gif{position:absolute;width:140px;height:80px;background-color:#000;padding:0;top:-87px;max-height:120px;left:-65px}.vjs-time-tooltip.tcp-popup-container.tcp-single-line{height:103px;top:-109px}.vjs-time-tooltip.tcp-popup-container.tcp-without-gif{position:absolute;width:110px;height:54px;background-color:#000;opacity:.8;padding:0;top:-60px;border-radius:5px;left:0}.vjs-time-tooltip.tcp-popup-container.tcp-without-gif.tcp-single-line{height:23px;top:-28px}.vjs-time-tooltip.tcp-popup-container.tcp-without-gif.tcp-two-lines{height:38px;top:-44px}.tcp-dot-comment{text-overflow:ellipsis;color:#fff;width:100%;height:38px;max-height:38px;font-size:12px;line-height:16px;overflow:hidden;background-color:#000;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;padding:5px 8px}.tcp-large-comment{text-overflow:ellipsis;color:#fff;width:100%;height:100%;max-height:100%;font-size:12px;line-height:16px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;padding:5px 8px}.tcp-dot-timestamp{display:block;font-weight:700;width:100%;height:20px;text-align:left;bottom:0;position:absolute;color:#fff;margin-left:10px}.vjs-dvr .tcp-dvr-progress-control .tcp-dvr-time-shift{background-color:transparent}.vjs-dvr .vjs-progress-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.vjs-dvr .vjs-live-control{flex:inherit;cursor:pointer}.vjs-dvr .vjs-live-control .vjs-tooltip{line-height:1em}.vjs-dvr-live .vjs-live-control .vjs-tooltip{display:none}.vjs-dvr-live .vjs-live-control{cursor:default}.vjs-dvr .vjs-live-display{margin:0 auto}.vjs-live .vjs-live-display:before{display:inline-block;width:6px;height:6px;margin-right:.4em;vertical-align:4%;background:#f51717;content:"";border-radius:50%}.vjs-dvr:not(.vjs-dvr-live) .vjs-live-display:before{background:#566377}.tcp-video-quality-switcher .tcp-quality-switcher-value{pointer-events:none;font-size:1.2em;display:table;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%}.tcp-video-quality-switcher .tcp-quality-switcher-value p{display:table-cell;vertical-align:middle}.tcp-video-quality-switcher .vjs-menu{width:6em;left:50%;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.tcp-video-quality-switcher .vjs-menu li{text-transform:none}.tcp-skin .tcp-logo{position:absolute}.tcp-skin .tcp-logo.left-top{top:0;left:0}.tcp-skin .tcp-logo.left-bottom{bottom:0;left:0}.tcp-skin .tcp-logo.right-top{top:0;right:0}.tcp-skin .tcp-logo.right-bottom{bottom:0;right:0}.tcp-skin .tcp-logo .tcp-logo-link{display:inline-block}.tcp-skin .vjs-big-play-button{height:4.8em;width:6.8em;left:50%;top:50%;margin-left:-3.4em;margin-top:-2.4em;font-size:1em;border:0;opacity:1;z-index:1}.tcp-skin .vjs-big-play-button:before{content:none}.tcp-skin .vjs-big-play-button .vjs-button-icon{height:4.8em;width:6.8em;fill:#21212180}.tcp-skin .vjs-big-play-button .vjs-button-icon .draw-dash,.tcp-skin .vjs-big-play-button .vjs-button-icon .draw-line,.tcp-skin .vjs-big-play-button .vjs-button-icon .draw-lines{stroke-dasharray:1330px;stroke-dashoffset:1330px;stroke-linecap:round;stroke-linejoin:round;stroke-width:8px;stroke:#00a4ff}.tcp-skin .vjs-big-play-button:hover .vjs-button-icon .draw-fill{fill:#00a4ff}.tcp-skin .vjs-big-play-button:hover .vjs-button-icon .draw-line{-webkit-animation:draw-line .5s ease forwards;animation:draw-line .5s ease forwards}.tcp-skin .vjs-big-play-button:hover .vjs-button-icon .draw-lines{-webkit-animation:draw-lines 1s ease forwards;animation:draw-lines 1s ease forwards}.tcp-skin .vjs-big-play-button:hover .vjs-button-icon .draw-dash{-webkit-animation:draw-dash 1s ease forwards;animation:draw-dash 1s ease forwards}.tcp-skin .vjs-big-play-button .vjs-icon-placeholder{display:none}.tcp-skin .vjs-big-play-button,.tcp-skin .vjs-big-play-button:focus,.tcp-skin:hover .vjs-big-play-button,.tcp-skin:hover .vjs-big-play-button:focus{background:0 0}.tcp-skin.vjs-paused.vjs-pos-ended .vjs-big-play-button,.tcp-skin.vjs-paused.vjs-pos-ended .vjs-poster{display:block}.tcp-skin.vjs-ad-loading .vjs-big-play-button,.tcp-skin.vjs-ad-playing .vjs-big-play-button,.tcp-skin.vjs-seeking .vjs-big-play-button,.tcp-skin.vjs-using-native-controls .vjs-big-play-button,.tcp-skin.vjs-waiting .vjs-big-play-button{display:none!important}.tcp-skin .vjs-menu{z-index:1}.tcp-skin .vjs-control-bar{z-index:1;font-size:1.2em;background-color:#0000004d;background:rgba(0,0,0,.666);background:-webkit-linear-gradient(bottom,rgba(0,0,0,.666) 0,rgba(0,0,0,.492) 19%,rgba(0,0,0,.36) 34%,rgba(0,0,0,.254) 47%,rgba(0,0,0,.185) 56.5%,rgba(0,0,0,.129) 65%,rgba(0,0,0,.084) 73%,rgba(0,0,0,.05) 80.2%,rgba(0,0,0,.028) 86.1%,rgba(0,0,0,.014) 91%,rgba(0,0,0,.005) 95.2%,rgba(0,0,0,.001) 98.2%,rgba(0,0,0,0) 100%);background:linear-gradient(to top,rgba(0,0,0,.666) 0,rgba(0,0,0,.492) 19%,rgba(0,0,0,.36) 34%,rgba(0,0,0,.254) 47%,rgba(0,0,0,.185) 56.5%,rgba(0,0,0,.129) 65%,rgba(0,0,0,.084) 73%,rgba(0,0,0,.05) 80.2%,rgba(0,0,0,.028) 86.1%,rgba(0,0,0,.014) 91%,rgba(0,0,0,.005) 95.2%,rgba(0,0,0,.001) 98.2%,rgba(0,0,0,0) 100%)}.tcp-skin .vjs-time-control{padding-left:0;padding-right:0}.tcp-skin:not(.vjs-live) .vjs-current-time,.tcp-skin:not(.vjs-live) .vjs-duration,.tcp-skin:not(.vjs-live) .vjs-time-divider{display:block}.tcp-skin .vjs-time-divider{min-width:0;padding-left:.3em;padding-right:.3em}.tcp-skin .vjs-current-time{padding-left:1em}.tcp-skin .vjs-duration{padding-right:1em}.tcp-skin .vjs-remaining-time{display:none}.tcp-skin .vjs-progress-control{position:absolute;width:100%;top:-.9em;left:0;height:1.5em}.tcp-skin .vjs-play-progress{background-color:#00a4ff}.tcp-skin .vjs-playback-rate .vjs-playback-rate-value{font-size:1.2em;line-height:2.57}.tcp-skin .vjs-volume-panel .vjs-volume-control.vjs-volume-vertical{z-index:2;visibility:hidden;background-color:#000000b3}.tcp-skin .vjs-volume-panel .vjs-slider-horizontal .vjs-volume-level:before{top:-.33em}.tcp-skin .vjs-volume-panel .vjs-slider-vertical .vjs-volume-level:before{left:-.35em}.tcp-skin .vjs-volume-panel .vjs-volume-level{background-color:#00a4ff}.tcp-skin .vjs-custom-control-spacer{display:block;flex-grow:1}.tcp-skin .tcp-loading-spinner{box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;text-indent:-9999em}.tcp-skin .tcp-loading-spinner:before{content:"";display:block;width:100%;height:100%;margin-bottom:5px;border-radius:50%;border:3px solid rgba(255,255,255,0);border-left-color:#fff;border-right-color:#fff;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.tcp-skin.vjs-seeking .tcp-loading-spinner,.tcp-skin.vjs-waiting .tcp-loading-spinner{display:block}.tcp-skin.vjs-seeking .tcp-loading-spinner:before,.tcp-skin.vjs-waiting .tcp-loading-spinner:before{-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.tcp-skin .tcp-loading-spinner-animation{width:60px;height:45px;margin:0 auto 10px;background-repeat:no-repeat;animation-name:keyframes;animation-duration:2.625s;animation-delay:0s;animation-iteration-count:infinite;animation-fill-mode:forwards;animation-timing-function:steps(1)}@-webkit-keyframes keyframes{0%{width:60px;height:45px;background-position:-60px 0}1.33%{background-position:-2220px 0}2.67%{background-position:-120px 0}4.00%{background-position:-180px 0}5.33%{background-position:-240px 0}6.67%{background-position:-300px 0}8.00%{background-position:-360px 0}9.33%{background-position:-420px 0}10.67%{background-position:-480px 0}12.00%{background-position:-540px 0}13.33%{background-position:-600px 0}14.67%{background-position:-660px 0}16.00%{background-position:-720px 0}17.33%{background-position:-780px 0}18.67%{background-position:-840px 0}20.00%{background-position:-900px 0}21.33%{background-position:-960px 0}22.67%{background-position:-1020px 0}24.00%{background-position:-1080px 0}25.33%{background-position:-1140px 0}26.67%{background-position:-1200px 0}28.00%{background-position:-1260px 0}29.33%{background-position:-1320px 0}30.67%{background-position:-1380px 0}32.00%{background-position:-1440px 0}33.33%{background-position:-1500px 0}34.67%{background-position:-1560px 0}36.00%{background-position:-1620px 0}37.33%{background-position:-1680px 0}38.67%{background-position:-1740px 0}40.00%{background-position:-1800px 0}41.33%{background-position:-1860px 0}42.67%{background-position:-1920px 0}44.00%{background-position:-1980px 0}45.33%{background-position:-2040px 0}46.67%{background-position:-2100px 0}48.00%{background-position:-2160px 0}49.33%{background-position:0 0}50.67%{background-position:-2280px 0}52.00%{background-position:-2340px 0}53.33%{background-position:-2400px 0}54.67%{background-position:-2460px 0}56.00%{background-position:-2520px 0}57.33%{background-position:-2580px 0}58.67%{background-position:-2640px 0}60.00%{background-position:-2700px 0}61.33%{background-position:-2760px 0}62.67%{background-position:-2820px 0}64.00%{background-position:-2880px 0}65.33%{background-position:-2940px 0}66.67%{background-position:-3000px 0}68.00%{background-position:-3060px 0}69.33%{background-position:-3120px 0}70.67%{background-position:-3180px 0}72.00%{background-position:-3240px 0}73.33%{background-position:-3300px 0}74.67%{background-position:-3360px 0}76.00%{background-position:-3420px 0}77.33%{background-position:-3480px 0}78.67%{background-position:-3540px 0}80.00%{background-position:-3600px 0}81.33%{background-position:-3660px 0}82.67%{background-position:-3720px 0}84.00%{background-position:-3780px 0}85.33%{background-position:-3840px 0}86.67%{background-position:-3900px 0}88.00%{background-position:-3960px 0}89.33%{background-position:-4020px 0}90.67%{background-position:-4080px 0}92.00%{background-position:-4140px 0}93.33%{background-position:-4200px 0}94.67%{background-position:-4260px 0}96.00%{background-position:-4320px 0}97.33%{background-position:-4380px 0}to,98.67%{background-position:-4440px 0}}.tcp-skin .vjs-menu-button-popup .vjs-menu .vjs-menu-content{background-color:#232833;background-color:#000000b3}@keyframes draw-line{0%{stroke-dashoffset:1350px}to{stroke-dashoffset:0}}@keyframes draw-lines{0%{stroke-dasharray:0 1330px;stroke-dashoffset:1330px}to{stroke-dasharray:1330px 0;stroke-dashoffset:0}}@keyframes draw-dash{0%{stroke-dasharray:100px 1330px}to{stroke-dasharray:10px 0}}.tcp-continue-play-tips{position:absolute;left:0;bottom:4.5em;font-size:1.2em;height:2.08em;line-height:2.08em;padding:0 .5em 0 2.5em;background-color:#232833;background-color:#000000b3}.tcp-continue-play-tips .tcp-continue-play-buttom{cursor:pointer;color:#00a4ff;height:2.08em;padding:0 5px;margin:0}.tcp-continue-play-tips .vjs-control.vjs-close-button{width:2em;height:2.08em;top:0;right:initial;left:.5em;opacity:.7}.tcp-continue-play-tips .vjs-control.vjs-close-button .vjs-icon-placeholder:before{font-size:1.33em;line-height:1.55em}.tcp-skin .tcp-overlay{color:#fff;position:absolute;text-align:center}.tcp-skin .tcp-overlay-no-background{width:33%}.tcp-skin .tcp-overlay-background{background-color:#4e4e4e;background-color:#0009;border-radius:3px;padding:10px;width:33%}.tcp-skin .tcp-overlay-top-left{top:5px;left:5px}.tcp-skin .tcp-overlay-top{left:50%;margin-left:-16.5%;top:5px}.tcp-skin .tcp-overlay-top-right{right:5px;top:5px}.tcp-skin .tcp-overlay-right{right:5px;top:50%;transform:translateY(-50%)}.tcp-skin .tcp-overlay-bottom-right{bottom:4em;right:5px}.tcp-skin .tcp-overlay-bottom{bottom:4em;left:50%;margin-left:-16.5%}.tcp-skin .tcp-overlay-bottom-left{bottom:4em;left:5px}.tcp-skin .tcp-overlay-left{left:5px;top:50%;transform:translateY(-50%)}.tcp-skin .tcp-overlay-center{left:50%;margin-left:-16.5%;top:50%;transform:translateY(-50%)}.tcp-skin .tcp-image-patch{width:100%;max-height:100%;margin:0;transform:translate(-50%,-50%);overflow:hidden}.tcp-skin .tcp-image-patch .tcp-overlay-link{display:inline-block;outline:0}.tcp-skin .tcp-image-patch .tcp-overlay-link:active,.tcp-skin .tcp-image-patch .tcp-overlay-link:focus,.tcp-skin .tcp-image-patch .tcp-overlay-link:link{outline:0}.tcp-skin .tcp-image-patch .tcp-overlay-img{max-width:100%;border:none}.tcp-skin.tcp-res-switching .tcp-image-patch{display:none}.tcp-skin .vjs-no-flex .tcp-overlay-center,.tcp-skin .vjs-no-flex .tcp-overlay-left,.tcp-skin .vjs-no-flex .tcp-overlay-right{margin-top:-15px}.tcp-skin .tcp-right-click-popup-menu{position:absolute;z-index:6;padding:0;white-space:nowrap;background-color:#1c1c1c;background-color:#1c1c1ce6}.tcp-skin .tcp-right-click-popup-menu .vjs-menu-item{line-height:2em;padding:0 1.5em}.tcp-skin .tcp-right-click-popup-menu .tc-menu-list{text-transform:none;padding:.5rem;text-align:left}.tcp-skin .tcp-right-click-popup-menu .vjs-menu-content li:not(:last-child){border-bottom:1px solid #fff}.tcp-skin .tcp-right-click-popup-menu .tc-menu-list,.tcp-skin .tcp-right-click-popup-menu .tc-menu-list:hover{cursor:default;outline:0}.tcp-skin .tcp-right-click-popup-menu .tcp-menu-item-select{color:#00a4ff}.tcp-skin .tcp-mirror{transform:rotateY(180deg)}.tcp-playlist{width:300px;height:100%;right:0;top:0;position:absolute}.tcp-playlist .tcp-playlist-toggle{position:absolute;width:12px;height:100px;line-height:100px;top:50%;transform:translateY(-50%);background-color:#00a4ff;border-radius:10px 0 0 10px;text-align:center;cursor:pointer}.tcp-playlist .tcp-playlist-box{position:absolute;background-color:#2b333f;overflow:scroll;overflow-x:hidden;width:100%;height:100%}.tcp-playlist .tcp-playlist-box .tcp-playlist-title{padding:1em;font-size:1.6em;color:#00a4ff}.tcp-playlist .tcp-playlist-box .tcp-playlist-item{padding:0 0 0 1em;margin-bottom:1em;width:100%;height:100px}.tcp-playlist .tcp-playlist-box .tcp-playlist-item .tcp-playlist-item-video{display:inline-block;float:left;position:relative;width:55%;height:100px;display:flex;justify-content:center;align-items:center;background:#000}.tcp-playlist .tcp-playlist-box .tcp-playlist-item .tcp-playlist-item-video .tcp-playlist-item-img{max-width:100%;max-height:100%}.tcp-playlist .tcp-playlist-box .tcp-playlist-item .tcp-playlist-item-video .tcp-playlist-item-duration{position:absolute;bottom:.5em;left:1em;background-color:#2b333f;padding:.5em;opacity:.8}.tcp-playlist .tcp-playlist-box .tcp-playlist-item .tcp-playlist-item-desc{display:inline-block;width:42%;padding:.5em;font-size:1.4em;overflow:hidden;height:100%}.tcp-playlist .tcp-playlist-box .tcp-playlist-item-active,.tcp-playlist .tcp-playlist-box .tcp-playlist-item:hover{cursor:pointer}.tcp-playlist .tcp-playlist-box .tcp-playlist-item-active .tcp-playlist-item-desc,.tcp-playlist .tcp-playlist-box .tcp-playlist-item:hover .tcp-playlist-item-desc{color:#00a4ff}.tcp-playlist-box::-webkit-scrollbar{width:.5em;box-sizing:border-box}.tcp-playlist-box::-webkit-scrollbar-button{display:none}.tcp-playlist-box::-webkit-scrollbar-thumb{background-color:#00a4ff;-webkit-border-radius:1em}.vjs-play-next:hover{cursor:pointer}.vjs-play-next{font-family:VideoJS}.vjs-play-next .vjs-icon-placeholder:before{content:""}.tcp-playlist-open .tcp-playlist-toggle{right:300px}.tcp-playlist-open .tcp-playlist-box{display:block}.tcp-playlist-close .tcp-playlist-toggle{right:0}.tcp-playlist-close .tcp-playlist-box{display:none}.tcp-statistic{position:relative;z-index:5;top:10px;left:10px;font-size:12px;width:80%;max-height:80%;background:rgba(28,28,28,.8);border-radius:4px;color:#fff;opacity:.8;overflow:hidden}.tcp-statistic-wrapper{display:flex;flex-direction:column;width:100%;padding:10px}.tcp-statistic-line{display:block;width:100%;padding-bottom:4px}.tcp-statistic-title{width:30%;float:left;text-align:right;padding-right:20px}.tcp-statistic-data{width:70%}.tcp-statistic-close{position:absolute;right:10px;top:10px;width:20px;height:20px;color:#fff;cursor:pointer}.tcp-switch{position:absolute;display:flex;align-items:center;right:0;bottom:4.5em;font-size:1.2em;line-height:2.08em;padding:0 2.5em 0 .5em;background-color:#000000b3}.tcp-switch>.vjs-close-button{top:0!important;cursor:pointer;width:2em;height:1.5em;display:flex;justify-content:center;align-items:center;right:.3em!important;border-radius:50%;margin-left:.5em}.tcp-switch>.vjs-control .vjs-close-button{top:0;right:.3em!important}.tcp-switch>.vjs-button>.vjs-icon-placeholder:before{font-size:1.33em;line-height:inherit;opacity:.7}.vjs-error .vjs-error-display .vjs-modal-dialog-content{padding:0}.vjs-errors-dialog{text-align:center;overflow:hidden;position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(24,24,24,.8);display:table;width:100%;height:100%}.vjs-errors-content-container{overflow:auto;display:table-cell;padding:35px}.vjs-errors-dialog .vjs-control.vjs-close-button{width:3em;height:3em;top:0}.vjs-errors-type{display:none}.tcp-vtt-thumbnail-container{position:absolute;overflow:hidden;bottom:2.3em;z-index:0}.tcp-vtt-thumbnail-container:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-moz-box-shadow:0 0 3px 3px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 3px 3px rgba(0,0,0,.3) inset;box-shadow:0 0 3px 3px #0000004d inset;z-index:1}.tcp-vtt-thumbnail-img{position:absolute;left:0;opacity:0;transition:opacity .2s ease;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-mz-transition:opacity .2s ease}.vjs-progress-control:active .tcp-vtt-thumbnail-img,.vjs-progress-control:hover .tcp-vtt-thumbnail-img{opacity:1}.tcp-dynamic-watermark-container{position:absolute;pointer-events:none}.tcp-dynamic-watermark-container .tcp-dynamic-watermark-content{position:absolute;max-width:30%;word-break:break-all;color:#ffffff80}.tcp-skin.vjs-no-flex .vjs-poster{overflow:hidden}.tcp-skin.vjs-no-flex .vjs-poster div{width:100%;height:100%;display:table}.tcp-skin.vjs-no-flex .vjs-poster div span{display:table-cell;vertical-align:middle}.tcp-skin.vjs-no-flex .vjs-control-bar .vjs-current-time,.tcp-skin.vjs-no-flex .vjs-control-bar .vjs-duration,.tcp-skin.vjs-no-flex .vjs-control-bar .vjs-time-divider{display:inline-block}.tcp-skin.vjs-no-flex .vjs-control-bar .vjs-custom-control-spacer{display:none}.tcp-skin.vjs-no-flex .vjs-control-bar .tcp-video-quality-switcher .vjs-menu{margin-left:-3em}.tcp-skin.vjs-no-flex .vjs-control-bar .vjs-mouse-display{z-index:1}.tcp-skin.vjs-no-flex .vjs-control-bar .tcp-vtt-thumbnail-container{bottom:2.7em}.tcp-skin.vjs-no-flex.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar,.tcp-skin.vjs-no-flex.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar .vjs-volume-control.vjs-volume-vertical{visibility:hidden}.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-volume-control.vjs-volume-vertical{visibility:visible;opacity:1;display:none}.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-mute-control:active~.vjs-volume-control.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-mute-control:focus~.vjs-volume-control.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-mute-control:hover~.vjs-volume-control.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-volume-control.vjs-slider-active.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-volume-control:active.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-volume-control:focus.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control .vjs-volume-control:hover.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control:active .vjs-volume-control.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control:focus .vjs-volume-control.vjs-volume-vertical,.tcp-skin.vjs-no-flex .vjs-volume-panel.enable-volume-control:hover .vjs-volume-control.vjs-volume-vertical{display:block;position:absolute}@font-face{font-family:VideoJS;src:url(data:application/vnd.ms-fontobject;base64,KBsAAIQaAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACU8fVgAAAAAAAAAAAAAAAAAAAAAAAA4AVgBpAGQAZQBvAEoAUwAAAA4AUgBlAGcAdQBsAGEAcgAAABYAVgBlAHIAcwBpAG8AbgAgADEALgAwAAAADgBWAGkAZABlAG8ASgBTAAAAAAAAAQAAAAsAgAADADBHU1VCIIslegAAATgAAABUT1MvMlGJXdEAAAGMAAAAVmNtYXA59PfGAAACaAAAAyJnbHlmAwnSwwAABdAAABEIaGVhZBLLaEsAAADgAAAANmhoZWEOAwchAAAAvAAAACRobXR44AAAAAAAAeQAAACEbG9jYT00QcYAAAWMAAAARG1heHABMgCBAAABGAAAACBuYW1l1cf1oAAAFtgAAAIKcG9zdEACX/QAABjkAAABngABAAAHAAAAAAAHAAAA//8HAQABAAAAAAAAAAAAAAAAAAAAIQABAAAAAQAAVh9PCV8PPPUACwcAAAAAANZWDqcAAAAA1lYOpwAAAAAHAQcAAAAACAACAAAAAAAAAAEAAAAhAHUABwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQAAAAoAMAA+AAJERkxUAA5sYXRuABoABAAAAAAAAAABAAAABAAAAAAAAAABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACAABAAYAAAABAAAAAQbKAZAABQAABHEE5gAAAPoEcQTmAAADXABXAc4AAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA8QHxIAcAAAAAoQcAAAAAAAABAAAAAAAAAAAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAAAAAABQAAAAMAAAAsAAAABAAAAZIAAQAAAAAAjAADAAEAAAAsAAMACgAAAZIABABgAAAABAAEAAEAAPEg//8AAPEB//8AAAABAAQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAZAAAAAAAAAAIAAA8QEAAPEBAAAAAQAA8QIAAPECAAAAAgAA8QMAAPEDAAAAAwAA8QQAAPEEAAAABAAA8QUAAPEFAAAABQAA8QYAAPEGAAAABgAA8QcAAPEHAAAABwAA8QgAAPEIAAAACAAA8QkAAPEJAAAACQAA8QoAAPEKAAAACgAA8QsAAPELAAAACwAA8QwAAPEMAAAADAAA8Q0AAPENAAAADQAA8Q4AAPEOAAAADgAA8Q8AAPEPAAAADwAA8RAAAPEQAAAAEAAA8REAAPERAAAAEQAA8RIAAPESAAAAEgAA8RMAAPETAAAAEwAA8RQAAPEUAAAAFAAA8RUAAPEVAAAAFQAA8RYAAPEWAAAAFgAA8RcAAPEXAAAAFwAA8RgAAPEYAAAAGAAA8RkAAPEZAAAAGQAA8RoAAPEaAAAAGgAA8RsAAPEbAAAAGwAA8RwAAPEcAAAAHAAA8R0AAPEdAAAAHQAA8R4AAPEeAAAAHgAA8R8AAPEfAAAAHwAA8SAAAPEgAAAAIAAAAAAAAAAOAGgAfgDMAOABAgFCAWwBmAHCAhgCWAK0AuADMAOwA94EMASWBNwFJAVmBYoGIAZmBrQG6gdYCBIIWAhuCIQAAQAAAAAFiwWLAAIAAAERAQJVAzYFi/vqAgsAAAMAAAAABmsGawACABsANAAACQITIgcOAQcGEBceARcWIDc+ATc2ECcuAScmAyInLgEnJjQ3PgE3NjIXHgEXFhQHDgEHBgLrAcD+QJWYi4bOOTs7Oc6GiwEwi4bOOTs7Oc6Gi5h5b2umLS8vLaZrb/Jva6YtLy8tpmtvAjABUAFQAZs7Oc6Gi/7Qi4bOOTs7Oc6GiwEwi4bOOTv6wC8tpmtv8m9rpi0vLy2ma2/yb2umLS8AAAIAAAAABUAFiwADAAcAAAEhESkBESERAcABK/7VAlUBKwF1BBb76gQWAAAABAAAAAAGIQYgAAcAFwAnACoAAAE0JyYnFRc2NxQHFzY1NCcuAScVHgEXFgEHASERIQERAQYHFTY3FzcBBxcE0DQyVbgDuylxTUVD7pVsqi8x+7RfAWH+nwErAXUBPlBZmXqZX/1gnJwDgGFSUCqluBgYY2JxkqSdjIe9Ipogk2VpAixf/p/+QP6LAfb+wj0bmiNkmF8ElpycAAAAAQAAAAAEqwXWAAUAAAERIQERAQILASoBdv6KBGD+QP6LBKr+iwAAAAIAAAAABWYF1gAIAA4AAAE0JyYnETY3NgERIQERAQVlNDJUVDI0/BABKwF1/osDgGFSUCr9pipQUgFB/kD+iwSq/osAAwAAAAAGIAYPAAUADgAiAAATESEBEQEFNCcmJxE2NzYDFR4BFxYUBw4BBxU+ATc2ECcuAeABKwF1/osCxTQyVVUyNLtsqi8xMS+qbJXuQ0VFQ+4EYP5A/osEqv6L4GFSUCr9pipQUgLwmiCTZWnoaWWTIJoivYeMATqMh70AAAAEAAAAAAWLBYsABQALABEAFwAAASMRITUjAzM1MzUhASMVIREjAxUzFTMRAguWAXbglpbg/ooDgOABdpbg4JYC6/6KlgIK4Jb8gJYBdgKgluABdgAEAAAAAAWLBYsABQALABEAFwAAATMVMxEhEyMVIREjATM1MzUhEzUjESE1AXXglv6K4OABdpYBwJbg/oqWlgF2AlXgAXYBwJYBdvvq4JYBwOD+ipYAAAAAAgAAAAAF1gXWABMAFwAAASEiDgEVERQeATMhMj4BNRE0LgEDIREhBUD8gClEKChEKQOAKUQoKEQp/IADgAXVKEQp/IApRCgoRCkDgClEKPvrA4AABgAAAAAGawZrAAgADQAVAB4AIwAsAAAJASYjIgcGBwElLgEnAQUhATY3NjU0BQEGBwYVFBchBR4BFwEzARYzMjc2NwECvgFkUlCEe3ZjARIDjjPtn/7uAuX90AF6XTM1/BL+3V0zNQ8CMP3kM+2fARJ4/t1TT4R7dmP+7gPwAmgTLStR/id3o/o8/idL/XNmf4SPS0sB+GZ/hI9LSkuj+jwB2f4IEy0rUQHZAAUAAAAABmsF1gATABcAGwAfACMAAAEhIg4BFREUHgEzITI+ATURNC4BASEVIQEhNSEFITUhNSE1IQXV+1YpRSgoRSkEqilFKChF+y0BKv7WAur9FgLqAcD+1gEq/RYC6gXVKEQp/IApRCgoRCkDgClEKP2rlf7VlZWVlpUAAAAAAwAAAAAGIAXWABMAKwBDAAABISIOARURFB4BMyEyPgE1ETQuAQEjNSMVMzUzFRQGKwEiJjURNDY7ATIWFQUjNSMVMzUzFRQGKwEiJjURNDY7ATIWFQWL++ooRSgoRSgEFihFKChF/YJwlZVwKx/gHywsH+AfKwILcJWVcCwf4B8rKx/gHywF1ShEKfyAKUQoKEQpA4ApRCj99iXgJUofLCwfASofLCwfSiXgJUofLCwfASofLCwfAAYAAAAABiAE9gADAAcACwAPABMAFwAAEzM1IxEzNSMRMzUjASE1IREhNSERFSE14JWVlZWVlQErBBX76wQV++sEFQM1lv5AlQHAlf5Alv5AlQJVlZUAAAABAAAAAAYhBmwAMQAAASIGBwE2NCcBHgEzMj4BNC4BIg4BFRQXAS4BIyIOARQeATMyNjcBBhUUHgEyPgE0LgEFQCpLHv3sBwcCDx5PKz1nPDxnemc8B/3xHk8rPWc8PGc9K08eAhQGO2R2ZDs7ZAJPHhwBNxsyGwE0HSA8Z3pnPDxnPRkb/s0cIDxnemc8IBz+yhkYO2Q6OmR2ZDsAAAAAAgAAAAAGWQZrAEMAUAAAATY0Jzc+AScDLgEPASYvAS4BIyEiBg8BBgcnJgYHAwYWHwEGFBcHDgEXEx4BPwEWHwEeATMhMjY/ATY3FxY2NxM2JicFIi4BND4BMh4BFA4BBasFBZ4KBgeWBxoMujxCHAMVDv7WDhUCHEQ6ug0aB5UHBQudBQWdCwUHlQcaDbo7QxwCFQ4BKg4VAhxEOroNGgeVBwUL/ThHeEZGeI54RkZ4AzcqPip7CRsMAQMMCQVLLhvGDhISDsYcLUsFCQz+/QwbCXsqPip7CRsM/v0MCQVLLhvGDhISDsYcLUsFCQwBAwwbCUFGeI54RkZ4jnhGAAEAAAAABmsGawAYAAATFBceARcWIDc+ATc2ECcuAScmIAcOAQcGlTs5zoaLATCLhs45Ozs5zoaL/tCLhs45OwOAmIuGzjk7OznOhosBMIuGzjk7OznOhosAAAAAAgAAAAAGawZrABgAMQAAASIHDgEHBhAXHgEXFiA3PgE3NhAnLgEnJgMiJy4BJyY0Nz4BNzYyFx4BFxYUBw4BBwYDgJiLhs45Ozs5zoaLATCLhs45Ozs5zoaLmHlva6YtLy8tpmtv8m9rpi0vLy2ma28Gazs5zoaL/tCLhs45Ozs5zoaLATCLhs45O/rALy2ma2/yb2umLS8vLaZrb/Jva6YtLwADAAAAAAZrBmsAGAAxAD4AAAEiBw4BBwYQFx4BFxYgNz4BNzYQJy4BJyYDIicuAScmNDc+ATc2MhceARcWFAcOAQcGExQOASIuATQ+ATIeAQOAmIqGzzk7OznPhooBMIqGzzk7OznPhoqYeW9rpi0vLy2ma2/yb2umLS8vLaZrb2c8Z3pnPDxnemc8Bms7Oc+Giv7QiobPOTs7Oc+GigEwiobPOTv6wC8tpmtv8m9rpi0vLy2ma2/yb2umLS8CVT1nPDxnemc8PGcAAAAEAAAAAAYgBiEAEwAfACkALQAAASEiDgEVERQeATMhMj4BNRE0LgEBIzUjFSMRMxUzNTsBITIWFREUBiMhNzM1IwWL++ooRSgoRSgEFihFKChF/YJwlXBwlXCWASofLCwf/tZwlZUGIChFKPvqKEUoKEUoBBYoRSj8gJWVAcC7uywf/tYfLHDgAAAAAAIAAAAABmsGawAYACQAAAEiBw4BBwYQFx4BFxYgNz4BNzYQJy4BJyYTBwkBJwkBNwkBFwEDgJiLhs45Ozs5zoaLATCLhs45Ozs5zoaL3Wn+9P70aQEL/vVpAQwBDGn+9QZrOznOhov+0IuGzjk7OznOhosBMIuGzjk7/AlpAQv+9WkBDAEMaf71AQtp/vQAAAEAAAAABdYGtgAnAAABEQkBETIXFhcWFAcGBwYiJyYnJjUjFBceARcWMjc+ATc2NCcuAScmA4D+iwF1emhmOz09O2Zo9GhmOz2VLy2la2/0b2ulLS8vLaVrbwWLASr+i/6LASo9O2Zo82llPD09PGVpeXlva6YtLy8tpmtv829rpS4vAAEAAAAABT8HAAAUAAABESMiBh0BIQMjESERIxEzNTQ2MzIFP51WPAElJ/7+zv//0K2TBvT++EhIvf7Y/QkC9wEo2rrNAAAAAAQAAAAABo4HAAAwAEUAYABsAAABFB4DFRQHBgQjIiYnJjU0Njc2JS4BNTQ3BiMiJjU0Njc+ATMhByMeARUUDgMnMjY3NjU0LgIjIgYHBhUUHgMTMj4CNTQuAS8BJi8CJiMiDgMVFB4CATMVIxUjNSM1MzUzAx9AW1pAMEj+6p+E5TklWUqDAREgHxUuFpTLSD9N03ABooqDSkwxRUYxkiZQGjUiP2pAKlEZLxQrPVk2OmtbNw4PEx4KHCVOECA1aG9TNkZxfQNr1dVp1NRpA+QkRUNQgE5aU3pzU2A8R1GKLlISKkApJDEEwZRSmjZCQFg/jFpIc0c7QD4hGzlmOoZ9UichO2UuZ2dSNPyXGjRePhkwJBgjCxcdOAIOJDhdO0ZrOx0DbGzb22zZAAMAAAAABoAGbAADAA4AKgAAAREhEQEWBisBIiY0NjIWAREhETQmIyIGBwYVESESEC8BIRUjPgMzMhYB3f62AV8BZ1QCUmRnpmQEj/63UVY/VRUL/rcCAQEBSQIUKkdnP6vQBI/8IQPfATJJYmKTYWH83f3IAhJpd0UzHjP91wGPAfAwMJAgMDgf4wAAAQAAAAAGlAYAADEAAAEGBxYVFAIOAQQjICcWMzI3LgEnFjMyNy4BPQEWFy4BNTQ3FgQXJjU0NjMyFzY3Bgc2BpRDXwFMm9b+0qz+8eEjK+GwaaYfIRwrKnCTRE5CTix5AVvGCL2GjGBtYCVpXQVoYkUOHIL+/e63bZEEigJ9YQULF7F1BCYDLI5TWEuVswomJIa9ZhU5cz8KAAAAAQAAAAAFgAcAACIAAAEXDgEHBi4DNREjNT4ENz4BOwERIRUhERQeAjc2BTBQF7BZaK1wTiGoSHJEMBQFAQcE9AFN/rINIEMwTgHP7SM+AQI4XHh4OgIg1xpXXW9XLQUH/lj8/foeNDUeAQIAAQAAAAAGgAaAAEoAAAEUAgQjIic2PwEeATMyPgE1NC4BIyIOAxUUFhcWPwE2NzYnJjU0NjMyFhUUBiMiJjc+AjU0JiMiBhUUFwMGFyYCNTQSJCAEEgaAzv6f0W9rOxM2FGo9eb5od+KOabZ/WytQTR4ICAYCBhEz0amXqYlrPUoOCCUXNjI+VhljEQTO/s4BYQGiAWHOA4DR/p/OIF1H0yc5ifCWcsh+OmB9hkNoniAMIB8YBhcUPVqX2aSDqu5XPSN1WR8yQnJVSTH+XkZrWwF86dEBYc7O/p8AAAcAAAAABwEEzwAXACEAOABPAGYAcQB0AAABETM2FxYXFhcWFxYHDgEHBgcGJyYvASY3FjY3Ni4BBxEUBRY3Nj8BNjc2NTYnIwYXFh8BFhcWFxQXFjc2PwE2NzY3NicjBhcWHwEWFxYVFhcWNzY/ATY3Njc2JyMGFxYfARYXFhUWBTM/ARUzESMGCwEBFScDHBxoLkw0PSxNKy8KB1VER1M1aDUqAQKrUmsJBzBiQAF+GhILEAokFBcBfh0BAwIGAycXGwEkGhILEAokFBYBAX4eAQQCBQQnFxsBIxkTCxAKJBQWAQF+HgEEAgUEJxcbAflD7kHhqs0N8e8CFo4ByQL9AgEDDA8fN1xleVmYLzEIBAEBAgMEwgNWTEJkNAX+lQfCBxMLIBRAR09Tx60ICAUJBkdMXFvAugcTCyAUQEdPU8etCAgFCQZHTFxbwLoHEwsgFEBHT1PHrQgIBQkGR0xcW8DAZAFlAwwV/oP+hgH9+QEAAAEAAAAABiEGtgAsAAABIgcOAQcGFREUHgE7AREhNTQ3PgE3NjIXHgEXFh0BIREzMj4BNRE0Jy4BJyYDgIl9eLozNTxnPeD+1SkokV5h1GFekSgp/tXgPWc8NTO6eH0GtTQzu3h9if32PWc8AlWVa2FekCgpKSiQXmFrlf2rPGc9AgqJfXi7MzQAAAAAAgAAAAAFQAVAAAIABgAACQIhETMRAcACe/2FAuuVAcABwAHA/IADgAAAAAACAAAAAAVABUAAAwAGAAABMxEjCQERAcCVlQEFAnsFQPyAAcD+QAOAAAAAAAAAEADGAAEAAAAAAAEABwAAAAEAAAAAAAIABwAHAAEAAAAAAAMABwAOAAEAAAAAAAQABwAVAAEAAAAAAAUACwAcAAEAAAAAAAYABwAnAAEAAAAAAAoAKwAuAAEAAAAAAAsAEwBZAAMAAQQJAAEADgBsAAMAAQQJAAIADgB6AAMAAQQJAAMADgCIAAMAAQQJAAQADgCWAAMAAQQJAAUAFgCkAAMAAQQJAAYADgC6AAMAAQQJAAoAVgDIAAMAAQQJAAsAJgEeVmlkZW9KU1JlZ3VsYXJWaWRlb0pTVmlkZW9KU1ZlcnNpb24gMS4wVmlkZW9KU0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAFYAaQBkAGUAbwBKAFMAUgBlAGcAdQBsAGEAcgBWAGkAZABlAG8ASgBTAFYAaQBkAGUAbwBKAFMAVgBlAHIAcwBpAG8AbgAgADEALgAwAFYAaQBkAGUAbwBKAFMARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiAARwbGF5C3BsYXktY2lyY2xlBXBhdXNlC3ZvbHVtZS1tdXRlCnZvbHVtZS1sb3cKdm9sdW1lLW1pZAt2b2x1bWUtaGlnaBBmdWxsc2NyZWVuLWVudGVyD2Z1bGxzY3JlZW4tZXhpdAZzcXVhcmUHc3Bpbm5lcglzdWJ0aXRsZXMIY2FwdGlvbnMIY2hhcHRlcnMFc2hhcmUDY29nBmNpcmNsZQ5jaXJjbGUtb3V0bGluZRNjaXJjbGUtaW5uZXItY2lyY2xlAmhkBmNhbmNlbAZyZXBsYXkIZmFjZWJvb2sFZ3BsdXMIbGlua2VkaW4HdHdpdHRlcgZ0dW1ibHIJcGludGVyZXN0EWF1ZGlvLWRlc2NyaXB0aW9uBWF1ZGlvCW5leHQtaXRlbQ1wcmV2aW91cy1pdGVtAAAAAA==);font-weight:400;font-style:normal}@media screen�{.tcp-logo-img{border:none}.tcp-continue-play-tips .vjs-control.vjs-close-button .vjs-icon-placeholder:before{font-size:16px;line-height:25px}}@media �screen{.tcp-skin.vjs-no-flex .vjs-big-play-button{background-color:#2b333f}.tcp-skin.vjs-no-flex .vjs-big-play-button .vjs-button-icon:before{top:0;left:0;width:100%;height:100%;text-align:center;font-family:VideoJS;font-weight:400;font-style:normal;content:"";font-size:5em;line-height:1em}.tcp-skin.vjs-no-flex .vjs-big-play-button:focus,.tcp-skin.vjs-no-flex .vjs-big-play-button:hover,.tcp-skin.vjs-no-flex:hover .vjs-big-play-button:focus,.tcp-skin.vjs-no-flex:hover .vjs-big-play-button:hover{background-color:#00a4ff}.tcp-skin .tcp-image-patch{width:100%;margin:0;left:0;right:0;top:0;bottom:0;transform:none;overflow:hidden}.tcp-skin .tcp-image-patch .tcp-overlay-table{display:table;width:100%;height:100%}.tcp-skin .tcp-image-patch .tcp-overlay-table .tcp-overlay-cell{width:100%;display:table-cell;vertical-align:middle}}button{outline:0}@media �screen{.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}}@media �screen{.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:hidden}}.tcplayer{width:100%!important;height:100%!important}.tcplayer.landscape{width:100vh!important;height:100vw!important;position:fixed;z-index:999;transform:rotate(90deg)}')),document.head.appendChild(A)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
-
import V, { ref as T, onUnmounted as
|
|
2
|
+
import V, { ref as T, onUnmounted as S, nextTick as M, defineComponent as k, onMounted as F, watch as B } from "vue";
|
|
3
3
|
const W = /-(\w)/g, L = (e) => e.replace(W, (n, o) => o ? o.toUpperCase() : ""), j = /\B([A-Z])/g, D = (e) => e.replace(j, "-$1").toLowerCase();
|
|
4
4
|
function q(e) {
|
|
5
5
|
const n = {};
|
|
@@ -162,18 +162,18 @@ function Z(e, n) {
|
|
|
162
162
|
}
|
|
163
163
|
return o || b(n), h;
|
|
164
164
|
}
|
|
165
|
-
var
|
|
165
|
+
var z = /* @__PURE__ */ ((e) => (e.converted = "converted", e.failed = "failed", e.uploading = "uploading", e.uploaded = "uploaded", e.converting = "converting", e))(z || {});
|
|
166
166
|
const ce = {
|
|
167
167
|
maxBufferLength: 10,
|
|
168
168
|
maxBufferSize: 40 * 1024 * 1024,
|
|
169
169
|
maxMaxBufferLength: 30
|
|
170
|
-
}, A = navigator.userAgent.toLowerCase(),
|
|
171
|
-
|
|
172
|
-
const
|
|
170
|
+
}, A = navigator.userAgent.toLowerCase(), H = A.indexOf("micromessenger") > 0, Q = A.indexOf("android") > 0;
|
|
171
|
+
H && A.indexOf("wxwork");
|
|
172
|
+
const x = H && A.indexOf("wxwork") > 0, ee = /iphone|ipad|ipod|ios/.test(A);
|
|
173
173
|
function te() {
|
|
174
174
|
const e = T(!1), n = T({
|
|
175
|
-
status:
|
|
176
|
-
}), o = ee || Q &&
|
|
175
|
+
status: z.converted
|
|
176
|
+
}), o = ee || Q && x, r = T();
|
|
177
177
|
let s = !1, f = !1, v = 0, b = 0, i = !1, h = !1, m = null;
|
|
178
178
|
const t = async () => {
|
|
179
179
|
if (m)
|
|
@@ -193,7 +193,7 @@ function te() {
|
|
|
193
193
|
}, w = async (a, u) => {
|
|
194
194
|
try {
|
|
195
195
|
const { default: p } = await import("./hammer-005503be.js").then((y) => y.h);
|
|
196
|
-
await
|
|
196
|
+
await M();
|
|
197
197
|
const _ = new p.Manager(u);
|
|
198
198
|
_.add(
|
|
199
199
|
new p.Pan({
|
|
@@ -224,7 +224,7 @@ function te() {
|
|
|
224
224
|
left: `-${E}px`
|
|
225
225
|
}), u.classList.add("landscape"), p && (p.style.pointerEvents = "none")) : (u.classList.remove("landscape"), u.setAttribute("style", ""), p && (p.style.pointerEvents = ""));
|
|
226
226
|
else {
|
|
227
|
-
if (!
|
|
227
|
+
if (!x)
|
|
228
228
|
return;
|
|
229
229
|
s ? (Object.assign(u.style, {
|
|
230
230
|
width: "100vw",
|
|
@@ -258,7 +258,7 @@ function te() {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
};
|
|
261
|
-
return
|
|
261
|
+
return S(() => {
|
|
262
262
|
r.value && (r.value.dispose(), r.value = void 0);
|
|
263
263
|
}), {
|
|
264
264
|
loadVideo: R,
|
|
@@ -276,7 +276,7 @@ const ne = /* @__PURE__ */ k({
|
|
|
276
276
|
emits: ["init", "play", "pause", "ended", "error"],
|
|
277
277
|
setup(e, { emit: n }) {
|
|
278
278
|
const o = e, { loadVideo: r, tcplayerInstance: s } = te(), f = T(null), v = () => {
|
|
279
|
-
const t = document.querySelector(`
|
|
279
|
+
const t = document.querySelector(`lx-video-player[selector=${o.selector}]`) || document.querySelector("#lx-video-player-container");
|
|
280
280
|
return t && t instanceof HTMLElement ? t : null;
|
|
281
281
|
}, b = () => {
|
|
282
282
|
var d;
|
|
@@ -294,7 +294,7 @@ const ne = /* @__PURE__ */ k({
|
|
|
294
294
|
try {
|
|
295
295
|
if (!f.value && (f.value = b(), !f.value))
|
|
296
296
|
return;
|
|
297
|
-
await
|
|
297
|
+
await M();
|
|
298
298
|
const t = JSON.parse(o.options || "{}");
|
|
299
299
|
await r(o.selector, t), s.value && (s.value.on("play", i("play")), s.value.on("pause", i("pause")), s.value.on("ended", i("ended")), s.value.on("error", i("error")), i("init", s.value));
|
|
300
300
|
} catch {
|
|
@@ -308,7 +308,7 @@ const ne = /* @__PURE__ */ k({
|
|
|
308
308
|
setTimeout(() => {
|
|
309
309
|
h();
|
|
310
310
|
}, 0);
|
|
311
|
-
}),
|
|
311
|
+
}), S(() => {
|
|
312
312
|
s.value && s.value.dispose(), m();
|
|
313
313
|
}), B(() => o.options, h), { __sfc: !0, props: o, emit: n, loadVideo: r, tcplayerInstance: s, videoElement: f, getHostElement: v, createVideoElement: b, handleEmit: i, initializePlayer: h, cleanupVideoElement: m };
|
|
314
314
|
}
|
|
@@ -344,7 +344,7 @@ function oe(e, n, o, r, s, f, v, b) {
|
|
|
344
344
|
}
|
|
345
345
|
var re = function() {
|
|
346
346
|
var n = this, o = n._self._c;
|
|
347
|
-
return n._self._setupProxy, o("div", { attrs: { id: "
|
|
347
|
+
return n._self._setupProxy, o("div", { attrs: { id: "lx-video-player-container" } });
|
|
348
348
|
}, se = [], ie = /* @__PURE__ */ oe(
|
|
349
349
|
ne,
|
|
350
350
|
re,
|
|
@@ -358,13 +358,13 @@ var re = function() {
|
|
|
358
358
|
const ae = ie.exports;
|
|
359
359
|
if (typeof window < "u" && window.customElements)
|
|
360
360
|
try {
|
|
361
|
-
customElements.define("tc-video-player", e);
|
|
362
361
|
const e = Z(V, ae);
|
|
362
|
+
customElements.define("lx-video-player", e);
|
|
363
363
|
} catch {
|
|
364
364
|
}
|
|
365
365
|
export {
|
|
366
366
|
ce as HLSCONFIG,
|
|
367
|
-
|
|
367
|
+
z as VideoStatus,
|
|
368
368
|
ae as default
|
|
369
369
|
};
|
|
370
370
|
//# sourceMappingURL=video-player.js.map
|
package/dist/video-player.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-player.js","sources":["../node_modules/@vue/web-component-wrapper/dist/vue-wc-wrapper.js","../src/types/index.ts","../src/utils/agent.ts","../src/utils/player.ts","../src/components/VideoPlayer.vue","../src/index.ts"],"sourcesContent":["const camelizeRE = /-(\\w)/g;\nconst camelize = str => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = str => {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n};\n\nfunction getInitialProps (propsList) {\n const res = {};\n propsList.forEach(key => {\n res[key] = undefined;\n });\n return res\n}\n\nfunction injectHook (options, key, hook) {\n options[key] = [].concat(options[key] || []);\n options[key].unshift(hook);\n}\n\nfunction callHooks (vm, hook) {\n if (vm) {\n const hooks = vm.$options[hook] || [];\n hooks.forEach(hook => {\n hook.call(vm);\n });\n }\n}\n\nfunction createCustomEvent (name, args) {\n return new CustomEvent(name, {\n bubbles: false,\n cancelable: false,\n detail: args\n })\n}\n\nconst isBoolean = val => /function Boolean/.test(String(val));\nconst isNumber = val => /function Number/.test(String(val));\n\nfunction convertAttributeValue (value, name, { type } = {}) {\n if (isBoolean(type)) {\n if (value === 'true' || value === 'false') {\n return value === 'true'\n }\n if (value === '' || value === name || value != null) {\n return true\n }\n return value\n } else if (isNumber(type)) {\n const parsed = parseFloat(value, 10);\n return isNaN(parsed) ? value : parsed\n } else {\n return value\n }\n}\n\nfunction toVNodes (h, children) {\n const res = [];\n for (let i = 0, l = children.length; i < l; i++) {\n res.push(toVNode(h, children[i]));\n }\n return res\n}\n\nfunction toVNode (h, node) {\n if (node.nodeType === 3) {\n return node.data.trim() ? node.data : null\n } else if (node.nodeType === 1) {\n const data = {\n attrs: getAttributes(node),\n domProps: {\n innerHTML: node.innerHTML\n }\n };\n if (data.attrs.slot) {\n data.slot = data.attrs.slot;\n delete data.attrs.slot;\n }\n return h(node.tagName, data)\n } else {\n return null\n }\n}\n\nfunction getAttributes (node) {\n const res = {};\n for (let i = 0, l = node.attributes.length; i < l; i++) {\n const attr = node.attributes[i];\n res[attr.nodeName] = attr.nodeValue;\n }\n return res\n}\n\nfunction wrap (Vue, Component) {\n const isAsync = typeof Component === 'function' && !Component.cid;\n let isInitialized = false;\n let hyphenatedPropsList;\n let camelizedPropsList;\n let camelizedPropsMap;\n\n function initialize (Component) {\n if (isInitialized) return\n\n const options = typeof Component === 'function'\n ? Component.options\n : Component;\n\n // extract props info\n const propsList = Array.isArray(options.props)\n ? options.props\n : Object.keys(options.props || {});\n hyphenatedPropsList = propsList.map(hyphenate);\n camelizedPropsList = propsList.map(camelize);\n const originalPropsAsObject = Array.isArray(options.props) ? {} : options.props || {};\n camelizedPropsMap = camelizedPropsList.reduce((map, key, i) => {\n map[key] = originalPropsAsObject[propsList[i]];\n return map\n }, {});\n\n // proxy $emit to native DOM events\n injectHook(options, 'beforeCreate', function () {\n const emit = this.$emit;\n this.$emit = (name, ...args) => {\n this.$root.$options.customElement.dispatchEvent(createCustomEvent(name, args));\n return emit.call(this, name, ...args)\n };\n });\n\n injectHook(options, 'created', function () {\n // sync default props values to wrapper on created\n camelizedPropsList.forEach(key => {\n this.$root.props[key] = this[key];\n });\n });\n\n // proxy props as Element properties\n camelizedPropsList.forEach(key => {\n Object.defineProperty(CustomElement.prototype, key, {\n get () {\n return this._wrapper.props[key]\n },\n set (newVal) {\n this._wrapper.props[key] = newVal;\n },\n enumerable: false,\n configurable: true\n });\n });\n\n isInitialized = true;\n }\n\n function syncAttribute (el, key) {\n const camelized = camelize(key);\n const value = el.hasAttribute(key) ? el.getAttribute(key) : undefined;\n el._wrapper.props[camelized] = convertAttributeValue(\n value,\n key,\n camelizedPropsMap[camelized]\n );\n }\n\n class CustomElement extends HTMLElement {\n constructor () {\n const self = super();\n self.attachShadow({ mode: 'open' });\n\n const wrapper = self._wrapper = new Vue({\n name: 'shadow-root',\n customElement: self,\n shadowRoot: self.shadowRoot,\n data () {\n return {\n props: {},\n slotChildren: []\n }\n },\n render (h) {\n return h(Component, {\n ref: 'inner',\n props: this.props\n }, this.slotChildren)\n }\n });\n\n // Use MutationObserver to react to future attribute & slot content change\n const observer = new MutationObserver(mutations => {\n let hasChildrenChange = false;\n for (let i = 0; i < mutations.length; i++) {\n const m = mutations[i];\n if (isInitialized && m.type === 'attributes' && m.target === self) {\n syncAttribute(self, m.attributeName);\n } else {\n hasChildrenChange = true;\n }\n }\n if (hasChildrenChange) {\n wrapper.slotChildren = Object.freeze(toVNodes(\n wrapper.$createElement,\n self.childNodes\n ));\n }\n });\n observer.observe(self, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n }\n\n get vueComponent () {\n return this._wrapper.$refs.inner\n }\n\n connectedCallback () {\n const wrapper = this._wrapper;\n if (!wrapper._isMounted) {\n // initialize attributes\n const syncInitialAttributes = () => {\n wrapper.props = getInitialProps(camelizedPropsList);\n hyphenatedPropsList.forEach(key => {\n syncAttribute(this, key);\n });\n };\n\n if (isInitialized) {\n syncInitialAttributes();\n } else {\n // async & unresolved\n Component().then(resolved => {\n if (resolved.__esModule || resolved[Symbol.toStringTag] === 'Module') {\n resolved = resolved.default;\n }\n initialize(resolved);\n syncInitialAttributes();\n });\n }\n // initialize children\n wrapper.slotChildren = Object.freeze(toVNodes(\n wrapper.$createElement,\n this.childNodes\n ));\n wrapper.$mount();\n this.shadowRoot.appendChild(wrapper.$el);\n } else {\n callHooks(this.vueComponent, 'activated');\n }\n }\n\n disconnectedCallback () {\n callHooks(this.vueComponent, 'deactivated');\n }\n }\n\n if (!isAsync) {\n initialize(Component);\n }\n\n return CustomElement\n}\n\nexport default wrap;\n","export interface SignatureData {\n app_id: string;\n file_id: string;\n vod_cover_url: string;\n status: VideoStatus;\n psign?: string;\n t?: string;\n us?: string;\n sign?: string;\n hls_token?: string;\n exper?: string;\n realtime_url?: string;\n}\n\nexport enum VideoStatus {\n 'converted' = 'converted',\n 'failed' = 'failed',\n 'uploading' = 'uploading',\n 'uploaded' = 'uploaded',\n 'converting' = 'converting',\n}\n\nexport interface VideoInfo {\n status?: VideoStatus;\n}\n\nexport interface Player {\n play: () => void;\n pause: () => void;\n currentTime: (time?: number) => number;\n seek: (time: number) => void;\n dispose: () => void;\n on: (event: string, cb: Function) => void;\n duration: () => number;\n isFullscreen: () => boolean;\n videoWidth: () => number;\n videoHeight: () => number;\n options: () => any;\n el_: HTMLElement;\n}\n\nexport interface PlayerOptions {\n poster: string;\n controlBar: {\n cssFullscreenToggle: boolean;\n pictureInPictureToggle: boolean;\n };\n licenseUrl: string;\n hlsConfig: {\n maxBufferLength: number;\n maxBufferSize: number;\n maxMaxBufferLength: number;\n };\n sources?: Array<{ src: string }>;\n psign?: string;\n appID?: string;\n fileID?: string;\n exper?: string;\n plugins?: any;\n}\n\nexport const HLSCONFIG = {\n maxBufferLength: 10,\n maxBufferSize: 40 * 1024 * 1024,\n maxMaxBufferLength: 30,\n};\n","const ua = navigator.userAgent.toLowerCase();\n\nconst isMicromessenger = ua.indexOf('micromessenger') > 0;\nconst isAndroid = ua.indexOf('android') > 0;\nconst isWechat = isMicromessenger && ua.indexOf('wxwork') === -1;\nconst isWxwork = isMicromessenger && ua.indexOf('wxwork') > 0;\nconst isIOS = /iphone|ipad|ipod|ios/.test(ua);\n\nexport { isAndroid, isWechat, isWxwork, isIOS };\n","import { ref, onUnmounted, nextTick } from 'vue';\nimport { type Player, type VideoInfo, VideoStatus, PlayerOptions } from '../types';\nimport { isIOS, isAndroid, isWxwork } from './agent';\n\ndeclare global {\n interface Window {\n tcplayer: any;\n Hammer: any;\n }\n}\n\nexport function useVideoPlayer() {\n const isLoading = ref(false);\n const videoInfo = ref<VideoInfo>({\n status: VideoStatus.converted,\n });\n\n const usefakeFullscreen = isIOS || (isAndroid && isWxwork);\n\n const tcplayerInstance = ref<Player>();\n let isFullscreen = false;\n let isOrientationLocked = false;\n let panStart = 0;\n let videoPanStartTime = 0;\n let isLandscape = false;\n let isPlaying = false;\n let tcplayerSDK: any = null;\n\n const loadTcplayerPlugin = async (): Promise<any> => {\n if (tcplayerSDK) return tcplayerSDK;\n const { default: tcplayer } = await import('tcplayer.js');\n tcplayerSDK = tcplayer;\n return tcplayerSDK;\n };\n\n const onDoubleTap = (player: Player) => {\n if (!isFullscreen && !isOrientationLocked) return;\n\n if (isPlaying) {\n player?.pause();\n } else {\n player?.play();\n }\n };\n\n const onStart = (ev: any, player: Player) => {\n if (!isFullscreen || isOrientationLocked) return;\n panStart = ev.deltaY;\n videoPanStartTime = player.currentTime();\n };\n\n const onMove = (ev: any, player: Player) => {\n if (!isFullscreen || isOrientationLocked) return;\n\n const delta = isLandscape ? ev.deltaY : ev.deltaX;\n const containerWidth = isLandscape ? window.innerHeight : window.innerWidth;\n const percent = (delta - panStart) / containerWidth;\n const videoDuration = player.duration();\n let currentTime = videoPanStartTime + videoDuration * percent;\n\n if (currentTime < 0) currentTime = 0;\n if (currentTime > videoDuration) currentTime = videoDuration;\n\n player.currentTime(currentTime);\n };\n\n const initGesture = async (player: Player, container: HTMLElement) => {\n try {\n // 动态导入Hammer.js\n const { default: Hammer } = await import('hammerjs');\n\n await nextTick();\n const mc = new Hammer.Manager(container);\n\n mc.add(\n new Hammer.Pan({\n threshold: 10,\n pointers: 0,\n direction: Hammer.DIRECTION_ALL,\n }),\n );\n\n mc.add(new Hammer.Swipe()).recognizeWith(mc.get('pan'));\n mc.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n\n mc.on('doubletap', () => {\n onDoubleTap(player);\n });\n\n mc.on('panstart', (e: any) => {\n onStart(e, player);\n });\n\n mc.on('panmove', (e: any) => {\n onMove(e, player);\n });\n } catch {}\n };\n\n const bindFullscreenHandler = (player: Player) => {\n player.on('fullscreenchange', () => {\n isFullscreen = player.isFullscreen();\n const $el = player.el_;\n const $progressBar = $el.querySelector('.vjs-progress-control') as HTMLElement;\n isLandscape = player.videoWidth() > player.videoHeight();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n isOrientationLocked = window.orientation === 90 || window.orientation === -90;\n const shift = Math.floor(Math.abs((viewportWidth - viewportHeight) / 2));\n\n if (isLandscape) {\n if (isFullscreen) {\n Object.assign($el.style, {\n top: `${shift}px`,\n left: `-${shift}px`,\n });\n $el.classList.add('landscape');\n if ($progressBar) {\n $progressBar.style.pointerEvents = 'none';\n }\n } else {\n $el.classList.remove('landscape');\n $el.setAttribute('style', '');\n if ($progressBar) {\n $progressBar.style.pointerEvents = '';\n }\n }\n } else {\n if (!isWxwork) return;\n\n if (isFullscreen) {\n Object.assign($el.style, {\n width: '100vw',\n height: '100vh',\n position: 'fixed',\n zIndex: '999',\n top: '0px',\n });\n if ($progressBar) {\n $progressBar.style.pointerEvents = 'none';\n }\n } else {\n $el.removeAttribute('style');\n if ($progressBar) {\n $progressBar.style.pointerEvents = '';\n }\n }\n }\n });\n };\n\n const bindEvents = (selector: string, player: Player) => {\n player.on('play', () => {\n isPlaying = true;\n });\n\n player.on('pause', () => {\n isPlaying = false;\n });\n\n player.on('ended', () => {\n isPlaying = false;\n });\n\n const playerContainer = document?.getElementById(selector);\n if (playerContainer) {\n initGesture(player, playerContainer);\n }\n };\n\n const initPlayer = async (initData: PlayerOptions, selector: string) => {\n const tcplayerSDK = await loadTcplayerPlugin();\n tcplayerInstance.value = tcplayerSDK(selector, { ...initData, fakeFullscreen: usefakeFullscreen });\n if (!tcplayerInstance.value) return;\n bindEvents(selector, tcplayerInstance.value);\n isLoading.value = false;\n\n if (usefakeFullscreen) {\n bindFullscreenHandler(tcplayerInstance.value);\n }\n };\n\n const loadVideo = async (selector: string, options: PlayerOptions) => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n tcplayerInstance.value = undefined;\n }\n if (!selector || !options) return;\n isLoading.value = true;\n try {\n await initPlayer(options, selector);\n } catch {\n isLoading.value = false;\n }\n };\n\n onUnmounted(() => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n tcplayerInstance.value = undefined;\n }\n });\n\n return {\n loadVideo,\n tcplayerInstance,\n videoInfo,\n isLoading,\n };\n}\n","<template>\n <!-- 空模板,因为元素将手动添加到 Light DOM,否则会在#shandow-root(open)下,播放器sdk内部通过documnet无法获取到元素 -->\n <div id=\"tc-video-player-container\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, nextTick } from 'vue';\nimport { useVideoPlayer } from '../utils/player';\nimport type { Player, PlayerOptions } from '../types';\n\ninterface Props {\n selector?: string;\n options: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n selector: 'tcplayer',\n options: '',\n});\n\nconst emit = defineEmits<{\n (e: 'init', player: Player): void;\n (e: 'play' | 'pause' | 'ended' | 'error'): void;\n}>();\nconst { loadVideo, tcplayerInstance } = useVideoPlayer();\nconst videoElement = ref<HTMLVideoElement | null>(null);\n\nconst getHostElement = () => {\n const customElement =\n document.querySelector(`tc-video-player[selector=${props.selector}]`) ||\n document.querySelector('#tc-video-player-container');\n if (customElement && customElement instanceof HTMLElement) {\n return customElement;\n }\n return null;\n};\n\n// 创建并添加 video 元素到 Light DOM\nconst createVideoElement = () => {\n const hostElement = getHostElement();\n if (!hostElement) {\n return null;\n }\n const existingVideo = hostElement.querySelector(`#${props.selector}`);\n\n if (existingVideo) {\n existingVideo.remove();\n }\n const videoEl = document.createElement('video');\n videoEl.id = props.selector;\n videoEl.className = `tcplayer`;\n videoEl.setAttribute('preload', 'auto');\n videoEl.setAttribute('playsinline', '');\n videoEl.setAttribute('webkit-playsinline', '');\n videoEl.style.width = '100%';\n videoEl.style.height = '100%';\n videoEl.style.display = 'block';\n hostElement.parentNode?.appendChild(videoEl);\n return videoEl;\n};\n\nconst handleEmit = (method: string, params?: any) => {\n emit(method, params);\n};\n\n// 初始化播放器\nconst initializePlayer = async () => {\n if (!props.options || props.options === '{}') return;\n try {\n // 确保 video 元素存在\n if (!videoElement.value) {\n videoElement.value = createVideoElement();\n if (!videoElement.value) {\n return;\n }\n }\n await nextTick();\n const options = JSON.parse(props.options || '{}') as PlayerOptions;\n await loadVideo(props.selector, options);\n\n if (tcplayerInstance.value) {\n tcplayerInstance.value.on('play', handleEmit('play'));\n tcplayerInstance.value.on('pause', handleEmit('pause'));\n tcplayerInstance.value.on('ended', handleEmit('ended'));\n tcplayerInstance.value.on('error', handleEmit('error'));\n handleEmit('init', tcplayerInstance.value);\n }\n } catch {\n handleEmit('error');\n }\n};\n\n// 清理 video 元素\nconst cleanupVideoElement = () => {\n if (videoElement.value?.parentNode) {\n videoElement.value.parentNode.removeChild(videoElement.value);\n videoElement.value = null;\n }\n};\n\nonMounted(() => {\n // 使用 setTimeout 确保 DOM 已完全挂载\n setTimeout(() => {\n initializePlayer();\n }, 0);\n});\n\nonUnmounted(() => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n }\n cleanupVideoElement();\n});\n\nwatch(() => props.options, initializePlayer);\n</script>\n","import Vue from 'vue';\nimport wrap from '@vue/web-component-wrapper';\n\nimport 'tcplayer.js/dist/tcplayer.min.css';\nimport './styles/player.css';\nimport VideoPlayer from './components/VideoPlayer.vue';\n\n// 注册Web Components\nif (typeof window !== 'undefined' && window.customElements) {\n try {\n customElements.define('tc-video-player', VideoPlayerElement);\n const VideoPlayerElement = wrap(Vue, VideoPlayer);\n } catch {}\n}\nexport * from './types/index';\nexport default VideoPlayer;\n"],"names":["camelizeRE","camelize","str","_","c","hyphenateRE","hyphenate","getInitialProps","propsList","res","key","injectHook","options","hook","callHooks","vm","createCustomEvent","name","args","isBoolean","val","isNumber","convertAttributeValue","value","type","parsed","toVNodes","h","children","i","l","toVNode","node","data","getAttributes","attr","wrap","Vue","Component","isAsync","isInitialized","hyphenatedPropsList","camelizedPropsList","camelizedPropsMap","initialize","originalPropsAsObject","map","emit","CustomElement","newVal","syncAttribute","el","camelized","self","wrapper","mutations","hasChildrenChange","m","syncInitialAttributes","resolved","VideoStatus","HLSCONFIG","ua","isMicromessenger","isAndroid","isWxwork","isIOS","useVideoPlayer","isLoading","ref","videoInfo","usefakeFullscreen","tcplayerInstance","isFullscreen","isOrientationLocked","panStart","videoPanStartTime","isLandscape","isPlaying","tcplayerSDK","loadTcplayerPlugin","tcplayer","n","onDoubleTap","player","onStart","ev","onMove","delta","containerWidth","percent","videoDuration","currentTime","initGesture","container","Hammer","nextTick","mc","e","bindFullscreenHandler","$el","$progressBar","viewportWidth","viewportHeight","shift","bindEvents","selector","playerContainer","initPlayer","initData","loadVideo","onUnmounted","videoElement","getHostElement","customElement","props","createVideoElement","hostElement","existingVideo","videoEl","_a","handleEmit","method","params","initializePlayer","cleanupVideoElement","onMounted","watch","VideoPlayerElement","VideoPlayer"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"video-player.js","sources":["../node_modules/@vue/web-component-wrapper/dist/vue-wc-wrapper.js","../src/types/index.ts","../src/utils/agent.ts","../src/utils/player.ts","../src/components/VideoPlayer.vue","../src/index.ts"],"sourcesContent":["const camelizeRE = /-(\\w)/g;\nconst camelize = str => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = str => {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n};\n\nfunction getInitialProps (propsList) {\n const res = {};\n propsList.forEach(key => {\n res[key] = undefined;\n });\n return res\n}\n\nfunction injectHook (options, key, hook) {\n options[key] = [].concat(options[key] || []);\n options[key].unshift(hook);\n}\n\nfunction callHooks (vm, hook) {\n if (vm) {\n const hooks = vm.$options[hook] || [];\n hooks.forEach(hook => {\n hook.call(vm);\n });\n }\n}\n\nfunction createCustomEvent (name, args) {\n return new CustomEvent(name, {\n bubbles: false,\n cancelable: false,\n detail: args\n })\n}\n\nconst isBoolean = val => /function Boolean/.test(String(val));\nconst isNumber = val => /function Number/.test(String(val));\n\nfunction convertAttributeValue (value, name, { type } = {}) {\n if (isBoolean(type)) {\n if (value === 'true' || value === 'false') {\n return value === 'true'\n }\n if (value === '' || value === name || value != null) {\n return true\n }\n return value\n } else if (isNumber(type)) {\n const parsed = parseFloat(value, 10);\n return isNaN(parsed) ? value : parsed\n } else {\n return value\n }\n}\n\nfunction toVNodes (h, children) {\n const res = [];\n for (let i = 0, l = children.length; i < l; i++) {\n res.push(toVNode(h, children[i]));\n }\n return res\n}\n\nfunction toVNode (h, node) {\n if (node.nodeType === 3) {\n return node.data.trim() ? node.data : null\n } else if (node.nodeType === 1) {\n const data = {\n attrs: getAttributes(node),\n domProps: {\n innerHTML: node.innerHTML\n }\n };\n if (data.attrs.slot) {\n data.slot = data.attrs.slot;\n delete data.attrs.slot;\n }\n return h(node.tagName, data)\n } else {\n return null\n }\n}\n\nfunction getAttributes (node) {\n const res = {};\n for (let i = 0, l = node.attributes.length; i < l; i++) {\n const attr = node.attributes[i];\n res[attr.nodeName] = attr.nodeValue;\n }\n return res\n}\n\nfunction wrap (Vue, Component) {\n const isAsync = typeof Component === 'function' && !Component.cid;\n let isInitialized = false;\n let hyphenatedPropsList;\n let camelizedPropsList;\n let camelizedPropsMap;\n\n function initialize (Component) {\n if (isInitialized) return\n\n const options = typeof Component === 'function'\n ? Component.options\n : Component;\n\n // extract props info\n const propsList = Array.isArray(options.props)\n ? options.props\n : Object.keys(options.props || {});\n hyphenatedPropsList = propsList.map(hyphenate);\n camelizedPropsList = propsList.map(camelize);\n const originalPropsAsObject = Array.isArray(options.props) ? {} : options.props || {};\n camelizedPropsMap = camelizedPropsList.reduce((map, key, i) => {\n map[key] = originalPropsAsObject[propsList[i]];\n return map\n }, {});\n\n // proxy $emit to native DOM events\n injectHook(options, 'beforeCreate', function () {\n const emit = this.$emit;\n this.$emit = (name, ...args) => {\n this.$root.$options.customElement.dispatchEvent(createCustomEvent(name, args));\n return emit.call(this, name, ...args)\n };\n });\n\n injectHook(options, 'created', function () {\n // sync default props values to wrapper on created\n camelizedPropsList.forEach(key => {\n this.$root.props[key] = this[key];\n });\n });\n\n // proxy props as Element properties\n camelizedPropsList.forEach(key => {\n Object.defineProperty(CustomElement.prototype, key, {\n get () {\n return this._wrapper.props[key]\n },\n set (newVal) {\n this._wrapper.props[key] = newVal;\n },\n enumerable: false,\n configurable: true\n });\n });\n\n isInitialized = true;\n }\n\n function syncAttribute (el, key) {\n const camelized = camelize(key);\n const value = el.hasAttribute(key) ? el.getAttribute(key) : undefined;\n el._wrapper.props[camelized] = convertAttributeValue(\n value,\n key,\n camelizedPropsMap[camelized]\n );\n }\n\n class CustomElement extends HTMLElement {\n constructor () {\n const self = super();\n self.attachShadow({ mode: 'open' });\n\n const wrapper = self._wrapper = new Vue({\n name: 'shadow-root',\n customElement: self,\n shadowRoot: self.shadowRoot,\n data () {\n return {\n props: {},\n slotChildren: []\n }\n },\n render (h) {\n return h(Component, {\n ref: 'inner',\n props: this.props\n }, this.slotChildren)\n }\n });\n\n // Use MutationObserver to react to future attribute & slot content change\n const observer = new MutationObserver(mutations => {\n let hasChildrenChange = false;\n for (let i = 0; i < mutations.length; i++) {\n const m = mutations[i];\n if (isInitialized && m.type === 'attributes' && m.target === self) {\n syncAttribute(self, m.attributeName);\n } else {\n hasChildrenChange = true;\n }\n }\n if (hasChildrenChange) {\n wrapper.slotChildren = Object.freeze(toVNodes(\n wrapper.$createElement,\n self.childNodes\n ));\n }\n });\n observer.observe(self, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n }\n\n get vueComponent () {\n return this._wrapper.$refs.inner\n }\n\n connectedCallback () {\n const wrapper = this._wrapper;\n if (!wrapper._isMounted) {\n // initialize attributes\n const syncInitialAttributes = () => {\n wrapper.props = getInitialProps(camelizedPropsList);\n hyphenatedPropsList.forEach(key => {\n syncAttribute(this, key);\n });\n };\n\n if (isInitialized) {\n syncInitialAttributes();\n } else {\n // async & unresolved\n Component().then(resolved => {\n if (resolved.__esModule || resolved[Symbol.toStringTag] === 'Module') {\n resolved = resolved.default;\n }\n initialize(resolved);\n syncInitialAttributes();\n });\n }\n // initialize children\n wrapper.slotChildren = Object.freeze(toVNodes(\n wrapper.$createElement,\n this.childNodes\n ));\n wrapper.$mount();\n this.shadowRoot.appendChild(wrapper.$el);\n } else {\n callHooks(this.vueComponent, 'activated');\n }\n }\n\n disconnectedCallback () {\n callHooks(this.vueComponent, 'deactivated');\n }\n }\n\n if (!isAsync) {\n initialize(Component);\n }\n\n return CustomElement\n}\n\nexport default wrap;\n","export interface SignatureData {\n app_id: string;\n file_id: string;\n vod_cover_url: string;\n status: VideoStatus;\n psign?: string;\n t?: string;\n us?: string;\n sign?: string;\n hls_token?: string;\n exper?: string;\n realtime_url?: string;\n}\n\nexport enum VideoStatus {\n 'converted' = 'converted',\n 'failed' = 'failed',\n 'uploading' = 'uploading',\n 'uploaded' = 'uploaded',\n 'converting' = 'converting',\n}\n\nexport interface VideoInfo {\n status?: VideoStatus;\n}\n\nexport interface Player {\n play: () => void;\n pause: () => void;\n currentTime: (time?: number) => number;\n seek: (time: number) => void;\n dispose: () => void;\n on: (event: string, cb: Function) => void;\n duration: () => number;\n isFullscreen: () => boolean;\n videoWidth: () => number;\n videoHeight: () => number;\n options: () => any;\n el_: HTMLElement;\n}\n\nexport interface PlayerOptions {\n poster: string;\n controlBar: {\n cssFullscreenToggle: boolean;\n pictureInPictureToggle: boolean;\n };\n licenseUrl: string;\n hlsConfig: {\n maxBufferLength: number;\n maxBufferSize: number;\n maxMaxBufferLength: number;\n };\n sources?: Array<{ src: string }>;\n psign?: string;\n appID?: string;\n fileID?: string;\n exper?: string;\n plugins?: any;\n}\n\nexport const HLSCONFIG = {\n maxBufferLength: 10,\n maxBufferSize: 40 * 1024 * 1024,\n maxMaxBufferLength: 30,\n};\n","const ua = navigator.userAgent.toLowerCase();\n\nconst isMicromessenger = ua.indexOf('micromessenger') > 0;\nconst isAndroid = ua.indexOf('android') > 0;\nconst isWechat = isMicromessenger && ua.indexOf('wxwork') === -1;\nconst isWxwork = isMicromessenger && ua.indexOf('wxwork') > 0;\nconst isIOS = /iphone|ipad|ipod|ios/.test(ua);\n\nexport { isAndroid, isWechat, isWxwork, isIOS };\n","import { ref, onUnmounted, nextTick } from 'vue';\nimport { type Player, type VideoInfo, VideoStatus, PlayerOptions } from '../types';\nimport { isIOS, isAndroid, isWxwork } from './agent';\n\ndeclare global {\n interface Window {\n tcplayer: any;\n Hammer: any;\n }\n}\n\nexport function useVideoPlayer() {\n const isLoading = ref(false);\n const videoInfo = ref<VideoInfo>({\n status: VideoStatus.converted,\n });\n\n const usefakeFullscreen = isIOS || (isAndroid && isWxwork);\n\n const tcplayerInstance = ref<Player>();\n let isFullscreen = false;\n let isOrientationLocked = false;\n let panStart = 0;\n let videoPanStartTime = 0;\n let isLandscape = false;\n let isPlaying = false;\n let tcplayerSDK: any = null;\n\n const loadTcplayerPlugin = async (): Promise<any> => {\n if (tcplayerSDK) return tcplayerSDK;\n const { default: tcplayer } = await import('tcplayer.js');\n tcplayerSDK = tcplayer;\n return tcplayerSDK;\n };\n\n const onDoubleTap = (player: Player) => {\n if (!isFullscreen && !isOrientationLocked) return;\n\n if (isPlaying) {\n player?.pause();\n } else {\n player?.play();\n }\n };\n\n const onStart = (ev: any, player: Player) => {\n if (!isFullscreen || isOrientationLocked) return;\n panStart = ev.deltaY;\n videoPanStartTime = player.currentTime();\n };\n\n const onMove = (ev: any, player: Player) => {\n if (!isFullscreen || isOrientationLocked) return;\n\n const delta = isLandscape ? ev.deltaY : ev.deltaX;\n const containerWidth = isLandscape ? window.innerHeight : window.innerWidth;\n const percent = (delta - panStart) / containerWidth;\n const videoDuration = player.duration();\n let currentTime = videoPanStartTime + videoDuration * percent;\n\n if (currentTime < 0) currentTime = 0;\n if (currentTime > videoDuration) currentTime = videoDuration;\n\n player.currentTime(currentTime);\n };\n\n const initGesture = async (player: Player, container: HTMLElement) => {\n try {\n // 动态导入Hammer.js\n const { default: Hammer } = await import('hammerjs');\n\n await nextTick();\n const mc = new Hammer.Manager(container);\n\n mc.add(\n new Hammer.Pan({\n threshold: 10,\n pointers: 0,\n direction: Hammer.DIRECTION_ALL,\n }),\n );\n\n mc.add(new Hammer.Swipe()).recognizeWith(mc.get('pan'));\n mc.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n\n mc.on('doubletap', () => {\n onDoubleTap(player);\n });\n\n mc.on('panstart', (e: any) => {\n onStart(e, player);\n });\n\n mc.on('panmove', (e: any) => {\n onMove(e, player);\n });\n } catch {}\n };\n\n const bindFullscreenHandler = (player: Player) => {\n player.on('fullscreenchange', () => {\n isFullscreen = player.isFullscreen();\n const $el = player.el_;\n const $progressBar = $el.querySelector('.vjs-progress-control') as HTMLElement;\n isLandscape = player.videoWidth() > player.videoHeight();\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n isOrientationLocked = window.orientation === 90 || window.orientation === -90;\n const shift = Math.floor(Math.abs((viewportWidth - viewportHeight) / 2));\n\n if (isLandscape) {\n if (isFullscreen) {\n Object.assign($el.style, {\n top: `${shift}px`,\n left: `-${shift}px`,\n });\n $el.classList.add('landscape');\n if ($progressBar) {\n $progressBar.style.pointerEvents = 'none';\n }\n } else {\n $el.classList.remove('landscape');\n $el.setAttribute('style', '');\n if ($progressBar) {\n $progressBar.style.pointerEvents = '';\n }\n }\n } else {\n if (!isWxwork) return;\n\n if (isFullscreen) {\n Object.assign($el.style, {\n width: '100vw',\n height: '100vh',\n position: 'fixed',\n zIndex: '999',\n top: '0px',\n });\n if ($progressBar) {\n $progressBar.style.pointerEvents = 'none';\n }\n } else {\n $el.removeAttribute('style');\n if ($progressBar) {\n $progressBar.style.pointerEvents = '';\n }\n }\n }\n });\n };\n\n const bindEvents = (selector: string, player: Player) => {\n player.on('play', () => {\n isPlaying = true;\n });\n\n player.on('pause', () => {\n isPlaying = false;\n });\n\n player.on('ended', () => {\n isPlaying = false;\n });\n\n const playerContainer = document?.getElementById(selector);\n if (playerContainer) {\n initGesture(player, playerContainer);\n }\n };\n\n const initPlayer = async (initData: PlayerOptions, selector: string) => {\n const tcplayerSDK = await loadTcplayerPlugin();\n tcplayerInstance.value = tcplayerSDK(selector, { ...initData, fakeFullscreen: usefakeFullscreen });\n if (!tcplayerInstance.value) return;\n bindEvents(selector, tcplayerInstance.value);\n isLoading.value = false;\n\n if (usefakeFullscreen) {\n bindFullscreenHandler(tcplayerInstance.value);\n }\n };\n\n const loadVideo = async (selector: string, options: PlayerOptions) => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n tcplayerInstance.value = undefined;\n }\n if (!selector || !options) return;\n isLoading.value = true;\n try {\n await initPlayer(options, selector);\n } catch {\n isLoading.value = false;\n }\n };\n\n onUnmounted(() => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n tcplayerInstance.value = undefined;\n }\n });\n\n return {\n loadVideo,\n tcplayerInstance,\n videoInfo,\n isLoading,\n };\n}\n","<template>\n <!-- 空模板,因为元素将手动添加到 Light DOM,否则会在#shandow-root(open)下,播放器sdk内部通过documnet无法获取到元素 -->\n <div id=\"lx-video-player-container\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, watch, nextTick } from 'vue';\nimport { useVideoPlayer } from '../utils/player';\nimport type { Player, PlayerOptions } from '../types';\n\ninterface Props {\n selector?: string;\n options: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n selector: 'tcplayer',\n options: '',\n});\n\nconst emit = defineEmits<{\n (e: 'init', player: Player): void;\n (e: 'play' | 'pause' | 'ended' | 'error'): void;\n}>();\nconst { loadVideo, tcplayerInstance } = useVideoPlayer();\nconst videoElement = ref<HTMLVideoElement | null>(null);\n\nconst getHostElement = () => {\n const customElement =\n document.querySelector(`lx-video-player[selector=${props.selector}]`) ||\n document.querySelector('#lx-video-player-container');\n if (customElement && customElement instanceof HTMLElement) {\n return customElement;\n }\n return null;\n};\n\n// 创建并添加 video 元素到 Light DOM\nconst createVideoElement = () => {\n const hostElement = getHostElement();\n if (!hostElement) {\n return null;\n }\n const existingVideo = hostElement.querySelector(`#${props.selector}`);\n\n if (existingVideo) {\n existingVideo.remove();\n }\n const videoEl = document.createElement('video');\n videoEl.id = props.selector;\n videoEl.className = `tcplayer`;\n videoEl.setAttribute('preload', 'auto');\n videoEl.setAttribute('playsinline', '');\n videoEl.setAttribute('webkit-playsinline', '');\n videoEl.style.width = '100%';\n videoEl.style.height = '100%';\n videoEl.style.display = 'block';\n hostElement.parentNode?.appendChild(videoEl);\n return videoEl;\n};\n\nconst handleEmit = (method: string, params?: any) => {\n emit(method, params);\n};\n\n// 初始化播放器\nconst initializePlayer = async () => {\n if (!props.options || props.options === '{}') return;\n try {\n // 确保 video 元素存在\n if (!videoElement.value) {\n videoElement.value = createVideoElement();\n if (!videoElement.value) {\n return;\n }\n }\n await nextTick();\n const options = JSON.parse(props.options || '{}') as PlayerOptions;\n await loadVideo(props.selector, options);\n\n if (tcplayerInstance.value) {\n tcplayerInstance.value.on('play', handleEmit('play'));\n tcplayerInstance.value.on('pause', handleEmit('pause'));\n tcplayerInstance.value.on('ended', handleEmit('ended'));\n tcplayerInstance.value.on('error', handleEmit('error'));\n handleEmit('init', tcplayerInstance.value);\n }\n } catch {\n handleEmit('error');\n }\n};\n\n// 清理 video 元素\nconst cleanupVideoElement = () => {\n if (videoElement.value?.parentNode) {\n videoElement.value.parentNode.removeChild(videoElement.value);\n videoElement.value = null;\n }\n};\n\nonMounted(() => {\n // 使用 setTimeout 确保 DOM 已完全挂载\n setTimeout(() => {\n initializePlayer();\n }, 0);\n});\n\nonUnmounted(() => {\n if (tcplayerInstance.value) {\n tcplayerInstance.value.dispose();\n }\n cleanupVideoElement();\n});\n\nwatch(() => props.options, initializePlayer);\n</script>\n","import Vue from 'vue';\nimport wrap from '@vue/web-component-wrapper';\n\nimport 'tcplayer.js/dist/tcplayer.min.css';\nimport './styles/player.css';\nimport VideoPlayer from './components/VideoPlayer.vue';\n\n// 注册Web Components\nif (typeof window !== 'undefined' && window.customElements) {\n try {\n const VideoPlayerElement = wrap(Vue, VideoPlayer);\n customElements.define('lx-video-player', VideoPlayerElement);\n } catch {}\n}\nexport * from './types/index';\nexport default VideoPlayer;\n"],"names":["camelizeRE","camelize","str","_","c","hyphenateRE","hyphenate","getInitialProps","propsList","res","key","injectHook","options","hook","callHooks","vm","createCustomEvent","name","args","isBoolean","val","isNumber","convertAttributeValue","value","type","parsed","toVNodes","h","children","i","l","toVNode","node","data","getAttributes","attr","wrap","Vue","Component","isAsync","isInitialized","hyphenatedPropsList","camelizedPropsList","camelizedPropsMap","initialize","originalPropsAsObject","map","emit","CustomElement","newVal","syncAttribute","el","camelized","self","wrapper","mutations","hasChildrenChange","m","syncInitialAttributes","resolved","VideoStatus","HLSCONFIG","ua","isMicromessenger","isAndroid","isWxwork","isIOS","useVideoPlayer","isLoading","ref","videoInfo","usefakeFullscreen","tcplayerInstance","isFullscreen","isOrientationLocked","panStart","videoPanStartTime","isLandscape","isPlaying","tcplayerSDK","loadTcplayerPlugin","tcplayer","n","onDoubleTap","player","onStart","ev","onMove","delta","containerWidth","percent","videoDuration","currentTime","initGesture","container","Hammer","nextTick","mc","e","bindFullscreenHandler","$el","$progressBar","viewportWidth","viewportHeight","shift","bindEvents","selector","playerContainer","initPlayer","initData","loadVideo","onUnmounted","videoElement","getHostElement","customElement","props","createVideoElement","hostElement","existingVideo","videoEl","_a","handleEmit","method","params","initializePlayer","cleanupVideoElement","onMounted","watch","VideoPlayerElement","VideoPlayer"],"mappings":"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","x_google_ignoreList":[0]}
|