| Index: sky/examples/fn/lib/style.dart
|
| diff --git a/sky/examples/fn/lib/style.dart b/sky/examples/fn/lib/style.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c89db5e73dda9228af18f74fe01c5b6ad2c14744
|
| --- /dev/null
|
| +++ b/sky/examples/fn/lib/style.dart
|
| @@ -0,0 +1,36 @@
|
| +part of fn;
|
| +
|
| +class Style {
|
| + final String _className;
|
| + static Map<String, Style> _cache = null;
|
| +
|
| + static int nextStyleId = 1;
|
| +
|
| + static String nextClassName(String styles) {
|
| + assert(sky.document != null);
|
| + var className = "style$nextStyleId";
|
| + nextStyleId++;
|
| +
|
| + var styleNode = sky.document.createElement('style');
|
| + styleNode.setChild(new sky.Text(".$className { $styles }"));
|
| + sky.document.appendChild(styleNode);
|
| +
|
| + return className;
|
| + }
|
| +
|
| + factory Style(String styles) {
|
| + if (_cache == null) {
|
| + _cache = new HashMap<String, Style>();
|
| + }
|
| +
|
| + var style = _cache[styles];
|
| + if (style == null) {
|
| + style = new Style._internal(nextClassName(styles));
|
| + _cache[styles] = style;
|
| + }
|
| +
|
| + return style;
|
| + }
|
| +
|
| + Style._internal(this._className);
|
| +}
|
|
|