tmg-media-player 0.0.61 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H6LUSY4C.js → chunk-2BDB5RKS.js} +2 -2
- package/dist/{chunk-KREAGI4M.js → chunk-3ZXWSGZQ.js} +2 -2
- package/dist/{chunk-FZNKMHU6.js → chunk-5ZXIPTVQ.js} +2 -2
- package/dist/{chunk-DMHABZ4I.js → chunk-6CZC4EC3.js} +2 -2
- package/dist/{chunk-6Z5GA35Y.js → chunk-6E7WCRN5.js} +2 -2
- package/dist/{chunk-Y26P5KWP.js → chunk-AMIMOMSM.js} +2 -2
- package/dist/{chunk-XAEJ4VKP.js → chunk-BAGDFZVR.js} +2 -2
- package/dist/{chunk-YOTZRODS.js → chunk-BGC6U2VR.js} +2 -2
- package/dist/{chunk-KN62MKRR.js → chunk-BIAKMBLJ.js} +2 -2
- package/dist/{chunk-MOHKV2SI.js → chunk-E47SFXWN.js} +29 -29
- package/dist/{chunk-4EO7OU7U.js → chunk-EAM7QVWC.js} +3 -3
- package/dist/{chunk-XBKUOFMU.js → chunk-FI44MLF6.js} +2 -2
- package/dist/{chunk-6WMPIV4Z.js → chunk-GB5G3BDB.js} +2 -2
- package/dist/{chunk-RLNKPMPY.js → chunk-H3LRGDOG.js} +45 -45
- package/dist/{chunk-3JLLR6EP.js → chunk-JE5GTBPS.js} +2 -2
- package/dist/{chunk-XOBXBS24.js → chunk-JSXS3DNU.js} +2 -2
- package/dist/{chunk-2LAXELOT.js → chunk-JZZNDOWL.js} +9 -9
- package/dist/chunk-JZZNDOWL.js.map +1 -0
- package/dist/{chunk-3O5YWKN2.js → chunk-KRXAYNNN.js} +2 -2
- package/dist/{chunk-MHHKTW7S.js → chunk-L5WT3SVA.js} +2 -2
- package/dist/{chunk-ZK4CRWSL.js → chunk-LNAOARU6.js} +6 -6
- package/dist/{chunk-HNIZJ732.js → chunk-MBC43WUS.js} +59 -59
- package/dist/{chunk-ULCW7DXV.js → chunk-MS7BTXKP.js} +2 -2
- package/dist/{chunk-V6XG3TU2.js → chunk-NFYLUVJB.js} +7 -7
- package/dist/{chunk-E5U2ICRI.js → chunk-NNRJBBPH.js} +2 -2
- package/dist/{chunk-RAQTPHZI.js → chunk-NWNM7VFR.js} +13 -13
- package/dist/{chunk-IAT2U5LP.js → chunk-OFYUJ7VU.js} +2 -2
- package/dist/{chunk-PA3AMDU7.js → chunk-OKSL6V2G.js} +2 -2
- package/dist/{chunk-QO2TROTC.js → chunk-PILA22ZY.js} +2 -2
- package/dist/{chunk-TRQQIKQI.js → chunk-RG5EFXDF.js} +3 -3
- package/dist/{chunk-47W6YHAM.js → chunk-RYA2LLOF.js} +5 -3
- package/dist/{chunk-47W6YHAM.js.map → chunk-RYA2LLOF.js.map} +1 -1
- package/dist/{chunk-5ZOHXLVH.js → chunk-SMYY6RCM.js} +2 -2
- package/dist/{chunk-KNGBLT2V.js → chunk-SQRPFMDO.js} +2 -2
- package/dist/{chunk-CMZQV7CA.js → chunk-TJIXY45I.js} +3 -3
- package/dist/{chunk-JHSI6QAF.js → chunk-VHXMKLXA.js} +27 -27
- package/dist/{chunk-FWCO3N4N.js → chunk-VRLKALWA.js} +3 -3
- package/dist/{chunk-HRROJ2SS.js → chunk-WWYSNBSJ.js} +56 -56
- package/dist/{chunk-Y3U5DUK5.js → chunk-ZC3NH7AA.js} +11 -11
- package/dist/{chunk-3JLU4Q7F.js → chunk-ZVHCY2ND.js} +2 -2
- package/dist/components/controls/airplay.js +1 -1
- package/dist/components/controls/backward10.js +1 -1
- package/dist/components/controls/bigNext.js +1 -1
- package/dist/components/controls/bigPlayPause.js +1 -1
- package/dist/components/controls/bigPrevious.js +1 -1
- package/dist/components/controls/brightness/index.js +1 -1
- package/dist/components/controls/captions.cjs +4 -2
- package/dist/components/controls/captions.cjs.map +1 -1
- package/dist/components/controls/captions.js +4 -4
- package/dist/components/controls/capture.js +1 -1
- package/dist/components/controls/cast.js +1 -1
- package/dist/components/controls/expandMiniplayer.js +1 -1
- package/dist/components/controls/forward10.js +1 -1
- package/dist/components/controls/fullscreen.js +1 -1
- package/dist/components/controls/fullscreenLock.js +1 -1
- package/dist/components/controls/fullscreenOrientation.cjs +4 -2
- package/dist/components/controls/fullscreenOrientation.cjs.map +1 -1
- package/dist/components/controls/fullscreenOrientation.js +5 -5
- package/dist/components/controls/next.js +1 -1
- package/dist/components/controls/objectFit.js +1 -1
- package/dist/components/controls/pictureInPicture.js +1 -1
- package/dist/components/controls/playPause.js +1 -1
- package/dist/components/controls/previous.js +1 -1
- package/dist/components/controls/removeMiniplayer.js +1 -1
- package/dist/components/controls/settings.js +1 -1
- package/dist/components/controls/theater.js +1 -1
- package/dist/components/controls/timeline/index.cjs +4 -2
- package/dist/components/controls/timeline/index.cjs.map +1 -1
- package/dist/components/controls/timeline/index.js +6 -6
- package/dist/components/controls/voice.js +1 -1
- package/dist/components/controls/volume/index.js +1 -1
- package/dist/components/holders/airplayPlaceholder.js +1 -1
- package/dist/components/holders/castPlaceholder.js +1 -1
- package/dist/components/holders/errorPlaceholder.js +1 -1
- package/dist/components/holders/pipPlaceholder.cjs +4 -2
- package/dist/components/holders/pipPlaceholder.cjs.map +1 -1
- package/dist/components/holders/pipPlaceholder.js +4 -4
- package/dist/components/notifiers/airplay.js +1 -1
- package/dist/components/notifiers/brightness.js +1 -1
- package/dist/components/notifiers/captions.js +1 -1
- package/dist/components/notifiers/capture.js +1 -1
- package/dist/components/notifiers/cast.js +1 -1
- package/dist/components/notifiers/fastPlay.js +1 -1
- package/dist/components/notifiers/fwdBwd.js +1 -1
- package/dist/components/notifiers/objectFit.js +1 -1
- package/dist/components/notifiers/playPause.js +1 -1
- package/dist/components/notifiers/playbackRate.js +1 -1
- package/dist/components/notifiers/prevNext.js +1 -1
- package/dist/components/notifiers/scrub.js +1 -1
- package/dist/components/notifiers/touchBrightness.js +1 -1
- package/dist/components/notifiers/touchVolume.js +1 -1
- package/dist/components/notifiers/volume.js +1 -1
- package/dist/components/notifiers/z-register.js +6 -6
- package/dist/components/screenLock.js +1 -1
- package/dist/components/z-register.cjs +4 -2
- package/dist/components/z-register.cjs.map +1 -1
- package/dist/components/z-register.js +24 -24
- package/dist/consts/media.cjs +4 -2
- package/dist/consts/media.cjs.map +1 -1
- package/dist/consts/media.js +1 -1
- package/dist/core/controller.cjs +4 -2
- package/dist/core/controller.cjs.map +1 -1
- package/dist/core/controller.js +5 -5
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -6
- package/dist/init.cjs +4 -2
- package/dist/init.cjs.map +1 -1
- package/dist/init.js +6 -6
- package/dist/plugs/base/index.js +1 -1
- package/dist/plugs/base/slider.js +1 -1
- package/dist/plugs/main/ads/build.cjs +4 -2
- package/dist/plugs/main/ads/build.cjs.map +1 -1
- package/dist/plugs/main/ads/build.js +2 -2
- package/dist/plugs/main/ads/index.cjs +4 -2
- package/dist/plugs/main/ads/index.cjs.map +1 -1
- package/dist/plugs/main/ads/index.js +7 -7
- package/dist/plugs/main/disabled/index.js +1 -1
- package/dist/plugs/main/light/index.js +1 -1
- package/dist/plugs/main/playlist/build.cjs +4 -2
- package/dist/plugs/main/playlist/build.cjs.map +1 -1
- package/dist/plugs/main/playlist/build.js +2 -2
- package/dist/plugs/main/playlist/index.cjs +4 -2
- package/dist/plugs/main/playlist/index.cjs.map +1 -1
- package/dist/plugs/main/playlist/index.js +4 -4
- package/dist/plugs/main/skeleton/index.js +1 -1
- package/dist/plugs/menus/main/actions.cjs +4 -2
- package/dist/plugs/menus/main/actions.cjs.map +1 -1
- package/dist/plugs/menus/main/actions.js +5 -5
- package/dist/plugs/menus/main/playlist.cjs +4 -2
- package/dist/plugs/menus/main/playlist.cjs.map +1 -1
- package/dist/plugs/menus/main/playlist.js +3 -3
- package/dist/plugs/menus/settings/auto.cjs +4 -2
- package/dist/plugs/menus/settings/auto.cjs.map +1 -1
- package/dist/plugs/menus/settings/auto.js +5 -5
- package/dist/plugs/menus/settings/captions.cjs +4 -2
- package/dist/plugs/menus/settings/captions.cjs.map +1 -1
- package/dist/plugs/menus/settings/captions.js +3 -3
- package/dist/plugs/menus/settings/frame.cjs +4 -2
- package/dist/plugs/menus/settings/frame.cjs.map +1 -1
- package/dist/plugs/menus/settings/frame.js +5 -5
- package/dist/plugs/menus/settings/keys.js +1 -1
- package/dist/plugs/menus/settings/metadata.cjs +4 -2
- package/dist/plugs/menus/settings/metadata.cjs.map +1 -1
- package/dist/plugs/menus/settings/metadata.js +3 -3
- package/dist/plugs/menus/settings/modes.cjs +4 -2
- package/dist/plugs/menus/settings/modes.cjs.map +1 -1
- package/dist/plugs/menus/settings/modes.js +5 -5
- package/dist/plugs/menus/settings/sleepTimer.cjs +4 -2
- package/dist/plugs/menus/settings/sleepTimer.cjs.map +1 -1
- package/dist/plugs/menus/settings/sleepTimer.js +5 -5
- package/dist/plugs/menus/settings/toasts.cjs +4 -2
- package/dist/plugs/menus/settings/toasts.cjs.map +1 -1
- package/dist/plugs/menus/settings/toasts.js +5 -5
- package/dist/plugs/menus/settings/voice.cjs +4 -2
- package/dist/plugs/menus/settings/voice.cjs.map +1 -1
- package/dist/plugs/menus/settings/voice.js +5 -5
- package/dist/plugs/menus/z-register.cjs +4 -2
- package/dist/plugs/menus/z-register.cjs.map +1 -1
- package/dist/plugs/menus/z-register.js +20 -20
- package/dist/plugs/settings/ambience/index.js +1 -1
- package/dist/plugs/settings/auto/index.cjs +4 -2
- package/dist/plugs/settings/auto/index.cjs.map +1 -1
- package/dist/plugs/settings/auto/index.js +6 -6
- package/dist/plugs/settings/brightness/index.js +1 -1
- package/dist/plugs/settings/captions/index.cjs +4 -2
- package/dist/plugs/settings/captions/index.cjs.map +1 -1
- package/dist/plugs/settings/captions/index.js +6 -6
- package/dist/plugs/settings/controlPanel/draggable.js +1 -1
- package/dist/plugs/settings/controlPanel/index.js +1 -1
- package/dist/plugs/settings/css/index.js +1 -1
- package/dist/plugs/settings/errors/index.js +1 -1
- package/dist/plugs/settings/fastPlay/index.js +1 -1
- package/dist/plugs/settings/frame/index.js +1 -1
- package/dist/plugs/settings/gesture/base.js +1 -1
- package/dist/plugs/settings/gesture/index.js +1 -1
- package/dist/plugs/settings/gesture/touch.js +1 -1
- package/dist/plugs/settings/gesture/wheel.js +1 -1
- package/dist/plugs/settings/keys/index.js +1 -1
- package/dist/plugs/settings/locked/index.js +1 -1
- package/dist/plugs/settings/metadata/index.js +1 -1
- package/dist/plugs/settings/modes/airplay.cjs +4 -2
- package/dist/plugs/settings/modes/airplay.cjs.map +1 -1
- package/dist/plugs/settings/modes/airplay.js +7 -7
- package/dist/plugs/settings/modes/cast.cjs +4 -2
- package/dist/plugs/settings/modes/cast.cjs.map +1 -1
- package/dist/plugs/settings/modes/cast.js +7 -7
- package/dist/plugs/settings/modes/fullscreen.cjs +4 -2
- package/dist/plugs/settings/modes/fullscreen.cjs.map +1 -1
- package/dist/plugs/settings/modes/fullscreen.js +6 -6
- package/dist/plugs/settings/modes/index.cjs +4 -2
- package/dist/plugs/settings/modes/index.cjs.map +1 -1
- package/dist/plugs/settings/modes/index.js +6 -6
- package/dist/plugs/settings/modes/miniplayer.cjs +4 -2
- package/dist/plugs/settings/modes/miniplayer.cjs.map +1 -1
- package/dist/plugs/settings/modes/miniplayer.js +6 -6
- package/dist/plugs/settings/modes/pictureInPicture.cjs +4 -2
- package/dist/plugs/settings/modes/pictureInPicture.cjs.map +1 -1
- package/dist/plugs/settings/modes/pictureInPicture.js +6 -6
- package/dist/plugs/settings/modes/theater.cjs +4 -2
- package/dist/plugs/settings/modes/theater.cjs.map +1 -1
- package/dist/plugs/settings/modes/theater.js +6 -6
- package/dist/plugs/settings/notifiers/index.js +1 -1
- package/dist/plugs/settings/objectFit/index.js +1 -1
- package/dist/plugs/settings/overlay/index.js +1 -1
- package/dist/plugs/settings/panel/index.js +1 -1
- package/dist/plugs/settings/panel/menu/index.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/main.js +1 -1
- package/dist/plugs/settings/panel/menu/panel/sub.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/base.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/button.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/color.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/dragselect.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/group.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/index.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/input.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/limits.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/range.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/select.js +1 -1
- package/dist/plugs/settings/panel/menu/widgets/toggle.js +1 -1
- package/dist/plugs/settings/persist/index.js +1 -1
- package/dist/plugs/settings/playbackRate/index.js +1 -1
- package/dist/plugs/settings/poster/index.js +1 -1
- package/dist/plugs/settings/sleepTimer/index.js +1 -1
- package/dist/plugs/settings/time/index.js +1 -1
- package/dist/plugs/settings/timeTravel/index.cjs +4 -2
- package/dist/plugs/settings/timeTravel/index.cjs.map +1 -1
- package/dist/plugs/settings/timeTravel/index.js +6 -6
- package/dist/plugs/settings/toasts/index.js +1 -1
- package/dist/plugs/settings/voice/index.cjs +12 -10
- package/dist/plugs/settings/voice/index.cjs.map +1 -1
- package/dist/plugs/settings/voice/index.js +6 -6
- package/dist/plugs/settings/volume/index.cjs +4 -2
- package/dist/plugs/settings/volume/index.cjs.map +1 -1
- package/dist/plugs/settings/volume/index.js +6 -6
- package/dist/plugs/z-register.cjs +12 -10
- package/dist/plugs/z-register.cjs.map +1 -1
- package/dist/plugs/z-register.js +34 -34
- package/dist/super/components/index.cjs +4 -2
- package/dist/super/components/index.cjs.map +1 -1
- package/dist/super/components/index.js +69 -69
- package/dist/super/components/notifiers.js +14 -14
- package/dist/super/consts.cjs +4 -2
- package/dist/super/consts.cjs.map +1 -1
- package/dist/super/consts.js +6 -6
- package/dist/super/plugs/index.cjs +12 -10
- package/dist/super/plugs/index.cjs.map +1 -1
- package/dist/super/plugs/index.js +79 -79
- package/dist/super/plugs/menus.cjs +4 -2
- package/dist/super/plugs/menus.cjs.map +1 -1
- package/dist/super/plugs/menus.js +34 -34
- package/dist/super/techs.cjs +4 -2
- package/dist/super/techs.cjs.map +1 -1
- package/dist/super/techs.js +15 -15
- package/dist/super/utils.cjs +4 -2
- package/dist/super/utils.cjs.map +1 -1
- package/dist/super/utils.js +3 -3
- package/dist/super.cjs +12 -10
- package/dist/super.cjs.map +1 -1
- package/dist/super.global.js +12 -10
- package/dist/super.global.js.map +1 -1
- package/dist/super.js +93 -93
- package/dist/techs/base.cjs +4 -2
- package/dist/techs/base.cjs.map +1 -1
- package/dist/techs/base.js +3 -3
- package/dist/techs/dash.cjs +4 -2
- package/dist/techs/dash.cjs.map +1 -1
- package/dist/techs/dash.js +6 -6
- package/dist/techs/hls.cjs +4 -2
- package/dist/techs/hls.cjs.map +1 -1
- package/dist/techs/hls.js +6 -6
- package/dist/techs/html5.cjs +4 -2
- package/dist/techs/html5.cjs.map +1 -1
- package/dist/techs/html5.js +5 -5
- package/dist/techs/ima.cjs +4 -2
- package/dist/techs/ima.cjs.map +1 -1
- package/dist/techs/ima.js +5 -5
- package/dist/techs/shaka.cjs +4 -2
- package/dist/techs/shaka.cjs.map +1 -1
- package/dist/techs/shaka.js +6 -6
- package/dist/techs/vimeo.cjs +4 -2
- package/dist/techs/vimeo.cjs.map +1 -1
- package/dist/techs/vimeo.js +4 -4
- package/dist/techs/youtube.cjs +4 -2
- package/dist/techs/youtube.cjs.map +1 -1
- package/dist/techs/youtube.js +6 -6
- package/dist/techs/z-register.cjs +4 -2
- package/dist/techs/z-register.cjs.map +1 -1
- package/dist/techs/z-register.js +11 -11
- package/dist/tools/player.cjs +4 -2
- package/dist/tools/player.cjs.map +1 -1
- package/dist/tools/player.js +5 -5
- package/dist/tools/runtime/index.cjs +4 -2
- package/dist/tools/runtime/index.cjs.map +1 -1
- package/dist/tools/runtime/index.js +5 -5
- package/dist/utils/media.cjs +4 -2
- package/dist/utils/media.cjs.map +1 -1
- package/dist/utils/media.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-2LAXELOT.js.map +0 -1
- /package/dist/{chunk-H6LUSY4C.js.map → chunk-2BDB5RKS.js.map} +0 -0
- /package/dist/{chunk-KREAGI4M.js.map → chunk-3ZXWSGZQ.js.map} +0 -0
- /package/dist/{chunk-FZNKMHU6.js.map → chunk-5ZXIPTVQ.js.map} +0 -0
- /package/dist/{chunk-DMHABZ4I.js.map → chunk-6CZC4EC3.js.map} +0 -0
- /package/dist/{chunk-6Z5GA35Y.js.map → chunk-6E7WCRN5.js.map} +0 -0
- /package/dist/{chunk-Y26P5KWP.js.map → chunk-AMIMOMSM.js.map} +0 -0
- /package/dist/{chunk-XAEJ4VKP.js.map → chunk-BAGDFZVR.js.map} +0 -0
- /package/dist/{chunk-YOTZRODS.js.map → chunk-BGC6U2VR.js.map} +0 -0
- /package/dist/{chunk-KN62MKRR.js.map → chunk-BIAKMBLJ.js.map} +0 -0
- /package/dist/{chunk-MOHKV2SI.js.map → chunk-E47SFXWN.js.map} +0 -0
- /package/dist/{chunk-4EO7OU7U.js.map → chunk-EAM7QVWC.js.map} +0 -0
- /package/dist/{chunk-XBKUOFMU.js.map → chunk-FI44MLF6.js.map} +0 -0
- /package/dist/{chunk-6WMPIV4Z.js.map → chunk-GB5G3BDB.js.map} +0 -0
- /package/dist/{chunk-RLNKPMPY.js.map → chunk-H3LRGDOG.js.map} +0 -0
- /package/dist/{chunk-3JLLR6EP.js.map → chunk-JE5GTBPS.js.map} +0 -0
- /package/dist/{chunk-XOBXBS24.js.map → chunk-JSXS3DNU.js.map} +0 -0
- /package/dist/{chunk-3O5YWKN2.js.map → chunk-KRXAYNNN.js.map} +0 -0
- /package/dist/{chunk-MHHKTW7S.js.map → chunk-L5WT3SVA.js.map} +0 -0
- /package/dist/{chunk-ZK4CRWSL.js.map → chunk-LNAOARU6.js.map} +0 -0
- /package/dist/{chunk-HNIZJ732.js.map → chunk-MBC43WUS.js.map} +0 -0
- /package/dist/{chunk-ULCW7DXV.js.map → chunk-MS7BTXKP.js.map} +0 -0
- /package/dist/{chunk-V6XG3TU2.js.map → chunk-NFYLUVJB.js.map} +0 -0
- /package/dist/{chunk-E5U2ICRI.js.map → chunk-NNRJBBPH.js.map} +0 -0
- /package/dist/{chunk-RAQTPHZI.js.map → chunk-NWNM7VFR.js.map} +0 -0
- /package/dist/{chunk-IAT2U5LP.js.map → chunk-OFYUJ7VU.js.map} +0 -0
- /package/dist/{chunk-PA3AMDU7.js.map → chunk-OKSL6V2G.js.map} +0 -0
- /package/dist/{chunk-QO2TROTC.js.map → chunk-PILA22ZY.js.map} +0 -0
- /package/dist/{chunk-TRQQIKQI.js.map → chunk-RG5EFXDF.js.map} +0 -0
- /package/dist/{chunk-5ZOHXLVH.js.map → chunk-SMYY6RCM.js.map} +0 -0
- /package/dist/{chunk-KNGBLT2V.js.map → chunk-SQRPFMDO.js.map} +0 -0
- /package/dist/{chunk-CMZQV7CA.js.map → chunk-TJIXY45I.js.map} +0 -0
- /package/dist/{chunk-JHSI6QAF.js.map → chunk-VHXMKLXA.js.map} +0 -0
- /package/dist/{chunk-FWCO3N4N.js.map → chunk-VRLKALWA.js.map} +0 -0
- /package/dist/{chunk-HRROJ2SS.js.map → chunk-WWYSNBSJ.js.map} +0 -0
- /package/dist/{chunk-Y3U5DUK5.js.map → chunk-ZC3NH7AA.js.map} +0 -0
- /package/dist/{chunk-3JLU4Q7F.js.map → chunk-ZVHCY2ND.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VRLKALWA.js";
|
|
4
4
|
import {
|
|
5
5
|
globalState
|
|
6
6
|
} from "./chunk-FD6VCHH5.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-
|
|
30
|
+
//# sourceMappingURL=chunk-2BDB5RKS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PLAY_ITEM_BUILD
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SQRPFMDO.js";
|
|
4
4
|
import {
|
|
5
5
|
AUDIO_EXTENSIONS,
|
|
6
6
|
MATCH_URL_VIMEO,
|
|
@@ -72,4 +72,4 @@ var getMainPlaylistMenu = (plug, ctx = { editIdx: -1 }) => ({
|
|
|
72
72
|
export {
|
|
73
73
|
getMainPlaylistMenu
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-3ZXWSGZQ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HTML5Tech
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VRLKALWA.js";
|
|
4
4
|
import {
|
|
5
5
|
MSE_ENABLED
|
|
6
6
|
} from "./chunk-RNETXJ63.js";
|
|
@@ -157,4 +157,4 @@ __publicField(HLSTech, "techName", "hls");
|
|
|
157
157
|
export {
|
|
158
158
|
HLSTech
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-5ZXIPTVQ.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-2XJFCVED.js";
|
|
8
8
|
import {
|
|
9
9
|
BaseTech
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EAM7QVWC.js";
|
|
11
11
|
import {
|
|
12
12
|
createTimeRanges,
|
|
13
13
|
getMediaMax,
|
|
@@ -390,4 +390,4 @@ __publicField(YouTubeTech, "techName", "youtube");
|
|
|
390
390
|
export {
|
|
391
391
|
YouTubeTech
|
|
392
392
|
};
|
|
393
|
-
//# sourceMappingURL=chunk-
|
|
393
|
+
//# sourceMappingURL=chunk-6CZC4EC3.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ModesPlug
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZVHCY2ND.js";
|
|
4
4
|
import {
|
|
5
5
|
MODES_CAST_BUILD
|
|
6
6
|
} from "./chunk-TN7WYBLE.js";
|
|
@@ -145,4 +145,4 @@ __publicField(ModesCastPin, "BUILD", MODES_CAST_BUILD);
|
|
|
145
145
|
export {
|
|
146
146
|
ModesCastPin
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-6E7WCRN5.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-W5JTSVSF.js";
|
|
7
7
|
import {
|
|
8
8
|
getCtlrIdx
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VRLKALWA.js";
|
|
10
10
|
import {
|
|
11
11
|
isArr
|
|
12
12
|
} from "./chunk-ZNFV73SP.js";
|
|
@@ -63,4 +63,4 @@ __publicField(TimeTravelPlug, "BUILD", TIME_TRAVEL_BUILD);
|
|
|
63
63
|
export {
|
|
64
64
|
TimeTravelPlug
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-AMIMOMSM.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseTech
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EAM7QVWC.js";
|
|
4
4
|
import {
|
|
5
5
|
IconRegistry
|
|
6
6
|
} from "./chunk-QMG3O3CD.js";
|
|
@@ -149,4 +149,4 @@ __publicField(IMATech, "techName", "ima");
|
|
|
149
149
|
export {
|
|
150
150
|
IMATech
|
|
151
151
|
};
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
152
|
+
//# sourceMappingURL=chunk-BAGDFZVR.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MEDIA_SETTINGS_BUILD,
|
|
4
4
|
MEDIA_STATE_BUILD,
|
|
5
5
|
MEDIA_STATUS_BUILD
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RYA2LLOF.js";
|
|
7
7
|
import {
|
|
8
8
|
createEl,
|
|
9
9
|
queryFullscreenEl,
|
|
@@ -219,4 +219,4 @@ export {
|
|
|
219
219
|
setCurrentTrack,
|
|
220
220
|
cloneMedia
|
|
221
221
|
};
|
|
222
|
-
//# sourceMappingURL=chunk-
|
|
222
|
+
//# sourceMappingURL=chunk-BGC6U2VR.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-PDOR3OEQ.js";
|
|
4
4
|
import {
|
|
5
5
|
getTrackLabel
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BGC6U2VR.js";
|
|
7
7
|
import {
|
|
8
8
|
formatMediaTime
|
|
9
9
|
} from "./chunk-XSCX6DYR.js";
|
|
@@ -129,4 +129,4 @@ var getSettingsMetadataMenu = (plug) => [
|
|
|
129
129
|
export {
|
|
130
130
|
getSettingsMetadataMenu
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-BIAKMBLJ.js.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VoicePlug
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JZZNDOWL.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
TimePlug
|
|
9
|
-
} from "./chunk-ELB6IJBL.js";
|
|
5
|
+
PosterPlug
|
|
6
|
+
} from "./chunk-FOHBPGFM.js";
|
|
10
7
|
import {
|
|
11
8
|
TimeTravelPlug
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AMIMOMSM.js";
|
|
10
|
+
import {
|
|
11
|
+
VolumePlug
|
|
12
|
+
} from "./chunk-OKSL6V2G.js";
|
|
13
13
|
import {
|
|
14
14
|
PlaybackRatePlug
|
|
15
15
|
} from "./chunk-T7XBFM52.js";
|
|
16
|
-
import {
|
|
17
|
-
PosterPlug
|
|
18
|
-
} from "./chunk-FOHBPGFM.js";
|
|
19
16
|
import {
|
|
20
17
|
SleepTimerPlug
|
|
21
18
|
} from "./chunk-B6RZBMWI.js";
|
|
19
|
+
import {
|
|
20
|
+
TimePlug
|
|
21
|
+
} from "./chunk-ELB6IJBL.js";
|
|
22
22
|
import {
|
|
23
23
|
PanelPlug
|
|
24
24
|
} from "./chunk-3R3YN3PR.js";
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
PersistPlug
|
|
27
27
|
} from "./chunk-H5YOH5FV.js";
|
|
28
28
|
import {
|
|
29
|
-
|
|
30
|
-
} from "./chunk-
|
|
29
|
+
MetadataPlug
|
|
30
|
+
} from "./chunk-Y6XF4JQS.js";
|
|
31
31
|
import {
|
|
32
32
|
ObjectFitPlug
|
|
33
33
|
} from "./chunk-6Z25E4A4.js";
|
|
@@ -36,37 +36,37 @@ import {
|
|
|
36
36
|
} from "./chunk-47SZSPR7.js";
|
|
37
37
|
import {
|
|
38
38
|
ModesCastPin
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-6E7WCRN5.js";
|
|
40
40
|
import {
|
|
41
41
|
LockedPlug
|
|
42
42
|
} from "./chunk-MROTHXKK.js";
|
|
43
43
|
import {
|
|
44
|
-
|
|
45
|
-
} from "./chunk-
|
|
44
|
+
NotifiersPlug
|
|
45
|
+
} from "./chunk-IJ4EHQLP.js";
|
|
46
46
|
import {
|
|
47
47
|
ModesAirPlayPin
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-L5WT3SVA.js";
|
|
49
49
|
import {
|
|
50
50
|
ModesFullscreenPin,
|
|
51
51
|
ModesMiniplayerPin,
|
|
52
52
|
ModesPictureInPicturePin,
|
|
53
53
|
ModesPlug,
|
|
54
54
|
ModesTheaterPin
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-ZVHCY2ND.js";
|
|
56
|
+
import {
|
|
57
|
+
KeysPlug
|
|
58
|
+
} from "./chunk-GTK5KLUZ.js";
|
|
56
59
|
import {
|
|
57
60
|
GesturePlug,
|
|
58
61
|
GestureTouchPin,
|
|
59
62
|
GestureWheelPin
|
|
60
63
|
} from "./chunk-CM63KUHW.js";
|
|
61
64
|
import {
|
|
62
|
-
|
|
63
|
-
} from "./chunk-
|
|
65
|
+
ErrorsPlug
|
|
66
|
+
} from "./chunk-GQUDHB5V.js";
|
|
64
67
|
import {
|
|
65
68
|
FastPlayPlug
|
|
66
69
|
} from "./chunk-UI5D4OIZ.js";
|
|
67
|
-
import {
|
|
68
|
-
ErrorsPlug
|
|
69
|
-
} from "./chunk-GQUDHB5V.js";
|
|
70
70
|
import {
|
|
71
71
|
FramePlug
|
|
72
72
|
} from "./chunk-CU5V4T7W.js";
|
|
@@ -82,13 +82,13 @@ import {
|
|
|
82
82
|
} from "./chunk-AGIGOLZO.js";
|
|
83
83
|
import {
|
|
84
84
|
AutoPlug
|
|
85
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-NNRJBBPH.js";
|
|
86
86
|
import {
|
|
87
87
|
BrightnessPlug
|
|
88
88
|
} from "./chunk-TZH3LLVR.js";
|
|
89
89
|
import {
|
|
90
90
|
CaptionsPlug
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-TJIXY45I.js";
|
|
92
92
|
import {
|
|
93
93
|
AmbiencePlug
|
|
94
94
|
} from "./chunk-U6IVWUYP.js";
|
|
@@ -100,13 +100,13 @@ import {
|
|
|
100
100
|
} from "./chunk-RAJPAOA6.js";
|
|
101
101
|
import {
|
|
102
102
|
PlaylistPlug
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-FI44MLF6.js";
|
|
104
|
+
import {
|
|
105
|
+
AdsPlug
|
|
106
|
+
} from "./chunk-RG5EFXDF.js";
|
|
104
107
|
import {
|
|
105
108
|
DisabledPlug
|
|
106
109
|
} from "./chunk-RV4ONNRN.js";
|
|
107
|
-
import {
|
|
108
|
-
AdsPlug
|
|
109
|
-
} from "./chunk-TRQQIKQI.js";
|
|
110
110
|
import {
|
|
111
111
|
PinRegistry,
|
|
112
112
|
PlugRegistry
|
|
@@ -162,4 +162,4 @@ for (const Pin of [
|
|
|
162
162
|
GestureTouchPin
|
|
163
163
|
])
|
|
164
164
|
PinRegistry.register(Pin);
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-E47SFXWN.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getMediaStatus,
|
|
3
3
|
isFeatured
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BGC6U2VR.js";
|
|
5
5
|
import {
|
|
6
6
|
MEDIA_STATE_BUILD,
|
|
7
7
|
MEDIA_STATUS_BUILD
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-RYA2LLOF.js";
|
|
9
9
|
import {
|
|
10
10
|
getMediaChapter
|
|
11
11
|
} from "./chunk-XSCX6DYR.js";
|
|
@@ -171,4 +171,4 @@ export {
|
|
|
171
171
|
BaseTech,
|
|
172
172
|
cacheKeys
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-EAM7QVWC.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PLAYLIST_BUILD,
|
|
3
3
|
PLAY_ITEM_BUILD
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SQRPFMDO.js";
|
|
5
5
|
import {
|
|
6
6
|
BasePlug
|
|
7
7
|
} from "./chunk-W5JTSVSF.js";
|
|
@@ -106,4 +106,4 @@ __publicField(PlaylistPlug, "BUILD", PLAYLIST_BUILD);
|
|
|
106
106
|
export {
|
|
107
107
|
PlaylistPlug
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-FI44MLF6.js.map
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
removeSources,
|
|
95
95
|
removeTracks,
|
|
96
96
|
setCurrentTrack
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-BGC6U2VR.js";
|
|
98
98
|
import {
|
|
99
99
|
createTimeRanges,
|
|
100
100
|
formatMediaTime,
|
|
@@ -438,4 +438,4 @@ __export(utils_exports, {
|
|
|
438
438
|
export {
|
|
439
439
|
utils_exports
|
|
440
440
|
};
|
|
441
|
-
//# sourceMappingURL=chunk-
|
|
441
|
+
//# sourceMappingURL=chunk-GB5G3BDB.js.map
|
|
@@ -6,31 +6,19 @@ import {
|
|
|
6
6
|
} from "./chunk-CPHEU42C.js";
|
|
7
7
|
import {
|
|
8
8
|
Timeline
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KRXAYNNN.js";
|
|
10
10
|
import {
|
|
11
11
|
RangeInput
|
|
12
12
|
} from "./chunk-Q2FTCDJV.js";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import {
|
|
17
|
-
TimeAndDurationButton
|
|
18
|
-
} from "./chunk-4ZMTEOTZ.js";
|
|
19
|
-
import {
|
|
20
|
-
VoiceButton
|
|
21
|
-
} from "./chunk-BUMF7O6G.js";
|
|
22
|
-
import {
|
|
23
|
-
NextButton
|
|
24
|
-
} from "./chunk-XAMTFVQD.js";
|
|
25
|
-
import {
|
|
26
|
-
ObjectFitButton
|
|
27
|
-
} from "./chunk-EZFGCPYW.js";
|
|
14
|
+
CastPlaceholder
|
|
15
|
+
} from "./chunk-3HFZA4ZX.js";
|
|
28
16
|
import {
|
|
29
|
-
|
|
30
|
-
} from "./chunk-
|
|
17
|
+
ErrorPlaceholder
|
|
18
|
+
} from "./chunk-NAR4YQRM.js";
|
|
31
19
|
import {
|
|
32
|
-
|
|
33
|
-
} from "./chunk-
|
|
20
|
+
PiPPlaceholder
|
|
21
|
+
} from "./chunk-GFRR7CZM.js";
|
|
34
22
|
import {
|
|
35
23
|
PreviousButton
|
|
36
24
|
} from "./chunk-FVA6MKFB.js";
|
|
@@ -44,17 +32,17 @@ import {
|
|
|
44
32
|
TheaterButton
|
|
45
33
|
} from "./chunk-OBFDNXX2.js";
|
|
46
34
|
import {
|
|
47
|
-
|
|
48
|
-
} from "./chunk-
|
|
35
|
+
TimeButton
|
|
36
|
+
} from "./chunk-IGFWJM6J.js";
|
|
49
37
|
import {
|
|
50
|
-
|
|
51
|
-
} from "./chunk-
|
|
38
|
+
TimeAndDurationButton
|
|
39
|
+
} from "./chunk-4ZMTEOTZ.js";
|
|
52
40
|
import {
|
|
53
|
-
|
|
54
|
-
} from "./chunk-
|
|
41
|
+
VoiceButton
|
|
42
|
+
} from "./chunk-BUMF7O6G.js";
|
|
55
43
|
import {
|
|
56
|
-
|
|
57
|
-
} from "./chunk-
|
|
44
|
+
AirPlayPlaceholder
|
|
45
|
+
} from "./chunk-QESJUJVR.js";
|
|
58
46
|
import {
|
|
59
47
|
FullscreenButton
|
|
60
48
|
} from "./chunk-BCJ4NIQL.js";
|
|
@@ -68,23 +56,23 @@ import {
|
|
|
68
56
|
Meta
|
|
69
57
|
} from "./chunk-2E2VWI3J.js";
|
|
70
58
|
import {
|
|
71
|
-
|
|
72
|
-
} from "./chunk-
|
|
59
|
+
NextButton
|
|
60
|
+
} from "./chunk-XAMTFVQD.js";
|
|
73
61
|
import {
|
|
74
|
-
|
|
75
|
-
} from "./chunk-
|
|
62
|
+
ObjectFitButton
|
|
63
|
+
} from "./chunk-EZFGCPYW.js";
|
|
76
64
|
import {
|
|
77
|
-
|
|
78
|
-
} from "./chunk-
|
|
65
|
+
PictureInPictureButton
|
|
66
|
+
} from "./chunk-74JOJRPK.js";
|
|
79
67
|
import {
|
|
80
|
-
|
|
81
|
-
} from "./chunk-
|
|
68
|
+
PlayPauseButton
|
|
69
|
+
} from "./chunk-XFCIDKA5.js";
|
|
82
70
|
import {
|
|
83
71
|
BigPreviousButton
|
|
84
72
|
} from "./chunk-I5TH36DP.js";
|
|
85
73
|
import {
|
|
86
74
|
CaptionsButton
|
|
87
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-JE5GTBPS.js";
|
|
88
76
|
import {
|
|
89
77
|
CaptureButton
|
|
90
78
|
} from "./chunk-EPSUTOOR.js";
|
|
@@ -92,17 +80,29 @@ import {
|
|
|
92
80
|
CastButton
|
|
93
81
|
} from "./chunk-BY2CCSJY.js";
|
|
94
82
|
import {
|
|
95
|
-
|
|
96
|
-
} from "./chunk-
|
|
83
|
+
ChapterButton
|
|
84
|
+
} from "./chunk-CL37OVTO.js";
|
|
97
85
|
import {
|
|
98
|
-
|
|
99
|
-
} from "./chunk-
|
|
86
|
+
DurationButton
|
|
87
|
+
} from "./chunk-AXJURPVZ.js";
|
|
100
88
|
import {
|
|
101
|
-
|
|
102
|
-
} from "./chunk-
|
|
89
|
+
ExpandMiniplayerButton
|
|
90
|
+
} from "./chunk-B45CEO5D.js";
|
|
103
91
|
import {
|
|
104
|
-
|
|
105
|
-
} from "./chunk-
|
|
92
|
+
Forward10Button
|
|
93
|
+
} from "./chunk-NBWHJSX6.js";
|
|
94
|
+
import {
|
|
95
|
+
AirPlayButton
|
|
96
|
+
} from "./chunk-WNZNIW5U.js";
|
|
97
|
+
import {
|
|
98
|
+
Backward10Button
|
|
99
|
+
} from "./chunk-7V3V2UFT.js";
|
|
100
|
+
import {
|
|
101
|
+
BigNextButton
|
|
102
|
+
} from "./chunk-CMKF52BC.js";
|
|
103
|
+
import {
|
|
104
|
+
BigPlayPauseButton
|
|
105
|
+
} from "./chunk-OAU2EW7G.js";
|
|
106
106
|
import {
|
|
107
107
|
Buffer
|
|
108
108
|
} from "./chunk-QTQPICRY.js";
|
|
@@ -159,4 +159,4 @@ for (const Comp of [
|
|
|
159
159
|
ErrorPlaceholder
|
|
160
160
|
])
|
|
161
161
|
ComponentRegistry.register(Comp);
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
162
|
+
//# sourceMappingURL=chunk-H3LRGDOG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTrackKind,
|
|
3
3
|
getTrackLang
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BGC6U2VR.js";
|
|
5
5
|
import {
|
|
6
6
|
IconRegistry
|
|
7
7
|
} from "./chunk-QMG3O3CD.js";
|
|
@@ -60,4 +60,4 @@ __publicField(CaptionsButton, "isControl", true);
|
|
|
60
60
|
export {
|
|
61
61
|
CaptionsButton
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-JE5GTBPS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MEDIA_ITEM_BUILD
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RYA2LLOF.js";
|
|
4
4
|
|
|
5
5
|
// src/ts/plugs/main/ads/build.ts
|
|
6
6
|
var ADS_BUILD = {
|
|
@@ -46,4 +46,4 @@ export {
|
|
|
46
46
|
ADS_BUILD,
|
|
47
47
|
AD_ROLL_BUILD
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-JSXS3DNU.js.map
|
|
@@ -49,7 +49,7 @@ var VoicePlug = class extends BasePlug {
|
|
|
49
49
|
__publicField(this, "TIDS", { ROUTER: `tmg-media-voice-router-for-${this.ctlr.config.id}`, HELPER: `tmg-media-voice-helper-for-${this.ctlr.config.id}`, TEACHER: `tmg-media-voice-teacher-for-${this.ctlr.config.id}` });
|
|
50
50
|
__publicField(this, "history", ["*"]);
|
|
51
51
|
__publicField(this, "historyIdx", 0);
|
|
52
|
-
__publicField(this, "prevRes",
|
|
52
|
+
__publicField(this, "prevRes", false);
|
|
53
53
|
__publicField(this, "snoozeCb", () => this.config.active.value = "passive");
|
|
54
54
|
}
|
|
55
55
|
mount() {
|
|
@@ -89,15 +89,15 @@ var VoicePlug = class extends BasePlug {
|
|
|
89
89
|
this.snooze();
|
|
90
90
|
let transcript = "";
|
|
91
91
|
if (!this.config.muted) for (let i = e.resultIndex, len = e.results.length; i < len; ++i) transcript += e.results[i][0].transcript;
|
|
92
|
-
|
|
93
|
-
this.prevRes = `${e.resultIndex}-${transcript}`;
|
|
92
|
+
transcript = transcript.trim().toLowerCase();
|
|
94
93
|
!this.config.muted && (this.state.routing || this.config.toasts.behavior.value !== "strict") && this.view?.(transcript ? `${transcript}${!this.state.routing ? `... Say ${this.linked(isArr(this.config.commands.voiceWake) ? this.config.commands.voiceWake[0] : this.config.commands.voiceWake)}!` : ""}` : this.getRouterSpeech(this.state.routing && !IS_MOBILE ? "Didn't catch that..." : void 0, this.state.routing ? "" : void 0), this.getRouterOptions());
|
|
95
94
|
const pathInput = this.container?.querySelector(".tmg-media-voice-path-input");
|
|
96
|
-
if (pathInput) pathInput.value = transcript
|
|
97
|
-
transcript && this.ctlr.debounce("voiceProcessing", () => this.process(transcript), 500, false, this.signal);
|
|
95
|
+
if (pathInput) pathInput.value = transcript;
|
|
96
|
+
transcript && this.ctlr.debounce("voiceProcessing", () => `${e.resultIndex}-${transcript}` !== this.prevRes && (this.prevRes = `${e.resultIndex}-${transcript}`, this.process(transcript)), 500, false, this.signal);
|
|
98
97
|
}
|
|
99
98
|
onEnd() {
|
|
100
|
-
this.
|
|
99
|
+
this.prevRes = false;
|
|
100
|
+
this.config?.active.value && this.shouldListen() && this.start();
|
|
101
101
|
}
|
|
102
102
|
onError(e) {
|
|
103
103
|
if (e.error.endsWith("not-allowed")) this.config.muted ? this.start() : this.config.active.value = false, this.view?.error("Microphone access revoked. Please check your settings.", { tag: "tmg-mard" });
|
|
@@ -127,7 +127,7 @@ var VoicePlug = class extends BasePlug {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
stop() {
|
|
130
|
-
this.state.routing = false, this.recognition?.abort();
|
|
130
|
+
this.state.routing = this.prevRes = false, this.recognition?.abort();
|
|
131
131
|
for (const k in this.TIDS) t007.toast?.dismiss(this.TIDS[k]);
|
|
132
132
|
for (const k of ["voiceSleeping", "voiceProcessing"]) this.ctlr.cancelTimeout("debounce", k);
|
|
133
133
|
}
|
|
@@ -139,7 +139,7 @@ var VoicePlug = class extends BasePlug {
|
|
|
139
139
|
// #STANDALONE: needs scoped behavior
|
|
140
140
|
sleep() {
|
|
141
141
|
if (!this.state.routing) return;
|
|
142
|
-
this.state.routing = false;
|
|
142
|
+
this.state.routing = this.prevRes = false;
|
|
143
143
|
this.clearCtx(), t007.toast?.dismiss(this.TIDS.HELPER), !this.config.active.value || this.config.toasts.behavior.value !== "persistent" ? t007.toast?.dismiss(this.TIDS.ROUTER) : this.view?.(this.getRouterSpeech(), this.getRouterOptions());
|
|
144
144
|
}
|
|
145
145
|
// #STANDALONE: needs scoped behavior
|
|
@@ -287,4 +287,4 @@ var clame = (sfx) => `.tmg-media-voice-${sfx}`;
|
|
|
287
287
|
export {
|
|
288
288
|
VoicePlug
|
|
289
289
|
};
|
|
290
|
-
//# sourceMappingURL=chunk-
|
|
290
|
+
//# sourceMappingURL=chunk-JZZNDOWL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ts/plugs/settings/voice/index.ts"],"sourcesContent":["import { BasePlug } from \"@plugs/base\";\r\nimport type { Controller } from \"@core/controller\";\r\nimport { force, getPath, setPath, mirror } from \"sia-reactor/utils\";\r\nimport { limited } from \"@utils/fn\";\r\nimport type { VoiceStage, VoiceConfig, VoiceState } from \"./types\";\r\nimport { VOICE_BUILD } from \"./build\";\r\nimport { capitalize, camelize, uncamelize, fuzzyBlobMatch, fuzzyChunkMatch, getLevenshteinSimilarity, luid } from \"@utils/str\";\r\nimport { formatActionTooltip } from \"@utils/keys\";\r\nimport { type ToastOptions } from \"@t007/toast\";\r\nimport { REvent } from \"sia-reactor\";\r\nimport { CtlrConfig } from \"@defs/config\";\r\nimport { tutorialOpts } from \"../toasts\";\r\nimport { Action } from \"@defs/action\";\r\nimport { IconRegistry } from \"@core/registries\";\r\nimport { isArr } from \"@utils/obj\";\r\nimport { IS_MOBILE } from \"@utils/env\";\r\nimport { globalState } from \"@tools/runtime\";\r\n\r\nexport class VoicePlug extends BasePlug<VoiceConfig, VoiceState> {\r\n public static readonly plugName = \"voice\";\r\n public static readonly BUILD = VOICE_BUILD;\r\n protected recognition?: any;\r\n protected teachBasics = limited(() => this.view?.(`Follow the guides at the ${(this.config.toasts.helper.position || \"bottom-left\").replace(\"-\", \" \")}. Click ⚙ for settings`, { ...tutorialOpts(() => (this.teachBasics.block(), t007.toast?.dismiss(this.TIDS.TEACHER))), id: this.TIDS.TEACHER, signal: this.signal }), { key: `${luid()}_voice_basics`, maxTimes: 6, perSession: 2 });\r\n protected snublist: Array<Action[\"id\"]> = [\"voiceToggleOn\", \"voiceToggleOff\"] as const;\r\n protected readonly TIDS = { ROUTER: `tmg-media-voice-router-for-${this.ctlr.config.id}`, HELPER: `tmg-media-voice-helper-for-${this.ctlr.config.id}`, TEACHER: `tmg-media-voice-teacher-for-${this.ctlr.config.id}` };\r\n protected history: string[] = [\"*\"];\r\n protected historyIdx: number = 0;\r\n\r\n constructor(ctlr: Controller, config = ctlr.settings.voice) {\r\n super(ctlr, config, { ctx: \"*\", routing: false });\r\n }\r\n\r\n public override mount(): void {\r\n // Variables Assignment\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n if (!SpeechRecognition) return;\r\n this.recognition = new SpeechRecognition();\r\n Object.assign(this.recognition, { continuous: true, interimResults: true, onresult: this.onResult, onend: this.onEnd, onerror: this.onError });\r\n }\r\n\r\n public override wire(): void {\r\n // Event Listeners\r\n [\"click\", \"click\", \"keydown\", \"mousemove\", \"touchmove\", \"scroll\"].forEach((ev, i) => this.container?.addEventListener(ev, !i ? this.handleClick : i < 3 ? this.handleInput : this.stayWoke, { passive: i > 3, signal: this.signal }));\r\n // State Watchers\r\n this.state.watch(\"ctx\", this.onCtx, { signal: this.signal });\r\n // ----- Listeners\r\n this.state.on(\"routing\", ({ value }) => (this.media.container.classList.toggle(\"tmg-media-voice-routing\", value), (this.config.toasts.router.autoClose = value || this.config.toasts.behavior.value === \"persistent\" ? false : true)), { signal: this.signal });\r\n // Ctlr Config Setters\r\n this.ctlr.config.set(\"settings.voice.active.value\", (v) => (v === \"passive\" && !this.config.commands.voiceWake.length ? false : v), { init: true, signal: this.signal });\r\n // ---- Media Watchers\r\n this.media.watch(\"tech\", () => this.media.tech.polyfill(\"voice\", true), { init: true, signal: this.signal }); // falls back to tap routing\r\n // ---- State Listeners\r\n this.ctlr.state.on(\"mediaIntersecting\", () => this.ctlr.debounce(\"syncingListener\", this.syncListener, 500, false, this.signal), { signal: this.signal });\r\n globalState.on(\"isVisible\", () => this.ctlr.debounce(\"syncingListener\", this.syncListener, 500, false, this.signal), { signal: this.signal });\r\n // ---- Config -------\r\n this.ctlr.config.on(\"settings.voice.active.value\", this.handleActive, { signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.muted\", ({ value }) => this.config.active.value && (value && this.recognition?.abort(), this.start()), { signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.toasts.behavior.value\", ({ value }) => (this.config.toasts.router.autoClose = this.state.routing || value === \"persistent\" ? false : true), { init: true, signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.toasts.router\", ({ type, value, target: { key } }) => this.view?.update(this.TIDS.ROUTER, type !== \"update\" ? value : ({ [key]: value } as any)), { signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.toasts.helper\", ({ type, value, target: { key } }) => this.view?.update(this.TIDS.HELPER, type !== \"update\" ? value : ({ [key]: value } as any)), { signal: this.signal });\r\n this.ctlr.config.on(\"settings.voice.commands.voiceWake\", ({ value }) => !this.state.routing && (value.length ? this.config.active.value && this.start() : (this.config.active.value = false)), { signal: this.signal });\r\n this.ctlr.config.on(\"disabled\", this.syncListener, { signal: this.signal });\r\n this.ctlr.config.on(\"devMode\", () => this.state.routing && this.predict(), { signal: this.signal });\r\n this.ctlr.learn(\"voiceWake\", { voice: { stage: \"anytime\", match: \"chunk\" } }, this.signal);\r\n this.ctlr.learn(\"voiceSleep\", undefined, this.signal);\r\n this.ctlr.learn(\"voiceQuit\", { voice: { stage: \"anytime\" } }, this.signal);\r\n this.ctlr.learn(\"voiceMute\", { voice: { stage: \"anytime\" } }, this.signal);\r\n this.ctlr.learn(\"voiceSubmit\", { fn: () => this.submit(), voice: { stage: \"pre-route\" } }, this.signal);\r\n this.ctlr.learn(\"voiceCtxPrevious\", { fn: this.goBack, keyboard: { phase: \"keydown\" } }, this.signal);\r\n this.ctlr.learn(\"voiceCtxNext\", { fn: this.goForward, keyboard: { phase: \"keydown\" } }, this.signal);\r\n this.ctlr.learn(\"voiceCtxClear\", { fn: () => this.clearCtx(false) }, this.signal);\r\n this.ctlr.flags.wired ? this.syncListener() : this.ctlr.state.wonce(\"readyState\", this.syncListener, { signal: this.signal }); // #HEAVY: waits for !light. If wake word is enabled, start the engine immediately in \"sleep\" mode\r\n super.wire();\r\n }\r\n\r\n protected onResult(e: any): void {\r\n this.snooze();\r\n let transcript = \"\";\r\n if (!this.config.muted) for (let i = e.resultIndex, len = e.results.length; i < len; ++i) transcript += e.results[i][0].transcript;\r\n transcript = transcript.trim().toLowerCase();\r\n !this.config.muted && (this.state.routing || this.config.toasts.behavior.value !== \"strict\") && this.view?.(transcript ? `${transcript}${!this.state.routing ? `... Say ${this.linked(isArr(this.config.commands.voiceWake) ? this.config.commands.voiceWake[0] : this.config.commands.voiceWake)}!` : \"\"}` : this.getRouterSpeech(this.state.routing && !IS_MOBILE ? \"Didn't catch that...\" : undefined, this.state.routing ? \"\" : undefined), this.getRouterOptions());\r\n const pathInput = this.container?.querySelector<HTMLInputElement>(\".tmg-media-voice-path-input\");\r\n if (pathInput) pathInput.value = transcript; // Update the Text UI\r\n transcript && this.ctlr.debounce(\"voiceProcessing\", () => `${e.resultIndex}-${transcript}` !== this.prevRes && ((this.prevRes = `${e.resultIndex}-${transcript}`), this.process(transcript)), 500, false, this.signal); // Process after delay\r\n }\r\n private prevRes: string | false = false;\r\n protected onEnd(): void {\r\n this.prevRes = false;\r\n this.config?.active.value && this.shouldListen() && this.start();\r\n }\r\n protected onError(e: any): void {\r\n if (e.error.endsWith(\"not-allowed\")) this.config.muted ? this.start() : (this.config.active.value = false), this.view?.error(\"Microphone access revoked. Please check your settings.\", { tag: \"tmg-mard\" });\r\n }\r\n\r\n protected handleActive({ value }: REvent<CtlrConfig, \"settings.voice.active.value\">): void {\r\n value === false ? this.stop() : this.shouldListen() && (value === \"passive\" ? this.sleep() : this.wakeUp(), this.start());\r\n }\r\n public syncListener(): void {\r\n !this.shouldListen() ? this.stop() : this.config.active.value && (this.config.active.value === true && this.wakeUp(), this.start());\r\n }\r\n protected shouldListen(): boolean {\r\n return this.ctlr.flags.wired && ((globalState.isVisible && this.ctlr.state.mediaIntersecting) || this.config.muted) && !this.ctlr.config.disabled;\r\n }\r\n\r\n protected async request(): Promise<\"granted\" | \"denied\" | \"cancelled\" | \"nuked\"> {\r\n const state = (await navigator.permissions?.query({ name: \"microphone\" }).catch(() => null))?.state ?? \"prompt\";\r\n if (state === \"granted\" || state === \"denied\") return state;\r\n // prettier-ignore\r\n return t007.toast?.dismiss(this.TIDS.HELPER), new Promise((res, _, req?: () => void, i = 0) => ((req = () => this.view?.info(\"Voice control requires mic access\", { id: this.TIDS.ROUTER, signal: this.signal, ...this.config.toasts.router, autoClose: false, actions: { OK: () => navigator.mediaDevices.getUserMedia({ audio: true }).then((s) => (s.getTracks().forEach((t) => t.stop()), res(\"granted\"))).catch(async (e) => (await navigator.permissions?.query({ name: \"microphone\" as any }).then(p => p?.state === \"denied\", () => e.message === \"Permission denied\")) || ++i > 3 ? res(\"cancelled\") : this.view?.warn(\"Grant permission to use microphone\", { id: this.TIDS.ROUTER, autoClose: false, actions: { Retry: req! } })), ...this.getRouterActions(false) }, onClose: (_, user) => res(user ? \"cancelled\" : \"nuked\") }) || res(\"nuked\"))())); // #EXTRA-MILE: doing the most with the least\r\n }\r\n public async start(): Promise<void> {\r\n let state = this.config.muted ? \"granted\" : await this.request();\r\n if (state === \"nuked\" || !this.config) return; // only death i know hence abort over config check\r\n state === \"granted\" && (this.config.toasts.behavior.value === \"persistent\" || t007.toast.isActive(this.TIDS.ROUTER)) && this.view?.(this.getRouterSpeech(), this.getRouterOptions());\r\n if (this.state.routing) this.goTo(), t007.toast.isActive(this.TIDS.HELPER) && this.teachBasics();\r\n try {\r\n state === \"granted\" ? !this.config.muted && this.recognition?.start() : this.onError({ error: \"not-allowed\" });\r\n } catch (e) {} // Silence the InvalidStateError since we might call when already on due to wake word\r\n }\r\n protected stop(): void {\r\n (this.state.routing = this.prevRes = false), this.recognition?.abort();\r\n for (const k in this.TIDS) t007.toast?.dismiss(this.TIDS[k as keyof typeof this.TIDS]);\r\n for (const k of [\"voiceSleeping\", \"voiceProcessing\"]) this.ctlr.cancelTimeout(\"debounce\", k);\r\n }\r\n\r\n protected wakeUp(): void {\r\n if (this.state.routing) return;\r\n this.state.routing = true;\r\n this.clearCtx(), this.view?.(this.getRouterSpeech(), this.getRouterOptions()), this.snooze();\r\n } // #STANDALONE: needs scoped behavior\r\n protected sleep(): void {\r\n if (!this.state.routing) return;\r\n this.state.routing = this.prevRes = false;\r\n this.clearCtx(), t007.toast?.dismiss(this.TIDS.HELPER), !this.config.active.value || this.config.toasts.behavior.value !== \"persistent\" ? t007.toast?.dismiss(this.TIDS.ROUTER) : this.view?.(this.getRouterSpeech(), this.getRouterOptions());\r\n } // #STANDALONE: needs scoped behavior\r\n\r\n protected trigger(transcript: string, stage: VoiceStage = this.config.process.stage.value): boolean {\r\n for (const act of Object.values(this.ctlr.actions.entries)) {\r\n const cmd = this.config.commands[act.id];\r\n if (!cmd?.length || (act.id !== \"voiceWake\" && !this.config.process.allowCommands) || this.snublist.includes(act.id) || (act.voice?.stage || this.config.process.stage.value) !== stage || (act.id === \"voiceWake\" && this.state.routing)) continue;\r\n if (((act.voice?.match || this.config.process.match.value) === \"chunk\" ? fuzzyChunkMatch : fuzzyBlobMatch)(cmd, transcript, this.config.process.accuracy)) return this.ctlr.perform(act.id) && this.view?.success(`Triggered <b>${act.label ?? capitalize(uncamelize(act.id))}</b>`, { id: this.TIDS.ROUTER, icon: true, autoClose: this.config.toasts.router.autoClose }), true;\r\n }\r\n return false;\r\n }\r\n protected process(transcript: string, cleaned = transcript.replace(/[-\\s]/g, \"\"), isSubmit = false, dormant = !this.state.routing): boolean {\r\n if (this.trigger(transcript, \"anytime\") || dormant) return !dormant;\r\n // --- 1. PRE-ROUTE STAGE ---\r\n if (this.trigger(transcript, \"pre-route\")) return true;\r\n // --- 2. PATH|LEAF EXECUTION (PRIORITY) ---\r\n if (!this.ctlr.isLogical(this.state.ctx, true)) {\r\n const paths = this.ctlr.getLogicPaths(this.state.ctx);\r\n // prettier-ignore\r\n let match: string | null = null, highest = 0, len = paths.length;\r\n if (len)\r\n for (let i = 0; i < len; i++) {\r\n const leaf = paths[i].split(\".\").pop()!.toLowerCase();\r\n // prettier-ignore\r\n if (cleaned === leaf) { match = paths[i]; break; }\r\n const score = getLevenshteinSimilarity(leaf, transcript);\r\n if (score > this.config.process.accuracy && score > highest) (highest = score), (match = paths[i]);\r\n } // Fuzzy Match: Check if the user said the last word of any valid path\r\n if (match) {\r\n if (this.ctlr.isLogical(this.goTo(match), true)) return this.execute(transcript, match, true), true; // If a S.I.A path strongly matches what they said, TAKE IT. Bypasses commands completely.\r\n } else if (isSubmit) {\r\n const path = this.state.ctx === \"*\" ? transcript : `${this.state.ctx}.${camelize(transcript)}`,\r\n val = this.ctlr.isLogical(path) ? getPath(this.ctlr.logicRoot as any, mirror(path)) : undefined;\r\n if (val !== undefined && this.ctlr.isLogical(this.goTo(path), true, val)) return this.execute(transcript, path, true), true; // Hey dev or explorer, here u go!\r\n }\r\n } else if (this.execute(transcript, undefined, false)) return true;\r\n // --- 4. POST-ROUTE STAGE ---\r\n return this.trigger(transcript, \"post-route\");\r\n }\r\n protected parse(transcript: string, path = this.state.ctx, isNav = false, value = getPath(this.ctlr.logicRoot as any, mirror(path)), type = isArr(value) ? \"array\" : typeof value): any {\r\n if (type === \"boolean\") return isNav && this.config.routing.autoToggles ? !value : fuzzyChunkMatch(this.config.commands.voiceToggleOn, transcript, this.config.process.accuracy) ? true : fuzzyChunkMatch(this.config.commands.voiceToggleOff, transcript, this.config.process.accuracy) ? false : null;\r\n if (isNav) return null;\r\n if (type === \"number\") {\r\n const match = transcript.replace(/,/g, \"\").match(/-?\\d+(\\.\\d+)?/);\r\n return match ? Number(match[0]) : null;\r\n } else if (type === \"string\" || type === \"array\") return transcript ? (type === \"string\" ? transcript : transcript.split(/\\s*(?:,|and)\\s*/i).filter(Boolean)) : null;\r\n return null;\r\n }\r\n protected execute(transcript: string, path = this.state.ctx, isNav = false, isSubmit = false, value = this.parse(transcript, path, isNav), type = isArr(value) ? \"array\" : typeof value): boolean {\r\n if (value === null) return false;\r\n if ((this.config.routing.strict.value === true || (this.config.routing.strict.value === \"auto\" && type === \"string\")) && !isSubmit) {\r\n const input = this.container?.querySelector<HTMLInputElement>(clame(\"word-input\"));\r\n if (input) input.value = type === \"array\" ? value.join(\", \") : String(value);\r\n return this.view?.update(this.TIDS.ROUTER, { render: transcript || String(value), ...this.getRouterOptions(false) }), true;\r\n } // Auto-Strict: Blocks execution for strings only (or everything if true)\r\n return setPath(this.ctlr.logicRoot as any, path as any, value), this.view?.success(`${path.split(\".\").map(uncam).join(\" > \")} -> <code>${isArr(value) ? `[${value.join(\", \")}]` : value}</code>`, { id: this.TIDS.ROUTER, icon: true, autoClose: this.config.toasts.router.autoClose }), this.goBack(), true;\r\n }\r\n protected submit(render = this.container?.querySelector<HTMLInputElement>(clame(\"word-input\"))?.value.trim(), process = false): void {\r\n if (render) this.view?.update(this.TIDS.ROUTER, { render, ...this.getRouterOptions(false) }), !process ? this.execute(render, undefined, false, true) : this.process(render, undefined, true); // Execute with isSubmit = true\r\n }\r\n protected predict(): void {\r\n const crumbHtml = this.history.length < 2 ? \"\" : `<div class=\"tmg-media-voice-crumb-wrap\">` + this.history.map((p, idx, _, active = idx === this.historyIdx) => `<small style=\"${active ? \"font-weight: 500;\" : \"opacity: 0.8;\"}\">${this.linked(p === \"*\" ? \"Root\" : uncam(p.split(\".\").pop()!), p, true)}</small>`).join(\" <span style='opacity: 0.4;'><small>></small></span> \") + `</div>`,\r\n actions: ToastOptions[\"actions\"] = {};\r\n if (this.media.features.voiceItems) {\r\n actions[`<span title='Clear context${formatActionTooltip(this.settings.keys.shortcuts.voiceCtxClear, this.config.commands.voiceCtxClear)}'>×</span>`] = () => this.clearCtx(false);\r\n actions[`<span title='Go back${formatActionTooltip(this.settings.keys.shortcuts.voiceCtxPrevious, this.config.commands.voiceCtxPrevious)}' ${this.media.features.previousVoiceItem ? \"\" : \"disabled\"}>‹</span>`] = this.goBack;\r\n actions[`<span title='Go forward${formatActionTooltip(this.settings.keys.shortcuts.voiceCtxNext, this.config.commands.voiceCtxNext)}'${this.media.features.nextVoiceItem ? \"\" : \" disabled\"}>›</span>`] = this.goForward;\r\n }\r\n if (this.ctlr.isLogical(this.state.ctx, true)) {\r\n const value = getPath(this.ctlr.logicRoot as any, mirror(this.state.ctx)),\r\n type = isArr(value) ? \"array\" : typeof value,\r\n showInput = this.config.routing.strict.value === true || (this.config.routing.strict.value === \"auto\" && type !== \"boolean\"),\r\n showSubmit = this.media.tech.polyfill(\"voiceSubmit\", this.config.routing.strict.value === true || (this.config.routing.strict.value === \"auto\" && type === \"string\")),\r\n display = type === \"array\" ? value.join(\", \") : value ?? \"\",\r\n inputHtml = showInput ? `<div class=\"tmg-media-voice-input-wrap\"><input name=\"voice_value\" type=\"${type === \"number\" ? \"number\" : \"text\"}\" class=\"tmg-media-voice-word-input\" placeholder=\"${display || \"Type value...\"}\" value=\"${display}\"/>${showSubmit ? `<button type=\"button\" title='Submit ${formatActionTooltip(this.settings.keys.shortcuts.voiceSubmit, this.config.commands.voiceSubmit)}' class=\"tmg-media-voice-word-submit\">↳</button>` : \"\"}</div>` : \"\",\r\n // prettier-ignore\r\n hints = type === \"boolean\" ? `${(isArr(this.config.commands.voiceToggleOn) ? this.config.commands.voiceToggleOn.slice(0, 2) : [this.config.commands.voiceToggleOn]).map((v) => this.linked(v)).join(\", \")} or ${(isArr(this.config.commands.voiceToggleOff) ? this.config.commands.voiceToggleOff.slice(0, 2) : [this.config.commands.voiceToggleOff]).map((v) => this.linked(v)).join(\", \")} ${inputHtml}` : type === \"number\" ? `a number (like ${this.linked(\"0\")}, ${this.linked(\"50\")}):</small> ${inputHtml}` : type === \"array\" ? `comma-separated values:</small> ${inputHtml}` : `the exact text:</small> ${inputHtml}`;\r\n return void this.view?.(`${crumbHtml}<div class=\"tmg-media-voice-content\">${showInput ? '<small style=\"font-weight: 500;\">' : \"\"}Try ${this.config.muted ? (showInput ? \"typing\" : IS_MOBILE ? \"tapping\" : \"clicking\") : \"saying\"} ${hints}</div>`, this.getHelperOptions(actions));\r\n }\r\n const paths = this.ctlr.getLogicPaths(this.state.ctx);\r\n if (!paths.length) return;\r\n const inputHtml = `<input name=\"voice_path\" type=\"text\" class=\"tmg-media-voice-path-input\" placeholder=\"...text\"/>`;\r\n this.view?.(`${crumbHtml}<div class=\"tmg-media-voice-content\"><small style=\"font-weight: 500;\">Try ${this.config.muted ? (IS_MOBILE ? \"tapping\" : \"clicking\") : \"saying\"} any of these:</small><br>${inputHtml} • ${paths.map((p) => this.linked(uncam(p.split(\".\").pop()!))).join(\" • \")}</div>`, this.getHelperOptions(actions));\r\n }\r\n\r\n protected linked(text: string, value = text.toLowerCase(), isGoto = false, punc = isGoto || this.config.muted ? \"\" : '\"'): string {\r\n return `${punc}<u class=\"tmg-media-voice-link\" ${isGoto ? \"data-goto\" : \"data-cmd\"}=\"${value}\" title=\"${isGoto ? \"Go to\" : \"Say\"} ${value}\" tabindex=\"0\" style=\"cursor:pointer; text-decoration-color: rgb(from var(--tmg-media-brand-${isGoto ? \"accent-\" : \"\"}color) r g b / 0.75);\">${isGoto || this.config.muted ? text : value}</u>${punc}`;\r\n } // `\"\"` is my lil UI Experiment, crafting a standard here :)\r\n protected stayWoke(e: Event): void {\r\n this.state.routing && this.ctlr.throttle(\"voiceWaking\", () => e.composedPath().some((el) => (el as HTMLElement)?.matches?.(`:is([id=\"${this.TIDS.HELPER}\"],[id=\"${this.TIDS.ROUTER}\"])`)) && this.snooze(), 500);\r\n }\r\n protected handleClick(e: MouseEvent, t = e.target as HTMLElement): void {\r\n if (!t?.matches?.(clame(\"link\"))) return;\r\n e.preventDefault(), e.stopPropagation();\r\n if (t.dataset.goto) return void this.goTo(t.dataset.goto);\r\n this.view?.update(this.TIDS.ROUTER, { render: t.dataset.cmd, ...this.getRouterOptions(false) }); // Instantly update the router toast to show they \"clicked/said\" it\r\n this.process(t.dataset.cmd || \"\"); // Pipe it straight into the processor as if they spoke it!\r\n }\r\n protected handleInput(e: Event, t = e.target as HTMLInputElement, isEnter = e.type === \"keydown\" && (e as KeyboardEvent).key === \"Enter\", isClick = e.type === \"click\"): void {\r\n if (!t?.tagName) return;\r\n this.stayWoke(e);\r\n if ((isEnter && t.matches(clame(\"word-input\"))) || (isClick && t.matches(clame(\"word-submit\")))) e.preventDefault(), e.stopPropagation(), this.submit(t.closest(clame(\"input-wrap\"))?.querySelector<HTMLInputElement>(clame(\"word-input\"))?.value);\r\n else if (isEnter && t.matches(clame(\"path-input\"))) e.preventDefault(), e.stopPropagation(), this.submit(t.value, true);\r\n }\r\n public snooze(): void {\r\n this.ctlr.debounce(\"voiceSleeping\", this.snoozeCb, this.config.routing.timeout, false, this.signal);\r\n }\r\n private snoozeCb = () => (this.config.active.value = \"passive\");\r\n\r\n protected onCtx(value: string): void {\r\n if (this.history[this.historyIdx] !== this.state.ctx) {\r\n const idx = this.history.indexOf(this.state.ctx);\r\n idx === -1 && this.history.splice(this.historyIdx + 1, this.history.length, value), (this.historyIdx = idx !== -1 ? idx : this.history.length - 1);\r\n }\r\n this.media.tech.polyfill(\"voiceSubmit\", false), this.media.tech.polyfill(\"voiceItems\", this.history.length > 1);\r\n this.media.tech.polyfill(\"previousVoiceItem\", this.historyIdx > 0), this.media.tech.polyfill(\"nextVoiceItem\", this.historyIdx < this.history.length - 1);\r\n this.state.routing && this.predict(); // The single source of truth for rendering the UI\r\n }\r\n protected goTo(path = this.state.ctx, useForce = path === this.state.ctx): string {\r\n return force(() => (this.state.ctx = path), useForce);\r\n }\r\n protected goBack(): void {\r\n this.media.features.previousVoiceItem && this.goTo(this.history[--this.historyIdx]);\r\n }\r\n protected goForward(): void {\r\n this.media.features.nextVoiceItem && this.goTo(this.history[++this.historyIdx]);\r\n }\r\n protected clearCtx(direct = this.config.routing.direct): void {\r\n (this.history = direct ? [\"*\", \"media\", \"media.intent\"] : [\"*\"]), this.goTo(direct ? \"media.intent\" : \"*\", true);\r\n }\r\n\r\n protected getHelperOptions(actions?: ToastOptions[\"actions\"]): ToastOptions {\r\n return { id: this.TIDS.HELPER, actions, onClose: (_, user) => user && (this.config.active.value = \"passive\"), signal: this.signal, ...this.config.toasts.helper };\r\n }\r\n protected getRouterOptions(full = true): ToastOptions {\r\n return full ? { id: this.TIDS.ROUTER, actions: this.getRouterActions(), onClose: (_, user) => user && (this.config.active.value = false), signal: this.signal, ...this.config.toasts.router, ...this.getRouterOptions(false) } : { icon: this.config.toasts.router.icon, type: this.config.muted ? \"warning\" : this.config.toasts.router.type };\r\n }\r\n protected getRouterActions(full = true): ToastOptions[\"actions\"] {\r\n return { ...(full && this.state.routing && { [`<span title='Open actions'>${IconRegistry.get(\"settings\")}</span>`]: (_, __, menu = this.ctlr.plug(\"settings.panel\")?.menu) => (menu?.open(null), menu?.goTo(\"actions\")) }), [`<span title='${this.config.muted ? \"Unmute\" : \"Mute\"} my voice${formatActionTooltip(this.settings.keys.shortcuts.voiceMute, this.config.commands.voiceMute)}'>${IconRegistry.get(this.config.muted ? \"volumeMuted\" : \"volumeHigh\", true)}</span>`]: () => (this.config.muted = !this.config.muted) };\r\n }\r\n protected getRouterSpeech(firstHalf = this.config.muted ? \"Snubbing...\" : \"Listening...\", secondHalf = `${this.config.muted ? (IS_MOBILE ? \"Tap\" : \"Click\") : \"Say\"} ${!this.state.routing ? `${isArr(this.config.commands.voiceWake) ? this.config.commands.voiceWake.map((c = \"\") => this.linked(c)).join(\" or \") : this.linked(this.config.commands.voiceWake)} to wake me up` : this.config.muted ? \"or type instead\" : \"a path or command!\"}`): string {\r\n return `${firstHalf} ${secondHalf}`;\r\n }\r\n protected get container() {\r\n return this.ctlr.plug(\"settings.toasts\")?.container;\r\n }\r\n protected get view() {\r\n return this.ctlr.toast;\r\n }\r\n\r\n public override onDestroy(): void {\r\n this.stop(), super.onDestroy();\r\n }\r\n}\r\nconst uncam = (str: string) => capitalize(uncamelize(str)),\r\n clame = (sfx: string) => `.tmg-media-voice-${sfx}`;\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.voice\": typeof VoicePlug;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/config\" {\r\n interface Settings {\r\n voice: VoiceConfig;\r\n }\r\n}\r\n\r\ndeclare module \"@defs/contract\" {\r\n interface MediaFeaturesExt {\r\n voice: boolean;\r\n voiceItems: boolean;\r\n voiceSubmit: boolean;\r\n nextVoiceItem: boolean;\r\n previousVoiceItem: boolean;\r\n }\r\n}\r\n"],"mappings":"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","names":["_","inputHtml"]}
|