tiny-essentials 1.28.0 → 1.28.2
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/changelog/1/28/1.md +23 -0
- package/changelog/1/28/2.md +43 -0
- package/dist/_/numbers.d.mts +91 -16
- package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
- package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
- package/dist/v1/TinyAnalogClock.min.js +1 -1
- package/dist/v1/TinyBasicsEs.min.js +1 -1
- package/dist/v1/TinyDayNightCycle.min.js +1 -1
- package/dist/v1/TinyDragDropDetector.min.js +1 -1
- package/dist/v1/TinyDragger.min.js +1 -1
- package/dist/v1/TinyElementObserver.min.js +1 -1
- package/dist/v1/TinyEssentials.min.js +1 -1
- package/dist/v1/TinyGamepad.min.js +1 -1
- package/dist/v1/TinyHtml.min.js +1 -1
- package/dist/v1/TinyI18.min.js +1 -1
- package/dist/v1/TinyIframeEvents.min.js +1 -1
- package/dist/v1/TinyLocalStorage.min.js +1 -1
- package/dist/v1/TinyMediaPlayer.min.js +1 -1
- package/dist/v1/TinyNewWinEvents.min.js +1 -1
- package/dist/v1/TinyNotifyCenter.min.js +1 -1
- package/dist/v1/TinyRadioFm.min.js +1 -1
- package/dist/v1/TinyRateLimiter.min.js +1 -1
- package/dist/v1/TinySmartScroller.min.js +1 -1
- package/dist/v1/TinyTextDiffer.min.js +1 -1
- package/dist/v1/TinyTextarea.min.js +1 -1
- package/dist/v1/TinyTimeout.min.js +1 -1
- package/dist/v1/TinyToastNotify.min.js +1 -1
- package/dist/v1/TinyUploadClicker.min.js +1 -1
- package/dist/v1/UltraRandomMsgGen.min.js +1 -1
- package/dist/v1/basics/array.cjs +57 -9
- package/dist/v1/basics/array.d.mts +28 -12
- package/dist/v1/basics/array.mjs +51 -9
- package/dist/v1/basics/clock.cjs +94 -42
- package/dist/v1/basics/clock.d.mts +22 -22
- package/dist/v1/basics/clock.mjs +91 -54
- package/dist/v1/basics/collision.d.mts +245 -104
- package/dist/v1/basics/deprecated/html.cjs +246 -0
- package/dist/v1/basics/deprecated/html.d.mts +63 -0
- package/dist/v1/basics/deprecated/html.mjs +190 -0
- package/dist/v1/basics/extendObjType/Buffer.d.mts +1 -1
- package/dist/v1/basics/fullScreen.d.mts +47 -7
- package/dist/v1/basics/html.cjs +149 -130
- package/dist/v1/basics/html.d.mts +69 -113
- package/dist/v1/basics/html.mjs +113 -105
- package/dist/v1/basics/index.cjs +2 -0
- package/dist/v1/basics/index.d.mts +11 -65
- package/dist/v1/basics/index.mjs +3 -3
- package/dist/v1/basics/mediaContent.cjs +116 -32
- package/dist/v1/basics/mediaContent.d.mts +143 -159
- package/dist/v1/basics/mediaContent.mjs +105 -33
- package/dist/v1/basics/objChecker.cjs +7 -5
- package/dist/v1/basics/objChecker.d.mts +5 -4
- package/dist/v1/basics/objChecker.mjs +6 -6
- package/dist/v1/basics/objFilter.cjs +71 -14
- package/dist/v1/basics/objFilter.d.mts +16 -19
- package/dist/v1/basics/objFilter.mjs +63 -14
- package/dist/v1/basics/simpleMath.cjs +81 -25
- package/dist/v1/basics/simpleMath.d.mts +22 -22
- package/dist/v1/basics/simpleMath.mjs +70 -27
- package/dist/v1/basics/text.cjs +76 -31
- package/dist/v1/basics/text.d.mts +64 -14
- package/dist/v1/basics/text.mjs +62 -31
- package/dist/v1/build/ColorSafeStringify.d.mts +1 -1
- package/dist/v1/build/TinyAdvancedRaffle.d.mts +1 -1
- package/dist/v1/build/TinyAfterScrollWatcher.d.mts +1 -1
- package/dist/v1/build/TinyAnalogClock.d.mts +1 -1
- package/dist/v1/build/TinyArrayComparator.d.mts +1 -1
- package/dist/v1/build/TinyArrayPaginator.d.mts +1 -1
- package/dist/v1/build/TinyClassManager.d.mts +1 -1
- package/dist/v1/build/TinyClipboard.d.mts +1 -1
- package/dist/v1/build/TinyColorConverter.d.mts +1 -1
- package/dist/v1/build/TinyColorValidator.d.mts +1 -1
- package/dist/v1/build/TinyCookieConsent.d.mts +1 -1
- package/dist/v1/build/TinyDayNightCycle.d.mts +1 -1
- package/dist/v1/build/TinyDomReadyManager.d.mts +1 -1
- package/dist/v1/build/TinyDragDropDetector.d.mts +1 -1
- package/dist/v1/build/TinyDragger.d.mts +1 -1
- package/dist/v1/build/TinyElementObserver.d.mts +1 -1
- package/dist/v1/build/TinyGamepad.d.mts +1 -1
- package/dist/v1/build/TinyHtml.d.mts +1 -1
- package/dist/v1/build/TinyI18.d.mts +1 -1
- package/dist/v1/build/TinyIframeEvents.d.mts +1 -1
- package/dist/v1/build/TinyInventory.d.mts +1 -1
- package/dist/v1/build/TinyInventoryTrader.d.mts +1 -1
- package/dist/v1/build/TinyLevelUp.d.mts +1 -1
- package/dist/v1/build/TinyLoadingScreen.d.mts +1 -1
- package/dist/v1/build/TinyLocalStorage.d.mts +1 -1
- package/dist/v1/build/TinyMediaPlayer.d.mts +1 -1
- package/dist/v1/build/TinyNeedBar.d.mts +1 -1
- package/dist/v1/build/TinyNewWinEvents.d.mts +1 -1
- package/dist/v1/build/TinyNotifications.d.mts +1 -1
- package/dist/v1/build/TinyNotifyCenter.d.mts +1 -1
- package/dist/v1/build/TinyPromiseQueue.d.mts +1 -1
- package/dist/v1/build/TinyRadioFm.d.mts +1 -1
- package/dist/v1/build/TinyRateLimiter.d.mts +1 -1
- package/dist/v1/build/TinySimpleDice.d.mts +1 -1
- package/dist/v1/build/TinySmartScroller.d.mts +1 -1
- package/dist/v1/build/TinyTextDiffer.d.mts +1 -1
- package/dist/v1/build/TinyTextRangeEditor.d.mts +1 -1
- package/dist/v1/build/TinyTextarea.d.mts +1 -1
- package/dist/v1/build/TinyTimeout.d.mts +1 -1
- package/dist/v1/build/TinyToastNotify.d.mts +1 -1
- package/dist/v1/build/TinyUploadClicker.d.mts +1 -1
- package/dist/v1/build/UltraRandomMsgGen.d.mts +1 -1
- package/dist/v1/fileManager/asyncFuncs.d.mts +13 -13
- package/dist/v1/fileManager/index.d.mts +3 -29
- package/dist/v1/fileManager/normalFuncs.d.mts +22 -22
- package/dist/v1/index.cjs +4 -0
- package/dist/v1/index.d.mts +54 -137
- package/dist/v1/index.mjs +4 -3
- package/dist/v1/libs/ColorSafeStringify.d.mts +3 -12
- package/dist/v1/libs/TinyAdvancedRaffle.cjs +64 -50
- package/dist/v1/libs/TinyAdvancedRaffle.d.mts +64 -116
- package/dist/v1/libs/TinyAdvancedRaffle.mjs +62 -49
- package/dist/v1/libs/TinyAfterScrollWatcher.cjs +17 -1
- package/dist/v1/libs/TinyAfterScrollWatcher.d.mts +15 -19
- package/dist/v1/libs/TinyAfterScrollWatcher.mjs +15 -1
- package/dist/v1/libs/TinyAnalogClock.cjs +60 -0
- package/dist/v1/libs/TinyAnalogClock.d.mts +12 -9
- package/dist/v1/libs/TinyAnalogClock.mjs +57 -0
- package/dist/v1/libs/TinyArrayComparator.d.mts +14 -20
- package/dist/v1/libs/TinyArrayPaginator.d.mts +22 -26
- package/dist/v1/libs/TinyClassManager/TinyPluginInliner.d.mts +8 -8
- package/dist/v1/libs/TinyClassManager.cjs +5 -7
- package/dist/v1/libs/TinyClassManager.d.mts +16 -16
- package/dist/v1/libs/TinyClassManager.mjs +5 -6
- package/dist/v1/libs/TinyClipboard.cjs +2 -0
- package/dist/v1/libs/TinyClipboard.d.mts +12 -5
- package/dist/v1/libs/TinyClipboard.mjs +2 -0
- package/dist/v1/libs/TinyColorConverter.cjs +1 -0
- package/dist/v1/libs/TinyColorConverter.d.mts +10 -32
- package/dist/v1/libs/TinyColorConverter.mjs +1 -0
- package/dist/v1/libs/TinyColorValidator.d.mts +145 -184
- package/dist/v1/libs/TinyCookieConsent.d.mts +17 -17
- package/dist/v1/libs/TinyDayNightCycle.cjs +67 -42
- package/dist/v1/libs/TinyDayNightCycle.d.mts +87 -117
- package/dist/v1/libs/TinyDayNightCycle.mjs +65 -41
- package/dist/v1/libs/TinyDomReadyManager.d.mts +8 -16
- package/dist/v1/libs/TinyDragDropDetector.cjs +25 -0
- package/dist/v1/libs/TinyDragDropDetector.d.mts +32 -26
- package/dist/v1/libs/TinyDragDropDetector.mjs +22 -0
- package/dist/v1/libs/TinyDragger.cjs +46 -19
- package/dist/v1/libs/TinyDragger.d.mts +82 -81
- package/dist/v1/libs/TinyDragger.mjs +45 -18
- package/dist/v1/libs/TinyElementObserver.cjs +39 -0
- package/dist/v1/libs/TinyElementObserver.d.mts +28 -25
- package/dist/v1/libs/TinyElementObserver.mjs +36 -0
- package/dist/v1/libs/TinyGamepad.cjs +131 -2
- package/dist/v1/libs/TinyGamepad.d.mts +50 -122
- package/dist/v1/libs/TinyGamepad.mjs +129 -2
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.cjs +2 -25
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.d.mts +19 -25
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.mjs +3 -27
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.cjs +2 -1
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.d.mts +55 -55
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.mjs +2 -1
- package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.d.mts +6 -6
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.cjs +8 -4
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.d.mts +19 -21
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.mjs +7 -4
- package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.d.mts +8 -8
- package/dist/v1/libs/TinyHtml/TinyHtmlForm.d.mts +18 -18
- package/dist/v1/libs/TinyHtml/TinyHtmlIcon.d.mts +5 -6
- package/dist/v1/libs/TinyHtml/TinyHtmlIframe.d.mts +19 -19
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.cjs +0 -28
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.d.mts +22 -28
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.mjs +1 -27
- package/dist/v1/libs/TinyHtml/TinyHtmlInput.d.mts +11 -11
- package/dist/v1/libs/TinyHtml/TinyHtmlLink.d.mts +23 -23
- package/dist/v1/libs/TinyHtml/TinyHtmlMedia.d.mts +26 -26
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.cjs +4 -30
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.d.mts +20 -26
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.mjs +5 -32
- package/dist/v1/libs/TinyHtml/TinyHtmlSelect.d.mts +19 -19
- package/dist/v1/libs/TinyHtml/TinyHtmlStyle.d.mts +8 -8
- package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.d.mts +26 -28
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.cjs +14 -15
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.d.mts +32 -32
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.mjs +15 -15
- package/dist/v1/libs/TinyHtml/index.d.mts +102 -45
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.cjs +11 -9
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.d.mts +21 -21
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.mjs +11 -9
- package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.d.mts +11 -11
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.cjs +4 -4
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.d.mts +17 -13
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.mjs +4 -4
- package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.d.mts +21 -21
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.cjs +5 -4
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.mjs +5 -4
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.cjs +4 -3
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.d.mts +10 -10
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.mjs +4 -3
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.cjs +4 -3
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.d.mts +19 -19
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.mjs +4 -3
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.cjs +5 -4
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.d.mts +11 -11
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.mjs +5 -4
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.cjs +4 -3
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.d.mts +15 -11
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.mjs +4 -3
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.cjs +49 -21
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.d.mts +34 -20
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.mjs +45 -20
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.cjs +1 -1
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.mjs +1 -1
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.cjs +1 -1
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.mjs +1 -1
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.cjs +48 -25
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.d.mts +27 -21
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.mjs +40 -27
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.cjs +1 -1
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.mjs +1 -1
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.d.mts +14 -14
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.d.mts +25 -21
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.d.mts +18 -18
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.d.mts +33 -29
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.d.mts +22 -22
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.d.mts +18 -18
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.d.mts +31 -27
- package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.d.mts +35 -11
- package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.d.mts +10 -10
- package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.d.mts +12 -12
- package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.d.mts +35 -27
- package/dist/v1/libs/TinyHtml.cjs +4 -5
- package/dist/v1/libs/TinyHtml.d.mts +1503 -1731
- package/dist/v1/libs/TinyHtml.mjs +5 -6
- package/dist/v1/libs/TinyI18.cjs +61 -0
- package/dist/v1/libs/TinyI18.d.mts +34 -58
- package/dist/v1/libs/TinyI18.mjs +55 -0
- package/dist/v1/libs/TinyIframeEvents.cjs +19 -2
- package/dist/v1/libs/TinyIframeEvents.d.mts +29 -38
- package/dist/v1/libs/TinyIframeEvents.mjs +19 -2
- package/dist/v1/libs/TinyInventory.d.mts +78 -141
- package/dist/v1/libs/TinyInventoryTrader.d.mts +19 -22
- package/dist/v1/libs/TinyLevelUp.d.mts +10 -13
- package/dist/v1/libs/TinyLoadingScreen.d.mts +21 -31
- package/dist/v1/libs/TinyLocalStorage.cjs +48 -0
- package/dist/v1/libs/TinyLocalStorage.d.mts +11 -30
- package/dist/v1/libs/TinyLocalStorage.mjs +45 -0
- package/dist/v1/libs/TinyMamdaniInferenceSystem.d.mts +37 -23
- package/dist/v1/libs/TinyMediaPlayer.cjs +77 -3
- package/dist/v1/libs/TinyMediaPlayer.d.mts +109 -106
- package/dist/v1/libs/TinyMediaPlayer.mjs +71 -3
- package/dist/v1/libs/TinyNeedBar.d.mts +25 -37
- package/dist/v1/libs/TinyNewWinEvents.cjs +29 -0
- package/dist/v1/libs/TinyNewWinEvents.d.mts +32 -29
- package/dist/v1/libs/TinyNewWinEvents.mjs +26 -0
- package/dist/v1/libs/TinyNotifications.d.mts +6 -6
- package/dist/v1/libs/TinyNotifyCenter.cjs +36 -0
- package/dist/v1/libs/TinyNotifyCenter.d.mts +15 -15
- package/dist/v1/libs/TinyNotifyCenter.mjs +32 -0
- package/dist/v1/libs/TinyPromiseQueue.d.mts +11 -11
- package/dist/v1/libs/TinyRadioFm.cjs +70 -12
- package/dist/v1/libs/TinyRadioFm.d.mts +45 -80
- package/dist/v1/libs/TinyRadioFm.mjs +64 -12
- package/dist/v1/libs/TinyRateLimiter.cjs +52 -0
- package/dist/v1/libs/TinyRateLimiter.d.mts +29 -36
- package/dist/v1/libs/TinyRateLimiter.mjs +48 -0
- package/dist/v1/libs/TinySimpleDice.d.mts +17 -36
- package/dist/v1/libs/TinySmartScroller.cjs +52 -3
- package/dist/v1/libs/TinySmartScroller.d.mts +62 -70
- package/dist/v1/libs/TinySmartScroller.mjs +51 -5
- package/dist/v1/libs/TinyTextDiffer.cjs +19 -18
- package/dist/v1/libs/TinyTextDiffer.d.mts +11 -13
- package/dist/v1/libs/TinyTextDiffer.mjs +16 -17
- package/dist/v1/libs/TinyTextRangeEditor.d.mts +8 -8
- package/dist/v1/libs/TinyTextarea.cjs +19 -0
- package/dist/v1/libs/TinyTextarea.d.mts +34 -28
- package/dist/v1/libs/TinyTextarea.mjs +17 -0
- package/dist/v1/libs/TinyTimeout.cjs +11 -1
- package/dist/v1/libs/TinyTimeout.d.mts +14 -14
- package/dist/v1/libs/TinyTimeout.mjs +9 -1
- package/dist/v1/libs/TinyToastNotify.cjs +36 -1
- package/dist/v1/libs/TinyToastNotify.d.mts +15 -17
- package/dist/v1/libs/TinyToastNotify.mjs +32 -1
- package/dist/v1/libs/TinyUploadClicker.cjs +19 -0
- package/dist/v1/libs/TinyUploadClicker.d.mts +38 -8
- package/dist/v1/libs/TinyUploadClicker.mjs +17 -0
- package/dist/v1/libs/UltraRandomMsgGen.cjs +148 -35
- package/dist/v1/libs/UltraRandomMsgGen.d.mts +52 -78
- package/dist/v1/libs/UltraRandomMsgGen.mjs +133 -34
- package/dist/v1/libs/utils.cjs +21 -0
- package/dist/v1/libs/utils.d.mts +6 -0
- package/dist/v1/libs/utils.mjs +16 -0
- package/docs/v1/README.md +1 -0
- package/docs/v1/basics/array.md +2 -2
- package/docs/v1/basics/deprecated/html.md +17 -0
- package/docs/v1/basics/fullScreen.md +1 -1
- package/docs/v1/basics/html.md +12 -26
- package/docs/v1/basics/mediaContent.md +1 -1
- package/docs/v1/basics/objChecker.md +1 -1
- package/docs/v1/basics/text.md +2 -2
- package/docs/v1/fileManager/main.md +1 -1
- package/docs/v1/libs/ColorSafeStringify.md +1 -1
- package/docs/v1/libs/TinyAfterScrollWatcher.md +1 -1
- package/docs/v1/libs/TinyAnalogClock.md +1 -1
- package/docs/v1/libs/TinyArrayComparator.md +1 -1
- package/docs/v1/libs/TinyArrayPaginator.md +1 -1
- package/docs/v1/libs/TinyClassManager/TinyPluginInliner.md +2 -2
- package/docs/v1/libs/TinyClassManager.md +1 -1
- package/docs/v1/libs/TinyClipboard.md +1 -1
- package/docs/v1/libs/TinyCookieConsent.md +1 -1
- package/docs/v1/libs/TinyDomReadyManager.md +1 -1
- package/docs/v1/libs/TinyDragDropDetector.md +1 -1
- package/docs/v1/libs/TinyDragger.md +1 -1
- package/docs/v1/libs/TinyElementObserver.md +1 -1
- package/docs/v1/libs/TinyHtml.md +1 -1
- package/docs/v1/libs/TinyIframeEvents.md +2 -2
- package/docs/v1/libs/TinyLevelUp.md +1 -1
- package/docs/v1/libs/TinyLoadingScreen.md +1 -1
- package/docs/v1/libs/TinyNewWinEvents.md +2 -2
- package/docs/v1/libs/TinyNotifications.md +1 -1
- package/docs/v1/libs/TinyPromiseQueue.md +2 -2
- package/docs/v1/libs/TinyTextDiffer.md +1 -1
- package/docs/v1/libs/TinyTextarea.md +1 -1
- package/package.json +11 -2
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
var events = require('events');
|
|
4
4
|
var mediaContent = require('../basics/mediaContent.cjs');
|
|
5
|
+
var utils = require('./utils.cjs');
|
|
6
|
+
|
|
7
|
+
const checkDestroy = utils.createCheckDestroyed('TinyMediaPlayer');
|
|
5
8
|
|
|
6
9
|
/**
|
|
7
|
-
* @typedef {import('../basics/mediaContent.mjs').
|
|
10
|
+
* @typedef {import('../basics/mediaContent.mjs').PictureDataType} PictureDataType
|
|
11
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaContent<PictureDataType>} MediaContent
|
|
8
12
|
* @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
|
|
9
|
-
* @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata} MediaContentMetadata
|
|
13
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>} MediaContentMetadata
|
|
10
14
|
* @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
|
|
11
15
|
* @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
|
|
12
16
|
* @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
|
|
@@ -14,6 +18,7 @@ var mediaContent = require('../basics/mediaContent.cjs');
|
|
|
14
18
|
*/
|
|
15
19
|
|
|
16
20
|
/**
|
|
21
|
+
* The loop configuration modes.
|
|
17
22
|
* @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
|
|
18
23
|
*/
|
|
19
24
|
|
|
@@ -160,6 +165,13 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
160
165
|
);
|
|
161
166
|
}
|
|
162
167
|
|
|
168
|
+
/** @type {boolean} */
|
|
169
|
+
#destroyed = false;
|
|
170
|
+
|
|
171
|
+
get destroyed() {
|
|
172
|
+
return this.#destroyed;
|
|
173
|
+
}
|
|
174
|
+
|
|
163
175
|
/** @type {Map<string, BaseMediaAdapter>} */
|
|
164
176
|
#adapters = new Map();
|
|
165
177
|
|
|
@@ -289,6 +301,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
289
301
|
|
|
290
302
|
/** @returns {MediaContent[]} A shallow copy of the current playlist. */
|
|
291
303
|
get playlist() {
|
|
304
|
+
checkDestroy(this.#destroyed);
|
|
292
305
|
return [...this.#playlist];
|
|
293
306
|
}
|
|
294
307
|
|
|
@@ -297,6 +310,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
297
310
|
* @throws {TypeError} If the value is not an array.
|
|
298
311
|
*/
|
|
299
312
|
set playlist(value) {
|
|
313
|
+
checkDestroy(this.#destroyed);
|
|
300
314
|
if (!Array.isArray(value)) {
|
|
301
315
|
throw new TypeError('Playlist must be an array of MediaContent objects.');
|
|
302
316
|
}
|
|
@@ -343,6 +357,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
343
357
|
|
|
344
358
|
/** @returns {number} The current active index in the playlist. */
|
|
345
359
|
get currentIndex() {
|
|
360
|
+
checkDestroy(this.#destroyed);
|
|
346
361
|
return this.#currentIndex;
|
|
347
362
|
}
|
|
348
363
|
|
|
@@ -352,6 +367,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
352
367
|
* @throws {RangeError} If the index is out of the playlist bounds (unless -1 for empty).
|
|
353
368
|
*/
|
|
354
369
|
set currentIndex(value) {
|
|
370
|
+
checkDestroy(this.#destroyed);
|
|
355
371
|
if (typeof value !== 'number') {
|
|
356
372
|
throw new TypeError('Current index must be a number.');
|
|
357
373
|
}
|
|
@@ -390,6 +406,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
390
406
|
|
|
391
407
|
/** @returns {LoopModeType} The current loop configuration. */
|
|
392
408
|
get loopMode() {
|
|
409
|
+
checkDestroy(this.#destroyed);
|
|
393
410
|
return this.#loopMode;
|
|
394
411
|
}
|
|
395
412
|
|
|
@@ -398,6 +415,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
398
415
|
* @throws {TypeError} If the value is not a valid LoopModeType.
|
|
399
416
|
*/
|
|
400
417
|
set loopMode(value) {
|
|
418
|
+
checkDestroy(this.#destroyed);
|
|
401
419
|
const validModes = ['NONE', 'TRACK', 'PLAYLIST'];
|
|
402
420
|
if (!validModes.includes(value)) {
|
|
403
421
|
throw new TypeError(`Loop mode must be one of: ${validModes.join(', ')}.`);
|
|
@@ -408,6 +426,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
408
426
|
|
|
409
427
|
/** @returns {boolean} The current random mode status. */
|
|
410
428
|
get isRandom() {
|
|
429
|
+
checkDestroy(this.#destroyed);
|
|
411
430
|
return this.#isRandom;
|
|
412
431
|
}
|
|
413
432
|
|
|
@@ -416,6 +435,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
416
435
|
* @throws {TypeError} If the value is not a boolean.
|
|
417
436
|
*/
|
|
418
437
|
set isRandom(value) {
|
|
438
|
+
checkDestroy(this.#destroyed);
|
|
419
439
|
if (typeof value !== 'boolean') {
|
|
420
440
|
throw new TypeError('Random mode state must be a boolean.');
|
|
421
441
|
}
|
|
@@ -425,11 +445,13 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
425
445
|
|
|
426
446
|
/** @returns {boolean} True if media is actively playing. */
|
|
427
447
|
get isPlaying() {
|
|
448
|
+
checkDestroy(this.#destroyed);
|
|
428
449
|
return this.#isPlaying;
|
|
429
450
|
}
|
|
430
451
|
|
|
431
452
|
/** @returns {number} The current volume level (0.0 to 1.0). */
|
|
432
453
|
get volume() {
|
|
454
|
+
checkDestroy(this.#destroyed);
|
|
433
455
|
return this.#volume;
|
|
434
456
|
}
|
|
435
457
|
|
|
@@ -439,6 +461,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
439
461
|
* @throws {RangeError} If the value is outside the 0.0 to 1.0 range.
|
|
440
462
|
*/
|
|
441
463
|
set volume(value) {
|
|
464
|
+
checkDestroy(this.#destroyed);
|
|
442
465
|
if (typeof value !== 'number') throw new TypeError('Volume must be a number.');
|
|
443
466
|
if (value < 0 || value > 1)
|
|
444
467
|
throw new RangeError('Volume must be tightly constrained between 0.0 and 1.0.');
|
|
@@ -460,6 +483,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
460
483
|
|
|
461
484
|
/** @returns {boolean} Whether the volume cache is currently enabled. */
|
|
462
485
|
get persistVolume() {
|
|
486
|
+
checkDestroy(this.#destroyed);
|
|
463
487
|
return this.#persistVolume;
|
|
464
488
|
}
|
|
465
489
|
|
|
@@ -468,6 +492,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
468
492
|
* @throws {TypeError} If the value is not a boolean.
|
|
469
493
|
*/
|
|
470
494
|
set persistVolume(value) {
|
|
495
|
+
checkDestroy(this.#destroyed);
|
|
471
496
|
if (typeof value !== 'boolean') {
|
|
472
497
|
throw new TypeError('Persist volume parameter must be a boolean.');
|
|
473
498
|
}
|
|
@@ -479,6 +504,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
479
504
|
|
|
480
505
|
/** @returns {string} The localStorage key used for volume caching. */
|
|
481
506
|
get volumeStorageKey() {
|
|
507
|
+
checkDestroy(this.#destroyed);
|
|
482
508
|
return this.#volumeStorageKey;
|
|
483
509
|
}
|
|
484
510
|
|
|
@@ -487,6 +513,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
487
513
|
* @throws {TypeError} If the value is not a string or is empty.
|
|
488
514
|
*/
|
|
489
515
|
set volumeStorageKey(value) {
|
|
516
|
+
checkDestroy(this.#destroyed);
|
|
490
517
|
if (typeof value !== 'string') {
|
|
491
518
|
throw new TypeError('Volume storage key must be a string.');
|
|
492
519
|
}
|
|
@@ -519,6 +546,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
519
546
|
* @throws {TypeError} If id is not a string or adapter is invalid.
|
|
520
547
|
*/
|
|
521
548
|
registerAdapter(id, adapter) {
|
|
549
|
+
checkDestroy(this.#destroyed);
|
|
522
550
|
if (typeof id !== 'string') {
|
|
523
551
|
throw new TypeError('Adapter ID must be a string.');
|
|
524
552
|
}
|
|
@@ -556,6 +584,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
556
584
|
* @throws {TypeError} If content is invalid or missing required base properties.
|
|
557
585
|
*/
|
|
558
586
|
addTrack(content) {
|
|
587
|
+
checkDestroy(this.#destroyed);
|
|
559
588
|
if (!content || typeof content !== 'object' || typeof content.url !== 'string')
|
|
560
589
|
throw new TypeError('Track content must be a valid MediaContent object containing a URL.');
|
|
561
590
|
|
|
@@ -579,6 +608,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
579
608
|
* @throws {TypeError} If the index is not a number.
|
|
580
609
|
*/
|
|
581
610
|
existsTrack(index) {
|
|
611
|
+
checkDestroy(this.#destroyed);
|
|
582
612
|
if (typeof index !== 'number') {
|
|
583
613
|
throw new TypeError('Index must be a number.');
|
|
584
614
|
}
|
|
@@ -593,6 +623,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
593
623
|
* @throws {RangeError} If the index is out of bounds.
|
|
594
624
|
*/
|
|
595
625
|
getTrack(index) {
|
|
626
|
+
checkDestroy(this.#destroyed);
|
|
596
627
|
if (typeof index !== 'number') {
|
|
597
628
|
throw new TypeError('Index must be a number.');
|
|
598
629
|
}
|
|
@@ -610,6 +641,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
610
641
|
* @throws {RangeError} If the index is out of bounds.
|
|
611
642
|
*/
|
|
612
643
|
async removeTrack(index) {
|
|
644
|
+
checkDestroy(this.#destroyed);
|
|
613
645
|
if (typeof index !== 'number') {
|
|
614
646
|
throw new TypeError('Index must be a number.');
|
|
615
647
|
}
|
|
@@ -643,11 +675,12 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
643
675
|
|
|
644
676
|
/**
|
|
645
677
|
* Searches the playlist for tracks matching a string query or a custom evaluation function.
|
|
646
|
-
* @param {string |
|
|
678
|
+
* @param {string | ((content: MediaContent) => boolean)} query - The search string (checked against title, artist, album) or a callback returning a boolean.
|
|
647
679
|
* @returns {SearchResult[]} An array containing the matched tracks and their corresponding indices.
|
|
648
680
|
* @throws {TypeError} If the query is neither a string nor a function.
|
|
649
681
|
*/
|
|
650
682
|
searchTrack(query) {
|
|
683
|
+
checkDestroy(this.#destroyed);
|
|
651
684
|
if (typeof query !== 'string' && typeof query !== 'function') {
|
|
652
685
|
throw new TypeError('Search query must be a string or a boolean evaluation function.');
|
|
653
686
|
}
|
|
@@ -681,6 +714,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
681
714
|
* Clears the entire playlist and stops playback.
|
|
682
715
|
*/
|
|
683
716
|
async clearPlaylist() {
|
|
717
|
+
checkDestroy(this.#destroyed);
|
|
684
718
|
await this.stop();
|
|
685
719
|
this.#playlist = [];
|
|
686
720
|
this.#currentIndex = -1;
|
|
@@ -697,6 +731,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
697
731
|
* @returns {Promise<void>}
|
|
698
732
|
*/
|
|
699
733
|
async play() {
|
|
734
|
+
checkDestroy(this.#destroyed);
|
|
700
735
|
const adapter = this.#getActiveAdapter();
|
|
701
736
|
if (!adapter) return;
|
|
702
737
|
|
|
@@ -712,6 +747,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
712
747
|
* @returns {Promise<void>}
|
|
713
748
|
*/
|
|
714
749
|
async pause() {
|
|
750
|
+
checkDestroy(this.#destroyed);
|
|
715
751
|
const adapter = this.#getActiveAdapter();
|
|
716
752
|
if (!adapter) return;
|
|
717
753
|
|
|
@@ -725,6 +761,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
725
761
|
* @returns {Promise<void>}
|
|
726
762
|
*/
|
|
727
763
|
async stop() {
|
|
764
|
+
checkDestroy(this.#destroyed);
|
|
728
765
|
const adapter = this.#getActiveAdapter();
|
|
729
766
|
if (!adapter) return;
|
|
730
767
|
|
|
@@ -738,6 +775,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
738
775
|
* @returns {Promise<void>}
|
|
739
776
|
*/
|
|
740
777
|
async next() {
|
|
778
|
+
checkDestroy(this.#destroyed);
|
|
741
779
|
if (this.#playlist.length === 0) return;
|
|
742
780
|
|
|
743
781
|
await this.stop();
|
|
@@ -772,6 +810,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
772
810
|
* @returns {Promise<void>}
|
|
773
811
|
*/
|
|
774
812
|
async prev() {
|
|
813
|
+
checkDestroy(this.#destroyed);
|
|
775
814
|
if (this.#playlist.length === 0) return;
|
|
776
815
|
|
|
777
816
|
await this.stop();
|
|
@@ -803,6 +842,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
803
842
|
* @returns {Promise<void>}
|
|
804
843
|
*/
|
|
805
844
|
async seek(timeMs) {
|
|
845
|
+
checkDestroy(this.#destroyed);
|
|
806
846
|
if (typeof timeMs !== 'number') {
|
|
807
847
|
throw new TypeError('Seek time must be a number in milliseconds.');
|
|
808
848
|
}
|
|
@@ -824,6 +864,7 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
824
864
|
* @returns {Promise<void>}
|
|
825
865
|
*/
|
|
826
866
|
async step(stepMs) {
|
|
867
|
+
checkDestroy(this.#destroyed);
|
|
827
868
|
if (typeof stepMs !== 'number') {
|
|
828
869
|
throw new TypeError('Step amount must be a number in milliseconds.');
|
|
829
870
|
}
|
|
@@ -839,6 +880,39 @@ class TinyMediaPlayer extends events.EventEmitter {
|
|
|
839
880
|
|
|
840
881
|
await this.seek(targetTime);
|
|
841
882
|
}
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Safely destroys the TinyMediaPlayer instance.
|
|
886
|
+
* This method stops active playback, clears the internal playlist,
|
|
887
|
+
* removes all registered media adapters, and detaches all event listeners
|
|
888
|
+
* to ensure proper garbage collection and prevent memory leaks.
|
|
889
|
+
*
|
|
890
|
+
* @returns {Promise<void>} A promise that resolves when the destruction sequence is complete.
|
|
891
|
+
*/
|
|
892
|
+
async destroy() {
|
|
893
|
+
if (this.#destroyed) return;
|
|
894
|
+
|
|
895
|
+
// 1. Stop current playback if active to halt media processes
|
|
896
|
+
try {
|
|
897
|
+
if (this.#isPlaying) {
|
|
898
|
+
await this.stop();
|
|
899
|
+
}
|
|
900
|
+
} catch (error) {
|
|
901
|
+
console.warn('[TinyMediaPlayer] Non-fatal error during playback termination:', error);
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
// 2. Clear internal state variables
|
|
905
|
+
this.#playlist = [];
|
|
906
|
+
this.#currentIndex = -1;
|
|
907
|
+
this.#isPlaying = false;
|
|
908
|
+
|
|
909
|
+
// 3. Clear all registered API adapters
|
|
910
|
+
this.#adapters.clear();
|
|
911
|
+
|
|
912
|
+
// 4. Remove all event listeners inherited from EventEmitter
|
|
913
|
+
this.removeAllListeners();
|
|
914
|
+
this.#destroyed = true;
|
|
915
|
+
}
|
|
842
916
|
}
|
|
843
917
|
|
|
844
918
|
module.exports = TinyMediaPlayer;
|
|
@@ -1,28 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
5
|
-
export type
|
|
6
|
-
export type
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
9
|
-
export type
|
|
10
|
-
|
|
11
|
-
* Configuration options for initializing the UniversalMediaPlayer.
|
|
12
|
-
*/
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
export type PictureDataType = import('../basics/mediaContent.mjs').PictureDataType;
|
|
3
|
+
export type MediaContent = import('../basics/mediaContent.mjs').MediaContent<PictureDataType>;
|
|
4
|
+
export type MediaContentBase = import('../basics/mediaContent.mjs').MediaContentBase;
|
|
5
|
+
export type MediaContentMetadata = import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>;
|
|
6
|
+
export type ParseMediaContentMetadata = import('../basics/mediaContent.mjs').ParseMediaContentMetadata;
|
|
7
|
+
export type LoadingMediaProgress = import('../basics/mediaContent.mjs').LoadingMediaProgress;
|
|
8
|
+
export type MediaLoadingErrorData = import('../basics/mediaContent.mjs').MediaLoadingErrorData;
|
|
9
|
+
export type UnknownArtistGetter = import('../basics/mediaContent.mjs').UnknownArtistGetter;
|
|
10
|
+
export type LoopModeType = 'NONE' | 'TRACK' | 'PLAYLIST';
|
|
13
11
|
export type TinyMediaPlayerOptions = {
|
|
14
12
|
/**
|
|
15
13
|
* - Whether to automatically save the volume in localStorage.
|
|
16
14
|
*/
|
|
17
|
-
persistVolume?: boolean
|
|
15
|
+
persistVolume?: boolean;
|
|
18
16
|
/**
|
|
19
17
|
* - The specific key name used for localStorage cache.
|
|
20
18
|
*/
|
|
21
|
-
volumeStorageKey?: string
|
|
19
|
+
volumeStorageKey?: string;
|
|
22
20
|
};
|
|
23
21
|
/**
|
|
24
|
-
*
|
|
22
|
+
* @typedef {import('../basics/mediaContent.mjs').PictureDataType} PictureDataType
|
|
23
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaContent<PictureDataType>} MediaContent
|
|
24
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
|
|
25
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>} MediaContentMetadata
|
|
26
|
+
* @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
|
|
27
|
+
* @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
|
|
28
|
+
* @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
|
|
29
|
+
* @typedef {import('../basics/mediaContent.mjs').UnknownArtistGetter} UnknownArtistGetter
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* The loop configuration modes.
|
|
33
|
+
* @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Configuration options for initializing the UniversalMediaPlayer.
|
|
37
|
+
* @typedef {Object} TinyMediaPlayerOptions
|
|
38
|
+
* @property {boolean} [persistVolume=false] - Whether to automatically save the volume in localStorage.
|
|
39
|
+
* @property {string} [volumeStorageKey='universal_media_player_volume'] - The specific key name used for localStorage cache.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* Interface definition for a Media Provider Adapter.
|
|
43
|
+
* All specific API wrappers must extend and implement this class.
|
|
44
|
+
* @abstract
|
|
25
45
|
*/
|
|
46
|
+
declare class BaseMediaAdapter {
|
|
47
|
+
constructor();
|
|
48
|
+
/**
|
|
49
|
+
* Determines if this adapter can play the provided content.
|
|
50
|
+
* @param {MediaContent} content - The media content to evaluate.
|
|
51
|
+
* @returns {boolean} True if the adapter can handle the content, false otherwise.
|
|
52
|
+
*/
|
|
53
|
+
canHandle(content: MediaContent): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Starts or resumes playback of the provided content.
|
|
56
|
+
* @param {MediaContent} content - The media content to play.
|
|
57
|
+
* @returns {Promise<void>}
|
|
58
|
+
*/
|
|
59
|
+
play(content: MediaContent): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Pauses the current playback.
|
|
62
|
+
* @returns {Promise<void>}
|
|
63
|
+
*/
|
|
64
|
+
pause(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Stops the playback completely and resets the internal platform state.
|
|
67
|
+
* @returns {Promise<void>}
|
|
68
|
+
*/
|
|
69
|
+
stop(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Seeks to a specific time in the media timeline.
|
|
72
|
+
* @param {number} timeMs - The target time in milliseconds.
|
|
73
|
+
* @returns {Promise<void>}
|
|
74
|
+
*/
|
|
75
|
+
seek(timeMs: number): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Retrieves the current playback time from the underlying API.
|
|
78
|
+
* @returns {number} The current time in milliseconds.
|
|
79
|
+
*/
|
|
80
|
+
getCurrentTime(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Sets the playback volume for the underlying API.
|
|
83
|
+
* @param {number} volume - The volume level from 0.0 to 1.0.
|
|
84
|
+
* @returns {void}
|
|
85
|
+
*/
|
|
86
|
+
setVolume(volume: number): void;
|
|
87
|
+
}
|
|
26
88
|
export type SearchResult = {
|
|
27
89
|
/**
|
|
28
90
|
* - The matched media content.
|
|
@@ -42,24 +104,20 @@ export type SearchResult = {
|
|
|
42
104
|
/**
|
|
43
105
|
* A universal media player manager capable of orchestrating multiple API adapters.
|
|
44
106
|
*/
|
|
45
|
-
declare class TinyMediaPlayer extends EventEmitter
|
|
107
|
+
declare class TinyMediaPlayer extends EventEmitter {
|
|
108
|
+
#private;
|
|
46
109
|
static BaseMediaAdapter: typeof BaseMediaAdapter;
|
|
47
110
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
111
|
+
* Gets the current value used to represent unknown artists.
|
|
112
|
+
* @returns {UnknownArtistGetter}
|
|
50
113
|
*/
|
|
51
|
-
static
|
|
114
|
+
static get unknownArtist(): UnknownArtistGetter;
|
|
52
115
|
/**
|
|
53
116
|
* Sets the value used to represent unknown artists.
|
|
54
117
|
* @param {UnknownArtistGetter} value - A string or a function that returns a string.
|
|
55
118
|
* @throws {TypeError} If the value is neither a string nor a function.
|
|
56
119
|
*/
|
|
57
120
|
static set unknownArtist(value: UnknownArtistGetter);
|
|
58
|
-
/**
|
|
59
|
-
* Gets the current value used to represent unknown artists.
|
|
60
|
-
* @returns {UnknownArtistGetter}
|
|
61
|
-
*/
|
|
62
|
-
static get unknownArtist(): UnknownArtistGetter;
|
|
63
121
|
/**
|
|
64
122
|
* A Static Factory Method that prepares a MediaContent object by
|
|
65
123
|
* extracting metadata from an audio source.
|
|
@@ -81,9 +139,10 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
|
|
|
81
139
|
id?: string;
|
|
82
140
|
weight?: number;
|
|
83
141
|
}, parseFile?: ParseMediaContentMetadata, callbacks?: {
|
|
84
|
-
onProgress?: (
|
|
85
|
-
onError?: (
|
|
142
|
+
onProgress?: (progress: LoadingMediaProgress) => void;
|
|
143
|
+
onError?: (error: MediaLoadingErrorData) => void;
|
|
86
144
|
}): Promise<MediaContent>;
|
|
145
|
+
get destroyed(): boolean;
|
|
87
146
|
/**
|
|
88
147
|
* @param {TinyMediaPlayerOptions} [options={}] - Configuration parameters for the player.
|
|
89
148
|
*/
|
|
@@ -95,59 +154,59 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
|
|
|
95
154
|
* @private
|
|
96
155
|
*/
|
|
97
156
|
private _getWeightedRandomIndex;
|
|
157
|
+
/** @returns {MediaContent[]} A shallow copy of the current playlist. */
|
|
158
|
+
get playlist(): MediaContent[];
|
|
98
159
|
/**
|
|
99
160
|
* @param {MediaContent[]} value - The new playlist array.
|
|
100
161
|
* @throws {TypeError} If the value is not an array.
|
|
101
162
|
*/
|
|
102
163
|
set playlist(value: MediaContent[]);
|
|
103
|
-
/** @returns {
|
|
104
|
-
get
|
|
164
|
+
/** @returns {number} The current active index in the playlist. */
|
|
165
|
+
get currentIndex(): number;
|
|
105
166
|
/**
|
|
106
167
|
* @param {number} value - The index to set as current.
|
|
107
168
|
* @throws {TypeError} If the value is not a number.
|
|
108
169
|
* @throws {RangeError} If the index is out of the playlist bounds (unless -1 for empty).
|
|
109
170
|
*/
|
|
110
171
|
set currentIndex(value: number);
|
|
111
|
-
/** @returns {
|
|
112
|
-
get
|
|
172
|
+
/** @returns {LoopModeType} The current loop configuration. */
|
|
173
|
+
get loopMode(): LoopModeType;
|
|
113
174
|
/**
|
|
114
175
|
* @param {LoopModeType} value - The desired loop mode.
|
|
115
176
|
* @throws {TypeError} If the value is not a valid LoopModeType.
|
|
116
177
|
*/
|
|
117
178
|
set loopMode(value: LoopModeType);
|
|
118
|
-
/** @returns {
|
|
119
|
-
get
|
|
179
|
+
/** @returns {boolean} The current random mode status. */
|
|
180
|
+
get isRandom(): boolean;
|
|
120
181
|
/**
|
|
121
182
|
* @param {boolean} value - True to enable random playback, false otherwise.
|
|
122
183
|
* @throws {TypeError} If the value is not a boolean.
|
|
123
184
|
*/
|
|
124
185
|
set isRandom(value: boolean);
|
|
125
|
-
/** @returns {boolean} The current random mode status. */
|
|
126
|
-
get isRandom(): boolean;
|
|
127
186
|
/** @returns {boolean} True if media is actively playing. */
|
|
128
187
|
get isPlaying(): boolean;
|
|
188
|
+
/** @returns {number} The current volume level (0.0 to 1.0). */
|
|
189
|
+
get volume(): number;
|
|
129
190
|
/**
|
|
130
191
|
* @param {number} value - The volume level to set.
|
|
131
192
|
* @throws {TypeError} If the value is not a number.
|
|
132
193
|
* @throws {RangeError} If the value is outside the 0.0 to 1.0 range.
|
|
133
194
|
*/
|
|
134
195
|
set volume(value: number);
|
|
135
|
-
/** @returns {
|
|
136
|
-
get
|
|
196
|
+
/** @returns {boolean} Whether the volume cache is currently enabled. */
|
|
197
|
+
get persistVolume(): boolean;
|
|
137
198
|
/**
|
|
138
199
|
* @param {boolean} value - True to save volume dynamically to localStorage.
|
|
139
200
|
* @throws {TypeError} If the value is not a boolean.
|
|
140
201
|
*/
|
|
141
202
|
set persistVolume(value: boolean);
|
|
142
|
-
/** @returns {
|
|
143
|
-
get
|
|
203
|
+
/** @returns {string} The localStorage key used for volume caching. */
|
|
204
|
+
get volumeStorageKey(): string;
|
|
144
205
|
/**
|
|
145
206
|
* @param {string} value - The custom storage key string.
|
|
146
207
|
* @throws {TypeError} If the value is not a string or is empty.
|
|
147
208
|
*/
|
|
148
209
|
set volumeStorageKey(value: string);
|
|
149
|
-
/** @returns {string} The localStorage key used for volume caching. */
|
|
150
|
-
get volumeStorageKey(): string;
|
|
151
210
|
/**
|
|
152
211
|
* Registers a new media API adapter.
|
|
153
212
|
* @param {string} id - Unique identifier for the platform (e.g., 'youtube', 'spotify').
|
|
@@ -187,11 +246,11 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
|
|
|
187
246
|
removeTrack(index: number): Promise<void>;
|
|
188
247
|
/**
|
|
189
248
|
* Searches the playlist for tracks matching a string query or a custom evaluation function.
|
|
190
|
-
* @param {string |
|
|
249
|
+
* @param {string | ((content: MediaContent) => boolean)} query - The search string (checked against title, artist, album) or a callback returning a boolean.
|
|
191
250
|
* @returns {SearchResult[]} An array containing the matched tracks and their corresponding indices.
|
|
192
251
|
* @throws {TypeError} If the query is neither a string nor a function.
|
|
193
252
|
*/
|
|
194
|
-
searchTrack(query: string | ((
|
|
253
|
+
searchTrack(query: string | ((content: MediaContent) => boolean)): SearchResult[];
|
|
195
254
|
/**
|
|
196
255
|
* Clears the entire playlist and stops playback.
|
|
197
256
|
*/
|
|
@@ -236,71 +295,15 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
|
|
|
236
295
|
* @returns {Promise<void>}
|
|
237
296
|
*/
|
|
238
297
|
step(stepMs: number): Promise<void>;
|
|
239
|
-
#private;
|
|
240
|
-
}
|
|
241
|
-
import { EventEmitter } from 'events';
|
|
242
|
-
/**
|
|
243
|
-
* @typedef {import('../basics/mediaContent.mjs').MediaContent} MediaContent
|
|
244
|
-
* @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
|
|
245
|
-
* @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata} MediaContentMetadata
|
|
246
|
-
* @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
|
|
247
|
-
* @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
|
|
248
|
-
* @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
|
|
249
|
-
* @typedef {import('../basics/mediaContent.mjs').UnknownArtistGetter} UnknownArtistGetter
|
|
250
|
-
*/
|
|
251
|
-
/**
|
|
252
|
-
* @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
|
|
253
|
-
*/
|
|
254
|
-
/**
|
|
255
|
-
* Configuration options for initializing the UniversalMediaPlayer.
|
|
256
|
-
* @typedef {Object} TinyMediaPlayerOptions
|
|
257
|
-
* @property {boolean} [persistVolume=false] - Whether to automatically save the volume in localStorage.
|
|
258
|
-
* @property {string} [volumeStorageKey='universal_media_player_volume'] - The specific key name used for localStorage cache.
|
|
259
|
-
*/
|
|
260
|
-
/**
|
|
261
|
-
* Interface definition for a Media Provider Adapter.
|
|
262
|
-
* All specific API wrappers must extend and implement this class.
|
|
263
|
-
* @abstract
|
|
264
|
-
*/
|
|
265
|
-
declare class BaseMediaAdapter {
|
|
266
298
|
/**
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
* Starts or resumes playback of the provided content.
|
|
274
|
-
* @param {MediaContent} content - The media content to play.
|
|
275
|
-
* @returns {Promise<void>}
|
|
276
|
-
*/
|
|
277
|
-
play(content: MediaContent): Promise<void>;
|
|
278
|
-
/**
|
|
279
|
-
* Pauses the current playback.
|
|
280
|
-
* @returns {Promise<void>}
|
|
281
|
-
*/
|
|
282
|
-
pause(): Promise<void>;
|
|
283
|
-
/**
|
|
284
|
-
* Stops the playback completely and resets the internal platform state.
|
|
285
|
-
* @returns {Promise<void>}
|
|
286
|
-
*/
|
|
287
|
-
stop(): Promise<void>;
|
|
288
|
-
/**
|
|
289
|
-
* Seeks to a specific time in the media timeline.
|
|
290
|
-
* @param {number} timeMs - The target time in milliseconds.
|
|
291
|
-
* @returns {Promise<void>}
|
|
292
|
-
*/
|
|
293
|
-
seek(timeMs: number): Promise<void>;
|
|
294
|
-
/**
|
|
295
|
-
* Retrieves the current playback time from the underlying API.
|
|
296
|
-
* @returns {number} The current time in milliseconds.
|
|
297
|
-
*/
|
|
298
|
-
getCurrentTime(): number;
|
|
299
|
-
/**
|
|
300
|
-
* Sets the playback volume for the underlying API.
|
|
301
|
-
* @param {number} volume - The volume level from 0.0 to 1.0.
|
|
302
|
-
* @returns {void}
|
|
299
|
+
* Safely destroys the TinyMediaPlayer instance.
|
|
300
|
+
* This method stops active playback, clears the internal playlist,
|
|
301
|
+
* removes all registered media adapters, and detaches all event listeners
|
|
302
|
+
* to ensure proper garbage collection and prevent memory leaks.
|
|
303
|
+
*
|
|
304
|
+
* @returns {Promise<void>} A promise that resolves when the destruction sequence is complete.
|
|
303
305
|
*/
|
|
304
|
-
|
|
306
|
+
destroy(): Promise<void>;
|
|
305
307
|
}
|
|
308
|
+
export default TinyMediaPlayer;
|
|
306
309
|
//# sourceMappingURL=TinyMediaPlayer.d.mts.map
|