pithos
Version:
Advanced JavaScript/TypeScript superset providing performance, gestures, animations, and DOM utilities
75 lines • 2.59 kB
JavaScript
// -- 2020+ -----------------------------------------------------------------------------
export function hasWebCodecs() {
return "VideoEncoder" in window && "VideoDecoder" in window;
}
export function hasWebGPU() {
return "gpu" in navigator;
}
export function hasWebTransport() {
return "WebTransport" in window;
}
export function hasWebStreams() {
return "ReadableStream" in window && "WritableStream" in window;
}
export function hasWebLocks() {
return "locks" in navigator;
}
// --- Style deploying ------------------------------------------------------------------
export function hasViewTransitions() {
return "startViewTransition" in document;
}
export function hasPopoverAPI() {
return Object.prototype.hasOwnProperty.call(HTMLElement.prototype, "popover");
}
export function hasFileSystemAccess() {
return "showOpenFilePicker" in window;
}
export function hasWebAuthn() {
return "credentials" in navigator && "create" in navigator.credentials;
}
export function hasSharedArrayBuffer() {
return typeof SharedArrayBuffer !== "undefined";
}
// -- CSS -------------------------------------------------------------------------------
export function hasBackdropFilter() {
return CSS.supports("backdrop-filter", "blur(10px)");
}
export function hasScrollSnapType() {
return CSS.supports("scroll-snap-type", "x mandatory");
}
export function hasOverscrollBehavior() {
return CSS.supports("overscroll-behavior", "contain");
}
export function hasContainerQueries() {
return CSS.supports("container-type", "inline-size");
}
export function hasCSSNesting() {
return CSS.supports("selector(&)", "& .test");
}
export function hasViewportUnits() {
return CSS.supports("height", "100dvh");
}
export function hasCSSZoom() {
return typeof CSS !== "undefined" && CSS.supports("zoom", "1");
}
// -- Javascript common failures API ---------------------------------------------------
export function hasClipboardAPI() {
return "clipboard" in navigator && "writeText" in navigator.clipboard;
}
export function hasNotifications() {
return "Notification" in window && Notification.permission !== "denied";
}
export function hasScreenWakeLock() {
return "wakeLock" in navigator;
}
export function hasWebShare() {
return "share" in navigator;
}
// -- Permission / Security -------------------------------------------------------------
export function canUseLocalFonts() {
return "queryLocalFonts" in window;
}
export function hasWebUSB() {
return "usb" in navigator;
}
//# sourceMappingURL=browser-support.js.map