| Index: third_party/polymer/components-chromium/paper-shadow/paper-shadow-extracted.js
|
| diff --git a/third_party/polymer/components-chromium/paper-shadow/paper-shadow-extracted.js b/third_party/polymer/components-chromium/paper-shadow/paper-shadow-extracted.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6082cde112255ef1a9dcb583922aea97f93a2f05
|
| --- /dev/null
|
| +++ b/third_party/polymer/components-chromium/paper-shadow/paper-shadow-extracted.js
|
| @@ -0,0 +1,149 @@
|
| +
|
| + Polymer('paper-shadow', {
|
| +
|
| + publish: {
|
| + /**
|
| + * If set, the shadow is applied to this node.
|
| + *
|
| + * @attribute target
|
| + * @type Element
|
| + * @default null
|
| + */
|
| + target: {value: null, reflect: true},
|
| +
|
| + /**
|
| + * The z-depth of this shadow, from 0-5.
|
| + *
|
| + * @attribute z
|
| + * @type number
|
| + * @default 1
|
| + */
|
| + z: {value: 1, reflect: true},
|
| +
|
| + /**
|
| + * If true, the shadow animates between z-depth changes.
|
| + *
|
| + * @attribute animated
|
| + * @type boolean
|
| + * @default false
|
| + */
|
| + animated: {value: false, reflect: true},
|
| +
|
| + /**
|
| + * Workaround: getComputedStyle is wrong sometimes so `paper-shadow`
|
| + * may overwrite the `position` CSS property. Set this property to
|
| + * true to prevent this.
|
| + *
|
| + * @attribute hasPosition
|
| + * @type boolean
|
| + * @default false
|
| + */
|
| + hasPosition: {value: false}
|
| + },
|
| +
|
| + // NOTE: include template so that styles are loaded, but remove
|
| + // so that we can decide dynamically what part to include
|
| + registerCallback: function(polymerElement) {
|
| + var template = polymerElement.querySelector('template');
|
| + this._style = template.content.querySelector('style');
|
| + this._style.removeAttribute('no-shim');
|
| + },
|
| +
|
| + fetchTemplate: function() {
|
| + return null;
|
| + },
|
| +
|
| + attached: function() {
|
| + this.installScopeStyle(this._style);
|
| +
|
| + // If no target is bound at attach, default the target to the parent
|
| + // element or shadow host.
|
| + if (!this.target) {
|
| + if (!this.parentElement && this.parentNode.host) {
|
| + this.target = this.parentNode.host;
|
| + } else if (this.parentElement && (window.ShadowDOMPolyfill ? this.parentElement !== wrap(document.body) : this.parentElement !== document.body)) {
|
| + this.target = this.parentElement;
|
| + }
|
| + }
|
| + },
|
| +
|
| + targetChanged: function(old) {
|
| + if (old) {
|
| + this.removeShadow(old);
|
| + }
|
| + if (this.target) {
|
| + this.addShadow(this.target);
|
| + }
|
| + },
|
| +
|
| + zChanged: function(old) {
|
| + if (this.target && this.target._paperShadow) {
|
| + var shadow = this.target._paperShadow;
|
| + ['top', 'bottom'].forEach(function(s) {
|
| + shadow[s].classList.remove('paper-shadow-' + s + '-z-' + old);
|
| + shadow[s].classList.add('paper-shadow-' + s + '-z-' + this.z);
|
| + }.bind(this));
|
| + }
|
| + },
|
| +
|
| + animatedChanged: function() {
|
| + if (this.target && this.target._paperShadow) {
|
| + var shadow = this.target._paperShadow;
|
| + ['top', 'bottom'].forEach(function(s) {
|
| + if (this.animated) {
|
| + shadow[s].classList.add('paper-shadow-animated');
|
| + } else {
|
| + shadow[s].classList.remove('paper-shadow-animated');
|
| + }
|
| + }.bind(this));
|
| + }
|
| + },
|
| +
|
| + addShadow: function(node) {
|
| + if (node._paperShadow) {
|
| + return;
|
| + }
|
| +
|
| + var computed = getComputedStyle(node);
|
| + if (!this.hasPosition && computed.position === 'static') {
|
| + node.style.position = 'relative';
|
| + }
|
| + node.style.overflow = 'visible';
|
| +
|
| + // Both the top and bottom shadows are children of the target, so
|
| + // it does not affect the classes and CSS properties of the target.
|
| + ['top', 'bottom'].forEach(function(s) {
|
| + var inner = (node._paperShadow && node._paperShadow[s]) || document.createElement('div');
|
| + inner.classList.add('paper-shadow');
|
| + inner.classList.add('paper-shadow-' + s + '-z-' + this.z);
|
| + if (this.animated) {
|
| + inner.classList.add('paper-shadow-animated');
|
| + }
|
| +
|
| + if (node.shadowRoot) {
|
| + node.shadowRoot.insertBefore(inner, node.shadowRoot.firstChild);
|
| + } else {
|
| + node.insertBefore(inner, node.firstChild);
|
| + }
|
| +
|
| + node._paperShadow = node._paperShadow || {};
|
| + node._paperShadow[s] = inner;
|
| + }.bind(this));
|
| +
|
| + },
|
| +
|
| + removeShadow: function(node) {
|
| + if (!node._paperShadow) {
|
| + return;
|
| + }
|
| +
|
| + ['top', 'bottom'].forEach(function(s) {
|
| + node._paperShadow[s].remove();
|
| + });
|
| + node._paperShadow = null;
|
| +
|
| + node.style.position = null;
|
| + }
|
| +
|
| + });
|
| +
|
|
|