| <!-- |
| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| --> |
| <import src="sky-element.sky" /> |
| |
| <sky-element attributes="type:string, size:number"> |
| <template> |
| <img /> |
| </template> |
| <script> |
| import "dart:sky"; |
| |
| const String kAssetBase = '/sky/assets/material-design-icons'; |
| |
| @Tagname('sky-icon') |
| class SkyIcon extends SkyElement { |
| Element _img; |
| |
| void _setSize(int size) { |
| _img.style['height'] = '${size}px'; |
| _img.style['width'] = '${size}px'; |
| } |
| |
| void _setSrc(String type, int size) { |
| List<String> parts = type.split('/'); |
| if (parts.length < 2) |
| return; |
| String category = parts[0]; |
| String subtype = parts[1]; |
| _img.src = '${kAssetBase}/${category}/2x_web/ic_${subtype}_${size}dp.png'; |
| } |
| |
| void shadowRootReady() { |
| _img = shadowRoot.firstElementChild; |
| int size = this.size.floor(); |
| _setSize(size); |
| _setSrc(type, size); |
| } |
| |
| void typeChanged(String oldValue, String newValue) { |
| if (_img != null) |
| _setSrc(newValue, size.floor()); |
| } |
| |
| void sizeChanged(double oldValue, double newValue) { |
| if (_img != null) { |
| _setSize(newValue.floor()); |
| _setSrc(type, newValue.floor()); |
| } |
| } |
| } |
| |
| _init(script) => register(script, SkyIcon); |
| </script> |
| </sky-element> |