@videojs/react 10.0.0-alpha.6 → 10.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default/index.js +11 -7
- package/dist/default/media/hls-video/index.js +4 -3
- package/dist/default/media/hls-video/index.js.map +1 -1
- package/dist/default/player/create-player.js +3 -2
- package/dist/default/player/create-player.js.map +1 -1
- package/dist/default/presets/video/error-dialog.js +51 -0
- package/dist/default/presets/video/error-dialog.js.map +1 -0
- package/dist/default/presets/video/minimal-skin.css +18 -26
- package/dist/default/presets/video/minimal-skin.js +11 -30
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +10 -29
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +18 -25
- package/dist/default/presets/video/skin.js +11 -30
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +11 -30
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/video/default.tailwind.js +3 -3
- package/dist/default/skins/dist/default/video/default.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/video/minimal.tailwind.js +3 -3
- package/dist/default/skins/dist/default/video/minimal.tailwind.js.map +1 -1
- package/dist/default/ui/alert-dialog/alert-dialog-close.js +31 -0
- package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-description.js +16 -0
- package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js +32 -0
- package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-root.js +59 -0
- package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -0
- package/dist/default/ui/alert-dialog/alert-dialog-title.js +16 -0
- package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -0
- package/dist/default/ui/alert-dialog/context.js +16 -0
- package/dist/default/ui/alert-dialog/context.js.map +1 -0
- package/dist/default/ui/alert-dialog/index.js +4 -0
- package/dist/default/ui/alert-dialog/index.parts.js +19 -0
- package/dist/default/ui/alert-dialog/index.parts.js.map +1 -0
- package/dist/default/ui/captions-button/captions-button.js +10 -27
- package/dist/default/ui/captions-button/captions-button.js.map +1 -1
- package/dist/default/ui/create-context-part.js +7 -2
- package/dist/default/ui/create-context-part.js.map +1 -1
- package/dist/default/ui/hooks/use-slider.js +6 -17
- package/dist/default/ui/hooks/use-slider.js.map +1 -1
- package/dist/default/ui/popover/popover-arrow.js +1 -1
- package/dist/default/ui/popover/popover-popup.js +4 -2
- package/dist/default/ui/popover/popover-popup.js.map +1 -1
- package/dist/default/ui/popover/popover-root.js +3 -2
- package/dist/default/ui/popover/popover-root.js.map +1 -1
- package/dist/default/ui/popover/popover-trigger.js +4 -5
- package/dist/default/ui/popover/popover-trigger.js.map +1 -1
- package/dist/default/ui/slider/index.parts.js +4 -0
- package/dist/default/ui/slider/index.parts.js.map +1 -1
- package/dist/default/ui/slider/slider-preview.js +40 -0
- package/dist/default/ui/slider/slider-preview.js.map +1 -0
- package/dist/default/ui/slider/slider-thumbnail.js +20 -0
- package/dist/default/ui/slider/slider-thumbnail.js.map +1 -0
- package/dist/default/ui/thumbnail/thumbnail.js +3 -5
- package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/default/ui/time-slider/index.parts.js +2 -0
- package/dist/default/ui/time-slider/index.parts.js.map +1 -1
- package/dist/default/ui/tooltip/context.js +16 -0
- package/dist/default/ui/tooltip/context.js.map +1 -0
- package/dist/default/ui/tooltip/group-context.js +15 -0
- package/dist/default/ui/tooltip/group-context.js.map +1 -0
- package/dist/default/ui/tooltip/index.js +4 -0
- package/dist/default/ui/tooltip/index.parts.js +19 -0
- package/dist/default/ui/tooltip/index.parts.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-arrow.js +17 -0
- package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-popup.js +97 -0
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-provider.js +28 -0
- package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-root.js +71 -0
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -0
- package/dist/default/ui/tooltip/tooltip-trigger.js +42 -0
- package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -0
- package/dist/default/ui/volume-slider/index.parts.js +2 -0
- package/dist/default/ui/volume-slider/index.parts.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-root.js +4 -4
- package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/default/utils/use-destroy.js +33 -0
- package/dist/default/utils/use-destroy.js.map +1 -0
- package/dist/dev/index.d.ts +15 -8
- package/dist/dev/index.js +11 -7
- package/dist/dev/media/hls-video/index.d.ts.map +1 -1
- package/dist/dev/media/hls-video/index.js +4 -3
- package/dist/dev/media/hls-video/index.js.map +1 -1
- package/dist/dev/player/create-player.d.ts.map +1 -1
- package/dist/dev/player/create-player.js +3 -2
- package/dist/dev/player/create-player.js.map +1 -1
- package/dist/dev/presets/video/error-dialog.js +51 -0
- package/dist/dev/presets/video/error-dialog.js.map +1 -0
- package/dist/dev/presets/video/minimal-skin.css +18 -26
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +11 -30
- package/dist/dev/presets/video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.js +10 -29
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +18 -25
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +11 -30
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.js +11 -30
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/video/default.tailwind.js +3 -3
- package/dist/dev/skins/dist/default/video/default.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js +3 -3
- package/dist/dev/skins/dist/default/video/minimal.tailwind.js.map +1 -1
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js +31 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js +16 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +32 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts +24 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js +59 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts +14 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js +16 -0
- package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -0
- package/dist/dev/ui/alert-dialog/context.d.ts +15 -0
- package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/context.js +16 -0
- package/dist/dev/ui/alert-dialog/context.js.map +1 -0
- package/dist/dev/ui/alert-dialog/index.d.ts +3 -0
- package/dist/dev/ui/alert-dialog/index.js +4 -0
- package/dist/dev/ui/alert-dialog/index.parts.d.ts +13 -0
- package/dist/dev/ui/alert-dialog/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/alert-dialog/index.parts.js +19 -0
- package/dist/dev/ui/alert-dialog/index.parts.js.map +1 -0
- package/dist/dev/ui/captions-button/captions-button.d.ts +6 -27
- package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
- package/dist/dev/ui/captions-button/captions-button.js +10 -27
- package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
- package/dist/dev/ui/captions-button/index.d.ts +2 -2
- package/dist/dev/ui/create-context-part.js +7 -2
- package/dist/dev/ui/create-context-part.js.map +1 -1
- package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
- package/dist/dev/ui/hooks/use-slider.js +6 -17
- package/dist/dev/ui/hooks/use-slider.js.map +1 -1
- package/dist/dev/ui/popover/popover-arrow.js +1 -1
- package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-popup.js +4 -2
- package/dist/dev/ui/popover/popover-popup.js.map +1 -1
- package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
- package/dist/dev/ui/popover/popover-root.js +3 -2
- package/dist/dev/ui/popover/popover-root.js.map +1 -1
- package/dist/dev/ui/popover/popover-trigger.js +4 -5
- package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
- package/dist/dev/ui/slider/index.parts.d.ts +3 -1
- package/dist/dev/ui/slider/index.parts.js +4 -0
- package/dist/dev/ui/slider/index.parts.js.map +1 -1
- package/dist/dev/ui/slider/slider-preview.d.ts +18 -0
- package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-preview.js +40 -0
- package/dist/dev/ui/slider/slider-preview.js.map +1 -0
- package/dist/dev/ui/slider/slider-thumbnail.d.ts +14 -0
- package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -0
- package/dist/dev/ui/slider/slider-thumbnail.js +20 -0
- package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -0
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.js +3 -5
- package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/dev/ui/time-slider/index.parts.d.ts +2 -1
- package/dist/dev/ui/time-slider/index.parts.js +2 -0
- package/dist/dev/ui/time-slider/index.parts.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +17 -0
- package/dist/dev/ui/tooltip/context.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/context.js +16 -0
- package/dist/dev/ui/tooltip/context.js.map +1 -0
- package/dist/dev/ui/tooltip/group-context.js +15 -0
- package/dist/dev/ui/tooltip/group-context.js.map +1 -0
- package/dist/dev/ui/tooltip/index.d.ts +3 -0
- package/dist/dev/ui/tooltip/index.js +4 -0
- package/dist/dev/ui/tooltip/index.parts.d.ts +13 -0
- package/dist/dev/ui/tooltip/index.parts.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/index.parts.js +19 -0
- package/dist/dev/ui/tooltip/index.parts.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.js +17 -0
- package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-popup.js +97 -0
- package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-provider.d.ts +19 -0
- package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-provider.js +28 -0
- package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-root.d.ts +30 -0
- package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-root.js +71 -0
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts +15 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.js +42 -0
- package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -0
- package/dist/dev/ui/volume-slider/index.parts.d.ts +2 -1
- package/dist/dev/ui/volume-slider/index.parts.js +2 -0
- package/dist/dev/ui/volume-slider/index.parts.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.js +4 -4
- package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/dev/utils/use-destroy.js +33 -0
- package/dist/dev/utils/use-destroy.js.map +1 -0
- package/package.json +38 -11
- package/dist/default/ui/error-dialog/error-dialog.js +0 -54
- package/dist/default/ui/error-dialog/error-dialog.js.map +0 -1
- package/dist/default/ui/error-dialog/index.js +0 -3
- package/dist/dev/ui/error-dialog/error-dialog.d.ts +0 -35
- package/dist/dev/ui/error-dialog/error-dialog.d.ts.map +0 -1
- package/dist/dev/ui/error-dialog/error-dialog.js +0 -54
- package/dist/dev/ui/error-dialog/error-dialog.js.map +0 -1
- package/dist/dev/ui/error-dialog/index.d.ts +0 -2
- package/dist/dev/ui/error-dialog/index.js +0 -3
|
@@ -19,14 +19,16 @@ const PopoverPopup = forwardRef(function PopoverPopup({ render, className, style
|
|
|
19
19
|
const internalRef = useRef(null);
|
|
20
20
|
const composedRef = useComposedRefs(forwardedRef, useCallback((el) => {
|
|
21
21
|
popover.setPopupElement(el);
|
|
22
|
-
|
|
22
|
+
if (el && supportsAnchorPositioning()) el.style.setProperty("position-anchor", `--${anchorName}`);
|
|
23
|
+
}, [popover, anchorName]), internalRef);
|
|
23
24
|
const posOpts = useMemo(() => ({
|
|
24
25
|
side: state.side,
|
|
25
26
|
align: state.align
|
|
26
27
|
}), [state.side, state.align]);
|
|
27
28
|
const anchorStyle = useMemo(() => {
|
|
28
29
|
if (!supportsAnchorPositioning()) return null;
|
|
29
|
-
|
|
30
|
+
const { positionAnchor: _, ...rest } = getAnchorPositionStyle(anchorName, posOpts);
|
|
31
|
+
return rest;
|
|
30
32
|
}, [anchorName, posOpts]);
|
|
31
33
|
const [manualStyle, setManualStyle] = useState(null);
|
|
32
34
|
useLayoutEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-popup.js","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorPositionStyle, resolveOffsets } from '@videojs/core/dom';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverPopupProps extends UIComponentProps<'div', PopoverState> {}\n\nconst POPOVER_RESET: CSSProperties = { position: 'fixed', inset: 'auto', margin: 0 };\n\n/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popover.setPopupElement(el);\n },\n [popover]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: state.side, align: state.align }), [state.side, state.align]);\n\n // CSS Anchor Positioning — computed from state, no measurement needed.\n //
|
|
1
|
+
{"version":3,"file":"popover-popup.js","names":[],"sources":["../../../../src/ui/popover/popover-popup.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { getAnchorPositionStyle, resolveOffsets } from '@videojs/core/dom';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { useComposedRefs } from '../../utils/use-composed-refs';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverPopupProps extends UIComponentProps<'div', PopoverState> {}\n\nconst POPOVER_RESET: CSSProperties = { position: 'fixed', inset: 'auto', margin: 0 };\n\n/** Container for the popover content. Positioned relative to the trigger using CSS anchor positioning with a JavaScript fallback. */\nexport const PopoverPopup = forwardRef<HTMLDivElement, PopoverPopupProps>(function PopoverPopup(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n const internalRef = useRef<HTMLDivElement>(null);\n\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popover.setPopupElement(el);\n if (el && supportsAnchorPositioning()) {\n el.style.setProperty('position-anchor', `--${anchorName}`);\n }\n },\n [popover, anchorName]\n );\n\n const composedRef = useComposedRefs(forwardedRef, popupRef, internalRef);\n\n // --- Positioning ---\n\n const posOpts = useMemo(() => ({ side: state.side, align: state.align }), [state.side, state.align]);\n\n // CSS Anchor Positioning — computed from state, no measurement needed.\n // `position-anchor` is set imperatively in the ref callback above\n // because React's style prop silently drops unrecognised CSS properties.\n const anchorStyle = useMemo(() => {\n if (!supportsAnchorPositioning()) return null;\n const { positionAnchor: _, ...rest } = getAnchorPositionStyle(anchorName, posOpts);\n return rest as CSSProperties;\n }, [anchorName, posOpts]);\n\n // Manual fallback — measure rects after layout, before paint.\n const [manualStyle, setManualStyle] = useState<CSSProperties | null>(null);\n\n useLayoutEffect(() => {\n if (supportsAnchorPositioning()) return;\n if (!state.open) {\n setManualStyle(null);\n return;\n }\n\n function measure(): void {\n const triggerEl = popover.triggerElement;\n const popupEl = internalRef.current;\n if (!triggerEl || !popupEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const popupRect = popupEl.getBoundingClientRect();\n const boundaryRect = document.documentElement.getBoundingClientRect();\n const offsets = resolveOffsets(popupEl);\n\n setManualStyle(\n getAnchorPositionStyle(anchorName, posOpts, triggerRect, popupRect, boundaryRect, offsets) as CSSProperties\n );\n }\n\n measure();\n\n // Recompute on scroll/resize so the popover tracks its trigger.\n let rafId = 0;\n function reposition(): void {\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n }\n\n window.addEventListener('scroll', reposition, { capture: true, passive: true });\n window.addEventListener('resize', reposition);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener('scroll', reposition, true);\n window.removeEventListener('resize', reposition);\n };\n }, [state.open, anchorName, posOpts, popover]);\n\n // Anchor path uses computed styles; manual path uses measured styles;\n // fallback resets UA [popover] defaults until positioning is computed.\n const positioningStyle = anchorStyle ?? manualStyle ?? POPOVER_RESET;\n\n // --- Visibility ---\n\n if (!state.open) {\n return null;\n }\n\n // Remap DOM focus events to React synthetic event names.\n const { onFocusOut, ...restPopupProps } = popover.popupProps;\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: composedRef,\n props: [\n {\n id: popupId,\n style: positioningStyle,\n ...core.getPopupAttrs(state),\n },\n { ...restPopupProps, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverPopup {\n export type Props = PopoverPopupProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAM,gBAA+B;CAAE,UAAU;CAAS,OAAO;CAAQ,QAAQ;CAAG;;AAGpF,MAAa,eAAe,WAA8C,SAAS,aACjF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CACvF,MAAM,cAAc,OAAuB,KAAK;CAYhD,MAAM,cAAc,gBAAgB,cAVnB,aACd,OAA8B;AAC7B,UAAQ,gBAAgB,GAAG;AAC3B,MAAI,MAAM,2BAA2B,CACnC,IAAG,MAAM,YAAY,mBAAmB,KAAK,aAAa;IAG9D,CAAC,SAAS,WAAW,CACtB,EAE2D,YAAY;CAIxE,MAAM,UAAU,eAAe;EAAE,MAAM,MAAM;EAAM,OAAO,MAAM;EAAO,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC;CAKpG,MAAM,cAAc,cAAc;AAChC,MAAI,CAAC,2BAA2B,CAAE,QAAO;EACzC,MAAM,EAAE,gBAAgB,GAAG,GAAG,SAAS,uBAAuB,YAAY,QAAQ;AAClF,SAAO;IACN,CAAC,YAAY,QAAQ,CAAC;CAGzB,MAAM,CAAC,aAAa,kBAAkB,SAA+B,KAAK;AAE1E,uBAAsB;AACpB,MAAI,2BAA2B,CAAE;AACjC,MAAI,CAAC,MAAM,MAAM;AACf,kBAAe,KAAK;AACpB;;EAGF,SAAS,UAAgB;GACvB,MAAM,YAAY,QAAQ;GAC1B,MAAM,UAAU,YAAY;AAC5B,OAAI,CAAC,aAAa,CAAC,QAAS;AAO5B,kBACE,uBAAuB,YAAY,SANjB,UAAU,uBAAuB,EACnC,QAAQ,uBAAuB,EAC5B,SAAS,gBAAgB,uBAAuB,EACrD,eAAe,QAAQ,CAGqD,CAC3F;;AAGH,WAAS;EAGT,IAAI,QAAQ;EACZ,SAAS,aAAmB;AAC1B,wBAAqB,MAAM;AAC3B,WAAQ,sBAAsB,QAAQ;;AAGxC,SAAO,iBAAiB,UAAU,YAAY;GAAE,SAAS;GAAM,SAAS;GAAM,CAAC;AAC/E,SAAO,iBAAiB,UAAU,WAAW;AAE7C,eAAa;AACX,wBAAqB,MAAM;AAC3B,UAAO,oBAAoB,UAAU,YAAY,KAAK;AACtD,UAAO,oBAAoB,UAAU,WAAW;;IAEjD;EAAC,MAAM;EAAM;EAAY;EAAS;EAAQ,CAAC;CAI9C,MAAM,mBAAmB,eAAe,eAAe;AAIvD,KAAI,CAAC,MAAM,KACT,QAAO;CAIT,MAAM,EAAE,YAAY,GAAG,mBAAmB,QAAQ;AAElD,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK;EACL,OAAO;GACL;IACE,IAAI;IACJ,OAAO;IACP,GAAG,KAAK,cAAc,MAAM;IAC7B;GACD;IAAE,GAAG;IAAgB,QAAQ;IAAY;GACzC;GACD;EACF,CACF;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-root.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"popover-root.d.ts","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"mappings":";;;;;UAaiB,gBAAA,SAAyB,YAAA;;EAExC,YAAA,IAAgB,IAAA,WAAe,OAAA,EAAS,oBAAA;EAFR;EAIhC,oBAAA,IAAwB,IAAA;EACxB,QAAA,GAAW,SAAA;AAAA;AAAA,iBAGG,WAAA,CAAA;EACd,IAAA,EAAM,cAAA;EACN,WAAA;EACA,YAAA,EAAc,gBAAA;EACd,oBAAA,EAAsB,wBAAA;EACtB,WAAA;EACA,KAAA;EACA,UAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,gBAAA,GAAmB,SAAA;AAAA,kBAsEL,WAAA;EAAA,KACH,KAAA,GAAQ,gBAAA;AAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { useDestroy } from "../../utils/use-destroy.js";
|
|
3
4
|
import { useLatestRef } from "../../utils/use-latest-ref.js";
|
|
4
|
-
import { PopoverContextProvider } from "./context.js";
|
|
5
5
|
import { useSafeId } from "../../utils/use-safe-id.js";
|
|
6
|
+
import { PopoverContextProvider } from "./context.js";
|
|
6
7
|
import { createPopover, createTransition } from "@videojs/core/dom";
|
|
7
8
|
import { useSnapshot } from "@videojs/store/react";
|
|
8
9
|
import { useEffect, useState } from "react";
|
|
@@ -48,7 +49,7 @@ function PopoverRoot({ open: controlledOpen, defaultOpen = PopoverCore.defaultPr
|
|
|
48
49
|
if (controlledOpen) popover.open("click");
|
|
49
50
|
else popover.close("click");
|
|
50
51
|
}, [controlledOpen, popover]);
|
|
51
|
-
|
|
52
|
+
useDestroy(popover);
|
|
52
53
|
const input = useSnapshot(popover.input);
|
|
53
54
|
core.setInput(input);
|
|
54
55
|
return /* @__PURE__ */ jsx(PopoverContextProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-root.js","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"sourcesContent":["'use client';\n\nimport { type PopoverProps as CorePopoverProps, PopoverCore, PopoverDataAttrs } from '@videojs/core';\nimport { createPopover, createTransition, type PopoverChangeDetails } from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { PopoverContextProvider } from './context';\n\nexport interface PopoverRootProps extends CorePopoverProps {\n /** Called when the popover open state changes (fires immediately, before animations). */\n onOpenChange?: (open: boolean, details: PopoverChangeDetails) => void;\n /** Called after open/close animations complete. */\n onOpenChangeComplete?: (open: boolean) => void;\n children?: ReactNode;\n}\n\nexport function PopoverRoot({\n open: controlledOpen,\n defaultOpen = PopoverCore.defaultProps.defaultOpen,\n onOpenChange: onOpenChangeProp,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n openOnHover = PopoverCore.defaultProps.openOnHover,\n delay = PopoverCore.defaultProps.delay,\n closeDelay = PopoverCore.defaultProps.closeDelay,\n children,\n ...coreProps\n}: PopoverRootProps): ReactNode {\n const [core] = useState(() => new PopoverCore(coreProps));\n core.setProps(coreProps);\n\n const isControlled = controlledOpen !== undefined;\n\n // Keep refs that always point to the latest values so the\n // createPopover closure never reads stale props.\n const onOpenChangeRef = useLatestRef(onOpenChangeProp);\n const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);\n const closeOnEscapeRef = useLatestRef(coreProps.closeOnEscape);\n const closeOnOutsideClickRef = useLatestRef(coreProps.closeOnOutsideClick);\n const openOnHoverRef = useLatestRef(openOnHover);\n const delayRef = useLatestRef(delay);\n const closeDelayRef = useLatestRef(closeDelay);\n\n const [popover] = useState(() => {\n const instance = createPopover({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: PopoverChangeDetails) => {\n onOpenChangeRef.current?.(nextOpen, details);\n },\n onOpenChangeComplete: (nextOpen: boolean) => {\n onOpenChangeCompleteRef.current?.(nextOpen);\n },\n closeOnEscape: () => closeOnEscapeRef.current ?? PopoverCore.defaultProps.closeOnEscape,\n closeOnOutsideClick: () => closeOnOutsideClickRef.current ?? PopoverCore.defaultProps.closeOnOutsideClick,\n openOnHover: () => openOnHoverRef.current,\n delay: () => delayRef.current,\n closeDelay: () => closeDelayRef.current,\n });\n\n // Apply defaultOpen on creation (uncontrolled only)\n if (!isControlled && defaultOpen) {\n instance.open('click');\n }\n\n return instance;\n });\n\n const anchorName = useSafeId();\n const popupId = useSafeId('popup-');\n\n // Sync controlled open prop -> internal input state.\n useEffect(() => {\n if (controlledOpen === undefined) return;\n\n const { active: inputOpen } = popover.input.current;\n if (controlledOpen === inputOpen) return;\n\n if (controlledOpen) {\n popover.open('click');\n } else {\n popover.close('click');\n }\n }, [controlledOpen, popover]);\n\n
|
|
1
|
+
{"version":3,"file":"popover-root.js","names":[],"sources":["../../../../src/ui/popover/popover-root.tsx"],"sourcesContent":["'use client';\n\nimport { type PopoverProps as CorePopoverProps, PopoverCore, PopoverDataAttrs } from '@videojs/core';\nimport { createPopover, createTransition, type PopoverChangeDetails } from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useLatestRef } from '../../utils/use-latest-ref';\nimport { useSafeId } from '../../utils/use-safe-id';\nimport { PopoverContextProvider } from './context';\n\nexport interface PopoverRootProps extends CorePopoverProps {\n /** Called when the popover open state changes (fires immediately, before animations). */\n onOpenChange?: (open: boolean, details: PopoverChangeDetails) => void;\n /** Called after open/close animations complete. */\n onOpenChangeComplete?: (open: boolean) => void;\n children?: ReactNode;\n}\n\nexport function PopoverRoot({\n open: controlledOpen,\n defaultOpen = PopoverCore.defaultProps.defaultOpen,\n onOpenChange: onOpenChangeProp,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n openOnHover = PopoverCore.defaultProps.openOnHover,\n delay = PopoverCore.defaultProps.delay,\n closeDelay = PopoverCore.defaultProps.closeDelay,\n children,\n ...coreProps\n}: PopoverRootProps): ReactNode {\n const [core] = useState(() => new PopoverCore(coreProps));\n core.setProps(coreProps);\n\n const isControlled = controlledOpen !== undefined;\n\n // Keep refs that always point to the latest values so the\n // createPopover closure never reads stale props.\n const onOpenChangeRef = useLatestRef(onOpenChangeProp);\n const onOpenChangeCompleteRef = useLatestRef(onOpenChangeCompleteProp);\n const closeOnEscapeRef = useLatestRef(coreProps.closeOnEscape);\n const closeOnOutsideClickRef = useLatestRef(coreProps.closeOnOutsideClick);\n const openOnHoverRef = useLatestRef(openOnHover);\n const delayRef = useLatestRef(delay);\n const closeDelayRef = useLatestRef(closeDelay);\n\n const [popover] = useState(() => {\n const instance = createPopover({\n transition: createTransition(),\n onOpenChange: (nextOpen: boolean, details: PopoverChangeDetails) => {\n onOpenChangeRef.current?.(nextOpen, details);\n },\n onOpenChangeComplete: (nextOpen: boolean) => {\n onOpenChangeCompleteRef.current?.(nextOpen);\n },\n closeOnEscape: () => closeOnEscapeRef.current ?? PopoverCore.defaultProps.closeOnEscape,\n closeOnOutsideClick: () => closeOnOutsideClickRef.current ?? PopoverCore.defaultProps.closeOnOutsideClick,\n openOnHover: () => openOnHoverRef.current,\n delay: () => delayRef.current,\n closeDelay: () => closeDelayRef.current,\n });\n\n // Apply defaultOpen on creation (uncontrolled only)\n if (!isControlled && defaultOpen) {\n instance.open('click');\n }\n\n return instance;\n });\n\n const anchorName = useSafeId();\n const popupId = useSafeId('popup-');\n\n // Sync controlled open prop -> internal input state.\n useEffect(() => {\n if (controlledOpen === undefined) return;\n\n const { active: inputOpen } = popover.input.current;\n if (controlledOpen === inputOpen) return;\n\n if (controlledOpen) {\n popover.open('click');\n } else {\n popover.close('click');\n }\n }, [controlledOpen, popover]);\n\n useDestroy(popover);\n\n const input = useSnapshot(popover.input);\n core.setInput(input);\n const state = core.getState();\n\n return (\n <PopoverContextProvider value={{ core, popover, state, stateAttrMap: PopoverDataAttrs, anchorName, popupId }}>\n {children}\n </PopoverContextProvider>\n );\n}\n\nexport namespace PopoverRoot {\n export type Props = PopoverRootProps;\n}\n"],"mappings":";;;;;;;;;;;;;AAqBA,SAAgB,YAAY,EAC1B,MAAM,gBACN,cAAc,YAAY,aAAa,aACvC,cAAc,kBACd,sBAAsB,0BACtB,cAAc,YAAY,aAAa,aACvC,QAAQ,YAAY,aAAa,OACjC,aAAa,YAAY,aAAa,YACtC,UACA,GAAG,aAC2B;CAC9B,MAAM,CAAC,QAAQ,eAAe,IAAI,YAAY,UAAU,CAAC;AACzD,MAAK,SAAS,UAAU;CAExB,MAAM,eAAe,mBAAmB;CAIxC,MAAM,kBAAkB,aAAa,iBAAiB;CACtD,MAAM,0BAA0B,aAAa,yBAAyB;CACtE,MAAM,mBAAmB,aAAa,UAAU,cAAc;CAC9D,MAAM,yBAAyB,aAAa,UAAU,oBAAoB;CAC1E,MAAM,iBAAiB,aAAa,YAAY;CAChD,MAAM,WAAW,aAAa,MAAM;CACpC,MAAM,gBAAgB,aAAa,WAAW;CAE9C,MAAM,CAAC,WAAW,eAAe;EAC/B,MAAM,WAAW,cAAc;GAC7B,YAAY,kBAAkB;GAC9B,eAAe,UAAmB,YAAkC;AAClE,oBAAgB,UAAU,UAAU,QAAQ;;GAE9C,uBAAuB,aAAsB;AAC3C,4BAAwB,UAAU,SAAS;;GAE7C,qBAAqB,iBAAiB,WAAW,YAAY,aAAa;GAC1E,2BAA2B,uBAAuB,WAAW,YAAY,aAAa;GACtF,mBAAmB,eAAe;GAClC,aAAa,SAAS;GACtB,kBAAkB,cAAc;GACjC,CAAC;AAGF,MAAI,CAAC,gBAAgB,YACnB,UAAS,KAAK,QAAQ;AAGxB,SAAO;GACP;CAEF,MAAM,aAAa,WAAW;CAC9B,MAAM,UAAU,UAAU,SAAS;AAGnC,iBAAgB;AACd,MAAI,mBAAmB,OAAW;EAElC,MAAM,EAAE,QAAQ,cAAc,QAAQ,MAAM;AAC5C,MAAI,mBAAmB,UAAW;AAElC,MAAI,eACF,SAAQ,KAAK,QAAQ;MAErB,SAAQ,MAAM,QAAQ;IAEvB,CAAC,gBAAgB,QAAQ,CAAC;AAE7B,YAAW,QAAQ;CAEnB,MAAM,QAAQ,YAAY,QAAQ,MAAM;AACxC,MAAK,SAAS,MAAM;AAGpB,QACE,oBAAC;EAAuB,OAAO;GAAE;GAAM;GAAS,OAHpC,KAAK,UAAU;GAG4B,cAAc;GAAkB;GAAY;GAAS;EACzG;GACsB"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { renderElement } from "../../utils/use-render.js";
|
|
4
4
|
import { usePopoverContext } from "./context.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { forwardRef, useCallback } from "react";
|
|
6
|
+
import { supportsAnchorPositioning } from "@videojs/utils/dom";
|
|
7
7
|
|
|
8
8
|
//#region src/ui/popover/popover-trigger.tsx
|
|
9
9
|
/** Button that toggles the popover visibility. Renders a `<button>` element. */
|
|
@@ -11,8 +11,8 @@ const PopoverTrigger = forwardRef(function PopoverTrigger({ render, className, s
|
|
|
11
11
|
const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();
|
|
12
12
|
const triggerRef = useCallback((el) => {
|
|
13
13
|
popover.setTriggerElement(el);
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
if (el && supportsAnchorPositioning()) el.style.setProperty("anchor-name", `--${anchorName}`);
|
|
15
|
+
}, [popover, anchorName]);
|
|
16
16
|
const { onFocusIn, onFocusOut, ...restTriggerProps } = popover.triggerProps;
|
|
17
17
|
return renderElement("button", {
|
|
18
18
|
render,
|
|
@@ -25,7 +25,6 @@ const PopoverTrigger = forwardRef(function PopoverTrigger({ render, className, s
|
|
|
25
25
|
props: [
|
|
26
26
|
{
|
|
27
27
|
type: "button",
|
|
28
|
-
style: anchorStyle,
|
|
29
28
|
...core.getTriggerAttrs(state, popupId)
|
|
30
29
|
},
|
|
31
30
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-trigger.js","names":[],"sources":["../../../../src/ui/popover/popover-trigger.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport {
|
|
1
|
+
{"version":3,"file":"popover-trigger.js","names":[],"sources":["../../../../src/ui/popover/popover-trigger.tsx"],"sourcesContent":["'use client';\n\nimport type { PopoverState } from '@videojs/core';\nimport { supportsAnchorPositioning } from '@videojs/utils/dom';\nimport { forwardRef, useCallback } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { usePopoverContext } from './context';\n\nexport interface PopoverTriggerProps extends UIComponentProps<'button', PopoverState> {}\n\n/** Button that toggles the popover visibility. Renders a `<button>` element. */\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(function PopoverTrigger(\n { render, className, style, ...elementProps },\n forwardedRef\n) {\n const { core, popover, state, stateAttrMap, anchorName, popupId } = usePopoverContext();\n\n const triggerRef = useCallback(\n (el: HTMLButtonElement | null) => {\n popover.setTriggerElement(el);\n if (el && supportsAnchorPositioning()) {\n el.style.setProperty('anchor-name', `--${anchorName}`);\n }\n },\n [popover, anchorName]\n );\n\n // Remap DOM focus events to React synthetic event names.\n // createPopover() uses onFocusIn/onFocusOut (matching DOM focusin/focusout),\n // but React maps those to onFocus/onBlur.\n const { onFocusIn, onFocusOut, ...restTriggerProps } = popover.triggerProps;\n\n return renderElement(\n 'button',\n { render, className, style },\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, triggerRef],\n props: [\n {\n type: 'button' as const,\n ...core.getTriggerAttrs(state, popupId),\n },\n { ...restTriggerProps, onFocus: onFocusIn, onBlur: onFocusOut },\n elementProps,\n ],\n }\n );\n});\n\nexport namespace PopoverTrigger {\n export type Props = PopoverTriggerProps;\n export type State = PopoverState;\n}\n"],"mappings":";;;;;;;;;AAaA,MAAa,iBAAiB,WAAmD,SAAS,eACxF,EAAE,QAAQ,WAAW,OAAO,GAAG,gBAC/B,cACA;CACA,MAAM,EAAE,MAAM,SAAS,OAAO,cAAc,YAAY,YAAY,mBAAmB;CAEvF,MAAM,aAAa,aAChB,OAAiC;AAChC,UAAQ,kBAAkB,GAAG;AAC7B,MAAI,MAAM,2BAA2B,CACnC,IAAG,MAAM,YAAY,eAAe,KAAK,aAAa;IAG1D,CAAC,SAAS,WAAW,CACtB;CAKD,MAAM,EAAE,WAAW,YAAY,GAAG,qBAAqB,QAAQ;AAE/D,QAAO,cACL,UACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA;EACA,KAAK,CAAC,cAAc,WAAW;EAC/B,OAAO;GACL;IACE,MAAM;IACN,GAAG,KAAK,gBAAgB,OAAO,QAAQ;IACxC;GACD;IAAE,GAAG;IAAkB,SAAS;IAAW,QAAQ;IAAY;GAC/D;GACD;EACF,CACF;EACD"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { SliderBuffer, SliderBufferProps } from "./slider-buffer.js";
|
|
2
2
|
import { SliderFill, SliderFillProps } from "./slider-fill.js";
|
|
3
|
+
import { SliderPreview, SliderPreviewProps } from "./slider-preview.js";
|
|
3
4
|
import { SliderRoot, SliderRootProps } from "./slider-root.js";
|
|
4
5
|
import { SliderThumb, SliderThumbProps } from "./slider-thumb.js";
|
|
6
|
+
import { SliderThumbnail, SliderThumbnailProps } from "./slider-thumbnail.js";
|
|
5
7
|
import { SliderTrack, SliderTrackProps } from "./slider-track.js";
|
|
6
8
|
import { SliderValue, SliderValueProps } from "./slider-value.js";
|
|
7
9
|
|
|
8
10
|
//#region src/ui/slider/index.parts.d.ts
|
|
9
11
|
declare namespace index_parts_d_exports {
|
|
10
|
-
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, SliderRoot as Root, SliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
12
|
+
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, SliderPreview as Preview, SliderPreviewProps as PreviewProps, SliderRoot as Root, SliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderThumbnail as Thumbnail, SliderThumbnailProps as ThumbnailProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
11
13
|
}
|
|
12
14
|
//#endregion
|
|
13
15
|
export { index_parts_d_exports };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { SliderBuffer } from "./slider-buffer.js";
|
|
3
3
|
import { SliderFill } from "./slider-fill.js";
|
|
4
|
+
import { SliderPreview } from "./slider-preview.js";
|
|
4
5
|
import { SliderRoot } from "./slider-root.js";
|
|
5
6
|
import { SliderThumb } from "./slider-thumb.js";
|
|
7
|
+
import { SliderThumbnail } from "./slider-thumbnail.js";
|
|
6
8
|
import { SliderTrack } from "./slider-track.js";
|
|
7
9
|
import { SliderValue } from "./slider-value.js";
|
|
8
10
|
|
|
@@ -10,8 +12,10 @@ import { SliderValue } from "./slider-value.js";
|
|
|
10
12
|
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
11
13
|
Buffer: () => SliderBuffer,
|
|
12
14
|
Fill: () => SliderFill,
|
|
15
|
+
Preview: () => SliderPreview,
|
|
13
16
|
Root: () => SliderRoot,
|
|
14
17
|
Thumb: () => SliderThumb,
|
|
18
|
+
Thumbnail: () => SliderThumbnail,
|
|
15
19
|
Track: () => SliderTrack,
|
|
16
20
|
Value: () => SliderValue
|
|
17
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/slider/index.parts.ts"],"sourcesContent":["export { SliderBuffer as Buffer, type SliderBufferProps as BufferProps } from './slider-buffer';\nexport { SliderFill as Fill, type SliderFillProps as FillProps } from './slider-fill';\nexport { SliderRoot as Root, type SliderRootProps as RootProps } from './slider-root';\nexport { SliderThumb as Thumb, type SliderThumbProps as ThumbProps } from './slider-thumb';\nexport { SliderTrack as Track, type SliderTrackProps as TrackProps } from './slider-track';\nexport { SliderValue as Value, type SliderValueProps as ValueProps } from './slider-value';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/slider/index.parts.ts"],"sourcesContent":["export { SliderBuffer as Buffer, type SliderBufferProps as BufferProps } from './slider-buffer';\nexport { SliderFill as Fill, type SliderFillProps as FillProps } from './slider-fill';\nexport { SliderPreview as Preview, type SliderPreviewProps as PreviewProps } from './slider-preview';\nexport { SliderRoot as Root, type SliderRootProps as RootProps } from './slider-root';\nexport { SliderThumb as Thumb, type SliderThumbProps as ThumbProps } from './slider-thumb';\nexport { SliderThumbnail as Thumbnail, type SliderThumbnailProps as ThumbnailProps } from './slider-thumbnail';\nexport { SliderTrack as Track, type SliderTrackProps as TrackProps } from './slider-track';\nexport { SliderValue as Value, type SliderValueProps as ValueProps } from './slider-value';\n"],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import { SliderPreviewOverflow } from "@videojs/core/dom";
|
|
3
|
+
import * as react from "react";
|
|
4
|
+
import { SliderState } from "@videojs/core";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/slider/slider-preview.d.ts
|
|
7
|
+
interface SliderPreviewProps extends UIComponentProps<'div', SliderState> {
|
|
8
|
+
/** How the preview handles the slider boundaries. `'clamp'` keeps the preview within bounds, `'visible'` allows it to extend beyond the edges. */
|
|
9
|
+
overflow?: SliderPreviewOverflow | undefined;
|
|
10
|
+
}
|
|
11
|
+
/** Positioning container for preview content that tracks the pointer along the slider. */
|
|
12
|
+
declare const SliderPreview: react.ForwardRefExoticComponent<Omit<SliderPreviewProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare namespace SliderPreview {
|
|
14
|
+
type Props = SliderPreviewProps;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { SliderPreview, SliderPreviewProps };
|
|
18
|
+
//# sourceMappingURL=slider-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-preview.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"mappings":";;;;;;UAYiB,kBAAA,SAA2B,gBAAA,QAAwB,WAAA;;EAElE,QAAA,GAAW,qBAAA;AAAA;;cAIA,aAAA,EAAa,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAsCT,aAAA;EAAA,KACH,KAAA,GAAQ,kBAAA;AAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { renderElement } from "../../utils/use-render.js";
|
|
4
|
+
import { useSliderContext } from "./context.js";
|
|
5
|
+
import { getSliderPreviewStyle } from "@videojs/core/dom";
|
|
6
|
+
import { forwardRef, useEffect, useRef, useState } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/slider/slider-preview.tsx
|
|
9
|
+
/** Positioning container for preview content that tracks the pointer along the slider. */
|
|
10
|
+
const SliderPreview = forwardRef(function SliderPreview(componentProps, forwardedRef) {
|
|
11
|
+
const { render, className, style, overflow = "clamp", ...elementProps } = componentProps;
|
|
12
|
+
const context = useSliderContext();
|
|
13
|
+
const { state } = context;
|
|
14
|
+
const measureRef = useRef(null);
|
|
15
|
+
const [width, setWidth] = useState(0);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const el = measureRef.current;
|
|
18
|
+
if (!el) return;
|
|
19
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
20
|
+
setWidth(entry.contentRect.width);
|
|
21
|
+
});
|
|
22
|
+
observer.observe(el);
|
|
23
|
+
return () => observer.disconnect();
|
|
24
|
+
}, []);
|
|
25
|
+
const positionStyle = getSliderPreviewStyle(width, overflow);
|
|
26
|
+
return renderElement("div", {
|
|
27
|
+
render,
|
|
28
|
+
className,
|
|
29
|
+
style
|
|
30
|
+
}, {
|
|
31
|
+
state,
|
|
32
|
+
stateAttrMap: context.stateAttrMap,
|
|
33
|
+
ref: [forwardedRef, measureRef],
|
|
34
|
+
props: [{ style: positionStyle }, elementProps]
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { SliderPreview };
|
|
40
|
+
//# sourceMappingURL=slider-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-preview.js","names":[],"sources":["../../../../src/ui/slider/slider-preview.tsx"],"sourcesContent":["'use client';\n\nimport type { SliderState } from '@videojs/core';\nimport type { SliderPreviewOverflow } from '@videojs/core/dom';\nimport { getSliderPreviewStyle } from '@videojs/core/dom';\nimport type { ForwardedRef } from 'react';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { renderElement } from '../../utils/use-render';\nimport { useSliderContext } from './context';\n\nexport interface SliderPreviewProps extends UIComponentProps<'div', SliderState> {\n /** How the preview handles the slider boundaries. `'clamp'` keeps the preview within bounds, `'visible'` allows it to extend beyond the edges. */\n overflow?: SliderPreviewOverflow | undefined;\n}\n\n/** Positioning container for preview content that tracks the pointer along the slider. */\nexport const SliderPreview = forwardRef(function SliderPreview(\n componentProps: SliderPreviewProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const { render, className, style, overflow = 'clamp', ...elementProps } = componentProps;\n\n const context = useSliderContext();\n const { state } = context;\n\n const measureRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n\n const observer = new ResizeObserver(([entry]) => {\n setWidth(entry!.contentRect.width);\n });\n\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const positionStyle = getSliderPreviewStyle(width, overflow);\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: context.stateAttrMap,\n ref: [forwardedRef, measureRef],\n props: [{ style: positionStyle }, elementProps],\n }\n );\n});\n\nexport namespace SliderPreview {\n export type Props = SliderPreviewProps;\n}\n"],"mappings":";;;;;;;;;AAkBA,MAAa,gBAAgB,WAAW,SAAS,cAC/C,gBACA,cACA;CACA,MAAM,EAAE,QAAQ,WAAW,OAAO,WAAW,SAAS,GAAG,iBAAiB;CAE1E,MAAM,UAAU,kBAAkB;CAClC,MAAM,EAAE,UAAU;CAElB,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,CAAC,OAAO,YAAY,SAAS,EAAE;AAErC,iBAAgB;EACd,MAAM,KAAK,WAAW;AACtB,MAAI,CAAC,GAAI;EAET,MAAM,WAAW,IAAI,gBAAgB,CAAC,WAAW;AAC/C,YAAS,MAAO,YAAY,MAAM;IAClC;AAEF,WAAS,QAAQ,GAAG;AACpB,eAAa,SAAS,YAAY;IACjC,EAAE,CAAC;CAEN,MAAM,gBAAgB,sBAAsB,OAAO,SAAS;AAE5D,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc,QAAQ;EACtB,KAAK,CAAC,cAAc,WAAW;EAC/B,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,aAAa;EAChD,CACF;EACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ThumbnailProps } from "../thumbnail/thumbnail.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { ThumbnailCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/slider/slider-thumbnail.d.ts
|
|
6
|
+
interface SliderThumbnailProps extends Omit<ThumbnailProps, 'time'> {}
|
|
7
|
+
declare const SliderThumbnail: react.ForwardRefExoticComponent<Omit<SliderThumbnailProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare namespace SliderThumbnail {
|
|
9
|
+
type Props = SliderThumbnailProps;
|
|
10
|
+
type State = ThumbnailCore.State;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { SliderThumbnail, SliderThumbnailProps };
|
|
14
|
+
//# sourceMappingURL=slider-thumbnail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-thumbnail.d.ts","names":[],"sources":["../../../../src/ui/slider/slider-thumbnail.tsx"],"mappings":";;;;;UAQiB,oBAAA,SAA6B,IAAA,CAAK,cAAA;AAAA,cAEtC,eAAA,EAAe,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,oBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAOX,eAAA;EAAA,KACH,KAAA,GAAQ,oBAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useSliderContext } from "./context.js";
|
|
4
|
+
import { Thumbnail } from "../thumbnail/thumbnail.js";
|
|
5
|
+
import { forwardRef } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/slider/slider-thumbnail.tsx
|
|
9
|
+
const SliderThumbnail = forwardRef(function SliderThumbnail(componentProps, forwardedRef) {
|
|
10
|
+
const { pointerValue } = useSliderContext();
|
|
11
|
+
return /* @__PURE__ */ jsx(Thumbnail, {
|
|
12
|
+
ref: forwardedRef,
|
|
13
|
+
...componentProps,
|
|
14
|
+
time: pointerValue
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SliderThumbnail };
|
|
20
|
+
//# sourceMappingURL=slider-thumbnail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-thumbnail.js","names":[],"sources":["../../../../src/ui/slider/slider-thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport type { ThumbnailCore } from '@videojs/core';\nimport { forwardRef } from 'react';\n\nimport { Thumbnail, type ThumbnailProps } from '../thumbnail/thumbnail';\nimport { useSliderContext } from './context';\n\nexport interface SliderThumbnailProps extends Omit<ThumbnailProps, 'time'> {}\n\nexport const SliderThumbnail = forwardRef<HTMLDivElement, SliderThumbnailProps>(\n function SliderThumbnail(componentProps, forwardedRef) {\n const { pointerValue } = useSliderContext();\n return <Thumbnail ref={forwardedRef} {...componentProps} time={pointerValue} />;\n }\n);\n\nexport namespace SliderThumbnail {\n export type Props = SliderThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;;;AAUA,MAAa,kBAAkB,WAC7B,SAAS,gBAAgB,gBAAgB,cAAc;CACrD,MAAM,EAAE,iBAAiB,kBAAkB;AAC3C,QAAO,oBAAC;EAAU,KAAK;EAAc,GAAI;EAAgB,MAAM;GAAgB;EAElF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;UAkBiB,cAAA,SAAuB,gBAAA,QAAwB,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;EAElG,UAAA,GAAa,cAAA;AAAA;AAAA,cAGF,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAqGL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useOptionalPlayer } from "../../player/context.js";
|
|
4
|
+
import { useDestroy } from "../../utils/use-destroy.js";
|
|
4
5
|
import { renderElement } from "../../utils/use-render.js";
|
|
5
6
|
import { createThumbnail, selectTextTrack } from "@videojs/core/dom";
|
|
6
|
-
import { forwardRef,
|
|
7
|
+
import { forwardRef, useMemo, useRef, useState } from "react";
|
|
7
8
|
import { jsx } from "react/jsx-runtime";
|
|
8
9
|
import { ThumbnailCore, ThumbnailDataAttrs, mapCuesToThumbnails } from "@videojs/core";
|
|
9
10
|
|
|
@@ -20,10 +21,7 @@ const Thumbnail = forwardRef(function Thumbnail(componentProps, forwardedRef) {
|
|
|
20
21
|
getImg: () => imgRef.current,
|
|
21
22
|
onStateChange: () => setRenderToken((n) => n + 1)
|
|
22
23
|
}));
|
|
23
|
-
|
|
24
|
-
handle.connect();
|
|
25
|
-
return () => handle.destroy();
|
|
26
|
-
}, [handle]);
|
|
24
|
+
useDestroy(handle, () => handle.connect());
|
|
27
25
|
const thumbnails = useMemo(() => {
|
|
28
26
|
if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;
|
|
29
27
|
if (!textTrack?.thumbnailCues.length) return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef,
|
|
1
|
+
{"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useOptionalPlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {\n /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */\n thumbnails?: ThumbnailImage[] | undefined;\n}\n\nexport const Thumbnail = forwardRef<HTMLDivElement, ThumbnailProps>(function Thumbnail(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n time = 0,\n thumbnails: externalThumbnails,\n crossOrigin,\n loading,\n fetchPriority,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new ThumbnailCore());\n const divRef = useRef<HTMLDivElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const textTrack = useOptionalPlayer(selectTextTrack);\n\n // Force re-render when the handle's state changes (img load/error, resize).\n const [, setRenderToken] = useState(0);\n\n const [handle] = useState(() =>\n createThumbnail({\n getContainer: () => divRef.current,\n getImg: () => imgRef.current,\n onStateChange: () => setRenderToken((n) => n + 1),\n })\n );\n\n useDestroy(handle, () => handle.connect());\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n const thumbnails = useMemo(() => {\n if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;\n if (!textTrack?.thumbnailCues.length) return [];\n return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined);\n }, [externalThumbnails, textTrack]);\n\n const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [core, thumbnails, time]);\n\n // Track src changes via the handle.\n handle.updateSrc(thumbnail?.url);\n\n const state = core.getState(handle.loading, handle.error, thumbnail);\n\n // Compute styles declaratively from resize result.\n let containerStyle: CSSProperties = { overflow: 'hidden' };\n let imgStyle: CSSProperties | undefined;\n\n if (thumbnail && handle.naturalWidth && handle.naturalHeight) {\n const constraints = handle.readConstraints();\n const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);\n\n if (result) {\n containerStyle = {\n overflow: 'hidden',\n width: result.containerWidth,\n height: result.containerHeight,\n };\n imgStyle = {\n width: result.imageWidth,\n height: result.imageHeight,\n maxWidth: 'none',\n transform:\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : undefined,\n };\n }\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: ThumbnailDataAttrs,\n ref: [forwardedRef, divRef],\n props: [\n core.getAttrs(state),\n { style: containerStyle },\n elementProps,\n {\n children: (\n <img\n ref={imgRef}\n alt=\"\"\n aria-hidden=\"true\"\n decoding=\"async\"\n src={thumbnail?.url}\n crossOrigin={crossOrigin === '' || crossOrigin === null ? undefined : crossOrigin}\n loading={loading}\n style={imgStyle}\n // React's types omit `| undefined` from fetchPriority — cast to satisfy exactOptionalPropertyTypes.\n fetchPriority={fetchPriority as ThumbnailFetchPriority}\n />\n ),\n },\n ],\n }\n );\n});\n\nexport namespace Thumbnail {\n export type Props = ThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;;;;;;AAuBA,MAAa,YAAY,WAA2C,SAAS,UAAU,gBAAgB,cAAc;CACnH,MAAM,EACJ,QACA,WACA,OACA,OAAO,GACP,YAAY,oBACZ,aACA,SACA,eACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;CAClD,MAAM,SAAS,OAAuB,KAAK;CAC3C,MAAM,SAAS,OAAyB,KAAK;CAC7C,MAAM,YAAY,kBAAkB,gBAAgB;CAGpD,MAAM,GAAG,kBAAkB,SAAS,EAAE;CAEtC,MAAM,CAAC,UAAU,eACf,gBAAgB;EACd,oBAAoB,OAAO;EAC3B,cAAc,OAAO;EACrB,qBAAqB,gBAAgB,MAAM,IAAI,EAAE;EAClD,CAAC,CACH;AAED,YAAW,cAAc,OAAO,SAAS,CAAC;CAG1C,MAAM,aAAa,cAAc;AAC/B,MAAI,sBAAsB,mBAAmB,SAAS,EAAG,QAAO;AAChE,MAAI,CAAC,WAAW,cAAc,OAAQ,QAAO,EAAE;AAC/C,SAAO,oBAAoB,UAAU,eAAe,UAAU,qBAAqB,OAAU;IAC5F,CAAC,oBAAoB,UAAU,CAAC;CAEnC,MAAM,YAAY,cAAc,KAAK,oBAAoB,YAAY,KAAK,EAAE;EAAC;EAAM;EAAY;EAAK,CAAC;AAGrG,QAAO,UAAU,WAAW,IAAI;CAEhC,MAAM,QAAQ,KAAK,SAAS,OAAO,SAAS,OAAO,OAAO,UAAU;CAGpE,IAAI,iBAAgC,EAAE,UAAU,UAAU;CAC1D,IAAI;AAEJ,KAAI,aAAa,OAAO,gBAAgB,OAAO,eAAe;EAC5D,MAAM,cAAc,OAAO,iBAAiB;EAC5C,MAAM,SAAS,KAAK,OAAO,WAAW,OAAO,cAAc,OAAO,eAAe,YAAY;AAE7F,MAAI,QAAQ;AACV,oBAAiB;IACf,UAAU;IACV,OAAO,OAAO;IACd,QAAQ,OAAO;IAChB;AACD,cAAW;IACT,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,UAAU;IACV,WACE,OAAO,WAAW,OAAO,UAAU,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO;IAChG;;;AAIL,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,OAAO;EAC3B,OAAO;GACL,KAAK,SAAS,MAAM;GACpB,EAAE,OAAO,gBAAgB;GACzB;GACA,EACE,UACE,oBAAC;IACC,KAAK;IACL,KAAI;IACJ,eAAY;IACZ,UAAS;IACT,KAAK,WAAW;IAChB,aAAa,gBAAgB,MAAM,gBAAgB,OAAO,SAAY;IAC7D;IACT,OAAO;IAEQ;KACf,EAEL;GACF;EACF,CACF;EACD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SliderBuffer, SliderBufferProps } from "../slider/slider-buffer.js";
|
|
2
2
|
import { SliderFill, SliderFillProps } from "../slider/slider-fill.js";
|
|
3
|
+
import { SliderPreview, SliderPreviewProps } from "../slider/slider-preview.js";
|
|
3
4
|
import { SliderThumb, SliderThumbProps } from "../slider/slider-thumb.js";
|
|
4
5
|
import { SliderTrack, SliderTrackProps } from "../slider/slider-track.js";
|
|
5
6
|
import { SliderValue, SliderValueProps } from "../slider/slider-value.js";
|
|
@@ -8,7 +9,7 @@ import { TimeSliderRoot, TimeSliderRootProps } from "./time-slider-root.js";
|
|
|
8
9
|
|
|
9
10
|
//#region src/ui/time-slider/index.parts.d.ts
|
|
10
11
|
declare namespace index_parts_d_exports {
|
|
11
|
-
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, TimeSliderRoot as Root, TimeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
12
|
+
export { SliderBuffer as Buffer, SliderBufferProps as BufferProps, SliderFill as Fill, SliderFillProps as FillProps, SliderPreview as Preview, SliderPreviewProps as PreviewProps, TimeSliderRoot as Root, TimeSliderRootProps as RootProps, SliderThumb as Thumb, SliderThumbProps as ThumbProps, SliderTrack as Track, SliderTrackProps as TrackProps, SliderValue as Value, SliderValueProps as ValueProps };
|
|
12
13
|
}
|
|
13
14
|
//#endregion
|
|
14
15
|
export { index_parts_d_exports };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { SliderBuffer } from "../slider/slider-buffer.js";
|
|
3
3
|
import { SliderFill } from "../slider/slider-fill.js";
|
|
4
|
+
import { SliderPreview } from "../slider/slider-preview.js";
|
|
4
5
|
import { SliderThumb } from "../slider/slider-thumb.js";
|
|
5
6
|
import { SliderTrack } from "../slider/slider-track.js";
|
|
6
7
|
import { SliderValue } from "../slider/slider-value.js";
|
|
@@ -10,6 +11,7 @@ import { TimeSliderRoot } from "./time-slider-root.js";
|
|
|
10
11
|
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
11
12
|
Buffer: () => SliderBuffer,
|
|
12
13
|
Fill: () => SliderFill,
|
|
14
|
+
Preview: () => SliderPreview,
|
|
13
15
|
Root: () => TimeSliderRoot,
|
|
14
16
|
Thumb: () => SliderThumb,
|
|
15
17
|
Track: () => SliderTrack,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"sourcesContent":["export {\n Buffer,\n type BufferProps,\n Fill,\n type FillProps,\n Thumb,\n type ThumbProps,\n Track,\n type TrackProps,\n Value,\n type ValueProps,\n} from '../slider/index.parts';\nexport { TimeSliderRoot as Root, type TimeSliderRootProps as RootProps } from './time-slider-root';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/time-slider/index.parts.ts"],"sourcesContent":["export {\n Buffer,\n type BufferProps,\n Fill,\n type FillProps,\n Preview,\n type PreviewProps,\n Thumb,\n type ThumbProps,\n Track,\n type TrackProps,\n Value,\n type ValueProps,\n} from '../slider/index.parts';\nexport { TimeSliderRoot as Root, type TimeSliderRootProps as RootProps } from './time-slider-root';\n"],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TooltipApi } from "@videojs/core/dom";
|
|
2
|
+
import "react";
|
|
3
|
+
import { StateAttrMap as StateAttrMap$1, TooltipCore } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/tooltip/context.d.ts
|
|
6
|
+
interface TooltipContextValue {
|
|
7
|
+
core: TooltipCore;
|
|
8
|
+
tooltip: TooltipApi;
|
|
9
|
+
state: TooltipCore.State;
|
|
10
|
+
stateAttrMap: StateAttrMap$1<TooltipCore.State>;
|
|
11
|
+
anchorName: string;
|
|
12
|
+
popupId: string;
|
|
13
|
+
}
|
|
14
|
+
declare function useTooltipContext(): TooltipContextValue;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { TooltipContextValue, useTooltipContext };
|
|
17
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"mappings":";;;;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,cAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,iBAOc,iBAAA,CAAA,GAAqB,mBAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/tooltip/context.tsx
|
|
6
|
+
const TooltipContext = createContext(null);
|
|
7
|
+
const TooltipContextProvider = TooltipContext.Provider;
|
|
8
|
+
function useTooltipContext() {
|
|
9
|
+
const ctx = useContext(TooltipContext);
|
|
10
|
+
if (!ctx) throw new Error("Tooltip compound components must be used within a Tooltip.Root");
|
|
11
|
+
return ctx;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { TooltipContextProvider, useTooltipContext };
|
|
16
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"sourcesContent":["'use client';\n\nimport type { StateAttrMap, TooltipCore } from '@videojs/core';\nimport type { TooltipApi } from '@videojs/core/dom';\nimport { createContext, useContext } from 'react';\n\nexport interface TooltipContextValue {\n core: TooltipCore;\n tooltip: TooltipApi;\n state: TooltipCore.State;\n stateAttrMap: StateAttrMap<TooltipCore.State>;\n anchorName: string;\n popupId: string;\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null);\n\nexport const TooltipContextProvider = TooltipContext.Provider;\n\nexport function useTooltipContext(): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) throw new Error('Tooltip compound components must be used within a Tooltip.Root');\n return ctx;\n}\n"],"mappings":";;;;;AAeA,MAAM,iBAAiB,cAA0C,KAAK;AAEtE,MAAa,yBAAyB,eAAe;AAErD,SAAgB,oBAAyC;CACvD,MAAM,MAAM,WAAW,eAAe;AACtC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,iEAAiE;AAC3F,QAAO"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/tooltip/group-context.tsx
|
|
6
|
+
const TooltipGroupContext = createContext(null);
|
|
7
|
+
const TooltipGroupContextProvider = TooltipGroupContext.Provider;
|
|
8
|
+
/** Returns the nearest `TooltipGroupCore`, or `undefined` when used outside a `Tooltip.Provider`. */
|
|
9
|
+
function useTooltipGroup() {
|
|
10
|
+
return useContext(TooltipGroupContext)?.group;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { TooltipGroupContextProvider, useTooltipGroup };
|
|
15
|
+
//# sourceMappingURL=group-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-context.js","names":[],"sources":["../../../../src/ui/tooltip/group-context.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipGroupCore } from '@videojs/core';\nimport { createContext, useContext } from 'react';\n\ninterface TooltipGroupContextValue {\n group: TooltipGroupCore;\n}\n\nconst TooltipGroupContext = createContext<TooltipGroupContextValue | null>(null);\n\nexport const TooltipGroupContextProvider = TooltipGroupContext.Provider;\n\n/** Returns the nearest `TooltipGroupCore`, or `undefined` when used outside a `Tooltip.Provider`. */\nexport function useTooltipGroup(): TooltipGroupCore | undefined {\n return useContext(TooltipGroupContext)?.group;\n}\n"],"mappings":";;;;;AASA,MAAM,sBAAsB,cAA+C,KAAK;AAEhF,MAAa,8BAA8B,oBAAoB;;AAG/D,SAAgB,kBAAgD;AAC9D,QAAO,WAAW,oBAAoB,EAAE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TooltipArrow, TooltipArrowProps } from "./tooltip-arrow.js";
|
|
2
|
+
import { TooltipPopup, TooltipPopupProps } from "./tooltip-popup.js";
|
|
3
|
+
import { TooltipProvider, TooltipProviderProps } from "./tooltip-provider.js";
|
|
4
|
+
import { TooltipRoot, TooltipRootProps } from "./tooltip-root.js";
|
|
5
|
+
import { TooltipTrigger, TooltipTriggerProps } from "./tooltip-trigger.js";
|
|
6
|
+
|
|
7
|
+
//#region src/ui/tooltip/index.parts.d.ts
|
|
8
|
+
declare namespace index_parts_d_exports {
|
|
9
|
+
export { TooltipArrow as Arrow, TooltipArrowProps as ArrowProps, TooltipPopup as Popup, TooltipPopupProps as PopupProps, TooltipProvider as Provider, TooltipProviderProps as ProviderProps, TooltipRoot as Root, TooltipRootProps as RootProps, TooltipTrigger as Trigger, TooltipTriggerProps as TriggerProps };
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { index_parts_d_exports };
|
|
13
|
+
//# sourceMappingURL=index.parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.d.ts","names":[],"sources":["../../../../src/ui/tooltip/index.parts.ts"],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { TooltipArrow } from "./tooltip-arrow.js";
|
|
3
|
+
import { TooltipPopup } from "./tooltip-popup.js";
|
|
4
|
+
import { TooltipProvider } from "./tooltip-provider.js";
|
|
5
|
+
import { TooltipRoot } from "./tooltip-root.js";
|
|
6
|
+
import { TooltipTrigger } from "./tooltip-trigger.js";
|
|
7
|
+
|
|
8
|
+
//#region src/ui/tooltip/index.parts.ts
|
|
9
|
+
var index_parts_exports = /* @__PURE__ */ __exportAll({
|
|
10
|
+
Arrow: () => TooltipArrow,
|
|
11
|
+
Popup: () => TooltipPopup,
|
|
12
|
+
Provider: () => TooltipProvider,
|
|
13
|
+
Root: () => TooltipRoot,
|
|
14
|
+
Trigger: () => TooltipTrigger
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { index_parts_exports };
|
|
19
|
+
//# sourceMappingURL=index.parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.parts.js","names":[],"sources":["../../../../src/ui/tooltip/index.parts.ts"],"sourcesContent":["export { TooltipArrow as Arrow, type TooltipArrowProps as ArrowProps } from './tooltip-arrow';\nexport { TooltipPopup as Popup, type TooltipPopupProps as PopupProps } from './tooltip-popup';\nexport { TooltipProvider as Provider, type TooltipProviderProps as ProviderProps } from './tooltip-provider';\nexport { TooltipRoot as Root, type TooltipRootProps as RootProps } from './tooltip-root';\nexport { TooltipTrigger as Trigger, type TooltipTriggerProps as TriggerProps } from './tooltip-trigger';\n"],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UIComponentProps } from "../../utils/types.js";
|
|
2
|
+
import * as react from "react";
|
|
3
|
+
import { TooltipState } from "@videojs/core";
|
|
4
|
+
|
|
5
|
+
//#region src/ui/tooltip/tooltip-arrow.d.ts
|
|
6
|
+
interface TooltipArrowProps extends UIComponentProps<'div', TooltipState> {}
|
|
7
|
+
/** Decorative arrow pointing from the tooltip toward the trigger. Hidden from assistive technology. */
|
|
8
|
+
declare const TooltipArrow: react.ForwardRefExoticComponent<TooltipArrowProps>;
|
|
9
|
+
declare namespace TooltipArrow {
|
|
10
|
+
type Props = TooltipArrowProps;
|
|
11
|
+
type State = TooltipState;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { TooltipArrow, TooltipArrowProps };
|
|
15
|
+
//# sourceMappingURL=tooltip-arrow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-arrow.d.ts","names":[],"sources":["../../../../src/ui/tooltip/tooltip-arrow.tsx"],"mappings":";;;;;UAQiB,iBAAA,SAA0B,gBAAA,QAAwB,YAAA;;cAGtD,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,iBAAA;AAAA,kBAOR,YAAA;EAAA,KACH,KAAA,GAAQ,iBAAA;EAAA,KACR,KAAA,GAAQ,YAAA;AAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContextPart } from "../create-context-part.js";
|
|
4
|
+
import { useTooltipContext } from "./context.js";
|
|
5
|
+
|
|
6
|
+
//#region src/ui/tooltip/tooltip-arrow.tsx
|
|
7
|
+
/** Decorative arrow pointing from the tooltip toward the trigger. Hidden from assistive technology. */
|
|
8
|
+
const TooltipArrow = createContextPart({
|
|
9
|
+
displayName: "TooltipArrow",
|
|
10
|
+
tag: "div",
|
|
11
|
+
useContext: useTooltipContext,
|
|
12
|
+
staticProps: { "aria-hidden": "true" }
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { TooltipArrow };
|
|
17
|
+
//# sourceMappingURL=tooltip-arrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../../../src/ui/tooltip/tooltip-arrow.tsx"],"sourcesContent":["'use client';\n\nimport type { TooltipState } from '@videojs/core';\n\nimport type { UIComponentProps } from '../../utils/types';\nimport { createContextPart } from '../create-context-part';\nimport { useTooltipContext } from './context';\n\nexport interface TooltipArrowProps extends UIComponentProps<'div', TooltipState> {}\n\n/** Decorative arrow pointing from the tooltip toward the trigger. Hidden from assistive technology. */\nexport const TooltipArrow = createContextPart<TooltipArrowProps, TooltipState>({\n displayName: 'TooltipArrow',\n tag: 'div',\n useContext: useTooltipContext,\n staticProps: { 'aria-hidden': 'true' as const },\n});\n\nexport namespace TooltipArrow {\n export type Props = TooltipArrowProps;\n export type State = TooltipState;\n}\n"],"mappings":";;;;;;;AAWA,MAAa,eAAe,kBAAmD;CAC7E,aAAa;CACb,KAAK;CACL,YAAY;CACZ,aAAa,EAAE,eAAe,QAAiB;CAChD,CAAC"}
|