@@ -140,6 +140,7 @@ import Data.Some (Some(..))
140140import Data.Text (Text)
141141import Foreign.JavaScript.Internal.Utils
142142import Foreign.JavaScript.TH
143+import GHCJS.DOM.ClipboardEvent as ClipboardEvent
143144import GHCJS.DOM.Document (Document, createDocumentFragment, createElement, createElementNS, createTextNode, createComment)
144145import GHCJS.DOM.Element (getScrollTop, removeAttribute, removeAttributeNS, setAttribute, setAttributeNS, hasAttribute, hasAttributeNS)
145146import GHCJS.DOM.EventM (EventM, event, on)
@@ -175,6 +176,7 @@ import qualified Data.IntMap.Strict as IntMap
175176import qualified Data.Map as Map
176177import qualified Data.Text as T
177178import qualified GHCJS.DOM as DOM
179+import qualified GHCJS.DOM.DataTransfer as DataTransfer
178180import qualified GHCJS.DOM.DocumentAndElementEventHandlers as Events
179181import qualified GHCJS.DOM.DocumentOrShadowRoot as Document
180182import qualified GHCJS.DOM.Element as Element
@@ -2239,7 +2241,7 @@ defaultDomEventHandler e evt = fmap (Just . EventResult) $ case evt of
22392241 Beforecopy -> return ()
22402242 Copy -> return ()
22412243 Beforepaste -> return ()
2242− Paste -> return ()
2244+ Paste -> getPasteData
22432245 Reset -> return ()
22442246 Search -> return ()
22452247 Selectstart -> return ()
@@ -2289,7 +2291,7 @@ defaultDomWindowEventHandler w evt = fmap (Just . EventResult) $ case evt of
22892291 Beforecopy -> return ()
22902292 Copy -> return ()
22912293 Beforepaste -> return ()
2292− Paste -> return ()
2294+ Paste -> getPasteData
22932295 Reset -> return ()
22942296 Search -> return ()
22952297 Selectstart -> return ()
@@ -2499,7 +2501,7 @@ windowOnEventName en e = case en of
24992501 Beforecopy -> const $ return $ return () --TODO
25002502 Copy -> const $ return $ return () --TODO
25012503 Beforepaste -> const $ return $ return () --TODO
2502− Paste -> const $ return $ return () --TODO
2504+ Paste -> on e Events.paste
25032505 Reset -> on e Events.reset
25042506 Search -> on e Events.search
25052507 Selectstart -> const $ return $ return () --TODO
@@ -2566,6 +2568,15 @@ getMouseEventCoords = do
25662568 e <- event
25672569 bisequence (getClientX e, getClientY e)
25682570
2571+{-# INLINABLE getPasteData #-}
2572+getPasteData :: EventM e ClipboardEvent Text
2573+getPasteData = do
2574+ e <- event
2575+ mdt <- ClipboardEvent.getClipboardData e
2576+ case mdt of
2577+ Nothing -> return ""
2578+ Just dt -> DataTransfer.getData dt ("text" :: Text)
2579+
25692580{-# INLINABLE getTouchEvent #-}
25702581getTouchEvent :: EventM e TouchEvent TouchEventResult
25712582getTouchEvent = do