@remotion/player 4.0.0-webhook.26 → 4.1.0-alpha1
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/LICENSE.md +8 -8
- package/README.md +1 -1
- package/dist/{MediaVolumeSlider.d.ts → cjs/MediaVolumeSlider.d.ts} +0 -0
- package/dist/{MediaVolumeSlider.js → cjs/MediaVolumeSlider.js} +41 -17
- package/dist/cjs/PlaybackrateControl.d.ts +8 -0
- package/dist/cjs/PlaybackrateControl.js +163 -0
- package/dist/cjs/Player.d.ts +52 -0
- package/dist/{Player.js → cjs/Player.js} +41 -87
- package/dist/{PlayerControls.d.ts → cjs/PlayerControls.d.ts} +14 -5
- package/dist/cjs/PlayerControls.js +161 -0
- package/dist/{PlayerSeekBar.d.ts → cjs/PlayerSeekBar.d.ts} +0 -0
- package/dist/{PlayerSeekBar.js → cjs/PlayerSeekBar.js} +6 -6
- package/dist/{PlayerUI.d.ts → cjs/PlayerUI.d.ts} +13 -12
- package/dist/{PlayerUI.js → cjs/PlayerUI.js} +54 -72
- package/dist/cjs/SharedPlayerContext.d.ts +15 -0
- package/dist/cjs/SharedPlayerContext.js +75 -0
- package/dist/cjs/Thumbnail.d.ts +24 -0
- package/dist/cjs/Thumbnail.js +46 -0
- package/dist/cjs/ThumbnailUI.d.ts +11 -0
- package/dist/cjs/ThumbnailUI.js +107 -0
- package/dist/{calculate-next-frame.d.ts → cjs/calculate-next-frame.d.ts} +0 -0
- package/dist/{calculate-next-frame.js → cjs/calculate-next-frame.js} +0 -0
- package/dist/cjs/calculate-scale.d.ts +39 -0
- package/dist/cjs/calculate-scale.js +85 -0
- package/dist/cjs/emitter-context.d.ts +4 -0
- package/dist/{emitter-context.js → cjs/emitter-context.js} +2 -1
- package/dist/{error-boundary.d.ts → cjs/error-boundary.d.ts} +0 -0
- package/dist/{error-boundary.js → cjs/error-boundary.js} +0 -0
- package/dist/cjs/event-emitter.d.ts +81 -0
- package/dist/{event-emitter.js → cjs/event-emitter.js} +43 -3
- package/dist/{format-time.d.ts → cjs/format-time.d.ts} +0 -0
- package/dist/{format-time.js → cjs/format-time.js} +0 -0
- package/dist/{icons.d.ts → cjs/icons.d.ts} +1 -1
- package/dist/{icons.js → cjs/icons.js} +4 -4
- package/dist/{index.d.ts → cjs/index.d.ts} +13 -11
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/is-backgrounded.d.ts +2 -0
- package/dist/cjs/is-backgrounded.js +24 -0
- package/dist/{player-css-classname.d.ts → cjs/player-css-classname.d.ts} +0 -0
- package/dist/{player-css-classname.js → cjs/player-css-classname.js} +0 -0
- package/dist/{player-methods.d.ts → cjs/player-methods.d.ts} +9 -6
- package/dist/{player-methods.js → cjs/player-methods.js} +0 -0
- package/dist/{test → cjs/test}/index.test.d.ts +0 -0
- package/dist/cjs/test/index.test.js +9 -0
- package/dist/{test → cjs/test}/test-utils.d.ts +0 -0
- package/dist/{test → cjs/test}/test-utils.js +0 -0
- package/dist/{test → cjs/test}/validate-in-out-frames.test.d.ts +0 -0
- package/dist/{test → cjs/test}/validate-in-out-frames.test.js +13 -12
- package/dist/{test → cjs/test}/validate-prop.test.d.ts +0 -0
- package/dist/cjs/test/validate-prop.test.js +131 -0
- package/dist/{use-hover-state.d.ts → cjs/use-hover-state.d.ts} +0 -0
- package/dist/{use-hover-state.js → cjs/use-hover-state.js} +0 -0
- package/dist/{use-playback.d.ts → cjs/use-playback.d.ts} +0 -0
- package/dist/{use-playback.js → cjs/use-playback.js} +46 -9
- package/dist/{use-player.d.ts → cjs/use-player.d.ts} +2 -2
- package/dist/{use-player.js → cjs/use-player.js} +2 -2
- package/dist/cjs/use-thumbnail.d.ts +6 -0
- package/dist/cjs/use-thumbnail.js +18 -0
- package/dist/{use-video-controls-resize.d.ts → cjs/use-video-controls-resize.d.ts} +8 -4
- package/dist/{use-video-controls-resize.js → cjs/use-video-controls-resize.js} +16 -13
- package/dist/{utils → cjs/utils}/calculate-player-size.d.ts +1 -1
- package/dist/{utils → cjs/utils}/calculate-player-size.js +9 -10
- package/dist/{utils → cjs/utils}/cancellable-promise.d.ts +1 -1
- package/dist/{utils → cjs/utils}/cancellable-promise.js +0 -0
- package/dist/{utils → cjs/utils}/delay.d.ts +0 -0
- package/dist/{utils → cjs/utils}/delay.js +0 -0
- package/dist/{utils → cjs/utils}/is-node.d.ts +0 -0
- package/dist/{utils → cjs/utils}/is-node.js +0 -0
- package/dist/{utils → cjs/utils}/preview-size.d.ts +2 -2
- package/dist/{utils → cjs/utils}/preview-size.js +0 -0
- package/dist/cjs/utils/props-if-has-props.d.ts +10 -0
- package/dist/cjs/utils/props-if-has-props.js +2 -0
- package/dist/{utils → cjs/utils}/use-cancellable-promises.d.ts +1 -1
- package/dist/{utils → cjs/utils}/use-cancellable-promises.js +0 -0
- package/dist/{utils → cjs/utils}/use-click-prevention-on-double-click.d.ts +0 -0
- package/dist/{utils → cjs/utils}/use-click-prevention-on-double-click.js +5 -5
- package/dist/cjs/utils/use-component-visible.d.ts +6 -0
- package/dist/cjs/utils/use-component-visible.js +21 -0
- package/dist/{utils → cjs/utils}/use-element-size.d.ts +2 -1
- package/dist/{utils → cjs/utils}/use-element-size.js +29 -12
- package/dist/{utils → cjs/utils}/validate-in-out-frame.d.ts +1 -1
- package/dist/{utils → cjs/utils}/validate-in-out-frame.js +13 -13
- package/dist/{utils → cjs/utils}/validate-initial-frame.d.ts +0 -0
- package/dist/{utils → cjs/utils}/validate-initial-frame.js +0 -0
- package/dist/{utils → cjs/utils}/validate-playbackrate.d.ts +0 -0
- package/dist/{utils → cjs/utils}/validate-playbackrate.js +0 -0
- package/dist/{volume-persistance.d.ts → cjs/volume-persistance.d.ts} +0 -0
- package/dist/{volume-persistance.js → cjs/volume-persistance.js} +0 -0
- package/dist/esm/MediaVolumeSlider.d.ts +5 -0
- package/dist/esm/PlaybackrateControl.d.ts +8 -0
- package/dist/esm/Player.d.ts +52 -0
- package/dist/esm/PlayerControls.d.ts +42 -0
- package/dist/esm/PlayerSeekBar.d.ts +8 -0
- package/dist/esm/PlayerUI.d.ts +40 -0
- package/dist/esm/SharedPlayerContext.d.ts +15 -0
- package/dist/esm/Thumbnail.d.ts +24 -0
- package/dist/esm/ThumbnailUI.d.ts +11 -0
- package/dist/esm/calculate-next-frame.d.ts +14 -0
- package/dist/esm/calculate-scale.d.ts +39 -0
- package/dist/esm/emitter-context.d.ts +4 -0
- package/dist/esm/error-boundary.d.ts +19 -0
- package/dist/esm/event-emitter.d.ts +81 -0
- package/dist/esm/format-time.d.ts +1 -0
- package/dist/esm/icons.d.ts +10 -0
- package/dist/esm/index.d.ts +61 -0
- package/dist/esm/index.mjs +2132 -0
- package/dist/esm/is-backgrounded.d.ts +2 -0
- package/dist/esm/player-css-classname.d.ts +1 -0
- package/dist/esm/player-methods.d.ts +24 -0
- package/dist/esm/test/index.test.d.ts +1 -0
- package/dist/esm/test/test-utils.d.ts +6 -0
- package/dist/esm/test/validate-in-out-frames.test.d.ts +1 -0
- package/dist/esm/test/validate-prop.test.d.ts +1 -0
- package/dist/esm/use-hover-state.d.ts +1 -0
- package/dist/esm/use-playback.d.ts +7 -0
- package/dist/esm/use-player.d.ts +19 -0
- package/dist/esm/use-thumbnail.d.ts +6 -0
- package/dist/esm/use-video-controls-resize.d.ts +11 -0
- package/dist/esm/utils/calculate-player-size.d.ts +9 -0
- package/dist/esm/utils/cancellable-promise.d.ts +5 -0
- package/dist/esm/utils/delay.d.ts +1 -0
- package/dist/esm/utils/is-node.d.ts +1 -0
- package/dist/esm/utils/preview-size.d.ts +8 -0
- package/dist/esm/utils/props-if-has-props.d.ts +10 -0
- package/dist/esm/utils/use-cancellable-promises.d.ts +7 -0
- package/dist/esm/utils/use-click-prevention-on-double-click.d.ts +3 -0
- package/dist/esm/utils/use-component-visible.d.ts +6 -0
- package/dist/esm/utils/use-element-size.d.ts +16 -0
- package/dist/esm/utils/validate-in-out-frame.d.ts +6 -0
- package/dist/esm/utils/validate-initial-frame.d.ts +4 -0
- package/dist/esm/utils/validate-playbackrate.d.ts +1 -0
- package/dist/esm/volume-persistance.d.ts +2 -0
- package/dist/tsconfig-esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +80 -66
- package/dist/Player.d.ts +0 -49
- package/dist/PlayerControls.js +0 -137
- package/dist/calculate-scale.d.ts +0 -20
- package/dist/calculate-scale.js +0 -33
- package/dist/emitter-context.d.ts +0 -3
- package/dist/event-emitter.d.ts +0 -52
- package/dist/index.js +0 -23
- package/dist/test/index.test.js +0 -8
- package/dist/test/validate-prop.test.js +0 -130
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const remotion_1 = require("remotion");
|
|
29
|
+
const calculate_scale_js_1 = require("./calculate-scale.js");
|
|
30
|
+
const error_boundary_js_1 = require("./error-boundary.js");
|
|
31
|
+
const player_css_classname_js_1 = require("./player-css-classname.js");
|
|
32
|
+
const use_thumbnail_js_1 = require("./use-thumbnail.js");
|
|
33
|
+
const is_node_js_1 = require("./utils/is-node.js");
|
|
34
|
+
const use_element_size_js_1 = require("./utils/use-element-size.js");
|
|
35
|
+
const reactVersion = react_1.default.version.split('.')[0];
|
|
36
|
+
if (reactVersion === '0') {
|
|
37
|
+
throw new Error(`Version ${reactVersion} of "react" is not supported by Remotion`);
|
|
38
|
+
}
|
|
39
|
+
const doesReactVersionSupportSuspense = parseInt(reactVersion, 10) >= 18;
|
|
40
|
+
const ThumbnailUI = ({ style, inputProps, errorFallback, renderLoading, className }, ref) => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const config = remotion_1.Internals.useUnsafeVideoConfig();
|
|
43
|
+
const video = remotion_1.Internals.useVideo();
|
|
44
|
+
const container = (0, react_1.useRef)(null);
|
|
45
|
+
const canvasSize = (0, use_element_size_js_1.useElementSize)(container, {
|
|
46
|
+
triggerOnWindowResize: false,
|
|
47
|
+
shouldApplyCssTransforms: false,
|
|
48
|
+
});
|
|
49
|
+
const layout = (0, react_1.useMemo)(() => {
|
|
50
|
+
if (!config || !canvasSize) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return (0, calculate_scale_js_1.calculateCanvasTransformation)({
|
|
54
|
+
canvasSize,
|
|
55
|
+
compositionHeight: config.height,
|
|
56
|
+
compositionWidth: config.width,
|
|
57
|
+
previewSize: 'auto',
|
|
58
|
+
});
|
|
59
|
+
}, [canvasSize, config]);
|
|
60
|
+
const scale = (_a = layout === null || layout === void 0 ? void 0 : layout.scale) !== null && _a !== void 0 ? _a : 1;
|
|
61
|
+
const thumbnail = (0, use_thumbnail_js_1.useThumbnail)();
|
|
62
|
+
(0, react_1.useImperativeHandle)(ref, () => {
|
|
63
|
+
const methods = {
|
|
64
|
+
getContainerNode: () => container.current,
|
|
65
|
+
getScale: () => scale,
|
|
66
|
+
};
|
|
67
|
+
return Object.assign(thumbnail.emitter, methods);
|
|
68
|
+
}, [scale, thumbnail.emitter]);
|
|
69
|
+
const VideoComponent = video ? video.component : null;
|
|
70
|
+
const outerStyle = (0, react_1.useMemo)(() => {
|
|
71
|
+
return (0, calculate_scale_js_1.calculateOuterStyle)({ config, style, canvasSize });
|
|
72
|
+
}, [canvasSize, config, style]);
|
|
73
|
+
const outer = (0, react_1.useMemo)(() => {
|
|
74
|
+
return (0, calculate_scale_js_1.calculateOuter)({ config, layout, scale });
|
|
75
|
+
}, [config, layout, scale]);
|
|
76
|
+
const containerStyle = (0, react_1.useMemo)(() => {
|
|
77
|
+
return (0, calculate_scale_js_1.calculateContainerStyle)({
|
|
78
|
+
canvasSize,
|
|
79
|
+
config,
|
|
80
|
+
layout,
|
|
81
|
+
scale,
|
|
82
|
+
});
|
|
83
|
+
}, [canvasSize, config, layout, scale]);
|
|
84
|
+
const onError = (0, react_1.useCallback)((error) => {
|
|
85
|
+
// Pay attention to `this context`
|
|
86
|
+
thumbnail.emitter.dispatchError(error);
|
|
87
|
+
}, [thumbnail.emitter]);
|
|
88
|
+
const rootRef = (0, react_1.useRef)(null);
|
|
89
|
+
(0, react_1.useImperativeHandle)(ref, () => rootRef.current, []);
|
|
90
|
+
const loadingMarkup = (0, react_1.useMemo)(() => {
|
|
91
|
+
return renderLoading
|
|
92
|
+
? renderLoading({
|
|
93
|
+
height: outerStyle.height,
|
|
94
|
+
width: outerStyle.width,
|
|
95
|
+
})
|
|
96
|
+
: null;
|
|
97
|
+
}, [outerStyle.height, outerStyle.width, renderLoading]);
|
|
98
|
+
if (!config) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
const content = ((0, jsx_runtime_1.jsx)("div", { style: outer, children: (0, jsx_runtime_1.jsx)("div", { style: containerStyle, className: player_css_classname_js_1.PLAYER_CSS_CLASSNAME, children: VideoComponent ? ((0, jsx_runtime_1.jsx)(error_boundary_js_1.ErrorBoundary, { onError: onError, errorFallback: errorFallback, children: (0, jsx_runtime_1.jsx)(VideoComponent, { ...((_b = video === null || video === void 0 ? void 0 : video.defaultProps) !== null && _b !== void 0 ? _b : {}), ...(inputProps !== null && inputProps !== void 0 ? inputProps : {}) }) })) : null }) }));
|
|
102
|
+
if (is_node_js_1.IS_NODE && !doesReactVersionSupportSuspense) {
|
|
103
|
+
return ((0, jsx_runtime_1.jsx)("div", { ref: container, style: outerStyle, className: className, children: content }));
|
|
104
|
+
}
|
|
105
|
+
return ((0, jsx_runtime_1.jsx)("div", { ref: container, style: outerStyle, className: className, children: (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: loadingMarkup, children: content }) }));
|
|
106
|
+
};
|
|
107
|
+
exports.default = (0, react_1.forwardRef)(ThumbnailUI);
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { VideoConfig } from 'remotion';
|
|
2
|
+
import type { PreviewSize } from './utils/preview-size.js';
|
|
3
|
+
import type { Size } from './utils/use-element-size.js';
|
|
4
|
+
export declare const calculateScale: ({ canvasSize, compositionHeight, compositionWidth, previewSize, }: {
|
|
5
|
+
previewSize: PreviewSize['size'];
|
|
6
|
+
compositionWidth: number;
|
|
7
|
+
compositionHeight: number;
|
|
8
|
+
canvasSize: Size;
|
|
9
|
+
}) => number;
|
|
10
|
+
type Layout = {
|
|
11
|
+
centerX: number;
|
|
12
|
+
centerY: number;
|
|
13
|
+
xCorrection: number;
|
|
14
|
+
yCorrection: number;
|
|
15
|
+
scale: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const calculateCanvasTransformation: ({ previewSize, compositionWidth, compositionHeight, canvasSize, }: {
|
|
18
|
+
previewSize: PreviewSize['size'];
|
|
19
|
+
compositionWidth: number;
|
|
20
|
+
compositionHeight: number;
|
|
21
|
+
canvasSize: Size;
|
|
22
|
+
}) => Layout;
|
|
23
|
+
export declare const calculateOuterStyle: ({ config, style, canvasSize, }: {
|
|
24
|
+
config: VideoConfig | null;
|
|
25
|
+
style: React.CSSProperties | undefined;
|
|
26
|
+
canvasSize: Size | null;
|
|
27
|
+
}) => React.CSSProperties;
|
|
28
|
+
export declare const calculateContainerStyle: ({ config, canvasSize, layout, scale, }: {
|
|
29
|
+
config: VideoConfig | null;
|
|
30
|
+
canvasSize: Size | null;
|
|
31
|
+
layout: Layout | null;
|
|
32
|
+
scale: number;
|
|
33
|
+
}) => React.CSSProperties;
|
|
34
|
+
export declare const calculateOuter: ({ layout, scale, config, }: {
|
|
35
|
+
layout: Layout | null;
|
|
36
|
+
scale: number;
|
|
37
|
+
config: VideoConfig | null;
|
|
38
|
+
}) => React.CSSProperties;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateOuter = exports.calculateContainerStyle = exports.calculateOuterStyle = exports.calculateCanvasTransformation = exports.calculateScale = void 0;
|
|
4
|
+
const calculate_player_size_js_1 = require("./utils/calculate-player-size.js");
|
|
5
|
+
const calculateScale = ({ canvasSize, compositionHeight, compositionWidth, previewSize, }) => {
|
|
6
|
+
const heightRatio = canvasSize.height / compositionHeight;
|
|
7
|
+
const widthRatio = canvasSize.width / compositionWidth;
|
|
8
|
+
const ratio = Math.min(heightRatio, widthRatio);
|
|
9
|
+
return previewSize === 'auto' ? ratio : Number(previewSize);
|
|
10
|
+
};
|
|
11
|
+
exports.calculateScale = calculateScale;
|
|
12
|
+
const calculateCanvasTransformation = ({ previewSize, compositionWidth, compositionHeight, canvasSize, }) => {
|
|
13
|
+
const scale = (0, exports.calculateScale)({
|
|
14
|
+
canvasSize,
|
|
15
|
+
compositionHeight,
|
|
16
|
+
compositionWidth,
|
|
17
|
+
previewSize,
|
|
18
|
+
});
|
|
19
|
+
const correction = 0 - (1 - scale) / 2;
|
|
20
|
+
const xCorrection = correction * compositionWidth;
|
|
21
|
+
const yCorrection = correction * compositionHeight;
|
|
22
|
+
const width = compositionWidth * scale;
|
|
23
|
+
const height = compositionHeight * scale;
|
|
24
|
+
const centerX = canvasSize.width / 2 - width / 2;
|
|
25
|
+
const centerY = canvasSize.height / 2 - height / 2;
|
|
26
|
+
return {
|
|
27
|
+
centerX,
|
|
28
|
+
centerY,
|
|
29
|
+
xCorrection,
|
|
30
|
+
yCorrection,
|
|
31
|
+
scale,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.calculateCanvasTransformation = calculateCanvasTransformation;
|
|
35
|
+
const calculateOuterStyle = ({ config, style, canvasSize, }) => {
|
|
36
|
+
if (!config) {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
position: 'relative',
|
|
41
|
+
overflow: 'hidden',
|
|
42
|
+
...(0, calculate_player_size_js_1.calculatePlayerSize)({
|
|
43
|
+
compositionHeight: config.height,
|
|
44
|
+
compositionWidth: config.width,
|
|
45
|
+
currentSize: canvasSize,
|
|
46
|
+
height: style === null || style === void 0 ? void 0 : style.height,
|
|
47
|
+
width: style === null || style === void 0 ? void 0 : style.width,
|
|
48
|
+
}),
|
|
49
|
+
...style,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.calculateOuterStyle = calculateOuterStyle;
|
|
53
|
+
const calculateContainerStyle = ({ config, canvasSize, layout, scale, }) => {
|
|
54
|
+
if (!config || !canvasSize || !layout) {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
position: 'absolute',
|
|
59
|
+
width: config.width,
|
|
60
|
+
height: config.height,
|
|
61
|
+
display: 'flex',
|
|
62
|
+
transform: `scale(${scale})`,
|
|
63
|
+
marginLeft: layout.xCorrection,
|
|
64
|
+
marginTop: layout.yCorrection,
|
|
65
|
+
overflow: 'hidden',
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exports.calculateContainerStyle = calculateContainerStyle;
|
|
69
|
+
const calculateOuter = ({ layout, scale, config, }) => {
|
|
70
|
+
if (!layout || !config) {
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
const { centerX, centerY } = layout;
|
|
74
|
+
return {
|
|
75
|
+
width: config.width * scale,
|
|
76
|
+
height: config.height * scale,
|
|
77
|
+
display: 'flex',
|
|
78
|
+
flexDirection: 'column',
|
|
79
|
+
position: 'absolute',
|
|
80
|
+
left: centerX,
|
|
81
|
+
top: centerY,
|
|
82
|
+
overflow: 'hidden',
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.calculateOuter = calculateOuter;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PlayerEmitter, ThumbnailEmitter } from './event-emitter.js';
|
|
3
|
+
export declare const PlayerEventEmitterContext: React.Context<PlayerEmitter | undefined>;
|
|
4
|
+
export declare const ThumbnailEmitterContext: React.Context<ThumbnailEmitter | undefined>;
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PlayerEventEmitterContext = void 0;
|
|
6
|
+
exports.ThumbnailEmitterContext = exports.PlayerEventEmitterContext = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
exports.PlayerEventEmitterContext = react_1.default.createContext(undefined);
|
|
9
|
+
exports.ThumbnailEmitterContext = react_1.default.createContext(undefined);
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
type SeekPayload = {
|
|
2
|
+
frame: number;
|
|
3
|
+
};
|
|
4
|
+
type ErrorPayload = {
|
|
5
|
+
error: Error;
|
|
6
|
+
};
|
|
7
|
+
type TimeUpdateEventPayload = {
|
|
8
|
+
frame: number;
|
|
9
|
+
};
|
|
10
|
+
type FrameUpdateEventPayload = {
|
|
11
|
+
frame: number;
|
|
12
|
+
};
|
|
13
|
+
type RateChangeEventPayload = {
|
|
14
|
+
playbackRate: number;
|
|
15
|
+
};
|
|
16
|
+
type ScaleChangeEventPayload = {
|
|
17
|
+
scale: number;
|
|
18
|
+
};
|
|
19
|
+
type VolumeChangeEventPayload = {
|
|
20
|
+
volume: number;
|
|
21
|
+
};
|
|
22
|
+
type FullscreenChangeEventPayload = {
|
|
23
|
+
isFullscreen: boolean;
|
|
24
|
+
};
|
|
25
|
+
type MuteChangeEventPayload = {
|
|
26
|
+
isMuted: boolean;
|
|
27
|
+
};
|
|
28
|
+
type PlayerStateEventMap = {
|
|
29
|
+
seeked: SeekPayload;
|
|
30
|
+
pause: undefined;
|
|
31
|
+
play: undefined;
|
|
32
|
+
ratechange: RateChangeEventPayload;
|
|
33
|
+
scalechange: ScaleChangeEventPayload;
|
|
34
|
+
volumechange: VolumeChangeEventPayload;
|
|
35
|
+
ended: undefined;
|
|
36
|
+
error: ErrorPayload;
|
|
37
|
+
timeupdate: TimeUpdateEventPayload;
|
|
38
|
+
frameupdate: FrameUpdateEventPayload;
|
|
39
|
+
fullscreenchange: FullscreenChangeEventPayload;
|
|
40
|
+
mutechange: MuteChangeEventPayload;
|
|
41
|
+
};
|
|
42
|
+
type ThumbnailStateEventMap = {
|
|
43
|
+
error: ErrorPayload;
|
|
44
|
+
};
|
|
45
|
+
export type PlayerEventTypes = keyof PlayerStateEventMap;
|
|
46
|
+
export type ThumbnailEventTypes = keyof ThumbnailStateEventMap;
|
|
47
|
+
export type CallbackListener<T extends PlayerEventTypes> = (data: {
|
|
48
|
+
detail: PlayerStateEventMap[T];
|
|
49
|
+
}) => void;
|
|
50
|
+
type PlayerListeners = {
|
|
51
|
+
[EventType in PlayerEventTypes]: CallbackListener<EventType>[];
|
|
52
|
+
};
|
|
53
|
+
type ThumbnailListeners = {
|
|
54
|
+
[EventType in ThumbnailEventTypes]: CallbackListener<EventType>[];
|
|
55
|
+
};
|
|
56
|
+
export declare class PlayerEmitter {
|
|
57
|
+
listeners: PlayerListeners;
|
|
58
|
+
addEventListener<Q extends PlayerEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
59
|
+
removeEventListener<Q extends PlayerEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
60
|
+
private dispatchEvent;
|
|
61
|
+
dispatchSeek(frame: number): void;
|
|
62
|
+
dispatchVolumeChange(volume: number): void;
|
|
63
|
+
dispatchPause(): void;
|
|
64
|
+
dispatchPlay(): void;
|
|
65
|
+
dispatchEnded(): void;
|
|
66
|
+
dispatchRateChange(playbackRate: number): void;
|
|
67
|
+
dispatchScaleChange(scale: number): void;
|
|
68
|
+
dispatchError(error: Error): void;
|
|
69
|
+
dispatchTimeUpdate(event: TimeUpdateEventPayload): void;
|
|
70
|
+
dispatchFrameUpdate(event: FrameUpdateEventPayload): void;
|
|
71
|
+
dispatchFullscreenChange(event: FullscreenChangeEventPayload): void;
|
|
72
|
+
dispatchMuteChange(event: MuteChangeEventPayload): void;
|
|
73
|
+
}
|
|
74
|
+
export declare class ThumbnailEmitter {
|
|
75
|
+
listeners: ThumbnailListeners;
|
|
76
|
+
addEventListener<Q extends ThumbnailEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
77
|
+
removeEventListener<Q extends ThumbnailEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
78
|
+
private dispatchEvent;
|
|
79
|
+
dispatchError(error: Error): void;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlayerEmitter = void 0;
|
|
3
|
+
exports.ThumbnailEmitter = exports.PlayerEmitter = void 0;
|
|
4
4
|
class PlayerEmitter {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.listeners = {
|
|
@@ -9,10 +9,13 @@ class PlayerEmitter {
|
|
|
9
9
|
pause: [],
|
|
10
10
|
play: [],
|
|
11
11
|
ratechange: [],
|
|
12
|
+
scalechange: [],
|
|
12
13
|
seeked: [],
|
|
13
14
|
timeupdate: [],
|
|
14
15
|
frameupdate: [],
|
|
15
16
|
fullscreenchange: [],
|
|
17
|
+
volumechange: [],
|
|
18
|
+
mutechange: [],
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
21
|
addEventListener(name, callback) {
|
|
@@ -31,6 +34,11 @@ class PlayerEmitter {
|
|
|
31
34
|
frame,
|
|
32
35
|
});
|
|
33
36
|
}
|
|
37
|
+
dispatchVolumeChange(volume) {
|
|
38
|
+
this.dispatchEvent('volumechange', {
|
|
39
|
+
volume,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
34
42
|
dispatchPause() {
|
|
35
43
|
this.dispatchEvent('pause', undefined);
|
|
36
44
|
}
|
|
@@ -40,11 +48,16 @@ class PlayerEmitter {
|
|
|
40
48
|
dispatchEnded() {
|
|
41
49
|
this.dispatchEvent('ended', undefined);
|
|
42
50
|
}
|
|
43
|
-
|
|
51
|
+
dispatchRateChange(playbackRate) {
|
|
44
52
|
this.dispatchEvent('ratechange', {
|
|
45
53
|
playbackRate,
|
|
46
54
|
});
|
|
47
55
|
}
|
|
56
|
+
dispatchScaleChange(scale) {
|
|
57
|
+
this.dispatchEvent('scalechange', {
|
|
58
|
+
scale,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
48
61
|
dispatchError(error) {
|
|
49
62
|
this.dispatchEvent('error', {
|
|
50
63
|
error,
|
|
@@ -56,8 +69,35 @@ class PlayerEmitter {
|
|
|
56
69
|
dispatchFrameUpdate(event) {
|
|
57
70
|
this.dispatchEvent('frameupdate', event);
|
|
58
71
|
}
|
|
59
|
-
|
|
72
|
+
dispatchFullscreenChange(event) {
|
|
60
73
|
this.dispatchEvent('fullscreenchange', event);
|
|
61
74
|
}
|
|
75
|
+
dispatchMuteChange(event) {
|
|
76
|
+
this.dispatchEvent('mutechange', event);
|
|
77
|
+
}
|
|
62
78
|
}
|
|
63
79
|
exports.PlayerEmitter = PlayerEmitter;
|
|
80
|
+
class ThumbnailEmitter {
|
|
81
|
+
constructor() {
|
|
82
|
+
this.listeners = {
|
|
83
|
+
error: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
addEventListener(name, callback) {
|
|
87
|
+
this.listeners[name].push(callback);
|
|
88
|
+
}
|
|
89
|
+
removeEventListener(name, callback) {
|
|
90
|
+
this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
|
|
91
|
+
}
|
|
92
|
+
dispatchEvent(dispatchName, context) {
|
|
93
|
+
this.listeners[dispatchName].forEach((callback) => {
|
|
94
|
+
callback({ detail: context });
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
dispatchError(error) {
|
|
98
|
+
this.dispatchEvent('error', {
|
|
99
|
+
error,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.ThumbnailEmitter = ThumbnailEmitter;
|
|
File without changes
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ export declare const fullscreenIconSize = 16;
|
|
|
4
4
|
export declare const PlayIcon: React.FC;
|
|
5
5
|
export declare const PauseIcon: React.FC;
|
|
6
6
|
export declare const FullscreenIcon: React.FC<{
|
|
7
|
-
|
|
7
|
+
isFullscreen: boolean;
|
|
8
8
|
}>;
|
|
9
9
|
export declare const VolumeOffIcon: React.FC;
|
|
10
10
|
export declare const VolumeOnIcon: React.FC;
|
|
@@ -15,12 +15,12 @@ const PauseIcon = () => {
|
|
|
15
15
|
return ((0, jsx_runtime_1.jsxs)("svg", { viewBox: "0 0 100 100", width: exports.ICON_SIZE, height: exports.ICON_SIZE, children: [(0, jsx_runtime_1.jsx)("rect", { x: "25", y: "20", width: "20", height: "60", fill: "#fff", ry: "5", rx: "5" }), (0, jsx_runtime_1.jsx)("rect", { x: "55", y: "20", width: "20", height: "60", fill: "#fff", ry: "5", rx: "5" })] }));
|
|
16
16
|
};
|
|
17
17
|
exports.PauseIcon = PauseIcon;
|
|
18
|
-
const FullscreenIcon = ({
|
|
18
|
+
const FullscreenIcon = ({ isFullscreen, }) => {
|
|
19
19
|
const strokeWidth = 6;
|
|
20
20
|
const viewSize = 32;
|
|
21
|
-
const out =
|
|
22
|
-
const middleInset =
|
|
23
|
-
const inset =
|
|
21
|
+
const out = isFullscreen ? 0 : strokeWidth / 2;
|
|
22
|
+
const middleInset = isFullscreen ? strokeWidth * 1.6 : strokeWidth / 2;
|
|
23
|
+
const inset = isFullscreen ? strokeWidth * 1.6 : strokeWidth * 2;
|
|
24
24
|
return ((0, jsx_runtime_1.jsxs)("svg", { viewBox: `0 0 ${viewSize} ${viewSize}`, height: exports.fullscreenIconSize, width: exports.fullscreenIconSize, children: [(0, jsx_runtime_1.jsx)("path", { d: `
|
|
25
25
|
M ${out} ${inset}
|
|
26
26
|
L ${middleInset} ${middleInset}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { CallbackListener,
|
|
3
|
-
import { PlayerEmitter } from './event-emitter';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export type {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export
|
|
2
|
+
import type { CallbackListener, PlayerEventTypes } from './event-emitter.js';
|
|
3
|
+
import { PlayerEmitter } from './event-emitter.js';
|
|
4
|
+
export { PlayerMethods, PlayerRef, ThumbnailMethods, ThumbnailRef, } from './player-methods.js';
|
|
5
|
+
export { Player, PlayerProps } from './Player.js';
|
|
6
|
+
export type { RenderFullscreenButton, RenderPlayPauseButton, } from './PlayerControls.js';
|
|
7
|
+
export type { ErrorFallback, RenderLoading, RenderPoster } from './PlayerUI.js';
|
|
8
|
+
export { Thumbnail } from './Thumbnail.js';
|
|
9
|
+
export { PreviewSize, Translation } from './utils/preview-size.js';
|
|
10
|
+
export { Size } from './utils/use-element-size.js';
|
|
11
|
+
export type { CallbackListener, PlayerEventTypes as EventTypes };
|
|
10
12
|
export declare const PlayerInternals: {
|
|
11
13
|
PlayerEventEmitterContext: import("react").Context<PlayerEmitter | undefined>;
|
|
12
14
|
PlayerEmitter: typeof PlayerEmitter;
|
|
@@ -35,12 +37,12 @@ export declare const PlayerInternals: {
|
|
|
35
37
|
useElementSize: (ref: import("react").RefObject<HTMLElement>, options: {
|
|
36
38
|
triggerOnWindowResize: boolean;
|
|
37
39
|
shouldApplyCssTransforms: boolean;
|
|
38
|
-
}) => import("./utils/use-element-size").Size | null;
|
|
40
|
+
}) => import("./utils/use-element-size.js").Size | null;
|
|
39
41
|
calculateCanvasTransformation: ({ previewSize, compositionWidth, compositionHeight, canvasSize, }: {
|
|
40
42
|
previewSize: number | "auto";
|
|
41
43
|
compositionWidth: number;
|
|
42
44
|
compositionHeight: number;
|
|
43
|
-
canvasSize: import("./utils/use-element-size").Size;
|
|
45
|
+
canvasSize: import("./utils/use-element-size.js").Size;
|
|
44
46
|
}) => {
|
|
45
47
|
centerX: number;
|
|
46
48
|
centerY: number;
|
|
@@ -54,6 +56,6 @@ export declare const PlayerInternals: {
|
|
|
54
56
|
previewSize: number | "auto";
|
|
55
57
|
compositionWidth: number;
|
|
56
58
|
compositionHeight: number;
|
|
57
|
-
canvasSize: import("./utils/use-element-size").Size;
|
|
59
|
+
canvasSize: import("./utils/use-element-size.js").Size;
|
|
58
60
|
}) => number;
|
|
59
61
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlayerInternals = exports.Thumbnail = exports.Player = void 0;
|
|
4
|
+
const calculate_scale_js_1 = require("./calculate-scale.js");
|
|
5
|
+
const emitter_context_js_1 = require("./emitter-context.js");
|
|
6
|
+
const event_emitter_js_1 = require("./event-emitter.js");
|
|
7
|
+
const use_hover_state_js_1 = require("./use-hover-state.js");
|
|
8
|
+
const use_playback_js_1 = require("./use-playback.js");
|
|
9
|
+
const use_player_js_1 = require("./use-player.js");
|
|
10
|
+
const use_element_size_js_1 = require("./utils/use-element-size.js");
|
|
11
|
+
var Player_js_1 = require("./Player.js");
|
|
12
|
+
Object.defineProperty(exports, "Player", { enumerable: true, get: function () { return Player_js_1.Player; } });
|
|
13
|
+
var Thumbnail_js_1 = require("./Thumbnail.js");
|
|
14
|
+
Object.defineProperty(exports, "Thumbnail", { enumerable: true, get: function () { return Thumbnail_js_1.Thumbnail; } });
|
|
15
|
+
exports.PlayerInternals = {
|
|
16
|
+
PlayerEventEmitterContext: emitter_context_js_1.PlayerEventEmitterContext,
|
|
17
|
+
PlayerEmitter: event_emitter_js_1.PlayerEmitter,
|
|
18
|
+
usePlayer: use_player_js_1.usePlayer,
|
|
19
|
+
usePlayback: use_playback_js_1.usePlayback,
|
|
20
|
+
useElementSize: use_element_size_js_1.useElementSize,
|
|
21
|
+
calculateCanvasTransformation: calculate_scale_js_1.calculateCanvasTransformation,
|
|
22
|
+
useHoverState: use_hover_state_js_1.useHoverState,
|
|
23
|
+
updateAllElementsSizes: use_element_size_js_1.updateAllElementsSizes,
|
|
24
|
+
calculateScale: calculate_scale_js_1.calculateScale,
|
|
25
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useIsBackgrounded = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const getIsBackgrounded = () => {
|
|
6
|
+
if (typeof document === 'undefined') {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return document.visibilityState === 'hidden';
|
|
10
|
+
};
|
|
11
|
+
const useIsBackgrounded = () => {
|
|
12
|
+
const isBackgrounded = (0, react_1.useRef)(getIsBackgrounded());
|
|
13
|
+
(0, react_1.useEffect)(() => {
|
|
14
|
+
const onVisibilityChange = () => {
|
|
15
|
+
isBackgrounded.current = getIsBackgrounded();
|
|
16
|
+
};
|
|
17
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
18
|
+
return () => {
|
|
19
|
+
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
return isBackgrounded;
|
|
23
|
+
};
|
|
24
|
+
exports.useIsBackgrounded = useIsBackgrounded;
|
|
File without changes
|
|
File without changes
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import type { SyntheticEvent } from 'react';
|
|
2
|
-
import type { PlayerEmitter } from './event-emitter';
|
|
3
|
-
export
|
|
2
|
+
import type { PlayerEmitter } from './event-emitter.js';
|
|
3
|
+
export type ThumbnailMethods = {
|
|
4
|
+
getContainerNode: () => HTMLDivElement | null;
|
|
5
|
+
getScale: () => number;
|
|
6
|
+
};
|
|
7
|
+
export type PlayerMethods = ThumbnailMethods & {
|
|
4
8
|
play: (e?: SyntheticEvent) => void;
|
|
5
9
|
pause: () => void;
|
|
6
10
|
toggle: (e?: SyntheticEvent) => void;
|
|
7
11
|
seekTo: (frame: number) => void;
|
|
8
|
-
getContainerNode: () => HTMLDivElement | null;
|
|
9
12
|
getCurrentFrame: () => number;
|
|
10
13
|
requestFullscreen: () => void;
|
|
11
14
|
exitFullscreen: () => void;
|
|
12
|
-
isFullscreen: () =>
|
|
15
|
+
isFullscreen: () => boolean;
|
|
13
16
|
setVolume: (num: number) => void;
|
|
14
17
|
getVolume: () => number;
|
|
15
18
|
isMuted: () => boolean;
|
|
16
19
|
isPlaying: () => boolean;
|
|
17
20
|
mute: () => void;
|
|
18
21
|
unmute: () => void;
|
|
19
|
-
getScale: () => number;
|
|
20
22
|
};
|
|
21
|
-
export
|
|
23
|
+
export type ThumbnailRef = PlayerEmitter & ThumbnailMethods;
|
|
24
|
+
export type PlayerRef = PlayerEmitter & PlayerMethods;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const use_player_js_1 = require("../use-player.js");
|
|
5
|
+
(0, vitest_1.test)('It should throw an error if not being used inside a RemotionRoot', () => {
|
|
6
|
+
(0, vitest_1.expect)(() => {
|
|
7
|
+
(0, use_player_js_1.usePlayer)();
|
|
8
|
+
}).toThrow();
|
|
9
|
+
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|