@alfalab/core-components-gallery 7.2.3 → 7.3.0
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/Component.js +51 -7
- package/Component.js.map +1 -1
- package/components/bottom-button/index.css +5 -5
- package/components/bottom-button/index.module.css.js +1 -1
- package/components/buttons/index.css +5 -5
- package/components/buttons/index.d.ts +3 -1
- package/components/buttons/index.js +49 -12
- package/components/buttons/index.js.map +1 -1
- package/components/buttons/index.module.css.js +1 -1
- package/components/header/Component.js +1 -0
- package/components/header/Component.js.map +1 -1
- package/components/header/index.css +3 -2
- package/components/header/index.module.css.js +1 -1
- package/components/header/index.module.css.js.map +1 -1
- package/components/header-info-block/Component.js +2 -1
- package/components/header-info-block/Component.js.map +1 -1
- package/components/header-info-block/index.css +4 -4
- package/components/header-info-block/index.module.css.js +1 -1
- package/components/header-mobile/index.css +6 -6
- package/components/header-mobile/index.module.css.js +1 -1
- package/components/image-preview/Component.js +2 -1
- package/components/image-preview/Component.js.map +1 -1
- package/components/image-preview/index.css +20 -20
- package/components/image-preview/index.module.css.js +1 -1
- package/components/image-preview/index.module.css.js.map +1 -1
- package/components/image-viewer/hooks.js +3 -2
- package/components/image-viewer/hooks.js.map +1 -1
- package/components/image-viewer/index.css +30 -31
- package/components/image-viewer/index.module.css.js +1 -1
- package/components/image-viewer/index.module.css.js.map +1 -1
- package/components/image-viewer/single.js +1 -0
- package/components/image-viewer/single.js.map +1 -1
- package/components/image-viewer/slide.js +3 -2
- package/components/image-viewer/slide.js.map +1 -1
- package/components/image-viewer/video/index.css +22 -10
- package/components/image-viewer/video/index.js +50 -15
- package/components/image-viewer/video/index.js.map +1 -1
- package/components/image-viewer/video/index.module.css.js +1 -1
- package/components/image-viewer/video/index.module.css.js.map +1 -1
- package/components/info-bar/Component.js +1 -0
- package/components/info-bar/Component.js.map +1 -1
- package/components/info-bar/index.css +3 -3
- package/components/info-bar/index.module.css.js +1 -1
- package/components/navigation-bar/Component.js +56 -26
- package/components/navigation-bar/Component.js.map +1 -1
- package/components/navigation-bar/index.css +21 -11
- package/components/navigation-bar/index.module.css.js +1 -1
- package/components/navigation-bar/index.module.css.js.map +1 -1
- package/components/subtitles/index.css +3 -3
- package/components/subtitles/index.module.css.js +1 -1
- package/constants.d.ts +1 -1
- package/constants.js +1 -1
- package/constants.js.map +1 -1
- package/cssm/Component.js +51 -7
- package/cssm/Component.js.map +1 -1
- package/cssm/components/buttons/index.d.ts +3 -1
- package/cssm/components/buttons/index.js +54 -17
- package/cssm/components/buttons/index.js.map +1 -1
- package/cssm/components/header/Component.js +1 -0
- package/cssm/components/header/Component.js.map +1 -1
- package/cssm/components/header/index.module.css +2 -1
- package/cssm/components/header-info-block/Component.js +2 -1
- package/cssm/components/header-info-block/Component.js.map +1 -1
- package/cssm/components/image-preview/Component.js +2 -1
- package/cssm/components/image-preview/Component.js.map +1 -1
- package/cssm/components/image-preview/index.module.css +3 -3
- package/cssm/components/image-viewer/hooks.js +3 -2
- package/cssm/components/image-viewer/hooks.js.map +1 -1
- package/cssm/components/image-viewer/index.module.css +2 -3
- package/cssm/components/image-viewer/single.js +1 -0
- package/cssm/components/image-viewer/single.js.map +1 -1
- package/cssm/components/image-viewer/slide.js +3 -2
- package/cssm/components/image-viewer/slide.js.map +1 -1
- package/cssm/components/image-viewer/video/index.js +50 -15
- package/cssm/components/image-viewer/video/index.js.map +1 -1
- package/cssm/components/image-viewer/video/index.module.css +15 -3
- package/cssm/components/info-bar/Component.js +1 -0
- package/cssm/components/info-bar/Component.js.map +1 -1
- package/cssm/components/navigation-bar/Component.js +56 -26
- package/cssm/components/navigation-bar/Component.js.map +1 -1
- package/cssm/components/navigation-bar/index.module.css +13 -3
- package/cssm/constants.d.ts +1 -1
- package/cssm/constants.js +1 -1
- package/cssm/constants.js.map +1 -1
- package/cssm/hooks/use-custom-subtitles.js +57 -11
- package/cssm/hooks/use-custom-subtitles.js.map +1 -1
- package/cssm/index.js +1 -0
- package/cssm/index.js.map +1 -1
- package/cssm/types.d.ts +4 -2
- package/cssm/utils/index.d.ts +1 -0
- package/cssm/utils/index.js +2 -0
- package/cssm/utils/index.js.map +1 -1
- package/cssm/utils/modern-download.d.ts +6 -0
- package/cssm/utils/modern-download.js +113 -0
- package/cssm/utils/modern-download.js.map +1 -0
- package/esm/Component.js +51 -7
- package/esm/Component.js.map +1 -1
- package/esm/components/bottom-button/index.css +5 -5
- package/esm/components/bottom-button/index.module.css.js +1 -1
- package/esm/components/buttons/index.css +5 -5
- package/esm/components/buttons/index.d.ts +3 -1
- package/esm/components/buttons/index.js +50 -13
- package/esm/components/buttons/index.js.map +1 -1
- package/esm/components/buttons/index.module.css.js +1 -1
- package/esm/components/header/Component.js +1 -0
- package/esm/components/header/Component.js.map +1 -1
- package/esm/components/header/index.css +3 -2
- package/esm/components/header/index.module.css.js +1 -1
- package/esm/components/header/index.module.css.js.map +1 -1
- package/esm/components/header-info-block/Component.js +2 -1
- package/esm/components/header-info-block/Component.js.map +1 -1
- package/esm/components/header-info-block/index.css +4 -4
- package/esm/components/header-info-block/index.module.css.js +1 -1
- package/esm/components/header-mobile/index.css +6 -6
- package/esm/components/header-mobile/index.module.css.js +1 -1
- package/esm/components/image-preview/Component.js +2 -1
- package/esm/components/image-preview/Component.js.map +1 -1
- package/esm/components/image-preview/index.css +20 -20
- package/esm/components/image-preview/index.module.css.js +1 -1
- package/esm/components/image-preview/index.module.css.js.map +1 -1
- package/esm/components/image-viewer/hooks.js +3 -2
- package/esm/components/image-viewer/hooks.js.map +1 -1
- package/esm/components/image-viewer/index.css +30 -31
- package/esm/components/image-viewer/index.module.css.js +1 -1
- package/esm/components/image-viewer/index.module.css.js.map +1 -1
- package/esm/components/image-viewer/single.js +1 -0
- package/esm/components/image-viewer/single.js.map +1 -1
- package/esm/components/image-viewer/slide.js +3 -2
- package/esm/components/image-viewer/slide.js.map +1 -1
- package/esm/components/image-viewer/video/index.css +22 -10
- package/esm/components/image-viewer/video/index.js +51 -16
- package/esm/components/image-viewer/video/index.js.map +1 -1
- package/esm/components/image-viewer/video/index.module.css.js +1 -1
- package/esm/components/image-viewer/video/index.module.css.js.map +1 -1
- package/esm/components/info-bar/Component.js +1 -0
- package/esm/components/info-bar/Component.js.map +1 -1
- package/esm/components/info-bar/index.css +3 -3
- package/esm/components/info-bar/index.module.css.js +1 -1
- package/esm/components/navigation-bar/Component.js +56 -25
- package/esm/components/navigation-bar/Component.js.map +1 -1
- package/esm/components/navigation-bar/index.css +21 -11
- package/esm/components/navigation-bar/index.module.css.js +1 -1
- package/esm/components/navigation-bar/index.module.css.js.map +1 -1
- package/esm/components/subtitles/index.css +3 -3
- package/esm/components/subtitles/index.module.css.js +1 -1
- package/esm/constants.d.ts +1 -1
- package/esm/constants.js +1 -1
- package/esm/constants.js.map +1 -1
- package/esm/hooks/use-custom-subtitles.js +57 -11
- package/esm/hooks/use-custom-subtitles.js.map +1 -1
- package/esm/index.css +9 -9
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/index.module.css.js +1 -1
- package/esm/types.d.ts +4 -2
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/modern-download.d.ts +6 -0
- package/esm/utils/modern-download.js +109 -0
- package/esm/utils/modern-download.js.map +1 -0
- package/hooks/use-custom-subtitles.js +57 -11
- package/hooks/use-custom-subtitles.js.map +1 -1
- package/index.css +9 -9
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/index.module.css.js +1 -1
- package/modern/Component.js +50 -7
- package/modern/Component.js.map +1 -1
- package/modern/components/bottom-button/index.css +5 -5
- package/modern/components/bottom-button/index.module.css.js +1 -1
- package/modern/components/buttons/index.css +5 -5
- package/modern/components/buttons/index.d.ts +3 -1
- package/modern/components/buttons/index.js +51 -12
- package/modern/components/buttons/index.js.map +1 -1
- package/modern/components/buttons/index.module.css.js +1 -1
- package/modern/components/header/index.css +3 -2
- package/modern/components/header/index.module.css.js +1 -1
- package/modern/components/header/index.module.css.js.map +1 -1
- package/modern/components/header-info-block/Component.js +1 -1
- package/modern/components/header-info-block/Component.js.map +1 -1
- package/modern/components/header-info-block/index.css +4 -4
- package/modern/components/header-info-block/index.module.css.js +1 -1
- package/modern/components/header-mobile/index.css +6 -6
- package/modern/components/header-mobile/index.module.css.js +1 -1
- package/modern/components/image-preview/Component.js +1 -1
- package/modern/components/image-preview/Component.js.map +1 -1
- package/modern/components/image-preview/index.css +20 -20
- package/modern/components/image-preview/index.module.css.js +1 -1
- package/modern/components/image-preview/index.module.css.js.map +1 -1
- package/modern/components/image-viewer/hooks.js +3 -2
- package/modern/components/image-viewer/hooks.js.map +1 -1
- package/modern/components/image-viewer/index.css +30 -31
- package/modern/components/image-viewer/index.module.css.js +1 -1
- package/modern/components/image-viewer/index.module.css.js.map +1 -1
- package/modern/components/image-viewer/slide.js +2 -2
- package/modern/components/image-viewer/slide.js.map +1 -1
- package/modern/components/image-viewer/video/index.css +22 -10
- package/modern/components/image-viewer/video/index.js +47 -12
- package/modern/components/image-viewer/video/index.js.map +1 -1
- package/modern/components/image-viewer/video/index.module.css.js +1 -1
- package/modern/components/image-viewer/video/index.module.css.js.map +1 -1
- package/modern/components/info-bar/index.css +3 -3
- package/modern/components/info-bar/index.module.css.js +1 -1
- package/modern/components/navigation-bar/Component.js +55 -25
- package/modern/components/navigation-bar/Component.js.map +1 -1
- package/modern/components/navigation-bar/index.css +21 -11
- package/modern/components/navigation-bar/index.module.css.js +1 -1
- package/modern/components/navigation-bar/index.module.css.js.map +1 -1
- package/modern/components/subtitles/index.css +3 -3
- package/modern/components/subtitles/index.module.css.js +1 -1
- package/modern/constants.d.ts +1 -1
- package/modern/constants.js +1 -1
- package/modern/constants.js.map +1 -1
- package/modern/hooks/use-custom-subtitles.js +56 -9
- package/modern/hooks/use-custom-subtitles.js.map +1 -1
- package/modern/index.css +9 -9
- package/modern/index.module.css.js +1 -1
- package/modern/types.d.ts +4 -2
- package/modern/utils/index.d.ts +1 -0
- package/modern/utils/index.js +1 -0
- package/modern/utils/index.js.map +1 -1
- package/modern/utils/modern-download.d.ts +6 -0
- package/modern/utils/modern-download.js +76 -0
- package/modern/utils/modern-download.js.map +1 -0
- package/moderncssm/Component.js +50 -7
- package/moderncssm/Component.js.map +1 -1
- package/moderncssm/components/buttons/index.d.ts +3 -1
- package/moderncssm/components/buttons/index.js +51 -12
- package/moderncssm/components/buttons/index.js.map +1 -1
- package/moderncssm/components/header/index.module.css +1 -1
- package/moderncssm/components/header-info-block/Component.js +1 -1
- package/moderncssm/components/header-info-block/Component.js.map +1 -1
- package/moderncssm/components/image-preview/Component.js +1 -1
- package/moderncssm/components/image-preview/Component.js.map +1 -1
- package/moderncssm/components/image-preview/index.module.css +2 -2
- package/moderncssm/components/image-viewer/hooks.js +3 -2
- package/moderncssm/components/image-viewer/hooks.js.map +1 -1
- package/moderncssm/components/image-viewer/index.module.css +2 -2
- package/moderncssm/components/image-viewer/slide.js +2 -2
- package/moderncssm/components/image-viewer/slide.js.map +1 -1
- package/moderncssm/components/image-viewer/video/index.js +47 -12
- package/moderncssm/components/image-viewer/video/index.js.map +1 -1
- package/moderncssm/components/image-viewer/video/index.module.css +16 -3
- package/moderncssm/components/navigation-bar/Component.js +55 -25
- package/moderncssm/components/navigation-bar/Component.js.map +1 -1
- package/moderncssm/components/navigation-bar/index.module.css +14 -2
- package/moderncssm/constants.d.ts +1 -1
- package/moderncssm/constants.js +1 -1
- package/moderncssm/constants.js.map +1 -1
- package/moderncssm/hooks/use-custom-subtitles.js +56 -9
- package/moderncssm/hooks/use-custom-subtitles.js.map +1 -1
- package/moderncssm/types.d.ts +4 -2
- package/moderncssm/utils/index.d.ts +1 -0
- package/moderncssm/utils/index.js +1 -0
- package/moderncssm/utils/index.js.map +1 -1
- package/moderncssm/utils/modern-download.d.ts +6 -0
- package/moderncssm/utils/modern-download.js +76 -0
- package/moderncssm/utils/modern-download.js.map +1 -0
- package/package.json +2 -2
- package/src/Component.tsx +63 -6
- package/src/components/buttons/index.tsx +157 -62
- package/src/components/header/index.module.css +1 -1
- package/src/components/header-info-block/Component.tsx +2 -2
- package/src/components/image-preview/Component.tsx +1 -1
- package/src/components/image-preview/index.module.css +2 -2
- package/src/components/image-viewer/hooks.ts +3 -2
- package/src/components/image-viewer/index.module.css +2 -2
- package/src/components/image-viewer/slide.tsx +2 -1
- package/src/components/image-viewer/video/index.module.css +16 -3
- package/src/components/image-viewer/video/index.tsx +62 -13
- package/src/components/navigation-bar/Component.tsx +68 -27
- package/src/components/navigation-bar/index.module.css +12 -2
- package/src/constants.ts +1 -1
- package/src/hooks/use-custom-subtitles.ts +72 -12
- package/src/types.ts +4 -2
- package/src/utils/index.ts +1 -0
- package/src/utils/modern-download.ts +107 -0
- package/types.d.ts +4 -2
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -0
- package/utils/index.js.map +1 -1
- package/utils/modern-download.d.ts +6 -0
- package/utils/modern-download.js +113 -0
- package/utils/modern-download.js.map +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"component":"
|
|
3
|
+
var styles = {"component":"gallery__component_11mwi","mobile":"gallery__mobile_11mwi","dragging":"gallery__dragging_11mwi","preview":"gallery__preview_11mwi"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/navigation-bar/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n display: flex;\n flex-wrap: nowrap;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n overflow-x: auto;\n box-sizing: border-box;\n padding: var(--gap-12) var(--gap-
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/navigation-bar/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n display: flex;\n flex-wrap: nowrap;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n overflow-x: auto;\n box-sizing: border-box;\n padding: var(--gap-12) var(--gap-32);\n scrollbar-width: none;\n background-color: var(--color-static-neutral-0-inverted);\n cursor: grab;\n user-select: none;\n\n &.mobile {\n padding: var(--gap-8);\n }\n\n &.dragging {\n cursor: grabbing;\n\n & * {\n cursor: grabbing;\n }\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.previews {\n display: flex;\n}\n\n.preview {\n flex-shrink: 0;\n margin-right: var(--gap-4);\n\n &.mobile {\n margin-right: var(--gap-2);\n }\n\n &:first-child {\n margin-left: auto;\n }\n\n &:last-child {\n margin-right: auto;\n }\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,0BAA0B,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,yBAAyB,CAAsC,SAAS,CAAC,wBAAwB,CAAC;;;;"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
--gap-16: 16px;
|
|
4
4
|
--gap-32: 32px;
|
|
5
5
|
}
|
|
6
|
-
.
|
|
6
|
+
.gallery__subtitles_ljsjn {
|
|
7
7
|
position: absolute;
|
|
8
8
|
align-self: flex-end;
|
|
9
9
|
padding: var(--gap-0) var(--gap-32);
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
opacity 500ms ease-in-out,
|
|
17
17
|
margin-bottom 270ms ease-in-out;
|
|
18
18
|
}
|
|
19
|
-
.
|
|
19
|
+
.gallery__subtitles_ljsjn.gallery__mobile_ljsjn {
|
|
20
20
|
position: static;
|
|
21
21
|
position: initial;
|
|
22
22
|
}
|
|
23
|
-
.
|
|
23
|
+
.gallery__hideSubtitles_ljsjn {
|
|
24
24
|
opacity: 0;
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"subtitles":"
|
|
3
|
+
var styles = {"subtitles":"gallery__subtitles_ljsjn","mobile":"gallery__mobile_ljsjn","hideSubtitles":"gallery__hideSubtitles_ljsjn"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
package/esm/constants.d.ts
CHANGED
package/esm/constants.js
CHANGED
package/esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const SWIPE_THRESHOLD =
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const SWIPE_THRESHOLD = 250;\n\nexport const PREVIEW_WIDTH_MOBILE = 46;\nexport const PREVIEW_HEIGHT_MOBILE = 46;\n\nexport const PREVIEW_WIDTH_DESKTOP = 56;\nexport const PREVIEW_HEIGHT_DESKTOP = 56;\n\nexport const PREVIEW_VIDEO_MULTIPLIER = 12;\n"],"names":[],"mappings":"AAAO,IAAM,eAAe,GAAG;AAExB,IAAM,oBAAoB,GAAG;AAC7B,IAAM,qBAAqB,GAAG;AAE9B,IAAM,qBAAqB,GAAG;AAC9B,IAAM,sBAAsB,GAAG;AAE/B,IAAM,wBAAwB,GAAG;;;;"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { __spreadArray } from 'tslib';
|
|
2
1
|
import { useContext, useState, useEffect } from 'react';
|
|
3
2
|
import { GalleryContext } from '../context.js';
|
|
4
3
|
|
|
5
|
-
var
|
|
4
|
+
var SUBTITLES_FADE_DURATION_SECONDS = 0.5;
|
|
6
5
|
var useCustomSubtitles = function () {
|
|
7
6
|
var _a;
|
|
8
7
|
var getCurrentImageMeta = useContext(GalleryContext).getCurrentImageMeta;
|
|
@@ -11,24 +10,71 @@ var useCustomSubtitles = function () {
|
|
|
11
10
|
var _c = useState(''), currentSub = _c[0], setCurrentSub = _c[1];
|
|
12
11
|
var player = (_a = meta === null || meta === void 0 ? void 0 : meta.player) === null || _a === void 0 ? void 0 : _a.current;
|
|
13
12
|
useEffect(function () {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
if (!player) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
var textTracks = player.textTracks;
|
|
17
|
+
var textTrack;
|
|
18
|
+
var hideTimeoutId;
|
|
19
|
+
var clearHideTimeout = function () {
|
|
20
|
+
if (hideTimeoutId !== undefined) {
|
|
21
|
+
clearTimeout(hideTimeoutId);
|
|
22
|
+
hideTimeoutId = undefined;
|
|
18
23
|
}
|
|
19
|
-
|
|
24
|
+
};
|
|
25
|
+
var syncSubtitles = function () {
|
|
26
|
+
var _a;
|
|
27
|
+
clearHideTimeout();
|
|
20
28
|
var activeCue = (_a = textTrack === null || textTrack === void 0 ? void 0 : textTrack.activeCues) === null || _a === void 0 ? void 0 : _a[0];
|
|
21
29
|
if (!(activeCue === null || activeCue === void 0 ? void 0 : activeCue.text)) {
|
|
22
30
|
setShowSub(false);
|
|
23
31
|
return;
|
|
24
32
|
}
|
|
25
|
-
var
|
|
26
|
-
|
|
33
|
+
var fadeStartTime = activeCue.endTime - SUBTITLES_FADE_DURATION_SECONDS;
|
|
34
|
+
var isVisible = player.currentTime <= fadeStartTime;
|
|
27
35
|
setCurrentSub(activeCue.text);
|
|
28
36
|
setShowSub(isVisible);
|
|
29
|
-
|
|
37
|
+
if (!isVisible || player.paused || player.playbackRate <= 0) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
var timeUntilFadeMs = ((fadeStartTime - player.currentTime) / player.playbackRate) * 1000;
|
|
41
|
+
hideTimeoutId = setTimeout(function () {
|
|
42
|
+
setShowSub(false);
|
|
43
|
+
}, timeUntilFadeMs);
|
|
44
|
+
};
|
|
45
|
+
var connectTextTrack = function () {
|
|
46
|
+
var nextTextTrack = Array.from(textTracks).find(function (track) { return track.kind === 'subtitles'; });
|
|
47
|
+
if (nextTextTrack === textTrack) {
|
|
48
|
+
syncSubtitles();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.removeEventListener('cuechange', syncSubtitles);
|
|
52
|
+
textTrack = nextTextTrack;
|
|
53
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.addEventListener('cuechange', syncSubtitles);
|
|
54
|
+
syncSubtitles();
|
|
55
|
+
};
|
|
56
|
+
player.addEventListener('play', syncSubtitles);
|
|
57
|
+
player.addEventListener('playing', syncSubtitles);
|
|
58
|
+
player.addEventListener('pause', clearHideTimeout);
|
|
59
|
+
player.addEventListener('waiting', clearHideTimeout);
|
|
60
|
+
player.addEventListener('seeking', clearHideTimeout);
|
|
61
|
+
player.addEventListener('seeked', syncSubtitles);
|
|
62
|
+
player.addEventListener('ratechange', syncSubtitles);
|
|
63
|
+
textTracks.addEventListener('addtrack', connectTextTrack);
|
|
64
|
+
textTracks.addEventListener('change', connectTextTrack);
|
|
65
|
+
connectTextTrack();
|
|
30
66
|
return function () {
|
|
31
|
-
|
|
67
|
+
clearHideTimeout();
|
|
68
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.removeEventListener('cuechange', syncSubtitles);
|
|
69
|
+
player.removeEventListener('play', syncSubtitles);
|
|
70
|
+
player.removeEventListener('playing', syncSubtitles);
|
|
71
|
+
player.removeEventListener('pause', clearHideTimeout);
|
|
72
|
+
player.removeEventListener('waiting', clearHideTimeout);
|
|
73
|
+
player.removeEventListener('seeking', clearHideTimeout);
|
|
74
|
+
player.removeEventListener('seeked', syncSubtitles);
|
|
75
|
+
player.removeEventListener('ratechange', syncSubtitles);
|
|
76
|
+
textTracks.removeEventListener('addtrack', connectTextTrack);
|
|
77
|
+
textTracks.removeEventListener('change', connectTextTrack);
|
|
32
78
|
};
|
|
33
79
|
}, [player]);
|
|
34
80
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-custom-subtitles.js","sources":["../../src/hooks/use-custom-subtitles.ts"],"sourcesContent":["import { useContext, useEffect, useState } from 'react';\n\nimport { GalleryContext } from '../context';\n\nconst
|
|
1
|
+
{"version":3,"file":"use-custom-subtitles.js","sources":["../../src/hooks/use-custom-subtitles.ts"],"sourcesContent":["import { useContext, useEffect, useState } from 'react';\n\nimport { GalleryContext } from '../context';\n\nconst SUBTITLES_FADE_DURATION_SECONDS = 0.5;\n\nexport const useCustomSubtitles = () => {\n const { getCurrentImageMeta } = useContext(GalleryContext);\n\n const meta = getCurrentImageMeta();\n\n const [showSub, setShowSub] = useState(false);\n const [currentSub, setCurrentSub] = useState('');\n\n const player = meta?.player?.current;\n\n useEffect(() => {\n if (!player) {\n return undefined;\n }\n\n const { textTracks } = player;\n\n let textTrack: TextTrack | undefined;\n let hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const clearHideTimeout = () => {\n if (hideTimeoutId !== undefined) {\n clearTimeout(hideTimeoutId);\n hideTimeoutId = undefined;\n }\n };\n\n const syncSubtitles = () => {\n clearHideTimeout();\n\n const activeCue = textTrack?.activeCues?.[0] as VTTCue | undefined;\n\n if (!activeCue?.text) {\n setShowSub(false);\n\n return;\n }\n\n const fadeStartTime = activeCue.endTime - SUBTITLES_FADE_DURATION_SECONDS;\n const isVisible = player.currentTime <= fadeStartTime;\n\n setCurrentSub(activeCue.text);\n setShowSub(isVisible);\n\n if (!isVisible || player.paused || player.playbackRate <= 0) {\n return;\n }\n\n const timeUntilFadeMs =\n ((fadeStartTime - player.currentTime) / player.playbackRate) * 1000;\n\n hideTimeoutId = setTimeout(() => {\n setShowSub(false);\n }, timeUntilFadeMs);\n };\n\n const connectTextTrack = () => {\n const nextTextTrack = Array.from(textTracks).find(\n (track) => track.kind === 'subtitles',\n );\n\n if (nextTextTrack === textTrack) {\n syncSubtitles();\n\n return;\n }\n\n textTrack?.removeEventListener('cuechange', syncSubtitles);\n textTrack = nextTextTrack;\n textTrack?.addEventListener('cuechange', syncSubtitles);\n syncSubtitles();\n };\n\n player.addEventListener('play', syncSubtitles);\n player.addEventListener('playing', syncSubtitles);\n player.addEventListener('pause', clearHideTimeout);\n player.addEventListener('waiting', clearHideTimeout);\n player.addEventListener('seeking', clearHideTimeout);\n player.addEventListener('seeked', syncSubtitles);\n player.addEventListener('ratechange', syncSubtitles);\n textTracks.addEventListener('addtrack', connectTextTrack);\n textTracks.addEventListener('change', connectTextTrack);\n\n connectTextTrack();\n\n return () => {\n clearHideTimeout();\n textTrack?.removeEventListener('cuechange', syncSubtitles);\n player.removeEventListener('play', syncSubtitles);\n player.removeEventListener('playing', syncSubtitles);\n player.removeEventListener('pause', clearHideTimeout);\n player.removeEventListener('waiting', clearHideTimeout);\n player.removeEventListener('seeking', clearHideTimeout);\n player.removeEventListener('seeked', syncSubtitles);\n player.removeEventListener('ratechange', syncSubtitles);\n textTracks.removeEventListener('addtrack', connectTextTrack);\n textTracks.removeEventListener('change', connectTextTrack);\n };\n }, [player]);\n\n return {\n showSub,\n currentSub,\n };\n};\n"],"names":[],"mappings":"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"}
|
package/esm/index.css
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
--sat: env(safe-area-inset-top, var(--gap-0));
|
|
12
12
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
13
13
|
}
|
|
14
|
-
.
|
|
14
|
+
.gallery__container_1kzqo {
|
|
15
15
|
position: relative;
|
|
16
16
|
overflow-x: hidden;
|
|
17
17
|
overflow-y: auto;
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
padding-top: var(--sat);
|
|
26
26
|
padding-bottom: var(--sab);
|
|
27
27
|
}
|
|
28
|
-
.
|
|
28
|
+
.gallery__container_1kzqo.gallery__mobile_1kzqo {
|
|
29
29
|
overflow: hidden;
|
|
30
30
|
}
|
|
31
|
-
.
|
|
31
|
+
.gallery__modal_1kzqo {
|
|
32
32
|
flex-grow: 1;
|
|
33
33
|
width: 100vw;
|
|
34
34
|
height: 100vh;
|
|
35
35
|
height: 100dvh;
|
|
36
36
|
background: transparent;
|
|
37
37
|
}
|
|
38
|
-
.
|
|
38
|
+
.gallery__navigationVideo_1kzqo {
|
|
39
39
|
z-index: 3;
|
|
40
40
|
width: 100%;
|
|
41
41
|
position: absolute;
|
|
@@ -44,18 +44,18 @@
|
|
|
44
44
|
transition: transform 0.3s ease-in-out;
|
|
45
45
|
text-align: center;
|
|
46
46
|
}
|
|
47
|
-
.
|
|
47
|
+
.gallery__hide_1kzqo {
|
|
48
48
|
transform: translateY(114px);
|
|
49
49
|
}
|
|
50
|
-
.
|
|
50
|
+
.gallery__hideInfo_1kzqo {
|
|
51
51
|
transform: translateY(48px);
|
|
52
52
|
}
|
|
53
|
-
.
|
|
53
|
+
.gallery__bottomButton_1kzqo {
|
|
54
54
|
width: calc(100% - var(--gap-32));
|
|
55
55
|
margin: var(--gap-16);
|
|
56
56
|
background-color: var(--color-static-neutral-translucent-500-inverted);
|
|
57
57
|
}
|
|
58
|
-
.
|
|
58
|
+
.gallery__subtitles_1kzqo {
|
|
59
59
|
padding: var(--gap-0) var(--gap-32);
|
|
60
60
|
margin-bottom: var(--gap-16);
|
|
61
61
|
width: 100%;
|
|
@@ -66,6 +66,6 @@
|
|
|
66
66
|
opacity 500ms ease-in-out,
|
|
67
67
|
margin-bottom 270ms ease-in-out;
|
|
68
68
|
}
|
|
69
|
-
.
|
|
69
|
+
.gallery__hideSubtitles_1kzqo {
|
|
70
70
|
opacity: 0;
|
|
71
71
|
}
|
package/esm/index.js
CHANGED
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
package/esm/index.module.css.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"container":"
|
|
3
|
+
var styles = {"container":"gallery__container_1kzqo","mobile":"gallery__mobile_1kzqo","modal":"gallery__modal_1kzqo","navigationVideo":"gallery__navigationVideo_1kzqo","hide":"gallery__hide_1kzqo","hideInfo":"gallery__hideInfo_1kzqo","bottomButton":"gallery__bottomButton_1kzqo"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
package/esm/types.d.ts
CHANGED
|
@@ -40,9 +40,11 @@ export type ImageMeta = {
|
|
|
40
40
|
height: number;
|
|
41
41
|
broken?: boolean;
|
|
42
42
|
player?: never;
|
|
43
|
+
loaded?: boolean;
|
|
43
44
|
} | {
|
|
44
|
-
width?:
|
|
45
|
-
height?:
|
|
45
|
+
width?: number;
|
|
46
|
+
height?: number;
|
|
46
47
|
broken?: boolean;
|
|
47
48
|
player: RefObject<HTMLVideoElement>;
|
|
49
|
+
loaded?: boolean;
|
|
48
50
|
};
|
package/esm/utils/index.d.ts
CHANGED
package/esm/utils/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { splitFilename } from './split-filename.js';
|
|
2
2
|
export { PLACEHOLDER_HEIGHT, PLACEHOLDER_WIDTH, getImageAlt, getImageKey, isSmallImage, isVideo } from './utils.js';
|
|
3
3
|
export { TestIds } from './constants.js';
|
|
4
|
+
export { downloadFile } from './modern-download.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/esm/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { __awaiter, __generator } from 'tslib';
|
|
2
|
+
|
|
3
|
+
var downloadWithBlob = function (blob, fileName) {
|
|
4
|
+
var url = URL.createObjectURL(blob);
|
|
5
|
+
var link = document.createElement('a');
|
|
6
|
+
link.href = url;
|
|
7
|
+
link.download = fileName;
|
|
8
|
+
document.body.appendChild(link);
|
|
9
|
+
link.click();
|
|
10
|
+
document.body.removeChild(link);
|
|
11
|
+
setTimeout(function () { return URL.revokeObjectURL(url); }, 100);
|
|
12
|
+
};
|
|
13
|
+
var downloadWithLink = function (url, fileName) {
|
|
14
|
+
var link = document.createElement('a');
|
|
15
|
+
link.href = url;
|
|
16
|
+
link.download = fileName;
|
|
17
|
+
link.target = '_blank';
|
|
18
|
+
link.rel = 'noopener noreferrer';
|
|
19
|
+
document.body.appendChild(link);
|
|
20
|
+
link.click();
|
|
21
|
+
document.body.removeChild(link);
|
|
22
|
+
};
|
|
23
|
+
var canUseBlobDownload = function () {
|
|
24
|
+
return typeof fetch === 'function' &&
|
|
25
|
+
typeof URL.createObjectURL === 'function' &&
|
|
26
|
+
typeof URL.revokeObjectURL === 'function';
|
|
27
|
+
};
|
|
28
|
+
var canUseFileShare = function () {
|
|
29
|
+
return typeof File === 'function' &&
|
|
30
|
+
typeof navigator !== 'undefined' &&
|
|
31
|
+
typeof navigator.share === 'function' &&
|
|
32
|
+
typeof navigator.canShare === 'function';
|
|
33
|
+
};
|
|
34
|
+
var canShareFiles = function (files) {
|
|
35
|
+
return canUseFileShare() && navigator.canShare({ files: files });
|
|
36
|
+
};
|
|
37
|
+
var getBlob = function (url) { return __awaiter(void 0, void 0, void 0, function () {
|
|
38
|
+
var response;
|
|
39
|
+
return __generator(this, function (_a) {
|
|
40
|
+
switch (_a.label) {
|
|
41
|
+
case 0: return [4 /*yield*/, fetch(url)];
|
|
42
|
+
case 1:
|
|
43
|
+
response = _a.sent();
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
throw new Error('Network error');
|
|
46
|
+
}
|
|
47
|
+
return [2 /*return*/, response.blob()];
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}); };
|
|
51
|
+
var isAbortError = function (error) {
|
|
52
|
+
return typeof DOMException !== 'undefined' &&
|
|
53
|
+
error instanceof DOMException &&
|
|
54
|
+
error.name === 'AbortError';
|
|
55
|
+
};
|
|
56
|
+
var downloadFile = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
|
|
57
|
+
var blob, file, error_1, blob;
|
|
58
|
+
var url = _b.url, _d = _b.fileName, fileName = _d === void 0 ? 'download' : _d, fileType = _b.fileType;
|
|
59
|
+
return __generator(this, function (_e) {
|
|
60
|
+
switch (_e.label) {
|
|
61
|
+
case 0:
|
|
62
|
+
if (!canUseBlobDownload()) {
|
|
63
|
+
downloadWithLink(url, fileName);
|
|
64
|
+
return [2 /*return*/];
|
|
65
|
+
}
|
|
66
|
+
if (!(canUseFileShare() && canShareFiles([new File([], fileName, { type: fileType })]))) return [3 /*break*/, 5];
|
|
67
|
+
_e.label = 1;
|
|
68
|
+
case 1:
|
|
69
|
+
_e.trys.push([1, 4, , 5]);
|
|
70
|
+
return [4 /*yield*/, getBlob(url)];
|
|
71
|
+
case 2:
|
|
72
|
+
blob = _e.sent();
|
|
73
|
+
file = new File([blob], fileName, { type: blob.type || fileType });
|
|
74
|
+
if (!canShareFiles([file])) {
|
|
75
|
+
downloadWithBlob(blob, fileName);
|
|
76
|
+
return [2 /*return*/];
|
|
77
|
+
}
|
|
78
|
+
return [4 /*yield*/, navigator.share({
|
|
79
|
+
files: [file],
|
|
80
|
+
title: "\u0421\u043A\u0430\u0447\u0430\u0442\u044C ".concat(fileName),
|
|
81
|
+
})];
|
|
82
|
+
case 3:
|
|
83
|
+
_e.sent();
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
case 4:
|
|
86
|
+
error_1 = _e.sent();
|
|
87
|
+
if (isAbortError(error_1)) {
|
|
88
|
+
return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
downloadWithLink(url, fileName);
|
|
91
|
+
return [2 /*return*/];
|
|
92
|
+
case 5:
|
|
93
|
+
_e.trys.push([5, 7, , 8]);
|
|
94
|
+
return [4 /*yield*/, getBlob(url)];
|
|
95
|
+
case 6:
|
|
96
|
+
blob = _e.sent();
|
|
97
|
+
downloadWithBlob(blob, fileName);
|
|
98
|
+
return [3 /*break*/, 8];
|
|
99
|
+
case 7:
|
|
100
|
+
_e.sent();
|
|
101
|
+
downloadWithLink(url, fileName);
|
|
102
|
+
return [3 /*break*/, 8];
|
|
103
|
+
case 8: return [2 /*return*/];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}); };
|
|
107
|
+
|
|
108
|
+
export { downloadFile };
|
|
109
|
+
//# sourceMappingURL=modern-download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modern-download.js","sources":["../../src/utils/modern-download.ts"],"sourcesContent":["const downloadWithBlob = (blob: Blob, fileName: string): void => {\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.href = url;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setTimeout(() => URL.revokeObjectURL(url), 100);\n};\n\nconst downloadWithLink = (url: string, fileName: string): void => {\n const link = document.createElement('a');\n\n link.href = url;\n link.download = fileName;\n link.target = '_blank';\n link.rel = 'noopener noreferrer';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nconst canUseBlobDownload = (): boolean =>\n typeof fetch === 'function' &&\n typeof URL.createObjectURL === 'function' &&\n typeof URL.revokeObjectURL === 'function';\n\nconst canUseFileShare = (): boolean =>\n typeof File === 'function' &&\n typeof navigator !== 'undefined' &&\n typeof navigator.share === 'function' &&\n typeof navigator.canShare === 'function';\n\nconst canShareFiles = (files: File[]): boolean =>\n canUseFileShare() && navigator.canShare({ files });\n\nconst getBlob = async (url: string): Promise<Blob> => {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error('Network error');\n }\n\n return response.blob();\n};\n\nconst isAbortError = (error: unknown): boolean =>\n typeof DOMException !== 'undefined' &&\n error instanceof DOMException &&\n error.name === 'AbortError';\n\nexport interface DownloadOptions {\n url: string;\n fileName?: string;\n fileType?: string;\n}\n\nexport const downloadFile = async ({\n url,\n fileName = 'download',\n fileType,\n}: DownloadOptions): Promise<void> => {\n if (!canUseBlobDownload()) {\n downloadWithLink(url, fileName);\n\n return;\n }\n\n if (canUseFileShare() && canShareFiles([new File([], fileName, { type: fileType })])) {\n try {\n const blob = await getBlob(url);\n\n const file = new File([blob], fileName, { type: blob.type || fileType });\n\n if (!canShareFiles([file])) {\n downloadWithBlob(blob, fileName);\n\n return;\n }\n\n await navigator.share({\n files: [file],\n title: `Скачать ${fileName}`,\n });\n\n return;\n } catch (error) {\n if (isAbortError(error)) {\n return;\n }\n\n downloadWithLink(url, fileName);\n\n return;\n }\n }\n\n try {\n const blob = await getBlob(url);\n\n downloadWithBlob(blob, fileName);\n } catch {\n downloadWithLink(url, fileName);\n }\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib = require('tslib');
|
|
6
5
|
var React = require('react');
|
|
7
6
|
var context = require('../context.js');
|
|
8
7
|
|
|
9
|
-
var
|
|
8
|
+
var SUBTITLES_FADE_DURATION_SECONDS = 0.5;
|
|
10
9
|
var useCustomSubtitles = function () {
|
|
11
10
|
var _a;
|
|
12
11
|
var getCurrentImageMeta = React.useContext(context.GalleryContext).getCurrentImageMeta;
|
|
@@ -15,24 +14,71 @@ var useCustomSubtitles = function () {
|
|
|
15
14
|
var _c = React.useState(''), currentSub = _c[0], setCurrentSub = _c[1];
|
|
16
15
|
var player = (_a = meta === null || meta === void 0 ? void 0 : meta.player) === null || _a === void 0 ? void 0 : _a.current;
|
|
17
16
|
React.useEffect(function () {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
if (!player) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
var textTracks = player.textTracks;
|
|
21
|
+
var textTrack;
|
|
22
|
+
var hideTimeoutId;
|
|
23
|
+
var clearHideTimeout = function () {
|
|
24
|
+
if (hideTimeoutId !== undefined) {
|
|
25
|
+
clearTimeout(hideTimeoutId);
|
|
26
|
+
hideTimeoutId = undefined;
|
|
22
27
|
}
|
|
23
|
-
|
|
28
|
+
};
|
|
29
|
+
var syncSubtitles = function () {
|
|
30
|
+
var _a;
|
|
31
|
+
clearHideTimeout();
|
|
24
32
|
var activeCue = (_a = textTrack === null || textTrack === void 0 ? void 0 : textTrack.activeCues) === null || _a === void 0 ? void 0 : _a[0];
|
|
25
33
|
if (!(activeCue === null || activeCue === void 0 ? void 0 : activeCue.text)) {
|
|
26
34
|
setShowSub(false);
|
|
27
35
|
return;
|
|
28
36
|
}
|
|
29
|
-
var
|
|
30
|
-
|
|
37
|
+
var fadeStartTime = activeCue.endTime - SUBTITLES_FADE_DURATION_SECONDS;
|
|
38
|
+
var isVisible = player.currentTime <= fadeStartTime;
|
|
31
39
|
setCurrentSub(activeCue.text);
|
|
32
40
|
setShowSub(isVisible);
|
|
33
|
-
|
|
41
|
+
if (!isVisible || player.paused || player.playbackRate <= 0) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
var timeUntilFadeMs = ((fadeStartTime - player.currentTime) / player.playbackRate) * 1000;
|
|
45
|
+
hideTimeoutId = setTimeout(function () {
|
|
46
|
+
setShowSub(false);
|
|
47
|
+
}, timeUntilFadeMs);
|
|
48
|
+
};
|
|
49
|
+
var connectTextTrack = function () {
|
|
50
|
+
var nextTextTrack = Array.from(textTracks).find(function (track) { return track.kind === 'subtitles'; });
|
|
51
|
+
if (nextTextTrack === textTrack) {
|
|
52
|
+
syncSubtitles();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.removeEventListener('cuechange', syncSubtitles);
|
|
56
|
+
textTrack = nextTextTrack;
|
|
57
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.addEventListener('cuechange', syncSubtitles);
|
|
58
|
+
syncSubtitles();
|
|
59
|
+
};
|
|
60
|
+
player.addEventListener('play', syncSubtitles);
|
|
61
|
+
player.addEventListener('playing', syncSubtitles);
|
|
62
|
+
player.addEventListener('pause', clearHideTimeout);
|
|
63
|
+
player.addEventListener('waiting', clearHideTimeout);
|
|
64
|
+
player.addEventListener('seeking', clearHideTimeout);
|
|
65
|
+
player.addEventListener('seeked', syncSubtitles);
|
|
66
|
+
player.addEventListener('ratechange', syncSubtitles);
|
|
67
|
+
textTracks.addEventListener('addtrack', connectTextTrack);
|
|
68
|
+
textTracks.addEventListener('change', connectTextTrack);
|
|
69
|
+
connectTextTrack();
|
|
34
70
|
return function () {
|
|
35
|
-
|
|
71
|
+
clearHideTimeout();
|
|
72
|
+
textTrack === null || textTrack === void 0 ? void 0 : textTrack.removeEventListener('cuechange', syncSubtitles);
|
|
73
|
+
player.removeEventListener('play', syncSubtitles);
|
|
74
|
+
player.removeEventListener('playing', syncSubtitles);
|
|
75
|
+
player.removeEventListener('pause', clearHideTimeout);
|
|
76
|
+
player.removeEventListener('waiting', clearHideTimeout);
|
|
77
|
+
player.removeEventListener('seeking', clearHideTimeout);
|
|
78
|
+
player.removeEventListener('seeked', syncSubtitles);
|
|
79
|
+
player.removeEventListener('ratechange', syncSubtitles);
|
|
80
|
+
textTracks.removeEventListener('addtrack', connectTextTrack);
|
|
81
|
+
textTracks.removeEventListener('change', connectTextTrack);
|
|
36
82
|
};
|
|
37
83
|
}, [player]);
|
|
38
84
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-custom-subtitles.js","sources":["../src/hooks/use-custom-subtitles.ts"],"sourcesContent":["import { useContext, useEffect, useState } from 'react';\n\nimport { GalleryContext } from '../context';\n\nconst
|
|
1
|
+
{"version":3,"file":"use-custom-subtitles.js","sources":["../src/hooks/use-custom-subtitles.ts"],"sourcesContent":["import { useContext, useEffect, useState } from 'react';\n\nimport { GalleryContext } from '../context';\n\nconst SUBTITLES_FADE_DURATION_SECONDS = 0.5;\n\nexport const useCustomSubtitles = () => {\n const { getCurrentImageMeta } = useContext(GalleryContext);\n\n const meta = getCurrentImageMeta();\n\n const [showSub, setShowSub] = useState(false);\n const [currentSub, setCurrentSub] = useState('');\n\n const player = meta?.player?.current;\n\n useEffect(() => {\n if (!player) {\n return undefined;\n }\n\n const { textTracks } = player;\n\n let textTrack: TextTrack | undefined;\n let hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const clearHideTimeout = () => {\n if (hideTimeoutId !== undefined) {\n clearTimeout(hideTimeoutId);\n hideTimeoutId = undefined;\n }\n };\n\n const syncSubtitles = () => {\n clearHideTimeout();\n\n const activeCue = textTrack?.activeCues?.[0] as VTTCue | undefined;\n\n if (!activeCue?.text) {\n setShowSub(false);\n\n return;\n }\n\n const fadeStartTime = activeCue.endTime - SUBTITLES_FADE_DURATION_SECONDS;\n const isVisible = player.currentTime <= fadeStartTime;\n\n setCurrentSub(activeCue.text);\n setShowSub(isVisible);\n\n if (!isVisible || player.paused || player.playbackRate <= 0) {\n return;\n }\n\n const timeUntilFadeMs =\n ((fadeStartTime - player.currentTime) / player.playbackRate) * 1000;\n\n hideTimeoutId = setTimeout(() => {\n setShowSub(false);\n }, timeUntilFadeMs);\n };\n\n const connectTextTrack = () => {\n const nextTextTrack = Array.from(textTracks).find(\n (track) => track.kind === 'subtitles',\n );\n\n if (nextTextTrack === textTrack) {\n syncSubtitles();\n\n return;\n }\n\n textTrack?.removeEventListener('cuechange', syncSubtitles);\n textTrack = nextTextTrack;\n textTrack?.addEventListener('cuechange', syncSubtitles);\n syncSubtitles();\n };\n\n player.addEventListener('play', syncSubtitles);\n player.addEventListener('playing', syncSubtitles);\n player.addEventListener('pause', clearHideTimeout);\n player.addEventListener('waiting', clearHideTimeout);\n player.addEventListener('seeking', clearHideTimeout);\n player.addEventListener('seeked', syncSubtitles);\n player.addEventListener('ratechange', syncSubtitles);\n textTracks.addEventListener('addtrack', connectTextTrack);\n textTracks.addEventListener('change', connectTextTrack);\n\n connectTextTrack();\n\n return () => {\n clearHideTimeout();\n textTrack?.removeEventListener('cuechange', syncSubtitles);\n player.removeEventListener('play', syncSubtitles);\n player.removeEventListener('playing', syncSubtitles);\n player.removeEventListener('pause', clearHideTimeout);\n player.removeEventListener('waiting', clearHideTimeout);\n player.removeEventListener('seeking', clearHideTimeout);\n player.removeEventListener('seeked', syncSubtitles);\n player.removeEventListener('ratechange', syncSubtitles);\n textTracks.removeEventListener('addtrack', connectTextTrack);\n textTracks.removeEventListener('change', connectTextTrack);\n };\n }, [player]);\n\n return {\n showSub,\n currentSub,\n };\n};\n"],"names":["useContext","GalleryContext","useState","useEffect"],"mappings":"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"}
|
package/index.css
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
--sat: env(safe-area-inset-top, var(--gap-0));
|
|
12
12
|
--sab: env(safe-area-inset-bottom, var(--gap-0));
|
|
13
13
|
}
|
|
14
|
-
.
|
|
14
|
+
.gallery__container_1kzqo {
|
|
15
15
|
position: relative;
|
|
16
16
|
overflow-x: hidden;
|
|
17
17
|
overflow-y: auto;
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
padding-top: var(--sat);
|
|
26
26
|
padding-bottom: var(--sab);
|
|
27
27
|
}
|
|
28
|
-
.
|
|
28
|
+
.gallery__container_1kzqo.gallery__mobile_1kzqo {
|
|
29
29
|
overflow: hidden;
|
|
30
30
|
}
|
|
31
|
-
.
|
|
31
|
+
.gallery__modal_1kzqo {
|
|
32
32
|
flex-grow: 1;
|
|
33
33
|
width: 100vw;
|
|
34
34
|
height: 100vh;
|
|
35
35
|
height: 100dvh;
|
|
36
36
|
background: transparent;
|
|
37
37
|
}
|
|
38
|
-
.
|
|
38
|
+
.gallery__navigationVideo_1kzqo {
|
|
39
39
|
z-index: 3;
|
|
40
40
|
width: 100%;
|
|
41
41
|
position: absolute;
|
|
@@ -44,18 +44,18 @@
|
|
|
44
44
|
transition: transform 0.3s ease-in-out;
|
|
45
45
|
text-align: center;
|
|
46
46
|
}
|
|
47
|
-
.
|
|
47
|
+
.gallery__hide_1kzqo {
|
|
48
48
|
transform: translateY(114px);
|
|
49
49
|
}
|
|
50
|
-
.
|
|
50
|
+
.gallery__hideInfo_1kzqo {
|
|
51
51
|
transform: translateY(48px);
|
|
52
52
|
}
|
|
53
|
-
.
|
|
53
|
+
.gallery__bottomButton_1kzqo {
|
|
54
54
|
width: calc(100% - var(--gap-32));
|
|
55
55
|
margin: var(--gap-16);
|
|
56
56
|
background-color: var(--color-static-neutral-translucent-500-inverted);
|
|
57
57
|
}
|
|
58
|
-
.
|
|
58
|
+
.gallery__subtitles_1kzqo {
|
|
59
59
|
padding: var(--gap-0) var(--gap-32);
|
|
60
60
|
margin-bottom: var(--gap-16);
|
|
61
61
|
width: 100%;
|
|
@@ -66,6 +66,6 @@
|
|
|
66
66
|
opacity 500ms ease-in-out,
|
|
67
67
|
margin-bottom 270ms ease-in-out;
|
|
68
68
|
}
|
|
69
|
-
.
|
|
69
|
+
.gallery__hideSubtitles_1kzqo {
|
|
70
70
|
opacity: 0;
|
|
71
71
|
}
|