tmg-media-player 0.0.45 → 0.0.46

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 (44) hide show
  1. package/dist/{chunk-GANVIUO4.js → chunk-2E73S6VU.js} +4 -4
  2. package/dist/{chunk-GANVIUO4.js.map → chunk-2E73S6VU.js.map} +1 -1
  3. package/dist/{chunk-JLUX5NZJ.js → chunk-CS262ZPQ.js} +73 -73
  4. package/dist/{chunk-QKDQO5Q6.js → chunk-G7LPQ2QM.js} +32 -32
  5. package/dist/{chunk-2XZVZP7M.js → chunk-P6BOUZA5.js} +45 -45
  6. package/dist/{chunk-VZMLWPQX.js → chunk-R7GPLSBU.js} +9 -9
  7. package/dist/{chunk-ESIE67WG.js → chunk-RAFGKRDN.js} +21 -21
  8. package/dist/{chunk-2GLRF3EN.js → chunk-VRDNDLPZ.js} +133 -133
  9. package/dist/{chunk-I2G5SNJJ.js → chunk-ZT3C7L5J.js} +67 -67
  10. package/dist/components/icons/z-register.js +33 -33
  11. package/dist/components/notifiers/z-register.js +8 -8
  12. package/dist/components/z-register.js +17 -17
  13. package/dist/index.css +2 -3
  14. package/dist/index.css.map +1 -1
  15. package/dist/plugs/menus/z-register.js +5 -5
  16. package/dist/plugs/settings/panel/index.cjs +3 -3
  17. package/dist/plugs/settings/panel/index.cjs.map +1 -1
  18. package/dist/plugs/settings/panel/index.js +1 -1
  19. package/dist/plugs/settings/sleepTimer/index.js +1 -1
  20. package/dist/plugs/z-register.cjs +3 -3
  21. package/dist/plugs/z-register.cjs.map +1 -1
  22. package/dist/plugs/z-register.js +26 -26
  23. package/dist/super/components/icons.js +73 -73
  24. package/dist/super/components/index.js +136 -136
  25. package/dist/super/components/notifiers.js +21 -21
  26. package/dist/super/plugs/index.cjs +3 -3
  27. package/dist/super/plugs/index.cjs.map +1 -1
  28. package/dist/super/plugs/index.js +74 -74
  29. package/dist/super/plugs/menus.js +10 -10
  30. package/dist/super.cjs +3 -3
  31. package/dist/super.cjs.map +1 -1
  32. package/dist/super.css +2 -3
  33. package/dist/super.css.map +1 -1
  34. package/dist/super.global.js +3 -3
  35. package/dist/super.global.js.map +1 -1
  36. package/dist/super.js +93 -93
  37. package/package.json +1 -1
  38. /package/dist/{chunk-JLUX5NZJ.js.map → chunk-CS262ZPQ.js.map} +0 -0
  39. /package/dist/{chunk-QKDQO5Q6.js.map → chunk-G7LPQ2QM.js.map} +0 -0
  40. /package/dist/{chunk-2XZVZP7M.js.map → chunk-P6BOUZA5.js.map} +0 -0
  41. /package/dist/{chunk-VZMLWPQX.js.map → chunk-R7GPLSBU.js.map} +0 -0
  42. /package/dist/{chunk-ESIE67WG.js.map → chunk-RAFGKRDN.js.map} +0 -0
  43. /package/dist/{chunk-2GLRF3EN.js.map → chunk-VRDNDLPZ.js.map} +0 -0
  44. /package/dist/{chunk-I2G5SNJJ.js.map → chunk-ZT3C7L5J.js.map} +0 -0
@@ -127,7 +127,7 @@ var PanelPlug = class extends BasePlug {
127
127
  </ul>
128
128
  <h3 style="margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;">\u{1F3D7}\uFE0F Total UI Control</h3>
129
129
  <ul style="padding-left: 20px; line-height: 1.6; margin-bottom: 25px;">
130
- <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>
130
+ <li><strong>Build your own player:</strong> Don't like our layout? <strong>Click and drag</strong> almost "any" button on the control bars to physically rearrange the interface exactly how you want it.</li>
131
131
  <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>
132
132
  <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>
133
133
  <li><strong>Descriptive hints:</strong> Hover over the controls to expose their tooltips and get more information about how to trigger each function.</li>
@@ -135,7 +135,7 @@ var PanelPlug = class extends BasePlug {
135
135
  <h3 style="margin-top: 0; margin-bottom: 10px; border-bottom: 1px solid currentColor; padding-bottom: 5px; opacity: 0.85;">\u2328\uFE0F Keyboard Ninja Status</h3>
136
136
  <ul style="padding-left: 20px; line-height: 1.6; margin-bottom: 25px;">
137
137
  <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>
138
- <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>
138
+ <li><strong>Time travel:</strong> Hit any number key to jump to that percentage of the video (e.g., hitting '5' jumps to the exact middle). <em>(Easter Egg: Undo or Redo with <strong>Ctrl + Z</strong> and <strong>Ctrl + Y</strong>)</em></li>
139
139
  <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>
140
140
  <li><strong>Warp speed:</strong> Use <strong>&gt;</strong> and <strong>&lt;</strong> to crank the playback speed up or down.</li>
141
141
  </ul>
@@ -148,7 +148,7 @@ var PanelPlug = class extends BasePlug {
148
148
  </ul>
149
149
  <div style="text-align: center; margin-top: 30px; padding: 15px; border-radius: 8px; background: rgba(128, 128, 128, 0.1);">
150
150
  <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>
151
- <p style="margin: 0; opacity: 0.8;">\u{1F9EA} <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>
151
+ <p style="margin: 0; opacity: 0.8;">\u{1F9EA} <strong>beta tester?</strong> Find the Settings advanced menu 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>
152
152
  </div>
153
153
  </div>
154
154
  `;
@@ -167,4 +167,4 @@ __publicField(PanelPlug, "BUILD", SETTINGS_BUILD);
167
167
  export {
168
168
  PanelPlug
169
169
  };
170
- //# sourceMappingURL=chunk-GANVIUO4.js.map
170
+ //# sourceMappingURL=chunk-2E73S6VU.js.map
@@ -1 +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>&gt;</strong> and <strong>&lt;</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 &amp; 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":[]}
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 control bars 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:</strong> Hit any number key to jump to that percentage of the video (e.g., hitting '5' jumps to the exact middle). <em>(Easter Egg: Undo or Redo with <strong>Ctrl + Z</strong> and <strong>Ctrl + Y</strong>)</em></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>&gt;</strong> and <strong>&lt;</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 &amp; 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> Find the Settings advanced menu 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":[]}
@@ -1,24 +1,3 @@
1
- import {
2
- volumeHigh
3
- } from "./chunk-W6TNR6NH.js";
4
- import {
5
- volumeLow
6
- } from "./chunk-CRVRDKEG.js";
7
- import {
8
- volumeMuted
9
- } from "./chunk-2WOP45O7.js";
10
- import {
11
- sort
12
- } from "./chunk-QP2X53HC.js";
13
- import {
14
- subtitles
15
- } from "./chunk-D7JQDN74.js";
16
- import {
17
- timer
18
- } from "./chunk-R4HNE7TL.js";
19
- import {
20
- triangleLeft
21
- } from "./chunk-6SMYDK4B.js";
22
1
  import {
23
2
  tripleTriangleLeft
24
3
  } from "./chunk-IIRP4XMQ.js";
@@ -32,17 +11,14 @@ import {
32
11
  videoTrack
33
12
  } from "./chunk-AIJWNUXU.js";
34
13
  import {
35
- playlist
36
- } from "./chunk-KLAI7YSD.js";
37
- import {
38
- previous
39
- } from "./chunk-65HPQXXZ.js";
14
+ volumeHigh
15
+ } from "./chunk-W6TNR6NH.js";
40
16
  import {
41
- quality
42
- } from "./chunk-JG7AOGDX.js";
17
+ volumeLow
18
+ } from "./chunk-CRVRDKEG.js";
43
19
  import {
44
- removeMiniplayer
45
- } from "./chunk-GCEEKQP5.js";
20
+ volumeMuted
21
+ } from "./chunk-2WOP45O7.js";
46
22
  import {
47
23
  replay
48
24
  } from "./chunk-YHTCXXEG.js";
@@ -56,17 +32,17 @@ import {
56
32
  shuffle
57
33
  } from "./chunk-OEHNS7YX.js";
58
34
  import {
59
- next
60
- } from "./chunk-MP2GRDUX.js";
35
+ sort
36
+ } from "./chunk-QP2X53HC.js";
61
37
  import {
62
- objectFitContain
63
- } from "./chunk-2DIFFYIR.js";
38
+ subtitles
39
+ } from "./chunk-D7JQDN74.js";
64
40
  import {
65
- objectFitCover
66
- } from "./chunk-JBAQKWHW.js";
41
+ timer
42
+ } from "./chunk-R4HNE7TL.js";
67
43
  import {
68
- objectFitFill
69
- } from "./chunk-JERHONAV.js";
44
+ triangleLeft
45
+ } from "./chunk-6SMYDK4B.js";
70
46
  import {
71
47
  pause
72
48
  } from "./chunk-OOXUZMZ7.js";
@@ -80,17 +56,17 @@ import {
80
56
  playbackRate
81
57
  } from "./chunk-C3IEUYR3.js";
82
58
  import {
83
- expandMiniplayer
84
- } from "./chunk-DN4TFOZV.js";
59
+ playlist
60
+ } from "./chunk-KLAI7YSD.js";
85
61
  import {
86
- forward10
87
- } from "./chunk-PGSBJUJ4.js";
62
+ previous
63
+ } from "./chunk-65HPQXXZ.js";
88
64
  import {
89
- fullscreenOrientation
90
- } from "./chunk-SEHWINY7.js";
65
+ quality
66
+ } from "./chunk-JG7AOGDX.js";
91
67
  import {
92
- fwd
93
- } from "./chunk-XXYOJDOZ.js";
68
+ removeMiniplayer
69
+ } from "./chunk-GCEEKQP5.js";
94
70
  import {
95
71
  goBack
96
72
  } from "./chunk-4XUR7NSC.js";
@@ -104,17 +80,17 @@ import {
104
80
  mic
105
81
  } from "./chunk-PEKXIISU.js";
106
82
  import {
107
- edit
108
- } from "./chunk-NLJQAJZB.js";
83
+ next
84
+ } from "./chunk-MP2GRDUX.js";
109
85
  import {
110
- enterFullscreen
111
- } from "./chunk-27UEI7BB.js";
86
+ objectFitContain
87
+ } from "./chunk-2DIFFYIR.js";
112
88
  import {
113
- enterPip
114
- } from "./chunk-SRZCJKJZ.js";
89
+ objectFitCover
90
+ } from "./chunk-JBAQKWHW.js";
115
91
  import {
116
- enterTheater
117
- } from "./chunk-BZYMBDEH.js";
92
+ objectFitFill
93
+ } from "./chunk-JERHONAV.js";
118
94
  import {
119
95
  errorPlaceholder
120
96
  } from "./chunk-2K7QF6AQ.js";
@@ -128,17 +104,17 @@ import {
128
104
  exitTheater
129
105
  } from "./chunk-CRH6DM5A.js";
130
106
  import {
131
- capture
132
- } from "./chunk-HA2GK6KH.js";
107
+ expandMiniplayer
108
+ } from "./chunk-DN4TFOZV.js";
133
109
  import {
134
- cast
135
- } from "./chunk-6S5BMP4A.js";
110
+ forward10
111
+ } from "./chunk-PGSBJUJ4.js";
136
112
  import {
137
- castPlaceholder
138
- } from "./chunk-HXGWGQL3.js";
113
+ fullscreenOrientation
114
+ } from "./chunk-SEHWINY7.js";
139
115
  import {
140
- chapters
141
- } from "./chunk-2W5XWGGE.js";
116
+ fwd
117
+ } from "./chunk-XXYOJDOZ.js";
142
118
  import {
143
119
  check
144
120
  } from "./chunk-O7XYY33O.js";
@@ -152,17 +128,17 @@ import {
152
128
  dragIndicator
153
129
  } from "./chunk-ZLZCQ3KJ.js";
154
130
  import {
155
- autoplay
156
- } from "./chunk-WTHHXWQM.js";
131
+ edit
132
+ } from "./chunk-NLJQAJZB.js";
157
133
  import {
158
- backward10
159
- } from "./chunk-3KD22Z7D.js";
134
+ enterFullscreen
135
+ } from "./chunk-27UEI7BB.js";
160
136
  import {
161
- bin
162
- } from "./chunk-XQDJXXGL.js";
137
+ enterPip
138
+ } from "./chunk-SRZCJKJZ.js";
163
139
  import {
164
- brightnessDark
165
- } from "./chunk-XTLPAS7S.js";
140
+ enterTheater
141
+ } from "./chunk-BZYMBDEH.js";
166
142
  import {
167
143
  brightnessHigh
168
144
  } from "./chunk-YEQ7IT4H.js";
@@ -176,8 +152,17 @@ import {
176
152
  captions
177
153
  } from "./chunk-CTSPKWKN.js";
178
154
  import {
179
- add
180
- } from "./chunk-ID72UAJE.js";
155
+ capture
156
+ } from "./chunk-HA2GK6KH.js";
157
+ import {
158
+ cast
159
+ } from "./chunk-6S5BMP4A.js";
160
+ import {
161
+ castPlaceholder
162
+ } from "./chunk-HXGWGQL3.js";
163
+ import {
164
+ chapters
165
+ } from "./chunk-2W5XWGGE.js";
181
166
  import {
182
167
  airplay
183
168
  } from "./chunk-JP5X5JDL.js";
@@ -190,6 +175,21 @@ import {
190
175
  import {
191
176
  audioTrack
192
177
  } from "./chunk-AH2VE4UI.js";
178
+ import {
179
+ autoplay
180
+ } from "./chunk-WTHHXWQM.js";
181
+ import {
182
+ backward10
183
+ } from "./chunk-3KD22Z7D.js";
184
+ import {
185
+ bin
186
+ } from "./chunk-XQDJXXGL.js";
187
+ import {
188
+ brightnessDark
189
+ } from "./chunk-XTLPAS7S.js";
190
+ import {
191
+ add
192
+ } from "./chunk-ID72UAJE.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-JLUX5NZJ.js.map
265
+ //# sourceMappingURL=chunk-CS262ZPQ.js.map
@@ -1,18 +1,18 @@
1
1
  import {
2
- TimeTravelPlug
3
- } from "./chunk-DVWO4TAJ.js";
2
+ VoicePlug
3
+ } from "./chunk-EDDHWZ2G.js";
4
4
  import {
5
5
  VolumePlug
6
6
  } from "./chunk-YTENMWZC.js";
7
- import {
8
- TimePlug
9
- } from "./chunk-EOF74JXP.js";
10
7
  import {
11
8
  SleepTimerPlug
12
9
  } from "./chunk-FVLZ3OEJ.js";
13
10
  import {
14
- VoicePlug
15
- } from "./chunk-EDDHWZ2G.js";
11
+ TimePlug
12
+ } from "./chunk-EOF74JXP.js";
13
+ import {
14
+ TimeTravelPlug
15
+ } from "./chunk-DVWO4TAJ.js";
16
16
  import {
17
17
  PlaybackRatePlug
18
18
  } from "./chunk-HJTL3RDC.js";
@@ -20,11 +20,11 @@ import {
20
20
  PosterPlug
21
21
  } from "./chunk-7Z3ELIF5.js";
22
22
  import {
23
- OverlayPlug
24
- } from "./chunk-YDEE32IH.js";
23
+ LockedPlug
24
+ } from "./chunk-U32SPBGP.js";
25
25
  import {
26
26
  PanelPlug
27
- } from "./chunk-GANVIUO4.js";
27
+ } from "./chunk-2E73S6VU.js";
28
28
  import {
29
29
  PersistPlug
30
30
  } from "./chunk-7VQGFCDP.js";
@@ -35,11 +35,20 @@ import {
35
35
  ObjectFitPlug
36
36
  } from "./chunk-AFFUBWU7.js";
37
37
  import {
38
- ModesAirPlayPin
39
- } from "./chunk-HKC2BLPK.js";
38
+ OverlayPlug
39
+ } from "./chunk-YDEE32IH.js";
40
40
  import {
41
41
  ModesCastPin
42
42
  } from "./chunk-75IZQRFT.js";
43
+ import {
44
+ MetadataPlug
45
+ } from "./chunk-VXVCJNJA.js";
46
+ import {
47
+ KeysPlug
48
+ } from "./chunk-MVECTY6M.js";
49
+ import {
50
+ ModesAirPlayPin
51
+ } from "./chunk-HKC2BLPK.js";
43
52
  import {
44
53
  ModesFullscreenPin,
45
54
  ModesMiniplayerPin,
@@ -47,15 +56,6 @@ import {
47
56
  ModesPlug,
48
57
  ModesTheaterPin
49
58
  } from "./chunk-2PAMF7VB.js";
50
- import {
51
- KeysPlug
52
- } from "./chunk-MVECTY6M.js";
53
- import {
54
- LockedPlug
55
- } from "./chunk-U32SPBGP.js";
56
- import {
57
- MetadataPlug
58
- } from "./chunk-VXVCJNJA.js";
59
59
  import {
60
60
  FramePlug
61
61
  } from "./chunk-6U7TJ55D.js";
@@ -71,8 +71,8 @@ import {
71
71
  FastPlayPlug
72
72
  } from "./chunk-SSEY3TRB.js";
73
73
  import {
74
- AutoPlug
75
- } from "./chunk-JSRE6TE6.js";
74
+ CaptionsPlug
75
+ } from "./chunk-DIPJKHL6.js";
76
76
  import {
77
77
  ControlPanelDraggablePin,
78
78
  ControlPanelPlug
@@ -83,27 +83,27 @@ import {
83
83
  import {
84
84
  CSSPlug
85
85
  } from "./chunk-33S55DYW.js";
86
+ import {
87
+ AutoPlug
88
+ } from "./chunk-JSRE6TE6.js";
86
89
  import {
87
90
  BrightnessPlug
88
91
  } from "./chunk-YE35AUGV.js";
89
92
  import {
90
- CaptionsPlug
91
- } from "./chunk-DIPJKHL6.js";
93
+ SkeletonPlug
94
+ } from "./chunk-HJSF7FIY.js";
95
+ import {
96
+ PlaylistPlug
97
+ } from "./chunk-FNBLEFZP.js";
92
98
  import {
93
99
  AmbiencePlug
94
100
  } from "./chunk-EJTIHJQW.js";
95
- import {
96
- SkeletonPlug
97
- } from "./chunk-HJSF7FIY.js";
98
101
  import {
99
102
  AdsPlug
100
103
  } from "./chunk-G4CMSCPP.js";
101
104
  import {
102
105
  LightPlug
103
106
  } from "./chunk-2DR4K47N.js";
104
- import {
105
- PlaylistPlug
106
- } from "./chunk-FNBLEFZP.js";
107
107
  import {
108
108
  DisabledPlug
109
109
  } from "./chunk-L7JGVG2M.js";
@@ -162,4 +162,4 @@ for (const Pin of [
162
162
  GestureTouchPin
163
163
  ])
164
164
  PinRegistry.register(Pin);
165
- //# sourceMappingURL=chunk-QKDQO5Q6.js.map
165
+ //# sourceMappingURL=chunk-G7LPQ2QM.js.map
@@ -7,30 +7,9 @@ import {
7
7
  import {
8
8
  BrightnessControl
9
9
  } from "./chunk-SW7QOR7V.js";
10
- import {
11
- CastPlaceholder
12
- } from "./chunk-DLN6CCVO.js";
13
- import {
14
- ErrorPlaceholder
15
- } from "./chunk-IU2B6VX5.js";
16
- import {
17
- PiPPlaceholder
18
- } from "./chunk-6XZXEBLR.js";
19
10
  import {
20
11
  RangeInput
21
12
  } from "./chunk-PNUIVHH4.js";
22
- import {
23
- PreviousButton
24
- } from "./chunk-ATLSJJZX.js";
25
- import {
26
- RemoveMiniplayerButton
27
- } from "./chunk-J5ESLAGG.js";
28
- import {
29
- SettingsButton
30
- } from "./chunk-WZINXIIW.js";
31
- import {
32
- TheaterButton
33
- } from "./chunk-CTXFLY7V.js";
34
13
  import {
35
14
  TimeButton
36
15
  } from "./chunk-5D3HDH6Z.js";
@@ -40,21 +19,6 @@ import {
40
19
  import {
41
20
  VoiceButton
42
21
  } from "./chunk-V7NE5HVK.js";
43
- import {
44
- AirPlayPlaceholder
45
- } from "./chunk-6QYP3OA6.js";
46
- import {
47
- FullscreenButton
48
- } from "./chunk-M4MAELFE.js";
49
- import {
50
- FullscreenLockButton
51
- } from "./chunk-4PKSRMKZ.js";
52
- import {
53
- FullscreenOrientationButton
54
- } from "./chunk-ZYZP6OTZ.js";
55
- import {
56
- Meta
57
- } from "./chunk-WMDE4WR7.js";
58
22
  import {
59
23
  NextButton
60
24
  } from "./chunk-ZJTUWRBI.js";
@@ -68,17 +32,17 @@ import {
68
32
  PlayPauseButton
69
33
  } from "./chunk-NFKJ322S.js";
70
34
  import {
71
- BigPreviousButton
72
- } from "./chunk-JOHN3OSE.js";
35
+ PreviousButton
36
+ } from "./chunk-ATLSJJZX.js";
73
37
  import {
74
- CaptionsButton
75
- } from "./chunk-GDT3ZMZN.js";
38
+ RemoveMiniplayerButton
39
+ } from "./chunk-J5ESLAGG.js";
76
40
  import {
77
- CaptureButton
78
- } from "./chunk-EJV73FIY.js";
41
+ SettingsButton
42
+ } from "./chunk-WZINXIIW.js";
79
43
  import {
80
- CastButton
81
- } from "./chunk-6OT6DHIW.js";
44
+ TheaterButton
45
+ } from "./chunk-CTXFLY7V.js";
82
46
  import {
83
47
  ChapterButton
84
48
  } from "./chunk-TBXDQT5T.js";
@@ -91,6 +55,18 @@ import {
91
55
  import {
92
56
  Forward10Button
93
57
  } from "./chunk-MNYFUWSL.js";
58
+ import {
59
+ FullscreenButton
60
+ } from "./chunk-M4MAELFE.js";
61
+ import {
62
+ FullscreenLockButton
63
+ } from "./chunk-4PKSRMKZ.js";
64
+ import {
65
+ FullscreenOrientationButton
66
+ } from "./chunk-ZYZP6OTZ.js";
67
+ import {
68
+ Meta
69
+ } from "./chunk-WMDE4WR7.js";
94
70
  import {
95
71
  AirPlayButton
96
72
  } from "./chunk-X3RI4YSK.js";
@@ -103,6 +79,30 @@ import {
103
79
  import {
104
80
  BigPlayPauseButton
105
81
  } from "./chunk-TA6WAQBX.js";
82
+ import {
83
+ BigPreviousButton
84
+ } from "./chunk-JOHN3OSE.js";
85
+ import {
86
+ CaptionsButton
87
+ } from "./chunk-GDT3ZMZN.js";
88
+ import {
89
+ CaptureButton
90
+ } from "./chunk-EJV73FIY.js";
91
+ import {
92
+ CastButton
93
+ } from "./chunk-6OT6DHIW.js";
94
+ import {
95
+ AirPlayPlaceholder
96
+ } from "./chunk-6QYP3OA6.js";
97
+ import {
98
+ CastPlaceholder
99
+ } from "./chunk-DLN6CCVO.js";
100
+ import {
101
+ ErrorPlaceholder
102
+ } from "./chunk-IU2B6VX5.js";
103
+ import {
104
+ PiPPlaceholder
105
+ } from "./chunk-6XZXEBLR.js";
106
106
  import {
107
107
  Buffer
108
108
  } from "./chunk-IA77Q36X.js";
@@ -159,4 +159,4 @@ for (const Comp of [
159
159
  ErrorPlaceholder
160
160
  ])
161
161
  ComponentRegistry.register(Comp);
162
- //# sourceMappingURL=chunk-2XZVZP7M.js.map
162
+ //# sourceMappingURL=chunk-P6BOUZA5.js.map