Skip to content

Commit 22ea3ad

Browse files
authored
Add Clipboard interface, readText, writeText (#11)
* Add `Clipboard` interface, `readText`, `writeText` * Update CHANGELOG.md
1 parent eded8dd commit 22ea3ad

File tree

4 files changed

+57
-1
lines changed

4 files changed

+57
-1
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@ Bugfixes:
1212

1313
Other improvements:
1414

15+
## [v4.1.0](https://github.com/purescript-web/purescript-web-clipboard/releases/tag/v4.1.0) - 2022-07-14
16+
17+
Breaking changes:
18+
19+
New features:
20+
- Added partial `Clipboard` interface implementation with `readText` and `writeText` operations (#11 by @garyb)
21+
22+
Bugfixes:
23+
24+
Other improvements:
25+
1526
## [v4.0.0](https://github.com/purescript-web/purescript-web-clipboard/releases/tag/v4.0.0) - 2022-04-27
1627

1728
Breaking changes:

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"package.json"
1616
],
1717
"dependencies": {
18-
"purescript-web-html": "^4.0.0"
18+
"purescript-web-html": "^4.0.0",
19+
"purescript-web-promise": "purescript-web/purescript-web-promise#^3.0.0"
1920
}
2021
}

src/Web/Clipboard/Clipboard.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export function clipboard(navigator) {
2+
return function () {
3+
return navigator.clipboard;
4+
};
5+
}
6+
7+
export function readText(clipboard) {
8+
return function () {
9+
return clipboard.readText();
10+
};
11+
}
12+
13+
export function writeText(text) {
14+
return function (clipboard) {
15+
return function () {
16+
return clipboard.writeText(text);
17+
};
18+
};
19+
}

src/Web/Clipboard/Clipboard.purs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module Web.Clipboard where
2+
3+
import Prelude
4+
5+
import Data.Maybe (Maybe)
6+
import Effect (Effect)
7+
import Unsafe.Coerce (unsafeCoerce)
8+
import Web.Event.Internal.Types (EventTarget)
9+
import Web.HTML (Navigator)
10+
import Web.Internal.FFI (unsafeReadProtoTagged)
11+
import Web.Promise (Promise)
12+
13+
foreign import clipboard :: Navigator -> Effect Clipboard
14+
15+
foreign import data Clipboard :: Type
16+
17+
toEventTarget :: Clipboard -> EventTarget
18+
toEventTarget = unsafeCoerce
19+
20+
fromEventTarget :: EventTarget -> Maybe Clipboard
21+
fromEventTarget = unsafeReadProtoTagged "Clipboard"
22+
23+
foreign import readText :: Clipboard -> Effect (Promise String)
24+
25+
foreign import writeText :: String -> Clipboard -> Effect (Promise Unit)

0 commit comments

Comments
 (0)