UNPKG

@haxtheweb/haxcms-nodejs

Version:

HAXcms single and multisite nodejs server, api, and administration

51 lines (46 loc) 3.07 kB
/** @license Copyright (c) 2015 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 */ import"../../polymer/polymer-legacy.js";import"../../iron-flex-layout/iron-flex-layout.js";import{IronResizableBehavior as t}from"../../iron-resizable-behavior/iron-resizable-behavior.js";import{Polymer as e}from"../../polymer/lib/legacy/polymer-fn.js";import{html as i}from"../../polymer/lib/utils/html-tag.js";import{AppScrollEffectsBehavior as o}from"../app-scroll-effects/app-scroll-effects-behavior.js";e({_template:i` <style> :host { position: relative; display: block; } #background { @apply --layout-fit; overflow: hidden; height: 100%; } #backgroundFrontLayer { min-height: 100%; pointer-events: none; background-size: cover; @apply --app-box-background-front-layer; } #contentContainer { position: relative; width: 100%; height: 100%; } :host([disabled]), :host([disabled]) #backgroundFrontLayer { transition: none !important; } </style> <div id="background"> <div id="backgroundFrontLayer"> <slot name="background"></slot> </div> </div> <div id="contentContainer"> <slot></slot> </div> `,is:"app-box",behaviors:[o,t],listeners:{"iron-resize":"_resizeHandler"},_progress:0,attached:function(){this.resetLayout()},_debounceRaf:function(t){var e=this;this._raf&&window.cancelAnimationFrame(this._raf),this._raf=window.requestAnimationFrame((function(){e._raf=null,t.call(e)}))},resetLayout:function(){this._debounceRaf((function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=this.disabled;this.disabled=!0,this._elementTop=this._getElementTop(),this._elementHeight=this.offsetHeight,this._cachedScrollTargetHeight=this._scrollTargetHeight,this._setUpEffect(),this._updateScrollState(t),this.disabled=e}}))},_getElementTop:function(){for(var t=this,e=0;t&&t!==this.scrollTarget;)e+=t.offsetTop,t=t.offsetParent;return e},_updateScrollState:function(t){if(this.isOnScreen()){var e=this._elementTop-t;this._progress=1-(e+this._elementHeight)/this._cachedScrollTargetHeight,this._runEffects(this._progress,t)}},isOnScreen:function(){return this._elementTop<this._scrollTop+this._cachedScrollTargetHeight&&this._elementTop+this._elementHeight>this._scrollTop},_resizeHandler:function(){this.resetLayout()},_getDOMRef:function(t){return"background"===t?this.$.background:"backgroundFrontLayer"===t?this.$.backgroundFrontLayer:void 0},getScrollState:function(){return{progress:this._progress}}});