@skodaflow/web-library 8.4.0 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/cjs/components/carousel/Autoplay.js.map +1 -1
  2. package/cjs/components/carousel/Carousel.js +1 -1
  3. package/cjs/components/carousel/Carousel.js.map +1 -1
  4. package/cjs/components/carousel/Navigation.js +1 -1
  5. package/cjs/components/carousel/Navigation.js.map +1 -1
  6. package/cjs/components/carousel/Pagination.js +1 -1
  7. package/cjs/components/carousel/Pagination.js.map +1 -1
  8. package/cjs/components/header/Header.js +1 -1
  9. package/cjs/components/header/Header.js.map +1 -1
  10. package/cjs/components/header/HeaderNavigationHero.js +1 -1
  11. package/cjs/components/header/HeaderNavigationHero.js.map +1 -1
  12. package/cjs/components/header/HeaderNavigationMenu.js +1 -1
  13. package/cjs/components/header/HeaderNavigationMenu.js.map +1 -1
  14. package/cjs/components/hotspotCard/HotspotCard.js +1 -1
  15. package/cjs/components/hotspotCard/HotspotCard.js.map +1 -1
  16. package/cjs/components/icon/stroke/EmissionLabelIcon.js.map +1 -1
  17. package/cjs/components/image/Image.d.ts +38 -14
  18. package/cjs/components/image/Image.js +1 -1
  19. package/cjs/components/image/Image.js.map +1 -1
  20. package/cjs/components/index.d.ts +1 -0
  21. package/cjs/components/label/Label.js.map +1 -1
  22. package/cjs/components/overlay/Overlay.js +1 -1
  23. package/cjs/components/overlay/Overlay.js.map +1 -1
  24. package/cjs/components/video/Video.d.ts +9 -8
  25. package/cjs/components/video/Video.js +1 -1
  26. package/cjs/components/video/Video.js.map +1 -1
  27. package/cjs/components/video/index.d.ts +5 -1
  28. package/cjs/components/video/useVideoFullscreen.d.ts +13 -0
  29. package/cjs/components/video/useVideoFullscreen.js +2 -0
  30. package/cjs/components/video/useVideoFullscreen.js.map +1 -0
  31. package/cjs/components/video/useVideoPlayPause.d.ts +13 -0
  32. package/cjs/components/video/useVideoPlayPause.js +2 -0
  33. package/cjs/components/video/useVideoPlayPause.js.map +1 -0
  34. package/cjs/components/video/useVideoReady.d.ts +6 -0
  35. package/cjs/components/video/useVideoReady.js +2 -0
  36. package/cjs/components/video/useVideoReady.js.map +1 -0
  37. package/cjs/components/video/useVideoSoundControls.d.ts +17 -0
  38. package/cjs/components/video/useVideoSoundControls.js +2 -0
  39. package/cjs/components/video/useVideoSoundControls.js.map +1 -0
  40. package/cjs/components/video/useVideoTime.d.ts +22 -0
  41. package/cjs/components/video/useVideoTime.js +2 -0
  42. package/cjs/components/video/useVideoTime.js.map +1 -0
  43. package/cjs/components/videoPlayer/VideoPlayer.d.ts +125 -0
  44. package/cjs/components/videoPlayer/VideoPlayer.js +2 -0
  45. package/cjs/components/videoPlayer/VideoPlayer.js.map +1 -0
  46. package/cjs/components/videoPlayer/VideoPlayerFullscreenButton.d.ts +31 -0
  47. package/cjs/components/videoPlayer/VideoPlayerFullscreenButton.js +2 -0
  48. package/cjs/components/videoPlayer/VideoPlayerFullscreenButton.js.map +1 -0
  49. package/cjs/components/videoPlayer/VideoPlayerIconButton.d.ts +16 -0
  50. package/cjs/components/videoPlayer/VideoPlayerIconButton.js +2 -0
  51. package/cjs/components/videoPlayer/VideoPlayerIconButton.js.map +1 -0
  52. package/cjs/components/videoPlayer/VideoPlayerPlayPauseButton.d.ts +31 -0
  53. package/cjs/components/videoPlayer/VideoPlayerPlayPauseButton.js +2 -0
  54. package/cjs/components/videoPlayer/VideoPlayerPlayPauseButton.js.map +1 -0
  55. package/cjs/components/videoPlayer/VideoPlayerSkipButton.d.ts +23 -0
  56. package/cjs/components/videoPlayer/VideoPlayerSkipButton.js +2 -0
  57. package/cjs/components/videoPlayer/VideoPlayerSkipButton.js.map +1 -0
  58. package/cjs/components/videoPlayer/VideoPlayerSlider.d.ts +12 -0
  59. package/cjs/components/videoPlayer/VideoPlayerSlider.js +2 -0
  60. package/cjs/components/videoPlayer/VideoPlayerSlider.js.map +1 -0
  61. package/cjs/components/videoPlayer/VideoPlayerSoundButton.d.ts +31 -0
  62. package/cjs/components/videoPlayer/VideoPlayerSoundButton.js +2 -0
  63. package/cjs/components/videoPlayer/VideoPlayerSoundButton.js.map +1 -0
  64. package/cjs/components/videoPlayer/VideoPlayerTime.d.ts +17 -0
  65. package/cjs/components/videoPlayer/VideoPlayerTime.js +2 -0
  66. package/cjs/components/videoPlayer/VideoPlayerTime.js.map +1 -0
  67. package/cjs/components/videoPlayer/formatVideoTime.d.ts +5 -0
  68. package/cjs/components/videoPlayer/formatVideoTime.js +2 -0
  69. package/cjs/components/videoPlayer/formatVideoTime.js.map +1 -0
  70. package/cjs/components/videoPlayer/index.d.ts +10 -0
  71. package/cjs/components/videoPlayer/useVideoPlayerVisibility.d.ts +24 -0
  72. package/cjs/components/videoPlayer/useVideoPlayerVisibility.js +2 -0
  73. package/cjs/components/videoPlayer/useVideoPlayerVisibility.js.map +1 -0
  74. package/cjs/index.js +1 -1
  75. package/cjs/materialui/accordion/AccordionSummaryExpandWrapper.d.ts +5 -1
  76. package/cjs/materialui/accordion/AccordionSummaryExpandWrapper.js +1 -1
  77. package/cjs/materialui/accordion/AccordionSummaryExpandWrapper.js.map +1 -1
  78. package/cjs/materialui/alert/alertTitle.theme.js.map +1 -1
  79. package/cjs/materialui/card/Card.js.map +1 -1
  80. package/cjs/materialui/card/card.theme.js +1 -1
  81. package/cjs/materialui/card/card.theme.js.map +1 -1
  82. package/cjs/materialui/divider/divider.theme.js +1 -1
  83. package/cjs/materialui/divider/divider.theme.js.map +1 -1
  84. package/cjs/materialui/skeleton/skeleton.theme.js +1 -1
  85. package/cjs/materialui/skeleton/skeleton.theme.js.map +1 -1
  86. package/cjs/materialui/slider/slider.theme.js +1 -1
  87. package/cjs/materialui/slider/slider.theme.js.map +1 -1
  88. package/cjs/materialui/table/tablePagination.theme.js.map +1 -1
  89. package/cjs/materialui/tabs/Tab.d.ts +1 -0
  90. package/cjs/materialui/tabs/Tab.js +1 -1
  91. package/cjs/materialui/tabs/Tab.js.map +1 -1
  92. package/cjs/materialui/tabs/TabsScrollButton.d.ts +3 -1
  93. package/cjs/materialui/tabs/TabsScrollButton.js +1 -1
  94. package/cjs/materialui/tabs/TabsScrollButton.js.map +1 -1
  95. package/cjs/materialui/textfield/FormControl.js +1 -1
  96. package/cjs/materialui/textfield/FormControl.js.map +1 -1
  97. package/cjs/materialui/textfield/FormHelperText.js +1 -1
  98. package/cjs/materialui/textfield/FormHelperText.js.map +1 -1
  99. package/cjs/materialui/theme/sxConfig.js.map +1 -1
  100. package/cjs/materialui/theme/theme.extensions.d.ts +29 -0
  101. package/cjs/node_modules/swiper/modules/a11y.js +2 -0
  102. package/cjs/node_modules/swiper/modules/a11y.js.map +1 -0
  103. package/cjs/node_modules/swiper/modules/autoplay.js +1 -1
  104. package/cjs/node_modules/swiper/modules/autoplay.js.map +1 -1
  105. package/cjs/node_modules/swiper/modules/effect-fade.js +1 -1
  106. package/cjs/node_modules/swiper/modules/effect-fade.js.map +1 -1
  107. package/cjs/node_modules/swiper/modules/keyboard.js +1 -1
  108. package/cjs/node_modules/swiper/modules/keyboard.js.map +1 -1
  109. package/cjs/node_modules/swiper/modules/parallax.js +1 -1
  110. package/cjs/node_modules/swiper/modules/parallax.js.map +1 -1
  111. package/cjs/node_modules/swiper/shared/classes-to-selector.js +2 -0
  112. package/cjs/node_modules/swiper/shared/classes-to-selector.js.map +1 -0
  113. package/cjs/node_modules/swiper/shared/effect-init.js +1 -1
  114. package/cjs/node_modules/swiper/shared/effect-init.js.map +1 -1
  115. package/cjs/node_modules/swiper/shared/effect-target.js +1 -1
  116. package/cjs/node_modules/swiper/shared/effect-target.js.map +1 -1
  117. package/cjs/node_modules/swiper/shared/effect-virtual-transition-end.js +1 -1
  118. package/cjs/node_modules/swiper/shared/effect-virtual-transition-end.js.map +1 -1
  119. package/cjs/node_modules/swiper/shared/swiper-core.js +1 -1
  120. package/cjs/node_modules/swiper/shared/swiper-core.js.map +1 -1
  121. package/cjs/node_modules/swiper/shared/update-on-virtual-data.js +1 -1
  122. package/cjs/node_modules/swiper/shared/update-on-virtual-data.js.map +1 -1
  123. package/cjs/node_modules/swiper/shared/update-swiper.js +1 -1
  124. package/cjs/node_modules/swiper/shared/update-swiper.js.map +1 -1
  125. package/cjs/node_modules/swiper/shared/utils.js +1 -1
  126. package/cjs/node_modules/swiper/shared/utils.js.map +1 -1
  127. package/cjs/node_modules/swiper/swiper-react.js +1 -1
  128. package/cjs/node_modules/swiper/swiper-react.js.map +1 -1
  129. package/cjs/package.json +1 -0
  130. package/components/carousel/Autoplay.js.map +1 -1
  131. package/components/carousel/Carousel.js +1 -1
  132. package/components/carousel/Carousel.js.map +1 -1
  133. package/components/carousel/Navigation.js +1 -1
  134. package/components/carousel/Navigation.js.map +1 -1
  135. package/components/carousel/Pagination.js +1 -1
  136. package/components/carousel/Pagination.js.map +1 -1
  137. package/components/header/Header.js +1 -1
  138. package/components/header/Header.js.map +1 -1
  139. package/components/header/HeaderNavigationHero.js +1 -1
  140. package/components/header/HeaderNavigationHero.js.map +1 -1
  141. package/components/header/HeaderNavigationMenu.js +1 -1
  142. package/components/header/HeaderNavigationMenu.js.map +1 -1
  143. package/components/hotspotCard/HotspotCard.js +1 -1
  144. package/components/hotspotCard/HotspotCard.js.map +1 -1
  145. package/components/icon/stroke/EmissionLabelIcon.js.map +1 -1
  146. package/components/image/Image.d.ts +38 -14
  147. package/components/image/Image.js +1 -1
  148. package/components/image/Image.js.map +1 -1
  149. package/components/index.d.ts +1 -0
  150. package/components/label/Label.js.map +1 -1
  151. package/components/overlay/Overlay.js +1 -1
  152. package/components/overlay/Overlay.js.map +1 -1
  153. package/components/video/Video.d.ts +9 -8
  154. package/components/video/Video.js +1 -1
  155. package/components/video/Video.js.map +1 -1
  156. package/components/video/index.d.ts +5 -1
  157. package/components/video/useVideoFullscreen.d.ts +13 -0
  158. package/components/video/useVideoFullscreen.js +2 -0
  159. package/components/video/useVideoFullscreen.js.map +1 -0
  160. package/components/video/useVideoPlayPause.d.ts +13 -0
  161. package/components/video/useVideoPlayPause.js +2 -0
  162. package/components/video/useVideoPlayPause.js.map +1 -0
  163. package/components/video/useVideoReady.d.ts +6 -0
  164. package/components/video/useVideoReady.js +2 -0
  165. package/components/video/useVideoReady.js.map +1 -0
  166. package/components/video/useVideoSoundControls.d.ts +17 -0
  167. package/components/video/useVideoSoundControls.js +2 -0
  168. package/components/video/useVideoSoundControls.js.map +1 -0
  169. package/components/video/useVideoTime.d.ts +22 -0
  170. package/components/video/useVideoTime.js +2 -0
  171. package/components/video/useVideoTime.js.map +1 -0
  172. package/components/videoPlayer/VideoPlayer.d.ts +125 -0
  173. package/components/videoPlayer/VideoPlayer.js +2 -0
  174. package/components/videoPlayer/VideoPlayer.js.map +1 -0
  175. package/components/videoPlayer/VideoPlayerFullscreenButton.d.ts +31 -0
  176. package/components/videoPlayer/VideoPlayerFullscreenButton.js +2 -0
  177. package/components/videoPlayer/VideoPlayerFullscreenButton.js.map +1 -0
  178. package/components/videoPlayer/VideoPlayerIconButton.d.ts +16 -0
  179. package/components/videoPlayer/VideoPlayerIconButton.js +2 -0
  180. package/components/videoPlayer/VideoPlayerIconButton.js.map +1 -0
  181. package/components/videoPlayer/VideoPlayerPlayPauseButton.d.ts +31 -0
  182. package/components/videoPlayer/VideoPlayerPlayPauseButton.js +2 -0
  183. package/components/videoPlayer/VideoPlayerPlayPauseButton.js.map +1 -0
  184. package/components/videoPlayer/VideoPlayerSkipButton.d.ts +23 -0
  185. package/components/videoPlayer/VideoPlayerSkipButton.js +2 -0
  186. package/components/videoPlayer/VideoPlayerSkipButton.js.map +1 -0
  187. package/components/videoPlayer/VideoPlayerSlider.d.ts +12 -0
  188. package/components/videoPlayer/VideoPlayerSlider.js +2 -0
  189. package/components/videoPlayer/VideoPlayerSlider.js.map +1 -0
  190. package/components/videoPlayer/VideoPlayerSoundButton.d.ts +31 -0
  191. package/components/videoPlayer/VideoPlayerSoundButton.js +2 -0
  192. package/components/videoPlayer/VideoPlayerSoundButton.js.map +1 -0
  193. package/components/videoPlayer/VideoPlayerTime.d.ts +17 -0
  194. package/components/videoPlayer/VideoPlayerTime.js +2 -0
  195. package/components/videoPlayer/VideoPlayerTime.js.map +1 -0
  196. package/components/videoPlayer/formatVideoTime.d.ts +5 -0
  197. package/components/videoPlayer/formatVideoTime.js +2 -0
  198. package/components/videoPlayer/formatVideoTime.js.map +1 -0
  199. package/components/videoPlayer/index.d.ts +10 -0
  200. package/components/videoPlayer/useVideoPlayerVisibility.d.ts +24 -0
  201. package/components/videoPlayer/useVideoPlayerVisibility.js +2 -0
  202. package/components/videoPlayer/useVideoPlayerVisibility.js.map +1 -0
  203. package/index.js +1 -1
  204. package/materialui/accordion/AccordionSummaryExpandWrapper.d.ts +5 -1
  205. package/materialui/accordion/AccordionSummaryExpandWrapper.js +1 -1
  206. package/materialui/accordion/AccordionSummaryExpandWrapper.js.map +1 -1
  207. package/materialui/alert/alertTitle.theme.js.map +1 -1
  208. package/materialui/card/Card.js.map +1 -1
  209. package/materialui/card/card.theme.js +1 -1
  210. package/materialui/card/card.theme.js.map +1 -1
  211. package/materialui/divider/divider.theme.js +1 -1
  212. package/materialui/divider/divider.theme.js.map +1 -1
  213. package/materialui/skeleton/skeleton.theme.js +1 -1
  214. package/materialui/skeleton/skeleton.theme.js.map +1 -1
  215. package/materialui/slider/slider.theme.js +1 -1
  216. package/materialui/slider/slider.theme.js.map +1 -1
  217. package/materialui/table/tablePagination.theme.js.map +1 -1
  218. package/materialui/tabs/Tab.d.ts +1 -0
  219. package/materialui/tabs/Tab.js +1 -1
  220. package/materialui/tabs/Tab.js.map +1 -1
  221. package/materialui/tabs/TabsScrollButton.d.ts +3 -1
  222. package/materialui/tabs/TabsScrollButton.js +1 -1
  223. package/materialui/tabs/TabsScrollButton.js.map +1 -1
  224. package/materialui/textfield/FormControl.js +1 -1
  225. package/materialui/textfield/FormControl.js.map +1 -1
  226. package/materialui/textfield/FormHelperText.js +1 -1
  227. package/materialui/textfield/FormHelperText.js.map +1 -1
  228. package/materialui/theme/sxConfig.js.map +1 -1
  229. package/materialui/theme/theme.extensions.d.ts +29 -0
  230. package/package.json +1 -1
  231. package/cjs/components/video/hooks.d.ts +0 -43
  232. package/cjs/components/video/hooks.js +0 -2
  233. package/cjs/components/video/hooks.js.map +0 -1
  234. package/cjs/node_modules/swiper/shared/ssr-window.esm.js +0 -2
  235. package/cjs/node_modules/swiper/shared/ssr-window.esm.js.map +0 -1
  236. package/components/video/hooks.d.ts +0 -43
  237. package/components/video/hooks.js +0 -2
  238. package/components/video/hooks.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ import React, { ComponentType, type RefObject } from 'react';
2
+ import { SvgIconProps } from '@mui/material';
3
+ import { VideoPlayerIconButtonProps } from './VideoPlayerIconButton';
4
+ export interface VideoPlayerSoundButtonProps extends Omit<VideoPlayerIconButtonProps, 'title'> {
5
+ /**
6
+ * Ref to the controlled <video> element
7
+ */
8
+ videoRef: RefObject<HTMLVideoElement>;
9
+ /**
10
+ * Custom component for the icon shown while the video is not muted
11
+ */
12
+ SoundIconComponent?: ComponentType<SvgIconProps>;
13
+ /**
14
+ * Custom component for the icon shown while the video is muted
15
+ */
16
+ MuteIconComponent?: ComponentType<SvgIconProps>;
17
+ /**
18
+ * Tooltip and aria-label while the video is not muted
19
+ * @default Mute video
20
+ */
21
+ muteTitle?: string;
22
+ /**
23
+ * Tooltip and aria-label while the video is muted
24
+ * @default Unmute video
25
+ */
26
+ unmuteTitle?: string;
27
+ }
28
+ /**
29
+ * Button that toggles mute of the video
30
+ */
31
+ export declare const VideoPlayerSoundButton: React.FC<VideoPlayerSoundButtonProps>;
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),o=require("react"),t=require("../icon/stroke/AudioMidIcon.js"),i=require("../icon/stroke/AudioMuteIcon.js"),n=require("../video/useVideoSoundControls.js"),u=require("./VideoPlayerIconButton.js");const r=o.forwardRef(({videoRef:o,SoundIconComponent:r,MuteIconComponent:d,muteTitle:s="Mute video",unmuteTitle:c="Unmute video",onClick:l,...a},I)=>{const{isMuted:M,handleMuteToggle:V}=n.useVideoSoundControls(o),j=M?d??i.AudioMuteIcon:r??t.AudioMidIcon;return e.jsx(u.VideoPlayerIconButton,{ref:I,"data-testid":"VideoPlayerSound",title:M?c:s,onClick:e=>{l?.(e),V()},...a,children:e.jsx(j,{"data-testid":M?"VideoPlayerMuteIcon":"VideoPlayerSoundIcon"})})});exports.VideoPlayerSoundButton=r;
2
+ //# sourceMappingURL=VideoPlayerSoundButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerSoundButton.js","sources":["../../../../../src/components/videoPlayer/VideoPlayerSoundButton.tsx"],"sourcesContent":["import React, { ComponentType, forwardRef, type MouseEvent, type RefObject } from 'react';\nimport { SvgIconProps } from '@mui/material';\nimport { AudioMidIcon } from '@/src/components/icon/stroke/AudioMidIcon';\nimport { AudioMuteIcon } from '@/src/components/icon/stroke/AudioMuteIcon';\nimport { useVideoSoundControls } from '@/src/components/video/useVideoSoundControls';\nimport { VideoPlayerIconButton, VideoPlayerIconButtonProps } from './VideoPlayerIconButton';\n\nexport interface VideoPlayerSoundButtonProps extends Omit<VideoPlayerIconButtonProps, 'title'> {\n /**\n * Ref to the controlled <video> element\n */\n videoRef: RefObject<HTMLVideoElement>;\n /**\n * Custom component for the icon shown while the video is not muted\n */\n SoundIconComponent?: ComponentType<SvgIconProps>;\n /**\n * Custom component for the icon shown while the video is muted\n */\n MuteIconComponent?: ComponentType<SvgIconProps>;\n /**\n * Tooltip and aria-label while the video is not muted\n * @default Mute video\n */\n muteTitle?: string;\n /**\n * Tooltip and aria-label while the video is muted\n * @default Unmute video\n */\n unmuteTitle?: string;\n}\n\n/**\n * Button that toggles mute of the video\n */\nexport const VideoPlayerSoundButton: React.FC<VideoPlayerSoundButtonProps> = forwardRef(\n (\n {\n videoRef,\n SoundIconComponent,\n MuteIconComponent,\n muteTitle = 'Mute video',\n unmuteTitle = 'Unmute video',\n onClick,\n ...rest\n },\n ref,\n ) => {\n const { isMuted, handleMuteToggle } = useVideoSoundControls(videoRef);\n const Icon = isMuted ? (MuteIconComponent ?? AudioMuteIcon) : (SoundIconComponent ?? AudioMidIcon);\n\n return (\n <VideoPlayerIconButton\n ref={ref}\n data-testid=\"VideoPlayerSound\"\n title={isMuted ? unmuteTitle : muteTitle}\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n handleMuteToggle();\n }}\n {...rest}\n >\n <Icon data-testid={isMuted ? 'VideoPlayerMuteIcon' : 'VideoPlayerSoundIcon'} />\n </VideoPlayerIconButton>\n );\n },\n);\n"],"names":["VideoPlayerSoundButton","forwardRef","videoRef","SoundIconComponent","MuteIconComponent","muteTitle","unmuteTitle","onClick","rest","ref","isMuted","handleMuteToggle","useVideoSoundControls","Icon","AudioMuteIcon","AudioMidIcon","_jsx","VideoPlayerIconButton","title","event","children"],"mappings":"mPAmCO,MAAMA,EAAgEC,EAAAA,WAC3E,EAEIC,WACAC,qBACAC,oBACAC,YAAY,aACZC,cAAc,eACdC,aACGC,GAELC,KAEA,MAAMC,QAAEA,EAAOC,iBAAEA,GAAqBC,EAAAA,sBAAsBV,GACtDW,EAAOH,EAAWN,GAAqBU,EAAAA,cAAkBX,GAAsBY,EAAAA,aAErF,OACEC,EAAAA,IAACC,EAAAA,sBAAqB,CACpBR,IAAKA,EAAG,cACI,mBACZS,MAAOR,EAAUJ,EAAcD,EAC/BE,QAAUY,IACRZ,IAAUY,GACVR,QAEEH,EAAIY,SAERJ,EAAAA,IAACH,EAAI,CAAA,cAAcH,EAAU,sBAAwB"}
@@ -0,0 +1,17 @@
1
+ import React, { ElementType, type ReactNode, type RefObject } from 'react';
2
+ import { TypographyProps } from '@mui/material';
3
+ export interface VideoPlayerTimeProps extends TypographyProps<ElementType> {
4
+ /**
5
+ * Ref to the controlled <video> element
6
+ */
7
+ videoRef: RefObject<HTMLVideoElement>;
8
+ /**
9
+ * Formats the label from current time and duration in seconds
10
+ * @default `m:ss / m:ss`, or `h:mm:ss / h:mm:ss` for videos of one hour and more
11
+ */
12
+ formatTime?: (currentTime: number, duration: number) => ReactNode;
13
+ }
14
+ /**
15
+ * Current time and duration of the video
16
+ */
17
+ export declare const VideoPlayerTime: React.FC<VideoPlayerTimeProps>;
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),i=require("react"),r=require("@mui/material"),t=require("../../utils/sxOverride/sxOverride.js"),o=require("../video/useVideoTime.js"),s=require("./formatVideoTime.js");const a=(e,i)=>`${s.formatVideoTime(e,i)} / ${s.formatVideoTime(i)}`,m=i.forwardRef(({videoRef:i,formatTime:s=a,sx:m,...n},d)=>{const{currentTime:x,duration:u}=o.useVideoTime(i);return e.jsx(r.Typography,{ref:d,"data-testid":"VideoPlayerTime",component:"span",variant:"body",sx:t.sxOverride({display:"flex",alignItems:"center",justifyContent:"flex-start",minHeight:"44px",color:"common.white",whiteSpace:"nowrap",userSelect:"none",fontWeight:{xs:"400"},fontSize:{xs:"12px",md:"16px"},lineHeight:{xs:"12px",md:"21px"},letterSpacing:{xs:"0.002em"}},m),...n,children:s(x,u??0)})});exports.VideoPlayerTime=m;
2
+ //# sourceMappingURL=VideoPlayerTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayerTime.js","sources":["../../../../../src/components/videoPlayer/VideoPlayerTime.tsx"],"sourcesContent":["import React, { ElementType, forwardRef, type ReactNode, type RefObject } from 'react';\nimport { Typography, TypographyProps } from '@mui/material';\nimport { sxOverride } from '@/src/utils/sxOverride';\nimport { useVideoTime } from '@/src/components/video/useVideoTime';\nimport { formatVideoTime } from './formatVideoTime';\n\nexport interface VideoPlayerTimeProps extends TypographyProps<ElementType> {\n /**\n * Ref to the controlled <video> element\n */\n videoRef: RefObject<HTMLVideoElement>;\n /**\n * Formats the label from current time and duration in seconds\n * @default `m:ss / m:ss`, or `h:mm:ss / h:mm:ss` for videos of one hour and more\n */\n formatTime?: (currentTime: number, duration: number) => ReactNode;\n}\n\n/**\n * Formats current time and duration with the same segments\n */\nconst defaultFormatTime = (currentTime: number, duration: number): string =>\n `${formatVideoTime(currentTime, duration)} / ${formatVideoTime(duration)}`;\n\n/**\n * Current time and duration of the video\n */\nexport const VideoPlayerTime: React.FC<VideoPlayerTimeProps> = forwardRef<HTMLSpanElement, VideoPlayerTimeProps>(\n ({ videoRef, formatTime = defaultFormatTime, sx, ...rest }, ref) => {\n const { currentTime, duration } = useVideoTime(videoRef);\n\n return (\n <Typography\n ref={ref}\n data-testid=\"VideoPlayerTime\"\n component=\"span\"\n variant=\"body\"\n sx={sxOverride(\n {\n // same height as the icon buttons, keeps the toolbar height when the label is alone\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n minHeight: '44px',\n color: 'common.white',\n whiteSpace: 'nowrap',\n userSelect: 'none',\n // custom font according to Figma\n fontWeight: { xs: '400' },\n fontSize: { xs: '12px', md: '16px' },\n lineHeight: { xs: '12px', md: '21px' },\n letterSpacing: { xs: '0.002em' },\n },\n sx,\n )}\n {...rest}\n >\n {formatTime(currentTime, duration ?? 0)}\n </Typography>\n );\n },\n);\n"],"names":["defaultFormatTime","currentTime","duration","formatVideoTime","VideoPlayerTime","forwardRef","videoRef","formatTime","sx","rest","ref","useVideoTime","_jsx","Typography","component","variant","sxOverride","display","alignItems","justifyContent","minHeight","color","whiteSpace","userSelect","fontWeight","xs","fontSize","md","lineHeight","letterSpacing"],"mappings":"wNAqBA,MAAMA,EAAoB,CAACC,EAAqBC,IAC9C,GAAGC,EAAAA,gBAAgBF,EAAaC,QAAeC,kBAAgBD,KAKpDE,EAAkDC,EAAAA,WAC7D,EAAGC,WAAUC,aAAaP,EAAmBQ,QAAOC,GAAQC,KAC1D,MAAMT,YAAEA,EAAWC,SAAEA,GAAaS,EAAAA,aAAaL,GAE/C,OACEM,EAAAA,IAACC,EAAAA,WAAU,CACTH,IAAKA,gBACO,kBACZI,UAAU,OACVC,QAAQ,OACRP,GAAIQ,EAAAA,WACF,CAEEC,QAAS,OACTC,WAAY,SACZC,eAAgB,aAChBC,UAAW,OACXC,MAAO,eACPC,WAAY,SACZC,WAAY,OAEZC,WAAY,CAAEC,GAAI,OAClBC,SAAU,CAAED,GAAI,OAAQE,GAAI,QAC5BC,WAAY,CAAEH,GAAI,OAAQE,GAAI,QAC9BE,cAAe,CAAEJ,GAAI,YAEvBjB,MAEEC,WAEHF,EAAWN,EAAaC,GAAY"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Formats seconds as `m:ss`, or `h:mm:ss` when the time or the provided duration reaches one hour,
3
+ * falling back to zero for negative/non-finite input
4
+ */
5
+ export declare const formatVideoTime: (seconds: number, duration?: number) => string;
@@ -0,0 +1,2 @@
1
+ "use strict";const t=3600;exports.formatVideoTime=(o,r)=>{const a=Number.isFinite(o)&&o>0?Math.floor(o):0,e=(""+a%60).padStart(2,"0");if(Math.max(a,r||0)>=t){const o=`${Math.floor(a%t/60)}`.padStart(2,"0");return`${Math.floor(a/t)}:${o}:${e}`}return`${Math.floor(a/60)}:${e}`};
2
+ //# sourceMappingURL=formatVideoTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatVideoTime.js","sources":["../../../../../src/components/videoPlayer/formatVideoTime.ts"],"sourcesContent":["/** Seconds in one hour */\nconst HOUR_SECONDS = 3600;\n\n/**\n * Formats seconds as `m:ss`, or `h:mm:ss` when the time or the provided duration reaches one hour,\n * falling back to zero for negative/non-finite input\n */\nexport const formatVideoTime = (seconds: number, duration?: number): string => {\n const totalSeconds = Number.isFinite(seconds) && seconds > 0 ? Math.floor(seconds) : 0;\n const remainingSeconds = `${totalSeconds % 60}`.padStart(2, '0');\n\n if (Math.max(totalSeconds, duration || 0) >= HOUR_SECONDS) {\n const minutes = `${Math.floor((totalSeconds % HOUR_SECONDS) / 60)}`.padStart(2, '0');\n return `${Math.floor(totalSeconds / HOUR_SECONDS)}:${minutes}:${remainingSeconds}`;\n }\n return `${Math.floor(totalSeconds / 60)}:${remainingSeconds}`;\n};\n"],"names":["HOUR_SECONDS","seconds","duration","totalSeconds","Number","isFinite","Math","floor","remainingSeconds","padStart","max","minutes"],"mappings":"aACA,MAAMA,EAAe,6BAMU,CAACC,EAAiBC,KAC/C,MAAMC,EAAeC,OAAOC,SAASJ,IAAYA,EAAU,EAAIK,KAAKC,MAAMN,GAAW,EAC/EO,GAAmB,GAAGL,EAAe,IAAKM,SAAS,EAAG,KAE5D,GAAIH,KAAKI,IAAIP,EAAcD,GAAY,IAAMF,EAAc,CACzD,MAAMW,EAAU,GAAGL,KAAKC,MAAOJ,EAAeH,EAAgB,MAAMS,SAAS,EAAG,KAChF,MAAO,GAAGH,KAAKC,MAAMJ,EAAeH,MAAiBW,KAAWH,GAClE,CACA,MAAO,GAAGF,KAAKC,MAAMJ,EAAe,OAAOK"}
@@ -0,0 +1,10 @@
1
+ export * from './VideoPlayer';
2
+ export * from './VideoPlayerIconButton';
3
+ export * from './VideoPlayerPlayPauseButton';
4
+ export * from './VideoPlayerSkipButton';
5
+ export * from './VideoPlayerSoundButton';
6
+ export * from './VideoPlayerFullscreenButton';
7
+ export * from './VideoPlayerSlider';
8
+ export * from './VideoPlayerTime';
9
+ export * from './formatVideoTime';
10
+ export * from './useVideoPlayerVisibility';
@@ -0,0 +1,24 @@
1
+ import { type RefObject } from 'react';
2
+ export interface VideoPlayerVisibilityOptions {
3
+ /**
4
+ * Inactivity in ms after which the controls hide while the video is playing
5
+ */
6
+ hideDelay: number;
7
+ /**
8
+ * Keeps the controls always visible
9
+ */
10
+ disabled?: boolean;
11
+ }
12
+ interface VideoPlayerVisibility {
13
+ /** Whether the controls should be shown */
14
+ visible: boolean;
15
+ /** Shows the controls and restarts the hide delay, call on pointer and keyboard activity */
16
+ handleActivity: () => void;
17
+ /** Hides the controls right away, call when the pointer leaves the player */
18
+ handleLeave: () => void;
19
+ }
20
+ /**
21
+ * Hides the controls while the video is playing and the user is inactive or leaves the player
22
+ */
23
+ export declare const useVideoPlayerVisibility: (videoRef: RefObject<HTMLVideoElement>, { hideDelay, disabled }: VideoPlayerVisibilityOptions) => VideoPlayerVisibility;
24
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react"),i=require("../video/useVideoPlayPause.js");exports.useVideoPlayerVisibility=(u,{hideDelay:r,disabled:t})=>{const{isPlaying:a}=i.useVideoPlayPause(u),[s,l]=e.useState(!0),c=e.useRef(void 0),o=e.useCallback(()=>{l(!0),clearTimeout(c.current),c.current=setTimeout(()=>l(!1),r)},[r]),d=e.useCallback(()=>{clearTimeout(c.current),l(!1)},[]);return e.useEffect(()=>{a&&o()},[a,o]),e.useEffect(()=>()=>clearTimeout(c.current),[]),{visible:!!t||!a||s,handleActivity:o,handleLeave:d}};
2
+ //# sourceMappingURL=useVideoPlayerVisibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVideoPlayerVisibility.js","sources":["../../../../../src/components/videoPlayer/useVideoPlayerVisibility.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState, type RefObject } from 'react';\nimport { useVideoPlayPause } from '@/src/components/video/useVideoPlayPause';\n\nexport interface VideoPlayerVisibilityOptions {\n /**\n * Inactivity in ms after which the controls hide while the video is playing\n */\n hideDelay: number;\n /**\n * Keeps the controls always visible\n */\n disabled?: boolean;\n}\n\ninterface VideoPlayerVisibility {\n /** Whether the controls should be shown */\n visible: boolean;\n /** Shows the controls and restarts the hide delay, call on pointer and keyboard activity */\n handleActivity: () => void;\n /** Hides the controls right away, call when the pointer leaves the player */\n handleLeave: () => void;\n}\n\n/**\n * Hides the controls while the video is playing and the user is inactive or leaves the player\n */\nexport const useVideoPlayerVisibility = (\n videoRef: RefObject<HTMLVideoElement>,\n { hideDelay, disabled }: VideoPlayerVisibilityOptions,\n): VideoPlayerVisibility => {\n const { isPlaying } = useVideoPlayPause(videoRef);\n const [isActive, setIsActive] = useState(true);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const handleActivity = useCallback(() => {\n setIsActive(true);\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setIsActive(false), hideDelay);\n }, [hideDelay]);\n\n const handleLeave = useCallback(() => {\n clearTimeout(timeoutRef.current);\n setIsActive(false);\n }, []);\n\n // restart the delay when playback starts, so autoplaying video hides the controls without any activity\n useEffect(() => {\n if (isPlaying) {\n handleActivity();\n }\n }, [isPlaying, handleActivity]);\n\n useEffect(() => () => clearTimeout(timeoutRef.current), []);\n\n return {\n visible: !!disabled || !isPlaying || isActive,\n handleActivity,\n handleLeave,\n };\n};\n"],"names":["videoRef","hideDelay","disabled","isPlaying","useVideoPlayPause","isActive","setIsActive","useState","timeoutRef","useRef","undefined","handleActivity","useCallback","clearTimeout","current","setTimeout","handleLeave","useEffect","visible"],"mappings":"gHA0BwC,CACtCA,GACEC,YAAWC,eAEb,MAAMC,UAAEA,GAAcC,EAAAA,kBAAkBJ,IACjCK,EAAUC,GAAeC,EAAAA,UAAS,GACnCC,EAAaC,EAAAA,YAAsCC,GAEnDC,EAAiBC,EAAAA,YAAY,KACjCN,GAAY,GACZO,aAAaL,EAAWM,SACxBN,EAAWM,QAAUC,WAAW,IAAMT,GAAY,GAAQL,IACzD,CAACA,IAEEe,EAAcJ,EAAAA,YAAY,KAC9BC,aAAaL,EAAWM,SACxBR,GAAY,IACX,IAWH,OARAW,EAAAA,UAAU,KACJd,GACFQ,KAED,CAACR,EAAWQ,IAEfM,EAAAA,UAAU,IAAM,IAAMJ,aAAaL,EAAWM,SAAU,IAEjD,CACLI,UAAWhB,IAAaC,GAAaE,EACrCM,iBACAK"}