From 334ee0e9feebe15926e5ad9a967c24cdf5264cdb Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 23 May 2018 00:09:13 -0500 Subject: New client build, with GoldenLayout included --- webAO/golden/LICENSE.txt | 21 ++ webAO/golden/css/goldenlayout.css | 525 ++++++++++++++++++++++++++++++++++ webAO/golden/css/goldenlayout.css.map | 1 + webAO/golden/js/goldenlayout.js | 2 + webAO/golden/js/goldenlayout.js.map | 1 + 5 files changed, 550 insertions(+) create mode 100644 webAO/golden/LICENSE.txt create mode 100644 webAO/golden/css/goldenlayout.css create mode 100644 webAO/golden/css/goldenlayout.css.map create mode 100644 webAO/golden/js/goldenlayout.js create mode 100644 webAO/golden/js/goldenlayout.js.map (limited to 'webAO/golden') diff --git a/webAO/golden/LICENSE.txt b/webAO/golden/LICENSE.txt new file mode 100644 index 0000000..5ef7a1f --- /dev/null +++ b/webAO/golden/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 deepstream.io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/webAO/golden/css/goldenlayout.css b/webAO/golden/css/goldenlayout.css new file mode 100644 index 0000000..ecb0d6b --- /dev/null +++ b/webAO/golden/css/goldenlayout.css @@ -0,0 +1,525 @@ +h2 { + font: 14px Arial, sans-serif; + color: #fff; + padding: 10px; +} +.lm_content { + text-align: center; + color: white; +} +body { + height: 100%; + width: 100%; + position: absolute; + transition: all 0.5s ease; +} +#menuContainer { + list-style: none; + margin: 10px; + padding: 0; +} +#menuContainer:after { + content: ""; + display: table; + clear: both; +} +#menuContainer li { + float: left; + margin-right: 10px; +} +#menuContainer li a { + background-color: black; + color: white; + padding: 5px; + text-decoration: none; + font-family: Arial, sans-serif; + font-size: 12px; +} +.lm_root { + position: relative; +} +.lm_row > .lm_item { + float: left; +} +.lm_content { + overflow: hidden; + position: relative; +} +.lm_dragging, +.lm_dragging * { + cursor: move !important; + user-select: none; +} +.lm_maximised { + position: absolute; + top: 0; + left: 0; + z-index: 40; +} +.lm_maximise_placeholder { + display: none; +} +.lm_splitter { + position: relative; + z-index: 2; +} +.lm_splitter:hover, +.lm_splitter.lm_dragging { + background: orange; +} +.lm_splitter.lm_vertical .lm_drag_handle { + width: 100%; + position: absolute; + cursor: ns-resize; +} +.lm_splitter.lm_horizontal { + float: left; + height: 100%; +} +.lm_splitter.lm_horizontal .lm_drag_handle { + height: 100%; + position: absolute; + cursor: ew-resize; +} +.lm_header { + overflow: visible; + position: relative; + z-index: 1; + user-select: none; +} +.lm_header.lm_selectable { + cursor: pointer; +} +.lm_header [class^=lm_] { + box-sizing: content-box !important; +} +.lm_header .lm_controls { + position: absolute; + right: 3px; +} +.lm_header .lm_controls > li { + cursor: pointer; + float: left; + width: 18px; + height: 18px; + text-align: center; +} +.lm_header ul { + margin: 0; + padding: 0; + list-style-type: none; +} +.lm_header .lm_tabs { + position: absolute; +} +.lm_header .lm_tab { + cursor: pointer; + float: left; + height: 14px; + margin-top: 1px; + padding: 0px 10px 5px; + padding-right: 25px; + position: relative; +} +.lm_header .lm_tab i { + width: 2px; + height: 19px; + position: absolute; +} +.lm_header .lm_tab i.lm_left { + top: 0; + left: -2px; +} +.lm_header .lm_tab i.lm_right { + top: 0; + right: -2px; +} +.lm_header .lm_tab .lm_title { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; +} +.lm_header .lm_tab .lm_close_tab { + width: 14px; + height: 14px; + position: absolute; + top: 0; + right: 0; + text-align: center; +} +.lm_stack { + position: relative; +} +.lm_stack > .lm_items { + overflow: hidden; +} +.lm_stack.lm_left > .lm_items { + position: absolute; + left: 20px; + top: 0; +} +.lm_stack.lm_right > .lm_items { + position: absolute; + right: 20px; + top: 0; +} +.lm_stack.lm_right > .lm_header { + position: absolute; + right: 0; + top: 0; +} +.lm_stack.lm_bottom > .lm_items { + position: absolute; + bottom: 20px; +} +.lm_stack.lm_bottom > .lm_header { + position: absolute; + bottom: 0; +} +.lm_stack.lm_docked { + overflow: visible; + z-index: 3; +} +.lm_stack.lm_docked > .lm_header { + z-index: 5; +} +.lm_stack.lm_docked > .lm_items { + *z-index: 3; + transition: height 0.4s ease-in; + border: solid 2px; + border-image-slice: 1 !important; + margin: -2px 0; +} +.lm_stack.lm_docked.lm_left > .lm_items, +.lm_stack.lm_docked.lm_right > .lm_items { + transition: width 0.4s ease-in, height 0.001s linear; +} +.lm_left.lm_stack .lm_header, +.lm_right.lm_stack .lm_header { + height: 100%; +} +.lm_left.lm_dragProxy .lm_header, +.lm_right.lm_dragProxy .lm_header, +.lm_left.lm_dragProxy .lm_items, +.lm_right.lm_dragProxy .lm_items { + float: left; +} +.lm_left.lm_dragProxy .lm_header, +.lm_right.lm_dragProxy .lm_header, +.lm_left.lm_stack .lm_header, +.lm_right.lm_stack .lm_header { + width: 20px; + vertical-align: top; +} +.lm_left.lm_dragProxy .lm_header .lm_tabs, +.lm_right.lm_dragProxy .lm_header .lm_tabs, +.lm_left.lm_stack .lm_header .lm_tabs, +.lm_right.lm_stack .lm_header .lm_tabs { + transform-origin: left top; + top: 0; + width: 1000px; + /*hack*/ +} +.lm_left.lm_dragProxy .lm_header .lm_controls, +.lm_right.lm_dragProxy .lm_header .lm_controls, +.lm_left.lm_stack .lm_header .lm_controls, +.lm_right.lm_stack .lm_header .lm_controls { + bottom: 0; +} +.lm_dragProxy.lm_left .lm_header .lm_tabs, +.lm_stack.lm_left .lm_header .lm_tabs { + transform: rotate(-90deg) scaleX(-1); + left: 0; +} +.lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab, +.lm_stack.lm_left .lm_header .lm_tabs .lm_tab { + transform: scaleX(-1); + margin-top: 1px; +} +.lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list, +.lm_stack.lm_left .lm_header .lm_tabdropdown_list { + top: initial; + right: initial; + left: 20px; +} +.lm_dragProxy.lm_right .lm_content { + float: left; +} +.lm_dragProxy.lm_right .lm_header .lm_tabs, +.lm_stack.lm_right .lm_header .lm_tabs { + transform: rotate(90deg) scaleX(1); + left: 100%; + margin-left: 0; +} +.lm_dragProxy.lm_right .lm_header .lm_controls, +.lm_stack.lm_right .lm_header .lm_controls { + left: 3px; +} +.lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list, +.lm_stack.lm_right .lm_header .lm_tabdropdown_list { + top: initial; + right: 20px; +} +.lm_dragProxy.lm_bottom .lm_header, +.lm_stack.lm_bottom .lm_header { + width: 100%; +} +.lm_dragProxy.lm_bottom .lm_header .lm_tab, +.lm_stack.lm_bottom .lm_header .lm_tab { + margin-top: 0; + border-top: none; +} +.lm_dragProxy.lm_bottom .lm_header .lm_controls, +.lm_stack.lm_bottom .lm_header .lm_controls { + top: 3px; +} +.lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list, +.lm_stack.lm_bottom .lm_header .lm_tabdropdown_list { + top: initial; + bottom: 20px; +} +.lm_drop_tab_placeholder { + float: left; + width: 100px; + height: 10px; + visibility: hidden; +} +.lm_header .lm_controls .lm_tabdropdown:before { + content: ''; + width: 0; + height: 0; + vertical-align: middle; + display: inline-block; + border-top: 5px dashed; + border-right: 5px solid transparent; + border-left: 5px solid transparent; + color: white; +} +.lm_header .lm_tabdropdown_list { + position: absolute; + top: 20px; + right: 0; + z-index: 5; + overflow: hidden; +} +.lm_header .lm_tabdropdown_list .lm_tab { + clear: both; + padding-right: 10px; + margin: 0; +} +.lm_header .lm_tabdropdown_list .lm_tab .lm_title { + width: 100px; +} +.lm_header .lm_tabdropdown_list .lm_close_tab { + display: none !important; +} +/*********************************** +* Drag Proxy +***********************************/ +.lm_dragProxy { + position: absolute; + top: 0; + left: 0; + z-index: 30; +} +.lm_dragProxy .lm_header { + background: transparent; +} +.lm_dragProxy .lm_content { + border-top: none; + overflow: hidden; +} +.lm_dropTargetIndicator { + display: none; + position: absolute; + z-index: 20; + transition: all 200ms ease; +} +.lm_dropTargetIndicator .lm_inner { + width: 100%; + height: 100%; + position: relative; + top: 0; + left: 0; +} +.lm_transition_indicator { + display: none; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 0; + z-index: 20; +} +.lm_popin { + width: 20px; + height: 20px; + position: absolute; + bottom: 0; + right: 0; + z-index: 9999; +} +.lm_popin > * { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} +.lm_popin > .lm_bg { + z-index: 10; +} +.lm_popin > .lm_icon { + z-index: 20; +} +.lm_goldenlayout { + background: #000000; +} +.lm_content { + background: #222222; + border: 1px solid transparent; +} +.lm_dragProxy .lm_content { + box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9); +} +.lm_dropTargetIndicator { + box-shadow: inset 0 0 30px #000000; + outline: 1px dashed #cccccc; +} +.lm_dropTargetIndicator .lm_inner { + background: #000000; + opacity: 0.2; +} +.lm_splitter { + background: #000000; + opacity: 0.001; + transition: opacity 200ms ease; +} +.lm_splitter:hover, +.lm_splitter.lm_dragging { + background: #444444; + opacity: 1; +} +.lm_header { + height: 20px; +} +.lm_header .lm_tab { + font-family: Arial, sans-serif; + font-size: 12px; + color: #999999; + background: #111111; + box-shadow: 2px -2px 2px rgba(0, 0, 0, 0.3); + margin-right: 2px; + padding-bottom: 2px; + padding-top: 2px; + /*.lm_title // Present in LIGHT Theme + { + padding-top:1px; + }*/ +} +.lm_header .lm_tab .lm_close_tab { + width: 11px; + height: 11px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAQUlEQVR4nHXOQQ4AMAgCQeT/f6aXpsGK3jSTuCVJAAr7iBdoAwCKd0nwfaAdHbYERw5b44+E8JoBjEYGMBq5gAYP3usUDu2IvoUAAAAASUVORK5CYII="); + background-position: center center; + background-repeat: no-repeat; + top: 4px; + right: 6px; + opacity: 0.4; +} +.lm_header .lm_tab .lm_close_tab:hover { + opacity: 1; +} +.lm_header .lm_tab.lm_active { + border-bottom: none; + box-shadow: 0 -2px 2px #000000; + padding-bottom: 3px; +} +.lm_header .lm_tab.lm_active .lm_close_tab { + opacity: 1; +} +.lm_dragProxy.lm_right .lm_header .lm_tab.lm_active, +.lm_stack.lm_right .lm_header .lm_tab.lm_active { + box-shadow: 2px -2px 2px #000000; +} +.lm_dragProxy.lm_bottom .lm_header .lm_tab, +.lm_stack.lm_bottom .lm_header .lm_tab { + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.3); +} +.lm_dragProxy.lm_bottom .lm_header .lm_tab.lm_active, +.lm_stack.lm_bottom .lm_header .lm_tab.lm_active { + box-shadow: 0 2px 2px #000000; +} +.lm_selected .lm_header { + background-color: #452500; +} +.lm_tab:hover, +.lm_tab.lm_active { + background: #222222; + color: #dddddd; +} +.lm_header .lm_controls .lm_tabdropdown:before { + color: #ffffff; +} +.lm_controls > li { + position: relative; + background-position: center center; + background-repeat: no-repeat; + opacity: 0.4; + transition: opacity 300ms ease; +} +.lm_controls > li:hover { + opacity: 1; +} +.lm_controls .lm_popout { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAPklEQVR4nI2Q0QoAIAwCNfr/X7aXCpGN8snBdgejJOzckpkxs9jR6K6T5JpU0nWl5pSXTk7qwh8SnNT+CAAWCgkKFpuSWsUAAAAASUVORK5CYII="); +} +.lm_controls .lm_maximise { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAKElEQVR4nGP8////fwYCgImQAgYGBgYWKM2IR81/okwajIpgvsMbVgAwgQYRVakEKQAAAABJRU5ErkJggg=="); +} +.lm_controls .lm_close { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAQUlEQVR4nHXOQQ4AMAgCQeT/f6aXpsGK3jSTuCVJAAr7iBdoAwCKd0nwfaAdHbYERw5b44+E8JoBjEYGMBq5gAYP3usUDu2IvoUAAAAASUVORK5CYII="); +} +.lm_controls .lm_dock { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QQLExoPDb+5JQAAAKZJREFUOMvV0tENgjAUhWFGYBQ20FG6iYzgBo4gG8gIbAAbyAafD5akwWIATYz3sWn+e/qfFsUvBsevQDzn8gmkRI8a3W4YGjQJdD0MFQ44YUQ5S/geFgF99NFhyEmOz5QtIG4a0aYJMneuSwvmiUaEhebu0Vm51s8LLKaotzY1OQjJWbvpUyJESD0li26g2goJs2feMOyCZJxVuyFp7WvTnJcg/zkPjGQks0ox9/8AAAAASUVORK5CYII="); + transform: rotate(-45deg); + transition: transform 300ms; +} +.lm_stack.lm_docked .lm_controls .lm_dock { + transform: rotate(0deg); +} +.lm_stack.lm_docked > .lm_items { + border-color: #555555; + border-image: linear-gradient(to right, #444444 1%, #999999 100%); + box-shadow: 0 2px 2px #000000; +} +.lm_maximised .lm_header { + background-color: #000000; +} +.lm_maximised .lm_controls .lm_maximise { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJ0lEQVR4nGP8//8/AzGAiShVI1YhCwMDA8OsWbPwBmZaWhoj0SYCAN1lBxMAX4n0AAAAAElFTkSuQmCC"); +} +.lm_transition_indicator { + background-color: #000000; + border: 1px dashed #555555; +} +.lm_popin { + cursor: pointer; +} +.lm_popin .lm_bg { + background: #ffffff; + opacity: 0.3; +} +.lm_popin .lm_icon { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAJCAYAAADpeqZqAAAAWklEQVR4nJWOyw3AIAxDHcQC7L8jbwT3AlJBfNp3SiI7dtRaLSlKKeoA1oEsKSQZCEluexw8Tm3ohk+E7bnOUHUGcNh+HwbBygw4AZ7FN/Lt84p0l+yTflV8AKQyLdcCRJi/AAAAAElFTkSuQmCC"); + background-position: center center; + background-repeat: no-repeat; + border-left: 1px solid #eeeeee; + border-top: 1px solid #eeeeee; + opacity: 0.7; +} +.lm_popin:hover .lm_icon { + opacity: 1; +} + +/*# sourceMappingURL=goldenlayout.css.map*/ \ No newline at end of file diff --git a/webAO/golden/css/goldenlayout.css.map b/webAO/golden/css/goldenlayout.css.map new file mode 100644 index 0000000..ea8f7a7 --- /dev/null +++ b/webAO/golden/css/goldenlayout.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css\\goldenlayout.css","sources":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","sourceRoot":""} \ No newline at end of file diff --git a/webAO/golden/js/goldenlayout.js b/webAO/golden/js/goldenlayout.js new file mode 100644 index 0000000..6f4c3c0 --- /dev/null +++ b/webAO/golden/js/goldenlayout.js @@ -0,0 +1,2 @@ +(function(e,t){'object'==typeof exports&&'object'==typeof module?module.exports=t():'function'==typeof define&&define.amd?define('GoldenLayout',[],t):'object'==typeof exports?exports.GoldenLayout=t():e.GoldenLayout=t()})('undefined'==typeof self?this:self,function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(n,'a',n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=35)}([function(e,t,n){'use strict';function o(e){var t=location.hash.match(new RegExp(e+'=([^&]*)'));return t?t[1]:null}t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if('function'==typeof a.a)return a()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return o(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split('&'),a={};for(n=0;n]+)>)/ig,''))};var i=n(40),a=n.n(i),s=n(60),r=n.n(s),l='function'!=typeof /./&&'object'!=typeof Int8Array?function(e){return'function'==typeof e||!1}:function(e){return'[object Function]'===toString.call(e)}},function(e,t,n){'use strict';var o=n(0);const a='__all';t.a=a;t.b=class{constructor(){this._mSubscriptions={},this._mSubscriptions[a]=[],this.on=function(e,t,n){if(!Object(o.h)(t))throw new Error('Tried to listen to event '+e+' with non-function callback '+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,o;o=Array.prototype.slice.call(arguments,1);var i=this._mSubscriptions[e];if(i)for(i=i.slice(),t=0;t'),this.childElementContainer=this.element,this._splitterSize=t.config.dimensions.borderWidth,this._splitterGrabSize=t.config.dimensions.borderGrabWidth,this._isColumn=e,this._dimension=e?'height':'width',this._splitter=[],this._splitterPosition=null,this._splitterMinPosition=null,this._splitterMaxPosition=null}addChild(e,t,o){var a,r,l,i;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0this.contentItems.length-this._isDocked())throw new Error('Can\'t dock child when it is last in '+this.config.type);var m={column:{first:'top',last:'bottom'},row:{first:'left',last:'right'}}[this.config.type][r?'last':'first'];e.header.position()!=m&&e.header.position(m),this._splitter[l]&&this._splitter[l].element.hide();var _=this._isDocked();for(p=0;pa(t)&&0=this.contentItems.length)){s=this._calculateAbsoluteSizes();for(var g=0;gl)){for(e=c/l,p=c,g=0;gthis._splitterMinPosition&&othis._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit('drag',this._nX,this._nY,e)}}onMouseUp(e){null!=this._timeout&&(clearTimeout(this._timeout),this._eBody.removeClass('lm_dragging'),this._eElement.removeClass('lm_dragging'),this._oDocument.find('iframe').css('pointer-events',''),this._oDocument.unbind('mousemove touchmove',this._fMove),this._oDocument.unbind('mouseup touchend',this._fUp),!0===this._bDragging&&(this._bDragging=!1,this.emit('dragStop',e,this._nOriginalX+this._nX)))}_startDrag(){this._bDragging=!0,this._eBody.addClass('lm_dragging'),this._eElement.addClass('lm_dragging'),this._oDocument.find('iframe').css('pointer-events','none'),this.emit('dragStart',this._nOriginalX,this._nOriginalY)}_getCoordinates(e){return e=Object(i.e)(e),{x:e.pageX,y:e.pageY}}}t.a=a},function(e,t,n){var o=n(9);e.exports=function(e){if(!o(e))throw TypeError(e+' is not an object!');return e}},function(e){e.exports=function(e){return'object'==typeof e?null!==e:'function'==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){if(this._keys=['settings','hasHeaders','constrainDragToContainer','selectionEnabled','dimensions','borderWidth','minItemHeight','minItemWidth','headerHeight','dragProxyWidth','dragProxyHeight','labels','close','maximise','minimise','popout','content','componentName','componentState','id','width','type','height','isClosable','title','popoutWholeStack','openPopouts','parentId','activeItemIndex','reorderEnabled','borderGrabWidth'],36'),this.childElementContainer=this.element,this._containerElement=n,this._containerElement.append(this.element)}addChild(e){if(0'),this._activeContentItem=null;var o=e.config;this._header={show:!0===o.settings.hasHeaders&&!1!==t.hasHeaders,popout:o.settings.showPopoutIcon&&o.labels.popout,maximise:o.settings.showMaximiseIcon&&o.labels.maximise,close:o.settings.showCloseIcon&&o.labels.close,minimise:o.labels.minimise},o.header&&Object(l.b)(this._header,o.header),t.header&&Object(l.b)(this._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(l.b)(this._header,t.content[0].header),this._dropZones={},this._dropSegment=null,this._contentAreaDimensions=null,this._dropIndex=null,this.isStack=!0,this.childElementContainer=$('
'),this.header=new r.a(e,this),this.element.on('mouseleave mouseenter',Object(l.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]('mouseenter'==e.type?this._docker.realSize:0)},this)),this.element.append(this.header.element),this.element.append(this.childElementContainer),this._setupHeaderPosition(),this._$validateClosability()}dock(e){this._header.dock&&this.parent instanceof s.a&&this.parent.dock(this,e)}setSize(){if('none'!==this.element.css('display')){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?'width':'height']-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&'height'!=this._docker.dimension||this.childElementContainer.width(t.width),e&&'width'!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;nthis.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),a.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards('setSize'),this._$validateClosability(),this.parent instanceof s.a&&this.parent._validateDocking(),this.emitBubblingEvent('stateChanged')}removeChild(e,t){var o=Object(l.g)(e,this.contentItems);a.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0e&&o.y1t)return void('header'===n?(this._dropSegment='header',this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}_$getArea(){if('none'===this.element.css('display'))return null;var e=a.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),o=n.x2-n.x1,i=n.y2-n.y1;return(this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent)?t:0===this.contentItems.length?(this._contentAreaDimensions.body={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.25*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+0.5*o,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+0.25*o,y1:n.y1,x2:n.x1+0.75*o,y2:n.y1+0.5*i},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+0.5*i}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+0.75*o,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+0.5*o,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+0.25*o,y1:n.y1+0.5*i,x2:n.x1+0.75*o,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+0.5*i,x2:n.x2,y2:n.y2}},e.call(this,this.element))}_highlightHeaderDropZone(t){var n,o,i,a,s,r,l,c,p,d=this.header.tabs.length,m=!1;if(0===d)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;na&&t
        '),!0===this.layoutManager.config.settings.selectionEnabled&&(this.element.addClass('lm_selectable'),this.element.on('click touchstart',Object(s.c)(this._onHeaderClick,this))),this.tabsContainer=this.element.find('.lm_tabs'),this.tabDropdownContainer=this.element.find('.lm_tabdropdown_list'),this.tabDropdownContainer.hide(),this.controlsContainer=this.element.find('.lm_controls'),this.parent=t,this.parent.on('resize',this._updateTabSizes,this),this.tabs=[],this.tabsMarkedForRemoval=[],this.activeContentItem=null,this.closeButton=null,this.dockButton=null,this.tabDropdownButton=null,this.hideAdditionalTabsDropdown=Object(s.c)(this._hideAdditionalTabsDropdown,this),$(document).mouseup(this.hideAdditionalTabsDropdown),this._lastVisibleTabIndex=-1,this._tabControlOffset=this.layoutManager.config.settings.tabControlOffset,this._createControls()}createTab(e,t){var n,o;for(o=0;othis._lastVisibleTabIndex){for(i=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0r){if(!!m)o===_&&(n.css({"z-index":'auto',"margin-left":''}),this.tabsContainer.append(n));else if(p=0<_&&_<=o?(c-r)/(o-1):(c-r)/o,p
        '),this.titleElement=this.element.find('.lm_title'),this.closeElement=this.element.find('.lm_close_tab'),this.closeElement[t.config.isClosable?'show':'hide'](),this.isActive=!1,this.setTitle(t.config.title),this.contentItem.on('titleChanged',this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,!0===this._layoutManager.config.settings.reorderEnabled&&!0===t.config.reorderEnabled&&(this._dragListener=new o.a(this.element),this._dragListener.on('dragStart',this._onDragStart,this),this.contentItem.on('destroy',this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(a.c)(this._onTabClick,this),this._onCloseClickFn=Object(a.c)(this._onCloseClick,this),this.element.on('mousedown touchstart',this._onTabClickFn),this.contentItem.config.isClosable?(this.closeElement.on('click touchstart',this._onCloseClickFn),this.closeElement.on('mousedown',this._onCloseMousedown)):this.closeElement.remove(),this.contentItem.tab=this,this.contentItem.emit('tab',this),this.contentItem.layoutManager.emit('tabCreated',this),this.contentItem.isComponent&&(this.contentItem.container.tab=this,this.contentItem.container.emit('tab',this))}setTitle(e){this.element.attr('title',Object(a.k)(e)),this.titleElement.html(e)}setActive(e){e===this.isActive||(this.isActive=e,e?this.element.addClass('lm_active'):this.element.removeClass('lm_active'))}_$destroy(){this.element.off('mousedown touchstart',this._onTabClickFn),this.closeElement.off('click touchstart',this._onCloseClickFn),this._dragListener&&(this.contentItem.off('destroy',this._dragListener.destroy,this._dragListener),this._dragListener.off('dragStart',this._onDragStart),this._dragListener=null),this.element.remove()}_onDragStart(e,t){return this.header._canDestroy?void(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),new i.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}_onTabClick(e){if(0===e.button||'touchstart'===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}_onCloseClick(e){e.stopPropagation();this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}_onCloseMousedown(e){e.stopPropagation()}}},function(e,t,n){'use strict';var o=n(1),i=n(0);class a extends o.b{constructor(e,t,n,o,a,s){super(),this._dragListener=n,this._layoutManager=o,this._contentItem=a,this._originalParent=s,this._area=null,this._lastValidArea=null,this._dragListener.on('drag',this._onDrag,this),this._dragListener.on('dragStop',this._onDrop,this),this.element=$('
        '),s&&s._side&&(this._sided=s._sided,this.element.addClass('lm_'+s._side),0<=['right','bottom'].indexOf(s._side)&&this.element.find('.lm_content').after(this.element.find('.lm_header'))),this.element.css({left:e,top:t}),this.element.find('.lm_tab').attr('title',Object(i.k)(this._contentItem.config.title)),this.element.find('.lm_title').html(this._contentItem.config.title),this.childElementContainer=this.element.find('.lm_content'),this.childElementContainer.append(a.element),this._undisplayTree(),this._layoutManager._$calculateItemAreas(),this._setDimensions(),$(document.body).append(this.element);var r=this._layoutManager.container.offset();this._minX=r.left,this._minY=r.top,this._maxX=this._layoutManager.container.width()+this._minX,this._maxY=this._layoutManager.container.height()+this._minY,this._width=this.element.width(),this._height=this.element.height(),this._setDropPosition(e,t)}_onDrag(e,t,n){n=Object(i.e)(n);var o=n.pageX,a=n.pageY,s=o>this._minX&&othis._minY&&a'),this._header.on('destroy',this._$destroy,this),this._action=o,this.element.on('click touchstart',this._action),this._header.controlsContainer.append(this.element)}_$destroy(){this.element.off(),this.element.remove()}}},function(e,t,n){'use strict';var o=n(3),i=n(33);class a extends o.a{constructor(e,t,n){super(e,t,n);var o=e.getComponent(this.config.componentName),a=$.extend(!0,{},this.config.componentState||{});a.componentName=this.config.componentName,this.componentName=this.config.componentName,''===this.config.title&&(this.config.title=this.config.componentName),this.isComponent=!0,this.container=new i.a(this.config,this,e),this.instance=new o(this.container,a),this.element=this.container._element}close(){this.parent.removeChild(this)}setSize(){'none'!==this.element.css('display')&&this.container._$setSize(this.element.width(),this.element.height())}_$init(){o.a.prototype._$init.call(this),this.container.emit('open')}_$hide(){this.container.hide(),o.a.prototype._$hide.call(this)}_$show(){this.container.show(),o.a.prototype._$show.call(this)}_$shown(){this.container.shown(),o.a.prototype._$shown.call(this)}_$destroy(){this.container.emit('destroy',this),o.a.prototype._$destroy.call(this)}_$getArea(){return null}}t.a=a},function(e,t,n){'use strict';var o=n(1);class i extends o.b{constructor(e,t,n){super(),this.width=null,this.height=null,this.title=e.componentName,this.parent=t,this.layoutManager=n,this.isHidden=!1,this._config=e,this._element=$('
        '),this._contentElement=this._element.find('.lm_content')}getElement(){return this._contentElement}hide(){this.emit('hide'),this.isHidden=!0,this._element.hide()}show(){this.emit('show'),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit('shown')}setSize(e,t){for(var n,o,a,s,r,l,i=this.parent,c=this;!i.isColumn&&!i.isRow;)if(c=i,i=i.parent,i.isRoot)return!1;for(a=i.isColumn?'height':'width',s='height'===a?t:e,n=this[a]*(1/(c.config[a]/100)),o=100*(s/n),r=(c.config[a]-o)/(i.contentItems.length-1),l=0;l'),this._creationTimeoutPassed=!1,this._subWindowsCreated=!1,this._dragSources=[],this._updatingColumnsResponsive=!1,this._firstLoad=!0,this.width=null,this.height=null,this.root=null,this.openPopouts=[],this.selectedItem=null,this.isSubWindow=!1,this.eventHub=new l.a(this),this.config=this._createConfig(e),this.container=t,this.dropTargetIndicator=null,this.transitionIndicator=null,this.tabDropPlaceholder=$('
        '),!0===this.isSubWindow&&$('body').css('visibility','hidden'),this._typeToItem={column:Object(b.c)(p.a,this,[!0]),row:Object(b.c)(p.a,this,[!1]),stack:d.a,component:m.a}}minifyConfig(e){return new r.a().minifyConfig(e)}unminifyConfig(e){return new r.a().unminifyConfig(e)}registerComponent(e,t){if('function'!=typeof t)throw new Error('Please register a constructor function');if(void 0!==this._components[e])throw new Error('Component '+e+' is already registered');this._components[e]=t}toConfig(e){var t,n,o;if(!1===this.isInitialised)throw new Error('Can\'t create config, layout not yet initialised');if(e&&!(e instanceof _.a))throw new Error('Root must be a ContentItem');for(t={settings:Object(b.b)({},this.config.settings),dimensions:Object(b.b)({},this.config.dimensions),labels:Object(b.b)({},this.config.labels)},t.content=[],n=function(e,t){var o,a;for(o in t.config)'content'!==o&&(e[o]=t.config[o]);if(t.contentItems.length)for(e.content=[],a=0;ao.x1&&eo.y1&&to.surface&&(i=o.surface,a=o);return a}_$createRootItemAreas(){var e=50,t={y2:0,x2:0,y1:'y2',x1:'x2'};for(var n in t){var o=this.root._$getArea();o.side=n,o[n]=t[n]?o[t[n]]-e:e,o.surface=(o.x2-o.x1)*(o.y2-o.y1),this._itemAreas.push(o)}}_$calculateItemAreas(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1===n.length)return void this._itemAreas.push(this.root._$getArea());for(this._$createRootItemAreas(),e=0;e
        ');e.click(Object(b.c)(function(){this.emit('popIn')},this)),document.title=Object(b.k)(this.config.content[0].title),$('head').append($('body link, body style, template, .gl_keep')),this.container=$('body').html('').css('visibility','visible').append(e);document.body.offsetHeight;window.__glInstance=this}_createSubWindows(){var e,t;for(e=0;e=e)){var o=this.config.dimensions.minItemWidth;if(!(e*o<=this.width)){this._updatingColumnsResponsive=!0;for(var a,s=n(t(this.width/o),1),r=this.root.contentItems[0],l=this._findAllStackContainers()[0],c=0;cl;)o(r,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var o=n(46);e.exports=Object('z').propertyIsEnumerable(0)?Object:function(e){return'String'==o(e)?e.split(''):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var o=n(17),i=n(48),a=n(49);e.exports=function(e){return function(t,n,s){var r,l=o(t),c=i(l.length),p=a(s,c);if(e&&n!=n){for(;c>p;)if(r=l[p++],r!=r)return!0;}else for(;c>p;p++)if((e||p in l)&&l[p]===n)return e||p||0;return!e&&-1}}},function(t,n,o){var i=o(18);t.exports=function(t){return 0t?n(t+o,0):e(t,o)}},function(e,t,n){var o=n(2),i=n(4),a='__core-js_shared__',s=i[a]||(i[a]={});(e.exports=function(e,t){return s[e]||(s[e]=t===void 0?{}:t)})('versions',[]).push({version:o.version,mode:n(51)?'pure':'global',copyright:'\xA9 2018 Denis Pushkarev (zloirock.ru)'})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return'Symbol('.concat(e===void 0?'':e,')_',(++t+n).toString(36))}},function(e,t,n){var o=n(21),i=n(2),a=n(10);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),o(o.S+o.F*a(function(){n(1)}),'Object',s)}},function(e,t,n){var o=n(55);e.exports=function(e,t,n){return(o(e),void 0===t)?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,o){return e.call(t,n,o)}:3===n?function(n,o,i){return e.call(t,n,o,i)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if('function'!=typeof e)throw TypeError(e+' is not a function!');return e}},function(e,t,n){var o=n(22),i=n(59);e.exports=n(5)?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)('div'),'a',{get:function(){return 7}}).a})},function(e,t,n){var o=n(9);e.exports=function(e,t){if(!o(e))return e;var n,i;if(t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;if('function'==typeof(n=e.valueOf)&&!o(i=n.call(e)))return i;if(!t&&'function'==typeof(n=e.toString)&&!o(i=n.call(e)))return i;throw TypeError('Can\'t convert object to primitive value')}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var o=n(2).Object;e.exports=function(e,t){return o.create(e,t)}},function(e,t,n){var o=n(21);o(o.S,'Object',{create:n(63)})},function(e,t,n){var o=n(8),i=n(64),a=n(20),s=n(19)('IE_PROTO'),r=function(){},l='prototype',c=function(){var e,t=n(23)('iframe'),o=a.length,i='<',s='>';for(t.style.display='none',n(65).appendChild(t),t.src='javascript:',e=t.contentWindow.document,e.open(),e.write(i+'script'+s+'document.F=Object'+i+'/script'+s),e.close(),c=e.F;o--;)delete c[l][a[o]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(r[l]=o(e),n=new r,r[l]=null,n[s]=e),void 0===t?n:i(n,t)}},function(e,t,n){var o=n(22),a=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){a(e);for(var n,r=s(t),l=r.length,c=0;l>c;)o.f(e,n=r[c++],t[n]);return e}},function(e,t,n){var o=n(4).document;e.exports=o&&o.documentElement},function(e,t){'use strict';t.a={isClosable:!0,reorderEnabled:!0,title:''}},function(e,t,n){'use strict';var o=n(7);t.a=class{constructor(e,t,n){this._isVertical=e,this._size=t,this._grabSize=n'),t=$('
        ');t.append(e);var n=this._grabSize-this._size,o=n/2;return this._isVertical?(e.css('top',-o),e.css('height',this._size+n),t.addClass('lm_vertical'),t.height(this._size)):(e.css('left',-o),e.css('width',this._size+n),t.addClass('lm_horizontal'),t.width(this._size)),t}}},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var o=n(2),i=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function(){return i.stringify.apply(i,arguments)}},function(e,t,n){'use strict';var o=n(7),i=n(30),a=n(0);t.a=class{constructor(e,t,n){this._element=e,this._itemConfig=t,this._layoutManager=n,this._dragListener=null,this._createDragListener()}_createDragListener(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new o.a(this._element),this._dragListener.on('dragStart',this._onDragStart,this),this._dragListener.on('dragStop',this._createDragListener,this)}_onDragStart(e,t){var n=this._itemConfig;Object(a.h)(n)&&(n=n());var o=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),s=new i.a(e,t,this._dragListener,this._layoutManager,o,null);this._layoutManager.transitionIndicator.transitionElements(this._element,s.element)}}},function(e,t){'use strict';t.a=class{constructor(){this.element=$('
        '),$(document.body).append(this.element)}destroy(){this.element.remove()}highlight(e,t,n,o){this.highlightArea({x1:e,y1:t,x2:n,y2:o})}highlightArea(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}hide(){this.element.hide()}}},function(e,t,n){'use strict';var o=n(0);t.a=class{constructor(){this._element=$('
        '),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}destroy(){this._element.remove()}transitionElements(){}_nextAnimationFrame(){var e,t=this._measure(this._toElement),n=(Object(o.i)()-this._animationStartTime)/this._totalAnimationDuration,i={};if(1<=n)return void this._element.hide();for(e in t.opacity=0,this._fromDimensions)i[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(i),Object(o.a)(Object(o.c)(this._nextAnimationFrame,this))}_measure(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}},function(e,t){'use strict';t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:'onload',tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:'close',maximise:'maximise',minimise:'minimise',popout:'open in new window',popin:'pop in',tabDropdown:'additional tabs'}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){'undefined'!=typeof console&&(console.error||console.log)('[Script Loader]',e)}function n(){return'undefined'!=typeof attachEvent&&'undefined'==typeof addEventListener}try{'undefined'!=typeof execScript&&n()?execScript(e):'undefined'==typeof eval?t('EvalError: No eval function available'):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports='/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === \'function\' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { \'column-count\': 1, \'columns\': 1, \'font-weight\': 1, \'line-height\': 1,\'opacity\': 1, \'z-index\': 1, \'zoom\': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = [\'val\', \'css\', \'html\', \'text\', \'data\', \'width\', \'height\', \'offset\'],\n\n adjacencyOperators = [ \'after\', \'prepend\', \'before\', \'append\' ],\n table = document.createElement(\'table\'),\n tableRow = document.createElement(\'tr\'),\n containers = {\n \'tr\': document.createElement(\'tbody\'),\n \'tbody\': table, \'thead\': table, \'tfoot\': table,\n \'td\': tableRow, \'th\': tableRow,\n \'*\': document.createElement(\'div\')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement(\'div\'),\n propMap = {\n \'tabindex\': \'tabIndex\',\n \'readonly\': \'readOnly\',\n \'for\': \'htmlFor\',\n \'class\': \'className\',\n \'maxlength\': \'maxLength\',\n \'cellspacing\': \'cellSpacing\',\n \'cellpadding\': \'cellPadding\',\n \'rowspan\': \'rowSpan\',\n \'colspan\': \'colSpan\',\n \'usemap\': \'useMap\',\n \'frameborder\': \'frameBorder\',\n \'contenteditable\': \'contentEditable\'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || "object"\n }\n\n function isFunction(value) { return type(value) == "function" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == "object" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && \'length\' in obj && obj.length,\n type = $.type(obj)\n\n return \'function\' != type && !isWindow(obj) && (\n \'array\' == type || length === 0 ||\n (typeof length == \'number\' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : \'\' }) }\n function dasherize(str) {\n return str.replace(/::/g, \'/\')\n .replace(/([A-Z]+)([A-Z][a-z])/g, \'$1_$2\')\n .replace(/([a-z\\d])([A-Z])/g, \'$1_$2\')\n .replace(/_/g, \'-\')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp(\'(^|\\\\s)\' + name + \'(\\\\s|$)\'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == "number" && !cssNumber[dasherize(name)]) ? value + "px" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, \'\').getPropertyValue("display")\n element.parentNode.removeChild(element)\n display == "none" && (display = "block")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return \'children\' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || \'\'\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don\'t support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, "<$1>")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = \'*\'\n\n container = containers[name]\n container.innerHTML = \'\' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto\'s counterpart to jQuery\'s `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == \'string\') {\n selector = selector.trim()\n // If it\'s a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn\'t begin with <\n if (selector[0] == \'<\' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there\'s a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it\'s a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it\'s a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there\'s a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it\'s a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == \'boolean\') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto\'s CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == \'#\',\n maybeClass = !maybeID && selector[0] == \'.\',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn\'t have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn\'t have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it\'s simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it\'s not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || \'\',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // "true" => true\n // "false" => false\n // "null" => null\n // "42" => 42\n // "42.5" => 42.5\n // "08" => "08"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == "true" ||\n ( value == "false" ? false :\n value == "null" ? null :\n +value + "" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != \'boolean\' &&\n (type != \'string\' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? "" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {\n class2type[ "[object " + name + "]" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn\'t yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener(\'DOMContentLoaded\', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == \'string\' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == \'object\')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == \'object\' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck(\'parentNode\')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = \'\' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == "none" && (this.style.display = \'\')\n if (getComputedStyle(this, \'\').getPropertyValue("display") == "none")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css("display", "none")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css("display") == "none" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck(\'previousElementSibling\')).filter(selector || \'*\') },\n next: function(selector){ return $(this.pluck(\'nextElementSibling\')).filter(selector || \'*\') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? \'\' : \'\'+newText\n }) :\n (0 in this ? this.pluck(\'textContent\').join("") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == \'string\' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(\' \').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = \'data-\' + name.replace(capitalRE, \'-$1\').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = ""\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find(\'option\').filter(function(){ return this.selected }).pluck(\'value\') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css(\'position\') == \'static\') props[\'position\'] = \'relative\'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == \'string\') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, \'\').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, \'\')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = \'\'\n if (type(property) == \'string\') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + ":" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + \':\' + maybeAddPx(key, property[key]) + \';\'\n }\n\n return this.each(function(){ this.style.cssText += \';\' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!(\'className\' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? " " : "") + classList.join(" "))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!(\'className\' in this)) return\n if (name === undefined) return className(this, \'\')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), " ")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = \'scrollTop\' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = \'scrollLeft\' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css(\'margin-top\') ) || 0\n offset.left -= parseFloat( $(elem).css(\'margin-left\') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css(\'border-top-width\') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css(\'border-left-width\') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css("position") == "static")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;[\'width\', \'height\'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el[\'inner\' + dimensionProperty] :\n isDocument(el) ? el.documentElement[\'scroll\' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == "array") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == "object" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a "before" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === \'SCRIPT\' &&\n (!el.type || el.type === \'text/javascript\') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target[\'eval\'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+\'To\' : \'insert\'+(operatorIndex ? \'Before\' : \'After\')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == \'string\' },\n handlers = {},\n specialEvents={},\n focusinSupported = \'onfocusin\' in window,\n focus = { focus: \'focusin\', blur: \'focusout\' },\n hover = { mouseenter: \'mouseover\', mouseleave: \'mouseout\' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = \'MouseEvents\'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = (\'\' + event).split(\'.\')\n return {e: parts[0], ns: parts.slice(1).sort().join(\' \')}\n }\n function matcherFor(ns) {\n return new RegExp(\'(?:^| )\' + ns.replace(\' \', \' .* ?\') + \'(?: |$)\')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == \'ready\') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if (\'addEventListener\' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || \'\').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if (\'removeEventListener\' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError("expected function")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: \'isDefaultPrevented\',\n stopImmediatePropagation: \'isImmediatePropagationStopped\',\n stopPropagation: \'isPropagationStopped\'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n \'returnValue\' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == "function") this[event.type]()\n // items in the collection might not be DOM elements\n else if (\'dispatchEvent\' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn\'t trigger an actual event, doesn\'t bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;(\'focusin focusout focus blur load resize scroll unload click dblclick \'+\n \'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \'+\n \'change select keydown keypress keyup error\').split(\' \').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || \'Events\'), bubbles = true\n if (props) for (var name in props) (name == \'bubbles\') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = \'application/json\',\n htmlType = \'text/html\',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement(\'a\')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax "global" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, \'ajaxStart\')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, \'ajaxStop\')\n }\n\n // triggers an extra global event "ajaxBeforeSend" that\'s like "ajaxSend" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, \'ajaxBeforeSend\', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, \'ajaxSend\', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = \'success\'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, \'ajaxSuccess\', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: "timeout", "error", "abort", "parsererror"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, \'ajaxError\', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: "success", "notmodified", "error", "timeout", "abort", "parsererror"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, \'ajaxComplete\', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!(\'type\' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || (\'Zepto\' + (jsonpID++)),\n script = document.createElement(\'script\'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler(\'error\', errorType || \'abort\')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on(\'load error\', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == \'error\' || !responseData) {\n ajaxError(null, errorType || \'error\', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort(\'abort\')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, \'?$1=\' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort(\'timeout\')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: \'GET\',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger "global" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as "application/x-javascript"\n accepts: {\n script: \'text/javascript, application/javascript, application/x-javascript\',\n json: jsonType,\n xml: \'application/xml, text/xml\',\n html: htmlType,\n text: \'text/plain\'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(\';\', 2)[0]\n return mime && ( mime == htmlType ? \'html\' :\n mime == jsonType ? \'json\' :\n scriptTypeRE.test(mime) ? \'script\' :\n xmlTypeRE.test(mime) && \'xml\' ) || \'text\'\n }\n\n function appendQuery(url, query) {\n if (query == \'\') return url\n return (url + \'&\' + query).replace(/[&?]{1,2}/, \'?\')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != "string")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == \'GET\' || \'jsonp\' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement(\'a\')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + \'//\' + originAnchor.host) !== (urlAnchor.protocol + \'//\' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf(\'#\')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = \'jsonp\'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n (\'script\' == dataType || \'jsonp\' == dataType)\n ))\n settings.url = appendQuery(settings.url, \'_=\' + Date.now())\n\n if (\'jsonp\' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + \'=?\') : settings.jsonp === false ? \'\' : \'callback=?\')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader(\'X-Requested-With\', \'XMLHttpRequest\')\n setHeader(\'Accept\', mime || \'*/*\')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(\',\') > -1) mime = mime.split(\',\', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != \'GET\'))\n setHeader(\'Content-Type\', settings.contentType || \'application/x-www-form-urlencoded\')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == \'file:\')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader(\'content-type\'))\n\n if (xhr.responseType == \'arraybuffer\' || xhr.responseType == \'blob\')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == \'script\') (1,eval)(result)\n else if (dataType == \'xml\') result = xhr.responseXML\n else if (dataType == \'json\') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, \'parsererror\', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? \'error\' : \'abort\', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, \'abort\', xhr, settings, deferred)\n return xhr\n }\n\n var async = \'async\' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, \'timeout\', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = \'POST\'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = \'json\'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $(\'
        \').html(response.replace(rscript, "")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + \'[\' + (hash || type == \'object\' || type == \'array\' ? key : \'\') + \']\'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == "array" || (!traditional && type == "object"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = ""\n this.push(escape(key) + \'=\' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join(\'&\').replace(/%20/g, \'+\')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != \'fieldset\' &&\n !field.disabled && type != \'submit\' && type != \'reset\' && type != \'button\' && type != \'file\' &&\n ((type != \'radio\' && type != \'checkbox\') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + \'=\' + encodeURIComponent(elm.value))\n })\n return result.join(\'&\')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind(\'submit\', callback)\n else if (this.length) {\n var event = $.Event(\'submit\')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn\'t freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n'},function(){(function(e){e.expr={":":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},['Left','Top'].forEach(function(t,n){function o(e){return e&&'object'==typeof e&&'setInterval'in e}function i(e){return o(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var a='scroll'+t;e.fn[a]=function(t){var o,s;return void 0===t?(o=this[0],!o)?null:(s=i(o),s?'pageXOffset'in s?s[n?'pageYOffset':'pageXOffset']:s.document.documentElement[a]||s.document.body[a]:o[a]):void this.each(function(){if(s=i(this),s){var o=n?e(s).scrollLeft():t,r=n?t:e(s).scrollTop();s.scrollTo(o,r)}else this[a]=t})}}),['width','height'].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn['inner'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){o+=parseInt(n.css('padding-'+t),10),e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null},e.fn['outer'+n]=function(e){var n=this;if(n){var o=n[t]();return{width:['left','right'],height:['top','bottom']}[t].forEach(function(t){e&&(o+=parseInt(n.css('margin-'+t),10))}),o}return null}}),e.proxy=function(t,n){if('string'==typeof n){var o=t[n];n=t,t=o}if(e.isFunction(t)){var i=Array.prototype.slice.call(arguments,2),a=function(){return t.apply(n,i.concat(Array.prototype.slice.call(arguments)))};return a.guid=t.guid=t.guid||a.guid||e.guid++,a}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp('^['+n+']+|['+n+']+$','g'),''))};var n=/^t(?:able|d|h)$/i,o=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],n=this.offsetParent(),i=this.offset(),a=o.test(n[0].nodeName)?{top:0,left:0}:n.offset();return i.top-=parseFloat(e(t).css('margin-top'))||0,i.left-=parseFloat(e(t).css('margin-left'))||0,a.top+=parseFloat(e(n[0]).css('border-top-width'))||0,a.left+=parseFloat(e(n[0]).css('border-left-width'))||0,{top:i.top-a.top,left:i.left-a.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var n=this.offsetParent||document.body;n&&!o.test(n.nodeName)&&'static'===e(n).css('position');)n=n.offsetParent;t.push(n)}),t}})(Zepto)}])}); +//# sourceMappingURL=goldenlayout.js.map \ No newline at end of file diff --git a/webAO/golden/js/goldenlayout.js.map b/webAO/golden/js/goldenlayout.js.map new file mode 100644 index 0000000..b28cd6f --- /dev/null +++ b/webAO/golden/js/goldenlayout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js\\goldenlayout.js","sources":["webpack:///webpack/universalModuleDefinition"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"GoldenLayout\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GoldenLayout\"] = factory();\n\telse\n\t\troot[\"GoldenLayout\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file -- cgit