@videojs/react 10.0.0-beta.15 → 10.0.0-beta.16

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 (119) hide show
  1. package/dist/default/index.js +4 -1
  2. package/dist/default/media/dash-video/index.js +3 -2
  3. package/dist/default/media/dash-video/index.js.map +1 -1
  4. package/dist/default/media/hls-video/index.js +3 -2
  5. package/dist/default/media/hls-video/index.js.map +1 -1
  6. package/dist/default/media/mux-audio/index.js +20 -0
  7. package/dist/default/media/mux-audio/index.js.map +1 -0
  8. package/dist/default/media/mux-video/index.js +3 -2
  9. package/dist/default/media/mux-video/index.js.map +1 -1
  10. package/dist/default/media/native-hls-video/index.js +3 -2
  11. package/dist/default/media/native-hls-video/index.js.map +1 -1
  12. package/dist/default/media/simple-hls-video/index.js +3 -2
  13. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  14. package/dist/default/player/context.js +9 -1
  15. package/dist/default/player/context.js.map +1 -1
  16. package/dist/default/presets/audio/minimal-skin.css +23 -0
  17. package/dist/default/presets/audio/skin.css +23 -0
  18. package/dist/default/presets/audio/skin.js +65 -0
  19. package/dist/default/presets/audio/skin.js.map +1 -1
  20. package/dist/default/presets/video/minimal-skin.css +23 -0
  21. package/dist/default/presets/video/skin.css +23 -0
  22. package/dist/default/presets/video/skin.js +78 -1
  23. package/dist/default/presets/video/skin.js.map +1 -1
  24. package/dist/default/ui/captions-button/captions-button.js +2 -1
  25. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  26. package/dist/default/ui/create-media-button.js +7 -2
  27. package/dist/default/ui/create-media-button.js.map +1 -1
  28. package/dist/default/ui/fullscreen-button/fullscreen-button.js +2 -1
  29. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  30. package/dist/default/ui/hooks/use-slider.js +1 -1
  31. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  32. package/dist/default/ui/hotkey/media-hotkey.js +41 -0
  33. package/dist/default/ui/hotkey/media-hotkey.js.map +1 -0
  34. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js +16 -0
  35. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js.map +1 -0
  36. package/dist/default/ui/hotkey/use-hotkey.js +32 -0
  37. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -0
  38. package/dist/default/ui/mute-button/mute-button.js +2 -1
  39. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  40. package/dist/default/ui/pip-button/pip-button.js +2 -1
  41. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  42. package/dist/default/ui/play-button/play-button.js +2 -1
  43. package/dist/default/ui/play-button/play-button.js.map +1 -1
  44. package/dist/default/ui/time-slider/time-slider-root.js +2 -2
  45. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  46. package/dist/dev/index.d.ts +4 -1
  47. package/dist/dev/index.js +4 -1
  48. package/dist/dev/media/dash-video/index.d.ts +4 -1
  49. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  50. package/dist/dev/media/dash-video/index.js +3 -2
  51. package/dist/dev/media/dash-video/index.js.map +1 -1
  52. package/dist/dev/media/hls-video/index.d.ts +4 -1
  53. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  54. package/dist/dev/media/hls-video/index.js +3 -2
  55. package/dist/dev/media/hls-video/index.js.map +1 -1
  56. package/dist/dev/media/mux-audio/index.d.ts +13 -0
  57. package/dist/dev/media/mux-audio/index.d.ts.map +1 -0
  58. package/dist/dev/media/mux-audio/index.js +20 -0
  59. package/dist/dev/media/mux-audio/index.js.map +1 -0
  60. package/dist/dev/media/mux-video/index.d.ts +4 -1
  61. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  62. package/dist/dev/media/mux-video/index.js +3 -2
  63. package/dist/dev/media/mux-video/index.js.map +1 -1
  64. package/dist/dev/media/native-hls-video/index.d.ts +4 -1
  65. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  66. package/dist/dev/media/native-hls-video/index.js +3 -2
  67. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  68. package/dist/dev/media/simple-hls-video/index.d.ts +4 -1
  69. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  70. package/dist/dev/media/simple-hls-video/index.js +3 -2
  71. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  72. package/dist/dev/player/context.d.ts.map +1 -1
  73. package/dist/dev/player/context.js +9 -1
  74. package/dist/dev/player/context.js.map +1 -1
  75. package/dist/dev/presets/audio/minimal-skin.css +23 -0
  76. package/dist/dev/presets/audio/skin.css +23 -0
  77. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  78. package/dist/dev/presets/audio/skin.js +65 -0
  79. package/dist/dev/presets/audio/skin.js.map +1 -1
  80. package/dist/dev/presets/video/minimal-skin.css +23 -0
  81. package/dist/dev/presets/video/skin.css +23 -0
  82. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  83. package/dist/dev/presets/video/skin.js +78 -1
  84. package/dist/dev/presets/video/skin.js.map +1 -1
  85. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  86. package/dist/dev/ui/captions-button/captions-button.js +2 -1
  87. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  88. package/dist/dev/ui/create-media-button.js +7 -2
  89. package/dist/dev/ui/create-media-button.js.map +1 -1
  90. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  91. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +2 -1
  92. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  93. package/dist/dev/ui/hooks/use-slider.d.ts +1 -1
  94. package/dist/dev/ui/hooks/use-slider.js +1 -1
  95. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  96. package/dist/dev/ui/hotkey/media-hotkey.d.ts +21 -0
  97. package/dist/dev/ui/hotkey/media-hotkey.d.ts.map +1 -0
  98. package/dist/dev/ui/hotkey/media-hotkey.js +41 -0
  99. package/dist/dev/ui/hotkey/media-hotkey.js.map +1 -0
  100. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts +5 -0
  101. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts.map +1 -0
  102. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js +16 -0
  103. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js.map +1 -0
  104. package/dist/dev/ui/hotkey/use-hotkey.d.ts +12 -0
  105. package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -0
  106. package/dist/dev/ui/hotkey/use-hotkey.js +32 -0
  107. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -0
  108. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  109. package/dist/dev/ui/mute-button/mute-button.js +2 -1
  110. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  111. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  112. package/dist/dev/ui/pip-button/pip-button.js +2 -1
  113. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  114. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  115. package/dist/dev/ui/play-button/play-button.js +2 -1
  116. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  117. package/dist/dev/ui/time-slider/time-slider-root.js +2 -2
  118. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  119. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"pip-button.d.ts","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"mappings":";;;;;UAQiB,cAAA,SAAuB,gBAAA,WAA2B,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;cAG1F,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAQL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
1
+ {"version":3,"file":"pip-button.d.ts","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"mappings":";;;;;UAQiB,cAAA,SAAuB,gBAAA,WAA2B,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;cAG1F,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,cAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBASL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
@@ -9,7 +9,8 @@ const PiPButton = createMediaButton({
9
9
  core: PiPButtonCore,
10
10
  stateAttrMap: PiPButtonDataAttrs,
11
11
  selector: selectPiP,
12
- action: (core, state) => core.toggle(state)
12
+ action: (core, state) => core.toggle(state),
13
+ hotkeyAction: "togglePiP"
13
14
  });
14
15
  //#endregion
15
16
  export { PiPButton };
@@ -1 +1 @@
1
- {"version":3,"file":"pip-button.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"sourcesContent":["'use client';\n\nimport { PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface PiPButtonProps extends UIComponentProps<'button', PiPButtonCore.State>, PiPButtonCore.Props {}\n\n/** A button that toggles picture-in-picture. */\nexport const PiPButton = createMediaButton<PiPButtonCore, PiPButtonProps>({\n displayName: 'PiPButton',\n core: PiPButtonCore,\n stateAttrMap: PiPButtonDataAttrs,\n selector: selectPiP,\n action: (core, state) => core.toggle(state),\n});\n\nexport namespace PiPButton {\n export type Props = PiPButtonProps;\n export type State = PiPButtonCore.State;\n}\n"],"mappings":";;;;;;AAWA,MAAa,YAAY,kBAAiD;CACxE,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,OAAO,MAAM;CAC5C,CAAC"}
1
+ {"version":3,"file":"pip-button.js","names":[],"sources":["../../../../src/ui/pip-button/pip-button.tsx"],"sourcesContent":["'use client';\n\nimport { PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface PiPButtonProps extends UIComponentProps<'button', PiPButtonCore.State>, PiPButtonCore.Props {}\n\n/** A button that toggles picture-in-picture. */\nexport const PiPButton = createMediaButton<PiPButtonCore, PiPButtonProps>({\n displayName: 'PiPButton',\n core: PiPButtonCore,\n stateAttrMap: PiPButtonDataAttrs,\n selector: selectPiP,\n action: (core, state) => core.toggle(state),\n hotkeyAction: 'togglePiP',\n});\n\nexport namespace PiPButton {\n export type Props = PiPButtonProps;\n export type State = PiPButtonCore.State;\n}\n"],"mappings":";;;;;;AAWA,MAAa,YAAY,kBAAiD;CACxE,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,OAAO,MAAM;CAC3C,cAAc;CACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"play-button.d.ts","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"mappings":";;;;;UAQiB,eAAA,SAAwB,gBAAA,WAA2B,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;;AAA1G;;;;;;;;;;;;;;;cAkBa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBAQN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
1
+ {"version":3,"file":"play-button.d.ts","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"mappings":";;;;;UAQiB,eAAA,SAAwB,gBAAA,WAA2B,cAAA,CAAe,KAAA,GAAQ,cAAA,CAAe,KAAA;;AAA1G;;;;;;;;;;;;;;;cAkBa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,eAAA,GAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,kBASN,UAAA;EAAA,KACH,KAAA,GAAQ,eAAA;EAAA,KACR,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA"}
@@ -24,7 +24,8 @@ const PlayButton = createMediaButton({
24
24
  core: PlayButtonCore,
25
25
  stateAttrMap: PlayButtonDataAttrs,
26
26
  selector: selectPlayback,
27
- action: (core, state) => core.toggle(state)
27
+ action: (core, state) => core.toggle(state),
28
+ hotkeyAction: "togglePaused"
28
29
  });
29
30
  //#endregion
30
31
  export { PlayButton };
@@ -1 +1 @@
1
- {"version":3,"file":"play-button.js","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"sourcesContent":["'use client';\n\nimport { PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface PlayButtonProps extends UIComponentProps<'button', PlayButtonCore.State>, PlayButtonCore.Props {}\n\n/**\n * A button that toggles playback.\n *\n * @example\n * ```tsx\n * <PlayButton />\n *\n * <PlayButton\n * render={(props, state) => (\n * <button {...props}>\n * {state.paused ? <PlayIcon /> : <PauseIcon />}\n * </button>\n * )}\n * />\n * ```\n */\nexport const PlayButton = createMediaButton<PlayButtonCore, PlayButtonProps>({\n displayName: 'PlayButton',\n core: PlayButtonCore,\n stateAttrMap: PlayButtonDataAttrs,\n selector: selectPlayback,\n action: (core, state) => core.toggle(state),\n});\n\nexport namespace PlayButton {\n export type Props = PlayButtonProps;\n export type State = PlayButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,MAAa,aAAa,kBAAmD;CAC3E,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,OAAO,MAAM;CAC5C,CAAC"}
1
+ {"version":3,"file":"play-button.js","names":[],"sources":["../../../../src/ui/play-button/play-button.tsx"],"sourcesContent":["'use client';\n\nimport { PlayButtonCore, PlayButtonDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createMediaButton } from '../create-media-button';\n\nexport interface PlayButtonProps extends UIComponentProps<'button', PlayButtonCore.State>, PlayButtonCore.Props {}\n\n/**\n * A button that toggles playback.\n *\n * @example\n * ```tsx\n * <PlayButton />\n *\n * <PlayButton\n * render={(props, state) => (\n * <button {...props}>\n * {state.paused ? <PlayIcon /> : <PauseIcon />}\n * </button>\n * )}\n * />\n * ```\n */\nexport const PlayButton = createMediaButton<PlayButtonCore, PlayButtonProps>({\n displayName: 'PlayButton',\n core: PlayButtonCore,\n stateAttrMap: PlayButtonDataAttrs,\n selector: selectPlayback,\n action: (core, state) => core.toggle(state),\n hotkeyAction: 'togglePaused',\n});\n\nexport namespace PlayButton {\n export type Props = PlayButtonProps;\n export type State = PlayButtonCore.State;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,MAAa,aAAa,kBAAmD;CAC3E,aAAa;CACb,MAAM;CACN,cAAc;CACd,UAAU;CACV,SAAS,MAAM,UAAU,KAAK,OAAO,MAAM;CAC3C,cAAc;CACf,CAAC"}
@@ -12,7 +12,7 @@ import { formatTime } from "@videojs/utils/time";
12
12
  //#region src/ui/time-slider/time-slider-root.tsx
13
13
  const noopSeek = () => Promise.resolve(0);
14
14
  const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwardedRef) {
15
- const { render, className, style, label, commitThrottle = TimeSliderCore.defaultProps.commitThrottle, step = TimeSliderCore.defaultProps.step, largeStep = TimeSliderCore.defaultProps.largeStep, orientation, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
15
+ const { render, className, style, label, changeThrottle = TimeSliderCore.defaultProps.changeThrottle, step = TimeSliderCore.defaultProps.step, largeStep = TimeSliderCore.defaultProps.largeStep, orientation, disabled, thumbAlignment, onDragStart, onDragEnd, ...elementProps } = componentProps;
16
16
  const time = usePlayer(selectTime);
17
17
  const buffer = usePlayer(selectBuffer);
18
18
  const [core] = useState(() => new TimeSliderCore());
@@ -51,7 +51,7 @@ const TimeSliderRoot = forwardRef(function TimeSliderRoot(componentProps, forwar
51
51
  getLargeStepPercent: () => core.getLargeStepPercent(),
52
52
  orientation,
53
53
  disabled,
54
- commitThrottle,
54
+ changeThrottle,
55
55
  adjustPercent: (rawPercent, thumbSize, trackSize) => core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),
56
56
  getCSSVars: getTimeSliderCSSVars,
57
57
  onValueCommit: (percent) => {
@@ -1 +1 @@
1
- {"version":3,"file":"time-slider-root.js","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from '@videojs/core/dom';\nimport { formatTime } from '@videojs/utils/time';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopSeek = (): Promise<number> => Promise.resolve(0);\n\nexport interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const TimeSliderRoot = forwardRef<HTMLDivElement, TimeSliderRootProps>(\n function TimeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n commitThrottle = TimeSliderCore.defaultProps.commitThrottle,\n step = TimeSliderCore.defaultProps.step,\n largeStep = TimeSliderCore.defaultProps.largeStep,\n orientation,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const time = usePlayer(selectTime);\n const buffer = usePlayer(selectBuffer);\n\n const [core] = useState(() => new TimeSliderCore());\n core.setProps({ label, step, largeStep, orientation, disabled, thumbAlignment });\n\n // Keep a ref to the latest media state for callbacks that fire outside the render cycle.\n const mediaRef = useLatestRef(time && buffer ? { ...time, ...buffer } : null);\n\n const duration = time?.duration ?? 0;\n\n const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider<TimeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n if (!time || !buffer) {\n core.setMedia({\n currentTime: 0,\n duration: 0,\n seeking: false,\n seek: noopSeek,\n buffered: [],\n seekable: [],\n });\n } else {\n core.setMedia({ ...time, ...buffer });\n }\n\n return core.getState();\n },\n getPercent: () => (duration > 0 ? ((time?.currentTime ?? 0) / duration) * 100 : 0),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n commitThrottle,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getTimeSliderCSSVars,\n onValueCommit: (percent) => {\n const media = mediaRef.current;\n if (media) media.seek(core.rawValueFromPercent(percent));\n },\n onDragStart,\n onDragEnd,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('TimeSlider', 'time');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: TimeSliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as TimeSliderCore.State),\n formatValue: (value) => formatTime(value, duration),\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeSliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace TimeSliderRoot {\n export type Props = TimeSliderRootProps;\n export type State = TimeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,iBAAkC,QAAQ,QAAQ,EAAE;AAO1D,MAAa,iBAAiB,WAC5B,SAAS,eAAe,gBAAgB,cAAc;CACpD,MAAM,EACJ,QACA,WACA,OACA,OACA,iBAAiB,eAAe,aAAa,gBAC7C,OAAO,eAAe,aAAa,MACnC,YAAY,eAAe,aAAa,WACxC,aACA,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,OAAO,UAAU,WAAW;CAClC,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAGhF,MAAM,WAAW,aAAa,QAAQ,SAAS;EAAE,GAAG;EAAM,GAAG;EAAQ,GAAG,KAAK;CAE7E,MAAM,WAAW,MAAM,YAAY;CAEnC,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eAAe,UAAgC;EAC9G,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,OAAI,CAAC,QAAQ,CAAC,OACZ,MAAK,SAAS;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,MAAM;IACN,UAAU,EAAE;IACZ,UAAU,EAAE;IACb,CAAC;OAEF,MAAK,SAAS;IAAE,GAAG;IAAM,GAAG;IAAQ,CAAC;AAGvC,UAAO,KAAK,UAAU;;EAExB,kBAAmB,WAAW,KAAM,MAAM,eAAe,KAAK,WAAY,MAAM;EAChF,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY;GAC1B,MAAM,QAAQ,SAAS;AACvB,OAAI,MAAO,OAAM,KAAK,KAAK,oBAAoB,QAAQ,CAAC;;EAE1D;EACA;EACD,CAAC;AAEF,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,QACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAoC;GAC7E,cAAc,UAAU,WAAW,OAAO,SAAS;GACpD;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;EACc,CAAA;EAGtB"}
1
+ {"version":3,"file":"time-slider-root.js","names":[],"sources":["../../../../src/ui/time-slider/time-slider-root.tsx"],"sourcesContent":["'use client';\n\nimport { TimeSliderCore, TimeSliderDataAttrs } from '@videojs/core';\nimport { getTimeSliderCSSVars, logMissingFeature, selectBuffer, selectTime } from '@videojs/core/dom';\nimport { formatTime } from '@videojs/utils/time';\nimport { forwardRef, useState } from 'react';\n\nimport { usePlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { renderElement } from '../../utils/use-render';\nimport { useSlider } from '../hooks/use-slider';\nimport { SliderProvider } from '../slider/context';\n\nconst noopSeek = (): Promise<number> => Promise.resolve(0);\n\nexport interface TimeSliderRootProps extends UIComponentProps<'div', TimeSliderCore.State>, TimeSliderCore.Props {\n onDragStart?: (() => void) | undefined;\n onDragEnd?: (() => void) | undefined;\n}\n\nexport const TimeSliderRoot = forwardRef<HTMLDivElement, TimeSliderRootProps>(\n function TimeSliderRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n label,\n changeThrottle = TimeSliderCore.defaultProps.changeThrottle,\n step = TimeSliderCore.defaultProps.step,\n largeStep = TimeSliderCore.defaultProps.largeStep,\n orientation,\n disabled,\n thumbAlignment,\n onDragStart,\n onDragEnd,\n ...elementProps\n } = componentProps;\n\n const time = usePlayer(selectTime);\n const buffer = usePlayer(selectBuffer);\n\n const [core] = useState(() => new TimeSliderCore());\n core.setProps({ label, step, largeStep, orientation, disabled, thumbAlignment });\n\n // Keep a ref to the latest media state for callbacks that fire outside the render cycle.\n const mediaRef = useLatestRef(time && buffer ? { ...time, ...buffer } : null);\n\n const duration = time?.duration ?? 0;\n\n const { state, cssVars, rootRef, thumbRef, rootProps, rootStyle, thumbProps } = useSlider<TimeSliderCore.State>({\n computeState: (input) => {\n core.setInput(input);\n if (!time || !buffer) {\n core.setMedia({\n currentTime: 0,\n duration: 0,\n seeking: false,\n seek: noopSeek,\n buffered: [],\n seekable: [],\n });\n } else {\n core.setMedia({ ...time, ...buffer });\n }\n\n return core.getState();\n },\n getPercent: () => (duration > 0 ? ((time?.currentTime ?? 0) / duration) * 100 : 0),\n getStepPercent: () => core.getStepPercent(),\n getLargeStepPercent: () => core.getLargeStepPercent(),\n orientation,\n disabled,\n changeThrottle,\n adjustPercent: (rawPercent, thumbSize, trackSize) =>\n core.adjustPercentForAlignment(rawPercent, thumbSize, trackSize),\n getCSSVars: getTimeSliderCSSVars,\n onValueCommit: (percent) => {\n const media = mediaRef.current;\n if (media) media.seek(core.rawValueFromPercent(percent));\n },\n onDragStart,\n onDragEnd,\n });\n\n if (!time) {\n if (__DEV__) logMissingFeature('TimeSlider', 'time');\n return null;\n }\n\n return (\n <SliderProvider\n value={{\n state,\n pointerValue: core.valueFromPercent(state.pointerPercent),\n thumbRef,\n thumbProps,\n stateAttrMap: TimeSliderDataAttrs,\n getAttrs: (sliderState) => core.getAttrs(sliderState as TimeSliderCore.State),\n formatValue: (value) => formatTime(value, duration),\n }}\n >\n {renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: TimeSliderDataAttrs,\n ref: [forwardedRef, rootRef],\n props: [{ style: { ...cssVars, ...rootStyle } }, rootProps, elementProps],\n }\n )}\n </SliderProvider>\n );\n }\n);\n\nexport namespace TimeSliderRoot {\n export type Props = TimeSliderRootProps;\n export type State = TimeSliderCore.State;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,iBAAkC,QAAQ,QAAQ,EAAE;AAO1D,MAAa,iBAAiB,WAC5B,SAAS,eAAe,gBAAgB,cAAc;CACpD,MAAM,EACJ,QACA,WACA,OACA,OACA,iBAAiB,eAAe,aAAa,gBAC7C,OAAO,eAAe,aAAa,MACnC,YAAY,eAAe,aAAa,WACxC,aACA,UACA,gBACA,aACA,WACA,GAAG,iBACD;CAEJ,MAAM,OAAO,UAAU,WAAW;CAClC,MAAM,SAAS,UAAU,aAAa;CAEtC,MAAM,CAAC,QAAQ,eAAe,IAAI,gBAAgB,CAAC;AACnD,MAAK,SAAS;EAAE;EAAO;EAAM;EAAW;EAAa;EAAU;EAAgB,CAAC;CAGhF,MAAM,WAAW,aAAa,QAAQ,SAAS;EAAE,GAAG;EAAM,GAAG;EAAQ,GAAG,KAAK;CAE7E,MAAM,WAAW,MAAM,YAAY;CAEnC,MAAM,EAAE,OAAO,SAAS,SAAS,UAAU,WAAW,WAAW,eAAe,UAAgC;EAC9G,eAAe,UAAU;AACvB,QAAK,SAAS,MAAM;AACpB,OAAI,CAAC,QAAQ,CAAC,OACZ,MAAK,SAAS;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,MAAM;IACN,UAAU,EAAE;IACZ,UAAU,EAAE;IACb,CAAC;OAEF,MAAK,SAAS;IAAE,GAAG;IAAM,GAAG;IAAQ,CAAC;AAGvC,UAAO,KAAK,UAAU;;EAExB,kBAAmB,WAAW,KAAM,MAAM,eAAe,KAAK,WAAY,MAAM;EAChF,sBAAsB,KAAK,gBAAgB;EAC3C,2BAA2B,KAAK,qBAAqB;EACrD;EACA;EACA;EACA,gBAAgB,YAAY,WAAW,cACrC,KAAK,0BAA0B,YAAY,WAAW,UAAU;EAClE,YAAY;EACZ,gBAAgB,YAAY;GAC1B,MAAM,QAAQ,SAAS;AACvB,OAAI,MAAO,OAAM,KAAK,KAAK,oBAAoB,QAAQ,CAAC;;EAE1D;EACA;EACD,CAAC;AAEF,KAAI,CAAC,MAAM;AACI,oBAAkB,cAAc,OAAO;AACpD,SAAO;;AAGT,QACE,oBAAC,gBAAD;EACE,OAAO;GACL;GACA,cAAc,KAAK,iBAAiB,MAAM,eAAe;GACzD;GACA;GACA,cAAc;GACd,WAAW,gBAAgB,KAAK,SAAS,YAAoC;GAC7E,cAAc,UAAU,WAAW,OAAO,SAAS;GACpD;YAEA,cACC,OACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA,cAAc;GACd,KAAK,CAAC,cAAc,QAAQ;GAC5B,OAAO;IAAC,EAAE,OAAO;KAAE,GAAG;KAAS,GAAG;KAAW,EAAE;IAAE;IAAW;IAAa;GAC1E,CACF;EACc,CAAA;EAGtB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@videojs/react",
3
3
  "type": "module",
4
- "version": "10.0.0-beta.15",
4
+ "version": "10.0.0-beta.16",
5
5
  "description": "React library for building media players",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -62,25 +62,25 @@
62
62
  }
63
63
  },
64
64
  "peerDependencies": {
65
- "react": ">=16.8.0"
65
+ "react": "^18.0.0 || ^19.0.0"
66
66
  },
67
67
  "dependencies": {
68
- "@videojs/core": "10.0.0-beta.15",
69
- "@videojs/store": "10.0.0-beta.15",
70
- "@videojs/spf": "10.0.0-beta.15",
71
- "@videojs/utils": "10.0.0-beta.15"
68
+ "@videojs/core": "10.0.0-beta.16",
69
+ "@videojs/spf": "10.0.0-beta.16",
70
+ "@videojs/store": "10.0.0-beta.16",
71
+ "@videojs/utils": "10.0.0-beta.16"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@testing-library/react": "^16.3.0",
75
- "@types/react": "^19.2.7",
75
+ "@types/react": "^19.2.14",
76
76
  "jsdom": "^26.1.0",
77
- "react": "^19.2.1",
78
- "react-dom": "^19.2.1",
77
+ "react": "^19.2.4",
78
+ "react-dom": "^19.2.4",
79
79
  "tsdown": "^0.21.4",
80
80
  "typescript": "^6.0.2",
81
81
  "vitest": "^4.1.0",
82
- "@videojs/icons": "10.0.0-beta.15",
83
- "@videojs/skins": "10.0.0-beta.15"
82
+ "@videojs/icons": "10.0.0-beta.16",
83
+ "@videojs/skins": "10.0.0-beta.16"
84
84
  },
85
85
  "publishConfig": {
86
86
  "access": "public"