Skip to content

Commit 29b82b7

Browse files
committed
Merge
2 parents d6da1a9 + c9b8e72 commit 29b82b7

File tree

9 files changed

+96
-57
lines changed

9 files changed

+96
-57
lines changed

benchmarks/js-framework-benchmark/keyed/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"url": "https://github.com/krausest/js-framework-benchmark.git"
2626
},
2727
"devDependencies": {
28-
"purescript": "0.19.1",
28+
"purescript": "0.14.3",
2929
"spago": "0.20.1",
3030
"webpack": "^4.44.1",
3131
"webpack-cli": "^3.3.12"
Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,10 @@
11
let upstream =
2-
https://github.com/purescript/package-sets/releases/download/psc-0.14.1-20210427/packages.dhall sha256:edbb8f70232fb83895c7ce02f5d2b29f6ee1722f1a70fc58d3bc0ab0de18afe4
2+
https://github.com/purescript/package-sets/releases/download/psc-0.14.3-20210722/packages.dhall sha256:1ceb43aa59436bf5601bac45f6f3781c4e1f0e4c2b8458105b018e5ed8c30f8c
33

4-
let overrides = { = }
4+
let overrides = {=}
55

6-
let additions = {
7-
flame =
8-
{ dependencies =
9-
[ "prelude",
10-
"console",
11-
"effect",
12-
"web-events",
13-
"web-dom",
14-
"web-html",
15-
"nullable",
16-
"aff",
17-
"foreign-object",
18-
"argonaut-generic"
19-
]
20-
, repo =
21-
"https://github.com/easafe/purescript-flame.git"
22-
, version =
23-
"b139dca847f32968aaca8958e24760729de79776"
24-
}
25-
}
6+
let additions =
7+
{
8+
}
269

27-
in upstream // overrides // additions
10+
in upstream // overrides // additions

benchmarks/js-framework-benchmark/non-keyed/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"url": "https://github.com/krausest/js-framework-benchmark.git"
2626
},
2727
"devDependencies": {
28-
"purescript": "0.19.1",
28+
"purescript": "0.14.3",
2929
"spago": "0.20.1",
3030
"webpack": "^4.44.1",
3131
"webpack-cli": "^3.3.12"

benchmarks/js-framework-benchmark/non-keyed/packages.dhall

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,7 @@ let upstream =
55
let overrides = { = }
66

77
let additions = {
8-
flame =
9-
{ dependencies =
10-
[ "prelude",
11-
"console",
12-
"effect",
13-
"web-events",
14-
"web-dom",
15-
"web-html",
16-
"nullable",
17-
"aff",
18-
"foreign-object",
19-
"argonaut-generic"
20-
]
21-
, repo =
22-
"https://github.com/easafe/purescript-flame.git"
23-
, version =
24-
"b139dca847f32968aaca8958e24760729de79776"
25-
}
8+
269
}
2710

2811
in upstream // overrides // additions
29-

packages.dhall

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ let additions =
117117
-------------------------------
118118
-}
119119
let upstream =
120-
https://github.com/purescript/package-sets/releases/download/psc-0.14.1-20210516/packages.dhall sha256:f5e978371d4cdc4b916add9011021509c8d869f4c3f6d0d2694c0e03a85046c8
120+
https://github.com/purescript/package-sets/releases/download/psc-0.14.4-20210826/packages.dhall sha256:eee0765aa98e0da8fc414768870ad588e7cada060f9f7c23c37385c169f74d9f
121121

122122
let overrides = {=}
123123

src/Flame/Renderer/Internal/Dom.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ F.prototype.createAllNodes = function (parent, html, referenceNode) {
164164
this.createChildrenNodes(node, html.children);
165165
else if (html.rendered !== undefined) {
166166
if (html.messageMapper !== undefined)
167-
html.rendered.messageMapper = html.messageMapper;
167+
lazyMessageMap(html.messageMapper, html.rendered);
168168

169169
if (html.rendered.text !== undefined) {
170170
node.textContent = html.rendered.text;
@@ -200,14 +200,9 @@ F.prototype.createChildrenNodes = function (parent, children) {
200200
else {
201201
if (c.children !== undefined)
202202
this.createChildrenNodes(node, c.children);
203-
if (c.rendered !== undefined) {
204-
if (c.messageMapper !== undefined) {
205-
c.rendered.messageMapper = c.messageMapper;
206-
207-
if (c.rendered.children !== undefined)
208-
for (let i = 0; i < c.rendered.children.length; ++i)
209-
c.rendered.children[i].messageMapper = c.rendered.messageMapper;
210-
}
203+
else if (c.rendered !== undefined) {
204+
if (c.messageMapper !== undefined)
205+
lazyMessageMap(c.messageMapper, c.rendered);
211206

212207
if (c.rendered.children !== undefined)
213208
this.createChildrenNodes(node, c.rendered.children);
@@ -409,6 +404,9 @@ F.prototype.updateAllNodes = function (parent, currentHtml, updatedHtml) {
409404
if (updatedHtml.arg !== currentHtml.arg) {
410405
updatedHtml.rendered = updatedHtml.render(updatedHtml.arg);
411406

407+
if (updatedHtml.messageMapper !== undefined)
408+
lazyMessageMap(updatedHtml.messageMapper, updatedHtml.rendered);
409+
412410
this.updateAllNodes(parent, currentHtml.rendered, updatedHtml.rendered);
413411
}
414412
else
@@ -987,3 +985,11 @@ F.prototype.removeEvent = function (node, name) {
987985
node[eventKey + eventPostfix] = undefined;
988986
node[eventKey] = undefined;
989987
};
988+
989+
function lazyMessageMap(mapper, html) {
990+
html.messageMapper = mapper;
991+
992+
if (html.children !== undefined && html.children.length > 0)
993+
for (let i = 0; i < html.children.length; ++i)
994+
lazyMessageMap(mapper, html.children[i]);
995+
}

test/Basic/Functor.purs renamed to test/Functor/Basic.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module Test.Basic.Functor where
1+
module Test.Functor.Basic where
22

33
import Prelude
44

test/Functor/Lazy.purs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
module Test.Functor.Lazy where
2+
3+
import Prelude
4+
import Effect
5+
import Flame
6+
import Flame.Html.Element
7+
import Data.Maybe
8+
import Flame.Html.Element as H
9+
import Flame.Html.Attribute as HA
10+
import Flame.Html.Event as E
11+
12+
data CounterMsg = Increment Int
13+
14+
type CounterModel = { count :: Int }
15+
16+
initCounter :: CounterModel
17+
initCounter = { count: 1 }
18+
19+
updateCounter :: CounterModel -> CounterMsg -> CounterModel
20+
updateCounter model (Increment val) = model { count = model.count + val }
21+
22+
counterView :: CounterModel -> Html CounterMsg
23+
counterView = lazy Nothing counterView_
24+
25+
counterView_ :: CounterModel -> Html CounterMsg
26+
counterView_ model = H.main "main" [
27+
H.button [ HA.id "add-button", E.onClick $ Increment 1000 ] [ H.text $ "Current Value: " <> show model.count ]
28+
]
29+
30+
data Msg = PageMsg PageMsg
31+
32+
data PageMsg = CounterMsg CounterMsg
33+
34+
type Model = { counter :: CounterModel }
35+
36+
init = { counter: initCounter } :> []
37+
38+
update model (PageMsg (CounterMsg msg)) = model { counter = updateCounter model.counter msg } :> []
39+
40+
view :: Model -> Html Msg
41+
view model = H.div_ [ PageMsg <$> CounterMsg <$> counterView model.counter ]
42+
43+
mount :: Effect Unit
44+
mount = mount_ (QuerySelector "#mount-point") {
45+
subscribe: []
46+
, init
47+
, update
48+
, view
49+
}

test/Main.purs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import Flame.Subscription.Unsafe.CustomEvent as FSUC
2929
import Partial.Unsafe (unsafePartial)
3030
import Test.Basic.EffectList as TBEL
3131
import Test.Basic.Effectful as TBE
32-
import Test.Basic.Functor as TBF
32+
import Test.Functor.Basic as TBF
33+
import Test.Functor.Lazy as TFL
3334
import Test.Basic.NoEffects as TBN
3435
import Test.Effectful.SlowEffects as TES
3536
import Test.ServerSideRendering.Effectful as TSE
@@ -740,7 +741,8 @@ main = TUM.runTest do
740741
TUA.equal "-2" currentDecrement3
741742
TUA.equal "2" currentLuckyNumber3
742743

743-
TU.test "functor" do
744+
TU.suite "functor" do
745+
TU.test "basic" do
744746
liftEffect do
745747
unsafeCreateEnviroment
746748
TBF.mount
@@ -762,6 +764,23 @@ main = TUM.runTest do
762764
current2 <- textContent "#text-output-1"
763765
TUA.equal "2" current2
764766

767+
TU.test "lazy" do
768+
liftEffect do
769+
unsafeCreateEnviroment
770+
TFL.mount
771+
childrenLength <- childrenNodeLength
772+
--div
773+
TUA.equal 1 childrenLength
774+
775+
dispatchEvent clickEvent "#add-button"
776+
initial <- textContent "#add-button"
777+
TUA.equal "Current Value: 1001" initial
778+
779+
dispatchEvent clickEvent "#add-button"
780+
dispatchEvent clickEvent "#add-button"
781+
current2 <- textContent "#add-button"
782+
TUA.equal "Current Value: 3001" current2
783+
765784
TU.suite "Effectful specific" do
766785
TU.test "slower effects" do
767786
liftEffect do

0 commit comments

Comments
 (0)