-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathnavigator-clipboard.ts
More file actions
33 lines (29 loc) · 1016 Bytes
/
navigator-clipboard.ts
File metadata and controls
33 lines (29 loc) · 1016 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
export async function clipboardWrite(data: ClipboardItems) {
if (data.length === 0) return
const item = data[0]
const blob = await item.getType(item.types.includes('text/plain') ? 'text/plain' : item.types[0])
return navigator.clipboard.writeText(typeof blob == 'string' ? blob : await blob.text())
}
export async function clipboardRead() {
const str = navigator.clipboard.readText()
return [new ClipboardItem({'text/plain': str})]
}
export function isSupported(): boolean {
return (
'clipboard' in navigator &&
typeof navigator.clipboard.read === 'function' &&
typeof navigator.clipboard.write === 'function'
)
}
export function isPolyfilled(): boolean {
return (
'clipboard' in navigator &&
(navigator.clipboard.write === clipboardWrite || navigator.clipboard.read === clipboardRead)
)
}
export function apply(): void {
if ('clipboard' in navigator && !isSupported()) {
navigator.clipboard.write = clipboardWrite
navigator.clipboard.read = clipboardRead
}
}