| /** |
| @license |
| Copyright (c) 2017 The Polymer Project Authors. All rights reserved. |
| This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
| The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
| The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
| Code distributed by Google as part of the polymer project is also |
| subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
| */ |
| |
| 'use strict'; |
| |
| import { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js'; |
| |
| /** |
| * @param {Element} element |
| * @param {Object=} properties |
| */ |
| export function updateNativeProperties(element, properties) { |
| // remove previous properties |
| for (let p in properties) { |
| // NOTE: for bc with shim, don't apply null values. |
| if (p === null) { |
| element.style.removeProperty(p); |
| } else { |
| element.style.setProperty(p, properties[p]); |
| } |
| } |
| } |
| |
| /** |
| * @param {Element} element |
| * @param {string} property |
| * @return {string} |
| */ |
| export function getComputedStyleValue(element, property) { |
| /** |
| * @const {string} |
| */ |
| const value = window.getComputedStyle(element).getPropertyValue(property); |
| if (!value) { |
| return ''; |
| } else { |
| return value.trim(); |
| } |
| } |
| |
| /** |
| * return true if `cssText` contains a mixin definition or consumption |
| * @param {string} cssText |
| * @return {boolean} |
| */ |
| export function detectMixin(cssText) { |
| const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText); |
| // reset state of the regexes |
| MIXIN_MATCH.lastIndex = 0; |
| VAR_ASSIGN.lastIndex = 0; |
| return has; |
| } |