-
Couldn't load subscription status.
- Fork 18
Open
@zhangzih4n
Description
Using local fonts in Compose Multiplatform on WasmJs requires Permissions API, Local Font Access API and Blob.arrayBuffer()
abstract external class FontData : JsAny { val family: String val fullName: String val postscriptName: String val style: String fun blob(): Promise<Blob> } fun Window.queryLocalFontsOrNull(): Promise<JsArray<FontData>>? { return if (supportedLocalFont().toBoolean()) queryLocalFonts() else null } fun Window.queryLocalFonts(): Promise<JsArray<FontData>> { return queryLocalFonts(this) } private fun supportedLocalFont(): JsBoolean = js("\"queryLocalFonts\" in window") @Suppress("UNUSED_PARAMETER") private fun queryLocalFonts(windowArg: Window): Promise<JsArray<FontData>> = js("windowArg.queryLocalFonts()")
abstract external class Permissions : JsAny { fun query(permissionDescriptor: JsAny): Promise<PermissionStatus> } abstract external class PermissionStatus : JsAny { val name: String val state: String } val Navigator.permissions: Permissions get() = permissions(this) fun Permissions.query(name: String): Promise<PermissionStatus> = query(permissionDescriptor(name)) @Suppress("UNUSED_PARAMETER") private fun permissions(navigatorArg: Navigator): Permissions = js("navigatorArg.permissions") @Suppress("UNUSED_PARAMETER") private fun permissionDescriptor(name: String): JsAny = js("({ name: name })")
fun Blob.arrayBuffer(): Promise<ArrayBuffer> { return arrayBuffer(this) } @Suppress("UNUSED_PARAMETER") private fun arrayBuffer(blobArg: Blob): Promise<ArrayBuffer> = js("blobArg.arrayBuffer()")
And another commonly used API is missing: Picture-in-Picture API
abstract external class PictureInPictureWindow : JsAny { val height: Int val width: Int var onresize: ((Event) -> Unit)? } fun HTMLVideoElement.requestPictureInPicture(): Promise<PictureInPictureWindow> = requestPictureInPicture(this) fun Document.exitPictureInPicture(): Promise<Nothing?> = exitPictureInPicture(this) @Suppress("UNUSED_PARAMETER") private fun requestPictureInPicture(videoArg: HTMLVideoElement): Promise<PictureInPictureWindow> = js("videoArg.requestPictureInPicture()") @Suppress("UNUSED_PARAMETER") private fun exitPictureInPicture(documentArg: Document): Promise<Nothing?> = js("documentArg.exitPictureInPicture()")
Metadata
Metadata
Assignees
Labels
No labels