on develop help sign in
Merge pull request #374 from mightybyte/paste-event

Put clipboard data in paste event result

commit666846dba6a873f064348c3468b20451da1f6f34 authorRyan Trinkle <ryan@trinkle.org> dateSun 3 May 2020, 12:39 (6 years ago) parente2b846002ff86e
2 files changed+15−3
reflex-dom-core/src/Reflex/Dom/Builder/Class/Events.hs+2−1 reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+13−2
reflex-dom-core/src/Reflex/Dom/Builder/Class/Events.hs+2−1
@@ -14,6 +14,7 @@ import Data.GADT.Compare.TH
1414import Data.GADT.Compare
1515 (GOrdering(..), (:~:)(..), GEq(..), GCompare(..))
1616#endif
17+import Data.Text (Text)
1718
1819data EventTag
1920 = AbortTag
@@ -151,7 +152,7 @@ type family EventResultType (en :: EventTag) :: * where
151152 EventResultType 'BeforecopyTag = ()
152153 EventResultType 'CopyTag = ()
153154 EventResultType 'BeforepasteTag = ()
154− EventResultType 'PasteTag = ()
155+ EventResultType 'PasteTag = Maybe Text
155156 EventResultType 'ResetTag = ()
156157 EventResultType 'SearchTag = ()
157158 EventResultType 'SelectstartTag = ()
reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+13−2
@@ -144,6 +144,7 @@ import Data.String (IsString)
144144import Data.Text (Text)
145145import Foreign.JavaScript.Internal.Utils
146146import Foreign.JavaScript.TH
147+import GHCJS.DOM.ClipboardEvent as ClipboardEvent
147148import GHCJS.DOM.Document (Document, createDocumentFragment, createElement, createElementNS, createTextNode, createComment)
148149import GHCJS.DOM.Element (getScrollTop, removeAttribute, removeAttributeNS, setAttribute, setAttributeNS, hasAttribute)
149150import GHCJS.DOM.EventM (EventM, event, on)
@@ -179,6 +180,7 @@ import qualified Data.IntMap.Strict as IntMap
179180import qualified Data.Map as Map
180181import qualified Data.Text as T
181182import qualified GHCJS.DOM as DOM
183+import qualified GHCJS.DOM.DataTransfer as DataTransfer
182184import qualified GHCJS.DOM.DocumentAndElementEventHandlers as Events
183185import qualified GHCJS.DOM.DocumentOrShadowRoot as Document
184186import qualified GHCJS.DOM.Element as Element
@@ -2255,7 +2257,7 @@ defaultDomEventHandler e evt = fmap (Just . EventResult) $ case evt of
22552257 Beforecopy -> return ()
22562258 Copy -> return ()
22572259 Beforepaste -> return ()
2258− Paste -> return ()
2260+ Paste -> getPasteData
22592261 Reset -> return ()
22602262 Search -> return ()
22612263 Selectstart -> return ()
@@ -2305,7 +2307,7 @@ defaultDomWindowEventHandler w evt = fmap (Just . EventResult) $ case evt of
23052307 Beforecopy -> return ()
23062308 Copy -> return ()
23072309 Beforepaste -> return ()
2308− Paste -> return ()
2310+ Paste -> getPasteData
23092311 Reset -> return ()
23102312 Search -> return ()
23112313 Selectstart -> return ()
@@ -2582,6 +2584,15 @@ getMouseEventCoords = do
25822584 e <- event
25832585 bisequence (getClientX e, getClientY e)
25842586
2587+{-# INLINABLE getPasteData #-}
2588+getPasteData :: EventM e ClipboardEvent (Maybe Text)
2589+getPasteData = do
2590+ e <- event
2591+ mdt <- ClipboardEvent.getClipboardData e
2592+ case mdt of
2593+ Nothing -> return Nothing
2594+ Just dt -> Just <$> DataTransfer.getData dt ("text" :: Text)
2595+
25852596{-# INLINABLE getTouchEvent #-}
25862597getTouchEvent :: EventM e TouchEvent TouchEventResult
25872598getTouchEvent = do