git.iko.soy/purestack-dev/purescript-plum
on master help sign in
fixed pseudocalss selector order
9442870iko
plum/index.js+94−24
@@ -1983,6 +1983,9 @@
1983 };
1983 };
1984 };
1984 };
1985 }
1985 }
1986+ function _lookup(no, yes, k, m2) {
1987+ return k in m2 ? yes(m2[k]) : no;
1988+ }
1986 function toArrayWithKey(f) {
1989 function toArrayWithKey(f) {
1987 return function(m2) {
1990 return function(m2) {
1988 var r = [];
1991 var r = [];
@@ -2083,6 +2086,37 @@
2083 })(s)(m2);
2086 })(s)(m2);
2084 });
2087 });
2085 };
2088 };
2089+ var unionWith = function(f) {
2090+ return function(m1) {
2091+ return function(m2) {
2092+ return mutate(function(s1) {
2093+ return foldM1(function(s2) {
2094+ return function(k) {
2095+ return function(v1) {
2096+ return poke2(k)(_lookup(v1, function(v2) {
2097+ return f(v1)(v2);
2098+ }, k, m2))(s2);
2099+ };
2100+ };
2101+ })(s1)(m1);
2102+ })(m2);
2103+ };
2104+ };
2105+ };
2106+ var semigroupObject = function(dictSemigroup) {
2107+ return {
2108+ append: unionWith(append(dictSemigroup))
2109+ };
2110+ };
2111+ var monoidObject = function(dictSemigroup) {
2112+ var semigroupObject1 = semigroupObject(dictSemigroup);
2113+ return {
2114+ mempty: empty2,
2115+ Semigroup0: function() {
2116+ return semigroupObject1;
2117+ }
2118+ };
2119+ };
2086 var fold2 = /* @__PURE__ */ _foldM(applyFlipped);
2120 var fold2 = /* @__PURE__ */ _foldM(applyFlipped);
2087 var foldMap2 = function(dictMonoid) {
2121 var foldMap2 = function(dictMonoid) {
2088 var append1 = append(dictMonoid.Semigroup0());
2122 var append1 = append(dictMonoid.Semigroup0());
@@ -2232,11 +2266,23 @@
2232 };
2266 };
2233 var semigroupRecordCons2 = /* @__PURE__ */ semigroupRecordCons(childrenIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(downIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(hoverIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(meatIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(nervesIsSymbol)()(semigroupRecordNil)(semigroupArray))(semigroupArray))(semigroupArray))(semigroupArray));
2267 var semigroupRecordCons2 = /* @__PURE__ */ semigroupRecordCons(childrenIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(downIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(hoverIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(meatIsSymbol)()(/* @__PURE__ */ semigroupRecordCons(nervesIsSymbol)()(semigroupRecordNil)(semigroupArray))(semigroupArray))(semigroupArray))(semigroupArray));
2234 var show2 = /* @__PURE__ */ show(showInt);
2268 var show2 = /* @__PURE__ */ show(showInt);
2235− var mempty2 = /* @__PURE__ */ mempty(monoidArray);
2236 var monoidRecord2 = /* @__PURE__ */ monoidRecord();
2269 var monoidRecord2 = /* @__PURE__ */ monoidRecord();
2237− var monoidRecordCons2 = /* @__PURE__ */ monoidRecordCons(childrenIsSymbol);
2270+ var monoidRecordCons2 = /* @__PURE__ */ monoidRecordCons(downIsSymbol);
2238− var monoidRecordCons1 = /* @__PURE__ */ monoidRecordCons(downIsSymbol)(monoidArray)()(/* @__PURE__ */ monoidRecordCons(hoverIsSymbol)(monoidArray)()(/* @__PURE__ */ monoidRecordCons(meatIsSymbol)(monoidArray)()(/* @__PURE__ */ monoidRecordCons(nervesIsSymbol)(monoidArray)()(monoidRecordNil))));
2271+ var monoidObject2 = /* @__PURE__ */ monoidObject(/* @__PURE__ */ semigroupRecord3(/* @__PURE__ */ semigroupRecordCons({
2272+ reflectSymbol: function() {
2273+ return "key";
2274+ }
2275+ })()(/* @__PURE__ */ semigroupRecordCons({
2276+ reflectSymbol: function() {
2277+ return "value";
2278+ }
2279+ })()(semigroupRecordNil)(semigroupString))(semigroupString)));
2280+ var monoidRecordCons1 = /* @__PURE__ */ monoidRecordCons(hoverIsSymbol);
2281+ var monoidRecordCons22 = /* @__PURE__ */ monoidRecordCons(meatIsSymbol);
2282+ var mempty2 = /* @__PURE__ */ mempty(monoidArray);
2283+ var monoidRecordCons3 = /* @__PURE__ */ monoidRecordCons(childrenIsSymbol);
2284+ var monoidRecordCons4 = /* @__PURE__ */ monoidRecordCons2(monoidArray)()(/* @__PURE__ */ monoidRecordCons1(monoidArray)()(/* @__PURE__ */ monoidRecordCons22(monoidArray)()(/* @__PURE__ */ monoidRecordCons(nervesIsSymbol)(monoidArray)()(monoidRecordNil))));
2239− var mempty1 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidRecord2(/* @__PURE__ */ monoidRecordCons2(monoidArray)()(monoidRecordCons1)));
2285+ var mempty1 = /* @__PURE__ */ mempty(/* @__PURE__ */ monoidRecord2(/* @__PURE__ */ monoidRecordCons3(monoidArray)()(monoidRecordCons4)));
2240 var foldMap3 = /* @__PURE__ */ foldMap2(monoidString);
2286 var foldMap3 = /* @__PURE__ */ foldMap2(monoidString);
2241 var show1 = /* @__PURE__ */ show(showNumber);
2287 var show1 = /* @__PURE__ */ show(showNumber);
2242 var mempty22 = /* @__PURE__ */ mempty(monoidUnit);
2288 var mempty22 = /* @__PURE__ */ mempty(monoidUnit);
@@ -2632,7 +2678,11 @@
2632 var semigroupSkinGrowth = {
2678 var semigroupSkinGrowth = {
2633 append: function(v) {
2679 append: function(v) {
2634 return function(v1) {
2680 return function(v1) {
2635− return union(v)(v1);
2681+ return {
2682+ meat: union(v.meat)(v1.meat),
2683+ hover: union(v.hover)(v1.hover),
2684+ down: union(v.down)(v1.down)
2685+ };
2636 };
2686 };
2637 }
2687 }
2638 };
2688 };
@@ -2711,7 +2761,7 @@
2711 }
2761 }
2712 };
2762 };
2713 var monoidSkinGrowth = {
2763 var monoidSkinGrowth = {
2714− mempty: empty2,
2764+ mempty: /* @__PURE__ */ mempty(/* @__PURE__ */ monoidRecord2(/* @__PURE__ */ monoidRecordCons2(monoidObject2)()(/* @__PURE__ */ monoidRecordCons1(monoidObject2)()(/* @__PURE__ */ monoidRecordCons22(monoidObject2)()(monoidRecordNil))))),
2715 Semigroup0: function() {
2765 Semigroup0: function() {
2716 return semigroupSkinGrowth;
2766 return semigroupSkinGrowth;
2717 }
2767 }
@@ -2732,7 +2782,7 @@
2732 };
2782 };
2733 var mempty4 = /* @__PURE__ */ mempty(monoidMutation);
2783 var mempty4 = /* @__PURE__ */ mempty(monoidMutation);
2734 var monoidGenericUI = function(dictMonoid) {
2784 var monoidGenericUI = function(dictMonoid) {
2735− var mempty52 = mempty(monoidRecord2(monoidRecordCons2(dictMonoid)()(monoidRecordCons1)));
2785+ var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
2736 var semigroupGenericUI1 = semigroupGenericUI(dictMonoid.Semigroup0());
2786 var semigroupGenericUI1 = semigroupGenericUI(dictMonoid.Semigroup0());
2737 return function(dictMonoid1) {
2787 return function(dictMonoid1) {
2738 var semigroupGenericUI2 = semigroupGenericUI1(dictMonoid1.Semigroup0());
2788 var semigroupGenericUI2 = semigroupGenericUI1(dictMonoid1.Semigroup0());
@@ -2800,15 +2850,27 @@
2800 return function(v1) {
2850 return function(v1) {
2801 return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
2851 return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
2802 };
2852 };
2803− })(v);
2853+ })(v.meat) + (foldMap3(function(className) {
2854+ return function(v1) {
2855+ return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
2856+ };
2857+ })(v.hover) + foldMap3(function(className) {
2858+ return function(v1) {
2859+ return "." + (className + ("{" + (v1.key + (":" + (v1.value + ";}")))));
2860+ };
2861+ })(v.down));
2804 };
2862 };
2805 var sk = function(cName) {
2863 var sk = function(cName) {
2806 return function(key) {
2864 return function(key) {
2807 return function(value12) {
2865 return function(value12) {
2808− return discard2(tell2(singleton2(cName)({
2866+ return discard2(tell2({
2867+ meat: singleton2(cName)({
2809− key,
2868+ key,
2810− value: value12
2869+ value: value12
2870+ }),
2871+ hover: empty2,
2872+ down: empty2
2811− })))(function() {
2873+ }))(function() {
2812 return pure2([cName]);
2874 return pure2([cName]);
2813 });
2875 });
2814 };
2876 };
@@ -3033,7 +3095,7 @@
3033 };
3095 };
3034 };
3096 };
3035 var onMouseDown = function(dictMonoid) {
3097 var onMouseDown = function(dictMonoid) {
3036− var mempty52 = mempty(monoidRecord2(monoidRecordCons2(dictMonoid)()(monoidRecordCons1)));
3098+ var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
3037 return function(v) {
3099 return function(v) {
3038 return new UI({
3100 return new UI({
3039 nerves: mempty52.nerves,
3101 nerves: mempty52.nerves,
@@ -3045,7 +3107,7 @@
3045 };
3107 };
3046 };
3108 };
3047 var onHover = function(dictMonoid) {
3109 var onHover = function(dictMonoid) {
3048− var mempty52 = mempty(monoidRecord2(monoidRecordCons2(dictMonoid)()(monoidRecordCons1)));
3110+ var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
3049 return function(v) {
3111 return function(v) {
3050 return new UI({
3112 return new UI({
3051 nerves: mempty52.nerves,
3113 nerves: mempty52.nerves,
@@ -3057,7 +3119,7 @@
3057 };
3119 };
3058 };
3120 };
3059 var m = function(dictMonoid) {
3121 var m = function(dictMonoid) {
3060− var mempty52 = mempty(monoidRecord2(monoidRecordCons2(dictMonoid)()(monoidRecordCons1)));
3122+ var mempty52 = mempty(monoidRecord2(monoidRecordCons3(dictMonoid)()(monoidRecordCons4)));
3061 return function(meat) {
3123 return function(meat) {
3062 return new UI({
3124 return new UI({
3063 nerves: mempty52.nerves,
3125 nerves: mempty52.nerves,
@@ -3094,10 +3156,10 @@
3094 var widthFill = [new Width(Fill.value), new Height(Fill.value)];
3156 var widthFill = [new Width(Fill.value), new Height(Fill.value)];
3095 var alignCenter = [new Align(X.value, Center.value), new Align(Y.value, Center.value)];
3157 var alignCenter = [new Align(X.value, Center.value), new Align(Y.value, Center.value)];
3096 var skn = function(ctx) {
3158 var skn = function(ctx) {
3097− return bind2(map2(function($482) {
3159+ return bind2(map2(function($513) {
3098 return function(v2) {
3160 return function(v2) {
3099 return append2(v2)(v.extraSkin);
3161 return append2(v2)(v.extraSkin);
3100− }(concat($482));
3162+ }(concat($513));
3101 })(traverse2(skin(ctx))(append2(v1.value0.meat)(append2(function() {
3163 })(traverse2(skin(ctx))(append2(v1.value0.meat)(append2(function() {
3102 if (ctx instanceof Span) {
3164 if (ctx instanceof Span) {
3103 return mempty2;
3165 return mempty2;
@@ -3115,7 +3177,7 @@
3115 return widthFill;
3177 return widthFill;
3116 }
3178 }
3117 ;
3179 ;
3118− throw new Error("Failed pattern match at Plum.View (line 435, column 16 - line 439, column 35): " + [ctx.constructor.name]);
3180+ throw new Error("Failed pattern match at Plum.View (line 445, column 16 - line 449, column 35): " + [ctx.constructor.name]);
3119 }())(function() {
3181 }())(function() {
3120 if (ctx instanceof Grid) {
3182 if (ctx instanceof Grid) {
3121 return alignCenter;
3183 return alignCenter;
@@ -3133,20 +3195,28 @@
3133 return alignCenter;
3195 return alignCenter;
3134 }
3196 }
3135 ;
3197 ;
3136− throw new Error("Failed pattern match at Plum.View (line 440, column 16 - line 444, column 37): " + [ctx.constructor.name]);
3198+ throw new Error("Failed pattern match at Plum.View (line 450, column 16 - line 454, column 37): " + [ctx.constructor.name]);
3137 }())))))(function(meatClasses) {
3199 }())))))(function(meatClasses) {
3138 var v2 = runWriter(traverse2(skin(ctx))(v1.value0.hover));
3200 var v2 = runWriter(traverse2(skin(ctx))(v1.value0.hover));
3139 return bind2(traverseWithIndex2(function(key) {
3201 return bind2(traverseWithIndex2(function(key) {
3140 return function(val) {
3202 return function(val) {
3203+ return tell2({
3204+ meat: empty2,
3141− return tell2(singleton2(key + "-hover:hover")(val));
3205+ hover: singleton2(key + "-hover:hover")(val),
3206+ down: empty2
3207+ });
3142 };
3208 };
3143− })(v2.value1))(function() {
3209+ })(v2.value1.meat))(function() {
3144 var v3 = runWriter(traverse2(skin(ctx))(v1.value0.down));
3210 var v3 = runWriter(traverse2(skin(ctx))(v1.value0.down));
3145 return bind2(traverseWithIndex2(function(key) {
3211 return bind2(traverseWithIndex2(function(key) {
3146 return function(val) {
3212 return function(val) {
3213+ return tell2({
3214+ meat: empty2,
3215+ hover: empty2,
3147− return tell2(singleton2(key + "-down:active")(val));
3216+ down: singleton2(key + "-down:active")(val)
3217+ });
3148 };
3218 };
3149− })(v3.value1))(function() {
3219+ })(v3.value1.meat))(function() {
3150 return pure2(append2(meatClasses)(append2(map1(function(v4) {
3220 return pure2(append2(meatClasses)(append2(map1(function(v4) {
3151 return v4 + "-hover";
3221 return v4 + "-hover";
3152 })(concat(v2.value0)))(map1(function(v4) {
3222 })(concat(v2.value0)))(map1(function(v4) {
@@ -3240,7 +3310,7 @@
3240 return pure2(h3("div")(mempty2)([]));
3310 return pure2(h3("div")(mempty2)([]));
3241 }
3311 }
3242 ;
3312 ;
3243− throw new Error("Failed pattern match at Plum.View (line 453, column 3 - line 494, column 37): " + [v1.value1.constructor.name]);
3313+ throw new Error("Failed pattern match at Plum.View (line 477, column 3 - line 518, column 37): " + [v1.value1.constructor.name]);
3244 };
3314 };
3245 };
3315 };
3246 };
3316 };
plum/src/Plum/View.purs+31−7
@@ -282,7 +282,7 @@ newtype Skin = Skin (Object String)
282
282
283sk :: String -> String -> String -> Writer SkinGrowth Classes
283sk :: String -> String -> String -> Writer SkinGrowth Classes
284sk cName key value = do
284sk cName key value = do
285− tell $ SkinGrowth $ Object.singleton cName { key, value }
285+ tell $ SkinGrowth $ { meat: Object.singleton cName { key, value }, hover: Object.empty, down: Object.empty }
286 pure [ cName ]
286 pure [ cName ]
287
287
288instance Semigroup Skin where
288instance Semigroup Skin where
@@ -412,17 +412,27 @@ instance Semigroup Mutation where
412instance Monoid Mutation where
412instance Monoid Mutation where
413 mempty = Mutation { extraSkin: mempty }
413 mempty = Mutation { extraSkin: mempty }
414
414
415−newtype SkinGrowth = SkinGrowth (Object { key :: String, value :: String })
415+newtype SkinGrowth = SkinGrowth
416+ { meat :: Object { key :: String, value :: String }
417+ , hover :: Object { key :: String, value :: String }
418+ , down :: Object { key :: String, value :: String }
419+ }
416
420
417styleSkinGrowth :: SkinGrowth -> String
421styleSkinGrowth :: SkinGrowth -> String
418styleSkinGrowth (SkinGrowth o) =
422styleSkinGrowth (SkinGrowth o) =
419− Object.foldMap (\className { key, value } -> "." <> className <> "{" <> key <> ":" <> value <> ";}") o
423+ Object.foldMap (\className { key, value } -> "." <> className <> "{" <> key <> ":" <> value <> ";}") o.meat
424+ <> Object.foldMap (\className { key, value } -> "." <> className <> "{" <> key <> ":" <> value <> ";}") o.hover
425+ <> Object.foldMap (\className { key, value } -> "." <> className <> "{" <> key <> ":" <> value <> ";}") o.down
420
426
421instance Semigroup SkinGrowth where
427instance Semigroup SkinGrowth where
422− append (SkinGrowth x) (SkinGrowth y) = SkinGrowth $ Object.union x y
428+ append (SkinGrowth x) (SkinGrowth y) = SkinGrowth $
429+ { meat: Object.union x.meat y.meat
430+ , hover: Object.union x.hover y.hover
431+ , down: Object.union x.down y.down
432+ }
423
433
424instance Monoid SkinGrowth where
434instance Monoid SkinGrowth where
425− mempty = SkinGrowth Object.empty
435+ mempty = SkinGrowth mempty
426
436
427growSkin :: forall msg. (msg -> Effect Unit) -> Mutation -> View msg -> Writer SkinGrowth VNode
437growSkin :: forall msg. (msg -> Effect Unit) -> Mutation -> View msg -> Writer SkinGrowth VNode
428growSkin fire (Mutation mutation) ({ meat, hover, down, nerves } /\ bones) = do
438growSkin fire (Mutation mutation) ({ meat, hover, down, nerves } /\ bones) = do
@@ -444,9 +454,23 @@ growSkin fire (Mutation mutation) ({ meat, hover, down, nerves } /\ bones) = do
444 Generic -> alignCenter
454 Generic -> alignCenter
445 )
455 )
446 let hoverClasses /\ (SkinGrowth hover') = runWriter $ traverse (skin ctx) hover
456 let hoverClasses /\ (SkinGrowth hover') = runWriter $ traverse (skin ctx) hover
457+ _ <- traverseWithIndex
458+ ( \key val -> tell $ SkinGrowth $
459+ { meat: Object.empty
447− _ <- traverseWithIndex (\key val -> tell $ SkinGrowth $ Object.singleton (key <> "-hover:hover") val) hover'
460+ , hover: Object.singleton (key <> "-hover:hover") val
461+ , down: Object.empty
462+ }
463+ )
464+ hover'.meat
448 let downClasses /\ (SkinGrowth down') = runWriter $ traverse (skin ctx) down
465 let downClasses /\ (SkinGrowth down') = runWriter $ traverse (skin ctx) down
466+ _ <- traverseWithIndex
467+ ( \key val -> tell $ SkinGrowth $
468+ { meat: Object.empty
469+ , hover: Object.empty
449− _ <- traverseWithIndex (\key val -> tell $ SkinGrowth $ Object.singleton (key <> "-down:active") val) down'
470+ , down: Object.singleton (key <> "-down:active") val
471+ }
472+ )
473+ down'.meat
450
474
451 pure $ meatClasses <> map (_ <> "-hover") (Array.concat hoverClasses) <> map (_ <> "-down") (Array.concat downClasses)
475 pure $ meatClasses <> map (_ <> "-hover") (Array.concat hoverClasses) <> map (_ <> "-down") (Array.concat downClasses)
452
476