@webitch/short-player 0.1.2 → 0.1.3
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/app/layout.js +23 -0
- package/dist/app/layout.js.map +1 -0
- package/dist/app/page.js +19 -0
- package/dist/app/page.js.map +1 -0
- package/dist/component/index.d.ts +1 -1
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +64 -0
- package/dist/component/index.js.map +1 -0
- package/dist/entites/PlayBtn/ui/index.js +23 -0
- package/dist/entites/PlayBtn/ui/index.js.map +1 -0
- package/dist/entites/ProgressBar/index.js +6 -0
- package/dist/entites/ProgressBar/index.js.map +1 -0
- package/dist/entites/ProgressBar/lib/handlers.js +99 -0
- package/dist/entites/ProgressBar/lib/handlers.js.map +1 -0
- package/dist/entites/ProgressBar/ui/index.js +135 -0
- package/dist/entites/ProgressBar/ui/index.js.map +1 -0
- package/dist/entites/SettingsButtons/index.js +6 -0
- package/dist/entites/SettingsButtons/index.js.map +1 -0
- package/dist/entites/SettingsButtons/lib/handlers.js +46 -0
- package/dist/entites/SettingsButtons/lib/handlers.js.map +1 -0
- package/dist/entites/SettingsButtons/models/settings-buttons.interface.js +3 -0
- package/dist/entites/SettingsButtons/models/settings-buttons.interface.js.map +1 -0
- package/dist/entites/SettingsButtons/ui/index.js +60 -0
- package/dist/entites/SettingsButtons/ui/index.js.map +1 -0
- package/dist/entites/ShortDescription/ui/index.js +15 -0
- package/dist/entites/ShortDescription/ui/index.js.map +1 -0
- package/dist/entites/ShortVideoBtns/ui/index.js +16 -0
- package/dist/entites/ShortVideoBtns/ui/index.js.map +1 -0
- package/dist/entites/SoundBtn/lib/handlers.js +61 -0
- package/dist/entites/SoundBtn/lib/handlers.js.map +1 -0
- package/dist/entites/SoundBtn/ui/index.js +94 -0
- package/dist/entites/SoundBtn/ui/index.js.map +1 -0
- package/dist/entites/progress-bar/index.js +6 -0
- package/dist/entites/progress-bar/index.js.map +1 -0
- package/dist/entites/progress-bar/lib/handlers.js +109 -0
- package/dist/entites/progress-bar/lib/handlers.js.map +1 -0
- package/dist/entites/progress-bar/ui/progress-bar.js +125 -0
- package/dist/entites/progress-bar/ui/progress-bar.js.map +1 -0
- package/dist/features/player-tools/lib/handlers.js +14 -0
- package/dist/features/player-tools/lib/handlers.js.map +1 -0
- package/dist/features/player-tools/model/player-tools.interface.js +3 -0
- package/dist/features/player-tools/model/player-tools.interface.js.map +1 -0
- package/dist/features/player-tools/ui/player-tools.js +23 -0
- package/dist/features/player-tools/ui/player-tools.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/constants/svgs.js +22 -0
- package/dist/shared/constants/svgs.js.map +1 -0
- package/dist/shared/constants/themes.js +9 -0
- package/dist/shared/constants/themes.js.map +1 -0
- package/dist/shared/hooks/getDeviceIsMobile.d.ts +1 -1
- package/dist/shared/hooks/getDeviceIsMobile.d.ts.map +1 -1
- package/dist/shared/hooks/getDeviceIsMobile.js +14 -0
- package/dist/shared/hooks/getDeviceIsMobile.js.map +1 -0
- package/dist/shared/providers/themeProvider.js +56 -0
- package/dist/shared/providers/themeProvider.js.map +1 -0
- package/dist/shared/ui/Svg/index.js +49 -0
- package/dist/shared/ui/Svg/index.js.map +1 -0
- package/dist/shared/ui/index.js +6 -0
- package/dist/shared/ui/index.js.map +1 -0
- package/dist/shared/utils/formatViews.js +14 -0
- package/dist/shared/utils/formatViews.js.map +1 -0
- package/dist/shared/utils/getHHSStime.d.ts +1 -1
- package/dist/shared/utils/getHHSStime.d.ts.map +1 -1
- package/dist/shared/utils/getHHSStime.js +36 -0
- package/dist/shared/utils/getHHSStime.js.map +1 -0
- package/dist/widgets/video-tag/lib/handlers.js +26 -0
- package/dist/widgets/video-tag/lib/handlers.js.map +1 -0
- package/dist/widgets/video-tag/model/video-tag.interface.js +3 -0
- package/dist/widgets/video-tag/model/video-tag.interface.js.map +1 -0
- package/dist/widgets/video-tag/ui/video-tag.js +62 -0
- package/dist/widgets/video-tag/ui/video-tag.js.map +1 -0
- package/package.json +6 -4
- package/dist/index.ts +0 -1
- package/dist/tsconfig.types.tsbuildinfo +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ShortVideoBtns = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
10
|
+
const ui_1 = require("../../../shared/ui");
|
|
11
|
+
const formatViews_1 = require("../../../shared/utils/formatViews");
|
|
12
|
+
const ShortVideoBtns = ({ channelId, videoId, dislikes, likes, commentsCount = 875 }) => {
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.itemWrapper, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_svg, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'like', size: 'big' }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_text, children: (0, formatViews_1.formatViews)(+likes) })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_svg, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'dislike', size: 'big' }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_text, children: (0, formatViews_1.formatViews)(+dislikes) })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_svg, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'comments', size: 'big' }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_text, children: commentsCount })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_svg, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'share', size: 'big' }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.shortVideoBtnsContainer_item_text, children: "\u043F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F" })] })] }) }));
|
|
14
|
+
};
|
|
15
|
+
exports.ShortVideoBtns = ShortVideoBtns;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/ShortVideoBtns/ui/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;AAIZ,8EAAyC;AACzC,2CAAwC;AACxC,mEAA+D;AAUxD,MAAM,cAAc,GAA8B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,GAAG,EAAE,EAAE,EAAE;IACtH,OAAO,CACH,gCAAK,SAAS,EAAE,4BAAM,CAAC,uBAAuB,YAC1C,iCAAK,SAAS,EAAE,4BAAM,CAAC,WAAW,aAC9B,iCAAK,SAAS,EAAE,4BAAM,CAAC,4BAA4B,aAC/C,gCAAK,SAAS,EAAE,4BAAM,CAAC,gCAAgC,YACnD,uBAAC,QAAG,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,GAAE,GAC3B,EACN,gCAAK,SAAS,EAAE,4BAAM,CAAC,iCAAiC,YAAG,IAAA,yBAAW,EAAC,CAAC,KAAK,CAAC,GAAO,IACnF,EACN,iCAAK,SAAS,EAAE,4BAAM,CAAC,4BAA4B,aAC/C,gCAAK,SAAS,EAAE,4BAAM,CAAC,gCAAgC,YACnD,uBAAC,QAAG,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,KAAK,GAAE,GAC9B,EACN,gCAAK,SAAS,EAAE,4BAAM,CAAC,iCAAiC,YAAG,IAAA,yBAAW,EAAC,CAAC,QAAQ,CAAC,GAAO,IACtF,EAEN,iCAAK,SAAS,EAAE,4BAAM,CAAC,4BAA4B,aAC/C,gCAAK,SAAS,EAAE,4BAAM,CAAC,gCAAgC,YACnD,uBAAC,QAAG,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,KAAK,GAAE,GAC/B,EACN,gCAAK,SAAS,EAAE,4BAAM,CAAC,iCAAiC,YAAG,aAAa,GAAO,IAC7E,EAEN,iCAAK,SAAS,EAAE,4BAAM,CAAC,4BAA4B,aAC/C,gCAAK,SAAS,EAAE,4BAAM,CAAC,gCAAgC,YACnD,uBAAC,QAAG,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,GAAE,GAC5B,EAEN,gCAAK,SAAS,EAAE,4BAAM,CAAC,iCAAiC,6EAAkB,IACxE,IACJ,GACJ,CACT,CAAA;AACL,CAAC,CAAA;AAlCY,QAAA,cAAc,kBAkC1B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleMouseUpSoundBtn = exports.handleMouseDownSoundBtn = exports.handleMouseClickSoundBtn = exports.handleMuteOnClick = void 0;
|
|
4
|
+
// Клик на иконку для мьюта/анмьюта
|
|
5
|
+
const handleMuteOnClick = (e, videoRef, setCurrentVolume) => {
|
|
6
|
+
e.stopPropagation();
|
|
7
|
+
if (!videoRef.current)
|
|
8
|
+
return;
|
|
9
|
+
if (videoRef.current.muted || videoRef.current.volume === 0) {
|
|
10
|
+
videoRef.current.muted = false;
|
|
11
|
+
videoRef.current.volume = 0.5;
|
|
12
|
+
setCurrentVolume(50);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
videoRef.current.muted = true;
|
|
16
|
+
setCurrentVolume(0);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.handleMuteOnClick = handleMuteOnClick;
|
|
20
|
+
// Клик на звуковую панель для установки громкости
|
|
21
|
+
const handleMouseClickSoundBtn = (e, videoRef, setCurrentVolume) => {
|
|
22
|
+
e.stopPropagation();
|
|
23
|
+
const soundVolumeBackgroundBar = document.getElementById('soundVolumeBackground');
|
|
24
|
+
if (!soundVolumeBackgroundBar || !videoRef.current)
|
|
25
|
+
return;
|
|
26
|
+
const positionOfSoundBar = soundVolumeBackgroundBar.getBoundingClientRect();
|
|
27
|
+
const positionOfNewVolume = (e.clientX - positionOfSoundBar.left) / positionOfSoundBar.width;
|
|
28
|
+
const newVolume = Math.max(0, Math.min(1, positionOfNewVolume));
|
|
29
|
+
console.log(newVolume);
|
|
30
|
+
videoRef.current.volume = newVolume;
|
|
31
|
+
setCurrentVolume(newVolume * 100);
|
|
32
|
+
};
|
|
33
|
+
exports.handleMouseClickSoundBtn = handleMouseClickSoundBtn;
|
|
34
|
+
// Начало перетаскивания
|
|
35
|
+
const handleMouseDownSoundBtn = (e, setIsDraggingVolume) => {
|
|
36
|
+
setIsDraggingVolume(true);
|
|
37
|
+
};
|
|
38
|
+
exports.handleMouseDownSoundBtn = handleMouseDownSoundBtn;
|
|
39
|
+
// Конец перетаскивания
|
|
40
|
+
const handleMouseUpSoundBtn = (e, setIsDraggingVolume) => {
|
|
41
|
+
e.stopPropagation();
|
|
42
|
+
setIsDraggingVolume(false);
|
|
43
|
+
};
|
|
44
|
+
exports.handleMouseUpSoundBtn = handleMouseUpSoundBtn;
|
|
45
|
+
// Перемещение при перетаскивании
|
|
46
|
+
// export const handleMouseMoveSoundBtn = (
|
|
47
|
+
// e: React.MouseEvent,
|
|
48
|
+
// isDraggingVolume: boolean,
|
|
49
|
+
// setCurrentVolume: (volume: number) => void,
|
|
50
|
+
// videoRef: RefObject<HTMLVideoElement | null>
|
|
51
|
+
// ) => {
|
|
52
|
+
// if (!isDraggingVolume || !videoRef.current) return
|
|
53
|
+
// const soundVolumeBackgroundBar = document.getElementById('soundVolumeBackground')
|
|
54
|
+
// if (!soundVolumeBackgroundBar) return
|
|
55
|
+
// const positionOfSoundBar = soundVolumeBackgroundBar.getBoundingClientRect()
|
|
56
|
+
// const newVolume = (e.clientX - positionOfSoundBar.left) / positionOfSoundBar.width
|
|
57
|
+
// const clampedVolume = Math.max(0, Math.min(1, newVolume))
|
|
58
|
+
// videoRef.current.volume = clampedVolume
|
|
59
|
+
// setCurrentVolume(clampedVolume * 100)
|
|
60
|
+
// }
|
|
61
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/entites/SoundBtn/lib/handlers.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;AAC5B,MAAM,iBAAiB,GAAG,CAC7B,CAAmB,EACnB,QAA4C,EAC5C,gBAA0C,EAC5C,EAAE;IACA,CAAC,CAAC,eAAe,EAAE,CAAA;IACnB,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAM;IAE7B,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QAC9B,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;QAC7B,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;SAAM,CAAC;QACJ,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QAC7B,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;AACL,CAAC,CAAA;AAhBY,QAAA,iBAAiB,qBAgB7B;AAED,kDAAkD;AAC3C,MAAM,wBAAwB,GAAG,CACpC,CAAmB,EACnB,QAA4C,EAC5C,gBAA0C,EAC5C,EAAE;IACA,CAAC,CAAC,eAAe,EAAE,CAAA;IACnB,MAAM,wBAAwB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAA;IAEjF,IAAI,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAM;IAE1D,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,CAAA;IAC3E,MAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAA;IAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEvB,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAA;IACnC,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA;AACrC,CAAC,CAAA;AAjBY,QAAA,wBAAwB,4BAiBpC;AAED,wBAAwB;AACjB,MAAM,uBAAuB,GAAG,CACnC,CAAmB,EACnB,mBAAkD,EACpD,EAAE;IACA,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAA;AALY,QAAA,uBAAuB,2BAKnC;AAED,uBAAuB;AAChB,MAAM,qBAAqB,GAAG,CACjC,CAAmB,EACnB,mBAAkD,EACpD,EAAE;IACA,CAAC,CAAC,eAAe,EAAE,CAAA;IACnB,mBAAmB,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AANY,QAAA,qBAAqB,yBAMjC;AAED,iCAAiC;AACjC,2CAA2C;AAC3C,4BAA4B;AAC5B,kCAAkC;AAClC,kDAAkD;AAClD,mDAAmD;AACnD,SAAS;AACT,yDAAyD;AAEzD,wFAAwF;AACxF,4CAA4C;AAE5C,kFAAkF;AAClF,yFAAyF;AACzF,gEAAgE;AAEhE,8CAA8C;AAC9C,4CAA4C;AAC5C,IAAI"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SoundBtn = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const handlers_1 = require("../lib/handlers");
|
|
11
|
+
const ui_1 = require("../../../shared/ui");
|
|
12
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
13
|
+
const SoundBtn = ({ videoRef }) => {
|
|
14
|
+
const [isVisibleSoundBar, setIsVisibleSoundBar] = (0, react_1.useState)(false);
|
|
15
|
+
const [currentVolume, setCurrentVolume] = (0, react_1.useState)(50);
|
|
16
|
+
const [isDraggingVolume, setIsDraggingVolume] = (0, react_1.useState)(false);
|
|
17
|
+
// Глобальные обработчики для перетаскивания
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
const handleGlobalMouseMove = (e) => {
|
|
20
|
+
if (isDraggingVolume && videoRef.current) {
|
|
21
|
+
const soundVolumeBackgroundBar = document.getElementById('soundVolumeBackground');
|
|
22
|
+
if (!soundVolumeBackgroundBar)
|
|
23
|
+
return;
|
|
24
|
+
const positionOfSoundBar = soundVolumeBackgroundBar.getBoundingClientRect();
|
|
25
|
+
let newCurrentVolume = ((e.clientX - positionOfSoundBar.left) / positionOfSoundBar.width) * 100;
|
|
26
|
+
newCurrentVolume = Math.max(0, Math.min(100, newCurrentVolume));
|
|
27
|
+
setCurrentVolume(newCurrentVolume);
|
|
28
|
+
videoRef.current.volume = newCurrentVolume / 100;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const handleGlobalMouseUp = (e) => {
|
|
32
|
+
e.stopPropagation();
|
|
33
|
+
// Если был drag (мышь двигалась), то не даем событию всплывать
|
|
34
|
+
if (isDraggingVolume) {
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
e.stopImmediatePropagation();
|
|
37
|
+
// Отменяем стандартное поведение и всплытие
|
|
38
|
+
if (e.preventDefault) {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
}
|
|
41
|
+
setIsDraggingVolume(false);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
window.addEventListener('mousemove', handleGlobalMouseMove);
|
|
45
|
+
window.addEventListener('mouseup', handleGlobalMouseUp, true); // capture phase
|
|
46
|
+
return () => {
|
|
47
|
+
window.removeEventListener('mousemove', handleGlobalMouseMove);
|
|
48
|
+
window.removeEventListener('mouseup', handleGlobalMouseUp, true);
|
|
49
|
+
};
|
|
50
|
+
}, [isDraggingVolume, videoRef]);
|
|
51
|
+
// Предотвращаем click на родителе после drag
|
|
52
|
+
(0, react_1.useEffect)(() => {
|
|
53
|
+
const preventParentClick = (e) => {
|
|
54
|
+
if (isDraggingVolume) {
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Ловим click на window до того, как он дойдет до родителя
|
|
60
|
+
window.addEventListener('click', preventParentClick, true);
|
|
61
|
+
return () => {
|
|
62
|
+
window.removeEventListener('click', preventParentClick, true);
|
|
63
|
+
};
|
|
64
|
+
}, [isDraggingVolume]);
|
|
65
|
+
if (!videoRef.current)
|
|
66
|
+
return null;
|
|
67
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.soundAndTimeContainer, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.soundContainer, onMouseEnter: () => setIsVisibleSoundBar(true), onMouseLeave: () => {
|
|
68
|
+
if (!isDraggingVolume) {
|
|
69
|
+
setIsVisibleSoundBar(false);
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
// Предотвращаем всплытие кликов от всего контейнера звука
|
|
73
|
+
onClick: (e) => e.stopPropagation(), onMouseUp: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.soundBtnWrapper, children: (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.soundBtn, onClick: (e) => {
|
|
74
|
+
e.stopPropagation();
|
|
75
|
+
(0, handlers_1.handleMuteOnClick)(e, videoRef, setCurrentVolume);
|
|
76
|
+
}, children: currentVolume ? (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'soundOn' }) : (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'soundOff' }) }) }), (0, jsx_runtime_1.jsx)("div", { id: 'soundVolumeBackground', className: styles_module_scss_1.default.soundVolumeBackground, onClick: (e) => {
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
(0, handlers_1.handleMouseClickSoundBtn)(e, videoRef, setCurrentVolume);
|
|
79
|
+
}, onMouseDown: (e) => {
|
|
80
|
+
e.stopPropagation();
|
|
81
|
+
(0, handlers_1.handleMouseDownSoundBtn)(e, setIsDraggingVolume);
|
|
82
|
+
}, onMouseUp: (e) => {
|
|
83
|
+
e.stopPropagation();
|
|
84
|
+
(0, handlers_1.handleMouseUpSoundBtn)(e, setIsDraggingVolume);
|
|
85
|
+
}, children: (0, jsx_runtime_1.jsx)("div", { id: 'filledSoundBar', className: styles_module_scss_1.default.soundVolumeFilled, style: { width: `${currentVolume}%` }, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.pointer, onMouseDown: (e) => {
|
|
86
|
+
e.stopPropagation();
|
|
87
|
+
(0, handlers_1.handleMouseDownSoundBtn)(e, setIsDraggingVolume);
|
|
88
|
+
}, onMouseUp: (e) => {
|
|
89
|
+
e.stopPropagation();
|
|
90
|
+
(0, handlers_1.handleMouseUpSoundBtn)(e, setIsDraggingVolume);
|
|
91
|
+
} }) }) })] }) }));
|
|
92
|
+
};
|
|
93
|
+
exports.SoundBtn = SoundBtn;
|
|
94
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/SoundBtn/ui/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProgressBar = void 0;
|
|
4
|
+
var progress_bar_1 = require("./ui/progress-bar");
|
|
5
|
+
Object.defineProperty(exports, "ProgressBar", { enumerable: true, get: function () { return progress_bar_1.ProgressBar; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entites/progress-bar/index.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAAtC,2GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProgressBarFragments = exports.handleMouseDown = exports.handleClick = exports.handleMouseMove = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const styles_module_scss_1 = __importDefault(require("../ui/styles.module.scss"));
|
|
9
|
+
// Упрощенные хендлеры для мыши
|
|
10
|
+
const handleMouseMove = (e, isDragging, duration, progressContainerRef, setHoverTime) => {
|
|
11
|
+
if (!isDragging && progressContainerRef.current && duration) {
|
|
12
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
13
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
14
|
+
const newTime = (clickPosition / rect.width) * duration;
|
|
15
|
+
setHoverTime(newTime);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.handleMouseMove = handleMouseMove;
|
|
19
|
+
const handleClick = (e, isDragging, duration, progressContainerRef, videoRef, setCurrentVideoTime) => {
|
|
20
|
+
if (!isDragging && progressContainerRef.current && duration) {
|
|
21
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
22
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
23
|
+
const newTime = (clickPosition / rect.width) * duration;
|
|
24
|
+
videoRef.current.currentTime = newTime;
|
|
25
|
+
setCurrentVideoTime(newTime);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.handleClick = handleClick;
|
|
29
|
+
const handleMouseDown = (e, setIsDragging) => {
|
|
30
|
+
console.log('handleMouseDown22222');
|
|
31
|
+
setIsDragging(true);
|
|
32
|
+
};
|
|
33
|
+
exports.handleMouseDown = handleMouseDown;
|
|
34
|
+
const getProgressBarFragments = ({ duration, fragments, bufferedFragments, currentVideoTime, }) => {
|
|
35
|
+
const elements = [];
|
|
36
|
+
// Общая логика прогресса и буфера
|
|
37
|
+
const getGradientStops = (start, end, progress, buffers) => {
|
|
38
|
+
const gradientStops = [];
|
|
39
|
+
const progressPercent = progress >= end
|
|
40
|
+
? 100
|
|
41
|
+
: progress > start
|
|
42
|
+
? ((progress - start) / (end - start)) * 100
|
|
43
|
+
: 0;
|
|
44
|
+
if (progressPercent > 0) {
|
|
45
|
+
gradientStops.push("#1e90ff 0%");
|
|
46
|
+
gradientStops.push(`#1e90ff ${progressPercent}%`);
|
|
47
|
+
gradientStops.push(`#444 ${progressPercent}%`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
gradientStops.push("#444 0%");
|
|
51
|
+
}
|
|
52
|
+
const bufferStops = [];
|
|
53
|
+
buffers.forEach(buffered => {
|
|
54
|
+
const overlapStart = Math.max(start, buffered.start);
|
|
55
|
+
const overlapEnd = Math.min(end, buffered.end);
|
|
56
|
+
if (overlapStart < overlapEnd) {
|
|
57
|
+
const bufferStartPercent = ((overlapStart - start) / (end - start)) * 100;
|
|
58
|
+
const bufferEndPercent = ((overlapEnd - start) / (end - start)) * 100;
|
|
59
|
+
if (bufferEndPercent > progressPercent) {
|
|
60
|
+
bufferStops.push({
|
|
61
|
+
start: Math.max(bufferStartPercent, progressPercent),
|
|
62
|
+
end: bufferEndPercent,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
bufferStops.forEach(buffer => {
|
|
68
|
+
gradientStops.push(`#666 ${buffer.start}%`);
|
|
69
|
+
gradientStops.push(`#666 ${buffer.end}%`);
|
|
70
|
+
});
|
|
71
|
+
const lastValue = gradientStops.length > 0
|
|
72
|
+
? parseFloat(gradientStops[gradientStops.length - 1].split(" ")[1].replace("%", ""))
|
|
73
|
+
: 0;
|
|
74
|
+
if (lastValue < 100) {
|
|
75
|
+
gradientStops.push(`#444 ${Math.max(lastValue, progressPercent)}%`);
|
|
76
|
+
gradientStops.push(`#444 100%`);
|
|
77
|
+
}
|
|
78
|
+
return gradientStops;
|
|
79
|
+
};
|
|
80
|
+
// Если нет фрагментов — одна сплошная полоса
|
|
81
|
+
if (!duration || !fragments || fragments.length === 0) {
|
|
82
|
+
const gradientStops = getGradientStops(0, duration || 100, currentVideoTime, bufferedFragments);
|
|
83
|
+
const gradient = `linear-gradient(to right, ${gradientStops.join(", ")})`;
|
|
84
|
+
elements.push((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.fragment, style: {
|
|
85
|
+
left: "0%",
|
|
86
|
+
width: "100%",
|
|
87
|
+
background: gradient,
|
|
88
|
+
pointerEvents: 'none'
|
|
89
|
+
} }, "single-fragment"));
|
|
90
|
+
return elements;
|
|
91
|
+
}
|
|
92
|
+
// Если фрагменты есть — рисуем каждый фрагмент
|
|
93
|
+
fragments.forEach((fragment, index) => {
|
|
94
|
+
const fragmentStartPercent = (fragment.start / duration) * 100;
|
|
95
|
+
const fragmentEndPercent = (fragment.end / duration) * 100;
|
|
96
|
+
const fragmentWidthPercent = fragmentEndPercent - fragmentStartPercent;
|
|
97
|
+
const gradientStops = getGradientStops(fragment.start, fragment.end, currentVideoTime, bufferedFragments);
|
|
98
|
+
const gradient = `linear-gradient(to right, ${gradientStops.join(", ")})`;
|
|
99
|
+
elements.push((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.fragment, style: {
|
|
100
|
+
left: `${fragmentStartPercent}%`,
|
|
101
|
+
width: `${fragmentWidthPercent}%`,
|
|
102
|
+
background: gradient,
|
|
103
|
+
pointerEvents: 'none'
|
|
104
|
+
} }, index));
|
|
105
|
+
});
|
|
106
|
+
return elements;
|
|
107
|
+
};
|
|
108
|
+
exports.getProgressBarFragments = getProgressBarFragments;
|
|
109
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/entites/progress-bar/lib/handlers.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ProgressBar = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const component_1 = require("../../../component");
|
|
11
|
+
const getHHSStime_1 = require("../../../shared/utils/getHHSStime");
|
|
12
|
+
const handlers_1 = require("../lib/handlers");
|
|
13
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
14
|
+
const ProgressBar = ({ duration, videoRef, fragments, isLiveStream }) => {
|
|
15
|
+
const [hoverTime, setHoverTime] = (0, react_1.useState)(0);
|
|
16
|
+
const [isDragging, setIsDragging] = (0, react_1.useState)(false);
|
|
17
|
+
const [bufferedFragments, setBufferedFragments] = (0, react_1.useState)([]);
|
|
18
|
+
const [currentVideoTime, setCurrentVideoTime] = (0, react_1.useState)(0); // Локальное состояние для времени
|
|
19
|
+
const progressContainerRef = (0, react_1.useRef)(null);
|
|
20
|
+
// const isMovingRef = useRef<HTMLDivElement>(null);
|
|
21
|
+
const animationFrameRef = (0, react_1.useRef)(0); // Ref для requestAnimationFrame
|
|
22
|
+
const context = (0, component_1.usePlayerContext)();
|
|
23
|
+
// Оптимизированный таймер для обновления времени
|
|
24
|
+
(0, react_1.useEffect)(() => {
|
|
25
|
+
const video = videoRef.current;
|
|
26
|
+
if (!video || isDragging)
|
|
27
|
+
return;
|
|
28
|
+
const updateTime = () => {
|
|
29
|
+
setCurrentVideoTime(video.currentTime);
|
|
30
|
+
animationFrameRef.current = requestAnimationFrame(updateTime);
|
|
31
|
+
};
|
|
32
|
+
// Запускаем обновление через requestAnimationFrame для плавности
|
|
33
|
+
animationFrameRef.current = requestAnimationFrame(updateTime);
|
|
34
|
+
return () => {
|
|
35
|
+
if (animationFrameRef.current) {
|
|
36
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, [videoRef, duration, isDragging]);
|
|
40
|
+
// Оптимизированный хендлер для перетаскивания
|
|
41
|
+
(0, react_1.useEffect)(() => {
|
|
42
|
+
if (!isDragging)
|
|
43
|
+
return;
|
|
44
|
+
const handleMouseMoveWrapper = (e) => {
|
|
45
|
+
if (!progressContainerRef.current || !duration)
|
|
46
|
+
return;
|
|
47
|
+
// Ставим видео на паузу при начале перетаскивания
|
|
48
|
+
context.setIsPaused(true);
|
|
49
|
+
// Используем requestAnimationFrame для плавного обновления
|
|
50
|
+
requestAnimationFrame(() => {
|
|
51
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
52
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
53
|
+
const clickPercentage = (clickPosition / rect.width);
|
|
54
|
+
const newTime = clickPercentage * duration;
|
|
55
|
+
// Обновляем локальное состояние
|
|
56
|
+
setCurrentVideoTime(newTime);
|
|
57
|
+
videoRef.current.currentTime = newTime;
|
|
58
|
+
setHoverTime(newTime);
|
|
59
|
+
const timeHoverPosition = document.getElementById('timeHover');
|
|
60
|
+
if (timeHoverPosition) {
|
|
61
|
+
timeHoverPosition.style.left = `${clickPosition}px`;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const handleMouseUpWrapper = (e) => {
|
|
66
|
+
if (!progressContainerRef.current || !videoRef.current || !duration)
|
|
67
|
+
return;
|
|
68
|
+
// const rect = progressContainerRef.current.getBoundingClientRect();
|
|
69
|
+
// const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
70
|
+
// const clickPercentage = (clickPosition / rect.width);
|
|
71
|
+
// const newTime = clickPercentage * duration;
|
|
72
|
+
// Финальное обновление
|
|
73
|
+
// videoRef.current.currentTime = newTime;
|
|
74
|
+
// setCurrentVideoTime(newTime);
|
|
75
|
+
setHoverTime(0);
|
|
76
|
+
setIsDragging(false);
|
|
77
|
+
// Восстанавливаем таймер обновления
|
|
78
|
+
};
|
|
79
|
+
window.addEventListener('mousemove', handleMouseMoveWrapper);
|
|
80
|
+
window.addEventListener('mouseup', handleMouseUpWrapper, true);
|
|
81
|
+
return () => {
|
|
82
|
+
window.removeEventListener('mousemove', handleMouseMoveWrapper);
|
|
83
|
+
window.removeEventListener('mouseup', handleMouseUpWrapper, true);
|
|
84
|
+
};
|
|
85
|
+
}, [isDragging, duration, videoRef, context]);
|
|
86
|
+
// Обновляем буфер
|
|
87
|
+
(0, react_1.useEffect)(() => {
|
|
88
|
+
if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current))
|
|
89
|
+
return;
|
|
90
|
+
const videoElement = videoRef.current;
|
|
91
|
+
const updateBufferedRanges = () => {
|
|
92
|
+
const fragments = [];
|
|
93
|
+
for (let index = 0; index < videoElement.buffered.length; index++) {
|
|
94
|
+
fragments.push({
|
|
95
|
+
start: videoElement.buffered.start(index),
|
|
96
|
+
end: videoElement.buffered.end(index)
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
setBufferedFragments(fragments);
|
|
100
|
+
};
|
|
101
|
+
videoElement.addEventListener('progress', updateBufferedRanges);
|
|
102
|
+
videoElement.addEventListener('loadeddata', updateBufferedRanges);
|
|
103
|
+
return () => {
|
|
104
|
+
videoElement.removeEventListener('progress', updateBufferedRanges);
|
|
105
|
+
videoElement.removeEventListener('loadeddata', updateBufferedRanges);
|
|
106
|
+
};
|
|
107
|
+
}, [videoRef]);
|
|
108
|
+
if (isLiveStream || !duration)
|
|
109
|
+
return (0, jsx_runtime_1.jsx)("div", { children: "\u044D\u0442\u043E \u0441\u0442\u0440\u0438\u043C, \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0435\u043B\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441 \u0431\u0430\u0440" });
|
|
110
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.progressBarContainer, children: [(0, jsx_runtime_1.jsx)("div", { id: 'timeHover', className: hoverTime ? styles_module_scss_1.default.progressTimeHover : styles_module_scss_1.default.progressTimeHover_hidden, style: {
|
|
111
|
+
left: `${(hoverTime / duration) * 100}%`,
|
|
112
|
+
display: hoverTime ? 'block' : 'none'
|
|
113
|
+
}, children: (0, getHHSStime_1.getHHSStime)(Math.trunc(hoverTime)) }), (0, jsx_runtime_1.jsx)("div", { id: "progressBar", ref: progressContainerRef, className: styles_module_scss_1.default.progressContainer, onClick: (e) => (0, handlers_1.handleClick)(e, isDragging, duration, progressContainerRef, videoRef, setCurrentVideoTime), onMouseDown: (e) => {
|
|
114
|
+
e.stopPropagation();
|
|
115
|
+
(0, handlers_1.handleMouseDown)(e, setIsDragging);
|
|
116
|
+
},
|
|
117
|
+
// onMouseLeave={() => {
|
|
118
|
+
// if (!isDragging) {
|
|
119
|
+
// setHoverTime(0);
|
|
120
|
+
// }
|
|
121
|
+
// }}
|
|
122
|
+
onMouseMove: (e) => (0, handlers_1.handleMouseMove)(e, isDragging, duration, progressContainerRef, setHoverTime), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.fragmentsContainer, children: (0, handlers_1.getProgressBarFragments)({ duration, fragments, bufferedFragments, currentVideoTime }) }) })] }));
|
|
123
|
+
};
|
|
124
|
+
exports.ProgressBar = ProgressBar;
|
|
125
|
+
//# sourceMappingURL=progress-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-bar.js","sourceRoot":"","sources":["../../../../src/entites/progress-bar/ui/progress-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handlePlayPause = void 0;
|
|
4
|
+
const handlePlayPause = (videoRef) => {
|
|
5
|
+
var _a, _b, _c;
|
|
6
|
+
if ((_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused) {
|
|
7
|
+
(_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
(_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
exports.handlePlayPause = handlePlayPause;
|
|
14
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/features/player-tools/lib/handlers.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,QAA4C,EAAE,EAAE;;IAC9E,IAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,EAAE,CAAC;QAC7B,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;AACH,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player-tools.interface.js","sourceRoot":"","sources":["../../../../src/features/player-tools/model/player-tools.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PlayerTools = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const ui_1 = require("../../../entites/ShortDescription/ui");
|
|
10
|
+
const ui_2 = require("../../../entites/ShortVideoBtns/ui");
|
|
11
|
+
const getDeviceIsMobile_1 = require("../../../shared/hooks/getDeviceIsMobile");
|
|
12
|
+
const progress_bar_1 = require("../../../entites/progress-bar");
|
|
13
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
14
|
+
const PlayerTools = ({ duration, videoRef, channelId = '1', videoId = '2', dislikes = '2341', likes = '79425', channelUrl = 'channelUrl', channelAvatarUrl = 'testImages/pr.png', username = 'RestoratorGame', videoName = 'срежу воду 10 часов подряд' }) => {
|
|
15
|
+
var _a;
|
|
16
|
+
const currentTime = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.currentTime;
|
|
17
|
+
const device = (0, getDeviceIsMobile_1.getDeviceIsMobile)();
|
|
18
|
+
return (
|
|
19
|
+
// <div className={isVisibleTools ? styles.toolsContainer : styles.toolsContainer_hidden}>
|
|
20
|
+
(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.toolsContainer, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.toolsMobileContainer, children: [(device === null || device === void 0 ? void 0 : device.isMobile) && (0, jsx_runtime_1.jsx)(ui_2.ShortVideoBtns, { channelId: channelId, videoId: videoId, likes: likes, dislikes: dislikes, commentsCount: "92348" }), (0, jsx_runtime_1.jsx)(ui_1.ShortDescription, { channelAvatarUrl: channelAvatarUrl, username: username, videoName: videoName, channelUrl: channelUrl }), (0, jsx_runtime_1.jsx)(progress_bar_1.ProgressBar, { duration: duration, videoRef: videoRef })] }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.toolsDesktopContainer, children: !(device === null || device === void 0 ? void 0 : device.isMobile) && (0, jsx_runtime_1.jsx)(ui_2.ShortVideoBtns, { channelId: channelId, videoId: videoId, likes: likes, dislikes: dislikes, commentsCount: "92348" }) })] }));
|
|
21
|
+
};
|
|
22
|
+
exports.PlayerTools = PlayerTools;
|
|
23
|
+
//# sourceMappingURL=player-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player-tools.js","sourceRoot":"","sources":["../../../../src/features/player-tools/ui/player-tools.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;AAMZ,6DAAwE;AACxE,2DAAoE;AACpE,+EAA4E;AAC5E,gEAA4D;AAC5D,8EAAyC;AAGlC,MAAM,WAAW,GAA2B,CAAC,EAChD,QAAQ,EACR,QAAQ,EACR,SAAS,GAAG,GAAG,EACf,OAAO,GAAG,GAAG,EACb,QAAQ,GAAG,MAAM,EACjB,KAAK,GAAG,OAAO,EACf,UAAU,GAAG,YAAY,EACzB,gBAAgB,GAAG,mBAAmB,EACtC,QAAQ,GAAG,gBAAgB,EAC3B,SAAS,GAAG,4BAA4B,EAC3C,EAAE,EAAE;;IACD,MAAM,WAAW,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,WAAW,CAAA;IAEjD,MAAM,MAAM,GAAG,IAAA,qCAAiB,GAAE,CAAA;IAElC,OAAO;IACH,0FAA0F;IAC1F,iCAAK,SAAS,EAAE,4BAAM,CAAC,cAAc,aACjC,iCAAK,SAAS,EAAE,4BAAM,CAAC,oBAAoB,aACtC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,uBAAC,mBAAc,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,OAAO,GAAE,EACtI,uBAAC,qBAAgB,IAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,EAEzH,uBAAC,0BAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,IACrD,EACN,gCAAK,SAAS,EAAE,4BAAM,CAAC,qBAAqB,YACvC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,IAAI,uBAAC,mBAAc,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,OAAO,GAAE,GACrI,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShortPlayer = void 0;
|
|
4
|
+
var component_1 = require("./component");
|
|
5
|
+
Object.defineProperty(exports, "ShortPlayer", { enumerable: true, get: function () { return component_1.ShortPlayer; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAAhC,wGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.svgs = void 0;
|
|
4
|
+
exports.svgs = {
|
|
5
|
+
stop: 'stop',
|
|
6
|
+
play: 'play',
|
|
7
|
+
comments: 'comments',
|
|
8
|
+
dislike: 'dislike',
|
|
9
|
+
download: 'download',
|
|
10
|
+
like: 'like',
|
|
11
|
+
magnifier: 'magnifier',
|
|
12
|
+
share: 'share',
|
|
13
|
+
verticalEllipsis: 'verticalEllipsis',
|
|
14
|
+
soundOn: 'soundOn',
|
|
15
|
+
soundOff: 'soundOff',
|
|
16
|
+
fullScreenOn: 'fullScreenOn',
|
|
17
|
+
fullScreenOff: 'fullScreenOff',
|
|
18
|
+
pictureInPicture: 'pictureInPicture',
|
|
19
|
+
subtitle: 'subtitle',
|
|
20
|
+
settings: 'settings',
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=svgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svgs.js","sourceRoot":"","sources":["../../../src/shared/constants/svgs.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,kBAAkB;IACpC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACvB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.themes = void 0;
|
|
4
|
+
exports.themes = [
|
|
5
|
+
{ id: 'device', name: 'Как на устройстве' },
|
|
6
|
+
{ id: 'dark', name: 'Темная' },
|
|
7
|
+
{ id: 'light', name: 'Светлая' },
|
|
8
|
+
];
|
|
9
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../src/shared/constants/themes.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IAClB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;CACnC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDeviceIsMobile.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/getDeviceIsMobile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;
|
|
1
|
+
{"version":3,"file":"getDeviceIsMobile.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/getDeviceIsMobile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;CAU7B,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDeviceIsMobile = void 0;
|
|
4
|
+
const getDeviceIsMobile = () => {
|
|
5
|
+
if (typeof window === 'undefined') {
|
|
6
|
+
console.log("getDeviceIsMobile недоступен на сервере");
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const tabletMediaQuery = window.matchMedia('(max-width: 1280px)');
|
|
10
|
+
const mobileMediaQuery = window.matchMedia('(max-width: 768px)');
|
|
11
|
+
return { isTablet: tabletMediaQuery.matches || false, isMobile: mobileMediaQuery.matches || false };
|
|
12
|
+
};
|
|
13
|
+
exports.getDeviceIsMobile = getDeviceIsMobile;
|
|
14
|
+
//# sourceMappingURL=getDeviceIsMobile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeviceIsMobile.js","sourceRoot":"","sources":["../../../src/shared/hooks/getDeviceIsMobile.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACX,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;IACjE,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;IAEhE,OAAO,EAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,OAAO,IAAI,KAAK,EAAC,CAAA;AACrG,CAAC,CAAA;AAVY,QAAA,iBAAiB,qBAU7B"}
|