Skip to content

Commit 6764603

Browse files
committed
refactor: warnings -> resolve
1 parent 40494f7 commit 6764603

14 files changed

+57
-182
lines changed

src/Halogen/VDom/Attributes.purs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
module Halogen.VDom.Attributes where
22

3-
import Prelude
3+
import Prelude (Unit)
44

5-
import Halogen.VDom.Util
6-
import Halogen.VDom.DOM.Checkers
7-
import Effect (Effect)
85
import Web.DOM.Element as DOM
96
import Effect.Uncurried as EFn
107
import Unsafe.Coerce (unsafeCoerce)
@@ -15,8 +12,7 @@ data NamedNodeMap
1512
foreign import attributes DOM.Element NamedNodeMap
1613

1714
forEachE
18-
a
19-
. EFn.EffectFn2
15+
EFn.EffectFn2
2016
NamedNodeMap
2117
(EFn.EffectFn1 String Unit)
2218
Unit

src/Halogen/VDom/DOM.purs

+6-22
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,20 @@ module Halogen.VDom.DOM
44
, hydrateVDom
55
) where
66

7-
import Halogen.VDom.DOM.Elem
8-
import Halogen.VDom.DOM.Keyed
9-
import Halogen.VDom.DOM.Text
10-
import Halogen.VDom.DOM.Types
11-
import Halogen.VDom.DOM.Widget
12-
import Prelude
7+
import Halogen.VDom.DOM.Elem (buildElem, hydrateElem)
8+
import Halogen.VDom.DOM.Keyed (buildKeyed, hydrateKeyed)
9+
import Halogen.VDom.DOM.Text (buildText, hydrateText)
10+
import Halogen.VDom.DOM.Types (VDomMachine, VDomSpec)
11+
import Halogen.VDom.DOM.Widget (buildWidget, hydrateWidget)
1312

14-
import Data.Array as Array
15-
import Data.Function.Uncurried as Fn
16-
import Data.Maybe (Maybe(..))
17-
import Data.Nullable (toNullable)
18-
import Data.Tuple (Tuple(..), fst)
19-
import Debug.Trace (traceM)
2013
import Effect.Uncurried as EFn
21-
import Foreign.Object as Object
2214
import Halogen.VDom.DOM.Elem (buildElem) as Export
2315
import Halogen.VDom.DOM.Keyed (buildKeyed) as Export
2416
import Halogen.VDom.DOM.Text (buildText) as Export
2517
import Halogen.VDom.DOM.Types (VDomSpec(..)) as Export
26-
import Halogen.VDom.DOM.Checkers
2718
import Halogen.VDom.DOM.Widget (buildWidget) as Export
28-
import Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)
29-
import Halogen.VDom.Machine as Machine
30-
import Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)
31-
import Halogen.VDom.Util as Util
32-
import Halogen.VDom.Util
33-
import Web.DOM.Document (Document) as DOM
19+
import Halogen.VDom.Types (VDom(..), runGraft)
3420
import Web.DOM.Element (Element) as DOM
35-
import Web.DOM.Element as DOM.Element
36-
import Web.DOM.Node (Node) as DOM
3721

3822
-- | Starts an initial `VDom` machine by providing a `VDomSpec`.
3923
-- |

src/Halogen/VDom/DOM/Checkers.purs

+15-21
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,36 @@
11
module Halogen.VDom.DOM.Checkers where
22

3-
import Prelude
3+
import Prelude (Unit, bind, discard, show, when, ($), (/=), (<>))
44

5-
import Data.Maybe (Maybe(..))
6-
import Data.Newtype (unwrap)
7-
import Data.Nullable (Nullable, toMaybe, toNullable)
5+
import Data.Maybe (Maybe)
86
import Data.String (toUpper)
9-
import Data.Tuple (Tuple(..), fst)
107
import Effect (Effect)
118
import Effect.Exception (error, throwException)
129
import Effect.Uncurried as EFn
13-
import Foreign.Object as Object
14-
import Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)
15-
import Halogen.VDom.Machine as Machine
16-
import Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)
10+
import Halogen.VDom.Types (ElemName, Namespace)
1711
import Halogen.VDom.Util
1812
import Partial.Unsafe (unsafePartial)
19-
import Unsafe.Coerce (unsafeCoerce)
20-
import Web.DOM as DOM
21-
import Web.DOM.Document as DOM
22-
import Web.DOM.Element as DOM
13+
import Web.DOM (NodeList, NodeType) as DOM
14+
import Web.DOM.Element (Element, tagName) as DOM
2315
import Web.DOM.Element as DOM.Element
24-
import Web.DOM.HTMLCollection (length) as DOM.HTMLCollection
25-
import Web.DOM.Node as DOM
16+
import Web.DOM.Node (childNodes, nodeType, textContent) as DOM
2617
import Web.DOM.NodeList (length) as DOM.NodeList
2718
import Web.DOM.NodeType as DOM.NodeType
28-
import Web.DOM.ParentNode (children) as DOM.ParentNode
2919

3020
--------------------------------------
3121
-- Text
3222

33-
getElementNodeType :: DOM.Element -> DOM.NodeType
34-
getElementNodeType element = unsafePartial $ DOM.nodeType (DOM.Element.toNode element)
3523

3624
checkElementIsNodeType :: DOM.NodeType -> DOM.Element -> Effect Unit
37-
checkElementIsNodeType expectedNodeType element =
38-
let nodeType = getElementNodeType element
39-
in when (nodeType /= expectedNodeType) (throwException $ error $ "Expected element to be a " <> show expectedNodeType <> ", but got " <> show nodeType)
25+
checkElementIsNodeType = checkElementIsNodeType'
26+
where
27+
getElementNodeType :: DOM.Element -> DOM.NodeType
28+
getElementNodeType element = unsafePartial $ DOM.nodeType (DOM.Element.toNode element)
29+
30+
checkElementIsNodeType' :: DOM.NodeType -> DOM.Element -> Effect Unit
31+
checkElementIsNodeType' expectedNodeType element =
32+
let nodeType = getElementNodeType element
33+
in when (nodeType /= expectedNodeType) (throwException $ error $ "Expected element to be a " <> show expectedNodeType <> ", but got " <> show nodeType)
4034

4135
checkIsTextNode :: DOM.Element -> Effect Unit
4236
checkIsTextNode = checkElementIsNodeType DOM.NodeType.TextNode

src/Halogen/VDom/DOM/Elem.purs

+8-19
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
11
module Halogen.VDom.DOM.Elem where
22

3-
import Data.Tuple.Nested
4-
import Halogen.VDom.DOM.Types
5-
import Halogen.VDom.DOM.Checkers
3+
import Data.Tuple.Nested (type (/\), (/\))
4+
import Halogen.VDom.DOM.Types (VDomBuilder4, VDomHydrator4, VDomMachine, VDomSpec(..), VDomStep)
5+
import Halogen.VDom.DOM.Checkers (checkChildrenLengthIsEqualTo, checkIsElementNode, checkTagNameIsEqualTo)
66
import Prelude
77

88
import Data.Array (length, zip) as Array
9-
import Data.Array as Array
109
import Data.Function.Uncurried as Fn
11-
import Data.Maybe (Maybe(..))
10+
import Data.Maybe (Maybe)
1211
import Data.Nullable (toNullable)
13-
import Data.Tuple (Tuple(..), fst)
14-
import Debug.Trace (traceM)
15-
import Effect (Effect)
16-
import Effect.Exception (error, throwException)
1712
import Effect.Uncurried as EFn
18-
import Foreign.Object as Object
19-
import Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)
20-
import Halogen.VDom.Machine as Machine
21-
import Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)
13+
import Halogen.VDom.Machine (Step, Step'(..), extract, halt, mkStep, step)
14+
import Halogen.VDom.Types (ElemName, Namespace, VDom(..), runGraft)
2215
import Halogen.VDom.Util as Util
2316
import Unsafe.Coerce (unsafeCoerce)
24-
import Web.DOM.Document as DOM
25-
import Web.DOM.Element as DOM
17+
import Web.DOM.Element (Element) as DOM
2618
import Web.DOM.Element as DOM.Element
27-
import Web.DOM.HTMLCollection (toArray) as DOM.HTMLCollection
28-
import Web.DOM.Node as DOM
19+
import Web.DOM.Node (Node, childNodes) as DOM
2920
import Web.DOM.NodeList as DOM.NodeList
30-
import Web.DOM.ParentNode as DOM.ParentNode
31-
import Halogen.VDom.DOM.Prop (hydrateProp, buildProp)
3221

3322
type ElemState a w =
3423
{ build VDomMachine a w

src/Halogen/VDom/DOM/Keyed.purs

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
module Halogen.VDom.DOM.Keyed where
22

3-
import Prelude
3+
import Prelude (Unit, bind, discard, pure, ($), (>>=))
44

55
import Data.Array as Array
66
import Data.Function.Uncurried as Fn
7-
import Data.Maybe (Maybe(..))
7+
import Data.Maybe (Maybe)
88
import Data.Nullable (toNullable)
99
import Data.Tuple (Tuple(..), fst)
1010
import Effect.Uncurried as EFn
1111
import Foreign.Object as Object
12-
import Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)
12+
import Halogen.VDom.Machine (Step, Step'(..), extract, halt, mkStep, step)
1313
import Halogen.VDom.Machine as Machine
14-
import Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)
14+
import Halogen.VDom.Types (ElemName, Namespace, VDom(..), runGraft)
1515
import Halogen.VDom.Util as Util
16-
import Web.DOM.Document (Document) as DOM
1716
import Web.DOM.Element (Element) as DOM
1817
import Web.DOM.Element as DOM.Element
1918
import Web.DOM.NodeList as DOM.NodeList
2019
import Unsafe.Coerce (unsafeCoerce)
21-
import Web.DOM.Node as DOM
22-
import Halogen.VDom.DOM.Types
23-
import Halogen.VDom.DOM.Checkers
24-
import Halogen.VDom.DOM.Prop (hydrateProp, buildProp)
25-
import Data.Tuple.Nested
20+
import Web.DOM.Node (Node, childNodes) as DOM
21+
import Halogen.VDom.DOM.Types (VDomBuilder4, VDomHydrator4, VDomMachine, VDomSpec(..), VDomStep)
22+
import Halogen.VDom.DOM.Checkers (checkChildrenLengthIsEqualTo, checkIsElementNode, checkTagNameIsEqualTo)
2623

2724
type KeyedState a w =
2825
{ build VDomMachine a w

src/Halogen/VDom/DOM/Prop.purs

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module Halogen.VDom.DOM.Prop
66

77
import Data.String.Common (joinWith)
88
import Halogen.VDom.DOM.Prop.Implementation (applyProp, diffProp, hydrateApplyProp, mbEmit, removeProp)
9-
import Halogen.VDom.DOM.Prop.Types (ElemRef(..), EventListenerAndCurrentEmitterInputBuilder, Prop(..), PropState)
9+
import Halogen.VDom.DOM.Prop.Types (ElemRef(..), EventListenerAndCurrentEmitterInputBuilder, Prop(..), PropState, BuildPropFunction)
1010
import Halogen.VDom.DOM.Prop.Utils (propToStrKey)
1111
import Halogen.VDom.Util (STObject')
1212
import Prelude (Unit, bind, discard, pure, unit, when, (#), ($), (<>), (>))
@@ -19,11 +19,10 @@ import Effect.Uncurried as EFn
1919
import Foreign.Object as Object
2020
import Halogen.VDom.Attributes (attributes, forEachE) as Attributes
2121
import Halogen.VDom.DOM.Prop.Types (Prop(..), ElemRef(..), PropValue, propFromString, propFromBoolean, propFromInt, propFromNumber) as Export
22-
import Halogen.VDom.Machine (Step, Step'(..), mkStep, Machine)
22+
import Halogen.VDom.Machine (Step, Step'(..), mkStep)
2323
import Halogen.VDom.Set as Set
2424
import Halogen.VDom.Util as Util
2525
import Web.DOM.Element (Element) as DOM
26-
import Halogen.VDom.DOM.Prop.Types (BuildPropFunction)
2726

2827
-- inspired by https://github.com/facebook/react/blob/823dc581fea8814a904579e85a62da6d18258830/packages/react-dom/src/client/ReactDOMComponent.js#L1030
2928
mkExtraAttributeNames DOM.Element Effect (Set.Set String)

src/Halogen/VDom/DOM/Prop/Types.purs

+6-10
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,17 @@ module Halogen.VDom.DOM.Prop.Types where
22

33
import Prelude
44

5-
import Data.Function.Uncurried as Fn
6-
import Data.Maybe (Maybe(..))
7-
import Data.Nullable (null, toNullable, Nullable)
8-
import Data.Tuple (Tuple(..), fst, snd)
5+
import Data.Maybe (Maybe)
6+
import Data.Tuple (Tuple)
97
import Effect (Effect)
108
import Effect.Ref as Ref
11-
import Effect.Uncurried as EFn
12-
import Foreign (typeOf)
139
import Foreign.Object as Object
14-
import Halogen.VDom.Machine (Step, Step'(..), mkStep, Machine)
15-
import Halogen.VDom.Types (Namespace(..))
10+
import Halogen.VDom.Machine (Machine)
11+
import Halogen.VDom.Types (Namespace)
1612
import Unsafe.Coerce (unsafeCoerce)
1713
import Web.DOM.Element (Element) as DOM
18-
import Web.Event.Event (EventType(..), Event) as DOM
19-
import Web.Event.EventTarget (eventListener, EventListener) as DOM
14+
import Web.Event.Event (Event, EventType) as DOM
15+
import Web.Event.EventTarget (EventListener) as DOM
2016

2117
-- | Attributes, properties, event handlers, and element lifecycles.
2218
-- | Parameterized by the type of handlers outputs.

src/Halogen/VDom/DOM/Types.purs

+2-13
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,11 @@ module Halogen.VDom.DOM.Types where
22

33
import Prelude
44

5-
import Data.Array as Array
6-
import Data.Function.Uncurried as Fn
7-
import Data.Maybe (Maybe(..))
8-
import Data.Nullable (toNullable)
9-
import Data.Tuple (Tuple(..), fst)
10-
import Effect (Effect)
115
import Effect.Uncurried as EFn
12-
import Foreign.Object as Object
13-
import Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)
14-
import Halogen.VDom.Machine as Machine
15-
import Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)
16-
import Halogen.VDom.Util as Util
17-
import Halogen.VDom.DOM.Prop.Types (BuildPropFunction, Prop)
6+
import Halogen.VDom.Machine (Machine, Step)
7+
import Halogen.VDom.Types (VDom)
188
import Web.DOM.Document (Document) as DOM
199
import Web.DOM.Element (Element) as DOM
20-
import Web.DOM.Element as DOM.Element
2110
import Web.DOM.Node (Node) as DOM
2211

2312
-- A function, that takes `VDom a w` and builds a `DOM.Node`

src/Halogen/VDom/Set.purs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
module Halogen.VDom.Set where
22

3-
import Halogen.VDom.DOM.Checkers
4-
import Halogen.VDom.Util
5-
import Prelude
3+
import Prelude (Unit)
64

75
import Effect (Effect)
86
import Effect.Uncurried (EffectFn2) as EFn

src/Halogen/VDom/Thunk.purs

+1-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ import Halogen.VDom.Util as Util
2121
import Unsafe.Coerce (unsafeCoerce)
2222
import Web.DOM.Node (Node)
2323
import Halogen.VDom.DOM.Types (VDomMachine)
24-
import Web.DOM.Document (Document) as DOM
2524
import Web.DOM.Element (Element) as DOM
26-
import Web.DOM.Element as DOM.Element
27-
import Web.DOM.Node (Node) as DOM
2825

2926
foreign import data ThunkArgType
3027

@@ -109,7 +106,7 @@ hydrateThunk
109106
V.VDomSpec a w
110107
DOM.Element
111108
V.Machine (Thunk f i) Node
112-
hydrateThunk toVDom spec element = mkThunkBuilder (\spec → V.hydrateVDom spec element) toVDom spec
109+
hydrateThunk toVDom spec element = mkThunkBuilder (\spec'V.hydrateVDom spec' element) toVDom spec
113110

114111
buildThunk
115112
f i a w

src/Halogen/VDom/Util.js

-20
Original file line numberDiff line numberDiff line change
@@ -176,26 +176,6 @@ exports.removeEventListener = function (ev, listener, el) {
176176

177177
exports.jsUndefined = void 0;
178178

179-
exports.getNodeType = function(el) {
180-
return el.nodeType
181-
}
182-
183-
exports.nodeIsTextNode = function(el) {
184-
return el.nodeType === 3
185-
}
186-
187-
exports.nodeIsElementNode = function(el) {
188-
return el.nodeType === 1
189-
}
190-
191-
exports.getTextContent = function(el) {
192-
return node.textContent;
193-
}
194-
195-
exports.getNamespaceURI = function(el) {
196-
return node.namespaceURI
197-
}
198-
199179
exports.anyToString = function (a) {
200180
return String(a);
201181
};

src/Halogen/VDom/Util.purs

+3-38
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,15 @@
11
module Halogen.VDom.Util where
2-
-- | ( newMutMap
3-
-- | , pokeMutMap
4-
-- | , deleteMutMap
5-
-- | , unsafeFreeze
6-
-- | , unsafeLookup
7-
-- | , unsafeGetAny
8-
-- | , unsafeHasAny
9-
-- | , unsafeSetAny
10-
-- | , unsafeDeleteAny
11-
-- | , forE
12-
-- | , forEachE
13-
-- | , forInE
14-
-- | , replicateE
15-
-- | , diffWithIxE
16-
-- | , diffWithKeyAndIxE
17-
-- | , strMapWithIxE
18-
-- | , refEq
19-
-- | , createTextNode
20-
-- | , setTextContent
21-
-- | , createElement
22-
-- | , insertChildIx
23-
-- | , removeChild
24-
-- | , parentNode
25-
-- | , setAttribute
26-
-- | , removeAttribute
27-
-- | , hasAttribute
28-
-- | , addEventListener
29-
-- | , removeEventListener
30-
-- | , JsUndefined
31-
-- | , jsUndefined
32-
-- | , STObject'
33-
-- | , nodeIsTextNode
34-
-- | , nodeIsElementNode
35-
-- | ) where
36-
37-
import Prelude
2+
3+
import Prelude (Unit, unit, (<>), (==))
384

395
import Data.Function.Uncurried as Fn
406
import Data.Nullable (Nullable)
417
import Effect (Effect)
428
import Effect.Uncurried as EFn
439
import Foreign.Object (Object)
4410
import Foreign.Object as Object
45-
import Foreign.Object.ST (STObject)
4611
import Foreign.Object.ST as STObject
47-
import Halogen.VDom.Types
12+
import Halogen.VDom.Types (ElemName(..), Namespace(..))
4813
import Unsafe.Coerce (unsafeCoerce)
4914
import Web.DOM.Document (Document) as DOM
5015
import Web.DOM.Element (Element) as DOM

0 commit comments

Comments
 (0)