/
Watermark.purs
55 lines (47 loc) · 1.4 KB
/
Watermark.purs
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
module Clappr.Plugins.Watermark where
import Prelude
import Clappr (NativeOptions, Plugin, NativeOptionsRow)
import Data.Array ((:))
import Data.Maybe (Maybe)
import Data.Nullable (Nullable, toNullable)
import Data.Record.Builder (insert, build)
import Type.Prelude (class RowLacks, SProxy(..))
foreign import watermark ∷ Plugin
data Position = TopLeft | TopRight | BottomRight | BottomLeft
type Options =
{ link ∷ Maybe String
, position ∷ Position
, url ∷ String
}
setup
∷ ∀ r
. RowLacks
"watermark"
(NativeOptionsRow
( "watermarkLink" ∷ Nullable String
, "position" ∷ String
| r
))
⇒ RowLacks
"watermarkLink"
(NativeOptionsRow (position ∷ String | r))
⇒ RowLacks "position" (NativeOptionsRow r)
⇒ Options
→ NativeOptions r
→ NativeOptions
( position ∷ String
, watermarkLink ∷ Nullable String
, watermark ∷ String
| r
)
setup wOpts opts
= build builder $ opts { plugins = watermark : opts.plugins }
where
builder
= insert (SProxy ∷ SProxy "watermark") wOpts.url
<<< insert (SProxy ∷ SProxy "watermarkLink") (toNullable wOpts.link)
<<< insert (SProxy ∷ SProxy "position") (serPosition wOpts.position)
serPosition TopLeft = "top-left"
serPosition TopRight = "top-right"
serPosition BottomRight = "bottom-right"
serPosition BottomLeft = "bottom-left"