on master help sign in
Fix bugs in `container` and an empty `flow`
9a40392evancz
libraries/Graphics/Element.elm+1
@@ -86,6 +86,7 @@ flow dir es =
86 hs = List.map heightOf es
86 hs = List.map heightOf es
87 newFlow w h = newElement w h (Flow dir es)
87 newFlow w h = newElement w h (Flow dir es)
88 in
88 in
89+ if es == [] then spacer 0 0 else
89 case dir of
90 case dir of
90 DUp -> newFlow (List.maximum ws) (List.sum hs)
91 DUp -> newFlow (List.maximum ws) (List.sum hs)
91 DDown -> newFlow (List.maximum ws) (List.sum hs)
92 DDown -> newFlow (List.maximum ws) (List.sum hs)
libraries/Native/List.js+15−15
@@ -20,7 +20,7 @@ Elm.Native.List = function(elm) {
20
20
21 function toArray(xs) {
21 function toArray(xs) {
22 var out = [];
22 var out = [];
23− while (xs !== Nil) {
23+ while (xs.ctor !== 'Nil') {
24 out.push(xs._0);
24 out.push(xs._0);
25 xs = xs._1;
25 xs = xs._1;
26 }
26 }
@@ -49,7 +49,7 @@ Elm.Native.List = function(elm) {
49 var root = Cons(xs._0. Nil);
49 var root = Cons(xs._0. Nil);
50 var curr = root;
50 var curr = root;
51 xs = xs._1;
51 xs = xs._1;
52− while (xs !== Nil) {
52+ while (xs.ctor !== 'Nil') {
53 curr._1 = Cons(xs._0. Nil);
53 curr._1 = Cons(xs._0. Nil);
54 xs = xs._1;
54 xs = xs._1;
55 curr = curr._1;
55 curr = curr._1;
@@ -64,7 +64,7 @@ Elm.Native.List = function(elm) {
64 function last(xs) {
64 function last(xs) {
65 if (xs === Nil) { throwError('last'); }
65 if (xs === Nil) { throwError('last'); }
66 var out = xs._0;
66 var out = xs._0;
67− while (xs !== Nil) {
67+ while (xs.ctor !== 'Nil') {
68 out = xs._0;
68 out = xs._0;
69 xs = xs._1;
69 xs = xs._1;
70 }
70 }
@@ -73,7 +73,7 @@ Elm.Native.List = function(elm) {
73
73
74 function map(f, xs) {
74 function map(f, xs) {
75 var arr = [];
75 var arr = [];
76− while (xs !== Nil) {
76+ while (xs.ctor !== 'Nil') {
77 arr.push(f(xs._0));
77 arr.push(f(xs._0));
78 xs = xs._1;
78 xs = xs._1;
79 }
79 }
@@ -84,7 +84,7 @@ Elm.Native.List = function(elm) {
84 // ie, foldl :: (a -> b -> b) -> b -> [a] -> b
84 // ie, foldl :: (a -> b -> b) -> b -> [a] -> b
85 function foldl(f, b, xs) {
85 function foldl(f, b, xs) {
86 var acc = b;
86 var acc = b;
87− while (xs !== Nil) {
87+ while (xs.ctor !== 'Nil') {
88 acc = A2(f, xs._0, acc);
88 acc = A2(f, xs._0, acc);
89 xs = xs._1;
89 xs = xs._1;
90 }
90 }
@@ -130,7 +130,7 @@ Elm.Native.List = function(elm) {
130
130
131 function filter(pred, xs) {
131 function filter(pred, xs) {
132 var arr = [];
132 var arr = [];
133− while (xs !== Nil) {
133+ while (xs.ctor !== 'Nil') {
134 if (pred(xs._0)) { arr.push(xs._0); }
134 if (pred(xs._0)) { arr.push(xs._0); }
135 xs = xs._1;
135 xs = xs._1;
136 }
136 }
@@ -139,7 +139,7 @@ Elm.Native.List = function(elm) {
139
139
140 function length(xs) {
140 function length(xs) {
141 var out = 0;
141 var out = 0;
142− while (xs !== Nil) {
142+ while (xs.ctor !== 'Nil') {
143 out += 1;
143 out += 1;
144 xs = xs._1;
144 xs = xs._1;
145 }
145 }
@@ -147,7 +147,7 @@ Elm.Native.List = function(elm) {
147 }
147 }
148
148
149 function member(x, xs) {
149 function member(x, xs) {
150− while (xs !== Nil) {
150+ while (xs.ctor !== 'Nil') {
151 if (Utils.eq(x,xs._0)) return true;
151 if (Utils.eq(x,xs._0)) return true;
152 xs = xs._1;
152 xs = xs._1;
153 }
153 }
@@ -167,7 +167,7 @@ Elm.Native.List = function(elm) {
167 }
167 }
168
168
169 function all(pred, xs) {
169 function all(pred, xs) {
170− while (xs !== Nil) {
170+ while (xs.ctor !== 'Nil') {
171 if (!pred(xs._0)) return false;
171 if (!pred(xs._0)) return false;
172 xs = xs._1;
172 xs = xs._1;
173 }
173 }
@@ -175,7 +175,7 @@ Elm.Native.List = function(elm) {
175 }
175 }
176
176
177 function any(pred, xs) {
177 function any(pred, xs) {
178− while (xs !== Nil) {
178+ while (xs.ctor !== 'Nil') {
179 if (pred(xs._0)) return true;
179 if (pred(xs._0)) return true;
180 xs = xs._1;
180 xs = xs._1;
181 }
181 }
@@ -184,7 +184,7 @@ Elm.Native.List = function(elm) {
184
184
185 function zipWith(f, xs, ys) {
185 function zipWith(f, xs, ys) {
186 var arr = [];
186 var arr = [];
187− while (xs !== Nil && ys !== Nil) {
187+ while (xs.ctor !== 'Nil' && ys.ctor !== 'Nil') {
188 arr.push(A2(f, xs._0, ys._0));
188 arr.push(A2(f, xs._0, ys._0));
189 xs = xs._1;
189 xs = xs._1;
190 ys = ys._1;
190 ys = ys._1;
@@ -194,7 +194,7 @@ Elm.Native.List = function(elm) {
194
194
195 function zip(xs, ys) {
195 function zip(xs, ys) {
196 var arr = [];
196 var arr = [];
197− while (xs !== Nil && ys !== Nil) {
197+ while (xs.ctor !== 'Nil' && ys.ctor !== 'Nil') {
198 arr.push(Utils.Tuple2(xs._0, ys._0));
198 arr.push(Utils.Tuple2(xs._0, ys._0));
199 xs = xs._1;
199 xs = xs._1;
200 ys = ys._1;
200 ys = ys._1;
@@ -212,7 +212,7 @@ Elm.Native.List = function(elm) {
212
212
213 function take(n, xs) {
213 function take(n, xs) {
214 var arr = [];
214 var arr = [];
215− while (xs !== Nil && n > 0) {
215+ while (xs.ctor !== 'Nil' && n > 0) {
216 arr.push(xs._0);
216 arr.push(xs._0);
217 xs = xs._1;
217 xs = xs._1;
218 --n;
218 --n;
@@ -221,7 +221,7 @@ Elm.Native.List = function(elm) {
221 }
221 }
222
222
223 function drop(n, xs) {
223 function drop(n, xs) {
224− while (xs !== Nil && n > 0) {
224+ while (xs.ctor !== 'Nil' && n > 0) {
225 xs = xs._1;
225 xs = xs._1;
226 --n;
226 --n;
227 }
227 }
@@ -233,7 +233,7 @@ Elm.Native.List = function(elm) {
233 var s = toArray(sep);
233 var s = toArray(sep);
234 var out = toArray(xss._0);
234 var out = toArray(xss._0);
235 xss = xss._1;
235 xss = xss._1;
236− while (xss !== Nil) {
236+ while (xss.ctor !== 'Nil') {
237 out = out.concat(s, toArray(xss._0));
237 out = out.concat(s, toArray(xss._0));
238 xss = xss._1;
238 xss = xss._1;
239 }
239 }
runtime/Render/Element.js+8−8
@@ -113,9 +113,9 @@ function flow(dir,elist) {
113}
113}
114
114
115function toPos(pos) {
115function toPos(pos) {
116− switch(pos[0]) {
116+ switch(pos.ctor) {
117− case "Absolute": return pos[1] + "px";
117+ case "Absolute": return pos._0 + "px";
118− case "Relative": return (pos[1] * 100) + "%";
118+ case "Relative": return (pos._0 * 100) + "%";
119 }
119 }
120}
120}
121
121
@@ -123,15 +123,15 @@ function setPos(pos,w,h,e) {
123 e.style.position = 'absolute';
123 e.style.position = 'absolute';
124 e.style.margin = 'auto';
124 e.style.margin = 'auto';
125 var transform = '';
125 var transform = '';
126− switch(pos.horizontal) {
126+ switch(pos.horizontal.ctor) {
127 case 'P': e.style.right = toPos(pos.x); break;
127 case 'P': e.style.right = toPos(pos.x); break;
128 case 'Z': transform = 'translateX(' + ((-w/2)|0) + 'px) ';
128 case 'Z': transform = 'translateX(' + ((-w/2)|0) + 'px) ';
129 case 'N': e.style.left = toPos(pos.x); break;
129 case 'N': e.style.left = toPos(pos.x); break;
130 }
130 }
131− switch(pos.vertical) {
131+ switch(pos.vertical.ctor) {
132− case 'N': e.style.bottom = toPos(pos.x); break;
132+ case 'N': e.style.bottom = toPos(pos.y); break;
133 case 'Z': transform += 'translateY(' + ((-h/2)|0) + 'px)';
133 case 'Z': transform += 'translateY(' + ((-h/2)|0) + 'px)';
134− case 'P': e.style.top = toPos(pos.x); break;
134+ case 'P': e.style.top = toPos(pos.y); break;
135 }
135 }
136 if (transform !== '') addTransform(e.style, transform);
136 if (transform !== '') addTransform(e.style, transform);
137 return e;
137 return e;
@@ -222,7 +222,7 @@ function update(node, curr, next) {
222 removeTransform(inner.style);
222 removeTransform(inner.style);
223 }
223 }
224 }
224 }
225− setPos(nextE._0, next.props.width, next.props.height, node.firstChild);
225+ setPos(nextE._0, nextE._1.props.width, nextE._1.props.height, inner);
226 break;
226 break;
227 case "Custom":
227 case "Custom":
228 if (currE.type === nextE.type) {
228 if (currE.type === nextE.type) {