1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | var StyleNode = (function () {
|
7 | function StyleNode() {
|
8 | this.start = 0;
|
9 | this.end = 0;
|
10 | this.previous = null;
|
11 | this.parent = null;
|
12 | this.rules = null;
|
13 | this.parsedCssText = '';
|
14 | this.cssText = '';
|
15 | this.atRule = false;
|
16 | this.type = 0;
|
17 | this.keyframesName = '';
|
18 | this.selector = '';
|
19 | this.parsedSelector = '';
|
20 | }
|
21 | return StyleNode;
|
22 | }());
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | function parse(text) {
|
29 | text = clean(text);
|
30 | return parseCss(lex(text), text);
|
31 | }
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | function clean(cssText) {
|
38 | return cssText.replace(RX.comments, '').replace(RX.port, '');
|
39 | }
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | function lex(text) {
|
46 | var root = new StyleNode();
|
47 | root['start'] = 0;
|
48 | root['end'] = text.length;
|
49 | var n = root;
|
50 | for (var i = 0, l = text.length; i < l; i++) {
|
51 | if (text[i] === OPEN_BRACE) {
|
52 | if (!n['rules']) {
|
53 | n['rules'] = [];
|
54 | }
|
55 | var p = n;
|
56 | var previous = p['rules'][p['rules'].length - 1] || null;
|
57 | n = new StyleNode();
|
58 | n['start'] = i + 1;
|
59 | n['parent'] = p;
|
60 | n['previous'] = previous;
|
61 | p['rules'].push(n);
|
62 | }
|
63 | else if (text[i] === CLOSE_BRACE) {
|
64 | n['end'] = i + 1;
|
65 | n = n['parent'] || root;
|
66 | }
|
67 | }
|
68 | return root;
|
69 | }
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 | function parseCss(node, text) {
|
77 | var t = text.substring(node['start'], node['end'] - 1);
|
78 | node['parsedCssText'] = node['cssText'] = t.trim();
|
79 | if (node.parent) {
|
80 | var ss = node.previous ? node.previous['end'] : node.parent['start'];
|
81 | t = text.substring(ss, node['start'] - 1);
|
82 | t = _expandUnicodeEscapes(t);
|
83 | t = t.replace(RX.multipleSpaces, ' ');
|
84 |
|
85 |
|
86 | t = t.substring(t.lastIndexOf(';') + 1);
|
87 | var s = node['parsedSelector'] = node['selector'] = t.trim();
|
88 | node['atRule'] = (s.indexOf(AT_START) === 0);
|
89 |
|
90 | if (node['atRule']) {
|
91 | if (s.indexOf(MEDIA_START) === 0) {
|
92 | node['type'] = types.MEDIA_RULE;
|
93 | }
|
94 | else if (s.match(RX.keyframesRule)) {
|
95 | node['type'] = types.KEYFRAMES_RULE;
|
96 | node['keyframesName'] = node['selector'].split(RX.multipleSpaces).pop();
|
97 | }
|
98 | }
|
99 | else {
|
100 | if (s.indexOf(VAR_START) === 0) {
|
101 | node['type'] = types.MIXIN_RULE;
|
102 | }
|
103 | else {
|
104 | node['type'] = types.STYLE_RULE;
|
105 | }
|
106 | }
|
107 | }
|
108 | var r$ = node['rules'];
|
109 | if (r$) {
|
110 | for (var i = 0, l = r$.length, r = void 0; (i < l) && (r = r$[i]); i++) {
|
111 | parseCss(r, text);
|
112 | }
|
113 | }
|
114 | return node;
|
115 | }
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 | function _expandUnicodeEscapes(s) {
|
123 | return s.replace(/\\([0-9a-f]{1,6})\s/gi, function () {
|
124 | var code = arguments[1], repeat = 6 - code.length;
|
125 | while (repeat--) {
|
126 | code = '0' + code;
|
127 | }
|
128 | return '\\' + code;
|
129 | });
|
130 | }
|
131 |
|
132 | var types = {
|
133 | STYLE_RULE: 1,
|
134 | KEYFRAMES_RULE: 7,
|
135 | MEDIA_RULE: 4,
|
136 | MIXIN_RULE: 1000
|
137 | };
|
138 | var OPEN_BRACE = '{';
|
139 | var CLOSE_BRACE = '}';
|
140 |
|
141 | var RX = {
|
142 | comments: /\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,
|
143 | port: /@import[^;]*;/gim,
|
144 | customProp: /(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,
|
145 | mixinProp: /(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,
|
146 | mixinApply: /@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,
|
147 | varApply: /[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,
|
148 | keyframesRule: /^@[^\s]*keyframes/,
|
149 | multipleSpaces: /\s+/g
|
150 | };
|
151 | var VAR_START = '--';
|
152 | var MEDIA_START = '@media';
|
153 | var AT_START = '@';
|
154 | function findRegex(regex, cssText, offset) {
|
155 | regex['lastIndex'] = 0;
|
156 | var r = cssText.substring(offset).match(regex);
|
157 | if (r) {
|
158 | var start = offset + r['index'];
|
159 | return {
|
160 | start: start,
|
161 | end: start + r[0].length
|
162 | };
|
163 | }
|
164 | return null;
|
165 | }
|
166 | var VAR_USAGE_START = /\bvar\(/;
|
167 | var VAR_ASSIGN_START = /\B--[\w-]+\s*:/;
|
168 | var COMMENTS = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim;
|
169 | var TRAILING_LINES = /^[\t ]+\n/gm;
|
170 | function resolveVar(props, prop, fallback) {
|
171 | if (props[prop]) {
|
172 | return props[prop];
|
173 | }
|
174 | if (fallback) {
|
175 | return executeTemplate(fallback, props);
|
176 | }
|
177 | return '';
|
178 | }
|
179 | function findVarEndIndex(cssText, offset) {
|
180 | var count = 0;
|
181 | var i = offset;
|
182 | for (; i < cssText.length; i++) {
|
183 | var c = cssText[i];
|
184 | if (c === '(') {
|
185 | count++;
|
186 | }
|
187 | else if (c === ')') {
|
188 | count--;
|
189 | if (count <= 0) {
|
190 | return i + 1;
|
191 | }
|
192 | }
|
193 | }
|
194 | return i;
|
195 | }
|
196 | function parseVar(cssText, offset) {
|
197 | var varPos = findRegex(VAR_USAGE_START, cssText, offset);
|
198 | if (!varPos) {
|
199 | return null;
|
200 | }
|
201 | var endVar = findVarEndIndex(cssText, varPos.start);
|
202 | var varContent = cssText.substring(varPos.end, endVar - 1);
|
203 | var _a = varContent.split(','), propName = _a[0], fallback = _a.slice(1);
|
204 | return {
|
205 | start: varPos.start,
|
206 | end: endVar,
|
207 | propName: propName.trim(),
|
208 | fallback: fallback.length > 0 ? fallback.join(',').trim() : undefined
|
209 | };
|
210 | }
|
211 | function compileVar(cssText, template, offset) {
|
212 | var varMeta = parseVar(cssText, offset);
|
213 | if (!varMeta) {
|
214 | template.push(cssText.substring(offset, cssText.length));
|
215 | return cssText.length;
|
216 | }
|
217 | var propName = varMeta.propName;
|
218 | var fallback = varMeta.fallback != null ? compileTemplate(varMeta.fallback) : undefined;
|
219 | template.push(cssText.substring(offset, varMeta.start), function (params) { return resolveVar(params, propName, fallback); });
|
220 | return varMeta.end;
|
221 | }
|
222 | function executeTemplate(template, props) {
|
223 | var final = '';
|
224 | for (var i = 0; i < template.length; i++) {
|
225 | var s = template[i];
|
226 | final += (typeof s === 'string')
|
227 | ? s
|
228 | : s(props);
|
229 | }
|
230 | return final;
|
231 | }
|
232 | function findEndValue(cssText, offset) {
|
233 | var onStr = false;
|
234 | var double = false;
|
235 | var i = offset;
|
236 | for (; i < cssText.length; i++) {
|
237 | var c = cssText[i];
|
238 | if (onStr) {
|
239 | if (double && c === '"') {
|
240 | onStr = false;
|
241 | }
|
242 | if (!double && c === '\'') {
|
243 | onStr = false;
|
244 | }
|
245 | }
|
246 | else {
|
247 | if (c === '"') {
|
248 | onStr = true;
|
249 | double = true;
|
250 | }
|
251 | else if (c === '\'') {
|
252 | onStr = true;
|
253 | double = false;
|
254 | }
|
255 | else if (c === ';') {
|
256 | return i + 1;
|
257 | }
|
258 | else if (c === '}') {
|
259 | return i;
|
260 | }
|
261 | }
|
262 | }
|
263 | return i;
|
264 | }
|
265 | function removeCustomAssigns(cssText) {
|
266 | var final = '';
|
267 | var offset = 0;
|
268 | while (true) {
|
269 | var assignPos = findRegex(VAR_ASSIGN_START, cssText, offset);
|
270 | var start = assignPos ? assignPos.start : cssText.length;
|
271 | final += cssText.substring(offset, start);
|
272 | if (assignPos) {
|
273 | offset = findEndValue(cssText, start);
|
274 | }
|
275 | else {
|
276 | break;
|
277 | }
|
278 | }
|
279 | return final;
|
280 | }
|
281 | function compileTemplate(cssText) {
|
282 | var index = 0;
|
283 | cssText = cssText.replace(COMMENTS, '');
|
284 | cssText = removeCustomAssigns(cssText)
|
285 | .replace(TRAILING_LINES, '');
|
286 | var segments = [];
|
287 | while (index < cssText.length) {
|
288 | index = compileVar(cssText, segments, index);
|
289 | }
|
290 | return segments;
|
291 | }
|
292 | function resolveValues(selectors) {
|
293 | var props = {};
|
294 | selectors.forEach(function (selector) {
|
295 | selector.declarations.forEach(function (dec) {
|
296 | props[dec.prop] = dec.value;
|
297 | });
|
298 | });
|
299 | var propsValues = {};
|
300 | var entries = Object.entries(props);
|
301 | var _loop_1 = function (i) {
|
302 | var dirty = false;
|
303 | entries.forEach(function (_a) {
|
304 | var key = _a[0], value = _a[1];
|
305 | var propValue = executeTemplate(value, propsValues);
|
306 | if (propValue !== propsValues[key]) {
|
307 | propsValues[key] = propValue;
|
308 | dirty = true;
|
309 | }
|
310 | });
|
311 | if (!dirty) {
|
312 | return "break";
|
313 | }
|
314 | };
|
315 | for (var i = 0; i < 10; i++) {
|
316 | var state_1 = _loop_1();
|
317 | if (state_1 === "break")
|
318 | break;
|
319 | }
|
320 | return propsValues;
|
321 | }
|
322 | function getSelectors(root, index) {
|
323 | if (index === void 0) {
|
324 | index = 0;
|
325 | }
|
326 | if (!root.rules) {
|
327 | return [];
|
328 | }
|
329 | var selectors = [];
|
330 | root.rules
|
331 | .filter(function (rule) { return rule.type === types.STYLE_RULE; })
|
332 | .forEach(function (rule) {
|
333 | var declarations = getDeclarations(rule.cssText);
|
334 | if (declarations.length > 0) {
|
335 | rule.parsedSelector.split(',').forEach(function (selector) {
|
336 | selector = selector.trim();
|
337 | selectors.push({
|
338 | selector: selector,
|
339 | declarations: declarations,
|
340 | specificity: computeSpecificity(),
|
341 | nu: index
|
342 | });
|
343 | });
|
344 | }
|
345 | index++;
|
346 | });
|
347 | return selectors;
|
348 | }
|
349 | function computeSpecificity(_selector) {
|
350 | return 1;
|
351 | }
|
352 | var IMPORTANT = '!important';
|
353 | var FIND_DECLARATIONS = /(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gm;
|
354 | function getDeclarations(cssText) {
|
355 | var declarations = [];
|
356 | var xArray;
|
357 | while (xArray = FIND_DECLARATIONS.exec(cssText.trim())) {
|
358 | var _a = normalizeValue(xArray[2]), value = _a.value, important = _a.important;
|
359 | declarations.push({
|
360 | prop: xArray[1].trim(),
|
361 | value: compileTemplate(value),
|
362 | important: important,
|
363 | });
|
364 | }
|
365 | return declarations;
|
366 | }
|
367 | function normalizeValue(value) {
|
368 | var regex = /\s+/gim;
|
369 | value = value.replace(regex, ' ').trim();
|
370 | var important = value.endsWith(IMPORTANT);
|
371 | if (important) {
|
372 | value = value.substr(0, value.length - IMPORTANT.length).trim();
|
373 | }
|
374 | return {
|
375 | value: value,
|
376 | important: important
|
377 | };
|
378 | }
|
379 | function getActiveSelectors(hostEl, hostScopeMap, globalScopes) {
|
380 |
|
381 |
|
382 | var scopes = [];
|
383 | var scopesForElement = getScopesForElement(hostScopeMap, hostEl);
|
384 |
|
385 | globalScopes.forEach(function (s) { return scopes.push(s); });
|
386 |
|
387 | scopesForElement.forEach(function (s) { return scopes.push(s); });
|
388 |
|
389 |
|
390 | var selectorSet = getSelectorsForScopes(scopes);
|
391 |
|
392 | var activeSelectors = selectorSet.filter(function (selector) { return matches(hostEl, selector.selector); });
|
393 |
|
394 | return sortSelectors(activeSelectors);
|
395 | }
|
396 | function getScopesForElement(hostTemplateMap, node) {
|
397 | var scopes = [];
|
398 | while (node) {
|
399 | var scope = hostTemplateMap.get(node);
|
400 | if (scope) {
|
401 | scopes.push(scope);
|
402 | }
|
403 | node = node.parentElement;
|
404 | }
|
405 | return scopes;
|
406 | }
|
407 | function getSelectorsForScopes(scopes) {
|
408 | var selectors = [];
|
409 | scopes.forEach(function (scope) {
|
410 | selectors.push.apply(selectors, scope.selectors);
|
411 | });
|
412 | return selectors;
|
413 | }
|
414 | function sortSelectors(selectors) {
|
415 | selectors.sort(function (a, b) {
|
416 | if (a.specificity === b.specificity) {
|
417 | return a.nu - b.nu;
|
418 | }
|
419 | return a.specificity - b.specificity;
|
420 | });
|
421 | return selectors;
|
422 | }
|
423 | function matches(el, selector) {
|
424 | return selector === ':root' || selector === 'html' || el.matches(selector);
|
425 | }
|
426 | function parseCSS(original) {
|
427 | var ast = parse(original);
|
428 | var template = compileTemplate(original);
|
429 | var selectors = getSelectors(ast);
|
430 | return {
|
431 | original: original,
|
432 | template: template,
|
433 | selectors: selectors,
|
434 | usesCssVars: template.length > 1
|
435 | };
|
436 | }
|
437 | function addGlobalStyle(globalScopes, styleEl) {
|
438 | if (globalScopes.some(function (css) { return css.styleEl === styleEl; })) {
|
439 | return false;
|
440 | }
|
441 | var css = parseCSS(styleEl.textContent);
|
442 | css.styleEl = styleEl;
|
443 | globalScopes.push(css);
|
444 | return true;
|
445 | }
|
446 | function updateGlobalScopes(scopes) {
|
447 | var selectors = getSelectorsForScopes(scopes);
|
448 | var props = resolveValues(selectors);
|
449 | scopes.forEach(function (scope) {
|
450 | if (scope.usesCssVars) {
|
451 | scope.styleEl.textContent = executeTemplate(scope.template, props);
|
452 | }
|
453 | });
|
454 | }
|
455 | function reScope(scope, scopeId) {
|
456 | var template = scope.template.map(function (segment) {
|
457 | return (typeof segment === 'string')
|
458 | ? replaceScope(segment, scope.scopeId, scopeId)
|
459 | : segment;
|
460 | });
|
461 | var selectors = scope.selectors.map(function (sel) {
|
462 | return Object.assign(Object.assign({}, sel), { selector: replaceScope(sel.selector, scope.scopeId, scopeId) });
|
463 | });
|
464 | return Object.assign(Object.assign({}, scope), { template: template,
|
465 | selectors: selectors,
|
466 | scopeId: scopeId });
|
467 | }
|
468 | function replaceScope(original, oldScopeId, newScopeId) {
|
469 | original = replaceAll(original, "\\." + oldScopeId, "." + newScopeId);
|
470 | return original;
|
471 | }
|
472 | function replaceAll(input, find, replace) {
|
473 | return input.replace(new RegExp(find, 'g'), replace);
|
474 | }
|
475 | function loadDocument(doc, globalScopes) {
|
476 | loadDocumentStyles(doc, globalScopes);
|
477 | return loadDocumentLinks(doc, globalScopes);
|
478 | }
|
479 | function startWatcher(doc, globalScopes) {
|
480 | var mutation = new MutationObserver(function () {
|
481 | if (loadDocumentStyles(doc, globalScopes)) {
|
482 | updateGlobalScopes(globalScopes);
|
483 | }
|
484 | });
|
485 | mutation.observe(document.head, { childList: true });
|
486 | }
|
487 | function loadDocumentLinks(doc, globalScopes) {
|
488 | var promises = [];
|
489 | var linkElms = doc.querySelectorAll('link[rel="stylesheet"][href]:not([data-no-shim])');
|
490 | for (var i = 0; i < linkElms.length; i++) {
|
491 | promises.push(addGlobalLink(doc, globalScopes, linkElms[i]));
|
492 | }
|
493 | return Promise.all(promises);
|
494 | }
|
495 | function loadDocumentStyles(doc, globalScopes) {
|
496 | var styleElms = Array.from(doc.querySelectorAll('style:not([data-styles]):not([data-no-shim])'));
|
497 | return styleElms
|
498 | .map(function (style) { return addGlobalStyle(globalScopes, style); })
|
499 | .some(Boolean);
|
500 | }
|
501 | function addGlobalLink(doc, globalScopes, linkElm) {
|
502 | var url = linkElm.href;
|
503 | return fetch(url).then(function (rsp) { return rsp.text(); }).then(function (text) {
|
504 | if (hasCssVariables(text) && linkElm.parentNode) {
|
505 | if (hasRelativeUrls(text)) {
|
506 | text = fixRelativeUrls(text, url);
|
507 | }
|
508 | var styleEl = doc.createElement('style');
|
509 | styleEl.setAttribute('data-styles', '');
|
510 | styleEl.textContent = text;
|
511 | addGlobalStyle(globalScopes, styleEl);
|
512 | linkElm.parentNode.insertBefore(styleEl, linkElm);
|
513 | linkElm.remove();
|
514 | }
|
515 | }).catch(function (err) {
|
516 | console.error(err);
|
517 | });
|
518 | }
|
519 |
|
520 |
|
521 |
|
522 |
|
523 |
|
524 |
|
525 |
|
526 |
|
527 |
|
528 |
|
529 | var CSS_VARIABLE_REGEXP = /[\s;{]--[-a-zA-Z0-9]+\s*:/m;
|
530 | function hasCssVariables(css) {
|
531 | return css.indexOf('var(') > -1 || CSS_VARIABLE_REGEXP.test(css);
|
532 | }
|
533 |
|
534 | var CSS_URL_REGEXP = /url[\s]*\([\s]*['"]?(?!(?:https?|data)\:|\/)([^\'\"\)]*)[\s]*['"]?\)[\s]*/gim;
|
535 | function hasRelativeUrls(css) {
|
536 | CSS_URL_REGEXP.lastIndex = 0;
|
537 | return CSS_URL_REGEXP.test(css);
|
538 | }
|
539 | function fixRelativeUrls(css, originalUrl) {
|
540 |
|
541 | var basePath = originalUrl.replace(/[^/]*$/, '');
|
542 |
|
543 | return css.replace(CSS_URL_REGEXP, function (fullMatch, url) {
|
544 |
|
545 |
|
546 | var relativeUrl = basePath + url;
|
547 | return fullMatch.replace(url, relativeUrl);
|
548 | });
|
549 | }
|
550 | var CustomStyle = (function () {
|
551 | function CustomStyle(win, doc) {
|
552 | this.win = win;
|
553 | this.doc = doc;
|
554 | this.count = 0;
|
555 | this.hostStyleMap = new WeakMap();
|
556 | this.hostScopeMap = new WeakMap();
|
557 | this.globalScopes = [];
|
558 | this.scopesMap = new Map();
|
559 | this.didInit = false;
|
560 | }
|
561 | CustomStyle.prototype.initShim = function () {
|
562 | var _this = this;
|
563 | if (this.didInit) {
|
564 | return Promise.resolve();
|
565 | }
|
566 | else {
|
567 | this.didInit = true;
|
568 | return new Promise(function (resolve) {
|
569 | _this.win.requestAnimationFrame(function () {
|
570 | startWatcher(_this.doc, _this.globalScopes);
|
571 | loadDocument(_this.doc, _this.globalScopes).then(function () { return resolve(); });
|
572 | });
|
573 | });
|
574 | }
|
575 | };
|
576 | CustomStyle.prototype.addLink = function (linkEl) {
|
577 | var _this = this;
|
578 | return addGlobalLink(this.doc, this.globalScopes, linkEl).then(function () {
|
579 | _this.updateGlobal();
|
580 | });
|
581 | };
|
582 | CustomStyle.prototype.addGlobalStyle = function (styleEl) {
|
583 | if (addGlobalStyle(this.globalScopes, styleEl)) {
|
584 | this.updateGlobal();
|
585 | }
|
586 | };
|
587 | CustomStyle.prototype.createHostStyle = function (hostEl, cssScopeId, cssText, isScoped) {
|
588 | if (this.hostScopeMap.has(hostEl)) {
|
589 | throw new Error('host style already created');
|
590 | }
|
591 | var baseScope = this.registerHostTemplate(cssText, cssScopeId, isScoped);
|
592 | var styleEl = this.doc.createElement('style');
|
593 | styleEl.setAttribute('data-no-shim', '');
|
594 | if (!baseScope.usesCssVars) {
|
595 |
|
596 | styleEl.textContent = cssText;
|
597 | }
|
598 | else if (isScoped) {
|
599 |
|
600 | styleEl['s-sc'] = cssScopeId = baseScope.scopeId + "-" + this.count;
|
601 | styleEl.textContent = '/*needs update*/';
|
602 | this.hostStyleMap.set(hostEl, styleEl);
|
603 | this.hostScopeMap.set(hostEl, reScope(baseScope, cssScopeId));
|
604 | this.count++;
|
605 | }
|
606 | else {
|
607 |
|
608 | baseScope.styleEl = styleEl;
|
609 | if (!baseScope.usesCssVars) {
|
610 | styleEl.textContent = executeTemplate(baseScope.template, {});
|
611 | }
|
612 | this.globalScopes.push(baseScope);
|
613 | this.updateGlobal();
|
614 | this.hostScopeMap.set(hostEl, baseScope);
|
615 | }
|
616 | return styleEl;
|
617 | };
|
618 | CustomStyle.prototype.removeHost = function (hostEl) {
|
619 | var css = this.hostStyleMap.get(hostEl);
|
620 | if (css) {
|
621 | css.remove();
|
622 | }
|
623 | this.hostStyleMap.delete(hostEl);
|
624 | this.hostScopeMap.delete(hostEl);
|
625 | };
|
626 | CustomStyle.prototype.updateHost = function (hostEl) {
|
627 | var scope = this.hostScopeMap.get(hostEl);
|
628 | if (scope && scope.usesCssVars && scope.isScoped) {
|
629 | var styleEl = this.hostStyleMap.get(hostEl);
|
630 | if (styleEl) {
|
631 | var selectors = getActiveSelectors(hostEl, this.hostScopeMap, this.globalScopes);
|
632 | var props = resolveValues(selectors);
|
633 | styleEl.textContent = executeTemplate(scope.template, props);
|
634 | }
|
635 | }
|
636 | };
|
637 | CustomStyle.prototype.updateGlobal = function () {
|
638 | updateGlobalScopes(this.globalScopes);
|
639 | };
|
640 | CustomStyle.prototype.registerHostTemplate = function (cssText, scopeId, isScoped) {
|
641 | var scope = this.scopesMap.get(scopeId);
|
642 | if (!scope) {
|
643 | scope = parseCSS(cssText);
|
644 | scope.scopeId = scopeId;
|
645 | scope.isScoped = isScoped;
|
646 | this.scopesMap.set(scopeId, scope);
|
647 | }
|
648 | return scope;
|
649 | };
|
650 | return CustomStyle;
|
651 | }());
|
652 | var win = window;
|
653 | function needsShim() {
|
654 | return !(win.CSS && win.CSS.supports && win.CSS.supports('color', 'var(--c)'));
|
655 | }
|
656 | if (!win.__stencil_cssshim && needsShim()) {
|
657 | win.__stencil_cssshim = new CustomStyle(win, document);
|
658 | }
|