git.iko.soy/typeable/elm-ui
on master help sign in
keyed approach for cssom
750a57eMatthew Griffith
experiments/virtual-css/cssom.js+4−1
@@ -26,7 +26,10 @@
26 Object.keys(newStyles).forEach((key) => {
26 Object.keys(newStyles).forEach((key) => {
27 if (!ruleCache.has(key)) {
27 if (!ruleCache.has(key)) {
28 const newRule = newStyles[key]
28 const newRule = newStyles[key]
29+ for (var i = 0; i < newRule.length; i++) {
29− sheet.insertRule(newRule)
30+ sheet.insertRule(newRule[i])
31+ }
32+
30 ruleCache.add(key)
33 ruleCache.add(key)
31 }
34 }
32 });
35 });
src/Internal/Model.elm+21−36
@@ -530,25 +530,22 @@ finalizeNode has node attributes children embedMode parentContext =
530
530
531
531
532embedWith static opts styles children =
532embedWith static opts styles children =
533+ let
534+ dynamicStyleSheet =
535+ styles
536+ |> List.foldl reduceStyles ( Set.empty, renderFocusStyle opts.focus )
537+ |> Tuple.second
538+ -- |> reduceStylesRecursive Set.empty [ ]) --renderFocusStyle opts.focus ]
539+ -- |> sortedReduce
540+ |> toStyleSheet opts
541+ in
533 if static then
542 if static then
534 staticRoot opts
543 staticRoot opts
535− :: (styles
544+ :: dynamicStyleSheet
536− |> List.foldl reduceStyles ( Set.empty, renderFocusStyle opts.focus )
537− |> Tuple.second
538− -- |> reduceStylesRecursive Set.empty [ ]) --renderFocusStyle opts.focus ]
539− -- |> sortedReduce
540− |> toStyleSheet opts
541− )
542 :: children
545 :: children
543
546
544 else
547 else
545− (styles
548+ dynamicStyleSheet
546− |> List.foldl reduceStyles ( Set.empty, renderFocusStyle opts.focus )
547− |> Tuple.second
548− -- |> reduceStylesRecursive Set.empty [ ]) --renderFocusStyle opts.focus ]
549− -- |> sortedReduce
550− |> toStyleSheet opts
551− )
552 :: children
549 :: children
553
550
554
551
@@ -2568,28 +2565,16 @@ renderProps force (Property key val) existing =
2568
2565
2569
2566
2570encodeStyles options stylesheet =
2567encodeStyles options stylesheet =
2571− let
2568+ stylesheet
2572− combine style rendered =
2573− let
2574− renderedStyle =
2575− renderStyleRule options style Nothing
2576− in
2577− { rules = renderedStyle ++ rendered.rules
2578− , topLevel =
2579− case topLevelValue style of
2580− Nothing ->
2581− rendered.topLevel
2582−
2583− Just topLevel ->
2584− topLevel :: rendered.topLevel
2585− }
2586− in
2587− case List.foldl combine { topLevel = [], rules = [] } stylesheet of
2588− { topLevel, rules } ->
2589− -- TODO: top level values are still required
2590− rules
2591− |> List.map (\r -> ( r, Encode.string r ))
2569+ |> List.map
2570+ (\style ->
2571+ let
2572+ styled =
2573+ renderStyleRule options style Nothing
2574+ in
2575+ ( getStyleName style, Encode.list Encode.string styled )
2576+ )
2592− |> Encode.object
2577+ |> Encode.object
2593
2578
2594
2579
2595toStyleSheetString : OptionRecord -> List Style -> String
2580toStyleSheetString : OptionRecord -> List Style -> String