| Index: appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
|
| diff --git a/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js b/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7b51d0f4fce8c49127fc31a1ef36559bd16321ac
|
| --- /dev/null
|
| +++ b/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
|
| @@ -0,0 +1,51 @@
|
| +/**
|
| +@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';
|
| +
|
| +export default class StyleCache {
|
| + constructor(typeMax = 100) {
|
| + // map element name -> [{properties, styleElement, scopeSelector}]
|
| + this.cache = {};
|
| + this.typeMax = typeMax;
|
| + }
|
| +
|
| + _validate(cacheEntry, properties, ownPropertyNames) {
|
| + for (let idx = 0; idx < ownPropertyNames.length; idx++) {
|
| + let pn = ownPropertyNames[idx];
|
| + if (cacheEntry.properties[pn] !== properties[pn]) {
|
| + return false;
|
| + }
|
| + }
|
| + return true;
|
| + }
|
| +
|
| + store(tagname, properties, styleElement, scopeSelector) {
|
| + let list = this.cache[tagname] || [];
|
| + list.push({properties, styleElement, scopeSelector});
|
| + if (list.length > this.typeMax) {
|
| + list.shift();
|
| + }
|
| + this.cache[tagname] = list;
|
| + }
|
| +
|
| + fetch(tagname, properties, ownPropertyNames) {
|
| + let list = this.cache[tagname];
|
| + if (!list) {
|
| + return;
|
| + }
|
| + // reverse list for most-recent lookups
|
| + for (let idx = list.length - 1; idx >= 0; idx--) {
|
| + let entry = list[idx];
|
| + if (this._validate(entry, properties, ownPropertyNames)) {
|
| + return entry;
|
| + }
|
| + }
|
| + }
|
| +}
|
|
|