aboutsummaryrefslogtreecommitdiff
path: root/catapult/third_party/polymer/components/shadycss/src/style-settings.js
diff options
context:
space:
mode:
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.js53
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