@flighthq/clipboard 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee
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/README.md +2 -2
- package/dist/clipboard.d.ts +24 -24
- package/dist/clipboard.d.ts.map +1 -1
- package/dist/clipboard.js +48 -48
- package/dist/clipboard.js.map +1 -1
- package/package.json +4 -4
- package/src/clipboard.test.ts +55 -53
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/clipboard`. The `@fl
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/clipboard@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/clipboard@0.5.1-next.1201.9b49dee](https://github.com/flighthq/flight/tree/9b49dee3f22f6b2838c3d237edcc77bca65734f2/packages/clipboard)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/9b49dee3f22f6b2838c3d237edcc77bca65734f2/LICENSE.md)
|
package/dist/clipboard.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import type { ClipboardBookmark, ClipboardWatch, ClipboardWriteItem, EntityConstruction,
|
|
2
|
-
export declare function attachClipboardWatch(
|
|
3
|
-
export declare function clearClipboard(
|
|
1
|
+
import type { ClipboardBookmark, ClipboardWatch, ClipboardWriteItem, EntityConstruction, HostClipboardBookmarkProvider, HostClipboardChangeProvider, HostClipboardFormatsProvider, HostClipboardImageProvider, HostClipboardTextProvider } from '@flighthq/types/contract';
|
|
2
|
+
export declare function attachClipboardWatch(hostClipboardChange: Readonly<Required<Pick<HostClipboardChangeProvider, 'subscribe' | 'unsubscribe'>>>, watch: ClipboardWatch): void;
|
|
3
|
+
export declare function clearClipboard(hostClipboardText: Readonly<HostClipboardTextProvider>): Promise<boolean>;
|
|
4
4
|
export declare function createClipboardWatch(): ClipboardWatch;
|
|
5
5
|
export declare function detachClipboardWatch(watch: ClipboardWatch): void;
|
|
6
6
|
export declare function disposeClipboardWatch(watch: ClipboardWatch): void;
|
|
7
|
-
export declare function getClipboardFormats(
|
|
8
|
-
export declare function hasClipboardBookmark(
|
|
9
|
-
export declare function hasClipboardFormat(
|
|
10
|
-
export declare function hasClipboardHtml(
|
|
11
|
-
export declare function hasClipboardImage(
|
|
12
|
-
export declare function hasClipboardRTF(
|
|
13
|
-
export declare function hasClipboardText(
|
|
7
|
+
export declare function getClipboardFormats(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>): Promise<readonly string[]>;
|
|
8
|
+
export declare function hasClipboardBookmark(hostClipboardBookmark: Readonly<HostClipboardBookmarkProvider>): Promise<boolean>;
|
|
9
|
+
export declare function hasClipboardFormat(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, format: string): Promise<boolean>;
|
|
10
|
+
export declare function hasClipboardHtml(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>): Promise<boolean>;
|
|
11
|
+
export declare function hasClipboardImage(hostClipboardImage: Readonly<HostClipboardImageProvider>): Promise<boolean>;
|
|
12
|
+
export declare function hasClipboardRTF(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>): Promise<boolean>;
|
|
13
|
+
export declare function hasClipboardText(hostClipboardText: Readonly<HostClipboardTextProvider>): Promise<boolean>;
|
|
14
14
|
export declare function initializeClipboardWatch(out: EntityConstruction<ClipboardWatch>): void;
|
|
15
|
-
export declare function readClipboard(
|
|
16
|
-
export declare function readClipboardBookmark(
|
|
17
|
-
export declare function readClipboardFormat(
|
|
18
|
-
export declare function readClipboardHtml(
|
|
19
|
-
export declare function readClipboardImage(
|
|
20
|
-
export declare function readClipboardRTF(
|
|
21
|
-
export declare function readClipboardText(
|
|
22
|
-
export declare function writeClipboard(
|
|
23
|
-
export declare function writeClipboardBookmark(
|
|
24
|
-
export declare function writeClipboardFormat(
|
|
25
|
-
export declare function writeClipboardHtml(
|
|
26
|
-
export declare function writeClipboardImage(
|
|
27
|
-
export declare function writeClipboardRTF(
|
|
28
|
-
export declare function writeClipboardText(
|
|
15
|
+
export declare function readClipboard(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, formats: readonly string[]): Promise<Readonly<Record<string, string>>>;
|
|
16
|
+
export declare function readClipboardBookmark(hostClipboardBookmark: Readonly<HostClipboardBookmarkProvider>): Promise<ClipboardBookmark | null>;
|
|
17
|
+
export declare function readClipboardFormat(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, format: string): Promise<string>;
|
|
18
|
+
export declare function readClipboardHtml(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>): Promise<string>;
|
|
19
|
+
export declare function readClipboardImage(hostClipboardImage: Readonly<HostClipboardImageProvider>): Promise<string>;
|
|
20
|
+
export declare function readClipboardRTF(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>): Promise<string>;
|
|
21
|
+
export declare function readClipboardText(hostClipboardText: Readonly<HostClipboardTextProvider>): Promise<string>;
|
|
22
|
+
export declare function writeClipboard(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, items: readonly Readonly<ClipboardWriteItem>[]): Promise<boolean>;
|
|
23
|
+
export declare function writeClipboardBookmark(hostClipboardBookmark: Readonly<HostClipboardBookmarkProvider>, title: string, url: string): Promise<boolean>;
|
|
24
|
+
export declare function writeClipboardFormat(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, format: string, data: string): Promise<boolean>;
|
|
25
|
+
export declare function writeClipboardHtml(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, html: string): Promise<boolean>;
|
|
26
|
+
export declare function writeClipboardImage(hostClipboardImage: Readonly<HostClipboardImageProvider>, dataUrl: string): Promise<boolean>;
|
|
27
|
+
export declare function writeClipboardRTF(hostClipboardFormats: Readonly<HostClipboardFormatsProvider>, rtf: string): Promise<boolean>;
|
|
28
|
+
export declare function writeClipboardText(hostClipboardText: Readonly<HostClipboardTextProvider>, text: string): Promise<boolean>;
|
|
29
29
|
//# sourceMappingURL=clipboard.d.ts.map
|
package/dist/clipboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"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"}
|
package/dist/clipboard.js
CHANGED
|
@@ -3,16 +3,16 @@ import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
|
3
3
|
import { ClipboardFormatHtml, ClipboardFormatRtf } from '@flighthq/types/contract';
|
|
4
4
|
// Attaches watch to the explicitly supplied host's clipboard change subscription. Attaching the
|
|
5
5
|
// same watch again first releases its prior subscription, even when the new host is different.
|
|
6
|
-
export function attachClipboardWatch(
|
|
6
|
+
export function attachClipboardWatch(hostClipboardChange, watch) {
|
|
7
7
|
detachClipboardWatch(watch);
|
|
8
|
-
const change =
|
|
8
|
+
const change = hostClipboardChange;
|
|
9
9
|
const callback = () => emitSignal(watch.onChange);
|
|
10
10
|
change.subscribe(callback);
|
|
11
11
|
_watchSubscriptions.set(watch, { callback, change });
|
|
12
12
|
}
|
|
13
13
|
// Clears the system clipboard. Returns false when the host denies access. Sentinel, not throw.
|
|
14
|
-
export function clearClipboard(
|
|
15
|
-
return
|
|
14
|
+
export function clearClipboard(hostClipboardText) {
|
|
15
|
+
return hostClipboardText.clear();
|
|
16
16
|
}
|
|
17
17
|
// Allocates a ClipboardWatch event entity with an inert signal.
|
|
18
18
|
// Call attachClipboardWatch to start delivery; call disposeClipboardWatch when done.
|
|
@@ -29,99 +29,99 @@ export function detachClipboardWatch(watch) {
|
|
|
29
29
|
_watchSubscriptions.delete(watch);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
// Detaches watch's
|
|
32
|
+
// Detaches watch's provider subscription and releases it for garbage collection.
|
|
33
33
|
// The signal remains plain GC-managed memory afterward.
|
|
34
34
|
export function disposeClipboardWatch(watch) {
|
|
35
35
|
detachClipboardWatch(watch);
|
|
36
36
|
}
|
|
37
37
|
// Returns the list of MIME/format strings currently on the clipboard. [] sentinel on access denied.
|
|
38
|
-
export function getClipboardFormats(
|
|
39
|
-
return
|
|
38
|
+
export function getClipboardFormats(hostClipboardFormats) {
|
|
39
|
+
return hostClipboardFormats.getFormats();
|
|
40
40
|
}
|
|
41
41
|
// True when the clipboard currently holds a bookmark. Returns false when access is denied.
|
|
42
|
-
export async function hasClipboardBookmark(
|
|
43
|
-
return (await
|
|
42
|
+
export async function hasClipboardBookmark(hostClipboardBookmark) {
|
|
43
|
+
return (await hostClipboardBookmark.readBookmark()) !== null;
|
|
44
44
|
}
|
|
45
45
|
// True when the given MIME/format string is currently present on the clipboard.
|
|
46
|
-
export function hasClipboardFormat(
|
|
47
|
-
return
|
|
46
|
+
export function hasClipboardFormat(hostClipboardFormats, format) {
|
|
47
|
+
return hostClipboardFormats.hasFormat(format);
|
|
48
48
|
}
|
|
49
49
|
// True when the clipboard currently holds HTML content. Returns false when access is denied.
|
|
50
|
-
export function hasClipboardHtml(
|
|
51
|
-
return
|
|
50
|
+
export function hasClipboardHtml(hostClipboardFormats) {
|
|
51
|
+
return hostClipboardFormats.hasFormat(ClipboardFormatHtml);
|
|
52
52
|
}
|
|
53
53
|
// True when the clipboard currently holds an image. Returns false when access is denied.
|
|
54
|
-
export function hasClipboardImage(
|
|
55
|
-
return
|
|
54
|
+
export function hasClipboardImage(hostClipboardImage) {
|
|
55
|
+
return hostClipboardImage.hasImage();
|
|
56
56
|
}
|
|
57
57
|
// True when the clipboard currently holds RTF content. Returns false when access is denied.
|
|
58
|
-
export function hasClipboardRTF(
|
|
59
|
-
return
|
|
58
|
+
export function hasClipboardRTF(hostClipboardFormats) {
|
|
59
|
+
return hostClipboardFormats.hasFormat(ClipboardFormatRtf);
|
|
60
60
|
}
|
|
61
61
|
// True when the clipboard currently holds non-empty text. Returns false when access is denied.
|
|
62
|
-
export function hasClipboardText(
|
|
63
|
-
return
|
|
62
|
+
export function hasClipboardText(hostClipboardText) {
|
|
63
|
+
return hostClipboardText.hasText();
|
|
64
64
|
}
|
|
65
65
|
export function initializeClipboardWatch(out) {
|
|
66
66
|
out.onChange = createSignal();
|
|
67
67
|
}
|
|
68
68
|
// Reads multiple formats in one round-trip; missing formats are omitted from the result.
|
|
69
|
-
export function readClipboard(
|
|
70
|
-
return
|
|
69
|
+
export function readClipboard(hostClipboardFormats, formats) {
|
|
70
|
+
return hostClipboardFormats.readItems(formats);
|
|
71
71
|
}
|
|
72
72
|
// Reads a bookmark (title + URL) from the clipboard, or null when none is present or access is denied.
|
|
73
|
-
export function readClipboardBookmark(
|
|
74
|
-
return
|
|
73
|
+
export function readClipboardBookmark(hostClipboardBookmark) {
|
|
74
|
+
return hostClipboardBookmark.readBookmark();
|
|
75
75
|
}
|
|
76
76
|
// Reads an arbitrary MIME/format flavor as a string; returns '' when absent or access is denied.
|
|
77
|
-
export function readClipboardFormat(
|
|
78
|
-
return
|
|
77
|
+
export function readClipboardFormat(hostClipboardFormats, format) {
|
|
78
|
+
return hostClipboardFormats.readFormat(format);
|
|
79
79
|
}
|
|
80
80
|
// Reads HTML from the clipboard, or '' when none is present or access is denied.
|
|
81
|
-
export function readClipboardHtml(
|
|
82
|
-
return
|
|
81
|
+
export function readClipboardHtml(hostClipboardFormats) {
|
|
82
|
+
return hostClipboardFormats.readHtml();
|
|
83
83
|
}
|
|
84
84
|
// Reads an image from the clipboard as a data URL, or '' when none is present or access is denied.
|
|
85
|
-
export function readClipboardImage(
|
|
86
|
-
return
|
|
85
|
+
export function readClipboardImage(hostClipboardImage) {
|
|
86
|
+
return hostClipboardImage.readImage();
|
|
87
87
|
}
|
|
88
88
|
// Reads RTF markup from the clipboard, or '' when none is present or access is denied.
|
|
89
|
-
export function readClipboardRTF(
|
|
90
|
-
return
|
|
89
|
+
export function readClipboardRTF(hostClipboardFormats) {
|
|
90
|
+
return hostClipboardFormats.readRTF();
|
|
91
91
|
}
|
|
92
92
|
// Reads plain text from the clipboard, or '' when empty or access is denied.
|
|
93
|
-
export function readClipboardText(
|
|
94
|
-
return
|
|
93
|
+
export function readClipboardText(hostClipboardText) {
|
|
94
|
+
return hostClipboardText.readText();
|
|
95
95
|
}
|
|
96
96
|
// Writes multiple formats atomically so a paste target picks its best representation.
|
|
97
|
-
export function writeClipboard(
|
|
98
|
-
return
|
|
97
|
+
export function writeClipboard(hostClipboardFormats, items) {
|
|
98
|
+
return hostClipboardFormats.writeItems(items);
|
|
99
99
|
}
|
|
100
100
|
// Writes a bookmark (title + URL) to the clipboard. Returns false when the host denies access.
|
|
101
|
-
export function writeClipboardBookmark(
|
|
102
|
-
return
|
|
101
|
+
export function writeClipboardBookmark(hostClipboardBookmark, title, url) {
|
|
102
|
+
return hostClipboardBookmark.writeBookmark(title, url);
|
|
103
103
|
}
|
|
104
104
|
// Writes an arbitrary MIME/format flavor. Returns false when the host denies access.
|
|
105
|
-
export function writeClipboardFormat(
|
|
106
|
-
return
|
|
105
|
+
export function writeClipboardFormat(hostClipboardFormats, format, data) {
|
|
106
|
+
return hostClipboardFormats.writeFormat(format, data);
|
|
107
107
|
}
|
|
108
108
|
// Writes HTML to the clipboard. Returns false when the host denies access.
|
|
109
|
-
export function writeClipboardHtml(
|
|
110
|
-
return
|
|
109
|
+
export function writeClipboardHtml(hostClipboardFormats, html) {
|
|
110
|
+
return hostClipboardFormats.writeHtml(html);
|
|
111
111
|
}
|
|
112
112
|
// Writes an image (given as a data URL) to the clipboard. Returns false when the host denies access.
|
|
113
|
-
export function writeClipboardImage(
|
|
114
|
-
return
|
|
113
|
+
export function writeClipboardImage(hostClipboardImage, dataUrl) {
|
|
114
|
+
return hostClipboardImage.writeImage(dataUrl);
|
|
115
115
|
}
|
|
116
116
|
// Writes RTF markup to the clipboard. Returns false when the host denies access.
|
|
117
|
-
export function writeClipboardRTF(
|
|
118
|
-
return
|
|
117
|
+
export function writeClipboardRTF(hostClipboardFormats, rtf) {
|
|
118
|
+
return hostClipboardFormats.writeRTF(rtf);
|
|
119
119
|
}
|
|
120
120
|
// Writes plain text to the clipboard. Returns false when the host denies access.
|
|
121
|
-
export function writeClipboardText(
|
|
122
|
-
return
|
|
121
|
+
export function writeClipboardText(hostClipboardText, text) {
|
|
122
|
+
return hostClipboardText.writeText(text);
|
|
123
123
|
}
|
|
124
124
|
// Active watches are deliberate registry roots until detach/dispose; enumeration is unnecessary now
|
|
125
|
-
// that provider selection is explicit and subscriptions never rebind through
|
|
125
|
+
// that provider selection is explicit and subscriptions never rebind through a later provider choice.
|
|
126
126
|
const _watchSubscriptions = new Map();
|
|
127
127
|
//# sourceMappingURL=clipboard.js.map
|
package/dist/clipboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAYtE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,gGAAgG;AAChG,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/clipboard",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.1201.9b49dee",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/entity": "0.5.1-next.
|
|
42
|
-
"@flighthq/signals": "0.5.1-next.
|
|
43
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/entity": "0.5.1-next.1201.9b49dee",
|
|
42
|
+
"@flighthq/signals": "0.5.1-next.1201.9b49dee",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.1201.9b49dee"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/clipboard.test.ts
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import type {
|
|
3
3
|
ClipboardBookmark,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
HasClipboardBookmark,
|
|
10
|
-
HasClipboardChange,
|
|
11
|
-
HasClipboardFormats,
|
|
12
|
-
HasClipboardImage,
|
|
13
|
-
HasClipboardText,
|
|
4
|
+
HostClipboardBookmarkProvider,
|
|
5
|
+
HostClipboardChangeProvider,
|
|
6
|
+
HostClipboardFormatsProvider,
|
|
7
|
+
HostClipboardImageProvider,
|
|
8
|
+
HostClipboardTextProvider,
|
|
14
9
|
} from '@flighthq/types/contract';
|
|
15
10
|
import {
|
|
16
11
|
ClipboardFormatBookmark,
|
|
@@ -66,36 +61,41 @@ describe('clipboard', () => {
|
|
|
66
61
|
expect(EntityRuntimeKey in backend).toBe(true);
|
|
67
62
|
|
|
68
63
|
expect(
|
|
69
|
-
await writeClipboard(host, [
|
|
64
|
+
await writeClipboard(host.clipboard.formats, [
|
|
70
65
|
{ format: ClipboardFormatText, data: 'multi-text' },
|
|
71
66
|
{ format: ClipboardFormatHtml, data: '<b>multi</b>' },
|
|
72
67
|
]),
|
|
73
68
|
).toBe(true);
|
|
74
|
-
expect(await writeClipboardText(host, 'plain')).toBe(true);
|
|
75
|
-
expect(await writeClipboardHtml(host, '<b>html</b>')).toBe(true);
|
|
76
|
-
expect(await writeClipboardImage(host, 'data:image/png;base64,AAAA')).toBe(true);
|
|
77
|
-
expect(await writeClipboardRTF(host, '{\\rtf1 rich}')).toBe(true);
|
|
78
|
-
expect(await writeClipboardBookmark(host, 'Flight', 'https://example.com')).toBe(true);
|
|
79
|
-
expect(await writeClipboardFormat(host, 'application/x-flight', 'custom')).toBe(true);
|
|
80
|
-
|
|
81
|
-
expect(await readClipboardText(host)).toBe('plain');
|
|
82
|
-
expect(await readClipboardHtml(host)).toBe('<b>html</b>');
|
|
83
|
-
expect(await readClipboardImage(host)).toBe('data:image/png;base64,AAAA');
|
|
84
|
-
expect(await readClipboardRTF(host)).toBe('{\\rtf1 rich}');
|
|
85
|
-
expect(await readClipboardBookmark(host)).toEqual({
|
|
86
|
-
|
|
87
|
-
|
|
69
|
+
expect(await writeClipboardText(host.clipboard.text, 'plain')).toBe(true);
|
|
70
|
+
expect(await writeClipboardHtml(host.clipboard.formats, '<b>html</b>')).toBe(true);
|
|
71
|
+
expect(await writeClipboardImage(host.clipboard.image, 'data:image/png;base64,AAAA')).toBe(true);
|
|
72
|
+
expect(await writeClipboardRTF(host.clipboard.formats, '{\\rtf1 rich}')).toBe(true);
|
|
73
|
+
expect(await writeClipboardBookmark(host.clipboard.bookmark, 'Flight', 'https://example.com')).toBe(true);
|
|
74
|
+
expect(await writeClipboardFormat(host.clipboard.formats, 'application/x-flight', 'custom')).toBe(true);
|
|
75
|
+
|
|
76
|
+
expect(await readClipboardText(host.clipboard.text)).toBe('plain');
|
|
77
|
+
expect(await readClipboardHtml(host.clipboard.formats)).toBe('<b>html</b>');
|
|
78
|
+
expect(await readClipboardImage(host.clipboard.image)).toBe('data:image/png;base64,AAAA');
|
|
79
|
+
expect(await readClipboardRTF(host.clipboard.formats)).toBe('{\\rtf1 rich}');
|
|
80
|
+
expect(await readClipboardBookmark(host.clipboard.bookmark)).toEqual({
|
|
81
|
+
title: 'Flight',
|
|
82
|
+
url: 'https://example.com',
|
|
83
|
+
});
|
|
84
|
+
expect(await readClipboardFormat(host.clipboard.formats, 'application/x-flight')).toBe('custom');
|
|
85
|
+
expect(
|
|
86
|
+
await readClipboard(host.clipboard.formats, [ClipboardFormatText, 'application/x-flight', 'missing']),
|
|
87
|
+
).toEqual({
|
|
88
88
|
[ClipboardFormatText]: 'plain',
|
|
89
89
|
'application/x-flight': 'custom',
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
expect(await hasClipboardText(host)).toBe(true);
|
|
93
|
-
expect(await hasClipboardHtml(host)).toBe(true);
|
|
94
|
-
expect(await hasClipboardImage(host)).toBe(true);
|
|
95
|
-
expect(await hasClipboardRTF(host)).toBe(true);
|
|
96
|
-
expect(await hasClipboardBookmark(host)).toBe(true);
|
|
97
|
-
expect(await hasClipboardFormat(host, 'application/x-flight')).toBe(true);
|
|
98
|
-
expect(await getClipboardFormats(host)).toEqual(
|
|
92
|
+
expect(await hasClipboardText(host.clipboard.text)).toBe(true);
|
|
93
|
+
expect(await hasClipboardHtml(host.clipboard.formats)).toBe(true);
|
|
94
|
+
expect(await hasClipboardImage(host.clipboard.image)).toBe(true);
|
|
95
|
+
expect(await hasClipboardRTF(host.clipboard.formats)).toBe(true);
|
|
96
|
+
expect(await hasClipboardBookmark(host.clipboard.bookmark)).toBe(true);
|
|
97
|
+
expect(await hasClipboardFormat(host.clipboard.formats, 'application/x-flight')).toBe(true);
|
|
98
|
+
expect(await getClipboardFormats(host.clipboard.formats)).toEqual(
|
|
99
99
|
expect.arrayContaining([
|
|
100
100
|
ClipboardFormatText,
|
|
101
101
|
ClipboardFormatHtml,
|
|
@@ -106,20 +106,20 @@ describe('clipboard', () => {
|
|
|
106
106
|
]),
|
|
107
107
|
);
|
|
108
108
|
|
|
109
|
-
expect(await clearClipboard(host)).toBe(true);
|
|
110
|
-
expect(await readClipboardText(host)).toBe('');
|
|
111
|
-
expect(await getClipboardFormats(host)).toEqual([]);
|
|
109
|
+
expect(await clearClipboard(host.clipboard.text)).toBe(true);
|
|
110
|
+
expect(await readClipboardText(host.clipboard.text)).toBe('');
|
|
111
|
+
expect(await getClipboardFormats(host.clipboard.formats)).toEqual([]);
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
it('never consults another host when two clipboard providers coexist', async () => {
|
|
115
115
|
const first = hostFor(fakeBackend());
|
|
116
116
|
const second = hostFor(fakeBackend());
|
|
117
117
|
|
|
118
|
-
await writeClipboardText(first, 'first');
|
|
119
|
-
await writeClipboardText(second, 'second');
|
|
118
|
+
await writeClipboardText(first.clipboard.text, 'first');
|
|
119
|
+
await writeClipboardText(second.clipboard.text, 'second');
|
|
120
120
|
|
|
121
|
-
expect(await readClipboardText(first)).toBe('first');
|
|
122
|
-
expect(await readClipboardText(second)).toBe('second');
|
|
121
|
+
expect(await readClipboardText(first.clipboard.text)).toBe('first');
|
|
122
|
+
expect(await readClipboardText(second.clipboard.text)).toBe('second');
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
125
|
|
|
@@ -133,12 +133,12 @@ describe('ClipboardWatch', () => {
|
|
|
133
133
|
changes++;
|
|
134
134
|
};
|
|
135
135
|
|
|
136
|
-
attachClipboardWatch(hostFor(firstBackend), watch);
|
|
136
|
+
attachClipboardWatch(hostFor(firstBackend).clipboard.change, watch);
|
|
137
137
|
expect(firstBackend.listeners.size).toBe(1);
|
|
138
138
|
firstBackend.listeners.forEach((listener) => listener());
|
|
139
139
|
expect(changes).toBe(1);
|
|
140
140
|
|
|
141
|
-
attachClipboardWatch(hostFor(secondBackend), watch);
|
|
141
|
+
attachClipboardWatch(hostFor(secondBackend).clipboard.change, watch);
|
|
142
142
|
expect(firstBackend.listeners.size).toBe(0);
|
|
143
143
|
expect(secondBackend.listeners.size).toBe(1);
|
|
144
144
|
firstBackend.listeners.forEach((listener) => listener());
|
|
@@ -155,8 +155,8 @@ describe('ClipboardWatch', () => {
|
|
|
155
155
|
const host = hostFor(backend);
|
|
156
156
|
const watch = createClipboardWatch();
|
|
157
157
|
|
|
158
|
-
attachClipboardWatch(host, watch);
|
|
159
|
-
attachClipboardWatch(host, watch);
|
|
158
|
+
attachClipboardWatch(host.clipboard.change, watch);
|
|
159
|
+
attachClipboardWatch(host.clipboard.change, watch);
|
|
160
160
|
expect(backend.listeners.size).toBe(1);
|
|
161
161
|
|
|
162
162
|
disposeClipboardWatch(watch);
|
|
@@ -256,11 +256,11 @@ describe('writeClipboardHtml', () => {
|
|
|
256
256
|
|
|
257
257
|
interface FakeClipboardBackend
|
|
258
258
|
extends
|
|
259
|
-
|
|
260
|
-
Required<Pick<
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
259
|
+
HostClipboardBookmarkProvider,
|
|
260
|
+
Required<Pick<HostClipboardChangeProvider, 'subscribe' | 'unsubscribe'>>,
|
|
261
|
+
HostClipboardFormatsProvider,
|
|
262
|
+
HostClipboardImageProvider,
|
|
263
|
+
HostClipboardTextProvider {
|
|
264
264
|
bookmark: ClipboardBookmark | null;
|
|
265
265
|
formats: Record<string, string>;
|
|
266
266
|
html: string;
|
|
@@ -270,11 +270,13 @@ interface FakeClipboardBackend
|
|
|
270
270
|
text: string;
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
type FakeClipboardHost =
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
273
|
+
type FakeClipboardHost = { readonly clipboard: { readonly bookmark: HostClipboardBookmarkProvider } } & {
|
|
274
|
+
readonly clipboard: {
|
|
275
|
+
readonly change: Required<Pick<HostClipboardChangeProvider, 'subscribe' | 'unsubscribe'>>;
|
|
276
|
+
};
|
|
277
|
+
} & { readonly clipboard: { readonly formats: HostClipboardFormatsProvider } } & {
|
|
278
|
+
readonly clipboard: { readonly image: HostClipboardImageProvider };
|
|
279
|
+
} & { readonly clipboard: { readonly text: HostClipboardTextProvider } };
|
|
278
280
|
|
|
279
281
|
function hostFor(clipboard: FakeClipboardBackend): FakeClipboardHost {
|
|
280
282
|
return {
|