/** @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 {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars /** @const {string} */ const infoKey = '__styleInfo'; export default class StyleInfo { /** * @param {Element} node * @return {StyleInfo} */ static get(node) { if (node) { return node[infoKey]; } else { return null; } } /** * @param {!Element} node * @param {StyleInfo} styleInfo * @return {StyleInfo} */ static set(node, styleInfo) { node[infoKey] = styleInfo; return styleInfo; } /** * @param {StyleNode} ast * @param {Node=} placeholder * @param {Array=} ownStylePropertyNames * @param {string=} elementName * @param {string=} typeExtension * @param {string=} cssBuild */ constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) { /** @type {StyleNode} */ this.styleRules = ast || null; /** @type {Node} */ this.placeholder = placeholder || null; /** @type {!Array} */ this.ownStylePropertyNames = ownStylePropertyNames || []; /** @type {Array} */ this.overrideStyleProperties = null; /** @type {string} */ this.elementName = elementName || ''; /** @type {string} */ this.cssBuild = cssBuild || ''; /** @type {string} */ this.typeExtension = typeExtension || ''; /** @type {Object} */ this.styleProperties = null; /** @type {?string} */ this.scopeSelector = null; /** @type {HTMLStyleElement} */ this.customStyle = null; } _getStyleRules() { return this.styleRules; } } /* eslint-disable-next-line no-self-assign */ StyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;