UNPKG

webdash-readme-preview

Version:
42 lines (38 loc) 1.89 kB
/** @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 let nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']); export let nativeCssVariables; /** * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings */ function calcCssVariables(settings) { if (settings && settings['shimcssproperties']) { nativeCssVariables = false; } else { // chrome 49 has semi-working css vars, check if box-shadow works // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782 // However, shim css custom properties are only supported with ShadyDOM enabled, // so fall back on native if we do not detect ShadyDOM // Edge 15: custom properties used in ::before and ::after will also be used in the parent element // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/ nativeCssVariables = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/) && window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)')); } } if (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) { nativeCssVariables = window.ShadyCSS.nativeCss; } else if (window.ShadyCSS) { calcCssVariables(window.ShadyCSS); // reset window variable to let ShadyCSS API take its place window.ShadyCSS = undefined; } else { calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']); }