Skip to content

Repository files navigation

@js-toolkit/web-utils

npm packagelicense

TypeScript utilities for the browser: media, WebSocket, WebRTC, fullscreen, platform detection, responsive helpers, events, DOM, service workers, and more.

Install

yarn add @js-toolkit/web-utils
# or
npm install @js-toolkit/web-utils

Import

Use subpath imports for tree-shaking:

import{FullscreenController}from'@js-toolkit/web-utils/FullscreenController';import{getRandomID}from'@js-toolkit/web-utils/getRandomID';import{isMobile}from'@js-toolkit/web-utils/platform/isMobile';

API Overview

Media and Video

ModuleDescription
media/TextTracksControllerHTML5 video text tracks management
media/PipControllerPicture-in-Picture controller
media/MediaStreamControllerMediaStream attach/detach
media/CapabilitiesMedia type support detection
media/timeRangesTimeRanges utilities
media/resetMediaReset media element and clear decoder buffer
media/getMediaSourceGet MediaSource or ManagedMediaSource
media/getSourceBufferGet SourceBuffer or ManagedSourceBuffer
media/parseCueTextWebVTT cue text parser

WebSocket and WebRTC

ModuleDescription
ws/WSControllerWebSocket controller with auto-reconnect
webrtc/PeerConnectionRTCPeerConnection wrapper
webrtc/sdputilsSDP manipulation utilities

Fullscreen

ModuleDescription
FullscreenControllerFullscreen API controller with fallback
fullscreenCross-browser fullscreen utilities
fullscreenUtilsPseudo-fullscreen helpers

Platform Detection

ModuleDescription
platform/getPlatformInfoBrowser/platform detection (ua-parser-js)
platform/isSafari, isChromeBrowser detection
platform/isIOS, isAndroid, isMacOSOS detection
platform/isMobileMobile device detection
platform/isTouchSupportedTouch support detection
platform/isMSESupportedMedia Source Extensions support
platform/isEMESupportedEncrypted Media Extensions support
platform/isAirPlayAvailableAirPlay availability
platform/SemverSemantic version parser

Responsive

ModuleDescription
responsive/MediaQueryListenerMedia query change listener
responsive/MediaQueryStatic media query utilities
responsive/ViewSizeViewport size enum and helpers

Events

ModuleDescription
EventEmitterListenerUnified listener for DOM/EventEmitter/EventTarget
EventListenersMulti-target event listener manager
getEventAwaiterPromise-based event waiting

DOM

ModuleDescription
onDOMReadyExecute callback when DOM is ready
onPageReadyExecute callback when page is loaded
getInnerRectElement inner dimensions
toLocalPointConvert coordinates to local element space
loadScriptDynamic script loading with deduplication
copyToClipboardCopy text to clipboard

Files and Blobs

ModuleDescription
saveFileAsTrigger file download
loadImageLoad image with caching
blobToDataUrl, dataUrlToBlobBlob/DataURL conversions
toBase64, fromBase64Unicode-safe base64 encoding
takeScreenshotCapture screenshot from CanvasImageSource

Animation

ModuleDescription
createLoopInterval-based loop with RAF throttling
createRafLoopRequestAnimationFrame loop

Metrics

ModuleDescription
metrics/ga/*Google Analytics helpers
metrics/yandex/*Yandex Metrica helpers

Other

ModuleDescription
getRandomIDRandom ID via crypto API
getBrowserLanguageBrowser language detection
WakeLockControllerScreen wake lock
serviceWorker/ServiceWorkerInstallerService worker registration
iframe/*Iframe parent-child communication
viewableTrackerElement visibility tracking

Usage Examples

FullscreenController

import{FullscreenController}from'@js-toolkit/web-utils/FullscreenController';constcontroller=newFullscreenController(document.getElementById('player')!);awaitcontroller.requestFullscreen();console.log(controller.isFullscreen);

Platform detection

import{isMobile}from'@js-toolkit/web-utils/platform/isMobile';import{isSafari}from'@js-toolkit/web-utils/platform/isSafari';if(isMobile()){// mobile-specific logic}if(isSafari()){// Safari workaround}

Event awaiter

import{getEventAwaiter}from'@js-toolkit/web-utils/getEventAwaiter';constvideo=document.querySelector('video')!;awaitgetEventAwaiter(video,'canplay').wait();video.play();

Dynamic script loading

import{loadScript}from'@js-toolkit/web-utils/loadScript';awaitloadScript('https://cdn.example.com/sdk.js');

Repository

https://github.com/js-toolkit/web-utils

Releases

Packages

Used by

Contributors

Languages