tmg-media-player 0.0.43 → 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.
Files changed (89) hide show
  1. package/dist/{chunk-UAZ33UVV.js → chunk-2R2AAV4Y.js} +80 -80
  2. package/dist/{chunk-U6XDI2FQ.js → chunk-2VXGUKAW.js} +2 -2
  3. package/dist/chunk-2VXGUKAW.js.map +1 -0
  4. package/dist/{chunk-HWZYOHG7.js → chunk-3VN6SCE4.js} +4 -4
  5. package/dist/{chunk-CS262ZPQ.js → chunk-JLUX5NZJ.js} +73 -73
  6. package/dist/{chunk-KOLPBP6L.js → chunk-MSP3WUNO.js} +10 -10
  7. package/dist/{chunk-C5VHC67O.js → chunk-NGCMGTU6.js} +2 -2
  8. package/dist/{chunk-PXK56QO3.js → chunk-PIHNTBUU.js} +2 -2
  9. package/dist/chunk-PIHNTBUU.js.map +1 -0
  10. package/dist/{chunk-PZWBGXMX.js → chunk-QZLPEALR.js} +3 -3
  11. package/dist/chunk-QZLPEALR.js.map +1 -0
  12. package/dist/{chunk-X24LFSYJ.js → chunk-RKKQSC3R.js} +4 -4
  13. package/dist/chunk-RKKQSC3R.js.map +1 -0
  14. package/dist/{chunk-D6HQVHAM.js → chunk-S6FHAYJX.js} +5 -5
  15. package/dist/{chunk-RAFGKRDN.js → chunk-SGQJYALA.js} +26 -26
  16. package/dist/{chunk-KSASYWVJ.js → chunk-SJOESZ5R.js} +4 -4
  17. package/dist/{chunk-WYH4QVWG.js → chunk-U4STCHIM.js} +7 -7
  18. package/dist/{chunk-DKPDXJLT.js → chunk-WE2IT3XO.js} +124 -124
  19. package/dist/{chunk-LAX4F7R3.js → chunk-X2PY4DAZ.js} +4 -4
  20. package/dist/{chunk-RS7J6G3A.js → chunk-YE3BZM2J.js} +42 -42
  21. package/dist/{chunk-VIHKKZIQ.js → chunk-YXUIPCGS.js} +31 -31
  22. package/dist/{chunk-CQB72SSB.js → chunk-ZWZMWXXS.js} +21 -21
  23. package/dist/components/icons/z-register.js +33 -33
  24. package/dist/components/notifiers/z-register.js +10 -10
  25. package/dist/components/z-register.js +12 -12
  26. package/dist/plugs/main/playlist/index.js +2 -2
  27. package/dist/plugs/menus/settings/keys.cjs +2 -2
  28. package/dist/plugs/menus/settings/keys.cjs.map +1 -1
  29. package/dist/plugs/menus/settings/keys.js +2 -2
  30. package/dist/plugs/menus/z-register.cjs +2 -2
  31. package/dist/plugs/menus/z-register.cjs.map +1 -1
  32. package/dist/plugs/menus/z-register.js +11 -11
  33. package/dist/plugs/settings/captions/index.js +2 -2
  34. package/dist/plugs/settings/controlPanel/draggable.js +2 -2
  35. package/dist/plugs/settings/controlPanel/index.js +2 -2
  36. package/dist/plugs/settings/frame/index.cjs +1 -1
  37. package/dist/plugs/settings/frame/index.cjs.map +1 -1
  38. package/dist/plugs/settings/frame/index.js +1 -1
  39. package/dist/plugs/settings/keys/build.cjs +2 -2
  40. package/dist/plugs/settings/keys/build.cjs.map +1 -1
  41. package/dist/plugs/settings/keys/build.js +1 -1
  42. package/dist/plugs/settings/keys/index.cjs +2 -2
  43. package/dist/plugs/settings/keys/index.cjs.map +1 -1
  44. package/dist/plugs/settings/keys/index.js +3 -3
  45. package/dist/plugs/settings/panel/index.cjs +3 -3
  46. package/dist/plugs/settings/panel/index.cjs.map +1 -1
  47. package/dist/plugs/settings/panel/index.js +1 -1
  48. package/dist/plugs/settings/poster/index.cjs +1 -1
  49. package/dist/plugs/settings/poster/index.cjs.map +1 -1
  50. package/dist/plugs/settings/poster/index.js +1 -1
  51. package/dist/plugs/settings/sleepTimer/index.js +1 -1
  52. package/dist/plugs/z-register.cjs +7 -7
  53. package/dist/plugs/z-register.cjs.map +1 -1
  54. package/dist/plugs/z-register.js +34 -34
  55. package/dist/super/components/icons.js +73 -73
  56. package/dist/super/components/index.js +127 -127
  57. package/dist/super/components/notifiers.js +26 -26
  58. package/dist/super/plugs/index.cjs +7 -7
  59. package/dist/super/plugs/index.cjs.map +1 -1
  60. package/dist/super/plugs/index.js +92 -92
  61. package/dist/super/plugs/menus.cjs +2 -2
  62. package/dist/super/plugs/menus.cjs.map +1 -1
  63. package/dist/super/plugs/menus.js +23 -23
  64. package/dist/super/techs.js +11 -11
  65. package/dist/super.cjs +7 -7
  66. package/dist/super.cjs.map +1 -1
  67. package/dist/super.global.js +25 -24
  68. package/dist/super.global.js.map +1 -1
  69. package/dist/super.js +116 -116
  70. package/dist/techs/z-register.js +3 -3
  71. package/package.json +6 -6
  72. package/dist/chunk-PXK56QO3.js.map +0 -1
  73. package/dist/chunk-PZWBGXMX.js.map +0 -1
  74. package/dist/chunk-U6XDI2FQ.js.map +0 -1
  75. package/dist/chunk-X24LFSYJ.js.map +0 -1
  76. /package/dist/{chunk-UAZ33UVV.js.map → chunk-2R2AAV4Y.js.map} +0 -0
  77. /package/dist/{chunk-HWZYOHG7.js.map → chunk-3VN6SCE4.js.map} +0 -0
  78. /package/dist/{chunk-CS262ZPQ.js.map → chunk-JLUX5NZJ.js.map} +0 -0
  79. /package/dist/{chunk-KOLPBP6L.js.map → chunk-MSP3WUNO.js.map} +0 -0
  80. /package/dist/{chunk-C5VHC67O.js.map → chunk-NGCMGTU6.js.map} +0 -0
  81. /package/dist/{chunk-D6HQVHAM.js.map → chunk-S6FHAYJX.js.map} +0 -0
  82. /package/dist/{chunk-RAFGKRDN.js.map → chunk-SGQJYALA.js.map} +0 -0
  83. /package/dist/{chunk-KSASYWVJ.js.map → chunk-SJOESZ5R.js.map} +0 -0
  84. /package/dist/{chunk-WYH4QVWG.js.map → chunk-U4STCHIM.js.map} +0 -0
  85. /package/dist/{chunk-DKPDXJLT.js.map → chunk-WE2IT3XO.js.map} +0 -0
  86. /package/dist/{chunk-LAX4F7R3.js.map → chunk-X2PY4DAZ.js.map} +0 -0
  87. /package/dist/{chunk-RS7J6G3A.js.map → chunk-YE3BZM2J.js.map} +0 -0
  88. /package/dist/{chunk-VIHKKZIQ.js.map → chunk-YXUIPCGS.js.map} +0 -0
  89. /package/dist/{chunk-CQB72SSB.js.map → chunk-ZWZMWXXS.js.map} +0 -0
@@ -1,3 +1,9 @@
1
+ import {
2
+ VolumePlug
3
+ } from "./chunk-I6Q53IPI.js";
4
+ import {
5
+ VOLUME_BUILD
6
+ } from "./chunk-Q2XYS26I.js";
1
7
  import {
2
8
  VoicePlug
3
9
  } from "./chunk-UCO75OSK.js";
@@ -6,26 +12,20 @@ import {
6
12
  VOICE_COMMANDS
7
13
  } from "./chunk-F6YDG235.js";
8
14
  import {
9
- VolumePlug
10
- } from "./chunk-I6Q53IPI.js";
15
+ PosterPlug
16
+ } from "./chunk-PIHNTBUU.js";
11
17
  import {
12
- VOLUME_BUILD
13
- } from "./chunk-Q2XYS26I.js";
18
+ TimePlug
19
+ } from "./chunk-XNQILPYL.js";
14
20
  import {
15
- SleepTimerPlug
16
- } from "./chunk-PI7JPTSL.js";
21
+ TIME_BUILD
22
+ } from "./chunk-2SZXTLHZ.js";
17
23
  import {
18
24
  TimeTravelPlug
19
25
  } from "./chunk-SUEKTA5D.js";
20
26
  import {
21
27
  TIME_TRAVEL_BUILD
22
28
  } from "./chunk-33JQXI7I.js";
23
- import {
24
- TimePlug
25
- } from "./chunk-XNQILPYL.js";
26
- import {
27
- TIME_BUILD
28
- } from "./chunk-2SZXTLHZ.js";
29
29
  import {
30
30
  PlaybackRatePlug
31
31
  } from "./chunk-JDC4FBXX.js";
@@ -33,43 +33,33 @@ import {
33
33
  PLAYBACK_RATE_BUILD
34
34
  } from "./chunk-K7AAKFQF.js";
35
35
  import {
36
- PosterPlug
37
- } from "./chunk-PXK56QO3.js";
38
- import {
39
- POSTER_BUILD
40
- } from "./chunk-MBRGHAFE.js";
36
+ SleepTimerPlug
37
+ } from "./chunk-PI7JPTSL.js";
41
38
  import {
42
39
  SLEEP_TIMER_BUILD
43
40
  } from "./chunk-XLFHANYG.js";
44
41
  import {
45
- OverlayPlug
46
- } from "./chunk-AUHJS22O.js";
47
- import {
48
- OVERLAY_BUILD
49
- } from "./chunk-PXU563OY.js";
50
- import {
51
- PersistPlug
52
- } from "./chunk-JCSBCUKA.js";
53
- import {
54
- PERSIST_BUILD
55
- } from "./chunk-NAUZH3E6.js";
42
+ POSTER_BUILD
43
+ } from "./chunk-MBRGHAFE.js";
56
44
  import {
57
45
  PanelPlug
58
- } from "./chunk-X24LFSYJ.js";
46
+ } from "./chunk-RKKQSC3R.js";
59
47
  import {
60
48
  MENU_FOCUS_SELECTOR,
61
49
  SETTINGS_BUILD
62
50
  } from "./chunk-H3WJQ4QQ.js";
63
51
  import {
64
- LockedPlug
65
- } from "./chunk-GS7D7I7X.js";
52
+ PersistPlug
53
+ } from "./chunk-JCSBCUKA.js";
66
54
  import {
67
- ObjectFitPlug
68
- } from "./chunk-SG4E7P7S.js";
55
+ PERSIST_BUILD
56
+ } from "./chunk-NAUZH3E6.js";
69
57
  import {
70
- OBJECT_FIT_BUILD,
71
- objectFits
72
- } from "./chunk-KD3OBG25.js";
58
+ OverlayPlug
59
+ } from "./chunk-AUHJS22O.js";
60
+ import {
61
+ OVERLAY_BUILD
62
+ } from "./chunk-PXU563OY.js";
73
63
  import {
74
64
  NotifiersPlug
75
65
  } from "./chunk-KST5YWTX.js";
@@ -77,17 +67,12 @@ import {
77
67
  NOTIFIERS_BUILD
78
68
  } from "./chunk-VK3HTM6U.js";
79
69
  import {
80
- LOCKED_BUILD
81
- } from "./chunk-IQS7GQSK.js";
82
- import {
83
- KeysPlug
84
- } from "./chunk-LAX4F7R3.js";
85
- import {
86
- MetadataPlug
87
- } from "./chunk-65ZJKSNP.js";
70
+ ObjectFitPlug
71
+ } from "./chunk-SG4E7P7S.js";
88
72
  import {
89
- METADATA_BUILD
90
- } from "./chunk-VZG6IJLU.js";
73
+ OBJECT_FIT_BUILD,
74
+ objectFits
75
+ } from "./chunk-KD3OBG25.js";
91
76
  import {
92
77
  ModesFullscreenPin,
93
78
  ModesMiniplayerPin,
@@ -106,9 +91,24 @@ import {
106
91
  ORIENTATION_OPTS,
107
92
  RESIZE_DIRS
108
93
  } from "./chunk-OBT4ZZUV.js";
94
+ import {
95
+ LockedPlug
96
+ } from "./chunk-GS7D7I7X.js";
97
+ import {
98
+ LOCKED_BUILD
99
+ } from "./chunk-IQS7GQSK.js";
100
+ import {
101
+ KeysPlug
102
+ } from "./chunk-X2PY4DAZ.js";
103
+ import {
104
+ MetadataPlug
105
+ } from "./chunk-65ZJKSNP.js";
106
+ import {
107
+ METADATA_BUILD
108
+ } from "./chunk-VZG6IJLU.js";
109
109
  import {
110
110
  FramePlug
111
- } from "./chunk-U6XDI2FQ.js";
111
+ } from "./chunk-2VXGUKAW.js";
112
112
  import {
113
113
  GesturePlug,
114
114
  GestureTouchPin,
@@ -137,11 +137,17 @@ import {
137
137
  } from "./chunk-SZ7YMJG6.js";
138
138
  import {
139
139
  CaptionsPlug
140
- } from "./chunk-KSASYWVJ.js";
140
+ } from "./chunk-SJOESZ5R.js";
141
+ import {
142
+ CSSPlug
143
+ } from "./chunk-23BYW5JE.js";
144
+ import {
145
+ CSS_BUILD
146
+ } from "./chunk-UCBDCGYX.js";
141
147
  import {
142
148
  ControlPanelDraggablePin,
143
149
  ControlPanelPlug
144
- } from "./chunk-D6HQVHAM.js";
150
+ } from "./chunk-S6FHAYJX.js";
145
151
  import {
146
152
  ToastsPlug,
147
153
  tutorialOpts
@@ -149,12 +155,6 @@ import {
149
155
  import {
150
156
  TOASTS_BUILD
151
157
  } from "./chunk-3GIJOELI.js";
152
- import {
153
- CSSPlug
154
- } from "./chunk-23BYW5JE.js";
155
- import {
156
- CSS_BUILD
157
- } from "./chunk-UCBDCGYX.js";
158
158
  import {
159
159
  AutoPlug
160
160
  } from "./chunk-OLPEXQJF.js";
@@ -162,33 +162,27 @@ 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";
168
177
  import {
169
178
  BRIGHTNESS_BUILD
170
179
  } from "./chunk-JPWNE7JO.js";
171
- import {
172
- PlaylistPlug
173
- } from "./chunk-HWZYOHG7.js";
174
- import {
175
- SkeletonPlug
176
- } from "./chunk-EO2SYXX5.js";
177
- import {
178
- SKELETON_BUILD
179
- } from "./chunk-MKBKL3BT.js";
180
180
  import {
181
181
  AmbiencePlug
182
182
  } from "./chunk-3APJR7DP.js";
183
183
  import {
184
184
  AMBIENT_BUILD
185
185
  } from "./chunk-PPWMZTPS.js";
186
- import {
187
- LightPlug
188
- } from "./chunk-AKSQNAZS.js";
189
- import {
190
- LIGHT_BUILD
191
- } from "./chunk-ZFOHXLB2.js";
192
186
  import {
193
187
  AdsPlug
194
188
  } from "./chunk-6CXX7WZO.js";
@@ -196,6 +190,12 @@ import {
196
190
  ADS_BUILD,
197
191
  AD_ROLL_BUILD
198
192
  } from "./chunk-IW5NSWNS.js";
193
+ import {
194
+ SkeletonPlug
195
+ } from "./chunk-EO2SYXX5.js";
196
+ import {
197
+ SKELETON_BUILD
198
+ } from "./chunk-MKBKL3BT.js";
199
199
  import {
200
200
  DisabledPlug
201
201
  } from "./chunk-EZN6F5JE.js";
@@ -203,10 +203,9 @@ import {
203
203
  DISABLED_BUILD
204
204
  } from "./chunk-WW56NFQS.js";
205
205
  import {
206
- CAPTIONS_BUILD,
207
- ROTATE_PATHS,
208
- STYLE_PATHS
209
- } from "./chunk-IFRYW3PY.js";
206
+ BasePin,
207
+ BasePlug
208
+ } from "./chunk-5EKOUIF3.js";
210
209
  import {
211
210
  CONTROLS,
212
211
  CONTROL_PANEL_BUILD,
@@ -219,15 +218,16 @@ import {
219
218
  KEYS_OVERIDES,
220
219
  KEYS_SHORTCUTS,
221
220
  KEYS_WHITELIST
222
- } from "./chunk-PZWBGXMX.js";
221
+ } from "./chunk-QZLPEALR.js";
222
+ import {
223
+ CAPTIONS_BUILD,
224
+ ROTATE_PATHS,
225
+ STYLE_PATHS
226
+ } from "./chunk-IFRYW3PY.js";
223
227
  import {
224
228
  PLAYLIST_BUILD,
225
229
  PLAY_ITEM_BUILD
226
230
  } from "./chunk-53P2DFNM.js";
227
- import {
228
- BasePin,
229
- BasePlug
230
- } from "./chunk-5EKOUIF3.js";
231
231
  import {
232
232
  __export
233
233
  } from "./chunk-UVKRO5ER.js";
@@ -340,4 +340,4 @@ __export(plugs_exports, {
340
340
  export {
341
341
  plugs_exports
342
342
  };
343
- //# sourceMappingURL=chunk-UAZ33UVV.js.map
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-U6XDI2FQ.js.map
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":[]}
@@ -1,10 +1,10 @@
1
+ import {
2
+ BasePlug
3
+ } from "./chunk-5EKOUIF3.js";
1
4
  import {
2
5
  PLAYLIST_BUILD,
3
6
  PLAY_ITEM_BUILD
4
7
  } from "./chunk-53P2DFNM.js";
5
- import {
6
- BasePlug
7
- } from "./chunk-5EKOUIF3.js";
8
8
  import {
9
9
  smartFlatSort
10
10
  } from "./chunk-MPZ62IDU.js";
@@ -103,4 +103,4 @@ __publicField(PlaylistPlug, "BUILD", PLAYLIST_BUILD);
103
103
  export {
104
104
  PlaylistPlug
105
105
  };
106
- //# sourceMappingURL=chunk-HWZYOHG7.js.map
106
+ //# sourceMappingURL=chunk-3VN6SCE4.js.map
@@ -1,15 +1,3 @@
1
- import {
2
- tripleTriangleLeft
3
- } from "./chunk-IIRP4XMQ.js";
4
- import {
5
- tripleTriangleRight
6
- } from "./chunk-ZTOANBNR.js";
7
- import {
8
- unlock
9
- } from "./chunk-TMTWPBFD.js";
10
- import {
11
- videoTrack
12
- } from "./chunk-AIJWNUXU.js";
13
1
  import {
14
2
  volumeHigh
15
3
  } from "./chunk-W6TNR6NH.js";
@@ -19,18 +7,6 @@ import {
19
7
  import {
20
8
  volumeMuted
21
9
  } from "./chunk-2WOP45O7.js";
22
- import {
23
- replay
24
- } from "./chunk-YHTCXXEG.js";
25
- import {
26
- returnBack
27
- } from "./chunk-BHHFZM5D.js";
28
- import {
29
- settings
30
- } from "./chunk-2J3FJY73.js";
31
- import {
32
- shuffle
33
- } from "./chunk-OEHNS7YX.js";
34
10
  import {
35
11
  sort
36
12
  } from "./chunk-QP2X53HC.js";
@@ -44,17 +20,17 @@ import {
44
20
  triangleLeft
45
21
  } from "./chunk-6SMYDK4B.js";
46
22
  import {
47
- pause
48
- } from "./chunk-OOXUZMZ7.js";
23
+ tripleTriangleLeft
24
+ } from "./chunk-IIRP4XMQ.js";
49
25
  import {
50
- pipPlaceholder
51
- } from "./chunk-7CRW7VGS.js";
26
+ tripleTriangleRight
27
+ } from "./chunk-ZTOANBNR.js";
52
28
  import {
53
- play
54
- } from "./chunk-K4UHBEDT.js";
29
+ unlock
30
+ } from "./chunk-TMTWPBFD.js";
55
31
  import {
56
- playbackRate
57
- } from "./chunk-C3IEUYR3.js";
32
+ videoTrack
33
+ } from "./chunk-AIJWNUXU.js";
58
34
  import {
59
35
  playlist
60
36
  } from "./chunk-KLAI7YSD.js";
@@ -68,17 +44,17 @@ import {
68
44
  removeMiniplayer
69
45
  } from "./chunk-GCEEKQP5.js";
70
46
  import {
71
- goBack
72
- } from "./chunk-4XUR7NSC.js";
47
+ replay
48
+ } from "./chunk-YHTCXXEG.js";
73
49
  import {
74
- lock
75
- } from "./chunk-T4LAQEBY.js";
50
+ returnBack
51
+ } from "./chunk-BHHFZM5D.js";
76
52
  import {
77
- loop
78
- } from "./chunk-OSDM6ZVT.js";
53
+ settings
54
+ } from "./chunk-2J3FJY73.js";
79
55
  import {
80
- mic
81
- } from "./chunk-PEKXIISU.js";
56
+ shuffle
57
+ } from "./chunk-OEHNS7YX.js";
82
58
  import {
83
59
  next
84
60
  } from "./chunk-MP2GRDUX.js";
@@ -92,17 +68,17 @@ import {
92
68
  objectFitFill
93
69
  } from "./chunk-JERHONAV.js";
94
70
  import {
95
- errorPlaceholder
96
- } from "./chunk-2K7QF6AQ.js";
71
+ pause
72
+ } from "./chunk-OOXUZMZ7.js";
97
73
  import {
98
- exitFullscreen
99
- } from "./chunk-DR2VKENG.js";
74
+ pipPlaceholder
75
+ } from "./chunk-7CRW7VGS.js";
100
76
  import {
101
- exitPip
102
- } from "./chunk-OCWLEK2W.js";
77
+ play
78
+ } from "./chunk-K4UHBEDT.js";
103
79
  import {
104
- exitTheater
105
- } from "./chunk-CRH6DM5A.js";
80
+ playbackRate
81
+ } from "./chunk-C3IEUYR3.js";
106
82
  import {
107
83
  expandMiniplayer
108
84
  } from "./chunk-DN4TFOZV.js";
@@ -116,17 +92,17 @@ import {
116
92
  fwd
117
93
  } from "./chunk-XXYOJDOZ.js";
118
94
  import {
119
- check
120
- } from "./chunk-O7XYY33O.js";
95
+ goBack
96
+ } from "./chunk-4XUR7NSC.js";
121
97
  import {
122
- doubleTriangleLeft
123
- } from "./chunk-VGWGAAZA.js";
98
+ lock
99
+ } from "./chunk-T4LAQEBY.js";
124
100
  import {
125
- doubleTriangleRight
126
- } from "./chunk-Q5TE3ZDK.js";
101
+ loop
102
+ } from "./chunk-OSDM6ZVT.js";
127
103
  import {
128
- dragIndicator
129
- } from "./chunk-ZLZCQ3KJ.js";
104
+ mic
105
+ } from "./chunk-PEKXIISU.js";
130
106
  import {
131
107
  edit
132
108
  } from "./chunk-NLJQAJZB.js";
@@ -140,17 +116,17 @@ import {
140
116
  enterTheater
141
117
  } from "./chunk-BZYMBDEH.js";
142
118
  import {
143
- brightnessHigh
144
- } from "./chunk-YEQ7IT4H.js";
119
+ errorPlaceholder
120
+ } from "./chunk-2K7QF6AQ.js";
145
121
  import {
146
- brightnessLow
147
- } from "./chunk-63CB7WUR.js";
122
+ exitFullscreen
123
+ } from "./chunk-DR2VKENG.js";
148
124
  import {
149
- bwd
150
- } from "./chunk-PV24XKW2.js";
125
+ exitPip
126
+ } from "./chunk-OCWLEK2W.js";
151
127
  import {
152
- captions
153
- } from "./chunk-CTSPKWKN.js";
128
+ exitTheater
129
+ } from "./chunk-CRH6DM5A.js";
154
130
  import {
155
131
  capture
156
132
  } from "./chunk-HA2GK6KH.js";
@@ -164,17 +140,17 @@ import {
164
140
  chapters
165
141
  } from "./chunk-2W5XWGGE.js";
166
142
  import {
167
- airplay
168
- } from "./chunk-JP5X5JDL.js";
143
+ check
144
+ } from "./chunk-O7XYY33O.js";
169
145
  import {
170
- airplayPlaceholder
171
- } from "./chunk-URDNEQFP.js";
146
+ doubleTriangleLeft
147
+ } from "./chunk-VGWGAAZA.js";
172
148
  import {
173
- ambience
174
- } from "./chunk-XHXIXEGS.js";
149
+ doubleTriangleRight
150
+ } from "./chunk-Q5TE3ZDK.js";
175
151
  import {
176
- audioTrack
177
- } from "./chunk-AH2VE4UI.js";
152
+ dragIndicator
153
+ } from "./chunk-ZLZCQ3KJ.js";
178
154
  import {
179
155
  autoplay
180
156
  } from "./chunk-WTHHXWQM.js";
@@ -187,9 +163,33 @@ import {
187
163
  import {
188
164
  brightnessDark
189
165
  } from "./chunk-XTLPAS7S.js";
166
+ import {
167
+ brightnessHigh
168
+ } from "./chunk-YEQ7IT4H.js";
169
+ import {
170
+ brightnessLow
171
+ } from "./chunk-63CB7WUR.js";
172
+ import {
173
+ bwd
174
+ } from "./chunk-PV24XKW2.js";
175
+ import {
176
+ captions
177
+ } from "./chunk-CTSPKWKN.js";
190
178
  import {
191
179
  add
192
180
  } from "./chunk-ID72UAJE.js";
181
+ import {
182
+ airplay
183
+ } from "./chunk-JP5X5JDL.js";
184
+ import {
185
+ airplayPlaceholder
186
+ } from "./chunk-URDNEQFP.js";
187
+ import {
188
+ ambience
189
+ } from "./chunk-XHXIXEGS.js";
190
+ import {
191
+ audioTrack
192
+ } from "./chunk-AH2VE4UI.js";
193
193
  import {
194
194
  IconRegistry
195
195
  } from "./chunk-3NUEYI6F.js";
@@ -262,4 +262,4 @@ IconRegistry.registerAll({
262
262
  goBack,
263
263
  mic
264
264
  });
265
- //# sourceMappingURL=chunk-CS262ZPQ.js.map
265
+ //# sourceMappingURL=chunk-JLUX5NZJ.js.map
@@ -1,12 +1,3 @@
1
- import {
2
- DashTech
3
- } from "./chunk-PK4FFZZ4.js";
4
- import {
5
- HLSTech
6
- } from "./chunk-LNING7Z4.js";
7
- import {
8
- ShakaTech
9
- } from "./chunk-5V7L4U3B.js";
10
1
  import {
11
2
  VIMEO_EVENTS,
12
3
  VimeoTech
@@ -14,9 +5,18 @@ import {
14
5
  import {
15
6
  YouTubeTech
16
7
  } from "./chunk-C2A7NNKK.js";
8
+ import {
9
+ DashTech
10
+ } from "./chunk-PK4FFZZ4.js";
11
+ import {
12
+ HLSTech
13
+ } from "./chunk-LNING7Z4.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-KOLPBP6L.js.map
49
+ //# sourceMappingURL=chunk-MSP3WUNO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  KEYS_MODS_ACTIONS
3
- } from "./chunk-PZWBGXMX.js";
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-C5VHC67O.js.map
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.loadedMetadata", this.autoGenerate, { init: this.ctlr.flags.wired, signal: this.signal });
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-PXK56QO3.js.map
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":[]}