diff options
Diffstat (limited to 'catapult/third_party/polymer/components/shadycss/src/style-settings.js')
-rw-r--r-- | catapult/third_party/polymer/components/shadycss/src/style-settings.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/shadycss/src/style-settings.js b/catapult/third_party/polymer/components/shadycss/src/style-settings.js new file mode 100644 index 00000000..55757067 --- /dev/null +++ b/catapult/third_party/polymer/components/shadycss/src/style-settings.js @@ -0,0 +1,53 @@ +/** +@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 const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']); +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)')); + } +} + +/** @type {string | undefined} */ +export let cssBuild; +if (window.ShadyCSS && window.ShadyCSS.cssBuild !== undefined) { + cssBuild = window.ShadyCSS.cssBuild; +} + +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']); +} + +// Hack for type error under new type inference which doesn't like that +// nativeCssVariables is updated in a function and assigns the type +// `function(): ?` instead of `boolean`. +export const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);
\ No newline at end of file |