git.iko.soy/typeable/elm-ui
on master help sign in
keyed approach for cssom
commit750a57e783ff2269fbcdf1cceb877d7338fc53c2 authorMatthew Griffith <mdg.griffith@gmail.com> dateSun 7 Jul 2019, 20:51 (7 years ago) parentac74e54
2 files changed+25−37
experiments/virtual-css/cssom.js+4−1 src/Internal/Model.elm+21−36
experiments/virtual-css/cssom.js+4−1
@@ -26,7 +26,10 @@
2626 Object.keys(newStyles).forEach((key) => {
2727 if (!ruleCache.has(key)) {
2828 const newRule = newStyles[key]
29− sheet.insertRule(newRule)
29+ for (var i = 0; i < newRule.length; i++) {
30+ sheet.insertRule(newRule[i])
31+ }
32+
3033 ruleCache.add(key)
3134 }
3235 });
src/Internal/Model.elm+21−36
@@ -530,25 +530,22 @@ finalizeNode has node attributes children embedMode parentContext =
530530
531531
532532embedWith 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
533542 if static then
534543 staticRoot opts
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− )
544+ :: dynamicStyleSheet
542545 :: children
543546
544547 else
545− (styles
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− )
548+ dynamicStyleSheet
552549 :: children
553550
554551
@@ -2568,28 +2565,16 @@ renderProps force (Property key val) existing =
25682565
25692566
25702567encodeStyles options stylesheet =
2571− let
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 ))
2592− |> Encode.object
2568+ stylesheet
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+ )
2577+ |> Encode.object
25932578
25942579
25952580toStyleSheetString : OptionRecord -> List Style -> String