@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,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.metadata = void 0;
|
|
4
|
+
exports.default = RootLayout;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const google_1 = require("next/font/google");
|
|
7
|
+
require("./globals.scss");
|
|
8
|
+
const geistSans = (0, google_1.Geist)({
|
|
9
|
+
variable: "--font-geist-sans",
|
|
10
|
+
subsets: ["latin"],
|
|
11
|
+
});
|
|
12
|
+
const geistMono = (0, google_1.Geist_Mono)({
|
|
13
|
+
variable: "--font-geist-mono",
|
|
14
|
+
subsets: ["latin"],
|
|
15
|
+
});
|
|
16
|
+
exports.metadata = {
|
|
17
|
+
title: "Create Next App",
|
|
18
|
+
description: "Generated by create next app",
|
|
19
|
+
};
|
|
20
|
+
function RootLayout({ children, }) {
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)("html", { lang: "en", className: `${geistSans.variable} ${geistMono.variable}`, children: (0, jsx_runtime_1.jsx)("body", { children: children }) }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":";;;AAmBA,6BAUC;;AA5BD,6CAAqD;AACrD,0BAAwB;AAExB,MAAM,SAAS,GAAG,IAAA,cAAK,EAAC;IACtB,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC;IAC3B,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC,OAAO,CAAC;CACnB,CAAC,CAAC;AAEU,QAAA,QAAQ,GAAa;IAChC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,8BAA8B;CAC5C,CAAC;AAEF,SAAwB,UAAU,CAAC,EACjC,QAAQ,GAGR;IACA,OAAO,CACL,iCAAM,IAAI,EAAC,IAAI,EAAC,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,YACtE,2CAAO,QAAQ,GAAQ,GAClB,CACR,CAAC;AACJ,CAAC"}
|
package/dist/app/page.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.default = Home;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const component_1 = require("@/component");
|
|
7
|
+
// СТАРТУЕМ ПЕРЕДЕЛ ПОД ЛАЙВЫ
|
|
8
|
+
// const VIDEODATA = {
|
|
9
|
+
// playlistUrl: '/videos/hls_output/master.m3u8',
|
|
10
|
+
// duration: 9.333,
|
|
11
|
+
// }
|
|
12
|
+
const VIDEODATA = {
|
|
13
|
+
playlistUrl: '/videos/long-video/longVIdeo.m3u8',
|
|
14
|
+
duration: 40.333,
|
|
15
|
+
};
|
|
16
|
+
function Home() {
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { width: '500px', height: '1000px' }, children: (0, jsx_runtime_1.jsx)(component_1.ShortPlayer, { playlistUrl: VIDEODATA.playlistUrl, duration: VIDEODATA === null || VIDEODATA === void 0 ? void 0 : VIDEODATA.duration, theme: "dark" }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/app/page.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AAoBZ,uBAOC;;AAzBD,2CAA0C;AAG1C,6BAA6B;AAE7B,sBAAsB;AACtB,mDAAmD;AACnD,qBAAqB;AACrB,IAAI;AAGJ,MAAM,SAAS,GAAG;IAChB,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,MAAM;CACjB,CAAA;AAID,SAAwB,IAAI;IAE1B,OAAO,CACL,gCAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,YAC7C,uBAAC,uBAAW,IAAC,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE,KAAK,EAAC,MAAM,GAAE,GAC1F,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,7 @@ interface IShortPlayerContext {
|
|
|
9
9
|
isVisibleTools: boolean;
|
|
10
10
|
setIsVisibleTools: Dispatch<SetStateAction<boolean>>;
|
|
11
11
|
}
|
|
12
|
-
export declare const playerContext: React.Context<IShortPlayerContext
|
|
12
|
+
export declare const playerContext: React.Context<IShortPlayerContext>;
|
|
13
13
|
export declare const usePlayerContext: () => IShortPlayerContext;
|
|
14
14
|
interface IShortPlayer {
|
|
15
15
|
playlistUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/component/index.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAwD,MAAM,OAAO,CAAC;AAEjI,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,GAAG,EAAE,GAAG,CAAA;IACR,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACrD;AAED,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/component/index.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAwD,MAAM,OAAO,CAAC;AAEjI,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,GAAG,EAAE,GAAG,CAAA;IACR,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACrD;AAED,eAAO,MAAM,aAAa,oCAAkD,CAAC;AAoC7E,eAAO,MAAM,gBAAgB,2BAM5B,CAAC;AAEF,UAAU,YAAY;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6B9C,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.ShortPlayer = exports.usePlayerContext = exports.playerContext = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const hls_js_1 = __importDefault(require("hls.js"));
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const video_tag_1 = require("../widgets/video-tag/ui/video-tag");
|
|
12
|
+
const themeProvider_1 = require("../shared/providers/themeProvider");
|
|
13
|
+
exports.playerContext = (0, react_1.createContext)(null);
|
|
14
|
+
const ShortPlayerProvider = ({ children, videoRef, hls }) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const [isPaused, setIsPaused] = (0, react_1.useState)(true);
|
|
17
|
+
const [isVisibleTools, setIsVisibleTools] = (0, react_1.useState)(false);
|
|
18
|
+
const hideToolsTimer = (0, react_1.useRef)(null);
|
|
19
|
+
if (isPaused) {
|
|
20
|
+
(_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.pause();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
(_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
|
|
24
|
+
}
|
|
25
|
+
const value = {
|
|
26
|
+
isPaused,
|
|
27
|
+
setIsPaused,
|
|
28
|
+
hls,
|
|
29
|
+
hideToolsTimer,
|
|
30
|
+
isVisibleTools,
|
|
31
|
+
setIsVisibleTools,
|
|
32
|
+
};
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)(exports.playerContext.Provider, { value: value, children: children }));
|
|
34
|
+
};
|
|
35
|
+
const usePlayerContext = () => {
|
|
36
|
+
const context = (0, react_1.useContext)(exports.playerContext);
|
|
37
|
+
if (!context) {
|
|
38
|
+
throw new Error('usePlayerContext must be used within PlayerProvider');
|
|
39
|
+
}
|
|
40
|
+
return context;
|
|
41
|
+
};
|
|
42
|
+
exports.usePlayerContext = usePlayerContext;
|
|
43
|
+
const ShortPlayer = ({ playlistUrl, duration, theme = 'dark' }) => {
|
|
44
|
+
const videoRef = (0, react_1.useRef)(null);
|
|
45
|
+
const hls = new hls_js_1.default({ startLevel: -1,
|
|
46
|
+
maxBufferLength: 3,
|
|
47
|
+
lowLatencyMode: false,
|
|
48
|
+
maxMaxBufferLength: 60,
|
|
49
|
+
liveSyncDurationCount: 3,
|
|
50
|
+
liveDurationInfinity: true,
|
|
51
|
+
autoStartLoad: true,
|
|
52
|
+
enableWorker: true
|
|
53
|
+
// debug: true
|
|
54
|
+
});
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
if (hls_js_1.default.isSupported() && videoRef.current) {
|
|
57
|
+
hls.loadSource(playlistUrl);
|
|
58
|
+
hls.attachMedia(videoRef.current);
|
|
59
|
+
}
|
|
60
|
+
}, []);
|
|
61
|
+
return ((0, jsx_runtime_1.jsx)(ShortPlayerProvider, { videoRef: videoRef, hls: hls, children: (0, jsx_runtime_1.jsx)(themeProvider_1.ThemeProvider, { initialTheme: theme, children: (0, jsx_runtime_1.jsx)(video_tag_1.VideoTag, { duration: duration, videoRef: videoRef }) }) }));
|
|
62
|
+
};
|
|
63
|
+
exports.ShortPlayer = ShortPlayer;
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/component/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;AAEZ,oDAAyB;AACzB,iCAAiI;AAGjI,iEAA6D;AAC7D,qEAAyE;AAW5D,QAAA,aAAa,GAAG,IAAA,qBAAa,EAA6B,IAAI,CAAC,CAAC;AAQ7E,MAAM,mBAAmB,GAAkC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAC,EAAE,EAAE;;IACxF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAA;IACpE,MAAM,cAAc,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IAEnD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAE,IAAI,EAAE,CAAA;IAC3B,CAAC;IAGD,MAAM,KAAK,GAAwB;QACjC,QAAQ;QACR,WAAW;QACX,GAAG;QACH,cAAc;QACd,cAAc;QACd,iBAAiB;KAClB,CAAC;IAEF,OAAO,CACL,uBAAC,qBAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACjC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B;AAQK,MAAM,WAAW,GAA2B,CAAC,EAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,GAAC,MAAM,EAAE,EAAE,EAAE;IAE5F,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAA;IAE/C,MAAM,GAAG,GAAG,IAAI,gBAAG,CAAC,EAAC,UAAU,EAAE,CAAC,CAAC;QACjC,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,EAAE;QACtB,qBAAqB,EAAE,CAAC;QACxB,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;QAClB,cAAc;KACf,CAAC,CAAA;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,gBAAG,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;YAC3B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,uBAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,YAC/C,uBAAC,6BAAa,IAAC,YAAY,EAAE,KAAc,YACzC,uBAAC,oBAAQ,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,GACrC,GACI,CACvB,CAAC;AACJ,CAAC,CAAA;AA7BY,QAAA,WAAW,eA6BvB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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.PlayBtn = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const component_1 = require("../../../component");
|
|
9
|
+
const ui_1 = require("../../../shared/ui");
|
|
10
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
11
|
+
const PlayBtn = ({ videoRef }) => {
|
|
12
|
+
var _a;
|
|
13
|
+
const context = (0, component_1.usePlayerContext)();
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.playBtnWrap, children: (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.playBtn, onClick: (e) => {
|
|
15
|
+
e.stopPropagation();
|
|
16
|
+
context.setIsPaused((prev) => !prev);
|
|
17
|
+
}, children: ((_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused) ?
|
|
18
|
+
(0, jsx_runtime_1.jsx)(ui_1.Svg, { name: "play" })
|
|
19
|
+
:
|
|
20
|
+
(0, jsx_runtime_1.jsx)(ui_1.Svg, { name: "stop" }) }) }));
|
|
21
|
+
};
|
|
22
|
+
exports.PlayBtn = PlayBtn;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/PlayBtn/ui/index.tsx"],"names":[],"mappings":";;;;;;;AAAA,kDAAqD;AACrD,2CAAwC;AAExC,8EAAyC;AAElC,MAAM,OAAO,GAAG,CAAC,EAAC,QAAQ,EAAkD,EAAE,EAAE;;IACnF,MAAM,OAAO,GAAG,IAAA,4BAAgB,GAAE,CAAA;IAElC,OAAO,CACH,gCAAK,SAAS,EAAE,4BAAM,CAAC,WAAW,YAC9B,mCACI,SAAS,EAAE,4BAAM,CAAC,OAAO,EACzB,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE;gBAC7B,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,WAAW,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;YACjD,CAAC,YAEA,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,EAAC,CAAC;gBACnB,uBAAC,QAAG,IAAC,IAAI,EAAC,MAAM,GAAG;gBACvB,CAAC;oBACG,uBAAC,QAAG,IAAC,IAAI,EAAC,MAAM,GAAE,GAErB,GACP,CACT,CAAA;AACL,CAAC,CAAA;AApBY,QAAA,OAAO,WAoBnB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProgressBar = void 0;
|
|
4
|
+
var ui_1 = require("./ui");
|
|
5
|
+
Object.defineProperty(exports, "ProgressBar", { enumerable: true, get: function () { return ui_1.ProgressBar; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entites/ProgressBar/index.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAAzB,iGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
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.handleMouseUpWrapper = exports.handleMouseDown = exports.handleClick = exports.handleMouseOver = 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 handleMouseOver = (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.handleMouseOver = handleMouseOver;
|
|
19
|
+
const handleClick = (e, isDragging, duration, progressContainerRef, videoRef, setCurrentVideoTime, setIsDragging) => {
|
|
20
|
+
if (!isDragging && progressContainerRef.current && duration) {
|
|
21
|
+
console.log('handleClick');
|
|
22
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
23
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
24
|
+
const newTime = (clickPosition / rect.width) * duration;
|
|
25
|
+
videoRef.current.currentTime = newTime;
|
|
26
|
+
setCurrentVideoTime(newTime);
|
|
27
|
+
setIsDragging(false);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.handleClick = handleClick;
|
|
31
|
+
const handleMouseDown = (e, setIsDragging) => {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
console.log('handleMouseDown');
|
|
34
|
+
setIsDragging(true);
|
|
35
|
+
};
|
|
36
|
+
exports.handleMouseDown = handleMouseDown;
|
|
37
|
+
const handleMouseUpWrapper = (e, duration, progressContainerRef, videoRef, setCurrentVideoTime, setIsDragging, setHoverTime) => {
|
|
38
|
+
console.log('handleMouseUpWrapper222s');
|
|
39
|
+
if (!progressContainerRef.current || !videoRef.current || !duration)
|
|
40
|
+
return;
|
|
41
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
42
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
43
|
+
const clickPercentage = (clickPosition / rect.width);
|
|
44
|
+
const newTime = clickPercentage * duration;
|
|
45
|
+
// Финальное обновление
|
|
46
|
+
videoRef.current.currentTime = newTime;
|
|
47
|
+
setCurrentVideoTime(newTime);
|
|
48
|
+
setHoverTime(0);
|
|
49
|
+
setIsDragging(false);
|
|
50
|
+
// Восстанавливаем таймер обновления
|
|
51
|
+
};
|
|
52
|
+
exports.handleMouseUpWrapper = handleMouseUpWrapper;
|
|
53
|
+
const getProgressBarFragments = ({ duration, currentVideoTime, }) => {
|
|
54
|
+
const elements = [];
|
|
55
|
+
// Общая логика прогресса и буфера
|
|
56
|
+
const getGradientStops = (start, end, progress) => {
|
|
57
|
+
const gradientStops = [];
|
|
58
|
+
const progressPercent = progress >= end
|
|
59
|
+
? 100
|
|
60
|
+
: progress > start
|
|
61
|
+
? ((progress - start) / (end - start)) * 100
|
|
62
|
+
: 0;
|
|
63
|
+
if (progressPercent > 0) {
|
|
64
|
+
gradientStops.push("#1e90ff 0%");
|
|
65
|
+
gradientStops.push(`#1e90ff ${progressPercent}%`);
|
|
66
|
+
gradientStops.push(`#444 ${progressPercent}%`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
gradientStops.push("#444 0%");
|
|
70
|
+
}
|
|
71
|
+
const bufferStops = [];
|
|
72
|
+
bufferStops.forEach(buffer => {
|
|
73
|
+
gradientStops.push(`#666 ${buffer.start}%`);
|
|
74
|
+
gradientStops.push(`#666 ${buffer.end}%`);
|
|
75
|
+
});
|
|
76
|
+
const lastValue = gradientStops.length > 0
|
|
77
|
+
? parseFloat(gradientStops[gradientStops.length - 1].split(" ")[1].replace("%", ""))
|
|
78
|
+
: 0;
|
|
79
|
+
if (lastValue < 100) {
|
|
80
|
+
gradientStops.push(`#444 ${Math.max(lastValue, progressPercent)}%`);
|
|
81
|
+
gradientStops.push(`#444 100%`);
|
|
82
|
+
}
|
|
83
|
+
return gradientStops;
|
|
84
|
+
};
|
|
85
|
+
// Если нет фрагментов — одна сплошная полоса
|
|
86
|
+
if (duration) {
|
|
87
|
+
const gradientStops = getGradientStops(0, duration || 100, currentVideoTime);
|
|
88
|
+
const gradient = `linear-gradient(to right, ${gradientStops.join(", ")})`;
|
|
89
|
+
elements.push((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.fragment, style: {
|
|
90
|
+
left: "0%",
|
|
91
|
+
width: "100%",
|
|
92
|
+
background: gradient,
|
|
93
|
+
} }, "single-fragment"));
|
|
94
|
+
return elements;
|
|
95
|
+
}
|
|
96
|
+
return elements;
|
|
97
|
+
};
|
|
98
|
+
exports.getProgressBarFragments = getProgressBarFragments;
|
|
99
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/entites/ProgressBar/lib/handlers.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
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 handlers_1 = require("../lib/handlers");
|
|
12
|
+
const getHHSStime_1 = require("../../../shared/utils/getHHSStime");
|
|
13
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
14
|
+
// interface IBufferedFragment {
|
|
15
|
+
// start: number;
|
|
16
|
+
// end: number;
|
|
17
|
+
// }
|
|
18
|
+
const ProgressBar = ({ duration, videoRef, }) => {
|
|
19
|
+
const [hoverTime, setHoverTime] = (0, react_1.useState)(0);
|
|
20
|
+
const [isDragging, setIsDragging] = (0, react_1.useState)(false);
|
|
21
|
+
const [currentVideoTime, setCurrentVideoTime] = (0, react_1.useState)(0); // Локальное состояние для времени
|
|
22
|
+
const progressContainerRef = (0, react_1.useRef)(null);
|
|
23
|
+
// const isMovingRef = useRef<HTMLDivElement>(null);
|
|
24
|
+
const animationFrameRef = (0, react_1.useRef)(0); // Ref для requestAnimationFrame
|
|
25
|
+
const context = (0, component_1.usePlayerContext)();
|
|
26
|
+
// Оптимизированный таймер для обновления времени
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
const video = videoRef.current;
|
|
29
|
+
if (!video || isDragging)
|
|
30
|
+
return;
|
|
31
|
+
const updateTime = () => {
|
|
32
|
+
setCurrentVideoTime(video.currentTime);
|
|
33
|
+
animationFrameRef.current = requestAnimationFrame(updateTime);
|
|
34
|
+
};
|
|
35
|
+
// Запускаем обновление через requestAnimationFrame для плавности
|
|
36
|
+
animationFrameRef.current = requestAnimationFrame(updateTime);
|
|
37
|
+
return () => {
|
|
38
|
+
if (animationFrameRef.current) {
|
|
39
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}, [videoRef, duration, isDragging]);
|
|
43
|
+
(0, react_1.useEffect)(() => {
|
|
44
|
+
if (!isDragging)
|
|
45
|
+
return;
|
|
46
|
+
console.log('Dragging started');
|
|
47
|
+
const handleMouseMoveWrapper = (e) => {
|
|
48
|
+
console.log('handleMouseMoveWrapper');
|
|
49
|
+
if (!progressContainerRef.current || !duration)
|
|
50
|
+
return;
|
|
51
|
+
// Ставим видео на паузу при начале перетаскивания
|
|
52
|
+
context.setIsPaused(true);
|
|
53
|
+
// Используем requestAnimationFrame для плавного обновления
|
|
54
|
+
requestAnimationFrame(() => {
|
|
55
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
56
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
57
|
+
const clickPercentage = (clickPosition / rect.width);
|
|
58
|
+
const newTime = clickPercentage * duration;
|
|
59
|
+
// Обновляем локальное состояние
|
|
60
|
+
setCurrentVideoTime(newTime);
|
|
61
|
+
if (videoRef.current) {
|
|
62
|
+
videoRef.current.currentTime = newTime;
|
|
63
|
+
}
|
|
64
|
+
setHoverTime(newTime);
|
|
65
|
+
const timeHoverPosition = document.getElementById('timeHover');
|
|
66
|
+
if (timeHoverPosition) {
|
|
67
|
+
timeHoverPosition.style.left = `${clickPosition}px`;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const handleMouseUpWrapperGlobal = (e) => {
|
|
72
|
+
console.log('handleMouseUpWrapper - GLOBAL');
|
|
73
|
+
if (!progressContainerRef.current || !videoRef.current || !duration)
|
|
74
|
+
return;
|
|
75
|
+
const rect = progressContainerRef.current.getBoundingClientRect();
|
|
76
|
+
const clickPosition = Math.min(Math.max(e.clientX - rect.left, 0), rect.width);
|
|
77
|
+
const clickPercentage = (clickPosition / rect.width);
|
|
78
|
+
const newTime = clickPercentage * duration;
|
|
79
|
+
// Финальное обновление
|
|
80
|
+
videoRef.current.currentTime = newTime;
|
|
81
|
+
setCurrentVideoTime(newTime);
|
|
82
|
+
setHoverTime(0);
|
|
83
|
+
setIsDragging(false);
|
|
84
|
+
// Восстанавливаем воспроизведение (если нужно)
|
|
85
|
+
// context.setIsPaused(false); // Раскомментируйте если нужно
|
|
86
|
+
};
|
|
87
|
+
const playerContainer = document.documentElement;
|
|
88
|
+
if (!playerContainer)
|
|
89
|
+
return;
|
|
90
|
+
window.addEventListener('mousemove', handleMouseMoveWrapper);
|
|
91
|
+
window.addEventListener('mouseup', handleMouseUpWrapperGlobal);
|
|
92
|
+
return () => {
|
|
93
|
+
console.log('Cleaning up drag handlers');
|
|
94
|
+
window.removeEventListener('mousemove', handleMouseMoveWrapper);
|
|
95
|
+
window.removeEventListener('mouseup', handleMouseUpWrapperGlobal);
|
|
96
|
+
};
|
|
97
|
+
}, [isDragging, duration, videoRef, context]);
|
|
98
|
+
// Обновляем буфер
|
|
99
|
+
// useEffect(() => {
|
|
100
|
+
// if (!videoRef?.current) return;
|
|
101
|
+
// const videoElement = videoRef.current;
|
|
102
|
+
// const updateBufferedRanges = () => {
|
|
103
|
+
// const fragments: IBufferedFragment[] = [];
|
|
104
|
+
// for (let index = 0; index < videoElement.buffered.length; index++) {
|
|
105
|
+
// fragments.push({
|
|
106
|
+
// start: videoElement.buffered.start(index),
|
|
107
|
+
// end: videoElement.buffered.end(index)
|
|
108
|
+
// });
|
|
109
|
+
// }
|
|
110
|
+
// setBufferedFragments(fragments);
|
|
111
|
+
// };
|
|
112
|
+
// videoElement.addEventListener('progress', updateBufferedRanges);
|
|
113
|
+
// videoElement.addEventListener('loadeddata', updateBufferedRanges);
|
|
114
|
+
// return () => {
|
|
115
|
+
// videoElement.removeEventListener('progress', updateBufferedRanges);
|
|
116
|
+
// videoElement.removeEventListener('loadeddata', updateBufferedRanges);
|
|
117
|
+
// };
|
|
118
|
+
// }, [videoRef]);
|
|
119
|
+
// if (isLiveStream || !duration) return <div>это стрим, нужно переделать прогрес бар</div>
|
|
120
|
+
console.log('isDragging = ', isDragging);
|
|
121
|
+
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: {
|
|
122
|
+
left: `${(hoverTime / duration) * 100}%`,
|
|
123
|
+
display: hoverTime ? 'block' : 'none'
|
|
124
|
+
}, 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, setIsDragging), onMouseDown: (e) => {
|
|
125
|
+
(0, handlers_1.handleMouseDown)(e, setIsDragging);
|
|
126
|
+
},
|
|
127
|
+
// onMouseUp={(e: React.MouseEvent) => handleMouseUpWrapper(e, duration, progressContainerRef, videoRef, setCurrentVideoTime, setIsDragging, setHoverTime)}
|
|
128
|
+
onMouseLeave: () => {
|
|
129
|
+
if (!isDragging) {
|
|
130
|
+
setHoverTime(0);
|
|
131
|
+
}
|
|
132
|
+
}, onMouseMove: (e) => (0, handlers_1.handleMouseOver)(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, currentVideoTime }) }) })] }));
|
|
133
|
+
};
|
|
134
|
+
exports.ProgressBar = ProgressBar;
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/ProgressBar/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.SettingsButtons = void 0;
|
|
4
|
+
var ui_1 = require("./ui");
|
|
5
|
+
Object.defineProperty(exports, "SettingsButtons", { enumerable: true, get: function () { return ui_1.SettingsButtons; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entites/SettingsButtons/index.ts"],"names":[],"mappings":";;;AAAA,2BAAsC;AAA7B,qGAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleOpenFullScreen = exports.goBack = exports.closeModal = exports.openModal = exports.handleChangeVideoSpeed = void 0;
|
|
4
|
+
const handleChangeVideoSpeed = (videoRef, value) => {
|
|
5
|
+
if (!videoRef || !videoRef.current)
|
|
6
|
+
return;
|
|
7
|
+
videoRef.current.playbackRate = value;
|
|
8
|
+
};
|
|
9
|
+
exports.handleChangeVideoSpeed = handleChangeVideoSpeed;
|
|
10
|
+
const openModal = (e, newTitle, setModalHistory, setActiveModal) => {
|
|
11
|
+
e.stopPropagation();
|
|
12
|
+
if (newTitle) {
|
|
13
|
+
setModalHistory((prev) => [...prev, newTitle]);
|
|
14
|
+
setActiveModal(newTitle);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.openModal = openModal;
|
|
18
|
+
const closeModal = (modalHistory, setModalHistory, setActiveModal) => {
|
|
19
|
+
setModalHistory([]);
|
|
20
|
+
setActiveModal(null);
|
|
21
|
+
};
|
|
22
|
+
exports.closeModal = closeModal;
|
|
23
|
+
const goBack = (modalHistory, setModalHistory, setActiveModal) => {
|
|
24
|
+
if (modalHistory.length > 0) {
|
|
25
|
+
const previousModal = modalHistory[modalHistory.length - 2];
|
|
26
|
+
setModalHistory(prev => prev.slice(0, -1));
|
|
27
|
+
setActiveModal(previousModal);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.goBack = goBack;
|
|
31
|
+
const handleOpenFullScreen = (e, setIsFull) => {
|
|
32
|
+
e.stopPropagation();
|
|
33
|
+
const playerContainer = document.getElementById('playerContainer');
|
|
34
|
+
setIsFull((prev) => {
|
|
35
|
+
if (prev) {
|
|
36
|
+
document === null || document === void 0 ? void 0 : document.exitFullscreen();
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
playerContainer === null || playerContainer === void 0 ? void 0 : playerContainer.requestFullscreen();
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.handleOpenFullScreen = handleOpenFullScreen;
|
|
46
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../../src/entites/SettingsButtons/lib/handlers.ts"],"names":[],"mappings":";;;AAIO,MAAM,sBAAsB,GAAG,CAAC,QAAqC,EAAE,KAAa,EAAE,EAAE;IAC3F,IAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAM;IAEzC,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;AACzC,CAAC,CAAA;AAJY,QAAA,sBAAsB,0BAIlC;AAEM,MAAM,SAAS,GAAG,CAAC,CAAmB,EAAE,QAAmB,EAAE,eAA8F,EAAE,cAAgD,EAAE,EAAE;IACpN,CAAC,CAAC,eAAe,EAAE,CAAA;IACnB,IAAI,QAAQ,EAAE,CAAC;QACX,eAAe,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEK,MAAM,UAAU,GAAG,CAAC,YAAyB,EAAE,eAAuD,EAAE,cAAgD,EAAE,EAAE;IAC3J,eAAe,CAAC,EAAE,CAAC,CAAC;IACpB,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAHW,QAAA,UAAU,cAGrB;AAEK,MAAM,MAAM,GAAG,CAAC,YAAyB,EAAE,eAA8F,EAAE,cAAgD,EAAE,EAAE;IAClM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,cAAc,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,MAAM,UAMjB;AAEK,MAAM,oBAAoB,GAAG,CAAC,CAAmB,EAAE,SAA4C,EAAE,EAAE;IACtG,CAAC,CAAC,eAAe,EAAE,CAAA;IACnB,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAElE,SAAS,CAAC,CAAC,IAAa,EAAE,EAAE;QACxB,IAAG,IAAI,EAAE,CAAC;YACN,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,EAAE,CAAA;YAC1B,OAAO,KAAK,CAAA;QAChB,CAAC;aAAM,CAAC;YACJ,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,iBAAiB,EAAE,CAAA;YACpC,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAbY,QAAA,oBAAoB,wBAahC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-buttons.interface.js","sourceRoot":"","sources":["../../../../src/entites/SettingsButtons/models/settings-buttons.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
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.SettingsButtons = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const ui_1 = require("../../../shared/ui");
|
|
11
|
+
const component_1 = require("../../../component");
|
|
12
|
+
const handlers_1 = require("../lib/handlers");
|
|
13
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
14
|
+
const SettingsButtons = ({ videoRef }) => {
|
|
15
|
+
var _a;
|
|
16
|
+
const [isFull, setIsFull] = (0, react_1.useState)(false);
|
|
17
|
+
const [activeModal, setActiveModal] = (0, react_1.useState)(null);
|
|
18
|
+
const [modalHistory, setModalHistory] = (0, react_1.useState)([]);
|
|
19
|
+
const context = (0, component_1.usePlayerContext)();
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
const handleClickOutSide = (e) => {
|
|
22
|
+
const modal = document.getElementById('settingsWrapper');
|
|
23
|
+
if (!(modal === null || modal === void 0 ? void 0 : modal.contains(e.target))) {
|
|
24
|
+
(0, handlers_1.closeModal)(modalHistory, setModalHistory, setActiveModal);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
window.addEventListener('mousedown', handleClickOutSide);
|
|
28
|
+
return () => {
|
|
29
|
+
window.removeEventListener('mousedown', handleClickOutSide);
|
|
30
|
+
};
|
|
31
|
+
}, [videoRef]);
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
const handlePressFtoFullScreen = (e) => {
|
|
34
|
+
if (e.key.toLowerCase() === 'f') {
|
|
35
|
+
console.log('F');
|
|
36
|
+
(0, handlers_1.handleOpenFullScreen)(setIsFull);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
document.addEventListener('keyup', handlePressFtoFullScreen);
|
|
40
|
+
return () => {
|
|
41
|
+
document.removeEventListener('keyup', handlePressFtoFullScreen);
|
|
42
|
+
};
|
|
43
|
+
}, []);
|
|
44
|
+
const handleSpeed = (value) => {
|
|
45
|
+
(0, handlers_1.handleChangeVideoSpeed)(videoRef, value);
|
|
46
|
+
(0, handlers_1.closeModal)(modalHistory, setModalHistory, setActiveModal);
|
|
47
|
+
};
|
|
48
|
+
const handleChangeQualityLevel = (newQualityLevel) => {
|
|
49
|
+
context.hls.currentLevel = newQualityLevel;
|
|
50
|
+
(0, handlers_1.closeModal)(modalHistory, setModalHistory, setActiveModal);
|
|
51
|
+
};
|
|
52
|
+
const handleSubtitleBtn = (e) => {
|
|
53
|
+
context.hls.subtitleDisplay ? context.hls.subtitleDisplay = false : context.hls.subtitleDisplay = true;
|
|
54
|
+
};
|
|
55
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.settingsContainer, children: [(0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.subtitle, onClick: (e) => handleSubtitleBtn(e), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.btnWrap, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'subtitle' }) }) }), (0, jsx_runtime_1.jsxs)("div", { id: 'settingsWrapper', className: styles_module_scss_1.default.settingsWrapper, children: [(0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.settings, onClick: (e) => (0, handlers_1.openModal)(e, 'settings', setModalHistory, setActiveModal), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.btnWrapSettings, children: (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'settings' }) }) }), activeModal === 'settings' && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.modal, children: [(0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: (e) => (0, handlers_1.openModal)(e, 'quality', setModalHistory, setActiveModal), children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.modalBtnContainer, children: [(0, jsx_runtime_1.jsx)("div", { children: "\u041A\u0430\u0447\u0435\u0441\u0442\u0432\u043E" }), (0, jsx_runtime_1.jsx)("div", { children: `${(_a = context.hls.levels[context.hls.currentLevel]) === null || _a === void 0 ? void 0 : _a.height}p` })] }) }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: (e) => (0, handlers_1.openModal)(e, 'speed', setModalHistory, setActiveModal), children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.modalBtnContainer, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.speedLabel, children: "\u0421\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0432\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u0438\u044F" }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.speedValue, children: [videoRef.current.playbackRate, "x"] })] }) })] })), activeModal === 'quality' && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.modal, onClick: () => (0, handlers_1.goBack)(modalHistory, setModalHistory, setActiveModal), children: [(0, jsx_runtime_1.jsxs)("h3", { className: styles_module_scss_1.default.modalHeader, children: ['<', " \u041A\u0430\u0447\u0435\u0441\u0442\u0432\u043E"] }), context.hls.levels.map((level, index) => {
|
|
56
|
+
return ((0, jsx_runtime_1.jsxs)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleChangeQualityLevel(index), children: [level === null || level === void 0 ? void 0 : level.height, "p"] }, index));
|
|
57
|
+
})] })), activeModal === 'speed' && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.modal, onClick: () => (0, handlers_1.goBack)(modalHistory, setModalHistory, setActiveModal), children: [(0, jsx_runtime_1.jsxs)("h3", { className: styles_module_scss_1.default.modalHeader, children: ['<', " \u0421\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0432\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u0438\u044F"] }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(0.25), children: "0.25x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(0.5), children: "0.5x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(0.75), children: "0.75x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(1), children: "1x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(1.25), children: "1.25x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(1.5), children: "1.5x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(1.75), children: "1.75x" }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.modalBtn, onClick: () => handleSpeed(2), children: "2x" })] }))] }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.subtitle, onClick: (e) => (0, handlers_1.handleOpenFullScreen)(e, setIsFull), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.btnWrap, children: isFull ? (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'fullScreenOff' }) : (0, jsx_runtime_1.jsx)(ui_1.Svg, { name: 'fullScreenOn' }) }) })] }));
|
|
58
|
+
};
|
|
59
|
+
exports.SettingsButtons = SettingsButtons;
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/SettingsButtons/ui/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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.ShortDescription = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const link_1 = __importDefault(require("next/link"));
|
|
10
|
+
const styles_module_scss_1 = __importDefault(require("./styles.module.scss"));
|
|
11
|
+
const ShortDescription = ({ channelAvatarUrl, channelUrl, username, videoName }) => {
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.shortDescriptionContainer, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.channelInfo, children: [(0, jsx_runtime_1.jsxs)(link_1.default, { href: channelUrl, className: styles_module_scss_1.default.channelInfo, children: [(0, jsx_runtime_1.jsx)("img", { src: channelAvatarUrl, alt: 'avatar', className: styles_module_scss_1.default.channelAvatar }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.channelUsername, children: username })] }), (0, jsx_runtime_1.jsx)("button", { className: styles_module_scss_1.default.subscriptionBtn, children: "\u043F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C\u0441\u044F" })] }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.videoName, children: videoName })] }));
|
|
13
|
+
};
|
|
14
|
+
exports.ShortDescription = ShortDescription;
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entites/ShortDescription/ui/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;AAIZ,qDAA4B;AAC5B,8EAAyC;AAUlC,MAAM,gBAAgB,GAAgC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IACnH,OAAO,CACH,iCAAK,SAAS,EAAE,4BAAM,CAAC,yBAAyB,aAC5C,iCAAK,SAAS,EAAE,4BAAM,CAAC,WAAW,aAC9B,wBAAC,cAAI,IAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,4BAAM,CAAC,WAAW,aACjD,gCAAK,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAC,QAAQ,EAAC,SAAS,EAAE,4BAAM,CAAC,aAAa,GAAG,EAC3E,gCAAK,SAAS,EAAE,4BAAM,CAAC,eAAe,YAAG,QAAQ,GAAO,IACrD,EACP,mCAAQ,SAAS,EAAE,4BAAM,CAAC,eAAe,mFAAsB,IAC7D,EACN,gCAAK,SAAS,EAAE,4BAAM,CAAC,SAAS,YAAG,SAAS,GAAO,IACjD,CACT,CAAA;AACL,CAAC,CAAA;AAbY,QAAA,gBAAgB,oBAa5B"}
|