Package not found. Please check the package name and try again.
@videojs/html 10.0.0-beta.2 → 10.0.0-beta.4
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/cdn/audio-minimal.css +1 -1
- package/cdn/audio-minimal.dev.js +197 -126
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +5 -5
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio.css +1 -1
- package/cdn/audio.dev.js +191 -120
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +5 -5
- package/cdn/audio.js.map +1 -1
- package/cdn/background.dev.js +40 -25
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +4 -4
- package/cdn/background.js.map +1 -1
- package/cdn/media/hls-video.dev.js +0 -1
- package/cdn/media/hls-video.dev.js.map +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/simple-hls-video.dev.js +178 -158
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +1 -1
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/video-minimal.css +1 -1
- package/cdn/video-minimal.dev.js +220 -161
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +5 -5
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video.css +1 -1
- package/cdn/video.dev.js +217 -158
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +4 -4
- package/cdn/video.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +8 -2
- package/dist/default/define/audio/minimal-skin.js +2 -1
- package/dist/default/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.tailwind.js +5 -2
- package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/audio/skin.css +7 -5
- package/dist/default/define/audio/skin.js +2 -1
- package/dist/default/define/audio/skin.js.map +1 -1
- package/dist/default/define/audio/skin.tailwind.js +5 -2
- package/dist/default/define/audio/skin.tailwind.js.map +1 -1
- package/dist/default/define/base.css +25 -0
- package/dist/default/define/shared.css +3 -0
- package/dist/default/define/skin-mixin.js +10 -18
- package/dist/default/define/skin-mixin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.css +35 -73
- package/dist/default/define/video/minimal-skin.js +2 -1
- package/dist/default/define/video/minimal-skin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js +4 -4
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/skin.css +32 -71
- package/dist/default/define/video/skin.js +2 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +5 -4
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/default/store/container-mixin.js +22 -10
- package/dist/default/store/container-mixin.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +8 -2
- package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.js +67 -64
- package/dist/dev/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.js +71 -66
- package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/audio/skin.css +7 -5
- package/dist/dev/define/audio/skin.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.js +59 -56
- package/dist/dev/define/audio/skin.js.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.js +64 -59
- package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/define/base.css +25 -0
- package/dist/dev/define/shared.css +3 -0
- package/dist/dev/define/skin-mixin.d.ts +2 -2
- package/dist/dev/define/skin-mixin.d.ts.map +1 -1
- package/dist/dev/define/skin-mixin.js +10 -32
- package/dist/dev/define/skin-mixin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.css +35 -73
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +92 -101
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +98 -108
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/skin.css +32 -71
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +82 -91
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +93 -102
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/{default/skins/dist/default/minimal/tailwind/components → dev/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/dev/store/container-mixin.js +22 -10
- package/dist/dev/store/container-mixin.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/package.json +7 -7
- package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
- package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
- package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +0 -15
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +0 -15
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
- package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/define/audio/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-default-skin media-default-skin--audio\">\n <slot name=\"media\"></slot>\n\n <div class=\"media-surface media-controls\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n
|
|
1
|
+
{"version":3,"file":"skin.js","names":["styles"],"sources":["../../../../src/define/audio/skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-default-skin media-default-skin--audio\">\n <slot name=\"media\"></slot>\n\n <div class=\"media-surface media-controls\">\n <media-tooltip-group>\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value\"></media-time>\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n </media-time-slider>\n <media-time type=\"duration\" class=\"media-time__value\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-surface media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-surface media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </media-tooltip-group>\n </div>\n </media-container>\n `;\n}\n\nexport class AudioSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(AudioSkinElement.tagName, AudioSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioSkinElement.tagName]: AudioSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;;;;;;;cAOJ,WAAW,WAAW,EAAE,OAAO,kCAAkC,CAAC,CAAC;cACnE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;cAC7D,WAAW,SAAS,EAAE,OAAO,gCAAgC,CAAC,CAAC;;;;;;;;2EAQF,CAAC,UAAU;;gBAEtE,WAAW,QAAQ,EAAE,OAAO,mDAAmD,CAAC,CAAC;gDACjD,UAAU;;;;4BAI9B,UAAU;;;0EAGoC,UAAU;;gBAEpE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;gDAC7B,UAAU;;;;2BAI/B,UAAU;;;;;;;;;;;;;;;;;;;;;cAqBvB,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;cACzE,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;cACzE,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;;;;;;;;;AAiBzF,IAAa,mBAAb,cAAsC,UAAU,gBAAgB,CAAC;;iBACrC;;;gBACV,aAAaA,aAAO;;;yBACX;;;AAG3B,eAAe,OAAO,iBAAiB,SAAS,iBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/audio/skin.tailwind.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/audio/skin.tailwind.ts"],"mappings":";;;iBAmCS,eAAA,CAAA;AAAA,cAAe,6BAAA;;;;cA6EX,wBAAA,SAAiC,6BAAA;EAAA,gBAC5B,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,wBAAA,CAAyB,OAAA,GAAU,wBAAA;EAAA;AAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { SkinMixin } from "../skin-mixin.js";
|
|
2
|
+
import { iconState } from "../../skins/dist/default/shared/tailwind/icon-state.js";
|
|
3
|
+
import { tooltipState } from "../../skins/dist/default/shared/tailwind/tooltip-state.js";
|
|
2
4
|
import "../media/container.js";
|
|
3
5
|
import "../ui/mute-button.js";
|
|
4
6
|
import "../ui/play-button.js";
|
|
@@ -8,6 +10,7 @@ import "../ui/seek-button.js";
|
|
|
8
10
|
import "../ui/time.js";
|
|
9
11
|
import "../ui/time-slider.js";
|
|
10
12
|
import "../ui/tooltip.js";
|
|
13
|
+
import "../ui/tooltip-group.js";
|
|
11
14
|
import "../ui/volume-slider.js";
|
|
12
15
|
import { button } from "../../skins/dist/default/default/tailwind/components/button.js";
|
|
13
16
|
import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/default/tailwind/components/icon.js";
|
|
@@ -16,7 +19,7 @@ import { root } from "../../skins/dist/default/default/tailwind/components/root.
|
|
|
16
19
|
import { seek } from "../../skins/dist/default/default/tailwind/components/seek.js";
|
|
17
20
|
import { time } from "../../skins/dist/default/default/tailwind/components/time.js";
|
|
18
21
|
import { renderIcon } from "../../icons/dist/render/default/index.js";
|
|
19
|
-
import { controls,
|
|
22
|
+
import { controls, popup, slider } from "../../skins/dist/default/default/tailwind/audio.tailwind.js";
|
|
20
23
|
import { ReactiveElement } from "@videojs/element";
|
|
21
24
|
import { cn } from "@videojs/utils/style";
|
|
22
25
|
|
|
@@ -28,70 +31,72 @@ function getTemplateHTML() {
|
|
|
28
31
|
<slot name="media"></slot>
|
|
29
32
|
|
|
30
33
|
<div class="${controls}">
|
|
31
|
-
<
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
|
|
45
|
-
<span class="${iconContainer}">
|
|
46
|
-
${renderIcon("seek", { class: cn(icon, iconFlipped) })}
|
|
47
|
-
<span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span>
|
|
34
|
+
<media-tooltip-group class="contents">
|
|
35
|
+
<span class="${tooltipState.play.wrapper}">
|
|
36
|
+
<media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}">
|
|
37
|
+
${renderIcon("restart", { class: cn(icon, iconState.play.restart) })}
|
|
38
|
+
${renderIcon("play", { class: cn(icon, iconState.play.play) })}
|
|
39
|
+
${renderIcon("pause", { class: cn(icon, iconState.play.pause) })}
|
|
40
|
+
</media-play-button>
|
|
41
|
+
<media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}">
|
|
42
|
+
<span class="${tooltipState.play.replay}">Replay</span>
|
|
43
|
+
<span class="${tooltipState.play.play}">Play</span>
|
|
44
|
+
<span class="${tooltipState.play.pause}">Pause</span>
|
|
45
|
+
</media-tooltip>
|
|
48
46
|
</span>
|
|
49
|
-
</media-seek-button>
|
|
50
|
-
<media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}">
|
|
51
|
-
Seek backward ${SEEK_TIME} seconds
|
|
52
|
-
</media-tooltip>
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
48
|
+
<media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
|
|
49
|
+
<span class="${iconContainer}">
|
|
50
|
+
${renderIcon("seek", { class: cn(icon, iconFlipped) })}
|
|
51
|
+
<span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span>
|
|
52
|
+
</span>
|
|
53
|
+
</media-seek-button>
|
|
54
|
+
<media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}">
|
|
55
|
+
Seek backward ${SEEK_TIME} seconds
|
|
56
|
+
</media-tooltip>
|
|
63
57
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
</media-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
<media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
|
|
59
|
+
<span class="${iconContainer}">
|
|
60
|
+
${renderIcon("seek", { class: icon })}
|
|
61
|
+
<span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span>
|
|
62
|
+
</span>
|
|
63
|
+
</media-seek-button>
|
|
64
|
+
<media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}">
|
|
65
|
+
Seek forward ${SEEK_TIME} seconds
|
|
66
|
+
</media-tooltip>
|
|
67
|
+
|
|
68
|
+
<media-time-group class="${time.group}">
|
|
69
|
+
<media-time type="current" class="${time.current}"></media-time>
|
|
70
|
+
<media-time-slider class="${slider.root}">
|
|
71
|
+
<media-slider-track class="${slider.track}">
|
|
72
|
+
<media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
|
|
73
|
+
<media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer>
|
|
74
|
+
</media-slider-track>
|
|
75
|
+
<media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb>
|
|
76
|
+
</media-time-slider>
|
|
77
|
+
<media-time type="duration" class="${time.duration}"></media-time>
|
|
78
|
+
</media-time-group>
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
<media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button>
|
|
81
|
+
<media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}">
|
|
82
|
+
Toggle playback rate
|
|
83
|
+
</media-tooltip>
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
<media-mute-button commandfor="audio-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}">
|
|
86
|
+
${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })}
|
|
87
|
+
${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })}
|
|
88
|
+
${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })}
|
|
89
|
+
</media-mute-button>
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
<media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.popover, popup.volume)}">
|
|
92
|
+
<media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge">
|
|
93
|
+
<media-slider-track class="${slider.track}">
|
|
94
|
+
<media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
|
|
95
|
+
</media-slider-track>
|
|
96
|
+
<media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.persistent)}"></media-slider-thumb>
|
|
97
|
+
</media-volume-slider>
|
|
98
|
+
</media-popover>
|
|
99
|
+
</media-tooltip-group>
|
|
95
100
|
</div>
|
|
96
101
|
</media-container>
|
|
97
102
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.tailwind.js","names":[],"sources":["../../../../src/define/audio/skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n button,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n playbackRate,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/default/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root}\">\n <slot name=\"media\"></slot>\n\n <div class=\"${controls}\">\n <span class=\"${tooltipState.play.wrapper}\">\n
|
|
1
|
+
{"version":3,"file":"skin.tailwind.js","names":[],"sources":["../../../../src/define/audio/skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render';\nimport {\n button,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n playbackRate,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/default/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root}\">\n <slot name=\"media\"></slot>\n\n <div class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n </media-time-slider>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.popover, popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.persistent)}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </media-tooltip-group>\n </div>\n </media-container>\n `;\n}\n\nexport class AudioSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(AudioSkinTailwindElement.tagName, AudioSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioSkinTailwindElement.tagName]: AudioSkinTailwindElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;8BACY,KAAK;;;oBAGf,SAAS;;yBAEJ,aAAa,KAAK,QAAQ;kEACe,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;gBACtG,WAAW,WAAW,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,QAAQ,EAAE,CAAC,CAAC;gBACnE,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC7D,WAAW,SAAS,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;;iEAEd,GAAG,MAAM,QAAQ,CAAC;6BACtD,aAAa,KAAK,OAAO;6BACzB,aAAa,KAAK,KAAK;6BACvB,aAAa,KAAK,MAAM;;;;2EAIsB,CAAC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;2BAChH,cAAc;gBACzB,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC;6BACxC,GAAG,KAAK,OAAO,KAAK,cAAc,CAAC,IAAI,UAAU;;;wEAGN,GAAG,MAAM,QAAQ,CAAC;4BAC9D,UAAU;;;0EAGoC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;2BAC9G,cAAc;gBACzB,WAAW,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC;6BACvB,GAAG,KAAK,OAAO,KAAK,aAAa,CAAC,IAAI,UAAU;;;uEAGN,GAAG,MAAM,QAAQ,CAAC;2BAC9D,UAAU;;;qCAGA,KAAK,MAAM;gDACA,KAAK,QAAQ;wCACrB,OAAO,KAAK;2CACT,OAAO,MAAM;4CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;8CACrC,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC;;2CAE5C,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,YAAY,CAAC;;iDAE1C,KAAK,SAAS;;;mFAGoB,GAAG,OAAO,MAAM,OAAO,MAAM,aAAa,OAAO,CAAC;wEAC7D,GAAG,MAAM,QAAQ,CAAC;;;;wEAIlB,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;cAC9G,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;cACxE,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;cACxE,WAAW,eAAe,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,WAAW,EAAE,CAAC,CAAC;;;mHAG2B,GAAG,MAAM,SAAS,MAAM,OAAO,CAAC;0CACzG,OAAO,KAAK;2CACX,OAAO,MAAM;4CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;;2CAExC,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,WAAW,CAAC;;;;;;;;AAS1F,IAAa,2BAAb,cAA8C,UAAU,gBAAgB,CAAC;;iBAC7C;;;yBACD;;;AAG3B,eAAe,OAAO,yBAAyB,SAAS,yBAAyB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
video-player {
|
|
2
|
+
display: contents;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
video-player video,
|
|
6
|
+
video-player hls-video,
|
|
7
|
+
video-player simple-hls-video {
|
|
8
|
+
display: block;
|
|
9
|
+
width: 100%;
|
|
10
|
+
height: 100%;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
video-player video::-webkit-media-text-track-container {
|
|
14
|
+
transition: transform var(--media-caption-track-duration, 150ms) ease-out;
|
|
15
|
+
transition-delay: var(--media-caption-track-delay, 600ms);
|
|
16
|
+
transform: translateY(var(--media-caption-track-y, 0)) scale(0.98);
|
|
17
|
+
z-index: var(--media-caption-track-z, 1);
|
|
18
|
+
font-family: inherit;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (prefers-reduced-motion: reduce) {
|
|
22
|
+
video-player video::-webkit-media-text-track-container {
|
|
23
|
+
transition-duration: 50ms;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -7,8 +7,8 @@ import { Constructor } from "@videojs/utils/types";
|
|
|
7
7
|
* `getTemplateHTML` method into a shadow root. Native `<slot>` elements
|
|
8
8
|
* handle light DOM projection automatically.
|
|
9
9
|
*
|
|
10
|
-
* When `static styles` is set, the stylesheet is adopted into the
|
|
11
|
-
* root via `adoptedStyleSheets`.
|
|
10
|
+
* When `static styles` is set, the stylesheet is adopted into the
|
|
11
|
+
* shadow root via `adoptedStyleSheets`.
|
|
12
12
|
*/
|
|
13
13
|
declare function SkinMixin<Base extends Constructor<ReactiveElement>>(BaseClass: Base): Base & {
|
|
14
14
|
shadowRootOptions: ShadowRootInit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-mixin.d.ts","names":[],"sources":["../../../src/define/skin-mixin.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"skin-mixin.d.ts","names":[],"sources":["../../../src/define/skin-mixin.ts"],"mappings":";;;;;;AAsBA;;;;;;iBAAgB,SAAA,cAAuB,WAAA,CAAY,eAAA,EAAA,CACjD,SAAA,EAAW,IAAA,GACV,IAAA;EAAS,iBAAA,EAAmB,cAAA;EAAgB,MAAA,GAAS,aAAA;AAAA;;iBA6BxC,YAAA,CAAa,GAAA,WAAc,aAAA"}
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Light DOM stylesheet that bridges CSS custom properties set by skins
|
|
4
|
-
* to native WebKit text track pseudo-elements on the slotted `<video>`.
|
|
5
|
-
*
|
|
6
|
-
* `::slotted(video)::-webkit-media-text-track-container` is invalid per
|
|
7
|
-
* CSS spec, so this bridge lives in light DOM where it can directly
|
|
8
|
-
* target the video element's pseudo-elements.
|
|
9
|
-
*/
|
|
10
|
-
const NATIVE_CAPTION_BRIDGE_CSS = `
|
|
11
|
-
.media-skin > video::-webkit-media-text-track-container {
|
|
12
|
-
transition: transform var(--media-caption-track-duration, 150ms) ease-out;
|
|
13
|
-
transition-delay: var(--media-caption-track-delay, 600ms);
|
|
14
|
-
transform: translateY(var(--media-caption-track-y, 0)) scale(0.98);
|
|
15
|
-
z-index: var(--media-caption-track-z, 1);
|
|
16
|
-
font-family: inherit;
|
|
17
|
-
}
|
|
1
|
+
import base_default from "../_virtual/inline-css_src/define/base.js";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
`;
|
|
25
|
-
const BRIDGE_ID = "media-caption-bridge";
|
|
26
|
-
function ensureCaptionBridge() {
|
|
27
|
-
if (document.getElementById(BRIDGE_ID)) return;
|
|
3
|
+
//#region src/define/skin-mixin.ts
|
|
4
|
+
const STYLES_ID = "__media-styles";
|
|
5
|
+
function ensureStyles() {
|
|
6
|
+
if (document.getElementById(STYLES_ID)) return;
|
|
28
7
|
const style = document.createElement("style");
|
|
29
|
-
style.id =
|
|
30
|
-
style.textContent =
|
|
8
|
+
style.id = STYLES_ID;
|
|
9
|
+
style.textContent = base_default;
|
|
31
10
|
document.head.appendChild(style);
|
|
32
11
|
}
|
|
33
12
|
/**
|
|
@@ -35,8 +14,8 @@ function ensureCaptionBridge() {
|
|
|
35
14
|
* `getTemplateHTML` method into a shadow root. Native `<slot>` elements
|
|
36
15
|
* handle light DOM projection automatically.
|
|
37
16
|
*
|
|
38
|
-
* When `static styles` is set, the stylesheet is adopted into the
|
|
39
|
-
* root via `adoptedStyleSheets`.
|
|
17
|
+
* When `static styles` is set, the stylesheet is adopted into the
|
|
18
|
+
* shadow root via `adoptedStyleSheets`.
|
|
40
19
|
*/
|
|
41
20
|
function SkinMixin(BaseClass) {
|
|
42
21
|
class SkinElement extends BaseClass {
|
|
@@ -45,8 +24,7 @@ function SkinMixin(BaseClass) {
|
|
|
45
24
|
}
|
|
46
25
|
constructor(...args) {
|
|
47
26
|
super(...args);
|
|
48
|
-
|
|
49
|
-
ensureCaptionBridge();
|
|
27
|
+
ensureStyles();
|
|
50
28
|
if (!this.shadowRoot) {
|
|
51
29
|
const ctor = this.constructor;
|
|
52
30
|
this.attachShadow(ctor.shadowRootOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-mixin.js","names":[],"sources":["../../../src/define/skin-mixin.ts"],"sourcesContent":["import type { ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\
|
|
1
|
+
{"version":3,"file":"skin-mixin.js","names":["styles"],"sources":["../../../src/define/skin-mixin.ts"],"sourcesContent":["import type { ReactiveElement } from '@videojs/element';\nimport type { Constructor } from '@videojs/utils/types';\nimport styles from './base.css?inline';\n\nconst STYLES_ID = '__media-styles';\n\nfunction ensureStyles(): void {\n if (document.getElementById(STYLES_ID)) return;\n const style = document.createElement('style');\n style.id = STYLES_ID;\n style.textContent = styles;\n document.head.appendChild(style);\n}\n\n/**\n * Mixin for skin elements that renders the template from a static\n * `getTemplateHTML` method into a shadow root. Native `<slot>` elements\n * handle light DOM projection automatically.\n *\n * When `static styles` is set, the stylesheet is adopted into the\n * shadow root via `adoptedStyleSheets`.\n */\nexport function SkinMixin<Base extends Constructor<ReactiveElement>>(\n BaseClass: Base\n): Base & { shadowRootOptions: ShadowRootInit; styles?: CSSStyleSheet } {\n class SkinElement extends (BaseClass as Constructor<ReactiveElement>) {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: CSSStyleSheet;\n\n constructor(...args: any[]) {\n super(...args);\n\n ensureStyles();\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement & { getTemplateHTML?: () => string };\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.styles) {\n this.shadowRoot!.adoptedStyleSheets = [ctor.styles];\n }\n\n if (ctor.getTemplateHTML) {\n this.shadowRoot!.innerHTML = ctor.getTemplateHTML();\n }\n }\n }\n }\n\n return SkinElement as unknown as Base & { shadowRootOptions: ShadowRootInit; styles?: CSSStyleSheet };\n}\n\n/** Create a shared `CSSStyleSheet` from a CSS string. */\nexport function createStyles(css: string): CSSStyleSheet {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n return sheet;\n}\n"],"mappings":";;;AAIA,MAAM,YAAY;AAElB,SAAS,eAAqB;AAC5B,KAAI,SAAS,eAAe,UAAU,CAAE;CACxC,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,OAAM,KAAK;AACX,OAAM,cAAcA;AACpB,UAAS,KAAK,YAAY,MAAM;;;;;;;;;;AAWlC,SAAgB,UACd,WACsE;CACtE,MAAM,oBAAqB,UAA2C;;4BACzB,EAAE,MAAM,QAAQ;;EAG3D,YAAY,GAAG,MAAa;AAC1B,SAAM,GAAG,KAAK;AAEd,iBAAc;AAEd,OAAI,CAAC,KAAK,YAAY;IACpB,MAAM,OAAO,KAAK;AAClB,SAAK,aAAa,KAAK,kBAAkB;AAEzC,QAAI,KAAK,OACP,MAAK,WAAY,qBAAqB,CAAC,KAAK,OAAO;AAGrD,QAAI,KAAK,gBACP,MAAK,WAAY,YAAY,KAAK,iBAAiB;;;;AAM3D,QAAO;;;AAIT,SAAgB,aAAa,KAA4B;CACvD,MAAM,QAAQ,IAAI,eAAe;AACjC,OAAM,YAAY,IAAI;AACtB,QAAO"}
|
|
@@ -125,6 +125,8 @@
|
|
|
125
125
|
position: relative;
|
|
126
126
|
isolation: isolate;
|
|
127
127
|
display: block;
|
|
128
|
+
height: 100%;
|
|
129
|
+
width: 100%;
|
|
128
130
|
container: media-root / inline-size;
|
|
129
131
|
border-radius: var(--media-border-radius, 0.75rem);
|
|
130
132
|
font-family:
|
|
@@ -149,8 +151,13 @@
|
|
|
149
151
|
display: block;
|
|
150
152
|
width: 100%;
|
|
151
153
|
height: 100%;
|
|
154
|
+
}
|
|
155
|
+
.media-minimal-skin ::slotted(video) {
|
|
152
156
|
border-radius: var(--media-border-radius, 0.75rem);
|
|
153
157
|
}
|
|
158
|
+
.media-minimal-skin video {
|
|
159
|
+
border-radius: inherit;
|
|
160
|
+
}
|
|
154
161
|
|
|
155
162
|
/* ==========================================================================
|
|
156
163
|
Poster Image
|
|
@@ -171,6 +178,19 @@
|
|
|
171
178
|
}
|
|
172
179
|
}
|
|
173
180
|
|
|
181
|
+
/* ==========================================================================
|
|
182
|
+
Fullscreen
|
|
183
|
+
========================================================================== */
|
|
184
|
+
|
|
185
|
+
.media-minimal-skin:fullscreen video,
|
|
186
|
+
.media-minimal-skin:fullscreen ::slotted(video),
|
|
187
|
+
.media-minimal-skin > img {
|
|
188
|
+
object-fit: contain;
|
|
189
|
+
}
|
|
190
|
+
.media-minimal-skin:fullscreen ::slotted(video) {
|
|
191
|
+
border-radius: 0;
|
|
192
|
+
}
|
|
193
|
+
|
|
174
194
|
/* ==========================================================================
|
|
175
195
|
Overlay / Scrim
|
|
176
196
|
========================================================================== */
|
|
@@ -180,7 +200,7 @@
|
|
|
180
200
|
inset: 0;
|
|
181
201
|
border-radius: inherit;
|
|
182
202
|
background-image: linear-gradient(to top, oklch(0 0 0 / 0.7), oklch(0 0 0 / 0.5) 7.5rem, oklch(0 0 0 / 0));
|
|
183
|
-
backdrop-filter: blur(0) saturate(1.
|
|
203
|
+
backdrop-filter: blur(0) saturate(1.5);
|
|
184
204
|
opacity: 0;
|
|
185
205
|
transition-property: opacity, backdrop-filter;
|
|
186
206
|
transition-duration: 500ms;
|
|
@@ -201,7 +221,7 @@
|
|
|
201
221
|
}
|
|
202
222
|
|
|
203
223
|
.media-minimal-skin .media-error[data-open] ~ .media-overlay {
|
|
204
|
-
backdrop-filter: blur(
|
|
224
|
+
backdrop-filter: blur(16px) saturate(1.5);
|
|
205
225
|
}
|
|
206
226
|
|
|
207
227
|
/* ==========================================================================
|
|
@@ -675,7 +695,7 @@
|
|
|
675
695
|
padding: 0.25rem 0.5rem;
|
|
676
696
|
border-radius: 0.25rem;
|
|
677
697
|
background-color: oklch(1 0 0 / 0.1);
|
|
678
|
-
backdrop-filter: blur(
|
|
698
|
+
backdrop-filter: blur(16px) saturate(1.5);
|
|
679
699
|
box-shadow:
|
|
680
700
|
0 4px 6px -1px oklch(0 0 0 / 0.1),
|
|
681
701
|
0 2px 4px -2px oklch(0 0 0 / 0.1);
|
|
@@ -693,62 +713,9 @@
|
|
|
693
713
|
}
|
|
694
714
|
|
|
695
715
|
/* ==========================================================================
|
|
696
|
-
|
|
716
|
+
Native Caption Track
|
|
697
717
|
========================================================================== */
|
|
698
718
|
|
|
699
|
-
.media-minimal-skin .media-captions {
|
|
700
|
-
position: absolute;
|
|
701
|
-
inset: auto 1rem 1.5rem 1rem;
|
|
702
|
-
z-index: 20;
|
|
703
|
-
font-size: 1rem;
|
|
704
|
-
text-wrap: balance;
|
|
705
|
-
pointer-events: none;
|
|
706
|
-
|
|
707
|
-
@container media-root (width > 20rem) {
|
|
708
|
-
font-size: 1.5rem;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
@container media-root (width > 48rem) {
|
|
712
|
-
font-size: 1.875rem;
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
@container media-root (width > 80rem) {
|
|
716
|
-
font-size: 2.25rem;
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
.media-minimal-skin .media-captions__container {
|
|
721
|
-
display: flex;
|
|
722
|
-
flex-direction: column;
|
|
723
|
-
align-items: center;
|
|
724
|
-
max-width: 42ch;
|
|
725
|
-
margin: 0 auto;
|
|
726
|
-
text-align: center;
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
.media-minimal-skin .media-captions__text {
|
|
730
|
-
display: block;
|
|
731
|
-
padding: 0.125rem 0.5rem;
|
|
732
|
-
color: oklch(1 0 0);
|
|
733
|
-
text-shadow:
|
|
734
|
-
0 0 1px oklch(0 0 0 / 0.7),
|
|
735
|
-
0 0 8px oklch(0 0 0 / 0.7);
|
|
736
|
-
text-align: center;
|
|
737
|
-
white-space: pre-wrap;
|
|
738
|
-
line-height: 1.2;
|
|
739
|
-
|
|
740
|
-
@media (prefers-contrast: more) {
|
|
741
|
-
background: oklch(0 0 0 / 0.7);
|
|
742
|
-
text-shadow: none;
|
|
743
|
-
box-decoration-break: clone;
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
& > * {
|
|
747
|
-
display: inline;
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
/* Caption shifting styles (custom and native) */
|
|
752
719
|
.media-minimal-skin {
|
|
753
720
|
--media-caption-track-delay: 600ms;
|
|
754
721
|
--media-caption-track-y: -0.5rem;
|
|
@@ -759,26 +726,16 @@
|
|
|
759
726
|
}
|
|
760
727
|
}
|
|
761
728
|
|
|
762
|
-
.media-minimal-skin .media-captions,
|
|
763
729
|
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
764
730
|
/* NOTE: The delay must account for the controls delay/duration */
|
|
765
731
|
transition: transform 150ms ease-out;
|
|
766
732
|
transition-delay: var(--media-caption-track-delay);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
770
733
|
transform: translateY(var(--media-caption-track-y)) scale(0.98);
|
|
771
734
|
z-index: 1;
|
|
772
735
|
font-family: inherit;
|
|
773
736
|
}
|
|
774
737
|
|
|
775
|
-
/* When controls are visible, shift captions up to avoid overlap */
|
|
776
|
-
.media-minimal-skin .media-controls[data-visible] ~ .media-captions {
|
|
777
|
-
transform: translateY(calc(var(--media-caption-track-y) - 0.5rem));
|
|
778
|
-
}
|
|
779
|
-
|
|
780
738
|
@media (prefers-reduced-motion: reduce) {
|
|
781
|
-
.media-minimal-skin .media-captions,
|
|
782
739
|
.media-minimal-skin video::-webkit-media-text-track-container {
|
|
783
740
|
transition-duration: 50ms;
|
|
784
741
|
}
|
|
@@ -791,20 +748,21 @@
|
|
|
791
748
|
|
|
792
749
|
.media-minimal-skin--video {
|
|
793
750
|
background: oklch(0 0 0);
|
|
751
|
+
--media-border-color: oklch(0 0 0 / 0.15);
|
|
794
752
|
|
|
795
|
-
|
|
753
|
+
@media (prefers-color-scheme: dark) {
|
|
754
|
+
--media-border-color: oklch(1 0 0 / 0.15);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/* Inner border ring */
|
|
796
758
|
&::after {
|
|
797
759
|
content: "";
|
|
798
760
|
position: absolute;
|
|
799
761
|
inset: 0;
|
|
800
762
|
z-index: 10;
|
|
801
763
|
border-radius: inherit;
|
|
802
|
-
box-shadow: inset 0 0 0 1px
|
|
764
|
+
box-shadow: inset 0 0 0 1px var(--media-border-color);
|
|
803
765
|
pointer-events: none;
|
|
804
|
-
|
|
805
|
-
@media (prefers-color-scheme: dark) {
|
|
806
|
-
box-shadow: inset 0 0 0 1px oklch(1 0 0 / 0.15);
|
|
807
|
-
}
|
|
808
766
|
}
|
|
809
767
|
|
|
810
768
|
/* Fullscreen */
|
|
@@ -871,3 +829,7 @@
|
|
|
871
829
|
padding: 0.25rem;
|
|
872
830
|
}
|
|
873
831
|
|
|
832
|
+
media-tooltip-group {
|
|
833
|
+
display: contents;
|
|
834
|
+
}
|
|
835
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/define/video/minimal-skin.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/define/video/minimal-skin.ts"],"mappings":";;;iBAwBS,eAAA,CAAA;AAAA,cAAe,4BAAA;;;;cAkHX,uBAAA,SAAgC,4BAAA;EAAA,gBAC3B,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,uBAAA,CAAwB,OAAA,GAAU,uBAAA;EAAA;AAAA"}
|