@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.
Files changed (58) hide show
  1. package/dist/{component-factory-DeAN6cjC.js → component-factory-C0cl1nrL.js} +30 -4
  2. package/dist/component-factory-C0cl1nrL.js.map +1 -0
  3. package/dist/{current-time-display-C3qndGf5.js → current-time-display-DpoDrQu9.js} +6 -7
  4. package/dist/current-time-display-DpoDrQu9.js.map +1 -0
  5. package/dist/define/index.js +17 -17
  6. package/dist/define/media-current-time-display.js +3 -3
  7. package/dist/define/media-duration-display.js +3 -3
  8. package/dist/define/media-fullscreen-button.js +3 -3
  9. package/dist/define/media-mute-button.js +3 -3
  10. package/dist/define/media-play-button.js +3 -3
  11. package/dist/define/media-preview-time-display.js +3 -3
  12. package/dist/define/media-time-slider.js +3 -3
  13. package/dist/define/media-volume-slider.js +3 -3
  14. package/dist/{duration-display-JOPp3bdU.js → duration-display-BFRQmaOz.js} +6 -7
  15. package/dist/duration-display-BFRQmaOz.js.map +1 -0
  16. package/dist/{fullscreen-button-C1nq8yP-.js → fullscreen-button-B0R9K3GV.js} +7 -8
  17. package/dist/fullscreen-button-B0R9K3GV.js.map +1 -0
  18. package/dist/index.d.ts +27 -35
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +9 -9
  21. package/dist/{media-current-time-display-B-4Cp845.js → media-current-time-display-DVCqNt7c.js} +2 -2
  22. package/dist/{media-current-time-display-B-4Cp845.js.map → media-current-time-display-DVCqNt7c.js.map} +1 -1
  23. package/dist/{media-duration-display-BLMr7VHo.js → media-duration-display-tzVLafRm.js} +2 -2
  24. package/dist/{media-duration-display-BLMr7VHo.js.map → media-duration-display-tzVLafRm.js.map} +1 -1
  25. package/dist/{media-fullscreen-button-CIpcLhtU.js → media-fullscreen-button-DDQ6EdLz.js} +2 -2
  26. package/dist/{media-fullscreen-button-CIpcLhtU.js.map → media-fullscreen-button-DDQ6EdLz.js.map} +1 -1
  27. package/dist/{media-mute-button-CHHISH91.js → media-mute-button-Uy18NpPx.js} +2 -2
  28. package/dist/{media-mute-button-CHHISH91.js.map → media-mute-button-Uy18NpPx.js.map} +1 -1
  29. package/dist/{media-play-button-DhSK0JQk.js → media-play-button-CDBZrhmx.js} +2 -2
  30. package/dist/{media-play-button-DhSK0JQk.js.map → media-play-button-CDBZrhmx.js.map} +1 -1
  31. package/dist/{media-preview-time-display-DAiMgLPX.js → media-preview-time-display-ufqXiNXg.js} +2 -2
  32. package/dist/{media-preview-time-display-DAiMgLPX.js.map → media-preview-time-display-ufqXiNXg.js.map} +1 -1
  33. package/dist/{media-time-slider-SuxR3Rep.js → media-time-slider-BOdJr4QE.js} +2 -2
  34. package/dist/{media-time-slider-SuxR3Rep.js.map → media-time-slider-BOdJr4QE.js.map} +1 -1
  35. package/dist/{media-volume-slider-B-n6b3Y8.js → media-volume-slider-BB6GhrzS.js} +2 -2
  36. package/dist/{media-volume-slider-B-n6b3Y8.js.map → media-volume-slider-BB6GhrzS.js.map} +1 -1
  37. package/dist/{mute-button-BSDoCZs3.js → mute-button-C7XQB6iK.js} +7 -8
  38. package/dist/mute-button-C7XQB6iK.js.map +1 -0
  39. package/dist/{play-button-gaqIKsrv.js → play-button-DFbxwrrq.js} +11 -8
  40. package/dist/play-button-DFbxwrrq.js.map +1 -0
  41. package/dist/{preview-time-display-Dax0FQ2X.js → preview-time-display-CtA58pCS.js} +6 -7
  42. package/dist/preview-time-display-CtA58pCS.js.map +1 -0
  43. package/dist/skins/frosted.js +17 -17
  44. package/dist/skins/minimal.js +17 -17
  45. package/dist/{time-slider-DKamO_2Q.js → time-slider-DHpKPCI1.js} +38 -75
  46. package/dist/time-slider-DHpKPCI1.js.map +1 -0
  47. package/dist/{volume-slider-CbFzCHX4.js → volume-slider-CUyfwehe.js} +36 -102
  48. package/dist/volume-slider-CUyfwehe.js.map +1 -0
  49. package/package.json +4 -4
  50. package/dist/component-factory-DeAN6cjC.js.map +0 -1
  51. package/dist/current-time-display-C3qndGf5.js.map +0 -1
  52. package/dist/duration-display-JOPp3bdU.js.map +0 -1
  53. package/dist/fullscreen-button-C1nq8yP-.js.map +0 -1
  54. package/dist/mute-button-BSDoCZs3.js.map +0 -1
  55. package/dist/play-button-gaqIKsrv.js.map +0 -1
  56. package/dist/preview-time-display-Dax0FQ2X.js.map +0 -1
  57. package/dist/time-slider-DKamO_2Q.js.map +0 -1
  58. 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-CbFzCHX4.js";
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-B-n6b3Y8.js.map
11
+ //# sourceMappingURL=media-volume-slider-BB6GhrzS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-volume-slider-B-n6b3Y8.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
+ {"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 { t as toConnectedHTMLComponent } from "./component-factory-DeAN6cjC.js";
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
- const getMuteButtonState = {
30
- keys: muteButtonStateDefinition.keys,
31
- transform: (rawState, mediaStore) => ({
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-BSDoCZs3.js.map
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 { t as toConnectedHTMLComponent } from "./component-factory-DeAN6cjC.js";
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
- const getPlayButtonState = {
25
- keys: playButtonStateDefinition.keys,
26
- transform: (rawState, mediaStore) => ({
27
- ...playButtonStateDefinition.stateTransform(rawState),
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-gaqIKsrv.js.map
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 { t as toConnectedHTMLComponent } from "./component-factory-DeAN6cjC.js";
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
- const usePreviewTimeDisplayState = {
34
- keys: [...previewTimeDisplayStateDefinition.keys],
35
- transform: (rawState, _mediaStore) => ({ ...previewTimeDisplayStateDefinition.stateTransform(rawState) })
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, usePreviewTimeDisplayState, getPreviewTimeDisplayProps, "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-Dax0FQ2X.js.map
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"}
@@ -1,15 +1,15 @@
1
- import "../component-factory-DeAN6cjC.js";
2
- import "../current-time-display-C3qndGf5.js";
3
- import "../duration-display-JOPp3bdU.js";
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-C1nq8yP-.js";
6
- import "../mute-button-BSDoCZs3.js";
7
- import "../play-button-gaqIKsrv.js";
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-Dax0FQ2X.js";
10
- import "../time-slider-DKamO_2Q.js";
9
+ import "../preview-time-display-CtA58pCS.js";
10
+ import "../time-slider-DHpKPCI1.js";
11
11
  import "../tooltip-B-glki2f.js";
12
- import "../volume-slider-CbFzCHX4.js";
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-DhSK0JQk.js";
21
- import "../media-mute-button-CHHISH91.js";
22
- import "../media-volume-slider-B-n6b3Y8.js";
23
- import "../media-time-slider-SuxR3Rep.js";
24
- import "../media-fullscreen-button-CIpcLhtU.js";
25
- import "../media-duration-display-BLMr7VHo.js";
26
- import "../media-current-time-display-B-4Cp845.js";
27
- import "../media-preview-time-display-DAiMgLPX.js";
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,15 +1,15 @@
1
- import "../component-factory-DeAN6cjC.js";
2
- import "../current-time-display-C3qndGf5.js";
3
- import "../duration-display-JOPp3bdU.js";
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-C1nq8yP-.js";
6
- import "../mute-button-BSDoCZs3.js";
7
- import "../play-button-gaqIKsrv.js";
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-Dax0FQ2X.js";
10
- import "../time-slider-DKamO_2Q.js";
9
+ import "../preview-time-display-CtA58pCS.js";
10
+ import "../time-slider-DHpKPCI1.js";
11
11
  import "../tooltip-B-glki2f.js";
12
- import "../volume-slider-CbFzCHX4.js";
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-DhSK0JQk.js";
21
- import "../media-mute-button-CHHISH91.js";
22
- import "../media-volume-slider-B-n6b3Y8.js";
23
- import "../media-time-slider-SuxR3Rep.js";
24
- import "../media-fullscreen-button-CIpcLhtU.js";
25
- import "../media-duration-display-BLMr7VHo.js";
26
- import "../media-current-time-display-B-4Cp845.js";
27
- import "../media-preview-time-display-DAiMgLPX.js";
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 { t as toConnectedHTMLComponent } from "./component-factory-DeAN6cjC.js";
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
- const formatTime = (time) => {
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": `${currentTimeText} of ${durationText}`,
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._render(getTimeSliderRootProps(this._state, this), this._state);
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(_props, state) {
52
+ _update(props, state) {
53
53
  this._state = state;
54
- if (state && !this._core) {
55
- this._core = new TimeSlider();
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 useTimeSliderRootState = {
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-DKamO_2Q.js.map
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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"}