tmg-media-player 0.0.42 → 0.0.44
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/{chunk-XN5CVECC.js → chunk-2R2AAV4Y.js} +56 -56
- package/dist/{chunk-U6XDI2FQ.js → chunk-2VXGUKAW.js} +2 -2
- package/dist/chunk-2VXGUKAW.js.map +1 -0
- package/dist/{chunk-4JJV6NZM.js → chunk-GS7D7I7X.js} +2 -2
- package/dist/{chunk-4JJV6NZM.js.map → chunk-GS7D7I7X.js.map} +1 -1
- package/dist/{chunk-6WK4XXTL.js → chunk-MSP3WUNO.js} +4 -4
- package/dist/{chunk-C5VHC67O.js → chunk-NGCMGTU6.js} +2 -2
- package/dist/{chunk-PXK56QO3.js → chunk-PIHNTBUU.js} +2 -2
- package/dist/chunk-PIHNTBUU.js.map +1 -0
- package/dist/{chunk-PZWBGXMX.js → chunk-QZLPEALR.js} +3 -3
- package/dist/chunk-QZLPEALR.js.map +1 -0
- package/dist/{chunk-X24LFSYJ.js → chunk-RKKQSC3R.js} +4 -4
- package/dist/chunk-RKKQSC3R.js.map +1 -0
- package/dist/{chunk-LQSU7JDG.js → chunk-WA5VZIDC.js} +5 -5
- package/dist/{chunk-ROJPK64M.js → chunk-X2PY4DAZ.js} +2 -2
- package/dist/{chunk-3JYTCSCR.js → chunk-YE3BZM2J.js} +27 -27
- package/dist/{chunk-O6VCD64X.js → chunk-ZWZMWXXS.js} +32 -32
- package/dist/components/controls/airplay.js +1 -1
- package/dist/components/controls/backward10.js +1 -1
- package/dist/components/controls/bigNext.js +1 -1
- package/dist/components/controls/bigPlayPause.js +1 -1
- package/dist/components/controls/bigPrevious.js +1 -1
- package/dist/components/controls/brightness/index.js +1 -1
- package/dist/components/controls/captions.js +1 -1
- package/dist/components/controls/capture.js +1 -1
- package/dist/components/controls/cast.js +1 -1
- package/dist/components/controls/expandMiniplayer.js +1 -1
- package/dist/components/controls/forward10.js +1 -1
- package/dist/components/controls/fullscreen.js +1 -1
- package/dist/components/controls/fullscreenLock.js +1 -1
- package/dist/components/controls/fullscreenOrientation.js +1 -1
- package/dist/components/controls/next.js +1 -1
- package/dist/components/controls/objectFit.js +1 -1
- package/dist/components/controls/pictureInPicture.js +1 -1
- package/dist/components/controls/playPause.js +1 -1
- package/dist/components/controls/previous.js +1 -1
- package/dist/components/controls/removeMiniplayer.js +1 -1
- package/dist/components/controls/settings.js +1 -1
- package/dist/components/controls/theater.js +1 -1
- package/dist/components/controls/timeline/index.js +1 -1
- package/dist/components/controls/voice.js +1 -1
- package/dist/components/controls/volume/index.js +1 -1
- package/dist/components/holders/airplayPlaceholder.js +1 -1
- package/dist/components/holders/castPlaceholder.js +1 -1
- package/dist/components/holders/errorPlaceholder.js +1 -1
- package/dist/components/holders/pipPlaceholder.js +1 -1
- package/dist/components/notifiers/airplay.js +1 -1
- package/dist/components/notifiers/brightness.js +1 -1
- package/dist/components/notifiers/captions.js +1 -1
- package/dist/components/notifiers/capture.js +1 -1
- package/dist/components/notifiers/cast.js +1 -1
- package/dist/components/notifiers/fastPlay.js +1 -1
- package/dist/components/notifiers/fwdBwd.js +1 -1
- package/dist/components/notifiers/objectFit.js +1 -1
- package/dist/components/notifiers/playPause.js +1 -1
- package/dist/components/notifiers/playbackRate.js +1 -1
- package/dist/components/notifiers/prevNext.js +1 -1
- package/dist/components/notifiers/scrub.js +1 -1
- package/dist/components/notifiers/touchBrightness.js +1 -1
- package/dist/components/notifiers/touchVolume.js +1 -1
- package/dist/components/notifiers/volume.js +1 -1
- package/dist/components/notifiers/z-register.js +1 -1
- package/dist/components/screenLock.js +1 -1
- package/dist/components/z-register.js +1 -1
- package/dist/core/controller.js +1 -1
- package/dist/index.js +1 -1
- package/dist/init.js +1 -1
- package/dist/plugs/base/index.js +1 -1
- package/dist/plugs/base/slider.js +1 -1
- package/dist/plugs/main/ads/index.js +1 -1
- package/dist/plugs/main/disabled/index.js +1 -1
- package/dist/plugs/main/light/index.js +1 -1
- package/dist/plugs/main/playlist/index.js +1 -1
- package/dist/plugs/main/skeleton/index.js +1 -1
- package/dist/plugs/menus/main/actions.js +1 -1
- package/dist/plugs/menus/settings/auto.js +1 -1
- package/dist/plugs/menus/settings/frame.js +1 -1
- package/dist/plugs/menus/settings/keys.cjs +2 -2
- package/dist/plugs/menus/settings/keys.cjs.map +1 -1
- package/dist/plugs/menus/settings/keys.js +3 -3
- package/dist/plugs/menus/settings/modes.js +1 -1
- package/dist/plugs/menus/settings/sleepTimer.js +1 -1
- package/dist/plugs/menus/settings/toasts.js +1 -1
- package/dist/plugs/menus/settings/voice.js +1 -1
- package/dist/plugs/menus/z-register.cjs +2 -2
- package/dist/plugs/menus/z-register.cjs.map +1 -1
- package/dist/plugs/menus/z-register.js +16 -16
- package/dist/plugs/settings/ambience/index.js +1 -1
- package/dist/plugs/settings/auto/index.js +1 -1
- package/dist/plugs/settings/brightness/index.js +1 -1
- package/dist/plugs/settings/captions/index.js +1 -1
- package/dist/plugs/settings/controlPanel/draggable.js +1 -1
- package/dist/plugs/settings/controlPanel/index.js +1 -1
- package/dist/plugs/settings/css/index.js +1 -1
- package/dist/plugs/settings/errors/index.js +1 -1
- package/dist/plugs/settings/fastPlay/index.js +1 -1
- package/dist/plugs/settings/frame/index.cjs +1 -1
- package/dist/plugs/settings/frame/index.cjs.map +1 -1
- package/dist/plugs/settings/frame/index.js +2 -2
- package/dist/plugs/settings/gesture/base.js +1 -1
- package/dist/plugs/settings/gesture/index.js +1 -1
- package/dist/plugs/settings/gesture/touch.js +1 -1
- package/dist/plugs/settings/gesture/wheel.js +1 -1
- package/dist/plugs/settings/keys/build.cjs +2 -2
- package/dist/plugs/settings/keys/build.cjs.map +1 -1
- package/dist/plugs/settings/keys/build.js +1 -1
- package/dist/plugs/settings/keys/index.cjs +2 -2
- package/dist/plugs/settings/keys/index.cjs.map +1 -1
- package/dist/plugs/settings/keys/index.js +3 -3
- package/dist/plugs/settings/locked/index.cjs +1 -1
- package/dist/plugs/settings/locked/index.cjs.map +1 -1
- package/dist/plugs/settings/locked/index.js +2 -2
- package/dist/plugs/settings/metadata/index.js +1 -1
- package/dist/plugs/settings/modes/airplay.js +1 -1
- package/dist/plugs/settings/modes/cast.js +1 -1
- package/dist/plugs/settings/modes/fullscreen.js +1 -1
- package/dist/plugs/settings/modes/index.js +1 -1
- package/dist/plugs/settings/modes/miniplayer.js +1 -1
- package/dist/plugs/settings/modes/pictureInPicture.js +1 -1
- package/dist/plugs/settings/modes/theater.js +1 -1
- package/dist/plugs/settings/notifiers/index.js +1 -1
- package/dist/plugs/settings/objectFit/index.js +1 -1
- package/dist/plugs/settings/overlay/index.js +1 -1
- package/dist/plugs/settings/panel/index.cjs +3 -3
- package/dist/plugs/settings/panel/index.cjs.map +1 -1
- package/dist/plugs/settings/panel/index.js +2 -2
- package/dist/plugs/settings/panel/menu/index.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/main.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/sub.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/base.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/button.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/color.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/dragselect.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/group.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/index.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/input.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/limits.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/range.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/select.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/toggle.js +1 -1
- package/dist/plugs/settings/persist/index.js +1 -1
- package/dist/plugs/settings/playbackRate/index.js +1 -1
- package/dist/plugs/settings/poster/index.cjs +1 -1
- package/dist/plugs/settings/poster/index.cjs.map +1 -1
- package/dist/plugs/settings/poster/index.js +2 -2
- package/dist/plugs/settings/sleepTimer/index.js +1 -1
- package/dist/plugs/settings/time/index.js +1 -1
- package/dist/plugs/settings/timeTravel/index.js +1 -1
- package/dist/plugs/settings/toasts/index.js +1 -1
- package/dist/plugs/settings/voice/index.js +1 -1
- package/dist/plugs/settings/volume/index.js +1 -1
- package/dist/plugs/z-register.cjs +8 -8
- package/dist/plugs/z-register.cjs.map +1 -1
- package/dist/plugs/z-register.js +24 -24
- package/dist/super/components/index.js +2 -2
- package/dist/super/components/notifiers.js +1 -1
- package/dist/super/consts.js +5 -5
- package/dist/super/plugs/index.cjs +8 -8
- package/dist/super/plugs/index.cjs.map +1 -1
- package/dist/super/plugs/index.js +71 -71
- package/dist/super/plugs/menus.cjs +2 -2
- package/dist/super/plugs/menus.cjs.map +1 -1
- package/dist/super/plugs/menus.js +35 -35
- package/dist/super/techs.js +5 -5
- package/dist/super.cjs +8 -8
- package/dist/super.cjs.map +1 -1
- package/dist/super.global.js +26 -25
- package/dist/super.global.js.map +1 -1
- package/dist/super.js +56 -56
- package/dist/techs/dash.js +1 -1
- package/dist/techs/hls.js +1 -1
- package/dist/techs/html5.js +1 -1
- package/dist/techs/ima.js +1 -1
- package/dist/techs/shaka.js +1 -1
- package/dist/techs/youtube.js +1 -1
- package/dist/techs/z-register.js +1 -1
- package/dist/tools/player.js +1 -1
- package/dist/tools/runtime/index.js +1 -1
- package/package.json +6 -6
- package/dist/chunk-PXK56QO3.js.map +0 -1
- package/dist/chunk-PZWBGXMX.js.map +0 -1
- package/dist/chunk-U6XDI2FQ.js.map +0 -1
- package/dist/chunk-X24LFSYJ.js.map +0 -1
- /package/dist/{chunk-XN5CVECC.js.map → chunk-2R2AAV4Y.js.map} +0 -0
- /package/dist/{chunk-6WK4XXTL.js.map → chunk-MSP3WUNO.js.map} +0 -0
- /package/dist/{chunk-C5VHC67O.js.map → chunk-NGCMGTU6.js.map} +0 -0
- /package/dist/{chunk-LQSU7JDG.js.map → chunk-WA5VZIDC.js.map} +0 -0
- /package/dist/{chunk-ROJPK64M.js.map → chunk-X2PY4DAZ.js.map} +0 -0
- /package/dist/{chunk-3JYTCSCR.js.map → chunk-YE3BZM2J.js.map} +0 -0
- /package/dist/{chunk-O6VCD64X.js.map → chunk-ZWZMWXXS.js.map} +0 -0
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
VoicePlug
|
|
3
|
-
} from "./chunk-UCO75OSK.js";
|
|
4
|
-
import {
|
|
5
|
-
VOICE_BUILD,
|
|
6
|
-
VOICE_COMMANDS
|
|
7
|
-
} from "./chunk-F6YDG235.js";
|
|
8
1
|
import {
|
|
9
2
|
VolumePlug
|
|
10
3
|
} from "./chunk-I6Q53IPI.js";
|
|
@@ -12,14 +5,21 @@ import {
|
|
|
12
5
|
VOLUME_BUILD
|
|
13
6
|
} from "./chunk-Q2XYS26I.js";
|
|
14
7
|
import {
|
|
15
|
-
|
|
16
|
-
} from "./chunk-
|
|
8
|
+
VoicePlug
|
|
9
|
+
} from "./chunk-UCO75OSK.js";
|
|
17
10
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
VOICE_BUILD,
|
|
12
|
+
VOICE_COMMANDS
|
|
13
|
+
} from "./chunk-F6YDG235.js";
|
|
14
|
+
import {
|
|
15
|
+
PosterPlug
|
|
16
|
+
} from "./chunk-PIHNTBUU.js";
|
|
20
17
|
import {
|
|
21
18
|
TimePlug
|
|
22
19
|
} from "./chunk-XNQILPYL.js";
|
|
20
|
+
import {
|
|
21
|
+
TIME_BUILD
|
|
22
|
+
} from "./chunk-2SZXTLHZ.js";
|
|
23
23
|
import {
|
|
24
24
|
TimeTravelPlug
|
|
25
25
|
} from "./chunk-SUEKTA5D.js";
|
|
@@ -27,11 +27,11 @@ import {
|
|
|
27
27
|
TIME_TRAVEL_BUILD
|
|
28
28
|
} from "./chunk-33JQXI7I.js";
|
|
29
29
|
import {
|
|
30
|
-
|
|
31
|
-
} from "./chunk-
|
|
30
|
+
PlaybackRatePlug
|
|
31
|
+
} from "./chunk-JDC4FBXX.js";
|
|
32
32
|
import {
|
|
33
|
-
|
|
34
|
-
} from "./chunk-
|
|
33
|
+
PLAYBACK_RATE_BUILD
|
|
34
|
+
} from "./chunk-K7AAKFQF.js";
|
|
35
35
|
import {
|
|
36
36
|
SleepTimerPlug
|
|
37
37
|
} from "./chunk-PI7JPTSL.js";
|
|
@@ -39,27 +39,27 @@ import {
|
|
|
39
39
|
SLEEP_TIMER_BUILD
|
|
40
40
|
} from "./chunk-XLFHANYG.js";
|
|
41
41
|
import {
|
|
42
|
-
|
|
43
|
-
} from "./chunk-
|
|
44
|
-
import {
|
|
45
|
-
PersistPlug
|
|
46
|
-
} from "./chunk-JCSBCUKA.js";
|
|
47
|
-
import {
|
|
48
|
-
PERSIST_BUILD
|
|
49
|
-
} from "./chunk-NAUZH3E6.js";
|
|
42
|
+
POSTER_BUILD
|
|
43
|
+
} from "./chunk-MBRGHAFE.js";
|
|
50
44
|
import {
|
|
51
45
|
PanelPlug
|
|
52
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-RKKQSC3R.js";
|
|
53
47
|
import {
|
|
54
48
|
MENU_FOCUS_SELECTOR,
|
|
55
49
|
SETTINGS_BUILD
|
|
56
50
|
} from "./chunk-H3WJQ4QQ.js";
|
|
57
51
|
import {
|
|
58
|
-
|
|
59
|
-
} from "./chunk-
|
|
52
|
+
PersistPlug
|
|
53
|
+
} from "./chunk-JCSBCUKA.js";
|
|
60
54
|
import {
|
|
61
|
-
|
|
62
|
-
} from "./chunk-
|
|
55
|
+
PERSIST_BUILD
|
|
56
|
+
} from "./chunk-NAUZH3E6.js";
|
|
57
|
+
import {
|
|
58
|
+
OverlayPlug
|
|
59
|
+
} from "./chunk-AUHJS22O.js";
|
|
60
|
+
import {
|
|
61
|
+
OVERLAY_BUILD
|
|
62
|
+
} from "./chunk-PXU563OY.js";
|
|
63
63
|
import {
|
|
64
64
|
NotifiersPlug
|
|
65
65
|
} from "./chunk-KST5YWTX.js";
|
|
@@ -91,15 +91,15 @@ import {
|
|
|
91
91
|
ORIENTATION_OPTS,
|
|
92
92
|
RESIZE_DIRS
|
|
93
93
|
} from "./chunk-OBT4ZZUV.js";
|
|
94
|
-
import {
|
|
95
|
-
KeysPlug
|
|
96
|
-
} from "./chunk-ROJPK64M.js";
|
|
97
94
|
import {
|
|
98
95
|
LockedPlug
|
|
99
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-GS7D7I7X.js";
|
|
100
97
|
import {
|
|
101
98
|
LOCKED_BUILD
|
|
102
99
|
} from "./chunk-IQS7GQSK.js";
|
|
100
|
+
import {
|
|
101
|
+
KeysPlug
|
|
102
|
+
} from "./chunk-X2PY4DAZ.js";
|
|
103
103
|
import {
|
|
104
104
|
MetadataPlug
|
|
105
105
|
} from "./chunk-65ZJKSNP.js";
|
|
@@ -108,7 +108,7 @@ import {
|
|
|
108
108
|
} from "./chunk-VZG6IJLU.js";
|
|
109
109
|
import {
|
|
110
110
|
FramePlug
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-2VXGUKAW.js";
|
|
112
112
|
import {
|
|
113
113
|
GesturePlug,
|
|
114
114
|
GestureTouchPin,
|
|
@@ -162,6 +162,15 @@ import {
|
|
|
162
162
|
APT_AUTOPLAY_OPTIONS,
|
|
163
163
|
AUTO_BUILD
|
|
164
164
|
} from "./chunk-ITCB3POV.js";
|
|
165
|
+
import {
|
|
166
|
+
PlaylistPlug
|
|
167
|
+
} from "./chunk-3VN6SCE4.js";
|
|
168
|
+
import {
|
|
169
|
+
LightPlug
|
|
170
|
+
} from "./chunk-AKSQNAZS.js";
|
|
171
|
+
import {
|
|
172
|
+
LIGHT_BUILD
|
|
173
|
+
} from "./chunk-ZFOHXLB2.js";
|
|
165
174
|
import {
|
|
166
175
|
BrightnessPlug
|
|
167
176
|
} from "./chunk-X543EHRV.js";
|
|
@@ -174,6 +183,13 @@ import {
|
|
|
174
183
|
import {
|
|
175
184
|
AMBIENT_BUILD
|
|
176
185
|
} from "./chunk-PPWMZTPS.js";
|
|
186
|
+
import {
|
|
187
|
+
AdsPlug
|
|
188
|
+
} from "./chunk-6CXX7WZO.js";
|
|
189
|
+
import {
|
|
190
|
+
ADS_BUILD,
|
|
191
|
+
AD_ROLL_BUILD
|
|
192
|
+
} from "./chunk-IW5NSWNS.js";
|
|
177
193
|
import {
|
|
178
194
|
SkeletonPlug
|
|
179
195
|
} from "./chunk-EO2SYXX5.js";
|
|
@@ -186,31 +202,10 @@ import {
|
|
|
186
202
|
import {
|
|
187
203
|
DISABLED_BUILD
|
|
188
204
|
} from "./chunk-WW56NFQS.js";
|
|
189
|
-
import {
|
|
190
|
-
LightPlug
|
|
191
|
-
} from "./chunk-AKSQNAZS.js";
|
|
192
|
-
import {
|
|
193
|
-
LIGHT_BUILD
|
|
194
|
-
} from "./chunk-ZFOHXLB2.js";
|
|
195
|
-
import {
|
|
196
|
-
PlaylistPlug
|
|
197
|
-
} from "./chunk-3VN6SCE4.js";
|
|
198
|
-
import {
|
|
199
|
-
AdsPlug
|
|
200
|
-
} from "./chunk-6CXX7WZO.js";
|
|
201
|
-
import {
|
|
202
|
-
ADS_BUILD,
|
|
203
|
-
AD_ROLL_BUILD
|
|
204
|
-
} from "./chunk-IW5NSWNS.js";
|
|
205
205
|
import {
|
|
206
206
|
BasePin,
|
|
207
207
|
BasePlug
|
|
208
208
|
} from "./chunk-5EKOUIF3.js";
|
|
209
|
-
import {
|
|
210
|
-
CAPTIONS_BUILD,
|
|
211
|
-
ROTATE_PATHS,
|
|
212
|
-
STYLE_PATHS
|
|
213
|
-
} from "./chunk-IFRYW3PY.js";
|
|
214
209
|
import {
|
|
215
210
|
CONTROLS,
|
|
216
211
|
CONTROL_PANEL_BUILD,
|
|
@@ -223,7 +218,12 @@ import {
|
|
|
223
218
|
KEYS_OVERIDES,
|
|
224
219
|
KEYS_SHORTCUTS,
|
|
225
220
|
KEYS_WHITELIST
|
|
226
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-QZLPEALR.js";
|
|
222
|
+
import {
|
|
223
|
+
CAPTIONS_BUILD,
|
|
224
|
+
ROTATE_PATHS,
|
|
225
|
+
STYLE_PATHS
|
|
226
|
+
} from "./chunk-IFRYW3PY.js";
|
|
227
227
|
import {
|
|
228
228
|
PLAYLIST_BUILD,
|
|
229
229
|
PLAY_ITEM_BUILD
|
|
@@ -340,4 +340,4 @@ __export(plugs_exports, {
|
|
|
340
340
|
export {
|
|
341
341
|
plugs_exports
|
|
342
342
|
};
|
|
343
|
-
//# sourceMappingURL=chunk-
|
|
343
|
+
//# sourceMappingURL=chunk-2R2AAV4Y.js.map
|
|
@@ -43,7 +43,7 @@ var FramePlug = class extends BasePlug {
|
|
|
43
43
|
wire() {
|
|
44
44
|
this.media.watch("tech", this.syncFeatures, { init: true, signal: this.signal });
|
|
45
45
|
this.ctlr.config.watch("settings.frame.disabled", this.syncFeatures, { signal: this.signal });
|
|
46
|
-
this.ctlr.learn("capture", { fn: () => this.capture("") }, this.signal);
|
|
46
|
+
this.ctlr.learn("capture", { fn: (e) => this.capture(e?.altKey ? "monochrome" : "") }, this.signal);
|
|
47
47
|
this.ctlr.learn("timeStepFwd", { fn: () => this.moveFrame("forwards"), keyboard: { phase: "keydown" } }, this.signal);
|
|
48
48
|
this.ctlr.learn("timeStepBwd", { fn: () => this.moveFrame("backwards"), keyboard: { phase: "keydown" } }, this.signal);
|
|
49
49
|
super.wire();
|
|
@@ -115,4 +115,4 @@ __publicField(FramePlug, "BUILD", FRAME_BUILD);
|
|
|
115
115
|
export {
|
|
116
116
|
FramePlug
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-2VXGUKAW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/frame/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { FrameConfig } from \"./types\";\r\nimport { FRAME_BUILD } from \"./build\";\r\nimport { getDominantColor, getRGBBri, getRGBSat } from \"@utils/color\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { clamp, safeNum } from \"@utils/num\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport { formatMediaTime } from \"@utils/time\";\r\nimport { silence } from \"sia-reactor/modules\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { getMediaMin, getMediaMax } from \"@utils/time\";\r\n\r\nexport class FramePlug extends BasePlug<FrameConfig> {\r\n public static readonly plugName = \"frame\";\r\n public static readonly BUILD = FRAME_BUILD;\r\n public exportCanvas: HTMLCanvasElement = createEl(\"canvas\");\r\n public exportCtx: CanvasRenderingContext2D = this.exportCanvas.getContext(\"2d\", { alpha: false })!;\r\n\r\n public override wire(): void {\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", this.syncFeatures, { init: true, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.watch(\"settings.frame.disabled\", this.syncFeatures, { signal: this.signal });\r\n // Post Wiring\r\n this.ctlr.learn(\"capture\", { fn: (e?: KeyboardEvent) => this.capture(e?.altKey ? \"monochrome\" : \"\") }, this.signal);\r\n this.ctlr.learn(\"timeStepFwd\", { fn: () => this.moveFrame(\"forwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n this.ctlr.learn(\"timeStepBwd\", { fn: () => this.moveFrame(\"backwards\"), keyboard: { phase: \"keydown\" } }, this.signal);\r\n super.wire();\r\n }\r\n\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: false, min?: number, video?: HTMLVideoElement): Promise<{ blob: Blob | null; url: string }>;\r\n public async extract(display: \"\" | \"monochrome\", time?: number, raw?: true, min?: number, video?: HTMLVideoElement): Promise<{ canvas: HTMLCanvasElement; context: CanvasRenderingContext2D }>;\r\n public async extract(display: string = \"\", time = safeNum(this.media.state.currentTime), raw = false, min = 0, video = this.media.pseudoElement as HTMLVideoElement): Promise<any> {\r\n if (!this.media.features.frameCapture) return raw ? { canvas: this.exportCanvas, context: (this.exportCtx.clearRect(0, 0, this.exportCanvas.width, this.exportCanvas.height), this.exportCtx) } : { blob: null, url: \"\" };\r\n if (video !== this.media.element) {\r\n if (this.ctlr.state.frameReadyPromise) await this.ctlr.state.frameReadyPromise; // wait for it to get set by last getter 5 lines below\r\n if (Math.abs(video.currentTime - time) > 0.01 || !video.readyState) {\r\n this.ctlr.state.frameReadyPromise ??= new Promise<null>((res, _, cb = () => (clearTimeout(t), res(null)), t?: any) => ([video.readyState ? \"timeupdate\" : \"loadeddata\", \"error\", \"abort\", \"emptied\"].forEach((ev) => video.addEventListener(ev, cb, { once: true, signal: this.signal })), (t = setTimeout(cb, 15000, this.signal)))); // me sef no small, been burned before this\r\n video.currentTime = time; // small epsilon tolerance for video time comparison - 0.01(10ms)\r\n }\r\n this.ctlr.state.frameReadyPromise = await this.ctlr.state.frameReadyPromise;\r\n }\r\n (this.exportCanvas.width = video.videoWidth || min), (this.exportCanvas.height = video.videoHeight || min);\r\n this.exportCtx.filter = `${this.settings.css.filter as string}${display === \"monochrome\" ? \" grayscale(100%)\" : \"\"}`;\r\n this.exportCtx.drawImage(video, 0, 0, this.exportCanvas.width, this.exportCanvas.height);\r\n this.exportCtx.filter = \"none\";\r\n if (raw === true) return { canvas: this.exportCanvas, context: this.exportCtx };\r\n let blob: Blob | null | false | 0 = null;\r\n try {\r\n blob = (this.exportCanvas.width || this.exportCanvas.height) && (await new Promise<Blob | null>((res) => this.exportCanvas.toBlob(res)));\r\n } catch (err) {\r\n this.ctlr.log(err, \"error\", true); // #LESS: error not worth notifying\r\n }\r\n return { blob: blob || null, url: blob ? URL.createObjectURL(blob) : \"\" };\r\n }\r\n\r\n public async capture(display: \"\" | \"monochrome\" = \"\", time = safeNum(this.media.state.currentTime)): Promise<void> {\r\n if (!this.media.features.frameCapture) return;\r\n this.ctlr.notify?.(\"capture\"); // #STALLING: necessary optimistic distraction\r\n const toast = this.ctlr.toast,\r\n tTxt = formatMediaTime({ time, format: \"human\", showMs: true }),\r\n fTxt = `video frame ${display === \"monochrome\" ? \"in b&w \" : \"\"}at ${tTxt}`,\r\n tId = toast?.loading(`Capturing ${fTxt}...`, { delay: parseCSSTime(this.settings.css.notifiersAnimationTime), image: window.TMG_MEDIA_ALT_IMG_SRC, tag: `tmg-${this.media.settings.metadata.title ?? \"Video\"}fcpa${tTxt}${display}`, signal: this.signal, ...this.config.toast }) as string,\r\n frame = await this.extract(display, time, false, 0, this.media.element as HTMLVideoElement),\r\n filename = `${this.media.settings.metadata.title ?? \"Video\"}_${display === \"monochrome\" ? `black&white_` : \"\"}at_${tTxt}.png`.replace(/[\\/:*?\"<>|\\s]+/g, \"_\"); // system filename safe\r\n const Save = () => {\r\n toast?.loading(tId, { render: `Saving ${fTxt}`, actions: false });\r\n createEl(\"a\", { href: frame.url as string, download: filename })?.click?.();\r\n toast?.success(tId, { delay: 1000, render: `Saved ${fTxt}`, actions: false });\r\n };\r\n const Share = () => {\r\n toast?.loading(tId, { render: `Sharing ${fTxt}`, actions: false });\r\n navigator.share?.({ title: this.media.settings.metadata.title ?? \"Video\", text: `Captured ${fTxt}`, files: [new File([frame.blob!], filename, { type: frame.blob!.type })] }).then(\r\n () => toast?.success(tId, { render: `Shared ${fTxt}`, actions: false }),\r\n () => toast?.error(tId, { render: `Failed sharing ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } })\r\n ) || toast?.warn(tId, { delay: 1000, render: `Couldn't share ${fTxt}`, autoClose: this.config.toast.autoClose, actions: { Save } });\r\n };\r\n frame?.url ? toast?.success(tId, { render: `Captured ${fTxt}`, image: frame.url, actions: { Save, Share }, onClose: () => URL.revokeObjectURL(frame.url), autoClose: this.config.toast.autoClose }) : toast?.error(tId, { render: `Failed capturing ${fTxt}` });\r\n }\r\n\r\n public async getGoodTime({ time: t = safeNum(this.media.state.currentTime), secondsLimit: s = 25, saturation: sat = 12, brightness: bri = 40 } = {}): Promise<number | undefined> {\r\n const end = clamp(getMediaMin(this.media), t + s, getMediaMax(this.media)),\r\n seq = ++this.findSeq;\r\n for (; t <= end; t += 0.333) {\r\n if (seq !== this.findSeq) return;\r\n const rgb = await getDominantColor((await this.extract(\"\", t, true, 1)).canvas, \"rgb\", true);\r\n if (rgb && getRGBBri(rgb) > bri && getRGBSat(rgb) > sat) return t; // <= FIRST legit content frame\r\n }\r\n return;\r\n }\r\n private findSeq = 0;\r\n\r\n public async getMainColor(time?: number, poster = this.media.state.poster, config?: Parameters<typeof this.getGoodTime>[0]): Promise<string | null> {\r\n return getDominantColor(poster ? poster : (await this.extract(\"\", time ?? (await this.getGoodTime(config)), true, 1)).canvas);\r\n }\r\n\r\n public moveFrame(dir: \"forwards\" | \"backwards\" = \"forwards\"): void {\r\n this.media.state.paused && this.ctlr.throttle(\"frameStepping\", () => silence(() => (this.media.intent.currentTime = clamp(getMediaMin(this.media), Math.round(this.media.state.currentTime * this.config.fps) + (dir === \"backwards\" ? -1 : 1), Math.floor(getMediaMax(this.media) * this.config.fps)) / this.config.fps)), Math.round(1000 / this.config.fps));\r\n }\r\n\r\n public syncFeatures(): void {\r\n this.media.tech.polyfill(\"frameCapture\", this.ctlr.isNativeEl && this.media.type === \"video\", this.config.disabled);\r\n }\r\n} // Video only\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.frame\": typeof FramePlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n frame: FrameConfig;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/contract\" {\r\n interface MediaFeaturesExt {\r\n frameCapture: boolean;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -63,7 +63,7 @@ var LockedPlug = class extends BasePlug {
|
|
|
63
63
|
}
|
|
64
64
|
// #STANDALONE: needs scoped behavior
|
|
65
65
|
handleScreenClick(e) {
|
|
66
|
-
if (!e.target
|
|
66
|
+
if (!this.config.disabled && e.target === this.media.container) this.state.visible ? this?.hideOverlay() : this?.showOverlay();
|
|
67
67
|
}
|
|
68
68
|
showOverlay() {
|
|
69
69
|
this.media.container.classList.add("tmg-media-locked-overlay");
|
|
@@ -91,4 +91,4 @@ __publicField(LockedPlug, "BUILD", LOCKED_BUILD);
|
|
|
91
91
|
export {
|
|
92
92
|
LockedPlug
|
|
93
93
|
};
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
94
|
+
//# sourceMappingURL=chunk-GS7D7I7X.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ts/plugs/settings/locked/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { LockedConfig, LockedState } from \"./types\";\r\nimport { LOCKED_BUILD } from \"./build\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { ScreenLockButton } from \"@components/screenLock\";\r\nimport type { REvent } from \"sia-reactor\";\r\nimport { ComponentRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { setTimeout, mockAsync } from \"@utils/fn\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport { CtlrMedia } from \"@defs/contract\";\r\n\r\nexport class LockedPlug extends BasePlug<LockedConfig, LockedState> {\r\n public static readonly plugName = \"locked\";\r\n public static readonly BUILD = LOCKED_BUILD;\r\n public lockOverlayDelayId = -1;\r\n public wrapper?: HTMLDivElement;\r\n public control: ScreenLockButton | null = null;\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.locked) {\r\n super(ctlr, config, { visible: false });\r\n }\r\n\r\n public override unmount(): void {\r\n this.wrapper?.remove();\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.media.container.addEventListener(\"click\", this.handleScreenClick, { signal: this.signal });\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", this.syncFeatures, { init: true, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.watch(\"settings.locked.disabled\", this.syncFeatures, { signal: this.signal });\r\n // ---- Media Listeners\r\n this.media.on(\"intent.locked\", this.handleLockedIntent, { capture: true, init: this.ctlr.flags.wired, initType: \"set\", signal: this.signal }); // #HIGHER-POWER: power arbitration\r\n // Post Wiring\r\n super.wire();\r\n }\r\n\r\n protected handleLockedIntent(e: REvent<CtlrMedia, \"intent.locked\">): void {\r\n if (e.resolved) return;\r\n const active = this.ctlr.isUIActive(\"locked\");\r\n e.value ? !active && this.enter() : active && this.exit();\r\n e.resolve(this.name);\r\n }\r\n\r\n protected enter(): void {\r\n this.ctlr.plug(\"settings.panel\")?.exitMore();\r\n this.wrapper ??= this.ctlr.DOM.containerContentWrapper?.appendChild(createEl(\"div\", { className: \"tmg-media-locked-wrapper tmg-media-no-pointer\", innerHTML: `<p>Screen Locked</p><p>Tap to Unlock</p>` }));\r\n this.control ??= ComponentRegistry.init(\"screenLock\", this.ctlr);\r\n setTimeout(this.showOverlay, 0, this.signal);\r\n this.media.container.classList.add(\"tmg-media-locked\", \"tmg-media-progress-bar\"), this.media.pseudoContainer.classList.add(\"tmg-media-locked\"); // #TWINING\r\n this.media.state.locked = true;\r\n } // #STANDALONE: suitable partner courtesy\r\n\r\n protected async exit(): Promise<void> {\r\n this.hideOverlay();\r\n await mockAsync(parseCSSTime(this.settings.css.switchTransitionTime));\r\n this.media.container.classList.toggle(\"tmg-media-progress-bar\", this.settings.controlPanel.progressBar);\r\n this.media.container.classList.remove(\"tmg-media-locked\"), this.media.pseudoContainer.classList.remove(\"tmg-media-locked\"); // #TWINING\r\n this.media.state.locked = false;\r\n } // #STANDALONE: needs scoped behavior\r\n\r\n protected handleScreenClick(e: MouseEvent): void {\r\n if (!e.target
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/locked/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { LockedConfig, LockedState } from \"./types\";\r\nimport { LOCKED_BUILD } from \"./build\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { ScreenLockButton } from \"@components/screenLock\";\r\nimport type { REvent } from \"sia-reactor\";\r\nimport { ComponentRegistry } from \"@core/registries\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { setTimeout, mockAsync } from \"@utils/fn\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport { CtlrMedia } from \"@defs/contract\";\r\n\r\nexport class LockedPlug extends BasePlug<LockedConfig, LockedState> {\r\n public static readonly plugName = \"locked\";\r\n public static readonly BUILD = LOCKED_BUILD;\r\n public lockOverlayDelayId = -1;\r\n public wrapper?: HTMLDivElement;\r\n public control: ScreenLockButton | null = null;\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.locked) {\r\n super(ctlr, config, { visible: false });\r\n }\r\n\r\n public override unmount(): void {\r\n this.wrapper?.remove();\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.media.container.addEventListener(\"click\", this.handleScreenClick, { signal: this.signal });\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", this.syncFeatures, { init: true, signal: this.signal });\r\n // ---- Config --------\r\n this.ctlr.config.watch(\"settings.locked.disabled\", this.syncFeatures, { signal: this.signal });\r\n // ---- Media Listeners\r\n this.media.on(\"intent.locked\", this.handleLockedIntent, { capture: true, init: this.ctlr.flags.wired, initType: \"set\", signal: this.signal }); // #HIGHER-POWER: power arbitration\r\n // Post Wiring\r\n super.wire();\r\n }\r\n\r\n protected handleLockedIntent(e: REvent<CtlrMedia, \"intent.locked\">): void {\r\n if (e.resolved) return;\r\n const active = this.ctlr.isUIActive(\"locked\");\r\n e.value ? !active && this.enter() : active && this.exit();\r\n e.resolve(this.name);\r\n }\r\n\r\n protected enter(): void {\r\n this.ctlr.plug(\"settings.panel\")?.exitMore();\r\n this.wrapper ??= this.ctlr.DOM.containerContentWrapper?.appendChild(createEl(\"div\", { className: \"tmg-media-locked-wrapper tmg-media-no-pointer\", innerHTML: `<p>Screen Locked</p><p>Tap to Unlock</p>` }));\r\n this.control ??= ComponentRegistry.init(\"screenLock\", this.ctlr);\r\n setTimeout(this.showOverlay, 0, this.signal);\r\n this.media.container.classList.add(\"tmg-media-locked\", \"tmg-media-progress-bar\"), this.media.pseudoContainer.classList.add(\"tmg-media-locked\"); // #TWINING\r\n this.media.state.locked = true;\r\n } // #STANDALONE: suitable partner courtesy\r\n\r\n protected async exit(): Promise<void> {\r\n this.hideOverlay();\r\n await mockAsync(parseCSSTime(this.settings.css.switchTransitionTime));\r\n this.media.container.classList.toggle(\"tmg-media-progress-bar\", this.settings.controlPanel.progressBar);\r\n this.media.container.classList.remove(\"tmg-media-locked\"), this.media.pseudoContainer.classList.remove(\"tmg-media-locked\"); // #TWINING\r\n this.media.state.locked = false;\r\n } // #STANDALONE: needs scoped behavior\r\n\r\n protected handleScreenClick(e: MouseEvent): void {\r\n if (!this.config.disabled && e.target === this.media.container) this.state.visible ? this?.hideOverlay() : this?.showOverlay();\r\n }\r\n\r\n public showOverlay(): void {\r\n this.media.container.classList.add(\"tmg-media-locked-overlay\");\r\n this.state.visible = true;\r\n this.delayOverlay();\r\n }\r\n\r\n public hideOverlay(): void {\r\n this.media.container.classList.remove(\"tmg-media-locked-overlay\");\r\n this.state.visible = false;\r\n }\r\n\r\n public delayOverlay(): void {\r\n clearTimeout(this.lockOverlayDelayId);\r\n this.lockOverlayDelayId = setTimeout(this.hideOverlay, this.settings.overlay.delay, this.signal);\r\n }\r\n\r\n public syncFeatures(): void {\r\n this.media.tech.polyfill(\"locked\", true, this.config.disabled);\r\n }\r\n\r\n protected override onDestroy(): void {\r\n this.control?.destroy(), super.onDestroy();\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.locked\": typeof LockedPlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n locked: LockedConfig;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
HLSTech
|
|
13
13
|
} from "./chunk-LNING7Z4.js";
|
|
14
|
-
import {
|
|
15
|
-
ShakaTech
|
|
16
|
-
} from "./chunk-5V7L4U3B.js";
|
|
17
14
|
import {
|
|
18
15
|
IMATech
|
|
19
16
|
} from "./chunk-XOAJMIHO.js";
|
|
17
|
+
import {
|
|
18
|
+
ShakaTech
|
|
19
|
+
} from "./chunk-5V7L4U3B.js";
|
|
20
20
|
import {
|
|
21
21
|
HTML5Tech
|
|
22
22
|
} from "./chunk-QT5XXSG7.js";
|
|
@@ -46,4 +46,4 @@ __export(techs_exports, {
|
|
|
46
46
|
export {
|
|
47
47
|
techs_exports
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-MSP3WUNO.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
KEYS_MODS_ACTIONS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QZLPEALR.js";
|
|
4
4
|
import {
|
|
5
5
|
getUIOpt,
|
|
6
6
|
isDef
|
|
@@ -105,4 +105,4 @@ var getSettingsKeysMenu = (plug) => ({
|
|
|
105
105
|
export {
|
|
106
106
|
getSettingsKeysMenu
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-NGCMGTU6.js.map
|
|
@@ -39,7 +39,7 @@ var PosterPlug = class extends BasePlug {
|
|
|
39
39
|
this.media.on("state.poster", ({ value }) => this.syncSrc(value), { init: this.ctlr.flags.wired, signal: this.signal });
|
|
40
40
|
this.media.on("state.paused", ({ value }) => !value && this.config.eager && this.syncState(false), { init: this.ctlr.flags.wired, signal: this.signal });
|
|
41
41
|
this.media.on("state.currentTime", (e) => (!this.config.eager || e.value) && this.ctlr.when("loadedData", e, () => this.syncState(false), this.signal), { init: this.ctlr.flags.wired, signal: this.signal });
|
|
42
|
-
this.media.on("status.
|
|
42
|
+
this.media.on("status.loadedData", (e) => e.value && this.autoGenerate(), { init: this.ctlr.flags.wired, signal: this.signal });
|
|
43
43
|
for (const k of ["ended", "teasing"]) this.media.on(`status.${k}`, this.syncView, { signal: this.signal });
|
|
44
44
|
super.wire();
|
|
45
45
|
}
|
|
@@ -73,4 +73,4 @@ __publicField(PosterPlug, "BUILD", POSTER_BUILD);
|
|
|
73
73
|
export {
|
|
74
74
|
PosterPlug
|
|
75
75
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-PIHNTBUU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/poster/index.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { PosterConfig, PosterState } from \"./types\";\r\nimport { POSTER_BUILD } from \"./build\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport type { CtlrMedia } from \"@defs/contract\";\r\nimport type { REvent } from \"sia-reactor\";\r\nimport { silence } from \"sia-reactor/modules\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { isSameURL } from \"@utils/str\";\r\n\r\nexport class PosterPlug extends BasePlug<PosterConfig, PosterState> {\r\n public static readonly plugName = \"poster\";\r\n public static readonly BUILD = POSTER_BUILD;\r\n public element!: HTMLImageElement;\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.poster) {\r\n super(ctlr, config, { visible: true });\r\n }\r\n\r\n public override mount(): void {\r\n // Variables Assignment\r\n this.ctlr.DOM.poster = this.element = this.ctlr.syncImgLoadState(createEl(\"img\", { className: \"tmg-media-poster tmg-media-no-pointer tmg-media-filtered tmg-media-object\", alt: \"Poster Image\" }));\r\n // Event Listeners\r\n this.element.addEventListener(\"load\", () => this.ctlr.plug(\"settings.objectFit\")?.syncPosterSize(), { signal: this.signal });\r\n // DOM Injection\r\n this.ctlr.DOM.controlsContainer?.prepend(this.element);\r\n }\r\n public override unmount(): void {\r\n this.element.remove();\r\n }\r\n\r\n public override wire(): void {\r\n // State Setters\r\n this.state.set(\"visible\", (v) => this.media.type === \"audio\" || v, { signal: this.signal });\r\n // ---- Listeners\r\n this.state.on(\"visible\", this.syncView, { signal: this.signal });\r\n // Ctlr Media Watchers\r\n this.media.watch(\"tech\", () => (this.media.tech.polyfill(\"poster\", true), this.syncView()), { init: true, signal: this.signal });\r\n // --------- Listeners\r\n this.media.on(\"type\", this.syncView, { signal: this.signal });\r\n this.media.on(\"intent.poster\", this.handlePosterIntent, { capture: true, init: this.ctlr.flags.wired, initType: \"set\", signal: this.signal }); // #HIGHER-POWER: power arbitration\r\n this.media.on(\"state.src\", () => this.syncState(true), { signal: this.signal });\r\n this.media.on(\"state.poster\", ({ value }) => this.syncSrc(value), { init: this.ctlr.flags.wired, signal: this.signal });\r\n this.media.on(\"state.paused\", ({ value }) => !value && this.config.eager && this.syncState(false), { init: this.ctlr.flags.wired, signal: this.signal });\r\n this.media.on(\"state.currentTime\", (e) => (!this.config.eager || e.value) && this.ctlr.when(\"loadedData\", e, () => this.syncState(false), this.signal), { init: this.ctlr.flags.wired, signal: this.signal }); // if strict, sets hides like html5, light Plug blocks\r\n this.media.on(\"status.loadedData\", (e) => e.value && this.autoGenerate(), { init: this.ctlr.flags.wired, signal: this.signal });\r\n for (const k of [\"ended\", \"teasing\"] as const) this.media.on(`status.${k}`, this.syncView, { signal: this.signal });\r\n // Post Wiring\r\n super.wire();\r\n }\r\n\r\n protected handlePosterIntent(e: REvent<CtlrMedia, \"intent.poster\">): void {\r\n if (e.resolved) return;\r\n this.media.state.poster = e.value;\r\n this.syncView(), this.syncSrc(); // UX boost\r\n e.resolve(this.name);\r\n }\r\n\r\n protected syncSrc(src = this.media.state.poster): void {\r\n if (!isSameURL(src, this.element.src)) (this.element.dataset.loaded = \"false\"), src ? (this.element.src = src) : this.element.removeAttribute(\"src\");\r\n }\r\n protected syncView(): void {\r\n if (this.media.type === \"audio\") this.media.state.poster ||= window.TMG_MEDIA_ALT_IMG_SRC || \"\";\r\n this.media.container.classList.toggle(\"tmg-media-poster-visible\", this.syncState());\r\n }\r\n protected syncState(bool = this.state.visible): boolean {\r\n return (this.state.visible = !this.media.status.teasing && (bool || (this.config.eager && this.media.status.ended)));\r\n }\r\n\r\n public async autoGenerate(): Promise<void> {\r\n const url = this.media.state.poster;\r\n if (!this.config.allowAutoGenerate || !this.ctlr.isNativeEl || this.media.type === \"audio\" || (url && !url.endsWith(this.ctlr.hash))) return;\r\n const frame = await this.ctlr.plug(\"settings.frame\")?.extract(\"\", this.ctlr.config.light.preview.max);\r\n silence(() => (this.media.intent.poster = frame?.url ? frame.url + this.ctlr.hash : \"\")), url && URL.revokeObjectURL(url.replace(this.ctlr.hash, \"\"));\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.poster\": typeof PosterPlug;\r\n }\r\n interface ControllerDOMMap {\r\n poster?: HTMLImageElement | null;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n poster: PosterConfig;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -63,7 +63,7 @@ var KEYS_SHORTCUTS = {
|
|
|
63
63
|
};
|
|
64
64
|
for (const k in ACTIONS_DICT) KEYS_SHORTCUTS[k] ?? (KEYS_SHORTCUTS[k] = "");
|
|
65
65
|
var KEYS_OVERIDES = ["Space", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End"];
|
|
66
|
-
var KEYS_WHITELIST = ["Space", "
|
|
66
|
+
var KEYS_WHITELIST = ["Space", "Escape", "ArrowLeft", "ArrowRight", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
67
67
|
var KEYS_MODS_ACTIONS = ["timeSkip", "volume", "brightness", "playbackRate", "captionsFontSize"];
|
|
68
68
|
var KEYS_BUILD = {
|
|
69
69
|
disabled: false,
|
|
@@ -73,7 +73,7 @@ var KEYS_BUILD = {
|
|
|
73
73
|
shortcuts: KEYS_SHORTCUTS,
|
|
74
74
|
blocks: KEYS_BLOCKS,
|
|
75
75
|
whitelist: KEYS_WHITELIST,
|
|
76
|
-
moddedlist: ["
|
|
76
|
+
moddedlist: [" ", "arrowleft", "arrowright", ...Object.keys(KEYS_SHORTCUTS).filter((k) => KEYS_MODS_ACTIONS.some((m) => k.startsWith(m))), "capture"],
|
|
77
77
|
mods: {
|
|
78
78
|
disabled: false,
|
|
79
79
|
timeSkip: {
|
|
@@ -113,4 +113,4 @@ export {
|
|
|
113
113
|
KEYS_MODS_ACTIONS,
|
|
114
114
|
KEYS_BUILD
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-QZLPEALR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/keys/build.ts"],"sourcesContent":["import { DeepPartial } from \"sia-reactor\";\r\nimport { KeysConfig } from \"./types\";\r\nimport { KEYS_BLOCKS } from \"@t007/utils\";\r\nimport { ACTIONS_DICT } from \"@consts/actions\";\r\n\r\nexport const KEYS_SHORTCUTS: Record<string, string | string[]> = {\r\n previous: \"Shift+p\",\r\n next: \"Shift+n\",\r\n playPause: \"k\",\r\n mute: \"m\",\r\n dark: \"d\",\r\n timeSkipBwd: \"j\",\r\n timeSkipFwd: \"l\",\r\n timeStart: [\"Home\", \"0\"],\r\n timeEnd: [\"End\"],\r\n timePreviousChapter: \"p\",\r\n timeNextChapter: \"n\",\r\n volumeUp: \"ArrowUp\",\r\n volumeDown: \"ArrowDown\",\r\n brightnessUp: \"y\",\r\n brightnessDown: \"h\",\r\n playbackRateUp: \">\",\r\n playbackRateDown: \"<\",\r\n timeStepFwd: \".\",\r\n timeStepBwd: \",\",\r\n timeFormat: \"z\",\r\n timeMode: \"q\",\r\n capture: \"s\", // screenshot\r\n objectFit: \"a\",\r\n pictureInPicture: \"i\",\r\n theater: \"t\",\r\n fullscreen: \"f\",\r\n captions: \"c\",\r\n captionsFontSizeUp: [\"+\", \"=\"],\r\n captionsFontSizeDown: [\"-\", \"_\"],\r\n captionsFontFamily: \"u\",\r\n captionsFontWeight: \"g\", // g in weight or gravity\r\n captionsFontVariant: \"v\",\r\n captionsFontOpacity: \"o\",\r\n captionsBackgroundOpacity: \"b\",\r\n captionsWindowOpacity: \"w\",\r\n captionsCharacterEdgeStyle: \"e\", // edges\r\n captionsTextAlignment: \"r\", // shift 'r'ight\r\n settings: \"?\",\r\n cast: \"Shift+c\",\r\n airplay: \"Shift+a\",\r\n escape: \"Escape\",\r\n skipAd: \"x\", // like pushing an \"x\" button\r\n timeTravelUndo: [\"Ctrl+z\", \"Cmd+z\"],\r\n timeTravelRedo: [\"Ctrl+y\", \"Ctrl+Shift+z\", \"Cmd+Shift+z\"], // \"Cmd+y\" -> history\r\n voiceWake: \"Shift+v\",\r\n voiceQuit: \"Shift+q\",\r\n voiceSleep: \"Shift+z\", // zz\r\n voiceMute: \"Shift+m\",\r\n};\r\nfor (const k in ACTIONS_DICT) KEYS_SHORTCUTS[k] ??= \"\"; // UX boost\r\n\r\nexport const KEYS_OVERIDES = [\"Space\", \"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\r\n\r\nexport const KEYS_WHITELIST = [\"Space\", \"Escape\", \"ArrowLeft\", \"ArrowRight\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]; // \"ArrowUp\", \"ArrowDown\", \"Enter\", \"Home\", \"End\", \"0\",\r\n\r\nexport const KEYS_MODS_ACTIONS = [\"timeSkip\", \"volume\", \"brightness\", \"playbackRate\", \"captionsFontSize\"] as const; // numerical values\r\n\r\nexport const KEYS_BUILD: DeepPartial<KeysConfig> = {\r\n disabled: false,\r\n strictMatch: false,\r\n rankedMatch: true,\r\n overrides: KEYS_OVERIDES,\r\n shortcuts: KEYS_SHORTCUTS,\r\n blocks: KEYS_BLOCKS,\r\n whitelist: KEYS_WHITELIST,\r\n moddedlist: [\" \", \"arrowleft\", \"arrowright\", ...Object.keys(KEYS_SHORTCUTS).filter((k) => KEYS_MODS_ACTIONS.some((m) => k.startsWith(m))), \"capture\"],\r\n mods: {\r\n disabled: false,\r\n timeSkip: {\r\n ctrl: 60,\r\n shift: 10,\r\n },\r\n volume: {\r\n ctrl: 50,\r\n shift: 10,\r\n },\r\n brightness: {\r\n ctrl: 50,\r\n shift: 10,\r\n },\r\n playbackRate: {\r\n ctrl: 1,\r\n }, // \">|<\" has shift\r\n captionsFontSize: {},\r\n },\r\n showOverlay: true,\r\n phase: {\r\n value: \"keyup\",\r\n options: [\r\n { value: \"\", display: \"Default\" },\r\n { value: \"keydown\", display: \"Key down\" },\r\n { value: \"keyup\", display: \"Key up\" },\r\n { value: \"none\", display: \"None\" },\r\n ],\r\n },\r\n};\r\n"],"mappings":";;;;;AAEA,SAAS,mBAAmB;AAGrB,IAAM,iBAAoD;AAAA,EAC/D,UAAU;AAAA,EACV,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW,CAAC,QAAQ,GAAG;AAAA,EACvB,SAAS,CAAC,KAAK;AAAA,EACf,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS;AAAA;AAAA,EACT,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,oBAAoB,CAAC,KAAK,GAAG;AAAA,EAC7B,sBAAsB,CAAC,KAAK,GAAG;AAAA,EAC/B,oBAAoB;AAAA,EACpB,oBAAoB;AAAA;AAAA,EACpB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,4BAA4B;AAAA;AAAA,EAC5B,uBAAuB;AAAA;AAAA,EACvB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EACR,gBAAgB,CAAC,UAAU,OAAO;AAAA,EAClC,gBAAgB,CAAC,UAAU,gBAAgB,aAAa;AAAA;AAAA,EACxD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA;AAAA,EACZ,WAAW;AACb;AACA,WAAW,KAAK,aAAc,2CAAsB;AAE7C,IAAM,gBAAgB,CAAC,SAAS,aAAa,WAAW,aAAa,cAAc,QAAQ,KAAK;AAEhG,IAAM,iBAAiB,CAAC,SAAS,UAAU,aAAa,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAEjH,IAAM,oBAAoB,CAAC,YAAY,UAAU,cAAc,gBAAgB,kBAAkB;AAEjG,IAAM,aAAsC;AAAA,EACjD,UAAU;AAAA,EACV,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY,CAAC,KAAK,aAAa,cAAc,GAAG,OAAO,KAAK,cAAc,EAAE,OAAO,CAAC,MAAM,kBAAkB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS;AAAA,EACpJ,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,IACR;AAAA;AAAA,IACA,kBAAkB,CAAC;AAAA,EACrB;AAAA,EACA,aAAa;AAAA,EACb,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,MACP,EAAE,OAAO,IAAI,SAAS,UAAU;AAAA,MAChC,EAAE,OAAO,WAAW,SAAS,WAAW;AAAA,MACxC,EAAE,OAAO,SAAS,SAAS,SAAS;AAAA,MACpC,EAAE,OAAO,QAAQ,SAAS,OAAO;AAAA,IACnC;AAAA,EACF;AACF;","names":[]}
|
|
@@ -75,7 +75,7 @@ var PanelPlug = class extends BasePlug {
|
|
|
75
75
|
this.ctlr.config.watch("settings.css.brandColor", (v = defs.brand) => (v = v.toLowerCase(), cBField.inputEl.value = v, bField.inputEl.value = !defs.bcolors.includes(v) ? !this.settings.css.syncWithMedia.brandColor ? "custom" : "auto" : v), { init: true, signal: this.signal });
|
|
76
76
|
this.ctlr.config.watch("settings.css.themeColor", (v = defs.theme) => (v = v.toLowerCase(), cTField.inputEl.value = v, tField.inputEl.value = !defs.tcolors.includes(v) ? !this.settings.css.syncWithMedia.themeColor ? "custom" : "auto" : v), { init: true, signal: this.signal });
|
|
77
77
|
this.ctlr.DOM.settingsBottomPanel?.append((bWrapper.append(bField, cBField), bWrapper), (tWrapper.append(tField, cTField), tWrapper));
|
|
78
|
-
const id = { theme: "", brand: "" }, sync = (cb, req = true, type = "brand") => (this.settings.css.syncWithMedia[`${type}Color`] = req, cb(req)), assert = (opts, type = "brand") => this.ctlr.toast?.update(id[type],
|
|
78
|
+
const id = { theme: "", brand: "" }, sync = (cb, req = true, type = "brand") => (this.settings.css.syncWithMedia[`${type}Color`] = req, cb(req)), assert = (opts, type = "brand") => this.ctlr.toast?.update(id[type], opts), onBColorChange = ({ target: { value: val } }) => this.ctlr.throttle(
|
|
79
79
|
"brandColorPicking",
|
|
80
80
|
async () => {
|
|
81
81
|
id.brand && t007.toast?.dismiss(id.brand);
|
|
@@ -85,7 +85,7 @@ var PanelPlug = class extends BasePlug {
|
|
|
85
85
|
else col = this.settings.css.brandColor = (this.media.status.loadedData ? await this.ctlr.plug("settings.frame")?.getMainColor(this.media.state.currentTime, this.media.features.frameCapture ? "" : void 0) : null) ?? this.ctlr.plug("settings.css")?.build.brandColor;
|
|
86
86
|
const cb = (s) => bField.inputEl.value = defs.bcolors.includes(col) ? col : s ? "auto" : "custom", No = () => (sync(cb, false), assert({ actions: { Yes } })), Yes = () => (sync(cb, true), assert({ actions: { No } }));
|
|
87
87
|
sync(cb, val === "auto");
|
|
88
|
-
val === "auto" && (id.brand = this.ctlr.toast?.("
|
|
88
|
+
val === "auto" && (id.brand = this.ctlr.toast?.("The brand color will change anytime a video loads", { icon: "\u{1F3A8}", autoClose: 15e3, hideProgressBar: false, actions: { No }, onClose: () => id.brand = "", signal: this.signal }) || "");
|
|
89
89
|
},
|
|
90
90
|
150
|
|
91
91
|
), onTColorChange = ({ target: { value: val } }) => this.ctlr.throttle(
|
|
@@ -98,7 +98,7 @@ var PanelPlug = class extends BasePlug {
|
|
|
98
98
|
else col = this.settings.css.themeColor = (this.media.status.loadedData ? await this.ctlr.plug("settings.frame")?.getMainColor(this.media.state.currentTime, this.media.features.frameCapture ? "" : void 0) : null) ?? this.ctlr.plug("settings.css")?.build.themeColor;
|
|
99
99
|
const cb = (s) => tField.inputEl.value = defs.tcolors.includes(col) ? col : s ? "auto" : "custom", No = () => (sync(cb, false, "theme"), assert({ actions: { Yes } }, "theme")), Yes = () => (sync(cb, true, "theme"), assert({ actions: { No } }, "theme"));
|
|
100
100
|
sync(cb, val === "auto", "theme");
|
|
101
|
-
val === "auto" && (id.theme = this.ctlr.toast?.("
|
|
101
|
+
val === "auto" && (id.theme = this.ctlr.toast?.("The theme color will change anytime a video loads", { icon: "\u{1F3A8}", autoClose: 15e3, hideProgressBar: false, actions: { No }, onClose: () => id.theme = "", signal: this.signal }) || "");
|
|
102
102
|
},
|
|
103
103
|
150
|
|
104
104
|
);
|
|
@@ -167,4 +167,4 @@ __publicField(PanelPlug, "BUILD", SETTINGS_BUILD);
|
|
|
167
167
|
export {
|
|
168
168
|
PanelPlug
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-RKKQSC3R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/panel/index.ts"],"sourcesContent":["import { silence } from \"sia-reactor/modules\";\r\nimport { BasePlug } from \"../../base\";\r\nimport { SETTINGS_BUILD } from \"./build\";\r\nimport type { panelConfig, panelState } from \"./types\";\r\nimport { SettingsMenu } from \"./menu\";\r\nimport { createEl } from \"@utils/dom\";\r\nimport { mockAsync } from \"@utils/fn\";\r\nimport { parseCSSTime } from \"@utils/str\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport { isPOJO } from \"@utils/obj\";\r\n\r\nexport class PanelPlug extends BasePlug<panelConfig, panelState> {\r\n public static readonly plugName = \"panel\";\r\n public static readonly BUILD = SETTINGS_BUILD;\r\n public closeBtn!: HTMLButtonElement | null;\r\n public menu!: SettingsMenu;\r\n protected wasPaused = false;\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.panel) {\r\n super(ctlr, config, { viewOpen: false });\r\n this.menu = new SettingsMenu(this.ctlr, this.config.menu);\r\n }\r\n\r\n public override mount(): void {\r\n this.closeBtn = this.ctlr.queryDOM(\".tmg-media-settings-close-btn\")!;\r\n this.menu.onViewClick = this.toggleView;\r\n }\r\n public override unmount(): void {\r\n this.media.container.classList.remove(\"tmg-media-more-settings\");\r\n this.ctlr.queryDOM(\".tmg-media-settings-tips-btn\")?.remove(), this.ctlr.queryDOM(\".tmg-media-settings-brand-wrapper\")?.remove(), this.ctlr.queryDOM(\".tmg-media-settings-theme-wrapper\")?.remove();\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.closeBtn?.addEventListener(\"click\", this.exitMore, { signal: this.signal });\r\n // Ctlr Media Listeners\r\n this.media.on(\"state.paused\", ({ value }) => !value && this.exitMore(), { signal: this.signal });\r\n // Post Wiring\r\n this.ctlr.learn(\"settings\", { fn: () => this.menu.toggle(undefined, true) }, this.signal);\r\n !this.config.menu.disabled && this.menu.wire(), super.wire();\r\n }\r\n\r\n public async enterMore(): Promise<void> {\r\n if (this.ctlr.isUIActive(\"moreSettings\")) return;\r\n if (!this.viewReady) this.initView(), (this.viewReady = true);\r\n (this.wasPaused = this.media.state.paused), this.config.autoPause && silence(() => (this.media.intent.paused = true));\r\n !isPOJO(this.menu.anchor) && this.menu.close(), this.media.container.classList.add(\"tmg-media-more-settings\"), (this.state.viewOpen = true);\r\n await mockAsync(parseCSSTime(this.settings.css.panelTransitionTime));\r\n this.ctlr.plug(\"settings.overlay\")?.show();\r\n this.ctlr.DOM.settings?.removeAttribute(\"inert\"), this.ctlr.DOM.containerContent?.setAttribute(\"inert\", \"\");\r\n !isPOJO(this.menu.anchor) && this.closeBtn?.focus();\r\n } // #STANDALONE: needs scoped behavior\r\n private viewReady = false;\r\n\r\n public async exitMore(): Promise<void> {\r\n if (!this.ctlr.isUIActive(\"moreSettings\")) return;\r\n !isPOJO(this.menu.anchor) && this.menu.close(), this.media.container.classList.remove(\"tmg-media-more-settings\"), (this.state.viewOpen = false);\r\n await mockAsync(parseCSSTime(this.settings.css.panelTransitionTime));\r\n this.config.autoPause && silence(() => (this.media.intent.paused = this.wasPaused));\r\n this.ctlr.DOM.settings?.setAttribute(\"inert\", \"\"), this.ctlr.DOM.containerContent?.removeAttribute(\"inert\");\r\n } // #STANDALONE: needs scoped behavior\r\n\r\n public async toggleView(): Promise<void> {\r\n this.ctlr.isUIActive(\"moreSettings\") ? await this.exitMore() : await this.enterMore();\r\n }\r\n\r\n private initView() {\r\n // Theming\r\n // prettier-ignore\r\n const options = [{ option: \"Light Blue\", value: \"#3198f5\" }, { option: \"Hot Pink\", value: \"#ff69b4\" }, { option: \"Fiery Red\", value: \"#ff0033\" }, { option: \"Dark Turquoise\", value: \"#00ced1\" }, { option: \"Custom Hue\", value: \"custom\" }, { option: \"Video Derived\", value: \"auto\" }],\r\n gcolors = options.slice(0, -2).map((opt) => opt.value),\r\n defs = { brand: this.settings.css.brandColor as string ?? \"#e26e02\", theme: this.settings.css.themeColor as string ?? \"#ffffff\", bcolors: [\"#e26e02\", ...gcolors], tcolors: [\"#ffffff\", ...gcolors] },\r\n bField = t007.field({ type: \"select\", label: \"Brand Color\", helperText: { info: \"Just try changing your brand color for now\" }, options: [{ option: \"Tastey Orange\", value: \"#e26e02\" }, ...options], value: !defs.bcolors.includes(defs.brand as string) ? (!this.settings.css.syncWithMedia.brandColor ? \"custom\" : \"auto\") : defs.brand }),\r\n cBField = t007.field({ type: \"color\" }),\r\n tField = t007.field({ type: \"select\", label: \"Theme Color\", helperText: { info: \"Also try changing your theme color for now\" }, options: [{ option: \"Pure White\", value: \"#ffffff\" }, ...options], value: !defs.tcolors.includes(defs.theme as string) ? (!this.settings.css.syncWithMedia.themeColor ? \"custom\" : \"auto\") : defs.theme }),\r\n cTField = t007.field({ type: \"color\" }),\r\n bWrapper = createEl(\"div\", { className: \"tmg-media-settings-brand-wrapper\" }),\r\n tWrapper = createEl(\"div\", { className: \"tmg-media-settings-theme-wrapper\" });\r\n this.ctlr.config.watch(\"settings.css.brandColor\", (v = defs.brand) => ((v = (v as string).toLowerCase()), (cBField.inputEl.value = v), (bField.inputEl.value = !defs.bcolors.includes(v) ? (!this.settings.css.syncWithMedia.brandColor ? \"custom\" : \"auto\") : v)), { init: true, signal: this.signal });\r\n this.ctlr.config.watch(\"settings.css.themeColor\", (v = defs.theme) => ((v = (v as string).toLowerCase()), (cTField.inputEl.value = v), (tField.inputEl.value = !defs.tcolors.includes(v) ? (!this.settings.css.syncWithMedia.themeColor ? \"custom\" : \"auto\") : v)), { init: true, signal: this.signal });\r\n this.ctlr.DOM.settingsBottomPanel?.append((bWrapper.append(bField, cBField), bWrapper), (tWrapper.append(tField, cTField), tWrapper));\r\n const id = { theme: \"\", brand: \"\" },\r\n sync = (cb: any, req = true, type = \"brand\") => ((this.settings.css.syncWithMedia[`${type}Color`] = req), cb(req)),\r\n assert = (opts: any, type: \"brand\" | \"theme\" = \"brand\") => this.ctlr.toast?.update(id[type], opts),\r\n onBColorChange = ({ target: { value: val } }: any) =>\r\n this.ctlr.throttle(\r\n \"brandColorPicking\",\r\n async () => {\r\n id.brand && t007.toast?.dismiss(id.brand);\r\n let col;\r\n if (val === \"custom\") return cBField.inputEl.click();\r\n if (val !== \"auto\") col = this.settings.css.brandColor = val;\r\n else col = this.settings.css.brandColor = (this.media.status.loadedData ? await this.ctlr.plug(\"settings.frame\")?.getMainColor(this.media.state.currentTime, this.media.features.frameCapture ? \"\" : undefined) : null) ?? this.ctlr.plug(\"settings.css\")?.build.brandColor!; // said 'video' not 'poster' derived\r\n const cb = (s: any) => (bField.inputEl.value = defs.bcolors.includes(col as string) ? (col as string) : s ? \"auto\" : \"custom\"),\r\n No = () => (sync(cb, false), assert({ actions: { Yes } })),\r\n Yes = () => (sync(cb, true), assert({ actions: { No } }));\r\n sync(cb, val === \"auto\");\r\n val === \"auto\" && (id.brand = this.ctlr.toast?.(\"The brand color will change anytime a video loads\", { icon: \"🎨\", autoClose: 15000, hideProgressBar: false, actions: { No }, onClose: () => (id.brand = \"\"), signal: this.signal }) || \"\");\r\n },\r\n 150\r\n ),\r\n onTColorChange = ({ target: { value: val } }: any) =>\r\n this.ctlr.throttle(\r\n \"themeColorPicking\",\r\n async () => {\r\n id.theme && t007.toast?.dismiss(id.theme);\r\n let col;\r\n if (val === \"custom\") return cTField.inputEl.click();\r\n if (val !== \"auto\") col = this.settings.css.themeColor = val;\r\n else col = this.settings.css.themeColor = (this.media.status.loadedData ? await this.ctlr.plug(\"settings.frame\")?.getMainColor(this.media.state.currentTime, this.media.features.frameCapture ? \"\" : undefined) : null) ?? this.ctlr.plug(\"settings.css\")?.build.themeColor!;\r\n const cb = (s: any) => (tField.inputEl.value = defs.tcolors.includes(col as string) ? (col as string) : s ? \"auto\" : \"custom\"),\r\n No = () => (sync(cb, false, \"theme\"), assert({ actions: { Yes } }, \"theme\")),\r\n Yes = () => (sync(cb, true, \"theme\"), assert({ actions: { No } }, \"theme\"));\r\n sync(cb, val === \"auto\", \"theme\");\r\n val === \"auto\" && (id.theme = this.ctlr.toast?.(\"The theme color will change anytime a video loads\", { icon: \"🎨\", autoClose: 15000, hideProgressBar: false, actions: { No }, onClose: () => (id.theme = \"\"), signal: this.signal }) || \"\");\r\n },\r\n 150\r\n );\r\n bField.inputEl.addEventListener(\"input\", onBColorChange, { signal: this.signal }), cBField.inputEl.addEventListener(\"input\", onBColorChange, { signal: this.signal });\r\n tField.inputEl.addEventListener(\"input\", onTColorChange, { signal: this.signal }), cTField.inputEl.addEventListener(\"input\", onTColorChange, { signal: this.signal });\r\n // Helpful Tips\r\n const tipsBtn = createEl(\"button\", { className: \"tmg-media-settings-tips-btn\", innerHTML: `<span>💡 Did You Know?</span>` });\r\n this.closeBtn?.insertAdjacentElement(\"afterend\", tipsBtn);\r\n tipsBtn.addEventListener(\"click\", this.showTipsDialog, { signal: this.signal });\r\n }\r\n\r\n private getTipsHTML() {\r\n return `\r\n <div style=\"font-family: inherit; color: inherit;\">\r\n <div style=\"text-align: center; margin-bottom: 25px;\">\r\n <h2 style=\"margin: 0 0 10px 0; letter-spacing: -0.5px;\">🎬 Welcome to TVP</h2>\r\n <p style=\"margin: 0; opacity: 0.9; line-height: 1.5;\">\r\n You aren't just watching a video; you're sitting in the cockpit of the most advanced, performance-first media engine on the web. We are thrilled to have you here. \r\n <br><strong>Here is your official flight manual to unlock its full power:</strong>\r\n </p>\r\n </div>\r\n <h3 style=\"margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;\">🎛️ The Smart Canvas (Mouse & Touch)</h3>\r\n <ul style=\"padding-left: 20px; line-height: 1.6; margin-bottom: 25px;\">\r\n <li><strong>Hyper-speed on demand:</strong> Click and hold the right side of the video screen or the play key (<strong>Spacebar</strong>) to fast-forward, left side or <strong>Shift</strong> + play key rewinds.</li>\r\n <li><strong>Smart scrubbing:</strong> Don't hunt for the tiny progress bar. Just scroll horizontally across the middle of the screen to scrub smoothly through time.</li>\r\n <li><strong>Invisible sliders:</strong> Scroll vertically on the <em>right edge</em> for Volume, and the <em>left edge</em> for Brightness.</li>\r\n <li><strong>Precision taps:</strong> Double-tap the edges to skip forward or backward. Double tap the center to toggle Fullscreen (or Play/Pause on mobile).</li>\r\n </ul>\r\n <h3 style=\"margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;\">🏗️ Total UI Control</h3>\r\n <ul style=\"padding-left: 20px; line-height: 1.6; margin-bottom: 25px;\">\r\n <li><strong>Build your own player:</strong> Don't like our layout? <strong>Click and drag</strong> almost any button on the bottom control bar to physically rearrange the interface exactly how you want it.</li>\r\n <li><strong>Draggable subtitles:</strong> Subtitles blocking a crucial part of the scene? Just grab the text box and drag it anywhere else on the screen.</li>\r\n <li><strong>The chameleon engine:</strong> Head to settings and set your Brand/Theme colors to \"Video Derived\". TVP will actively analyze the video frames and extract dominant colors to paint the UI dynamically.</li>\r\n <li><strong>Descriptive hints:</strong> Hover over the controls to expose their tooltips and get more information about how to trigger each function.</li>\r\n </ul>\r\n <h3 style=\"margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;\">⌨️ Keyboard Ninja Status</h3>\r\n <ul style=\"padding-left: 20px; line-height: 1.6; margin-bottom: 25px;\">\r\n <li><strong>The playback trinity (J, K, L):</strong> Skip backward, Play/Pause, and Skip forward like a pro editor. Do the same with arrow keys, hold <strong>Ctrl</strong>, <strong>Shift</strong> or <strong>Alt</strong> to spice things up.</li>\r\n <li><strong>Time travel (0 - 9):</strong> Hit any number key to instantly jump to that percentage of the video (e.g., hitting '5' jumps to the exact middle).</li>\r\n <li><strong>Frame-by-frame:</strong> Paused the video? Use <strong>,</strong> (comma) and <strong>.</strong> (period) to step backward or forward one single frame at a time.</li>\r\n <li><strong>Warp speed:</strong> Use <strong>></strong> and <strong><</strong> to crank the playback speed up or down.</li>\r\n </ul>\r\n <h3 style=\"margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;\">🔬 Advanced Window Tech</h3>\r\n <ul style=\"padding-left: 20px; line-height: 1.6; margin-bottom: 20px;\">\r\n <li><strong>The snapshot engine:</strong> Click the Camera icon or press <strong>s</strong> to screenshot a high-res image of the exact frame. <em>(Easter Egg: Double-Click or press <strong>Alt + s</strong> to capture in pure Black & White!)</em></li>\r\n <li><strong>Ultra-readable time:</strong> Click the time display or press <strong>q</strong> to toggle between elapsed time and remaining time. <em>(Easter Egg: Double-Click or press <strong>z</strong> to display the time in different formats!)</em></li>\r\n <li><strong>Floating miniplayer:</strong> Start playing a video and just scroll down the page. TVP will automatically detach into a draggable miniplayer so you never miss a second.</li>\r\n <li><strong>Custom picture-in-picture:</strong> We bypassed standard browser limits to give you a floating player that actually keeps all your custom UI controls intact.</li>\r\n </ul>\r\n <div style=\"text-align: center; margin-top: 30px; padding: 15px; border-radius: 8px; background: rgba(128, 128, 128, 0.1);\">\r\n <p style=\"margin: 0 0 10px 0;\"><strong>Enjoy the player.</strong> We're still in active development, but already miles ahead. Welcome to the bleeding edge.</p>\r\n <p style=\"margin: 0; opacity: 0.8;\">🧪 <strong>beta tester?</strong> Check the bottom of the page to find the hidden button to travel through linear time, or <a href=\"mailto:tobioketade007@gmail.com\" style=\"color: inherit; text-decoration: underline;\">drop me an email</a> to collaborate!</p>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n private async showTipsDialog() {\r\n await this.exitMore();\r\n t007.alert(this.getTipsHTML(), { id: `${this.ctlr.config.id}-tips-dialog`, rootElement: this.ctlr.DOM.containerContent, confirmText: \"Got it!\" });\r\n }\r\n\r\n protected override onDestroy(): void {\r\n this.menu.destroy(), super.onDestroy();\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.panel\": typeof PanelPlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n panel: panelConfig;\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\n"],"mappings":"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","names":[]}
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
CONFIG_BUILD,
|
|
10
10
|
STATE_BUILD
|
|
11
11
|
} from "./chunk-DZGMINRA.js";
|
|
12
|
-
import {
|
|
13
|
-
ACTIONS_DICT,
|
|
14
|
-
ACTIONS_ENTRIES
|
|
15
|
-
} from "./chunk-EEZLT2G2.js";
|
|
16
12
|
import {
|
|
17
13
|
FN_KEY,
|
|
18
14
|
LUID_KEY
|
|
19
15
|
} from "./chunk-26QMCQE3.js";
|
|
16
|
+
import {
|
|
17
|
+
ACTIONS_DICT,
|
|
18
|
+
ACTIONS_ENTRIES
|
|
19
|
+
} from "./chunk-EEZLT2G2.js";
|
|
20
20
|
import {
|
|
21
21
|
__export
|
|
22
22
|
} from "./chunk-UVKRO5ER.js";
|
|
@@ -40,4 +40,4 @@ __export(consts_exports, {
|
|
|
40
40
|
export {
|
|
41
41
|
consts_exports
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-WA5VZIDC.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-5EKOUIF3.js";
|
|
4
4
|
import {
|
|
5
5
|
KEYS_BUILD
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QZLPEALR.js";
|
|
7
7
|
import {
|
|
8
8
|
keyEventAllowed
|
|
9
9
|
} from "./chunk-JG62LR2N.js";
|
|
@@ -90,4 +90,4 @@ __publicField(KeysPlug, "BUILD", KEYS_BUILD);
|
|
|
90
90
|
export {
|
|
91
91
|
KeysPlug
|
|
92
92
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-X2PY4DAZ.js.map
|