@videojs/html 0.1.0-preview.8 → 0.1.0-preview.9
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/dist/{component-factory-DeAN6cjC.js → component-factory-C0cl1nrL.js} +30 -4
- package/dist/component-factory-C0cl1nrL.js.map +1 -0
- package/dist/{current-time-display-C3qndGf5.js → current-time-display-DpoDrQu9.js} +6 -7
- package/dist/current-time-display-DpoDrQu9.js.map +1 -0
- package/dist/define/index.js +17 -17
- package/dist/define/media-current-time-display.js +3 -3
- package/dist/define/media-duration-display.js +3 -3
- package/dist/define/media-fullscreen-button.js +3 -3
- package/dist/define/media-mute-button.js +3 -3
- package/dist/define/media-play-button.js +3 -3
- package/dist/define/media-preview-time-display.js +3 -3
- package/dist/define/media-time-slider.js +3 -3
- package/dist/define/media-volume-slider.js +3 -3
- package/dist/{duration-display-JOPp3bdU.js → duration-display-BFRQmaOz.js} +6 -7
- package/dist/duration-display-BFRQmaOz.js.map +1 -0
- package/dist/{fullscreen-button-C1nq8yP-.js → fullscreen-button-B0R9K3GV.js} +7 -8
- package/dist/fullscreen-button-B0R9K3GV.js.map +1 -0
- package/dist/index.d.ts +27 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -9
- package/dist/{media-current-time-display-B-4Cp845.js → media-current-time-display-DVCqNt7c.js} +2 -2
- package/dist/{media-current-time-display-B-4Cp845.js.map → media-current-time-display-DVCqNt7c.js.map} +1 -1
- package/dist/{media-duration-display-BLMr7VHo.js → media-duration-display-tzVLafRm.js} +2 -2
- package/dist/{media-duration-display-BLMr7VHo.js.map → media-duration-display-tzVLafRm.js.map} +1 -1
- package/dist/{media-fullscreen-button-CIpcLhtU.js → media-fullscreen-button-DDQ6EdLz.js} +2 -2
- package/dist/{media-fullscreen-button-CIpcLhtU.js.map → media-fullscreen-button-DDQ6EdLz.js.map} +1 -1
- package/dist/{media-mute-button-CHHISH91.js → media-mute-button-Uy18NpPx.js} +2 -2
- package/dist/{media-mute-button-CHHISH91.js.map → media-mute-button-Uy18NpPx.js.map} +1 -1
- package/dist/{media-play-button-DhSK0JQk.js → media-play-button-CDBZrhmx.js} +2 -2
- package/dist/{media-play-button-DhSK0JQk.js.map → media-play-button-CDBZrhmx.js.map} +1 -1
- package/dist/{media-preview-time-display-DAiMgLPX.js → media-preview-time-display-ufqXiNXg.js} +2 -2
- package/dist/{media-preview-time-display-DAiMgLPX.js.map → media-preview-time-display-ufqXiNXg.js.map} +1 -1
- package/dist/{media-time-slider-SuxR3Rep.js → media-time-slider-BOdJr4QE.js} +2 -2
- package/dist/{media-time-slider-SuxR3Rep.js.map → media-time-slider-BOdJr4QE.js.map} +1 -1
- package/dist/{media-volume-slider-B-n6b3Y8.js → media-volume-slider-BB6GhrzS.js} +2 -2
- package/dist/{media-volume-slider-B-n6b3Y8.js.map → media-volume-slider-BB6GhrzS.js.map} +1 -1
- package/dist/{mute-button-BSDoCZs3.js → mute-button-C7XQB6iK.js} +7 -8
- package/dist/mute-button-C7XQB6iK.js.map +1 -0
- package/dist/{play-button-gaqIKsrv.js → play-button-DFbxwrrq.js} +11 -8
- package/dist/play-button-DFbxwrrq.js.map +1 -0
- package/dist/{preview-time-display-Dax0FQ2X.js → preview-time-display-CtA58pCS.js} +6 -7
- package/dist/preview-time-display-CtA58pCS.js.map +1 -0
- package/dist/skins/frosted.js +17 -17
- package/dist/skins/minimal.js +17 -17
- package/dist/{time-slider-DKamO_2Q.js → time-slider-DHpKPCI1.js} +38 -75
- package/dist/time-slider-DHpKPCI1.js.map +1 -0
- package/dist/{volume-slider-CbFzCHX4.js → volume-slider-CUyfwehe.js} +36 -102
- package/dist/volume-slider-CUyfwehe.js.map +1 -0
- package/package.json +4 -4
- package/dist/component-factory-DeAN6cjC.js.map +0 -1
- package/dist/current-time-display-C3qndGf5.js.map +0 -1
- package/dist/duration-display-JOPp3bdU.js.map +0 -1
- package/dist/fullscreen-button-C1nq8yP-.js.map +0 -1
- package/dist/mute-button-BSDoCZs3.js.map +0 -1
- package/dist/play-button-gaqIKsrv.js.map +0 -1
- package/dist/preview-time-display-Dax0FQ2X.js.map +0 -1
- package/dist/time-slider-DKamO_2Q.js.map +0 -1
- package/dist/volume-slider-CbFzCHX4.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as VolumeSliderTrackElement, i as VolumeSliderThumbElement, n as VolumeSliderIndicatorElement, r as VolumeSliderRootElement } from "./volume-slider-
|
|
1
|
+
import { a as VolumeSliderTrackElement, i as VolumeSliderThumbElement, n as VolumeSliderIndicatorElement, r as VolumeSliderRootElement } from "./volume-slider-CUyfwehe.js";
|
|
2
2
|
import { t as defineCustomElement } from "./custom-element-3bDlB2XO.js";
|
|
3
3
|
|
|
4
4
|
//#region src/define/media-volume-slider.ts
|
|
@@ -8,4 +8,4 @@ defineCustomElement("media-volume-slider-indicator", VolumeSliderIndicatorElemen
|
|
|
8
8
|
defineCustomElement("media-volume-slider-thumb", VolumeSliderThumbElement);
|
|
9
9
|
|
|
10
10
|
//#endregion
|
|
11
|
-
//# sourceMappingURL=media-volume-slider-
|
|
11
|
+
//# sourceMappingURL=media-volume-slider-BB6GhrzS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-volume-slider-
|
|
1
|
+
{"version":3,"file":"media-volume-slider-BB6GhrzS.js","names":[],"sources":["../src/define/media-volume-slider.ts"],"sourcesContent":["import { VolumeSliderIndicatorElement, VolumeSliderRootElement, VolumeSliderThumbElement, VolumeSliderTrackElement } from '@/elements/volume-slider';\nimport { defineCustomElement } from '@/utils/custom-element';\n\ndefineCustomElement('media-volume-slider', VolumeSliderRootElement);\ndefineCustomElement('media-volume-slider-track', VolumeSliderTrackElement);\ndefineCustomElement('media-volume-slider-indicator', VolumeSliderIndicatorElement);\ndefineCustomElement('media-volume-slider-thumb', VolumeSliderThumbElement);\n"],"mappings":";;;;AAGA,oBAAoB,uBAAuB,wBAAwB;AACnE,oBAAoB,6BAA6B,yBAAyB;AAC1E,oBAAoB,iCAAiC,6BAA6B;AAClF,oBAAoB,6BAA6B,yBAAyB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as toConnectedHTMLComponent } from "./component-factory-C0cl1nrL.js";
|
|
2
2
|
import { t as ButtonElement } from "./button-Bu1mGG-F.js";
|
|
3
3
|
import { muteButtonStateDefinition } from "@videojs/core/store";
|
|
4
4
|
import { setAttributes } from "@videojs/utils/dom";
|
|
@@ -26,13 +26,12 @@ var MuteButton = class extends ButtonElement {
|
|
|
26
26
|
setAttributes(this, props);
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
...muteButtonStateDefinition.stateTransform(rawState),
|
|
29
|
+
function getMuteButtonState(mediaStore) {
|
|
30
|
+
return {
|
|
31
|
+
...muteButtonStateDefinition.stateTransform(mediaStore.getState()),
|
|
33
32
|
...muteButtonStateDefinition.createRequestMethods(mediaStore.dispatch)
|
|
34
|
-
}
|
|
35
|
-
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
36
35
|
const getMuteButtonProps = (state, _element) => {
|
|
37
36
|
return {
|
|
38
37
|
"data-muted": state.muted,
|
|
@@ -47,4 +46,4 @@ const MuteButtonElement = toConnectedHTMLComponent(MuteButton, getMuteButtonStat
|
|
|
47
46
|
|
|
48
47
|
//#endregion
|
|
49
48
|
export { MuteButtonElement as t };
|
|
50
|
-
//# sourceMappingURL=mute-button-
|
|
49
|
+
//# sourceMappingURL=mute-button-C7XQB6iK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mute-button-C7XQB6iK.js","names":["getMuteButtonProps: PropsHook<{\n muted: boolean;\n volumeLevel: string;\n}>","MuteButtonElement: ConnectedComponentConstructor<MuteButtonStateWithMethods>"],"sources":["../src/elements/mute-button.ts"],"sourcesContent":["import type { MediaStore, MuteButtonState } from '@videojs/core/store';\nimport type { Prettify } from '../types';\nimport type { ConnectedComponentConstructor, PropsHook } from '../utils/component-factory';\n\nimport { muteButtonStateDefinition } from '@videojs/core/store';\n\nimport { setAttributes } from '@videojs/utils/dom';\nimport { toConnectedHTMLComponent } from '../utils/component-factory';\nimport { ButtonElement } from './button';\n\nexport class MuteButton extends ButtonElement {\n _state:\n | {\n muted: boolean;\n volumeLevel: string;\n requestMute: () => void;\n requestUnmute: () => void;\n }\n | undefined;\n\n handleEvent(event: Event): void {\n super.handleEvent(event);\n\n const { type } = event;\n const state = this._state;\n\n if (state) {\n if (type === 'click') {\n if (state.volumeLevel === 'off') {\n state.requestUnmute();\n } else {\n state.requestMute();\n }\n }\n }\n }\n\n get muted(): boolean {\n return this._state?.muted ?? false;\n }\n\n get volumeLevel(): string {\n return this._state?.volumeLevel ?? 'high';\n }\n\n _update(props: any, state: any): void {\n this._state = state;\n /** @TODO Follow up with React vs. W.C. data-* attributes discrepancies (CJP) */\n setAttributes(this, props);\n }\n}\n\ntype MuteButtonStateWithMethods = Prettify<MuteButtonState & ReturnType<typeof muteButtonStateDefinition.createRequestMethods>>;\n\nexport function getMuteButtonState(mediaStore: MediaStore): MuteButtonStateWithMethods {\n return {\n ...muteButtonStateDefinition.stateTransform(mediaStore.getState()),\n ...muteButtonStateDefinition.createRequestMethods(mediaStore.dispatch),\n };\n}\n\nexport const getMuteButtonProps: PropsHook<{\n muted: boolean;\n volumeLevel: string;\n}> = (state, _element) => {\n const baseProps: Record<string, any> = {\n /** data attributes/props */\n 'data-muted': state.muted,\n 'data-volume-level': state.volumeLevel,\n /** @TODO Need another state provider in core for i18n (CJP) */\n /** aria attributes/props */\n role: 'button',\n tabindex: '0',\n 'aria-label': state.muted ? 'unmute' : 'mute',\n /** tooltip */\n 'data-tooltip': state.muted ? 'Unmute' : 'Mute',\n /** @TODO Figure out how we want to handle attr overrides (e.g. aria-label) (CJP) */\n /** external props spread last to allow for overriding */\n // ...props,\n };\n\n return baseProps;\n};\n\nexport const MuteButtonElement: ConnectedComponentConstructor<MuteButtonStateWithMethods> = toConnectedHTMLComponent(\n MuteButton,\n getMuteButtonState,\n getMuteButtonProps,\n 'MuteButton',\n);\n"],"mappings":";;;;;;AAUA,IAAa,aAAb,cAAgC,cAAc;CAU5C,YAAY,OAAoB;AAC9B,QAAM,YAAY,MAAM;EAExB,MAAM,EAAE,SAAS;EACjB,MAAM,QAAQ,KAAK;AAEnB,MAAI,OACF;OAAI,SAAS,QACX,KAAI,MAAM,gBAAgB,MACxB,OAAM,eAAe;OAErB,OAAM,aAAa;;;CAM3B,IAAI,QAAiB;AACnB,SAAO,KAAK,QAAQ,SAAS;;CAG/B,IAAI,cAAsB;AACxB,SAAO,KAAK,QAAQ,eAAe;;CAGrC,QAAQ,OAAY,OAAkB;AACpC,OAAK,SAAS;;AAEd,gBAAc,MAAM,MAAM;;;AAM9B,SAAgB,mBAAmB,YAAoD;AACrF,QAAO;EACL,GAAG,0BAA0B,eAAe,WAAW,UAAU,CAAC;EAClE,GAAG,0BAA0B,qBAAqB,WAAW,SAAS;EACvE;;AAGH,MAAaA,sBAGP,OAAO,aAAa;AAiBxB,QAhBuC;EAErC,cAAc,MAAM;EACpB,qBAAqB,MAAM;EAG3B,MAAM;EACN,UAAU;EACV,cAAc,MAAM,QAAQ,WAAW;EAEvC,gBAAgB,MAAM,QAAQ,WAAW;EAI1C;;AAKH,MAAaC,oBAA+E,yBAC1F,YACA,oBACA,oBACA,aACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as toConnectedHTMLComponent } from "./component-factory-C0cl1nrL.js";
|
|
2
2
|
import { t as ButtonElement } from "./button-Bu1mGG-F.js";
|
|
3
3
|
import { playButtonStateDefinition } from "@videojs/core/store";
|
|
4
4
|
import { setAttributes } from "@videojs/utils/dom";
|
|
@@ -21,13 +21,16 @@ var PlayButton = class extends ButtonElement {
|
|
|
21
21
|
setAttributes(this, props);
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
/**
|
|
25
|
+
* PlayButton state hook - equivalent to React's usePlayButtonState
|
|
26
|
+
* Handles media store state subscription and transformation
|
|
27
|
+
*/
|
|
28
|
+
function getPlayButtonState(mediaStore) {
|
|
29
|
+
return {
|
|
30
|
+
...playButtonStateDefinition.stateTransform(mediaStore.getState()),
|
|
28
31
|
...playButtonStateDefinition.createRequestMethods(mediaStore.dispatch)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
31
34
|
const getPlayButtonProps = (state, _element) => {
|
|
32
35
|
return {
|
|
33
36
|
"data-paused": state.paused,
|
|
@@ -41,4 +44,4 @@ const PlayButtonElement = toConnectedHTMLComponent(PlayButton, getPlayButtonStat
|
|
|
41
44
|
|
|
42
45
|
//#endregion
|
|
43
46
|
export { PlayButtonElement as t };
|
|
44
|
-
//# sourceMappingURL=play-button-
|
|
47
|
+
//# sourceMappingURL=play-button-DFbxwrrq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-button-DFbxwrrq.js","names":["getPlayButtonProps: PropsHook<{ paused: boolean }>","PlayButtonElement: ConnectedComponentConstructor<PlayButtonStateWithMethods>"],"sources":["../src/elements/play-button.ts"],"sourcesContent":["import type { MediaStore, PlayButtonState } from '@videojs/core/store';\nimport type { Prettify } from '../types';\nimport type { ConnectedComponentConstructor, PropsHook } from '../utils/component-factory';\n\nimport { playButtonStateDefinition } from '@videojs/core/store';\n\nimport { setAttributes } from '@videojs/utils/dom';\nimport { toConnectedHTMLComponent } from '../utils/component-factory';\nimport { ButtonElement } from './button';\n\nexport class PlayButton extends ButtonElement {\n _state: { paused: boolean; requestPlay: () => void; requestPause: () => void } | undefined;\n\n handleEvent(event: Event): void {\n super.handleEvent(event);\n\n const { type } = event;\n const state = this._state;\n if (state && type === 'click') {\n if (state.paused) {\n state.requestPlay();\n } else {\n state.requestPause();\n }\n }\n }\n\n get paused(): boolean {\n return this._state?.paused ?? true;\n }\n\n _update(props: any, state: any, _mediaStore?: any): void {\n this._state = state;\n /** @TODO Follow up with React vs. W.C. data-* attributes discrepancies (CJP) */\n setAttributes(this, props);\n }\n}\n\ntype PlayButtonStateWithMethods = Prettify<PlayButtonState & ReturnType<typeof playButtonStateDefinition.createRequestMethods>>;\n\n/**\n * PlayButton state hook - equivalent to React's usePlayButtonState\n * Handles media store state subscription and transformation\n */\nexport function getPlayButtonState(mediaStore: MediaStore): PlayButtonStateWithMethods {\n return {\n ...playButtonStateDefinition.stateTransform(mediaStore.getState()),\n ...playButtonStateDefinition.createRequestMethods(mediaStore.dispatch),\n };\n}\n\nexport const getPlayButtonProps: PropsHook<{ paused: boolean }> = (state, _element) => {\n const baseProps: Record<string, any> = {\n /** data attributes/props */\n 'data-paused': state.paused,\n /** @TODO Need another state provider in core for i18n (CJP) */\n /** aria attributes/props */\n role: 'button',\n tabindex: '0',\n 'aria-label': state.paused ? 'play' : 'pause',\n /** tooltip */\n 'data-tooltip': state.paused ? 'Play' : 'Pause',\n /** @TODO Figure out how we want to handle attr overrides (e.g. aria-label) (CJP) */\n /** external props spread last to allow for overriding */\n // ...props,\n };\n\n return baseProps;\n};\n\nexport const PlayButtonElement: ConnectedComponentConstructor<PlayButtonStateWithMethods> = toConnectedHTMLComponent(\n PlayButton,\n getPlayButtonState,\n getPlayButtonProps,\n 'PlayButton',\n);\n"],"mappings":";;;;;;AAUA,IAAa,aAAb,cAAgC,cAAc;CAG5C,YAAY,OAAoB;AAC9B,QAAM,YAAY,MAAM;EAExB,MAAM,EAAE,SAAS;EACjB,MAAM,QAAQ,KAAK;AACnB,MAAI,SAAS,SAAS,QACpB,KAAI,MAAM,OACR,OAAM,aAAa;MAEnB,OAAM,cAAc;;CAK1B,IAAI,SAAkB;AACpB,SAAO,KAAK,QAAQ,UAAU;;CAGhC,QAAQ,OAAY,OAAY,aAAyB;AACvD,OAAK,SAAS;;AAEd,gBAAc,MAAM,MAAM;;;;;;;AAU9B,SAAgB,mBAAmB,YAAoD;AACrF,QAAO;EACL,GAAG,0BAA0B,eAAe,WAAW,UAAU,CAAC;EAClE,GAAG,0BAA0B,qBAAqB,WAAW,SAAS;EACvE;;AAGH,MAAaA,sBAAsD,OAAO,aAAa;AAgBrF,QAfuC;EAErC,eAAe,MAAM;EAGrB,MAAM;EACN,UAAU;EACV,cAAc,MAAM,SAAS,SAAS;EAEtC,gBAAgB,MAAM,SAAS,SAAS;EAIzC;;AAKH,MAAaC,oBAA+E,yBAC1F,YACA,oBACA,oBACA,aACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as toConnectedHTMLComponent } from "./component-factory-C0cl1nrL.js";
|
|
2
2
|
import { previewTimeDisplayStateDefinition } from "@videojs/core/store";
|
|
3
3
|
import { formatDisplayTime } from "@videojs/utils";
|
|
4
4
|
|
|
@@ -30,15 +30,14 @@ var PreviewTimeDisplay = class extends HTMLElement {
|
|
|
30
30
|
if (this.shadowRoot) this.shadowRoot.textContent = timeLabel;
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
33
|
+
function getPreviewTimeDisplayState(mediaStore) {
|
|
34
|
+
return { ...previewTimeDisplayStateDefinition.stateTransform(mediaStore.getState()) };
|
|
35
|
+
}
|
|
37
36
|
const getPreviewTimeDisplayProps = (_state, _element) => {
|
|
38
37
|
return {};
|
|
39
38
|
};
|
|
40
|
-
const PreviewTimeDisplayElement = toConnectedHTMLComponent(PreviewTimeDisplay,
|
|
39
|
+
const PreviewTimeDisplayElement = toConnectedHTMLComponent(PreviewTimeDisplay, getPreviewTimeDisplayState, getPreviewTimeDisplayProps, "PreviewTimeDisplay");
|
|
41
40
|
|
|
42
41
|
//#endregion
|
|
43
42
|
export { PreviewTimeDisplayElement as t };
|
|
44
|
-
//# sourceMappingURL=preview-time-display-
|
|
43
|
+
//# sourceMappingURL=preview-time-display-CtA58pCS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-time-display-CtA58pCS.js","names":["getPreviewTimeDisplayProps: PropsHook<{\n previewTime: number | undefined;\n}>","PreviewTimeDisplayElement: ConnectedComponentConstructor<PreviewTimeDisplayState>"],"sources":["../src/elements/preview-time-display.ts"],"sourcesContent":["import type { MediaStore, PreviewTimeDisplayState } from '@videojs/core/store';\nimport type { ConnectedComponentConstructor, PropsHook } from '../utils/component-factory';\n\nimport { previewTimeDisplayStateDefinition } from '@videojs/core/store';\n\nimport { formatDisplayTime } from '@videojs/utils';\nimport { toConnectedHTMLComponent } from '../utils/component-factory';\n\nexport class PreviewTimeDisplay extends HTMLElement {\n static shadowRootOptions = {\n mode: 'open' as ShadowRootMode,\n };\n\n static observedAttributes: string[] = ['show-remaining'];\n\n _state:\n | {\n previewTime: number | undefined;\n }\n | undefined;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n this.attachShadow((this.constructor as typeof PreviewTimeDisplay).shadowRootOptions);\n }\n }\n\n get previewTime(): number {\n return this._state?.previewTime ?? 0;\n }\n\n get showRemaining(): boolean {\n return this.hasAttribute('show-remaining');\n }\n\n attributeChangedCallback(name: string, _oldValue: string | null, _newValue: string | null): void {\n if (name === 'show-remaining' && this._state) {\n // Re-render with current state when show-remaining attribute changes\n this._update({}, this._state);\n }\n }\n\n _update(_props: any, state: any): void {\n this._state = state;\n\n /** @TODO Should this live here or elsewhere? (CJP) */\n const timeLabel = formatDisplayTime(state.previewTime);\n\n if (this.shadowRoot) {\n this.shadowRoot.textContent = timeLabel;\n }\n }\n}\n\nexport function getPreviewTimeDisplayState(mediaStore: MediaStore): {\n previewTime: number | undefined;\n} {\n return {\n ...previewTimeDisplayStateDefinition.stateTransform(mediaStore.getState()),\n // Preview time display is read-only, so no request methods needed\n };\n}\n\nexport const getPreviewTimeDisplayProps: PropsHook<{\n previewTime: number | undefined;\n}> = (_state, _element) => {\n const baseProps: Record<string, any> = {};\n return baseProps;\n};\n\nexport const PreviewTimeDisplayElement: ConnectedComponentConstructor<PreviewTimeDisplayState> = toConnectedHTMLComponent(\n PreviewTimeDisplay,\n getPreviewTimeDisplayState,\n getPreviewTimeDisplayProps,\n 'PreviewTimeDisplay',\n);\n"],"mappings":";;;;;AAQA,IAAa,qBAAb,cAAwC,YAAY;;2BACvB,EACzB,MAAM,QACP;;;4BAEqC,CAAC,iBAAiB;;CAQxD,cAAc;AACZ,SAAO;AAEP,MAAI,CAAC,KAAK,WACR,MAAK,aAAc,KAAK,YAA0C,kBAAkB;;CAIxF,IAAI,cAAsB;AACxB,SAAO,KAAK,QAAQ,eAAe;;CAGrC,IAAI,gBAAyB;AAC3B,SAAO,KAAK,aAAa,iBAAiB;;CAG5C,yBAAyB,MAAc,WAA0B,WAAgC;AAC/F,MAAI,SAAS,oBAAoB,KAAK,OAEpC,MAAK,QAAQ,EAAE,EAAE,KAAK,OAAO;;CAIjC,QAAQ,QAAa,OAAkB;AACrC,OAAK,SAAS;;EAGd,MAAM,YAAY,kBAAkB,MAAM,YAAY;AAEtD,MAAI,KAAK,WACP,MAAK,WAAW,cAAc;;;AAKpC,SAAgB,2BAA2B,YAEzC;AACA,QAAO,EACL,GAAG,kCAAkC,eAAe,WAAW,UAAU,CAAC,EAE3E;;AAGH,MAAaA,8BAEP,QAAQ,aAAa;AAEzB,QADuC,EAAE;;AAI3C,MAAaC,4BAAoF,yBAC/F,oBACA,4BACA,4BACA,qBACD"}
|
package/dist/skins/frosted.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import "../component-factory-
|
|
2
|
-
import "../current-time-display-
|
|
3
|
-
import "../duration-display-
|
|
1
|
+
import "../component-factory-C0cl1nrL.js";
|
|
2
|
+
import "../current-time-display-DpoDrQu9.js";
|
|
3
|
+
import "../duration-display-BFRQmaOz.js";
|
|
4
4
|
import "../button-Bu1mGG-F.js";
|
|
5
|
-
import "../fullscreen-button-
|
|
6
|
-
import "../mute-button-
|
|
7
|
-
import "../play-button-
|
|
5
|
+
import "../fullscreen-button-B0R9K3GV.js";
|
|
6
|
+
import "../mute-button-C7XQB6iK.js";
|
|
7
|
+
import "../play-button-DFbxwrrq.js";
|
|
8
8
|
import "../popover-BUCVOjnO.js";
|
|
9
|
-
import "../preview-time-display-
|
|
10
|
-
import "../time-slider-
|
|
9
|
+
import "../preview-time-display-CtA58pCS.js";
|
|
10
|
+
import "../time-slider-DHpKPCI1.js";
|
|
11
11
|
import "../tooltip-B-glki2f.js";
|
|
12
|
-
import "../volume-slider-
|
|
12
|
+
import "../volume-slider-CUyfwehe.js";
|
|
13
13
|
import "../media-container-BOL0PKuG.js";
|
|
14
14
|
import { t as MediaSkinElement } from "../media-skin-CxnuHwhu.js";
|
|
15
15
|
import "../video-provider-BKDqoKFf.js";
|
|
@@ -17,14 +17,14 @@ import { t as defineCustomElement } from "../custom-element-3bDlB2XO.js";
|
|
|
17
17
|
import "../icons-CuxuONCk.js";
|
|
18
18
|
import "../video-provider-BPPI5e47.js";
|
|
19
19
|
import "../media-container-DwKSOa1h.js";
|
|
20
|
-
import "../media-play-button-
|
|
21
|
-
import "../media-mute-button-
|
|
22
|
-
import "../media-volume-slider-
|
|
23
|
-
import "../media-time-slider-
|
|
24
|
-
import "../media-fullscreen-button-
|
|
25
|
-
import "../media-duration-display-
|
|
26
|
-
import "../media-current-time-display-
|
|
27
|
-
import "../media-preview-time-display-
|
|
20
|
+
import "../media-play-button-CDBZrhmx.js";
|
|
21
|
+
import "../media-mute-button-Uy18NpPx.js";
|
|
22
|
+
import "../media-volume-slider-BB6GhrzS.js";
|
|
23
|
+
import "../media-time-slider-BOdJr4QE.js";
|
|
24
|
+
import "../media-fullscreen-button-DDQ6EdLz.js";
|
|
25
|
+
import "../media-duration-display-tzVLafRm.js";
|
|
26
|
+
import "../media-current-time-display-DVCqNt7c.js";
|
|
27
|
+
import "../media-preview-time-display-ufqXiNXg.js";
|
|
28
28
|
import "../media-popover-Cw9d_Bh3.js";
|
|
29
29
|
import "../media-tooltip-CMRN_X4D.js";
|
|
30
30
|
|
package/dist/skins/minimal.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import "../component-factory-
|
|
2
|
-
import "../current-time-display-
|
|
3
|
-
import "../duration-display-
|
|
1
|
+
import "../component-factory-C0cl1nrL.js";
|
|
2
|
+
import "../current-time-display-DpoDrQu9.js";
|
|
3
|
+
import "../duration-display-BFRQmaOz.js";
|
|
4
4
|
import "../button-Bu1mGG-F.js";
|
|
5
|
-
import "../fullscreen-button-
|
|
6
|
-
import "../mute-button-
|
|
7
|
-
import "../play-button-
|
|
5
|
+
import "../fullscreen-button-B0R9K3GV.js";
|
|
6
|
+
import "../mute-button-C7XQB6iK.js";
|
|
7
|
+
import "../play-button-DFbxwrrq.js";
|
|
8
8
|
import "../popover-BUCVOjnO.js";
|
|
9
|
-
import "../preview-time-display-
|
|
10
|
-
import "../time-slider-
|
|
9
|
+
import "../preview-time-display-CtA58pCS.js";
|
|
10
|
+
import "../time-slider-DHpKPCI1.js";
|
|
11
11
|
import "../tooltip-B-glki2f.js";
|
|
12
|
-
import "../volume-slider-
|
|
12
|
+
import "../volume-slider-CUyfwehe.js";
|
|
13
13
|
import "../media-container-BOL0PKuG.js";
|
|
14
14
|
import { t as MediaSkinElement } from "../media-skin-CxnuHwhu.js";
|
|
15
15
|
import "../video-provider-BKDqoKFf.js";
|
|
@@ -17,14 +17,14 @@ import { t as defineCustomElement } from "../custom-element-3bDlB2XO.js";
|
|
|
17
17
|
import "../icons-CuxuONCk.js";
|
|
18
18
|
import "../video-provider-BPPI5e47.js";
|
|
19
19
|
import "../media-container-DwKSOa1h.js";
|
|
20
|
-
import "../media-play-button-
|
|
21
|
-
import "../media-mute-button-
|
|
22
|
-
import "../media-volume-slider-
|
|
23
|
-
import "../media-time-slider-
|
|
24
|
-
import "../media-fullscreen-button-
|
|
25
|
-
import "../media-duration-display-
|
|
26
|
-
import "../media-current-time-display-
|
|
27
|
-
import "../media-preview-time-display-
|
|
20
|
+
import "../media-play-button-CDBZrhmx.js";
|
|
21
|
+
import "../media-mute-button-Uy18NpPx.js";
|
|
22
|
+
import "../media-volume-slider-BB6GhrzS.js";
|
|
23
|
+
import "../media-time-slider-BOdJr4QE.js";
|
|
24
|
+
import "../media-fullscreen-button-DDQ6EdLz.js";
|
|
25
|
+
import "../media-duration-display-tzVLafRm.js";
|
|
26
|
+
import "../media-current-time-display-DVCqNt7c.js";
|
|
27
|
+
import "../media-preview-time-display-ufqXiNXg.js";
|
|
28
28
|
import "../media-popover-Cw9d_Bh3.js";
|
|
29
29
|
import "../media-tooltip-CMRN_X4D.js";
|
|
30
30
|
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as toConnectedHTMLComponent, t as getCoreState } from "./component-factory-C0cl1nrL.js";
|
|
2
2
|
import { timeSliderStateDefinition } from "@videojs/core/store";
|
|
3
3
|
import { setAttributes } from "@videojs/utils/dom";
|
|
4
4
|
import { TimeSlider } from "@videojs/core";
|
|
5
5
|
|
|
6
6
|
//#region src/elements/time-slider.ts
|
|
7
|
+
function getTimeSliderRootState(mediaStore) {
|
|
8
|
+
const mediaState = timeSliderStateDefinition.stateTransform(mediaStore.getState());
|
|
9
|
+
const mediaMethods = timeSliderStateDefinition.createRequestMethods(mediaStore.dispatch);
|
|
10
|
+
return { ...getCoreState(TimeSlider, {
|
|
11
|
+
...mediaState,
|
|
12
|
+
...mediaMethods
|
|
13
|
+
}) };
|
|
14
|
+
}
|
|
7
15
|
/**
|
|
8
16
|
* TimeSlider Root props hook - equivalent to React's useTimeSliderRootProps
|
|
9
17
|
* Handles element attributes and properties based on state
|
|
10
18
|
*/
|
|
11
19
|
const getTimeSliderRootProps = (state, element) => {
|
|
12
|
-
|
|
13
|
-
return `${Math.floor(time / 60)}:${Math.floor(time % 60).toString().padStart(2, "0")}`;
|
|
14
|
-
};
|
|
15
|
-
const currentTimeText = formatTime(state.currentTime);
|
|
16
|
-
const durationText = formatTime(state.duration);
|
|
20
|
+
if (state._rootElement !== element) state._setRootElement(element);
|
|
17
21
|
return {
|
|
18
22
|
role: "slider",
|
|
19
23
|
tabindex: element.getAttribute("tabindex") ?? "0",
|
|
@@ -24,15 +28,11 @@ const getTimeSliderRootProps = (state, element) => {
|
|
|
24
28
|
"aria-valuemin": "0",
|
|
25
29
|
"aria-valuemax": Math.round(state.duration).toString(),
|
|
26
30
|
"aria-valuenow": Math.round(state.currentTime).toString(),
|
|
27
|
-
"aria-valuetext": `${
|
|
31
|
+
"aria-valuetext": `${state._currentTimeText} of ${state._durationText}`,
|
|
28
32
|
"aria-orientation": element.orientation || "horizontal"
|
|
29
33
|
};
|
|
30
34
|
};
|
|
31
35
|
var TimeSliderRoot = class extends HTMLElement {
|
|
32
|
-
constructor(..._args) {
|
|
33
|
-
super(..._args);
|
|
34
|
-
this._core = null;
|
|
35
|
-
}
|
|
36
36
|
static {
|
|
37
37
|
this.observedAttributes = ["commandfor", "orientation"];
|
|
38
38
|
}
|
|
@@ -46,35 +46,23 @@ var TimeSliderRoot = class extends HTMLElement {
|
|
|
46
46
|
return this.getAttribute("orientation") || "horizontal";
|
|
47
47
|
}
|
|
48
48
|
attributeChangedCallback(name, _oldValue, newValue) {
|
|
49
|
-
if (name === "orientation" && this._state) this.
|
|
49
|
+
if (name === "orientation" && this._state) this._update(getTimeSliderRootProps(this._state, this), this._state);
|
|
50
50
|
else if (name === "commandfor") this.style.setProperty("anchor-name", `--${newValue}`);
|
|
51
51
|
}
|
|
52
|
-
_update(
|
|
52
|
+
_update(props, state) {
|
|
53
53
|
this._state = state;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
this._core.subscribe(() => this._render(getTimeSliderRootProps(state, this), state));
|
|
57
|
-
this._core.attach(this);
|
|
58
|
-
state.core = this._core;
|
|
59
|
-
}
|
|
60
|
-
this._core?.setState(state);
|
|
61
|
-
}
|
|
62
|
-
_render(props, state) {
|
|
63
|
-
const coreState = state?.core?.getState();
|
|
64
|
-
if (!coreState) return;
|
|
65
|
-
this.style.setProperty("--slider-fill", `${Math.round(coreState._fillWidth)}%`);
|
|
66
|
-
this.style.setProperty("--slider-pointer", `${Math.round(coreState._pointerWidth)}%`);
|
|
54
|
+
this.style.setProperty("--slider-fill", `${state._fillWidth.toFixed(3)}%`);
|
|
55
|
+
this.style.setProperty("--slider-pointer", `${(state._pointerWidth * 100).toFixed(3)}%`);
|
|
67
56
|
setAttributes(this, props);
|
|
68
57
|
}
|
|
69
58
|
};
|
|
59
|
+
const TimeSliderRootElement = toConnectedHTMLComponent(TimeSliderRoot, getTimeSliderRootState, getTimeSliderRootProps, "TimeSliderRoot");
|
|
60
|
+
const getTimeSliderTrackProps = (_state, element) => {
|
|
61
|
+
const rootElement = element.closest("media-time-slider");
|
|
62
|
+
if (rootElement._state?._trackElement !== element) rootElement._state?._setTrackElement?.(element);
|
|
63
|
+
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
64
|
+
};
|
|
70
65
|
var TimeSliderTrack = class extends HTMLElement {
|
|
71
|
-
constructor() {
|
|
72
|
-
super();
|
|
73
|
-
}
|
|
74
|
-
connectedCallback() {
|
|
75
|
-
const rootElement = this.closest("media-time-slider");
|
|
76
|
-
if (rootElement?._state?.core) rootElement._state.core.setState({ _trackElement: this });
|
|
77
|
-
}
|
|
78
66
|
_update(props, _state) {
|
|
79
67
|
setAttributes(this, props);
|
|
80
68
|
if (props["data-orientation"] === "horizontal") {
|
|
@@ -86,6 +74,11 @@ var TimeSliderTrack = class extends HTMLElement {
|
|
|
86
74
|
}
|
|
87
75
|
}
|
|
88
76
|
};
|
|
77
|
+
const TimeSliderTrackElement = toConnectedHTMLComponent(TimeSliderTrack, void 0, getTimeSliderTrackProps, "TimeSliderTrack");
|
|
78
|
+
const getTimeSliderProgressProps = (_state, element) => {
|
|
79
|
+
const rootElement = element.closest("media-time-slider");
|
|
80
|
+
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
81
|
+
};
|
|
89
82
|
var TimeSliderProgress = class extends HTMLElement {
|
|
90
83
|
constructor() {
|
|
91
84
|
super();
|
|
@@ -108,6 +101,11 @@ var TimeSliderProgress = class extends HTMLElement {
|
|
|
108
101
|
}
|
|
109
102
|
}
|
|
110
103
|
};
|
|
104
|
+
const TimeSliderProgressElement = toConnectedHTMLComponent(TimeSliderProgress, void 0, getTimeSliderProgressProps, "TimeSliderProgress");
|
|
105
|
+
const getTimeSliderPointerProps = (_state, element) => {
|
|
106
|
+
const rootElement = element.closest("media-time-slider");
|
|
107
|
+
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
108
|
+
};
|
|
111
109
|
var TimeSliderPointer = class extends HTMLElement {
|
|
112
110
|
constructor() {
|
|
113
111
|
super();
|
|
@@ -130,6 +128,11 @@ var TimeSliderPointer = class extends HTMLElement {
|
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
130
|
};
|
|
131
|
+
const TimeSliderPointerElement = toConnectedHTMLComponent(TimeSliderPointer, void 0, getTimeSliderPointerProps, "TimeSliderPointer");
|
|
132
|
+
const getTimeSliderThumbProps = (_state, element) => {
|
|
133
|
+
const rootElement = element.closest("media-time-slider");
|
|
134
|
+
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
135
|
+
};
|
|
133
136
|
var TimeSliderThumb = class extends HTMLElement {
|
|
134
137
|
constructor() {
|
|
135
138
|
super();
|
|
@@ -148,47 +151,7 @@ var TimeSliderThumb = class extends HTMLElement {
|
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
};
|
|
151
|
-
const
|
|
152
|
-
keys: timeSliderStateDefinition.keys,
|
|
153
|
-
transform: (rawState, mediaStore) => ({
|
|
154
|
-
...timeSliderStateDefinition.stateTransform(rawState),
|
|
155
|
-
...timeSliderStateDefinition.createRequestMethods(mediaStore.dispatch),
|
|
156
|
-
core: null
|
|
157
|
-
})
|
|
158
|
-
};
|
|
159
|
-
const getTimeSliderTrackProps = (_state, element) => {
|
|
160
|
-
const rootElement = element.closest("media-time-slider");
|
|
161
|
-
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
162
|
-
};
|
|
163
|
-
const getTimeSliderProgressProps = (_state, element) => {
|
|
164
|
-
const rootElement = element.closest("media-time-slider");
|
|
165
|
-
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
166
|
-
};
|
|
167
|
-
const getTimeSliderPointerProps = (_state, element) => {
|
|
168
|
-
const rootElement = element.closest("media-time-slider");
|
|
169
|
-
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
170
|
-
};
|
|
171
|
-
const getTimeSliderThumbProps = (_state, element) => {
|
|
172
|
-
const rootElement = element.closest("media-time-slider");
|
|
173
|
-
return { "data-orientation": rootElement?.orientation || "horizontal" };
|
|
174
|
-
};
|
|
175
|
-
const TimeSliderRootElement = toConnectedHTMLComponent(TimeSliderRoot, useTimeSliderRootState, getTimeSliderRootProps, "TimeSliderRoot");
|
|
176
|
-
const TimeSliderTrackElement = toConnectedHTMLComponent(TimeSliderTrack, {
|
|
177
|
-
keys: [],
|
|
178
|
-
transform: () => ({})
|
|
179
|
-
}, getTimeSliderTrackProps, "TimeSliderTrack");
|
|
180
|
-
const TimeSliderProgressElement = toConnectedHTMLComponent(TimeSliderProgress, {
|
|
181
|
-
keys: [],
|
|
182
|
-
transform: () => ({})
|
|
183
|
-
}, getTimeSliderProgressProps, "TimeSliderProgress");
|
|
184
|
-
const TimeSliderPointerElement = toConnectedHTMLComponent(TimeSliderPointer, {
|
|
185
|
-
keys: [],
|
|
186
|
-
transform: () => ({})
|
|
187
|
-
}, getTimeSliderPointerProps, "TimeSliderPointer");
|
|
188
|
-
const TimeSliderThumbElement = toConnectedHTMLComponent(TimeSliderThumb, {
|
|
189
|
-
keys: [],
|
|
190
|
-
transform: () => ({})
|
|
191
|
-
}, getTimeSliderThumbProps, "TimeSliderThumb");
|
|
154
|
+
const TimeSliderThumbElement = toConnectedHTMLComponent(TimeSliderThumb, void 0, getTimeSliderThumbProps, "TimeSliderThumb");
|
|
192
155
|
const TimeSliderElement = Object.assign({}, {
|
|
193
156
|
Root: TimeSliderRootElement,
|
|
194
157
|
Track: TimeSliderTrackElement,
|
|
@@ -199,4 +162,4 @@ const TimeSliderElement = Object.assign({}, {
|
|
|
199
162
|
|
|
200
163
|
//#endregion
|
|
201
164
|
export { TimeSliderThumbElement as a, TimeSliderRootElement as i, TimeSliderPointerElement as n, TimeSliderTrackElement as o, TimeSliderProgressElement as r, TimeSliderElement as t };
|
|
202
|
-
//# sourceMappingURL=time-slider-
|
|
165
|
+
//# sourceMappingURL=time-slider-DHpKPCI1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-slider-DHpKPCI1.js","names":["CoreTimeSlider","getTimeSliderRootProps: PropsHook<TimeSliderState>","TimeSliderRootElement: ConnectedComponentConstructor<TimeSliderState>","getTimeSliderTrackProps: PropsHook<Record<string, never>>","TimeSliderTrackElement: ConnectedComponentConstructor<any>","getTimeSliderProgressProps: PropsHook<Record<string, never>>","TimeSliderProgressElement: ConnectedComponentConstructor<any>","getTimeSliderPointerProps: PropsHook<Record<string, never>>","TimeSliderPointerElement: ConnectedComponentConstructor<any>","getTimeSliderThumbProps: PropsHook<Record<string, never>>","TimeSliderThumbElement: ConnectedComponentConstructor<any>"],"sources":["../src/elements/time-slider.ts"],"sourcesContent":["import type { MediaStore } from '@videojs/core/store';\nimport type { Prettify } from '../types';\n\nimport type { ConnectedComponentConstructor, PropsHook } from '../utils/component-factory';\nimport { TimeSlider as CoreTimeSlider } from '@videojs/core';\nimport { timeSliderStateDefinition } from '@videojs/core/store';\n\nimport { setAttributes } from '@videojs/utils/dom';\nimport { getCoreState, toConnectedHTMLComponent } from '../utils/component-factory';\n\ntype TimeSliderState = Prettify<ReturnType<CoreTimeSlider['getState']>>;\n\n// ============================================================================\n// ROOT COMPONENT\n// ============================================================================\n\nexport function getTimeSliderRootState(mediaStore: MediaStore): TimeSliderState {\n const mediaState = timeSliderStateDefinition.stateTransform(mediaStore.getState());\n const mediaMethods = timeSliderStateDefinition.createRequestMethods(mediaStore.dispatch);\n const coreState = getCoreState(CoreTimeSlider, { ...mediaState, ...mediaMethods });\n return {\n ...coreState,\n };\n}\n\n/**\n * TimeSlider Root props hook - equivalent to React's useTimeSliderRootProps\n * Handles element attributes and properties based on state\n */\nexport const getTimeSliderRootProps: PropsHook<TimeSliderState> = (state, element) => {\n if (state._rootElement !== element) {\n state._setRootElement(element);\n }\n\n return {\n role: 'slider',\n tabindex: element.getAttribute('tabindex') ?? '0',\n 'data-current-time': state.currentTime.toString(),\n 'data-duration': state.duration.toString(),\n 'data-orientation': (element as any).orientation || 'horizontal',\n 'aria-label': 'Seek',\n 'aria-valuemin': '0',\n 'aria-valuemax': Math.round(state.duration).toString(),\n 'aria-valuenow': Math.round(state.currentTime).toString(),\n 'aria-valuetext': `${state._currentTimeText} of ${state._durationText}`,\n 'aria-orientation': (element as any).orientation || 'horizontal',\n };\n};\n\nexport class TimeSliderRoot extends HTMLElement {\n static readonly observedAttributes: readonly string[] = [\n 'commandfor',\n 'orientation',\n ];\n\n _state: TimeSliderState | undefined;\n\n get currentTime(): number {\n return this._state?.currentTime ?? 0;\n }\n\n get duration(): number {\n return this._state?.duration ?? 0;\n }\n\n get orientation(): 'horizontal' | 'vertical' {\n return (this.getAttribute('orientation') as 'horizontal' | 'vertical') || 'horizontal';\n }\n\n attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void {\n if (name === 'orientation' && this._state) {\n this._update(getTimeSliderRootProps(this._state, this), this._state);\n } else if (name === 'commandfor') {\n this.style.setProperty('anchor-name', `--${newValue}`);\n }\n }\n\n _update(props: any, state: TimeSliderState): void {\n this._state = state;\n\n this.style.setProperty('--slider-fill', `${state._fillWidth.toFixed(3)}%`);\n this.style.setProperty('--slider-pointer', `${(state._pointerWidth * 100).toFixed(3)}%`);\n\n setAttributes(this, props);\n }\n}\n\nexport const TimeSliderRootElement: ConnectedComponentConstructor<TimeSliderState>\n = toConnectedHTMLComponent(\n TimeSliderRoot,\n getTimeSliderRootState,\n getTimeSliderRootProps,\n 'TimeSliderRoot',\n );\n\n// ============================================================================\n// TRACK COMPONENT\n// ============================================================================\n\nexport const getTimeSliderTrackProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n\n if (rootElement._state?._trackElement !== element) {\n rootElement._state?._setTrackElement?.(element);\n }\n\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport class TimeSliderTrack extends HTMLElement {\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = '100%';\n this.style.removeProperty('height');\n } else {\n this.style.height = '100%';\n this.style.removeProperty('width');\n }\n }\n}\n\nexport const TimeSliderTrackElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderTrack,\n undefined,\n getTimeSliderTrackProps,\n 'TimeSliderTrack',\n);\n\n// ============================================================================\n// PROGRESS COMPONENT\n// ============================================================================\n\nexport const getTimeSliderProgressProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport class TimeSliderProgress extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = 'var(--slider-fill, 0%)';\n this.style.height = '100%';\n this.style.top = '0';\n this.style.removeProperty('bottom');\n } else {\n this.style.height = 'var(--slider-fill, 0%)';\n this.style.width = '100%';\n this.style.bottom = '0';\n this.style.removeProperty('top');\n }\n }\n}\n\nexport const TimeSliderProgressElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderProgress,\n undefined,\n getTimeSliderProgressProps,\n 'TimeSliderProgress',\n);\n\n// ============================================================================\n// POINTER COMPONENT\n// ============================================================================\n\nexport const getTimeSliderPointerProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport class TimeSliderPointer extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n this.style.width = 'var(--slider-pointer, 0%)';\n this.style.height = '100%';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n if (props['data-orientation'] === 'horizontal') {\n this.style.width = 'var(--slider-pointer, 0%)';\n this.style.height = '100%';\n this.style.top = '0';\n this.style.removeProperty('bottom');\n } else {\n this.style.height = 'var(--slider-pointer, 0%)';\n this.style.width = '100%';\n this.style.bottom = '0';\n this.style.removeProperty('top');\n }\n }\n}\n\nexport const TimeSliderPointerElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderPointer,\n undefined,\n getTimeSliderPointerProps,\n 'TimeSliderPointer',\n);\n\n// ============================================================================\n// THUMB COMPONENT\n// ============================================================================\n\nexport const getTimeSliderThumbProps: PropsHook<Record<string, never>> = (_state, element) => {\n const rootElement = element.closest('media-time-slider') as any;\n return {\n 'data-orientation': rootElement?.orientation || 'horizontal',\n };\n};\n\nexport class TimeSliderThumb extends HTMLElement {\n constructor() {\n super();\n this.style.position = 'absolute';\n }\n\n _update(props: any, _state: any): void {\n setAttributes(this, props);\n\n // Set appropriate positioning based on orientation\n if (props['data-orientation'] === 'horizontal') {\n this.style.left = 'var(--slider-fill, 0%)';\n this.style.top = '50%';\n this.style.translate = '-50% -50%';\n } else {\n this.style.bottom = 'var(--slider-fill, 0%)';\n this.style.left = '50%';\n this.style.translate = '-50% 50%';\n }\n }\n}\n\nexport const TimeSliderThumbElement: ConnectedComponentConstructor<any> = toConnectedHTMLComponent(\n TimeSliderThumb,\n undefined,\n getTimeSliderThumbProps,\n 'TimeSliderThumb',\n);\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\nexport const TimeSliderElement = Object.assign(\n {},\n {\n Root: TimeSliderRootElement,\n Track: TimeSliderTrackElement,\n Progress: TimeSliderProgressElement,\n Pointer: TimeSliderPointerElement,\n Thumb: TimeSliderThumbElement,\n },\n) as {\n Root: typeof TimeSliderRootElement;\n Track: typeof TimeSliderTrackElement;\n Progress: typeof TimeSliderProgressElement;\n Pointer: typeof TimeSliderPointerElement;\n Thumb: typeof TimeSliderThumbElement;\n};\n"],"mappings":"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"}
|