tmg-media-player 0.0.39 → 0.0.40

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 (118) hide show
  1. package/dist/{chunk-Z6FOLLSW.js → chunk-5QPPF5CW.js} +2 -2
  2. package/dist/{chunk-IATRVQEV.js → chunk-5V7L4U3B.js} +5 -5
  3. package/dist/{chunk-GTJAZRD3.js → chunk-7XTGBBTZ.js} +5 -5
  4. package/dist/chunk-7XTGBBTZ.js.map +1 -0
  5. package/dist/{chunk-SIOCMDUM.js → chunk-D7Y72JWH.js} +5 -2
  6. package/dist/chunk-D7Y72JWH.js.map +1 -0
  7. package/dist/{chunk-OE7J6SUZ.js → chunk-DNS6EFXH.js} +2 -2
  8. package/dist/{chunk-JLUX5NZJ.js → chunk-E5PBQLV3.js} +55 -55
  9. package/dist/{chunk-3VIUZIM7.js → chunk-I6Q53IPI.js} +2 -2
  10. package/dist/{chunk-YTJWGNAJ.js → chunk-LNING7Z4.js} +5 -5
  11. package/dist/{chunk-5MZHRJNP.js → chunk-OSSQUF2N.js} +96 -96
  12. package/dist/{chunk-WEY7BZMN.js → chunk-PD72HDH4.js} +106 -106
  13. package/dist/{chunk-HWCO6STB.js → chunk-PK4FFZZ4.js} +5 -5
  14. package/dist/{chunk-MMQ77CAP.js → chunk-PUPJFC6P.js} +26 -26
  15. package/dist/{chunk-LRZ73HA5.js → chunk-QT5XXSG7.js} +4 -4
  16. package/dist/{chunk-K4MQGUJD.js → chunk-R4CYVZ7J.js} +19 -19
  17. package/dist/{chunk-VCVEE35I.js → chunk-RIJ2SNV3.js} +2 -2
  18. package/dist/{chunk-5YH4S4N3.js → chunk-SFNWCR4G.js} +18 -18
  19. package/dist/{chunk-GVIT6AJ7.js → chunk-SJOESZ5R.js} +2 -2
  20. package/dist/{chunk-HO5PXZBF.js → chunk-SUEKTA5D.js} +2 -2
  21. package/dist/{chunk-N5XYU7BI.js → chunk-TJMGAIJ2.js} +50 -50
  22. package/dist/{chunk-JB5NAVCL.js → chunk-VIJEMQ77.js} +7 -7
  23. package/dist/{chunk-CXTBQYIV.js → chunk-VOHWWQMQ.js} +2 -2
  24. package/dist/{chunk-KB5LDVAF.js → chunk-VUX4UMWS.js} +2 -2
  25. package/dist/{chunk-J2GA63AT.js → chunk-XV33TV7K.js} +29 -29
  26. package/dist/{chunk-PZZGTM3A.js → chunk-ZRJ47BPK.js} +7 -7
  27. package/dist/components/controls/fullscreenOrientation.js +2 -2
  28. package/dist/components/controls/timeline/index.js +3 -3
  29. package/dist/components/holders/pipPlaceholder.js +3 -3
  30. package/dist/components/icons/z-register.js +25 -25
  31. package/dist/components/notifiers/z-register.js +7 -7
  32. package/dist/components/z-register.js +12 -12
  33. package/dist/core/controller.js +2 -2
  34. package/dist/index.js +3 -3
  35. package/dist/init.js +3 -3
  36. package/dist/plugs/menus/main/actions.js +2 -2
  37. package/dist/plugs/menus/settings/auto.js +2 -2
  38. package/dist/plugs/menus/settings/frame.js +2 -2
  39. package/dist/plugs/menus/settings/modes.js +2 -2
  40. package/dist/plugs/menus/settings/sleepTimer.js +2 -2
  41. package/dist/plugs/menus/settings/toasts.js +2 -2
  42. package/dist/plugs/menus/settings/voice.js +2 -2
  43. package/dist/plugs/menus/z-register.js +15 -15
  44. package/dist/plugs/settings/auto/index.js +2 -2
  45. package/dist/plugs/settings/captions/index.js +3 -3
  46. package/dist/plugs/settings/frame/index.cjs +1 -1
  47. package/dist/plugs/settings/frame/index.cjs.map +1 -1
  48. package/dist/plugs/settings/frame/index.js +1 -1
  49. package/dist/plugs/settings/gesture/index.cjs +1 -1
  50. package/dist/plugs/settings/gesture/index.cjs.map +1 -1
  51. package/dist/plugs/settings/gesture/index.js +2 -2
  52. package/dist/plugs/settings/gesture/touch.cjs +1 -1
  53. package/dist/plugs/settings/gesture/touch.cjs.map +1 -1
  54. package/dist/plugs/settings/gesture/touch.js +2 -2
  55. package/dist/plugs/settings/gesture/wheel.cjs +1 -1
  56. package/dist/plugs/settings/gesture/wheel.cjs.map +1 -1
  57. package/dist/plugs/settings/gesture/wheel.js +2 -2
  58. package/dist/plugs/settings/modes/airplay.js +4 -4
  59. package/dist/plugs/settings/modes/cast.js +4 -4
  60. package/dist/plugs/settings/modes/fullscreen.js +3 -3
  61. package/dist/plugs/settings/modes/index.js +3 -3
  62. package/dist/plugs/settings/modes/miniplayer.js +3 -3
  63. package/dist/plugs/settings/modes/pictureInPicture.js +3 -3
  64. package/dist/plugs/settings/modes/theater.js +3 -3
  65. package/dist/plugs/settings/sleepTimer/index.js +1 -1
  66. package/dist/plugs/settings/timeTravel/index.js +3 -3
  67. package/dist/plugs/settings/voice/index.js +2 -2
  68. package/dist/plugs/settings/volume/index.js +3 -3
  69. package/dist/plugs/z-register.cjs +2 -2
  70. package/dist/plugs/z-register.cjs.map +1 -1
  71. package/dist/plugs/z-register.js +43 -43
  72. package/dist/super/components/icons.js +55 -55
  73. package/dist/super/components/index.js +104 -104
  74. package/dist/super/components/notifiers.js +19 -19
  75. package/dist/super/plugs/index.cjs +2 -2
  76. package/dist/super/plugs/index.cjs.map +1 -1
  77. package/dist/super/plugs/index.js +125 -125
  78. package/dist/super/plugs/menus.js +33 -33
  79. package/dist/super/techs.js +9 -9
  80. package/dist/super/utils.js +26 -26
  81. package/dist/super.cjs +2 -2
  82. package/dist/super.cjs.map +1 -1
  83. package/dist/super.global.js +2 -2
  84. package/dist/super.global.js.map +1 -1
  85. package/dist/super.js +109 -109
  86. package/dist/techs/dash.js +3 -3
  87. package/dist/techs/hls.js +3 -3
  88. package/dist/techs/html5.js +2 -2
  89. package/dist/techs/shaka.js +3 -3
  90. package/dist/techs/youtube.js +2 -2
  91. package/dist/techs/z-register.js +6 -6
  92. package/dist/tools/player.js +2 -2
  93. package/dist/tools/runtime/index.js +2 -2
  94. package/package.json +1 -1
  95. package/dist/chunk-GTJAZRD3.js.map +0 -1
  96. package/dist/chunk-SIOCMDUM.js.map +0 -1
  97. /package/dist/{chunk-Z6FOLLSW.js.map → chunk-5QPPF5CW.js.map} +0 -0
  98. /package/dist/{chunk-IATRVQEV.js.map → chunk-5V7L4U3B.js.map} +0 -0
  99. /package/dist/{chunk-OE7J6SUZ.js.map → chunk-DNS6EFXH.js.map} +0 -0
  100. /package/dist/{chunk-JLUX5NZJ.js.map → chunk-E5PBQLV3.js.map} +0 -0
  101. /package/dist/{chunk-3VIUZIM7.js.map → chunk-I6Q53IPI.js.map} +0 -0
  102. /package/dist/{chunk-YTJWGNAJ.js.map → chunk-LNING7Z4.js.map} +0 -0
  103. /package/dist/{chunk-5MZHRJNP.js.map → chunk-OSSQUF2N.js.map} +0 -0
  104. /package/dist/{chunk-WEY7BZMN.js.map → chunk-PD72HDH4.js.map} +0 -0
  105. /package/dist/{chunk-HWCO6STB.js.map → chunk-PK4FFZZ4.js.map} +0 -0
  106. /package/dist/{chunk-MMQ77CAP.js.map → chunk-PUPJFC6P.js.map} +0 -0
  107. /package/dist/{chunk-LRZ73HA5.js.map → chunk-QT5XXSG7.js.map} +0 -0
  108. /package/dist/{chunk-K4MQGUJD.js.map → chunk-R4CYVZ7J.js.map} +0 -0
  109. /package/dist/{chunk-VCVEE35I.js.map → chunk-RIJ2SNV3.js.map} +0 -0
  110. /package/dist/{chunk-5YH4S4N3.js.map → chunk-SFNWCR4G.js.map} +0 -0
  111. /package/dist/{chunk-GVIT6AJ7.js.map → chunk-SJOESZ5R.js.map} +0 -0
  112. /package/dist/{chunk-HO5PXZBF.js.map → chunk-SUEKTA5D.js.map} +0 -0
  113. /package/dist/{chunk-N5XYU7BI.js.map → chunk-TJMGAIJ2.js.map} +0 -0
  114. /package/dist/{chunk-JB5NAVCL.js.map → chunk-VIJEMQ77.js.map} +0 -0
  115. /package/dist/{chunk-CXTBQYIV.js.map → chunk-VOHWWQMQ.js.map} +0 -0
  116. /package/dist/{chunk-KB5LDVAF.js.map → chunk-VUX4UMWS.js.map} +0 -0
  117. /package/dist/{chunk-J2GA63AT.js.map → chunk-XV33TV7K.js.map} +0 -0
  118. /package/dist/{chunk-PZZGTM3A.js.map → chunk-ZRJ47BPK.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ModesPlug
3
- } from "./chunk-CXTBQYIV.js";
3
+ } from "./chunk-VOHWWQMQ.js";
4
4
  import {
5
5
  MODES_AIRPLAY_BUILD
6
6
  } from "./chunk-OBT4ZZUV.js";
@@ -65,4 +65,4 @@ __publicField(ModesAirPlayPin, "BUILD", MODES_AIRPLAY_BUILD);
65
65
  export {
66
66
  ModesAirPlayPin
67
67
  };
68
- //# sourceMappingURL=chunk-Z6FOLLSW.js.map
68
+ //# sourceMappingURL=chunk-5QPPF5CW.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  HTML5Tech
3
- } from "./chunk-LRZ73HA5.js";
3
+ } from "./chunk-QT5XXSG7.js";
4
+ import {
5
+ MSE_ENABLED
6
+ } from "./chunk-RNETXJ63.js";
4
7
  import {
5
8
  DASH_EXTENSIONS,
6
9
  HLS_EXTENSIONS
7
10
  } from "./chunk-2XJFCVED.js";
8
- import {
9
- MSE_ENABLED
10
- } from "./chunk-RNETXJ63.js";
11
11
  import {
12
12
  loadResource
13
13
  } from "./chunk-RCQPJKYI.js";
@@ -177,4 +177,4 @@ __publicField(ShakaTech, "techName", "shaka");
177
177
  export {
178
178
  ShakaTech
179
179
  };
180
- //# sourceMappingURL=chunk-IATRVQEV.js.map
180
+ //# sourceMappingURL=chunk-5V7L4U3B.js.map
@@ -1,11 +1,11 @@
1
+ import {
2
+ GestureBasePin
3
+ } from "./chunk-DWGQW5JP.js";
1
4
  import {
2
5
  GESTURE_BUILD,
3
6
  GESTURE_TOUCH_BUILD,
4
7
  GESTURE_WHEEL_BUILD
5
8
  } from "./chunk-NHQA3G5Z.js";
6
- import {
7
- GestureBasePin
8
- } from "./chunk-DWGQW5JP.js";
9
9
  import {
10
10
  BasePlug
11
11
  } from "./chunk-5EKOUIF3.js";
@@ -140,7 +140,7 @@ var GesturePlug = class extends BasePlug {
140
140
  this.ctlr.plug("settings.overlay")?.delay();
141
141
  }
142
142
  handleRightClick(e) {
143
- e.preventDefault(), e.stopImmediatePropagation(), this.ctlr.plug("settings.panel")?.menu.open({ x: e.clientX, y: e.clientY });
143
+ e.preventDefault(), e.stopImmediatePropagation(), !IS_MOBILE && this.ctlr.plug("settings.panel")?.menu.open({ x: e.clientX, y: e.clientY });
144
144
  }
145
145
  handleClick(e) {
146
146
  if (e.target !== this.ctlr.DOM.controlsContainer) return;
@@ -295,4 +295,4 @@ export {
295
295
  GestureWheelPin,
296
296
  GesturePlug
297
297
  };
298
- //# sourceMappingURL=chunk-GTJAZRD3.js.map
298
+ //# sourceMappingURL=chunk-7XTGBBTZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ts/plugs/settings/gesture/index.ts","../src/ts/plugs/settings/gesture/wheel.ts","../src/ts/plugs/settings/gesture/touch.ts"],"sourcesContent":["import { BasePlug } from \"../../base\";\r\nimport type { GestureConfig, GestureState } from \"./types\";\r\nimport type { GestureWheelPin } from \"./wheel\";\r\nimport type { GestureTouchPin } from \"./touch\";\r\nimport { GESTURE_BUILD } from \"./build\";\r\nimport { PinRegistry } from \"@core/registries\";\r\nimport { Controller } from \"@core/controller\";\r\nimport { addSafeClicks } from \"@utils/dom\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { IS_MOBILE } from \"@utils/env\";\r\nimport { rippleHandler } from \"@t007/utils/hooks/vanilla\";\r\n\r\nexport class GesturePlug extends BasePlug<GestureConfig, GestureState> {\r\n public static readonly plugName = \"gesture\";\r\n public static readonly BUILD = GESTURE_BUILD;\r\n public wheel?: GestureWheelPin;\r\n public touch?: GestureTouchPin;\r\n public skipPos: \"left\" | \"right\" | null = null;\r\n protected focusSubjectId = \"\";\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.gesture) {\r\n super(ctlr, config, { skipping: false });\r\n const WheelPin = PinRegistry.get(\"gesture.wheel\"),\r\n TouchPin = PinRegistry.get(\"gesture.touch\");\r\n WheelPin && (this.wheel = new WheelPin(this.ctlr, this.config.wheel)), TouchPin && (this.touch = new TouchPin(this.ctlr, this.config.touch));\r\n }\r\n\r\n public override wire(): void {\r\n const run = () => {\r\n // Event Listeners\r\n this.media.container.addEventListener(\"contextmenu\", this.handleRightClick, { signal: this.signal });\r\n addSafeClicks(this.ctlr.DOM.controlsContainer, this.handleClick, this.handleDblClick, { capture: true, signal: this.signal });\r\n for (const el of [this.ctlr.DOM.controlsContainer, this.ctlr.DOM.bottomControlsWrapper]) {\r\n el?.addEventListener(\"click\", this.handleAnyClick, { capture: true, signal: this.signal });\r\n el?.addEventListener(\"focusin\", this.handleFocusIn, { capture: true, signal: this.signal });\r\n el?.addEventListener(\"keydown\", this.handleKeyFocusIn, { capture: true, signal: this.signal });\r\n for (const evt of [\"pointermove\", \"dragenter\", \"scroll\"]) el?.addEventListener(evt, this.handleHoverPointerActive, { capture: true, signal: this.signal });\r\n el?.addEventListener(\"mouseleave\", this.handleHoverPointerOut, { capture: true, signal: this.signal });\r\n }\r\n // Utility Injection\r\n this.wheel?.wire(), this.touch?.wire();\r\n };\r\n this.ctlr.flags.wired ? run() : this.ctlr.state.wonce(\"readyState\", run, { signal: this.signal }); // #HEAVY: waits for !light\r\n // Post Wiring\r\n super.wire();\r\n }\r\n\r\n public override mount(): void {\r\n this.wheel?.mount?.(), this.touch?.mount?.();\r\n }\r\n\r\n protected handleAnyClick(): void {\r\n this.ctlr.plug(\"settings.overlay\")?.delay();\r\n }\r\n protected handleRightClick(e: MouseEvent): void {\r\n e.preventDefault(), e.stopImmediatePropagation(), !IS_MOBILE && this.ctlr.plug(\"settings.panel\")?.menu.open({ x: e.clientX, y: e.clientY });\r\n }\r\n protected handleClick(e: MouseEvent): void {\r\n if (e.target !== this.ctlr.DOM.controlsContainer) return;\r\n if (this.ctlr.plug(\"settings.fastPlay\")?.state.active && (this.ctlr.plug(\"settings.keys\")?.playKeySeq ?? 1) < 1) return;\r\n if (IS_MOBILE && !this.media.state.pictureInPicture && !this.media.status.waiting && !this.media.status.ended && (!this.ctlr.plug(\"settings.time\")?.skipNotifier || !this.ctlr.isUIActive(\"overlay\"))) !/hidden|persistent/.test(this.settings.overlay.behavior.value) && this.media.container.classList.toggle(\"tmg-media-overlay\");\r\n if (!this.media.state.miniplayer && this.config.click) (this.media.intent[this.config.click] = !this.media.state[this.config.click] as never), this.config.click === \"paused\" && this.ctlr.notify?.(this.media.intent.paused ? \"mediaPause\" : \"mediaPlay\");\r\n }\r\n protected handleDblClick(e: MouseEvent): void {\r\n const { clientX: x, target, detail } = e;\r\n if (target !== this.ctlr.DOM.controlsContainer) return;\r\n const { width, left } = this.media.container.getBoundingClientRect(),\r\n pos = x - left > width * 0.65 ? \"right\" : x - left < width * 0.35 ? \"left\" : \"center\";\r\n if (this.state.skipping && pos !== this.skipPos) {\r\n this.ceaseSkip();\r\n if (detail === 1) return;\r\n }\r\n if (pos === \"center\" && this.config.dblClick) return void ((this.media.intent[this.config.dblClick] = !this.media.state[this.config.dblClick] as never), this.config.dblClick === \"paused\" && this.ctlr.notify?.(this.media.intent.paused ? \"mediaPause\" : \"mediaPlay\"));\r\n if (this.state.skipping && detail === 2) return;\r\n if (!this.state.skipping) this.persistSkip(pos as \"left\" | \"right\");\r\n this.ctlr.plug(\"settings.time\")?.skip(pos === \"right\" ? this.settings.time.skip : -this.settings.time.skip);\r\n rippleHandler(e, { target: this.ctlr.plug(\"settings.time\")?.skipNotifier });\r\n }\r\n\r\n protected handleFocusIn({ target }: FocusEvent, t = target as HTMLElement): void {\r\n this.focusSubjectId = String(!t?.matches?.(\":focus-visible\") && (t?.dataset?.controlId ?? t?.parentElement?.dataset?.controlId));\r\n }\r\n protected handleKeyFocusIn({ target }: KeyboardEvent, t = target as HTMLElement): void {\r\n (t?.dataset?.controlId ?? t?.parentElement?.dataset?.controlId) === this.focusSubjectId && t.blur();\r\n }\r\n\r\n protected handleHoverPointerActive(e: Event, { target, pointerType } = e as PointerEvent): void {\r\n (!pointerType || !IS_MOBILE) && this.ctlr.plug(\"settings.overlay\")?.show();\r\n pointerType && (target as HTMLElement).closest(\".tmg-media-side-controls-wrapper\") && clearTimeout(this.ctlr.plug(\"settings.overlay\")?.overlayDelayId ?? -1);\r\n }\r\n protected handleHoverPointerOut(): void {\r\n setTimeout(() => !IS_MOBILE && !this.media.container.matches(\":hover\") && this.ctlr.plug(\"settings.overlay\")?.hide(), 0, this.signal);\r\n }\r\n\r\n public persistSkip(pos: \"left\" | \"right\"): void {\r\n if (this.state.skipping) return;\r\n this.media.container.addEventListener(\"click\", this.handleDblClick, { signal: this.signal });\r\n (this.state.skipping = true), (this.skipPos = pos);\r\n }\r\n public ceaseSkip(): void {\r\n if (!this.state.skipping) return;\r\n this.media.container.removeEventListener(\"click\", this.handleDblClick);\r\n (this.state.skipping = false), (this.skipPos = null);\r\n }\r\n\r\n protected override onDestroy(): void {\r\n this.wheel?.destroy(), this.touch?.destroy(), super.onDestroy();\r\n }\r\n}\r\n\r\nexport type * from \"./types\";\r\nexport * from \"./build\";\r\nexport * from \"./touch\";\r\nexport * from \"./wheel\";\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PlugRegistryMap {\r\n \"settings.gesture\": typeof GesturePlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n gesture: GestureConfig;\r\n }\r\n}\r\n","import { GESTURE_WHEEL_BUILD } from \"./build\";\r\nimport { GesturePlug } from \"./index\";\r\nimport { clamp } from \"@utils/num\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { GestureBasePin } from \"./base\";\r\nimport { GestureWheelConfig } from \"./types\";\r\n\r\nexport class GestureWheelPin extends GestureBasePin<GestureWheelConfig> {\r\n public static readonly pinName = \"wheel\";\r\n public static get Plug() {\r\n return GesturePlug;\r\n }\r\n public static readonly BUILD = GESTURE_WHEEL_BUILD;\r\n protected timeoutId: number | null = null;\r\n protected zone: { x: \"left\" | \"right\"; y: \"top\" | \"bottom\" } | null = null;\r\n protected xCheck = false;\r\n protected yCheck = false;\r\n protected timePercent = 0;\r\n protected timeMultiplier = 1;\r\n protected deltaY = 0;\r\n protected nextTime = 0;\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.media.container.addEventListener(\"wheel\", this.handleWheel, { passive: false, signal: this.signal });\r\n }\r\n\r\n protected canHandle(e: WheelEvent): boolean {\r\n return !this.media.state.locked && !this.ctlr.config.disabled && e.target === this.ctlr.DOM.controlsContainer && !this.plug?.touch?.xCheck && !this.plug?.touch?.yCheck && !this.ctlr.plug(\"settings.fastPlay\")?.state.active && (this.media.state.fullscreen || !!this.media.status.floatingPlayer);\r\n }\r\n\r\n protected handleWheel(e: WheelEvent): void {\r\n if (!this.canHandle(e)) return;\r\n e.preventDefault();\r\n this.timeoutId ? clearTimeout(this.timeoutId) : this.handleInit(e);\r\n this.timeoutId = setTimeout(this.handleStop, this.config.timeout, this.signal);\r\n this.handleMove(e);\r\n }\r\n\r\n protected handleInit({ clientX: x, clientY: y }: WheelEvent): void {\r\n const { left, top, right, bottom } = this.media.container.getBoundingClientRect();\r\n this.zone = { x: x - left > (right - left) / 2 ? \"right\" : \"left\", y: y - top > (bottom - top) / 2 ? \"bottom\" : \"top\" };\r\n this.deltaY = this.timePercent = 0;\r\n this.timeMultiplier = 1;\r\n }\r\n\r\n protected handleMove({ clientX: x, deltaX, deltaY, shiftKey: alt }: WheelEvent): void {\r\n deltaX = alt ? deltaY : deltaX;\r\n const { width: aWidth, height: aHeight, left } = this.media.container.getBoundingClientRect(),\r\n width = alt ? aHeight : aWidth,\r\n rHeight = ((alt ? aWidth : aHeight) * this.config.yRatio) / 2;\r\n let xPercent = -deltaX / (width * this.config.xRatio);\r\n xPercent = this.timePercent += xPercent;\r\n const xSign = xPercent >= 0 ? \"+\" : \"-\";\r\n xPercent = Math.abs(xPercent);\r\n if (deltaX || alt) {\r\n if (!this.config.timeline || this.yCheck) return this.handleStop();\r\n this.xCheck = true;\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchTimelineNotifier\")?.active();\r\n this.applyTimeline({ percent: xPercent, sign: xSign, multiplier: this.timeMultiplier });\r\n if (alt) return;\r\n }\r\n if (deltaY) {\r\n if (this.xCheck) return this.applyTimeline({ percent: xPercent, sign: xSign, multiplier: (this.timeMultiplier = 1 - clamp(0, Math.abs((this.deltaY += deltaY)), rHeight) / rHeight) });\r\n const cancel = (this.zone?.x === \"right\" && !this.config.volume) || (this.zone?.x === \"left\" && !this.config.brightness);\r\n if (cancel || (x - left > width / 2 ? \"right\" : \"left\") !== this.zone?.x) return this.handleStop();\r\n this.yCheck = true;\r\n // prettier-ignore\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(this.zone?.x === \"right\" ? \"touchVolumeNotifier\" : \"touchBrightnessNotifier\")?.active();\r\n this.applyRange(this.zone?.x === \"right\" ? \"volume\" : \"brightness\", clamp(0, Math.abs(deltaY), rHeight * 2) / (rHeight * 2), -deltaY >= 0 ? \"+\" : \"-\");\r\n }\r\n }\r\n\r\n protected handleStop(): void {\r\n this.timeoutId = null;\r\n if (this.yCheck) {\r\n this.yCheck = false;\r\n this.ctlr.plug(\"settings.overlay\")?.hide();\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchVolumeNotifier\")?.inactive(), this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchBrightnessNotifier\")?.inactive();\r\n }\r\n if (this.xCheck) {\r\n this.xCheck = false;\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchTimelineNotifier\")?.inactive();\r\n this.media.intent.currentTime = this.nextTime;\r\n }\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PinRegistryMap {\r\n \"gesture.wheel\": typeof GestureWheelPin;\r\n }\r\n}\r\n","import { GESTURE_TOUCH_BUILD } from \"./build\";\r\nimport { GesturePlug } from \"./index\";\r\nimport { clamp } from \"@utils/num\";\r\nimport { setTimeout } from \"@utils/fn\";\r\nimport { GestureBasePin } from \"./base\";\r\nimport { GestureTouchConfig } from \"./types\";\r\n\r\nexport class GestureTouchPin extends GestureBasePin<GestureTouchConfig> {\r\n public static readonly pinName = \"touch\";\r\n public static get Plug() {\r\n return GesturePlug;\r\n }\r\n public static readonly BUILD = GESTURE_TOUCH_BUILD;\r\n protected lastX = 0;\r\n protected lastY = 0;\r\n protected zone: { x: \"left\" | \"right\"; y: \"top\" | \"bottom\" } | null = null;\r\n public xCheck = false;\r\n public yCheck = false;\r\n protected canCancel = true;\r\n protected cancelTimeoutId = -1;\r\n protected sliderTimeoutId = -1;\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n this.ctlr.DOM.controlsContainer?.addEventListener(\"touchstart\", this.handleStart, { capture: true, signal: this.signal });\r\n }\r\n\r\n protected canHandle(e: TouchEvent): boolean {\r\n return !this.ctlr.config.disabled && e.touches?.length === 1 && e.target === this.ctlr.DOM.controlsContainer && !this.ctlr.plug(\"settings.fastPlay\")?.state.active && !this.media.state.miniplayer;\r\n }\r\n\r\n protected handleStart(e: TouchEvent): void {\r\n if (!this.canHandle(e)) return;\r\n this.handleEnd();\r\n (this.lastX = e.touches[0].clientX), (this.lastY = e.touches[0].clientY);\r\n this.media.container.addEventListener(\"touchmove\", this.handleInit, { once: true, signal: this.signal });\r\n this.cancelTimeoutId = setTimeout(() => (this.canCancel = false), this.config.threshold, this.signal);\r\n for (const evt of [\"touchend\", \"touchcancel\"]) this.media.container.addEventListener(evt, this.handleEnd, { signal: this.signal });\r\n }\r\n\r\n protected handleInit(e: Event, te = e as TouchEvent): void {\r\n if (te.touches?.length > 1 || this.ctlr.plug(\"settings.fastPlay\")?.state.active) return;\r\n te.preventDefault();\r\n const { width, height, left, top } = this.media.container.getBoundingClientRect(),\r\n x = te.touches[0].clientX,\r\n y = te.touches[0].clientY,\r\n deltaX = Math.abs(this.lastX - x),\r\n deltaY = Math.abs(this.lastY - y);\r\n this.zone = { x: x - left > width / 2 ? \"right\" : \"left\", y: y - top > height / 2 ? \"bottom\" : \"top\" };\r\n const rLeft = this.lastX - left,\r\n rTop = this.lastY - top;\r\n if (deltaX > deltaY * this.config.axesRatio && rLeft > this.config.inset && rLeft < width - this.config.inset) {\r\n if (this.config.timeline) {\r\n this.xCheck = true;\r\n this.media.container.addEventListener(\"touchmove\", this.handleXMove, { passive: false, signal: this.signal });\r\n }\r\n } else if (deltaY > deltaX * this.config.axesRatio && rTop > this.config.inset && rTop < height - this.config.inset) {\r\n if ((this.config.volume && this.zone?.x === \"right\") || (this.config.brightness && this.zone?.x === \"left\")) {\r\n this.yCheck = true;\r\n this.media.container.addEventListener(\"touchmove\", this.handleYMove, { passive: false, signal: this.signal });\r\n }\r\n }\r\n }\r\n\r\n protected handleXMove(e: Event, te = e as TouchEvent): void {\r\n if (this.canCancel) return this.handleEnd();\r\n te.preventDefault();\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchTimelineNotifier\")?.active();\r\n this.ctlr.throttle(\r\n \"gestureTouchMove\",\r\n () => {\r\n const { width, height } = this.ctlr.state.dimensions.container,\r\n rHeight = (height * this.config.yRatio) / 2,\r\n deltaX = te.touches[0].clientX - this.lastX,\r\n deltaY = te.touches[0].clientY - this.lastY,\r\n percent = clamp(0, Math.abs(deltaX), width * this.config.xRatio) / (width * this.config.xRatio);\r\n this.applyTimeline({ percent, sign: deltaX >= 0 ? \"+\" : \"-\", multiplier: 1 - clamp(0, Math.abs(deltaY), rHeight) / rHeight });\r\n },\r\n 30\r\n );\r\n }\r\n\r\n protected handleYMove(e: Event, te = e as TouchEvent): void {\r\n if (this.canCancel && !this.media.state.fullscreen) return this.handleEnd();\r\n te.preventDefault();\r\n // prettier-ignore\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(this.zone?.x === \"right\" ? \"touchVolumeNotifier\" : \"touchBrightnessNotifier\")?.active();\r\n this.ctlr.throttle(\r\n \"gestureTouchMove\",\r\n () => {\r\n const rHeight = this.ctlr.state.dimensions.container.height * this.config.yRatio,\r\n y = te.touches[0].clientY,\r\n deltaY = y - this.lastY;\r\n this.lastY = y;\r\n this.applyRange(this.zone?.x === \"right\" ? \"volume\" : \"brightness\", clamp(0, Math.abs(deltaY), rHeight) / rHeight, deltaY >= 0 ? \"-\" : \"+\");\r\n },\r\n 30\r\n );\r\n }\r\n\r\n protected handleEnd(): void {\r\n if (this.xCheck) {\r\n this.xCheck = false;\r\n this.media.container.removeEventListener(\"touchmove\", this.handleXMove);\r\n this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchTimelineNotifier\")?.inactive();\r\n if (!this.canCancel) this.media.intent.currentTime = this.nextTime;\r\n }\r\n if (this.yCheck) {\r\n this.yCheck = false;\r\n this.media.container.removeEventListener(\"touchmove\", this.handleYMove);\r\n clearTimeout(this.sliderTimeoutId);\r\n this.sliderTimeoutId = setTimeout(() => (this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchVolumeNotifier\")?.inactive(), this.ctlr.plug(\"settings.notifiers\")?.comp(\"touchBrightnessNotifier\")?.inactive()), this.config.sliderTimeout, this.signal);\r\n if (!this.canCancel) this.ctlr.plug(\"settings.overlay\")?.hide();\r\n }\r\n clearTimeout(this.cancelTimeoutId);\r\n this.canCancel = true;\r\n this.media.container.removeEventListener(\"touchmove\", this.handleInit);\r\n for (const evt of [\"touchend\", \"touchcancel\"]) this.media.container.removeEventListener(evt, this.handleEnd);\r\n }\r\n}\r\n\r\ndeclare module \"@defs/registries\" {\r\n interface PinRegistryMap {\r\n \"gesture.touch\": typeof GestureTouchPin;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
@@ -21,6 +21,9 @@ import {
21
21
  import {
22
22
  createEl
23
23
  } from "./chunk-RCQPJKYI.js";
24
+ import {
25
+ setTimeout
26
+ } from "./chunk-XVQRHJYY.js";
24
27
  import {
25
28
  parseCSSTime
26
29
  } from "./chunk-FKVPSXPX.js";
@@ -51,7 +54,7 @@ var FramePlug = class extends BasePlug {
51
54
  if (video !== this.media.element) {
52
55
  if (this.ctlr.state.frameReadyPromise) await this.ctlr.state.frameReadyPromise;
53
56
  if (Math.abs(video.currentTime - time) > 0.01 || !video.readyState) {
54
- (_a = this.ctlr.state).frameReadyPromise ?? (_a.frameReadyPromise = new Promise((res) => video.addEventListener(video.readyState ? "timeupdate" : "loadeddata", () => res(null), { once: true, signal: this.signal })));
57
+ (_a = this.ctlr.state).frameReadyPromise ?? (_a.frameReadyPromise = new Promise((res, _, cb = () => (clearTimeout(t), res(null)), t) => ([video.readyState ? "timeupdate" : "loadeddata", "error", "abort", "emptied"].forEach((ev) => video.addEventListener(ev, cb, { once: true, signal: this.signal })), t = setTimeout(cb, 15e3, this.signal))));
55
58
  video.currentTime = time;
56
59
  }
57
60
  this.ctlr.state.frameReadyPromise = await this.ctlr.state.frameReadyPromise;
@@ -112,4 +115,4 @@ __publicField(FramePlug, "BUILD", FRAME_BUILD);
112
115
  export {
113
116
  FramePlug
114
117
  };
115
- //# sourceMappingURL=chunk-SIOCMDUM.js.map
118
+ //# sourceMappingURL=chunk-D7Y72JWH.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: () => this.capture(\"\") }, 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.element as HTMLVideoElement).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,6 +1,6 @@
1
1
  import {
2
2
  init
3
- } from "./chunk-LRZ73HA5.js";
3
+ } from "./chunk-QT5XXSG7.js";
4
4
  import {
5
5
  globalState
6
6
  } from "./chunk-CFTZJH7J.js";
@@ -27,4 +27,4 @@ if ("undefined" !== typeof window) {
27
27
  console.log("\x1B[38;2;139;69;19mTMG Media Player Unavailable\x1B[0m");
28
28
  console.error("TMG Media Player cannot run in a terminal!"), console.warn("Consider moving to a browser environment to use the TMG Media Player");
29
29
  }
30
- //# sourceMappingURL=chunk-OE7J6SUZ.js.map
30
+ //# sourceMappingURL=chunk-DNS6EFXH.js.map
@@ -1,3 +1,12 @@
1
+ import {
2
+ tripleTriangleRight
3
+ } from "./chunk-ZTOANBNR.js";
4
+ import {
5
+ unlock
6
+ } from "./chunk-TMTWPBFD.js";
7
+ import {
8
+ videoTrack
9
+ } from "./chunk-AIJWNUXU.js";
1
10
  import {
2
11
  volumeHigh
3
12
  } from "./chunk-W6TNR6NH.js";
@@ -7,6 +16,15 @@ import {
7
16
  import {
8
17
  volumeMuted
9
18
  } from "./chunk-2WOP45O7.js";
19
+ import {
20
+ returnBack
21
+ } from "./chunk-BHHFZM5D.js";
22
+ import {
23
+ settings
24
+ } from "./chunk-2J3FJY73.js";
25
+ import {
26
+ shuffle
27
+ } from "./chunk-OEHNS7YX.js";
10
28
  import {
11
29
  sort
12
30
  } from "./chunk-QP2X53HC.js";
@@ -23,14 +41,14 @@ import {
23
41
  tripleTriangleLeft
24
42
  } from "./chunk-IIRP4XMQ.js";
25
43
  import {
26
- tripleTriangleRight
27
- } from "./chunk-ZTOANBNR.js";
44
+ pipPlaceholder
45
+ } from "./chunk-7CRW7VGS.js";
28
46
  import {
29
- unlock
30
- } from "./chunk-TMTWPBFD.js";
47
+ play
48
+ } from "./chunk-K4UHBEDT.js";
31
49
  import {
32
- videoTrack
33
- } from "./chunk-AIJWNUXU.js";
50
+ playbackRate
51
+ } from "./chunk-C3IEUYR3.js";
34
52
  import {
35
53
  playlist
36
54
  } from "./chunk-KLAI7YSD.js";
@@ -47,14 +65,14 @@ import {
47
65
  replay
48
66
  } from "./chunk-YHTCXXEG.js";
49
67
  import {
50
- returnBack
51
- } from "./chunk-BHHFZM5D.js";
68
+ lock
69
+ } from "./chunk-T4LAQEBY.js";
52
70
  import {
53
- settings
54
- } from "./chunk-2J3FJY73.js";
71
+ loop
72
+ } from "./chunk-OSDM6ZVT.js";
55
73
  import {
56
- shuffle
57
- } from "./chunk-OEHNS7YX.js";
74
+ mic
75
+ } from "./chunk-PEKXIISU.js";
58
76
  import {
59
77
  next
60
78
  } from "./chunk-MP2GRDUX.js";
@@ -71,14 +89,14 @@ import {
71
89
  pause
72
90
  } from "./chunk-OOXUZMZ7.js";
73
91
  import {
74
- pipPlaceholder
75
- } from "./chunk-7CRW7VGS.js";
92
+ exitFullscreen
93
+ } from "./chunk-DR2VKENG.js";
76
94
  import {
77
- play
78
- } from "./chunk-K4UHBEDT.js";
95
+ exitPip
96
+ } from "./chunk-OCWLEK2W.js";
79
97
  import {
80
- playbackRate
81
- } from "./chunk-C3IEUYR3.js";
98
+ exitTheater
99
+ } from "./chunk-CRH6DM5A.js";
82
100
  import {
83
101
  expandMiniplayer
84
102
  } from "./chunk-DN4TFOZV.js";
@@ -95,14 +113,14 @@ import {
95
113
  goBack
96
114
  } from "./chunk-4XUR7NSC.js";
97
115
  import {
98
- lock
99
- } from "./chunk-T4LAQEBY.js";
116
+ doubleTriangleLeft
117
+ } from "./chunk-VGWGAAZA.js";
100
118
  import {
101
- loop
102
- } from "./chunk-OSDM6ZVT.js";
119
+ doubleTriangleRight
120
+ } from "./chunk-Q5TE3ZDK.js";
103
121
  import {
104
- mic
105
- } from "./chunk-PEKXIISU.js";
122
+ dragIndicator
123
+ } from "./chunk-ZLZCQ3KJ.js";
106
124
  import {
107
125
  edit
108
126
  } from "./chunk-NLJQAJZB.js";
@@ -119,14 +137,14 @@ import {
119
137
  errorPlaceholder
120
138
  } from "./chunk-2K7QF6AQ.js";
121
139
  import {
122
- exitFullscreen
123
- } from "./chunk-DR2VKENG.js";
140
+ brightnessLow
141
+ } from "./chunk-63CB7WUR.js";
124
142
  import {
125
- exitPip
126
- } from "./chunk-OCWLEK2W.js";
143
+ bwd
144
+ } from "./chunk-PV24XKW2.js";
127
145
  import {
128
- exitTheater
129
- } from "./chunk-CRH6DM5A.js";
146
+ captions
147
+ } from "./chunk-CTSPKWKN.js";
130
148
  import {
131
149
  capture
132
150
  } from "./chunk-HA2GK6KH.js";
@@ -143,14 +161,14 @@ import {
143
161
  check
144
162
  } from "./chunk-O7XYY33O.js";
145
163
  import {
146
- doubleTriangleLeft
147
- } from "./chunk-VGWGAAZA.js";
164
+ airplayPlaceholder
165
+ } from "./chunk-URDNEQFP.js";
148
166
  import {
149
- doubleTriangleRight
150
- } from "./chunk-Q5TE3ZDK.js";
167
+ ambience
168
+ } from "./chunk-XHXIXEGS.js";
151
169
  import {
152
- dragIndicator
153
- } from "./chunk-ZLZCQ3KJ.js";
170
+ audioTrack
171
+ } from "./chunk-AH2VE4UI.js";
154
172
  import {
155
173
  autoplay
156
174
  } from "./chunk-WTHHXWQM.js";
@@ -166,30 +184,12 @@ import {
166
184
  import {
167
185
  brightnessHigh
168
186
  } 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";
178
187
  import {
179
188
  add
180
189
  } from "./chunk-ID72UAJE.js";
181
190
  import {
182
191
  airplay
183
192
  } 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-JLUX5NZJ.js.map
265
+ //# sourceMappingURL=chunk-E5PBQLV3.js.map
@@ -8,7 +8,7 @@ import {
8
8
  AUDIO_CONTEXT,
9
9
  connectToAudioManager,
10
10
  disconnectFromAudioManager
11
- } from "./chunk-LRZ73HA5.js";
11
+ } from "./chunk-QT5XXSG7.js";
12
12
  import {
13
13
  globalState
14
14
  } from "./chunk-CFTZJH7J.js";
@@ -108,4 +108,4 @@ __publicField(VolumePlug, "BUILD", VOLUME_BUILD);
108
108
  export {
109
109
  VolumePlug
110
110
  };
111
- //# sourceMappingURL=chunk-3VIUZIM7.js.map
111
+ //# sourceMappingURL=chunk-I6Q53IPI.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  HTML5Tech
3
- } from "./chunk-LRZ73HA5.js";
4
- import {
5
- HLS_EXTENSIONS
6
- } from "./chunk-2XJFCVED.js";
3
+ } from "./chunk-QT5XXSG7.js";
7
4
  import {
8
5
  MSE_ENABLED
9
6
  } from "./chunk-RNETXJ63.js";
7
+ import {
8
+ HLS_EXTENSIONS
9
+ } from "./chunk-2XJFCVED.js";
10
10
  import {
11
11
  loadResource
12
12
  } from "./chunk-RCQPJKYI.js";
@@ -157,4 +157,4 @@ __publicField(HLSTech, "techName", "hls");
157
157
  export {
158
158
  HLSTech
159
159
  };
160
- //# sourceMappingURL=chunk-YTJWGNAJ.js.map
160
+ //# sourceMappingURL=chunk-LNING7Z4.js.map